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


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

middle-end/4761: Internal compiler error in reload_cse_simplify_operands



>Number:         4761
>Category:       middle-end
>Synopsis:       Internal compiler error in reload_cse_simplify_operands
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Nov 01 05:56:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Michael Tsirkin
>Release:        gcc-3.0.2
>Organization:
>Environment:
System: Linux mtls23.yok.mtl.com 2.4.13 #1 Wed Oct 24 17:00:25 IST 2001 i686 unknown
Architecture: i686


host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-3.0.2/configure --prefix=/mswg/opt/gcc-3.0.2/x86

>Description:
gcc 3.0.2 reports internal error when compiling driver Realtek 8139 in linux kernel 2.4.13.
The relevant file resized under /usr/src/linux-2.4.13-gcc-3.0.2/drivers/net

Here is the output of the compiler:

[/usr/src/linux-2.4.13-gcc-3.0.2/drivers/net]# /mswg/opt/gcc-3.0.2/x86/bin/gcc -D__KERNEL__ -I/usr/src/linux-2.4.13-gc
c-3.0.2/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-str
ict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=athlon     -c -o 8139to
o.o 8139too.c
8139too.c: In function `netdev_ethtool_ioctl':
8139too.c:2432: Unrecognizable insn:
(insn/i 618 1061 1058 (parallel[
            (set (reg:SI 6 ebp)
                (asm_operands:SI ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0") ("=&r") 0[
                        (reg/v:SI 1 edx [165])
                        (mem:SI (plus:SI (reg/f:SI 6 ebp)
                                (const_int -352 [0xfffffea0])) 0)
                        (mem/s:SI (plus:SI (reg:SI 0 eax [173])
                                (const_int 12 [0xc])) 0)
                    ]
                    [
                        (asm_input:SI ("1"))
                        (asm_input:SI ("g"))
                        (asm_input:SI ("g"))
                    ]  ("/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h") 558))
            (set (reg/v:SI 1 edx [165])
                (asm_operands:SI ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0") ("=r") 1[
                        (reg/v:SI 1 edx [165])
                        (mem:SI (plus:SI (reg/f:SI 6 ebp)
                                (const_int -352 [0xfffffea0])) 0)
                        (mem/s:SI (plus:SI (reg:SI 0 eax [173])
                                (const_int 12 [0xc])) 0)
                    ]
                    [
                        (asm_input:SI ("1"))
                        (asm_input:SI ("g"))
                        (asm_input:SI ("g"))
                    ]  ("/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h") 558))
            (clobber (reg:QI 19 dirflag))
            (clobber (reg:QI 18 fpsr))
            (clobber (reg:QI 17 flags))
        ] ) -1 (insn_list 604 (insn_list 611 (nil)))
    (nil))
8139too.c:2432: Internal compiler error in reload_cse_simplify_operands, at reload1.c:8364
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

>How-To-Repeat:
To repeat, enable Realtek 8139 network driver in linux kernel 2.4.13
and try to build the kernel.
The problem disappears if I build without -fomit-frame-pointer.

The crash also disappears if I remove the strcpy calls
(lines 15844-15846) 
>Fix:

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

IyAxNDUgIjgxMzl0b28uYyIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvY29uZmlnLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvYXV0b2NvbmYuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMgojIDE0NiAiODEzOXRvby5j
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L21v
ZHVsZS5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9tb2R1bGUuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L21vZHVsZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMgojIDU3
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3BpbmxvY2su
aCIKICB0eXBlZGVmIHN0cnVjdCB7IH0gc3BpbmxvY2tfdDsKIyAxMjAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgogIHR5cGVkZWYgc3Ry
dWN0IHsgfSByd2xvY2tfdDsKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L21vZHVsZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDEKIyAxMyAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQoj
IDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3Byb2Nlc3Nv
ci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vdm04
Ni5oIiAxCiMgNjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20v
dm04Ni5oIgpzdHJ1Y3Qgdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVieDsKICAgICAgICBs
b25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAgICBsb25n
IGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBsb25nIF9f
bnVsbF9kczsKICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25nIF9fbnVsbF9mczsK
ICAgICAgICBsb25nIF9fbnVsbF9nczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxv
bmcgZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICBsb25nIGVm
bGFnczsKICAgICAgICBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7
CgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IHsK
ICAgICAgICB1bnNpZ25lZCBsb25nIF9fbWFwWzhdOwp9OwoKc3RydWN0IHZtODZfc3RydWN0IHsK
ICAgICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFn
czsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVj
dG9yZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7
Cn07CgoKCgoKCnN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBmb3JjZV9yZXR1cm5fZm9yX3BpYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm04NmRi
Z19hY3RpdmU6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfVEZwZW5kaWc6MTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHVudXNlZDoyODsKICAgICAgICB1bnNpZ25lZCBsb25nIGlzX3Zt
ODZwdXM6MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZtODZkYmdfaW50eHh0YWJbMzJdOwp9OwoK
c3RydWN0IHZtODZwbHVzX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5f
Yml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJl
dmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVk
X3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0
cnVjdCB2bTg2cGx1czsKfTsKIyAxNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9hc20vdm04Ni5oIgpzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyB7CgoKCiAgICAgICAg
bG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7CiAgICAgICAgbG9u
ZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAgICAgICAgbG9uZyBl
YXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251bGxfZXM7CiAgICAg
ICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBjcywgX19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGVz
LCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKfTsK
CnN0cnVjdCBrZXJuZWxfdm04Nl9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBrZXJuZWxfdm04Nl9y
ZWdzIHJlZ3M7CiMgMTg0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
YXNtL3ZtODYuaCIKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdV90eXBlOwogICAg
ICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsKICAgICAgICBzdHJ1
Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKICAgICAgICBzdHJ1Y3Qgdm04
NnBsdXNfaW5mb19zdHJ1Y3Qgdm04NnBsdXM7CiAgICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3Mz
MjsKIyAyMDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vdm04
Ni5oIgp9OwoKdm9pZCBoYW5kbGVfdm04Nl9mYXVsdChzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAq
LCBsb25nKTsKaW50IGhhbmRsZV92bTg2X3RyYXAoc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwg
bG9uZywgaW50KTsKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9hc20vbWF0aF9lbXUuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIgpzdHJ1Y3QgX2ZwcmVn
IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4cmVnIHsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9OwoKc3RydWN0IF94bW1yZWcgewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZWxlbWVudFs0XTsKfTsKCnN0cnVjdCBfZnBzdGF0ZSB7CgogICAg
ICAgIHVuc2lnbmVkIGxvbmcgY3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdzsKICAgICAgICB1
bnNpZ25lZCBsb25nIHRhZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlwb2ZmOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgY3NzZWw7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhb2ZmOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZGF0YXNlbDsKICAgICAgICBzdHJ1Y3QgX2ZwcmVnIF9zdFs4XTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWFnaWM7
CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9meHNyX2Vudls2XTsKICAgICAgICB1bnNpZ25lZCBs
b25nIG14Y3NyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQ7CiAgICAgICAgc3RydWN0
IF9mcHhyZWcgX2Z4c3Jfc3RbOF07CiAgICAgICAgc3RydWN0IF94bW1yZWcgX3htbVs4XTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHBhZGRpbmdbNTZdOwp9OwoKCgpzdHJ1Y3Qgc2lnY29udGV4dCB7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWRpOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJwOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJ4OwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZWR4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWN4OwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHJhcG5vOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZXJyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsKICAgICAgICB1bnNp
Z25lZCBsb25nIGVzcF9hdF9zaWduYWw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3No
OwogICAgICAgIHN0cnVjdCBfZnBzdGF0ZSAqIGZwc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBvbGRtYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3IyOwp9OwojIDUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vbWF0aF9lbXUuaCIgMgoKaW50IHJlc3Rv
cmVfaTM4N19zb2Z0KHZvaWQgKnMzODcsIHN0cnVjdCBfZnBzdGF0ZSAqYnVmKTsKaW50IHNhdmVf
aTM4N19zb2Z0KHZvaWQgKnMzODcsIHN0cnVjdCBfZnBzdGF0ZSAqIGJ1Zik7CgoKCgoKc3RydWN0
IGluZm8gewogICAgICAgIGxvbmcgX19fb3JpZ19laXA7CiAgICAgICAgbG9uZyBfX19lYng7CiAg
ICAgICAgbG9uZyBfX19lY3g7CiAgICAgICAgbG9uZyBfX19lZHg7CiAgICAgICAgbG9uZyBfX19l
c2k7CiAgICAgICAgbG9uZyBfX19lZGk7CiAgICAgICAgbG9uZyBfX19lYnA7CiAgICAgICAgbG9u
ZyBfX19lYXg7CiAgICAgICAgbG9uZyBfX19kczsKICAgICAgICBsb25nIF9fX2VzOwogICAgICAg
IGxvbmcgX19fb3JpZ19lYXg7CiAgICAgICAgbG9uZyBfX19laXA7CiAgICAgICAgbG9uZyBfX19j
czsKICAgICAgICBsb25nIF9fX2VmbGFnczsKICAgICAgICBsb25nIF9fX2VzcDsKICAgICAgICBs
b25nIF9fX3NzOwogICAgICAgIGxvbmcgX19fdm04Nl9lczsKICAgICAgICBsb25nIF9fX3ZtODZf
ZHM7CiAgICAgICAgbG9uZyBfX192bTg2X2ZzOwogICAgICAgIGxvbmcgX19fdm04Nl9nczsKfTsK
IyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wcm9jZXNz
b3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20v
c2VnbWVudC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvYXNtL3BhZ2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wYWdlLmgiIDIKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL21teC5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIg
MQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90eXBl
cy5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvcG9zaXhfdHlwZXMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAyCiMgMzYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIgp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmZHNfYml0cyBbKDEwMjQvKDggKiBzaXpl
b2YodW5zaWduZWQgbG9uZykpKV07Cn0gX19rZXJuZWxfZmRfc2V0OwoKCnR5cGVkZWYgdm9pZCAo
Kl9fa2VybmVsX3NpZ2hhbmRsZXJfdCkoaW50KTsKCgp0eXBlZGVmIGludCBfX2tlcm5lbF9rZXlf
dDsKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wb3Np
eF90eXBlcy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9kZXZf
dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fa2VybmVsX2lub190Owp0eXBlZGVmIHVuc2lnbmVk
IHNob3J0IF9fa2VybmVsX21vZGVfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9u
bGlua190Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfb2ZmX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVs
X3BpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2lwY19waWRfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF91aWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBf
X2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfc2l6ZV90Owp0eXBl
ZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9wdHJkaWZmX3Q7
CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF90aW1lX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9zdXNl
Y29uZHNfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX2Nsb2NrX3Q7CnR5cGVkZWYgaW50IF9fa2Vy
bmVsX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqIF9fa2VybmVsX2NhZGRyX3Q7CnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgX19rZXJuZWxfdWlkMTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tl
cm5lbF9naWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWQzMl90Owp0eXBl
ZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWQzMl90OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBfX2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xk
X2dpZF90OwoKCnR5cGVkZWYgbG9uZyBsb25nIF9fa2VybmVsX2xvZmZfdDsKCgp0eXBlZGVmIHN0
cnVjdCB7CgogICAgICAgIGludCB2YWxbMl07CgoKCn0gX19rZXJuZWxfZnNpZF90OwojIDQ3ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMu
aCIgMgojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90
eXBlcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2Fz
bS90eXBlcy5oIiAxCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW1vZGVfdDsKCgoKCgoKdHlw
ZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19zODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7Cgp0
eXBlZGVmIF9fc2lnbmVkX18gc2hvcnQgX19zMTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191
MTY7Cgp0eXBlZGVmIF9fc2lnbmVkX18gaW50IF9fczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCBf
X3UzMjsKCgp0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nIF9fczY0Owp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBfX3U2NDsKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vdHlwZXMuaCIgMgoKdHlwZWRlZiBzaWduZWQgY2hh
ciBzODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwoKdHlwZWRlZiBzaWduZWQgc2hvcnQgczE2
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKCnR5cGVkZWYgc2lnbmVkIGludCBzMzI7CnR5
cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKCnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7CnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKIyA1MSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2FzbS90eXBlcy5oIgp0eXBlZGVmIHUzMiBkbWFfYWRkcl90OwoK
dHlwZWRlZiB1NjQgZG1hNjRfYWRkcl90OwojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZkX3Nl
dCBmZF9zZXQ7CnR5cGVkZWYgX19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJuZWxf
aW5vX3QgaW5vX3Q7CnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiBfX2tl
cm5lbF9ubGlua190IG5saW5rX3Q7CnR5cGVkZWYgX19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CnR5cGVk
ZWYgX19rZXJuZWxfcGlkX3QgcGlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZGFkZHJfdCBkYWRkcl90
Owp0eXBlZGVmIF9fa2VybmVsX2tleV90IGtleV90Owp0eXBlZGVmIF9fa2VybmVsX3N1c2Vjb25k
c190IHN1c2Vjb25kc190OwoKCnR5cGVkZWYgX19rZXJuZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRl
ZiBfX2tlcm5lbF9naWQzMl90IGdpZF90Owp0eXBlZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZf
dDsKdHlwZWRlZiBfX2tlcm5lbF9naWQxNl90IGdpZDE2X3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxf
b2xkX3VpZF90IG9sZF91aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9vbGRfZ2lkX3Qgb2xkX2dpZF90
OwojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlw
ZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9sb2ZmX3QgbG9mZl90OwojIDU0ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5l
bF9zaXplX3Qgc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9zc2l6ZV90IHNzaXplX3Q7CgoK
Cgp0eXBlZGVmIF9fa2VybmVsX3B0cmRpZmZfdCBwdHJkaWZmX3Q7CgoKCgp0eXBlZGVmIF9fa2Vy
bmVsX3RpbWVfdCB0aW1lX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX2Nsb2NrX3QgY2xvY2tfdDsK
CgoKCnR5cGVkZWYgX19rZXJuZWxfY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5z
aWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKCnR5cGVkZWYg
dW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0Owp0eXBl
ZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmc7CgoKCgp0
eXBlZGVmIF9fdTggdV9pbnQ4X3Q7CnR5cGVkZWYgX19zOCBpbnQ4X3Q7CnR5cGVkZWYgX191MTYg
dV9pbnQxNl90Owp0eXBlZGVmIF9fczE2IGludDE2X3Q7CnR5cGVkZWYgX191MzIgdV9pbnQzMl90
Owp0eXBlZGVmIF9fczMyIGludDMyX3Q7CgoKCnR5cGVkZWYgX191OCB1aW50OF90Owp0eXBlZGVm
IF9fdTE2IHVpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVpbnQzMl90OwoKCnR5cGVkZWYgX191NjQg
dWludDY0X3Q7CnR5cGVkZWYgX191NjQgdV9pbnQ2NF90Owp0eXBlZGVmIF9fczY0IGludDY0X3Q7
CiMgMTIzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlw
ZXMuaCIKc3RydWN0IHVzdGF0IHsKICAgICAgICBfX2tlcm5lbF9kYWRkcl90IGZfdGZyZWU7CiAg
ICAgICAgX19rZXJuZWxfaW5vX3QgZl90aW5vZGU7CiAgICAgICAgY2hhciBmX2ZuYW1lWzZdOwog
ICAgICAgIGNoYXIgZl9mcGFja1s2XTsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvYXNtL21teC5oIiAyCgpleHRlcm4gdm9pZCAqX21teF9tZW1jcHkodm9p
ZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBzaXplKTsKZXh0ZXJuIHZvaWQgbW14X2Ns
ZWFyX3BhZ2Uodm9pZCAqcGFnZSk7CmV4dGVybiB2b2lkIG1teF9jb3B5X3BhZ2Uodm9pZCAqdG8s
IHZvaWQgKmZyb20pOwojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvYXNtL3BhZ2UuaCIgMgojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvYXNtL3BhZ2UuaCIKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHB0ZV9sb3c7
IH0gcHRlX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7IH0gcG1kX3Q7CnR5
cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CgoKCgp0eXBlZGVmIHN0
cnVjdCB7IHVuc2lnbmVkIGxvbmcgcGdwcm90OyB9IHBncHJvdF90OwojIDEwNSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wYWdlLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIGludCBnZXRfb3JkZXIodW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgaW50IG9yZGVy
OwoKICAgICAgICBzaXplID0gKHNpemUtMSkgPj4gKDEyIC0xKTsKICAgICAgICBvcmRlciA9IC0x
OwogICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIHNpemUgPj49IDE7CiAgICAgICAgICAgICAg
ICBvcmRlcisrOwogICAgICAgIH0gd2hpbGUgKHNpemUpOwogICAgICAgIHJldHVybiBvcmRlcjsK
fQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3Byb2Nl
c3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2Fz
bS90eXBlcy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgiIDEKIyAxNyAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2Nv
bmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L2NhY2hlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvYXNtL2NhY2hlLmgiIDEKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvYXNtL2NhY2hlLmgiIDIKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMgojIDE4ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTkg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdGhy
ZWFkcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMgojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCBjcHVpbmZvX3g4
NiB7CiAgICAgICAgX191OCB4ODY7CiAgICAgICAgX191OCB4ODZfdmVuZG9yOwogICAgICAgIF9f
dTggeDg2X21vZGVsOwogICAgICAgIF9fdTggeDg2X21hc2s7CiAgICAgICAgY2hhciB3cF93b3Jr
c19vazsKICAgICAgICBjaGFyIGhsdF93b3Jrc19vazsKICAgICAgICBjaGFyIGhhcmRfbWF0aDsK
ICAgICAgICBjaGFyIHJmdTsKICAgICAgICBpbnQgY3B1aWRfbGV2ZWw7CiAgICAgICAgX191MzIg
eDg2X2NhcGFiaWxpdHlbNF07CiAgICAgICAgY2hhciB4ODZfdmVuZG9yX2lkWzE2XTsKICAgICAg
ICBjaGFyIHg4Nl9tb2RlbF9pZFs2NF07CiAgICAgICAgaW50IHg4Nl9jYWNoZV9zaXplOwoKICAg
ICAgICBpbnQgZmRpdl9idWc7CiAgICAgICAgaW50IGYwMGZfYnVnOwogICAgICAgIGludCBjb21h
X2J1ZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvb3BzX3Blcl9qaWZmeTsKICAgICAgICB1bnNp
Z25lZCBsb25nICpwZ2RfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcG1kX3F1aWNrOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgKnB0ZV9xdWljazsKICAgICAgICB1bnNpZ25lZCBsb25nIHBn
dGFibGVfY2FjaGVfc3o7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg2KSkp
KSkpOwojIDcyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3By
b2Nlc3Nvci5oIgpleHRlcm4gc3RydWN0IGNwdWluZm9feDg2IGJvb3RfY3B1X2RhdGE7CmV4dGVy
biBzdHJ1Y3QgdHNzX3N0cnVjdCBpbml0X3Rzc1sxXTsKIyA5NCAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIGNoYXIgaWdub3Jl
X2lycTEzOwoKZXh0ZXJuIHZvaWQgaWRlbnRpZnlfY3B1KHN0cnVjdCBjcHVpbmZvX3g4NiAqKTsK
ZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8oc3RydWN0IGNwdWluZm9feDg2ICopOwpleHRlcm4g
dm9pZCBkb2RneV90c2Modm9pZCk7CiMgMTI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdGF0aWMgaW5saW5lIHZvaWQgY3B1aWQoaW50
IG9wLCBpbnQgKmVheCwgaW50ICplYngsIGludCAqZWN4LCBpbnQgKmVkeCkKewogICAgICAgIF9f
YXNtX18oImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiICgqZWF4KSwKICAgICAgICAgICAg
ICAgICAgIj1iIiAoKmVieCksCiAgICAgICAgICAgICAgICAgICI9YyIgKCplY3gpLAogICAgICAg
ICAgICAgICAgICAiPWQiICgqZWR4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKSk7Cn0KCgoK
CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VheCh1bnNpZ25lZCBpbnQgb3ApCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZWF4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAg
ICAgICAgICAgIDogIj1hIiAoZWF4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAg
ICAgICAgICAgOiAiYngiLCAiY3giLCAiZHgiKTsKICAgICAgICByZXR1cm4gZWF4Owp9CnN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VieCh1bnNpZ25lZCBpbnQgb3ApCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZWF4LCBlYng7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAg
ICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpCiAgICAgICAgICAgICAgICA6ICIwIiAo
b3ApCiAgICAgICAgICAgICAgICA6ICJjeCIsICJkeCIgKTsKICAgICAgICByZXR1cm4gZWJ4Owp9
CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VjeCh1bnNpZ25lZCBpbnQgb3ApCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlY3g7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgog
ICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWMiIChlY3gpCiAgICAgICAgICAgICAgICA6
ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJkeCIgKTsKICAgICAgICByZXR1cm4g
ZWN4Owp9CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VkeCh1bnNpZ25lZCBpbnQg
b3ApCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlZHg7CgogICAgICAgIF9fYXNtX18oImNw
dWlkIgogICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWQiIChlZHgpCiAgICAgICAgICAg
ICAgICA6ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJjeCIpOwogICAgICAgIHJl
dHVybiBlZHg7Cn0KIyAxOTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIG1tdV9jcjRfZmVhdHVyZXM7
CgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2luX2NyNCAodW5zaWduZWQgbG9uZyBtYXNrKQp7CiAg
ICAgICAgbW11X2NyNF9mZWF0dXJlcyB8PSBtYXNrOwogICAgICAgIF9fYXNtX18oIm1vdmwgJSVj
cjQsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm9ybCAlMCwlJWVheFxuXHQiCiAgICAgICAg
ICAgICAgICAibW92bCAlJWVheCwlJWNyNFxuIgogICAgICAgICAgICAgICAgOiA6ICJpcmciICht
YXNrKQogICAgICAgICAgICAgICAgOiJheCIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJf
aW5fY3I0ICh1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBtbXVfY3I0X2ZlYXR1cmVzICY9
IH5tYXNrOwogICAgICAgIF9fYXNtX18oIm1vdmwgJSVjcjQsJSVlYXhcblx0IgogICAgICAgICAg
ICAgICAgImFuZGwgJTAsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgJSVlYXgsJSVj
cjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAofm1hc2spCiAgICAgICAgICAgICAgICA6
ImF4Iik7Cn0KIyAyNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9h
c20vcHJvY2Vzc29yLmgiCmV4dGVybiBpbnQgTUNBX2J1czsKCgoKZXh0ZXJuIHVuc2lnbmVkIGlu
dCBtYWNoaW5lX2lkOwpleHRlcm4gdW5zaWduZWQgaW50IG1hY2hpbmVfc3VibW9kZWxfaWQ7CmV4
dGVybiB1bnNpZ25lZCBpbnQgQklPU19yZXZpc2lvbjsKZXh0ZXJuIHVuc2lnbmVkIGludCBtY2Ff
cGVudGl1bV9mbGFnOwojIDI4MiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IGkzODdfZnNhdmVfc3RydWN0IHsKICAgICAgICBs
b25nIGN3ZDsKICAgICAgICBsb25nIHN3ZDsKICAgICAgICBsb25nIHR3ZDsKICAgICAgICBsb25n
IGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25nIGZv
czsKICAgICAgICBsb25nIHN0X3NwYWNlWzIwXTsKICAgICAgICBsb25nIHN0YXR1czsKfTsKCnN0
cnVjdCBpMzg3X2Z4c2F2ZV9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGN3ZDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzd2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHdkOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGZvcDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBsb25nIGZj
czsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25nIG14Y3Ny
OwogICAgICAgIGxvbmcgcmVzZXJ2ZWQ7CiAgICAgICAgbG9uZyBzdF9zcGFjZVszMl07CiAgICAg
ICAgbG9uZyB4bW1fc3BhY2VbMzJdOwogICAgICAgIGxvbmcgcGFkZGluZ1s1Nl07Cn0gX19hdHRy
aWJ1dGVfXyAoKGFsaWduZWQgKDE2KSkpOwoKc3RydWN0IGkzODdfc29mdF9zdHJ1Y3QgewogICAg
ICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwogICAgICAgIGxvbmcgdHdkOwogICAgICAg
IGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxv
bmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBdOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
ZnRvcCwgY2hhbmdlZCwgbG9va2FoZWFkLCBub191cGRhdGUsIHJtLCBhbGltaXQ7CiAgICAgICAg
c3RydWN0IGluZm8gKmluZm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBlbnRyeV9laXA7Cn07Cgp1
bmlvbiBpMzg3X3VuaW9uIHsKICAgICAgICBzdHJ1Y3QgaTM4N19mc2F2ZV9zdHJ1Y3QgZnNhdmU7
CiAgICAgICAgc3RydWN0IGkzODdfZnhzYXZlX3N0cnVjdCBmeHNhdmU7CiAgICAgICAgc3RydWN0
IGkzODdfc29mdF9zdHJ1Y3Qgc29mdDsKfTsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7CgpzdHJ1Y3QgdHNzX3N0cnVjdCB7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgYmFja19saW5rLF9fYmxoOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZXNwMDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczAsX19zczBoOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZXNwMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczEsX19zczFoOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZXNwMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczIsX19zczJoOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgX19jcjM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBlZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXgsZWN4LGVk
eCxlYng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl
YnA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc2k7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZGk7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
bGR0LCBfX2xkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHJhY2UsIGJpdG1hcDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGlvX2JpdG1hcFszMiArMV07CgoKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyBfX2NhY2hlbGluZV9maWxsZXJbNV07Cn07CgpzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBnczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBkZWJ1Z3JlZ1s4XTsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBjcjIsIHRyYXBfbm8sIGVycm9yX2NvZGU7CgogICAgICAgIHVuaW9u
IGkzODdfdW5pb24gaTM4NzsKCiAgICAgICAgc3RydWN0IHZtODZfc3RydWN0ICogdm04Nl9pbmZv
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHY4NmZsYWdzLCB2ODZtYXNrLCB2ODZtb2RlLCBzYXZlZF9lc3AwOwoKICAgICAgICBpbnQg
aW9wZXJtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fYml0bWFwWzMyICsxXTsKfTsKIyA0MjQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
CnN0cnVjdCB0YXNrX3N0cnVjdDsKc3RydWN0IG1tX3N0cnVjdDsKCgpleHRlcm4gdm9pZCByZWxl
YXNlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgoKCmV4dGVybiBpbnQga2VybmVsX3Ro
cmVhZChpbnQgKCpmbikodm9pZCAqKSwgdm9pZCAqIGFyZywgdW5zaWduZWQgbG9uZyBmbGFncyk7
CgoKZXh0ZXJuIHZvaWQgY29weV9zZWdtZW50cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVj
dCBtbV9zdHJ1Y3QgKiBtbSk7CmV4dGVybiB2b2lkIHJlbGVhc2Vfc2VnbWVudHMoc3RydWN0IG1t
X3N0cnVjdCAqIG1tKTsKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0aHJlYWRfc2F2
ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQpCnsKICAgICAgICByZXR1cm4gKCh1bnNpZ25l
ZCBsb25nICopdC0+ZXNwKVszXTsKfQoKdW5zaWduZWQgbG9uZyBnZXRfd2NoYW4oc3RydWN0IHRh
c2tfc3RydWN0ICpwKTsKIyA0NTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCBtaWNyb2NvZGUgewogICAgICAgIHVuc2lnbmVk
IGludCBoZHJ2ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHJldjsKICAgICAgICB1bnNpZ25lZCBp
bnQgZGF0ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2lnOwogICAgICAgIHVuc2lnbmVkIGludCBj
a3N1bTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGRydmVyOwogICAgICAgIHVuc2lnbmVkIGludCBw
ZjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWRbNV07CiAgICAgICAgdW5zaWduZWQgaW50
IGJpdHNbNTAwXTsKfTsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcmVwX25vcCh2b2lkKQp7CiAg
ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJlcDtub3AiKTsKfQojIDQ5NiAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIGlu
bGluZSB2b2lkIHByZWZldGNoKGNvbnN0IHZvaWQgKngpCnsKICAgICAgICAgX19hc21fXyBfX3Zv
bGF0aWxlX18gKCJwcmVmZXRjaCAoJTApIiA6IDogInIiKHgpKTsKfQoKZXh0ZXJuIGlubGluZSB2
b2lkIHByZWZldGNodyhjb25zdCB2b2lkICp4KQp7CiAgICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fICgicHJlZmV0Y2h3ICglMCkiIDogOiAiciIoeCkpOwp9CiMgMTQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCiMgMTUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAy
CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2xpc3Qu
aCIgMgojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
bGlzdC5oIgpzdHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0
LCAqcHJldjsKfTsKIyAzNyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfYWRkKHN0cnVjdCBs
aXN0X2hlYWQgKiBuZXcsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIHByZXYsCiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gbmV3OwogICAg
ICAgIG5ldy0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3LT5wcmV2ID0gcHJldjsKICAgICAgICBw
cmV2LT5uZXh0ID0gbmV3Owp9CiMgNTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3Ry
dWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19s
aXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQpOwp9CiMgNjggIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZv
aWQgbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQg
KmhlYWQpCnsKICAgICAgICBfX2xpc3RfYWRkKG5ldywgaGVhZC0+cHJldiwgaGVhZCk7Cn0KIyA4
MCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIK
c3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIG5l
eHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV4
dDsKfQoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3RfZGVsKHN0cnVjdCBsaXN0X2hl
YWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQp
Owp9CgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2RlbF9pbml0KHN0cnVjdCBsaXN0
X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5l
eHQpOwogICAgICAgIGRvIHsgKGVudHJ5KS0+bmV4dCA9IChlbnRyeSk7IChlbnRyeSktPnByZXYg
PSAoZW50cnkpOyB9IHdoaWxlICgwKTsKfQoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBsaXN0
X2VtcHR5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICByZXR1cm4gaGVhZC0+bmV4
dCA9PSBoZWFkOwp9CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9zcGxpY2Uoc3Ry
dWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsKCiAgICAgICAgaWYgKGZpcnN0ICE9
IGxpc3QpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5w
cmV2OwogICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqYXQgPSBoZWFkLT5uZXh0OwoK
ICAgICAgICAgICAgICAgIGZpcnN0LT5wcmV2ID0gaGVhZDsKICAgICAgICAgICAgICAgIGhlYWQt
Pm5leHQgPSBmaXJzdDsKCiAgICAgICAgICAgICAgICBsYXN0LT5uZXh0ID0gYXQ7CiAgICAgICAg
ICAgICAgICBhdC0+cHJldiA9IGxhc3Q7CiAgICAgICAgfQp9CiMgMTMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIgMgojIDI1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbW9kdWxlLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb25maWcu
aCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vYXRv
bWljLmgiIDIKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2Fz
bS9hdG9taWMuaCIKdHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGlsZSBpbnQgY291bnRlcjsgfSBhdG9t
aWNfdDsKIyA1MyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9h
dG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfYWRkKGludCBpLCBhdG9taWNf
dCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIg
ImFkZGwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAg
ICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA2OSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5l
X18gdm9pZCBhdG9taWNfc3ViKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgInN1YmwgJTEsJTAiCiAgICAgICAgICAg
ICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2
LT5jb3VudGVyKSk7Cn0KIyA4NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19zdWJfYW5kX3Rl
c3QoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJzdWJsICUyLCUwOyBz
ZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAoYykKICAg
ICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAg
ICAgICByZXR1cm4gYzsKfQojIDEwNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfaW5jKGF0
b21pY190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAg
ICAiIiAiaW5jbCAlMCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAg
ICAgICAgICAgOiJtIiAodi0+Y291bnRlcikpOwp9CiMgMTIwICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lk
IGF0b21pY19kZWMoYXRvbWljX3QgKnYpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAgICAgICAgICIiICJkZWNsICUwIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNv
dW50ZXIpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSk7Cn0KIyAxMzcgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBf
X2lubGluZV9fIGludCBhdG9taWNfZGVjX2FuZF90ZXN0KGF0b21pY190ICp2KQp7CiAgICAgICAg
dW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAg
ICAgICAgICIiICJkZWNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNv
dW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDogIm1l
bW9yeSIpOwogICAgICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNTcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGlu
dCBhdG9taWNfaW5jX2FuZF90ZXN0KGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJp
bmNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFt
IiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwogICAg
ICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNzggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfYWRk
X25lZ2F0aXZlKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsK
CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiYWRkbCAl
MiwlMDsgc2V0cyAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIg
KGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5
Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L21vZHVsZS5oIiAyCgoKc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9l
bnRyeTsKCgpzdHJ1Y3Qga2VybmVsX3N5bQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsK
ICAgICAgICBjaGFyIG5hbWVbNjBdOwp9OwoKc3RydWN0IG1vZHVsZV9zeW1ib2wKewogICAgICAg
IHVuc2lnbmVkIGxvbmcgdmFsdWU7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKfTsKCnN0cnVj
dCBtb2R1bGVfcmVmCnsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpkZXA7CiAgICAgICAgc3RydWN0
IG1vZHVsZSAqcmVmOwogICAgICAgIHN0cnVjdCBtb2R1bGVfcmVmICpuZXh0X3JlZjsKfTsKCgpz
dHJ1Y3QgbW9kdWxlX3BlcnNpc3Q7CgpzdHJ1Y3QgbW9kdWxlCnsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNpemVfb2Zfc3RydWN0OwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm5leHQ7CiAgICAgICAg
Y29uc3QgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpemU7CgogICAgICAgIHVu
aW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgYXRvbWljX3QgdXNlY291bnQ7CiAgICAgICAg
ICAgICAgICBsb25nIHBhZDsKICAgICAgICB9IHVjOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwoKICAgICAgICB1bnNpZ25lZCBuc3ltczsKICAgICAgICB1bnNpZ25lZCBuZGVwczsKCiAg
ICAgICAgc3RydWN0IG1vZHVsZV9zeW1ib2wgKnN5bXM7CiAgICAgICAgc3RydWN0IG1vZHVsZV9y
ZWYgKmRlcHM7CiAgICAgICAgc3RydWN0IG1vZHVsZV9yZWYgKnJlZnM7CiAgICAgICAgaW50ICgq
aW5pdCkodm9pZCk7CiAgICAgICAgdm9pZCAoKmNsZWFudXApKHZvaWQpOwogICAgICAgIGNvbnN0
IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4X3RhYmxlX3N0YXJ0OwogICAgICAgIGNv
bnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4X3RhYmxlX2VuZDsKCgoKCgoKICAg
ICAgICBjb25zdCBzdHJ1Y3QgbW9kdWxlX3BlcnNpc3QgKnBlcnNpc3Rfc3RhcnQ7CiAgICAgICAg
Y29uc3Qgc3RydWN0IG1vZHVsZV9wZXJzaXN0ICpwZXJzaXN0X2VuZDsKICAgICAgICBpbnQgKCpj
YW5fdW5sb2FkKSh2b2lkKTsKICAgICAgICBpbnQgcnVuc2l6ZTsKICAgICAgICBjb25zdCBjaGFy
ICprYWxsc3ltc19zdGFydDsKICAgICAgICBjb25zdCBjaGFyICprYWxsc3ltc19lbmQ7CiAgICAg
ICAgY29uc3QgY2hhciAqYXJjaGRhdGFfc3RhcnQ7CiAgICAgICAgY29uc3QgY2hhciAqYXJjaGRh
dGFfZW5kOwogICAgICAgIGNvbnN0IGNoYXIgKmtlcm5lbF9kYXRhOwp9OwoKc3RydWN0IG1vZHVs
ZV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgbG9uZyB1c2Vjb3Vu
dDsKfTsKIyAxODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9tb2R1bGUuaCIKZXh0ZXJuIHZvaWQgaW50ZXJfbW9kdWxlX3JlZ2lzdGVyKGNvbnN0IGNoYXIg
Kiwgc3RydWN0IG1vZHVsZSAqLCBjb25zdCB2b2lkICopOwpleHRlcm4gdm9pZCBpbnRlcl9tb2R1
bGVfdW5yZWdpc3Rlcihjb25zdCBjaGFyICopOwpleHRlcm4gY29uc3Qgdm9pZCAqaW50ZXJfbW9k
dWxlX2dldChjb25zdCBjaGFyICopOwpleHRlcm4gY29uc3Qgdm9pZCAqaW50ZXJfbW9kdWxlX2dl
dF9yZXF1ZXN0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgaW50ZXJf
bW9kdWxlX3B1dChjb25zdCBjaGFyICopOwoKc3RydWN0IGludGVyX21vZHVsZV9lbnRyeSB7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIGNvbnN0IGNoYXIgKmltX25hbWU7
CiAgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXI7CiAgICAgICAgY29uc3Qgdm9pZCAqdXNlcmRh
dGE7Cn07CgpleHRlcm4gaW50IHRyeV9pbmNfbW9kX2NvdW50KHN0cnVjdCBtb2R1bGUgKm1vZCk7
CiMgMzI1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbW9k
dWxlLmgiCmV4dGVybiBzdHJ1Y3QgbW9kdWxlICptb2R1bGVfbGlzdDsKIyAxNDcgIjgxMzl0b28u
YyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9r
ZXJuZWwuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgva2VybmVsLmgiCiMgMSAiL21zd2cvb3B0L2djYy0zLjAuMi94ODYvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4wLjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi9tc3dn
L29wdC9nY2MtMy4wLjIveDg2L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4yL2lu
Y2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlz
dDsKIyAxMTAgIi9tc3dnL29wdC9nY2MtMy4wLjIveDg2L2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2
YV9saXN0OwojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgva2VybmVsLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvbGlua2FnZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMgojIDEyICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxMyAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3R5cGVz
LmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L2tlcm5lbC5oIiAyCiMgNDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9rZXJuZWwuaCIKc3RydWN0IGNvbXBsZXRpb247CgpleHRlcm4gc3RydWN0IG5vdGlm
aWVyX2Jsb2NrICpwYW5pY19ub3RpZmllcl9saXN0OwogICAgICAgICAgIHZvaWQgcGFuaWMoY29u
c3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChub3JldHVybiwgZm9y
bWF0IChwcmludGYsIDEsIDIpKSk7CiAgICAgICAgICAgdm9pZCBkb19leGl0KGxvbmcgZXJyb3Jf
Y29kZSkKICAgICAgICBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwogICAgICAgICAgIHZvaWQg
Y29tcGxldGVfYW5kX2V4aXQoc3RydWN0IGNvbXBsZXRpb24gKiwgbG9uZykKICAgICAgICBfX2F0
dHJpYnV0ZV9fKChub3JldHVybikpOwpleHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBzaW1wbGVfc3RydG91bChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQp
OwpleHRlcm4gbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVk
IGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNo
YXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIGxvbmcgc2ltcGxlX3N0cnRv
bGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCBzcHJpbnRm
KGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLik7CmV4dGVybiBpbnQgdnNwcmludGYo
Y2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwpleHRlcm4gaW50IHNucHJpbnRmKGNo
YXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CmV4dGVybiBpbnQg
dnNucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlz
dCBhcmdzKTsKCmV4dGVybiBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAu
Li4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsMiwzKSkpOwpleHRlcm4g
aW50IHZzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwoKZXh0ZXJu
IGludCBnZXRfb3B0aW9uKGNoYXIgKipzdHIsIGludCAqcGludCk7CmV4dGVybiBjaGFyICpnZXRf
b3B0aW9ucyhjaGFyICpzdHIsIGludCBuaW50cywgaW50ICppbnRzKTsKZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgbG9uZyBtZW1wYXJzZShjaGFyICpwdHIsIGNoYXIgKipyZXRwdHIpOwpleHRlcm4gdm9p
ZCBkZXZfcHJvYmVfbG9jayh2b2lkKTsKZXh0ZXJuIHZvaWQgZGV2X3Byb2JlX3VubG9jayh2b2lk
KTsKCmV4dGVybiBpbnQgc2Vzc2lvbl9vZl9wZ3JwKGludCBwZ3JwKTsKCiBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDApKSkgaW50IHByaW50ayhjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAgICAg
X19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwoKZXh0ZXJuIGludCBjb25z
b2xlX2xvZ2xldmVsOwoKc3RhdGljIGlubGluZSB2b2lkIGNvbnNvbGVfc2lsZW50KHZvaWQpCnsK
ICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNvbnNv
bGVfdmVyYm9zZSh2b2lkKQp7CiAgICAgICAgaWYgKGNvbnNvbGVfbG9nbGV2ZWwpCiAgICAgICAg
ICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gMTU7Cn0KCmV4dGVybiB2b2lkIGJ1c3Rfc3Bpbmxv
Y2tzKGludCB5ZXMpOwpleHRlcm4gaW50IG9vcHNfaW5fcHJvZ3Jlc3M7CgpleHRlcm4gaW50IHRh
aW50ZWQ7CmV4dGVybiBjb25zdCBjaGFyICpwcmludF90YWludGVkKHZvaWQpOwojIDE2MCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpzdHJ1
Y3Qgc3lzaW5mbyB7CiAgICAgICAgbG9uZyB1cHRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBs
b2Fkc1szXTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFscmFtOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZnJlZXJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNoYXJlZHJhbTsKICAgICAgICB1
bnNpZ25lZCBsb25nIGJ1ZmZlcnJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFsc3dhcDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVzd2FwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBy
b2NzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBhZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRv
dGFsaGlnaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVoaWdoOwogICAgICAgIHVuc2lnbmVk
IGludCBtZW1fdW5pdDsKICAgICAgICBjaGFyIF9mWzIwLTIqc2l6ZW9mKGxvbmcpLXNpemVvZihp
bnQpXTsKfTsKIyAxNDggIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9wY2kuaCIgMQojIDI3NiAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9wY2lfaWRzLmgiIDEKIyAyNzcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9wY2kuaCIgMgojIDI5OSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMg
MzAwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcGNpLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyAzMDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9pb3BvcnQuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvaW9wb3J0LmgiCnN0cnVjdCByZXNvdXJjZSB7CiAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwgKnNpYmxp
bmcsICpjaGlsZDsKfTsKCnN0cnVjdCByZXNvdXJjZV9saXN0IHsKICAgICAgICBzdHJ1Y3QgcmVz
b3VyY2VfbGlzdCAqbmV4dDsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKICAgICAgICBz
dHJ1Y3QgcGNpX2RldiAqZGV2Owp9OwojIDgzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvaW9wb3J0LmgiCmV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgaW9wb3J0
X3Jlc291cmNlOwpleHRlcm4gc3RydWN0IHJlc291cmNlIGlvbWVtX3Jlc291cmNlOwoKZXh0ZXJu
IGludCBnZXRfcmVzb3VyY2VfbGlzdChzdHJ1Y3QgcmVzb3VyY2UgKiwgY2hhciAqYnVmLCBpbnQg
c2l6ZSk7CgpleHRlcm4gaW50IGNoZWNrX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcm9vdCwg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgcmVxdWVzdF9yZXNvdXJj
ZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXJjZSAqbmV3KTsKZXh0ZXJuIGlu
dCByZWxlYXNlX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqbmV3KTsKZXh0ZXJuIGludCBhbGxv
Y2F0ZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXJjZSAqbmV3
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1pbiwgdW5zaWduZWQgbG9uZyBt
YXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhbGlnbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqYWxpZ25mKSh2b2lkICosIHN0cnVjdCBy
ZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICphbGlnbmZfZGF0YSk7CgoKCgoKZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVz
dF9yZWdpb24oc3RydWN0IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk
IGxvbmcgbiwgY29uc3QgY2hhciAqbmFtZSk7CgoKCgoKCgpleHRlcm4gaW50IF9fY2hlY2tfcmVn
aW9uKHN0cnVjdCByZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKZXh0
ZXJuIHZvaWQgX19yZWxlYXNlX3JlZ2lvbihzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZyk7CgoKCgoKZXh0ZXJuIHZvaWQgYXV0b2lycV9zZXR1cChpbnQgd2Fp
dHRpbWUpOwpleHRlcm4gaW50IGF1dG9pcnFfcmVwb3J0KGludCB3YWl0dGltZSk7CiMgMzAyICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcGNpLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbGlzdC5oIiAx
CiMgMzAzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcGNp
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
ZXJybm8uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vZXJybm8uaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9lcnJuby5oIiAyCiMgMzA0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvcGNpLmgiIDIKCgplbnVtIHBjaV9tbWFwX3N0YXRlIHsKICAgICAg
ICBwY2lfbW1hcF9pbywKICAgICAgICBwY2lfbW1hcF9tZW0KfTsKIyAzMzYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9wY2kuaCIKc3RydWN0IHBjaV9kZXYg
ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZ2xvYmFsX2xpc3Q7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBidXNfbGlzdDsKICAgICAgICBzdHJ1Y3QgcGNpX2J1cyAqYnVzOwogICAgICAgIHN0
cnVjdCBwY2lfYnVzICpzdWJvcmRpbmF0ZTsKCiAgICAgICAgdm9pZCAqc3lzZGF0YTsKICAgICAg
ICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NlbnQ7CgogICAgICAgIHVuc2lnbmVkIGludCBk
ZXZmbjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN1YnN5c3RlbV92ZW5kb3I7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc3Vic3lzdGVtX2RldmljZTsKICAgICAgICB1bnNpZ25lZCBpbnQg
Y2xhc3M7CiAgICAgICAgdTggaGRyX3R5cGU7CiAgICAgICAgdTggcm9tX2Jhc2VfcmVnOwoKICAg
ICAgICBzdHJ1Y3QgcGNpX2RyaXZlciAqZHJpdmVyOwogICAgICAgIHZvaWQgKmRyaXZlcl9kYXRh
OwogICAgICAgIHU2NCBkbWFfbWFzazsKCgoKCgogICAgICAgIHUzMiBjdXJyZW50X3N0YXRlOwoK
CgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZW5kb3JfY29tcGF0aWJsZVs0XTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBkZXZpY2VfY29tcGF0aWJsZVs0XTsKCgoKCgogICAgICAgIHVuc2lnbmVk
IGludCBpcnE7CiAgICAgICAgc3RydWN0IHJlc291cmNlIHJlc291cmNlWzEyXTsKICAgICAgICBz
dHJ1Y3QgcmVzb3VyY2UgZG1hX3Jlc291cmNlWzJdOwogICAgICAgIHN0cnVjdCByZXNvdXJjZSBp
cnFfcmVzb3VyY2VbMl07CgogICAgICAgIGNoYXIgbmFtZVs4MF07CiAgICAgICAgY2hhciBzbG90
X25hbWVbOF07CiAgICAgICAgaW50IGFjdGl2ZTsKICAgICAgICBpbnQgcm87CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgcmVnczsKCiAgICAgICAgaW50ICgqcHJlcGFyZSkoc3RydWN0IHBjaV9kZXYg
KmRldik7CiAgICAgICAgaW50ICgqYWN0aXZhdGUpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwogICAg
ICAgIGludCAoKmRlYWN0aXZhdGUpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwp9OwojIDQwNyAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3BjaS5oIgpzdHJ1Y3Qg
cGNpX2J1cyB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBub2RlOwogICAgICAgIHN0cnVjdCBw
Y2lfYnVzICpwYXJlbnQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjaGlsZHJlbjsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGRldmljZXM7CiAgICAgICAgc3RydWN0IHBjaV9kZXYgKnNlbGY7
CiAgICAgICAgc3RydWN0IHJlc291cmNlICpyZXNvdXJjZVs0XTsKCiAgICAgICAgc3RydWN0IHBj
aV9vcHMgKm9wczsKICAgICAgICB2b2lkICpzeXNkYXRhOwogICAgICAgIHN0cnVjdCBwcm9jX2Rp
cl9lbnRyeSAqcHJvY2RpcjsKCiAgICAgICAgdW5zaWduZWQgY2hhciBudW1iZXI7CiAgICAgICAg
dW5zaWduZWQgY2hhciBwcmltYXJ5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5Owog
ICAgICAgIHVuc2lnbmVkIGNoYXIgc3Vib3JkaW5hdGU7CgogICAgICAgIGNoYXIgbmFtZVs0OF07
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRl
dmljZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VyaWFsOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
cG5wdmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcHJvZHVjdHZlcjsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIGNoZWNrc3VtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkMTsKfTsKCgoKZXh0ZXJu
IHN0cnVjdCBsaXN0X2hlYWQgcGNpX3Jvb3RfYnVzZXM7CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFk
IHBjaV9kZXZpY2VzOwojIDQ1MiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3BjaS5oIgpzdHJ1Y3QgcGNpX29wcyB7CiAgICAgICAgaW50ICgqcmVhZF9ieXRl
KShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHU4ICp2YWwpOwogICAgICAgIGludCAoKnJl
YWRfd29yZCkoc3RydWN0IHBjaV9kZXYgKiwgaW50IHdoZXJlLCB1MTYgKnZhbCk7CiAgICAgICAg
aW50ICgqcmVhZF9kd29yZCkoc3RydWN0IHBjaV9kZXYgKiwgaW50IHdoZXJlLCB1MzIgKnZhbCk7
CiAgICAgICAgaW50ICgqd3JpdGVfYnl0ZSkoc3RydWN0IHBjaV9kZXYgKiwgaW50IHdoZXJlLCB1
OCB2YWwpOwogICAgICAgIGludCAoKndyaXRlX3dvcmQpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3
aGVyZSwgdTE2IHZhbCk7CiAgICAgICAgaW50ICgqd3JpdGVfZHdvcmQpKHN0cnVjdCBwY2lfZGV2
ICosIGludCB3aGVyZSwgdTMyIHZhbCk7Cn07CgpzdHJ1Y3QgcGJ1c19zZXRfcmFuZ2VzX2RhdGEK
ewogICAgICAgIGludCBmb3VuZF92Z2E7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19zdGFydCwg
aW9fZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWVtX3N0YXJ0LCBtZW1fZW5kOwp9OwoKc3Ry
dWN0IHBjaV9kZXZpY2VfaWQgewogICAgICAgIHVuc2lnbmVkIGludCB2ZW5kb3IsIGRldmljZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3VidmVuZG9yLCBzdWJkZXZpY2U7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGNsYXNzLCBjbGFzc19tYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZHJpdmVyX2Rh
dGE7Cn07CgpzdHJ1Y3QgcGNpX2RyaXZlciB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBub2Rl
OwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQg
KmlkX3RhYmxlOwogICAgICAgIGludCAoKnByb2JlKSAoc3RydWN0IHBjaV9kZXYgKmRldiwgY29u
c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKTsKICAgICAgICB2b2lkICgqcmVtb3ZlKSAoc3Ry
dWN0IHBjaV9kZXYgKmRldik7CiAgICAgICAgaW50ICgqc2F2ZV9zdGF0ZSkgKHN0cnVjdCBwY2lf
ZGV2ICpkZXYsIHUzMiBzdGF0ZSk7CiAgICAgICAgaW50ICgqc3VzcGVuZCkoc3RydWN0IHBjaV9k
ZXYgKmRldiwgdTMyIHN0YXRlKTsKICAgICAgICBpbnQgKCpyZXN1bWUpIChzdHJ1Y3QgcGNpX2Rl
diAqZGV2KTsKICAgICAgICBpbnQgKCplbmFibGVfd2FrZSkgKHN0cnVjdCBwY2lfZGV2ICpkZXYs
IHUzMiBzdGF0ZSwgaW50IGVuYWJsZSk7Cn07CiMgNDk0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcGNpLmgiCnZvaWQgcGNpYmlvc19pbml0KHZvaWQpOwp2
b2lkIHBjaWJpb3NfZml4dXBfYnVzKHN0cnVjdCBwY2lfYnVzICopOwppbnQgcGNpYmlvc19lbmFi
bGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICopOwpjaGFyICpwY2liaW9zX3NldHVwIChjaGFyICpz
dHIpOwoKCnZvaWQgcGNpYmlvc19hbGlnbl9yZXNvdXJjZSh2b2lkICosIHN0cnVjdCByZXNvdXJj
ZSAqLCB1bnNpZ25lZCBsb25nKTsKdm9pZCBwY2liaW9zX3VwZGF0ZV9yZXNvdXJjZShzdHJ1Y3Qg
cGNpX2RldiAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgcmVzb3VyY2UgKiwgaW50KTsKdm9pZCBwY2liaW9zX3VwZGF0ZV9pcnEoc3RydWN0
IHBjaV9kZXYgKiwgaW50IGlycSk7CnZvaWQgcGNpYmlvc19maXh1cF9wYnVzX3JhbmdlcyhzdHJ1
Y3QgcGNpX2J1cyAqLCBzdHJ1Y3QgcGJ1c19zZXRfcmFuZ2VzX2RhdGEgKik7CgoKCmludCBwY2li
aW9zX3ByZXNlbnQodm9pZCk7CmludCBwY2liaW9zX3JlYWRfY29uZmlnX2J5dGUgKHVuc2lnbmVk
IGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWduZWQgY2hhciAqdmFsKTsKaW50IHBjaWJp
b3NfcmVhZF9jb25maWdfd29yZCAodW5zaWduZWQgY2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2
X2ZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1
bnNpZ25lZCBzaG9ydCAqdmFsKTsKaW50IHBjaWJpb3NfcmVhZF9jb25maWdfZHdvcmQgKHVuc2ln
bmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIGludCAqdmFsKTsKaW50IHBj
aWJpb3Nfd3JpdGVfY29uZmlnX2J5dGUgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFy
IGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hl
cmUsIHVuc2lnbmVkIGNoYXIgdmFsKTsKaW50IHBjaWJpb3Nfd3JpdGVfY29uZmlnX3dvcmQgKHVu
c2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIHNob3J0IHZhbCk7Cmlu
dCBwY2liaW9zX3dyaXRlX2NvbmZpZ19kd29yZCAodW5zaWduZWQgY2hhciBidXMsIHVuc2lnbmVk
IGNoYXIgZGV2X2ZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgd2hlcmUsIHVuc2lnbmVkIGludCB2YWwpOwppbnQgcGNpYmlvc19maW5kX2NsYXNzICh1bnNp
Z25lZCBpbnQgY2xhc3NfY29kZSwgdW5zaWduZWQgc2hvcnQgaW5kZXgsIHVuc2lnbmVkIGNoYXIg
KmJ1cywgdW5zaWduZWQgY2hhciAqZGV2X2ZuKTsKaW50IHBjaWJpb3NfZmluZF9kZXZpY2UgKHVu
c2lnbmVkIHNob3J0IHZlbmRvciwgdW5zaWduZWQgc2hvcnQgZGV2X2lkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgaW5kZXgsIHVuc2lnbmVkIGNoYXIgKmJ1cywKICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRldl9mbik7CgoKCnZvaWQgcGNp
X2luaXQodm9pZCk7CmludCBwY2lfYnVzX2V4aXN0cyhjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICps
aXN0LCBpbnQgbnIpOwpzdHJ1Y3QgcGNpX2J1cyAqcGNpX3NjYW5fYnVzKGludCBidXMsIHN0cnVj
dCBwY2lfb3BzICpvcHMsIHZvaWQgKnN5c2RhdGEpOwpzdHJ1Y3QgcGNpX2J1cyAqcGNpX2FsbG9j
X3ByaW1hcnlfYnVzKGludCBidXMpOwpzdHJ1Y3QgcGNpX2RldiAqcGNpX3NjYW5fc2xvdChzdHJ1
Y3QgcGNpX2RldiAqdGVtcCk7CmludCBwY2lfcHJvY19hdHRhY2hfZGV2aWNlKHN0cnVjdCBwY2lf
ZGV2ICpkZXYpOwppbnQgcGNpX3Byb2NfZGV0YWNoX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2
KTsKdm9pZCBwY2lfbmFtZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldik7CmNoYXIgKnBjaV9j
bGFzc19uYW1lKHUzMiBjbGFzcyk7CnZvaWQgcGNpX3JlYWRfYnJpZGdlX2Jhc2VzKHN0cnVjdCBw
Y2lfYnVzICpjaGlsZCk7CnN0cnVjdCByZXNvdXJjZSAqcGNpX2ZpbmRfcGFyZW50X3Jlc291cmNl
KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKaW50IHBj
aV9zZXR1cF9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldik7CmludCBwY2lfZ2V0X2ludGVycnVw
dF9waW4oc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IHBjaV9kZXYgKipicmlkZ2UpOwoKCgpz
dHJ1Y3QgcGNpX2RldiAqcGNpX2ZpbmRfZGV2aWNlICh1bnNpZ25lZCBpbnQgdmVuZG9yLCB1bnNp
Z25lZCBpbnQgZGV2aWNlLCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqZnJvbSk7CnN0cnVjdCBwY2lf
ZGV2ICpwY2lfZmluZF9zdWJzeXMgKHVuc2lnbmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGludCBk
ZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzc192
ZW5kb3IsIHVuc2lnbmVkIGludCBzc19kZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBjaV9m
aW5kX2NsYXNzICh1bnNpZ25lZCBpbnQgY2xhc3MsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9t
KTsKc3RydWN0IHBjaV9kZXYgKnBjaV9maW5kX3Nsb3QgKHVuc2lnbmVkIGludCBidXMsIHVuc2ln
bmVkIGludCBkZXZmbik7CmludCBwY2lfZmluZF9jYXBhYmlsaXR5IChzdHJ1Y3QgcGNpX2RldiAq
ZGV2LCBpbnQgY2FwKTsKCmludCBwY2lfcmVhZF9jb25maWdfYnl0ZShzdHJ1Y3QgcGNpX2RldiAq
ZGV2LCBpbnQgd2hlcmUsIHU4ICp2YWwpOwppbnQgcGNpX3JlYWRfY29uZmlnX3dvcmQoc3RydWN0
IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1MTYgKnZhbCk7CmludCBwY2lfcmVhZF9jb25maWdf
ZHdvcmQoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1MzIgKnZhbCk7CmludCBwY2lf
d3JpdGVfY29uZmlnX2J5dGUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1OCB2YWwp
OwppbnQgcGNpX3dyaXRlX2NvbmZpZ193b3JkKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVy
ZSwgdTE2IHZhbCk7CmludCBwY2lfd3JpdGVfY29uZmlnX2R3b3JkKHN0cnVjdCBwY2lfZGV2ICpk
ZXYsIGludCB3aGVyZSwgdTMyIHZhbCk7CgppbnQgcGNpX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBj
aV9kZXYgKmRldik7CnZvaWQgcGNpX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYp
Owp2b2lkIHBjaV9zZXRfbWFzdGVyKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX3NldF9k
bWFfbWFzayhzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1NjQgbWFzayk7CmludCBwY2lfZGFjX3NldF9k
bWFfbWFzayhzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1NjQgbWFzayk7CmludCBwY2lfYXNzaWduX3Jl
c291cmNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBpKTsKCgppbnQgcGNpX3NhdmVfc3RhdGUo
c3RydWN0IHBjaV9kZXYgKmRldiwgdTMyICpidWZmZXIpOwppbnQgcGNpX3Jlc3RvcmVfc3RhdGUo
c3RydWN0IHBjaV9kZXYgKmRldiwgdTMyICpidWZmZXIpOwppbnQgcGNpX3NldF9wb3dlcl9zdGF0
ZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgc3RhdGUpOwppbnQgcGNpX2VuYWJsZV93YWtlKHN0
cnVjdCBwY2lfZGV2ICpkZXYsIHUzMiBzdGF0ZSwgaW50IGVuYWJsZSk7CgoKCmludCBwY2lfY2xh
aW1fcmVzb3VyY2Uoc3RydWN0IHBjaV9kZXYgKiwgaW50KTsKdm9pZCBwY2lfYXNzaWduX3VuYXNz
aWduZWRfcmVzb3VyY2VzKHZvaWQpOwp2b2lkIHBkZXZfZW5hYmxlX2RldmljZShzdHJ1Y3QgcGNp
X2RldiAqKTsKdm9pZCBwZGV2X3NvcnRfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICosIHN0cnVj
dCByZXNvdXJjZV9saXN0ICosIHUzMik7CnVuc2lnbmVkIGxvbmcgcGNpX2JyaWRnZV9jaGVja19p
byhzdHJ1Y3QgcGNpX2RldiAqKTsKdm9pZCBwY2lfZml4dXBfaXJxcyh1OCAoKikoc3RydWN0IHBj
aV9kZXYgKiwgdTggKiksCiAgICAgICAgICAgICAgICAgICAgaW50ICgqKShzdHJ1Y3QgcGNpX2Rl
diAqLCB1OCwgdTgpKTsKCmludCBwY2lfcmVxdWVzdF9yZWdpb25zKHN0cnVjdCBwY2lfZGV2ICos
IGNoYXIgKik7CnZvaWQgcGNpX3JlbGVhc2VfcmVnaW9ucyhzdHJ1Y3QgcGNpX2RldiAqKTsKCgpp
bnQgcGNpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgcGNpX2RyaXZlciAqKTsKdm9pZCBwY2lfdW5y
ZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHBjaV9kcml2ZXIgKik7CnZvaWQgcGNpX2luc2VydF9kZXZp
Y2Uoc3RydWN0IHBjaV9kZXYgKiwgc3RydWN0IHBjaV9idXMgKik7CnZvaWQgcGNpX3JlbW92ZV9k
ZXZpY2Uoc3RydWN0IHBjaV9kZXYgKik7CnN0cnVjdCBwY2lfZHJpdmVyICpwY2lfZGV2X2RyaXZl
cihjb25zdCBzdHJ1Y3QgcGNpX2RldiAqKTsKY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBj
aV9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkcywgY29uc3Qgc3Ry
dWN0IHBjaV9kZXYgKmRldik7CgoKc3RydWN0IHBjaV9wb29sICpwY2lfcG9vbF9jcmVhdGUgKGNv
bnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBwY2lfZGV2ICpkZXYsCiAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwgc2l6ZV90IGFsaWduLCBzaXplX3QgYWxsb2NhdGlvbiwgaW50IGZsYWdzKTsKdm9p
ZCBwY2lfcG9vbF9kZXN0cm95IChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wpOwoKdm9pZCAqcGNpX3Bv
b2xfYWxsb2MgKHN0cnVjdCBwY2lfcG9vbCAqcG9vbCwgaW50IGZsYWdzLCBkbWFfYWRkcl90ICpo
YW5kbGUpOwp2b2lkIHBjaV9wb29sX2ZyZWUgKHN0cnVjdCBwY2lfcG9vbCAqcG9vbCwgdm9pZCAq
dmFkZHIsIGRtYV9hZGRyX3QgYWRkcik7CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BjaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wY2kuaCIgMgojIDEzICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BjaS5oIgpleHRlcm4gdW5zaWduZWQg
aW50IHBjaWJpb3NfYXNzaWduX2FsbF9idXNzZXModm9pZCk7CgoKCgpleHRlcm4gdW5zaWduZWQg
bG9uZyBwY2lfbWVtX3N0YXJ0OwoKCgp2b2lkIHBjaWJpb3Nfc2V0X21hc3RlcihzdHJ1Y3QgcGNp
X2RldiAqZGV2KTsKdm9pZCBwY2liaW9zX3BlbmFsaXplX2lzYV9pcnEoaW50IGlycSk7CgoKCgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlwZXMu
aCIgMQojIDMwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3Bj
aS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L3NsYWIuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvc2xhYi5oIgp0eXBlZGVmIHN0cnVjdCBrbWVtX2NhY2hlX3Mga21lbV9jYWNoZV90OwoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbW0uaCIg
MQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9z
Y2hlZC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKCmV4dGVybiB1bnNpZ25lZCBsb25nIGV2ZW50OwoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEK
IyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9i
aW5mbXRzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvcHRyYWNlLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RydWN0IHB0X3JlZ3MgewogICAgICAg
IGxvbmcgZWJ4OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxv
bmcgZXNpOwogICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcg
ZWF4OwogICAgICAgIGludCB4ZHM7CiAgICAgICAgaW50IHhlczsKICAgICAgICBsb25nIG9yaWdf
ZWF4OwogICAgICAgIGxvbmcgZWlwOwogICAgICAgIGludCB4Y3M7CiAgICAgICAgbG9uZyBlZmxh
Z3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAgaW50IHhzczsKfTsKIyA2MCAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKZXh0ZXJuIHZvaWQg
c2hvd19yZWdzKHN0cnVjdCBwdF9yZWdzICopOwojIDI1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcHRyYWNlLmgiIDIKIyA1ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMQojIDE2
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0
eS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90
eXBlcy5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9jYXBhYmlsaXR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEKIyAxMiAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMg
MTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC93YWl0Lmgi
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2tlcm5l
bC5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC93YWl0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvbGlzdC5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC93YWl0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgMTcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC93YWl0LmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxOCAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BhZ2UuaCIg
MQojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvd2Fp
dC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvd2FpdC5oIiAyCiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC93YWl0LmgiCnN0cnVjdCBfX3dhaXRfcXVldWUgewogICAgICAgIHVuc2ln
bmVkIGludCBmbGFnczsKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICogdGFzazsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsKCgoKCn07CnR5cGVkZWYgc3RydWN0IF9fd2Fp
dF9xdWV1ZSB3YWl0X3F1ZXVlX3Q7CiMgNzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC93YWl0LmgiCnN0cnVjdCBfX3dhaXRfcXVldWVfaGVhZCB7CiAgICAg
ICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGFza19saXN0OwoK
CgoKfTsKdHlwZWRlZiBzdHJ1Y3QgX193YWl0X3F1ZXVlX2hlYWQgd2FpdF9xdWV1ZV9oZWFkX3Q7
CiMgMTU1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvd2Fp
dC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF93YWl0cXVldWVfaGVhZCh3YWl0X3F1ZXVlX2hl
YWRfdCAqcSkKewoKCgoKICAgICAgICBxLT5sb2NrID0gKHNwaW5sb2NrX3QpIHsgfTsKICAgICAg
ICBkbyB7ICgmcS0+dGFza19saXN0KS0+bmV4dCA9ICgmcS0+dGFza19saXN0KTsgKCZxLT50YXNr
X2xpc3QpLT5wcmV2ID0gKCZxLT50YXNrX2xpc3QpOyB9IHdoaWxlICgwKTsKCgoKCn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBpbml0X3dhaXRxdWV1ZV9lbnRyeSh3YWl0X3F1ZXVlX3QgKnEsIHN0cnVj
dCB0YXNrX3N0cnVjdCAqcCkKewoKCgoKICAgICAgICBxLT5mbGFncyA9IDA7CiAgICAgICAgcS0+
dGFzayA9IHA7CgoKCn0KCnN0YXRpYyBpbmxpbmUgaW50IHdhaXRxdWV1ZV9hY3RpdmUod2FpdF9x
dWV1ZV9oZWFkX3QgKnEpCnsKCgoKCgoKICAgICAgICByZXR1cm4gIWxpc3RfZW1wdHkoJnEtPnRh
c2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2FkZF93YWl0X3F1ZXVlKHdhaXRfcXVl
dWVfaGVhZF90ICpoZWFkLCB3YWl0X3F1ZXVlX3QgKm5ldykKewojIDIwMyAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKICAgICAgICBsaXN0X2Fk
ZCgmbmV3LT50YXNrX2xpc3QsICZoZWFkLT50YXNrX2xpc3QpOwp9CgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgX19hZGRfd2FpdF9xdWV1ZV90YWlsKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3Qg
Km5ldykKewojIDIyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L3dhaXQuaCIKICAgICAgICBsaXN0X2FkZF90YWlsKCZuZXctPnRhc2tfbGlzdCwgJmhlYWQt
PnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV93YWl0X3F1ZXVlKHdh
aXRfcXVldWVfaGVhZF90ICpoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdhaXRfcXVldWVfdCAqb2xkKQp7CgoKCgoKICAgICAgICBs
aXN0X2RlbCgmb2xkLT50YXNrX2xpc3QpOwp9CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdmZzLmgiIDEKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N0YXRmcy5oIiAxCgoKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlwZXMuaCIg
MQojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc3RhdGZz
LmgiIDIKCnR5cGVkZWYgX19rZXJuZWxfZnNpZF90IGZzaWRfdDsKCgoKc3RydWN0IHN0YXRmcyB7
CiAgICAgICAgbG9uZyBmX3R5cGU7CiAgICAgICAgbG9uZyBmX2JzaXplOwogICAgICAgIGxvbmcg
Zl9ibG9ja3M7CiAgICAgICAgbG9uZyBmX2JmcmVlOwogICAgICAgIGxvbmcgZl9iYXZhaWw7CiAg
ICAgICAgbG9uZyBmX2ZpbGVzOwogICAgICAgIGxvbmcgZl9mZnJlZTsKICAgICAgICBfX2tlcm5l
bF9mc2lkX3QgZl9mc2lkOwogICAgICAgIGxvbmcgZl9uYW1lbGVuOwogICAgICAgIGxvbmcgZl9z
cGFyZVs2XTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvdmZzLmgiIDIKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvbmV0LmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L25ldC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDEKCgoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc29ja2V0LmgiIDEKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMQoj
IDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc29ja2V0Lmgi
IDIKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc29j
a2V0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvc29ja2lvcy5oIiAxCiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9zb2NraW9zLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2FzbS9zb2NraW9zLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIgMgojIDggIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC91aW8uaCIgMQoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Vpby5oIiAyCiMg
MTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC91aW8uaCIK
c3RydWN0IGlvdmVjCnsKICAgICAgICB2b2lkICppb3ZfYmFzZTsKICAgICAgICBfX2tlcm5lbF9z
aXplX3QgaW92X2xlbjsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvc29ja2V0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDIKCnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgc2FfZmFtaWx5X3Q7CgoKCgoKc3RydWN0IHNvY2thZGRyIHsKICAgICAgICBzYV9mYW1pbHlf
dCBzYV9mYW1pbHk7CiAgICAgICAgY2hhciBzYV9kYXRhWzE0XTsKfTsKCnN0cnVjdCBsaW5nZXIg
ewogICAgICAgIGludCBsX29ub2ZmOwogICAgICAgIGludCBsX2xpbmdlcjsKfTsKCgoKCgoKCnN0
cnVjdCBtc2doZHIgewogICAgICAgIHZvaWQgKiBtc2dfbmFtZTsKICAgICAgICBpbnQgbXNnX25h
bWVsZW47CiAgICAgICAgc3RydWN0IGlvdmVjICogbXNnX2lvdjsKICAgICAgICBfX2tlcm5lbF9z
aXplX3QgbXNnX2lvdmxlbjsKICAgICAgICB2b2lkICogbXNnX2NvbnRyb2w7CiAgICAgICAgX19r
ZXJuZWxfc2l6ZV90IG1zZ19jb250cm9sbGVuOwogICAgICAgIHVuc2lnbmVkIG1zZ19mbGFnczsK
fTsKCgoKCgoKCnN0cnVjdCBjbXNnaGRyIHsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgY21zZ19s
ZW47CiAgICAgICAgaW50IGNtc2dfbGV2ZWw7CiAgICAgICAgaW50IGNtc2dfdHlwZTsKfTsKIyAx
MDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zb2NrZXQu
aCIKc3RhdGljIGlubGluZSBzdHJ1Y3QgY21zZ2hkciAqIF9fY21zZ19ueHRoZHIodm9pZCAqX19j
dGwsIF9fa2VybmVsX3NpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGNtc2doZHIgKl9fY21zZykKewogICAgICAgIHN0cnVj
dCBjbXNnaGRyICogX19wdHI7CgogICAgICAgIF9fcHRyID0gKHN0cnVjdCBjbXNnaGRyKikoKCh1
bnNpZ25lZCBjaGFyICopIF9fY21zZykgKyAoICgoX19jbXNnLT5jbXNnX2xlbikrc2l6ZW9mKGxv
bmcpLTEpICYgfihzaXplb2YobG9uZyktMSkgKSk7CiAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25n
KSgoY2hhciopKF9fcHRyKzEpIC0gKGNoYXIgKikgX19jdGwpID4gX19zaXplKQogICAgICAgICAg
ICAgICAgcmV0dXJuIChzdHJ1Y3QgY21zZ2hkciAqKTA7CgogICAgICAgIHJldHVybiBfX3B0cjsK
fQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgY21zZ2hkciAqIGNtc2dfbnh0aGRyIChzdHJ1Y3QgbXNn
aGRyICpfX21zZywgc3RydWN0IGNtc2doZHIgKl9fY21zZykKewogICAgICAgIHJldHVybiBfX2Nt
c2dfbnh0aGRyKF9fbXNnLT5tc2dfY29udHJvbCwgX19tc2ctPm1zZ19jb250cm9sbGVuLCBfX2Nt
c2cpOwp9CgoKCgoKCgpzdHJ1Y3QgdWNyZWQgewogICAgICAgIF9fdTMyIHBpZDsKICAgICAgICBf
X3UzMiB1aWQ7CiAgICAgICAgX191MzIgZ2lkOwp9OwojIDI0NSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpleHRlcm4gaW50IG1lbWNweV9m
cm9taW92ZWModW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgbGVu
KTsKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVjZW5kKHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBz
dHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zm
c2V0LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBjc3VtX3BhcnRpYWxfY29weV9mcm9taW92ZWNlbmQo
dW5zaWduZWQgY2hhciAqa2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgKmNzdW1wKTsKCmV4dGVybiBpbnQgdmVyaWZ5
X2lvdmVjKHN0cnVjdCBtc2doZHIgKm0sIHN0cnVjdCBpb3ZlYyAqaW92LCBjaGFyICphZGRyZXNz
LCBpbnQgbW9kZSk7CmV4dGVybiBpbnQgbWVtY3B5X3RvaW92ZWMoc3RydWN0IGlvdmVjICp2LCB1
bnNpZ25lZCBjaGFyICprZGF0YSwgaW50IGxlbik7CmV4dGVybiB2b2lkIG1lbWNweV90b2tlcm5l
bGlvdmVjKHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBjaGFyICprZGF0YSwgaW50IGxlbik7
CmV4dGVybiBpbnQgbW92ZV9hZGRyX3RvX3VzZXIodm9pZCAqa2FkZHIsIGludCBrbGVuLCB2b2lk
ICp1YWRkciwgaW50ICp1bGVuKTsKZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fa2VybmVsKHZvaWQg
KnVhZGRyLCBpbnQgdWxlbiwgdm9pZCAqa2FkZHIpOwpleHRlcm4gaW50IHB1dF9jbXNnKHN0cnVj
dCBtc2doZHIqLCBpbnQgbGV2ZWwsIGludCB0eXBlLCBpbnQgbGVuLCB2b2lkICpkYXRhKTsKIyAy
MyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25ldC5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
bmV0LmgiIDIKCnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA0OSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25ldC5oIgp0eXBlZGVmIGVudW0gewogIFNT
X0ZSRUUgPSAwLAogIFNTX1VOQ09OTkVDVEVELAogIFNTX0NPTk5FQ1RJTkcsCiAgU1NfQ09OTkVD
VEVELAogIFNTX0RJU0NPTk5FQ1RJTkcKfSBzb2NrZXRfc3RhdGU7CiMgNjUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9uZXQuaCIKc3RydWN0IHNvY2tldAp7
CiAgICAgICAgc29ja2V0X3N0YXRlIHN0YXRlOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdz
OwogICAgICAgIHN0cnVjdCBwcm90b19vcHMgKm9wczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlu
b2RlOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYXN5bmNfbGlzdDsKICAgICAgICBz
dHJ1Y3QgZmlsZSAqZmlsZTsKICAgICAgICBzdHJ1Y3Qgc29jayAqc2s7CiAgICAgICAgd2FpdF9x
dWV1ZV9oZWFkX3Qgd2FpdDsKCiAgICAgICAgc2hvcnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHBhc3NjcmVkOwp9OwoKCgpzdHJ1Y3Qgc2NtX2Nvb2tpZTsKc3RydWN0IHZtX2FyZWFfc3Ry
dWN0OwpzdHJ1Y3QgcGFnZTsKCnN0cnVjdCBwcm90b19vcHMgewogIGludCBmYW1pbHk7CgogIGlu
dCAoKnJlbGVhc2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrKTsKICBpbnQgKCpiaW5kKSAoc3RydWN0
IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1bXlhZGRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHNvY2thZGRyX2xlbik7CiAgaW50ICgqY29ubmVjdCkgKHN0cnVjdCBzb2Nr
ZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdXNlcnZhZGRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNvY2thZGRyX2xlbiwgaW50IGZsYWdzKTsKICBpbnQgKCpzb2NrZXRwYWlyKSAo
c3RydWN0IHNvY2tldCAqc29jazEsIHN0cnVjdCBzb2NrZXQgKnNvY2syKTsKICBpbnQgKCphY2Nl
cHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKICBpbnQgKCpnZXRuYW1lKSAoc3RydWN0IHNv
Y2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAqdXNvY2thZGRyX2xlbiwgaW50IHBlZXIpOwogIHVuc2lnbmVkIGludCAoKnBvbGwp
IChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBvbGxfdGFi
bGVfc3RydWN0ICp3YWl0KTsKICBpbnQgKCppb2N0bCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVu
c2lnbmVkIGludCBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFy
Zyk7CiAgaW50ICgqbGlzdGVuKSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxlbik7CiAgaW50
ICgqc2h1dGRvd24pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZmxhZ3MpOwogIGludCAoKnNl
dHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgb3B0bGVuKTsKICBpbnQg
KCpnZXRzb2Nrb3B0KSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm9wdHZhbCwgaW50ICpvcHRsZW4pOwog
IGludCAoKnNlbmRtc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBp
bnQgdG90YWxfbGVuLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCpyZWN2bXNnKSAo
c3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgaW50IHRvdGFsX2xlbiwgaW50
IGZsYWdzLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCptbWFwKSAoc3RydWN0IGZp
bGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZt
YSk7CiAgc3NpemVfdCAoKnNlbmRwYWdlKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBh
Z2UgKnBhZ2UsIGludCBvZmZzZXQsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpOwp9OwoKc3RydWN0
IG5ldF9wcm90b19mYW1pbHkKewogICAgICAgIGludCBmYW1pbHk7CiAgICAgICAgaW50ICgqY3Jl
YXRlKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wpOwoKCiAgICAgICAgc2hvcnQg
YXV0aGVudGljYXRpb247CiAgICAgICAgc2hvcnQgZW5jcnlwdGlvbjsKICAgICAgICBzaG9ydCBl
bmNyeXB0X25ldDsKfTsKCnN0cnVjdCBuZXRfcHJvdG8KewogICAgICAgIGNvbnN0IGNoYXIgKm5h
bWU7CiAgICAgICAgdm9pZCAoKmluaXRfZnVuYykoc3RydWN0IG5ldF9wcm90byAqKTsKfTsKCmV4
dGVybiBpbnQgc29ja193YWtlX2FzeW5jKHN0cnVjdCBzb2NrZXQgKnNrLCBpbnQgaG93LCBpbnQg
YmFuZCk7CmV4dGVybiBpbnQgc29ja19yZWdpc3RlcihzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseSAq
ZmFtKTsKZXh0ZXJuIGludCBzb2NrX3VucmVnaXN0ZXIoaW50IGZhbWlseSk7CmV4dGVybiBzdHJ1
Y3Qgc29ja2V0ICpzb2NrX2FsbG9jKHZvaWQpOwpleHRlcm4gaW50IHNvY2tfY3JlYXRlKGludCBm
YW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG8sIHN0cnVjdCBzb2NrZXQgKiopOwpleHRlcm4gdm9p
ZCBzb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqKTsKZXh0ZXJuIGludCBzb2NrX3NlbmRtc2co
c3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBz
b2NrX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuLCBp
bnQgZmxhZ3MpOwpleHRlcm4gaW50IHNvY2tfcmVhZHZfd3JpdGV2KGludCB0eXBlLCBzdHJ1Y3Qg
aW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICogaW92LCBsb25nIGNvdW50LCBsb25nIHNp
emUpOwoKZXh0ZXJuIGludCBuZXRfcmF0ZWxpbWl0KHZvaWQpOwpleHRlcm4gdW5zaWduZWQgbG9u
ZyBuZXRfcmFuZG9tKHZvaWQpOwpleHRlcm4gdm9pZCBuZXRfc3JhbmRvbSh1bnNpZ25lZCBsb25n
KTsKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
a2Rldl90LmgiIDEKIyA2NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L2tkZXZfdC5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGtkZXZfdDsKIyA3NiAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIgpleHRl
cm4gY29uc3QgY2hhciAqIGtkZXZuYW1lKGtkZXZfdCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgaW50IGtkZXZfdF90b19ucihrZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVu
c2lnbmVkIGludCkgKChkZXYpID4+IDgpKTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYg
KCgxVSA8PCA4KSAtIDEpKSk7Cn0KCnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQg
ZGV2KQp7CiAgICAgICAgaW50IG1ham9yLCBtaW5vcjsKIyA5OCAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIgogICAgICAgIG1ham9yID0gKGRl
diA+PiA4KTsKICAgICAgICBtaW5vciA9IChkZXYgJiAweGZmKTsKCiAgICAgICAgcmV0dXJuICgo
KG1ham9yKSA8PCA4KSB8IChtaW5vcikpOwp9CiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lvY3RsLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2lvY3RsLmgiIDEKIyA1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaW9jdGwuaCIgMgojIDE4ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAx
OSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZGNhY2hl
LmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9h
c20vYXRvbWljLmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvZGNhY2hlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvbW91bnQuaCIKc3RydWN0IHZmc21vdW50CnsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIG1udF9oYXNoOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50X3Bh
cmVudDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICptbnRfbW91bnRwb2ludDsKICAgICAgICBzdHJ1
Y3QgZGVudHJ5ICptbnRfcm9vdDsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKm1udF9zYjsK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9tb3VudHM7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBtbnRfY2hpbGQ7CiAgICAgICAgYXRvbWljX3QgbW50X2NvdW50OwogICAgICAgIGludCBt
bnRfZmxhZ3M7CiAgICAgICAgY2hhciAqbW50X2Rldm5hbWU7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBtbnRfbGlzdDsKfTsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZmc21vdW50ICptbnRnZXQo
c3RydWN0IHZmc21vdW50ICptbnQpCnsKICAgICAgICBpZiAobW50KQogICAgICAgICAgICAgICAg
YXRvbWljX2luYygmbW50LT5tbnRfY291bnQpOwogICAgICAgIHJldHVybiBtbnQ7Cn0KCmV4dGVy
biB2b2lkIF9fbW50cHV0KHN0cnVjdCB2ZnNtb3VudCAqbW50KTsKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBtbnRwdXQoc3RydWN0IHZmc21vdW50ICptbnQpCnsKICAgICAgICBpZiAobW50KSB7CiAgICAg
ICAgICAgICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbW50LT5tbnRfY291bnQpKQogICAg
ICAgICAgICAgICAgICAgICAgICBfX21udHB1dChtbnQpOwogICAgICAgIH0KfQojIDggIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMgojIDI0
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZGNhY2hlLmgi
CnN0cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogbmFtZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNoOwp9OwoKc3RydWN0
IGRlbnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAgICAgaW50IG5yX3Vu
dXNlZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50X3BhZ2VzOwogICAg
ICAgIGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRyeV9z
dGF0OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBhcnRpYWxfbmFtZV9o
YXNoKHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkKewogICAgICAgIHJl
dHVybiAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKc3RhdGljIF9f
aW5saW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgaGFzaCkK
ewogICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3RhdGljIF9faW5saW5l
X18gdW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1l
LCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBoYXNoID0gMDsKICAg
ICAgICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFydGlhbF9uYW1lX2hh
c2goKm5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hhc2goaGFzaCk7Cn0K
CgoKc3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsKICAgICAgICB1bnNp
Z25lZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lub2RlOwogICAgICAg
IHN0cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfaGFz
aDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfbHJ1OwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZF9jaGlsZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfc3ViZGlyczsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGRfYWxpYXM7CiAgICAgICAgaW50IGRfbW91bnRlZDsKICAgICAgICBz
dHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3RpbWU7CiAgICAgICAg
c3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9j
ayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Zmc19mbGFnczsKICAgICAgICB2b2lk
ICogZF9mc2RhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciBkX2luYW1lWzE2XTsKfTsKCnN0cnVj
dCBkZW50cnlfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqZF9yZXZhbGlkYXRlKShzdHJ1Y3Qg
ZGVudHJ5ICosIGludCk7CiAgICAgICAgaW50ICgqZF9oYXNoKSAoc3RydWN0IGRlbnRyeSAqLCBz
dHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2NvbXBhcmUpIChzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCBxc3RyICosIHN0cnVjdCBxc3RyICopOwogICAgICAgIGludCAoKmRfZGVsZXRlKShz
dHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBkZW50cnkg
Kik7CiAgICAgICAgdm9pZCAoKmRfaXB1dCkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUg
Kik7Cn07CiMgMTI3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvZGNhY2hlLmgiCmV4dGVybiBzcGlubG9ja190IGRjYWNoZV9sb2NrOwojIDE0NiAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGRfZHJvcChzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5KQp7CiAgICAgICAg
KHZvaWQpKCZkY2FjaGVfbG9jayk7CiAgICAgICAgbGlzdF9kZWwoJmRlbnRyeS0+ZF9oYXNoKTsK
ICAgICAgICBkbyB7ICgmZGVudHJ5LT5kX2hhc2gpLT5uZXh0ID0gKCZkZW50cnktPmRfaGFzaCk7
ICgmZGVudHJ5LT5kX2hhc2gpLT5wcmV2ID0gKCZkZW50cnktPmRfaGFzaCk7IH0gd2hpbGUgKDAp
OwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IGRuYW1l
X2V4dGVybmFsKHN0cnVjdCBkZW50cnkgKmQpCnsKICAgICAgICByZXR1cm4gZC0+ZF9uYW1lLm5h
bWUgIT0gZC0+ZF9pbmFtZTsKfQoKCgoKZXh0ZXJuIHZvaWQgZF9pbnN0YW50aWF0ZShzdHJ1Y3Qg
ZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9kZWxldGUoc3RydWN0IGRl
bnRyeSAqKTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Moc3RydWN0IGRlbnRyeSAq
LCBjb25zdCBzdHJ1Y3QgcXN0ciAqKTsKZXh0ZXJuIHZvaWQgc2hyaW5rX2RjYWNoZV9zYihzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfcGFyZW50KHN0cnVj
dCBkZW50cnkgKik7CmV4dGVybiBpbnQgZF9pbnZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKik7CgoK
c3RydWN0IHpvbmVfc3RydWN0OwoKZXh0ZXJuIGludCBzaHJpbmtfZGNhY2hlX21lbW9yeShpbnQs
IHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIHBydW5lX2RjYWNoZShpbnQpOwoKCmV4dGVybiBp
bnQgc2hyaW5rX2ljYWNoZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBwcnVuZV9pY2Fj
aGUoaW50KTsKCgpleHRlcm4gaW50IHNocmlua19kcWNhY2hlX21lbW9yeShpbnQsIHVuc2lnbmVk
IGludCk7CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jX3Jvb3Qoc3RydWN0IGlub2Rl
ICopOwoKCmV4dGVybiB2b2lkIGRfZ2Vub2NpZGUoc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBz
dHJ1Y3QgZGVudHJ5ICpkX2ZpbmRfYWxpYXMoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBk
X3BydW5lX2FsaWFzZXMoc3RydWN0IGlub2RlICopOwoKCmV4dGVybiBpbnQgaGF2ZV9zdWJtb3Vu
dHMoc3RydWN0IGRlbnRyeSAqKTsKCgoKCmV4dGVybiB2b2lkIGRfcmVoYXNoKHN0cnVjdCBkZW50
cnkgKik7CiMgMjEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgZF9hZGQoc3RydWN0IGRlbnRyeSAq
IGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewogICAgICAgIGRfaW5zdGFudGlhdGUoZW50
cnksIGlub2RlKTsKICAgICAgICBkX3JlaGFzaChlbnRyeSk7Cn0KCgpleHRlcm4gdm9pZCBkX21v
dmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVu
dHJ5ICogZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKCgpleHRlcm4g
aW50IGRfdmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJu
IGNoYXIgKiBfX2RfcGF0aChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1
Y3QgZGVudHJ5ICosCiAgICAgICAgc3RydWN0IHZmc21vdW50ICosIGNoYXIgKiwgaW50KTsKIyAy
NDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9kY2FjaGUu
aCIKc3RhdGljIF9faW5saW5lX18gc3RydWN0IGRlbnRyeSAqIGRnZXQoc3RydWN0IGRlbnRyeSAq
ZGVudHJ5KQp7CiAgICAgICAgaWYgKGRlbnRyeSkgewogICAgICAgICAgICAgICAgaWYgKCEoKCZk
ZW50cnktPmRfY291bnQpLT5jb3VudGVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgICAgICAgICAgYXRvbWlj
X2luYygmZGVudHJ5LT5kX2NvdW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsK
fQoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwoj
IDI2MiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2RjYWNo
ZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF91bmhhc2hlZChzdHJ1Y3QgZGVudHJ5ICpkZW50
cnkpCnsKICAgICAgICByZXR1cm4gbGlzdF9lbXB0eSgmZGVudHJ5LT5kX2hhc2gpOwp9CgpleHRl
cm4gdm9pZCBkcHV0KHN0cnVjdCBkZW50cnkgKik7CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF9t
b3VudHBvaW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZW50cnkt
PmRfbW91bnRlZDsKfQoKZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqbG9va3VwX21udChzdHJ1Y3Qg
dmZzbW91bnQgKiwgc3RydWN0IGRlbnRyeSAqKTsKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N0YXQuaCIgMQoKCgpzdHJ1Y3QgX19v
bGRfa2VybmVsX3N0YXQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2RldjsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzdF9pbm87CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzdF9ubGluazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF91
aWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHN0X3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9zaXplOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc3RfYXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHN0X2N0aW1lOwp9OwoKc3RydWN0IHN0YXQgewogICAgICAgIHVuc2lnbmVk
IHNob3J0IHN0X2RldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDE7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdF9pbm87CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzdF9ubGluazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF91aWQ7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0
X3JkZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQyOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2Jsa3NpemU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdF9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9hdGltZTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210
aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQyOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBfX3VudXNlZDQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDU7Cn07
CgoKCgpzdHJ1Y3Qgc3RhdDY0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBfX3BhZDBbMTBdOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3N0
X2lubzsKCiAgICAgICAgdW5zaWduZWQgaW50IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgaW50
IHN0X25saW5rOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3VpZDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHN0X2dpZDsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfcmRldjsKICAgICAgICB1
bnNpZ25lZCBjaGFyIF9fcGFkM1sxMF07CgogICAgICAgIGxvbmcgbG9uZyBzdF9zaXplOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxrc2l6ZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9i
bG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZDQ7CgogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RfYXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZDU7CgogICAgICAgIHVuc2ln
bmVkIGxvbmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZDY7CgogICAgICAg
IHVuc2lnbmVkIGxvbmcgc3RfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZDc7Cgog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdF9pbm87Cn07CiMgNyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMgojIDIxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCiMgMjIgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAx
CiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3N0
cmluZy5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgoKCgoKCmV4dGVybiBjaGFy
ICogX19fc3RydG9rOwpleHRlcm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0IGNo
YXIgKik7CmV4dGVybiBjaGFyICogc3RydG9rKGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4g
Y2hhciAqIHN0cnNlcChjaGFyICoqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBfX2tlcm5lbF9zaXpl
X3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwoKCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zdHJpbmcuaCIgMQoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEK
IyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N0cmluZy5o
IiAyCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc3Ry
aW5nLmgiCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNweShjaGFyICogZGVzdCxjb25zdCBjaGFy
ICpzcmMpCnsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICIx
Olx0bG9kc2Jcblx0IgogICAgICAgICJzdG9zYlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVh
bFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6ICI9JlMiIChkMCksICI9JkQiIChkMSks
ICI9JmEiIChkMikKICAgICAgICA6IjAiIChzcmMpLCIxIiAoZGVzdCkgOiAibWVtb3J5Iik7CnJl
dHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBjaGFyICogc3RybmNweShjaGFyICogZGVzdCxj
b25zdCBjaGFyICpzcmMsc2l6ZV90IGNvdW50KQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRkZWNsICUyXG5cdCIKICAgICAgICAianMgMmZc
blx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVz
dGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAicmVwXG5cdCIK
ICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZE
IiAoZDEpLCAiPSZjIiAoZDIpLCAiPSZhIiAoZDMpCiAgICAgICAgOiIwIiAoc3JjKSwiMSIgKGRl
c3QpLCIyIiAoY291bnQpIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxp
bmUgY2hhciAqIHN0cmNhdChjaGFyICogZGVzdCxjb25zdCBjaGFyICogc3JjKQp7CmludCBkMCwg
ZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAg
ICAgICAic2Nhc2Jcblx0IgogICAgICAgICJkZWNsICUxXG4iCiAgICAgICAgIjE6XHRsb2RzYlxu
XHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAg
ICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQy
KSwgIj0mYyIgKGQzKQogICAgICAgIDogIjAiIChzcmMpLCAiMSIgKGRlc3QpLCAiMiIgKDApLCAi
MyIgKDB4ZmZmZmZmZmYpOiJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5l
IGNoYXIgKiBzdHJuY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKiBzcmMsc2l6ZV90IGNvdW50
KQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJl
cG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJkZWNsICUxXG5cdCIKICAgICAg
ICAibW92bCAlOCwlM1xuIgogICAgICAgICIxOlx0ZGVjbCAlM1xuXHQiCiAgICAgICAgImpzIDJm
XG5cdCIKICAgICAgICAibG9kc2Jcblx0IgogICAgICAgICJzdG9zYlxuXHQiCiAgICAgICAgInRl
c3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIyOlx0eG9ybCAl
MiwlMlxuXHQiCiAgICAgICAgInN0b3NiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQx
KSwgIj0mYSIgKGQyKSwgIj0mYyIgKGQzKQogICAgICAgIDogIjAiIChzcmMpLCIxIiAoZGVzdCks
IjIiICgwKSwiMyIgKDB4ZmZmZmZmZmYpLCAiZyIgKGNvdW50KQogICAgICAgIDogIm1lbW9yeSIp
OwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IHN0cmNtcChjb25zdCBjaGFyICog
Y3MsY29uc3QgY2hhciAqIGN0KQp7CmludCBkMCwgZDE7CnJlZ2lzdGVyIGludCBfX3JlczsKX19h
c21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInNjYXNi
XG5cdCIKICAgICAgICAiam5lIDJmXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIK
ICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAieG9ybCAlJWVheCwlJWVheFxuXHQiCiAgICAg
ICAgImptcCAzZlxuIgogICAgICAgICIyOlx0c2JibCAlJWVheCwlJWVheFxuXHQiCiAgICAgICAg
Im9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjM6IgogICAgICAgIDoiPWEiIChfX3JlcyksICI9JlMi
IChkMCksICI9JkQiIChkMSkKICAgICAgICAgICAgICAgICAgICAgOiIxIiAoY3MpLCIyIiAoY3Qp
KTsKcmV0dXJuIF9fcmVzOwp9CgoKc3RhdGljIGlubGluZSBpbnQgc3RybmNtcChjb25zdCBjaGFy
ICogY3MsY29uc3QgY2hhciAqIGN0LHNpemVfdCBjb3VudCkKewpyZWdpc3RlciBpbnQgX19yZXM7
CmludCBkMCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGRlY2wg
JTNcblx0IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIKICAgICAgICAi
c2Nhc2Jcblx0IgogICAgICAgICJqbmUgM2Zcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxc
blx0IgogICAgICAgICJqbmUgMWJcbiIKICAgICAgICAiMjpcdHhvcmwgJSVlYXgsJSVlYXhcblx0
IgogICAgICAgICJqbXAgNGZcbiIKICAgICAgICAiMzpcdHNiYmwgJSVlYXgsJSVlYXhcblx0Igog
ICAgICAgICJvcmIgJDEsJSVhbFxuIgogICAgICAgICI0OiIKICAgICAgICAgICAgICAgICAgICAg
OiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYyIgKGQyKQogICAgICAg
ICAgICAgICAgICAgICA6IjEiIChjcyksIjIiIChjdCksIjMiIChjb3VudCkpOwpyZXR1cm4gX19y
ZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJjaHIoY29uc3QgY2hhciAqIHMsIGludCBj
KQp7CmludCBkMDsKcmVnaXN0ZXIgY2hhciAqIF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAibW92YiAlJWFsLCUlYWhcbiIKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAg
ICAiY21wYiAlJWFoLCUlYWxcblx0IgogICAgICAgICJqZSAyZlxuXHQiCiAgICAgICAgInRlc3Ri
ICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuXHQiCiAgICAgICAgIm1vdmwgJDEsJTFc
biIKICAgICAgICAiMjpcdG1vdmwgJTEsJTBcblx0IgogICAgICAgICJkZWNsICUwIgogICAgICAg
IDoiPWEiIChfX3JlcyksICI9JlMiIChkMCkgOiAiMSIgKHMpLCIwIiAoYykpOwpyZXR1cm4gX19y
ZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJyY2hyKGNvbnN0IGNoYXIgKiBzLCBpbnQg
YykKewppbnQgZDAsIGQxOwpyZWdpc3RlciBjaGFyICogX19yZXM7Cl9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0Igog
ICAgICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImpuZSAyZlxuXHQiCiAgICAgICAg
ImxlYWwgLTEoJSVlc2kpLCUwXG4iCiAgICAgICAgIjI6XHR0ZXN0YiAlJWFsLCUlYWxcblx0Igog
ICAgICAgICJqbmUgMWIiCiAgICAgICAgOiI9ZyIgKF9fcmVzKSwgIj0mUyIgKGQwKSwgIj0mYSIg
KGQxKSA6IjAiICgwKSwiMSIgKHMpLCIyIiAoYykpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMg
aW5saW5lIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqIHMpCnsKaW50IGQwOwpyZWdpc3RlciBp
bnQgX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAg
ICAgInNjYXNiXG5cdCIKICAgICAgICAibm90bCAlMFxuXHQiCiAgICAgICAgImRlY2wgJTAiCiAg
ICAgICAgOiI9YyIgKF9fcmVzKSwgIj0mRCIgKGQwKSA6IjEiIChzKSwiYSIgKDApLCAiMCIgKDB4
ZmZmZmZmZmYpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX21lbWNw
eSh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBmcm9tLCBzaXplX3QgbikKewppbnQgZDAsIGQxLCBk
MjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcCA7IG1vdnNsXG5cdCIKICAgICAg
ICAidGVzdGIgJDIsJWI0XG5cdCIKICAgICAgICAiamUgMWZcblx0IgogICAgICAgICJtb3Zzd1xu
IgogICAgICAgICIxOlx0dGVzdGIgJDEsJWI0XG5cdCIKICAgICAgICAiamUgMmZcblx0IgogICAg
ICAgICJtb3ZzYlxuIgogICAgICAgICIyOiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChk
MSksICI9JlMiIChkMikKICAgICAgICA6IjAiIChuLzQpLCAicSIgKG4pLCIxIiAoKGxvbmcpIHRv
KSwiMiIgKChsb25nKSBmcm9tKQogICAgICAgIDogIm1lbW9yeSIpOwpyZXR1cm4gKHRvKTsKfQoK
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fY29uc3RhbnRfbWVtY3B5KHZvaWQgKiB0bywgY29u
c3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQp7CiAgICAgICAgc3dpdGNoIChuKSB7CiAgICAgICAg
ICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAg
ICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBjaGFy
ICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilmcm9tOwogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAg
ICAgICAgICoodW5zaWduZWQgc2hvcnQgKil0byA9ICooY29uc3QgdW5zaWduZWQgc2hvcnQgKilm
cm9tOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBj
YXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKil0byA9ICoo
Y29uc3QgdW5zaWduZWQgc2hvcnQgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIr
KHVuc2lnbmVkIGNoYXIgKil0bykgPSAqKDIrKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilmcm9tKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSA0
OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3Qg
dW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsK
ICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25l
ZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAg
ICAgICAgICAgICAqKDIrKHVuc2lnbmVkIHNob3J0ICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25l
ZCBzaG9ydCAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAg
ICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9u
ZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAg
ICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25n
ICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAg
ICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRv
ID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAg
KigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJv
bSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICoo
MisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICAgICAgICAgICAg
ICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAg
ICAgICAgICAgICAgICAgICAgICAgICooMSsodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMSsoY29u
c3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVu
c2lnbmVkIGxvbmcgKil0bykgPSAqKDIrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgKigzKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigzKyhjb25z
dCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
bzsKICAgICAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5z
aWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAg
ICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1bnNp
Z25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQg
bG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAg
ICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDMrKGNvbnN0IHVuc2ln
bmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKig0Kyh1bnNpZ25lZCBs
b25nICopdG8pID0gKig0Kyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICB9CgoKCgoKCgp7CiAgICAgICAgaW50IGQw
LCBkMSwgZDI7CiAgICAgICAgc3dpdGNoIChuICUgNCkgewogICAgICAgICAgICAgICAgY2FzZSAw
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAiIiA6ICI9JmMiIChkMCksICI9
JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxv
bmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAx
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAiXG5cdG1vdnNiIiA6ICI9JmMi
IChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8p
LCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgICAgICAg
ICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAiXG5cdG1vdnN3
IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgo
bG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAg
ICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAgOyBtb3ZzbCIg
IlxuXHRtb3Zzd1xuXHRtb3ZzYiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAoZDIp
IDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKSA6ICJtZW1vcnki
KTs7IHJldHVybiB0bzsKICAgICAgICB9Cn0KCgp9CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL21teC5oIiAxCiMgMjkxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N0cmluZy5oIiAyCgoKCgoKc3RhdGljIGlu
bGluZSB2b2lkICogX19jb25zdGFudF9tZW1jcHkzZCh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBm
cm9tLCBzaXplX3QgbGVuKQp7CiAgICAgICAgaWYgKGxlbiA8IDUxMikKICAgICAgICAgICAgICAg
IHJldHVybiBfX2NvbnN0YW50X21lbWNweSh0bywgZnJvbSwgbGVuKTsKICAgICAgICByZXR1cm4g
X21teF9tZW1jcHkodG8sIGZyb20sIGxlbik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgKl9f
bWVtY3B5M2Qodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBsZW4pCnsKICAgICAg
ICBpZiAobGVuIDwgNTEyKQogICAgICAgICAgICAgICAgcmV0dXJuIF9fbWVtY3B5KHRvLCBmcm9t
LCBsZW4pOwogICAgICAgIHJldHVybiBfbW14X21lbWNweSh0bywgZnJvbSwgbGVuKTsKfQojIDMz
NSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zdHJpbmcuaCIK
ZXh0ZXJuIHZvaWQgX19zdHJ1Y3RfY3B5X2J1ZyAodm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIHZv
aWQgKiBtZW1tb3ZlKHZvaWQgKiBkZXN0LGNvbnN0IHZvaWQgKiBzcmMsIHNpemVfdCBuKQp7Cmlu
dCBkMCwgZDEsIGQyOwppZiAoZGVzdDxzcmMpCl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg
ICJyZXBcblx0IgogICAgICAgICJtb3ZzYiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JlMiIChk
MSksICI9JkQiIChkMikKICAgICAgICA6IjAiIChuKSwiMSIgKHNyYyksIjIiIChkZXN0KQogICAg
ICAgIDogIm1lbW9yeSIpOwplbHNlCl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJzdGRc
blx0IgogICAgICAgICJyZXBcblx0IgogICAgICAgICJtb3ZzYlxuXHQiCiAgICAgICAgImNsZCIK
ICAgICAgICA6ICI9JmMiIChkMCksICI9JlMiIChkMSksICI9JkQiIChkMikKICAgICAgICA6IjAi
IChuKSwKICAgICAgICAgIjEiIChuLTErKGNvbnN0IGNoYXIgKilzcmMpLAogICAgICAgICAiMiIg
KG4tMSsoY2hhciAqKWRlc3QpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbWNocihjb25zdCB2b2lkICogY3MsaW50IGMsc2l6ZV90
IGNvdW50KQp7CmludCBkMDsKcmVnaXN0ZXIgdm9pZCAqIF9fcmVzOwppZiAoIWNvdW50KQogICAg
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJl
cG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAg
Im1vdmwgJDEsJTBcbiIKICAgICAgICAiMTpcdGRlY2wgJTAiCiAgICAgICAgOiI9RCIgKF9fcmVz
KSwgIj0mYyIgKGQwKSA6ICJhIiAoYyksIjAiIChjcyksIjEiIChjb3VudCkpOwpyZXR1cm4gX19y
ZXM7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fbWVtc2V0X2dlbmVyaWModm9pZCAqIHMsIGNo
YXIgYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMTsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg
ICAgICAgInJlcFxuXHQiCiAgICAgICAgInN0b3NiIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0m
RCIgKGQxKQogICAgICAgIDoiYSIgKGMpLCIxIiAocyksIjAiIChjb3VudCkKICAgICAgICA6Im1l
bW9yeSIpOwpyZXR1cm4gczsKfQojIDQwOCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9j
X21lbXNldCh2b2lkICogcywgdW5zaWduZWQgbG9uZyBjLCBzaXplX3QgY291bnQpCnsKaW50IGQw
LCBkMTsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcCA7IHN0b3NsXG5cdCIKICAg
ICAgICAidGVzdGIgJDIsJWIzXG5cdCIKICAgICAgICAiamUgMWZcblx0IgogICAgICAgICJzdG9z
d1xuIgogICAgICAgICIxOlx0dGVzdGIgJDEsJWIzXG5cdCIKICAgICAgICAiamUgMmZcblx0Igog
ICAgICAgICJzdG9zYlxuIgogICAgICAgICIyOiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQi
IChkMSkKICAgICAgICA6ImEiIChjKSwgInEiIChjb3VudCksICIwIiAoY291bnQvNCksICIxIiAo
KGxvbmcpIHMpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0dXJuIChzKTsKfQoKCgpzdGF0aWMgaW5s
aW5lIHNpemVfdCBzdHJubGVuKGNvbnN0IGNoYXIgKiBzLCBzaXplX3QgY291bnQpCnsKaW50IGQw
OwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3Zs
ICUyLCUwXG5cdCIKICAgICAgICAiam1wIDJmXG4iCiAgICAgICAgIjE6XHRjbXBiICQwLCglMClc
blx0IgogICAgICAgICJqZSAzZlxuXHQiCiAgICAgICAgImluY2wgJTBcbiIKICAgICAgICAiMjpc
dGRlY2wgJTFcblx0IgogICAgICAgICJjbXBsICQtMSwlMVxuXHQiCiAgICAgICAgImpuZSAxYlxu
IgogICAgICAgICIzOlx0c3VibCAlMiwlMCIKICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZkIiAo
ZDApCiAgICAgICAgOiJjIiAocyksIjEiIChjb3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCgoKCmV4
dGVybiBjaGFyICpzdHJzdHIoY29uc3QgY2hhciAqY3MsIGNvbnN0IGNoYXIgKmN0KTsKCgoKCgpz
dGF0aWMgaW5saW5lIHZvaWQgKiBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCh2b2lkICog
cywgdW5zaWduZWQgbG9uZyBwYXR0ZXJuLCBzaXplX3QgY291bnQpCnsKICAgICAgICBzd2l0Y2gg
KGNvdW50KSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAg
ICAqKHVuc2lnbmVkIGNoYXIgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAg
ICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAg
ICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAg
KigyKyh1bnNpZ25lZCBjaGFyICopcykgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAg
ICAgKih1bnNpZ25lZCBsb25nICopcyA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzOwogICAgICAgIH0KCgoKCgoKCnsKICAgICAgICBpbnQgZDAsIGQxOwogICAgICAg
IHN3aXRjaCAoY291bnQgJSA0KSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6IF9fYXNtX18gX192
b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICIiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJh
IiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0
dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVw
IDsgc3Rvc2wiICJcblx0c3Rvc2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0
dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7
CiAgICAgICAgICAgICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rv
c2wiICJcblx0c3Rvc3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiks
IjAiIChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAg
ICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAi
XG5cdHN0b3N3XG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgOiAiYSIgKHBhdHRl
cm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7IHJldHVybiBzOwog
ICAgICAgIH0KfQoKCn0KIyA1MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbXNjYW4odm9pZCAqIGFk
ZHIsIGludCBjLCBzaXplX3Qgc2l6ZSkKewogICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAg
ICAgIHJldHVybiBhZGRyOwogICAgICAgIF9fYXNtX18oInJlcG56OyBzY2FzYlxuXHQiCiAgICAg
ICAgICAgICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJkZWMgJSVlZGlcbiIKICAg
ICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgIDogIj1EIiAoYWRkciksICI9YyIgKHNp
emUpCiAgICAgICAgICAgICAgICA6ICIwIiAoYWRkciksICIxIiAoc2l6ZSksICJhIiAoYykpOwog
ICAgICAgIHJldHVybiBhZGRyOwp9CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgojIDQ2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiBpbnQgc3RybmljbXAoY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICosIF9fa2VybmVsX3NpemVfdCk7CiMgNzcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIKZXh0ZXJuIGlu
dCBfX2J1aWx0aW5fbWVtY21wKGNvbnN0IHZvaWQgKixjb25zdCB2b2lkICosX19rZXJuZWxfc2l6
ZV90KTsKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2Fz
bS9hdG9taWMuaCIgMQojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9hc20vYml0b3BzLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMgojIDM2ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVf
XyB2b2lkIHNldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0c2wgJTEsJTAiCiAgICAg
ICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAg
ICAgIDoiSXIiIChucikpOwp9CiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19zZXRfYml0KGlu
dCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fKAogICAgICAgICAg
ICAgICAgImJ0c2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9u
ZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgNzEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lu
bGluZV9fIHZvaWQgY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidHJsICUxLCUw
IgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAg
ICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDkwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fY2hh
bmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAg
IDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIg
KG5yKSk7Cn0KIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9h
c20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2hhbmdlX2JpdChpbnQgbnIsIHZv
bGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiCiAg
ICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xh
dGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAxMjMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0
YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9p
ZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggIiIKICAgICAgICAgICAgICAgICJidHNsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAg
ICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIp
KQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4g
b2xkYml0Owp9CiMgMTQzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
YXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9zZXRfYml0KGlu
dCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAg
ICBfX2FzbV9fKAogICAgICAgICAgICAgICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAg
ICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRk
cikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9
CiMgMTYyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2JpdG9w
cy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9s
YXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidHJsICUyLCUxXG5cdHNiYmwgJTAs
JTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25n
ICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAgICAg
ICByZXR1cm4gb2xkYml0Owp9CiMgMTgyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9j
bGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRi
aXQ7CgogICAgICAgIF9fYXNtX18oCiAgICAgICAgICAgICAgICAiYnRybCAlMiwlMVxuXHRzYmJs
ICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUg
bG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwogICAgICAgIHJldHVy
biBvbGRiaXQ7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9jaGFuZ2VfYml0
KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICJidGNsICUyLCUxXG5c
dHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xh
dGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnki
KTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVz
dF9hbmRfY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAg
aW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiCiAgICAgICAgICAg
ICAgICAiYnRjbCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9s
ZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoi
SXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDIzMyAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGlj
IF9faW5saW5lX18gaW50IGNvbnN0YW50X3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUg
dm9pZCAqIGFkZHIpCnsKICAgICAgICByZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNv
bnN0IHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cn0KCnN0
YXRpYyBfX2lubGluZV9fIGludCB2YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZv
aWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgICAgICAgICAiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAg
ICAgICAgICA6Ij1yIiAob2xkYml0KQogICAgICAgICAgICAgICAgOiJtIiAoKCoodm9sYXRpbGUg
bG9uZyAqKSBhZGRyKSksIklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjYy
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpz
dGF0aWMgX19pbmxpbmVfXyBpbnQgZmluZF9maXJzdF96ZXJvX2JpdCh2b2lkICogYWRkciwgdW5z
aWduZWQgc2l6ZSkKewogICAgICAgIGludCBkMCwgZDEsIGQyOwogICAgICAgIGludCByZXM7Cgog
ICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICJtb3ZsICQtMSwlJWVheFxuXHQiCiAg
ICAgICAgICAgICAgICAieG9ybCAlJWVkeCwlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAicmVw
ZTsgc2Nhc2xcblx0IgogICAgICAgICAgICAgICAgImplIDFmXG5cdCIKICAgICAgICAgICAgICAg
ICJ4b3JsIC00KCUlZWRpKSwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAic3VibCAkNCwlJWVk
aVxuXHQiCiAgICAgICAgICAgICAgICAiYnNmbCAlJWVheCwlJWVkeFxuIgogICAgICAgICAgICAg
ICAgIjE6XHRzdWJsICUlZWJ4LCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJzaGxsICQzLCUl
ZWRpXG5cdCIKICAgICAgICAgICAgICAgICJhZGRsICUlZWRpLCUlZWR4IgogICAgICAgICAgICAg
ICAgOiI9ZCIgKHJlcyksICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JmEiIChkMikKICAgICAg
ICAgICAgICAgIDoiMSIgKChzaXplICsgMzEpID4+IDUpLCAiMiIgKGFkZHIpLCAiYiIgKGFkZHIp
KTsKICAgICAgICByZXR1cm4gcmVzOwp9CgoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmlu
ZF9uZXh0X3plcm9fYml0ICh2b2lkICogYWRkciwgaW50IHNpemUsIGludCBvZmZzZXQpCnsKICAg
ICAgICB1bnNpZ25lZCBsb25nICogcCA9ICgodW5zaWduZWQgbG9uZyAqKSBhZGRyKSArIChvZmZz
ZXQgPj4gNSk7CiAgICAgICAgaW50IHNldCA9IDAsIGJpdCA9IG9mZnNldCAmIDMxLCByZXM7Cgog
ICAgICAgIGlmIChiaXQpIHsKCgoKICAgICAgICAgICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTBc
blx0IgogICAgICAgICAgICAgICAgICAgICAgICAiam5lIDFmXG5cdCIKICAgICAgICAgICAgICAg
ICAgICAgICAgIm1vdmwgJDMyLCAlMFxuIgogICAgICAgICAgICAgICAgICAgICAgICAiMToiCiAg
ICAgICAgICAgICAgICAgICAgICAgIDogIj1yIiAoc2V0KQogICAgICAgICAgICAgICAgICAgICAg
ICA6ICJyIiAofigqcCA+PiBiaXQpKSk7CiAgICAgICAgICAgICAgICBpZiAoc2V0IDwgKDMyIC0g
Yml0KSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldCArIG9mZnNldDsKICAgICAg
ICAgICAgICAgIHNldCA9IDMyIC0gYml0OwogICAgICAgICAgICAgICAgcCsrOwogICAgICAgIH0K
CgoKICAgICAgICByZXMgPSBmaW5kX2ZpcnN0X3plcm9fYml0IChwLCBzaXplIC0gMzIgKiAocCAt
ICh1bnNpZ25lZCBsb25nICopIGFkZHIpKTsKICAgICAgICByZXR1cm4gKG9mZnNldCArIHNldCAr
IHJlcyk7Cn0KCgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgZmZ6KHVuc2ln
bmVkIGxvbmcgd29yZCkKewogICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTAiCiAgICAgICAgICAg
ICAgICA6Ij1yIiAod29yZCkKICAgICAgICAgICAgICAgIDoiciIgKH53b3JkKSk7CiAgICAgICAg
cmV0dXJuIHdvcmQ7Cn0KIyAzNDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmZnMoaW50IHgpCnsKICAg
ICAgICBpbnQgcjsKCiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAg
ICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsICQtMSwlMFxuIgogICAgICAg
ICAgICAgICAgIjE6IiA6ICI9ciIgKHIpIDogImciICh4KSk7CiAgICAgICAgcmV0dXJuIHIrMTsK
fQojIDI3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMu
aCIgMgoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDUwICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0
IHsKICAgICAgICBpbnQgbnJfZmlsZXM7CiAgICAgICAgaW50IG5yX2ZyZWVfZmlsZXM7CiAgICAg
ICAgaW50IG1heF9maWxlczsKfTsKZXh0ZXJuIHN0cnVjdCBmaWxlc19zdGF0X3N0cnVjdCBmaWxl
c19zdGF0OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAgIGludCBucl9pbm9kZXM7CiAg
ICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlbNV07Cn07CmV4dGVybiBzdHJ1
Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBpbnQgbGVhc2VzX2VuYWJsZSwg
ZGlyX25vdGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMgMTk4ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMQoj
IDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc2VtYXBob3Jl
LmgiIDIKIyAzOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9z
ZW1hcGhvcmUuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
YXNtL3N5c3RlbS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIgMQojIDcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvYml0b3BzLmgiIDEKIyAx
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5o
IgpzdGF0aWMgaW5saW5lIGludCBnZW5lcmljX2ZmcyhpbnQgeCkKewogICAgICAgIGludCByID0g
MTsKCiAgICAgICAgaWYgKCF4KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYg
KCEoeCAmIDB4ZmZmZikpIHsKICAgICAgICAgICAgICAgIHggPj49IDE2OwogICAgICAgICAgICAg
ICAgciArPSAxNjsKICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZmYpKSB7CiAgICAgICAg
ICAgICAgICB4ID4+PSA4OwogICAgICAgICAgICAgICAgciArPSA4OwogICAgICAgIH0KICAgICAg
ICBpZiAoISh4ICYgMHhmKSkgewogICAgICAgICAgICAgICAgeCA+Pj0gNDsKICAgICAgICAgICAg
ICAgIHIgKz0gNDsKICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDMpKSB7CiAgICAgICAgICAg
ICAgICB4ID4+PSAyOwogICAgICAgICAgICAgICAgciArPSAyOwogICAgICAgIH0KICAgICAgICBp
ZiAoISh4ICYgMSkpIHsKICAgICAgICAgICAgICAgIHggPj49IDE7CiAgICAgICAgICAgICAgICBy
ICs9IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiByOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgaW50IGdlbmVyaWNfaHdlaWdodDMyKHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAg
dW5zaWduZWQgaW50IHJlcyA9ICh3ICYgMHg1NTU1NTU1NSkgKyAoKHcgPj4gMSkgJiAweDU1NTU1
NTU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMzMzMzMzMykgKyAoKHJlcyA+PiAyKSAmIDB4
MzMzMzMzMzMpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDBGMEYwRjBGKSArICgocmVzID4+IDQp
ICYgMHgwRjBGMEYwRik7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MDBGRjAwRkYpICsgKChyZXMg
Pj4gOCkgJiAweDAwRkYwMEZGKTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MDAwMEZGRkYpICsg
KChyZXMgPj4gMTYpICYgMHgwMDAwRkZGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50
IGdlbmVyaWNfaHdlaWdodDE2KHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50
IHJlcyA9ICh3ICYgMHg1NTU1KSArICgodyA+PiAxKSAmIDB4NTU1NSk7CiAgICAgICAgcmVzID0g
KHJlcyAmIDB4MzMzMykgKyAoKHJlcyA+PiAyKSAmIDB4MzMzMyk7CiAgICAgICAgcmVzID0gKHJl
cyAmIDB4MEYwRikgKyAoKHJlcyA+PiA0KSAmIDB4MEYwRik7CiAgICAgICAgcmV0dXJuIChyZXMg
JiAweDAwRkYpICsgKChyZXMgPj4gOCkgJiAweDAwRkYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGludCBnZW5lcmljX2h3ZWlnaHQ4KHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHJlcyA9ICh3ICYgMHg1NSkgKyAoKHcgPj4gMSkgJiAweDU1KTsKICAgICAgICByZXMg
PSAocmVzICYgMHgzMykgKyAoKHJlcyA+PiAyKSAmIDB4MzMpOwogICAgICAgIHJldHVybiAocmVz
ICYgMHgwRikgKyAoKHJlcyA+PiA0KSAmIDB4MEYpOwp9CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyA3MCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAyCiMgOCAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMgoKCgpzdHJ1
Y3QgdGFza19zdHJ1Y3Q7CmV4dGVybiB2b2lkIF9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVj
dCAqcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CiMgNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20v
c3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfZ2V0X2Jhc2UoY2hhciAqIGFk
ZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fYmFzZTsKICAgICAgICBfX2FzbV9fKCJtb3Zi
ICUzLCUlZGhcblx0IgogICAgICAgICAgICAgICAgIm1vdmIgJTIsJSVkbFxuXHQiCiAgICAgICAg
ICAgICAgICAic2hsbCAkMTYsJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIm1vdncgJTEsJSVk
eCIKICAgICAgICAgICAgICAgIDoiPSZkIiAoX19iYXNlKQogICAgICAgICAgICAgICAgOiJtIiAo
KigoYWRkcikrMikpLAogICAgICAgICAgICAgICAgICJtIiAoKigoYWRkcikrNCkpLAogICAgICAg
ICAgICAgICAgICJtIiAoKigoYWRkcikrNykpKTsKICAgICAgICByZXR1cm4gX19iYXNlOwp9CiMg
MTMwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N5c3RlbS5o
IgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZ2V0X2xpbWl0KHVuc2lnbmVkIGxvbmcgc2Vn
bWVudCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgX19saW1pdDsKICAgICAgICBfX2FzbV9fKCJs
c2xsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKF9fbGltaXQpOiJyIiAoc2VnbWVudCkp
OwogICAgICAgIHJldHVybiBfX2xpbWl0KzE7Cn0KCgoKCgoKCnN0cnVjdCBfX3hjaGdfZHVtbXkg
eyB1bnNpZ25lZCBsb25nIGFbMTAwXTsgfTsKIyAxNTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82
NGJpdCAodW5zaWduZWQgbG9uZyBsb25nICogcHRyLAogICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGxvdywgdW5zaWduZWQgaW50IGhpZ2gpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoCiAgICAgICAgICAgICAgICAiXG4xOlx0IgogICAgICAgICAgICAgICAgIm1vdmwgKCUwKSwg
JSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgNCglMCksICUlZWR4XG5cdCIKICAgICAg
ICAgICAgICAgICJjbXB4Y2hnOGIgKCUwKVxuXHQiCiAgICAgICAgICAgICAgICAiam56IDFiIgog
ICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgOiAiRCIocHRyKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgImIiKGxvdyksCiAgICAgICAgICAgICAgICAgICAgICAgICJjIihoaWdoKQog
ICAgICAgICAgICAgICAgOiAiYXgiLCJkeCIsIm1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgX19zZXRfNjRiaXRfY29uc3RhbnQgKHVuc2lnbmVkIGxvbmcgbG9uZyAqcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBs
b25nIHZhbHVlKQp7CiAgICAgICAgX19zZXRfNjRiaXQocHRyLCh1bnNpZ25lZCBpbnQpKHZhbHVl
KSwgKHVuc2lnbmVkIGludCkoKHZhbHVlKT4+MzJVTEwpKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgX19zZXRfNjRiaXRfdmFyICh1bnNpZ25lZCBsb25nIGxvbmcgKnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkKewogICAgICAgIF9fc2V0XzY0
Yml0KHB0ciwqKCgodW5zaWduZWQgaW50KikmKHZhbHVlKSkrMCksICooKCh1bnNpZ25lZCBpbnQq
KSYodmFsdWUpKSsxKSk7Cn0KIyAyMDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX3hjaGco
dW5zaWduZWQgbG9uZyB4LCB2b2xhdGlsZSB2b2lkICogcHRyLCBpbnQgc2l6ZSkKewogICAgICAg
IHN3aXRjaCAoc2l6ZSkgewogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAg
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2IgJWIwLCUxIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDoiPXEiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hndyAldzAsJTEiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGdsICUwLCUxIgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDoiPXIiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibSIg
KCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiB4Owp9CiMgMjM2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGxvbmcgX19jbXB4Y2hnKHZvbGF0aWxlIHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBvbGQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXcs
IGludCBzaXplKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcmV2OwogICAgICAgIHN3aXRjaCAo
c2l6ZSkgewogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKCIiICJjbXB4Y2hnYiAlYjEsJTIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
InEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAg
ICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oIiIgImNtcHhjaGd3ICV3MSwlMiIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogIj1hIihwcmV2KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAicSIobmV3KSwgIm0iKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRy
KSkpLCAiMCIob2xkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAibWVt
b3J5Iik7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjsKICAgICAgICBjYXNlIDQ6CiAgICAg
ICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIiAiY21weGNoZ2wgJTEsJTIiCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hn
X2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAg
fQogICAgICAgIHJldHVybiBvbGQ7Cn0KIyAzNDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnZvaWQgZGlzYWJsZV9obHQodm9pZCk7CnZvaWQg
ZW5hYmxlX2hsdCh2b2lkKTsKCmV4dGVybiBpbnQgaXNfc29ueV92YWlvX2xhcHRvcDsKIyA0MCAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vYXRvbWlj
LmgiIDEKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9z
ZW1hcGhvcmUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC93YWl0LmgiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9yd3NlbS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKIyAxMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIg
MQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcndz
ZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9yd3NlbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKCnN0cnVj
dCByd19zZW1hcGhvcmU7CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9hc20vcndzZW0uaCIgMQojIDQxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvYXNtL3J3c2VtLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDQyICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvYXNtL3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDQzICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3J3c2VtLmgiIDIKCnN0cnVjdCByd3Nl
bV93YWl0ZXI7CgpleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSAqcndzZW1fZG93bl9yZWFkX2Zh
aWxlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp
KTsKZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkKHN0
cnVjdCByd19zZW1hcGhvcmUgKnNlbSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRl
cm4gc3RydWN0IHJ3X3NlbWFwaG9yZSAqcndzZW1fd2FrZShzdHJ1Y3Qgcndfc2VtYXBob3JlICop
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCgoKCnN0cnVjdCByd19zZW1hcGhvcmUgewog
ICAgICAgIHNpZ25lZCBsb25nIGNvdW50OwoKCgoKCgogICAgICAgIHNwaW5sb2NrX3Qgd2FpdF9s
b2NrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgd2FpdF9saXN0OwoKCgp9OwojIDg0ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3J3c2VtLmgiCnN0YXRpYyBp
bmxpbmUgdm9pZCBpbml0X3J3c2VtKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAg
IHNlbS0+Y291bnQgPSAweDAwMDAwMDAwOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAg
ICBkbyB7ICgmc2VtLT53YWl0X2xpc3QpLT5uZXh0ID0gKCZzZW0tPndhaXRfbGlzdCk7ICgmc2Vt
LT53YWl0X2xpc3QpLT5wcmV2ID0gKCZzZW0tPndhaXRfbGlzdCk7IH0gd2hpbGUgKDApOwoKCgp9
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19kb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAq
c2VtKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBi
ZWdpbm5pbmcgZG93bl9yZWFkXG5cdCIKIiIgIiAgaW5jbCAgICAgICglJWVheClcblx0IgogICAg
ICAgICAgICAgICAgIiAganMgICAgICAgIDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQi
CiAgICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAg
ICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0Igog
ICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICIg
IGNhbGwgICAgICByd3NlbV9kb3duX3JlYWRfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIg
IHBvcGwgICAgICAlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hc
blx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAi
LnByZXZpb3VzIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25fcmVhZFxuXHQiCiAgICAg
ICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogImEiKHNlbSkK
ICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgX19kb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGludCB0
bXA7CgogICAgICAgIHRtcCA9ICgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSk7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgZG93bl93
cml0ZVxuXHQiCiIiICIgIHhhZGQgICAgICAlMCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAg
ICIgIHRlc3RsICAgICAlMCwlMFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAgMmZc
blx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAu
dGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XG5cdCIKICAgICAgICAgICAg
ICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBjYWxsICAgICAg
cndzZW1fZG93bl93cml0ZV9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAg
ICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAg
ICAgICAgIi5wcmV2aW91c1xuIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25fd3JpdGUi
CiAgICAgICAgICAgICAgICA6ICIrZCIodG1wKSwgIittIihzZW0tPmNvdW50KQogICAgICAgICAg
ICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0KCgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7
CiAgICAgICAgX19zMzIgdG1wID0gLTB4MDAwMDAwMDE7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgX191cF9yZWFkXG5cdCIKIiIgIiAg
eGFkZCAgICAgICUlZWR4LCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAganMgICAgICAg
IDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnNlY3Rp
b24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAg
ICAgICAgICAiICBkZWN3ICAgICAgJSVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAg
ICAgMWJcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWN4XG5cdCIKICAgICAg
ICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV93YWtlXG5cdCIKICAgICAgICAgICAgICAgICIg
IHBvcGwgICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIK
ICAgICAgICAgICAgICAgICIucHJldmlvdXNcbiIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBf
X3VwX3JlYWRcbiIKICAgICAgICAgICAgICAgIDogIittIihzZW0tPmNvdW50KSwgIitkIih0bXAp
CiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiLCAi
Y2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fdXBfd3JpdGUoc3RydWN0IHJ3X3NlbWFw
aG9yZSAqc2VtKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAg
ICAiIyBiZWdpbm5pbmcgX191cF93cml0ZVxuXHQiCiAgICAgICAgICAgICAgICAiICBtb3ZsICAg
ICAgJTIsJSVlZHhcblx0IgoiIiAiICB4YWRkbCAgICAgJSVlZHgsKCUlZWF4KVxuXHQiCiAgICAg
ICAgICAgICAgICAiICBqbnogICAgICAgMmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIK
ICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAg
ICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIKICAg
ICAgICAgICAgICAgICIgIGpueiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNo
bCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dha2Vc
blx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAg
ICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuIgogICAg
ICAgICAgICAgICAgIiMgZW5kaW5nIF9fdXBfd3JpdGVcbiIKICAgICAgICAgICAgICAgIDogIitt
IihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKSwgImkiKC0oKC0weDAwMDEw
MDAwKSArIDB4MDAwMDAwMDEpKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIiwgImVk
eCIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcndzZW1fYXRvbWljX2FkZChpbnQgZGVsdGEs
IHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KAoiIiAiYWRkbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iKHNlbS0+Y291bnQpCiAgICAg
ICAgICAgICAgICA6ImlyIihkZWx0YSksICJtIihzZW0tPmNvdW50KSk7Cn0KCgoKCnN0YXRpYyBp
bmxpbmUgaW50IHJ3c2VtX2F0b21pY191cGRhdGUoaW50IGRlbHRhLCBzdHJ1Y3Qgcndfc2VtYXBo
b3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wID0gZGVsdGE7CgogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKAoiIiAieGFkZCAlMCwoJTIpIgogICAgICAgICAgICAgICAgOiAiK3IiKHRtcCks
ICI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogInIiKHNlbSksICJtIihzZW0tPmNv
dW50KQogICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CgogICAgICAgIHJldHVybiB0bXArZGVs
dGE7Cn0KIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L3J3c2VtLmgiIDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3JlYWQoc3RydWN0IHJ3X3Nl
bWFwaG9yZSAqc2VtKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgIF9fZG93bl9yZWFkKHNlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3dyaXRlKHN0
cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CiAgICAgICAgX19kb3duX3dyaXRlKHNlbSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQg
dXBfcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIF9fdXBfcmVhZChzZW0pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lk
IHVwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIF9fdXBfd3JpdGUoc2VtKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CiMgNDMgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIKCnN0cnVjdCBz
ZW1hcGhvcmUgewogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIGludCBzbGVlcGVyczsK
ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKCgp9OwojIDczICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgpzdGF0aWMgaW5saW5l
IHZvaWQgc2VtYV9pbml0IChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGludCB2YWwpCnsKCgoKCgoK
ICAgICAgICAoKCgmc2VtLT5jb3VudCktPmNvdW50ZXIpID0gKHZhbCkpOwogICAgICAgIHNlbS0+
c2xlZXBlcnMgPSAwOwogICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJnNlbS0+d2FpdCk7CgoK
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01VVEVYIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0p
CnsKICAgICAgICBzZW1hX2luaXQoc2VtLCAxKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGluaXRf
TVVURVhfTE9DS0VEIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBzZW1hX2luaXQo
c2VtLCAwKTsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fZG93bl9mYWls
ZWQodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25fZmFpbGVk
X2ludGVycnVwdGlibGUodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBf
X2Rvd25fZmFpbGVkX3RyeWxvY2sodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IHZvaWQgX191cF93YWtldXAodm9pZCApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2
b2lkIF9fZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMCkpKSBpbnQgX19kb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7
CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl90cnlsb2NrKHN0cnVjdCBz
ZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgX191cChz
dHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvd24oc3Ry
dWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAgICAgICAgICIjIGF0b21pYyBkb3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAg
ICAgICAiIiAiZGVjbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAianMgMmZcbiIKICAgICAgICAg
ICAgICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwi
XG4iCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZFxuXHQiCiAgICAgICAg
ICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzIgogICAgICAgICAg
ICAgICAgOiI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAgICAg
ICAgICAgICAgICA6Im1lbW9yeSIpOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgZG93bl9pbnRl
cnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKICAgICAgICBpbnQgcmVzdWx0OwoK
CgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9t
aWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAgICAgICAiIiAi
ZGVjbCAlMVxuXHQiCiAgICAgICAgICAgICAgICAianMgMmZcblx0IgogICAgICAgICAgICAgICAg
InhvcmwgJTAsJTBcbiIKICAgICAgICAgICAgICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5z
ZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19k
b3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIK
ICAgICAgICAgICAgICAgICIucHJldmlvdXMiCiAgICAgICAgICAgICAgICA6Ij1hIiAocmVzdWx0
KSwgIj1tIiAoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAg
ICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoKCgoKCnN0YXRpYyBp
bmxpbmUgaW50IGRvd25fdHJ5bG9jayhzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7CiAgICAgICAg
aW50IHJlc3VsdDsKCgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgIiMgYXRvbWljIGludGVycnVwdGlibGUgZG93biBvcGVyYXRpb25cblx0IgogICAgICAg
ICAgICAgICAgIiIgImRlY2wgJTFcblx0IgogICAgICAgICAgICAgICAgImpzIDJmXG5cdCIKICAg
ICAgICAgICAgICAgICJ4b3JsICUwLCUwXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAg
ICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAg
IjI6XHRjYWxsIF9fZG93bl9mYWlsZWRfdHJ5bG9ja1xuXHQiCiAgICAgICAgICAgICAgICAiam1w
IDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzIgogICAgICAgICAgICAgICAgOiI9YSIg
KHJlc3VsdCksICI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAg
ICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KCgoKCgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCB1cChzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7CgoKCiAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9taWMgdXAgb3Bl
cmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICIiICJpbmNsICUwXG5cdCIKICAgICAgICAgICAg
ICAgICJqbGUgMmZcbiIKICAgICAgICAgICAgICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5z
ZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX191
cF93YWtldXBcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAgICAgICAg
Ii5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPW0iIChzZW0tPmNvdW50KQogICAgICAgICAg
ICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKfQojIDE5OSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS90eXBl
cy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9i
eXRlb3JkZXIuaCIgMgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDIKCgpzdGF0aWMgX19pbmxpbmVfXyBfX2Nv
bnN0X18gX191MzIgX19fYXJjaF9fc3dhYjMyKF9fdTMyIHgpCnsKCiAgICAgICAgX19hc21fXygi
YnN3YXAgJTAiIDogIj1yIiAoeCkgOiAiMCIgKHgpKTsKCgoKCgoKCiAgICAgICAgcmV0dXJuIHg7
Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UxNiBfX19hcmNoX19zd2FiMTYoX191
MTYgeCkKewogICAgICAgIF9fYXNtX18oInhjaGdiICViMCwlaDAiIDogIj1xIiAoeCkgOiAiMCIg
KHgpKTsgcmV0dXJuIHg7CgoKCn0KIyA0NSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQojIDExICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xp
dHRsZV9lbmRpYW4uaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIgMQojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIF9fY29uc3RfXyBfX3UxNiBfX2Zzd2FiMTYoX191MTYgeCkKewogICAgICAgIHJldHVybiBf
X19hcmNoX19zd2FiMTYoeCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MTYgX19zd2FiMTZwKF9f
dTE2ICp4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIxNigqKHgpKTsKfQpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIF9fc3dhYjE2cyhfX3UxNiAqYWRkcikKewogICAgICAgIGRvIHsgKihh
ZGRyKSA9IF9fX2FyY2hfX3N3YWIxNigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGlj
IF9faW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fZnN3YWIzMihfX3UzMiB4KQp7CiAgICAgICAg
cmV0dXJuIF9fX2FyY2hfX3N3YWIzMih4KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UzMiBfX3N3
YWIzMnAoX191MzIgKngpCnsKICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjMyKCooeCkpOwp9
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19zd2FiMzJzKF9fdTMyICphZGRyKQp7CiAgICAgICAg
ZG8geyAqKGFkZHIpID0gX19fYXJjaF9fc3dhYjMyKCooKGFkZHIpKSk7IH0gd2hpbGUgKDApOwp9
CgoKc3RhdGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTY0IF9fZnN3YWI2NChfX3U2NCB4KQp7
CgogICAgICAgIF9fdTMyIGggPSB4ID4+IDMyOwogICAgICAgIF9fdTMyIGwgPSB4ICYgKCgxVUxM
PDwzMiktMSk7CiAgICAgICAgcmV0dXJuICgoKF9fdTY0KShfX2J1aWx0aW5fY29uc3RhbnRfcCgo
X191MzIpKGwpKSA/ICh7IF9fdTMyIF9feCA9ICgobCkpOyAoKF9fdTMyKSggKCgoX191MzIpKF9f
eCkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoX194KSAmIChfX3Uz
MikweDAwMDBmZjAwVUwpIDw8IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMGZmMDAw
MFVMKSA+PiA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQp
ICkpOyB9KSA6IF9fZnN3YWIzMigobCkpKSkgPDwgMzIpIHwgKChfX3U2NCkoKF9fYnVpbHRpbl9j
b25zdGFudF9wKChfX3UzMikoaCkpID8gKHsgX191MzIgX194ID0gKChoKSk7ICgoX191MzIpKCAo
KChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKShf
X3gpICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAmIChfX3Uz
MikweDAwZmYwMDAwVUwpID4+IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhmZjAwMDAw
MFVMKSA+PiAyNCkgKSk7IH0pIDogX19mc3dhYjMyKChoKSkpKSk7CgoKCn0Kc3RhdGljIF9faW5s
aW5lX18gX191NjQgX19zd2FiNjRwKF9fdTY0ICp4KQp7CiAgICAgICAgcmV0dXJuICh7IF9fdTY0
IF9fdG1wID0gKCooeCkpIDsgKHsgX191NjQgX194ID0gKF9fdG1wKTsgKChfX3U2NCkoIChfX3U2
NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2KSB8
IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMGZmMDBVTEwpIDw8
IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDBmZjAwMDBV
TEwpIDw8IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwZmYw
MDAwMDBVTEwpIDw8IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAw
ZmYwMDAwMDAwMFVMTCkgPj4gOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgw
MDAwZmYwMDAwMDAwMDAwVUxMKSA+PiAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191
NjQpMHgwMGZmMDAwMDAwMDAwMDAwVUxMKSA+PiA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkg
JiAoX191NjQpMHhmZjAwMDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgKSk7IH0pOyB9KTsKfQpzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjY0cyhfX3U2NCAqYWRkcikKewogICAgICAgIGRvIHsg
KihhZGRyKSA9ICh7IF9fdTY0IF9fdG1wID0gKCooKGFkZHIpKSkgOyAoeyBfX3U2NCBfX3ggPSAo
X190bXApOyAoKF9fdTY0KSggKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAw
MDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4
MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9f
dTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gp
ICYgKF9fdTY0KTB4MDAwMDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQp
KF9feCkgJiAoX191NjQpMHgwMDAwMDBmZjAwMDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChf
X3U2NCkoX194KSAmIChfX3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2
NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8
IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+
IDU2KSApKTsgfSk7IH0pOyB9IHdoaWxlICgwKTsKfQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgoj
IDY2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvYnl0ZW9y
ZGVyL2xpdHRsZV9lbmRpYW4uaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMQojIDE1MCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5lcmljLmgiCmV4
dGVybiBfX3UzMiBudG9obChfX3UzMik7CmV4dGVybiBfX3UzMiBodG9ubChfX3UzMik7CgoKCgpl
eHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IG50b2hzKHVuc2lnbmVkIHNob3J0IGludCk7CmV4dGVy
biB1bnNpZ25lZCBzaG9ydCBpbnQgaHRvbnModW5zaWduZWQgc2hvcnQgaW50KTsKIyA2NyAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0
bGVfZW5kaWFuLmgiIDIKIyA0NiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2FzbS9ieXRlb3JkZXIuaCIgMgojIDIwMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCmV4dGVybiB2b2lkIHVwZGF0ZV9hdGltZSAoc3Ry
dWN0IGlub2RlICopOwoKCmV4dGVybiB2b2lkIGJ1ZmZlcl9pbml0KHVuc2lnbmVkIGxvbmcpOwpl
eHRlcm4gdm9pZCBpbm9kZV9pbml0KHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBtbnRfaW5p
dCh1bnNpZ25lZCBsb25nKTsKCgplbnVtIGJoX3N0YXRlX2JpdHMgewogICAgICAgIEJIX1VwdG9k
YXRlLAogICAgICAgIEJIX0RpcnR5LAogICAgICAgIEJIX0xvY2ssCiAgICAgICAgQkhfUmVxLAog
ICAgICAgIEJIX01hcHBlZCwKICAgICAgICBCSF9OZXcsCiAgICAgICAgQkhfQXN5bmMsCiAgICAg
ICAgQkhfV2FpdF9JTywKICAgICAgICBCSF9sYXVuZGVyLAoKICAgICAgICBCSF9Qcml2YXRlU3Rh
cnQsCgoKfTsKIyAyMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9mcy5oIgpzdHJ1Y3QgYnVmZmVyX2hlYWQgewoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJfbmV4dDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJfYmxvY2tucjsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBiX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYl9saXN0OwogICAgICAg
IGtkZXZfdCBiX2RldjsKCiAgICAgICAgYXRvbWljX3QgYl9jb3VudDsKICAgICAgICBrZGV2X3Qg
Yl9yZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIGJfZmx1c2h0aW1lOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfbmV4dF9mcmVl
OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9wcmV2X2ZyZWU7CiAgICAgICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICpiX3RoaXNfcGFnZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJf
cmVxbmV4dDsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqYl9wcHJldjsKICAgICAgICBj
aGFyICogYl9kYXRhOwogICAgICAgIHN0cnVjdCBwYWdlICpiX3BhZ2U7CiAgICAgICAgdm9pZCAo
KmJfZW5kX2lvKShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwogICAgICAg
IHZvaWQgKmJfcHJpdmF0ZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3JzZWN0b3I7CiAgICAg
ICAgd2FpdF9xdWV1ZV9oZWFkX3QgYl93YWl0OwoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiX2lu
b2RlOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYl9pbm9kZV9idWZmZXJzOwp9OwoKdHlwZWRl
ZiB2b2lkIChiaF9lbmRfaW9fdCkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRl
KTsKdm9pZCBpbml0X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgYmhfZW5kX2lvX3QgKiwg
dm9pZCAqKTsKIyAyODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9mcy5oIgpleHRlcm4gdm9pZCBzZXRfYmhfcGFnZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo
LCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwoKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEK
CgoKCnN0cnVjdCBwaXBlX2lub2RlX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdh
aXQ7CiAgICAgICAgY2hhciAqYmFzZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAg
IHVuc2lnbmVkIGludCBzdGFydDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZGVyczsKICAgICAg
ICB1bnNpZ25lZCBpbnQgd3JpdGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ19yZWFk
ZXJzOwogICAgICAgIHVuc2lnbmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHJfY291bnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgd19jb3VudGVyOwp9OwojIDQy
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcGlwZV9mc19p
LmgiCnZvaWQgcGlwZV93YWl0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVjdCBpbm9kZSog
cGlwZV9uZXcoc3RydWN0IGlub2RlKiBpbm9kZSk7CiMgMjg4ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9taW5peF9mc19pLmgiIDEKCgoKCgoKc3RydWN0
IG1pbml4X2lub2RlX2luZm8gewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2
IGkxX2RhdGFbMTZdOwogICAgICAgICAgICAgICAgX191MzIgaTJfZGF0YVsxNl07CiAgICAgICAg
fSB1Owp9OwojIDI4OSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvZXh0Ml9mc19pLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L2V4dDJfZnNfaS5oIgpzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIHsKICAg
ICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191
MzIgaV9mYWRkcjsKICAgICAgICBfX3U4IGlfZnJhZ19ubzsKICAgICAgICBfX3U4IGlfZnJhZ19z
aXplOwogICAgICAgIF9fdTE2IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAg
ICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3Uz
MiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAg
ICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2Jsb2Nr
OwogICAgICAgIF9fdTMyIGlfcHJlYWxsb2NfY291bnQ7CiAgICAgICAgX191MzIgaV9kaXJfc3Rh
cnRfbG9va3VwOwogICAgICAgIGludCBpX25ld19pbm9kZToxOwp9OwojIDI5MCAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaHBmc19mc19pLmgiIDEKCgoK
c3RydWN0IGhwZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0
ZTsKICAgICAgICBpbm9fdCBpX3BhcmVudF9kaXI7CiAgICAgICAgdW5zaWduZWQgaV9kbm87CiAg
ICAgICAgdW5zaWduZWQgaV9kcG9zOwogICAgICAgIHVuc2lnbmVkIGlfZHN1YmRubzsKICAgICAg
ICB1bnNpZ25lZCBpX2ZpbGVfc2VjOwogICAgICAgIHVuc2lnbmVkIGlfZGlza19zZWM7CiAgICAg
ICAgdW5zaWduZWQgaV9uX3NlY3M7CiAgICAgICAgdW5zaWduZWQgaV9lYV9zaXplOwogICAgICAg
IHVuc2lnbmVkIGlfY29udiA6IDI7CiAgICAgICAgdW5zaWduZWQgaV9lYV9tb2RlIDogMTsKICAg
ICAgICB1bnNpZ25lZCBpX2VhX3VpZCA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9lYV9naWQgOiAx
OwogICAgICAgIHVuc2lnbmVkIGlfZGlydHkgOiAxOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
aV9zZW07CiAgICAgICAgbG9mZl90ICoqaV9yZGRpcl9vZmY7Cn07CiMgMjkxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9udGZzX2ZzX2kuaCIgMQoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90eXBlcy5o
IiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L250
ZnNfZnNfaS5oIiAyCgoKc3RydWN0IG50ZnNfYXR0cmlidXRlOwpzdHJ1Y3QgbnRmc19zYl9pbmZv
OwoKCgoKdHlwZWRlZiB1OCBudGZzX3U4Owp0eXBlZGVmIHUxNiBudGZzX3UxNjsKdHlwZWRlZiB1
MzIgbnRmc191MzI7CnR5cGVkZWYgdTY0IG50ZnNfdTY0Owp0eXBlZGVmIHM4IG50ZnNfczg7CnR5
cGVkZWYgczE2IG50ZnNfczE2Owp0eXBlZGVmIHMzMiBudGZzX3MzMjsKdHlwZWRlZiBzNjQgbnRm
c19zNjQ7CgoKCgp0eXBlZGVmIF9fa2VybmVsX21vZGVfdCBudG1vZGVfdDsKCgoKdHlwZWRlZiB1
aWRfdCBudGZzX3VpZF90OwoKCgp0eXBlZGVmIGdpZF90IG50ZnNfZ2lkX3Q7CgoKCnR5cGVkZWYg
X19rZXJuZWxfc2l6ZV90IG50ZnNfc2l6ZV90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3RpbWVfdCBu
dGZzX3RpbWVfdDsKCgoKCgp0eXBlZGVmIHUxNiBudGZzX3djaGFyX3Q7CgoKCgp0eXBlZGVmIHM2
NCBudGZzX29mZnNldF90OwoKCgoKdHlwZWRlZiB1NjQgbnRmc190aW1lNjRfdDsKIyA2OSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIgp0
eXBlZGVmIHMzMiBudGZzX2NsdXN0ZXJfdDsKCgoKc3RydWN0IG50ZnNfaW5vZGVfaW5mbyB7CiAg
ICAgICAgc3RydWN0IG50ZnNfc2JfaW5mbyAqdm9sOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9u
dW1iZXI7CiAgICAgICAgX191MTYgc2VxdWVuY2VfbnVtYmVyOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgKmF0dHI7CiAgICAgICAgaW50IGF0dHJfY291bnQ7CiAgICAgICAgc3RydWN0IG50ZnNfYXR0
cmlidXRlICphdHRyczsKICAgICAgICBpbnQgcmVjb3JkX2NvdW50OwogICAgICAgIGludCAqcmVj
b3JkczsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHJlY29yZHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBjbHVzdGVyc19wZXJfcmVjb3JkOwogICAgICAgICAgICAgICAgfSBpbmRleDsKICAgICAgICB9
IHU7Cn07CiMgMjkyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9tc2Rvc19mc19pLmgiIDEKCgoKCgoKCnN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIHsKICAg
ICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGludCBpX3N0YXJ0OwogICAg
ICAgIGludCBpX2xvZ3N0YXJ0OwogICAgICAgIGludCBpX2F0dHJzOwogICAgICAgIGludCBpX2N0
aW1lX21zOwogICAgICAgIGludCBpX2xvY2F0aW9uOwogICAgICAgIHN0cnVjdCBpbm9kZSAqaV9m
YXRfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2ZhdF9oYXNoOwp9OwojIDI5MyAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdW1zZG9zX2Zz
X2kuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEKIyAxMCAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDIK
IyAzOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Vtc2Rv
c19mc19pLmgiCnN0cnVjdCBkaXJfbG9ja2luZ19pbmZvIHsKICAgICAgICB3YWl0X3F1ZXVlX2hl
YWRfdCBwOwogICAgICAgIHNob3J0IGludCBsb29raW5nOwogICAgICAgIHNob3J0IGludCBjcmVh
dGluZzsKCgoKICAgICAgICBsb25nIHBpZDsKCn07CgpzdHJ1Y3QgdW1zZG9zX2lub2RlX2luZm8g
ewogICAgICAgIHN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIG1zZG9zX2luZm87CiAgICAgICAgc3Ry
dWN0IGRpcl9sb2NraW5nX2luZm8gZGlyX2luZm87CiAgICAgICAgaW50IGlfcGF0Y2hlZDsKICAg
ICAgICBpbnQgaV9pc19obGluazsKICAgICAgICBvZmZfdCBwb3M7Cn07CiMgMjk0ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pc29fZnNfaS5oIiAxCgoK
CgoKCnN0cnVjdCBpc29faW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgaW50IGlfZmlyc3Rf
ZXh0ZW50OwogICAgICAgIHVuc2lnbmVkIGNoYXIgaV9maWxlX2Zvcm1hdDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGlfbmV4dF9zZWN0aW9uX2lubzsKICAgICAgICBvZmZfdCBpX3NlY3Rpb25fc2l6
ZTsKfTsKIyAyOTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L25mc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9uZnMuaCIgMQojIDEwICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmZzLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9tc2dfcHJv
dC5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9zdW5ycGMvbXNnX3Byb3QuaCIKZW51bSBycGNfYXV0aF9mbGF2b3IgewogICAgICAgIFJQQ19B
VVRIX05VTEwgPSAwLAogICAgICAgIFJQQ19BVVRIX1VOSVggPSAxLAogICAgICAgIFJQQ19BVVRI
X1NIT1JUID0gMiwKICAgICAgICBSUENfQVVUSF9ERVMgPSAzLAogICAgICAgIFJQQ19BVVRIX0tS
QiA9IDQsCn07CgplbnVtIHJwY19tc2dfdHlwZSB7CiAgICAgICAgUlBDX0NBTEwgPSAwLAogICAg
ICAgIFJQQ19SRVBMWSA9IDEKfTsKCmVudW0gcnBjX3JlcGx5X3N0YXQgewogICAgICAgIFJQQ19N
U0dfQUNDRVBURUQgPSAwLAogICAgICAgIFJQQ19NU0dfREVOSUVEID0gMQp9OwoKZW51bSBycGNf
YWNjZXB0X3N0YXQgewogICAgICAgIFJQQ19TVUNDRVNTID0gMCwKICAgICAgICBSUENfUFJPR19V
TkFWQUlMID0gMSwKICAgICAgICBSUENfUFJPR19NSVNNQVRDSCA9IDIsCiAgICAgICAgUlBDX1BS
T0NfVU5BVkFJTCA9IDMsCiAgICAgICAgUlBDX0dBUkJBR0VfQVJHUyA9IDQsCiAgICAgICAgUlBD
X1NZU1RFTV9FUlIgPSA1Cn07CgplbnVtIHJwY19yZWplY3Rfc3RhdCB7CiAgICAgICAgUlBDX01J
U01BVENIID0gMCwKICAgICAgICBSUENfQVVUSF9FUlJPUiA9IDEKfTsKCmVudW0gcnBjX2F1dGhf
c3RhdCB7CiAgICAgICAgUlBDX0FVVEhfT0sgPSAwLAogICAgICAgIFJQQ19BVVRIX0JBRENSRUQg
PSAxLAogICAgICAgIFJQQ19BVVRIX1JFSkVDVEVEQ1JFRCA9IDIsCiAgICAgICAgUlBDX0FVVEhf
QkFEVkVSRiA9IDMsCiAgICAgICAgUlBDX0FVVEhfUkVKRUNURURWRVJGID0gNCwKICAgICAgICBS
UENfQVVUSF9UT09XRUFLID0gNQp9OwojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvbmZzLmgiIDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L25mcy5oIgogZW51bSBuZnNfc3RhdCB7CiAgICAgICAgTkZT
X09LID0gMCwKICAgICAgICBORlNFUlJfUEVSTSA9IDEsCiAgICAgICAgTkZTRVJSX05PRU5UID0g
MiwKICAgICAgICBORlNFUlJfSU8gPSA1LAogICAgICAgIE5GU0VSUl9OWElPID0gNiwKICAgICAg
ICBORlNFUlJfRUFHQUlOID0gMTEsCiAgICAgICAgTkZTRVJSX0FDQ0VTID0gMTMsCiAgICAgICAg
TkZTRVJSX0VYSVNUID0gMTcsCiAgICAgICAgTkZTRVJSX1hERVYgPSAxOCwKICAgICAgICBORlNF
UlJfTk9ERVYgPSAxOSwKICAgICAgICBORlNFUlJfTk9URElSID0gMjAsCiAgICAgICAgTkZTRVJS
X0lTRElSID0gMjEsCiAgICAgICAgTkZTRVJSX0lOVkFMID0gMjIsCiAgICAgICAgTkZTRVJSX0ZC
SUcgPSAyNywKICAgICAgICBORlNFUlJfTk9TUEMgPSAyOCwKICAgICAgICBORlNFUlJfUk9GUyA9
IDMwLAogICAgICAgIE5GU0VSUl9NTElOSyA9IDMxLAogICAgICAgIE5GU0VSUl9PUE5PVFNVUFAg
PSA0NSwKICAgICAgICBORlNFUlJfTkFNRVRPT0xPTkcgPSA2MywKICAgICAgICBORlNFUlJfTk9U
RU1QVFkgPSA2NiwKICAgICAgICBORlNFUlJfRFFVT1QgPSA2OSwKICAgICAgICBORlNFUlJfU1RB
TEUgPSA3MCwKICAgICAgICBORlNFUlJfUkVNT1RFID0gNzEsCiAgICAgICAgTkZTRVJSX1dGTFVT
SCA9IDk5LAogICAgICAgIE5GU0VSUl9CQURIQU5ETEUgPSAxMDAwMSwKICAgICAgICBORlNFUlJf
Tk9UX1NZTkMgPSAxMDAwMiwKICAgICAgICBORlNFUlJfQkFEX0NPT0tJRSA9IDEwMDAzLAogICAg
ICAgIE5GU0VSUl9OT1RTVVBQID0gMTAwMDQsCiAgICAgICAgTkZTRVJSX1RPT1NNQUxMID0gMTAw
MDUsCiAgICAgICAgTkZTRVJSX1NFUlZFUkZBVUxUID0gMTAwMDYsCiAgICAgICAgTkZTRVJSX0JB
RFRZUEUgPSAxMDAwNywKICAgICAgICBORlNFUlJfSlVLRUJPWCA9IDEwMDA4CiB9OwoKCgplbnVt
IG5mc19mdHlwZSB7CiAgICAgICAgTkZOT04gPSAwLAogICAgICAgIE5GUkVHID0gMSwKICAgICAg
ICBORkRJUiA9IDIsCiAgICAgICAgTkZCTEsgPSAzLAogICAgICAgIE5GQ0hSID0gNCwKICAgICAg
ICBORkxOSyA9IDUsCiAgICAgICAgTkZTT0NLID0gNiwKICAgICAgICBORkJBRCA9IDcsCiAgICAg
ICAgTkZGSUZPID0gOAp9OwoKCgoKCgpzdHJ1Y3QgbmZzX2ZoIHsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBzaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZGF0YVs2NF07Cn07CiMgMTA3ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmZzLmgiCmVudW0gbmZz
M19zdGFibGVfaG93IHsKICAgICAgICBORlNfVU5TVEFCTEUgPSAwLAogICAgICAgIE5GU19EQVRB
X1NZTkMgPSAxLAogICAgICAgIE5GU19GSUxFX1NZTkMgPSAyCn07CiMgNyAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIKCgoKCnN0cnVj
dCBuZnNfaW5vZGVfaW5mbyB7CgoKCiAgICAgICAgX191NjQgZnNpZDsKICAgICAgICBfX3U2NCBm
aWxlaWQ7CgoKCgogICAgICAgIHN0cnVjdCBuZnNfZmggZmg7CgoKCgogICAgICAgIHVuc2lnbmVk
IHNob3J0IGZsYWdzOwojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvbmZzX2ZzX2kuaCIKICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWRfY2FjaGVfamlm
ZmllczsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX2N0aW1lOwogICAgICAgIF9fdTY0IHJlYWRf
Y2FjaGVfbXRpbWU7CiAgICAgICAgX191NjQgcmVhZF9jYWNoZV9pc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIGF0dHJ0aW1lbzsKICAgICAgICB1bnNpZ25lZCBsb25nIGF0dHJ0aW1lb190aW1l
c3RhbXA7CgoKCgoKICAgICAgICBfX3UzMiBjb29raWV2ZXJmWzJdOwoKCgoKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIHJlYWQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eTsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGNvbW1pdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdyaXRl
YmFjazsKCiAgICAgICAgdW5zaWduZWQgaW50IG5yZWFkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5kaXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuY29tbWl0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5wYWdlczsKCgogICAgICAgIHN0cnVj
dCBpbm9kZSAqaGFzaF9uZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpoYXNo
X3ByZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBuZXh0c2NhbjsKCgogICAgICAgIHN0cnVjdCBy
cGNfY3JlZCAqbW1fY3JlZDsKfTsKIyA5MiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiCnN0cnVjdCBuZnNfbG9ja19pbmZvIHsKICAgICAg
ICB1MzIgc3RhdGU7CiAgICAgICAgdTMyIGZsYWdzOwogICAgICAgIHN0cnVjdCBubG1faG9zdCAq
aG9zdDsKfTsKIyAyOTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L3N5c3ZfZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBzeXN2X2lub2RlX2luZm8gewogICAg
ICAgIHUzMiBpX2RhdGFbMTArMSsxKzFdOwoKCgoKfTsKIyAyOTcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiIDEKCgoK
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9hLm91
dC5oIiAxCgoKCnN0cnVjdCBleGVjCnsKICB1bnNpZ25lZCBsb25nIGFfaW5mbzsKICB1bnNpZ25l
ZCBhX3RleHQ7CiAgdW5zaWduZWQgYV9kYXRhOwogIHVuc2lnbmVkIGFfYnNzOwogIHVuc2lnbmVk
IGFfc3ltczsKICB1bnNpZ25lZCBhX2VudHJ5OwogIHVuc2lnbmVkIGFfdHJzaXplOwogIHVuc2ln
bmVkIGFfZHJzaXplOwp9OwojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9hLm91dC5oIiAyCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAgTV9PTERT
VU4yID0gMCwKCgoKCiAgTV82ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoKICBNX1NQ
QVJDID0gMywKCgogIE1fMzg2ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBTMiA9IDE1
Mgp9OwojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L2Eub3V0LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2Fz
bS9wYWdlLmgiIDEKIyAxMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9hLm91dC5oIiAyCiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvYS5vdXQuaCIKc3RydWN0IG5saXN0IHsKICB1bmlvbiB7CiAgICBjaGFy
ICpuX25hbWU7CiAgICBzdHJ1Y3Qgbmxpc3QgKm5fbmV4dDsKICAgIGxvbmcgbl9zdHJ4OwogIH0g
bl91bjsKICB1bnNpZ25lZCBjaGFyIG5fdHlwZTsKICBjaGFyIG5fb3RoZXI7CiAgc2hvcnQgbl9k
ZXNjOwogIHVuc2lnbmVkIGxvbmcgbl92YWx1ZTsKfTsKIyAyMzUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9hLm91dC5oIgpzdHJ1Y3QgcmVsb2NhdGlvbl9p
bmZvCnsKCiAgaW50IHJfYWRkcmVzczsKCiAgdW5zaWduZWQgaW50IHJfc3ltYm9sbnVtOjI0OwoK
CgogIHVuc2lnbmVkIGludCByX3BjcmVsOjE7CgoKICB1bnNpZ25lZCBpbnQgcl9sZW5ndGg6MjsK
CgoKCgoKICB1bnNpZ25lZCBpbnQgcl9leHRlcm46MTsKCgoKCgoKCiAgdW5zaWduZWQgaW50IHJf
cGFkOjQ7Cgp9OwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9hZmZzX2ZzX2kuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9hc20vcGFyYW0uaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90aW1lLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90aW1lLmgiIDIKCgoKc3RydWN0IHRp
bWVzcGVjIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsK
IyAzMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3RpbWUu
aCIKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZwp0aW1lc3BlY190b19qaWZmaWVzKHN0
cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlYyA9IHZhbHVl
LT50dl9zZWM7CiAgICAgICAgbG9uZyBuc2VjID0gdmFsdWUtPnR2X25zZWM7CgogICAgICAgIGlm
IChzZWMgPj0gKCgofjBVTCA+PiAxKS0xKSAvIDEwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4g
KCh+MFVMID4+IDEpLTEpOwogICAgICAgIG5zZWMgKz0gMTAwMDAwMDAwMEwgLyAxMDAgLSAxOwog
ICAgICAgIG5zZWMgLz0gMTAwMDAwMDAwMEwgLyAxMDA7CiAgICAgICAgcmV0dXJuIDEwMCAqIHNl
YyArIG5zZWM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKamlmZmllc190b190aW1lc3BlYyh1
bnNpZ25lZCBsb25nIGppZmZpZXMsIHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAgICAgICB2
YWx1ZS0+dHZfbnNlYyA9IChqaWZmaWVzICUgMTAwKSAqICgxMDAwMDAwMDAwTCAvIDEwMCk7CiAg
ICAgICAgdmFsdWUtPnR2X3NlYyA9IGppZmZpZXMgLyAxMDA7Cn0KIyA2NyAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBsb25nCm1rdGltZSAodW5zaWduZWQgaW50IHllYXIsIHVuc2lnbmVkIGludCBtb24s
CiAgICAgICAgdW5zaWduZWQgaW50IGRheSwgdW5zaWduZWQgaW50IGhvdXIsCiAgICAgICAgdW5z
aWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IHNlYykKewogICAgICAgIGlmICgwID49IChpbnQp
IChtb24gLT0gMikpIHsKICAgICAgICAgICAgICAgIG1vbiArPSAxMjsKICAgICAgICAgICAgICAg
IHllYXIgLT0gMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoKCgKICAgICAgICAgICAgICAg
ICh1bnNpZ25lZCBsb25nKSAoeWVhci80IC0geWVhci8xMDAgKyB5ZWFyLzQwMCArIDM2Nyptb24v
MTIgKyBkYXkpICsKICAgICAgICAgICAgICAgICAgICAgICAgeWVhciozNjUgLSA3MTk0OTkKICAg
ICAgICAgICAgKSoyNCArIGhvdXIKICAgICAgICAgICkqNjAgKyBtaW4KICAgICAgICApKjYwICsg
c2VjOwp9CgoKCgpzdHJ1Y3QgdGltZXZhbCB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAg
ICBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwoKc3RydWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQg
dHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6X2RzdHRpbWU7Cn07CgoKCgpleHRlcm4gdm9p
ZCBkb19nZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZvaWQgZG9fc2V0
dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CmV4dGVybiB2b2lkIGdldF9mYXN0X3RpbWUo
c3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZvaWQgKCpkb19nZXRfZmFzdF90aW1lKShzdHJ1
Y3QgdGltZXZhbCAqKTsKIyAxMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC90aW1lLmgiCnN0cnVjdCBpdGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGlt
ZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwoK
c3RydWN0IGl0aW1lcnZhbCB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAg
ICAgICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07CiMgOCAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAyCiMgMTcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIKc3RydWN0
IGFmZnNfZXh0X2tleSB7CiAgICAgICAgdTMyIGV4dDsKICAgICAgICB1MzIga2V5Owp9OwoKCgoK
c3RydWN0IGFmZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdTMyIGlfb3BlbmNudDsKICAgICAgICBz
dHJ1Y3Qgc2VtYXBob3JlIGlfbGlua19sb2NrOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9l
eHRfbG9jazsKCiAgICAgICAgdTMyIGlfYmxrY250OwogICAgICAgIHUzMiBpX2V4dGNudDsKICAg
ICAgICB1MzIgKmlfbGM7CiAgICAgICAgdTMyIGlfbGNfc2l6ZTsKICAgICAgICB1MzIgaV9sY19z
aGlmdDsKICAgICAgICB1MzIgaV9sY19tYXNrOwogICAgICAgIHN0cnVjdCBhZmZzX2V4dF9rZXkg
KmlfYWM7CiAgICAgICAgdTMyIGlfZXh0X2xhc3Q7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFk
ICppX2V4dF9iaDsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHUz
MiBpX3Byb3RlY3Q7CiAgICAgICAgdTMyIGlfbGFzdGFsbG9jOwogICAgICAgIGludCBpX3BhX2Nu
dDsKIyA1MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2Fm
ZnNfZnNfaS5oIgp9OwojIDI5OCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIKc3RydWN0IHVmc19pbm9kZV9pbmZvIHsK
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAg
ICAgICAgICAgX191OCBpX3N5bWxpbmtbNCoxNV07CiAgICAgICAgfSBpX3UxOwogICAgICAgIF9f
dTY0IGlfc2l6ZTsKICAgICAgICBfX3UzMiBpX2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZ2VuOwog
ICAgICAgIF9fdTMyIGlfc2hhZG93OwogICAgICAgIF9fdTMyIGlfdW51c2VkMTsKICAgICAgICBf
X3UzMiBpX3VudXNlZDI7CiAgICAgICAgX191MzIgaV9vZWZ0ZmxhZzsKICAgICAgICBfX3UxNiBp
X29zeW5jOwogICAgICAgIF9fdTMyIGlfbGFzdGZyYWc7Cn07CiMgMjk5ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIiAxCiMgMTIgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIgp0
eXBlZGVmIGludDMyX3QgZWZzX2Jsb2NrX3Q7CnR5cGVkZWYgdWludDMyX3QgZWZzX2lub190OwoK
CgoKCgp0eXBlZGVmIHVuaW9uIGV4dGVudF91IHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJhd1s4
XTsKICAgICAgICBzdHJ1Y3QgZXh0ZW50X3MgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGV4X21hZ2ljOjg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfYm46MjQ7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbGVuZ3RoOjg7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgZXhfb2Zmc2V0OjI0OwogICAgICAgIH0gY29va2VkOwp9IGVmc19leHRlbnQ7Cgp0
eXBlZGVmIHN0cnVjdCBlZGV2cyB7CiAgICAgICAgc2hvcnQgb2RldjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbmRldjsKfSBlZnNfZGV2czsKCgoKCgpzdHJ1Y3QgZWZzX2Rpbm9kZSB7CiAgICAgICAg
dV9zaG9ydCBkaV9tb2RlOwogICAgICAgIHNob3J0IGRpX25saW5rOwogICAgICAgIHVfc2hvcnQg
ZGlfdWlkOwogICAgICAgIHVfc2hvcnQgZGlfZ2lkOwogICAgICAgIGludDMyX3QgZGlfc2l6ZTsK
ICAgICAgICBpbnQzMl90IGRpX2F0aW1lOwogICAgICAgIGludDMyX3QgZGlfbXRpbWU7CiAgICAg
ICAgaW50MzJfdCBkaV9jdGltZTsKICAgICAgICB1aW50MzJfdCBkaV9nZW47CiAgICAgICAgc2hv
cnQgZGlfbnVtZXh0ZW50czsKICAgICAgICB1X2NoYXIgZGlfdmVyc2lvbjsKICAgICAgICB1X2No
YXIgZGlfc3BhcmU7CiAgICAgICAgdW5pb24gZGlfYWRkciB7CiAgICAgICAgICAgICAgICBlZnNf
ZXh0ZW50IGRpX2V4dGVudHNbMTJdOwogICAgICAgICAgICAgICAgZWZzX2RldnMgZGlfZGV2Owog
ICAgICAgIH0gZGlfdTsKfTsKCgpzdHJ1Y3QgZWZzX2lub2RlX2luZm8gewogICAgICAgIGludCBu
dW1leHRlbnRzOwogICAgICAgIGludCBsYXN0ZXh0ZW50OwoKICAgICAgICBlZnNfZXh0ZW50IGV4
dGVudHNbMTJdOwp9OwojIDMwMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAx
NCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvZGFfZnNf
aS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L2NvZGEuaCIgMQojIDEwOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L2NvZGEuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9xdWFkX3Q7CiMgMTY0
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29kYS5oIgpz
dHJ1Y3QgdmVudXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBl
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1
ICsgMV07Cn07CiMgMTk4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvY29kYS5oIgp0eXBlZGVmIHVfbG9uZyBWb2x1bWVJZDsKdHlwZWRlZiB1X2xvbmcgVm5v
ZGVJZDsKdHlwZWRlZiB1X2xvbmcgVW5pcXVlX3Q7CnR5cGVkZWYgdV9sb25nIEZpbGVWZXJzaW9u
OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgVmljZUZpZCB7CiAgICBWb2x1bWVJZCBWb2x1bWU7CiAgICBW
bm9kZUlkIFZub2RlOwogICAgVW5pcXVlX3QgVW5pcXVlOwp9IFZpY2VGaWQ7CgoKCgpzdGF0aWMg
X19pbmxpbmVfXyBpbm9fdCBjb2RhX2YyaShzdHJ1Y3QgVmljZUZpZCAqZmlkKQp7CiAgICAgICAg
aWYgKCAhIGZpZCApCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBpZiAoZmlkLT5W
bm9kZSA9PSAweGZmZmZmZmZlIHx8IGZpZC0+Vm5vZGUgPT0gMHhmZmZmZmZmZikKICAgICAgICAg
ICAgICAgIHJldHVybiAoKGZpZC0+Vm9sdW1lIDw8IDIwKSB8IChmaWQtPlVuaXF1ZSAmIDB4ZmZm
ZmYpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gKGZpZC0+VW5pcXVlICsg
KGZpZC0+Vm5vZGU8PDEwKSArIChmaWQtPlZvbHVtZTw8MjApKTsKfQojIDIzMyAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKdHlwZWRlZiB1X2lu
dDMyX3QgdnVpZF90Owp0eXBlZGVmIHVfaW50MzJfdCB2Z2lkX3Q7CgoKCgpzdHJ1Y3QgY29kYV9j
cmVkIHsKICAgIHZ1aWRfdCBjcl91aWQsIGNyX2V1aWQsIGNyX3N1aWQsIGNyX2ZzdWlkOwogICAg
dmdpZF90IGNyX2dyb3VwaWQsIGNyX2VnaWQsIGNyX3NnaWQsIGNyX2ZzZ2lkOwp9OwoKCgoKCgoK
ZW51bSBjb2RhX3Z0eXBlIHsgQ19WTk9OLCBDX1ZSRUcsIENfVkRJUiwgQ19WQkxLLCBDX1ZDSFIs
IENfVkxOSywgQ19WU09DSywgQ19WRklGTywgQ19WQkFEIH07CgpzdHJ1Y3QgY29kYV92YXR0ciB7
CiAgICAgICAgbG9uZyB2YV90eXBlOwogICAgICAgIHVfc2hvcnQgdmFfbW9kZTsKICAgICAgICBz
aG9ydCB2YV9ubGluazsKICAgICAgICB2dWlkX3QgdmFfdWlkOwogICAgICAgIHZnaWRfdCB2YV9n
aWQ7CiAgICAgICAgbG9uZyB2YV9maWxlaWQ7CiAgICAgICAgdV9xdWFkX3QgdmFfc2l6ZTsKICAg
ICAgICBsb25nIHZhX2Jsb2Nrc2l6ZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfYXRpbWU7
CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX210aW1lOwogICAgICAgIHN0cnVjdCB0aW1lc3Bl
YyB2YV9jdGltZTsKICAgICAgICB1X2xvbmcgdmFfZ2VuOwogICAgICAgIHVfbG9uZyB2YV9mbGFn
czsKICAgICAgICB1X3F1YWRfdCB2YV9yZGV2OwogICAgICAgIHVfcXVhZF90IHZhX2J5dGVzOwog
ICAgICAgIHVfcXVhZF90IHZhX2ZpbGVyZXY7Cn07CgoKCgpzdHJ1Y3QgY29kYV9zdGF0ZnMgewog
ICAgaW50MzJfdCBmX2Jsb2NrczsKICAgIGludDMyX3QgZl9iZnJlZTsKICAgIGludDMyX3QgZl9i
YXZhaWw7CiAgICBpbnQzMl90IGZfZmlsZXM7CiAgICBpbnQzMl90IGZfZmZyZWU7Cn07CiMgMzM3
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29kYS5oIgpz
dHJ1Y3QgY29kYV9pbl9oZHIgewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25l
ZCBsb25nIHVuaXF1ZTsKICAgIHVfc2hvcnQgcGlkOwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9z
aG9ydCBzaWQ7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0
X2hkciB7CiAgICB1bnNpZ25lZCBsb25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVl
OwogICAgdW5zaWduZWQgbG9uZyByZXN1bHQ7Cn07CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBj
b2RhX3Jvb3RfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2Rh
X29wZW5faW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwog
ICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFf
b3V0X2hkciBvaDsKICAgIHVfcXVhZF90IGRldjsKICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1
Y3QgY29kYV9zdG9yZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk
IFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9zdG9yZV9vdXQgewogICAgc3Ry
dWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfcmVsZWFzZV9pbiB7CiAgICBz
dHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07
CgpzdHJ1Y3QgY29kYV9yZWxlYXNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsK
fTsKCgpzdHJ1Y3QgY29kYV9jbG9zZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAg
ICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQg
ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4g
ewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNt
ZDsKICAgIGludCBsZW47CiAgICBpbnQgcndmbGFnOwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVj
dCBjb2RhX2lvY3RsX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxl
bjsKICAgIGNhZGRyX3QgZGF0YTsKfTsKCgoKc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBz
dHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9n
ZXRhdHRyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFf
dmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfc2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29k
YV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRy
Owp9OwoKc3RydWN0IGNvZGFfc2V0YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBv
dXQ7Cn07CgoKc3RydWN0IGNvZGFfYWNjZXNzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBp
aDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vz
c19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29k
YV9sb29rdXBfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlk
OwogICAgaW50IG5hbWU7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQg
dnR5cGU7Cn07CgoKCnN0cnVjdCBjb2RhX2NyZWF0ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9o
ZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAg
aW50IGV4Y2w7CiAgICBpbnQgbW9kZTsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3Jl
YXRlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwog
ICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsK
ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1l
Owp9OwoKc3RydWN0IGNvZGFfcmVtb3ZlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91
dDsKfTsKCgpzdHJ1Y3QgY29kYV9saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsK
ICAgIFZpY2VGaWQgc291cmNlRmlkOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1l
Owp9OwoKc3RydWN0IGNvZGFfbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7
Cn07CgoKCnN0cnVjdCBjb2RhX3JlbmFtZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7
CiAgICBWaWNlRmlkIHNvdXJjZUZpZDsKICAgIGludCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0
RmlkOwogICAgaW50IGRlc3RuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBz
dHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92
YXR0ciBhdHRyOwogICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAg
c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2Rh
X3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2Rh
X2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNv
ZGFfcm1kaXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBj
b2RhX3N5bWxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBW
RmlkOwogICAgaW50IHNyY25hbWU7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50
IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfc3ltbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfcmVhZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90
IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2ZzeW5jX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hk
ciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0
cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3Zn
ZXRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAg
ICBpbnQgdnR5cGU7Cn07CiMgNjE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKCnN0cnVj
dCBjb2RhX3phcGZpbGVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNl
RmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcGRpcl9vdXQgewogICAgc3RydWN0IGNv
ZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfemFw
dm5vZGVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9j
cmVkIGNyZWQ7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3B1cmdlZmlkX291
dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoK
CgpzdHJ1Y3QgY29kYV9yZXBsYWNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwog
ICAgVmljZUZpZCBOZXdGaWQ7CiAgICBWaWNlRmlkIE9sZEZpZDsKfTsKCgpzdHJ1Y3QgY29kYV9v
cGVuX2J5X2ZkX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZp
ZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgZmQ7CgoKICAgIHN0cnVjdCBmaWxlICpmaDsK
Cn07CgoKc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hk
ciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29w
ZW5fYnlfcGF0aF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgICAgICBpbnQg
cGF0aDsKfTsKCgpzdHJ1Y3QgY29kYV9zdGF0ZnNfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRy
IGluOwp9OwoKc3RydWN0IGNvZGFfc3RhdGZzX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRy
IG9oOwogICAgc3RydWN0IGNvZGFfc3RhdGZzIHN0YXQ7Cn07CiMgNzAzICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29kYS5oIgp1bmlvbiBpbnB1dEFyZ3Mg
ewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgc3RydWN0IGNvZGFfb3Blbl9pbiBjb2Rh
X29wZW47CiAgICBzdHJ1Y3QgY29kYV9zdG9yZV9pbiBjb2RhX3N0b3JlOwogICAgc3RydWN0IGNv
ZGFfcmVsZWFzZV9pbiBjb2RhX3JlbGVhc2U7CiAgICBzdHJ1Y3QgY29kYV9jbG9zZV9pbiBjb2Rh
X2Nsb3NlOwogICAgc3RydWN0IGNvZGFfaW9jdGxfaW4gY29kYV9pb2N0bDsKICAgIHN0cnVjdCBj
b2RhX2dldGF0dHJfaW4gY29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFfc2V0YXR0cl9pbiBj
b2RhX3NldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9hY2Nlc3NfaW4gY29kYV9hY2Nlc3M7CiAgICBz
dHJ1Y3QgY29kYV9sb29rdXBfaW4gY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29kYV9jcmVhdGVf
aW4gY29kYV9jcmVhdGU7CiAgICBzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gY29kYV9yZW1vdmU7CiAg
ICBzdHJ1Y3QgY29kYV9saW5rX2luIGNvZGFfbGluazsKICAgIHN0cnVjdCBjb2RhX3JlbmFtZV9p
biBjb2RhX3JlbmFtZTsKICAgIHN0cnVjdCBjb2RhX21rZGlyX2luIGNvZGFfbWtkaXI7CiAgICBz
dHJ1Y3QgY29kYV9ybWRpcl9pbiBjb2RhX3JtZGlyOwogICAgc3RydWN0IGNvZGFfc3ltbGlua19p
biBjb2RhX3N5bWxpbms7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19pbiBjb2RhX3JlYWRsaW5r
OwogICAgc3RydWN0IGNvZGFfZnN5bmNfaW4gY29kYV9mc3luYzsKICAgIHN0cnVjdCBjb2RhX3Zn
ZXRfaW4gY29kYV92Z2V0OwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiBjb2RhX29wZW5f
YnlfZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gY29kYV9vcGVuX2J5X3BhdGg7
CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnNfaW4gY29kYV9zdGF0ZnM7Cn07Cgp1bmlvbiBvdXRwdXRB
cmdzIHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9yb290X291
dCBjb2RhX3Jvb3Q7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX291dCBjb2RhX29wZW47CiAgICBzdHJ1
Y3QgY29kYV9pb2N0bF9vdXQgY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dldGF0dHJfb3V0
IGNvZGFfZ2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgY29kYV9sb29rdXA7CiAg
ICBzdHJ1Y3QgY29kYV9jcmVhdGVfb3V0IGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfbWtk
aXJfb3V0IGNvZGFfbWtkaXI7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19vdXQgY29kYV9yZWFk
bGluazsKICAgIHN0cnVjdCBjb2RhX3ZnZXRfb3V0IGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2Rh
X3B1cmdldXNlcl9vdXQgY29kYV9wdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291
dCBjb2RhX3phcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IGNvZGFfemFwZGlyOwog
ICAgc3RydWN0IGNvZGFfemFwdm5vZGVfb3V0IGNvZGFfemFwdm5vZGU7CiAgICBzdHJ1Y3QgY29k
YV9wdXJnZWZpZF9vdXQgY29kYV9wdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0
IGNvZGFfcmVwbGFjZTsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IGNvZGFfb3Blbl9i
eV9mZDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQgY29kYV9vcGVuX2J5X3BhdGg7
CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0IGNvZGFfc3RhdGZzOwp9OwoKdW5pb24gY29kYV9k
b3duY2FsbHMgewoKCiAgICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHB1cmdldXNlcjsKICAg
IHN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IHphcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJf
b3V0IHphcGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCB6YXB2bm9kZTsKICAgIHN0
cnVjdCBjb2RhX3B1cmdlZmlkX291dCBwdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vf
b3V0IHJlcGxhY2U7Cn07CgoKCgoKCgpzdHJ1Y3QgVmljZUlvY3RsIHsKICAgICAgICBjYWRkcl90
IGluLCBvdXQ7CiAgICAgICAgc2hvcnQgaW5fc2l6ZTsKICAgICAgICBzaG9ydCBvdXRfc2l6ZTsK
fTsKCnN0cnVjdCBQaW9jdGxEYXRhIHsKICAgICAgICBjb25zdCBjaGFyICpwYXRoOwogICAgICAg
IGludCBmb2xsb3c7CiAgICAgICAgc3RydWN0IFZpY2VJb2N0bCB2aTsKfTsKIyA3OTcgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBj
b2RhX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIGludCBmZDsKfTsK
IyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvZGFf
ZnNfaS5oIiAyCgoKCgpzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgVmlj
ZUZpZCBjX2ZpZDsKICAgICAgICB1X3Nob3J0IGNfZmxhZ3M7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBjX2NpbGlzdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqY19jb250YWluZXI7CiAgICAgICAg
dW5zaWduZWQgaW50IGNfY29udGNvdW50OwogICAgICAgIHN0cnVjdCBjb2RhX2NyZWQgY19jYWNo
ZWRfY3JlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgY19jYWNoZWRfcGVybTsKfTsKCgoKCgoKCmlu
dCBjb2RhX2Nub2RlX21ha2Uoc3RydWN0IGlub2RlICoqLCBzdHJ1Y3QgVmljZUZpZCAqLCBzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKik7CmludCBjb2RhX2Nub2RlX21ha2VjdGwoc3RydWN0IGlub2RlICoq
aW5vZGUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpzdHJ1Y3QgaW5vZGUgKmNvZGFfZmlkX3Rv
X2lub2RlKFZpY2VGaWQgKmZpZCwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnZvaWQgY29kYV9y
ZXBsYWNlX2ZpZChzdHJ1Y3QgaW5vZGUgKiwgVmljZUZpZCAqLCBWaWNlRmlkICopOwojIDMwMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcm9tZnNfZnNf
aS5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxv
bmcgaV9tZXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZGF0YW9mZnNldDsKfTsKIyAz
MDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NobWVt
X2ZzLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L3NobWVtX2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHZh
bDsKfSBzd3BfZW50cnlfdDsKCmV4dGVybiBhdG9taWNfdCBzaG1lbV9ucnBhZ2VzOwoKc3RydWN0
IHNobWVtX2lub2RlX2luZm8gewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB1bnNpZ25lZCBsb25nIG5leHRfaW5kZXg7CiAgICAg
ICAgc3dwX2VudHJ5X3QgaV9kaXJlY3RbMTZdOwogICAgICAgIHZvaWQgKippX2luZGlyZWN0Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAgICBpbnQgbG9ja2VkOwogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwp9OwoK
c3RydWN0IHNobWVtX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4X2Jsb2NrczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
bWF4X2lub2RlczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfaW5vZGVzOwogICAgICAgIHNw
aW5sb2NrX3Qgc3RhdF9sb2NrOwp9OwojIDMwMyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvc21iX2ZzX2kuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc21iX2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE0ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc21iX2ZzX2kuaCIgMgoK
CgoKc3RydWN0IHNtYl9pbm9kZV9pbmZvIHsKCgoKCgogICAgICAgIHVuc2lnbmVkIGludCBvcGVu
OwogICAgICAgIF9fdTE2IGZpbGVpZDsKICAgICAgICBfX3UxNiBhdHRyOwoKICAgICAgICBfX3Ux
NiBhY2Nlc3M7CiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBvbGRt
dGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNsb3NlZDsKICAgICAgICB1bnNpZ25lZCBvcGVu
ZXJzOwp9OwojIDMwNCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvaGZzX2ZzX2kuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvaGZzX2ZzX2kuaCIKc3RydWN0IGhmc19pbm9kZV9pbmZvIHsKICAgICAg
ICBpbnQgbWFnaWM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAg
c3RydWN0IGhmc19jYXRfZW50cnkgKmVudHJ5OwoKCiAgICAgICAgc3RydWN0IGhmc19mb3JrICpm
b3JrOwogICAgICAgIGludCBjb252ZXJ0OwoKCiAgICAgICAgaW5vX3QgZmlsZV90eXBlOwogICAg
ICAgIGNoYXIgZGlyX3NpemU7CgoKICAgICAgICBjb25zdCBzdHJ1Y3QgaGZzX2hkcl9sYXlvdXQg
KmRlZmF1bHRfbGF5b3V0OwogICAgICAgIHN0cnVjdCBoZnNfaGRyX2xheW91dCAqbGF5b3V0OwoK
CiAgICAgICAgaW50IHR6X3NlY29uZHN3ZXN0OwoKCiAgICAgICAgdm9pZCAoKmRfZHJvcF9vcCko
c3RydWN0IGRlbnRyeSAqLCBjb25zdCBpbm9fdCk7Cn07CiMgMzA1ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9hZGZzX2ZzX2kuaCIgMQojIDEzICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvYWRmc19mc19pLmgiCnN0
cnVjdCBhZGZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYXJlbnRfaWQ7CiAgICAgICAgX191MzIgbG9hZGFkZHI7
CiAgICAgICAgX191MzIgZXhlY2FkZHI7CiAgICAgICAgdW5zaWduZWQgaW50IGZpbGV0eXBlOwog
ICAgICAgIHVuc2lnbmVkIGludCBhdHRyOwogICAgICAgIGludCBzdGFtcGVkOjE7Cn07CiMgMzA2
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9xbng0X2Zz
X2kuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvcW54NF9mc19pLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3FueHR5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L3FueHR5cGVzLmgiCnR5cGVkZWYgX191MTYgcW54NF9ueHRudF90
Owp0eXBlZGVmIF9fdTggcW54NF9mdHlwZV90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIF9f
dTMyIHh0bnRfYmxrOwogICAgICAgIF9fdTMyIHh0bnRfc2l6ZTsKfSBxbng0X3h0bnRfdDsKCnR5
cGVkZWYgX191MTYgcW54NF9tb2RlX3Q7CnR5cGVkZWYgX191MTYgcW54NF9tdWlkX3Q7CnR5cGVk
ZWYgX191MTYgcW54NF9tZ2lkX3Q7CnR5cGVkZWYgX191MzIgcW54NF9vZmZfdDsKdHlwZWRlZiBf
X3UxNiBxbng0X25saW5rX3Q7CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9xbng0X2ZzX2kuaCIgMgoKCgoKc3RydWN0IHFueDRfaW5vZGVfaW5mbyB7
CiAgICAgICAgY2hhciBpX3Jlc2VydmVkWzE2XTsKICAgICAgICBxbng0X29mZl90IGlfc2l6ZTsK
ICAgICAgICBxbng0X3h0bnRfdCBpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgaV94YmxrOwog
ICAgICAgIF9fczMyIGlfZnRpbWU7CiAgICAgICAgX19zMzIgaV9tdGltZTsKICAgICAgICBfX3Mz
MiBpX2F0aW1lOwogICAgICAgIF9fczMyIGlfY3RpbWU7CiAgICAgICAgcW54NF9ueHRudF90IGlf
bnVtX3h0bnRzOwogICAgICAgIHFueDRfbW9kZV90IGlfbW9kZTsKICAgICAgICBxbng0X211aWRf
dCBpX3VpZDsKICAgICAgICBxbng0X21naWRfdCBpX2dpZDsKICAgICAgICBxbng0X25saW5rX3Qg
aV9ubGluazsKICAgICAgICBfX3U4IGlfemVyb1s0XTsKICAgICAgICBxbng0X2Z0eXBlX3QgaV90
eXBlOwogICAgICAgIF9fdTggaV9zdGF0dXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJp
dmF0ZTsKfTsKIyAzMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L3JlaXNlcmZzX2ZzX2kuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIiAyCgpzdHJ1Y3QgcmVp
c2VyZnNfaW5vZGVfaW5mbyB7CiAgX191MzIgaV9rZXkgWzRdOwoKCgoKCgogIGludCBpX3ZlcnNp
b247CgogIGludCBpX3BhY2tfb25fY2xvc2UgOwoKICBfX3UzMiBpX2ZpcnN0X2RpcmVjdF9ieXRl
OwojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcmVp
c2VyZnNfZnNfaS5oIgogIGludCBpX3ByZWFsbG9jX2Jsb2NrOwogIGludCBpX3ByZWFsbG9jX2Nv
dW50OwogIHN0cnVjdCBsaXN0X2hlYWQgaV9wcmVhbGxvY19saXN0OwoKCgoKICBpbnQgbm9wYWNr
OwoKCgoKICB1bnNpZ25lZCBsb25nIGlfdHJhbnNfaWQgOwogIHVuc2lnbmVkIGxvbmcgaV90cmFu
c19pbmRleCA7Cn07CiMgMzA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9iZnNfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIgpzdHJ1Y3QgYmZzX2lub2RlX2luZm8gewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kc2tfaW5vOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9z
YmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2VibG9jazsKfTsKIyAzMDkgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDEKIyAy
NCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3VkZl9mc19p
LmgiCnR5cGVkZWYgc3RydWN0CnsKICAgICAgICBfX3UzMiBsb2dpY2FsQmxvY2tOdW07CiAgICAg
ICAgX191MTYgcGFydGl0aW9uUmVmZXJlbmNlTnVtOwp9IGxiX2FkZHI7CgoKc3RydWN0IHVkZl9p
bm9kZV9pbmZvCnsKICAgICAgICBsb25nIGlfdW10aW1lOwogICAgICAgIGxvbmcgaV91Y3RpbWU7
CiAgICAgICAgbG9uZyBpX2NydGltZTsKICAgICAgICBsb25nIGlfdWNydGltZTsKCiAgICAgICAg
bGJfYWRkciBpX2xvY2F0aW9uOwogICAgICAgIF9fdTY0IGlfdW5pcXVlOwogICAgICAgIF9fdTMy
IGlfbGVuRUF0dHI7CiAgICAgICAgX191MzIgaV9sZW5BbGxvYzsKICAgICAgICBfX3U2NCBpX2xl
bkV4dGVudHM7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMy
IGlfbmV4dF9hbGxvY19nb2FsOwogICAgICAgIHVuc2lnbmVkIGlfYWxsb2NfdHlwZSA6IDM7CiAg
ICAgICAgdW5zaWduZWQgaV9leHRlbmRlZF9mZSA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9zdHJh
dF80MDk2IDogMTsKICAgICAgICB1bnNpZ25lZCBpX25ld19pbm9kZSA6IDE7CiAgICAgICAgdW5z
aWduZWQgcmVzZXJ2ZWQgOiAyNjsKfTsKIyAzMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L25jcF9mc19pLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25jcF9mc19pLmgiCnN0cnVjdCBuY3BfaW5v
ZGVfaW5mbyB7CiAgICAgICAgX191MzIgZGlyRW50TnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTMyIERvc0Rpck51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3UzMiB2b2xOdW1iZXIgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg
bndhdHRyOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgb3Blbl9zZW07CiAgICAgICAgYXRvbWlj
X3Qgb3BlbmVkOwogICAgICAgIGludCBhY2Nlc3M7CiAgICAgICAgX191MzIgc2VydmVyX2ZpbGVf
aGFuZGxlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggb3Blbl9jcmVhdGVf
YWN0aW9uIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZmlsZV9oYW5kbGVb
Nl0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMgMzExICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9wcm9jX2ZzX2kuaCIgMQpzdHJ1Y3QgcHJvY19p
bm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CiAgICAgICAgaW50
IHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgaW50ICgqcHJvY19nZXRfbGlu
aykoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiosIHN0cnVjdCB2ZnNtb3VudCAqKik7
CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX3JlYWQpKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFz
aywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBvcDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsK
fTsKIyAzMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L3VzYmRldl9mc19pLmgiIDEKc3RydWN0IHVzYl9kZXZpY2U7CnN0cnVjdCB1c2JfYnVzOwoKc3Ry
dWN0IHVzYmRldl9pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRsaXN0Owog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgc3RydWN0IHVzYl9kZXZpY2UgKmRldjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2Jf
YnVzICpidXM7CiAgICAgICAgfSBwOwp9OwojIDMxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvamZmczJfZnNfaS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9qZmZzMl9mc19pLmgiCnN0cnVjdCBq
ZmZzMl9pbm9kZV9pbmZvIHsKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsK
CgogICAgICAgIF9fdTMyIGhpZ2hlc3RfdmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9u
b2RlX2ZyYWcgKmZyYWdsaXN0OwoKCgoKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2Rl
ICptZXRhZGF0YTsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoK
ICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAg
X191MTYgZmxhZ3M7CiAgICAgICAgX191OCB1c2VyY29tcHI7Cn07CiMgMzE0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jcmFtZnNfZnNfc2IuaCIgMQoK
CgoKCgpzdHJ1Y3QgY3JhbWZzX3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIG1hZ2ljOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNp
emU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmxvY2tzOwogICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZpbGVzOwogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwp9OwojIDMxNSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAzNDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgaWF0dHIgewogICAgICAg
IHVuc2lnbmVkIGludCBpYV92YWxpZDsKICAgICAgICB1bW9kZV90IGlhX21vZGU7CiAgICAgICAg
dWlkX3QgaWFfdWlkOwogICAgICAgIGdpZF90IGlhX2dpZDsKICAgICAgICBsb2ZmX3QgaWFfc2l6
ZTsKICAgICAgICB0aW1lX3QgaWFfYXRpbWU7CiAgICAgICAgdGltZV90IGlhX210aW1lOwogICAg
ICAgIHRpbWVfdCBpYV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfYXR0cl9mbGFnczsK
fTsKIyAzNjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9m
cy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9x
dW90YS5oIiAxCiMgNDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9xdW90YS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9lcnJuby5oIiAxCiMgNDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9xdW90YS5oIiAyCiMgMTA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvcXVvdGEuaCIKc3RydWN0IGRxYmxrIHsKICAgICAgICBfX3Uz
MiBkcWJfYmhhcmRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfYnNvZnRsaW1pdDsKICAgICAgICBf
X3UzMiBkcWJfY3VyYmxvY2tzOwogICAgICAgIF9fdTMyIGRxYl9paGFyZGxpbWl0OwogICAgICAg
IF9fdTMyIGRxYl9pc29mdGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9jdXJpbm9kZXM7CiAgICAg
ICAgdGltZV90IGRxYl9idGltZTsKICAgICAgICB0aW1lX3QgZHFiX2l0aW1lOwp9OwojIDEzNCAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0
cnVjdCBkcXN0YXRzIHsKICAgICAgICBfX3UzMiBsb29rdXBzOwogICAgICAgIF9fdTMyIGRyb3Bz
OwogICAgICAgIF9fdTMyIHJlYWRzOwogICAgICAgIF9fdTMyIHdyaXRlczsKICAgICAgICBfX3Uz
MiBjYWNoZV9oaXRzOwogICAgICAgIF9fdTMyIGFsbG9jYXRlZF9kcXVvdHM7CiAgICAgICAgX191
MzIgZnJlZV9kcXVvdHM7CiAgICAgICAgX191MzIgc3luY3M7Cn07CgoKCmV4dGVybiBpbnQgbnJf
ZHF1b3RzLCBucl9mcmVlX2RxdW90czsKZXh0ZXJuIGludCBkcXVvdF9yb290X3NxdWFzaDsKIyAx
NTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9xdW90YS5o
IgpzdHJ1Y3QgZHF1b3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHFfaGFzaDsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ludXNlOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHFf
ZnJlZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0X2xvY2s7CiAgICAgICAgd2Fp
dF9xdWV1ZV9oZWFkX3QgZHFfd2FpdF9mcmVlOwogICAgICAgIGludCBkcV9jb3VudDsKCgogICAg
ICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7CiAgICAgICAgdW5zaWduZWQgaW50IGRxX2lk
OwogICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAgICAgc2hvcnQgZHFfdHlwZTsKICAgICAgICBz
aG9ydCBkcV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRxX3JlZmVyZW5jZWQ7CgogICAg
ICAgIHN0cnVjdCBkcWJsayBkcV9kcWI7Cn07CiMgMzY2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9tb3VudC5oIiAxCiMgMzY3ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCgoKc3RydWN0IHBhZ2U7
CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qga2lvYnVmOwoKc3RydWN0IGFkZHJlc3Nfc3Bh
Y2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqd3JpdGVwYWdlKShzdHJ1Y3QgcGFnZSAqKTsK
ICAgICAgICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7CiAg
ICAgICAgaW50ICgqc3luY19wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKICAgICAgICBpbnQgKCpwcmVw
YXJlX3dyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwgdW5zaWdu
ZWQpOwogICAgICAgIGludCAoKmNvbW1pdF93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBh
Z2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKCiAgICAgICAgaW50ICgqYm1hcCkoc3RydWN0IGFk
ZHJlc3Nfc3BhY2UgKiwgbG9uZyk7CgogICAgICAgIGludCAoKmRpcmVjdF9JTykoaW50LCBzdHJ1
Y3QgaW5vZGUgKiwgc3RydWN0IGtpb2J1ZiAqLCB1bnNpZ25lZCBsb25nLCBpbnQpOwp9OwoKc3Ry
dWN0IGFkZHJlc3Nfc3BhY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fcGFnZXM7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eV9wYWdlczsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIGxvY2tlZF9wYWdlczsKICAgICAgICB1bnNpZ25lZCBsb25nIG5ycGFnZXM7CiAgICAg
ICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyAqYV9vcHM7CiAgICAgICAgc3RydWN0
IGlub2RlICpob3N0OwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9tbWFwOwogICAg
ICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9tbWFwX3NoYXJlZDsKICAgICAgICBzcGlubG9j
a190IGlfc2hhcmVkX2xvY2s7CiAgICAgICAgaW50IGdmcF9tYXNrOwp9OwoKc3RydWN0IGNoYXJf
ZGV2aWNlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGhhc2g7CiAgICAgICAgYXRvbWljX3Qg
Y291bnQ7CiAgICAgICAgZGV2X3QgZGV2OwogICAgICAgIGF0b21pY190IG9wZW5lcnM7CiAgICAg
ICAgc3RydWN0IHNlbWFwaG9yZSBzZW07Cn07CgpzdHJ1Y3QgYmxvY2tfZGV2aWNlIHsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2hhc2g7CiAgICAgICAgYXRvbWljX3QgYmRfY291bnQ7CiAg
ICAgICAgc3RydWN0IGlub2RlICogYmRfaW5vZGU7CiAgICAgICAgZGV2X3QgYmRfZGV2OwogICAg
ICAgIGludCBiZF9vcGVuZXJzOwogICAgICAgIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3Bl
cmF0aW9ucyAqYmRfb3A7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBiZF9zZW07CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBiZF9pbm9kZXM7Cn07CgpzdHJ1Y3QgaW5vZGUgewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgaV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9saXN0Owog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZW50cnk7CgogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgaV9kaXJ0eV9idWZmZXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kaXJ0eV9kYXRh
X2J1ZmZlcnM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9pbm87CiAgICAgICAgYXRvbWljX3Qg
aV9jb3VudDsKICAgICAgICBrZGV2X3QgaV9kZXY7CiAgICAgICAgdW1vZGVfdCBpX21vZGU7CiAg
ICAgICAgbmxpbmtfdCBpX25saW5rOwogICAgICAgIHVpZF90IGlfdWlkOwogICAgICAgIGdpZF90
IGlfZ2lkOwogICAgICAgIGtkZXZfdCBpX3JkZXY7CiAgICAgICAgbG9mZl90IGlfc2l6ZTsKICAg
ICAgICB0aW1lX3QgaV9hdGltZTsKICAgICAgICB0aW1lX3QgaV9tdGltZTsKICAgICAgICB0aW1l
X3QgaV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9ibGtiaXRzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgaV9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9ibG9ja3M7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBpX3ZlcnNpb247CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX3Nl
bTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfem9tYmllOwogICAgICAgIHN0cnVjdCBpbm9k
ZV9vcGVyYXRpb25zICppX29wOwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmlfZm9w
OwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqaV9zYjsKICAgICAgICB3YWl0X3F1ZXVlX2hl
YWRfdCBpX3dhaXQ7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqaV9mbG9jazsKICAgICAgICBz
dHJ1Y3QgYWRkcmVzc19zcGFjZSAqaV9tYXBwaW5nOwogICAgICAgIHN0cnVjdCBhZGRyZXNzX3Nw
YWNlIGlfZGF0YTsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKmlfZHF1b3RbMl07CgogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgaV9kZXZpY2VzOwogICAgICAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8g
KmlfcGlwZTsKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICppX2JkZXY7CiAgICAgICAgc3Ry
dWN0IGNoYXJfZGV2aWNlICppX2NkZXY7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kbm90aWZ5
X21hc2s7CiAgICAgICAgc3RydWN0IGRub3RpZnlfc3RydWN0ICppX2Rub3RpZnk7CgogICAgICAg
IHVuc2lnbmVkIGxvbmcgaV9zdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGlfZmxhZ3M7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBpX3NvY2s7CgogICAgICAgIGF0b21pY190IGlfd3JpdGVjb3Vu
dDsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9hdHRyX2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZ2Vu
ZXJhdGlvbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhfaW5v
ZGVfaW5mbyBtaW5peF9pOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfaW5vZGVfaW5mbyBl
eHQyX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaHBmc19pbm9kZV9pbmZvIGhwZnNfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gbnRmc19pOwogICAgICAgICAgICAg
ICAgc3RydWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0cnVj
dCB1bXNkb3NfaW5vZGVfaW5mbyB1bXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBpc29f
aW5vZGVfaW5mbyBpc29mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IG5mc19pbm9kZV9pbmZv
IG5mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3ZfaW5vZGVfaW5mbyBzeXN2X2k7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgYWZmc19pbm9kZV9pbmZvIGFmZnNfaTsKICAgICAgICAgICAg
ICAgIHN0cnVjdCB1ZnNfaW5vZGVfaW5mbyB1ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBl
ZnNfaW5vZGVfaW5mbyBlZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCByb21mc19pbm9kZV9p
bmZvIHJvbWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyBzaG1l
bV9pOwogICAgICAgICAgICAgICAgc3RydWN0IGNvZGFfaW5vZGVfaW5mbyBjb2RhX2k7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc21iX2lub2RlX2luZm8gc21iZnNfaTsKICAgICAgICAgICAgICAg
IHN0cnVjdCBoZnNfaW5vZGVfaW5mbyBoZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZz
X2lub2RlX2luZm8gYWRmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfaW5m
byBxbng0X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVpc2VyZnNfaW5vZGVfaW5mbyByZWlz
ZXJmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGJmc19pbm9kZV9pbmZvIGJmc19pOwogICAg
ICAgICAgICAgICAgc3RydWN0IHVkZl9pbm9kZV9pbmZvIHVkZl9pOwogICAgICAgICAgICAgICAg
c3RydWN0IG5jcF9pbm9kZV9pbmZvIG5jcGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJv
Y19pbm9kZV9pbmZvIHByb2NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrZXQgc29ja2V0
X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiZGV2X2lub2RlX2luZm8gdXNiZGV2X2k7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyBqZmZzMl9pOwogICAgICAgICAg
ICAgICAgdm9pZCAqZ2VuZXJpY19pcDsKICAgICAgICB9IHU7Cn07CgpzdHJ1Y3QgZm93bl9zdHJ1
Y3QgewogICAgICAgIGludCBwaWQ7CiAgICAgICAgdWlkX3QgdWlkLCBldWlkOwogICAgICAgIGlu
dCBzaWdudW07Cn07CgpzdHJ1Y3QgZmlsZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmX2xp
c3Q7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZl9kZW50cnk7CiAgICAgICAgc3RydWN0IHZmc21v
dW50ICpmX3Zmc21udDsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29wOwogICAg
ICAgIGF0b21pY190IGZfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGZfZmxhZ3M7CiAgICAg
ICAgbW9kZV90IGZfbW9kZTsKICAgICAgICBsb2ZmX3QgZl9wb3M7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBmX3JlYWRhLCBmX3JhbWF4LCBmX3JhZW5kLCBmX3JhbGVuLCBmX3Jhd2luOwogICAgICAg
IHN0cnVjdCBmb3duX3N0cnVjdCBmX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBmX3VpZCwg
Zl9naWQ7CiAgICAgICAgaW50IGZfZXJyb3I7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZl92ZXJz
aW9uOwoKCiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwoKCiAgICAgICAgc3RydWN0IGtpb2J1
ZiAqZl9pb2J1ZjsKICAgICAgICBsb25nIGZfaW9idWZfbG9jazsKfTsKZXh0ZXJuIHNwaW5sb2Nr
X3QgZmlsZXNfbG9jazsKCgoKCgoKZXh0ZXJuIGludCBpbml0X3ByaXZhdGVfZmlsZShzdHJ1Y3Qg
ZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CiMgNTU2ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgZmlsZXNfc3Ry
dWN0ICpmbF9vd25lcl90OwoKc3RydWN0IGZpbGVfbG9jayB7CiAgICAgICAgc3RydWN0IGZpbGVf
bG9jayAqZmxfbmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2xpbms7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBmbF9ibG9jazsKICAgICAgICBmbF9vd25lcl90IGZsX293bmVyOwog
ICAgICAgIHVuc2lnbmVkIGludCBmbF9waWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZmxf
d2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmxfZmlsZTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IGZsX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxfdHlwZTsKICAgICAgICBsb2ZmX3Qg
Zmxfc3RhcnQ7CiAgICAgICAgbG9mZl90IGZsX2VuZDsKCiAgICAgICAgdm9pZCAoKmZsX25vdGlm
eSkoc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICB2b2lkICgqZmxfaW5zZXJ0KShzdHJ1Y3Qg
ZmlsZV9sb2NrICopOwogICAgICAgIHZvaWQgKCpmbF9yZW1vdmUpKHN0cnVjdCBmaWxlX2xvY2sg
Kik7CgogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoKICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2xvY2tfaW5mbyBuZnNfZmw7CiAgICAg
ICAgfSBmbF91Owp9OwojIDU4OSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbG9ja19saXN0OwoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZmNudGwu
aCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20v
ZmNudGwuaCIgMQojIDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
YXNtL2ZjbnRsLmgiCnN0cnVjdCBmbG9jayB7CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAg
IHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9mZl90IGxfc3RhcnQ7CiAgICAgICAgb2ZmX3QgbF9s
ZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CgpzdHJ1Y3QgZmxvY2s2NCB7CiAgICAgICAgc2hv
cnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIGxvZmZfdCBsX3N0YXJ0
OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAgICAgICBwaWRfdCBsX3BpZDsKfTsKIyA1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZmNudGwuaCIgMgojIDU5
MiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
CmV4dGVybiBpbnQgZmNudGxfZ2V0bGsodW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7CmV4
dGVybiBpbnQgZmNudGxfc2V0bGsodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBm
bG9jayAqKTsKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGs2NCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBm
bG9jazY0ICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxrNjQodW5zaWduZWQgaW50LCB1bnNpZ25l
ZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwoKCmV4dGVybiB2b2lkIGxvY2tzX2luaXRfbG9jayhz
dHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19jb3B5X2xvY2soc3RydWN0IGZp
bGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVf
cG9zaXgoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCk7CmV4dGVybiB2b2lkIGxvY2tzX3JlbW92
ZV9mbG9jayhzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKnBvc2l4X3Rl
c3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHBv
c2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICosIHVuc2lnbmVk
IGludCk7CmV4dGVybiB2b2lkIHBvc2l4X2Jsb2NrX2xvY2soc3RydWN0IGZpbGVfbG9jayAqLCBz
dHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBwb3NpeF91bmJsb2NrX2xvY2soc3RydWN0
IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBwb3NpeF9sb2Nrc19kZWFkbG9jayhzdHJ1Y3QgZmls
ZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgX19nZXRfbGVhc2Uoc3Ry
dWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IGZsYWdzKTsKZXh0ZXJuIHRpbWVfdCBsZWFz
ZV9nZXRfbXRpbWUoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGxvY2tfbWF5X3JlYWQoc3Ry
dWN0IGlub2RlICosIGxvZmZfdCBzdGFydCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CmV4dGVybiBp
bnQgbG9ja19tYXlfd3JpdGUoc3RydWN0IGlub2RlICosIGxvZmZfdCBzdGFydCwgdW5zaWduZWQg
bG9uZyBjb3VudCk7CgpzdHJ1Y3QgZmFzeW5jX3N0cnVjdCB7CiAgICAgICAgaW50IG1hZ2ljOwog
ICAgICAgIGludCBmYV9mZDsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFfbmV4dDsK
ICAgICAgICBzdHJ1Y3QgZmlsZSAqZmFfZmlsZTsKfTsKCgoKCmV4dGVybiBpbnQgZmFzeW5jX2hl
bHBlcihpbnQsIHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiopOwoK
ZXh0ZXJuIHZvaWQga2lsbF9mYXN5bmMoc3RydWN0IGZhc3luY19zdHJ1Y3QgKiosIGludCwgaW50
KTsKCmV4dGVybiB2b2lkIF9fa2lsbF9mYXN5bmMoc3RydWN0IGZhc3luY19zdHJ1Y3QgKiwgaW50
LCBpbnQpOwoKc3RydWN0IG5hbWVpZGF0YSB7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5
OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50OwogICAgICAgIHN0cnVjdCBxc3RyIGxhc3Q7
CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIGludCBsYXN0X3R5cGU7Cn07CgoK
CgpzdHJ1Y3QgcXVvdGFfbW91bnRfb3B0aW9ucwp7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdz
OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgZHFpb19zZW07CiAgICAgICAgc3RydWN0IHNlbWFw
aG9yZSBkcW9mZl9zZW07CiAgICAgICAgc3RydWN0IGZpbGUgKmZpbGVzWzJdOwogICAgICAgIHRp
bWVfdCBpbm9kZV9leHBpcmVbMl07CiAgICAgICAgdGltZV90IGJsb2NrX2V4cGlyZVsyXTsKICAg
ICAgICBjaGFyIHJzcXVhc2hbMl07Cn07CiMgNjU5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvbWluaXhfZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3QgbWluaXhf
c2JfaW5mbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVz
OwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbnpvbmVzOwogICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW1hcF9ibG9ja3M7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc196bWFwX2Jsb2NrczsKICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19sb2dfem9uZV9zaXplOwogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIHNfbWF4X3NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzX2RpcnNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBzX25hbWVsZW47CiAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzX2xpbmtfbWF4OwogICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19pbWFwOwogICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiogc196bWFwOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1p
bml4X3N1cGVyX2Jsb2NrICogc19tczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
c2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hv
cnQgc192ZXJzaW9uOwp9OwojIDY2MCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvZXh0Ml9mc19zYi5oIiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9leHQyX2ZzX3NiLmgiCnN0cnVjdCBleHQyX3NiX2lu
Zm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnX3NpemU7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzX2ZyYWdzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Bl
cl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2dyb3VwOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc19ibG9ja3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c19pbm9kZXNfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pdGJfcGVyX2dyb3Vw
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19nZGJfY291bnQ7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX2Rlc2NfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ncm91cHNfY291bnQ7
CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgc3RydWN0IGV4dDJf
c3VwZXJfYmxvY2sgKiBzX2VzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX2dyb3Vw
X2Rlc2M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfaW5vZGVfYml0bWFwczsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzX2xvYWRlZF9ibG9ja19iaXRtYXBzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc19pbm9kZV9iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqIHNfaW5vZGVfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja19i
aXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfYmxvY2tfYml0
bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CiAgICAgICAgdWlkX3Qg
c19yZXN1aWQ7CiAgICAgICAgZ2lkX3Qgc19yZXNnaWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c19tb3VudF9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX3BhZDsKICAgICAgICBpbnQg
c19hZGRyX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2Rlc2NfcGVyX2Jsb2NrX2JpdHM7
CiAgICAgICAgaW50IHNfaW5vZGVfc2l6ZTsKICAgICAgICBpbnQgc19maXJzdF9pbm87Cn07CiMg
NjYxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9ocGZz
X2ZzX3NiLmgiIDEKCgoKc3RydWN0IGhwZnNfc2JfaW5mbyB7CiAgICAgICAgaW5vX3Qgc2Jfcm9v
dDsKICAgICAgICB1bnNpZ25lZCBzYl9mc19zaXplOwogICAgICAgIHVuc2lnbmVkIHNiX2JpdG1h
cHM7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zdGFydDsKICAgICAgICB1bnNpZ25lZCBz
Yl9kaXJiYW5kX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfZG1hcDsKICAgICAgICB1bnNpZ25l
ZCBzYl9uX2ZyZWU7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVlX2Rub2RlczsKICAgICAgICB1
aWRfdCBzYl91aWQ7CiAgICAgICAgZ2lkX3Qgc2JfZ2lkOwogICAgICAgIHVtb2RlX3Qgc2JfbW9k
ZTsKICAgICAgICB1bnNpZ25lZCBzYl9jb252IDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9lYXMg
OiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VyciA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfY2hr
IDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9sb3dlcmNhc2UgOiAxOwogICAgICAgIHVuc2lnbmVk
IHNiX3dhc19lcnJvciA6IDE7CiAgICAgICAgdW5zaWduZWQgc2JfY2hrZHNrIDogMjsKICAgICAg
ICB1bnNpZ25lZCBzYl9yZF9mbm9kZSA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfcmRfaW5vZGUg
OiAyOwoKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc2JfaWdldF9xOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgKnNiX2NwX3RhYmxlOwoKCiAgICAgICAgdW5zaWduZWQgKnNiX2JtcF9kaXI7CiAg
ICAgICAgdW5zaWduZWQgc2JfY19iaXRtYXA7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc2Jf
Y3JlYXRpb25fZGU7CgogICAgICAgIHVuc2lnbmVkIHNiX2NyZWF0aW9uX2RlX2xvY2sgOiAxOwoK
ICAgICAgICBpbnQgc2JfdGltZXNoaWZ0Owp9OwojIDY2MiAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbnRmc19mc19zYi5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAxCiMg
NSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L250ZnNfZnNf
c2IuaCIgMgoKc3RydWN0IG50ZnNfc2JfaW5mb3sKCiAgICAgICAgbnRmc191aWRfdCB1aWQ7CiAg
ICAgICAgbnRmc19naWRfdCBnaWQ7CiAgICAgICAgbnRtb2RlX3QgdW1hc2s7CiAgICAgICAgdm9p
ZCAqbmxzX21hcDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmd0OwogICAgICAgIGNoYXIgbWZ0X3pv
bmVfbXVsdGlwbGllcjsKICAgICAgICB1bnNpZ25lZCBsb25nIG1mdF9kYXRhX3BvczsKICAgICAg
ICBudGZzX2NsdXN0ZXJfdCBtZnRfem9uZV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0
X3pvbmVfc3RhcnQ7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVfZW5kOwogICAgICAg
IG50ZnNfY2x1c3Rlcl90IGRhdGExX3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IGRh
dGEyX3pvbmVfcG9zOwoKCiAgICAgICAgbnRmc19zaXplX3QgcGFydGl0aW9uX2JpYXM7CgogICAg
ICAgIG50ZnNfdTMyIGF0X3N0YW5kYXJkX2luZm9ybWF0aW9uOwogICAgICAgIG50ZnNfdTMyIGF0
X2F0dHJpYnV0ZV9saXN0OwogICAgICAgIG50ZnNfdTMyIGF0X2ZpbGVfbmFtZTsKICAgICAgICBu
dGZzX3UzMiBhdF92b2x1bWVfdmVyc2lvbjsKICAgICAgICBudGZzX3UzMiBhdF9zZWN1cml0eV9k
ZXNjcmlwdG9yOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9uYW1lOwogICAgICAgIG50ZnNf
dTMyIGF0X3ZvbHVtZV9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9kYXRhOwogICAg
ICAgIG50ZnNfdTMyIGF0X2luZGV4X3Jvb3Q7CiAgICAgICAgbnRmc191MzIgYXRfaW5kZXhfYWxs
b2NhdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9iaXRtYXA7CiAgICAgICAgbnRmc191MzIgYXRf
c3ltbGluazsKCiAgICAgICAgaW50IHNlY3Rvcl9zaXplOwogICAgICAgIGludCBjbHVzdGVyX3Np
emU7CiAgICAgICAgaW50IGNsdXN0ZXJfc2l6ZV9iaXRzOwogICAgICAgIGludCBtZnRfY2x1c3Rl
cnNfcGVyX3JlY29yZDsKICAgICAgICBpbnQgbWZ0X3JlY29yZF9zaXplOwogICAgICAgIGludCBt
ZnRfcmVjb3JkX3NpemVfYml0czsKICAgICAgICBpbnQgaW5kZXhfY2x1c3RlcnNfcGVyX3JlY29y
ZDsKICAgICAgICBpbnQgaW5kZXhfcmVjb3JkX3NpemU7CiAgICAgICAgaW50IGluZGV4X3JlY29y
ZF9zaXplX2JpdHM7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbnJfY2x1c3RlcnM7CiAgICAgICAg
bnRmc19jbHVzdGVyX3QgbWZ0X2xjbjsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfbWlycl9s
Y247CgogICAgICAgIHVuc2lnbmVkIGNoYXIgKm1mdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAq
dXBjYXNlOwogICAgICAgIHVuc2lnbmVkIGludCB1cGNhc2VfbGVuZ3RoOwoKICAgICAgICBzdHJ1
Y3QgbnRmc19pbm9kZV9pbmZvICptZnRfaW5vOwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2lu
Zm8gKm1mdG1pcnI7CiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqYml0bWFwOwogICAg
ICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqc2I7CiAgICAgICAgdW5zaWduZWQgY2hhciBpbm9fZmxh
Z3M7Cn07CiMgNjYzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9tc2Rvc19mc19zYi5oIiAxCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvZmF0X2N2Zi5oIiAxCgoKCgoKc3RydWN0IGN2Zl9mb3JtYXQKeyBp
bnQgY3ZmX3ZlcnNpb247CiAgY2hhciogY3ZmX3ZlcnNpb25fdGV4dDsKICB1bnNpZ25lZCBsb25n
IGZsYWdzOwogIGludCAoKmRldGVjdF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwogIGlu
dCAoKm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixjaGFyKm9wdGlvbnMpOwogIGlu
dCAoKnVubW91bnRfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBzdHJ1Y3QgYnVmZmVy
X2hlYWQqICgqY3ZmX2JyZWFkKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7CiAg
c3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2Zl9nZXRibGspIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2Is
aW50IGJsb2NrKTsKICB2b2lkICgqY3ZmX2JyZWxzZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is
c3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9tYXJrX2J1ZmZlcl9kaXJ0eSkg
KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfc2V0X3VwdG9kYXRlKSAoc3RydWN0
IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqYmgsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsKTsKICBpbnQgKCpjdmZf
aXNfdXB0b2RhdGUpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZmZXJfaGVhZCAq
YmgpOwogIHZvaWQgKCpjdmZfbGxfcndfYmxvY2spIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAog
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ByLAogICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbmJyZXEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmhb
MzJdKTsKICBpbnQgKCpmYXRfYWNjZXNzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixpbnQgbnIs
aW50IG5ld192YWx1ZSk7CiAgaW50ICgqY3ZmX3N0YXRmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAq
c2Isc3RydWN0IHN0YXRmcyAqYnVmLCBpbnQgYnVmc2l6KTsKICBpbnQgKCpjdmZfYm1hcCkgKHN0
cnVjdCBpbm9kZSAqaW5vZGUsaW50IGJsb2NrKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfcmVhZCkg
KCBzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogIHNzaXplX3QgKCpj
dmZfZmlsZV93cml0ZSkgKCBzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9m
Zl90ICopOwogIGludCAoKmN2Zl9tbWFwKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFf
c3RydWN0ICopOwogIGludCAoKmN2Zl9yZWFkcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
cGFnZSAqKTsKICBpbnQgKCpjdmZfd3JpdGVwYWdlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBw
YWdlICopOwogIGludCAoKmN2Zl9kaXJfaW9jdGwpIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3Ry
dWN0IGZpbGUgKiBmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21k
LCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgdm9pZCAoKnplcm9fb3V0X2NsdXN0ZXIpIChzdHJ1Y3Qg
aW5vZGUqLCBpbnQgY2x1c3Rlcm5yKTsKfTsKCmludCByZWdpc3Rlcl9jdmZfZm9ybWF0KHN0cnVj
dCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwppbnQgdW5yZWdpc3Rlcl9jdmZfZm9ybWF0KHN0cnVj
dCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwp2b2lkIGRlY19jdmZfZm9ybWF0X3VzZV9jb3VudF9i
eV92ZXJzaW9uKGludCB2ZXJzaW9uKTsKaW50IGRldGVjdF9jdmYoc3RydWN0IHN1cGVyX2Jsb2Nr
KnNiLGNoYXIqZm9yY2UpOwoKZXh0ZXJuIHN0cnVjdCBjdmZfZm9ybWF0ICpjdmZfZm9ybWF0c1td
OwpleHRlcm4gaW50IGN2Zl9mb3JtYXRfdXNlX2NvdW50W107CiMgNCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDIKCgoKCgpzdHJ1
Y3QgZmF0X21vdW50X29wdGlvbnMgewogICAgICAgIHVpZF90IGZzX3VpZDsKICAgICAgICBnaWRf
dCBmc19naWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnNfdW1hc2s7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgY29kZXBhZ2U7CiAgICAgICAgY2hhciAqaW9jaGFyc2V0OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNob3J0bmFtZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWVfY2hlY2s7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBjb252ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIHF1aWV0OjEs
CiAgICAgICAgICAgICAgICAgc2hvd2V4ZWM6MSwKICAgICAgICAgICAgICAgICBzeXNfaW1tdXRh
YmxlOjEsCiAgICAgICAgICAgICAgICAgZG90c09LOjEsCiAgICAgICAgICAgICAgICAgaXN2ZmF0
OjEsCiAgICAgICAgICAgICAgICAgdXRmODoxLAogICAgICAgICAgICAgICAgIHVuaWNvZGVfeGxh
dGU6MSwKICAgICAgICAgICAgICAgICBwb3NpeGZzOjEsCiAgICAgICAgICAgICAgICAgbnVtdGFp
bDoxLAogICAgICAgICAgICAgICAgIGF0YXJpOjEsCiAgICAgICAgICAgICAgICAgZmF0MzI6MSwK
ICAgICAgICAgICAgICAgICBub2Nhc2U6MTsKfTsKCnN0cnVjdCBtc2Rvc19zYl9pbmZvIHsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBjbHVzdGVyX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y2x1c3Rlcl9iaXRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmF0cyxmYXRfYml0czsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBmYXRfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmYXRfbGVu
Z3RoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGlyX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGRpcl9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zdGFydDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGNsdXN0ZXJzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcm9vdF9jbHVz
dGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnNpbmZvX3NlY3RvcjsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIGZhdF9sb2NrOwogICAgICAgIGludCBwcmV2X2ZyZWU7CiAgICAgICAgaW50IGZy
ZWVfY2x1c3RlcnM7CiAgICAgICAgc3RydWN0IGZhdF9tb3VudF9vcHRpb25zIG9wdGlvbnM7CiAg
ICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxzX2Rpc2s7CiAgICAgICAgc3RydWN0IG5sc190YWJs
ZSAqbmxzX2lvOwogICAgICAgIHN0cnVjdCBjdmZfZm9ybWF0KiBjdmZfZm9ybWF0OwogICAgICAg
IHZvaWQgKmRpcl9vcHM7CiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwogICAgICAgIGludCBk
aXJfcGVyX2Jsb2NrOwogICAgICAgIGludCBkaXJfcGVyX2Jsb2NrX2JpdHM7Cn07CiMgNjY0ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pc29fZnNfc2Iu
aCIgMQoKCgoKCgpzdHJ1Y3QgaXNvZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
X25pbm9kZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVf
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4X3NpemU7CgogICAgICAgIHVuc2lnbmVk
IGNoYXIgc19oaWdoX3NpZXJyYTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfbWFwcGluZzsKICAg
ICAgICBpbnQgc19yb2NrX29mZnNldDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfcm9jazsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIHNfam9saWV0X2xldmVsOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
c191dGY4OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19jcnVmdDsKCgogICAgICAgIHVuc2lnbmVk
IGNoYXIgc191bmhpZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX25vc3VpZDsKICAgICAgICB1
bnNpZ25lZCBjaGFyIHNfbm9kZXY7CiAgICAgICAgbW9kZV90IHNfbW9kZTsKICAgICAgICBnaWRf
dCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpz
X25sc19pb2NoYXJzZXQ7Cn07CiMgNjY1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9uZnNfZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3QgbmZzX3NlcnZlciB7
CiAgICAgICAgc3RydWN0IHJwY19jbG50ICogY2xpZW50OwogICAgICAgIHN0cnVjdCBuZnNfcnBj
X29wcyAqIHJwY19vcHM7CiAgICAgICAgaW50IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGludCBy
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcnBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCB3
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgd3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCBk
dHNpemU7CiAgICAgICAgdW5zaWduZWQgaW50IGJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBh
Y3JlZ21pbjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNyZWdtYXg7CiAgICAgICAgdW5zaWduZWQg
aW50IGFjZGlybWluOwogICAgICAgIHVuc2lnbmVkIGludCBhY2Rpcm1heDsKICAgICAgICB1bnNp
Z25lZCBpbnQgbmFtZWxlbjsKICAgICAgICBjaGFyICogaG9zdG5hbWU7CiAgICAgICAgc3RydWN0
IG5mc19yZXFsaXN0ICogcndfcmVxdWVzdHM7Cn07CgoKCgpzdHJ1Y3QgbmZzX3NiX2luZm8gewog
ICAgICAgIHN0cnVjdCBuZnNfc2VydmVyIHNfc2VydmVyOwp9OwojIDY2NiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3lzdl9mc19zYi5oIiAxCiMgMTMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zeXN2X2ZzX3Ni
LmgiCnN0cnVjdCBzeXN2X3NiX2luZm8gewogICAgICAgIGludCBzX3R5cGU7CiAgICAgICAgY2hh
ciBzX2J5dGVzZXg7CiAgICAgICAgY2hhciBzX2tsdWRnZV9zeW1saW5rczsKICAgICAgICBjaGFy
IHNfdHJ1bmNhdGU7CgogICAgICAgIG5saW5rX3Qgc19saW5rX21heDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19w
ZXJfYmxvY2tfMTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrX2JpdHM7
CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBp
bnQgc19pbmRfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9i
bG9ja18yOwogICAgICAgIHVuc2lnbmVkIGludCBzX3Rvb2JpZ19ibG9jazsKICAgICAgICB1bnNp
Z25lZCBpbnQgc19ibG9ja19iYXNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfZmljX3NpemU7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19mbGNfc2l6ZTsKCiAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpzX2JoMTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYmgyOwoKCiAgICAg
ICAgY2hhciAqIHNfc2JkMTsKICAgICAgICBjaGFyICogc19zYmQyOwogICAgICAgIHUxNiAqc19z
Yl9maWNfY291bnQ7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19pbm9kZXM7CiAgICAgICAgdTE2ICpz
X3NiX3RvdGFsX2ZyZWVfaW5vZGVzOwogICAgICAgIHUxNiAqc19iY2FjaGVfY291bnQ7CiAgICAg
ICAgdTMyICpzX2JjYWNoZTsKICAgICAgICB1MzIgKnNfZnJlZV9ibG9ja3M7CiAgICAgICAgdTMy
ICpzX3NiX3RpbWU7CiAgICAgICAgdTMyICpzX3NiX3N0YXRlOwoKCiAgICAgICAgdTMyIHNfZmly
c3Rpbm9kZXpvbmU7CiAgICAgICAgdTMyIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICB1MzIgc19u
aW5vZGVzOwogICAgICAgIHUzMiBzX25kYXRhem9uZXM7CiAgICAgICAgdTMyIHNfbnpvbmVzOwog
ICAgICAgIHUxNiBzX25hbWVsZW47Cn07CiMgNjY3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9hZmZzX2ZzX3NiLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIKc3RydWN0IGFm
ZnNfYm1faW5mbyB7CiAgICAgICAgdTMyIGJtX2tleTsKICAgICAgICB1MzIgYm1fZnJlZTsKfTsK
CnN0cnVjdCBhZmZzX3NiX2luZm8gewogICAgICAgIGludCBzX3BhcnRpdGlvbl9zaXplOwogICAg
ICAgIGludCBzX3Jlc2VydmVkOwoKICAgICAgICB1MzIgc19kYXRhX2Jsa3NpemU7CiAgICAgICAg
dTMyIHNfcm9vdF9ibG9jazsKICAgICAgICBpbnQgc19oYXNoc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfZmxhZ3M7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7
CiAgICAgICAgdW1vZGVfdCBzX21vZGU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX3Jv
b3RfYmg7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX2JtbG9jazsKICAgICAgICBzdHJ1Y3Qg
YWZmc19ibV9pbmZvICpzX2JpdG1hcDsKICAgICAgICB1MzIgc19ibWFwX2NvdW50OwogICAgICAg
IHUzMiBzX2JtYXBfYml0czsKICAgICAgICB1MzIgc19sYXN0X2JtYXA7CiAgICAgICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICpzX2JtYXBfYmg7CiAgICAgICAgY2hhciAqc19wcmVmaXg7CiAgICAgICAg
aW50IHNfcHJlZml4X2xlbjsKICAgICAgICBjaGFyIHNfdm9sdW1lWzMyXTsKfTsKIyA2NjggIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5o
IiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC91
ZnNfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvdWZzX2ZzLmgiIDEKIyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L3Vmc19mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDMyICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdGltZS5oIiAxCiMgMzMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zdGF0
LmgiIDEKIyAzNCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L3Vmc19mcy5oIiAyCiMgMjQ4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvdWZzX2ZzLmgiCnN0cnVjdCB1ZnNfdGltZXZhbCB7CiAgICAgICAgX19zMzIgdHZf
c2VjOwogICAgICAgIF9fczMyIHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSB7CiAg
ICAgICAgX191MzIgZF9pbm87CiAgICAgICAgX191MTYgZF9yZWNsZW47CiAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgX191MTYgZF9uYW1sZW47CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICBfX3U4IGRfdHlwZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191OCBkX25hbWxlbjsKICAgICAgICAgICAgICAgIH0gZF80NDsKICAgICAgICB9IGRf
dTsKICAgICAgICBfX3U4IGRfbmFtZVsyNTUgKyAxXTsKfTsKCnN0cnVjdCB1ZnNfY3N1bSB7CiAg
ICAgICAgX191MzIgY3NfbmRpcjsKICAgICAgICBfX3UzMiBjc19uYmZyZWU7CiAgICAgICAgX191
MzIgY3NfbmlmcmVlOwogICAgICAgIF9fdTMyIGNzX25mZnJlZTsKfTsKCgoKCnN0cnVjdCB1ZnNf
c3VwZXJfYmxvY2sgewogICAgICAgIF9fdTMyIGZzX2xpbms7CiAgICAgICAgX191MzIgZnNfcmxp
bms7CiAgICAgICAgX191MzIgZnNfc2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2NibGtubzsKICAg
ICAgICBfX3UzMiBmc19pYmxrbm87CiAgICAgICAgX191MzIgZnNfZGJsa25vOwogICAgICAgIF9f
dTMyIGZzX2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIGZzX2NnbWFzazsKICAgICAgICBfX3UzMiBm
c190aW1lOwogICAgICAgIF9fdTMyIGZzX3NpemU7CiAgICAgICAgX191MzIgZnNfZHNpemU7CiAg
ICAgICAgX191MzIgZnNfbmNnOwogICAgICAgIF9fdTMyIGZzX2JzaXplOwogICAgICAgIF9fdTMy
IGZzX2ZzaXplOwogICAgICAgIF9fdTMyIGZzX2ZyYWc7CgogICAgICAgIF9fdTMyIGZzX21pbmZy
ZWU7CiAgICAgICAgX191MzIgZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNfcnBzOwoKICAg
ICAgICBfX3UzMiBmc19ibWFzazsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3Uz
MiBmc19ic2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNoaWZ0OwoKICAgICAgICBfX3UzMiBmc19t
YXhjb250aWc7CiAgICAgICAgX191MzIgZnNfbWF4YnBnOwoKICAgICAgICBfX3UzMiBmc19mcmFn
c2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBmc19zYnNpemU7
CiAgICAgICAgX191MzIgZnNfY3NtYXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hpZnQ7CiAgICAg
ICAgX191MzIgZnNfbmluZGlyOwogICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAgICAgIF9fdTMy
IGZzX25zcGY7CgogICAgICAgIF9fdTMyIGZzX29wdGltOwoKICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNl
Y3Q7CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBm
c19zdW54ODY7CiAgICAgICAgfSBmc191MTsKICAgICAgICBfX3UzMiBmc19pbnRlcmxlYXZlOwog
ICAgICAgIF9fdTMyIGZzX3RyYWNrc2tldzsKCgoKCiAgICAgICAgX191MzIgZnNfaWRbMl07Cgog
ICAgICAgIF9fdTMyIGZzX2NzYWRkcjsKICAgICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAg
X191MzIgZnNfY2dzaXplOwoKICAgICAgICBfX3UzMiBmc19udHJhazsKICAgICAgICBfX3UzMiBm
c19uc2VjdDsKICAgICAgICBfX3UzMiBmc19zcGM7CgogICAgICAgIF9fdTMyIGZzX25jeWw7Cgog
ICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAgICBfX3UzMiBmc19pcGc7CiAgICAgICAgX191MzIg
ZnNfZnBnOwoKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gZnNfY3N0b3RhbDsKCiAgICAgICAgX19z
OCBmc19mbW9kOwogICAgICAgIF9fczggZnNfY2xlYW47CiAgICAgICAgX19zOCBmc19yb25seTsK
ICAgICAgICBfX3M4IGZzX2ZsYWdzOwogICAgICAgIF9fczggZnNfZnNtbnRbNTEyXTsKCiAgICAg
ICAgX191MzIgZnNfY2dyb3RvcjsKICAgICAgICBfX3UzMiBmc19jc3BbMzFdOwogICAgICAgIF9f
dTMyIGZzX21heGNsdXN0ZXI7CiAgICAgICAgX191MzIgZnNfY3BjOwogICAgICAgIF9fdTE2IGZz
X29wb3N0YmxbMTZdWzhdOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19z
dGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZz
X3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
czMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVj
bGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
cWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1MF07CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fczMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fczMyIGZzX2lub2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19t
YXhmaWxlc2l6ZVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc180NDsKICAg
ICAgICB9IGZzX3UyOwogICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3Mz
MiBmc19ucnBvczsKICAgICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgZnNf
cm90YmxvZmY7CiAgICAgICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBmc19zcGFjZVsx
XTsKfTsKIyA0MjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC91ZnNfZnMuaCIKc3RydWN0IHVmc19jeWxpbmRlcl9ncm91cCB7CiAgICAgICAgX191MzIgY2df
bGluazsKICAgICAgICBfX3UzMiBjZ19tYWdpYzsKICAgICAgICBfX3UzMiBjZ190aW1lOwogICAg
ICAgIF9fdTMyIGNnX2NneDsKICAgICAgICBfX3UxNiBjZ19uY3lsOwogICAgICAgIF9fdTE2IGNn
X25pYmxrOwogICAgICAgIF9fdTMyIGNnX25kYmxrOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1bSBj
Z19jczsKICAgICAgICBfX3UzMiBjZ19yb3RvcjsKICAgICAgICBfX3UzMiBjZ19mcm90b3I7CiAg
ICAgICAgX191MzIgY2dfaXJvdG9yOwogICAgICAgIF9fdTMyIGNnX2Zyc3VtWyg4MTkyIC8gMTAy
NCldOwogICAgICAgIF9fdTMyIGNnX2J0b3RvZmY7CiAgICAgICAgX191MzIgY2dfYm9mZjsKICAg
ICAgICBfX3UzMiBjZ19pdXNlZG9mZjsKICAgICAgICBfX3UzMiBjZ19mcmVlb2ZmOwogICAgICAg
IF9fdTMyIGNnX25leHRmcmVlb2ZmOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX2NsdXN0ZXJzdW1vZmY7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX2NsdXN0ZXJvZmY7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdTMyIGNnX25jbHVzdGVyYmxrczsKICAgICAgICAgICAgICAgICAgICAgICAg
X191MzIgY2dfc3BhcmVjb25bMTNdOwogICAgICAgICAgICAgICAgfSBjZ180NDsKICAgICAgICAg
ICAgICAgIF9fdTMyIGNnX3NwYXJlY29uWzE2XTsKICAgICAgICB9IGNnX3U7CiAgICAgICAgX191
OCBjZ19zcGFjZVsxXTsKCn07CgoKCgpzdHJ1Y3QgdWZzX2lub2RlIHsKICAgICAgICBfX3UxNiB1
aV9tb2RlOwogICAgICAgIF9fdTE2IHVpX25saW5rOwogICAgICAgIHVuaW9uIHsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3N1aWQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3NnaWQ7CiAgICAgICAgICAgICAgICB9IG9s
ZGlkczsKICAgICAgICAgICAgICAgIF9fdTMyIHVpX2ludW1iZXI7CiAgICAgICAgICAgICAgICBf
X3UzMiB1aV9hdXRob3I7CiAgICAgICAgfSB1aV91MTsKICAgICAgICBfX3U2NCB1aV9zaXplOwog
ICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9hdGltZTsKICAgICAgICBzdHJ1Y3QgdWZzX3Rp
bWV2YWwgdWlfbXRpbWU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX2N0aW1lOwogICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIHVpX2RiWzEyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfaWJb
M107CiAgICAgICAgICAgICAgICB9IHVpX2FkZHI7CiAgICAgICAgICAgICAgICBfX3U4IHVpX3N5
bWxpbmtbNCooMTIgKzMpXTsKICAgICAgICB9IHVpX3UyOwogICAgICAgIF9fdTMyIHVpX2ZsYWdz
OwogICAgICAgIF9fdTMyIHVpX2Jsb2NrczsKICAgICAgICBfX3UzMiB1aV9nZW47CiAgICAgICAg
dW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
X191MzIgdWlfc2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV91aWQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgdWlfb2VmdGZsYWc7CiAgICAgICAgICAgICAgICB9IHVpX3N1bjsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3MzMiB1aV9zcGFyZVsyXTsKICAgICAgICAgICAgICAgIH0gdWlfNDQ7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV91aWQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsKICAgICAgICAgICAgICAgICAgICAgICAg
X191MTYgdWlfbW9kZWg7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3NwYXJlOwog
ICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV90cmFuczsKICAgICAgICAgICAgICAgIH0g
dWlfaHVyZDsKICAgICAgICB9IHVpX3UzOwp9OwojIDUyNCAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpleHRlcm4gdm9pZCB1ZnNfZnJlZV9m
cmFnbWVudHMgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwpleHRlcm4gdm9p
ZCB1ZnNfZnJlZV9ibG9ja3MgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwpl
eHRlcm4gdW5zaWduZWQgdWZzX25ld19mcmFnbWVudHMgKHN0cnVjdCBpbm9kZSAqLCB1MzIgKiwg
dW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgaW50ICopOwoKCmV4dGVybiBzdHJ1Y3QgdWZz
X2NnX3ByaXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KiwgdW5zaWduZWQpOwpleHRlcm4gdm9pZCB1ZnNfcHV0X2N5bGluZGVyIChzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKiwgdW5zaWduZWQpOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNf
ZGlyX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgdWZzX2NoZWNrX2Rpcl9lbnRyeSAoY29u
c3QgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkgKiwgc3RydWN0
IGJ1ZmZlcl9oZWFkICosIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHVmc19hZGRfbGluayAo
c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9fdCB1ZnNfaW5vZGVf
YnlfbmFtZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB1ZnNf
bWFrZV9lbXB0eShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0
IHVmc19kaXJfZW50cnkgKiB1ZnNfZmluZF9lbnRyeSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiopOwpleHRlcm4gaW50IHVmc19kZWxldGVfZW50cnkgKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVy
biBpbnQgdWZzX2VtcHR5X2RpciAoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IHVmc19k
aXJfZW50cnkgKiB1ZnNfZG90ZG90IChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGJ1ZmZlcl9oZWFk
ICoqKTsKZXh0ZXJuIHZvaWQgdWZzX3NldF9saW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZz
X2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlub2RlICopOwoKCmV4
dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpl
eHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9vcGVyYXRpb25zOwoKZXh0ZXJu
IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgdWZzX2FvcHM7CgoKZXh0ZXJuIHZvaWQg
dWZzX2ZyZWVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gc3RydWN0IGlub2Rl
ICogdWZzX25ld19pbm9kZSAoY29uc3Qgc3RydWN0IGlub2RlICosIGludCk7CgoKZXh0ZXJuIGlu
dCB1ZnNfZnJhZ19tYXAgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gdm9pZCB1ZnNfcmVh
ZF9pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfcHV0X2lub2RlIChzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc193cml0ZV9pbm9kZSAoc3RydWN0IGlub2RlICos
IGludCk7CmV4dGVybiBpbnQgdWZzX3N5bmNfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu
IHZvaWQgdWZzX2RlbGV0ZV9pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGJ1
ZmZlcl9oZWFkICogdWZzX2dldGZyYWcgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgaW50LCBp
bnQgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfYnJlYWQgKHN0cnVjdCBpbm9k
ZSAqLCB1bnNpZ25lZCwgaW50LCBpbnQgKik7CgoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlv
bnMgdWZzX2Rpcl9vcGVyYXRpb25zOwoKCmV4dGVybiBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB1
ZnNfZnNfdHlwZTsKZXh0ZXJuIHZvaWQgdWZzX3dhcm5pbmcgKHN0cnVjdCBzdXBlcl9ibG9jayAq
LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0
IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc19lcnJvciAoc3RydWN0IHN1cGVyX2Js
b2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX3BhbmljIChzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfd3JpdGVfc3VwZXIg
KHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMg
dWZzX2Zhc3Rfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKCmV4dGVybiB2b2lkIHVmc190cnVu
Y2F0ZSAoc3RydWN0IGlub2RlICopOwojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgdWZzX2J1ZmZlcl9o
ZWFkIHsKICAgICAgICB1bnNpZ25lZCBmcmFnbWVudDsKICAgICAgICB1bnNpZ25lZCBjb3VudDsK
ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaFsoODE5MiAvIDEwMjQpXTsKfTsKCnN0cnVj
dCB1ZnNfY2dfcHJpdmF0ZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3Vw
IHVjZzsKICAgICAgICBfX3UzMiBjX2NneDsKICAgICAgICBfX3UxNiBjX25jeWw7CiAgICAgICAg
X191MTYgY19uaWJsazsKICAgICAgICBfX3UzMiBjX25kYmxrOwogICAgICAgIF9fdTMyIGNfcm90
b3I7CiAgICAgICAgX191MzIgY19mcm90b3I7CiAgICAgICAgX191MzIgY19pcm90b3I7CiAgICAg
ICAgX191MzIgY19idG90b2ZmOwogICAgICAgIF9fdTMyIGNfYm9mZjsKICAgICAgICBfX3UzMiBj
X2l1c2Vkb2ZmOwogICAgICAgIF9fdTMyIGNfZnJlZW9mZjsKICAgICAgICBfX3UzMiBjX25leHRm
cmVlb2ZmOwogICAgICAgIF9fdTMyIGNfY2x1c3RlcnN1bW9mZjsKICAgICAgICBfX3UzMiBjX2Ns
dXN0ZXJvZmY7CiAgICAgICAgX191MzIgY19uY2x1c3RlcmJsa3M7Cn07CgpzdHJ1Y3QgdWZzX3Ni
X3ByaXZhdGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19idWZmZXJfaGVhZCBzX3ViaDsKICAg
ICAgICBfX3UzMiBzX3NibGtubzsKICAgICAgICBfX3UzMiBzX2NibGtubzsKICAgICAgICBfX3Uz
MiBzX2libGtubzsKICAgICAgICBfX3UzMiBzX2RibGtubzsKICAgICAgICBfX3UzMiBzX2Nnb2Zm
c2V0OwogICAgICAgIF9fdTMyIHNfY2dtYXNrOwogICAgICAgIF9fdTMyIHNfc2l6ZTsKICAgICAg
ICBfX3UzMiBzX2RzaXplOwogICAgICAgIF9fdTMyIHNfbmNnOwogICAgICAgIF9fdTMyIHNfYnNp
emU7CiAgICAgICAgX191MzIgc19mc2l6ZTsKICAgICAgICBfX3UzMiBzX2ZwYjsKICAgICAgICBf
X3UzMiBzX21pbmZyZWU7CiAgICAgICAgX191MzIgc19ibWFzazsKICAgICAgICBfX3UzMiBzX2Zt
YXNrOwogICAgICAgIF9fdTMyIHNfYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNoaWZ0OwogICAg
ICAgIF9fdTMyIHNfZnBic2hpZnQ7CiAgICAgICAgX191MzIgc19mc2J0b2RiOwogICAgICAgIF9f
dTMyIHNfc2JzaXplOwogICAgICAgIF9fdTMyIHNfY3NtYXNrOwogICAgICAgIF9fdTMyIHNfY3Nz
aGlmdDsKICAgICAgICBfX3UzMiBzX25pbmRpcjsKICAgICAgICBfX3UzMiBzX2lub3BiOwogICAg
ICAgIF9fdTMyIHNfbnNwZjsKICAgICAgICBfX3UzMiBzX25wc2VjdDsKICAgICAgICBfX3UzMiBz
X2ludGVybGVhdmU7CiAgICAgICAgX191MzIgc190cmFja3NrZXc7CiAgICAgICAgX191MzIgc19j
c2FkZHI7CiAgICAgICAgX191MzIgc19jc3NpemU7CiAgICAgICAgX191MzIgc19jZ3NpemU7CiAg
ICAgICAgX191MzIgc19udHJhazsKICAgICAgICBfX3UzMiBzX25zZWN0OwogICAgICAgIF9fdTMy
IHNfc3BjOwogICAgICAgIF9fdTMyIHNfaXBnOwogICAgICAgIF9fdTMyIHNfZnBnOwogICAgICAg
IF9fdTMyIHNfY3BjOwogICAgICAgIF9fczMyIHNfY29udGlnc3Vtc2l6ZTsKICAgICAgICBfX3M2
NCBzX3FibWFzazsKICAgICAgICBfX3M2NCBzX3FmbWFzazsKICAgICAgICBfX3MzMiBzX3Bvc3Ri
bGZvcm1hdDsKICAgICAgICBfX3MzMiBzX25ycG9zOwogICAgICAgIF9fczMyIHNfcG9zdGJsb2Zm
OwogICAgICAgIF9fczMyIHNfcm90YmxvZmY7CgogICAgICAgIF9fdTMyIHNfZnBibWFzazsKICAg
ICAgICBfX3UzMiBzX2FwYjsKICAgICAgICBfX3UzMiBzXzJhcGI7CiAgICAgICAgX191MzIgc18z
YXBiOwogICAgICAgIF9fdTMyIHNfYXBibWFzazsKICAgICAgICBfX3UzMiBzX2FwYnNoaWZ0Owog
ICAgICAgIF9fdTMyIHNfMmFwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfM2FwYnNoaWZ0OwogICAg
ICAgIF9fdTMyIHNfbnNwZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfbnNwYjsKICAgICAgICBfX3Uz
MiBzX2lub3BmOwogICAgICAgIF9fdTMyIHNfc2JiYXNlOwogICAgICAgIF9fdTMyIHNfYnBmOwog
ICAgICAgIF9fdTMyIHNfYnBmc2hpZnQ7CiAgICAgICAgX191MzIgc19icGZtYXNrOwoKICAgICAg
ICBfX3UzMiBzX21heHN5bWxpbmtsZW47Cn07CgoKCgoKc3RydWN0IHVmc19zYl9pbmZvIHsKICAg
ICAgICBzdHJ1Y3QgdWZzX3NiX3ByaXZhdGVfaW5mbyAqIHNfdXNwaTsKICAgICAgICBzdHJ1Y3Qg
dWZzX2NzdW0gKiBzX2NzcFszMV07CiAgICAgICAgdW5zaWduZWQgc19zd2FiOwogICAgICAgIHVu
c2lnbmVkIHNfZmxhZ3M7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfdWNnOwogICAg
ICAgIHN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZvICogc191Y3BpWzhdOwogICAgICAgIHVuc2ln
bmVkIHNfY2dub1s4XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2NnX2xvYWRlZDsKICAgICAg
ICB1bnNpZ25lZCBzX21vdW50X29wdDsKfTsKCgoKCgoKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tf
Zmlyc3QgewogICAgICAgIF9fdTMyIGZzX2xpbms7CiAgICAgICAgX191MzIgZnNfcmxpbms7CiAg
ICAgICAgX191MzIgZnNfc2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2NibGtubzsKICAgICAgICBf
X3UzMiBmc19pYmxrbm87CiAgICAgICAgX191MzIgZnNfZGJsa25vOwogICAgICAgIF9fdTMyIGZz
X2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIGZzX2NnbWFzazsKICAgICAgICBfX3UzMiBmc190aW1l
OwogICAgICAgIF9fdTMyIGZzX3NpemU7CiAgICAgICAgX191MzIgZnNfZHNpemU7CiAgICAgICAg
X191MzIgZnNfbmNnOwogICAgICAgIF9fdTMyIGZzX2JzaXplOwogICAgICAgIF9fdTMyIGZzX2Zz
aXplOwogICAgICAgIF9fdTMyIGZzX2ZyYWc7CiAgICAgICAgX191MzIgZnNfbWluZnJlZTsKICAg
ICAgICBfX3UzMiBmc19yb3RkZWxheTsKICAgICAgICBfX3UzMiBmc19ycHM7CiAgICAgICAgX191
MzIgZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNo
aWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsKICAgICAgICBfX3UzMiBmc19tYXhjb250aWc7
CiAgICAgICAgX191MzIgZnNfbWF4YnBnOwogICAgICAgIF9fdTMyIGZzX2ZyYWdzaGlmdDsKICAg
ICAgICBfX3UzMiBmc19mc2J0b2RiOwogICAgICAgIF9fdTMyIGZzX3Nic2l6ZTsKICAgICAgICBf
X3UzMiBmc19jc21hc2s7CiAgICAgICAgX191MzIgZnNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBm
c19uaW5kaXI7CiAgICAgICAgX191MzIgZnNfaW5vcGI7CiAgICAgICAgX191MzIgZnNfbnNwZjsK
ICAgICAgICBfX3UzMiBmc19vcHRpbTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAg
ICAgICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAg
ICAgICAgfSBmc191MTsKICAgICAgICBfX3UzMiBmc19pbnRlcmxlYXZlOwogICAgICAgIF9fdTMy
IGZzX3RyYWNrc2tldzsKICAgICAgICBfX3UzMiBmc19pZFsyXTsKICAgICAgICBfX3UzMiBmc19j
c2FkZHI7CiAgICAgICAgX191MzIgZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsK
ICAgICAgICBfX3UzMiBmc19udHJhazsKICAgICAgICBfX3UzMiBmc19uc2VjdDsKICAgICAgICBf
X3UzMiBmc19zcGM7CiAgICAgICAgX191MzIgZnNfbmN5bDsKICAgICAgICBfX3UzMiBmc19jcGc7
CiAgICAgICAgX191MzIgZnNfaXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKICAgICAgICBzdHJ1
Y3QgdWZzX2NzdW0gZnNfY3N0b3RhbDsKICAgICAgICBfX3M4IGZzX2Ztb2Q7CiAgICAgICAgX19z
OCBmc19jbGVhbjsKICAgICAgICBfX3M4IGZzX3Jvbmx5OwogICAgICAgIF9fczggZnNfZmxhZ3M7
CiAgICAgICAgX19zOCBmc19mc21udFs1MTIgLSAyMTJdOwoKfTsKCnN0cnVjdCB1ZnNfc3VwZXJf
YmxvY2tfc2Vjb25kIHsKICAgICAgICBfX3M4IGZzX2ZzbW50WzIxMl07CiAgICAgICAgX191MzIg
ZnNfY2dyb3RvcjsKICAgICAgICBfX3UzMiBmc19jc3BbMzFdOwogICAgICAgIF9fdTMyIGZzX21h
eGNsdXN0ZXI7CiAgICAgICAgX191MzIgZnNfY3BjOwogICAgICAgIF9fdTE2IGZzX29wb3N0Ymxb
ODJdOwp9OwoKc3RydWN0IHVmc19zdXBlcl9ibG9ja190aGlyZCB7CiAgICAgICAgX191MTYgZnNf
b3Bvc3RibFs0Nl07CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAgICAgICAgICAgICBfX3Mz
MiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRl
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3Vu
OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIg
ZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNsYWlt
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgICAgICAgICAg
X191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1h
c2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUwXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgX19zMzIgZnNfY29udGlnc3Vtc2l6ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX19zMzIgZnNfbWF4c3ltbGlua2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfaW5vZGVmbXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX21heGZp
bGVzaXplWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzXzQ0OwogICAgICAg
IH0gZnNfdTI7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMyIGZz
X25ycG9zOwogICAgICAgIF9fczMyIGZzX3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBmc19yb3Ri
bG9mZjsKICAgICAgICBfX3MzMiBmc19tYWdpYzsKICAgICAgICBfX3U4IGZzX3NwYWNlWzFdOwp9
OwojIDY2OSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
ZWZzX2ZzX3NiLmgiIDEKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L2Vmc19mc19zYi5oIgpzdHJ1Y3QgZWZzX3N1cGVyIHsKICAgICAgICBpbnQzMl90
IGZzX3NpemU7CiAgICAgICAgaW50MzJfdCBmc19maXJzdGNnOwogICAgICAgIGludDMyX3QgZnNf
Y2dmc2l6ZTsKICAgICAgICBzaG9ydCBmc19jZ2lzaXplOwogICAgICAgIHNob3J0IGZzX3NlY3Rv
cnM7CiAgICAgICAgc2hvcnQgZnNfaGVhZHM7CiAgICAgICAgc2hvcnQgZnNfbmNnOwogICAgICAg
IHNob3J0IGZzX2RpcnR5OwogICAgICAgIGludDMyX3QgZnNfdGltZTsKICAgICAgICBpbnQzMl90
IGZzX21hZ2ljOwogICAgICAgIGNoYXIgZnNfZm5hbWVbNl07CiAgICAgICAgY2hhciBmc19mcGFj
a1s2XTsKICAgICAgICBpbnQzMl90IGZzX2Jtc2l6ZTsKICAgICAgICBpbnQzMl90IGZzX3RmcmVl
OwogICAgICAgIGludDMyX3QgZnNfdGlub2RlOwogICAgICAgIGludDMyX3QgZnNfYm1ibG9jazsK
ICAgICAgICBpbnQzMl90IGZzX3JlcGxzYjsKICAgICAgICBpbnQzMl90IGZzX2xhc3RpYWxsb2M7
CiAgICAgICAgY2hhciBmc19zcGFyZVsyMF07CiAgICAgICAgaW50MzJfdCBmc19jaGVja3N1bTsK
fTsKCgpzdHJ1Y3QgZWZzX3NiX2luZm8gewogICAgICAgIGludDMyX3QgZnNfbWFnaWM7CiAgICAg
ICAgaW50MzJfdCBmc19zdGFydDsKICAgICAgICBpbnQzMl90IGZpcnN0X2Jsb2NrOwogICAgICAg
IGludDMyX3QgdG90YWxfYmxvY2tzOwogICAgICAgIGludDMyX3QgZ3JvdXBfc2l6ZTsKICAgICAg
ICBpbnQzMl90IGRhdGFfZnJlZTsKICAgICAgICBpbnQzMl90IGlub2RlX2ZyZWU7CiAgICAgICAg
c2hvcnQgaW5vZGVfYmxvY2tzOwogICAgICAgIHNob3J0IHRvdGFsX2dyb3VwczsKfTsKIyA2NzAg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3JvbWZzX2Zz
X3NiLmgiIDEKCgoKCgpzdHJ1Y3Qgcm9tZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX21heHNpemU7Cn07CiMgNjcxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc21iX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NtYi5oIiAxCiMg
MTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zbWIuaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlwZXMu
aCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
c21iLmgiIDIKCmVudW0gc21iX3Byb3RvY29sIHsKICAgICAgICBTTUJfUFJPVE9DT0xfTk9ORSwK
ICAgICAgICBTTUJfUFJPVE9DT0xfQ09SRSwKICAgICAgICBTTUJfUFJPVE9DT0xfQ09SRVBMVVMs
CiAgICAgICAgU01CX1BST1RPQ09MX0xBTk1BTjEsCiAgICAgICAgU01CX1BST1RPQ09MX0xBTk1B
TjIsCiAgICAgICAgU01CX1BST1RPQ09MX05UMQp9OwoKZW51bSBzbWJfY2FzZV9obmRsIHsKICAg
ICAgICBTTUJfQ0FTRV9ERUZBVUxULAogICAgICAgIFNNQl9DQVNFX0xPV0VSLAogICAgICAgIFNN
Ql9DQVNFX1VQUEVSCn07CgpzdHJ1Y3Qgc21iX2Rza2F0dHIgewogICAgICAgIF9fdTE2IHRvdGFs
OwogICAgICAgIF9fdTE2IGFsbG9jYmxvY2tzOwogICAgICAgIF9fdTE2IGJsb2Nrc2l6ZTsKICAg
ICAgICBfX3UxNiBmcmVlOwp9OwoKc3RydWN0IHNtYl9jb25uX29wdCB7CgoKICAgICAgICB1bnNp
Z25lZCBpbnQgZmQ7CgogICAgICAgIGVudW0gc21iX3Byb3RvY29sIHByb3RvY29sOwogICAgICAg
IGVudW0gc21iX2Nhc2VfaG5kbCBjYXNlX2hhbmRsaW5nOwoKCgogICAgICAgIF9fdTMyIG1heF94
bWl0OwogICAgICAgIF9fdTE2IHNlcnZlcl91aWQ7CiAgICAgICAgX191MTYgdGlkOwoKCiAgICAg
ICAgX191MTYgc2VjbW9kZTsKICAgICAgICBfX3UxNiBtYXhtdXg7CiAgICAgICAgX191MTYgbWF4
dmNzOwogICAgICAgIF9fdTE2IHJhd21vZGU7CiAgICAgICAgX191MzIgc2Vzc2tleTsKCgogICAg
ICAgIF9fdTMyIG1heHJhdzsKICAgICAgICBfX3UzMiBjYXBhYmlsaXRpZXM7CiAgICAgICAgX19z
MTYgc2VydmVyem9uZTsKfTsKCgoKCnN0cnVjdCBzbWJfbmxzX2NvZGVwYWdlIHsKICAgICAgICBj
aGFyIGxvY2FsX25hbWVbMjBdOwogICAgICAgIGNoYXIgcmVtb3RlX25hbWVbMjBdOwp9OwojIDc4
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc21iLmgiCnN0
cnVjdCBzbWJfZmF0dHIgewoKICAgICAgICBfX3UxNiBhdHRyOwoKICAgICAgICB1bnNpZ25lZCBs
b25nIGZfaW5vOwogICAgICAgIHVtb2RlX3QgZl9tb2RlOwogICAgICAgIG5saW5rX3QgZl9ubGlu
azsKICAgICAgICB1aWRfdCBmX3VpZDsKICAgICAgICBnaWRfdCBmX2dpZDsKICAgICAgICBrZGV2
X3QgZl9yZGV2OwogICAgICAgIG9mZl90IGZfc2l6ZTsKICAgICAgICB0aW1lX3QgZl9hdGltZTsK
ICAgICAgICB0aW1lX3QgZl9tdGltZTsKICAgICAgICB0aW1lX3QgZl9jdGltZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIGZfYmxrc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZfYmxvY2tzOwp9
OwoKZW51bSBzbWJfY29ubl9zdGF0ZSB7CiAgICAgICAgQ09OTl9WQUxJRCwKICAgICAgICBDT05O
X0lOVkFMSUQsCgogICAgICAgIENPTk5fUkVUUklFRCwKICAgICAgICBDT05OX1JFVFJZSU5HCn07
CiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zbWJf
ZnNfc2IuaCIgMgoKCgoKCgoKc3RydWN0IHNtYl9zYl9pbmZvIHsKICAgICAgICBlbnVtIHNtYl9j
b25uX3N0YXRlIHN0YXRlOwogICAgICAgIHN0cnVjdCBmaWxlICogc29ja19maWxlOwoKICAgICAg
ICBzdHJ1Y3Qgc21iX21vdW50X2RhdGFfa2VybmVsICptbnQ7CiAgICAgICAgdW5zaWduZWQgY2hh
ciAqdGVtcF9idWY7CgoKCgogICAgICAgIHVuc2lnbmVkIGludCBnZW5lcmF0aW9uOwogICAgICAg
IHBpZF90IGNvbm5fcGlkOwogICAgICAgIHN0cnVjdCBzbWJfY29ubl9vcHQgb3B0OwoKICAgICAg
ICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoK
ICAgICAgICBfX3UzMiBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICogcGFja2V0
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJjbHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXJy
OwoKCiAgICAgICAgdm9pZCAqZGF0YV9yZWFkeTsKCgogICAgICAgIHN0cnVjdCBubHNfdGFibGUg
KnJlbW90ZV9ubHM7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbG9jYWxfbmxzOwoKCgoKICAg
ICAgICBjaGFyICpuYW1lX2J1ZjsKCiAgICAgICAgaW50ICgqY29udmVydCkoY2hhciAqLCBpbnQs
IGNvbnN0IGNoYXIgKiwgaW50LAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBubHNfdGFi
bGUgKiwgc3RydWN0IG5sc190YWJsZSAqKTsKfTsKCgpzdGF0aWMgaW5saW5lIHZvaWQKc21iX2xv
Y2tfc2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyKQp7CiAgICAgICAgZG93bigmKHNl
cnZlci0+c2VtKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApzbWJfdW5sb2NrX3NlcnZlcihzdHJ1
Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAgIHVwKCYoc2VydmVyLT5zZW0pKTsKfQoj
IDY3MiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaGZz
X2ZzX3NiLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L2hmc19mc19zYi5oIgpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGludCAoKmhmc19u
YW1laW5fZm4pIChjaGFyICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlwZWRlZiB2b2lk
ICgqaGZzX25hbWVvdXRfZm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hhciAqLCBpbnQp
Owp0eXBlZGVmIHZvaWQgKCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwgaW5vX3QsIGNv
bnN0IGludCk7CgoKCgoKCnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwog
ICAgICAgIHN0cnVjdCBoZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWlldDsKCiAgICAg
ICAgaW50IHNfbG93ZXJjYXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAgaW50IHNfdmVy
c2lvbjsKICAgICAgICBoZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAgaGZzX25hbWVv
dXRfZm4gc19uYW1lb3V0OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7CgogICAgICAg
IGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29uc3Qgc3RydWN0
IGhmc19uYW1lICpzX3Jlc2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAgICAgICAgX191
MzIgc19jcmVhdG9yOwogICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAgdWlkX3Qgc191
aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07CiMgNjczICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9hZGZzX2ZzX3Ni
LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L2FkZnNfZnNfc2IuaCIKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFkZnNfZGlyX29wczsK
CgoKCnN0cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZzX2Rpc2NtYXAgKnNf
bWFwOwogICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAgICAgICB1aWRfdCBz
X3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfb3duZXJfbWFzazsK
ICAgICAgICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIgc19pZHNfcGVyX3pv
bmU7CiAgICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21hcF9zaXplOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQgc19tYXAyYmxrOwog
ICAgICAgIHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAgdW5zaWduZWQgaW50
IHNfdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9OwojIDY3NCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5o
IiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9x
bng0X2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L3FueDRfZnMuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvcW54NF9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9xbnh0eXBlcy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiIDIKIyA0NSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIKc3RydWN0IHFu
eDRfaW5vZGVfZW50cnkgewogICAgICAgIGNoYXIgZGlfZm5hbWVbMTZdOwogICAgICAgIHFueDRf
b2ZmX3QgZGlfc2l6ZTsKICAgICAgICBxbng0X3h0bnRfdCBkaV9maXJzdF94dG50OwogICAgICAg
IF9fdTMyIGRpX3hibGs7CiAgICAgICAgX19zMzIgZGlfZnRpbWU7CiAgICAgICAgX19zMzIgZGlf
bXRpbWU7CiAgICAgICAgX19zMzIgZGlfYXRpbWU7CiAgICAgICAgX19zMzIgZGlfY3RpbWU7CiAg
ICAgICAgcW54NF9ueHRudF90IGRpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBkaV9t
b2RlOwogICAgICAgIHFueDRfbXVpZF90IGRpX3VpZDsKICAgICAgICBxbng0X21naWRfdCBkaV9n
aWQ7CiAgICAgICAgcW54NF9ubGlua190IGRpX25saW5rOwogICAgICAgIF9fdTggZGlfemVyb1s0
XTsKICAgICAgICBxbng0X2Z0eXBlX3QgZGlfdHlwZTsKICAgICAgICBfX3U4IGRpX3N0YXR1czsK
fTsKCnN0cnVjdCBxbng0X2xpbmtfaW5mbyB7CiAgICAgICAgY2hhciBkbF9mbmFtZVs0OF07CiAg
ICAgICAgX191MzIgZGxfaW5vZGVfYmxrOwogICAgICAgIF9fdTggZGxfaW5vZGVfbmR4OwogICAg
ICAgIF9fdTggZGxfc3BhcmVbMTBdOwogICAgICAgIF9fdTggZGxfc3RhdHVzOwp9OwoKc3RydWN0
IHFueDRfeGJsayB7CiAgICAgICAgX191MzIgeGJsa19uZXh0X3hibGs7CiAgICAgICAgX191MzIg
eGJsa19wcmV2X3hibGs7CiAgICAgICAgX191OCB4YmxrX251bV94dG50czsKICAgICAgICBfX3U4
IHhibGtfc3BhcmVbM107CiAgICAgICAgX19zMzIgeGJsa19udW1fYmxvY2tzOwogICAgICAgIHFu
eDRfeHRudF90IHhibGtfeHRudHNbNjBdOwogICAgICAgIGNoYXIgeGJsa19zaWduYXR1cmVbOF07
CiAgICAgICAgcW54NF94dG50X3QgeGJsa19maXJzdF94dG50Owp9OwoKc3RydWN0IHFueDRfc3Vw
ZXJfYmxvY2sgewogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IFJvb3REaXI7CiAgICAg
ICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgSW5vZGU7CiAgICAgICAgc3RydWN0IHFueDRfaW5v
ZGVfZW50cnkgQm9vdDsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBBbHRCb290Owp9
OwojIDEwMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Fu
eDRfZnMuaCIKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnFueDRfbG9va3VwKHN0cnVjdCBpbm9kZSAq
ZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBxbng0X2Nv
dW50X2ZyZWVfYmxvY2tzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpleHRlcm4gdW5zaWduZWQg
bG9uZyBxbng0X2Jsb2NrX21hcChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGlibG9jayk7Cgpl
eHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpxbng0X2dldGJsayhzdHJ1Y3QgaW5vZGUgKiwgaW50
LCBpbnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpxbng0X2JyZWFkKHN0cnVjdCBpbm9k
ZSAqLCBpbnQsIGludCk7CgpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGly
LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2RlKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9v
cGVyYXRpb25zIHFueDRfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGlub2Rl
X29wZXJhdGlvbnMgcW54NF9kaXJfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxl
X29wZXJhdGlvbnMgcW54NF9maWxlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVy
YXRpb25zIHFueDRfZGlyX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgcW54NF9pc19mcmVlKHN0cnVj
dCBzdXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2spOwpleHRlcm4gaW50IHFueDRfc2V0X2JpdG1h
cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBsb25nIGJsb2NrLCBpbnQgYnVzeSk7CmV4dGVybiBp
bnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5
LCBpbnQgbW9kZSk7CmV4dGVybiB2b2lkIHFueDRfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9k
ZSk7CmV4dGVybiB2b2lkIHFueDRfZnJlZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0
ZXJuIGludCBxbng0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVu
dHJ5KTsKZXh0ZXJuIGludCBxbng0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnkpOwpleHRlcm4gaW50IHFueDRfc3luY19maWxlKHN0cnVjdCBmaWxlICpmaWxl
LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2lub2Rl
KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gaW50IHFueDRfZ2V0X2Jsb2NrKHN0cnVjdCBp
bm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgY3Jl
YXRlKTsKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L3FueDRfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBxbng0X3NiX2luZm8gewogICAgICAgIHN0cnVj
dCBidWZmZXJfaGVhZCAqc2JfYnVmOwogICAgICAgIHN0cnVjdCBxbng0X3N1cGVyX2Jsb2NrICpz
YjsKICAgICAgICB1bnNpZ25lZCBpbnQgVmVyc2lvbjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9k
ZV9lbnRyeSAqQml0TWFwOwp9OwojIDY3NSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDEKIyAxNiAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zcGlubG9j
ay5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC90cXVldWUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9saXN0LmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90cXVldWUuaCIgMgojIDM4ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiCnN0cnVj
dCB0cV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNp
Z25lZCBsb25nIHN5bmM7CiAgICAgICAgdm9pZCAoKnJvdXRpbmUpKHZvaWQgKik7CiAgICAgICAg
dm9pZCAqZGF0YTsKfTsKIyA2NCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3RxdWV1ZS5oIgp0eXBlZGVmIHN0cnVjdCBsaXN0X2hlYWQgdGFza19xdWV1ZTsK
CgoKCmV4dGVybiB0YXNrX3F1ZXVlIHRxX3RpbWVyLCB0cV9pbW1lZGlhdGUsIHRxX2Rpc2s7CiMg
OTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90cXVldWUu
aCIKZXh0ZXJuIHNwaW5sb2NrX3QgdHF1ZXVlX2xvY2s7CgoKCgoKc3RhdGljIGlubGluZSBpbnQg
cXVldWVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICpiaF9wb2ludGVyLCB0YXNrX3F1ZXVlICpiaF9s
aXN0KQp7CiAgICAgICAgaW50IHJldCA9IDA7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0
KDAsJmJoX3BvaW50ZXItPnN5bmMpKSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwogICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsg
cG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnRxdWV1ZV9s
b2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZiaF9wb2lu
dGVyLT5saXN0LCBiaF9saXN0KTsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDAp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToi
bWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgcmV0ID0gMTsKICAg
ICAgICB9CiAgICAgICAgcmV0dXJuIHJldDsKfQoKCgoKCmV4dGVybiB2b2lkIF9fcnVuX3Rhc2tf
cXVldWUodGFza19xdWV1ZSAqbGlzdCk7CgpzdGF0aWMgaW5saW5lIHZvaWQgcnVuX3Rhc2tfcXVl
dWUodGFza19xdWV1ZSAqbGlzdCkKewogICAgICAgIGlmICgoIWxpc3RfZW1wdHkoJipsaXN0KSkp
CiAgICAgICAgICAgICAgICBfX3J1bl90YXNrX3F1ZXVlKGxpc3QpOwp9CiMgOSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDIK
IyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3JlaXNl
cmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jawp7CiAgX191MzIgc19ibG9j
a19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOwogIF9fdTMyIHNfcm9vdF9ibG9jazsKICBf
X3UzMiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2RldjsKIyA0MyAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgi
CiAgX191MzIgc19vcmlnX2pvdXJuYWxfc2l6ZTsKICBfX3UzMiBzX2pvdXJuYWxfdHJhbnNfbWF4
IDsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2tfY291bnQgOwogIF9fdTMyIHNfam91cm5hbF9tYXhf
YmF0Y2ggOwogIF9fdTMyIHNfam91cm5hbF9tYXhfY29tbWl0X2FnZSA7CiAgX191MzIgc19qb3Vy
bmFsX21heF90cmFuc19hZ2UgOwogIF9fdTE2IHNfYmxvY2tzaXplOwogIF9fdTE2IHNfb2lkX21h
eHNpemU7CiAgX191MTYgc19vaWRfY3Vyc2l6ZTsKICBfX3UxNiBzX3N0YXRlOwogIGNoYXIgc19t
YWdpY1sxMl07CiAgX191MzIgc19oYXNoX2Z1bmN0aW9uX2NvZGU7CiAgX191MTYgc190cmVlX2hl
aWdodDsKICBfX3UxNiBzX2JtYXBfbnI7CiAgX191MTYgc192ZXJzaW9uOwoKCgoKICBfX3UxNiBz
X3Jlc2VydmVkOwogIF9fdTMyIHNfaW5vZGVfZ2VuZXJhdGlvbjsKICBjaGFyIHNfdW51c2VkWzEy
NF0gOwp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CiMgMTIxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKc3RydWN0
IHJlaXNlcmZzX3N1cGVyX2Jsb2NrX3YxCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMy
IHNfZnJlZV9ibG9ja3M7CiAgX191MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9i
bG9jazsKICBfX3UzMiBzX2pvdXJuYWxfZGV2OwogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7
CiAgX191MzIgc19qb3VybmFsX3RyYW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2Nv
dW50IDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4
X2NvbW1pdF9hZ2UgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBz
X2Jsb2Nrc2l6ZTsKICBfX3UxNiBzX29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7
CiAgX191MTYgc19zdGF0ZTsKICBjaGFyIHNfbWFnaWNbMTZdOwogIF9fdTE2IHNfdHJlZV9oZWln
aHQ7CiAgX191MTYgc19ibWFwX25yOwogIF9fdTMyIHNfcmVzZXJ2ZWQ7Cn0gX19hdHRyaWJ1dGVf
XyAoKF9fcGFja2VkX18pKTsKIyAyMDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9j
bm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA7CiAga2Rldl90IGRldiA7CiAgdW5zaWdu
ZWQgbG9uZyBibG9ja25yIDsKICBpbnQgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFs
X2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7CiAg
c3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJmc19q
b3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmhu
ZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBjaGFy
ICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19s
aXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9saXN0
IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpzdHJ1
Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwogIGlu
dCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2lnbmVk
IGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCn0gOwoK
CgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCB7CiAgdW5zaWduZWQgbG9uZyBqX3N0
YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICBhdG9taWNfdCBqX25vbnplcm9sZW4gOwog
IGF0b21pY190IGpfY29tbWl0X2xlZnQgOwogIGF0b21pY190IGpfZmx1c2hpbmcgOwogIGF0b21p
Y190IGpfY29tbWl0X2ZsdXNoaW5nIDsKICBhdG9taWNfdCBqX29sZGVyX2NvbW1pdHNfZG9uZSA7
CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB0aW1lX3Qgal90aW1lc3RhbXAgOwogIHN0
cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCAqal9saXN0X2JpdG1hcCA7CiAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpqX2NvbW1pdF9iaCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpf
cmVhbGJsb2NrIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9mcmVlZGxpc3Qg
OwogIHdhaXRfcXVldWVfaGVhZF90IGpfY29tbWl0X3dhaXQgOwogIHdhaXRfcXVldWVfaGVhZF90
IGpfZmx1c2hfd2FpdCA7Cn0gOwoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCA7CgpzdHJ1Y3Qg
cmVpc2VyZnNfam91cm5hbCB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIGpfYXBfYmxvY2tzIDsK
ICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9sYXN0IDsKICBzdHJ1Y3QgcmVpc2Vy
ZnNfam91cm5hbF9jbm9kZSAqal9maXJzdCA7CgogIGludCBqX3N0YXRlIDsKICB1bnNpZ25lZCBs
b25nIGpfdHJhbnNfaWQgOwogIHVuc2lnbmVkIGxvbmcgal9tb3VudF9pZCA7CiAgdW5zaWduZWQg
bG9uZyBqX3N0YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICB1bnNpZ25lZCBsb25nIGpf
bGVuX2FsbG9jIDsKICBhdG9taWNfdCBqX3djb3VudCA7CiAgdW5zaWduZWQgbG9uZyBqX2Jjb3Vu
dCA7CiAgdW5zaWduZWQgbG9uZyBqX2ZpcnN0X3VuZmx1c2hlZF9vZmZzZXQgOwogIHVuc2lnbmVk
IGxvbmcgal9sYXN0X2ZsdXNoX3RyYW5zX2lkIDsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmpfaGVh
ZGVyX2JoIDsKCgoKCiAgc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCAqal9mbHVzaF9wYWdlcyA7
CiAgdGltZV90IGpfdHJhbnNfc3RhcnRfdGltZSA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal93YWl0
IDsKICBhdG9taWNfdCBqX3dsb2NrIDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2pvaW5fd2FpdCA7
CiAgYXRvbWljX3Qgal9qbG9jayA7CiAgaW50IGpfam91cm5hbF9saXN0X2luZGV4IDsKICBpbnQg
al9saXN0X2JpdG1hcF9pbmRleCA7CiAgaW50IGpfbXVzdF93YWl0IDsKICBpbnQgal9uZXh0X2Z1
bGxfZmx1c2ggOwogIGludCBqX25leHRfYXN5bmNfZmx1c2ggOwoKICBpbnQgal9jbm9kZV91c2Vk
IDsKICBpbnQgal9jbm9kZV9mcmVlIDsKCiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmpfY25vZGVfZnJlZV9saXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9j
bm9kZV9mcmVlX29yaWcgOwoKICBpbnQgal9mcmVlX2JpdG1hcF9ub2RlcyA7CiAgaW50IGpfdXNl
ZF9iaXRtYXBfbm9kZXMgOwogIHN0cnVjdCBsaXN0X2hlYWQgal9iaXRtYXBfbm9kZXMgOwogIHN0
cnVjdCBpbm9kZSBqX2R1bW15X2lub2RlIDsKICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAg
al9saXN0X2JpdG1hcFs1XSA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCBqX2pvdXJu
YWxfbGlzdFs2NF0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2hhc2hfdGFi
bGVbODE5Ml0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2xpc3RfaGFzaF90
YWJsZVs4MTkyXSA7CgogIHN0cnVjdCBsaXN0X2hlYWQgal9wcmVhbGxvY19saXN0Owp9OwoKCgoK
dHlwZWRlZiBfX3UzMiAoKmhhc2hmX3QpIChjb25zdCBzaWduZWQgY2hhciAqLCBpbnQpOwoKCnN0
cnVjdCByZWlzZXJmc19zYl9pbmZvCnsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwoK
CiAgICBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKiBzX3JzOwogICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICoqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91
cm5hbCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5k
X2lvX2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hh
c2hfZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoKCgogICAgd2Fp
dF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlvbl9jb3VudGVy
OwoKCgogICAgaW50IHNfa21hbGxvY3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNf
ZGlza193cml0ZXM7CiAgICBpbnQgc19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwog
ICAgaW50IHNfdW5uZWVkZWRfbGVmdF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5
X2tleV9yZWFkYTsKICAgIGludCBzX2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFy
Y2g7CiAgICBpbnQgc19kaXJlY3QyaW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7
Cn07CiMgNDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
cmVpc2VyZnNfZnNfc2IuaCIKdm9pZCByZWlzZXJmc19maWxlX2J1ZmZlciAoc3RydWN0IGJ1ZmZl
cl9oZWFkICogYmgsIGludCBsaXN0KTsKaW50IHJlaXNlcmZzX2lzX3N1cGVyKHN0cnVjdCBzdXBl
cl9ibG9jayAqcykgOwppbnQgam91cm5hbF9tYXJrX2RpcnR5KHN0cnVjdCByZWlzZXJmc190cmFu
c2FjdGlvbl9oYW5kbGUgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBidWZmZXJfaGVh
ZCAqYmgpIDsKaW50IGZsdXNoX29sZF9jb21taXRzKHN0cnVjdCBzdXBlcl9ibG9jayAqcywgaW50
KSA7CmludCBzaG93X3JlaXNlcmZzX2xvY2tzKHZvaWQpIDsKaW50IHJlaXNlcmZzX3Jlc2l6ZShz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9uZykgOwojIDY3NiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEKIyAxMiAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2Jmc19mc19zYi5o
IgpzdHJ1Y3QgYmZzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfYmxvY2tzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJlZWI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9m
cmVlaTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX2lvZmY7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzaV9sZl9zYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfZWJsazsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNpX2xhc3RpOwogICAgICAgIGNoYXIgKiBzaV9pbWFwOwogICAgICAg
IHN0cnVjdCBidWZmZXJfaGVhZCAqIHNpX3NiaDsKICAgICAgICBzdHJ1Y3QgYmZzX3N1cGVyX2Js
b2NrICogc2lfYmZzX3NiOwp9OwojIDY3NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIgojcHJhZ21hIHBhY2soMSkK
IyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3VkZl9m
c19zYi5oIgpzdHJ1Y3QgdWRmX3NwYXJpbmdfZGF0YQp7CiAgICAgICAgX191MTYgc19wYWNrZXRf
bGVuOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19zcGFyX21hcFs0XTsKfTsKCnN0cnVj
dCB1ZGZfdmlydHVhbF9kYXRhCnsKICAgICAgICBfX3UzMiBzX251bV9lbnRyaWVzOwogICAgICAg
IF9fdTE2IHNfc3RhcnRfb2Zmc2V0Owp9OwoKc3RydWN0IHVkZl9iaXRtYXAKewogICAgICAgIF9f
dTMyIHNfZXh0TGVuZ3RoOwogICAgICAgIF9fdTMyIHNfZXh0UG9zaXRpb247CiAgICAgICAgX191
MTYgc19ucl9ncm91cHM7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqc19ibG9ja19iaXRt
YXA7Cn07CgpzdHJ1Y3QgdWRmX3BhcnRfbWFwCnsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAg
ICAgICAgICAgICAgIHN0cnVjdCB1ZGZfYml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAg
IHN0cnVjdCBpbm9kZSAqc190YWJsZTsKICAgICAgICB9IHNfdXNwYWNlOwogICAgICAgIHVuaW9u
CiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9iaXRtYXAgKnNfYml0bWFwOwog
ICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICpzX3RhYmxlOwogICAgICAgIH0gc19mc3BhY2U7
CiAgICAgICAgX191MzIgc19wYXJ0aXRpb25fcm9vdDsKICAgICAgICBfX3UzMiBzX3BhcnRpdGlv
bl9sZW47CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fdHlwZTsKICAgICAgICBfX3UxNiBzX3Bh
cnRpdGlvbl9udW07CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgdWRmX3NwYXJpbmdfZGF0YSBzX3NwYXJpbmc7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRm
X3ZpcnR1YWxfZGF0YSBzX3ZpcnR1YWw7CiAgICAgICAgfSBzX3R5cGVfc3BlY2lmaWM7CiAgICAg
ICAgX191MzIgKCpzX3BhcnRpdGlvbl9mdW5jKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgX191MzIs
IF9fdTE2LCBfX3UzMik7CiAgICAgICAgX191MTYgc192b2x1bWVzZXFudW07CiAgICAgICAgX191
MTYgc19wYXJ0aXRpb25fZmxhZ3M7Cn07CgojcHJhZ21hIHBhY2soKQoKc3RydWN0IHVkZl9zYl9p
bmZvCnsKICAgICAgICBzdHJ1Y3QgdWRmX3BhcnRfbWFwICpzX3BhcnRtYXBzOwogICAgICAgIF9f
dTggc192b2xpZGVudFszMl07CgoKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbnM7CiAgICAgICAg
X191MTYgc19wYXJ0aXRpb247CgoKICAgICAgICBfX3MzMiBzX3Nlc3Npb247CiAgICAgICAgX191
MzIgc19hbmNob3JbNF07CiAgICAgICAgX191MzIgc19sYXN0YmxvY2s7CgogICAgICAgIHN0cnVj
dCBidWZmZXJfaGVhZCAqc19sdmlkYmg7CgoKICAgICAgICBtb2RlX3Qgc191bWFzazsKICAgICAg
ICBnaWRfdCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKCgogICAgICAgIHRpbWVfdCBzX3Jl
Y29yZHRpbWU7CgoKICAgICAgICBfX3UxNiBzX3NlcmlhbG51bTsKCgogICAgICAgIF9fdTE2IHNf
dWRmcmV2OwoKCiAgICAgICAgX191MzIgc19mbGFnczsKCgogICAgICAgIHN0cnVjdCBubHNfdGFi
bGUgKnNfbmxzX21hcDsKCgogICAgICAgIHN0cnVjdCBpbm9kZSAqc192YXQ7Cn07CiMgNjc4ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9uY3BfZnNfc2Iu
aCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
bmNwX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L3R5cGVzLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L25jcF9mc19zYi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEyICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmNwX21vdW50Lmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmNw
LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L25jcC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9uY3AuaCIgMgojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvbmNwLmgiCnN0cnVjdCBuY3BfcmVxdWVzdF9oZWFkZXIgewogICAgICAgIF9f
dTE2IHR5cGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBzZXF1ZW5jZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGNvbm5fbG93IF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggdGFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3U4IGNvbm5faGlnaCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3U4IGZ1bmN0aW9uIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVsw
XSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCgoKCnN0cnVjdCBuY3BfcmVwbHlfaGVhZGVy
IHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2xv
dyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191OCBjb21wbGV0aW9uX2NvZGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191OCBjb25uZWN0aW9uX3N0YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCgoKc3RydWN0
IG5jcF92b2x1bWVfaW5mbyB7CiAgICAgICAgX191MzIgdG90YWxfYmxvY2tzOwogICAgICAgIF9f
dTMyIGZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIHB1cmdlYWJsZV9ibG9ja3M7CiAgICAgICAg
X191MzIgbm90X3lldF9wdXJnZWFibGVfYmxvY2tzOwogICAgICAgIF9fdTMyIHRvdGFsX2Rpcl9l
bnRyaWVzOwogICAgICAgIF9fdTMyIGF2YWlsYWJsZV9kaXJfZW50cmllczsKICAgICAgICBfX3U4
IHNlY3RvcnNfcGVyX2Jsb2NrOwogICAgICAgIGNoYXIgdm9sdW1lX25hbWVbKDE2KSArIDFdOwp9
OwojIDExMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25j
cC5oIgpzdHJ1Y3QgbndfaW5mb19zdHJ1Y3QgewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0
ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3UzMiBkYXRhU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UzMiB0b3RhbFN0cmVhbVNpemUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAg
ICAgICAgX191MTYgbnVtYmVyT2ZTdHJlYW1zIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTE2IGNyZWF0aW9uVGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg
Y3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRp
bWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg
X191MTYgaW5oZXJpdGVkUmlnaHRzTWFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg
RG9zRGlyTnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJl
ciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTMyIE5TQ3JlYXRvciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IG5hbWVMZW4gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBl
bnRyeU5hbWVbMjU2XSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKIyAxNTYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9uY3AuaCIKc3RydWN0IG53X21v
ZGlmeV9kb3NfaW5mbyB7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UxNiBtb2RpZnlEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1v
ZGlmeVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgbW9kaWZpZXJJ
RCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlRGF0ZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGltZSBfX2F0dHJpYnV0
ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRhbmNlR3JhbnRNYXNrIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRhbmNlUmV2b2tlTWFzayBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtYXhpbXVtU3BhY2UgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7Cn07CgpzdHJ1Y3Qgbndfc2VhcmNoX3NlcXVlbmNlIHsKICAgICAgICBfX3U4IHZvbE51
bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJCYXNlIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHNlcXVlbmNlIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwp9OwojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvbmNwX21vdW50LmgiIDIKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIgpzdHJ1Y3QgbmNwX21vdW50X2RhdGEgewog
ICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAg
X19rZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19w
aWQ7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAg
IHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50
OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlk
OwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmls
ZV9tb2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5j
cF9tb3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBs
b25nIGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtb3VudGVkX3VpZDsKCiAgICAgICAg
bG9uZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNp
Z25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVkIGludCByZXRyeV9jb3VudDsKCgoK
ICAgICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdpZDsKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJf
bW9kZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgaW50X2ZsYWdzOwoKICAgICAgICBf
X2tlcm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAgICAgIF9fa2VybmVsX3BpZF90IHdkb2df
cGlkOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRp
bWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1
aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90
IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21vZGU7Cn07CiMgMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIg
MgoKCgoKCnN0cnVjdCBuY3Bfc2VydmVyIHsKCiAgICAgICAgc3RydWN0IG5jcF9tb3VudF9kYXRh
X2tlcm5lbCBtOwoKCgogICAgICAgIF9fdTggbmFtZV9zcGFjZVsoNjQpICsgMl07CgogICAgICAg
IHN0cnVjdCBmaWxlICpuY3BfZmlscDsKCiAgICAgICAgdTggc2VxdWVuY2U7CiAgICAgICAgdTgg
dGFzazsKICAgICAgICB1MTYgY29ubmVjdGlvbjsKCiAgICAgICAgdTggY29tcGxldGlvbjsKICAg
ICAgICB1OCBjb25uX3N0YXR1czsKCgoKICAgICAgICBpbnQgYnVmZmVyX3NpemU7CgogICAgICAg
IGludCByZXBseV9zaXplOwoKICAgICAgICBpbnQgcGFja2V0X3NpemU7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciAqcGFja2V0OwoKCiAgICAgICAgaW50IGxvY2s7CiAgICAgICAgc3RydWN0IHNlbWFw
aG9yZSBzZW07CgogICAgICAgIGludCBjdXJyZW50X3NpemU7CiAgICAgICAgaW50IGhhc19zdWJm
dW5jdGlvbjsKICAgICAgICBpbnQgbmNwX3JlcGx5X3NpemU7CgogICAgICAgIGludCByb290X3Nl
dHVwZWQ7CgoKICAgICAgICBpbnQgc2lnbl93YW50ZWQ7CiAgICAgICAgaW50IHNpZ25fYWN0aXZl
OwogICAgICAgIGNoYXIgc2lnbl9yb290WzhdOwogICAgICAgIGNoYXIgc2lnbl9sYXN0WzE2XTsK
CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBpbnQgYXV0aF90eXBlOwogICAgICAg
ICAgICAgICAgc2l6ZV90IG9iamVjdF9uYW1lX2xlbjsKICAgICAgICAgICAgICAgIHZvaWQqIG9i
amVjdF9uYW1lOwogICAgICAgICAgICAgICAgaW50IG9iamVjdF90eXBlOwogICAgICAgIH0gYXV0
aDsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHNpemVfdCBsZW47CiAgICAgICAg
ICAgICAgICB2b2lkKiBkYXRhOwogICAgICAgIH0gcHJpdjsKCgogICAgICAgIHN0cnVjdCBubHNf
dGFibGUgKm5sc192b2w7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxzX2lvOwoKCiAgICAg
ICAgaW50IGRlbnRyeV90dGw7CgoKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cn07CiMgOTIg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9uY3BfZnNfc2Iu
aCIKc3RhdGljIGlubGluZSBpbnQgbmNwX2Nvbm5fdmFsaWQoc3RydWN0IG5jcF9zZXJ2ZXIgKnNl
cnZlcikKewogICAgICAgIHJldHVybiAoKHNlcnZlci0+Y29ubl9zdGF0dXMgJiAweDExKSA9PSAw
KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5jcF9pbnZhbGlkYXRlX2Nvbm4oc3RydWN0IG5jcF9z
ZXJ2ZXIgKnNlcnZlcikKewogICAgICAgIHNlcnZlci0+Y29ubl9zdGF0dXMgfD0gMHgwMTsKfQoj
IDY3OSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdXNi
ZGV2X2ZzX3NiLmgiIDEKc3RydWN0IHVzYmRldl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIHNsaXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaWxpc3Q7CiAgICAgICAgdWlk
X3QgZGV2dWlkOwogICAgICAgIGdpZF90IGRldmdpZDsKICAgICAgICB1bW9kZV90IGRldm1vZGU7
CiAgICAgICAgdWlkX3QgYnVzdWlkOwogICAgICAgIGdpZF90IGJ1c2dpZDsKICAgICAgICB1bW9k
ZV90IGJ1c21vZGU7CiAgICAgICAgdWlkX3QgbGlzdHVpZDsKICAgICAgICBnaWRfdCBsaXN0Z2lk
OwogICAgICAgIHVtb2RlX3QgbGlzdG1vZGU7Cn07CiMgNjgwICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jcmFtZnNfZnNfc2IuaCIgMQojIDY4MSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2Iu
aCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L3R5cGVzLmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgOCAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAxCiMg
MTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb21wbGV0
aW9uLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L3dhaXQuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvY29tcGxldGlvbi5oIiAyCgpzdHJ1Y3QgY29tcGxldGlvbiB7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGRvbmU7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKfTsKCgoKCgoKCnN0
YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24gKngpCnsK
ICAgICAgICB4LT5kb25lID0gMDsKICAgICAgICBpbml0X3dhaXRxdWV1ZV9oZWFkKCZ4LT53YWl0
KTsKfQoKZXh0ZXJuIHZvaWQgd2FpdF9mb3JfY29tcGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAq
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGNvbXBsZXRlKHN0cnVj
dCBjb21wbGV0aW9uICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc2VtYXBob3Jl
LmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L2pmZnMyX2ZzX3NiLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIgpzdHJ1Y3QgamZmczJf
c2JfaW5mbyB7CiAgICAgICAgc3RydWN0IG10ZF9pbmZvICptdGQ7CgogICAgICAgIF9fdTMyIGhp
Z2hlc3RfaW5vOwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBzcGlubG9ja190
IG5vZGVsaXN0X2xvY2s7CgoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmdjX3Rhc2s7CiAg
ICAgICAgc3RydWN0IHNlbWFwaG9yZSBnY190aHJlYWRfc3RhcnQ7CiAgICAgICAgc3RydWN0IGNv
bXBsZXRpb24gZ2NfdGhyZWFkX2V4aXQ7CgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBhbGxv
Y19zZW07CgoKCgogICAgICAgIF9fdTMyIGZsYXNoX3NpemU7CiAgICAgICAgX191MzIgdXNlZF9z
aXplOwogICAgICAgIF9fdTMyIGRpcnR5X3NpemU7CiAgICAgICAgX191MzIgZnJlZV9zaXplOwog
ICAgICAgIF9fdTMyIGVyYXNpbmdfc2l6ZTsKICAgICAgICBfX3UzMiBiYWRfc2l6ZTsKICAgICAg
ICBfX3UzMiBzZWN0b3Jfc2l6ZTsKCgoKICAgICAgICBfX3UzMiBucl9mcmVlX2Jsb2NrczsKICAg
ICAgICBfX3UzMiBucl9lcmFzaW5nX2Jsb2NrczsKCiAgICAgICAgX191MzIgbnJfYmxvY2tzOwog
ICAgICAgIHN0cnVjdCBqZmZzMl9lcmFzZWJsb2NrICpibG9ja3M7CgogICAgICAgIHN0cnVjdCBq
ZmZzMl9lcmFzZWJsb2NrICpuZXh0YmxvY2s7CgogICAgICAgIHN0cnVjdCBqZmZzMl9lcmFzZWJs
b2NrICpnY2Jsb2NrOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNsZWFuX2xpc3Q7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZXJhc2luZ19saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZXJhc2VfcGVuZGluZ19saXN0
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZXJhc2VfY29tcGxldGVfbGlzdDsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGZyZWVfbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJhZF9s
aXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX3VzZWRfbGlzdDsKCiAgICAgICAgc3Bp
bmxvY2tfdCBlcmFzZV9jb21wbGV0aW9uX2xvY2s7CgogICAgICAgIHdhaXRfcXVldWVfaGVhZF90
IGVyYXNlX3dhaXQ7CiAgICAgICAgc3RydWN0IGpmZnMyX2lub2RlX2NhY2hlICppbm9jYWNoZV9s
aXN0WzFdOwogICAgICAgIHNwaW5sb2NrX3QgaW5vY2FjaGVfbG9jazsKfTsKIyA2ODIgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4g
c3RydWN0IGxpc3RfaGVhZCBzdXBlcl9ibG9ja3M7CmV4dGVybiBzcGlubG9ja190IHNiX2xvY2s7
CgoKCnN0cnVjdCBzdXBlcl9ibG9jayB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2xpc3Q7
CiAgICAgICAga2Rldl90IHNfZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja3NpemU7
CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2Jsb2Nrc2l6ZV9iaXRzOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgc19kaXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzX21heGJ5dGVzOwogICAg
ICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpzX3R5cGU7CiAgICAgICAgc3RydWN0IHN1cGVy
X29wZXJhdGlvbnMgKnNfb3A7CiAgICAgICAgc3RydWN0IGRxdW90X29wZXJhdGlvbnMgKmRxX29w
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf
bWFnaWM7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqc19yb290OwogICAgICAgIHN0cnVjdCByd19z
ZW1hcGhvcmUgc191bW91bnQ7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX2xvY2s7CiAgICAg
ICAgaW50IHNfY291bnQ7CiAgICAgICAgYXRvbWljX3Qgc19hY3RpdmU7CgogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgc19kaXJ0eTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfbG9ja2VkX2lu
b2RlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZmlsZXM7CgogICAgICAgIHN0cnVjdCBi
bG9ja19kZXZpY2UgKnNfYmRldjsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfaW5zdGFuY2Vz
OwogICAgICAgIHN0cnVjdCBxdW90YV9tb3VudF9vcHRpb25zIHNfZHF1b3Q7CgogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9zYl9pbmZvIG1pbml4X3NiOwogICAg
ICAgICAgICAgICAgc3RydWN0IGV4dDJfc2JfaW5mbyBleHQyX3NiOwogICAgICAgICAgICAgICAg
c3RydWN0IGhwZnNfc2JfaW5mbyBocGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IG50ZnNf
c2JfaW5mbyBudGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IG1zZG9zX3NiX2luZm8gbXNk
b3Nfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvZnNfc2JfaW5mbyBpc29mc19zYjsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBuZnNfc2JfaW5mbyBuZnNfc2I7CiAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc3lzdl9zYl9pbmZvIHN5c3Zfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWZmc19z
Yl9pbmZvIGFmZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWZzX3NiX2luZm8gdWZzX3Ni
OwogICAgICAgICAgICAgICAgc3RydWN0IGVmc19zYl9pbmZvIGVmc19zYjsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBzaG1lbV9zYl9pbmZvIHNobWVtX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IHJvbWZzX3NiX2luZm8gcm9tZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc21iX3NiX2lu
Zm8gc21iZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZzX3NiX2luZm8gaGZzX3NiOwog
ICAgICAgICAgICAgICAgc3RydWN0IGFkZnNfc2JfaW5mbyBhZGZzX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IHFueDRfc2JfaW5mbyBxbng0X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHJl
aXNlcmZzX3NiX2luZm8gcmVpc2VyZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYmZzX3Ni
X2luZm8gYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zYl9pbmZvIHVkZl9zYjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCBuY3Bfc2VydmVyIG5jcGZzX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IHVzYmRldl9zYl9pbmZvIHVzYmRldmZzX3NiOwogICAgICAgICAgICAgICAgc3Ry
dWN0IGpmZnMyX3NiX2luZm8gamZmczJfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgY3JhbWZz
X3NiX2luZm8gY3JhbWZzX3NiOwogICAgICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19zYnA7CiAg
ICAgICAgfSB1OwoKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfdmZzX3JlbmFtZV9zZW07
CiMgNzU0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMu
aCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhfc2VtOwp9OwoKCgoK
ZXh0ZXJuIGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGlu
dCk7CmV4dGVybiBpbnQgdmZzX21rZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICos
IGludCk7CmV4dGVybiBpbnQgdmZzX21rbm9kKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5
ICosIGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2xpbmsoc3RydWN0
IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2
ZnNfcm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZz
X3VubGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2ZnNf
cmVuYW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICopOwojIDc4OCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2ZzLmgiCnR5cGVkZWYgaW50ICgqZmlsbGRpcl90KSh2b2lkICosIGNvbnN0
IGNoYXIgKiwgaW50LCBsb2ZmX3QsIGlub190LCB1bnNpZ25lZCk7CgpzdHJ1Y3QgYmxvY2tfZGV2
aWNlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKm9wZW4pIChzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCppb2N0bCkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
ZmlsZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqY2hlY2tfbWVk
aWFfY2hhbmdlKSAoa2Rldl90KTsKICAgICAgICBpbnQgKCpyZXZhbGlkYXRlKSAoa2Rldl90KTsK
fTsKCgoKCgoKc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB7CiAgICAgICAgc3RydWN0IG1vZHVsZSAq
b3duZXI7CiAgICAgICAgbG9mZl90ICgqbGxzZWVrKSAoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBp
bnQpOwogICAgICAgIHNzaXplX3QgKCpyZWFkKSAoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXpl
X3QsIGxvZmZfdCAqKTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGUpIChzdHJ1Y3QgZmlsZSAqLCBj
b25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgICAgIGludCAoKnJlYWRkaXIpIChz
dHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7CiAgICAgICAgdW5zaWduZWQgaW50ICgq
cG9sbCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsKICAgICAg
ICBpbnQgKCppb2N0bCkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBp
bnQsIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKm1tYXApIChzdHJ1Y3QgZmlsZSAqLCBz
dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpmbHVzaCkgKHN0cnVjdCBmaWxlICop
OwogICAgICAgIGludCAoKnJlbGVhc2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7
CiAgICAgICAgaW50ICgqZnN5bmMpIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGlu
dCBkYXRhc3luYyk7CiAgICAgICAgaW50ICgqZmFzeW5jKSAoaW50LCBzdHJ1Y3QgZmlsZSAqLCBp
bnQpOwogICAgICAgIGludCAoKmxvY2spIChzdHJ1Y3QgZmlsZSAqLCBpbnQsIHN0cnVjdCBmaWxl
X2xvY2sgKik7CiAgICAgICAgc3NpemVfdCAoKnJlYWR2KSAoc3RydWN0IGZpbGUgKiwgY29uc3Qg
c3RydWN0IGlvdmVjICosIHVuc2lnbmVkIGxvbmcsIGxvZmZfdCAqKTsKICAgICAgICBzc2l6ZV90
ICgqd3JpdGV2KSAoc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlvdmVjICosIHVuc2lnbmVk
IGxvbmcsIGxvZmZfdCAqKTsKICAgICAgICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3QgZmls
ZSAqLCBzdHJ1Y3QgcGFnZSAqLCBpbnQsIHNpemVfdCwgbG9mZl90ICosIGludCk7CiAgICAgICAg
dW5zaWduZWQgbG9uZyAoKmdldF91bm1hcHBlZF9hcmVhKShzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKfTsK
CnN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHsKICAgICAgICBpbnQgKCpjcmVhdGUpIChzdHJ1Y3Qg
aW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosaW50KTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogKCps
b29rdXApIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKmxp
bmspIChzdHJ1Y3QgZGVudHJ5ICosc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKICAg
ICAgICBpbnQgKCp1bmxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAg
ICAgIGludCAoKnN5bWxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosY29uc3Qg
Y2hhciAqKTsKICAgICAgICBpbnQgKCpta2RpcikgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50
cnkgKixpbnQpOwogICAgICAgIGludCAoKnJtZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRl
bnRyeSAqKTsKICAgICAgICBpbnQgKCpta25vZCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50
cnkgKixpbnQsaW50KTsKICAgICAgICBpbnQgKCpyZW5hbWUpIChzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IGRlbnRyeSAqLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQgKCpyZWFkbGluaykgKHN0cnVjdCBkZW50cnkgKiwg
Y2hhciAqLGludCk7CiAgICAgICAgaW50ICgqZm9sbG93X2xpbmspIChzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCBuYW1laWRhdGEgKik7CiAgICAgICAgdm9pZCAoKnRydW5jYXRlKSAoc3RydWN0IGlu
b2RlICopOwogICAgICAgIGludCAoKnBlcm1pc3Npb24pIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsK
ICAgICAgICBpbnQgKCpyZXZhbGlkYXRlKSAoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQg
KCpzZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiAgICAgICAgaW50
ICgqZ2V0YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRyICopOwp9OwoKCgoKCnN0
cnVjdCBzdXBlcl9vcGVyYXRpb25zIHsKICAgICAgICB2b2lkICgqcmVhZF9pbm9kZSkgKHN0cnVj
dCBpbm9kZSAqKTsKCgoKCgoKCiAgICAgICAgdm9pZCAoKnJlYWRfaW5vZGUyKSAoc3RydWN0IGlu
b2RlICosIHZvaWQgKikgOwogICAgICAgIHZvaWQgKCpkaXJ0eV9pbm9kZSkgKHN0cnVjdCBpbm9k
ZSAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsK
ICAgICAgICB2b2lkICgqcHV0X2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQg
KCpkZWxldGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAoKnB1dF9zdXBl
cikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXIpIChz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgdm9pZCAoKndyaXRlX3N1cGVyX2xvY2tmcykg
KHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqdW5sb2NrZnMpIChzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKik7CiAgICAgICAgaW50ICgqc3RhdGZzKSAoc3RydWN0IHN1cGVyX2Jsb2Nr
ICosIHN0cnVjdCBzdGF0ZnMgKik7CiAgICAgICAgaW50ICgqcmVtb3VudF9mcykgKHN0cnVjdCBz
dXBlcl9ibG9jayAqLCBpbnQgKiwgY2hhciAqKTsKICAgICAgICB2b2lkICgqY2xlYXJfaW5vZGUp
IChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAoKnVtb3VudF9iZWdpbikgKHN0cnVjdCBz
dXBlcl9ibG9jayAqKTsKIyA4OTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9mcy5oIgogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmZoX3RvX2RlbnRyeSko
c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgX191MzIgKmZoLCBpbnQgbGVuLCBpbnQgZmh0eXBlLCBp
bnQgcGFyZW50KTsKICAgICAgICBpbnQgKCpkZW50cnlfdG9fZmgpKHN0cnVjdCBkZW50cnkgKiwg
X191MzIgKmZoLCBpbnQgKmxlbnAsIGludCBuZWVkX3BhcmVudCk7Cn07CiMgOTA3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQg
X19tYXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpzdGF0aWMgaW5saW5lIHZv
aWQgbWFya19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJr
X2lub2RlX2RpcnR5KGlub2RlLCAoMSB8IDIgfCA0KSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBt
YXJrX2lub2RlX2RpcnR5X3N5bmMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFy
a19pbm9kZV9kaXJ0eShpbm9kZSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2Rl
X2RpcnR5X3BhZ2VzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5vZGVf
ZGlydHkoaW5vZGUsIDQpOwp9CgpzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyB7CiAgICAgICAgdm9p
ZCAoKmluaXRpYWxpemUpIChzdHJ1Y3QgaW5vZGUgKiwgc2hvcnQpOwogICAgICAgIHZvaWQgKCpk
cm9wKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIGludCAoKmFsbG9jX2Jsb2NrKSAoc3RydWN0
IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIGNoYXIpOwogICAgICAgIGludCAoKmFsbG9jX2lub2Rl
KSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIHZvaWQgKCpm
cmVlX2Jsb2NrKSAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIHZvaWQg
KCpmcmVlX2lub2RlKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAg
ICAgIGludCAoKnRyYW5zZmVyKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsKfTsK
CnN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAg
ICAgIGludCBmc19mbGFnczsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKigqcmVhZF9zdXBl
cikgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICosIGludCk7CiAgICAgICAgc3RydWN0IG1v
ZHVsZSAqb3duZXI7CiAgICAgICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiBuZXh0OwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgZnNfc3VwZXJzOwp9OwojIDk2NSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgcmVnaXN0ZXJf
ZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCB1bnJlZ2lz
dGVyX2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBzdHJ1Y3Qg
dmZzbW91bnQgKmtlcm5fbW91bnQoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBp
bnQgbWF5X3Vtb3VudChzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBsb25nIGRvX21vdW50KGNo
YXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CgoKCmV4dGVybiBp
bnQgdmZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKIyA5
ODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIgpl
eHRlcm4gaW50IGxvY2tzX21hbmRhdG9yeV9sb2NrZWQoc3RydWN0IGlub2RlICopOwpleHRlcm4g
aW50IGxvY2tzX21hbmRhdG9yeV9hcmVhKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxl
ICosIGxvZmZfdCwgc2l6ZV90KTsKIyA5OTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlfbG9j
a2VkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBpZiAoKCgoaW5vZGUpLT5pX3NiLT5z
X2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9
PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfbG9ja2Vk
KGlub2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVy
aWZ5X2FyZWEoaW50IHJlYWRfd3JpdGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxwLCBsb2ZmX3Qgb2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQpCnsKICAg
ICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0
KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkK
ICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYShyZWFkX3dyaXRlLCBp
bm9kZSwgZmlscCwgb2Zmc2V0LCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBp
bmxpbmUgaW50IGxvY2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlscCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9mZl90IHNpemUpCnsKICAgICAgICBpZiAo
aW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChp
bm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAg
ICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYSgKICAgICAgICAgICAgICAgICAgICAg
ICAgMiwgaW5vZGUsIGZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPCBpbm9kZS0+
aV9zaXplID8gc2l6ZSA6IGlub2RlLT5pX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIChz
aXplIDwgaW5vZGUtPmlfc2l6ZSA/IGlub2RlLT5pX3NpemUgLSBzaXplCiAgICAgICAgICAgICAg
ICAgICAgICAgICA6IHNpemUgLSBpbm9kZS0+aV9zaXplKQogICAgICAgICAgICAgICAgKTsKICAg
ICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZ2V0X2xlYXNlKHN0cnVjdCBpbm9k
ZSAqaW5vZGUsIHVuc2lnbmVkIGludCBtb2RlKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2Nr
ICYmIChpbm9kZS0+aV9mbG9jay0+ZmxfZmxhZ3MgJiAzMikpCiAgICAgICAgICAgICAgICByZXR1
cm4gX19nZXRfbGVhc2UoaW5vZGUsIG1vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgoKCiBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfb3Blbihjb25zdCBjaGFyICosIGludCwg
aW50KTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jbG9zZSh1bnNpZ25l
ZCBpbnQpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0
YXJ0KTsKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCBp
bnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlfb3BlbihzdHJ1Y3QgZGVudHJ5ICosIHN0
cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwpleHRlcm4gaW50IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUg
KiwgZmxfb3duZXJfdCBpZCk7CmV4dGVybiBjaGFyICogZ2V0bmFtZShjb25zdCBjaGFyICopOwoK
CmV4dGVybiB2b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoKCmVudW0ge0JE
RVZfRklMRSwgQkRFVl9TV0FQLCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBpbnQgcmVnaXN0
ZXJfYmxrZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYmxvY2tfZGV2aWNl
X29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50
LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRnZXQoZGV2X3Qp
OwpleHRlcm4gaW50IGJkX2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2b2lk
IGJkX2ZvcmdldChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgYmRwdXQoc3RydWN0
IGJsb2NrX2RldmljZSAqKTsKZXh0ZXJuIHN0cnVjdCBjaGFyX2RldmljZSAqY2RnZXQoZGV2X3Qp
OwpleHRlcm4gdm9pZCBjZHB1dChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVybiBpbnQgYmxr
ZGV2X29wZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gaW50IGJsa2Rl
dl9jbG9zZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBzdHJ1Y3QgZmls
ZV9vcGVyYXRpb25zIGRlZl9ibGtfZm9wczsKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlX29w
ZXJhdGlvbnMgZGVmX2Jsa19hb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZf
Zmlmb19mb3BzOwpleHRlcm4gaW50IGlvY3RsX2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAq
LCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxrZGV2X2dldChzdHJ1Y3Qg
YmxvY2tfZGV2aWNlICosIG1vZGVfdCwgdW5zaWduZWQsIGludCk7CmV4dGVybiBpbnQgYmxrZGV2
X3B1dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIGludCk7CgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBi
bG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqZ2V0X2Jsa2ZvcHModW5zaWduZWQgaW50KTsKZXh0ZXJu
IGludCByZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBm
aWxlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQg
aW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGNocmRldl9vcGVuKHN0cnVjdCBpbm9kZSAq
LCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBiZGV2bmFtZShrZGV2X3QpOwpl
eHRlcm4gY29uc3QgY2hhciAqIGNkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICog
a2Rldm5hbWUoa2Rldl90KTsKZXh0ZXJuIHZvaWQgaW5pdF9zcGVjaWFsX2lub2RlKHN0cnVjdCBp
bm9kZSAqLCB1bW9kZV90LCBpbnQpOwoKCmV4dGVybiB2b2lkIG1ha2VfYmFkX2lub2RlKHN0cnVj
dCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpc19iYWRfaW5vZGUoc3RydWN0IGlub2RlICopOwoKZXh0
ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmVhZF9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3Qg
ZmlsZV9vcGVyYXRpb25zIHdyaXRlX2ZpZm9fZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJh
dGlvbnMgcmR3cl9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRf
cGlwZV9mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9waXBlX2ZvcHM7
CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJkd3JfcGlwZV9mb3BzOwoKZXh0ZXJuIGlu
dCBmc19tYXlfcmVtb3VudF9ybyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CgpleHRlcm4gaW50IHRy
eV90b19mcmVlX2J1ZmZlcnMoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZv
aWQgcmVmaWxlX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBidWYpOwpleHRlcm4gdm9pZCBl
bmRfYnVmZmVyX2lvX3N5bmMoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKTsK
CgpleHRlcm4gdm9pZCBzZXRfYnVmZmVyX2FzeW5jX2lvKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgp
IDsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGdldF9iaChzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBi
aCkKewogICAgICAgIGF0b21pY19pbmMoJihiaCktPmJfY291bnQpOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgcHV0X2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICBfX2FzbV9fIF9f
dm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21pY19kZWMoJmJoLT5iX2Nv
dW50KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX3VwdG9kYXRlKHN0cnVj
dCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgb24pCnsKICAgICAgICBpZiAob24pCiAgICAgICAgICAg
ICAgICBzZXRfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUpOwogICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgIGNsZWFyX2JpdChCSF9VcHRvZGF0ZSwgJmJoLT5iX3N0YXRlKTsKfQoKCgpz
dGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcihiaCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBt
YXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGlmICh0
ZXN0X2FuZF9jbGVhcl9iaXQoQkhfRGlydHksICYoYmgpLT5iX3N0YXRlKSkKICAgICAgICAgICAg
ICAgIF9fbWFya19idWZmZXJfY2xlYW4oYmgpOwp9CgpleHRlcm4gdm9pZCBfX21hcmtfZGlydHko
c3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRl
cm4gdm9pZCBfX21hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgbWFya19idWZmZXJfZGlydHkoc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4g
dm9pZCBidWZmZXJfaW5zZXJ0X2lub2RlX2RhdGFfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICos
IHN0cnVjdCBpbm9kZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKCnN0YXRpYyBp
bmxpbmUgdm9pZCBtYXJrX2J1ZmZlcl9hc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50
IG9uKQp7CiAgICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9Bc3luYywg
JmJoLT5iX3N0YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoQkhf
QXN5bmMsICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBidWZmZXJf
SU9fZXJyb3Ioc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBtYXJrX2J1ZmZlcl9j
bGVhbihiaCk7CgoKCiAgICAgICAgYmgtPmJfZW5kX2lvKGJoLCAwKTsKfQoKZXh0ZXJuIHZvaWQg
YnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlu
b2RlICopOwpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfZGlydHlfaW5vZGUoc3RydWN0
IGJ1ZmZlcl9oZWFkICpiaCwgc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIG1hcmtfYnVm
ZmVyX2RpcnR5KGJoKTsKICAgICAgICBidWZmZXJfaW5zZXJ0X2lub2RlX3F1ZXVlKGJoLCBpbm9k
ZSk7Cn0KCmV4dGVybiB2b2lkIGJhbGFuY2VfZGlydHkodm9pZCk7CmV4dGVybiBpbnQgY2hlY2tf
ZGlza19jaGFuZ2Uoa2Rldl90KTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2lub2RlcyhzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKik7CmV4dGVybiBpbnQgaW52YWxpZGF0ZV9kZXZpY2Uoa2Rldl90LCBpbnQp
OwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX3BhZ2VzKHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9kZV9wYWdlczIoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7
CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CgoK
ZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9iZGV2KHN0cnVjdCBibG9ja19kZXZpY2UgKiwgaW50KTsK
ZXh0ZXJuIHZvaWQgX19pbnZhbGlkYXRlX2J1ZmZlcnMoa2Rldl90IGRldiwgaW50KTsKZXh0ZXJu
IHZvaWQgc3luY19pbm9kZXMoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3luY191bmxvY2tlZF9pbm9k
ZXModm9pZCk7CmV4dGVybiB2b2lkIHdyaXRlX2lub2RlX25vdyhzdHJ1Y3QgaW5vZGUgKiwgaW50
KTsKZXh0ZXJuIGludCBzeW5jX2J1ZmZlcnMoa2Rldl90LCBpbnQpOwpleHRlcm4gdm9pZCBzeW5j
X2RldihrZGV2X3QpOwpleHRlcm4gaW50IGZzeW5jX2RldihrZGV2X3QpOwpleHRlcm4gaW50IGZz
eW5jX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBmc3luY19ub19zdXBl
cihrZGV2X3QpOwpleHRlcm4gdm9pZCBzeW5jX2lub2Rlc19zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sg
Kik7CmV4dGVybiBpbnQgb3N5bmNfaW5vZGVfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVy
biBpbnQgb3N5bmNfaW5vZGVfZGF0YV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlu
dCBmc3luY19pbm9kZV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBmc3luY19p
bm9kZV9kYXRhX2J1ZmZlcnMoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGlub2RlX2hhc19i
dWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZmlsZW1hcF9mZGF0YXN5bmMoc3Ry
dWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIGZpbGVtYXBfZmRhdGF3YWl0KHN0cnVj
dCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBzeW5jX3N1cGVycyhrZGV2X3QpOwpleHRl
cm4gaW50IGJtYXAoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgbm90aWZ5X2NoYW5n
ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKZXh0ZXJuIGludCBwZXJtaXNzaW9u
KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19wZXJtaXNzaW9uKHN0cnVjdCBp
bm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IGdldF93cml0ZV9hY2Nlc3Moc3RydWN0IGlub2RlICop
OwpleHRlcm4gaW50IGRlbnlfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxlICopOwpzdGF0aWMgaW5s
aW5lIHZvaWQgcHV0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewogICAgICAg
IGF0b21pY19kZWMoJmlub2RlLT5pX3dyaXRlY291bnQpOwp9CnN0YXRpYyBpbmxpbmUgdm9pZCBh
bGxvd193cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmZpbGUpCnsKICAgICAgICBpZiAoZmlsZSkK
ICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJmZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX3dy
aXRlY291bnQpOwp9CmV4dGVybiBpbnQgZG9fcGlwZShpbnQgKik7CgpleHRlcm4gaW50IG9wZW5f
bmFtZWkoY29uc3QgY2hhciAqLCBpbnQsIGludCwgc3RydWN0IG5hbWVpZGF0YSAqKTsKCmV4dGVy
biBpbnQga2VybmVsX3JlYWQoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgY2hhciAqLCB1
bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogb3Blbl9leGVjKGNvbnN0IGNoYXIg
Kik7CgoKZXh0ZXJuIGludCBpc19zdWJkaXIoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5
ICopOwpleHRlcm4gaW5vX3QgZmluZF9pbm9kZV9udW1iZXIoc3RydWN0IGRlbnRyeSAqLCBzdHJ1
Y3QgcXN0ciAqKTsKIyAxMjM0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSB2b2lkICpFUlJfUFRSKGxvbmcgZXJyb3IpCnsK
ICAgICAgICByZXR1cm4gKHZvaWQgKikgZXJyb3I7Cn0KCnN0YXRpYyBpbmxpbmUgbG9uZyBQVFJf
RVJSKGNvbnN0IHZvaWQgKnB0cikKewogICAgICAgIHJldHVybiAobG9uZykgcHRyOwp9CgpzdGF0
aWMgaW5saW5lIGxvbmcgSVNfRVJSKGNvbnN0IHZvaWQgKnB0cikKewogICAgICAgIHJldHVybiAo
dW5zaWduZWQgbG9uZylwdHIgPiAodW5zaWduZWQgbG9uZyktMTAwMEw7Cn0KIyAxMjY1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIKZW51bSB7TEFT
VF9OT1JNLCBMQVNUX1JPT1QsIExBU1RfRE9ULCBMQVNUX0RPVERPVCwgTEFTVF9CSU5EfTsKIyAx
Mjc2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHNpemVfdCB3cml0dGVuOwogICAgICAgIHNpemVfdCBj
b3VudDsKICAgICAgICBjaGFyICogYnVmOwogICAgICAgIGludCBlcnJvcjsKfSByZWFkX2Rlc2Ny
aXB0b3JfdDsKCnR5cGVkZWYgaW50ICgqcmVhZF9hY3Rvcl90KShyZWFkX2Rlc2NyaXB0b3JfdCAq
LCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCgpleHRlcm4g
bG9mZl90IGRlZmF1bHRfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBp
bnQgb3JpZ2luKTsKCmV4dGVybiBpbnQgX191c2VyX3dhbGsoY29uc3QgY2hhciAqLCB1bnNpZ25l
ZCwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biBpbnQgcGF0aF9pbml0KGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEg
KikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IHBhdGhfd2Fsayhjb25z
dCBjaGFyICosIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpleHRlcm4gaW50IGxpbmtfcGF0aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0
YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHBhdGhfcmVsZWFz
ZShzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gaW50IGZvbGxvd19kb3duKHN0cnVjdCB2ZnNt
b3VudCAqKiwgc3RydWN0IGRlbnRyeSAqKik7CmV4dGVybiBpbnQgZm9sbG93X3VwKHN0cnVjdCB2
ZnNtb3VudCAqKiwgc3RydWN0IGRlbnRyeSAqKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogbG9v
a3VwX29uZV9sZW4oY29uc3QgY2hhciAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBz
dHJ1Y3QgZGVudHJ5ICogbG9va3VwX2hhc2goc3RydWN0IHFzdHIgKiwgc3RydWN0IGRlbnRyeSAq
KTsKCgoKZXh0ZXJuIHZvaWQgaXB1dChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGZvcmNl
X2RlbGV0ZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ3JhYihzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9fdCBpdW5pcXVlKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBp
bm9fdCk7Cgp0eXBlZGVmIGludCAoKmZpbmRfaW5vZGVfdCkoc3RydWN0IGlub2RlICosIHVuc2ln
bmVkIGxvbmcsIHZvaWQgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ2V0NChzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9uZywgZmluZF9pbm9kZV90LCB2b2lkICopOwpzdGF0aWMg
aW5saW5lIHN0cnVjdCBpbm9kZSAqaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25l
ZCBsb25nIGlubykKewogICAgICAgIHJldHVybiBpZ2V0NChzYiwgaW5vLCAoKHZvaWQgKikwKSwg
KCh2b2lkICopMCkpOwp9CgpleHRlcm4gdm9pZCBjbGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7
CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBnZXRfZW1wdHlfaW5vZGUodm9pZCk7CgpzdGF0aWMgaW5s
aW5lIHN0cnVjdCBpbm9kZSAqIG5ld19pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiAg
ICAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGdldF9lbXB0eV9pbm9kZSgpOwogICAgICAgIGlm
IChpbm9kZSkgewogICAgICAgICAgICAgICAgaW5vZGUtPmlfc2IgPSBzYjsKICAgICAgICAgICAg
ICAgIGlub2RlLT5pX2RldiA9IHNiLT5zX2RldjsKICAgICAgICAgICAgICAgIGlub2RlLT5pX2Js
a2JpdHMgPSBzYi0+c19ibG9ja3NpemVfYml0czsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGlu
b2RlOwp9CmV4dGVybiB2b2lkIHJlbW92ZV9zdWlkKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoKZXh0
ZXJuIHZvaWQgaW5zZXJ0X2lub2RlX2hhc2goc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBy
ZW1vdmVfaW5vZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZSAqIGdl
dF9lbXB0eV9maWxwKHZvaWQpOwpleHRlcm4gdm9pZCBmaWxlX21vdmUoc3RydWN0IGZpbGUgKmYs
IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0
X2hhc2hfdGFibGUoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBnZXRibGsoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiB2b2lkIGxsX3J3X2Jsb2NrKGludCwg
aW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaFtdKTsKZXh0ZXJuIHZvaWQgc3VibWl0X2JoKGlu
dCwgc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gaW50IGlzX3JlYWRfb25seShrZGV2X3Qp
OwpleHRlcm4gdm9pZCBfX2JyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxp
bmUgdm9pZCBicmVsc2Uoc3RydWN0IGJ1ZmZlcl9oZWFkICpidWYpCnsKICAgICAgICBpZiAoYnVm
KQogICAgICAgICAgICAgICAgX19icmVsc2UoYnVmKTsKfQpleHRlcm4gdm9pZCBfX2Jmb3JnZXQo
c3RydWN0IGJ1ZmZlcl9oZWFkICopOwpzdGF0aWMgaW5saW5lIHZvaWQgYmZvcmdldChzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2Jm
b3JnZXQoYnVmKTsKfQpleHRlcm4gaW50IHNldF9ibG9ja3NpemUoa2Rldl90LCBpbnQpOwpleHRl
cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogYnJlYWQoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiB2
b2lkIHdha2V1cF9iZGZsdXNoKHZvaWQpOwoKZXh0ZXJuIGludCBicndfcGFnZShpbnQsIHN0cnVj
dCBwYWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQgKGdldF9ibG9ja190
KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwoKCmV4dGVybiBp
bnQgZGlzY2FyZF9iaF9wYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgoK
ZXh0ZXJuIGludCBibG9ja19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBjb25zdCBjaGFyICosIGlu
dCk7CmV4dGVybiBpbnQgYmxvY2tfd3JpdGVfZnVsbF9wYWdlKHN0cnVjdCBwYWdlKiwgZ2V0X2Js
b2NrX3QqKTsKZXh0ZXJuIGludCBibG9ja19yZWFkX2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSosIGdl
dF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tfcHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSos
IHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBjb250X3ByZXBh
cmVfd3JpdGUoc3RydWN0IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGdldF9ibG9ja190KiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICopOwpleHRlcm4g
aW50IGJsb2NrX2NvbW1pdF93cml0ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8pOwpleHRlcm4gaW50IGJsb2NrX3N5bmNfcGFnZShzdHJ1Y3QgcGFnZSAqKTsK
CmludCBnZW5lcmljX2Jsb2NrX2JtYXAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9uZywgZ2V0
X2Jsb2NrX3QgKik7CmludCBnZW5lcmljX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1
Y3QgcGFnZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwppbnQgYmxvY2tfdHJ1bmNhdGVfcGFnZShz
dHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QsIGdldF9ibG9ja190ICopOwpleHRlcm4gdm9p
ZCBjcmVhdGVfZW1wdHlfYnVmZmVycyhzdHJ1Y3QgcGFnZSAqLCBrZGV2X3QsIHVuc2lnbmVkIGxv
bmcpOwoKZXh0ZXJuIGludCB3YWl0Zm9yX29uZV9wYWdlKHN0cnVjdCBwYWdlKik7CmV4dGVybiBp
bnQgZ2VuZXJpY19maWxlX21tYXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0
ICopOwpleHRlcm4gaW50IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2NyaXB0b3JfdCAqIGRlc2Ms
IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBz
aXplKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hh
ciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3dyaXRl
KHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiB2
b2lkIGRvX2dlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCByZWFkX2Rl
c2NyaXB0b3JfdCAqLCByZWFkX2FjdG9yX3QpOwpleHRlcm4gbG9mZl90IG5vX2xsc2VlayhzdHJ1
Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBsb2ZmX3Qg
Z2VuZXJpY19maWxlX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50
IG9yaWdpbik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUgKiwg
Y2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfb3Blbihz
dHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKCmV4dGVybiBzdHJ1Y3Qg
ZmlsZV9vcGVyYXRpb25zIGdlbmVyaWNfcm9fZm9wczsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5r
KHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg
dmZzX2ZvbGxvd19saW5rKHN0cnVjdCBuYW1laWRhdGEgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJu
IGludCBwYWdlX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQpOwpleHRlcm4g
aW50IHBhZ2VfZm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICop
OwpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2RlX29wZXJh
dGlvbnM7CgpleHRlcm4gaW50IHZmc19yZWFkZGlyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwg
dm9pZCAqKTsKZXh0ZXJuIGludCBkY2FjaGVfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICos
IGZpbGxkaXJfdCk7CgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9mc190eXBl
KGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc3VwZXIo
a2Rldl90KTsKZXh0ZXJuIHZvaWQgZHJvcF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsK
c3RhdGljIGlubGluZSBpbnQgaXNfbW91bnRlZChrZGV2X3QgZGV2KQp7CiAgICAgICAgc3RydWN0
IHN1cGVyX2Jsb2NrICpzYiA9IGdldF9zdXBlcihkZXYpOwogICAgICAgIGlmIChzYikgewogICAg
ICAgICAgICAgICAgZHJvcF9zdXBlcihzYik7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAg
ICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVy
KGtkZXZfdCwgaW50IGJbXSwgaW50KTsKdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVyX3N3
YWIzMihrZGV2X3QsIGludCBiW10sIGludCk7CmV4dGVybiBrZGV2X3QgUk9PVF9ERVY7CmV4dGVy
biBjaGFyIHJvb3RfZGV2aWNlX25hbWVbXTsKCgpleHRlcm4gdm9pZCBzaG93X2J1ZmZlcnModm9p
ZCk7CmV4dGVybiB2b2lkIG1vdW50X3Jvb3Qodm9pZCk7CgoKCgoKCmV4dGVybiBzc2l6ZV90IGNo
YXJfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4g
c3NpemVfdCBibG9ja19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3Qg
Kik7CmV4dGVybiBpbnQgcmVhZF9haGVhZFtdOwoKZXh0ZXJuIHNzaXplX3QgY2hhcl93cml0ZShz
dHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gc3Np
emVfdCBibG9ja193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9m
Zl90ICopOwoKZXh0ZXJuIGludCBmaWxlX2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50
cnkgKiwgaW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2J1ZmZlcl9mZGF0YXN5bmMoc3RydWN0IGlu
b2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVkIGxvbmcgZW5kX2lk
eCk7CmV4dGVybiBpbnQgZ2VuZXJpY19vc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsK
CgoKCmV4dGVybiBpbnQgaW5vZGVfY2hhbmdlX29rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0
dHIgKik7CmV4dGVybiBpbnQgaW5vZGVfc2V0YXR0cihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlh
dHRyICopOwojIDE0NTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKmxvY2tfcGFyZW50KHN0cnVj
dCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKmRpciA9IGRnZXQoZGVu
dHJ5LT5kX3BhcmVudCk7CgogICAgICAgIGRvd24oJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwogICAg
ICAgIHJldHVybiBkaXI7Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqZ2V0X3BhcmVu
dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICByZXR1cm4gZGdldChkZW50cnktPmRf
cGFyZW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHVubG9ja19kaXIoc3RydWN0IGRlbnRyeSAq
ZGlyKQp7CiAgICAgICAgdXAoJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwogICAgICAgIGRwdXQoZGly
KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfZG93bihzdHJ1Y3Qgc2VtYXBob3Jl
ICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICBpZiAoczEgIT0gczIpIHsKICAg
ICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczIp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczI7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHMyID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgZG93bihzMSk7CiAgICAgICAgfQogICAgICAgIGRvd24oczIpOwp9
CiMgMTUwMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2Zz
LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpzMSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAg
ICBpZiAoczEgIT0gczIpIHsKICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEg
PCAodW5zaWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNp
Z25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5z
aWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlICp0bXAgPSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiA9
IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8
ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAodW5zaWduZWQgbG9uZykgczMp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAg
PSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMyOyBzMiA9IHRtcDsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgZG93bihzMSk7CiAgICAgICAgfSBlbHNlIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAodW5z
aWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9
IHMzOwogICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgfQogICAgICAg
IGRvd24oczIpOwogICAgICAgIGRvd24oczMpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91Ymxl
X3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAg
IHVwKHMxKTsKICAgICAgICBpZiAoczEgIT0gczIpCiAgICAgICAgICAgICAgICB1cChzMik7Cn0K
CnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfdXAoc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAgICB1cChzMSk7
CiAgICAgICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwogICAgICAgIHVw
KHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9sb2NrKHN0cnVjdCBkZW50cnkgKmQx
LCBzdHJ1Y3QgZGVudHJ5ICpkMikKewogICAgICAgIGRvdWJsZV9kb3duKCZkMS0+ZF9pbm9kZS0+
aV9zZW0sICZkMi0+ZF9pbm9kZS0+aV9zZW0pOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91Ymxl
X3VubG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRyeSAqZDIpCnsKICAgICAgICBk
b3VibGVfdXAoJmQxLT5kX2lub2RlLT5pX3NlbSwmZDItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAg
ICBkcHV0KGQxKTsKICAgICAgICBkcHV0KGQyKTsKfQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCiMgMzIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCnR5cGVk
ZWYgc3RydWN0IF9fdXNlcl9jYXBfaGVhZGVyX3N0cnVjdCB7CiAgICAgICAgX191MzIgdmVyc2lv
bjsKICAgICAgICBpbnQgcGlkOwp9ICpjYXBfdXNlcl9oZWFkZXJfdDsKCnR5cGVkZWYgc3RydWN0
IF9fdXNlcl9jYXBfZGF0YV9zdHJ1Y3QgewogICAgICAgIF9fdTMyIGVmZmVjdGl2ZTsKICAgICAg
ICBfX3UzMiBwZXJtaXR0ZWQ7CiAgICAgICAgX191MzIgaW5oZXJpdGFibGU7Cn0gKmNhcF91c2Vy
X2RhdGFfdDsKIyA1NSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBfX3UzMiBrZXJuZWxfY2FwX3Q7CiMgMjg0ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgpl
eHRlcm4ga2VybmVsX2NhcF90IGNhcF9ic2V0OwojIDMxMiAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKc3RhdGljIGlubGluZSBrZXJu
ZWxfY2FwX3QgY2FwX2NvbWJpbmUoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAg
ICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpIHwgKGIpOwogICAgIHJldHVy
biBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfaW50ZXJzZWN0KGtlcm5l
bF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0OwogICAg
IChkZXN0KSA9IChhKSAmIChiKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGluZSBr
ZXJuZWxfY2FwX3QgY2FwX2Ryb3Aoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBkcm9wKQp7
CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpICYgfihkcm9wKTsKICAg
ICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2ludmVydChr
ZXJuZWxfY2FwX3QgYykKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0OwogICAgIChkZXN0KSA9IH4o
Yyk7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9iaW5mbXRzLmgiCnN0cnVjdCBsaW51eF9iaW5wcm17
CiAgICAgICAgY2hhciBidWZbMTI4XTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZVszMl07CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBwOwogICAgICAgIGludCBzaF9iYW5nOwogICAgICAgIHN0cnVj
dCBmaWxlICogZmlsZTsKICAgICAgICBpbnQgZV91aWQsIGVfZ2lkOwogICAgICAgIGtlcm5lbF9j
YXBfdCBjYXBfaW5oZXJpdGFibGUsIGNhcF9wZXJtaXR0ZWQsIGNhcF9lZmZlY3RpdmU7CiAgICAg
ICAgaW50IGFyZ2MsIGVudmM7CiAgICAgICAgY2hhciAqIGZpbGVuYW1lOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgbG9hZGVyLCBleGVjOwp9OwoKCgoKCnN0cnVjdCBsaW51eF9iaW5mbXQgewogICAg
ICAgIHN0cnVjdCBsaW51eF9iaW5mbXQgKiBuZXh0OwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm1v
ZHVsZTsKICAgICAgICBpbnQgKCpsb2FkX2JpbmFyeSkoc3RydWN0IGxpbnV4X2JpbnBybSAqLCBz
dHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwogICAgICAgIGludCAoKmxvYWRfc2hsaWIpKHN0cnVjdCBm
aWxlICopOwogICAgICAgIGludCAoKmNvcmVfZHVtcCkobG9uZyBzaWduciwgc3RydWN0IHB0X3Jl
Z3MgKiByZWdzLCBzdHJ1Y3QgZmlsZSAqIGZpbGUpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWlu
X2NvcmVkdW1wOwp9OwoKZXh0ZXJuIGludCByZWdpc3Rlcl9iaW5mbXQoc3RydWN0IGxpbnV4X2Jp
bmZtdCAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2JpbmZtdChzdHJ1Y3QgbGludXhfYmluZm10
ICopOwoKZXh0ZXJuIGludCBwcmVwYXJlX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJtICopOwpl
eHRlcm4gdm9pZCByZW1vdmVfYXJnX3plcm8oc3RydWN0IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJu
IGludCBzZWFyY2hfYmluYXJ5X2hhbmRsZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqLHN0cnVjdCBw
dF9yZWdzICopOwpleHRlcm4gaW50IGZsdXNoX29sZF9leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0g
KiBicHJtKTsKZXh0ZXJuIGludCBzZXR1cF9hcmdfcGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAq
IGJwcm0pOwpleHRlcm4gaW50IGNvcHlfc3RyaW5ncyhpbnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3Ry
dWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CmV4dGVybiBpbnQgY29weV9zdHJpbmdzX2tlcm5lbChp
bnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CmV4dGVybiB2
b2lkIGNvbXB1dGVfY3JlZHMoc3RydWN0IGxpbnV4X2JpbnBybSAqYmlucHJtKTsKZXh0ZXJuIGlu
dCBkb19jb3JlZHVtcChsb25nIHNpZ25yLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwpleHRlcm4g
dm9pZCBzZXRfYmluZm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKm5ldyk7CiMgMTAgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQoj
IDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9r
ZXJuZWwuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L3RpbWVzLmgiIDEKCgoKc3RydWN0IHRtcyB7CiAgICAgICAg
Y2xvY2tfdCB0bXNfdXRpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfc3RpbWU7CiAgICAgICAgY2xv
Y2tfdCB0bXNfY3V0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX2NzdGltZTsKfTsKIyAxNCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdGltZXguaCIg
MQojIDU0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdGlt
ZXguaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3Bh
cmFtLmgiIDEKIyA1NSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L3RpbWV4LmgiIDIKIyAxNTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9hc20vdGltZXguaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9hc20vdGltZXguaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9tc3IuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3RpbWV4LmgiIDIKIyAzMiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS90aW1leC5oIgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyBjeWNsZXNfdDsKCmV4dGVybiBjeWNsZXNfdCBjYWNoZWZsdXNoX3RpbWU7Cgpz
dGF0aWMgaW5saW5lIGN5Y2xlc190IGdldF9jeWNsZXMgKHZvaWQpCnsKCgoKICAgICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgcmV0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2Mi
IDogIj1BIiAocmV0KSk7CiAgICAgICAgcmV0dXJuIHJldDsKCn0KCmV4dGVybiB1bnNpZ25lZCBs
b25nIGNwdV9raHo7CiMgMTUzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvdGltZXguaCIgMgojIDE2MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCnN0cnVjdCB0aW1leCB7CiAgICAgICAgdW5zaWduZWQg
aW50IG1vZGVzOwogICAgICAgIGxvbmcgb2Zmc2V0OwogICAgICAgIGxvbmcgZnJlcTsKICAgICAg
ICBsb25nIG1heGVycm9yOwogICAgICAgIGxvbmcgZXN0ZXJyb3I7CiAgICAgICAgaW50IHN0YXR1
czsKICAgICAgICBsb25nIGNvbnN0YW50OwogICAgICAgIGxvbmcgcHJlY2lzaW9uOwogICAgICAg
IGxvbmcgdG9sZXJhbmNlOwoKCiAgICAgICAgc3RydWN0IHRpbWV2YWwgdGltZTsKICAgICAgICBs
b25nIHRpY2s7CgogICAgICAgIGxvbmcgcHBzZnJlcTsKICAgICAgICBsb25nIGppdHRlcjsKICAg
ICAgICBpbnQgc2hpZnQ7CiAgICAgICAgbG9uZyBzdGFiaWw7CiAgICAgICAgbG9uZyBqaXRjbnQ7
CiAgICAgICAgbG9uZyBjYWxjbnQ7CiAgICAgICAgbG9uZyBlcnJjbnQ7CiAgICAgICAgbG9uZyBz
dGJjbnQ7CgogICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAg
ICAgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKICAgICAgICBpbnQgOjMyOyBp
bnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwp9OwojIDI1MyAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCmV4dGVybiBsb25nIHRpY2s7CmV4dGVy
biBpbnQgdGlja2FkajsKCgoKCmV4dGVybiBpbnQgdGltZV9zdGF0ZTsKZXh0ZXJuIGludCB0aW1l
X3N0YXR1czsKZXh0ZXJuIGxvbmcgdGltZV9vZmZzZXQ7CmV4dGVybiBsb25nIHRpbWVfY29uc3Rh
bnQ7CmV4dGVybiBsb25nIHRpbWVfdG9sZXJhbmNlOwpleHRlcm4gbG9uZyB0aW1lX3ByZWNpc2lv
bjsKZXh0ZXJuIGxvbmcgdGltZV9tYXhlcnJvcjsKZXh0ZXJuIGxvbmcgdGltZV9lc3RlcnJvcjsK
CmV4dGVybiBsb25nIHRpbWVfcGhhc2U7CmV4dGVybiBsb25nIHRpbWVfZnJlcTsKZXh0ZXJuIGxv
bmcgdGltZV9hZGo7CmV4dGVybiBsb25nIHRpbWVfcmVmdGltZTsKCmV4dGVybiBsb25nIHRpbWVf
YWRqdXN0OwoKCmV4dGVybiBsb25nIHBwc19vZmZzZXQ7CmV4dGVybiBsb25nIHBwc19qaXR0ZXI7
CmV4dGVybiBsb25nIHBwc19mcmVxOwpleHRlcm4gbG9uZyBwcHNfc3RhYmlsOwpleHRlcm4gbG9u
ZyBwcHNfdmFsaWQ7CgoKZXh0ZXJuIGludCBwcHNfc2hpZnQ7CmV4dGVybiBsb25nIHBwc19qaXRj
bnQ7CmV4dGVybiBsb25nIHBwc19jYWxjbnQ7CmV4dGVybiBsb25nIHBwc19lcnJjbnQ7CmV4dGVy
biBsb25nIHBwc19zdGJjbnQ7CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAxCiMgOTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyA5OCAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMg
OTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9yYnRyZWUu
aCIgMgoKdHlwZWRlZiBzdHJ1Y3QgcmJfbm9kZV9zCnsKICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9z
ICogcmJfcGFyZW50OwogICAgICAgIGludCByYl9jb2xvcjsKCgogICAgICAgIHN0cnVjdCByYl9u
b2RlX3MgKiByYl9yaWdodDsKICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9zICogcmJfbGVmdDsKfQpy
Yl9ub2RlX3Q7Cgp0eXBlZGVmIHN0cnVjdCByYl9yb290X3MKewogICAgICAgIHN0cnVjdCByYl9u
b2RlX3MgKiByYl9ub2RlOwp9CnJiX3Jvb3RfdDsKCgoKCgpleHRlcm4gdm9pZCByYl9pbnNlcnRf
Y29sb3IocmJfbm9kZV90ICosIHJiX3Jvb3RfdCAqKTsKZXh0ZXJuIHZvaWQgcmJfZXJhc2UocmJf
bm9kZV90ICosIHJiX3Jvb3RfdCAqKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCByYl9saW5rX25vZGUo
cmJfbm9kZV90ICogbm9kZSwgcmJfbm9kZV90ICogcGFyZW50LCByYl9ub2RlX3QgKiogcmJfbGlu
aykKewogICAgICAgIG5vZGUtPnJiX3BhcmVudCA9IHBhcmVudDsKICAgICAgICBub2RlLT5yYl9j
b2xvciA9IDA7CiAgICAgICAgbm9kZS0+cmJfbGVmdCA9IG5vZGUtPnJiX3JpZ2h0ID0gKCh2b2lk
ICopMCk7CgogICAgICAgICpyYl9saW5rID0gbm9kZTsKfQojIDE2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMTggIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIg
MQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2No
ZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20v
cGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2FzbS9wdHJhY2UuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9hc20vbW11LmgiIDEKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAg
ICB2b2lkICpzZWdtZW50czsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdXZhbGlkOwp9IG1tX2Nv
bnRleHRfdDsKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3NtcC5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L3NtcC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvc21wLmgiIDIKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHR5LmgiIDEKIyAxOSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3R0eS5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDIwICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDIx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHR5LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbWFqb3Iu
aCIgMQojIDE3NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L21ham9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzY3NpX2Jsa19tYWpvcihpbnQgbSkgewog
ICAgICAgIHJldHVybiAoKChtKSA9PSA4IHx8ICgobSkgPj0gNjUgJiYgKG0pIDw9IDcxKSkgfHwg
KG0pID09IDExKTsKfQojIDE5MCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L21ham9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBpZGVfYmxrX21ham9yKGlu
dCBtKQp7CiAgICAgICAgcmV0dXJuICgobSkgPT0gMyB8fCAobSkgPT0gMjIgfHwgKG0pID09IDMz
IHx8IChtKSA9PSAzNCB8fCAobSkgPT0gNTYgfHwgKG0pID09IDU3IHx8IChtKSA9PSA4OCB8fCAo
bSkgPT0gODkgfHwgKG0pID09IDkwIHx8IChtKSA9PSA5MSk7Cn0KIyAyMiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90eXBlcy5oIiAx
CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Rlcm1p
b3MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20v
dGVybWlvcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2FzbS90ZXJtYml0cy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmgiIDIKCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciBjY190Owp0eXBlZGVmIHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVmIHVuc2ln
bmVkIGludCB0Y2ZsYWdfdDsKCgpzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFnX3QgY19p
ZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNfY2ZsYWc7
CiAgICAgICAgdGNmbGFnX3QgY19sZmxhZzsKICAgICAgICBjY190IGNfbGluZTsKICAgICAgICBj
Y190IGNfY2NbMTldOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9hc20vdGVybWlvcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2FzbS9pb2N0bHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9hc20vaW9jdGwuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDIKIyA2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMgoKc3RydWN0IHdpbnNpemUg
ewogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3JvdzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3
c19jb2w7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfeHBpeGVsOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHdzX3lwaXhlbDsKfTsKCgpzdHJ1Y3QgdGVybWlvIHsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBjX2lmbGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfb2ZsYWc7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgY19jZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX2xmbGFnOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgY19saW5lOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY19jY1s4XTsK
fTsKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdGVy
bWlvcy5oIiAyCiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC90cXVldWUuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAxCiMgMTE4ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgMTE5ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAy
CgpzdHJ1Y3QgdHR5X2RyaXZlciB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGNvbnN0IGNo
YXIgKmRyaXZlcl9uYW1lOwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG5h
bWVfYmFzZTsKICAgICAgICBzaG9ydCBtYWpvcjsKICAgICAgICBzaG9ydCBtaW5vcl9zdGFydDsK
ICAgICAgICBzaG9ydCBudW07CiAgICAgICAgc2hvcnQgdHlwZTsKICAgICAgICBzaG9ydCBzdWJ0
eXBlOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zIGluaXRfdGVybWlvczsKICAgICAgICBpbnQgZmxh
Z3M7CiAgICAgICAgaW50ICpyZWZjb3VudDsKICAgICAgICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkg
KnByb2NfZW50cnk7CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm90aGVyOwoKCgoKICAgICAg
ICBzdHJ1Y3QgdHR5X3N0cnVjdCAqKnRhYmxlOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVy
bWlvczsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqKnRlcm1pb3NfbG9ja2VkOwogICAgICAgIHZv
aWQgKmRyaXZlcl9zdGF0ZTsKCgoKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3Ry
dWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIHZvaWQgKCpjbG9zZSkoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAgICAgaW50ICgq
d3JpdGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBpbnQgZnJvbV91c2VyLAogICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpOwogICAgICAg
IHZvaWQgKCpwdXRfY2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgdW5zaWduZWQgY2hhciBj
aCk7CiAgICAgICAgdm9pZCAoKmZsdXNoX2NoYXJzKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsK
ICAgICAgICBpbnQgKCp3cml0ZV9yb29tKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAg
ICBpbnQgKCpjaGFyc19pbl9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAg
IGludCAoKmlvY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUs
CiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcp
OwogICAgICAgIHZvaWQgKCpzZXRfdGVybWlvcykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3Ry
dWN0IHRlcm1pb3MgKiBvbGQpOwogICAgICAgIHZvaWQgKCp0aHJvdHRsZSkoc3RydWN0IHR0eV9z
dHJ1Y3QgKiB0dHkpOwogICAgICAgIHZvaWQgKCp1bnRocm90dGxlKShzdHJ1Y3QgdHR5X3N0cnVj
dCAqIHR0eSk7CiAgICAgICAgdm9pZCAoKnN0b3ApKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwog
ICAgICAgIHZvaWQgKCpzdGFydCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9p
ZCAoKmhhbmd1cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKmJyZWFr
X2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHN0YXRlKTsKICAgICAgICB2b2lkICgq
Zmx1c2hfYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqc2V0
X2xkaXNjKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqd2FpdF91bnRp
bF9zZW50KShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgdGltZW91dCk7CiAgICAgICAgdm9p
ZCAoKnNlbmRfeGNoYXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgY2gpOwogICAgICAg
IGludCAoKnJlYWRfcHJvYykoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7
CiAgICAgICAgaW50ICgqd3JpdGVfcHJvYykoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIg
KmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvdW50LCB2
b2lkICpkYXRhKTsKCgoKCiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm5leHQ7CiAgICAgICAg
c3RydWN0IHR0eV9kcml2ZXIgKnByZXY7Cn07CiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMQojIDEwMCAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgMTAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHR5X2xkaXNj
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
d2FpdC5oIiAxCiMgMTAyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvdHR5X2xkaXNjLmgiIDIKCnN0cnVjdCB0dHlfbGRpc2MgewogICAgICAgIGludCBtYWdp
YzsKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBudW07CiAgICAgICAgaW50IGZsYWdz
OwoKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZv
aWQgKCpjbG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmZsdXNoX2J1
ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKmNoYXJzX2lu
X2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQp
KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAgICAgc3Np
emVfdCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6
ZV90IG5yKTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0
cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBj
bWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVj
dCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgKCpwb2xsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBzdHJ1Y3QgZmlsZSAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsKCgoKCiAg
ICAgICAgdm9pZCAoKnJlY2VpdmVfYnVmKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBjb25zdCB1bnNp
Z25lZCBjaGFyICpjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZwLCBp
bnQgY291bnQpOwogICAgICAgIGludCAoKnJlY2VpdmVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3Qg
Kik7CiAgICAgICAgdm9pZCAoKndyaXRlX3dha2V1cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7Cn07
CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90dHku
aCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3N5
c3RlbS5oIiAxCiMgMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC90dHkuaCIgMgojIDU5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvdHR5LmgiCnN0cnVjdCBzY3JlZW5faW5mbyB7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBvcmlnX3g7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3k7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZG9udHVzZTE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19wYWdlOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19tb2RlOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgb3JpZ192aWRlb19jb2xzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVudXNlZDI7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19lZ2FfYng7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgdW51c2VkMzsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fbGluZXM7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX2lzVkdBOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IG9yaWdfdmlkZW9fcG9pbnRzOwoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX3dpZHRoOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IGxmYl9oZWlnaHQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
bGZiX2RlcHRoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGZiX2Jhc2U7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsZmJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkb250dXNlMiwgZG9udHVz
ZTM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX2xpbmVsZW5ndGg7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciByZWRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZF9wb3M7CiAgICAgICAg
dW5zaWduZWQgY2hhciBncmVlbl9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW5fcG9z
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZV9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
Ymx1ZV9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hhciByc3ZkX3NpemU7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciByc3ZkX3BvczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXNhcG1fc2VnOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHZlc2FwbV9vZmY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFn
ZXM7Cgp9OwoKZXh0ZXJuIHN0cnVjdCBzY3JlZW5faW5mbyBzY3JlZW5faW5mbzsKIyAxMzkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0
IHR0eV9mbGlwX2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cXVldWU7CiAgICAg
ICAgc3RydWN0IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIgKmNoYXJfYnVmX3B0cjsK
ICAgICAgICB1bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAgICAgaW50IGNvdW50Owog
ICAgICAgIGludCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hhcl9idWZbMio1MTJd
OwogICAgICAgIGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xv
cFs0XTsKfTsKIyAyNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC90dHkuaCIKc3RydWN0IHR0eV9zdHJ1Y3QgewogICAgICAgIGludCBtYWdpYzsKICAgICAg
ICBzdHJ1Y3QgdHR5X2RyaXZlciBkcml2ZXI7CiAgICAgICAgc3RydWN0IHR0eV9sZGlzYyBsZGlz
YzsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqdGVybWlvcywgKnRlcm1pb3NfbG9ja2VkOwogICAg
ICAgIGludCBwZ3JwOwogICAgICAgIGludCBzZXNzaW9uOwogICAgICAgIGtkZXZfdCBkZXZpY2U7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBpbnQgY291bnQ7CiAgICAgICAg
c3RydWN0IHdpbnNpemUgd2luc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHN0b3BwZWQ6MSwg
aHdfc3RvcHBlZDoxLCBmbG93X3N0b3BwZWQ6MSwgcGFja2V0OjE7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBsb3dfbGF0ZW5jeToxLCB3YXJuZWQ6MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGN0cmxf
c3RhdHVzOwoKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAqbGluazsKICAgICAgICBzdHJ1Y3Qg
ZmFzeW5jX3N0cnVjdCAqZmFzeW5jOwogICAgICAgIHN0cnVjdCB0dHlfZmxpcF9idWZmZXIgZmxp
cDsKICAgICAgICBpbnQgbWF4X2ZsaXBfY250OwogICAgICAgIGludCBhbHRfc3BlZWQ7CiAgICAg
ICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3JpdGVfd2FpdDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRf
dCByZWFkX3dhaXQ7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cV9oYW5ndXA7CiAgICAgICAg
dm9pZCAqZGlzY19kYXRhOwogICAgICAgIHZvaWQgKmRyaXZlcl9kYXRhOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgdHR5X2ZpbGVzOwoKCgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgY29sdW1u
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG5leHQ6MSwgZXJhc2luZzoxLCByYXc6MSwgcmVhbF9y
YXc6MSwgaWNhbm9uOjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBjbG9zaW5nOjE7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgbWluaW11bV90b193YWtlOwogICAgICAgIHVuc2lnbmVkIG92ZXJydW5f
dGltZTsKICAgICAgICBpbnQgbnVtX292ZXJydW47CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcm9j
ZXNzX2NoYXJfbWFwWzI1Ni8oOCpzaXplb2YodW5zaWduZWQgbG9uZykpXTsKICAgICAgICBjaGFy
ICpyZWFkX2J1ZjsKICAgICAgICBpbnQgcmVhZF9oZWFkOwogICAgICAgIGludCByZWFkX3RhaWw7
CiAgICAgICAgaW50IHJlYWRfY250OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVhZF9mbGFnc1s0
MDk2Lyg4KnNpemVvZih1bnNpZ25lZCBsb25nKSldOwogICAgICAgIGludCBjYW5vbl9kYXRhOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgY2Fub25faGVhZDsKICAgICAgICB1bnNpZ25lZCBpbnQgY2Fu
b25fY29sdW1uOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYXRvbWljX3JlYWQ7CiAgICAgICAg
c3RydWN0IHNlbWFwaG9yZSBhdG9taWNfd3JpdGU7CiAgICAgICAgc3BpbmxvY2tfdCByZWFkX2xv
Y2s7CgogICAgICAgIHN0cnVjdCB0cV9zdHJ1Y3QgU0FLX3RxOwp9OwojIDM0MSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3R0eS5oIgpleHRlcm4gdm9pZCB0
dHlfd3JpdGVfZmx1c2goc3RydWN0IHR0eV9zdHJ1Y3QgKik7CgpleHRlcm4gc3RydWN0IHRlcm1p
b3MgdHR5X3N0ZF90ZXJtaW9zOwpleHRlcm4gc3RydWN0IHR0eV9zdHJ1Y3QgKiByZWRpcmVjdDsK
ZXh0ZXJuIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2NzW107CmV4dGVybiBpbnQgZmdfY29uc29sZSwg
bGFzdF9jb25zb2xlLCB3YW50X2NvbnNvbGU7CgpleHRlcm4gaW50IGttc2dfcmVkaXJlY3Q7Cgpl
eHRlcm4gdm9pZCBjb25faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgY29uc29sZV9pbml0KHZvaWQp
OwoKZXh0ZXJuIGludCBscF9pbml0KHZvaWQpOwpleHRlcm4gaW50IHB0eV9pbml0KHZvaWQpOwpl
eHRlcm4gdm9pZCB0dHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBteHNlcl9pbml0KHZvaWQpOwpl
eHRlcm4gaW50IG1veGFfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBpcDJfaW5pdCh2b2lkKTsKZXh0
ZXJuIGludCBwY3hlX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcGNfaW5pdCh2b2lkKTsKZXh0ZXJu
IGludCB2Y3NfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBycF9pbml0KHZvaWQpOwpleHRlcm4gaW50
IGN5X2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3RsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3Rs
aV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHNwZWNpYWxpeF9pbml0KHZvaWQpOwpleHRlcm4gaW50
IGVzcHNlcmlhbF9pbml0KHZvaWQpOwpleHRlcm4gaW50IG1hY3NlcmlhbF9pbml0KHZvaWQpOwpl
eHRlcm4gaW50IGEyMjMyYm9hcmRfaW5pdCh2b2lkKTsKCmV4dGVybiBpbnQgdHR5X3BhcmFub2lh
X2NoZWNrKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGtkZXZfdCBkZXZpY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJvdXRpbmUpOwpleHRlcm4gY2hhciAqdHR5
X25hbWUoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciAqYnVmKTsKZXh0ZXJuIHZvaWQgdHR5
X3dhaXRfdW50aWxfc2VudChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgbG9uZyB0aW1lb3V0KTsK
ZXh0ZXJuIGludCB0dHlfY2hlY2tfY2hhbmdlKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0
ZXJuIHZvaWQgc3RvcF90dHkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCBz
dGFydF90dHkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gaW50IHR0eV9yZWdpc3Rl
cl9sZGlzYyhpbnQgZGlzYywgc3RydWN0IHR0eV9sZGlzYyAqbmV3X2xkaXNjKTsKZXh0ZXJuIGlu
dCB0dHlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIpOwpleHRlcm4g
aW50IHR0eV91bnJlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyKTsKZXh0
ZXJuIHZvaWQgdHR5X3JlZ2lzdGVyX2RldmZzIChzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLCB1
bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbWlub3IpOwpleHRlcm4gdm9pZCB0dHlfdW5yZWdpc3Rlcl9kZXZmcyAoc3RydWN0IHR0eV9k
cml2ZXIgKmRyaXZlciwgdW5zaWduZWQgbWlub3IpOwpleHRlcm4gaW50IHR0eV9yZWFkX3Jhd19k
YXRhKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNoYXIgKmJ1ZnAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGJ1Zmxlbik7CmV4dGVybiB2b2lkIHR0eV93cml0ZV9t
ZXNzYWdlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKm1zZyk7CgpleHRlcm4gaW50IGlz
X29ycGhhbmVkX3BncnAoaW50IHBncnApOwpleHRlcm4gaW50IGlzX2lnbm9yZWQoaW50IHNpZyk7
CmV4dGVybiBpbnQgdHR5X3NpZ25hbChpbnQgc2lnLCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsK
ZXh0ZXJuIHZvaWQgdHR5X2hhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2
b2lkIHR0eV92aGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgdHR5
X3VuaGFuZ3VwKHN0cnVjdCBmaWxlICpmaWxwKTsKZXh0ZXJuIGludCB0dHlfaHVuZ191cF9wKHN0
cnVjdCBmaWxlICogZmlscCk7CmV4dGVybiB2b2lkIGRvX1NBSyhzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5KTsKZXh0ZXJuIHZvaWQgZGlzYXNzb2NpYXRlX2N0dHkoaW50IHByaXYpOwpleHRlcm4gdm9p
ZCB0dHlfZmxpcF9idWZmZXJfcHVzaChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIGlu
dCB0dHlfZ2V0X2JhdWRfcmF0ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKCgpleHRlcm4gc3Ry
dWN0IHR0eV9sZGlzYyB0dHlfbGRpc2NfTl9UVFk7CgoKZXh0ZXJuIGludCBuX3R0eV9pb2N0bChz
dHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKCgoKZXh0ZXJu
IHZvaWQgc2VyaWFsX2NvbnNvbGVfaW5pdCh2b2lkKTsKCgoKZXh0ZXJuIGludCBwY3hlX29wZW4o
c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbHApOwoKCgpleHRlcm4gdm9p
ZCBjb25zb2xlX3ByaW50KGNvbnN0IGNoYXIgKik7CgoKCmV4dGVybiBpbnQgdnRfaW9jdGwoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKIyAyNSAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2VtLmgiIDEKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaXBjLmgiIDEK
CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdHlw
ZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9pcGMuaCIgMgoKCgoKc3RydWN0IGlwY19wZXJtCnsKICAgICAgICBfX2tlcm5lbF9rZXlfdCBr
ZXk7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGdp
ZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBjdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGNn
aWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IG1vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c2VxOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2Fz
bS9pcGNidWYuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvYXNtL2lwY2J1Zi5oIgpzdHJ1Y3QgaXBjNjRfcGVybQp7CiAgICAgICAgX19rZXJuZWxfa2V5
X3Qga2V5OwogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dp
ZDMyX3QgZ2lkOwogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgY3VpZDsKICAgICAgICBfX2tlcm5l
bF9naWQzMl90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IG1vZGU7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgX19wYWQxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlcTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7Cn07CiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pcGMuaCIgMgojIDU3ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaXBjLmgiCnN0cnVjdCBrZXJuX2lwY19w
ZXJtCnsKICAgICAgICBrZXlfdCBrZXk7CiAgICAgICAgdWlkX3QgdWlkOwogICAgICAgIGdpZF90
IGdpZDsKICAgICAgICB1aWRfdCBjdWlkOwogICAgICAgIGdpZF90IGNnaWQ7CiAgICAgICAgbW9k
ZV90IG1vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXE7Cn07CiMgNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NlbS5oIiAyCiMgMjMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zZW0uaCIKc3RydWN0IHNlbWlk
X2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2VtX3Blcm07CiAgICAgICAgX19rZXJuZWxf
dGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX2N0aW1lOwogICAg
ICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKnNlbV9w
ZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKipzZW1fcGVuZGluZ19sYXN0OwogICAg
ICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZW1fbnNl
bXM7Cn07CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNt
L3NlbWJ1Zi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vc2VtYnVmLmgiCnN0cnVjdCBzZW1pZDY0X2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjNjRf
cGVybSBzZW1fcGVybTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX290aW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fY3Rp
bWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzZW1fbnNlbXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBfX3VudXNlZDQ7Cn07CiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9zZW0uaCIgMgoKCnN0cnVjdCBzZW1idWYgewogICAgICAgIHVu
c2lnbmVkIHNob3J0IHNlbV9udW07CiAgICAgICAgc2hvcnQgc2VtX29wOwogICAgICAgIHNob3J0
IHNlbV9mbGc7Cn07CgoKdW5pb24gc2VtdW4gewogICAgICAgIGludCB2YWw7CiAgICAgICAgc3Ry
dWN0IHNlbWlkX2RzICpidWY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmFycmF5OwogICAgICAg
IHN0cnVjdCBzZW1pbmZvICpfX2J1ZjsKICAgICAgICB2b2lkICpfX3BhZDsKfTsKCnN0cnVjdCBz
ZW1pbmZvIHsKICAgICAgICBpbnQgc2VtbWFwOwogICAgICAgIGludCBzZW1tbmk7CiAgICAgICAg
aW50IHNlbW1uczsKICAgICAgICBpbnQgc2VtbW51OwogICAgICAgIGludCBzZW1tc2w7CiAgICAg
ICAgaW50IHNlbW9wbTsKICAgICAgICBpbnQgc2VtdW1lOwogICAgICAgIGludCBzZW11c3o7CiAg
ICAgICAgaW50IHNlbXZteDsKICAgICAgICBpbnQgc2VtYWVtOwp9OwojIDgyICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2VtLmgiCnN0cnVjdCBzZW0gewog
ICAgICAgIGludCBzZW12YWw7CiAgICAgICAgaW50IHNlbXBpZDsKfTsKCgpzdHJ1Y3Qgc2VtX2Fy
cmF5IHsKICAgICAgICBzdHJ1Y3Qga2Vybl9pcGNfcGVybSBzZW1fcGVybTsKICAgICAgICB0aW1l
X3Qgc2VtX290aW1lOwogICAgICAgIHRpbWVfdCBzZW1fY3RpbWU7CiAgICAgICAgc3RydWN0IHNl
bSAqc2VtX2Jhc2U7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqc2VtX3BlbmRpbmc7CiAgICAg
ICAgc3RydWN0IHNlbV9xdWV1ZSAqKnNlbV9wZW5kaW5nX2xhc3Q7CiAgICAgICAgc3RydWN0IHNl
bV91bmRvICp1bmRvOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VtX25zZW1zOwp9OwoKCnN0cnVj
dCBzZW1fcXVldWUgewogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKiBuZXh0OwogICAgICAgIHN0
cnVjdCBzZW1fcXVldWUgKiogcHJldjsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QqIHNsZWVw
ZXI7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICogdW5kbzsKICAgICAgICBpbnQgcGlkOwogICAg
ICAgIGludCBzdGF0dXM7CiAgICAgICAgc3RydWN0IHNlbV9hcnJheSAqIHNtYTsKICAgICAgICBp
bnQgaWQ7CiAgICAgICAgc3RydWN0IHNlbWJ1ZiAqIHNvcHM7CiAgICAgICAgaW50IG5zb3BzOwog
ICAgICAgIGludCBhbHRlcjsKfTsKCgoKCnN0cnVjdCBzZW1fdW5kbyB7CiAgICAgICAgc3RydWN0
IHNlbV91bmRvICogcHJvY19uZXh0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqIGlkX25leHQ7
CiAgICAgICAgaW50IHNlbWlkOwogICAgICAgIHNob3J0ICogc2VtYWRqOwp9OwoKIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1nZXQgKGtleV90IGtleSwgaW50IG5zZW1z
LCBpbnQgc2VtZmxnKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1v
cCAoaW50IHNlbWlkLCBzdHJ1Y3Qgc2VtYnVmICpzb3BzLCB1bnNpZ25lZCBuc29wcyk7CiBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2VtY3RsIChpbnQgc2VtaWQsIGludCBz
ZW1udW0sIGludCBjbWQsIHVuaW9uIHNlbXVuIGFyZyk7CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMQoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90eXBlcy5o
IiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zaWdu
YWwuaCIgMgoKCnN0cnVjdCBzaWdpbmZvOwojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgb2xkX3Np
Z3NldF90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lnWyg2NCAv
IDMyKV07Cn0gc2lnc2V0X3Q7CiMgMTI5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHZvaWQgKCpfX3NpZ2hhbmRsZXJfdCkoaW50
KTsKCgoKCgoKc3RydWN0IG9sZF9zaWdhY3Rpb24gewogICAgICAgIF9fc2lnaGFuZGxlcl90IHNh
X2hhbmRsZXI7CiAgICAgICAgb2xkX3NpZ3NldF90IHNhX21hc2s7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIpKHZvaWQpOwp9OwoKc3Ry
dWN0IHNpZ2FjdGlvbiB7CiAgICAgICAgX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAgIHZvaWQgKCpzYV9yZXN0b3Jlcikodm9p
ZCk7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKfTsKCnN0cnVjdCBrX3NpZ2FjdGlvbiB7CiAg
ICAgICAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKfTsKIyAxNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0
YWNrIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBpbnQgc3NfZmxhZ3M7CiAgICAgICAg
c2l6ZV90IHNzX3NpemU7Cn0gc3RhY2tfdDsKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxCiMgMTc5ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAyCgoKCnN0YXRpYyBfX2lu
bGluZV9fIHZvaWQgc2lnYWRkc2V0KHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAg
X19hc21fXygiYnRzbCAlMSwlMCIgOiAiPW0iKCpzZXQpIDogIklyIihfc2lnIC0gMSkgOiAiY2Mi
KTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdkZWxzZXQoc2lnc2V0X3QgKnNldCwgaW50
IF9zaWcpCnsKICAgICAgICBfX2FzbV9fKCJidHJsICUxLCUwIiA6ICI9bSIoKnNldCkgOiAiSXIi
KF9zaWcgLSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19jb25zdF9zaWdp
c21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIHVuc2lnbmVkIGxvbmcg
c2lnID0gX3NpZyAtIDE7CiAgICAgICAgcmV0dXJuIDEgJiAoc2V0LT5zaWdbc2lnIC8gMzJdID4+
IChzaWcgJSAzMikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19nZW5fc2lnaXNtZW1iZXIo
c2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBpbnQgcmV0OwogICAgICAgIF9fYXNt
X18oImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiAiPXIiKHJldCkg
OiAibSIoKnNldCksICJJciIoX3NpZy0xKSA6ICJjYyIpOwogICAgICAgIHJldHVybiByZXQ7Cn0K
IyAyMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc2lnbmFs
LmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzaWdmaW5kaW53b3JkKHVuc2lnbmVkIGxvbmcgd29y
ZCkKewogICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTAiIDogIj1yIih3b3JkKSA6ICJybSIod29y
ZCkgOiAiY2MiKTsKICAgICAgICByZXR1cm4gd29yZDsKfQojIDUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zaWduYWwuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc2lnaW5mby5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCIg
MgoKCgp0eXBlZGVmIHVuaW9uIHNpZ3ZhbCB7CiAgICAgICAgaW50IHNpdmFsX2ludDsKICAgICAg
ICB2b2lkICpzaXZhbF9wdHI7Cn0gc2lndmFsX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdpbmZv
IHsKICAgICAgICBpbnQgc2lfc2lnbm87CiAgICAgICAgaW50IHNpX2Vycm5vOwogICAgICAgIGlu
dCBzaV9jb2RlOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgX3BhZFsoKDEy
OC9zaXplb2YoaW50KSkgLSAzKV07CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVpZF90
IF91aWQ7CiAgICAgICAgICAgICAgICB9IF9raWxsOwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX3RpbWVyMTsKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjI7CiAgICAgICAgICAgICAgICB9IF90
aW1lcjsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
cGlkX3QgX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAg
ICAgICAgICAgICAgICAgc2lndmFsX3QgX3NpZ3ZhbDsKICAgICAgICAgICAgICAgIH0gX3J0OwoK
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBf
cGlkOwogICAgICAgICAgICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX3N0YXR1czsKICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfdXRp
bWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrX3QgX3N0aW1lOwogICAgICAgICAgICAg
ICAgfSBfc2lnY2hsZDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqX2FkZHI7CiAgICAgICAgICAgICAgICB9IF9zaWdmYXVsdDsKCgogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9iYW5kOwog
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX2ZkOwogICAgICAgICAgICAgICAgfSBfc2lncG9s
bDsKICAgICAgICB9IF9zaWZpZWxkczsKfSBzaWdpbmZvX3Q7CiMgMTk5ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCIKdHlwZWRlZiBzdHJ1Y3Qg
c2lnZXZlbnQgewogICAgICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVlOwogICAgICAgIGludCBzaWdl
dl9zaWdubzsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgICAgIGludCBfcGFkWygoNjQvc2l6ZW9mKGludCkpIC0gMyldOwoKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNp
Z3ZhbF90KTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2F0dHJpYnV0ZTsKICAgICAg
ICAgICAgICAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAgICB9IF9zaWdldl91bjsKfSBzaWdldmVu
dF90OwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L3N0cmluZy5oIiAxCiMgMjE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvYXNtL3NpZ2luZm8uaCIgMgoKc3RhdGljIGlubGluZSB2b2lkIGNvcHlfc2lnaW5mbyhz
aWdpbmZvX3QgKnRvLCBzaWdpbmZvX3QgKmZyb20pCnsKICAgICAgICBpZiAoZnJvbS0+c2lfY29k
ZSA8IDApCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mKHNpZ2lu
Zm9fdCkpID8gX19jb25zdGFudF9tZW1jcHkzZCgodG8pLChmcm9tKSwoc2l6ZW9mKHNpZ2luZm9f
dCkpKSA6IF9fbWVtY3B5M2QoKHRvKSwoZnJvbSksKHNpemVvZihzaWdpbmZvX3QpKSkpOwogICAg
ICAgIGVsc2UKCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMypzaXplb2Yo
aW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSA/IF9fY29uc3RhbnRfbWVt
Y3B5M2QoKHRvKSwoZnJvbSksKDMqc2l6ZW9mKGludCkgKyBzaXplb2YoZnJvbS0+X3NpZmllbGRz
Ll9zaWdjaGxkKSkpIDogX19tZW1jcHkzZCgodG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNp
emVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2ln
aW5mb190b191c2VyKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAyCgoKCgoK
CnN0cnVjdCBzaWdxdWV1ZSB7CiAgICAgICAgc3RydWN0IHNpZ3F1ZXVlICpuZXh0OwogICAgICAg
IHNpZ2luZm9fdCBpbmZvOwp9OwoKc3RydWN0IHNpZ3BlbmRpbmcgewogICAgICAgIHN0cnVjdCBz
aWdxdWV1ZSAqaGVhZCwgKip0YWlsOwogICAgICAgIHNpZ3NldF90IHNpZ25hbDsKfTsKIyA2OCAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zdHJpbmcu
aCIgMQojIDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
c2lnbmFsLmgiIDIKIyAxMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9zaWduYWwuaCIKc3RhdGljIGlubGluZSB2b2lkIHNpZ29yc2V0cyhzaWdzZXRfdCAq
ciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVkIGxvbmcg
YTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9
IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5z
aWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsgYjAgPSBi
LT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgYjMg
PSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgci0+c2lnWzQq
aSsxXSA9ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSB8IChiMikpOyByLT5z
aWdbNCppKzNdID0gKChhMykgfCAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2Fz
ZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdb
NCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5z
aWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgci0+c2lnWzQqaSsxXSA9
ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSB8IChiMikpOyBicmVhazsgY2Fz
ZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5zaWdb
NCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkp
OyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBhLT5z
aWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChi
MCkpOyBicmVhazsgfSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2FuZHNldHMoc2lnc2V0X3Qg
KnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRfdCAqYikgeyB1bnNpZ25lZCBsb25n
IGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkg
PSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+
c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9IGEtPnNpZ1s0KmkrM107IGIwID0g
Yi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IGIz
ID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0
KmkrMV0gPSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiAoYjIpKTsgci0+
c2lnWzQqaSszXSA9ICgoYTMpICYgKGIzKSk7IH0gc3dpdGNoICgoNjQgLyAzMikgJSA0KSB7IGNh
c2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2ln
WzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+
c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0KmkrMV0g
PSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiAoYjIpKTsgYnJlYWs7IGNh
c2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGIwID0gYi0+c2ln
WzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjAp
KTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+
c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAo
YjApKTsgYnJlYWs7IH0gfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWduYW5kc2V0cyhzaWdzZXRf
dCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVkIGxv
bmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZvciAo
aSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBh
LT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsgYjAg
PSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsg
YjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHItPnNp
Z1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgfihiMikp
OyByLT5zaWdbNCppKzNdID0gKChhMykgJiB+KGIzKSk7IH0gc3dpdGNoICgoNjQgLyAzMikgJSA0
KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0g
YS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIy
ID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5zaWdb
NCppKzFdID0gKChhMSkgJiB+KGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIH4oYjIpKTsg
YnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGIw
ID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCppKzBdID0gKChh
MCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgYnJlYWs7IGNhc2Ug
MTogYTAgPSBhLT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0g
PSAoKGEwKSAmIH4oYjApKTsgYnJlYWs7IH0gfQojIDE0MCAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2ln
bm90c2V0KHNpZ3NldF90ICpzZXQpIHsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwg
KDY0IC8gMzIpLzQ7ICsraSkgeyBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0p
KTsgc2V0LT5zaWdbNCppKzFdID0gKH4oc2V0LT5zaWdbNCppKzFdKSk7IHNldC0+c2lnWzQqaSsy
XSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBzZXQtPnNpZ1s0KmkrM10gPSAofihzZXQtPnNpZ1s0
KmkrM10pKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBzZXQtPnNpZ1s0Kmkr
Ml0gPSAofihzZXQtPnNpZ1s0KmkrMl0pKTsgY2FzZSAyOiBzZXQtPnNpZ1s0KmkrMV0gPSAofihz
ZXQtPnNpZ1s0KmkrMV0pKTsgY2FzZSAxOiBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0
KmkrMF0pKTsgfSB9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZW1wdHlzZXQoc2lnc2V0X3Qg
KnNldCkKewogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQo
KChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihzaWdz
ZXRfdCkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVu
c2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IChfX2J1aWx0aW5fY29u
c3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKChzZXQpKSks
KCgoMCkpKSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQp
KSwoKDApKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogc2V0LT5zaWdb
MF0gPSAwOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgc2lnZmlsbHNldChzaWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAz
MikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFu
dF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19j
b25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWdu
ZWQgY2hhcikoLTEpKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpIDogX19jb25zdGFudF9jX21lbXNl
dCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihz
aWdzZXRfdCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkg
PyBfX21lbXNldF9nZW5lcmljKCgoKHNldCkpKSwoKCgtMSkpKSwoKChzaXplb2Yoc2lnc2V0X3Qp
KSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKC0xKSksKChzaXplb2Yoc2lnc2V0X3Qp
KSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFd
ID0gLTE7CiAgICAgICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9IC0xOwogICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQp9CgpleHRlcm4gY2hhciAqIHJlbmRlcl9zaWdzZXRfdChzaWdzZXRf
dCAqc2V0LCBjaGFyICpidWZmZXIpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0bWFz
ayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1sw
XSB8PSBtYXNrOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZGVsc2V0bWFzayhzaWdzZXRfdCAq
c2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSAmPSB+bWFzazsK
fQoKc3RhdGljIGlubGluZSBpbnQgc2lndGVzdHNldG1hc2soc2lnc2V0X3QgKnNldCwgdW5zaWdu
ZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgcmV0dXJuIChzZXQtPnNpZ1swXSAmIG1hc2spICE9IDA7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVk
IGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gbWFzazsKICAgICAgICBzd2l0Y2gg
KCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGlu
X2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0
IC8gMzIpLTEpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZzZXQtPnNpZ1sx
XSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKGxvbmcpKigo
NjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgw
eDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMy
KS0xKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIp
LTEpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgwKSkpLCgoKHNp
emVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgmc2V0LT5z
aWdbMV0pKSwoKDApKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsKICAgICAgICBj
YXNlIDE6IDsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0aW52KHNp
Z3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0g
fm1hc2s7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291
bnRfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIp
KC0xKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVt
c2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkp
LCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9w
KChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgmc2V0
LT5zaWdbMV0pKSksKCgoLTEpKSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDog
X19tZW1zZXRfZ2VuZXJpYygoKCZzZXQtPnNpZ1sxXSkpLCgoLTEpKSwoKHNpemVvZihsb25nKSoo
KDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6
IHNldC0+c2lnWzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiA7CiAgICAgICAgfQp9CgoKCnN0YXRp
YyBpbmxpbmUgdm9pZCBpbml0X3NpZ3BlbmRpbmcoc3RydWN0IHNpZ3BlbmRpbmcgKnNpZykKewog
ICAgICAgIHNpZ2VtcHR5c2V0KCZzaWctPnNpZ25hbCk7CiAgICAgICAgc2lnLT5oZWFkID0gKCh2
b2lkICopMCk7CiAgICAgICAgc2lnLT50YWlsID0gJnNpZy0+aGVhZDsKfQoKZXh0ZXJuIGxvbmcg
ZG9fc2lncGVuZGluZyh2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDI3ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zZWN1cmViaXRzLmgiIDEKCgoK
CgpleHRlcm4gdW5zaWduZWQgc2VjdXJlYml0czsKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZnNfc3RydWN0LmgiIDEKCgoKCnN0cnVjdCBm
c19zdHJ1Y3QgewogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIHJ3bG9ja190IGxvY2s7
CiAgICAgICAgaW50IHVtYXNrOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiByb290LCAqIHB3ZCwg
KiBhbHRyb290OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqIHJvb3RtbnQsICogcHdkbW50LCAq
IGFsdHJvb3RtbnQ7Cn07CiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9mc19zdHJ1Y3QuaCIKZXh0ZXJuIHZvaWQgZXhpdF9mcyhzdHJ1Y3QgdGFza19z
dHJ1Y3QgKik7CmV4dGVybiB2b2lkIHNldF9mc19hbHRyb290KHZvaWQpOwoKCgoKCgpzdGF0aWMg
aW5saW5lIHZvaWQgc2V0X2ZzX3Jvb3Qoc3RydWN0IGZzX3N0cnVjdCAqZnMsCiAgICAgICAgc3Ry
dWN0IHZmc21vdW50ICptbnQsCiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAg
ICAgc3RydWN0IGRlbnRyeSAqb2xkX3Jvb3Q7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpvbGRf
cm9vdG1udDsKICAgICAgICAodm9pZCkoJmZzLT5sb2NrKTsKICAgICAgICBvbGRfcm9vdCA9IGZz
LT5yb290OwogICAgICAgIG9sZF9yb290bW50ID0gZnMtPnJvb3RtbnQ7CiAgICAgICAgZnMtPnJv
b3RtbnQgPSBtbnRnZXQobW50KTsKICAgICAgICBmcy0+cm9vdCA9IGRnZXQoZGVudHJ5KTsKICAg
ICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYgKG9sZF9yb290KSB7CiAgICAgICAgICAg
ICAgICBkcHV0KG9sZF9yb290KTsKICAgICAgICAgICAgICAgIG1udHB1dChvbGRfcm9vdG1udCk7
CiAgICAgICAgfQp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZnNfcHdkKHN0cnVjdCBm
c19zdHJ1Y3QgKmZzLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVj
dCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9wd2Q7CiAgICAg
ICAgc3RydWN0IHZmc21vdW50ICpvbGRfcHdkbW50OwogICAgICAgICh2b2lkKSgmZnMtPmxvY2sp
OwogICAgICAgIG9sZF9wd2QgPSBmcy0+cHdkOwogICAgICAgIG9sZF9wd2RtbnQgPSBmcy0+cHdk
bW50OwogICAgICAgIGZzLT5wd2RtbnQgPSBtbnRnZXQobW50KTsKICAgICAgICBmcy0+cHdkID0g
ZGdldChkZW50cnkpOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBpZiAob2xkX3B3
ZCkgewogICAgICAgICAgICAgICAgZHB1dChvbGRfcHdkKTsKICAgICAgICAgICAgICAgIG1udHB1
dChvbGRfcHdkbW50KTsKICAgICAgICB9Cn0KCnN0cnVjdCBmc19zdHJ1Y3QgKmNvcHlfZnNfc3Ry
dWN0KHN0cnVjdCBmc19zdHJ1Y3QgKm9sZCk7CnZvaWQgcHV0X2ZzX3N0cnVjdChzdHJ1Y3QgZnNf
c3RydWN0ICpmcyk7CiMgMjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIiAyCgpzdHJ1Y3QgZXhlY19kb21haW47CiMgNTggIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBhdmVucnVuW107CiMgNzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IG5yX3J1bm5pbmcsIG5yX3RocmVhZHM7
CmV4dGVybiBpbnQgbGFzdF9waWQ7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgNzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQojIDgwICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9wYXJhbS5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3BhcmFtLmgiIDIK
IyA4MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
cmVzb3VyY2UuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC90aW1lLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMgojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIKc3RydWN0IHJ1c2FnZSB7CiAgICAg
ICAgc3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVfc3Rp
bWU7CiAgICAgICAgbG9uZyBydV9tYXhyc3M7CiAgICAgICAgbG9uZyBydV9peHJzczsKICAgICAg
ICBsb25nIHJ1X2lkcnNzOwogICAgICAgIGxvbmcgcnVfaXNyc3M7CiAgICAgICAgbG9uZyBydV9t
aW5mbHQ7CiAgICAgICAgbG9uZyBydV9tYWpmbHQ7CiAgICAgICAgbG9uZyBydV9uc3dhcDsKICAg
ICAgICBsb25nIHJ1X2luYmxvY2s7CiAgICAgICAgbG9uZyBydV9vdWJsb2NrOwogICAgICAgIGxv
bmcgcnVfbXNnc25kOwogICAgICAgIGxvbmcgcnVfbXNncmN2OwogICAgICAgIGxvbmcgcnVfbnNp
Z25hbHM7CiAgICAgICAgbG9uZyBydV9udmNzdzsKICAgICAgICBsb25nIHJ1X25pdmNzdzsKfTsK
CnN0cnVjdCBybGltaXQgewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9jdXI7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBybGltX21heDsKfTsKIyA1NiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9yZXNvdXJjZS5oIiAxCiMgNTcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIiAyCiMgODIgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3RpbWVyLmgi
IDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
Y29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvdGltZXIuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9saXN0LmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvdGltZXIuaCIgMgojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvdGltZXIuaCIKc3RydWN0IHRpbWVyX2xpc3QgewogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGV4cGlyZXM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBkYXRhOwogICAgICAgIHZvaWQgKCpmdW5jdGlvbikodW5zaWdu
ZWQgbG9uZyk7Cn07CgpleHRlcm4gdm9pZCBhZGRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0
aW1lcik7CmV4dGVybiBpbnQgZGVsX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwoj
IDQxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdGltZXIu
aCIKaW50IG1vZF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIsIHVuc2lnbmVkIGxvbmcg
ZXhwaXJlcyk7CgpleHRlcm4gdm9pZCBpdF9yZWFsX2ZuKHVuc2lnbmVkIGxvbmcpOwoKc3RhdGlj
IGlubGluZSB2b2lkIGluaXRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcikKewogICAg
ICAgIHRpbWVyLT5saXN0Lm5leHQgPSB0aW1lci0+bGlzdC5wcmV2ID0gKCh2b2lkICopMCk7Cn0K
CnN0YXRpYyBpbmxpbmUgaW50IHRpbWVyX3BlbmRpbmcgKGNvbnN0IHN0cnVjdCB0aW1lcl9saXN0
ICogdGltZXIpCnsKICAgICAgICByZXR1cm4gdGltZXItPmxpc3QubmV4dCAhPSAoKHZvaWQgKikw
KTsKfQojIDgzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
c2NoZWQuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
YXNtL3Byb2Nlc3Nvci5oIiAxCiMgODUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMTI1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHNjaGVkX3BhcmFtIHsKICAgICAg
ICBpbnQgc2NoZWRfcHJpb3JpdHk7Cn07CgpzdHJ1Y3QgY29tcGxldGlvbjsKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQoj
IDEzNCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiIDIKCgoKCgoKCmV4dGVybiByd2xvY2tfdCB0YXNrbGlzdF9sb2NrOwpleHRlcm4gc3Bpbmxv
Y2tfdCBydW5xdWV1ZV9sb2NrOwpleHRlcm4gc3BpbmxvY2tfdCBtbWxpc3RfbG9jazsKCmV4dGVy
biB2b2lkIHNjaGVkX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGluaXRfaWRsZSh2b2lkKTsKZXh0
ZXJuIHZvaWQgc2hvd19zdGF0ZSh2b2lkKTsKZXh0ZXJuIHZvaWQgY3B1X2luaXQgKHZvaWQpOwpl
eHRlcm4gdm9pZCB0cmFwX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHVwZGF0ZV9wcm9jZXNzX3Rp
bWVzKGludCB1c2VyKTsKZXh0ZXJuIHZvaWQgdXBkYXRlX29uZV9wcm9jZXNzKHN0cnVjdCB0YXNr
X3N0cnVjdCAqcCwgdW5zaWduZWQgbG9uZyB1c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW0sIGludCBjcHUpOwoKCmV4dGVybiBzaWduZWQgbG9u
ZyBzY2hlZHVsZV90aW1lb3V0KHNpZ25lZCBsb25nIHRpbWVvdXQpIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMykpKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIHNjaGVkdWxlKHZv
aWQpOwoKZXh0ZXJuIGludCBzY2hlZHVsZV90YXNrKHN0cnVjdCB0cV9zdHJ1Y3QgKnRhc2spOwpl
eHRlcm4gdm9pZCBmbHVzaF9zY2hlZHVsZWRfdGFza3Modm9pZCk7CmV4dGVybiBpbnQgc3RhcnRf
Y29udGV4dF90aHJlYWQodm9pZCk7CmV4dGVybiBpbnQgY3VycmVudF9pc19rZXZlbnRkKHZvaWQp
OwojIDE3MiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiCnN0cnVjdCBmaWxlc19zdHJ1Y3QgewogICAgICAgIGF0b21pY190IGNvdW50OwogICAg
ICAgIHJ3bG9ja190IGZpbGVfbG9jazsKICAgICAgICBpbnQgbWF4X2ZkczsKICAgICAgICBpbnQg
bWF4X2Zkc2V0OwogICAgICAgIGludCBuZXh0X2ZkOwogICAgICAgIHN0cnVjdCBmaWxlICoqIGZk
OwogICAgICAgIGZkX3NldCAqY2xvc2Vfb25fZXhlYzsKICAgICAgICBmZF9zZXQgKm9wZW5fZmRz
OwogICAgICAgIGZkX3NldCBjbG9zZV9vbl9leGVjX2luaXQ7CiAgICAgICAgZmRfc2V0IG9wZW5f
ZmRzX2luaXQ7CiAgICAgICAgc3RydWN0IGZpbGUgKiBmZF9hcnJheVszMl07Cn07CiMgMjA0ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3Ry
dWN0IG1tX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcDsKICAg
ICAgICByYl9yb290X3QgbW1fcmI7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1h
cF9jYWNoZTsKICAgICAgICBwZ2RfdCAqIHBnZDsKICAgICAgICBhdG9taWNfdCBtbV91c2VyczsK
ICAgICAgICBhdG9taWNfdCBtbV9jb3VudDsKICAgICAgICBpbnQgbWFwX2NvdW50OwogICAgICAg
IHN0cnVjdCByd19zZW1hcGhvcmUgbW1hcF9zZW07CiAgICAgICAgc3BpbmxvY2tfdCBwYWdlX3Rh
YmxlX2xvY2s7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW1saXN0OwoKCgoKICAgICAgICB1
bnNpZ25lZCBsb25nIHN0YXJ0X2NvZGUsIGVuZF9jb2RlLCBzdGFydF9kYXRhLCBlbmRfZGF0YTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2JyaywgYnJrLCBzdGFydF9zdGFjazsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGFyZ19zdGFydCwgYXJnX2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgcnNzLCB0b3RhbF92bSwgbG9ja2VkX3ZtOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZGVmX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3ZtX21hc2s7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzd2FwX2FkZHJlc3M7CgogICAgICAgIHVuc2lnbmVkIGR1
bXBhYmxlOjE7CgoKICAgICAgICBtbV9jb250ZXh0X3QgY29udGV4dDsKfTsKCmV4dGVybiBpbnQg
bW1saXN0X25yOwojIDI0NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L3NjaGVkLmgiCnN0cnVjdCBzaWduYWxfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBj
b3VudDsKICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24gYWN0aW9uWzY0XTsKICAgICAgICBzcGlu
bG9ja190IHNpZ2xvY2s7Cn07CiMgMjYzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHVzZXJfc3RydWN0IHsKICAgICAgICBhdG9t
aWNfdCBfX2NvdW50OwogICAgICAgIGF0b21pY190IHByb2Nlc3NlczsKICAgICAgICBhdG9taWNf
dCBmaWxlczsKCgogICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqbmV4dCwgKipwcHJldjsKICAg
ICAgICB1aWRfdCB1aWQ7Cn07CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3Qgcm9vdF91
c2VyOwoKCnN0cnVjdCB0YXNrX3N0cnVjdCB7CgoKCiAgICAgICAgdm9sYXRpbGUgbG9uZyBzdGF0
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGludCBzaWdwZW5kaW5nOwog
ICAgICAgIG1tX3NlZ21lbnRfdCBhZGRyX2xpbWl0OwoKCgogICAgICAgIHN0cnVjdCBleGVjX2Rv
bWFpbiAqZXhlY19kb21haW47CiAgICAgICAgdm9sYXRpbGUgbG9uZyBuZWVkX3Jlc2NoZWQ7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBwdHJhY2U7CgogICAgICAgIGludCBsb2NrX2RlcHRoOwoKCgoK
CgogICAgICAgIGxvbmcgY291bnRlcjsKICAgICAgICBsb25nIG5pY2U7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBwb2xpY3k7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW07CiAgICAgICAgaW50
IGhhc19jcHUsIHByb2Nlc3NvcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdXNfYWxsb3dlZDsK
CgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBydW5fbGlzdDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNsZWVwX3RpbWU7CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dF90YXNrLCAq
cHJldl90YXNrOwogICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGxvY2FsX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCBhbGxvY2F0
aW9uX29yZGVyLCBucl9sb2NhbF9wYWdlczsKCgogICAgICAgIHN0cnVjdCBsaW51eF9iaW5mbXQg
KmJpbmZtdDsKICAgICAgICBpbnQgZXhpdF9jb2RlLCBleGl0X3NpZ25hbDsKICAgICAgICBpbnQg
cGRlYXRoX3NpZ25hbDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBwZXJzb25hbGl0eTsKICAgICAg
ICBpbnQgZGlkX2V4ZWM6MTsKICAgICAgICBwaWRfdCBwaWQ7CiAgICAgICAgcGlkX3QgcGdycDsK
ICAgICAgICBwaWRfdCB0dHlfb2xkX3BncnA7CiAgICAgICAgcGlkX3Qgc2Vzc2lvbjsKICAgICAg
ICBwaWRfdCB0Z2lkOwoKICAgICAgICBpbnQgbGVhZGVyOwoKCgoKCiAgICAgICAgc3RydWN0IHRh
c2tfc3RydWN0ICpwX29wcHRyLCAqcF9wcHRyLCAqcF9jcHRyLCAqcF95c3B0ciwgKnBfb3NwdHI7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0aHJlYWRfZ3JvdXA7CgoKICAgICAgICBzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnBpZGhhc2hfbmV4dDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipw
aWRoYXNoX3BwcmV2OwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2NobGRleGl0Owog
ICAgICAgIHN0cnVjdCBjb21wbGV0aW9uICp2Zm9ya19kb25lOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgcnRfcHJpb3JpdHk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpdF9yZWFsX3ZhbHVlLCBpdF9w
cm9mX3ZhbHVlLCBpdF92aXJ0X3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXRfcmVhbF9p
bmNyLCBpdF9wcm9mX2luY3IsIGl0X3ZpcnRfaW5jcjsKICAgICAgICBzdHJ1Y3QgdGltZXJfbGlz
dCByZWFsX3RpbWVyOwogICAgICAgIHN0cnVjdCB0bXMgdGltZXM7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzdGFydF90aW1lOwogICAgICAgIGxvbmcgcGVyX2NwdV91dGltZVsxXSwgcGVyX2NwdV9z
dGltZVsxXTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtaW5fZmx0LCBtYWpfZmx0LCBuc3dhcCwg
Y21pbl9mbHQsIGNtYWpfZmx0LCBjbnN3YXA7CiAgICAgICAgaW50IHN3YXBwYWJsZToxOwoKICAg
ICAgICB1aWRfdCB1aWQsZXVpZCxzdWlkLGZzdWlkOwogICAgICAgIGdpZF90IGdpZCxlZ2lkLHNn
aWQsZnNnaWQ7CiAgICAgICAgaW50IG5ncm91cHM7CiAgICAgICAgZ2lkX3QgZ3JvdXBzWzMyXTsK
ICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2VmZmVjdGl2ZSwgY2FwX2luaGVyaXRhYmxlLCBjYXBf
cGVybWl0dGVkOwogICAgICAgIGludCBrZWVwX2NhcGFiaWxpdGllczoxOwogICAgICAgIHN0cnVj
dCB1c2VyX3N0cnVjdCAqdXNlcjsKCiAgICAgICAgc3RydWN0IHJsaW1pdCBybGltWzExXTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB1c2VkX21hdGg7CiAgICAgICAgY2hhciBjb21tWzE2XTsKCiAg
ICAgICAgaW50IGxpbmtfY291bnQsIHRvdGFsX2xpbmtfY291bnQ7CiAgICAgICAgc3RydWN0IHR0
eV9zdHJ1Y3QgKnR0eTsKICAgICAgICB1bnNpZ25lZCBpbnQgbG9ja3M7CgogICAgICAgIHN0cnVj
dCBzZW1fdW5kbyAqc2VtdW5kbzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1zbGVlcGlu
ZzsKCiAgICAgICAgc3RydWN0IHRocmVhZF9zdHJ1Y3QgdGhyZWFkOwoKICAgICAgICBzdHJ1Y3Qg
ZnNfc3RydWN0ICpmczsKCiAgICAgICAgc3RydWN0IGZpbGVzX3N0cnVjdCAqZmlsZXM7CgogICAg
ICAgIHNwaW5sb2NrX3Qgc2lnbWFza19sb2NrOwogICAgICAgIHN0cnVjdCBzaWduYWxfc3RydWN0
ICpzaWc7CgogICAgICAgIHNpZ3NldF90IGJsb2NrZWQ7CiAgICAgICAgc3RydWN0IHNpZ3BlbmRp
bmcgcGVuZGluZzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBzYXNfc3Nfc3A7CiAgICAgICAgc2l6
ZV90IHNhc19zc19zaXplOwogICAgICAgIGludCAoKm5vdGlmaWVyKSh2b2lkICpwcml2KTsKICAg
ICAgICB2b2lkICpub3RpZmllcl9kYXRhOwogICAgICAgIHNpZ3NldF90ICpub3RpZmllcl9tYXNr
OwoKCiAgICAgICAgdTMyIHBhcmVudF9leGVjX2lkOwogICAgICAgIHUzMiBzZWxmX2V4ZWNfaWQ7
CgogICAgICAgIHNwaW5sb2NrX3QgYWxsb2NfbG9jazsKfTsKIyA0NDQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gc3RydWN0IGV4
ZWNfZG9tYWluIGRlZmF1bHRfZXhlY19kb21haW47CiMgNDk2ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKdW5pb24gdGFza191bmlvbiB7CiAg
ICAgICAgc3RydWN0IHRhc2tfc3RydWN0IHRhc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFj
a1syMDQ4KnNpemVvZihsb25nKS9zaXplb2YobG9uZyldOwp9OwoKZXh0ZXJuIHVuaW9uIHRhc2tf
dW5pb24gaW5pdF90YXNrX3VuaW9uOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgaW5pdF9tbTsK
ZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqaW5pdF90YXNrc1sxXTsKCgoKZXh0ZXJuIHN0cnVj
dCB0YXNrX3N0cnVjdCAqcGlkaGFzaFsoNDA5NiA+PiAyKV07CgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBoYXNoX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBzdHJ1Y3QgdGFza19z
dHJ1Y3QgKipodGFibGUgPSAmcGlkaGFzaFsoKCgocC0+cGlkKSA+PiA4KSBeIChwLT5waWQpKSAm
ICgoNDA5NiA+PiAyKSAtIDEpKV07CgogICAgICAgIGlmKChwLT5waWRoYXNoX25leHQgPSAqaHRh
YmxlKSAhPSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgICgqaHRhYmxlKS0+cGlkaGFzaF9w
cHJldiA9ICZwLT5waWRoYXNoX25leHQ7CiAgICAgICAgKmh0YWJsZSA9IHA7CiAgICAgICAgcC0+
cGlkaGFzaF9wcHJldiA9IGh0YWJsZTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHVuaGFzaF9waWQo
c3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgaWYocC0+cGlkaGFzaF9uZXh0KQogICAg
ICAgICAgICAgICAgcC0+cGlkaGFzaF9uZXh0LT5waWRoYXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9w
cHJldjsKICAgICAgICAqcC0+cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhhc2hfbmV4dDsKfQoKc3Rh
dGljIGlubGluZSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmZpbmRfdGFza19ieV9waWQoaW50IHBpZCkK
ewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgKipodGFibGUgPSAmcGlkaGFzaFsoKCgo
cGlkKSA+PiA4KSBeIChwaWQpKSAmICgoNDA5NiA+PiAyKSAtIDEpKV07CgogICAgICAgIGZvcihw
ID0gKmh0YWJsZTsgcCAmJiBwLT5waWQgIT0gcGlkOyBwID0gcC0+cGlkaGFzaF9uZXh0KQogICAg
ICAgICAgICAgICAgOwoKICAgICAgICByZXR1cm4gcDsKfQoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9z
dHJ1Y3QgKiBhbGxvY191aWQodWlkX3QpOwpleHRlcm4gdm9pZCBmcmVlX3VpZChzdHJ1Y3QgdXNl
cl9zdHJ1Y3QgKik7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vY3VycmVudC5oIiAxCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKCnN0YXRpYyBpbmxpbmUg
c3RydWN0IHRhc2tfc3RydWN0ICogZ2V0X2N1cnJlbnQodm9pZCkKewogICAgICAgIHN0cnVjdCB0
YXNrX3N0cnVjdCAqY3VycmVudDsKICAgICAgICBfX2FzbV9fKCJhbmRsICUlZXNwLCUwOyAiOiI9
ciIgKGN1cnJlbnQpIDogIjAiICh+ODE5MVVMKSk7CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiB9
CiMgNTQ0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2No
ZWQuaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgamlmZmllczsKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgaXRpbWVyX3RpY2tzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGltZXJfbmV4
dDsKZXh0ZXJuIHN0cnVjdCB0aW1ldmFsIHh0aW1lOwpleHRlcm4gdm9pZCBkb190aW1lcihzdHJ1
Y3QgcHRfcmVncyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7
CgoKCmV4dGVybiB2b2lkIF9fd2FrZV91cCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5zaWduZWQg
aW50IG1vZGUsIGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9p
ZCBfX3dha2VfdXBfc3luYyh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5zaWduZWQgaW50IG1vZGUs
IGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBzbGVlcF9v
bih3YWl0X3F1ZXVlX2hlYWRfdCAqcSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRl
cm4gbG9uZyBzbGVlcF9vbl90aW1lb3V0KHdhaXRfcXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9u
ZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4gdm9pZCBpbnRl
cnJ1cHRpYmxlX3NsZWVwX29uKHdhaXRfcXVldWVfaGVhZF90ICpxKSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CmV4dGVybiBsb25nIGludGVycnVwdGlibGVfc2xlZXBfb25fdGltZW91dCh3
YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVkIGxvbmcgdGltZW91dCkgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpOwoKZXh0ZXJuIGludCB3YWtlX3VwX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3Ry
dWN0ICogdHNrKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgNTc3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c193YWl0NChwaWRfdCBwaWQsdW5zaWduZWQgaW50ICog
c3RhdF9hZGRyLCBpbnQgb3B0aW9ucywgc3RydWN0IHJ1c2FnZSAqIHJ1KTsKCmV4dGVybiBpbnQg
aW5fZ3JvdXBfcChnaWRfdCk7CmV4dGVybiBpbnQgaW5fZWdyb3VwX3AoZ2lkX3QpOwoKZXh0ZXJu
IHZvaWQgcHJvY19jYWNoZXNfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2lnbmFscyhz
dHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbF9oYW5kbGVycyhz
dHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQgZGVxdWV1ZV9zaWduYWwoc2lnc2V0X3Qg
Kiwgc2lnaW5mb190ICopOwpleHRlcm4gdm9pZCBibG9ja19hbGxfc2lnbmFscyhpbnQgKCpub3Rp
Zmllcikodm9pZCAqcHJpdiksIHZvaWQgKnByaXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpZ3NldF90ICptYXNrKTsKZXh0ZXJuIHZvaWQgdW5ibG9ja19hbGxfc2lnbmFscyh2b2lk
KTsKZXh0ZXJuIGludCBzZW5kX3NpZ19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgc3RydWN0
IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGZvcmNlX3NpZ19pbmZvKGludCwgc3RydWN0IHNp
Z2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGtpbGxfcGdfaW5mbyhp
bnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsKZXh0ZXJuIGludCBraWxsX3NsX2luZm8oaW50
LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiBpbnQga2lsbF9wcm9jX2luZm8oaW50
LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiB2b2lkIG5vdGlmeV9wYXJlbnQoc3Ry
dWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2b2lkIGRvX25vdGlmeV9wYXJlbnQoc3Ry
dWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2b2lkIGZvcmNlX3NpZyhpbnQsIHN0cnVj
dCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBzZW5kX3NpZyhpbnQsIHN0cnVjdCB0YXNrX3N0
cnVjdCAqLCBpbnQpOwpleHRlcm4gaW50IGtpbGxfcGcocGlkX3QsIGludCwgaW50KTsKZXh0ZXJu
IGludCBraWxsX3NsKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQga2lsbF9wcm9jKHBpZF90
LCBpbnQsIGludCk7CmV4dGVybiBpbnQgZG9fc2lnYWN0aW9uKGludCwgY29uc3Qgc3RydWN0IGtf
c2lnYWN0aW9uICosIHN0cnVjdCBrX3NpZ2FjdGlvbiAqKTsKZXh0ZXJuIGludCBkb19zaWdhbHRz
dGFjayhjb25zdCBzdGFja190ICosIHN0YWNrX3QgKiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMg
aW5saW5lIGludCBzaWduYWxfcGVuZGluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAg
ICByZXR1cm4gKHAtPnNpZ3BlbmRpbmcgIT0gMCk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBo
YXNfcGVuZGluZ19zaWduYWxzKHNpZ3NldF90ICpzaWduYWwsIHNpZ3NldF90ICpibG9ja2VkKQp7
CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWFkeTsKICAgICAgICBsb25nIGk7CgogICAgICAgIHN3
aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGZvciAo
aSA9ICg2NCAvIDMyKSwgcmVhZHkgPSAwOyAtLWkgPj0gMCA7KQogICAgICAgICAgICAgICAgICAg
ICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1tpXSAmfiBibG9ja2VkLT5zaWdbaV07CiAgICAgICAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0OiByZWFkeSA9IHNpZ25hbC0+c2lnWzNdICZ+
IGJsb2NrZWQtPnNpZ1szXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzJd
ICZ+IGJsb2NrZWQtPnNpZ1syXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2ln
WzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+
c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIDI6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMV0gJn4gYmxvY2tlZC0+c2lnWzFdOwogICAg
ICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwog
ICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTogcmVhZHkgPSBzaWduYWwtPnNp
Z1swXSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiByZWFkeSAh
PSAwOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHJlY2FsY19zaWdwZW5kaW5nKHN0cnVjdCB0
YXNrX3N0cnVjdCAqdCkKewogICAgICAgIHQtPnNpZ3BlbmRpbmcgPSBoYXNfcGVuZGluZ19zaWdu
YWxzKCZ0LT5wZW5kaW5nLnNpZ25hbCwgJnQtPmJsb2NrZWQpOwp9CgoKCnN0YXRpYyBpbmxpbmUg
aW50IG9uX3NpZ19zdGFjayh1bnNpZ25lZCBsb25nIHNwKQp7CiAgICAgICAgcmV0dXJuIChzcCAt
IGdldF9jdXJyZW50KCktPnNhc19zc19zcCA8IGdldF9jdXJyZW50KCktPnNhc19zc19zaXplKTsK
fQoKc3RhdGljIGlubGluZSBpbnQgc2FzX3NzX2ZsYWdzKHVuc2lnbmVkIGxvbmcgc3ApCnsKICAg
ICAgICByZXR1cm4gKGdldF9jdXJyZW50KCktPnNhc19zc19zaXplID09IDAgPyAyCiAgICAgICAg
ICAgICAgICA6IG9uX3NpZ19zdGFjayhzcCkgPyAxIDogMCk7Cn0KCmV4dGVybiBpbnQgcmVxdWVz
dF9pcnEodW5zaWduZWQgaW50LAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpoYW5kbGVy
KShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCiAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZywgY29uc3QgY2hhciAqLCB2b2lkICopOwpleHRlcm4gdm9pZCBmcmVlX2ly
cSh1bnNpZ25lZCBpbnQsIHZvaWQgKik7CiMgNjgwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RhdGljIGlubGluZSBpbnQgc3VzZXIodm9p
ZCkKewogICAgICAgIGlmICghKCAoMSA8PCAoMCArMSkpICYgMHgwMDAwMDAwMCA/ICgxIDw8ICgw
KSkgJiAweDAwMDAwMDAwIDogKDEgPDwgKDApKSAmIHNlY3VyZWJpdHMgKSAmJiBnZXRfY3VycmVu
dCgpLT5ldWlkID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9
IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAg
cmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGZzdXNlcih2b2lkKQp7CiAgICAgICAgaWYg
KCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAmIDB4MDAwMDAwMDAg
OiAoMSA8PCAoMCkpICYgc2VjdXJlYml0cyApICYmIGdldF9jdXJyZW50KCktPmZzdWlkID09IDAp
IHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9IDB4MDAwMDAxMDA7CiAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoK
CgoKCnN0YXRpYyBpbmxpbmUgaW50IGNhcGFibGUoaW50IGNhcCkKewoKICAgICAgICBpZiAoKChn
ZXRfY3VycmVudCgpLT5jYXBfZWZmZWN0aXZlKSAmICgxIDw8IChjYXApKSkpCgoKCiAgICAgICAg
ewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAg
ICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKCgoK
ZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbV9hbGxvYyh2b2lkKTsKCmV4dGVybiBzdHJ1Y3Qg
bW1fc3RydWN0ICogc3RhcnRfbGF6eV90bGIodm9pZCk7CmV4dGVybiB2b2lkIGVuZF9sYXp5X3Rs
YihzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CgoKZXh0ZXJuIGlubGluZSB2b2lkIF9fbW1kcm9wKHN0
cnVjdCBtbV9zdHJ1Y3QgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpzdGF0aWMgaW5s
aW5lIHZvaWQgbW1kcm9wKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSkKewogICAgICAgIGlmIChhdG9t
aWNfZGVjX2FuZF90ZXN0KCZtbS0+bW1fY291bnQpKQogICAgICAgICAgICAgICAgX19tbWRyb3Ao
bW0pOwp9CgoKZXh0ZXJuIHZvaWQgbW1wdXQoc3RydWN0IG1tX3N0cnVjdCAqKTsKCmV4dGVybiB2
b2lkIG1tX3JlbGVhc2Uodm9pZCk7CgoKCgpleHRlcm4gc3RydWN0IGZpbGUgKiogYWxsb2NfZmRf
YXJyYXkoaW50KTsKZXh0ZXJuIGludCBleHBhbmRfZmRfYXJyYXkoc3RydWN0IGZpbGVzX3N0cnVj
dCAqLCBpbnQgbnIpOwpleHRlcm4gdm9pZCBmcmVlX2ZkX2FycmF5KHN0cnVjdCBmaWxlICoqLCBp
bnQpOwoKZXh0ZXJuIGZkX3NldCAqYWxsb2NfZmRzZXQoaW50KTsKZXh0ZXJuIGludCBleHBhbmRf
ZmRzZXQoc3RydWN0IGZpbGVzX3N0cnVjdCAqLCBpbnQgbnIpOwpleHRlcm4gdm9pZCBmcmVlX2Zk
c2V0KGZkX3NldCAqLCBpbnQpOwoKZXh0ZXJuIGludCBjb3B5X3RocmVhZChpbnQsIHVuc2lnbmVk
IGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCB0YXNrX3N0cnVjdCAq
LCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIHZvaWQgZmx1c2hfdGhyZWFkKHZvaWQpOwpleHRl
cm4gdm9pZCBleGl0X3RocmVhZCh2b2lkKTsKCmV4dGVybiB2b2lkIGV4aXRfbW0oc3RydWN0IHRh
c2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X2ZpbGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAq
KTsKZXh0ZXJuIHZvaWQgZXhpdF9zaWdoYW5kKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKCmV4dGVy
biB2b2lkIHJlcGFyZW50X3RvX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGRhZW1vbml6ZSh2b2lk
KTsKCmV4dGVybiBpbnQgZG9fZXhlY3ZlKGNoYXIgKiwgY2hhciAqKiwgY2hhciAqKiwgc3RydWN0
IHB0X3JlZ3MgKik7CmV4dGVybiBpbnQgZG9fZm9yayh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nLCBzdHJ1Y3QgcHRfcmVncyAqLCB1bnNpZ25lZCBsb25nKTsKCmV4dGVybiB2b2lkIGFkZF93
YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGFkZF93YWl0X3F1ZXVlX2V4Y2x1
c2l2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCByZW1vdmVfd2FpdF9xdWV1ZSh3YWl0X3F1
ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwojIDg0OCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBkZWxfZnJvbV9ydW5xdWV1ZShzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKiBwKQp7CiAgICAgICAgbnJfcnVubmluZy0tOwogICAgICAgIHAtPnNsZWVw
X3RpbWUgPSBqaWZmaWVzOwogICAgICAgIGxpc3RfZGVsKCZwLT5ydW5fbGlzdCk7CiAgICAgICAg
cC0+cnVuX2xpc3QubmV4dCA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0YXNr
X29uX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHJldHVybiAocC0+
cnVuX2xpc3QubmV4dCAhPSAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhh
c2hfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBpZiAodGFza19vbl9y
dW5xdWV1ZShwKSkgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAg
ICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQp
KCZ0YXNrbGlzdF9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbnJfdGhyZWFkcy0tOwogICAg
ICAgIHVuaGFzaF9waWQocCk7CiAgICAgICAgZG8geyAocCktPm5leHRfdGFzay0+cHJldl90YXNr
ID0gKHApLT5wcmV2X3Rhc2s7IChwKS0+cHJldl90YXNrLT5uZXh0X3Rhc2sgPSAocCktPm5leHRf
dGFzazsgaWYgKChwKS0+cF9vc3B0cikgKHApLT5wX29zcHRyLT5wX3lzcHRyID0gKHApLT5wX3lz
cHRyOyBpZiAoKHApLT5wX3lzcHRyKSAocCktPnBfeXNwdHItPnBfb3NwdHIgPSAocCktPnBfb3Nw
dHI7IGVsc2UgKHApLT5wX3BwdHItPnBfY3B0ciA9IChwKS0+cF9vc3B0cjsgfSB3aGlsZSAoMCk7
CiAgICAgICAgbGlzdF9kZWwoJnAtPnRocmVhZF9ncm91cCk7CiAgICAgICAgZG8geyBkbyB7IH0g
d2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hp
bGUgKDApOwp9CgoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tfbG9jayhzdHJ1Y3QgdGFza19zdHJ1
Y3QgKnApCnsKICAgICAgICAodm9pZCkoJnAtPmFsbG9jX2xvY2spOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgdGFza191bmxvY2soc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgZG8geyB9
IHdoaWxlKDApOwp9CgoKc3RhdGljIGlubGluZSBjaGFyICogZF9wYXRoKHN0cnVjdCBkZW50cnkg
KmRlbnRyeSwgc3RydWN0IHZmc21vdW50ICp2ZnNtbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqYnVmLCBpbnQgYnVmbGVuKQp7CiAgICAgICAgY2hhciAqcmVzOwogICAg
ICAgIHN0cnVjdCB2ZnNtb3VudCAqcm9vdG1udDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpyb290
OwogICAgICAgICh2b2lkKSgmZ2V0X2N1cnJlbnQoKS0+ZnMtPmxvY2spOwogICAgICAgIHJvb3Rt
bnQgPSBtbnRnZXQoZ2V0X2N1cnJlbnQoKS0+ZnMtPnJvb3RtbnQpOwogICAgICAgIHJvb3QgPSBk
Z2V0KGdldF9jdXJyZW50KCktPmZzLT5yb290KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAg
ICAgICAgKHZvaWQpKCZkY2FjaGVfbG9jayk7CiAgICAgICAgcmVzID0gX19kX3BhdGgoZGVudHJ5
LCB2ZnNtbnQsIHJvb3QsIHJvb3RtbnQsIGJ1ZiwgYnVmbGVuKTsKICAgICAgICBkbyB7IH0gd2hp
bGUoMCk7CiAgICAgICAgZHB1dChyb290KTsKICAgICAgICBtbnRwdXQocm9vdG1udCk7CiAgICAg
ICAgcmV0dXJuIHJlczsKfQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvbW0uaCIgMgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDExICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAxMiAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbW16b25lLmgi
IDEKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvbW16b25lLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAxMCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAyCiMgMjEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRl
ZiBzdHJ1Y3QgZnJlZV9hcmVhX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmcmVl
X2xpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqbWFwOwp9IGZyZWVfYXJlYV90OwoKc3RydWN0
IHBnbGlzdF9kYXRhOwojIDM2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvbW16b25lLmgiCnR5cGVkZWYgc3RydWN0IHpvbmVfc3RydWN0IHsKCgoKICAgICAg
ICBzcGlubG9ja190IGxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX3BhZ2VzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcGFnZXNfbWluLCBwYWdlc19sb3csIHBhZ2VzX2hpZ2g7CiAgICAg
ICAgaW50IG5lZWRfYmFsYW5jZTsKCgoKCiAgICAgICAgZnJlZV9hcmVhX3QgZnJlZV9hcmVhWzEw
XTsKCgoKCiAgICAgICAgc3RydWN0IHBnbGlzdF9kYXRhICp6b25lX3BnZGF0OwogICAgICAgIHN0
cnVjdCBwYWdlICp6b25lX21lbV9tYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0
X3BhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9tYXBucjsKCgoKCiAgICAg
ICAgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpemU7Cn0gem9uZV90OwojIDgx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbW16b25lLmgi
CnR5cGVkZWYgc3RydWN0IHpvbmVsaXN0X3N0cnVjdCB7CiAgICAgICAgem9uZV90ICogem9uZXMg
WzMgKzFdOwp9IHpvbmVsaXN0X3Q7CiMgOTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IGJvb3RtZW1fZGF0YTsKdHlwZWRlZiBz
dHJ1Y3QgcGdsaXN0X2RhdGEgewogICAgICAgIHpvbmVfdCBub2RlX3pvbmVzWzNdOwogICAgICAg
IHpvbmVsaXN0X3Qgbm9kZV96b25lbGlzdHNbMHgwZiArMV07CiAgICAgICAgaW50IG5yX3pvbmVz
OwogICAgICAgIHN0cnVjdCBwYWdlICpub2RlX21lbV9tYXA7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyAqdmFsaWRfYWRkcl9iaXRtYXA7CiAgICAgICAgc3RydWN0IGJvb3RtZW1fZGF0YSAqYmRhdGE7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X3BhZGRyOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbm9kZV9zdGFydF9tYXBucjsKICAgICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc2l6ZTsK
ICAgICAgICBpbnQgbm9kZV9pZDsKICAgICAgICBzdHJ1Y3QgcGdsaXN0X2RhdGEgKm5vZGVfbmV4
dDsKfSBwZ19kYXRhX3Q7CgpleHRlcm4gaW50IG51bW5vZGVzOwpleHRlcm4gcGdfZGF0YV90ICpw
Z2RhdF9saXN0OwojIDEyMyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L21tem9uZS5oIgpzdHJ1Y3QgcGFnZTsKZXh0ZXJuIHZvaWQgc2hvd19mcmVlX2FyZWFz
X2NvcmUocGdfZGF0YV90ICpwZ2RhdCk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0X2NvcmUo
aW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKipnbWFwLAogIHVuc2lnbmVk
IGxvbmcgKnpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgcGFkZHIsIHVuc2lnbmVkIGxvbmcgKnpo
b2xlc19zaXplLAogIHN0cnVjdCBwYWdlICpwbWFwKTsKCmV4dGVybiBwZ19kYXRhX3QgY29udGln
X3BhZ2VfZGF0YTsKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvc3dhcC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3dhcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3dhcC5oIiAyCiMgMjUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9zd2FwLmgiCnVuaW9uIHN3YXBfaGVh
ZGVyIHsKICAgICAgICBzdHJ1Y3QKICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGFyIHJlc2Vy
dmVkWygxVUwgPDwgMTIpIC0gMTBdOwogICAgICAgICAgICAgICAgY2hhciBtYWdpY1sxMF07CiAg
ICAgICAgfSBtYWdpYzsKICAgICAgICBzdHJ1Y3QKICAgICAgICB7CiAgICAgICAgICAgICAgICBj
aGFyIGJvb3RiaXRzWzEwMjRdOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlcnNpb247
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGFzdF9wYWdlOwogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IG5yX2JhZHBhZ2VzOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBh
ZGRpbmdbMTI1XTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiYWRwYWdlc1sxXTsKICAg
ICAgICB9IGluZm87Cn07CiMgNTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9zd2FwLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDUyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvc3dhcC5oIiAyCiMgNjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9zd2FwLmgiCnN0cnVjdCBzd2FwX2luZm9fc3RydWN0IHsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAga2Rldl90IHN3YXBfZGV2aWNlOwog
ICAgICAgIHNwaW5sb2NrX3Qgc2Rldl9sb2NrOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiBzd2Fw
X2ZpbGU7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpzd2FwX3Zmc21udDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCAqIHN3YXBfbWFwOwogICAgICAgIHVuc2lnbmVkIGludCBsb3dlc3RfYml0Owog
ICAgICAgIHVuc2lnbmVkIGludCBoaWdoZXN0X2JpdDsKICAgICAgICB1bnNpZ25lZCBpbnQgY2x1
c3Rlcl9uZXh0OwogICAgICAgIHVuc2lnbmVkIGludCBjbHVzdGVyX25yOwogICAgICAgIGludCBw
cmlvOwogICAgICAgIGludCBwYWdlczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heDsKICAgICAg
ICBpbnQgbmV4dDsKfTsKCmV4dGVybiBpbnQgbnJfc3dhcF9wYWdlczsKZXh0ZXJuIHVuc2lnbmVk
IGludCBucl9mcmVlX3BhZ2VzKHZvaWQpOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX2ZyZWVfYnVm
ZmVyX3BhZ2VzKHZvaWQpOwpleHRlcm4gaW50IG5yX2FjdGl2ZV9wYWdlczsKZXh0ZXJuIGludCBu
cl9pbmFjdGl2ZV9wYWdlczsKZXh0ZXJuIGF0b21pY190IG5yX2FzeW5jX3BhZ2VzOwpleHRlcm4g
YXRvbWljX3QgcGFnZV9jYWNoZV9zaXplOwpleHRlcm4gYXRvbWljX3QgYnVmZmVybWVtX3BhZ2Vz
OwpleHRlcm4gc3BpbmxvY2tfdCBwYWdlY2FjaGVfbG9jazsKZXh0ZXJuIHZvaWQgX19yZW1vdmVf
aW5vZGVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CnN0cnVjdCB2
bV9hcmVhX3N0cnVjdDsKc3RydWN0IHN5c2luZm87CgpzdHJ1Y3Qgem9uZV90OwoKCmV4dGVybiB2
b2lkIGxydV9jYWNoZV9hZGQoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gdm9pZCBfX2xydV9jYWNoZV9kZWwoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBscnVfY2FjaGVfZGVsKHN0cnVjdCBwYWdl
ICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIGRlYWN0aXZhdGVf
cGFnZShzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2
b2lkIGFjdGl2YXRlX3BhZ2Uoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwoKZXh0ZXJuIHZvaWQgc3dhcF9zZXR1cCh2b2lkKTsKCgpleHRlcm4gd2FpdF9xdWV1ZV9o
ZWFkX3Qga3N3YXBkX3dhaXQ7CmV4dGVybiBpbnQgdHJ5X3RvX2ZyZWVfcGFnZXMoem9uZV90ICos
IHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CgoKZXh0ZXJuIHZvaWQgcndfc3dhcF9wYWdlKGludCwgc3RydWN0IHBhZ2UgKik7CmV4dGVybiB2
b2lkIHJ3X3N3YXBfcGFnZV9ub2xvY2soaW50LCBzd3BfZW50cnlfdCwgY2hhciAqKTsKCgoKCgoK
ZXh0ZXJuIHZvaWQgc2hvd19zd2FwX2NhY2hlX2luZm8odm9pZCk7CgpleHRlcm4gaW50IGFkZF90
b19zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICosIHN3cF9lbnRyeV90KTsKZXh0ZXJuIHZvaWQgX19k
ZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIHZvaWQgZGVs
ZXRlX2Zyb21fc3dhcF9jYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiB2b2lkIGZyZWVf
cGFnZV9hbmRfc3dhcF9jYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiBzdHJ1Y3QgcGFn
ZSAqIGxvb2t1cF9zd2FwX2NhY2hlKHN3cF9lbnRyeV90KTsKZXh0ZXJuIHN0cnVjdCBwYWdlICog
cmVhZF9zd2FwX2NhY2hlX2FzeW5jKHN3cF9lbnRyeV90KTsKCgpleHRlcm4gaW50IG91dF9vZl9t
ZW1vcnkodm9pZCk7CmV4dGVybiB2b2lkIG9vbV9raWxsKHZvaWQpOwoKCmV4dGVybiBpbnQgdG90
YWxfc3dhcF9wYWdlczsKZXh0ZXJuIHVuc2lnbmVkIGludCBucl9zd2FwZmlsZXM7CmV4dGVybiBz
dHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCBzd2FwX2luZm9bXTsKZXh0ZXJuIGludCBpc19zd2FwX3Bh
cnRpdGlvbihrZGV2X3QpOwpleHRlcm4gdm9pZCBzaV9zd2FwaW5mbyhzdHJ1Y3Qgc3lzaW5mbyAq
KTsKZXh0ZXJuIHN3cF9lbnRyeV90IGdldF9zd2FwX3BhZ2Uodm9pZCk7CmV4dGVybiB2b2lkIGdl
dF9zd2FwaGFuZGxlX2luZm8oc3dwX2VudHJ5X3QsIHVuc2lnbmVkIGxvbmcgKiwga2Rldl90ICos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKiop
OwpleHRlcm4gaW50IHN3YXBfZHVwbGljYXRlKHN3cF9lbnRyeV90KTsKZXh0ZXJuIGludCBzd2Fw
X2NvdW50KHN0cnVjdCBwYWdlICopOwpleHRlcm4gaW50IHZhbGlkX3N3YXBoYW5kbGVzKHN3cF9l
bnRyeV90LCB1bnNpZ25lZCBsb25nICopOwpleHRlcm4gdm9pZCBzd2FwX2ZyZWUoc3dwX2VudHJ5
X3QpOwpzdHJ1Y3Qgc3dhcF9saXN0X3QgewogICAgICAgIGludCBoZWFkOwogICAgICAgIGludCBu
ZXh0Owp9OwpleHRlcm4gc3RydWN0IHN3YXBfbGlzdF90IHN3YXBfbGlzdDsKIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zd2Fwb2ZmKGNvbnN0IGNoYXIgKik7CiBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc3dhcG9uKGNvbnN0IGNoYXIgKiwgaW50KTsK
CmV4dGVybiBzcGlubG9ja190IHBhZ2VtYXBfbHJ1X2xvY2s7CgpleHRlcm4gdm9pZCBtYXJrX3Bh
Z2VfYWNjZXNzZWQoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoj
IDIyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3N3YXAu
aCIKZXh0ZXJuIHNwaW5sb2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4dGVybiB2b2lkIHNobWVtX3Vu
dXNlKHN3cF9lbnRyeV90IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7CiMgMTQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAxCiMgMTUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9tbS5oIiAyCgpl
eHRlcm4gdW5zaWduZWQgbG9uZyBtYXhfbWFwbnI7CmV4dGVybiB1bnNpZ25lZCBsb25nIG51bV9w
aHlzcGFnZXM7CmV4dGVybiB2b2lkICogaGlnaF9tZW1vcnk7CmV4dGVybiBpbnQgcGFnZV9jbHVz
dGVyOwoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX2xpc3Q7CmV4dGVybiBzdHJ1Y3Qg
bGlzdF9oZWFkIGluYWN0aXZlX2xpc3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMgojIDE2ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5o
IiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGd0
YWJsZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2Fz
bS9maXhtYXAuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvYXNtL2ZpeG1hcC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9jb25maWcuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2FwaWNkZWYuaCIgMQojIDEyMiAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9hcGljZGVmLmgiCnN0cnVjdCBs
b2NhbF9hcGljIHsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8wMTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRbNF07IH0gX19yZXNlcnZlZF8wMjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAg
cGh5c19hcGljX2lkIDogNCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDog
NDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0g
aWQ7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCB2ZXJzaW9uIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8x
IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2x2dCA6IDgsCiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
X19yZXNlcnZlZFszXTsKICAgICAgICB9IHZlcnNpb247CgogICAgICAgIHN0cnVjdCB7IHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDM7CgogICAgICAgIHN0cnVjdCB7
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDQ7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDU7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDY7
CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcHJpb3JpdHkg
OiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyNDsKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0cHI7CgogICAg
ICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBw
cmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI0Owog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IGFw
cjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8x
IDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAg
ICAgIH0gcHByOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGVvaTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAg
IH0gZW9pOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBf
X3Jlc2VydmVkXzA3OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2Rl
c3QgOiA4OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAg
ICAgICB9IGxkcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBfX3Jlc2VydmVkXzEgOiAyOCwKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwgOiA0Owog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IGRm
cjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzcHVyaW91
c192ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBhcGljX2VuYWJsZWQgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICBmb2N1c19jcHUgOiAxLAogICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzIgOiAyMjsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl
c2VydmVkXzNbM107CiAgICAgICAgfSBzdnI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
X19yZXNlcnZlZFszXTsKICAgICAgICB9IGlzciBbOF07CgogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IHRtciBbOF07CgogICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGlyciBbOF07CgogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBzZW5kX2NzX2Vycm9yIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWNlaXZlX2NzX2Vycm9yIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZW5kX2FjY2VwdF9lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjZWl2ZV9hY2NlcHRfZXJyb3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9p
bGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2
ZV9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWxs
ZWdhbF9yZWdpc3Rlcl9hZGRyZXNzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX3Jlc2VydmVkXzIgOiAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICAgICAgICAgIH0gZXJyb3JfYml0czsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlcnJv
cnM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107
CiAgICAgICAgICAgICAgICB9IGFsbF9lcnJvcnM7CiAgICAgICAgfSBlc3I7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDg7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDk7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMTA7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f
cmVzZXJ2ZWRfMTE7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRd
OyB9IF9fcmVzZXJ2ZWRfMTI7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTM7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTQ7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAg
ZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX21v
ZGUgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAg
ICAgICBsZXZlbCA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyLAogICAgICAgICAgICAgICAgICAg
ICAgICBzaG9ydGhhbmQgOiAyLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMg
OiAxMjsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAg
ICAgfSBpY3IxOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5c19kZXN0IDogNCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA0OwogICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zIDogMjQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9naWNhbF9kZXN0IDogODsKICAgICAgICAgICAgICAgIH0gZGVzdDsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAgfSBpY3IyOwoK
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgs
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
cmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICB0aW1lcl9tb2RlIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
X19yZXNlcnZlZF8zIDogMTQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZF80WzNdOwogICAgICAgIH0gbHZ0X3RpbWVyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE1OwoKICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVk
XzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAgICAgICAgICAgICAg
ICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTU7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0g
bHZ0X3BjOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZl
Y3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAg
ICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAg
ICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBwb2xhcml0
eSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pcnIgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6
IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDE1OwogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICB9IGx2dF9saW50MDsK
CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4
LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAg
ICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVs
aXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9sYXJpdHkgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfaXJyIDogMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAxNTsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBsdnRfbGludDE7CgogICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAg
ICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogNCwKICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE1OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF9lcnJvcjsKCiAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbml0aWFsX2NvdW50OwogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHRpbWVyX2ljcjsKCiAg
ICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGN1cnJfY291bnQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNd
OwogICAgICAgIH0gdGltZXJfY2NyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE2OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE3OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE4OwoKICAgICAgICBzdHJ1Y3Qg
eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE5OwoKICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpdmlzb3IgOiA0LAogICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyODsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9kY3I7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMjA7Cgp9IF9f
YXR0cmlidXRlX18gKChwYWNrZWQpKTsKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyA1MCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9maXhtYXAuaCIKZW51bSBmaXhlZF9hZGRyZXNz
ZXMgewojIDY4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2Zp
eG1hcC5oIgogICAgICAgIF9fZW5kX29mX2ZpeGVkX2FkZHJlc3Nlcwp9OwoKZXh0ZXJuIHZvaWQg
X19zZXRfZml4bWFwIChlbnVtIGZpeGVkX2FkZHJlc3NlcyBpZHgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBoeXMsIHBncHJvdF90IGZsYWdz
KTsKIyA5NCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9maXht
YXAuaCIKZXh0ZXJuIHZvaWQgX190aGlzX2ZpeG1hcF9kb2VzX25vdF9leGlzdCh2b2lkKTsKCgoK
CgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGZpeF90b192aXJ0KGNvbnN0IHVuc2lnbmVk
IGludCBpZHgpCnsKIyAxMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vZml4bWFwLmgiCiAgICAgICAgaWYgKGlkeCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNz
ZXMpCiAgICAgICAgICAgICAgICBfX3RoaXNfZml4bWFwX2RvZXNfbm90X2V4aXN0KCk7CgogICAg
ICAgIHJldHVybiAoKDB4ZmZmZmUwMDBVTCkgLSAoKGlkeCkgPDwgMTIpKTsKfQojIDE4ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90aHJlYWRzLmgi
IDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wZ3Rh
YmxlLmgiIDIKCgoKCgpleHRlcm4gcGdkX3Qgc3dhcHBlcl9wZ19kaXJbMTAyNF07CmV4dGVybiB2
b2lkIHBhZ2luZ19pbml0KHZvaWQpOwojIDY3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGdrZXJuX21h
c2s7CiMgOTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGd0
YWJsZS5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBlbXB0eV96ZXJvX3BhZ2VbMTAyNF07CiMgMTA5
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BndGFibGUuaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BndGFibGUt
MmxldmVsLmgiIDEKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2FzbS9wZ3RhYmxlLTJsZXZlbC5oIgpzdGF0aWMgaW5saW5lIGludCBwZ2Rfbm9uZShwZ2RfdCBw
Z2QpIHsgcmV0dXJuIDA7IH0Kc3RhdGljIGlubGluZSBpbnQgcGdkX2JhZChwZ2RfdCBwZ2QpIHsg
cmV0dXJuIDA7IH0Kc3RhdGljIGlubGluZSBpbnQgcGdkX3ByZXNlbnQocGdkX3QgcGdkKSB7IHJl
dHVybiAxOyB9CiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9h
c20vcGd0YWJsZS0ybGV2ZWwuaCIKc3RhdGljIGlubGluZSBwbWRfdCAqIHBtZF9vZmZzZXQocGdk
X3QgKiBkaXIsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHJldHVybiAocG1kX3Qg
KikgZGlyOwp9CiMgMTEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
YXNtL3BndGFibGUuaCIgMgojIDI0NCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHBnMFsxMDI0XTsKIyAy
NjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGd0YWJsZS5o
IgpzdGF0aWMgaW5saW5lIGludCBwdGVfcmVhZChwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0
ZV9sb3cgJiAweDAwNDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfZXhlYyhwdGVfdCBwdGUpIHsg
cmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwNDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfZGly
dHkocHRlX3QgcHRlKSB7IHJldHVybiAocHRlKS5wdGVfbG93ICYgMHgwNDA7IH0Kc3RhdGljIGlu
bGluZSBpbnQgcHRlX3lvdW5nKHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4
MDIwOyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV93cml0ZShwdGVfdCBwdGUpIHsgcmV0dXJuIChw
dGUpLnB0ZV9sb3cgJiAweDAwMjsgfQoKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfcmRwcm90ZWN0
KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4weDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0
aWMgaW5saW5lIHB0ZV90IHB0ZV9leHByb3RlY3QocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cg
Jj0gfjB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rY2xlYW4o
cHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDQwOyByZXR1cm4gcHRlOyB9CnN0YXRp
YyBpbmxpbmUgcHRlX3QgcHRlX21rb2xkKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4w
eDAyMDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV93cnByb3RlY3QocHRl
X3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDAyOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBp
bmxpbmUgcHRlX3QgcHRlX21rcmVhZChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDAw
NDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta2V4ZWMocHRlX3QgcHRl
KSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwMDQ7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBw
dGVfdCBwdGVfbWtkaXJ0eShwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDA0MDsgcmV0
dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta3lvdW5nKHB0ZV90IHB0ZSkgeyAo
cHRlKS5wdGVfbG93IHw9IDB4MDIwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3Qg
cHRlX21rd3JpdGUocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwMDI7IHJldHVybiBw
dGU7IH0KCnN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfZGlydHkocHRlX3Qg
KnB0ZXApIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdCg2LCBwdGVwKTsgfQpzdGF0aWMgaW5s
aW5lIGludCBwdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHB0ZV90ICpwdGVwKSB7IHJldHVybiB0
ZXN0X2FuZF9jbGVhcl9iaXQoNSwgcHRlcCk7IH0Kc3RhdGljIGlubGluZSB2b2lkIHB0ZXBfc2V0
X3dycHJvdGVjdChwdGVfdCAqcHRlcCkgeyBjbGVhcl9iaXQoMSwgcHRlcCk7IH0Kc3RhdGljIGlu
bGluZSB2b2lkIHB0ZXBfbWtkaXJ0eShwdGVfdCAqcHRlcCkgeyBzZXRfYml0KDYsIHB0ZXApOyB9
CiMgMjk3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BndGFi
bGUuaCIKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbW9kaWZ5KHB0ZV90IHB0ZSwgcGdwcm90X3Qg
bmV3cHJvdCkKewogICAgICAgIHB0ZS5wdGVfbG93ICY9ICgofigoMVVMIDw8IDEyKS0xKSkgfCAw
eDAyMCB8IDB4MDQwKTsKICAgICAgICBwdGUucHRlX2xvdyB8PSAoKG5ld3Byb3QpLnBncHJvdCk7
CiAgICAgICAgcmV0dXJuIHB0ZTsKfQojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyNyAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyA0MyAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L21tLmgiCnN0cnVjdCB2bV9hcmVhX3N0cnVjdCB7
CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqIHZtX21tOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
dm1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9lbmQ7CgoKICAgICAgICBzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKnZtX25leHQ7CgogICAgICAgIHBncHJvdF90IHZtX3BhZ2VfcHJvdDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzOwoKICAgICAgICByYl9ub2RlX3Qgdm1fcmI7
CgoKCgoKCiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bV9uZXh0X3NoYXJlOwogICAg
ICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtX3BwcmV2X3NoYXJlOwoKCiAgICAgICAgc3Ry
dWN0IHZtX29wZXJhdGlvbnNfc3RydWN0ICogdm1fb3BzOwoKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyB2bV9wZ29mZjsKCiAgICAgICAgc3RydWN0IGZpbGUgKiB2bV9maWxlOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgdm1fcmFlbmQ7CiAgICAgICAgdm9pZCAqIHZtX3ByaXZhdGVfZGF0YTsKfTsKIyAx
MTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9tbS5oIgpl
eHRlcm4gcGdwcm90X3QgcHJvdGVjdGlvbl9tYXBbMTZdOwoKCgoKCgoKc3RydWN0IHZtX29wZXJh
dGlvbnNfc3RydWN0IHsKICAgICAgICB2b2lkICgqb3Blbikoc3RydWN0IHZtX2FyZWFfc3RydWN0
ICogYXJlYSk7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBh
cmVhKTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqICgqbm9wYWdlKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1
Y3QgKiBhcmVhLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0ZV9hY2Nlc3MpOwp9Owoj
IDE0NiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L21tLmgi
CnR5cGVkZWYgc3RydWN0IHBhZ2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAg
ICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKICAgICAgICB1bnNpZ25lZCBsb25n
IGluZGV4OwogICAgICAgIHN0cnVjdCBwYWdlICpuZXh0X2hhc2g7CgogICAgICAgIGF0b21pY190
IGNvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgbHJ1OwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwogICAgICAgIHN0cnVj
dCBwYWdlICoqcHByZXZfaGFzaDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBidWZmZXJz
OwogICAgICAgIHZvaWQgKnZpcnR1YWw7CgogICAgICAgIHN0cnVjdCB6b25lX3N0cnVjdCAqem9u
ZTsKfSBtZW1fbWFwX3Q7CiMgMjk5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvbW0uaCIKZXh0ZXJuIHZvaWQgX19zZXRfcGFnZV9kaXJ0eShzdHJ1Y3QgcGFn
ZSAqKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqIHBh
Z2UpCnsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoNCwgJnBhZ2UtPmZsYWdzKSkKICAg
ICAgICAgICAgICAgIF9fc2V0X3BhZ2VfZGlydHkocGFnZSk7Cn0KIyAzNjQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4gbWVtX21hcF90
ICogbWVtX21hcDsKCgoKCgoKCmV4dGVybiBzdHJ1Y3QgcGFnZSAqIF9hbGxvY19wYWdlcyh1bnNp
Z25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBfX2FsbG9jX3BhZ2VzKHVuc2lnbmVkIGlu
dCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCB6b25lbGlzdF90ICp6b25lbGlzdCkgX19h
dHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBhbGxvY19wYWdl
c19ub2RlKGludCBuaWQsIHVuc2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVy
KTsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKiBhbGxvY19wYWdlcyh1bnNpZ25lZCBpbnQg
Z2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikKewoKCgogICAgICAgIGlmIChvcmRlciA+PSAx
MCkKICAgICAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICByZXR1cm4gX2Fs
bG9jX3BhZ2VzKGdmcF9tYXNrLCBvcmRlcik7Cn0KCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19n
ZXRfZnJlZV9wYWdlcyh1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikg
X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfemVy
b2VkX3BhZ2UodW5zaWduZWQgaW50IGdmcF9tYXNrKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CiMgNDA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
bW0uaCIKZXh0ZXJuIHZvaWQgX19mcmVlX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25l
ZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgZnJl
ZV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwoKCgoKZXh0ZXJuIHZvaWQgc2hvd19mcmVlX2FyZWFzKHZvaWQp
OwpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNfbm9kZShwZ19kYXRhX3QgKnBnZGF0KTsKCmV4
dGVybiB2b2lkIGNsZWFyX3BhZ2VfdGFibGVzKHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQg
bG9uZywgaW50KTsKCnN0cnVjdCBwYWdlICogc2htZW1fbm9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgbm9fc2hhcmUpOwpzdHJ1Y3Qg
ZmlsZSAqc2htZW1fZmlsZV9zZXR1cChjaGFyICogbmFtZSwgbG9mZl90IHNpemUpOwpleHRlcm4g
dm9pZCBzaG1lbV9sb2NrKHN0cnVjdCBmaWxlICogZmlsZSwgaW50IGxvY2spOwpleHRlcm4gaW50
IHNobWVtX3plcm9fc2V0dXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwoKZXh0ZXJuIHZvaWQg
emFwX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVz
cywgdW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJuIGludCBjb3B5X3BhZ2VfcmFuZ2Uoc3RydWN0
IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsIHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqdm1hKTsKZXh0ZXJuIGludCByZW1hcF9wYWdlX3JhbmdlKHVuc2lnbmVkIGxvbmcgZnJv
bSwgdW5zaWduZWQgbG9uZyB0bywgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsK
ZXh0ZXJuIGludCB6ZXJvbWFwX3BhZ2VfcmFuZ2UodW5zaWduZWQgbG9uZyBmcm9tLCB1bnNpZ25l
ZCBsb25nIHNpemUsIHBncHJvdF90IHByb3QpOwoKZXh0ZXJuIGludCB2bXRydW5jYXRlKHN0cnVj
dCBpbm9kZSAqIGlub2RlLCBsb2ZmX3Qgb2Zmc2V0KTsKZXh0ZXJuIHBtZF90ICpfX3BtZF9hbGxv
YyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNz
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBwdGVfdCAqcHRlX2FsbG9jKHN0
cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGludCBoYW5kbGVfbW1fZmF1bHQoc3Ry
dWN0IG1tX3N0cnVjdCAqbW0sc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxv
bmcgYWRkcmVzcywgaW50IHdyaXRlX2FjY2Vzcyk7CmV4dGVybiBpbnQgbWFrZV9wYWdlc19wcmVz
ZW50KHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQpOwpleHRlcm4gaW50IGFj
Y2Vzc19wcm9jZXNzX3ZtKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIGFk
ZHIsIHZvaWQgKmJ1ZiwgaW50IGxlbiwgaW50IHdyaXRlKTsKZXh0ZXJuIGludCBwdHJhY2VfcmVh
ZGRhdGEoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGxvbmcgc3JjLCBjaGFyICpk
c3QsIGludCBsZW4pOwpleHRlcm4gaW50IHB0cmFjZV93cml0ZWRhdGEoc3RydWN0IHRhc2tfc3Ry
dWN0ICp0c2ssIGNoYXIgKiBzcmMsIHVuc2lnbmVkIGxvbmcgZHN0LCBpbnQgbGVuKTsKZXh0ZXJu
IGludCBwdHJhY2VfYXR0YWNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKZXh0ZXJuIGludCBw
dHJhY2VfZGV0YWNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCB1bnNpZ25lZCBpbnQpOwpleHRlcm4g
dm9pZCBwdHJhY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgoKCgoKCnN0YXRpYyBp
bmxpbmUgcG1kX3QgKnBtZF9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCwg
dW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAgaWYgKHBnZF9ub25lKCpwZ2QpKQogICAg
ICAgICAgICAgICAgcmV0dXJuIF9fcG1kX2FsbG9jKG1tLCBwZ2QsIGFkZHJlc3MpOwogICAgICAg
IHJldHVybiBwbWRfb2Zmc2V0KHBnZCwgYWRkcmVzcyk7Cn0KCmV4dGVybiBpbnQgcGd0X2NhY2hl
X3dhdGVyWzJdOwpleHRlcm4gaW50IGNoZWNrX3BndF9jYWNoZSh2b2lkKTsKCmV4dGVybiB2b2lk
IGZyZWVfYXJlYV9pbml0KHVuc2lnbmVkIGxvbmcgKiB6b25lc19zaXplKTsKZXh0ZXJuIHZvaWQg
ZnJlZV9hcmVhX2luaXRfbm9kZShpbnQgbmlkLCBwZ19kYXRhX3QgKnBnZGF0LCBzdHJ1Y3QgcGFn
ZSAqcG1hcCwKICAgICAgICB1bnNpZ25lZCBsb25nICogem9uZXNfc2l6ZSwgdW5zaWduZWQgbG9u
ZyB6b25lX3N0YXJ0X3BhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgKnpob2xlc19zaXplKTsK
ZXh0ZXJuIHZvaWQgbWVtX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHNob3dfbWVtKHZvaWQpOwpl
eHRlcm4gdm9pZCBzaV9tZW1pbmZvKHN0cnVjdCBzeXNpbmZvICogdmFsKTsKZXh0ZXJuIHZvaWQg
c3dhcGluX3JlYWRhaGVhZChzd3BfZW50cnlfdCk7CgpleHRlcm4gc3RydWN0IGFkZHJlc3Nfc3Bh
Y2Ugc3dhcHBlcl9zcGFjZTsKCgpzdGF0aWMgaW5saW5lIGludCBpc19wYWdlX2NhY2hlX2ZyZWVh
YmxlKHN0cnVjdCBwYWdlICogcGFnZSkKewogICAgICAgIHJldHVybiAoKCYocGFnZSktPmNvdW50
KS0+Y291bnRlcikgLSAhIXBhZ2UtPmJ1ZmZlcnMgPT0gMTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUg
aW50IGV4Y2x1c2l2ZV9zd2FwX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICAgICAgICBpZiAo
IShfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgwKSwoJihwYWdl
KS0+ZmxhZ3MpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KCgwKSwoJihwYWdlKS0+ZmxhZ3MpKSkpCiAg
ICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAg
ICAgICAgaWYgKCEoKHBhZ2UpLT5tYXBwaW5nID09ICZzd2FwcGVyX3NwYWNlKSkKICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgIGlmICgoKCYocGFnZSktPmNvdW50KS0+Y291bnRlcikg
LSAhIXBhZ2UtPmJ1ZmZlcnMgIT0gMikKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
IHJldHVybiBzd2FwX2NvdW50KHBhZ2UpID09IDE7Cn0KCmV4dGVybiB2b2lkIF9fZnJlZV9wdGUo
cHRlX3QpOwoKCmV4dGVybiB2b2lkIGxvY2tfdm1hX21hcHBpbmdzKHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqKTsKZXh0ZXJuIHZvaWQgdW5sb2NrX3ZtYV9tYXBwaW5ncyhzdHJ1Y3Qgdm1fYXJlYV9z
dHJ1Y3QgKik7CmV4dGVybiB2b2lkIGluc2VydF92bV9zdHJ1Y3Qoc3RydWN0IG1tX3N0cnVjdCAq
LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIF9faW5zZXJ0X3ZtX3N0cnVj
dChzdHJ1Y3QgbW1fc3RydWN0ICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZv
aWQgYnVpbGRfbW1hcF9yYihzdHJ1Y3QgbW1fc3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X21t
YXAoc3RydWN0IG1tX3N0cnVjdCAqKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF91bm1hcHBl
ZF9hcmVhKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fbW1hcF9w
Z29mZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2ln
bmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHByb3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBm
bGFnLCB1bnNpZ25lZCBsb25nIHBnb2ZmKTsKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBk
b19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgICAgdW5z
aWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxvbmcgcHJvdCwKICAgICAgICB1bnNpZ25lZCBsb25n
IGZsYWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXQg
PSAtMjI7CiAgICAgICAgaWYgKChvZmZzZXQgKyAoKChsZW4pKygxVUwgPDwgMTIpLTEpJih+KCgx
VUwgPDwgMTIpLTEpKSkpIDwgb2Zmc2V0KQogICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAg
ICAgaWYgKCEob2Zmc2V0ICYgfih+KCgxVUwgPDwgMTIpLTEpKSkpCiAgICAgICAgICAgICAgICBy
ZXQgPSBkb19tbWFwX3Bnb2ZmKGZpbGUsIGFkZHIsIGxlbiwgcHJvdCwgZmxhZywgb2Zmc2V0ID4+
IDEyKTsKb3V0OgogICAgICAgIHJldHVybiByZXQ7Cn0KCmV4dGVybiBpbnQgZG9fbXVubWFwKHN0
cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90KTsKCmV4dGVybiB1bnNpZ25l
ZCBsb25nIGRvX2Jyayh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxp
bmUgdm9pZCBfX3ZtYV91bmxpbmsoc3RydWN0IG1tX3N0cnVjdCAqIG1tLCBzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3QgKiB2bWEsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHByZXYpCnsKICAgICAgICBw
cmV2LT52bV9uZXh0ID0gdm1hLT52bV9uZXh0OwogICAgICAgIHJiX2VyYXNlKCZ2bWEtPnZtX3Ji
LCAmbW0tPm1tX3JiKTsKICAgICAgICBpZiAobW0tPm1tYXBfY2FjaGUgPT0gdm1hKQogICAgICAg
ICAgICAgICAgbW0tPm1tYXBfY2FjaGUgPSBwcmV2Owp9CgpzdGF0aWMgaW5saW5lIGludCBjYW5f
dm1hX21lcmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyB2bV9m
bGFncykKewogICAgICAgIGlmICghdm1hLT52bV9maWxlICYmIHZtYS0+dm1fZmxhZ3MgPT0gdm1f
ZmxhZ3MpCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKfQoKc3RydWN0IHpvbmVfdDsKCmV4dGVybiB2b2lkIHJlbW92ZV9pbm9k
ZV9wYWdlKHN0cnVjdCBwYWdlICopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBwYWdlX3VudXNlKHN0
cnVjdCBwYWdlICopOwpleHRlcm4gdm9pZCB0cnVuY2F0ZV9pbm9kZV9wYWdlcyhzdHJ1Y3QgYWRk
cmVzc19zcGFjZSAqLCBsb2ZmX3QpOwoKCmV4dGVybiBpbnQgZmlsZW1hcF9zeW5jKHN0cnVjdCB2
bV9hcmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25nLCBzaXplX3QsIHVuc2lnbmVkIGludCk7CmV4
dGVybiBzdHJ1Y3QgcGFnZSAqZmlsZW1hcF9ub3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICos
IHVuc2lnbmVkIGxvbmcsIGludCk7CiMgNTc1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvbW0uaCIKc3RhdGljIGlubGluZSBpbnQgZXhwYW5kX3N0YWNrKHN0
cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBncm93OwoKCgoKCgogICAgICAgIGFkZHJlc3MgJj0gKH4oKDFVTCA8
PCAxMiktMSkpOwogICAgICAgIGdyb3cgPSAodm1hLT52bV9zdGFydCAtIGFkZHJlc3MpID4+IDEy
OwogICAgICAgIGlmICh2bWEtPnZtX2VuZCAtIGFkZHJlc3MgPiBnZXRfY3VycmVudCgpLT5ybGlt
WzNdLnJsaW1fY3VyIHx8CiAgICAgICAgICAgICgodm1hLT52bV9tbS0+dG90YWxfdm0gKyBncm93
KSA8PCAxMikgPiBnZXRfY3VycmVudCgpLT5ybGltWzldLnJsaW1fY3VyKQogICAgICAgICAgICAg
ICAgcmV0dXJuIC0xMjsKICAgICAgICAodm9pZCkoJnZtYS0+dm1fbW0tPnBhZ2VfdGFibGVfbG9j
ayk7CiAgICAgICAgdm1hLT52bV9zdGFydCA9IGFkZHJlc3M7CiAgICAgICAgdm1hLT52bV9wZ29m
ZiAtPSBncm93OwogICAgICAgIHZtYS0+dm1fbW0tPnRvdGFsX3ZtICs9IGdyb3c7CiAgICAgICAg
aWYgKHZtYS0+dm1fZmxhZ3MgJiAweDAwMDAyMDAwKQogICAgICAgICAgICAgICAgdm1hLT52bV9t
bS0+bG9ja2VkX3ZtICs9IGdyb3c7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIHJl
dHVybiAwOwp9CgoKZXh0ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hKHN0cnVj
dCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQgbG9uZyBhZGRyKTsKZXh0ZXJuIHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqIGZpbmRfdm1hX3ByZXYoc3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25l
ZCBsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnBwcmV2KTsKCgoKc3RhdGljIGlubGluZSBzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYV9pbnRlcnNlY3Rpb24oc3RydWN0IG1tX3N0cnVjdCAq
IG1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHIsIHVuc2lnbmVkIGxvbmcgZW5kX2FkZHIpCnsK
ICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEgPSBmaW5kX3ZtYShtbSxzdGFydF9h
ZGRyKTsKCiAgICAgICAgaWYgKHZtYSAmJiBlbmRfYWRkciA8PSB2bWEtPnZtX3N0YXJ0KQogICAg
ICAgICAgICAgICAgdm1hID0gKCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIHZtYTsKfQoKZXh0
ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqZmluZF9leHRlbmRfdm1hKHN0cnVjdCBtbV9zdHJ1
Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIpOwojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMgojIDQ4ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2xhYi5oIgpleHRlcm4gdm9p
ZCBrbWVtX2NhY2hlX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGttZW1fY2FjaGVfc2l6ZXNfaW5p
dCh2b2lkKTsKCmV4dGVybiBrbWVtX2NhY2hlX3QgKmttZW1fZmluZF9nZW5lcmFsX2NhY2hlcChz
aXplX3QsIGludCBnZnBmbGFncyk7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmttZW1fY2FjaGVfY3Jl
YXRlKGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBzaXplX3QsIHVuc2lnbmVkIGxvbmcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCopKHZvaWQgKiwga21lbV9jYWNo
ZV90ICosIHVuc2lnbmVkIGxvbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1bnNpZ25lZCBsb25nKSk7CmV4
dGVybiBpbnQga21lbV9jYWNoZV9kZXN0cm95KGttZW1fY2FjaGVfdCAqKTsKZXh0ZXJuIGludCBr
bWVtX2NhY2hlX3NocmluayhrbWVtX2NhY2hlX3QgKik7CmV4dGVybiB2b2lkICprbWVtX2NhY2hl
X2FsbG9jKGttZW1fY2FjaGVfdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBrbWVtX2NhY2hlX2ZyZWUo
a21lbV9jYWNoZV90ICosIHZvaWQgKik7CgpleHRlcm4gdm9pZCAqa21hbGxvYyhzaXplX3QsIGlu
dCk7CmV4dGVybiB2b2lkIGtmcmVlKGNvbnN0IHZvaWQgKik7CgpleHRlcm4gaW50IGttZW1fY2Fj
aGVfcmVhcChpbnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGludCBzbGFi
aW5mb19yZWFkX3Byb2MoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRh
dGEpOwpleHRlcm4gaW50IHNsYWJpbmZvX3dyaXRlX3Byb2Moc3RydWN0IGZpbGUgKmZpbGUsIGNv
bnN0IGNoYXIgKmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBjb3VudCwgdm9pZCAqZGF0YSk7CgoKZXh0ZXJuIGttZW1fY2FjaGVfdCAqdm1fYXJlYV9jYWNo
ZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKm1tX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAq
bmFtZXNfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpmaWxlc19jYWNoZXA7CmV4dGVybiBr
bWVtX2NhY2hlX3QgKmZpbHBfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpkcXVvdF9jYWNo
ZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmJoX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAq
ZnNfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpzaWdhY3RfY2FjaGVwOwojIDMxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zY2F0dGVybGlzdC5oIiAx
CgoKCnN0cnVjdCBzY2F0dGVybGlzdCB7CiAgICBjaGFyICogYWRkcmVzczsKCiAgICBzdHJ1Y3Qg
cGFnZSAqIHBhZ2U7CiAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwoKICAgIGRtYV9hZGRyX3QgZG1h
X2FkZHJlc3M7CiAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwp9OwojIDMyICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgMzMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGNpLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2lvLmgiIDEKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2lvLmgiIDIK
IyA0NiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9pby5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC92bWFsbG9j
LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC92bWFsbG9jLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvbW0uaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDEKIyA5ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvdm1hbGxvYy5oIiAy
CgoKCgoKc3RydWN0IHZtX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAg
ICAgICB2b2lkICogYWRkcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpemU7CiAgICAgICAgc3Ry
dWN0IHZtX3N0cnVjdCAqIG5leHQ7Cn07CgpleHRlcm4gc3RydWN0IHZtX3N0cnVjdCAqIGdldF92
bV9hcmVhICh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwpleHRlcm4g
dm9pZCB2ZnJlZSh2b2lkICogYWRkcik7CmV4dGVybiB2b2lkICogX192bWFsbG9jICh1bnNpZ25l
ZCBsb25nIHNpemUsIGludCBnZnBfbWFzaywgcGdwcm90X3QgcHJvdCk7CmV4dGVybiBsb25nIHZy
ZWFkKGNoYXIgKmJ1ZiwgY2hhciAqYWRkciwgdW5zaWduZWQgbG9uZyBjb3VudCk7CmV4dGVybiB2
b2lkIHZtZnJlZV9hcmVhX3BhZ2VzKHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9u
ZyBzaXplKTsKZXh0ZXJuIGludCB2bWFsbG9jX2FyZWFfcGFnZXModW5zaWduZWQgbG9uZyBhZGRy
ZXNzLCB1bnNpZ25lZCBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBnZnBfbWFzaywgcGdwcm90X3QgcHJvdCk7CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogdm1h
bGxvYyAodW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgcmV0dXJuIF9fdm1hbGxvYyhzaXpl
LCAoMHgyMCB8IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKSB8IDB4MDIsICgocGdwcm90X3Qp
IHsgKCgoMHgwMDEgfCAweDAwMiB8IDB4MDQwIHwgMHgwMjApKSB8IDB4MTAwKSB9ICkpOwp9CgoK
CgoKc3RhdGljIGlubGluZSB2b2lkICogdm1hbGxvY19kbWEgKHVuc2lnbmVkIGxvbmcgc2l6ZSkK
ewogICAgICAgIHJldHVybiBfX3ZtYWxsb2Moc2l6ZSwgKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4
ODAgfCAweDEwMCl8MHgwMSwgKChwZ3Byb3RfdCkgeyAoKCgweDAwMSB8IDB4MDAyIHwgMHgwNDAg
fCAweDAyMCkpIHwgMHgxMDApIH0gKSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiB2bWFs
bG9jXzMyKHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBfX3ZtYWxsb2Moc2l6
ZSwgKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODAgfCAweDEwMCksICgocGdwcm90X3QpIHsgKCgo
MHgwMDEgfCAweDAwMiB8IDB4MDQwIHwgMHgwMjApKSB8IDB4MTAwKSB9ICkpOwp9CgoKCgoKZXh0
ZXJuIHJ3bG9ja190IHZtbGlzdF9sb2NrOwoKZXh0ZXJuIHN0cnVjdCB2bV9zdHJ1Y3QgKiB2bWxp
c3Q7CiMgNDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vaW8u
aCIgMgojIDY2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2lv
LmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModm9sYXRpbGUgdm9p
ZCAqIGFkZHJlc3MpCnsKICAgICAgICByZXR1cm4gKCh1bnNpZ25lZCBsb25nKShhZGRyZXNzKS0o
KHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqIHBo
eXNfdG9fdmlydCh1bnNpZ25lZCBsb25nIGFkZHJlc3MpCnsKICAgICAgICByZXR1cm4gKCh2b2lk
ICopKCh1bnNpZ25lZCBsb25nKShhZGRyZXNzKSsoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDAp
KSkpOwp9CgoKCgoKCmV4dGVybiB2b2lkICogX19pb3JlbWFwKHVuc2lnbmVkIGxvbmcgb2Zmc2V0
LCB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwoKc3RhdGljIGlubGlu
ZSB2b2lkICogaW9yZW1hcCAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6
ZSkKewogICAgICAgIHJldHVybiBfX2lvcmVtYXAob2Zmc2V0LCBzaXplLCAwKTsKfQoKCgoKCgpz
dGF0aWMgaW5saW5lIHZvaWQgKiBpb3JlbWFwX25vY2FjaGUgKHVuc2lnbmVkIGxvbmcgb2Zmc2V0
LCB1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICByZXR1cm4gX19pb3JlbWFwKG9mZnNldCwg
c2l6ZSwgMHgwMTApOwp9CgpleHRlcm4gdm9pZCBpb3VubWFwKHZvaWQgKmFkZHIpOwojIDE2MCAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9pby5oIgpzdGF0aWMg
aW5saW5lIGludCBjaGVja19zaWduYXR1cmUodW5zaWduZWQgbG9uZyBpb19hZGRyLAogICAgICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNpZ25hdHVyZSwgaW50IGxlbmd0aCkKewogICAgICAgIGlu
dCByZXR2YWwgPSAwOwogICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGlmICgoKih2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb19hZGRyKSkpICE9ICpzaWduYXR1cmUpCiAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgaW9fYWRkcisr
OwogICAgICAgICAgICAgICAgc2lnbmF0dXJlKys7CiAgICAgICAgICAgICAgICBsZW5ndGgtLTsK
ICAgICAgICB9IHdoaWxlIChsZW5ndGgpOwogICAgICAgIHJldHZhbCA9IDE7Cm91dDoKICAgICAg
ICByZXR1cm4gcmV0dmFsOwp9CgpzdGF0aWMgaW5saW5lIGludCBpc2FfY2hlY2tfc2lnbmF0dXJl
KHVuc2lnbmVkIGxvbmcgaW9fYWRkciwKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaWdu
YXR1cmUsIGludCBsZW5ndGgpCnsKICAgICAgICBpbnQgcmV0dmFsID0gMDsKICAgICAgICBkbyB7
CiAgICAgICAgICAgICAgICBpZiAoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQg
KikoKChjaGFyICopKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKSkgKyAoaW9fYWRkcikp
KSkgIT0gKnNpZ25hdHVyZSkKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAg
ICAgICAgICAgICBpb19hZGRyKys7CiAgICAgICAgICAgICAgICBzaWduYXR1cmUrKzsKICAgICAg
ICAgICAgICAgIGxlbmd0aC0tOwogICAgICAgIH0gd2hpbGUgKGxlbmd0aCk7CiAgICAgICAgcmV0
dmFsID0gMTsKb3V0OgogICAgICAgIHJldHVybiByZXR2YWw7Cn0KIyAyODUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSB1bnNp
Z25lZCBjaGFyIGluYih1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGNoYXIgX3Y7IF9f
YXNtX18gX192b2xhdGlsZV9fICgiaW4iICJiIiAiICUiICJ3IiAiMSwlIiAiIiAiMCIgOiAiPWEi
IChfdikgOiAiTmQiIChwb3J0KSApOyByZXR1cm4gX3Y7IH0gc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBjaGFyIGluYl9wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWduZWQgY2hhciBfdjsgX19h
c21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgImIiICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRi
ICUlYWwsJDB4ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoK
c3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydCBpbncodW5zaWduZWQgc2hvcnQgcG9ydCkgeyB1
bnNpZ25lZCBzaG9ydCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgInciICIgJSIgInci
ICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBfdjsgfSBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3J0IGlud19wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsg
dW5zaWduZWQgc2hvcnQgX3Y7IF9fYXNtX18gX192b2xhdGlsZV9fICgiaW4iICJ3IiAiICUiICJ3
IiAiMSwlIiAiIiAiMCIgIlxub3V0YiAlJWFsLCQweDgwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBv
cnQpICk7IHJldHVybiBfdjsgfQoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlubCh1bnNp
Z25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18g
KCJpbiIgImwiICIgJSIgInciICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQp
ICk7IHJldHVybiBfdjsgfSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpbmxfcCh1bnNpZ25l
ZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJp
biIgImwiICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogIj1hIiAo
X3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGljIGlubGluZSB2b2lkIG91
dGIodW5zaWduZWQgY2hhciB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBfX2FzbV9fIF9f
dm9sYXRpbGVfXyAoIm91dCIgImIiICIgJSIgImIiICIwLCUiICJ3IiAiMSIgOiA6ICJhIiAodmFs
dWUpLCAiTmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2b2lkIG91dGJfcCh1bnNpZ25lZCBj
aGFyIHZhbHVlLCB1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgi
b3V0IiAiYiIgIiAlIiAiYiIgIjAsJSIgInciICIxIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogOiAi
YSIgKHZhbHVlKSwgIk5kIiAocG9ydCkpO30Kc3RhdGljIGlubGluZSB2b2lkIG91dHcodW5zaWdu
ZWQgc2hvcnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxl
X18gKCJvdXQiICJ3IiAiICUiICJ3IiAiMCwlIiAidyIgIjEiIDogOiAiYSIgKHZhbHVlKSwgIk5k
IiAocG9ydCkpOyB9IHN0YXRpYyBpbmxpbmUgdm9pZCBvdXR3X3AodW5zaWduZWQgc2hvcnQgdmFs
dWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJ3
IiAiICUiICJ3IiAiMCwlIiAidyIgIjEiICJcbm91dGIgJSVhbCwkMHg4MCIgOiA6ICJhIiAodmFs
dWUpLCAiTmQiIChwb3J0KSk7fQpzdGF0aWMgaW5saW5lIHZvaWQgb3V0bCh1bnNpZ25lZCBpbnQg
dmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQi
ICJsIiAiICUiICIwLCUiICJ3IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7IH0g
c3RhdGljIGlubGluZSB2b2lkIG91dGxfcCh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVkIHNo
b3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJsIiAiICUiICIwLCUiICJ3
IiAiMSIgIlxub3V0YiAlJWFsLCQweDgwIiA6IDogImEiICh2YWx1ZSksICJOZCIgKHBvcnQpKTt9
CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5zYih1bnNpZ25lZCBzaG9ydCBwb3J0LCB2b2lkICogYWRk
ciwgdW5zaWduZWQgbG9uZyBjb3VudCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJlcCA7IGlu
cyIgImIiIDogIj1EIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRy
KSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIGluc3codW5zaWduZWQgc2hvcnQg
cG9ydCwgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3ZvbGF0
aWxlX18gKCJyZXAgOyBpbnMiICJ3IiA6ICI9RCIgKGFkZHIpLCAiPWMiIChjb3VudCkgOiAiZCIg
KHBvcnQpLCIwIiAoYWRkciksIjEiIChjb3VudCkpOyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBpbnNs
KHVuc2lnbmVkIHNob3J0IHBvcnQsIHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7
IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgaW5zIiAibCIgOiAiPUQiIChhZGRyKSwgIj1j
IiAoY291bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQoKc3RhdGlj
IGlubGluZSB2b2lkIG91dHNiKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRy
LCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0
cyIgImIiIDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRy
KSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIG91dHN3KHVuc2lnbmVkIHNob3J0
IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18g
X192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgInciIDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50
KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2
b2lkIG91dHNsKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25l
ZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgImwiIDog
Ij1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNv
dW50KSk7IH0KIyAzNCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2Fz
bS9wY2kuaCIgMgoKc3RydWN0IHBjaV9kZXY7CiMgNTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9hc20vcGNpLmgiCmV4dGVybiB2b2lkICpwY2lfYWxsb2NfY29uc2lz
dGVudChzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSk7CiMgNjEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGNpLmgiCmV4dGVybiB2b2lkIHBj
aV9mcmVlX2NvbnNpc3RlbnQoc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWRkciwgZG1hX2FkZHJfdCBkbWFf
aGFuZGxlKTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBwY2lfbWFwX3NpbmdsZShz
dHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHZvaWQgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYg
KGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5i
eXRlIDB4MGYsMHgwYiIpOwogICAgICAgIHJldHVybiB2aXJ0X3RvX3BoeXMocHRyKTsKfQojIDg1
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BjaS5oIgpzdGF0
aWMgaW5saW5lIHZvaWQgcGNpX3VubWFwX3NpbmdsZShzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIGRt
YV9hZGRyX3QgZG1hX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQog
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoK
fQoKCgoKCnN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBwY2lfbWFwX3BhZ2Uoc3RydWN0IHBjaV9k
ZXYgKmh3ZGV2LCBzdHJ1Y3QgcGFnZSAqcGFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldCwgc2l6ZV90IHNpemUsIGludCBkaXJlY3Rp
b24pCnsKICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CgogICAgICAgIHJldHVybiAocGFnZSAt
IG1lbV9tYXApICogKDFVTCA8PCAxMikgKyBvZmZzZXQ7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBw
Y2lfdW5tYXBfcGFnZShzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIGRtYV9hZGRyX3QgZG1hX2FkZHJl
c3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGRp
cmVjdGlvbikKewogICAgICAgIGlmIChkaXJlY3Rpb24gPT0gMykKICAgICAgICAgICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKCn0KIyAxMjkgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUg
aW50IHBjaV9tYXBfc2coc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3Qg
KnNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuZW50cywgaW50IGRpcmVjdGlv
bikKewogICAgICAgIGludCBpOwoKICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAg
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CgoKCgogICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBuZW50czsgaSsrICkgewogICAgICAgICAgICAgICAgaWYgKHNn
W2ldLmFkZHJlc3MgJiYgc2dbaV0ucGFnZSkKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgICAgICAgICAgZWxzZSBp
ZiAoIXNnW2ldLmFkZHJlc3MgJiYgIXNnW2ldLnBhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKCiAgICAgICAgICAgICAg
ICBpZiAoc2dbaV0uYWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgc2dbaV0uZG1hX2Fk
ZHJlc3MgPSB2aXJ0X3RvX3BoeXMoc2dbaV0uYWRkcmVzcyk7CiAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgICAgIHNnW2ldLmRtYV9hZGRyZXNzID0gKChzZ1tpXS5wYWdl
IC0gbWVtX21hcCkgPDwgMTIpICsgc2dbaV0ub2Zmc2V0OwogICAgICAgIH0KCiAgICAgICAgcmV0
dXJuIG5lbnRzOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHBjaV91bm1hcF9zZyhzdHJ1Y3Qg
cGNpX2RldiAqaHdkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG5lbnRzLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRp
cmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRl
IDB4MGYsMHgwYiIpOwoKfQojIDE3NiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2FzbS9wY2kuaCIKc3RhdGljIGlubGluZSB2b2lkIHBjaV9kbWFfc3luY19zaW5nbGUo
c3RydWN0IHBjaV9kZXYgKmh3ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkbWFfYWRkcl90IGRtYV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVj
dGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4
MGYsMHgwYiIpOwoKfQoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHBjaV9kbWFfc3luY19zZyhz
dHJ1Y3QgcGNpX2RldiAqaHdkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbmVsZW1zLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAz
KQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIp
OwoKfQoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBwY2lfZG1hX3N1cHBvcnRlZChzdHJ1Y3QgcGNp
X2RldiAqaHdkZXYsIHU2NCBtYXNrKQp7CgoKCgoKICAgICAgICBpZihtYXNrIDwgMHgwMGZmZmZm
ZikKICAgICAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICByZXR1cm4gMTsKfQoKCgoKc3Rh
dGljIF9faW5saW5lX18gZG1hNjRfYWRkcl90CnBjaV9kYWNfcGFnZV90b19kbWEoc3RydWN0IHBj
aV9kZXYgKnBkZXYsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgaW50
IGRpcmVjdGlvbikKewogICAgICAgIHJldHVybiAoKGRtYTY0X2FkZHJfdCkgKChwYWdlIC0gbWVt
X21hcCkgPDwgMTIpICsKICAgICAgICAgICAgICAgIChkbWE2NF9hZGRyX3QpIG9mZnNldCk7Cn0K
CnN0YXRpYyBfX2lubGluZV9fIHN0cnVjdCBwYWdlICoKcGNpX2RhY19kbWFfdG9fcGFnZShzdHJ1
Y3QgcGNpX2RldiAqcGRldiwgZG1hNjRfYWRkcl90IGRtYV9hZGRyKQp7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBwb2ZmID0gKGRtYV9hZGRyID4+IDEyKTsKCiAgICAgICAgcmV0dXJuIG1lbV9tYXAg
KyBwb2ZmOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCnBjaV9kYWNfZG1hX3Rv
X29mZnNldChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgZG1hNjRfYWRkcl90IGRtYV9hZGRyKQp7CiAg
ICAgICAgcmV0dXJuIChkbWFfYWRkciAmIH4ofigoMVVMIDw8IDEyKS0xKSkpOwp9CgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkCnBjaV9kYWNfZG1hX3N5bmNfc2luZ2xlKHN0cnVjdCBwY2lfZGV2ICpw
ZGV2LCBkbWE2NF9hZGRyX3QgZG1hX2FkZHIsIHNpemVfdCBsZW4sIGludCBkaXJlY3Rpb24pCnsK
Cn0KIyAyNTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGNp
LmgiCnN0YXRpYyBpbmxpbmUgaW50IHBjaV9jb250cm9sbGVyX251bShzdHJ1Y3QgcGNpX2RldiAq
ZGV2KQp7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgpleHRlcm4gaW50IHBjaV9tbWFwX3BhZ2VfcmFu
Z2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBjaV9tbWFwX3N0YXRlIG1tYXBfc3RhdGUs
IGludCB3cml0ZV9jb21iaW5lKTsKIyA2MDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9wY2kuaCIgMgojIDY3MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L3BjaS5oIgpzdGF0aWMgaW5saW5lIGludCBwY2lfbW9kdWxl
X2luaXQoc3RydWN0IHBjaV9kcml2ZXIgKmRydikKewogICAgICAgIGludCByYyA9IHBjaV9yZWdp
c3Rlcl9kcml2ZXIgKGRydik7CgogICAgICAgIGlmIChyYyA+IDApCiAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKCgoKCgoKICAgICAgICBpZiAocmMgPT0gMCkKICAgICAgICAgICAgICAgIHJldHVy
biAwOwoKCgoKCgoKICAgICAgICBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgKGRydik7CgogICAgICAg
IHJldHVybiByYzsKfQojIDcxNiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3BjaS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKnBjaV9nZXRfZHJ2ZGF0YSAoc3Ry
dWN0IHBjaV9kZXYgKnBkZXYpCnsKICAgICAgICByZXR1cm4gcGRldi0+ZHJpdmVyX2RhdGE7Cn0K
CnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfc2V0X2RydmRhdGEgKHN0cnVjdCBwY2lfZGV2ICpwZGV2
LCB2b2lkICpkYXRhKQp7CiAgICAgICAgcGRldi0+ZHJpdmVyX2RhdGEgPSBkYXRhOwp9CiMgNzMz
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcGNpLmgiCnN0
cnVjdCBwY2lfZml4dXAgewogICAgICAgIGludCBwYXNzOwogICAgICAgIHUxNiB2ZW5kb3IsIGRl
dmljZTsKICAgICAgICB2b2lkICgqaG9vaykoc3RydWN0IHBjaV9kZXYgKmRldik7Cn07CgpleHRl
cm4gc3RydWN0IHBjaV9maXh1cCBwY2liaW9zX2ZpeHVwc1tdOwoKCgoKdm9pZCBwY2lfZml4dXBf
ZGV2aWNlKGludCBwYXNzLCBzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKCmV4dGVybiBpbnQgcGNpX3Bj
aV9wcm9ibGVtczsKIyAxNDkgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pbml0LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaW5pdC5oIiAyCiMgNDggIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pbml0LmgiCnR5cGVk
ZWYgaW50ICgqaW5pdGNhbGxfdCkodm9pZCk7CnR5cGVkZWYgdm9pZCAoKmV4aXRjYWxsX3QpKHZv
aWQpOwoKZXh0ZXJuIGluaXRjYWxsX3QgX19pbml0Y2FsbF9zdGFydCwgX19pbml0Y2FsbF9lbmQ7
CiMgNjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pbml0
LmgiCnN0cnVjdCBrZXJuZWxfcGFyYW0gewogICAgICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICAg
ICBpbnQgKCpzZXR1cF9mdW5jKShjaGFyICopOwp9OwoKZXh0ZXJuIHN0cnVjdCBrZXJuZWxfcGFy
YW0gX19zZXR1cF9zdGFydCwgX19zZXR1cF9lbmQ7CiMgMTUwICI4MTM5dG9vLmMiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaW9wb3J0LmgiIDEK
IyAxNTEgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIgMQojIDI4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lmLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lmLmgiCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAyMyAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lmLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDEKIyAy
NCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lmLmgiIDIK
IyA1OCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lmLmgi
CnN0cnVjdCBpZm1hcAp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1fc3RhcnQ7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBtZW1fZW5kOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJhc2VfYWRkcjsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGlycTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRtYTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIHBvcnQ7Cgp9OwojIDc2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaWYuaCIKc3RydWN0IGlmcmVxCnsKCgogICAgICAgIHVu
aW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciBpZnJuX25hbWVbMTZdOwogICAgICAg
IH0gaWZyX2lmcm47CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2Nr
YWRkciBpZnJ1X2FkZHI7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9kc3Rh
ZGRyOwogICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfYnJvYWRhZGRyOwogICAg
ICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfbmV0bWFzazsKICAgICAgICAgICAgICAg
IHN0cnVjdCBzb2NrYWRkciBpZnJ1X2h3YWRkcjsKICAgICAgICAgICAgICAgIHNob3J0IGlmcnVf
ZmxhZ3M7CiAgICAgICAgICAgICAgICBpbnQgaWZydV9pdmFsdWU7CiAgICAgICAgICAgICAgICBp
bnQgaWZydV9tdHU7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZtYXAgaWZydV9tYXA7CiAgICAg
ICAgICAgICAgICBjaGFyIGlmcnVfc2xhdmVbMTZdOwogICAgICAgICAgICAgICAgY2hhciBpZnJ1
X25ld25hbWVbMTZdOwogICAgICAgICAgICAgICAgY2hhciAqIGlmcnVfZGF0YTsKICAgICAgICB9
IGlmcl9pZnJ1Owp9OwojIDEyNSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L2lmLmgiCnN0cnVjdCBpZmNvbmYKewogICAgICAgIGludCBpZmNfbGVuOwogICAg
ICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciAqIGlmY3VfYnVmOwogICAg
ICAgICAgICAgICAgc3RydWN0IGlmcmVxICppZmN1X3JlcTsKICAgICAgICB9IGlmY19pZmN1Owp9
OwojIDI5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0
ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvaWZfZXRoZXIuaCIgMQojIDkyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvaWZfZXRoZXIuaCIKc3RydWN0IGV0aGhkcgp7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBoX2Rlc3RbNl07CiAgICAgICAgdW5zaWduZWQgY2hhciBoX3NvdXJjZVs2XTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBoX3Byb3RvOwp9OwojIDMwICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaWZfcGFja2V0LmgiIDEKCgoKc3Ry
dWN0IHNvY2thZGRyX3BrdAp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3BrdF9mYW1pbHk7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzcGt0X2RldmljZVsxNF07CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3BrdF9wcm90b2NvbDsKfTsKCnN0cnVjdCBzb2NrYWRkcl9sbAp7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc2xsX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzbGxfcHJvdG9jb2w7
CiAgICAgICAgaW50IHNsbF9pZmluZGV4OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNsbF9oYXR5
cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzbGxfcGt0dHlwZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHNsbF9oYWxlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNsbF9hZGRyWzhdOwp9OwojIDQz
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaWZfcGFja2V0
LmgiCnN0cnVjdCB0cGFja2V0X3N0YXRzCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfcGFja2V0
czsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfZHJvcHM7Cn07CgpzdHJ1Y3QgdHBhY2tldF9oZHIK
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgdHBfc3RhdHVzOwoKCgoKCiAgICAgICAgdW5zaWduZWQg
aW50IHRwX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfc25hcGxlbjsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCB0cF9tYWM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHBfbmV0OwogICAgICAg
IHVuc2lnbmVkIGludCB0cF9zZWM7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX3VzZWM7Cn07CiMg
ODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pZl9wYWNr
ZXQuaCIKc3RydWN0IHRwYWNrZXRfcmVxCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfYmxvY2tf
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfYmxvY2tfbnI7CiAgICAgICAgdW5zaWduZWQg
aW50IHRwX2ZyYW1lX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX2ZyYW1lX25yOwp9OwoK
c3RydWN0IHBhY2tldF9tcmVxCnsKICAgICAgICBpbnQgbXJfaWZpbmRleDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBtcl90eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1yX2FsZW47CiAgICAg
ICAgdW5zaWduZWQgY2hhciBtcl9hZGRyZXNzWzhdOwp9OwojIDMxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDMzICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2NhY2hl
LmgiIDEKIyAzNCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L25ldGRldmljZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2FzbS9ieXRlb3JkZXIuaCIgMQojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDM4ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKCgoKCnN0
cnVjdCBkaXZlcnRfYmxrOwojIDk2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiCnN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzCnsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHJ4X3BhY2tldHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9wYWNr
ZXRzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfYnl0ZXM7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyB0eF9ieXRlczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2Vycm9yczsKICAgICAgICB1bnNp
Z25lZCBsb25nIHR4X2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2Ryb3BwZWQ7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyB0eF9kcm9wcGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbXVs
dGljYXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY29sbGlzaW9uczsKCgogICAgICAgIHVuc2ln
bmVkIGxvbmcgcnhfbGVuZ3RoX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X292ZXJf
ZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfY3JjX2Vycm9yczsKICAgICAgICB1bnNp
Z25lZCBsb25nIHJ4X2ZyYW1lX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2ZpZm9f
ZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfbWlzc2VkX2Vycm9yczsKCgogICAgICAg
IHVuc2lnbmVkIGxvbmcgdHhfYWJvcnRlZF9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0
eF9jYXJyaWVyX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4X2ZpZm9fZXJyb3JzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfaGVhcnRiZWF0X2Vycm9yczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHR4X3dpbmRvd19lcnJvcnM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2NvbXBy
ZXNzZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9jb21wcmVzc2VkOwp9OwoKCgplbnVtIHsK
ICAgICAgICBJRl9QT1JUX1VOS05PV04gPSAwLAogICAgICAgIElGX1BPUlRfMTBCQVNFMiwKICAg
ICAgICBJRl9QT1JUXzEwQkFTRVQsCiAgICAgICAgSUZfUE9SVF9BVUksCiAgICAgICAgSUZfUE9S
VF8xMDBCQVNFVCwKICAgICAgICBJRl9QT1JUXzEwMEJBU0VUWCwKICAgICAgICBJRl9QT1JUXzEw
MEJBU0VGWAp9OwoKCgpleHRlcm4gY29uc3QgY2hhciAqaWZfcG9ydF90ZXh0W107CgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCiMg
MTQ2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0ZGV2
aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvc2tidWZmLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3NrYnVmZi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvc2tidWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyAxOSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKIyAyMCAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3RpbWUu
aCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgv
c2tidWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvY2FjaGUuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvc2tidWZmLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2tidWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKIyAyNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyAy
NiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L21t
LmgiIDEKIyAyNyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2xpbnV4L2hpZ2htZW0uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9oaWdobWVtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIgMQoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGdhbGxvYy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9wcm9jZXNzb3Iu
aCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGdh
bGxvYy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2Fz
bS9maXhtYXAuaCIgMQojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vcGdhbGxvYy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9hc20vcGdhbGxvYy5oIiAyCiMgNTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBwZ2Rf
dCAqZ2V0X3BnZF9zbG93KHZvaWQpCnsKICAgICAgICBwZ2RfdCAqcGdkID0gKHBnZF90ICopX19n
ZXRfZnJlZV9wYWdlcygoKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODAgfCAweDEwMCkpLDApOwoK
ICAgICAgICBpZiAocGdkKSB7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3Ao
MCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKCgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAw
KSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291
bnRfbWVtc2V0KCgocGdkKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgo
KCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdk
X3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHBnZCkpLCgoMHgwMTAxMDEwMVVMKih1bnNp
Z25lZCBjaGFyKSgwKSkpLCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8
PCAyMikpICogc2l6ZW9mKHBnZF90KSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKCgoKCh1
bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkp
KSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgocGdkKSkpLCgoKDApKSksKCgoKCgoKHVuc2lnbmVkIGxv
bmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6ZW9mKHBnZF90KSkpKSkgOiBfX21l
bXNldF9nZW5lcmljKCgocGdkKSksKCgwKSksKCgoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAw
MCkpKS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkpKSk7CiAgICAgICAgICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AoKDEwMjQgLSAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAw
MCkpKS8oMVVMIDw8IDIyKSkpICogc2l6ZW9mKHBnZF90KSkgPyBfX2NvbnN0YW50X21lbWNweTNk
KChwZ2QgKyAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpLChz
d2FwcGVyX3BnX2RpciArICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwg
MjIpKSksKCgxMDI0IC0gKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAy
MikpKSAqIHNpemVvZihwZ2RfdCkpKSA6IF9fbWVtY3B5M2QoKHBnZCArICgoKCh1bnNpZ25lZCBs
b25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSksKHN3YXBwZXJfcGdfZGlyICsgKCgoKHVu
c2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpKSwoKDEwMjQgLSAoKCgodW5z
aWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpICogc2l6ZW9mKHBnZF90KSkp
KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHBnZDsKfQoKCgpzdGF0aWMgX19pbmxpbmVfXyBw
Z2RfdCAqZ2V0X3BnZF9mYXN0KHZvaWQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nICpyZXQ7Cgog
ICAgICAgIGlmICgocmV0ID0gKGJvb3RfY3B1X2RhdGEucGdkX3F1aWNrKSkgIT0gKCh2b2lkICop
MCkpIHsKICAgICAgICAgICAgICAgIChib290X2NwdV9kYXRhLnBnZF9xdWljaykgPSAodW5zaWdu
ZWQgbG9uZyAqKSgqcmV0KTsKICAgICAgICAgICAgICAgIHJldFswXSA9IDA7CiAgICAgICAgICAg
ICAgICAoYm9vdF9jcHVfZGF0YS5wZ3RhYmxlX2NhY2hlX3N6KS0tOwogICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgcmV0ID0gKHVuc2lnbmVkIGxvbmcgKilnZXRfcGdkX3Nsb3coKTsKICAg
ICAgICByZXR1cm4gKHBnZF90ICopcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGZyZWVf
cGdkX2Zhc3QocGdkX3QgKnBnZCkKewogICAgICAgICoodW5zaWduZWQgbG9uZyAqKXBnZCA9ICh1
bnNpZ25lZCBsb25nKSAoYm9vdF9jcHVfZGF0YS5wZ2RfcXVpY2spOwogICAgICAgIChib290X2Nw
dV9kYXRhLnBnZF9xdWljaykgPSAodW5zaWduZWQgbG9uZyAqKSBwZ2Q7CiAgICAgICAgKGJvb3Rf
Y3B1X2RhdGEucGd0YWJsZV9jYWNoZV9zeikrKzsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBm
cmVlX3BnZF9zbG93KHBnZF90ICpwZ2QpCnsKCgoKCgoKCiAgICAgICAgZnJlZV9wYWdlcygoKHVu
c2lnbmVkIGxvbmcpcGdkKSwwKTsKCn0KCnN0YXRpYyBpbmxpbmUgcHRlX3QgKnB0ZV9hbGxvY19v
bmUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAg
IHB0ZV90ICpwdGU7CgogICAgICAgIHB0ZSA9IChwdGVfdCAqKSBfX2dldF9mcmVlX3BhZ2VzKCgo
MHgyMCB8IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKSksMCk7CiAgICAgICAgaWYgKHB0ZSkK
ICAgICAgICAgICAgICAgIG1teF9jbGVhcl9wYWdlKCh2b2lkICopKHB0ZSkpOwogICAgICAgIHJl
dHVybiBwdGU7Cn0KCnN0YXRpYyBpbmxpbmUgcHRlX3QgKnB0ZV9hbGxvY19vbmVfZmFzdChzdHJ1
Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyAqcmV0OwoKICAgICAgICBpZiAoKHJldCA9ICh1bnNpZ25lZCBsb25nICopKGJvb3Rf
Y3B1X2RhdGEucHRlX3F1aWNrKSkgIT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAgICAgIChi
b290X2NwdV9kYXRhLnB0ZV9xdWljaykgPSAodW5zaWduZWQgbG9uZyAqKSgqcmV0KTsKICAgICAg
ICAgICAgICAgIHJldFswXSA9IHJldFsxXTsKICAgICAgICAgICAgICAgIChib290X2NwdV9kYXRh
LnBndGFibGVfY2FjaGVfc3opLS07CiAgICAgICAgfQogICAgICAgIHJldHVybiAocHRlX3QgKily
ZXQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgcHRlX2ZyZWVfZmFzdChwdGVfdCAqcHRlKQp7
CiAgICAgICAgKih1bnNpZ25lZCBsb25nICopcHRlID0gKHVuc2lnbmVkIGxvbmcpIChib290X2Nw
dV9kYXRhLnB0ZV9xdWljayk7CiAgICAgICAgKGJvb3RfY3B1X2RhdGEucHRlX3F1aWNrKSA9ICh1
bnNpZ25lZCBsb25nICopIHB0ZTsKICAgICAgICAoYm9vdF9jcHVfZGF0YS5wZ3RhYmxlX2NhY2hl
X3N6KSsrOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB0ZV9mcmVlX3Nsb3cocHRlX3QgKnB0
ZSkKewogICAgICAgIGZyZWVfcGFnZXMoKCh1bnNpZ25lZCBsb25nKXB0ZSksMCk7Cn0KIyAxNTMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgpl
eHRlcm4gaW50IGRvX2NoZWNrX3BndF9jYWNoZShpbnQsIGludCk7CiMgMTc1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIKc3RhdGljIGlubGlu
ZSB2b2lkIGZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKewogICAgICAgIGlmICht
bSA9PSBnZXRfY3VycmVudCgpLT5hY3RpdmVfbW0pCiAgICAgICAgICAgICAgICBkbyB7IHVuc2ln
bmVkIGludCB0bXByZWc7IF9fYXNtX18gX192b2xhdGlsZV9fKCAibW92bCAlJWNyMywgJTA7ICAj
IGZsdXNoIFRMQiBcbiIgIm1vdmwgJTAsICUlY3IzOyAgICAgICAgICAgICAgXG4iIDogIj1yIiAo
dG1wcmVnKSA6OiAibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQg
Zmx1c2hfdGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBhZGRyKQp7CiAgICAgICAgaWYgKHZtYS0+dm1fbW0gPT0gZ2V0X2N1cnJlbnQoKS0+
YWN0aXZlX21tKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImludmxwZyAl
MCI6IDoibSIgKCooY2hhciAqKSBhZGRyKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90
bGJfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFy
dCwgdW5zaWduZWQgbG9uZyBlbmQpCnsKICAgICAgICBpZiAobW0gPT0gZ2V0X2N1cnJlbnQoKS0+
YWN0aXZlX21tKQogICAgICAgICAgICAgICAgZG8geyB1bnNpZ25lZCBpbnQgdG1wcmVnOyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyggIm1vdmwgJSVjcjMsICUwOyAgIyBmbHVzaCBUTEIgXG4iICJtb3Zs
ICUwLCAlJWNyMzsgICAgICAgICAgICAgIFxuIiA6ICI9ciIgKHRtcHJlZykgOjogIm1lbW9yeSIp
OyB9IHdoaWxlICgwKTsKfQojIDIyNyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2FzbS9wZ2FsbG9jLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcGd0YWJs
ZXMoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCnsKCn0KIyA2ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaGlnaG1lbS5oIiAy
CiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9oaWdo
bWVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG5yX2ZyZWVfaGlnaHBhZ2VzKHZvaWQp
IHsgcmV0dXJuIDA7IH0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqa21hcChzdHJ1Y3QgcGFnZSAqcGFn
ZSkgeyByZXR1cm4gKChwYWdlKS0+dmlydHVhbCk7IH0KIyA0NiAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2hpZ2htZW0uaCIKc3RhdGljIGlubGluZSB2b2lk
IGNsZWFyX3VzZXJfaGlnaHBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdmFk
ZHIpCnsKICAgICAgICB2b2lkICphZGRyID0ga21hcChwYWdlKTsKICAgICAgICBtbXhfY2xlYXJf
cGFnZSgodm9pZCAqKShhZGRyKSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKc3RhdGlj
IGlubGluZSB2b2lkIGNsZWFyX2hpZ2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlKQp7CiAgICAgICAg
bW14X2NsZWFyX3BhZ2UoKHZvaWQgKikoa21hcChwYWdlKSkpOwogICAgICAgIGRvIHsgfSB3aGls
ZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtZW1jbGVhcl9oaWdocGFnZShzdHJ1Y3QgcGFn
ZSAqcGFnZSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IHNpemUpCnsKICAgICAg
ICBjaGFyICprYWRkcjsKCiAgICAgICAgaWYgKG9mZnNldCArIHNpemUgPiAoMVVMIDw8IDEyKSkK
ICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsK
ICAgICAgICBrYWRkciA9IGttYXAocGFnZSk7CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9w
KDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplKSkgPyBfX2NvbnN0YW50X2NfYW5kX2Nv
dW50X21lbXNldCgoKGthZGRyICsgb2Zmc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNo
YXIpKDApKSksKChzaXplKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKGthZGRyICsgb2Zmc2V0
KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplKSkpKSA6IChfX2J1
aWx0aW5fY29uc3RhbnRfcCgoc2l6ZSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKChrYWRkciArIG9m
ZnNldCkpKSwoKCgwKSkpLCgoKHNpemUpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKGthZGRyICsg
b2Zmc2V0KSksKCgwKSksKChzaXplKSkpKSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoK
CgoKc3RhdGljIGlubGluZSB2b2lkIG1lbWNsZWFyX2hpZ2hwYWdlX2ZsdXNoKHN0cnVjdCBwYWdl
ICpwYWdlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAg
IGNoYXIgKmthZGRyOwoKICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQog
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwog
ICAgICAgIGthZGRyID0ga21hcChwYWdlKTsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3Ao
MCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemUpKSA/IF9fY29uc3RhbnRfY19hbmRfY291
bnRfbWVtc2V0KCgoa2FkZHIgKyBvZmZzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoMCkpKSwoKHNpemUpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoa2FkZHIgKyBvZmZzZXQp
KSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemUpKSkpIDogKF9fYnVp
bHRpbl9jb25zdGFudF9wKChzaXplKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKGthZGRyICsgb2Zm
c2V0KSkpLCgoKDApKSksKCgoc2l6ZSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoa2FkZHIgKyBv
ZmZzZXQpKSwoKDApKSwoKHNpemUpKSkpKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwogICAg
ICAgIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3VzZXJfaGln
aHBhZ2Uoc3RydWN0IHBhZ2UgKnRvLCBzdHJ1Y3QgcGFnZSAqZnJvbSwgdW5zaWduZWQgbG9uZyB2
YWRkcikKewogICAgICAgIGNoYXIgKnZmcm9tLCAqdnRvOwoKICAgICAgICB2ZnJvbSA9IGttYXAo
ZnJvbSk7CiAgICAgICAgdnRvID0ga21hcCh0byk7CiAgICAgICAgbW14X2NvcHlfcGFnZSh2dG8s
dmZyb20pOwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyB9IHdoaWxlICgw
KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaGlnaHBhZ2Uoc3RydWN0IHBhZ2UgKnRvLCBz
dHJ1Y3QgcGFnZSAqZnJvbSkKewogICAgICAgIGNoYXIgKnZmcm9tLCAqdnRvOwoKICAgICAgICB2
ZnJvbSA9IGttYXAoZnJvbSk7CiAgICAgICAgdnRvID0ga21hcCh0byk7CiAgICAgICAgbW14X2Nv
cHlfcGFnZSh2dG8sdmZyb20pOwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8g
eyB9IHdoaWxlICgwKTsKfQojIDI4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvc2tidWZmLmgiIDIKIyA5NSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHsKCiAgICAg
ICAgc3RydWN0IHNrX2J1ZmYgKiBuZXh0OwogICAgICAgIHN0cnVjdCBza19idWZmICogcHJldjsK
CiAgICAgICAgX191MzIgcWxlbjsKICAgICAgICBzcGlubG9ja190IGxvY2s7Cn07CgpzdHJ1Y3Qg
c2tfYnVmZjsKCgoKdHlwZWRlZiBzdHJ1Y3Qgc2tiX2ZyYWdfc3RydWN0IHNrYl9mcmFnX3Q7Cgpz
dHJ1Y3Qgc2tiX2ZyYWdfc3RydWN0CnsKICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZTsKICAgICAg
ICBfX3UxNiBwYWdlX29mZnNldDsKICAgICAgICBfX3UxNiBzaXplOwp9OwoKCgoKc3RydWN0IHNr
Yl9zaGFyZWRfaW5mbyB7CiAgICAgICAgYXRvbWljX3QgZGF0YXJlZjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbnJfZnJhZ3M7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKmZyYWdfbGlzdDsKICAgICAg
ICBza2JfZnJhZ190IGZyYWdzWzZdOwp9OwoKc3RydWN0IHNrX2J1ZmYgewoKICAgICAgICBzdHJ1
Y3Qgc2tfYnVmZiAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKiBwcmV2OwoKICAgICAg
ICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICogbGlzdDsKICAgICAgICBzdHJ1Y3Qgc29jayAqc2s7CiAg
ICAgICAgc3RydWN0IHRpbWV2YWwgc3RhbXA7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRl
djsKCgogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHRjcGhk
ciAqdGg7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwaGRyICp1aDsKICAgICAgICAgICAgICAg
IHN0cnVjdCBpY21waGRyICppY21waDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpZ21waGRyICpp
Z21waDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpcGhkciAqaXBpcGg7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc3B4aGRyICpzcHhoOwogICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmF3
OwogICAgICAgIH0gaDsKCgogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAg
c3RydWN0IGlwaGRyICppcGg7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXB2NmhkciAqaXB2Nmg7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYXJwaGRyICphcnBoOwogICAgICAgICAgICAgICAgc3Ry
dWN0IGlweGhkciAqaXB4aDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnJhdzsKICAg
ICAgICB9IG5oOwoKCiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgZXRoaGRyICpldGhlcm5ldDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnJhdzsK
ICAgICAgICB9IG1hYzsKCiAgICAgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0OwoKCgoKCgoKICAg
ICAgICBjaGFyIGNiWzQ4XTsKCiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNp
Z25lZCBpbnQgZGF0YV9sZW47CiAgICAgICAgdW5zaWduZWQgaW50IGNzdW07CiAgICAgICAgdW5z
aWduZWQgY2hhciBfX3VudXNlZCwKICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVkLAogICAg
ICAgICAgICAgICAgICAgICAgICBwa3RfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgaXBf
c3VtbWVkOwogICAgICAgIF9fdTMyIHByaW9yaXR5OwogICAgICAgIGF0b21pY190IHVzZXJzOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHByb3RvY29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNl
Y3VyaXR5OwogICAgICAgIHVuc2lnbmVkIGludCB0cnVlc2l6ZTsKCiAgICAgICAgdW5zaWduZWQg
Y2hhciAqaGVhZDsKICAgICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgKnRhaWw7CiAgICAgICAgdW5zaWduZWQgY2hhciAqZW5kOwoKICAgICAgICB2b2lkICgq
ZGVzdHJ1Y3Rvcikoc3RydWN0IHNrX2J1ZmYgKik7CiMgMjE2ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCn07CiMgMjI1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMQojIDIyNiAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAy
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vc3lzdGVt
LmgiIDEKIyAyMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9za2J1ZmYuaCIgMgoKZXh0ZXJuIHZvaWQgX19rZnJlZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNr
Yik7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIGFsbG9jX3NrYih1bnNpZ25lZCBpbnQgc2l6ZSwg
aW50IHByaW9yaXR5KTsKZXh0ZXJuIHZvaWQga2ZyZWVfc2tibWVtKHN0cnVjdCBza19idWZmICpz
a2IpOwpleHRlcm4gc3RydWN0IHNrX2J1ZmYgKiBza2JfY2xvbmUoc3RydWN0IHNrX2J1ZmYgKnNr
YiwgaW50IHByaW9yaXR5KTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX2NvcHkoY29uc3Qg
c3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaW9yaXR5KTsKZXh0ZXJuIHN0cnVjdCBza19idWZm
ICogcHNrYl9jb3B5KHN0cnVjdCBza19idWZmICpza2IsIGludCBnZnBfbWFzayk7CmV4dGVybiBp
bnQgcHNrYl9leHBhbmRfaGVhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmhlYWQsIGludCBu
dGFpbCwgaW50IGdmcF9tYXNrKTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX3JlYWxsb2Nf
aGVhZHJvb20oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhlYWRyb29tKTsKZXh0
ZXJuIHN0cnVjdCBza19idWZmICogc2tiX2NvcHlfZXhwYW5kKGNvbnN0IHN0cnVjdCBza19idWZm
ICpza2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBuZXdoZWFkcm9vbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG5ld3RhaWxyb29tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgcHJpb3JpdHkpOwoKZXh0ZXJuIHZvaWQgc2tiX292ZXJfcGFuaWMo
c3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbiwgdm9pZCAqaGVyZSk7CmV4dGVybiB2b2lkIHNr
Yl91bmRlcl9wYW5pYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbGVuLCB2b2lkICpoZXJlKTsK
IyAyNTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9za2J1
ZmYuaCIKc3RhdGljIGlubGluZSBpbnQgc2tiX3F1ZXVlX2VtcHR5KHN0cnVjdCBza19idWZmX2hl
YWQgKmxpc3QpCnsKICAgICAgICByZXR1cm4gKGxpc3QtPm5leHQgPT0gKHN0cnVjdCBza19idWZm
ICopIGxpc3QpOwp9CiMgMjY4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9nZXQo
c3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIGF0b21pY19pbmMoJnNrYi0+dXNlcnMpOwog
ICAgICAgIHJldHVybiBza2I7Cn0KIyAyODcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIGtmcmVlX3NrYihz
dHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgaWYgKCgoJnNrYi0+dXNlcnMpLT5jb3VudGVy
KSA9PSAxIHx8IGF0b21pY19kZWNfYW5kX3Rlc3QoJnNrYi0+dXNlcnMpKQogICAgICAgICAgICAg
ICAgX19rZnJlZV9za2Ioc2tiKTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBrZnJlZV9za2JfZmFz
dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgaWYgKCgoJnNrYi0+dXNlcnMpLT5jb3Vu
dGVyKSA9PSAxIHx8IGF0b21pY19kZWNfYW5kX3Rlc3QoJnNrYi0+dXNlcnMpKQogICAgICAgICAg
ICAgICAga2ZyZWVfc2tibWVtKHNrYik7Cn0KIyAzMDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQgc2tiX2Ns
b25lZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgcmV0dXJuIHNrYi0+Y2xvbmVkICYm
ICgoJigoc3RydWN0IHNrYl9zaGFyZWRfaW5mbyAqKSgoc2tiKS0+ZW5kKSktPmRhdGFyZWYpLT5j
b3VudGVyKSAhPSAxOwp9CiMgMzIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgaW50IHNrYl9zaGFyZWQoc3RydWN0
IHNrX2J1ZmYgKnNrYikKewogICAgICAgIHJldHVybiAoKCgmc2tiLT51c2VycyktPmNvdW50ZXIp
ICE9IDEpOwp9CiMgMzQxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9zaGFyZV9j
aGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcHJpKQp7CiAgICAgICAgaWYgKHNrYl9zaGFy
ZWQoc2tiKSkgewogICAgICAgICAgICAgICAgc3RydWN0IHNrX2J1ZmYgKm5za2I7CiAgICAgICAg
ICAgICAgICBuc2tiID0gc2tiX2Nsb25lKHNrYiwgcHJpKTsKICAgICAgICAgICAgICAgIGtmcmVl
X3NrYihza2IpOwogICAgICAgICAgICAgICAgcmV0dXJuIG5za2I7CiAgICAgICAgfQogICAgICAg
IHJldHVybiBza2I7Cn0KIyAzNzQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3Vu
c2hhcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaSkKewogICAgICAgIHN0cnVjdCBza19i
dWZmICpuc2tiOwogICAgICAgIGlmKCFza2JfY2xvbmVkKHNrYikpCiAgICAgICAgICAgICAgICBy
ZXR1cm4gc2tiOwogICAgICAgIG5za2I9c2tiX2NvcHkoc2tiLCBwcmkpOwogICAgICAgIGtmcmVl
X3NrYihza2IpOwogICAgICAgIHJldHVybiBuc2tiOwp9CiMgMzk4ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3Ry
dWN0IHNrX2J1ZmYgKnNrYl9wZWVrKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3RfKQp7CiAgICAg
ICAgc3RydWN0IHNrX2J1ZmYgKmxpc3QgPSAoKHN0cnVjdCBza19idWZmICopbGlzdF8pLT5uZXh0
OwogICAgICAgIGlmIChsaXN0ID09IChzdHJ1Y3Qgc2tfYnVmZiAqKWxpc3RfKQogICAgICAgICAg
ICAgICAgbGlzdCA9ICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiBsaXN0Owp9CiMgNDIwICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0
YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9wZWVrX3RhaWwoc3RydWN0IHNrX2J1ZmZf
aGVhZCAqbGlzdF8pCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqbGlzdCA9ICgoc3RydWN0IHNr
X2J1ZmYgKilsaXN0XyktPnByZXY7CiAgICAgICAgaWYgKGxpc3QgPT0gKHN0cnVjdCBza19idWZm
ICopbGlzdF8pCiAgICAgICAgICAgICAgICBsaXN0ID0gKCh2b2lkICopMCk7CiAgICAgICAgcmV0
dXJuIGxpc3Q7Cn0KIyA0MzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBfX3UzMiBza2JfcXVldWVfbGVuKHN0cnVj
dCBza19idWZmX2hlYWQgKmxpc3RfKQp7CiAgICAgICAgcmV0dXJuKGxpc3RfLT5xbGVuKTsKfQoK
c3RhdGljIGlubGluZSB2b2lkIHNrYl9xdWV1ZV9oZWFkX2luaXQoc3RydWN0IHNrX2J1ZmZfaGVh
ZCAqbGlzdCkKewogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBsaXN0LT5wcmV2ID0g
KHN0cnVjdCBza19idWZmICopbGlzdDsKICAgICAgICBsaXN0LT5uZXh0ID0gKHN0cnVjdCBza19i
dWZmICopbGlzdDsKICAgICAgICBsaXN0LT5xbGVuID0gMDsKfQojIDQ2NiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5l
IHZvaWQgX19za2JfcXVldWVfaGVhZChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBzdHJ1Y3Qg
c2tfYnVmZiAqbmV3c2spCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcHJldiwgKm5leHQ7Cgog
ICAgICAgIG5ld3NrLT5saXN0ID0gbGlzdDsKICAgICAgICBsaXN0LT5xbGVuKys7CiAgICAgICAg
cHJldiA9IChzdHJ1Y3Qgc2tfYnVmZiAqKWxpc3Q7CiAgICAgICAgbmV4dCA9IHByZXYtPm5leHQ7
CiAgICAgICAgbmV3c2stPm5leHQgPSBuZXh0OwogICAgICAgIG5ld3NrLT5wcmV2ID0gcHJldjsK
ICAgICAgICBuZXh0LT5wcmV2ID0gbmV3c2s7CiAgICAgICAgcHJldi0+bmV4dCA9IG5ld3NrOwp9
CiMgNDkzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2ti
dWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcXVldWVfaGVhZChzdHJ1Y3Qgc2tfYnVmZl9o
ZWFkICpsaXN0LCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAgICAgICB1bnNpZ25lZCBsb25n
IGZsYWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3Bs
ICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmbGlzdC0+bG9jayk7
IH0gd2hpbGUgKDApOwogICAgICAgIF9fc2tiX3F1ZXVlX2hlYWQobGlzdCwgbmV3c2spOwogICAg
ICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAg
OyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CiMg
NTE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2tidWZm
LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NrYl9xdWV1ZV90YWlsKHN0cnVjdCBza19idWZmX2hl
YWQgKmxpc3QsIHN0cnVjdCBza19idWZmICpuZXdzaykKewogICAgICAgIHN0cnVjdCBza19idWZm
ICpwcmV2LCAqbmV4dDsKCiAgICAgICAgbmV3c2stPmxpc3QgPSBsaXN0OwogICAgICAgIGxpc3Qt
PnFsZW4rKzsKICAgICAgICBuZXh0ID0gKHN0cnVjdCBza19idWZmICopbGlzdDsKICAgICAgICBw
cmV2ID0gbmV4dC0+cHJldjsKICAgICAgICBuZXdzay0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3
c2stPnByZXYgPSBwcmV2OwogICAgICAgIG5leHQtPnByZXYgPSBuZXdzazsKICAgICAgICBwcmV2
LT5uZXh0ID0gbmV3c2s7Cn0KIyA1NDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIv
aW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9xdWV1ZV90YWls
KHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIHN0cnVjdCBza19idWZmICpuZXdzaykKewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxl
X18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZv
aWQpKCZsaXN0LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19za2JfcXVldWVfdGFpbChs
aXN0LCBuZXdzayk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsg
fSB3aGlsZSAoMCk7Cn0KIyA1NTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqX19za2Jf
ZGVxdWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7CiAgICAgICAgc3RydWN0IHNrX2J1
ZmYgKm5leHQsICpwcmV2LCAqcmVzdWx0OwoKICAgICAgICBwcmV2ID0gKHN0cnVjdCBza19idWZm
ICopIGxpc3Q7CiAgICAgICAgbmV4dCA9IHByZXYtPm5leHQ7CiAgICAgICAgcmVzdWx0ID0gKCh2
b2lkICopMCk7CiAgICAgICAgaWYgKG5leHQgIT0gcHJldikgewogICAgICAgICAgICAgICAgcmVz
dWx0ID0gbmV4dDsKICAgICAgICAgICAgICAgIG5leHQgPSBuZXh0LT5uZXh0OwogICAgICAgICAg
ICAgICAgbGlzdC0+cWxlbi0tOwogICAgICAgICAgICAgICAgbmV4dC0+cHJldiA9IHByZXY7CiAg
ICAgICAgICAgICAgICBwcmV2LT5uZXh0ID0gbmV4dDsKICAgICAgICAgICAgICAgIHJlc3VsdC0+
bmV4dCA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgcmVzdWx0LT5wcmV2ID0gKCh2b2lk
ICopMCk7CiAgICAgICAgICAgICAgICByZXN1bHQtPmxpc3QgPSAoKHZvaWQgKikwKTsKICAgICAg
ICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQojIDU4NyAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBz
a19idWZmICpza2JfZGVxdWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7CiAgICAgICAg
bG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzdWx0OwoKICAgICAgICBkbyB7
IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFn
cyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmbGlzdC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAg
IHJlc3VsdCA9IF9fc2tiX2RlcXVldWUobGlzdCk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUo
MCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3Mp
OiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoK
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NrYl9pbnNlcnQoc3RydWN0IHNrX2J1ZmYgKm5ld3Nr
LAogICAgICAgIHN0cnVjdCBza19idWZmICogcHJldiwgc3RydWN0IHNrX2J1ZmYgKm5leHQsCiAg
ICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqIGxpc3QpCnsKICAgICAgICBuZXdzay0+bmV4dCA9
IG5leHQ7CiAgICAgICAgbmV3c2stPnByZXYgPSBwcmV2OwogICAgICAgIG5leHQtPnByZXYgPSBu
ZXdzazsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3c2s7CiAgICAgICAgbmV3c2stPmxpc3QgPSBs
aXN0OwogICAgICAgIGxpc3QtPnFsZW4rKzsKfQojIDYyNCAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2ti
X2luc2VydChzdHJ1Y3Qgc2tfYnVmZiAqb2xkLCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGls
ZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2
b2lkKSgmb2xkLT5saXN0LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19za2JfaW5zZXJ0
KG5ld3NrLCBvbGQtPnByZXYsIG9sZCwgb2xkLT5saXN0KTsKICAgICAgICBkbyB7IGRvIHsgfSB3
aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChm
bGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCBfX3NrYl9hcHBlbmQoc3RydWN0IHNrX2J1ZmYgKm9sZCwgc3RydWN0IHNrX2J1ZmYgKm5l
d3NrKQp7CiAgICAgICAgX19za2JfaW5zZXJ0KG5ld3NrLCBvbGQsIG9sZC0+bmV4dCwgb2xkLT5s
aXN0KTsKfQojIDY1MyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX2FwcGVuZChzdHJ1Y3Qgc2tfYnVm
ZiAqb2xkLCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUw
IDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmb2xkLT5saXN0LT5sb2Nr
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19za2JfYXBwZW5kKG9sZCwgbmV3c2spOwogICAgICAg
IGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBw
b3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CgoKCgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NrYl91bmxpbmsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3Ry
dWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0cnVjdCBza19idWZmICogbmV4dCwg
KiBwcmV2OwoKICAgICAgICBsaXN0LT5xbGVuLS07CiAgICAgICAgbmV4dCA9IHNrYi0+bmV4dDsK
ICAgICAgICBwcmV2ID0gc2tiLT5wcmV2OwogICAgICAgIHNrYi0+bmV4dCA9ICgodm9pZCAqKTAp
OwogICAgICAgIHNrYi0+cHJldiA9ICgodm9pZCAqKTApOwogICAgICAgIHNrYi0+bGlzdCA9ICgo
dm9pZCAqKTApOwogICAgICAgIG5leHQtPnByZXYgPSBwcmV2OwogICAgICAgIHByZXYtPm5leHQg
PSBuZXh0Owp9CiMgNjk0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBza2JfdW5saW5rKHN0cnVjdCBza19i
dWZmICpza2IpCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0ID0gc2tiLT5saXN0
OwoKICAgICAgICBpZihsaXN0KSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdz
OwoKICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBv
cGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZsaXN0LT5sb2Nr
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBpZihza2ItPmxpc3QgPT0gbGlzdCkKICAg
ICAgICAgICAgICAgICAgICAgICAgX19za2JfdW5saW5rKHNrYiwgc2tiLT5saXN0KTsKICAgICAg
ICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVz
aGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDAp
OwogICAgICAgIH0KfQojIDcxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpfX3NrYl9k
ZXF1ZXVlX3RhaWwoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0cnVjdCBz
a19idWZmICpza2IgPSBza2JfcGVla190YWlsKGxpc3QpOwogICAgICAgIGlmIChza2IpCiAgICAg
ICAgICAgICAgICBfX3NrYl91bmxpbmsoc2tiLCBsaXN0KTsKICAgICAgICByZXR1cm4gc2tiOwp9
CiMgNzM2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2ti
dWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9kZXF1ZXVlX3RhaWwoc3Ry
dWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIGxvbmcgZmxhZ3M7CiAgICAgICAgc3Ry
dWN0IHNrX2J1ZmYgKnJlc3VsdDsKCiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
cHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCko
Jmxpc3QtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICByZXN1bHQgPSBfX3NrYl9kZXF1ZXVl
X3RhaWwobGlzdCk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoKc3RhdGljIGlubGluZSBpbnQg
c2tiX2lzX25vbmxpbmVhcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgcmV0
dXJuIHNrYi0+ZGF0YV9sZW47Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNrYl9oZWFkbGVuKGNvbnN0
IHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICByZXR1cm4gc2tiLT5sZW4gLSBza2ItPmRh
dGFfbGVuOwp9CiMgNzY1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqX19za2JfcHV0KHN0
cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICB1bnNpZ25lZCBj
aGFyICp0bXA9c2tiLT50YWlsOwogICAgICAgIGRvIHsgaWYgKHNrYl9pc19ub25saW5lYXIoc2ti
KSkgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOyB9IHdoaWxlICgwKTsK
ICAgICAgICBza2ItPnRhaWwrPWxlbjsKICAgICAgICBza2ItPmxlbis9bGVuOwogICAgICAgIHJl
dHVybiB0bXA7Cn0KIyA3ODQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfcHV0KHN0
cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICB1bnNpZ25lZCBj
aGFyICp0bXA9c2tiLT50YWlsOwogICAgICAgIGRvIHsgaWYgKHNrYl9pc19ub25saW5lYXIoc2ti
KSkgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOyB9IHdoaWxlICgwKTsK
ICAgICAgICBza2ItPnRhaWwrPWxlbjsKICAgICAgICBza2ItPmxlbis9bGVuOwogICAgICAgIGlm
KHNrYi0+dGFpbD5za2ItPmVuZCkgewogICAgICAgICAgICAgICAgc2tiX292ZXJfcGFuaWMoc2ti
LCBsZW4sICh7IHZvaWQgKnBjOyBfX2FzbV9fKCJtb3ZsICQxZiwlMFxuMToiOiI9ZyIgKHBjKSk7
IHBjOyB9KSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0bXA7Cn0KCnN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgY2hhciAqX19za2JfcHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBp
bnQgbGVuKQp7CiAgICAgICAgc2tiLT5kYXRhLT1sZW47CiAgICAgICAgc2tiLT5sZW4rPWxlbjsK
ICAgICAgICByZXR1cm4gc2tiLT5kYXRhOwp9CiMgODEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
Y2hhciAqc2tiX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewog
ICAgICAgIHNrYi0+ZGF0YS09bGVuOwogICAgICAgIHNrYi0+bGVuKz1sZW47CiAgICAgICAgaWYo
c2tiLT5kYXRhPHNrYi0+aGVhZCkgewogICAgICAgICAgICAgICAgc2tiX3VuZGVyX3BhbmljKHNr
YiwgbGVuLCAoeyB2b2lkICpwYzsgX19hc21fXygibW92bCAkMWYsJTBcbjE6IjoiPWciIChwYykp
OyBwYzsgfSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc2tiLT5kYXRhOwp9CgpzdGF0aWMg
aW5saW5lIGNoYXIgKl9fc2tiX3B1bGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50
IGxlbikKewogICAgICAgIHNrYi0+bGVuLT1sZW47CiAgICAgICAgaWYgKHNrYi0+bGVuIDwgc2ti
LT5kYXRhX2xlbikKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAw
eDBmLDB4MGIiKTsKICAgICAgICByZXR1cm4gc2tiLT5kYXRhKz1sZW47Cn0KIyA4NDIgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBjaGFyICogc2tiX3B1bGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5z
aWduZWQgaW50IGxlbikKewogICAgICAgIGlmIChsZW4gPiBza2ItPmxlbikKICAgICAgICAgICAg
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICByZXR1cm4gX19za2JfcHVsbChza2IsbGVu
KTsKfQoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKiBfX3Bza2JfcHVsbF90YWlsKHN0cnVjdCBza19i
dWZmICpza2IsIGludCBkZWx0YSk7CgpzdGF0aWMgaW5saW5lIGNoYXIgKl9fcHNrYl9wdWxsKHN0
cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBpZiAobGVuID4g
c2tiX2hlYWRsZW4oc2tiKSAmJgogICAgICAgICAgICBfX3Bza2JfcHVsbF90YWlsKHNrYiwgbGVu
LXNrYl9oZWFkbGVuKHNrYikpID09ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgcmV0dXJu
ICgodm9pZCAqKTApOwogICAgICAgIHNrYi0+bGVuIC09IGxlbjsKICAgICAgICByZXR1cm4gc2ti
LT5kYXRhICs9IGxlbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICogcHNrYl9wdWxs
KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBpZiAobGVu
ID4gc2tiLT5sZW4pCiAgICAgICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAg
cmV0dXJuIF9fcHNrYl9wdWxsKHNrYixsZW4pOwp9CgpzdGF0aWMgaW5saW5lIGludCBwc2tiX21h
eV9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBp
ZiAobGVuIDw9IHNrYl9oZWFkbGVuKHNrYikpCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAg
ICAgICBpZiAobGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICByZXR1cm4gKF9fcHNrYl9wdWxsX3RhaWwoc2tiLCBsZW4tc2tiX2hlYWRsZW4oc2tiKSkgIT0g
KCh2b2lkICopMCkpOwp9CiMgODgzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgaW50IHNrYl9oZWFkcm9vbShjb25z
dCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgcmV0dXJuIHNrYi0+ZGF0YS1za2ItPmhl
YWQ7Cn0KIyA4OTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQgc2tiX3RhaWxyb29tKGNvbnN0IHN0cnVjdCBz
a19idWZmICpza2IpCnsKICAgICAgICByZXR1cm4gc2tiX2lzX25vbmxpbmVhcihza2IpID8gMCA6
IHNrYi0+ZW5kLXNrYi0+dGFpbDsKfQojIDkwOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3Jlc2Vy
dmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHNrYi0+
ZGF0YSs9bGVuOwogICAgICAgIHNrYi0+dGFpbCs9bGVuOwp9CgpleHRlcm4gaW50IF9fX3Bza2Jf
dHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgcmVhbGxvYyk7
CgpzdGF0aWMgaW5saW5lIHZvaWQgX19za2JfdHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNp
Z25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYgKCFza2ItPmRhdGFfbGVuKSB7CiAgICAgICAgICAg
ICAgICBza2ItPmxlbiA9IGxlbjsKICAgICAgICAgICAgICAgIHNrYi0+dGFpbCA9IHNrYi0+ZGF0
YStsZW47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF9fX3Bza2JfdHJpbShza2Is
IGxlbiwgMCk7CiAgICAgICAgfQp9CiMgOTM2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBza2JfdHJpbShz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYgKHNrYi0+
bGVuID4gbGVuKSB7CiAgICAgICAgICAgICAgICBfX3NrYl90cmltKHNrYiwgbGVuKTsKICAgICAg
ICB9Cn0KCgpzdGF0aWMgaW5saW5lIGludCBfX3Bza2JfdHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2ti
LCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYgKCFza2ItPmRhdGFfbGVuKSB7CiAgICAg
ICAgICAgICAgICBza2ItPmxlbiA9IGxlbjsKICAgICAgICAgICAgICAgIHNrYi0+dGFpbCA9IHNr
Yi0+ZGF0YStsZW47CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgcmV0dXJuIF9fX3Bza2JfdHJpbShza2IsIGxlbiwgMSk7CiAgICAgICAg
fQp9CgpzdGF0aWMgaW5saW5lIGludCBwc2tiX3RyaW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5z
aWduZWQgaW50IGxlbikKewogICAgICAgIGlmIChsZW4gPCBza2ItPmxlbikKICAgICAgICAgICAg
ICAgIHJldHVybiBfX3Bza2JfdHJpbShza2IsIGxlbik7CiAgICAgICAgcmV0dXJuIDA7Cn0KIyA5
NzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9za2J1ZmYu
aCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9vcnBoYW4oc3RydWN0IHNrX2J1ZmYgKnNrYikKewog
ICAgICAgIGlmIChza2ItPmRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICBza2ItPmRlc3RydWN0
b3Ioc2tiKTsKICAgICAgICBza2ItPmRlc3RydWN0b3IgPSAoKHZvaWQgKikwKTsKICAgICAgICBz
a2ItPnNrID0gKCh2b2lkICopMCk7Cn0KIyA5OTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9xdWV1
ZV9wdXJnZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7CiAgICAgICAgc3RydWN0IHNrX2J1
ZmYgKnNrYjsKICAgICAgICB3aGlsZSAoKHNrYj1za2JfZGVxdWV1ZShsaXN0KSkhPSgodm9pZCAq
KTApKQogICAgICAgICAgICAgICAga2ZyZWVfc2tiKHNrYik7Cn0KIyAxMDA3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBfX3NrYl9xdWV1ZV9wdXJnZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7CiAg
ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKICAgICAgICB3aGlsZSAoKHNrYj1fX3NrYl9kZXF1
ZXVlKGxpc3QpKSE9KCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICBrZnJlZV9za2Ioc2tiKTsK
fQojIDEwMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9z
a2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqX19kZXZfYWxsb2Nfc2tiKHVu
c2lnbmVkIGludCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgZ2ZwX21hc2spCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwoKICAg
ICAgICBza2IgPSBhbGxvY19za2IobGVuZ3RoKzE2LCBnZnBfbWFzayk7CiAgICAgICAgaWYgKHNr
YikKICAgICAgICAgICAgICAgIHNrYl9yZXNlcnZlKHNrYiwxNik7CiAgICAgICAgcmV0dXJuIHNr
YjsKfQojIDEwNTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqZGV2X2FsbG9jX3NrYih1
bnNpZ25lZCBpbnQgbGVuZ3RoKQp7CiAgICAgICAgcmV0dXJuIF9fZGV2X2FsbG9jX3NrYihsZW5n
dGgsICgweDIwKSk7Cn0KIyAxMDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgaW50CnNrYl9jb3coc3RydWN0IHNr
X2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhlYWRyb29tKQp7CiAgICAgICAgaW50IGRlbHRhID0g
KGhlYWRyb29tID4gMTYgPyBoZWFkcm9vbSA6IDE2KSAtIHNrYl9oZWFkcm9vbShza2IpOwoKICAg
ICAgICBpZiAoZGVsdGEgPCAwKQogICAgICAgICAgICAgICAgZGVsdGEgPSAwOwoKICAgICAgICBp
ZiAoZGVsdGEgfHwgc2tiX2Nsb25lZChza2IpKQogICAgICAgICAgICAgICAgcmV0dXJuIHBza2Jf
ZXhwYW5kX2hlYWQoc2tiLCAoZGVsdGErMTUpJn4xNSwgMCwgKDB4MjApKTsKICAgICAgICByZXR1
cm4gMDsKfQojIDEwODkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9za2J1ZmYuaCIKaW50IHNrYl9saW5lYXJpemUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50
IGdmcCk7CgpzdGF0aWMgaW5saW5lIHZvaWQgKmttYXBfc2tiX2ZyYWcoY29uc3Qgc2tiX2ZyYWdf
dCAqZnJhZykKewoKCgoKCgogICAgICAgIHJldHVybiBrbWFwKGZyYWctPnBhZ2UpOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQga3VubWFwX3NrYl9mcmFnKHZvaWQgKnZhZGRyKQp7CiAgICAgICAgZG8g
eyB9IHdoaWxlICgwKTsKCgoKfQoKCgoKCgoKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX3Jl
Y3ZfZGF0YWdyYW0oc3RydWN0IHNvY2sgKnNrLHVuc2lnbmVkIGZsYWdzLGludCBub2Jsb2NrLCBp
bnQgKmVycik7CmV4dGVybiB1bnNpZ25lZCBpbnQgZGF0YWdyYW1fcG9sbChzdHJ1Y3QgZmlsZSAq
ZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0
KTsKZXh0ZXJuIGludCBza2JfY29weV9kYXRhZ3JhbShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZnJv
bSwgaW50IG9mZnNldCwgY2hhciAqdG8saW50IHNpemUpOwpleHRlcm4gaW50IHNrYl9jb3B5X2Rh
dGFncmFtX2lvdmVjKGNvbnN0IHN0cnVjdCBza19idWZmICpmcm9tLCBpbnQgb2Zmc2V0LCBzdHJ1
Y3QgaW92ZWMgKnRvLGludCBzaXplKTsKZXh0ZXJuIGludCBza2JfY29weV9hbmRfY3N1bV9kYXRh
Z3JhbShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCB1OCAqdG8sIGludCBs
ZW4sIHVuc2lnbmVkIGludCAqY3N1bXApOwpleHRlcm4gaW50IHNrYl9jb3B5X2FuZF9jc3VtX2Rh
dGFncmFtX2lvdmVjKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBobGVuLCBzdHJ1Y3Qg
aW92ZWMgKmlvdik7CmV4dGVybiB2b2lkIHNrYl9mcmVlX2RhdGFncmFtKHN0cnVjdCBzb2NrICog
c2ssIHN0cnVjdCBza19idWZmICpza2IpOwoKZXh0ZXJuIHVuc2lnbmVkIGludCBza2JfY2hlY2tz
dW0oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgaW50IGxlbiwgdW5zaWdu
ZWQgaW50IGNzdW0pOwpleHRlcm4gaW50IHNrYl9jb3B5X2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1
ZmYgKnNrYiwgaW50IG9mZnNldCwgdm9pZCAqdG8sIGludCBsZW4pOwpleHRlcm4gdW5zaWduZWQg
aW50IHNrYl9jb3B5X2FuZF9jc3VtX2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50
IG9mZnNldCwgdTggKnRvLCBpbnQgbGVuLCB1bnNpZ25lZCBpbnQgY3N1bSk7CmV4dGVybiB2b2lk
IHNrYl9jb3B5X2FuZF9jc3VtX2Rldihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCAqdG8p
OwoKZXh0ZXJuIHZvaWQgc2tiX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHNrYl9hZGRfbXR1KGlu
dCBtdHUpOwojIDE0NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L25ldGRldmljZS5oIiAyCgpzdHJ1Y3QgbmVpZ2hib3VyOwpzdHJ1Y3QgbmVpZ2hfcGFybXM7
CnN0cnVjdCBza19idWZmOwoKc3RydWN0IG5ldGlmX3J4X3N0YXRzCnsKICAgICAgICB1bnNpZ25l
ZCB0b3RhbDsKICAgICAgICB1bnNpZ25lZCBkcm9wcGVkOwogICAgICAgIHVuc2lnbmVkIHRpbWVf
c3F1ZWV6ZTsKICAgICAgICB1bnNpZ25lZCB0aHJvdHRsZWQ7CiAgICAgICAgdW5zaWduZWQgZmFz
dHJvdXRlX2hpdDsKICAgICAgICB1bnNpZ25lZCBmYXN0cm91dGVfc3VjY2VzczsKICAgICAgICB1
bnNpZ25lZCBmYXN0cm91dGVfZGVmZXI7CiAgICAgICAgdW5zaWduZWQgZmFzdHJvdXRlX2RlZmVy
cmVkX291dDsKICAgICAgICB1bnNpZ25lZCBmYXN0cm91dGVfbGF0ZW5jeV9yZWR1Y3Rpb247CiAg
ICAgICAgdW5zaWduZWQgY3B1X2NvbGxpc2lvbjsKfSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVk
X18oKDEgPDwgKCg2KSkpKSkpOwoKZXh0ZXJuIHN0cnVjdCBuZXRpZl9yeF9zdGF0cyBuZXRkZXZf
cnhfc3RhdFtdOwoKCgoKCgpzdHJ1Y3QgZGV2X21jX2xpc3QKewogICAgICAgIHN0cnVjdCBkZXZf
bWNfbGlzdCAqbmV4dDsKICAgICAgICBfX3U4IGRtaV9hZGRyWzhdOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgZG1pX2FkZHJsZW47CiAgICAgICAgaW50IGRtaV91c2VyczsKICAgICAgICBpbnQgZG1p
X2d1c2VyczsKfTsKCnN0cnVjdCBoaF9jYWNoZQp7CiAgICAgICAgc3RydWN0IGhoX2NhY2hlICpo
aF9uZXh0OwogICAgICAgIGF0b21pY190IGhoX3JlZmNudDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBoaF90eXBlOwogICAgICAgIGludCBoaF9sZW47CiAgICAgICAgaW50ICgqaGhfb3V0cHV0KShz
dHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKICAgICAgICByd2xvY2tfdCBoaF9sb2NrOwoKICAgICAgICB1
bnNpZ25lZCBsb25nIGhoX2RhdGFbMTYvc2l6ZW9mKHVuc2lnbmVkIGxvbmcpXTsKfTsKCgoKCgoK
ZW51bSBuZXRkZXZfc3RhdGVfdAp7CiAgICAgICAgX19MSU5LX1NUQVRFX1hPRkY9MCwKICAgICAg
ICBfX0xJTktfU1RBVEVfU1RBUlQsCiAgICAgICAgX19MSU5LX1NUQVRFX1BSRVNFTlQsCiAgICAg
ICAgX19MSU5LX1NUQVRFX1NDSEVELAogICAgICAgIF9fTElOS19TVEFURV9OT0NBUlJJRVIKfTsK
CgoKCgoKc3RydWN0IG5ldGRldl9ib290X3NldHVwIHsKICAgICAgICBjaGFyIG5hbWVbMTZdOwog
ICAgICAgIHN0cnVjdCBpZm1hcCBtYXA7Cn07CiMgMjMwICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiCnN0cnVjdCBuZXRfZGV2aWNlCnsK
CgoKCgoKICAgICAgICBjaGFyIG5hbWVbMTZdOwoKCgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBy
bWVtX2VuZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHJtZW1fc3RhcnQ7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBtZW1fZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWVtX3N0YXJ0OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgYmFzZV9hZGRyOwogICAgICAgIHVuc2lnbmVkIGludCBpcnE7CgoKCgoK
CiAgICAgICAgdW5zaWduZWQgY2hhciBpZl9wb3J0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZG1h
OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXRlOwoKICAgICAgICBzdHJ1Y3QgbmV0X2Rldmlj
ZSAqbmV4dDsKCgogICAgICAgIGludCAoKmluaXQpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoK
CgogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXh0X3NjaGVkOwoKCiAgICAgICAgaW50IGlm
aW5kZXg7CiAgICAgICAgaW50IGlmbGluazsKCgogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3N0
YXRzKiAoKmdldF9zdGF0cykoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiAgICAgICAgc3RydWN0
IGl3X3N0YXRpc3RpY3MqICgqZ2V0X3dpcmVsZXNzX3N0YXRzKShzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KTsKIyAyODUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9uZXRkZXZpY2UuaCIKICAgICAgICB1bnNpZ25lZCBsb25nIHRyYW5zX3N0YXJ0OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgbGFzdF9yeDsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZ2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIG10dTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCB0eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGhhcmRfaGVhZGVy
X2xlbjsKICAgICAgICB2b2lkICpwcml2OwoKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbWFz
dGVyOwoKCgoKICAgICAgICB1bnNpZ25lZCBjaGFyIGJyb2FkY2FzdFs4XTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGRldl9hZGRyWzhdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYWRkcl9sZW47Cgog
ICAgICAgIHN0cnVjdCBkZXZfbWNfbGlzdCAqbWNfbGlzdDsKICAgICAgICBpbnQgbWNfY291bnQ7
CiAgICAgICAgaW50IHByb21pc2N1aXR5OwogICAgICAgIGludCBhbGxtdWx0aTsKCiAgICAgICAg
aW50IHdhdGNoZG9nX3RpbWVvOwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHdhdGNoZG9nX3Rp
bWVyOwoKCgogICAgICAgIHZvaWQgKmF0YWxrX3B0cjsKICAgICAgICB2b2lkICppcF9wdHI7CiAg
ICAgICAgdm9pZCAqZG5fcHRyOwogICAgICAgIHZvaWQgKmlwNl9wdHI7CiAgICAgICAgdm9pZCAq
ZWNfcHRyOwoKICAgICAgICBzdHJ1Y3QgUWRpc2MgKnFkaXNjOwogICAgICAgIHN0cnVjdCBRZGlz
YyAqcWRpc2Nfc2xlZXBpbmc7CiAgICAgICAgc3RydWN0IFFkaXNjICpxZGlzY19saXN0OwogICAg
ICAgIHN0cnVjdCBRZGlzYyAqcWRpc2NfaW5ncmVzczsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4
X3F1ZXVlX2xlbjsKCgogICAgICAgIHNwaW5sb2NrX3QgeG1pdF9sb2NrOwoKCgogICAgICAgIGlu
dCB4bWl0X2xvY2tfb3duZXI7CgogICAgICAgIHNwaW5sb2NrX3QgcXVldWVfbG9jazsKCiAgICAg
ICAgYXRvbWljX3QgcmVmY250OwoKICAgICAgICBpbnQgZGVhZGJlYWY7CgoKICAgICAgICBpbnQg
ZmVhdHVyZXM7CiMgMzUwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvbmV0ZGV2aWNlLmgiCiAgICAgICAgdm9pZCAoKnVuaW5pdCkoc3RydWN0IG5ldF9kZXZp
Y2UgKmRldik7CgogICAgICAgIHZvaWQgKCpkZXN0cnVjdG9yKShzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KTsKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogICAg
ICAgIGludCAoKnN0b3ApKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogICAgICAgIGludCAoKmhh
cmRfc3RhcnRfeG1pdCkgKHN0cnVjdCBza19idWZmICpza2IsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsK
ICAgICAgICBpbnQgKCpoYXJkX2hlYWRlcikgKHN0cnVjdCBza19idWZmICpza2IsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHNob3J0IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKmRhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpzYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuKTsKICAgICAgICBpbnQgKCpyZWJ1aWxkX2hl
YWRlcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7CgogICAgICAgIHZvaWQgKCpzZXRfbXVsdGljYXN0
X2xpc3QpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKICAgICAgICBpbnQgKCpzZXRfbWFjX2Fk
ZHJlc3MpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFkZHIpOwoKICAgICAgICBpbnQgKCpkb19p
b2N0bCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZCk7CgogICAgICAgIGlu
dCAoKnNldF9jb25maWcpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZtYXAgKm1hcCk7CgogICAgICAg
IGludCAoKmhhcmRfaGVhZGVyX2NhY2hlKShzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaGhf
Y2FjaGUgKmhoKTsKICAgICAgICB2b2lkICgqaGVhZGVyX2NhY2hlX3VwZGF0ZSkoc3RydWN0IGho
X2NhY2hlICpoaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICogaGFkZHIpOwoK
ICAgICAgICBpbnQgKCpjaGFuZ2VfbXR1KShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3
X210dSk7CgoKICAgICAgICB2b2lkICgqdHhfdGltZW91dCkgKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYpOwoKICAgICAgICBpbnQgKCpoYXJkX2hlYWRlcl9wYXJzZSkoc3RydWN0IHNrX2J1ZmYgKnNr
YiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyICpoYWRkcik7CiAgICAgICAgaW50ICgqbmVpZ2hfc2V0dXApKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZWlnaF9wYXJtcyAqKTsKICAgICAgICBpbnQgKCphY2Nl
cHRfZmFzdHBhdGgpKHN0cnVjdCBuZXRfZGV2aWNlICosIHN0cnVjdCBkc3RfZW50cnkqKTsKCgog
ICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwoKCiAgICAgICAgc3RydWN0IG5ldF9icmlkZ2Vf
cG9ydCAqYnJfcG9ydDsKIyA0MTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9uZXRkZXZpY2UuaCIKfTsKCgpzdHJ1Y3QgcGFja2V0X3R5cGUKewogICAgICAg
IHVuc2lnbmVkIHNob3J0IHR5cGU7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKICAg
ICAgICBpbnQgKCpmdW5jKSAoc3RydWN0IHNrX2J1ZmYgKiwgc3RydWN0IG5ldF9kZXZpY2UgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFja2V0X3R5
cGUgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKm5l
eHQ7Cn07CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvaW50ZXJydXB0LmgiIDEKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgNyAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3NtcC5oIiAxCiMg
OCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ludGVycnVw
dC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L2NhY2hlLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
bGludXgvaW50ZXJydXB0LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAu
Mi9pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMTIgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAx
MyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2ludGVycnVw
dC5oIiAyCgpzdHJ1Y3QgaXJxYWN0aW9uIHsKICAgICAgICB2b2lkICgqaGFuZGxlcikoaW50LCB2
b2lkICosIHN0cnVjdCBwdF9yZWdzICopOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBtYXNrOwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAg
ICAgdm9pZCAqZGV2X2lkOwogICAgICAgIHN0cnVjdCBpcnFhY3Rpb24gKm5leHQ7Cn07CgoKCgoK
ZW51bSB7CiAgICAgICAgVElNRVJfQkggPSAwLAogICAgICAgIFRRVUVVRV9CSCwKICAgICAgICBE
SUdJX0JILAogICAgICAgIFNFUklBTF9CSCwKICAgICAgICBSSVNDT004X0JILAogICAgICAgIFNQ
RUNJQUxJWF9CSCwKICAgICAgICBBVVJPUkFfQkgsCiAgICAgICAgRVNQX0JILAogICAgICAgIFND
U0lfQkgsCiAgICAgICAgSU1NRURJQVRFX0JILAogICAgICAgIENZQ0xBREVTX0JILAogICAgICAg
IENNMjA2X0JILAogICAgICAgIEpTX0JILAogICAgICAgIE1BQ1NFUklBTF9CSCwKICAgICAgICBJ
U0lDT01fQkgKfTsKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2FzbS9oYXJkaXJxLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pcnEuaCIgMQojIDEyICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaXJxLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg
MTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pcnEuaCIg
MgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9j
YWNoZS5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9pcnEuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9zcGlubG9jay5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9pcnEuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvYXNtL2lycS5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9hc20vaXJxLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vaXJxLmgiIDIKIyAyOCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9pcnEuaCIKc3RhdGljIF9faW5saW5lX18gaW50
IGlycV9jYW5ub25pY2FsaXplKGludCBpcnEpCnsKICAgICAgICByZXR1cm4gKChpcnEgPT0gMikg
PyA5IDogaXJxKTsKfQoKZXh0ZXJuIHZvaWQgZGlzYWJsZV9pcnEodW5zaWduZWQgaW50KTsKZXh0
ZXJuIHZvaWQgZGlzYWJsZV9pcnFfbm9zeW5jKHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIGVu
YWJsZV9pcnEodW5zaWduZWQgaW50KTsKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0z
LjAuMi9pbmNsdWRlL2xpbnV4L2lycS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvaXJxLmgiIDIKIyAzOSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lycS5oIgpzdHJ1Y3QgaHdfaW50ZXJydXB0
X3R5cGUgewogICAgICAgIGNvbnN0IGNoYXIgKiB0eXBlbmFtZTsKICAgICAgICB1bnNpZ25lZCBp
bnQgKCpzdGFydHVwKSh1bnNpZ25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqc2h1dGRvd24p
KHVuc2lnbmVkIGludCBpcnEpOwogICAgICAgIHZvaWQgKCplbmFibGUpKHVuc2lnbmVkIGludCBp
cnEpOwogICAgICAgIHZvaWQgKCpkaXNhYmxlKSh1bnNpZ25lZCBpbnQgaXJxKTsKICAgICAgICB2
b2lkICgqYWNrKSh1bnNpZ25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqZW5kKSh1bnNpZ25l
ZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqc2V0X2FmZmluaXR5KSh1bnNpZ25lZCBpbnQgaXJx
LCB1bnNpZ25lZCBsb25nIG1hc2spOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5
cGUgaHdfaXJxX2NvbnRyb2xsZXI7CiMgNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9pcnEuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk
IGludCBzdGF0dXM7CiAgICAgICAgaHdfaXJxX2NvbnRyb2xsZXIgKmhhbmRsZXI7CiAgICAgICAg
c3RydWN0IGlycWFjdGlvbiAqYWN0aW9uOwogICAgICAgIHVuc2lnbmVkIGludCBkZXB0aDsKICAg
ICAgICBzcGlubG9ja190IGxvY2s7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwg
KCg2KSkpKSkpIGlycV9kZXNjX3Q7CgpleHRlcm4gaXJxX2Rlc2NfdCBpcnFfZGVzYyBbMjI0XTsK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9od19pcnEu
aCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL2h3
X2lycS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1
ZGUvYXNtL2h3X2lycS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvYXNtL2h3X2lycS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2FzbS9pcnEuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvYXNtL2h3X2lycS5oIiAyCiMgNjEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vaHdfaXJxLmgiCmV4dGVybiBpbnQgaXJxX3ZlY3Rv
clsyMjRdOwojIDcxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNt
L2h3X2lycS5oIgpleHRlcm4gdm9pZCBtYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJu
IHZvaWQgdW5tYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIHZvaWQgZGlzYWJsZV84
MjU5QV9pcnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIGVuYWJsZV84MjU5QV9pcnEo
dW5zaWduZWQgaW50IGlycSk7CmV4dGVybiBpbnQgaTgyNTlBX2lycV9wZW5kaW5nKHVuc2lnbmVk
IGludCBpcnEpOwpleHRlcm4gdm9pZCBtYWtlXzgyNTlBX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsK
ZXh0ZXJuIHZvaWQgaW5pdF84MjU5QShpbnQgYWVvaSk7CmV4dGVybiB2b2lkIHNlbmRfSVBJX3Nl
bGYoaW50IHZlY3RvcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBp
bml0X1ZJU1dTX0FQSUNfaXJxcyh2b2lkKTsKZXh0ZXJuIHZvaWQgc2V0dXBfSU9fQVBJQyh2b2lk
KTsKZXh0ZXJuIHZvaWQgZGlzYWJsZV9JT19BUElDKHZvaWQpOwpleHRlcm4gdm9pZCBwcmludF9J
T19BUElDKHZvaWQpOwpleHRlcm4gaW50IElPX0FQSUNfZ2V0X1BDSV9pcnFfdmVjdG9yKGludCBi
dXMsIGludCBzbG90LCBpbnQgZm4pOwpleHRlcm4gdm9pZCBzZW5kX0lQSShpbnQgZGVzdCwgaW50
IHZlY3Rvcik7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpb19hcGljX2lycXM7CgpleHRlcm4gYXRv
bWljX3QgaXJxX2Vycl9jb3VudDsKZXh0ZXJuIGF0b21pY190IGlycV9taXNfY291bnQ7CgpleHRl
cm4gY2hhciBfc3RleHQsIF9ldGV4dDsKIyAxODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9hc20vaHdfaXJxLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2ZfY3B1
X21hc2s7CmV4dGVybiB1bnNpZ25lZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7CgoKCgoKc3Rh
dGljIGlubGluZSB2b2lkIHg4Nl9kb19wcm9maWxlICh1bnNpZ25lZCBsb25nIGVpcCkKewogICAg
ICAgIGlmICghcHJvZl9idWZmZXIpCiAgICAgICAgICAgICAgICByZXR1cm47CgoKCgoKICAgICAg
ICBpZiAoISgoMTw8MCkgJiBwcm9mX2NwdV9tYXNrKSkKICAgICAgICAgICAgICAgIHJldHVybjsK
CiAgICAgICAgZWlwIC09ICh1bnNpZ25lZCBsb25nKSAmX3N0ZXh0OwogICAgICAgIGVpcCA+Pj0g
cHJvZl9zaGlmdDsKCgoKCgogICAgICAgIGlmIChlaXAgPiBwcm9mX2xlbi0xKQogICAgICAgICAg
ICAgICAgZWlwID0gcHJvZl9sZW4tMTsKICAgICAgICBhdG9taWNfaW5jKChhdG9taWNfdCAqKSZw
cm9mX2J1ZmZlcltlaXBdKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGh3X3Jlc2VuZF9p
cnEoc3RydWN0IGh3X2ludGVycnVwdF90eXBlICpoLCB1bnNpZ25lZCBpbnQgaSkge30KIyA3MCAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lycS5oIiAyCgpl
eHRlcm4gaW50IGhhbmRsZV9JUlFfZXZlbnQodW5zaWduZWQgaW50LCBzdHJ1Y3QgcHRfcmVncyAq
LCBzdHJ1Y3QgaXJxYWN0aW9uICopOwpleHRlcm4gaW50IHNldHVwX2lycSh1bnNpZ25lZCBpbnQg
LCBzdHJ1Y3QgaXJxYWN0aW9uICogKTsKCmV4dGVybiBod19pcnFfY29udHJvbGxlciBub19pcnFf
dHlwZTsKZXh0ZXJuIHZvaWQgbm9fYWN0aW9uKGludCBjcGwsIHZvaWQgKmRldl9pZCwgc3RydWN0
IHB0X3JlZ3MgKnJlZ3MpOwojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9hc20vaGFyZGlycS5oIiAyCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk
IGludCBfX3NvZnRpcnFfcGVuZGluZzsKICAgICAgICB1bnNpZ25lZCBpbnQgX19sb2NhbF9pcnFf
Y291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IF9fbG9jYWxfYmhfY291bnQ7CiAgICAgICAgdW5z
aWduZWQgaW50IF9fc3lzY2FsbF9jb3VudDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBf
X2tzb2Z0aXJxZF90YXNrOwogICAgICAgIHVuc2lnbmVkIGludCBfX25taV9jb3VudDsKfSBfX2F0
dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoKDYpKSkpKSkgaXJxX2NwdXN0YXRfdDsKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lycV9jcHVz
dGF0LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xp
bnV4L2lycV9jcHVzdGF0LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9pcnFfY3B1c3RhdC5oIiAyCgoKCgoKCgpleHRlcm4gaXJxX2Nw
dXN0YXRfdCBpcnFfc3RhdFtdOwojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgojIDQ2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3NvZnRpcnEuaCIgMQoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyA1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3NvZnRpcnEuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vaGFyZGlycS5oIiAx
CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS9zb2Z0aXJx
LmgiIDIKIyA0NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4
L2ludGVycnVwdC5oIiAyCiMgNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZW51bQp7CiAgICAgICAgSElfU09GVElSUT0wLAogICAg
ICAgIE5FVF9UWF9TT0ZUSVJRLAogICAgICAgIE5FVF9SWF9TT0ZUSVJRLAogICAgICAgIFRBU0tM
RVRfU09GVElSUQp9OwoKCgoKCnN0cnVjdCBzb2Z0aXJxX2FjdGlvbgp7CiAgICAgICAgdm9pZCAo
KmFjdGlvbikoc3RydWN0IHNvZnRpcnFfYWN0aW9uICopOwogICAgICAgIHZvaWQgKmRhdGE7Cn07
CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgZG9fc29mdGlycSh2b2lkKTsKZXh0
ZXJuIHZvaWQgb3Blbl9zb2Z0aXJxKGludCBuciwgdm9pZCAoKmFjdGlvbikoc3RydWN0IHNvZnRp
cnFfYWN0aW9uKiksIHZvaWQgKmRhdGEpOwpleHRlcm4gdm9pZCBzb2Z0aXJxX2luaXQodm9pZCk7
CgpleHRlcm4gdm9pZCBjcHVfcmFpc2Vfc29mdGlycSh1bnNpZ25lZCBpbnQgY3B1LCB1bnNpZ25l
ZCBpbnQgbnIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgcmFpc2Vf
c29mdGlycSh1bnNpZ25lZCBpbnQgbnIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyAx
MDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pbnRlcnJ1
cHQuaCIKc3RydWN0IHRhc2tsZXRfc3RydWN0CnsKICAgICAgICBzdHJ1Y3QgdGFza2xldF9zdHJ1
Y3QgKm5leHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGF0ZTsKICAgICAgICBhdG9taWNfdCBj
b3VudDsKICAgICAgICB2b2lkICgqZnVuYykodW5zaWduZWQgbG9uZyk7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBkYXRhOwp9OwojIDExOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIgplbnVtCnsKICAgICAgICBUQVNLTEVUX1NUQVRFX1ND
SEVELAogICAgICAgIFRBU0tMRVRfU1RBVEVfUlVOCn07CgpzdHJ1Y3QgdGFza2xldF9oZWFkCnsK
ICAgICAgICBzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKmxpc3Q7Cn0gX19hdHRyaWJ1dGVfXyAoKF9f
YWxpZ25lZF9fKCgxIDw8ICgoNikpKSkpKTsKCmV4dGVybiBzdHJ1Y3QgdGFza2xldF9oZWFkIHRh
c2tsZXRfdmVjWzFdOwpleHRlcm4gc3RydWN0IHRhc2tsZXRfaGVhZCB0YXNrbGV0X2hpX3ZlY1sx
XTsKIyAxNTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9p
bnRlcnJ1cHQuaCIKZXh0ZXJuIHZvaWQgX190YXNrbGV0X3NjaGVkdWxlKHN0cnVjdCB0YXNrbGV0
X3N0cnVjdCAqdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKc3RhdGljIGlubGluZSB2
b2lkIHRhc2tsZXRfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAg
aWYgKCF0ZXN0X2FuZF9zZXRfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSkpCiAg
ICAgICAgICAgICAgICBfX3Rhc2tsZXRfc2NoZWR1bGUodCk7Cn0KCmV4dGVybiB2b2lkIF9fdGFz
a2xldF9oaV9zY2hlZHVsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2hpX3NjaGVkdWxlKHN0
cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdChU
QVNLTEVUX1NUQVRFX1NDSEVELCAmdC0+c3RhdGUpKQogICAgICAgICAgICAgICAgX190YXNrbGV0
X2hpX3NjaGVkdWxlKHQpOwp9CgoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfZGlzYWJsZV9u
b3N5bmMoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgYXRvbWljX2luYygmdC0+
Y291bnQpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2Rpc2FibGUoc3RydWN0IHRhc2tsZXRfc3RydWN0
ICp0KQp7CiAgICAgICAgdGFza2xldF9kaXNhYmxlX25vc3luYyh0KTsKICAgICAgICBkbyB7IH0g
d2hpbGUgKDApOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2VuYWJsZShzdHJ1Y3QgdGFza2xldF9zdHJ1
Y3QgKnQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwog
ICAgICAgIGF0b21pY19kZWMoJnQtPmNvdW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHRhc2ts
ZXRfaGlfZW5hYmxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgYXRvbWljX2RlYygmdC0+Y291
bnQpOwp9CgpleHRlcm4gdm9pZCB0YXNrbGV0X2tpbGwoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0
KTsKZXh0ZXJuIHZvaWQgdGFza2xldF9pbml0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpmdW5jKSh1bnNpZ25lZCBsb25nKSwgdW5zaWdu
ZWQgbG9uZyBkYXRhKTsKIyAyMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5j
bHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X3N0cnVjdCBiaF90
YXNrX3ZlY1tdOwoKCmV4dGVybiBzcGlubG9ja190IGdsb2JhbF9iaF9sb2NrOwoKc3RhdGljIGlu
bGluZSB2b2lkIG1hcmtfYmgoaW50IG5yKQp7CiAgICAgICAgdGFza2xldF9oaV9zY2hlZHVsZShi
aF90YXNrX3ZlYytucik7Cn0KCmV4dGVybiB2b2lkIGluaXRfYmgoaW50IG5yLCB2b2lkICgqcm91
dGluZSkodm9pZCkpOwpleHRlcm4gdm9pZCByZW1vdmVfYmgoaW50IG5yKTsKIyAyNjMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgcHJvYmVfaXJxX29uKHZvaWQpOwpleHRlcm4gaW50IHByb2JlX2ly
cV9vZmYodW5zaWduZWQgbG9uZyk7CmV4dGVybiB1bnNpZ25lZCBpbnQgcHJvYmVfaXJxX21hc2so
dW5zaWduZWQgbG9uZyk7CiMgNDI1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMQojIDEzICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIgMgoK
c3RydWN0IG5vdGlmaWVyX2Jsb2NrCnsKICAgICAgICBpbnQgKCpub3RpZmllcl9jYWxsKShzdHJ1
Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CiAgICAgICAg
c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuZXh0OwogICAgICAgIGludCBwcmlvcml0eTsKfTsKCgoK
CmV4dGVybiBpbnQgbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2Nr
ICoqbGlzdCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKTsKZXh0ZXJuIGludCBub3RpZmllcl9j
aGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqKm5sLCBzdHJ1Y3Qgbm90aWZp
ZXJfYmxvY2sgKm4pOwpleHRlcm4gaW50IG5vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IG5vdGlm
aWVyX2Jsb2NrICoqbiwgdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYpOwojIDQyNiAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIiAyCgpl
eHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgbG9vcGJhY2tfZGV2OwpleHRlcm4gc3RydWN0IG5ldF9k
ZXZpY2UgKmRldl9iYXNlOwpleHRlcm4gcndsb2NrX3QgZGV2X2Jhc2VfbG9jazsKCmV4dGVybiBp
bnQgbmV0ZGV2X2Jvb3Rfc2V0dXBfYWRkKGNoYXIgKm5hbWUsIHN0cnVjdCBpZm1hcCAqbWFwKTsK
ZXh0ZXJuIGludCBuZXRkZXZfYm9vdF9zZXR1cF9jaGVjayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KTsKZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfZ2V0Ynlod2FkZHIodW5zaWduZWQgc2hv
cnQgdHlwZSwgY2hhciAqaHdhZGRyKTsKZXh0ZXJuIHZvaWQgZGV2X2FkZF9wYWNrKHN0cnVjdCBw
YWNrZXRfdHlwZSAqcHQpOwpleHRlcm4gdm9pZCBkZXZfcmVtb3ZlX3BhY2soc3RydWN0IHBhY2tl
dF90eXBlICpwdCk7CmV4dGVybiBpbnQgZGV2X2dldChjb25zdCBjaGFyICpuYW1lKTsKZXh0ZXJu
IHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfZ2V0X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSk7CmV4
dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqX19kZXZfZ2V0X2J5X25hbWUoY29uc3QgY2hhciAqbmFt
ZSk7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2FsbG9jKGNvbnN0IGNoYXIgKm5hbWUs
IGludCAqZXJyKTsKZXh0ZXJuIGludCBkZXZfYWxsb2NfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2LCBjb25zdCBjaGFyICpuYW1lKTsKZXh0ZXJuIGludCBkZXZfb3BlbihzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KTsKZXh0ZXJuIGludCBkZXZfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7
CmV4dGVybiBpbnQgZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBp
bnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gaW50
IHVucmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gaW50
IHJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsK
ZXh0ZXJuIGludCB1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJf
YmxvY2sgKm5iKTsKZXh0ZXJuIGludCBkZXZfbmV3X2luZGV4KHZvaWQpOwpleHRlcm4gc3RydWN0
IG5ldF9kZXZpY2UgKmRldl9nZXRfYnlfaW5kZXgoaW50IGlmaW5kZXgpOwpleHRlcm4gc3RydWN0
IG5ldF9kZXZpY2UgKl9fZGV2X2dldF9ieV9pbmRleChpbnQgaWZpbmRleCk7CmV4dGVybiBpbnQg
ZGV2X3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7Cgp0eXBlZGVmIGludCBnaWZjb25m
X2Z1bmNfdChzdHJ1Y3QgbmV0X2RldmljZSAqIGRldiwgY2hhciAqIGJ1ZnB0ciwgaW50IGxlbik7
CmV4dGVybiBpbnQgcmVnaXN0ZXJfZ2lmY29uZih1bnNpZ25lZCBpbnQgZmFtaWx5LCBnaWZjb25m
X2Z1bmNfdCAqIGdpZmNvbmYpOwpzdGF0aWMgaW5saW5lIGludCB1bnJlZ2lzdGVyX2dpZmNvbmYo
dW5zaWduZWQgaW50IGZhbWlseSkKewogICAgICAgIHJldHVybiByZWdpc3Rlcl9naWZjb25mKGZh
bWlseSwgMCk7Cn0KCgoKCgoKc3RydWN0IHNvZnRuZXRfZGF0YQp7CiAgICAgICAgaW50IHRocm90
dGxlOwogICAgICAgIGludCBjbmdfbGV2ZWw7CiAgICAgICAgaW50IGF2Z19ibG9nOwogICAgICAg
IHN0cnVjdCBza19idWZmX2hlYWQgaW5wdXRfcGt0X3F1ZXVlOwogICAgICAgIHN0cnVjdCBuZXRf
ZGV2aWNlICpvdXRwdXRfcXVldWU7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKmNvbXBsZXRpb25f
cXVldWU7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg2KSkpKSkpOwoKCmV4
dGVybiBzdHJ1Y3Qgc29mdG5ldF9kYXRhIHNvZnRuZXRfZGF0YVsxXTsKCgoKc3RhdGljIGlubGlu
ZSB2b2lkIF9fbmV0aWZfc2NoZWR1bGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAg
IGlmICghdGVzdF9hbmRfc2V0X2JpdChfX0xJTktfU1RBVEVfU0NIRUQsICZkZXYtPnN0YXRlKSkg
ewogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICAgICAgICAgIGlu
dCBjcHUgPSAwOwoKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwg
OyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7CiAgICAgICAgICAgICAg
ICBkZXYtPm5leHRfc2NoZWQgPSBzb2Z0bmV0X2RhdGFbY3B1XS5vdXRwdXRfcXVldWU7CiAgICAg
ICAgICAgICAgICBzb2Z0bmV0X2RhdGFbY3B1XS5vdXRwdXRfcXVldWUgPSBkZXY7CiAgICAgICAg
ICAgICAgICBjcHVfcmFpc2Vfc29mdGlycShjcHUsIE5FVF9UWF9TT0ZUSVJRKTsKICAgICAgICAg
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxh
Z3MpOiJtZW1vcnkiLCAiY2MiKTsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRp
Zl9zY2hlZHVsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgaWYgKCEoX19idWls
dGluX2NvbnN0YW50X3AoX19MSU5LX1NUQVRFX1hPRkYpID8gY29uc3RhbnRfdGVzdF9iaXQoKF9f
TElOS19TVEFURV9YT0ZGKSwoJmRldi0+c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KChfX0xJ
TktfU1RBVEVfWE9GRiksKCZkZXYtPnN0YXRlKSkpKQogICAgICAgICAgICAgICAgX19uZXRpZl9z
Y2hlZHVsZShkZXYpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfc3RhcnRfcXVldWUoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGNsZWFyX2JpdChfX0xJTktfU1RBVEVfWE9G
RiwgJmRldi0+c3RhdGUpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfd2FrZV9xdWV1ZShz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChf
X0xJTktfU1RBVEVfWE9GRiwgJmRldi0+c3RhdGUpKQogICAgICAgICAgICAgICAgX19uZXRpZl9z
Y2hlZHVsZShkZXYpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfc3RvcF9xdWV1ZShzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc2V0X2JpdChfX0xJTktfU1RBVEVfWE9GRiwg
JmRldi0+c3RhdGUpOwp9CgpzdGF0aWMgaW5saW5lIGludCBuZXRpZl9xdWV1ZV9zdG9wcGVkKHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICByZXR1cm4gKF9fYnVpbHRpbl9jb25zdGFu
dF9wKF9fTElOS19TVEFURV9YT0ZGKSA/IGNvbnN0YW50X3Rlc3RfYml0KChfX0xJTktfU1RBVEVf
WE9GRiksKCZkZXYtPnN0YXRlKSkgOiB2YXJpYWJsZV90ZXN0X2JpdCgoX19MSU5LX1NUQVRFX1hP
RkYpLCgmZGV2LT5zdGF0ZSkpKTsKfQoKc3RhdGljIGlubGluZSBpbnQgbmV0aWZfcnVubmluZyhz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgcmV0dXJuIChfX2J1aWx0aW5fY29uc3Rh
bnRfcChfX0xJTktfU1RBVEVfU1RBUlQpID8gY29uc3RhbnRfdGVzdF9iaXQoKF9fTElOS19TVEFU
RV9TVEFSVCksKCZkZXYtPnN0YXRlKSkgOiB2YXJpYWJsZV90ZXN0X2JpdCgoX19MSU5LX1NUQVRF
X1NUQVJUKSwoJmRldi0+c3RhdGUpKSk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfa2Zy
ZWVfc2tiX2lycShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNf
YW5kX3Rlc3QoJnNrYi0+dXNlcnMpKSB7CiAgICAgICAgICAgICAgICBpbnQgY3B1ID0wOwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1l
bW9yeSIpOwogICAgICAgICAgICAgICAgc2tiLT5uZXh0ID0gc29mdG5ldF9kYXRhW2NwdV0uY29t
cGxldGlvbl9xdWV1ZTsKICAgICAgICAgICAgICAgIHNvZnRuZXRfZGF0YVtjcHVdLmNvbXBsZXRp
b25fcXVldWUgPSBza2I7CiAgICAgICAgICAgICAgICBjcHVfcmFpc2Vfc29mdGlycShjcHUsIE5F
VF9UWF9TT0ZUSVJRKTsKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
bCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsKICAgICAgICB9Cn0K
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfa2ZyZWVfc2tiX2FueShzdHJ1Y3Qgc2tfYnVmZiAq
c2tiKQp7CiAgICAgICAgaWYgKCgoKHZvaWQpKCgwKSksIGlycV9zdGF0WzBdLl9fbG9jYWxfaXJx
X2NvdW50KSAhPSAwKSkKICAgICAgICAgICAgICAgIGRldl9rZnJlZV9za2JfaXJxKHNrYik7CiAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAga2ZyZWVfc2tiKHNrYik7Cn0KCmV4dGVybiB2b2lk
IG5ldF9jYWxsX3J4X2F0b21pYyh2b2lkICgqZm4pKHZvaWQpKTsKCmV4dGVybiBpbnQgbmV0aWZf
cngoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBpbnQgZGV2X2lvY3RsKHVuc2lnbmVkIGlu
dCBjbWQsIHZvaWQgKik7CmV4dGVybiBpbnQgZGV2X2NoYW5nZV9mbGFncyhzdHJ1Y3QgbmV0X2Rl
dmljZSAqLCB1bnNpZ25lZCk7CmV4dGVybiB2b2lkIGRldl9xdWV1ZV94bWl0X25pdChzdHJ1Y3Qg
c2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCmV4dGVybiB2b2lkIGRldl9p
bml0KHZvaWQpOwoKZXh0ZXJuIGludCBuZXRkZXZfbml0OwoKCgoKc3RhdGljIGlubGluZSBpbnQg
bmV0aWZfcnhfbmkoc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgaW50IGVyciA9IG5ldGlm
X3J4KHNrYik7CiAgICAgICBpZiAoKCh2b2lkKSgoMCkpLCBpcnFfc3RhdFswXS5fX3NvZnRpcnFf
cGVuZGluZykpCiAgICAgICAgICAgICAgIGRvX3NvZnRpcnEoKTsKICAgICAgIHJldHVybiBlcnI7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfaW5pdF9idWZmZXJzKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpCnsKCn0KCmV4dGVybiBpbnQgbmV0ZGV2X2ZpbmlzaF91bnJlZ2lzdGVyKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYpOwoKc3RhdGljIGlubGluZSB2b2lkIGRldl9wdXQoc3RydWN0IG5ldF9k
ZXZpY2UgKmRldikKewogICAgICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZkZXYtPnJlZmNu
dCkpCiAgICAgICAgICAgICAgICBuZXRkZXZfZmluaXNoX3VucmVnaXN0ZXIoZGV2KTsKfQojIDU5
NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25ldGRldmlj
ZS5oIgpzdGF0aWMgaW5saW5lIGludCBuZXRpZl9jYXJyaWVyX29rKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpCnsKICAgICAgICByZXR1cm4gIShfX2J1aWx0aW5fY29uc3RhbnRfcChfX0xJTktfU1RB
VEVfTk9DQVJSSUVSKSA/IGNvbnN0YW50X3Rlc3RfYml0KChfX0xJTktfU1RBVEVfTk9DQVJSSUVS
KSwoJmRldi0+c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KChfX0xJTktfU1RBVEVfTk9DQVJS
SUVSKSwoJmRldi0+c3RhdGUpKSk7Cn0KCmV4dGVybiB2b2lkIF9fbmV0ZGV2X3dhdGNoZG9nX3Vw
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX2NhcnJp
ZXJfb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGNsZWFyX2JpdChfX0xJTktf
U1RBVEVfTk9DQVJSSUVSLCAmZGV2LT5zdGF0ZSk7CiAgICAgICAgaWYgKG5ldGlmX3J1bm5pbmco
ZGV2KSkKICAgICAgICAgICAgICAgIF9fbmV0ZGV2X3dhdGNoZG9nX3VwKGRldik7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBuZXRpZl9jYXJyaWVyX29mZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7
CiAgICAgICAgc2V0X2JpdChfX0xJTktfU1RBVEVfTk9DQVJSSUVSLCAmZGV2LT5zdGF0ZSk7Cn0K
CgpzdGF0aWMgaW5saW5lIGludCBuZXRpZl9kZXZpY2VfcHJlc2VudChzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KQp7CiAgICAgICAgcmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcChfX0xJTktfU1RB
VEVfUFJFU0VOVCkgPyBjb25zdGFudF90ZXN0X2JpdCgoX19MSU5LX1NUQVRFX1BSRVNFTlQpLCgm
ZGV2LT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKF9fTElOS19TVEFURV9QUkVTRU5UKSwo
JmRldi0+c3RhdGUpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9kZXZpY2VfZGV0YWNo
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0
KF9fTElOS19TVEFURV9QUkVTRU5ULCAmZGV2LT5zdGF0ZSkgJiYKICAgICAgICAgICAgbmV0aWZf
cnVubmluZyhkZXYpKSB7CiAgICAgICAgICAgICAgICBuZXRpZl9zdG9wX3F1ZXVlKGRldik7CiAg
ICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfZGV2aWNlX2F0dGFjaChzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KF9fTElOS19T
VEFURV9QUkVTRU5ULCAmZGV2LT5zdGF0ZSkgJiYKICAgICAgICAgICAgbmV0aWZfcnVubmluZyhk
ZXYpKSB7CiAgICAgICAgICAgICAgICBuZXRpZl93YWtlX3F1ZXVlKGRldik7CiAgICAgICAgICAg
ICAgICBfX25ldGRldl93YXRjaGRvZ191cChkZXYpOwogICAgICAgIH0KfQoKCgoKCgplbnVtIHsK
ICAgICAgICBORVRJRl9NU0dfRFJWID0gMHgwMDAxLAogICAgICAgIE5FVElGX01TR19QUk9CRSA9
IDB4MDAwMiwKICAgICAgICBORVRJRl9NU0dfTElOSyA9IDB4MDAwNCwKICAgICAgICBORVRJRl9N
U0dfVElNRVIgPSAweDAwMDgsCiAgICAgICAgTkVUSUZfTVNHX0lGRE9XTiA9IDB4MDAxMCwKICAg
ICAgICBORVRJRl9NU0dfSUZVUCA9IDB4MDAyMCwKICAgICAgICBORVRJRl9NU0dfUlhfRVJSID0g
MHgwMDQwLAogICAgICAgIE5FVElGX01TR19UWF9FUlIgPSAweDAwODAsCiAgICAgICAgTkVUSUZf
TVNHX1RYX1FVRVVFRCA9IDB4MDEwMCwKICAgICAgICBORVRJRl9NU0dfSU5UUiA9IDB4MDIwMCwK
ICAgICAgICBORVRJRl9NU0dfVFhfRE9ORSA9IDB4MDQwMCwKICAgICAgICBORVRJRl9NU0dfUlhf
U1RBVFVTID0gMHgwODAwLAogICAgICAgIE5FVElGX01TR19QS1REQVRBID0gMHgxMDAwLAp9Owoj
IDY3NiAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25ldGRl
dmljZS5oIgpleHRlcm4gdm9pZCBldGhlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsK
ZXh0ZXJuIHZvaWQgZmRkaV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJuIHZv
aWQgdHJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGZjX3NldHVw
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBmY19mcmVlZGV2KHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYpOwoKZXh0ZXJuIGludCByZWdpc3Rlcl9uZXRkZXYoc3RydWN0IG5ldF9k
ZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2
aWNlICpkZXYpOwoKZXh0ZXJuIHZvaWQgZGV2X21jX3VwbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KTsKZXh0ZXJuIGludCBkZXZfbWNfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZv
aWQgKmFkZHIsIGludCBhbGVuLCBpbnQgYWxsKTsKZXh0ZXJuIGludCBkZXZfbWNfYWRkKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIsIGludCBhbGVuLCBpbnQgbmV3b25seSk7CmV4
dGVybiB2b2lkIGRldl9tY19kaXNjYXJkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4g
dm9pZCBkZXZfc2V0X3Byb21pc2N1aXR5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpbmMp
OwpleHRlcm4gdm9pZCBkZXZfc2V0X2FsbG11bHRpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGlu
dCBpbmMpOwpleHRlcm4gdm9pZCBuZXRkZXZfc3RhdGVfY2hhbmdlKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpOwoKZXh0ZXJuIHZvaWQgZGV2X2xvYWQoY29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiB2
b2lkIGRldl9tY2FzdF9pbml0KHZvaWQpOwpleHRlcm4gaW50IG5ldGRldl9yZWdpc3Rlcl9mYyhz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICgqc3RpbXVsKShzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KSk7CmV4dGVybiB2b2lkIG5ldGRldl91bnJlZ2lzdGVyX2ZjKGludCBiaXQpOwpleHRlcm4g
aW50IG5ldGRldl9tYXhfYmFja2xvZzsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbmV0ZGV2X2ZjX3hv
ZmY7CmV4dGVybiBhdG9taWNfdCBuZXRkZXZfZHJvcHBpbmc7CmV4dGVybiBpbnQgbmV0ZGV2X3Nl
dF9tYXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKm1hc3Rl
cik7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIHNrYl9jaGVja3N1bV9oZWxwKHN0cnVjdCBza19i
dWZmICpza2IpOwojIDE1MiAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
LWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmgiIDEKIyAyNyAiL3Vzci9zcmMv
bGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmgi
IDEKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2V0
aGVyZGV2aWNlLmgiIDIKCgpleHRlcm4gaW50IGV0aF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNr
Yiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlLCB2b2lkICpkYWRkciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkICpzYWRkciwgdW5zaWduZWQgbGVuKTsKZXh0ZXJuIGludCBl
dGhfcmVidWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiB1bnNpZ25lZCBz
aG9ydCBldGhfdHlwZV90cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KTsKZXh0ZXJuIHZvaWQgZXRoX2hlYWRlcl9jYWNoZV91cGRhdGUoc3RydWN0IGhoX2Nh
Y2hlICpoaCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGhhZGRyKTsKZXh0ZXJuIGlu
dCBldGhfaGVhZGVyX2NhY2hlKHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoaF9jYWNoZSAqaGgpOwpleHRlcm4g
aW50IGV0aF9oZWFkZXJfcGFyc2Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpoYWRkcik7CmV4dGVybiBz
dHJ1Y3QgbmV0X2RldmljZSAqaW5pdF9ldGhlcmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBp
bnQgc2l6ZW9mX3ByaXYpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX2V0aGVyZGV2
KGludCBzaXplb2ZfcHJpdik7CgpzdGF0aWMgaW5saW5lIHZvaWQgZXRoX2NvcHlfYW5kX3N1bSAo
c3RydWN0IHNrX2J1ZmYgKmRlc3QsIHVuc2lnbmVkIGNoYXIgKnNyYywgaW50IGxlbiwgaW50IGJh
c2UpCnsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AobGVuKSA/IF9fY29uc3RhbnRfbWVt
Y3B5M2QoKGRlc3QtPmRhdGEpLChzcmMpLChsZW4pKSA6IF9fbWVtY3B5M2QoKGRlc3QtPmRhdGEp
LChzcmMpLChsZW4pKSk7Cn0KIyA1OSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmgiCnN0YXRpYyBpbmxpbmUgaW50IGlzX3ZhbGlkX2V0
aGVyX2FkZHIoIHU4ICphZGRyICkKewogICAgICAgIGNvbnN0IGNoYXIgemFkZHJbNl0gPSB7MCx9
OwoKICAgICAgICByZXR1cm4gIShhZGRyWzBdJjEpICYmIF9fYnVpbHRpbl9tZW1jbXAoIGFkZHIs
IHphZGRyLCA2KTsKfQojIDE1MyAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25ldGxpbmsuaCIgMQojIDE2
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbmV0bGluay5o
IgpzdHJ1Y3Qgc29ja2FkZHJfbmwKewogICAgICAgIHNhX2ZhbWlseV90IG5sX2ZhbWlseTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBubF9wYWQ7CiAgICAgICAgX191MzIgbmxfcGlkOwogICAgICAg
IF9fdTMyIG5sX2dyb3VwczsKfTsKCnN0cnVjdCBubG1zZ2hkcgp7CiAgICAgICAgX191MzIgbmxt
c2dfbGVuOwogICAgICAgIF9fdTE2IG5sbXNnX3R5cGU7CiAgICAgICAgX191MTYgbmxtc2dfZmxh
Z3M7CiAgICAgICAgX191MzIgbmxtc2dfc2VxOwogICAgICAgIF9fdTMyIG5sbXNnX3BpZDsKfTsK
IyA3NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L25ldGxp
bmsuaCIKc3RydWN0IG5sbXNnZXJyCnsKICAgICAgICBpbnQgZXJyb3I7CiAgICAgICAgc3RydWN0
IG5sbXNnaGRyIG1zZzsKfTsKCgoKCgpzdHJ1Y3QgbmV0bGlua19za2JfcGFybXMKewogICAgICAg
IHN0cnVjdCB1Y3JlZCBjcmVkczsKICAgICAgICBfX3UzMiBwaWQ7CiAgICAgICAgX191MzIgZ3Jv
dXBzOwogICAgICAgIF9fdTMyIGRzdF9waWQ7CiAgICAgICAgX191MzIgZHN0X2dyb3VwczsKICAg
ICAgICBrZXJuZWxfY2FwX3QgZWZmX2NhcDsKfTsKCgoKCgpleHRlcm4gaW50IG5ldGxpbmtfYXR0
YWNoKGludCB1bml0LCBpbnQgKCpmdW5jdGlvbikoaW50LHN0cnVjdCBza19idWZmICpza2IpKTsK
ZXh0ZXJuIHZvaWQgbmV0bGlua19kZXRhY2goaW50IHVuaXQpOwpleHRlcm4gaW50IG5ldGxpbmtf
cG9zdChpbnQgdW5pdCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBpbnQgaW5pdF9uZXRs
aW5rKHZvaWQpOwpleHRlcm4gc3RydWN0IHNvY2sgKm5ldGxpbmtfa2VybmVsX2NyZWF0ZShpbnQg
dW5pdCwgdm9pZCAoKmlucHV0KShzdHJ1Y3Qgc29jayAqc2ssIGludCBsZW4pKTsKZXh0ZXJuIHZv
aWQgbmV0bGlua19hY2soc3RydWN0IHNrX2J1ZmYgKmluX3NrYiwgc3RydWN0IG5sbXNnaGRyICpu
bGgsIGludCBlcnIpOwpleHRlcm4gaW50IG5ldGxpbmtfdW5pY2FzdChzdHJ1Y3Qgc29jayAqc3Nr
LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX3UzMiBwaWQsIGludCBub25ibG9jayk7CmV4dGVybiB2
b2lkIG5ldGxpbmtfYnJvYWRjYXN0KHN0cnVjdCBzb2NrICpzc2ssIHN0cnVjdCBza19idWZmICpz
a2IsIF9fdTMyIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZ3JvdXAs
IGludCBhbGxvY2F0aW9uKTsKZXh0ZXJuIHZvaWQgbmV0bGlua19zZXRfZXJyKHN0cnVjdCBzb2Nr
ICpzc2ssIF9fdTMyIHBpZCwgX191MzIgZ3JvdXAsIGludCBjb2RlKTsKIyAxMjAgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9uZXRsaW5rLmgiCnN0cnVjdCBu
ZXRsaW5rX2NhbGxiYWNrCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogICAgICAgIHN0
cnVjdCBubG1zZ2hkciAqbmxoOwogICAgICAgIGludCAoKmR1bXApKHN0cnVjdCBza19idWZmICog
c2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpOwogICAgICAgIGludCAoKmRvbmUpKHN0
cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBs
b25nIGFyZ3NbNF07Cn07CgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3Qgbmxtc2doZHIgKgpfX25s
bXNnX3B1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgcGlkLCB1MzIgc2VxLCBpbnQgdHlwZSwg
aW50IGxlbikKewogICAgICAgIHN0cnVjdCBubG1zZ2hkciAqbmxoOwogICAgICAgIGludCBzaXpl
ID0gKChsZW4pKyggKChzaXplb2Yoc3RydWN0IG5sbXNnaGRyKSkrNCAtMSkgJiB+KDQgLTEpICkp
OwoKICAgICAgICBubGggPSAoc3RydWN0IG5sbXNnaGRyKilza2JfcHV0KHNrYiwgKCAoKHNpemUp
KzQgLTEpICYgfig0IC0xKSApKTsKICAgICAgICBubGgtPm5sbXNnX3R5cGUgPSB0eXBlOwogICAg
ICAgIG5saC0+bmxtc2dfbGVuID0gc2l6ZTsKICAgICAgICBubGgtPm5sbXNnX2ZsYWdzID0gMDsK
ICAgICAgICBubGgtPm5sbXNnX3BpZCA9IHBpZDsKICAgICAgICBubGgtPm5sbXNnX3NlcSA9IHNl
cTsKICAgICAgICByZXR1cm4gbmxoOwp9CgoKCgoKZXh0ZXJuIGludCBuZXRsaW5rX2R1bXBfc3Rh
cnQoc3RydWN0IHNvY2sgKnNzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IG5sbXNnaGRyICpubGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCAoKmR1bXApKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5r
X2NhbGxiYWNrKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKmRvbmUpKHN0
cnVjdCBuZXRsaW5rX2NhbGxiYWNrKikpOwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2Mt
My4wLjIvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIgMgojIDU3ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBydGF0dHIK
ewogICAgICAgIHVuc2lnbmVkIHNob3J0IHJ0YV9sZW47CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
cnRhX3R5cGU7Cn07CiMgODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IHJ0bXNnCnsKICAgICAgICB1bnNpZ25lZCBjaGFy
IHJ0bV9mYW1pbHk7CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fZHN0X2xlbjsKICAgICAgICB1
bnNpZ25lZCBjaGFyIHJ0bV9zcmNfbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRtX3RvczsK
CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fdGFibGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBy
dG1fcHJvdG9jb2w7CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fc2NvcGU7CiAgICAgICAgdW5z
aWduZWQgY2hhciBydG1fdHlwZTsKCiAgICAgICAgdW5zaWduZWQgcnRtX2ZsYWdzOwp9OwoKCgpl
bnVtCnsKICAgICAgICBSVE5fVU5TUEVDLAogICAgICAgIFJUTl9VTklDQVNULAogICAgICAgIFJU
Tl9MT0NBTCwKICAgICAgICBSVE5fQlJPQURDQVNULAoKICAgICAgICBSVE5fQU5ZQ0FTVCwKCiAg
ICAgICAgUlROX01VTFRJQ0FTVCwKICAgICAgICBSVE5fQkxBQ0tIT0xFLAogICAgICAgIFJUTl9V
TlJFQUNIQUJMRSwKICAgICAgICBSVE5fUFJPSElCSVQsCiAgICAgICAgUlROX1RIUk9XLAogICAg
ICAgIFJUTl9OQVQsCiAgICAgICAgUlROX1hSRVNPTFZFLAp9OwojIDE1NSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgplbnVtIHJ0X3Nj
b3BlX3QKewogICAgICAgIFJUX1NDT1BFX1VOSVZFUlNFPTAsCgogICAgICAgIFJUX1NDT1BFX1NJ
VEU9MjAwLAogICAgICAgIFJUX1NDT1BFX0xJTks9MjUzLAogICAgICAgIFJUX1NDT1BFX0hPU1Q9
MjU0LAogICAgICAgIFJUX1NDT1BFX05PV0hFUkU9MjU1Cn07CiMgMTczICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCmVudW0gcnRfY2xh
c3NfdAp7CiAgICAgICAgUlRfVEFCTEVfVU5TUEVDPTAsCgogICAgICAgIFJUX1RBQkxFX0RFRkFV
TFQ9MjUzLAogICAgICAgIFJUX1RBQkxFX01BSU49MjU0LAogICAgICAgIFJUX1RBQkxFX0xPQ0FM
PTI1NQp9OwoKCgoKCgplbnVtIHJ0YXR0cl90eXBlX3QKewogICAgICAgIFJUQV9VTlNQRUMsCiAg
ICAgICAgUlRBX0RTVCwKICAgICAgICBSVEFfU1JDLAogICAgICAgIFJUQV9JSUYsCiAgICAgICAg
UlRBX09JRiwKICAgICAgICBSVEFfR0FURVdBWSwKICAgICAgICBSVEFfUFJJT1JJVFksCiAgICAg
ICAgUlRBX1BSRUZTUkMsCiAgICAgICAgUlRBX01FVFJJQ1MsCiAgICAgICAgUlRBX01VTFRJUEFU
SCwKICAgICAgICBSVEFfUFJPVE9JTkZPLAogICAgICAgIFJUQV9GTE9XLAogICAgICAgIFJUQV9D
QUNIRUlORk8KfTsKIyAyMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IHJ0bmV4dGhvcAp7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgcnRuaF9sZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBydG5oX2ZsYWdzOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgcnRuaF9ob3BzOwogICAgICAgIGludCBydG5oX2lmaW5kZXg7Cn07CiMg
MjQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcnRuZXRs
aW5rLmgiCnN0cnVjdCBydGFfY2FjaGVpbmZvCnsKICAgICAgICBfX3UzMiBydGFfY2xudHJlZjsK
ICAgICAgICBfX3UzMiBydGFfbGFzdHVzZTsKICAgICAgICBfX3MzMiBydGFfZXhwaXJlczsKICAg
ICAgICBfX3UzMiBydGFfZXJyb3I7CiAgICAgICAgX191MzIgcnRhX3VzZWQ7CgoKICAgICAgICBf
X3UzMiBydGFfaWQ7CiAgICAgICAgX191MzIgcnRhX3RzOwogICAgICAgIF9fdTMyIHJ0YV90c2Fn
ZTsKfTsKCgoKZW51bQp7CiAgICAgICAgUlRBWF9VTlNQRUMsCgogICAgICAgIFJUQVhfTE9DSywK
CiAgICAgICAgUlRBWF9NVFUsCgogICAgICAgIFJUQVhfV0lORE9XLAoKICAgICAgICBSVEFYX1JU
VCwKCiAgICAgICAgUlRBWF9SVFRWQVIsCgogICAgICAgIFJUQVhfU1NUSFJFU0gsCgogICAgICAg
IFJUQVhfQ1dORCwKCiAgICAgICAgUlRBWF9BRFZNU1MsCgogICAgICAgIFJUQVhfUkVPUkRFUklO
RywKCn07CiMgMjkzICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGlu
dXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBpZmFkZHJtc2cKewogICAgICAgIHVuc2lnbmVkIGNoYXIg
aWZhX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlmYV9wcmVmaXhsZW47CiAgICAgICAg
dW5zaWduZWQgY2hhciBpZmFfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBpZmFfc2NvcGU7
CiAgICAgICAgaW50IGlmYV9pbmRleDsKfTsKCmVudW0KewogICAgICAgIElGQV9VTlNQRUMsCiAg
ICAgICAgSUZBX0FERFJFU1MsCiAgICAgICAgSUZBX0xPQ0FMLAogICAgICAgIElGQV9MQUJFTCwK
ICAgICAgICBJRkFfQlJPQURDQVNULAogICAgICAgIElGQV9BTllDQVNULAogICAgICAgIElGQV9D
QUNIRUlORk8KfTsKIyAzMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IGlmYV9jYWNoZWluZm8KewogICAgICAgIF9fczMy
IGlmYV9wcmVmZXJlZDsKICAgICAgICBfX3MzMiBpZmFfdmFsaWQ7Cn07CiMgMzQ1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVj
dCBuZG1zZwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBuZG1fZmFtaWx5OwogICAgICAgIHVuc2ln
bmVkIGNoYXIgbmRtX3BhZDE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbmRtX3BhZDI7CiAgICAg
ICAgaW50IG5kbV9pZmluZGV4OwogICAgICAgIF9fdTE2IG5kbV9zdGF0ZTsKICAgICAgICBfX3U4
IG5kbV9mbGFnczsKICAgICAgICBfX3U4IG5kbV90eXBlOwp9OwoKZW51bQp7CiAgICAgICAgTkRB
X1VOU1BFQywKICAgICAgICBOREFfRFNULAogICAgICAgIE5EQV9MTEFERFIsCiAgICAgICAgTkRB
X0NBQ0hFSU5GTwp9OwojIDM5MyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgbmRhX2NhY2hlaW5mbwp7CiAgICAgICAgX191
MzIgbmRtX2NvbmZpcm1lZDsKICAgICAgICBfX3UzMiBuZG1fdXNlZDsKICAgICAgICBfX3UzMiBu
ZG1fdXBkYXRlZDsKICAgICAgICBfX3UzMiBuZG1fcmVmY250Owp9OwoKCgoKCnN0cnVjdCBydGdl
bm1zZwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBydGdlbl9mYW1pbHk7Cn07CiMgNDE5ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0
cnVjdCBpZmluZm9tc2cKewogICAgICAgIHVuc2lnbmVkIGNoYXIgaWZpX2ZhbWlseTsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIF9faWZpX3BhZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpZmlfdHlw
ZTsKICAgICAgICBpbnQgaWZpX2luZGV4OwogICAgICAgIHVuc2lnbmVkIGlmaV9mbGFnczsKICAg
ICAgICB1bnNpZ25lZCBpZmlfY2hhbmdlOwp9OwoKZW51bQp7CiAgICAgICAgSUZMQV9VTlNQRUMs
CiAgICAgICAgSUZMQV9BRERSRVNTLAogICAgICAgIElGTEFfQlJPQURDQVNULAogICAgICAgIElG
TEFfSUZOQU1FLAogICAgICAgIElGTEFfTVRVLAogICAgICAgIElGTEFfTElOSywKICAgICAgICBJ
RkxBX1FESVNDLAogICAgICAgIElGTEFfU1RBVFMsCiAgICAgICAgSUZMQV9DT1NULAoKICAgICAg
ICBJRkxBX1BSSU9SSVRZLAoKICAgICAgICBJRkxBX01BU1RFUgoKfTsKIyA0ODYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0
IHRjbXNnCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRjbV9mYW1pbHk7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciB0Y21fX3BhZDE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdGNtX19wYWQyOwogICAg
ICAgIGludCB0Y21faWZpbmRleDsKICAgICAgICBfX3UzMiB0Y21faGFuZGxlOwogICAgICAgIF9f
dTMyIHRjbV9wYXJlbnQ7CiAgICAgICAgX191MzIgdGNtX2luZm87Cn07CgplbnVtCnsKICAgICAg
ICBUQ0FfVU5TUEVDLAogICAgICAgIFRDQV9LSU5ELAogICAgICAgIFRDQV9PUFRJT05TLAogICAg
ICAgIFRDQV9TVEFUUywKICAgICAgICBUQ0FfWFNUQVRTLAogICAgICAgIFRDQV9SQVRFLAp9Owoj
IDUzOSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3J0bmV0
bGluay5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDU0MCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2xpbnV4L3J0bmV0bGluay5oIiAyCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgcnRhdHRyX3N0
cmNtcChzdHJ1Y3QgcnRhdHRyICpydGEsIGNoYXIgKnN0cikKewogICAgICAgIGludCBsZW4gPSBz
dHJsZW4oc3RyKSArIDE7CiAgICAgICAgcmV0dXJuIGxlbiA+IHJ0YS0+cnRhX2xlbiB8fCBfX2J1
aWx0aW5fbWVtY21wKCgodm9pZCopKCgoY2hhciopKHJ0YSkpICsgKCggKChzaXplb2Yoc3RydWN0
IHJ0YXR0cikpKzQgLTEpICYgfig0IC0xKSApICsgKDApKSkpLCBzdHIsIGxlbik7Cn0KCmV4dGVy
biBpbnQgcnRhdHRyX3BhcnNlKHN0cnVjdCBydGF0dHIgKnRiW10sIGludCBtYXhhdHRyLCBzdHJ1
Y3QgcnRhdHRyICpydGEsIGludCBsZW4pOwojIDU3NyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdj
Yy0zLjAuMi9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpleHRlcm4gc3RydWN0IHNlbWFwaG9y
ZSBydG5sX3NlbTsKIyA1OTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9ydG5ldGxpbmsuaCIKZXh0ZXJuIHZvaWQgcnRubF9sb2NrKHZvaWQpOwpleHRlcm4g
dm9pZCBydG5sX3VubG9jayh2b2lkKTsKZXh0ZXJuIHZvaWQgcnRuZXRsaW5rX2luaXQodm9pZCk7
CiMgMTU0ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvbGludXgvZGVsYXkuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvbGludXgvZGVsYXkuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9vcHNf
cGVyX2ppZmZ5OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUv
YXNtL2RlbGF5LmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNs
dWRlL2FzbS9kZWxheS5oIgpleHRlcm4gdm9pZCBfX2JhZF91ZGVsYXkodm9pZCk7CgpleHRlcm4g
dm9pZCBfX3VkZWxheSh1bnNpZ25lZCBsb25nIHVzZWNzKTsKZXh0ZXJuIHZvaWQgX19jb25zdF91
ZGVsYXkodW5zaWduZWQgbG9uZyB1c2Vjcyk7CmV4dGVybiB2b2lkIF9fZGVsYXkodW5zaWduZWQg
bG9uZyBsb29wcyk7CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9saW51eC9kZWxheS5oIiAyCiMgMTU1ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIiAxCiMgMTMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9ldGh0b29sLmgiCnN0cnVj
dCBldGh0b29sX2NtZCB7CiAgICAgICAgdTMyIGNtZDsKICAgICAgICB1MzIgc3VwcG9ydGVkOwog
ICAgICAgIHUzMiBhZHZlcnRpc2luZzsKICAgICAgICB1MTYgc3BlZWQ7CiAgICAgICAgdTggZHVw
bGV4OwogICAgICAgIHU4IHBvcnQ7CiAgICAgICAgdTggcGh5X2FkZHJlc3M7CiAgICAgICAgdTgg
dHJhbnNjZWl2ZXI7CiAgICAgICAgdTggYXV0b25lZzsKICAgICAgICB1MzIgbWF4dHhwa3Q7CiAg
ICAgICAgdTMyIG1heHJ4cGt0OwogICAgICAgIHUzMiByZXNlcnZlZFs0XTsKfTsKCgpzdHJ1Y3Qg
ZXRodG9vbF9kcnZpbmZvIHsKICAgICAgICB1MzIgY21kOwogICAgICAgIGNoYXIgZHJpdmVyWzMy
XTsKICAgICAgICBjaGFyIHZlcnNpb25bMzJdOwogICAgICAgIGNoYXIgZndfdmVyc2lvblszMl07
CiAgICAgICAgY2hhciBidXNfaW5mb1szMl07CgogICAgICAgIGNoYXIgcmVzZXJ2ZWQxWzMyXTsK
ICAgICAgICBjaGFyIHJlc2VydmVkMlsyOF07CiAgICAgICAgdTMyIHJlZ2R1bXBfbGVuOwp9OwoK
CgpzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHsKICAgICAgICB1MzIgY21kOwogICAgICAgIHUzMiBz
dXBwb3J0ZWQ7CiAgICAgICAgdTMyIHdvbG9wdHM7CiAgICAgICAgdTggc29wYXNzWzZdOwp9Owoj
IDE1NiAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9p
bmNsdWRlL2xpbnV4L21paS5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4w
LjIvaW5jbHVkZS9saW51eC9taWkuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMu
MC4yL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbWlpLmgiIDIKIyAxMDUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9saW51eC9taWkuaCIKc3RydWN0IG1paV9pb2N0bF9kYXRh
IHsKICAgICAgICB1MTYgcGh5X2lkOwogICAgICAgIHUxNiByZWdfbnVtOwogICAgICAgIHUxNiB2
YWxfaW47CiAgICAgICAgdTE2IHZhbF9vdXQ7Cn07CiMgMTI3ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvbWlpLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
aW50IG1paV9ud2F5X3Jlc3VsdCAodW5zaWduZWQgaW50IG5lZ290aWF0ZWQpCnsKICAgICAgICB1
bnNpZ25lZCBpbnQgcmV0OwoKICAgICAgICBpZiAobmVnb3RpYXRlZCAmIDB4MDEwMCkKICAgICAg
ICAgICAgICAgIHJldCA9IDB4MDEwMDsKICAgICAgICBlbHNlIGlmIChuZWdvdGlhdGVkICYgMHgw
MjAwKQogICAgICAgICAgICAgICAgcmV0ID0gMHgwMjAwOwogICAgICAgIGVsc2UgaWYgKG5lZ290
aWF0ZWQgJiAweDAwODApCiAgICAgICAgICAgICAgICByZXQgPSAweDAwODA7CiAgICAgICAgZWxz
ZSBpZiAobmVnb3RpYXRlZCAmIDB4MDA0MCkKICAgICAgICAgICAgICAgIHJldCA9IDB4MDA0MDsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXQgPSAweDAwMjA7CgogICAgICAgIHJldHVy
biByZXQ7Cn0KIyAxNTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9s
aW51eC9taWkuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbWlpX2R1cGxleCAodW5zaWdu
ZWQgaW50IGR1cGxleF9sb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgbmVnb3RpYXRlZCkKewogICAgICAgIGlmIChkdXBsZXhfbG9jaykKICAg
ICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIGlmIChtaWlfbndheV9yZXN1bHQobmVnb3Rp
YXRlZCkgJiAoMHgwMDQwIHwgMHgwMTAwKSkKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAg
ICAgIHJldHVybiAwOwp9CiMgMTU3ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAxCiMgMTU4ICI4MTM5
dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNt
L2lvLmgiIDEKIyAxNTkgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1n
Y2MtMy4wLjIvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAxCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgOCAiL3Vzci9z
cmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQoj
IDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9hc20vdWFjY2Vzcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2xpbnV4L3By
ZWZldGNoLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRl
L2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2lu
Y2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4y
L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMgojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2Nj
LTMuMC4yL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGludCBfX3ZlcmlmeV93cml0ZShj
b25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDYyICIvdXNyL3NyYy9saW51eC0yLjQuMTMt
Z2NjLTMuMC4yL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKc3RhdGljIGlubGluZSBpbnQgdmVyaWZ5
X2FyZWEoaW50IHR5cGUsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCnsK
ICAgICAgICByZXR1cm4gKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxzdW07IGFzbSgiYWRkbCAlMywl
MSA7IHNiYmwgJTAsJTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAiIDoiPSZyIiAoZmxhZyksICI9
ciIgKHN1bSkgOiIxIiAoYWRkciksImciICgoaW50KShzaXplKSksImciIChnZXRfY3VycmVudCgp
LT5hZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSA/IDAgOiAtMTQ7Cn0KIyA4MSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0cnVj
dCBleGNlcHRpb25fdGFibGVfZW50cnkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgaW5zbiwgZml4
dXA7Cn07CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2VhcmNoX2V4Y2VwdGlvbl90YWJsZSh1bnNp
Z25lZCBsb25nKTsKIyAxMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVk
ZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gdm9pZCBfX2dldF91c2VyXzEodm9pZCk7CmV4dGVybiB2
b2lkIF9fZ2V0X3VzZXJfMih2b2lkKTsKZXh0ZXJuIHZvaWQgX19nZXRfdXNlcl80KHZvaWQpOwoj
IDEyNyAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS91YWNjZXNz
LmgiCmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfMSh2b2lkKTsKZXh0ZXJuIHZvaWQgX19wdXRfdXNl
cl8yKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzQodm9pZCk7CmV4dGVybiB2b2lkIF9f
cHV0X3VzZXJfOCh2b2lkKTsKCmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfYmFkKHZvaWQpOwojIDE4
OCAiL3Vzci9zcmMvbGludXgtMi40LjEzLWdjYy0zLjAuMi9pbmNsdWRlL2FzbS91YWNjZXNzLmgi
CnN0cnVjdCBfX2xhcmdlX3N0cnVjdCB7IHVuc2lnbmVkIGxvbmcgYnVmWzEwMF07IH07CiMgMjIw
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIK
ZXh0ZXJuIGxvbmcgX19nZXRfdXNlcl9iYWQodm9pZCk7CiMgMzA4ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMtZ2NjLTMuMC4yL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKc3RhdGljIGlubGluZSB1bnNp
Z25lZCBsb25nCl9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25z
dCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBf
X2QxOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIgltb3ZsICUzLCUw
XG4iICIxOglyZXA7IG1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAi
MzoJbGVhIDAoJTMsJTAsNCksJTBcbiIgIjQ6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIg
Igl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglw
b3BsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUs
XCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIg
Ii5wcmV2aW91cyIgOiAiPSZjIihuKSwgIj0mRCIgKF9fZDApLCAiPSZTIiAoX19kMSkgOiAiciIo
biAmIDMpLCAiMCIobiAvIDQpLCAiMSIodG8pLCAiMiIoZnJvbSkgOiAibWVtb3J5Iik7IH0gd2hp
bGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcK
X19nZW5lcmljX2NvcHlfdG9fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9t
LCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBfX2FzbV9f
IF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIgltb3ZsICUzLCUwXG4iICIxOglyZXA7
IG1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJbGVhIDAoJTMs
JTAsNCksJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJs
ZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiwyYlxu
IiAiLnByZXZpb3VzIiA6ICI9JmMiKG4pLCAiPSZEIiAoX19kMCksICI9JlMiIChfX2QxKSA6ICJy
IihuICYgMyksICIwIihuIC8gNCksICIxIih0byksICIyIihmcm9tKSA6ICJtZW1vcnkiKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG47Cn0KIyA1NDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My1nY2MtMy4wLjIvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgp1bnNpZ25lZCBsb25nIF9fZ2VuZXJp
Y19jb3B5X3RvX3VzZXIodm9pZCAqLCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwp1bnNp
Z25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcih2b2lkICosIGNvbnN0IHZvaWQgKiwg
dW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9j
b3B5X3RvX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikK
ewogICAgICAgIHByZWZldGNoKGZyb20pOwogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9uZyBm
bGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAk
MCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiICh0byksImciICgoaW50KShuKSks
ImciIChnZXRfY3VycmVudCgpLT5hZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkKICAg
ICAgICAgICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVs
dDogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rp
b24gLmZpeHVwLFwiYXhcIlxuIiAiMjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlv
dXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25n
IDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k
MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2Fz
ZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4i
ICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0Oglp
bmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUs
XCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIg
Ii5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihm
cm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNt
X18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIu
c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIsJTBc
biIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxu
IiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZp
b3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAi
MiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3Zv
bGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6
XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFkZGwg
JDIsJTBcbiIgIjY6CWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rp
b24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgku
bG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0m
UyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDog
Im1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIodm9pZCAq
dG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGlmICgoKHsg
dW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21w
bCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChmcm9t
KSwiZyIgKChpbnQpKG4pKSwiZyIgKGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZs
YWc7IH0pID09IDApKQogICAgICAgICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNo
IChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xc
biIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglwdXNobCAlMFxuIiAiCXB1
c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglwb3Bs
ICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWptcCAxYlxuIiAiLnByZXZp
b3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9u
ZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9f
ZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNh
c2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3ZzYlxu
IiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJcHVz
aGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3Ni
XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglpbmNsICUw
XG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIg
IglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICIucHJl
dmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5s
b25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZT
IiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAi
bWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBt
b3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIz
OglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJl
cDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hs
ICQyLCUwXG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIg
Igl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAk
MiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwi
YVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIu
cHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJv
bSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9f
IF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxu
IiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXB1c2hsICUwXG4iICIJcHVz
aGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3
XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxu
IiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIgIjU6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAl
JWVheCwlJWVheFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJYWRk
bCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNjoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUl
ZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAzYlxu
IiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRc
biIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5w
cmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9t
KSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwog
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChf
X2J1aWx0aW5fY29uc3RhbnRfcCgobikpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQo
KCh0bykpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSA6IF9fY29u
c3RhbnRfY19tZW1zZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkp
LCgobikpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKG4pKSA/IF9fbWVtc2V0X2dlbmVyaWMo
KCgodG8pKSksKCgoMCkpKSwoKChuKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCh0bykpLCgoMCkp
LCgobikpKSkpOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxv
bmcKX19jb25zdGFudF9jb3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9pZCAq
ZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dp
dGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92
c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBcbiIg
IglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAi
CS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZT
IiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAi
bWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBt
b3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIz
OglzaGwgJDIsJTBcbiIgIjQ6CWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAi
LnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2Jc
biIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwg
Ij0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsg
YnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIx
Ogltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAkMiwl
MFxuIiAiNDoJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv
biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5s
b25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAo
X19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsg
Y2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3
XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXNo
bCAkMiwlMFxuIiAiNToJYWRkbCAkMiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAi
LnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIg
IgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2
aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwg
IjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAg
ICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9j
b3B5X2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25l
ZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2ggKG4gJiAzKSB7
IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMTpcbiIg
Ii5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhc
biIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwgJSVlYXhcbiIg
Iglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIgIi5z
ZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJiXG4i
ICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIo
ZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxuIiAi
LnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxu
IiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2JcbiIgIglwb3Bs
ICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBcbiIgIglqbXAg
MmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3NiXG4i
ICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAi
LnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2Jc
biIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwg
Ij0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsg
YnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIx
Ogltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUw
XG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxu
IiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIg
IglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVl
YXgsJSVlYXhcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQyLCUwXG4iICIJ
am1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgku
YWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIg
OiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRv
KSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192b2xhdGls
ZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxuIiAi
LnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxu
IiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIgIglzdG9z
YlxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAk
MywlMFxuIiAiCWptcCAyYlxuIiAiNToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4
XG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQzLCUwXG4i
ICIJam1wIDJiXG4iICI2OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglz
dG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDNiXG4iICIucHJldmlv
dXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25n
IDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZpb3VzIiA6
ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8p
LCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0
dXJuIG47Cn0KIyA1OTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy1nY2MtMy4wLjIvaW5jbHVkZS9h
c20vdWFjY2Vzcy5oIgpsb25nIHN0cm5jcHlfZnJvbV91c2VyKGNoYXIgKmRzdCwgY29uc3QgY2hh
ciAqc3JjLCBsb25nIGNvdW50KTsKbG9uZyBfX3N0cm5jcHlfZnJvbV91c2VyKGNoYXIgKmRzdCwg
Y29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsKCmxvbmcgc3Rybmxlbl91c2VyKGNvbnN0IGNo
YXIgKnN0ciwgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBjbGVhcl91c2VyKHZvaWQgKm1lbSwgdW5z
aWduZWQgbG9uZyBsZW4pOwp1bnNpZ25lZCBsb25nIF9fY2xlYXJfdXNlcih2b2lkICptZW0sIHVu
c2lnbmVkIGxvbmcgbGVuKTsKIyAxNjAgIjgxMzl0b28uYyIgMgojIDE5OCAiODEzOXRvby5jIgpz
dGF0aWMgaW50IG1lZGlhWzhdID0gey0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMX07CnN0
YXRpYyBpbnQgZnVsbF9kdXBsZXhbOF0gPSB7LTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0x
fTsKCgpzdGF0aWMgaW50IG1heF9pbnRlcnJ1cHRfd29yayA9IDIwOwoKCgpzdGF0aWMgaW50IG11
bHRpY2FzdF9maWx0ZXJfbGltaXQgPSAzMjsKIyAyNDEgIjgxMzl0b28uYyIKZW51bSB7CiAgICAg
ICAgSEFTX01JSV9YQ1ZSID0gMHgwMTAwMDAsCiAgICAgICAgSEFTX0NISVBfWENWUiA9IDB4MDIw
MDAwLAogICAgICAgIEhBU19MTktfQ0hORyA9IDB4MDQwMDAwLAp9OwoKCgoKCgoKdHlwZWRlZiBl
bnVtIHsKICAgICAgICBSVEw4MTM5ID0gMCwKICAgICAgICBSVEw4MTM5X0NCLAogICAgICAgIFNN
QzEyMTFUWCwKCiAgICAgICAgREVMVEE4MTM5LAogICAgICAgIEFERFRST044MTM5LAogICAgICAg
IERGRTUzOFRYLAogICAgICAgIERGRTY5MFRYRCwKICAgICAgICBSVEw4MTI5LAp9IGJvYXJkX3Q7
CgoKCnN0YXRpYyBzdHJ1Y3QgewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdTMy
IGh3X2ZsYWdzOwp9IGJvYXJkX2luZm9bXSA9IHsKICAgICAgICB7ICJSZWFsVGVrIFJUTDgxMzkg
RmFzdCBFdGhlcm5ldCIsIEhBU19DSElQX1hDVlJ8SEFTX0xOS19DSE5HIH0sCiAgICAgICAgeyAi
UmVhbFRlayBSVEw4MTM5QiBQQ0kvQ2FyZEJ1cyIsIEhBU19DSElQX1hDVlJ8SEFTX0xOS19DSE5H
IH0sCiAgICAgICAgeyAiU01DMTIxMVRYIEVaQ2FyZCAxMC8xMDAgKFJlYWxUZWsgUlRMODEzOSki
LCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktfQ0hORyB9LAoKICAgICAgICB7ICJEZWx0YSBFbGVjdHJv
bmljcyA4MTM5IDEwLzEwMEJhc2VUWCIsIEhBU19DSElQX1hDVlJ8SEFTX0xOS19DSE5HIH0sCiAg
ICAgICAgeyAiQWRkdHJvbiBUZWNobm9sZ3kgODEzOSAxMC8xMDBCYXNlVFgiLCBIQVNfQ0hJUF9Y
Q1ZSfEhBU19MTktfQ0hORyB9LAogICAgICAgIHsgIkQtTGluayBERkUtNTM4VFggKFJlYWxUZWsg
UlRMODEzOSkiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktfQ0hORyB9LAogICAgICAgIHsgIkQtTGlu
ayBERkUtNjkwVFhEIChSZWFsVGVrIFJUTDgxMzkpIiwgSEFTX0NISVBfWENWUnxIQVNfTE5LX0NI
TkcgfSwKICAgICAgICB7ICJSZWFsVGVrIFJUTDgxMjkiLCBIQVNfTUlJX1hDVlIgfSwKfTsKCgpz
dGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODEzOV9wY2lfdGJsW10gPSB7CiAgICAgICAg
ezB4MTBlYywgMHg4MTM5LCAofjApLCAofjApLCAwLCAwLCBSVEw4MTM5IH0sCiAgICAgICAgezB4
MTBlYywgMHg4MTM4LCAofjApLCAofjApLCAwLCAwLCBSVEw4MTM5X0NCIH0sCiAgICAgICAgezB4
MTExMywgMHgxMjExLCAofjApLCAofjApLCAwLCAwLCBTTUMxMjExVFggfSwKCiAgICAgICAgezB4
MTUwMCwgMHgxMzYwLCAofjApLCAofjApLCAwLCAwLCBERUxUQTgxMzkgfSwKICAgICAgICB7MHg0
MDMzLCAweDEzNjAsICh+MCksICh+MCksIDAsIDAsIEFERFRST044MTM5IH0sCiAgICAgICAgezB4
MTE4NiwgMHgxMzAwLCAofjApLCAofjApLCAwLCAwLCBERkU1MzhUWCB9LAogICAgICAgIHsweDEx
ODYsIDB4MTM0MCwgKH4wKSwgKH4wKSwgMCwgMCwgREZFNjkwVFhEIH0sCiMgMzAxICI4MTM5dG9v
LmMiCiAgICAgICAgeyh+MCksIDB4ODEzOSwgMHgxMGVjLCAweDgxMzksIDAsIDAsIFJUTDgxMzkg
fSwKICAgICAgICB7KH4wKSwgMHg4MTM5LCAweDExODYsIDB4MTMwMCwgMCwgMCwgREZFNTM4VFgg
fSwKCiAgICAgICAgezAsfQp9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CgoKCgoKZW51bSBSVEw4MTM5X3JlZ2lzdGVycyB7CiAgICAgICAgTUFDMCA9IDAsCiAg
ICAgICAgTUFSMCA9IDgsCiAgICAgICAgVHhTdGF0dXMwID0gMHgxMCwKICAgICAgICBUeEFkZHIw
ID0gMHgyMCwKICAgICAgICBSeEJ1ZiA9IDB4MzAsCiAgICAgICAgUnhFYXJseUNudCA9IDB4MzQs
CiAgICAgICAgUnhFYXJseVN0YXR1cyA9IDB4MzYsCiAgICAgICAgQ2hpcENtZCA9IDB4MzcsCiAg
ICAgICAgUnhCdWZQdHIgPSAweDM4LAogICAgICAgIFJ4QnVmQWRkciA9IDB4M0EsCiAgICAgICAg
SW50ck1hc2sgPSAweDNDLAogICAgICAgIEludHJTdGF0dXMgPSAweDNFLAogICAgICAgIFR4Q29u
ZmlnID0gMHg0MCwKICAgICAgICBDaGlwVmVyc2lvbiA9IDB4NDMsCiAgICAgICAgUnhDb25maWcg
PSAweDQ0LAogICAgICAgIFRpbWVyID0gMHg0OCwKICAgICAgICBSeE1pc3NlZCA9IDB4NEMsCiAg
ICAgICAgQ2ZnOTM0NiA9IDB4NTAsCiAgICAgICAgQ29uZmlnMCA9IDB4NTEsCiAgICAgICAgQ29u
ZmlnMSA9IDB4NTIsCiAgICAgICAgRmxhc2hSZWcgPSAweDU0LAogICAgICAgIE1lZGlhU3RhdHVz
ID0gMHg1OCwKICAgICAgICBDb25maWczID0gMHg1OSwKICAgICAgICBDb25maWc0ID0gMHg1QSwK
ICAgICAgICBIbHRDbGsgPSAweDVCLAogICAgICAgIE11bHRpSW50ciA9IDB4NUMsCiAgICAgICAg
VHhTdW1tYXJ5ID0gMHg2MCwKICAgICAgICBCYXNpY01vZGVDdHJsID0gMHg2MiwKICAgICAgICBC
YXNpY01vZGVTdGF0dXMgPSAweDY0LAogICAgICAgIE5XYXlBZHZlcnQgPSAweDY2LAogICAgICAg
IE5XYXlMUEFSID0gMHg2OCwKICAgICAgICBOV2F5RXhwYW5zaW9uID0gMHg2QSwKCiAgICAgICAg
RklGT1RNUyA9IDB4NzAsCiAgICAgICAgQ1NDUiA9IDB4NzQsCiAgICAgICAgUEFSQTc4ID0gMHg3
OCwKICAgICAgICBQQVJBN2MgPSAweDdjLAogICAgICAgIENvbmZpZzUgPSAweEQ4LAp9OwoKZW51
bSBDbGVhckJpdE1hc2tzIHsKICAgICAgICBNdWx0aUludHJDbGVhciA9IDB4RjAwMCwKICAgICAg
ICBDaGlwQ21kQ2xlYXIgPSAweEUyLAogICAgICAgIENvbmZpZzFDbGVhciA9ICgxPDw3KXwoMTw8
Nil8KDE8PDMpfCgxPDwyKXwoMTw8MSksCn07CgplbnVtIENoaXBDbWRCaXRzIHsKICAgICAgICBD
bWRSZXNldCA9IDB4MTAsCiAgICAgICAgQ21kUnhFbmIgPSAweDA4LAogICAgICAgIENtZFR4RW5i
ID0gMHgwNCwKICAgICAgICBSeEJ1ZkVtcHR5ID0gMHgwMSwKfTsKCgplbnVtIEludHJTdGF0dXNC
aXRzIHsKICAgICAgICBQQ0lFcnIgPSAweDgwMDAsCiAgICAgICAgUENTVGltZW91dCA9IDB4NDAw
MCwKICAgICAgICBSeEZJRk9PdmVyID0gMHg0MCwKICAgICAgICBSeFVuZGVycnVuID0gMHgyMCwK
ICAgICAgICBSeE92ZXJmbG93ID0gMHgxMCwKICAgICAgICBUeEVyciA9IDB4MDgsCiAgICAgICAg
VHhPSyA9IDB4MDQsCiAgICAgICAgUnhFcnIgPSAweDAyLAogICAgICAgIFJ4T0sgPSAweDAxLAoK
ICAgICAgICBSeEFja0JpdHMgPSBSeEZJRk9PdmVyIHwgUnhPdmVyZmxvdyB8IFJ4T0ssCn07Cgpl
bnVtIFR4U3RhdHVzQml0cyB7CiAgICAgICAgVHhIb3N0T3ducyA9IDB4MjAwMCwKICAgICAgICBU
eFVuZGVycnVuID0gMHg0MDAwLAogICAgICAgIFR4U3RhdE9LID0gMHg4MDAwLAogICAgICAgIFR4
T3V0T2ZXaW5kb3cgPSAweDIwMDAwMDAwLAogICAgICAgIFR4QWJvcnRlZCA9IDB4NDAwMDAwMDAs
CiAgICAgICAgVHhDYXJyaWVyTG9zdCA9IDB4ODAwMDAwMDAsCn07CmVudW0gUnhTdGF0dXNCaXRz
IHsKICAgICAgICBSeE11bHRpY2FzdCA9IDB4ODAwMCwKICAgICAgICBSeFBoeXNpY2FsID0gMHg0
MDAwLAogICAgICAgIFJ4QnJvYWRjYXN0ID0gMHgyMDAwLAogICAgICAgIFJ4QmFkU3ltYm9sID0g
MHgwMDIwLAogICAgICAgIFJ4UnVudCA9IDB4MDAxMCwKICAgICAgICBSeFRvb0xvbmcgPSAweDAw
MDgsCiAgICAgICAgUnhDUkNFcnIgPSAweDAwMDQsCiAgICAgICAgUnhCYWRBbGlnbiA9IDB4MDAw
MiwKICAgICAgICBSeFN0YXR1c09LID0gMHgwMDAxLAp9OwoKCmVudW0gcnhfbW9kZV9iaXRzIHsK
ICAgICAgICBBY2NlcHRFcnIgPSAweDIwLAogICAgICAgIEFjY2VwdFJ1bnQgPSAweDEwLAogICAg
ICAgIEFjY2VwdEJyb2FkY2FzdCA9IDB4MDgsCiAgICAgICAgQWNjZXB0TXVsdGljYXN0ID0gMHgw
NCwKICAgICAgICBBY2NlcHRNeVBoeXMgPSAweDAyLAogICAgICAgIEFjY2VwdEFsbFBoeXMgPSAw
eDAxLAp9OwoKCmVudW0gdHhfY29uZmlnX2JpdHMgewogICAgICAgIFR4SUZHMSA9ICgxIDw8IDI1
KSwKICAgICAgICBUeElGRzAgPSAoMSA8PCAyNCksCiAgICAgICAgVHhMb29wQmFjayA9ICgxIDw8
IDE4KSB8ICgxIDw8IDE3KSwKICAgICAgICBUeENSQyA9ICgxIDw8IDE2KSwKICAgICAgICBUeENs
ZWFyQWJ0ID0gKDEgPDwgMCksCiAgICAgICAgVHhETUFTaGlmdCA9IDgsCgogICAgICAgIFR4VmVy
c2lvbk1hc2sgPSAweDdDODAwMDAwLAp9OwoKCmVudW0gQ29uZmlnMUJpdHMgewogICAgICAgIENm
ZzFfUE1fRW5hYmxlID0gMHgwMSwKICAgICAgICBDZmcxX1ZQRF9FbmFibGUgPSAweDAyLAogICAg
ICAgIENmZzFfUElPID0gMHgwNCwKICAgICAgICBDZmcxX01NSU8gPSAweDA4LAogICAgICAgIExX
QUtFID0gMHgxMCwKICAgICAgICBDZmcxX0RyaXZlcl9Mb2FkID0gMHgyMCwKICAgICAgICBDZmcx
X0xFRDAgPSAweDQwLAogICAgICAgIENmZzFfTEVEMSA9IDB4ODAsCiAgICAgICAgU0xFRVAgPSAo
MSA8PCAxKSwKICAgICAgICBQV1JETiA9ICgxIDw8IDApLAp9OwoKCmVudW0gQ29uZmlnM0JpdHMg
ewogICAgICAgIENmZzNfRkJ0QkVuID0gKDEgPDwgMCksCiAgICAgICAgQ2ZnM19GdW5jUmVnRW4g
PSAoMSA8PCAxKSwKICAgICAgICBDZmczX0NMS1JVTl9FbiA9ICgxIDw8IDIpLAogICAgICAgIENm
ZzNfQ2FyZEJfRW4gPSAoMSA8PCAzKSwKICAgICAgICBDZmczX0xpbmtVcCA9ICgxIDw8IDQpLAog
ICAgICAgIENmZzNfTWFnaWMgPSAoMSA8PCA1KSwKICAgICAgICBDZmczX1BBUk1fRW4gPSAoMSA8
PCA2KSwKICAgICAgICBDZmczX0dOVFNlbCA9ICgxIDw8IDcpLAp9OwoKCmVudW0gQ29uZmlnNEJp
dHMgewogICAgICAgIExXUFROID0gKDEgPDwgMiksCn07CgoKZW51bSBDb25maWc1Qml0cyB7CiAg
ICAgICAgQ2ZnNV9QTUVfU1RTID0gKDEgPDwgMCksCiAgICAgICAgQ2ZnNV9MQU5XYWtlID0gKDEg
PDwgMSksCiAgICAgICAgQ2ZnNV9MRFBTID0gKDEgPDwgMiksCiAgICAgICAgQ2ZnNV9GSUZPQWRk
clB0ciA9ICgxIDw8IDMpLAogICAgICAgIENmZzVfVVdGID0gKDEgPDwgNCksCiAgICAgICAgQ2Zn
NV9NV0YgPSAoMSA8PCA1KSwKICAgICAgICBDZmc1X0JXRiA9ICgxIDw8IDYpLAp9OwoKZW51bSBS
eENvbmZpZ0JpdHMgewoKICAgICAgICBSeENmZ0Vhcmx5UnhOb25lID0gMCwKICAgICAgICBSeENm
Z0Vhcmx5UnhTaGlmdCA9IDI0LAoKCiAgICAgICAgUnhDZmdGSUZPU2hpZnQgPSAxMywKICAgICAg
ICBSeENmZ0ZJRk9Ob25lID0gKDcgPDwgUnhDZmdGSUZPU2hpZnQpLAoKCiAgICAgICAgUnhDZmdE
TUFTaGlmdCA9IDgsCiAgICAgICAgUnhDZmdETUFVbmxpbWl0ZWQgPSAoNyA8PCBSeENmZ0RNQVNo
aWZ0KSwKCgogICAgICAgIFJ4Q2ZnUmN2OEsgPSAwLAogICAgICAgIFJ4Q2ZnUmN2MTZLID0gKDEg
PDwgMTEpLAogICAgICAgIFJ4Q2ZnUmN2MzJLID0gKDEgPDwgMTIpLAogICAgICAgIFJ4Q2ZnUmN2
NjRLID0gKDEgPDwgMTEpIHwgKDEgPDwgMTIpLAoKCiAgICAgICAgUnhOb1dyYXAgPSAoMSA8PCA3
KSwKfTsKCgoKCmVudW0gQ1NDUkJpdHMgewogICAgICAgIENTQ1JfTGlua09LQml0ID0gMHgwNDAw
LAogICAgICAgIENTQ1JfTGlua0NoYW5nZUJpdCA9IDB4MDgwMCwKICAgICAgICBDU0NSX0xpbmtT
dGF0dXNCaXRzID0gMHgwZjAwMCwKICAgICAgICBDU0NSX0xpbmtEb3duT2ZmQ21kID0gMHgwMDNj
MCwKICAgICAgICBDU0NSX0xpbmtEb3duQ21kID0gMHgwZjNjMCwKfTsKCgplbnVtIENmZzkzNDZC
aXRzIHsKICAgICAgICBDZmc5MzQ2X0xvY2sgPSAweDAwLAogICAgICAgIENmZzkzNDZfVW5sb2Nr
ID0gMHhDMCwKfTsKCgoKCgpzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBwYXJhbVs0XVs0XSA9
IHsKICAgICAgICB7MHhjYjM5ZGU0MywgMHhjYjM5Y2U0MywgMHhmYjM4ZGUwMywgMHhjYjM4ZGU0
M30sCiAgICAgICAgezB4Y2IzOWRlNDMsIDB4Y2IzOWNlNDMsIDB4Y2IzOWNlODMsIDB4Y2IzOWNl
ODN9LAogICAgICAgIHsweGNiMzlkZTQzLCAweGNiMzljZTQzLCAweGNiMzljZTgzLCAweGNiMzlj
ZTgzfSwKICAgICAgICB7MHhiYjM5ZGU0MywgMHhiYjM5Y2U0MywgMHhiYjM5Y2U4MywgMHhiYjM5
Y2U4M30KfTsKCnN0cnVjdCByaW5nX2luZm8gewogICAgICAgIHN0cnVjdCBza19idWZmICpza2I7
CiAgICAgICAgZG1hX2FkZHJfdCBtYXBwaW5nOwp9OwoKCnR5cGVkZWYgZW51bSB7CiAgICAgICAg
Q0hfODEzOSA9IDAsCiAgICAgICAgQ0hfODEzOV9LLAogICAgICAgIENIXzgxMzlBLAogICAgICAg
IENIXzgxMzlCLAogICAgICAgIENIXzgxMzAsCiAgICAgICAgQ0hfODEzOUMsCn0gY2hpcF90OwoK
ZW51bSBjaGlwX2ZsYWdzIHsKICAgICAgICBIYXNIbHRDbGsgPSAoMSA8PCAwKSwKICAgICAgICBI
YXNMV2FrZSA9ICgxIDw8IDEpLAp9OwoKCgpjb25zdCBzdGF0aWMgc3RydWN0IHsKICAgICAgICBj
b25zdCBjaGFyICpuYW1lOwogICAgICAgIHU4IHZlcnNpb247CiAgICAgICAgdTMyIFJ4Q29uZmln
TWFzazsKICAgICAgICB1MzIgZmxhZ3M7Cn0gcnRsX2NoaXBfaW5mb1tdID0gewogICAgICAgIHsg
IlJUTC04MTM5IiwKICAgICAgICAgIDB4NDAsCiAgICAgICAgICAweGYwZmUwMDQwLAogICAgICAg
ICAgSGFzSGx0Q2xrLAogICAgICAgIH0sCgogICAgICAgIHsgIlJUTC04MTM5IHJldiBLIiwKICAg
ICAgICAgIDB4NjAsCiAgICAgICAgICAweGYwZmUwMDQwLAogICAgICAgICAgSGFzSGx0Q2xrLAog
ICAgICAgIH0sCgogICAgICAgIHsgIlJUTC04MTM5QSIsCiAgICAgICAgICAweDcwLAogICAgICAg
ICAgMHhmMGZlMDA0MCwKICAgICAgICAgIEhhc0hsdENsaywKICAgICAgICB9LAoKICAgICAgICB7
ICJSVEwtODEzOUIiLAogICAgICAgICAgMHg3OCwKICAgICAgICAgIDB4ZjBmYzAwNDAsCiAgICAg
ICAgICBIYXNMV2FrZSwKICAgICAgICB9LAoKICAgICAgICB7ICJSVEwtODEzMCIsCiAgICAgICAg
ICAweDdDLAogICAgICAgICAgMHhmMGZlMDA0MCwKICAgICAgICAgIEhhc0xXYWtlLAogICAgICAg
IH0sCgogICAgICAgIHsgIlJUTC04MTM5QyIsCiAgICAgICAgICAweDc0LAogICAgICAgICAgMHhm
MGZjMDA0MCwKICAgICAgICAgIEhhc0xXYWtlLAogICAgICAgIH0sCgp9OwoKc3RydWN0IHJ0bF9l
eHRyYV9zdGF0cyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXJseV9yeDsKICAgICAgICB1bnNp
Z25lZCBsb25nIHR4X2J1Zl9tYXBwZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF90aW1lb3V0
czsKfTsKCnN0cnVjdCBydGw4MTM5X3ByaXZhdGUgewogICAgICAgIHZvaWQgKm1taW9fYWRkcjsK
ICAgICAgICBpbnQgZHJ2X2ZsYWdzOwogICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2Owog
ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIHN0YXRzOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgKnJ4X3Jpbmc7CiAgICAgICAgdW5zaWduZWQgaW50IGN1cl9yeDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgdHhfZmxhZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGN1cl90eDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGRpcnR5X3R4OwoKICAgICAgICBzdHJ1Y3QgcmluZ19pbmZvIHR4X2luZm9bNF07
CiAgICAgICAgdW5zaWduZWQgY2hhciAqdHhfYnVmWzRdOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
KnR4X2J1ZnM7CiAgICAgICAgZG1hX2FkZHJfdCByeF9yaW5nX2RtYTsKICAgICAgICBkbWFfYWRk
cl90IHR4X2J1ZnNfZG1hOwogICAgICAgIHNpZ25lZCBjaGFyIHBoeXNbNF07CiAgICAgICAgY2hh
ciB0d2lzdGllLCB0d2lzdF9yb3csIHR3aXN0X2NvbDsKICAgICAgICB1bnNpZ25lZCBpbnQgZnVs
bF9kdXBsZXg6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZHVwbGV4X2xvY2s6MTsKICAgICAgICB1
bnNpZ25lZCBpbnQgZGVmYXVsdF9wb3J0OjQ7CiAgICAgICAgdW5zaWduZWQgaW50IG1lZGlhMjo0
OwogICAgICAgIHVuc2lnbmVkIGludCBtZWRpYWxvY2s6MTsKICAgICAgICB1bnNpZ25lZCBpbnQg
bWVkaWFzZW5zZToxOwogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBjaGlwX3QgY2hp
cHNldDsKICAgICAgICBwaWRfdCB0aHJfcGlkOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHRo
cl93YWl0OwogICAgICAgIHN0cnVjdCBjb21wbGV0aW9uIHRocl9leGl0ZWQ7CiAgICAgICAgdTMy
IHJ4X2NvbmZpZzsKICAgICAgICBzdHJ1Y3QgcnRsX2V4dHJhX3N0YXRzIHhzdGF0czsKfTsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CiAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwoKc3RhdGljIGludCByZWFkX2VlcHJvbSAodm9pZCAqaW9hZGRyLCBpbnQgbG9j
YXRpb24sIGludCBhZGRyX2xlbik7CnN0YXRpYyBpbnQgcnRsODEzOV9vcGVuIChzdHJ1Y3QgbmV0
X2RldmljZSAqZGV2KTsKc3RhdGljIGludCBtZGlvX3JlYWQgKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYsIGludCBwaHlfaWQsIGludCBsb2NhdGlvbik7CnN0YXRpYyB2b2lkIG1kaW9fd3JpdGUgKHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBwaHlfaWQsIGludCBsb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHZhbCk7CnN0YXRpYyBpbnQgcnRsODEzOV90aHJlYWQgKHZvaWQg
KmRhdGEpOwpzdGF0aWMgdm9pZCBydGw4MTM5X3R4X3RpbWVvdXQgKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpOwpzdGF0aWMgdm9pZCBydGw4MTM5X2luaXRfcmluZyAoc3RydWN0IG5ldF9kZXZpY2Ug
KmRldik7CnN0YXRpYyBpbnQgcnRsODEzOV9zdGFydF94bWl0IChzdHJ1Y3Qgc2tfYnVmZiAqc2ti
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7
CnN0YXRpYyB2b2lkIHJ0bDgxMzlfaW50ZXJydXB0IChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFu
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7
CnN0YXRpYyBpbnQgcnRsODEzOV9jbG9zZSAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CnN0YXRp
YyBpbnQgbmV0ZGV2X2lvY3RsIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEg
KnJxLCBpbnQgY21kKTsKc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICpydGw4MTM5X2dl
dF9zdGF0cyAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CnN0YXRpYyBpbmxpbmUgdTMyIGV0aGVy
X2NyYyAoaW50IGxlbmd0aCwgdW5zaWduZWQgY2hhciAqZGF0YSk7CnN0YXRpYyB2b2lkIHJ0bDgx
Mzlfc2V0X3J4X21vZGUgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpzdGF0aWMgdm9pZCBfX3Nl
dF9yeF9tb2RlIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKc3RhdGljIHZvaWQgcnRsODEzOV9o
d19zdGFydCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiMgNzEyICI4MTM5dG9vLmMiCnN0YXRp
YyBjb25zdCB1MTYgcnRsODEzOV9pbnRyX21hc2sgPQogICAgICAgIFBDSUVyciB8IFBDU1RpbWVv
dXQgfCBSeFVuZGVycnVuIHwgUnhPdmVyZmxvdyB8IFJ4RklGT092ZXIgfAogICAgICAgIFR4RXJy
IHwgVHhPSyB8IFJ4RXJyIHwgUnhPSzsKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcnRsODEz
OV9yeF9jb25maWcgPQogICAgICAgICAgKDE0IDw8IFJ4Q2ZnRWFybHlSeFNoaWZ0KSB8IFJ4Q2Zn
UmN2MzJLIHwgUnhOb1dyYXAgfAogICAgICAgICAgKDcgPDwgUnhDZmdGSUZPU2hpZnQpIHwKICAg
ICAgICAgICg3IDw8IFJ4Q2ZnRE1BU2hpZnQpOwoKCnN0YXRpYyB2b2lkIF9fcnRsODEzOV9jbGVh
bnVwX2RldiAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBydGw4MTM5
X3ByaXZhdGUgKnRwOwogICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2OwoKICAgICAgICBpZigh
KGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMs
JXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sNzI3
KTsgfTsKICAgICAgICBpZighKGRldi0+cHJpdiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAi
QXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldi0+cHJpdiAhPSBOVUxM
IiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sNzI4KTsgfTsKCiAgICAgICAgdHAgPSBkZXYtPnBy
aXY7CiAgICAgICAgaWYoISh0cC0+cGNpX2RldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAi
QXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgInRwLT5wY2lfZGV2ICE9IE5V
TEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXyw3MzEpOyB9OwogICAgICAgIHBkZXYgPSB0cC0+
cGNpX2RldjsKCgogICAgICAgIGlmICh0cC0+bW1pb19hZGRyKQogICAgICAgICAgICAgICAgaW91
bm1hcCAodHAtPm1taW9fYWRkcik7CgoKCiAgICAgICAgcGNpX3JlbGVhc2VfcmVnaW9ucyAocGRl
dik7CgoKCiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDB4QkMpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wKChzaXplb2YgKHN0cnVjdCBuZXRfZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0
bDgxMzlfcHJpdmF0ZSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoZGV2KSks
KCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDB4QkMpKSksKChzaXplb2YgKHN0cnVjdCBu
ZXRfZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSkgOiBfX2NvbnN0
YW50X2NfbWVtc2V0KCgoZGV2KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDB4QkMp
KSksKChzaXplb2YgKHN0cnVjdCBuZXRfZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0bDgxMzlf
cHJpdmF0ZSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YgKHN0cnVjdCBuZXRf
ZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSA/IF9fbWVtc2V0X2dl
bmVyaWMoKCgoZGV2KSkpLCgoKDB4QkMpKSksKCgoc2l6ZW9mIChzdHJ1Y3QgbmV0X2RldmljZSkg
KyBzaXplb2YgKHN0cnVjdCBydGw4MTM5X3ByaXZhdGUpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMo
KChkZXYpKSwoKDB4QkMpKSwoKHNpemVvZiAoc3RydWN0IG5ldF9kZXZpY2UpICsgc2l6ZW9mIChz
dHJ1Y3QgcnRsODEzOV9wcml2YXRlKSkpKSkpOwoKCgoKICAgICAgICBrZnJlZSAoZGV2KTsKCiAg
ICAgICAgcGNpX3NldF9kcnZkYXRhIChwZGV2LCAoKHZvaWQgKikwKSk7Cn0KCgpzdGF0aWMgdm9p
ZCBydGw4MTM5X2NoaXBfcmVzZXQgKHZvaWQgKmlvYWRkcikKewogICAgICAgIGludCBpOwoKCiAg
ICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENo
aXBDbWQpKSkgPSAoKENtZFJlc2V0KSkpOwoKCiAgICAgICAgZm9yIChpID0gMTAwMDsgaSA+IDA7
IGktLSkgewogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1v
cnkiKTsKICAgICAgICAgICAgICAgIGlmICgoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpICYgQ21kUmVzZXQpID09IDApCiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFu
dF9wKDEwKSA/ICgoMTApID4gMjAwMDAgPyBfX2JhZF91ZGVsYXkoKSA6IF9fY29uc3RfdWRlbGF5
KCgxMCkgKiAweDEwYzZ1bCkpIDogX191ZGVsYXkoMTApKTsKICAgICAgICB9Cn0KCgpzdGF0aWMg
aW50IHJ0bDgxMzlfaW5pdF9ib2FyZCAoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKipkZXZfb3V0
KQp7CiAgICAgICAgdm9pZCAqaW9hZGRyOwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7
CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHA7CiAgICAgICAgdTggdG1wODsKICAg
ICAgICBpbnQgcmM7CiAgICAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgICAgdTMyIHBpb19zdGFy
dCwgcGlvX2VuZCwgcGlvX2ZsYWdzLCBwaW9fbGVuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW1p
b19zdGFydCwgbW1pb19lbmQsIG1taW9fZmxhZ3MsIG1taW9fbGVuOwogICAgICAgIHUzMiB0bXA7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgIGlmKCEocGRldiAhPSAoKHZv
aWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxu
IiwgInBkZXYgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDc4Nyk7IH07CgogICAg
ICAgICpkZXZfb3V0ID0gKCh2b2lkICopMCk7CgoKICAgICAgICBkZXYgPSBhbGxvY19ldGhlcmRl
diAoc2l6ZW9mICgqdHApKTsKICAgICAgICBpZiAoZGV2ID09ICgodm9pZCAqKTApKSB7CiAgICAg
ICAgICAgICAgICBwcmludGsgKCI8Mz4iICI4MTM5dG9vIiAiOiAiICIlczogVW5hYmxlIHRvIGFs
bG9jIG5ldyBuZXQgZGV2aWNlXG4iLCBwZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHJl
dHVybiAtMTI7CiAgICAgICAgfQogICAgICAgIGRvIHsgKGRldiktPm93bmVyID0gKCh2b2lkICop
MCk7IH0gd2hpbGUgKDApOwogICAgICAgIHRwID0gZGV2LT5wcml2OwogICAgICAgIHRwLT5wY2lf
ZGV2ID0gcGRldjsKCgogICAgICAgIHJjID0gcGNpX2VuYWJsZV9kZXZpY2UgKHBkZXYpOwogICAg
ICAgIGlmIChyYykKICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKCiAgICAgICAgcGlvX3N0
YXJ0ID0gKChwZGV2KS0+cmVzb3VyY2VbKDApXS5zdGFydCk7CiAgICAgICAgcGlvX2VuZCA9ICgo
cGRldiktPnJlc291cmNlWygwKV0uZW5kKTsKICAgICAgICBwaW9fZmxhZ3MgPSAoKHBkZXYpLT5y
ZXNvdXJjZVsoMCldLmZsYWdzKTsKICAgICAgICBwaW9fbGVuID0gKCgoKChwZGV2KSktPnJlc291
cmNlWygoMCkpXS5zdGFydCkgPT0gMCAmJiAoKChwZGV2KSktPnJlc291cmNlWygoMCkpXS5lbmQp
ID09ICgoKHBkZXYpKS0+cmVzb3VyY2VbKCgwKSldLnN0YXJ0KSkgPyAwIDogKCgoKHBkZXYpKS0+
cmVzb3VyY2VbKCgwKSldLmVuZCkgLSAoKChwZGV2KSktPnJlc291cmNlWygoMCkpXS5zdGFydCkg
KyAxKSk7CgogICAgICAgIG1taW9fc3RhcnQgPSAoKHBkZXYpLT5yZXNvdXJjZVsoMSldLnN0YXJ0
KTsKICAgICAgICBtbWlvX2VuZCA9ICgocGRldiktPnJlc291cmNlWygxKV0uZW5kKTsKICAgICAg
ICBtbWlvX2ZsYWdzID0gKChwZGV2KS0+cmVzb3VyY2VbKDEpXS5mbGFncyk7CiAgICAgICAgbW1p
b19sZW4gPSAoKCgoKHBkZXYpKS0+cmVzb3VyY2VbKCgxKSldLnN0YXJ0KSA9PSAwICYmICgoKHBk
ZXYpKS0+cmVzb3VyY2VbKCgxKSldLmVuZCkgPT0gKCgocGRldikpLT5yZXNvdXJjZVsoKDEpKV0u
c3RhcnQpKSA/IDAgOiAoKCgocGRldikpLT5yZXNvdXJjZVsoKDEpKV0uZW5kKSAtICgoKHBkZXYp
KS0+cmVzb3VyY2VbKCgxKSldLnN0YXJ0KSArIDEpKTsKCgoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIyA4MzcgIjgxMzl0b28uYyIK
ICAgICAgICBpZiAoIShtbWlvX2ZsYWdzICYgMHgwMDAwMDIwMCkpIHsKICAgICAgICAgICAgICAg
IHByaW50ayAoIjwzPiIgIjgxMzl0b28iICI6ICIgIiVzOiByZWdpb24gIzEgbm90IGFuIE1NSU8g
cmVzb3VyY2UsIGFib3J0aW5nXG4iLCBwZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAg
cmMgPSAtMTk7CiAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQogICAgICAg
IGlmIChtbWlvX2xlbiA8IDB4ODApIHsKICAgICAgICAgICAgICAgIHByaW50ayAoIjwzPiIgIjgx
Mzl0b28iICI6ICIgIiVzOiBJbnZhbGlkIFBDSSBtZW0gcmVnaW9uIHNpemUocyksIGFib3J0aW5n
XG4iLCBwZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAgcmMgPSAtMTk7CiAgICAgICAg
ICAgICAgICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQoKCiAgICAgICAgcmMgPSBwY2lfcmVxdWVz
dF9yZWdpb25zIChwZGV2LCAiODEzOXRvbyIpOwogICAgICAgIGlmIChyYykKICAgICAgICAgICAg
ICAgIGdvdG8gZXJyX291dDsKCgogICAgICAgIHBjaV9zZXRfbWFzdGVyIChwZGV2KTsKCgoKCgoK
CiAgICAgICAgaW9hZGRyID0gaW9yZW1hcCAobW1pb19zdGFydCwgbW1pb19sZW4pOwogICAgICAg
IGlmIChpb2FkZHIgPT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAgICAgIHByaW50ayAoIjwz
PiIgIjgxMzl0b28iICI6ICIgIiVzOiBjYW5ub3QgcmVtYXAgTU1JTywgYWJvcnRpbmdcbiIsIHBk
ZXYtPnNsb3RfbmFtZSk7CiAgICAgICAgICAgICAgICByYyA9IC01OwogICAgICAgICAgICAgICAg
Z290byBlcnJfb3V0OwogICAgICAgIH0KICAgICAgICBkZXYtPmJhc2VfYWRkciA9IChsb25nKSBp
b2FkZHI7CiAgICAgICAgdHAtPm1taW9fYWRkciA9IGlvYWRkcjsKCgoKICAgICAgICAoKih2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoSGx0Q2xrKSkpID0gKCgn
UicpKSk7CgoKICAgICAgICBpZiAoKCh1bnNpZ25lZCBsb25nKSAoKih2b2xhdGlsZSB1bnNpZ25l
ZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeENvbmZpZykpKSkpID09IDB4RkZGRkZGRkYp
IHsKICAgICAgICAgICAgICAgIHByaW50ayAoIjwzPiIgIjgxMzl0b28iICI6ICIgIiVzOiBDaGlw
IG5vdCByZXNwb25kaW5nLCBpZ25vcmluZyBib2FyZFxuIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgcGRldi0+c2xvdF9uYW1lKTsKICAgICAgICAgICAgICAgIHJjID0gLTU7CiAgICAgICAgICAg
ICAgICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQoKCiAgICAgICAgdG1wID0gKCoodm9sYXRpbGUg
dW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBWZXJzaW9uKSkpKTsKICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgKHNpemVvZihydGxfY2hpcF9pbmZvKSAvIHNpemVvZigocnRs
X2NoaXBfaW5mbylbMF0pKTsgaSsrKQogICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBydGxfY2hp
cF9pbmZvW2ldLnZlcnNpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPmNoaXBzZXQg
PSBpOwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG1hdGNoOwogICAgICAgICAgICAgICAg
fQoKCiAgICAgICAgcHJpbnRrICgiPDc+IiAiODEzOXRvbyIgIjogIiAiJXM6IHVua25vd24gY2hp
cCB2ZXJzaW9uLCBhc3N1bWluZyBSVEwtODEzOVxuIiwKICAgICAgICAgICAgICAgIHBkZXYtPnNs
b3RfbmFtZSk7CiAgICAgICAgcHJpbnRrICgiPDc+IiAiODEzOXRvbyIgIjogIiAiJXM6IFR4Q29u
ZmlnID0gMHglbHhcbiIsIHBkZXYtPnNsb3RfbmFtZSwgKCh1bnNpZ25lZCBsb25nKSAoKih2b2xh
dGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeENvbmZpZykpKSkpKTsK
ICAgICAgICB0cC0+Y2hpcHNldCA9IDA7CgptYXRjaDoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKICAgICAgICBpZiAodHAtPmNoaXBzZXQgPj0g
Q0hfODEzOUIpIHsKICAgICAgICAgICAgICAgIHU4IG5ld190bXA4ID0gdG1wOCA9ICgqKHZvbGF0
aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcxKSkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAg
aWYgKChydGxfY2hpcF9pbmZvW3RwLT5jaGlwc2V0XS5mbGFncyAmIEhhc0xXYWtlKSAmJgogICAg
ICAgICAgICAgICAgICAgICh0bXA4ICYgTFdBS0UpKQogICAgICAgICAgICAgICAgICAgICAgICBu
ZXdfdG1wOCAmPSB+TFdBS0U7CiAgICAgICAgICAgICAgICBuZXdfdG1wOCB8PSBDZmcxX1BNX0Vu
YWJsZTsKICAgICAgICAgICAgICAgIGlmIChuZXdfdG1wOCAhPSB0bXA4KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRk
ciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2X1VubG9jaykpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENv
bmZpZzEpKSkgPSAoKHRtcDgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChDZmc5
MzQ2X0xvY2spKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocnRsX2No
aXBfaW5mb1t0cC0+Y2hpcHNldF0uZmxhZ3MgJiBIYXNMV2FrZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICB0bXA4ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9h
ZGRyICsgKENvbmZpZzQpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wOCAmIExX
UFROKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWc0KSkpID0gKCh0bXA4ICYgfkxXUFRO
KSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgdG1wOCA9ICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcxKSkpKTsK
ICAgICAgICAgICAgICAgIHRtcDggJj0gfihTTEVFUCB8IFBXUkROKTsKICAgICAgICAgICAgICAg
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcx
KSkpID0gKCh0bXA4KSkpOwogICAgICAgIH0KCiAgICAgICAgcnRsODEzOV9jaGlwX3Jlc2V0IChp
b2FkZHIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICpkZXZfb3V0ID0gZGV2OwogICAgICAgIHJldHVybiAwOwoKZXJyX291dDoKICAgICAgICBfX3J0
bDgxMzlfY2xlYW51cF9kZXYgKGRldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwogICAgICAgIHJldHVybiByYzsKfQoKCnN0YXRpYyBpbnQgcnRsODEzOV9p
bml0X29uZSAoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCnsKICAgICAgICBz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gKCh2b2lkICopMCk7CiAgICAgICAgc3RydWN0IHJ0bDgx
MzlfcHJpdmF0ZSAqdHA7CiAgICAgICAgaW50IGksIGFkZHJfbGVuLCBvcHRpb247CiAgICAgICAg
dm9pZCAqaW9hZGRyOwogICAgICAgIHN0YXRpYyBpbnQgYm9hcmRfaWR4ID0gLTE7CiAgICAgICAg
dTggcGNpX3JldjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgaWYoIShw
ZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywl
cyxsaW5lPSVkXG4iLCAicGRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTUy
KTsgfTsKICAgICAgICBpZighKGVudCAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0
aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImVudCAhPSBOVUxMIiwiODEzOXRvby5j
IixfX0ZVTkNUSU9OX18sOTUzKTsgfTsKCiAgICAgICAgYm9hcmRfaWR4Kys7CgoKCgoKICAgICAg
ICB7CiAgICAgICAgICAgICAgICBzdGF0aWMgaW50IHByaW50ZWRfdmVyc2lvbjsKICAgICAgICAg
ICAgICAgIGlmICghcHJpbnRlZF92ZXJzaW9uKyspCiAgICAgICAgICAgICAgICAgICAgICAgIHBy
aW50ayAoIjw2PiIgIjgxMzl0b28iICIgRmFzdCBFdGhlcm5ldCBkcml2ZXIgIiAiMC45LjIwIiAi
XG4iKTsKICAgICAgICB9CgoKICAgICAgICBwY2lfcmVhZF9jb25maWdfYnl0ZShwZGV2LCAweDA4
LCAmcGNpX3Jldik7CgogICAgICAgIGlmIChwZGV2LT52ZW5kb3IgPT0gMHgxMGVjICYmCiAgICAg
ICAgICAgIHBkZXYtPmRldmljZSA9PSAweDgxMzkgJiYgcGNpX3JldiA+PSAweDIwKSB7CiAgICAg
ICAgICAgICAgICBwcmludGsoIjw2PiIgIjgxMzl0b28iICI6ICIgInBjaSBkZXYgJXMgKGlkICUw
NHg6JTA0eCByZXYgJTAyeCkgaXMgYW4gZW5oYW5jZWQgODEzOUMrIGNoaXBcbiIsCiAgICAgICAg
ICAgICAgICAgICAgICAgcGRldi0+c2xvdF9uYW1lLCBwZGV2LT52ZW5kb3IsIHBkZXYtPmRldmlj
ZSwgcGNpX3Jldik7CiAgICAgICAgICAgICAgICBwcmludGsoIjw2PiIgIjgxMzl0b28iICI6ICIg
IlVzZSB0aGUgXCI4MTM5Y3BcIiBkcml2ZXIgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlIGFuZCBz
dGFiaWxpdHkuXG4iKTsKICAgICAgICB9CgogICAgICAgIGkgPSBydGw4MTM5X2luaXRfYm9hcmQg
KHBkZXYsICZkZXYpOwogICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsK
ICAgICAgICB9CgogICAgICAgIHRwID0gZGV2LT5wcml2OwogICAgICAgIGlvYWRkciA9IHRwLT5t
bWlvX2FkZHI7CgogICAgICAgIGlmKCEoaW9hZGRyICE9ICgodm9pZCAqKTApKSkgeyBwcmludGso
ICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiaW9hZGRyICE9IE5VTEwi
LCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXyw5ODYpOyB9OwogICAgICAgIGlmKCEoZGV2ICE9ICgo
dm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVk
XG4iLCAiZGV2ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXyw5ODcpOyB9OwogICAg
ICAgIGlmKCEodHAgIT0gKCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQh
ICVzLCVzLCVzLGxpbmU9JWRcbiIsICJ0cCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9O
X18sOTg4KTsgfTsKCiAgICAgICAgYWRkcl9sZW4gPSByZWFkX2VlcHJvbSAoaW9hZGRyLCAwLCA4
KSA9PSAweDgxMjkgPyA4IDogNjsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQogICAg
ICAgICAgICAgICAgKCh1MTYgKikgKGRldi0+ZGV2X2FkZHIpKVtpXSA9CiAgICAgICAgICAgICAg
ICAgICAgKChfX3UxNikocmVhZF9lZXByb20gKGlvYWRkciwgaSArIDcsIGFkZHJfbGVuKSkpOwoK
CiAgICAgICAgZGV2LT5vcGVuID0gcnRsODEzOV9vcGVuOwogICAgICAgIGRldi0+aGFyZF9zdGFy
dF94bWl0ID0gcnRsODEzOV9zdGFydF94bWl0OwogICAgICAgIGRldi0+c3RvcCA9IHJ0bDgxMzlf
Y2xvc2U7CiAgICAgICAgZGV2LT5nZXRfc3RhdHMgPSBydGw4MTM5X2dldF9zdGF0czsKICAgICAg
ICBkZXYtPnNldF9tdWx0aWNhc3RfbGlzdCA9IHJ0bDgxMzlfc2V0X3J4X21vZGU7CiAgICAgICAg
ZGV2LT5kb19pb2N0bCA9IG5ldGRldl9pb2N0bDsKICAgICAgICBkZXYtPnR4X3RpbWVvdXQgPSBy
dGw4MTM5X3R4X3RpbWVvdXQ7CiAgICAgICAgZGV2LT53YXRjaGRvZ190aW1lbyA9ICg2KjEwMCk7
CiAgICAgICAgZGV2LT5mZWF0dXJlcyB8PSAxfDg7CgogICAgICAgIGRldi0+aXJxID0gcGRldi0+
aXJxOwoKCiAgICAgICAgdHAgPSBkZXYtPnByaXY7CgoKICAgICAgICB0cC0+ZHJ2X2ZsYWdzID0g
Ym9hcmRfaW5mb1tlbnQtPmRyaXZlcl9kYXRhXS5od19mbGFnczsKICAgICAgICB0cC0+bW1pb19h
ZGRyID0gaW9hZGRyOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBpbml0X3dhaXRx
dWV1ZV9oZWFkICgmdHAtPnRocl93YWl0KTsKICAgICAgICBpbml0X2NvbXBsZXRpb24gKCZ0cC0+
dGhyX2V4aXRlZCk7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIGkgPSByZWdpc3Rl
cl9uZXRkZXYgKGRldik7CiAgICAgICAgaWYgKGkpIGdvdG8gZXJyX291dDsKCiAgICAgICAgcGNp
X3NldF9kcnZkYXRhIChwZGV2LCBkZXYpOwoKICAgICAgICBwcmludGsgKCI8Nj4iICIlczogJXMg
YXQgMHglbHgsICIKICAgICAgICAgICAgICAgICIlMi4yeDolMi4yeDolMi4yeDolMi4yeDolMi4y
eDolMi4yeCwgIgogICAgICAgICAgICAgICAgIklSUSAlZFxuIiwKICAgICAgICAgICAgICAgIGRl
di0+bmFtZSwKICAgICAgICAgICAgICAgIGJvYXJkX2luZm9bZW50LT5kcml2ZXJfZGF0YV0ubmFt
ZSwKICAgICAgICAgICAgICAgIGRldi0+YmFzZV9hZGRyLAogICAgICAgICAgICAgICAgZGV2LT5k
ZXZfYWRkclswXSwgZGV2LT5kZXZfYWRkclsxXSwKICAgICAgICAgICAgICAgIGRldi0+ZGV2X2Fk
ZHJbMl0sIGRldi0+ZGV2X2FkZHJbM10sCiAgICAgICAgICAgICAgICBkZXYtPmRldl9hZGRyWzRd
LCBkZXYtPmRldl9hZGRyWzVdLAogICAgICAgICAgICAgICAgZGV2LT5pcnEpOwoKICAgICAgICBw
cmludGsgKCI8Nz4iICIlczogIElkZW50aWZpZWQgODEzOSBjaGlwIHR5cGUgJyVzJ1xuIiwKICAg
ICAgICAgICAgICAgIGRldi0+bmFtZSwgcnRsX2NoaXBfaW5mb1t0cC0+Y2hpcHNldF0ubmFtZSk7
CiMgMTA2MyAiODEzOXRvby5jIgogICAgICAgICAgICAgICAgdHAtPnBoeXNbMF0gPSAzMjsKCgog
ICAgICAgIG9wdGlvbiA9IChib2FyZF9pZHggPj0gOCkgPyAwIDogbWVkaWFbYm9hcmRfaWR4XTsK
ICAgICAgICBpZiAob3B0aW9uID4gMCkgewogICAgICAgICAgICAgICAgdHAtPmZ1bGxfZHVwbGV4
ID0gKG9wdGlvbiAmIDB4MjEwKSA/IDEgOiAwOwogICAgICAgICAgICAgICAgdHAtPmRlZmF1bHRf
cG9ydCA9IG9wdGlvbiAmIDB4RkY7CiAgICAgICAgICAgICAgICBpZiAodHAtPmRlZmF1bHRfcG9y
dCkKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPm1lZGlhbG9jayA9IDE7CiAgICAgICAgfQog
ICAgICAgIGlmIChib2FyZF9pZHggPCA4ICYmIGZ1bGxfZHVwbGV4W2JvYXJkX2lkeF0gPiAwKQog
ICAgICAgICAgICAgICAgdHAtPmZ1bGxfZHVwbGV4ID0gZnVsbF9kdXBsZXhbYm9hcmRfaWR4XTsK
ICAgICAgICBpZiAodHAtPmZ1bGxfZHVwbGV4KSB7CiAgICAgICAgICAgICAgICBwcmludGsoIjw2
PiIgIiVzOiBNZWRpYSB0eXBlIGZvcmNlZCB0byBGdWxsIER1cGxleC5cbiIsIGRldi0+bmFtZSk7
CgoKICAgICAgICAgICAgICAgIHRwLT5kdXBsZXhfbG9jayA9IDE7CiAgICAgICAgfQogICAgICAg
IGlmICh0cC0+ZGVmYXVsdF9wb3J0KSB7CiAgICAgICAgICAgICAgICBwcmludGsoIjw2PiIgIiAg
Rm9yY2luZyAlZE1icHMgJXMtZHVwbGV4IG9wZXJhdGlvbi5cbiIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChvcHRpb24gJiAweDIwID8gMTAwIDogMTApLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAob3B0aW9uICYgMHgxMCA/ICJmdWxsIiA6ICJoYWxmIikpOwogICAgICAgICAgICAg
ICAgbWRpb193cml0ZShkZXYsIHRwLT5waHlzWzBdLCAwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgob3B0aW9uICYgMHgyMCkgPyAweDIwMDAgOiAwKSB8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKChvcHRpb24gJiAweDEwKSA/IDB4MDEwMCA6IDApKTsK
ICAgICAgICB9CgoKICAgICAgICBpZiAocnRsX2NoaXBfaW5mb1t0cC0+Y2hpcHNldF0uZmxhZ3Mg
JiBIYXNIbHRDbGspCiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICop
ICgodm9pZCAqKShpb2FkZHIgKyAoSGx0Q2xrKSkpID0gKCgnSCcpKSk7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIHJldHVybiAwOwoKZXJyX291dDoK
ICAgICAgICBfX3J0bDgxMzlfY2xlYW51cF9kZXYgKGRldik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIHJldHVybiBpOwp9CgoKc3RhdGljIHZv
aWQgcnRsODEzOV9yZW1vdmVfb25lIChzdHJ1Y3QgcGNpX2RldiAqcGRldikKewogICAgICAgIHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwY2lfZ2V0X2RydmRhdGEgKHBkZXYpOwogICAgICAgIHN0
cnVjdCBydGw4MTM5X3ByaXZhdGUgKm5wOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoK
ICAgICAgICBpZighKGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZh
aWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZV
TkNUSU9OX18sMTExMSk7IH07CiAgICAgICAgbnAgPSBkZXYtPnByaXY7CiAgICAgICAgaWYoIShu
cCAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMs
bGluZT0lZFxuIiwgIm5wICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywxMTEzKTsg
fTsKCiAgICAgICAgdW5yZWdpc3Rlcl9uZXRkZXYgKGRldik7CgogICAgICAgIF9fcnRsODEzOV9j
bGVhbnVwX2RldiAoZGV2KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CiMgMTE0NSAi
ODEzOXRvby5jIgpzdGF0aWMgaW50IHJlYWRfZWVwcm9tICh2b2lkICppb2FkZHIsIGludCBsb2Nh
dGlvbiwgaW50IGFkZHJfbGVuKQp7CiAgICAgICAgaW50IGk7CiAgICAgICAgdW5zaWduZWQgcmV0
dmFsID0gMDsKICAgICAgICB2b2lkICplZV9hZGRyID0gaW9hZGRyICsgQ2ZnOTM0NjsKICAgICAg
ICBpbnQgcmVhZF9jbWQgPSBsb2NhdGlvbiB8ICgoNikgPDwgYWRkcl9sZW4pOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICop
ICgodm9pZCAqKShlZV9hZGRyKSkgPSAoKDB4ODAgfCAweDA4KSAmIH4weDA4KSk7CiAgICAgICAg
KCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoZWVfYWRkcikpID0gKCgweDgw
IHwgMHgwOCkpKTsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICop
KGVlX2FkZHIpKSk7CgoKICAgICAgICBmb3IgKGkgPSA0ICsgYWRkcl9sZW47IGkgPj0gMDsgaS0t
KSB7CiAgICAgICAgICAgICAgICBpbnQgZGF0YXZhbCA9IChyZWFkX2NtZCAmICgxIDw8IGkpKSA/
IDB4MDIgOiAwOwogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAo
KHZvaWQgKikoZWVfYWRkcikpID0gKCgweDgwIHwgMHgwOCkgfCBkYXRhdmFsKSk7CiAgICAgICAg
ICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGVlX2FkZHIpKSk7
CiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShl
ZV9hZGRyKSkgPSAoKDB4ODAgfCAweDA4KSB8IGRhdGF2YWwgfCAweDA0KSk7CiAgICAgICAgICAg
ICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGVlX2FkZHIpKSk7CiAg
ICAgICAgfQogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGVl
X2FkZHIpKSA9ICgoMHg4MCB8IDB4MDgpKSk7CiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQg
aW50ICopICgodm9pZCAqKShlZV9hZGRyKSkpOwoKICAgICAgICBmb3IgKGkgPSAxNjsgaSA+IDA7
IGktLSkgewogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZv
aWQgKikoZWVfYWRkcikpID0gKCgweDgwIHwgMHgwOCkgfCAweDA0KSk7CiAgICAgICAgICAgICAg
ICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGVlX2FkZHIpKSk7CiAgICAg
ICAgICAgICAgICByZXR2YWwgPQogICAgICAgICAgICAgICAgICAgIChyZXR2YWwgPDwgMSkgfCAo
KCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGVlX2FkZHIpKSkgJiAweDAx
KSA/IDEgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgICAg
ICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShlZV9hZGRyKSkg
PSAoKDB4ODAgfCAweDA4KSkpOwogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQg
aW50ICopICgodm9pZCAqKShlZV9hZGRyKSkpOwogICAgICAgIH0KCgogICAgICAgICgqKHZvbGF0
aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGVlX2FkZHIpKSA9ICh+MHgwOCkpOwogICAg
ICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoZWVfYWRkcikpKTsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAg
cmV0dXJuIHJldHZhbDsKfQojIDEyMDMgIjgxMzl0b28uYyIKc3RhdGljIGNoYXIgbWlpXzJfODEz
OV9tYXBbOF0gPSB7CiAgICAgICAgQmFzaWNNb2RlQ3RybCwKICAgICAgICBCYXNpY01vZGVTdGF0
dXMsCiAgICAgICAgMCwKICAgICAgICAwLAogICAgICAgIE5XYXlBZHZlcnQsCiAgICAgICAgTldh
eUxQQVIsCiAgICAgICAgTldheUV4cGFuc2lvbiwKICAgICAgICAwCn07CiMgMTIzNCAiODEzOXRv
by5jIgpzdGF0aWMgaW50IG1kaW9fcmVhZCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHBo
eV9pZCwgaW50IGxvY2F0aW9uKQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAg
PSBkZXYtPnByaXY7CiAgICAgICAgaW50IHJldHZhbCA9IDA7CgoKCgoKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKCiAgICAgICAgaWYgKHBoeV9pZCA+IDMxKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uIDwgOCAmJiBtaWlfMl84MTM5X21h
cFtsb2NhdGlvbl0gPwogICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0ICopICgodm9pZCAqKSh0cC0+bW1pb19hZGRyICsgbWlpXzJfODEzOV9tYXBbbG9jYXRpb25d
KSkpIDogMDsKICAgICAgICB9CiMgMTI3NCAiODEzOXRvby5jIgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIHJl
dHVybiAocmV0dmFsID4+IDEpICYgMHhmZmZmOwp9CgoKc3RhdGljIHZvaWQgbWRpb193cml0ZSAo
c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHBoeV9pZCwgaW50IGxvY2F0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2
YXRlICp0cCA9IGRldi0+cHJpdjsKCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoK
ICAgICAgICBpZiAocGh5X2lkID4gMzEpIHsKICAgICAgICAgICAgICAgIHZvaWQgKmlvYWRkciA9
IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgICAgICAgICBpZiAobG9jYXRpb24gPT0gMCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAq
KShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2ZnOTM0Nl9VbmxvY2spKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoQmFzaWNNb2RlQ3RybCkpKSA9ICgodmFsdWUpKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5
MzQ2KSkpID0gKChDZmc5MzQ2X0xvY2spKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxv
Y2F0aW9uIDwgOCAmJiBtaWlfMl84MTM5X21hcFtsb2NhdGlvbl0pCiAgICAgICAgICAgICAgICAg
ICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAo
bWlpXzJfODEzOV9tYXBbbG9jYXRpb25dKSkpID0gKCh2YWx1ZSkpKTsKICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICB9CiMgMTMyMiAiODEzOXRvby5jIgp9CgoKc3RhdGljIGludCBydGw4
MTM5X29wZW4gKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEz
OV9wcml2YXRlICp0cCA9IGRldi0+cHJpdjsKICAgICAgICBpbnQgcmV0dmFsOwoKCgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICByZXR2YWwgPSByZXF1ZXN0X2lycSAoZGV2
LT5pcnEsIHJ0bDgxMzlfaW50ZXJydXB0LCAweDA0MDAwMDAwLCBkZXYtPm5hbWUsIGRldik7CiAg
ICAgICAgaWYgKHJldHZhbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWw7CiAgICAg
ICAgfQoKICAgICAgICB0cC0+dHhfYnVmcyA9IHBjaV9hbGxvY19jb25zaXN0ZW50KHRwLT5wY2lf
ZGV2LCAoMTUzNiAqIDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnRwLT50eF9idWZzX2RtYSk7CiAgICAgICAgdHAtPnJ4X3JpbmcgPSBwY2lfYWxsb2NfY29u
c2lzdGVudCh0cC0+cGNpX2RldiwgKCg4MTkyIDw8IDIpICsgMTYgKyAyMDQ4KSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cC0+cnhfcmluZ19kbWEpOwogICAg
ICAgIGlmICh0cC0+dHhfYnVmcyA9PSAoKHZvaWQgKikwKSB8fCB0cC0+cnhfcmluZyA9PSAoKHZv
aWQgKikwKSkgewogICAgICAgICAgICAgICAgZnJlZV9pcnEoZGV2LT5pcnEsIGRldik7CgogICAg
ICAgICAgICAgICAgaWYgKHRwLT50eF9idWZzKQogICAgICAgICAgICAgICAgICAgICAgICBwY2lf
ZnJlZV9jb25zaXN0ZW50KHRwLT5wY2lfZGV2LCAoMTUzNiAqIDQpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50eF9idWZzLCB0cC0+dHhfYnVmc19kbWEp
OwogICAgICAgICAgICAgICAgaWYgKHRwLT5yeF9yaW5nKQogICAgICAgICAgICAgICAgICAgICAg
ICBwY2lfZnJlZV9jb25zaXN0ZW50KHRwLT5wY2lfZGV2LCAoKDgxOTIgPDwgMikgKyAxNiArIDIw
NDgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5yeF9y
aW5nLCB0cC0+cnhfcmluZ19kbWEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICByZXR1cm4gLTEyOwoKICAgICAg
ICB9CgogICAgICAgIHRwLT5mdWxsX2R1cGxleCA9IHRwLT5kdXBsZXhfbG9jazsKICAgICAgICB0
cC0+dHhfZmxhZyA9ICgyNTYgPDwgMTEpICYgMHgwMDNmMDAwMDsKICAgICAgICB0cC0+dHdpc3Rp
ZSA9IDE7CgogICAgICAgIHJ0bDgxMzlfaW5pdF9yaW5nIChkZXYpOwogICAgICAgIHJ0bDgxMzlf
aHdfc3RhcnQgKGRldik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwoKCgoKCiAgICAgICAgdHAtPnRocl9waWQgPSBrZXJuZWxfdGhy
ZWFkIChydGw4MTM5X3RocmVhZCwgZGV2LCAweDAwMDAwMjAwIHwgMHgwMDAwMDQwMCk7CiAgICAg
ICAgaWYgKHRwLT50aHJfcGlkIDwgMCkKICAgICAgICAgICAgICAgIHByaW50ayAoIjw0PiIgIiVz
OiB1bmFibGUgdG8gc3RhcnQga2VybmVsIHRocmVhZFxuIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2LT5uYW1lKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
ICAgICAgICByZXR1cm4gMDsKfQoKCnN0YXRpYyB2b2lkIHJ0bF9jaGVja19tZWRpYSAoc3RydWN0
IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0g
ZGV2LT5wcml2OwoKICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgIGlmICh0cC0+
cGh5c1swXSA+PSAwKSB7CiAgICAgICAgICAgICAgICB1MTYgbWlpX3JlZzUgPSBtZGlvX3JlYWQo
ZGV2LCB0cC0+cGh5c1swXSwgNSk7CiAgICAgICAgICAgICAgICBpZiAobWlpX3JlZzUgPT0gMHhm
ZmZmKQogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBlbHNlIGlmICgo
bWlpX3JlZzUgJiAweDAxMDApID09IDB4MDEwMAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8fCAobWlpX3JlZzUgJiAweDAwQzApID09IDB4MDA0MCkKICAgICAgICAgICAgICAgICAg
ICAgICAgdHAtPmZ1bGxfZHVwbGV4ID0gMTsKCiAgICAgICAgICAgICAgICBwcmludGsgKCI8Nj4i
IiVzOiBTZXR0aW5nICVzJXMtZHVwbGV4IGJhc2VkIG9uIgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgYXV0by1uZWdvdGlhdGVkIHBhcnRuZXIgYWJpbGl0eSAlNC40eC5cbiIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGRldi0+bmFtZSwgbWlpX3JlZzUgPT0gMCA/ICIiIDoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWlpX3JlZzUgJiAweDAxODApID8gIjEwMG1i
cHMgIiA6ICIxMG1icHMgIiwKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPmZ1bGxfZHVwbGV4
ID8gImZ1bGwiIDogImhhbGYiLCBtaWlfcmVnNSk7CiAgICAgICAgfQp9CgoKc3RhdGljIHZvaWQg
cnRsODEzOV9od19zdGFydCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVj
dCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIHZvaWQgKmlvYWRkciA9
IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgdTMyIGk7CiAgICAgICAgdTggdG1wOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAgaWYgKHJ0bF9jaGlwX2luZm9bdHAtPmNoaXBz
ZXRdLmZsYWdzICYgSGFzSGx0Q2xrKQogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWdu
ZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEhsdENsaykpKSA9ICgoJ1InKSkpOwoKICAg
ICAgICBydGw4MTM5X2NoaXBfcmVzZXQgKGlvYWRkcik7CgoKICAgICAgICBkbyB7ICgqKHZvbGF0
aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChD
Zmc5MzQ2X1VubG9jaykpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKiko
aW9hZGRyICsgKENmZzkzNDYpKSkpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgZG8geyAoKih2b2xh
dGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChNQUMwICsgMCkpKSA9ICgo
KChfX3UzMikoKih1MzIgKikgKGRldi0+ZGV2X2FkZHIgKyAwKSkpKSkpOyAoKih2b2xhdGlsZSB1
bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChNQUMwICsgMCkpKSk7IH0gd2hpbGUg
KDApOwogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShp
b2FkZHIgKyAoTUFDMCArIDQpKSkgPSAoKCgoX191MzIpKCoodTMyICopIChkZXYtPmRldl9hZGRy
ICsgNCkpKSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIg
KyAoTUFDMCArIDQpKSkpOyB9IHdoaWxlICgwKTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2ln
bmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKChDbWRSeEVuYiB8
IENtZFR4RW5iKSkpOwoKICAgICAgICB0cC0+cnhfY29uZmlnID0gcnRsODEzOV9yeF9jb25maWcg
fCBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXM7CiAgICAgICAgKCoodm9sYXRpbGUgdW5z
aWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhDb25maWcpKSkgPSAoKHRwLT5yeF9j
b25maWcpKSk7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICop
KGlvYWRkciArIChUeENvbmZpZykpKSA9ICgoKDYgPDwgVHhETUFTaGlmdCkpKSk7CgogICAgICAg
IHRwLT5jdXJfcnggPSAwOwoKICAgICAgICBydGxfY2hlY2tfbWVkaWEgKGRldik7CgogICAgICAg
IGlmICh0cC0+Y2hpcHNldCA+PSBDSF84MTM5QikgewoKCgogICAgICAgICAgICAgICAgKCoodm9s
YXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzMpKSkgPSAo
KCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcz
KSkpKSAmIH5DZmczX01hZ2ljKSkpOwogICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIg
KikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2X0xvY2spKSk7CgoK
ICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKFJ4QnVmKSkpID0gKCh0cC0+cnhfcmluZ19kbWEpKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4QnVmKSkpKTsgfSB3aGlsZSAoMCk7CgoKICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQogICAgICAgICAgICAgICAgZG8geyAoKih2b2xh
dGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeEFkZHIwICsgKGkgKiA0
KSkpKSA9ICgodHAtPnR4X2J1ZnNfZG1hICsgKHRwLT50eF9idWZbaV0gLSB0cC0+dHhfYnVmcykp
KSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4QWRk
cjAgKyAoaSAqIDQpKSkpKTsgfSB3aGlsZSAoMCk7CgogICAgICAgICgqKHZvbGF0aWxlIHVuc2ln
bmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4TWlzc2VkKSkpID0gKCgwKSkpOwoKICAg
ICAgICBydGw4MTM5X3NldF9yeF9tb2RlIChkZXYpOwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChNdWx0aUludHIpKSkgPSAoKCgqKHZv
bGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoTXVsdGlJbnRyKSkp
KSAmIE11bHRpSW50ckNsZWFyKSkpOwoKCiAgICAgICAgdG1wID0gKCoodm9sYXRpbGUgdW5zaWdu
ZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpOwogICAgICAgIGlmICgo
ISh0bXAgJiBDbWRSeEVuYikpIHx8ICghKHRtcCAmIENtZFR4RW5iKSkpCiAgICAgICAgICAgICAg
ICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENt
ZCkpKSA9ICgoQ21kUnhFbmIgfCBDbWRUeEVuYikpKTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVu
c2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoSW50ck1hc2spKSkgPSAoKHJ0bDgx
MzlfaW50cl9tYXNrKSkpOwoKICAgICAgICBuZXRpZl9zdGFydF9xdWV1ZSAoZGV2KTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwp9CgoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfaW5pdF9yaW5n
IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0
ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAgaW50IGk7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CgogICAgICAgIHRwLT5jdXJfcnggPSAwOwogICAgICAgIHRwLT5jdXJfdHggPSAwOwog
ICAgICAgIHRwLT5kaXJ0eV90eCA9IDA7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKysp
IHsKICAgICAgICAgICAgICAgIHRwLT50eF9pbmZvW2ldLnNrYiA9ICgodm9pZCAqKTApOwogICAg
ICAgICAgICAgICAgdHAtPnR4X2luZm9baV0ubWFwcGluZyA9IDA7CiAgICAgICAgICAgICAgICB0
cC0+dHhfYnVmW2ldID0gJnRwLT50eF9idWZzW2kgKiAxNTM2XTsKICAgICAgICB9CgogICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKfQoKCgpzdGF0aWMgaW50IG5leHRfdGljayA9IDMgKiAxMDA7
CgoKc3RhdGljIGlubGluZSB2b2lkIHJ0bDgxMzlfdHVuZV90d2lzdGVyIChzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0bDgx
MzlfcHJpdmF0ZSAqdHApIHt9CiMgMTYwMCAiODEzOXRvby5jIgpzdGF0aWMgaW5saW5lIHZvaWQg
cnRsODEzOV90aHJlYWRfaXRlciAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlvYWRkcikKewogICAgICAgIGludCBtaWlf
cmVnNTsKCiAgICAgICAgbWlpX3JlZzUgPSBtZGlvX3JlYWQgKGRldiwgdHAtPnBoeXNbMF0sIDUp
OwoKICAgICAgICBpZiAoIXRwLT5kdXBsZXhfbG9jayAmJiBtaWlfcmVnNSAhPSAweGZmZmYpIHsK
ICAgICAgICAgICAgICAgIGludCBkdXBsZXggPSAobWlpX3JlZzUgJiAweDAxMDApCiAgICAgICAg
ICAgICAgICAgICAgfHwgKG1paV9yZWc1ICYgMHgwMUMwKSA9PSAweDAwNDA7CiAgICAgICAgICAg
ICAgICBpZiAodHAtPmZ1bGxfZHVwbGV4ICE9IGR1cGxleCkgewogICAgICAgICAgICAgICAgICAg
ICAgICB0cC0+ZnVsbF9kdXBsZXggPSBkdXBsZXg7CgogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobWlpX3JlZzUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGsgKCI8
Nj4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6IFNldHRpbmcg
JXMtZHVwbGV4IGJhc2VkIG9uIE1JSSAjJWQgbGluayIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgcGFydG5lciBhYmlsaXR5IG9mICU0LjR4LlxuIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+bmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5mdWxsX2R1cGxleCA/ICJmdWxsIiA6ICJoYWxm
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5waHlzWzBdLCBt
aWlfcmVnNSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRrKCI8Nj4iIiVzOiBtZWRpYSBpcyB1bmNvbm5lY3RlZCwg
bGluayBkb3duLCBvciBpbmNvbXBhdGlibGUgY29ubmVjdGlvblxuIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5uYW1lKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQoKCgoKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBuZXh0X3RpY2sg
PSAxMDAgKiA2MDsKCiAgICAgICAgcnRsODEzOV90dW5lX3R3aXN0ZXIgKGRldiwgdHApOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgoKfQoKCnN0YXRpYyBpbnQgcnRsODEzOV90aHJlYWQgKHZvaWQgKmRh
dGEpCnsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZGF0YTsKICAgICAgICBzdHJ1
Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+cHJpdjsKICAgICAgICB1bnNpZ25lZCBsb25n
IHRpbWVvdXQ7CgogICAgICAgIGRhZW1vbml6ZSAoKTsKICAgICAgICByZXBhcmVudF90b19pbml0
KCk7CiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIp
OyAodm9pZCkoJmdldF9jdXJyZW50KCktPnNpZ21hc2tfbG9jayk7IH0gd2hpbGUgKDApOwogICAg
ICAgIHNpZ2VtcHR5c2V0KCZnZXRfY3VycmVudCgpLT5ibG9ja2VkKTsKICAgICAgICByZWNhbGNf
c2lncGVuZGluZyhnZXRfY3VycmVudCgpKTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsg
X19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cgog
ICAgICAgIHN0cm5jcHkgKGdldF9jdXJyZW50KCktPmNvbW0sIGRldi0+bmFtZSwgc2l6ZW9mKGdl
dF9jdXJyZW50KCktPmNvbW0pIC0gMSk7CiAgICAgICAgZ2V0X2N1cnJlbnQoKS0+Y29tbVtzaXpl
b2YoZ2V0X2N1cnJlbnQoKS0+Y29tbSkgLSAxXSA9ICdcMCc7CgogICAgICAgIHdoaWxlICgxKSB7
CiAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbmV4dF90aWNrOwogICAgICAgICAgICAgICAgZG8g
ewogICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gaW50ZXJydXB0aWJsZV9zbGVlcF9v
bl90aW1lb3V0ICgmdHAtPnRocl93YWl0LCB0aW1lb3V0KTsKICAgICAgICAgICAgICAgIH0gd2hp
bGUgKCFzaWduYWxfcGVuZGluZyAoZ2V0X2N1cnJlbnQoKSkgJiYgKHRpbWVvdXQgPiAwKSk7Cgog
ICAgICAgICAgICAgICAgaWYgKHNpZ25hbF9wZW5kaW5nIChnZXRfY3VycmVudCgpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgcnRubF9sb2NrICgpOwog
ICAgICAgICAgICAgICAgcnRsODEzOV90aHJlYWRfaXRlciAoZGV2LCB0cCwgdHAtPm1taW9fYWRk
cik7CiAgICAgICAgICAgICAgICBydG5sX3VubG9jayAoKTsKICAgICAgICB9CgogICAgICAgIGNv
bXBsZXRlX2FuZF9leGl0ICgmdHAtPnRocl9leGl0ZWQsIDApOwp9CgoKc3RhdGljIHZvaWQgcnRs
ODEzOV90eF9jbGVhciAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHApCnsKICAgICAgICBpbnQg
aTsKCiAgICAgICAgdHAtPmN1cl90eCA9IDA7CiAgICAgICAgdHAtPmRpcnR5X3R4ID0gMDsKCgog
ICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBy
aW5nX2luZm8gKnJwID0gJnRwLT50eF9pbmZvW2ldOwogICAgICAgICAgICAgICAgaWYgKHJwLT5t
YXBwaW5nICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3VubWFwX3NpbmdsZSAo
dHAtPnBjaV9kZXYsIHJwLT5tYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBycC0+c2tiLT5sZW4sIDEpOwogICAgICAgICAgICAgICAgICAgICAgICBycC0+
bWFwcGluZyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocnAtPnNr
YikgewogICAgICAgICAgICAgICAgICAgICAgICBrZnJlZV9za2IocnAtPnNrYik7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJwLT5za2IgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgdHAtPnN0YXRzLnR4X2Ryb3BwZWQrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9
Cn0KCgpzdGF0aWMgdm9pZCBydGw4MTM5X3R4X3RpbWVvdXQgKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+cHJpdjsKICAg
ICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAgIGludCBpOwogICAgICAg
IHU4IHRtcDg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwoKCgoKCiAgICAgICAgdHAtPnhzdGF0cy50eF90aW1lb3V0
cysrOwoKCiAgICAgICAgdG1wOCA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lk
ICopKGlvYWRkciArIChDaGlwQ21kKSkpKTsKICAgICAgICBpZiAodG1wOCAmIENtZFR4RW5iKQog
ICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9h
ZGRyICsgKENoaXBDbWQpKSkgPSAoKENtZFJ4RW5iKSkpOwoKCiAgICAgICAgKCoodm9sYXRpbGUg
dW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRyTWFzaykpKSA9ICgoMHgw
MDAwKSkpOwoKCiAgICAgICAgcHJpbnRrICgiPDc+IiAiJXM6IFR4IHF1ZXVlIHN0YXJ0IGVudHJ5
ICVsZCAgZGlydHkgZW50cnkgJWxkLlxuIiwKICAgICAgICAgICAgICAgIGRldi0+bmFtZSwgdHAt
PmN1cl90eCwgdHAtPmRpcnR5X3R4KTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQog
ICAgICAgICAgICAgICAgcHJpbnRrICgiPDc+IiAiJXM6ICBUeCBkZXNjcmlwdG9yICVkIGlzICU4
LjhseC4lc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5uYW1lLCBpLCAoKHVuc2ln
bmVkIGxvbmcpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsg
KFR4U3RhdHVzMCArIChpICogNCkpKSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9PSB0
cC0+ZGlydHlfdHggJSA0ID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIChxdWV1
ZSBoZWFkKSIgOiAiIik7CgoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
ZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmdHAt
PmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBydGw4MTM5X3R4X2NsZWFyICh0cCk7CiAgICAg
ICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7
IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CgoKICAg
ICAgICBydGw4MTM5X2h3X3N0YXJ0IChkZXYpOwoKICAgICAgICBuZXRpZl93YWtlX3F1ZXVlIChk
ZXYpOwp9CgoKc3RhdGljIGludCBydGw4MTM5X3N0YXJ0X3htaXQgKHN0cnVjdCBza19idWZmICpz
a2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2
YXRlICp0cCA9IGRldi0+cHJpdjsKICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRy
OwogICAgICAgIHVuc2lnbmVkIGludCBlbnRyeTsKICAgICAgICB1MzIgZG1hX2FkZHI7CgogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJt
ZW1vcnkiKTsKCgogICAgICAgIGVudHJ5ID0gdHAtPmN1cl90eCAlIDQ7CgogICAgICAgIGlmKCEo
dHAtPnR4X2luZm9bZW50cnldLnNrYiA9PSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0
aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgInRwLT50eF9pbmZvW2VudHJ5XS5za2Ig
PT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDE3NjUpOyB9OwogICAgICAgIGlmKCEo
dHAtPnR4X2luZm9bZW50cnldLm1hcHBpbmcgPT0gMCkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZh
aWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgInRwLT50eF9pbmZvW2VudHJ5XS5tYXBwaW5nID09
IDAiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywxNzY2KTsgfTsKCiAgICAgICAgdHAtPnR4X2lu
Zm9bZW50cnldLnNrYiA9IHNrYjsKICAgICAgICBpZiAoICEoKHVuc2lnbmVkIGxvbmcpc2tiLT5k
YXRhICYgMykgJiYgKChzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvICopKChza2IpLT5lbmQpKS0+bnJf
ZnJhZ3MgPT0gMCAmJgogICAgICAgICAgICAgICAgICAgICAgICBza2ItPmlwX3N1bW1lZCAhPSAx
KSB7CiAgICAgICAgICAgICAgICB0cC0+eHN0YXRzLnR4X2J1Zl9tYXBwZWQrKzsKICAgICAgICAg
ICAgICAgIHRwLT50eF9pbmZvW2VudHJ5XS5tYXBwaW5nID0KICAgICAgICAgICAgICAgICAgICBw
Y2lfbWFwX3NpbmdsZSAodHAtPnBjaV9kZXYsIHNrYi0+ZGF0YSwgc2tiLT5sZW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwogICAgICAgICAgICAgICAgZG1hX2FkZHIg
PSB0cC0+dHhfaW5mb1tlbnRyeV0ubWFwcGluZzsKICAgICAgICB9IGVsc2UgaWYgKHNrYi0+bGVu
IDwgMTUzNikgewogICAgICAgICAgICAgICAgc2tiX2NvcHlfYW5kX2NzdW1fZGV2KHNrYiwgdHAt
PnR4X2J1ZltlbnRyeV0pOwogICAgICAgICAgICAgICAgZG1hX2FkZHIgPSB0cC0+dHhfYnVmc19k
bWEgKyAodHAtPnR4X2J1ZltlbnRyeV0gLSB0cC0+dHhfYnVmcyk7CiAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwogICAgICAgICAgICAgICAgdHAtPnR4X2lu
Zm9bZW50cnldLnNrYiA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgfQoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVt
b3J5Iik7ICh2b2lkKSgmdHAtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7ICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4QWRkcjAgKyAoZW50
cnkgKiA0KSkpKSA9ICgoZG1hX2FkZHIpKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKFR4QWRkcjAgKyAoZW50cnkgKiA0KSkpKSk7IH0gd2hpbGUgKDAp
OwogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoVHhTdGF0dXMwICsgKGVudHJ5ICogc2l6ZW9mICh1MzIpKSkpKSA9ICgodHAtPnR4X2Zs
YWcgfCAoc2tiLT5sZW4gPj0gNjAgPyBza2ItPmxlbiA6IDYwKSkpKTsgKCoodm9sYXRpbGUgdW5z
aWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhTdGF0dXMwICsgKGVudHJ5ICogc2l6
ZW9mICh1MzIpKSkpKSk7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgZGV2LT50cmFuc19zdGFydCA9
IGppZmZpZXM7CgogICAgICAgIHRwLT5jdXJfdHgrKzsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgaWYg
KCh0cC0+Y3VyX3R4IC0gNCkgPT0gdHAtPmRpcnR5X3R4KQogICAgICAgICAgICAgICAgbmV0aWZf
c3RvcF9xdWV1ZSAoZGV2KTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBf
X3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAg
cmV0dXJuIDA7Cn0KCgpzdGF0aWMgdm9pZCBydGw4MTM5X3R4X2ludGVycnVwdCAoc3RydWN0IG5l
dF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBy
dGw4MTM5X3ByaXZhdGUgKnRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqaW9hZGRyKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJ0eV90eCwgdHhfbGVmdDsKCiAg
ICAgICAgaWYoIShkZXYgIT0gKCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWls
ZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJkZXYgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5D
VElPTl9fLDE4MTEpOyB9OwogICAgICAgIGlmKCEodHAgIT0gKCh2b2lkICopMCkpKSB7IHByaW50
ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJ0cCAhPSBOVUxMIiwi
ODEzOXRvby5jIixfX0ZVTkNUSU9OX18sMTgxMik7IH07CiAgICAgICAgaWYoIShpb2FkZHIgIT0g
KCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9
JWRcbiIsICJpb2FkZHIgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDE4MTMpOyB9
OwoKICAgICAgICBkaXJ0eV90eCA9IHRwLT5kaXJ0eV90eDsKICAgICAgICB0eF9sZWZ0ID0gdHAt
PmN1cl90eCAtIGRpcnR5X3R4OwogICAgICAgIHdoaWxlICh0eF9sZWZ0ID4gMCkgewogICAgICAg
ICAgICAgICAgaW50IGVudHJ5ID0gZGlydHlfdHggJSA0OwogICAgICAgICAgICAgICAgaW50IHR4
c3RhdHVzOwoKICAgICAgICAgICAgICAgIHR4c3RhdHVzID0gKCh1bnNpZ25lZCBsb25nKSAoKih2
b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeFN0YXR1czAgKyAo
ZW50cnkgKiBzaXplb2YgKHUzMikpKSkpKSk7CgogICAgICAgICAgICAgICAgaWYgKCEodHhzdGF0
dXMgJiAoVHhTdGF0T0sgfCBUeFVuZGVycnVuIHwgVHhBYm9ydGVkKSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwoKCiAgICAgICAgICAgICAgICBpZiAodHhzdGF0dXMgJiAoVHhPdXRP
ZldpbmRvdyB8IFR4QWJvcnRlZCkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRz
LnR4X2Vycm9ycysrOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHhzdGF0dXMgJiBUeEFi
b3J0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMudHhfYWJv
cnRlZF9lcnJvcnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7ICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4Q29uZmlnKSkpID0g
KChUeENsZWFyQWJ0IHwgKDYgPDwgVHhETUFTaGlmdCkpKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4Q29uZmlnKSkpKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR4c3Rh
dHVzICYgVHhDYXJyaWVyTG9zdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+
c3RhdHMudHhfY2Fycmllcl9lcnJvcnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR4
c3RhdHVzICYgVHhPdXRPZldpbmRvdykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cC0+c3RhdHMudHhfd2luZG93X2Vycm9ycysrOwoKCgoKICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eHN0YXR1cyAmIFR4VW5kZXJydW4pIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwLT50eF9mbGFnIDwgMHgwMDMwMDAw
MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50eF9mbGFnICs9
IDB4MDAwMjAwMDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnR4
X2ZpZm9fZXJyb3JzKys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgdHAtPnN0YXRzLmNvbGxpc2lvbnMgKz0gKHR4c3RhdHVzID4+IDI0KSAmIDE1Owog
ICAgICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMudHhfYnl0ZXMgKz0gdHhzdGF0dXMgJiAw
eDdmZjsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnR4X3BhY2tldHMrKzsKICAg
ICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgaWYgKHRwLT50eF9pbmZvW2VudHJ5XS5t
YXBwaW5nICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3VubWFwX3NpbmdsZSh0
cC0+cGNpX2RldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+
dHhfaW5mb1tlbnRyeV0ubWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cC0+dHhfaW5mb1tlbnRyeV0uc2tiLT5sZW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50eF9p
bmZvW2VudHJ5XS5tYXBwaW5nID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IGRldl9rZnJlZV9za2JfaXJxICh0cC0+dHhfaW5mb1tlbnRyeV0uc2tiKTsKICAgICAgICAgICAg
ICAgIHRwLT50eF9pbmZvW2VudHJ5XS5za2IgPSAoKHZvaWQgKikwKTsKCiAgICAgICAgICAgICAg
ICBkaXJ0eV90eCsrOwogICAgICAgICAgICAgICAgdHhfbGVmdC0tOwogICAgICAgIH0KCgogICAg
ICAgIGlmICh0cC0+Y3VyX3R4IC0gZGlydHlfdHggPiA0KSB7CiAgICAgICAgICAgICAgICBwcmlu
dGsgKCI8Mz4iICIlczogT3V0LW9mLXN5bmMgZGlydHkgcG9pbnRlciwgJWxkIHZzLiAlbGQuXG4i
LAogICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUsIGRpcnR5X3R4LCB0cC0+Y3VyX3R4
KTsKICAgICAgICAgICAgICAgIGRpcnR5X3R4ICs9IDQ7CiAgICAgICAgfQoKCgogICAgICAgIGlm
ICh0cC0+ZGlydHlfdHggIT0gZGlydHlfdHgpIHsKICAgICAgICAgICAgICAgIHRwLT5kaXJ0eV90
eCA9IGRpcnR5X3R4OwogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2Nr
OyBhZGRsICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgaWYgKG5l
dGlmX3F1ZXVlX3N0b3BwZWQgKGRldikpCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldGlmX3dh
a2VfcXVldWUgKGRldik7CiAgICAgICAgfQp9CgoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfcnhfZXJy
ICh1MzIgcnhfc3RhdHVzLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAsIHZvaWQgKmlvYWRkcikKewog
ICAgICAgIHU4IHRtcDg7CiAgICAgICAgaW50IHRtcF93b3JrOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgIGlmIChyeF9zdGF0dXMgJiBSeFRvb0xvbmcp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogICAg
ICAgIH0KICAgICAgICB0cC0+c3RhdHMucnhfZXJyb3JzKys7CiAgICAgICAgaWYgKHJ4X3N0YXR1
cyAmIChSeEJhZFN5bWJvbCB8IFJ4QmFkQWxpZ24pKQogICAgICAgICAgICAgICAgdHAtPnN0YXRz
LnJ4X2ZyYW1lX2Vycm9ycysrOwogICAgICAgIGlmIChyeF9zdGF0dXMgJiAoUnhSdW50IHwgUnhU
b29Mb25nKSkKICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7CiAg
ICAgICAgaWYgKHJ4X3N0YXR1cyAmIFJ4Q1JDRXJyKQogICAgICAgICAgICAgICAgdHAtPnN0YXRz
LnJ4X2NyY19lcnJvcnMrKzsKCgoKCiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBj
aGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoQ21kVHhFbmIpKSk7ICgq
KHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkp
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgdG1wX3dvcmsgPSAyMDA7CiAgICAgICAgd2hpbGUgKC0t
dG1wX3dvcmsgPiAwKSB7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMSkg
PyAoKDEpID4gMjAwMDAgPyBfX2JhZF91ZGVsYXkoKSA6IF9fY29uc3RfdWRlbGF5KCgxKSAqIDB4
MTBjNnVsKSkgOiBfX3VkZWxheSgxKSk7CiAgICAgICAgICAgICAgICB0bXA4ID0gKCoodm9sYXRp
bGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpOwogICAg
ICAgICAgICAgICAgaWYgKCEodG1wOCAmIENtZFJ4RW5iKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmICh0bXBfd29yayA8PSAwKQogICAgICAgICAg
ICAgICAgcHJpbnRrICgiPDQ+IiAiODEzOXRvbyIgIjogIiAicnggc3RvcCB3YWl0IHRvbyBsb25n
XG4iKTsKCiAgICAgICAgdG1wX3dvcmsgPSAyMDA7CiAgICAgICAgd2hpbGUgKC0tdG1wX3dvcmsg
PiAwKSB7CiAgICAgICAgICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikg
KCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKChDbWRSeEVuYiB8IENtZFR4RW5iKSkp
OyAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENt
ZCkpKSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9w
KDEpID8gKCgxKSA+IDIwMDAwID8gX19iYWRfdWRlbGF5KCkgOiBfX2NvbnN0X3VkZWxheSgoMSkg
KiAweDEwYzZ1bCkpIDogX191ZGVsYXkoMSkpOwogICAgICAgICAgICAgICAgdG1wOCA9ICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpKTsK
ICAgICAgICAgICAgICAgIGlmICgodG1wOCAmIENtZFJ4RW5iKSAmJiAodG1wOCAmIENtZFR4RW5i
KSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmICh0
bXBfd29yayA8PSAwKQogICAgICAgICAgICAgICAgcHJpbnRrICgiPDQ+IiAiODEzOXRvbyIgIjog
IiAidHgvcnggZW5hYmxlIHdhaXQgdG9vIGxvbmdcbiIpOwoKCiAgICAgICAgZG8geyAoKih2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgo
Q2ZnOTM0Nl9VbmxvY2spKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICop
KGlvYWRkciArIChDZmc5MzQ2KSkpKTsgfSB3aGlsZSAoMCk7CgogICAgICAgICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKChDbWRS
eEVuYiB8IENtZFR4RW5iKSkpOwoKICAgICAgICB0cC0+cnhfY29uZmlnID0gcnRsODEzOV9yeF9j
b25maWcgfCBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXM7CiAgICAgICAgKCoodm9sYXRp
bGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhDb25maWcpKSkgPSAoKHRw
LT5yeF9jb25maWcpKSk7CiAgICAgICAgdHAtPmN1cl9yeCA9IDA7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25l
ZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2ZnOTM0Nl9Mb2Nr
KSkpOwoKCiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICop
KGlvYWRkciArIChSeEJ1ZikpKSA9ICgodHAtPnJ4X3JpbmdfZG1hKSkpOyAoKih2b2xhdGlsZSB1
bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeEJ1ZikpKSk7IH0gd2hpbGUgKDAp
OwoKCiAgICAgICAgX19zZXRfcnhfbW9kZSAoZGV2KTsKfQoKc3RhdGljIHZvaWQgcnRsODEzOV9y
eF9pbnRlcnJ1cHQgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCwgdm9pZCAqaW9hZGRyKQp7
CiAgICAgICAgdW5zaWduZWQgY2hhciAqcnhfcmluZzsKICAgICAgICB1MTYgY3VyX3J4OwoKICAg
ICAgICBpZighKGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxl
ZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNU
SU9OX18sMTk2Myk7IH07CiAgICAgICAgaWYoISh0cCAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRr
KCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgInRwICE9IE5VTEwiLCI4
MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywxOTY0KTsgfTsKICAgICAgICBpZighKGlvYWRkciAhPSAo
KHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0l
ZFxuIiwgImlvYWRkciAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sMTk2NSk7IH07
CgogICAgICAgIHJ4X3JpbmcgPSB0cC0+cnhfcmluZzsKICAgICAgICBjdXJfcnggPSB0cC0+Y3Vy
X3J4OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwoKCgoKICAgICAgICB3aGlsZSAoKCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2
b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpKSAmIFJ4QnVmRW1wdHkpID09IDApIHsKICAgICAg
ICAgICAgICAgIGludCByaW5nX29mZnNldCA9IGN1cl9yeCAlICg4MTkyIDw8IDIpOwogICAgICAg
ICAgICAgICAgdTMyIHJ4X3N0YXR1czsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByeF9z
aXplOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBrdF9zaXplOwogICAgICAgICAgICAg
ICAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CgoKICAgICAgICAg
ICAgICAgIHJ4X3N0YXR1cyA9ICgoX191MzIpKCoodTMyICopIChyeF9yaW5nICsgcmluZ19vZmZz
ZXQpKSk7CiAgICAgICAgICAgICAgICByeF9zaXplID0gcnhfc3RhdHVzID4+IDE2OwogICAgICAg
ICAgICAgICAgcGt0X3NpemUgPSByeF9zaXplIC0gNDsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwojIDIwMDMgIjgxMzl0b28uYyIKICAgICAgICAgICAgICAgIGlm
IChyeF9zaXplID09IDB4ZmZmMCkgewogICAgICAgICAgICAgICAgICAgICAgICB0cC0+eHN0YXRz
LmVhcmx5X3J4Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgfQoKCgoKCgogICAgICAgICAgICAgICAgaWYgKChyeF9zaXplID4gKDE1MzYgKzQpKSB8fAog
ICAgICAgICAgICAgICAgICAgIChyeF9zaXplIDwgOCkgfHwKICAgICAgICAgICAgICAgICAgICAo
IShyeF9zdGF0dXMgJiBSeFN0YXR1c09LKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcnRs
ODEzOV9yeF9lcnIgKHJ4X3N0YXR1cywgZGV2LCB0cCwgaW9hZGRyKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQojIDIwMjkgIjgxMzl0b28uYyIKICAg
ICAgICAgICAgICAgIHNrYiA9IGRldl9hbGxvY19za2IgKHBrdF9zaXplICsgMik7CiAgICAgICAg
ICAgICAgICBpZiAoc2tiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNrYi0+ZGV2ID0gZGV2
OwogICAgICAgICAgICAgICAgICAgICAgICBza2JfcmVzZXJ2ZSAoc2tiLCAyKTsKCiAgICAgICAg
ICAgICAgICAgICAgICAgIGV0aF9jb3B5X2FuZF9zdW0gKHNrYiwgJnJ4X3JpbmdbcmluZ19vZmZz
ZXQgKyA0XSwgcGt0X3NpemUsIDApOwogICAgICAgICAgICAgICAgICAgICAgICBza2JfcHV0IChz
a2IsIHBrdF9zaXplKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHNrYi0+cHJvdG9jb2wgPSBl
dGhfdHlwZV90cmFucyAoc2tiLCBkZXYpOwogICAgICAgICAgICAgICAgICAgICAgICBuZXRpZl9y
eCAoc2tiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5sYXN0X3J4ID0gamlmZmllczsK
ICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X2J5dGVzICs9IHBrdF9zaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfcGFja2V0cysrOwogICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrICgiPDQ+IgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczogTWVtb3J5IHNxdWVlemUsIGRyb3BwaW5n
IHBhY2tldC5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5uYW1lKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X2Ryb3BwZWQrKzsKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICBjdXJfcnggPSAoY3VyX3J4ICsgcnhfc2l6ZSArIDQg
KyAzKSAmIH4zOwogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikg
KCh2b2lkICopKGlvYWRkciArIChSeEJ1ZlB0cikpKSA9ICgoY3VyX3J4IC0gMTYpKSk7CgogICAg
ICAgICAgICAgICAgaWYgKCgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShp
b2FkZHIgKyAoSW50clN0YXR1cykpKSkgJiBSeEFja0JpdHMpCiAgICAgICAgICAgICAgICAgICAg
ICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciAr
IChJbnRyU3RhdHVzKSkpID0gKChSeEFja0JpdHMpKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoSW50clN0YXR1cykpKSk7IH0gd2hpbGUgKDApOwog
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCgoKCiAgICAgICAgdHAtPmN1cl9yeCA9IGN1cl9yeDsKCiAgICAgICAgaWYgKCgo
Kih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkp
KSkgJiBSeEJ1ZkVtcHR5KSAmJgogICAgICAgICAgICAoKCoodm9sYXRpbGUgdW5zaWduZWQgc2hv
cnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRyU3RhdHVzKSkpKSAmIFJ4QWNrQml0cykpCiAg
ICAgICAgICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAq
KShpb2FkZHIgKyAoSW50clN0YXR1cykpKSA9ICgoUnhBY2tCaXRzKSkpOyAoKih2b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkpOyB9IHdo
aWxlICgwKTsKfQoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfd2VpcmRfaW50ZXJydXB0IChzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICppb2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc3RhdHVzLCBpbnQgbGlua19jaGFuZ2VkKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwoKCiAgICAgICAgaWYoIShkZXYgIT0gKCh2b2lkICopMCkpKSB7IHByaW50aygg
IkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJkZXYgIT0gTlVMTCIsIjgx
Mzl0b28uYyIsX19GVU5DVElPTl9fLDIwNzcpOyB9OwogICAgICAgIGlmKCEodHAgIT0gKCh2b2lk
ICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIs
ICJ0cCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sMjA3OCk7IH07CiAgICAgICAg
aWYoIShpb2FkZHIgIT0gKCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQh
ICVzLCVzLCVzLGxpbmU9JWRcbiIsICJpb2FkZHIgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5D
VElPTl9fLDIwNzkpOyB9OwoKCiAgICAgICAgdHAtPnN0YXRzLnJ4X21pc3NlZF9lcnJvcnMgKz0g
KCh1bnNpZ25lZCBsb25nKSAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlv
YWRkciArIChSeE1pc3NlZCkpKSkpOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4TWlzc2VkKSkpID0gKCgwKSkpOwoKICAgICAgICBpZiAo
KHN0YXR1cyAmIFJ4VW5kZXJydW4pICYmIGxpbmtfY2hhbmdlZCAmJgogICAgICAgICAgICAodHAt
PmRydl9mbGFncyAmIEhBU19MTktfQ0hORykpIHsKCiAgICAgICAgICAgICAgICBpbnQgbHBhciA9
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoTldheUxQ
QVIpKSkpOwogICAgICAgICAgICAgICAgaW50IGR1cGxleCA9IChscGFyICYgMHgwMTAwKSB8fCAo
bHBhciAmIDB4MDFDMCkgPT0gMHgwMDQwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgdHAtPmR1cGxleF9sb2NrOwogICAgICAgICAgICAgICAgaWYgKHRwLT5mdWxsX2R1cGxleCAh
PSBkdXBsZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPmZ1bGxfZHVwbGV4ID0gZHVw
bGV4OwoKCgoKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0dXMgJj0gflJ4
VW5kZXJydW47CiAgICAgICAgfQoKCiAgICAgICAgaWYgKHN0YXR1cyAmCiAgICAgICAgICAgIChS
eFVuZGVycnVuIHwgUnhPdmVyZmxvdyB8IFJ4RXJyIHwgUnhGSUZPT3ZlcikpCiAgICAgICAgICAg
ICAgICB0cC0+c3RhdHMucnhfZXJyb3JzKys7CgogICAgICAgIGlmIChzdGF0dXMgJiAoUENTVGlt
ZW91dCkpCiAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrOwogICAg
ICAgIGlmIChzdGF0dXMgJiAoUnhVbmRlcnJ1biB8IFJ4RklGT092ZXIpKQogICAgICAgICAgICAg
ICAgdHAtPnN0YXRzLnJ4X2ZpZm9fZXJyb3JzKys7CiAgICAgICAgaWYgKHN0YXR1cyAmIFBDSUVy
cikgewogICAgICAgICAgICAgICAgdTE2IHBjaV9jbWRfc3RhdHVzOwogICAgICAgICAgICAgICAg
cGNpX3JlYWRfY29uZmlnX3dvcmQgKHRwLT5wY2lfZGV2LCAweDA2LCAmcGNpX2NtZF9zdGF0dXMp
OwoKICAgICAgICAgICAgICAgIHByaW50ayAoIjwzPiIgIiVzOiBQQ0kgQnVzIGVycm9yICU0LjR4
LlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5uYW1lLCBwY2lfY21kX3N0YXR1cyk7
CiAgICAgICAgfQp9CgoKCgpzdGF0aWMgdm9pZCBydGw4MTM5X2ludGVycnVwdCAoaW50IGlycSwg
dm9pZCAqZGV2X2luc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHB0X3JlZ3MgKnJlZ3MpCnsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gKHN0cnVj
dCBuZXRfZGV2aWNlICopIGRldl9pbnN0YW5jZTsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2
YXRlICp0cCA9IGRldi0+cHJpdjsKICAgICAgICBpbnQgYm9ndXNjbnQgPSBtYXhfaW50ZXJydXB0
X3dvcms7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gdHAtPm1taW9fYWRkcjsKICAgICAgICBpbnQg
YWNrc3RhdCwgc3RhdHVzOwogICAgICAgIGludCBsaW5rX2NoYW5nZWQgPSAwOwoKICAgICAgICAo
dm9pZCkoJnRwLT5sb2NrKTsKCiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgc3RhdHVzID0g
KCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRyU3Rh
dHVzKSkpKTsKCgogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAweEZGRkYpCiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwoKCgogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAmIFJ4
VW5kZXJydW4pCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfY2hhbmdlZCA9ICgqKHZvbGF0
aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoQ1NDUikpKSkgJiBDU0NS
X0xpbmtDaGFuZ2VCaXQ7CgoKCgogICAgICAgICAgICAgICAgYWNrc3RhdCA9IHN0YXR1cyAmIH5S
eEFja0JpdHM7CiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkgPSAoKGFja3N0YXQpKSk7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDsKCgogICAgICAgICAgICAgICAgaWYgKChzdGF0dXMgJgogICAgICAgICAgICAg
ICAgICAgICAoUENJRXJyIHwgUENTVGltZW91dCB8IFJ4VW5kZXJydW4gfCBSeE92ZXJmbG93IHwK
ICAgICAgICAgICAgICAgICAgICAgIFJ4RklGT092ZXIgfCBUeEVyciB8IFR4T0sgfCBSeEVyciB8
IFJ4T0spKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAg
ICAgICBpZiAobmV0aWZfcnVubmluZyAoZGV2KSAmJiAoc3RhdHVzICYgUnhBY2tCaXRzKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgcnRsODEzOV9yeF9pbnRlcnJ1cHQgKGRldiwgdHAsIGlvYWRk
cik7CgoKICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgJiAoUENJRXJyIHwgUENTVGltZW91dCB8
IFJ4VW5kZXJydW4gfCBSeE92ZXJmbG93IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UnhGSUZPT3ZlciB8IFR4RXJyIHwgUnhFcnIpKQogICAgICAgICAgICAgICAgICAgICAgICBydGw4
MTM5X3dlaXJkX2ludGVycnVwdCAoZGV2LCB0cCwgaW9hZGRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBsaW5rX2NoYW5nZWQpOwoKICAg
ICAgICAgICAgICAgIGlmIChuZXRpZl9ydW5uaW5nIChkZXYpICYmIChzdGF0dXMgJiAoVHhPSyB8
IFR4RXJyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDgxMzlfdHhfaW50ZXJydXB0IChk
ZXYsIHRwLCBpb2FkZHIpOwoKICAgICAgICAgICAgICAgIGJvZ3VzY250LS07CiAgICAgICAgfSB3
aGlsZSAoYm9ndXNjbnQgPiAwKTsKCiAgICAgICAgaWYgKGJvZ3VzY250IDw9IDApIHsKICAgICAg
ICAgICAgICAgIHByaW50ayAoIjw0PiIgIiVzOiBUb28gbXVjaCB3b3JrIGF0IGludGVycnVwdCwg
IgogICAgICAgICAgICAgICAgICAgICAgICAiSW50clN0YXR1cz0weCU0LjR4LlxuIiwgZGV2LT5u
YW1lLCBzdGF0dXMpOwoKCiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9y
dCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkgPSAoKDB4ZmZmZikpKTsKICAg
ICAgICB9CgogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7Cgp9CgoKc3RhdGljIGludCBydGw4MTM5X2Nsb3Nl
IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0
ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gdHAtPm1taW9fYWRkcjsK
ICAgICAgICBpbnQgcmV0ID0gMDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICBuZXRpZl9zdG9wX3F1ZXVlIChkZXYpOwoK
ICAgICAgICBpZiAodHAtPnRocl9waWQgPj0gMCkgewogICAgICAgICAgICAgICAgcmV0ID0ga2ls
bF9wcm9jICh0cC0+dGhyX3BpZCwgMTUsIDEpOwogICAgICAgICAgICAgICAgaWYgKHJldCkgewog
ICAgICAgICAgICAgICAgICAgICAgICBwcmludGsgKCI8Mz4iICIlczogdW5hYmxlIHRvIHNpZ25h
bCB0aHJlYWRcbiIsIGRldi0+bmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3YWl0X2Zvcl9jb21wbGV0aW9u
ICgmdHAtPnRocl9leGl0ZWQpOwogICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAgZG8geyBfX2FzbV9fIF9f
dm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9y
eSIpOyAodm9pZCkoJnRwLT5sb2NrKTsgfSB3aGlsZSAoMCk7CgoKICAgICAgICAoKih2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoMCkp
KTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoSW50ck1hc2spKSkgPSAoKDApKSk7CgoKICAgICAgICB0cC0+c3RhdHMucnhfbWlzc2Vk
X2Vycm9ycyArPSAoKHVuc2lnbmVkIGxvbmcpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKFJ4TWlzc2VkKSkpKSk7CiAgICAgICAgKCoodm9sYXRpbGUgdW5z
aWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQpKSkgPSAoKDApKSk7Cgog
ICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwg
JTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwoK
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGZy
ZWVfaXJxIChkZXYtPmlycSwgZGV2KTsKCiAgICAgICAgcnRsODEzOV90eF9jbGVhciAodHApOwoK
ICAgICAgICBwY2lfZnJlZV9jb25zaXN0ZW50KHRwLT5wY2lfZGV2LCAoKDgxOTIgPDwgMikgKyAx
NiArIDIwNDgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnJ4X3JpbmcsIHRwLT5y
eF9yaW5nX2RtYSk7CiAgICAgICAgcGNpX2ZyZWVfY29uc2lzdGVudCh0cC0+cGNpX2RldiwgKDE1
MzYgKiA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50eF9idWZzLCB0cC0+dHhf
YnVmc19kbWEpOwogICAgICAgIHRwLT5yeF9yaW5nID0gKCh2b2lkICopMCk7CiAgICAgICAgdHAt
PnR4X2J1ZnMgPSAoKHZvaWQgKikwKTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNo
YXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2X1VubG9jaykp
KTsKCiAgICAgICAgaWYgKHJ0bF9jaGlwX2luZm9bdHAtPmNoaXBzZXRdLmZsYWdzICYgSGFzSGx0
Q2xrKQogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQg
KikoaW9hZGRyICsgKEhsdENsaykpKSA9ICgoJ0gnKSkpOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCgpzdGF0aWMgdm9pZCBuZXRkZXZfZ2V0X2Vz
ZXQgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2NtZCAqZXNldCkKewog
ICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKm5wID0gZGV2LT5wcml2OwogICAgICAgIHZv
aWQgKmlvYWRkciA9IG5wLT5tbWlvX2FkZHI7CiAgICAgICAgdTE2IGFkdmVydDsKCiAgICAgICAg
ZXNldC0+c3VwcG9ydGVkID0gKDEgPDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgfCAoMSA8
PCAxKQogICAgICAgICAgICAgICAgICAgICAgICB8ICgxIDw8IDIpCiAgICAgICAgICAgICAgICAg
ICAgICAgIHwgKDEgPDwgMykKICAgICAgICAgICAgICAgICAgICAgICAgfCAoMSA8PCA2KQogICAg
ICAgICAgICAgICAgICAgICAgICB8ICgxIDw8IDcpOwoKICAgICAgICBlc2V0LT5hZHZlcnRpc2lu
ZyA9ICgxIDw8IDcpIHwgKDEgPDwgNik7CiAgICAgICAgYWR2ZXJ0ID0gbWRpb19yZWFkIChkZXYs
IG5wLT5waHlzWzBdLCA0KTsKICAgICAgICBpZiAoYWR2ZXJ0ICYgMHgwMDIwKQogICAgICAgICAg
ICAgICAgZXNldC0+YWR2ZXJ0aXNpbmcgfD0gKDEgPDwgMCk7CiAgICAgICAgaWYgKGFkdmVydCAm
IDB4MDA0MCkKICAgICAgICAgICAgICAgIGVzZXQtPmFkdmVydGlzaW5nIHw9ICgxIDw8IDEpOwog
ICAgICAgIGlmIChhZHZlcnQgJiAweDAwODApCiAgICAgICAgICAgICAgICBlc2V0LT5hZHZlcnRp
c2luZyB8PSAoMSA8PCAyKTsKICAgICAgICBpZiAoYWR2ZXJ0ICYgMHgwMTAwKQogICAgICAgICAg
ICAgICAgZXNldC0+YWR2ZXJ0aXNpbmcgfD0gKDEgPDwgMyk7CgogICAgICAgIGVzZXQtPnNwZWVk
ID0gKCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChNZWRp
YVN0YXR1cykpKSkgJiAweDA4KSA/IDEwIDogMTAwOwoKCgogICAgICAgIGVzZXQtPmR1cGxleCA9
IG5wLT5mdWxsX2R1cGxleCA/IDB4MDEgOiAweDAwOwogICAgICAgIGVzZXQtPnBvcnQgPSAweDAw
OwoKICAgICAgICBlc2V0LT5waHlfYWRkcmVzcyA9IG5wLT5waHlzWzBdOwogICAgICAgIGVzZXQt
PnRyYW5zY2VpdmVyID0gMHgwMDsKICAgICAgICBlc2V0LT5hdXRvbmVnID0gKG1kaW9fcmVhZCAo
ZGV2LCBucC0+cGh5c1swXSwgMCkgJiAweDEwMDApICE9IDA7CiAgICAgICAgZXNldC0+bWF4dHhw
a3QgPSAxOwogICAgICAgIGVzZXQtPm1heHJ4cGt0ID0gMTsKfQoKCgoKCnN0YXRpYyB2b2lkIG5l
dGRldl9nZXRfd29sIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xp
bmZvICp3b2wpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICpucCA9IGRldi0+cHJp
djsKICAgICAgICB2b2lkICppb2FkZHIgPSBucC0+bW1pb19hZGRyOwoKICAgICAgICBpZiAocnRs
X2NoaXBfaW5mb1tucC0+Y2hpcHNldF0uZmxhZ3MgJiBIYXNMV2FrZSkgewogICAgICAgICAgICAg
ICAgdTggY2ZnMyA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRk
ciArIChDb25maWczKSkpKTsKICAgICAgICAgICAgICAgIHU4IGNmZzUgPSAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnNSkpKSk7CgogICAgICAg
ICAgICAgICAgd29sLT5zdXBwb3J0ZWQgPSAoMSA8PCAwKSB8ICgxIDw8IDUpCiAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKDEgPDwgMSkgfCAoMSA8PCAyKSB8ICgxIDw8IDMpOwoKICAgICAgICAg
ICAgICAgIHdvbC0+d29sb3B0cyA9IDA7CiAgICAgICAgICAgICAgICBpZiAoY2ZnMyAmIENmZzNf
TGlua1VwKQogICAgICAgICAgICAgICAgICAgICAgICB3b2wtPndvbG9wdHMgfD0gKDEgPDwgMCk7
CiAgICAgICAgICAgICAgICBpZiAoY2ZnMyAmIENmZzNfTWFnaWMpCiAgICAgICAgICAgICAgICAg
ICAgICAgIHdvbC0+d29sb3B0cyB8PSAoMSA8PCA1KTsKCgogICAgICAgICAgICAgICAgaWYgKGNm
ZzUgJiBDZmc1X1VXRikKICAgICAgICAgICAgICAgICAgICAgICAgd29sLT53b2xvcHRzIHw9ICgx
IDw8IDEpOwogICAgICAgICAgICAgICAgaWYgKGNmZzUgJiBDZmc1X01XRikKICAgICAgICAgICAg
ICAgICAgICAgICAgd29sLT53b2xvcHRzIHw9ICgxIDw8IDIpOwogICAgICAgICAgICAgICAgaWYg
KGNmZzUgJiBDZmc1X0JXRikKICAgICAgICAgICAgICAgICAgICAgICAgd29sLT53b2xvcHRzIHw9
ICgxIDw8IDMpOwogICAgICAgIH0KfQoKCgoKCnN0YXRpYyBpbnQgbmV0ZGV2X3NldF93b2wgKHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
cnVjdCBldGh0b29sX3dvbGluZm8gKndvbCkKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZh
dGUgKm5wID0gZGV2LT5wcml2OwogICAgICAgIHZvaWQgKmlvYWRkciA9IG5wLT5tbWlvX2FkZHI7
CiAgICAgICAgdTMyIHN1cHBvcnQ7CiAgICAgICAgdTggY2ZnMywgY2ZnNTsKCiAgICAgICAgc3Vw
cG9ydCA9ICgocnRsX2NoaXBfaW5mb1tucC0+Y2hpcHNldF0uZmxhZ3MgJiBIYXNMV2FrZSkKICAg
ICAgICAgICAgICAgICAgID8gKCgxIDw8IDApIHwgKDEgPDwgNSkKICAgICAgICAgICAgICAgICAg
ICAgIHwgKDEgPDwgMSkgfCAoMSA8PCAyKSB8ICgxIDw8IDMpKQogICAgICAgICAgICAgICAgICAg
OiAwKTsKICAgICAgICBpZiAod29sLT53b2xvcHRzICYgfnN1cHBvcnQpCiAgICAgICAgICAgICAg
ICByZXR1cm4gLTIyOwoKICAgICAgICBjZmczID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzMpKSkpICYgfihDZmczX0xpbmtVcCB8IENmZzNf
TWFnaWMpOwogICAgICAgIGlmICh3b2wtPndvbG9wdHMgJiAoMSA8PCAwKSkKICAgICAgICAgICAg
ICAgIGNmZzMgfD0gQ2ZnM19MaW5rVXA7CiAgICAgICAgaWYgKHdvbC0+d29sb3B0cyAmICgxIDw8
IDUpKQogICAgICAgICAgICAgICAgY2ZnMyB8PSBDZmczX01hZ2ljOwogICAgICAgICgqKHZvbGF0
aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChD
Zmc5MzQ2X1VubG9jaykpKTsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgo
dm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnMykpKSA9ICgoY2ZnMykpKTsKICAgICAgICAoKih2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgo
Q2ZnOTM0Nl9Mb2NrKSkpOwoKICAgICAgICBjZmc1ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hh
ciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzUpKSkpICYgfihDZmc1X1VXRiB8IENmZzVf
TVdGIHwgQ2ZnNV9CV0YpOwoKCgogICAgICAgIGlmICh3b2wtPndvbG9wdHMgJiAoMSA8PCAxKSkK
ICAgICAgICAgICAgICAgIGNmZzUgfD0gQ2ZnNV9VV0Y7CiAgICAgICAgaWYgKHdvbC0+d29sb3B0
cyAmICgxIDw8IDIpKQogICAgICAgICAgICAgICAgY2ZnNSB8PSBDZmc1X01XRjsKICAgICAgICBp
ZiAod29sLT53b2xvcHRzICYgKDEgPDwgMykpCiAgICAgICAgICAgICAgICBjZmc1IHw9IENmZzVf
QldGOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRk
ciArIChDb25maWc1KSkpID0gKChjZmc1KSkpOwoKICAgICAgICByZXR1cm4gMDsKfQoKCnN0YXRp
YyBpbnQgbmV0ZGV2X2V0aHRvb2xfaW9jdGwgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQg
KnVzZXJhZGRyKQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqbnAgPSBkZXYtPnBy
aXY7CiAgICAgICAgdTMyIGV0aGNtZDsKCgoKCiAgICAgICAgaWYgKChfX2J1aWx0aW5fY29uc3Rh
bnRfcChzaXplb2YgKGV0aGNtZCkpID8gX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcigoJmV0aGNt
ZCksKHVzZXJhZGRyKSwoc2l6ZW9mIChldGhjbWQpKSkgOiBfX2dlbmVyaWNfY29weV9mcm9tX3Vz
ZXIoKCZldGhjbWQpLCh1c2VyYWRkciksKHNpemVvZiAoZXRoY21kKSkpKSkKICAgICAgICAgICAg
ICAgIHJldHVybiAtMTQ7CgogICAgICAgIHN3aXRjaCAoZXRoY21kKSB7CiAgICAgICAgY2FzZSAw
eDAwMDAwMDAxOgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgZXRodG9vbF9jbWQgZXNldCA9IHsgMHgwMDAwMDAwMSB9OwogICAgICAgICAgICAgICAgICAg
ICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7ICh2b2lk
KSgmbnAtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2
X2dldF9lc2V0IChkZXYsICZlc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBkbyB7
IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0g
d2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKF9fYnVpbHRpbl9jb25zdGFu
dF9wKHNpemVvZiAoZXNldCkpID8gX19jb25zdGFudF9jb3B5X3RvX3VzZXIoKHVzZXJhZGRyKSwo
JmVzZXQpLChzaXplb2YgKGVzZXQpKSkgOiBfX2dlbmVyaWNfY29weV90b191c2VyKCh1c2VyYWRk
ciksKCZlc2V0KSwoc2l6ZW9mIChlc2V0KSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gLTE0OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgICAgICAgIH0KCgoKICAgICAgICBjYXNlIDB4MDAwMDAwMDM6CiAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gaW5mbyA9IHsg
MHgwMDAwMDAwMyB9OwogICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHkgKGluZm8uZHJpdmVy
LCAiODEzOXRvbyIpOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHkgKGluZm8udmVyc2lv
biwgIjAuOS4yMCIpOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHkgKGluZm8uYnVzX2lu
Zm8sIG5wLT5wY2lfZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemVvZiAoaW5mbykpID8gX19jb25zdGFudF9jb3B5X3Rv
X3VzZXIoKHVzZXJhZGRyKSwoJmluZm8pLChzaXplb2YgKGluZm8pKSkgOiBfX2dlbmVyaWNfY29w
eV90b191c2VyKCh1c2VyYWRkciksKCZpbmZvKSwoc2l6ZW9mIChpbmZvKSkpKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE0OwogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgY2FzZSAweDAwMDAwMDA1Ogog
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXRodG9vbF93
b2xpbmZvIHdvbCA9IHsgMHgwMDAwMDAwNSB9OwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7
IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7ICh2b2lkKSgmbnAtPmxv
Y2spOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2X2dldF93b2wg
KGRldiwgJndvbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDAp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2Yg
KHdvbCkpID8gX19jb25zdGFudF9jb3B5X3RvX3VzZXIoKHVzZXJhZGRyKSwoJndvbCksKHNpemVv
ZiAod29sKSkpIDogX19nZW5lcmljX2NvcHlfdG9fdXNlcigodXNlcmFkZHIpLCgmd29sKSwoc2l6
ZW9mICh3b2wpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICBjYXNlIDB4MDAwMDAwMDY6CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBldGh0b29sX3dvbGluZm8gd29sOwogICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgcmM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50
X3Aoc2l6ZW9mICh3b2wpKSA/IF9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIoKCZ3b2wpLCh1c2Vy
YWRkciksKHNpemVvZiAod29sKSkpIDogX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKCgmd29sKSwo
dXNlcmFkZHIpLChzaXplb2YgKHdvbCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC0xNDsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyAodm9pZCkoJm5wLT5sb2NrKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gbmV0ZGV2X3NldF93b2wgKGRldiwgJndv
bCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9f
IF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICAgICAgICAgfQoKICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gLTk1
Owp9CgoKc3RhdGljIGludCBuZXRkZXZfaW9jdGwgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0
cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRl
ICp0cCA9IGRldi0+cHJpdjsKICAgICAgICBzdHJ1Y3QgbWlpX2lvY3RsX2RhdGEgKmRhdGEgPSAo
c3RydWN0IG1paV9pb2N0bF9kYXRhICopJnJxLT5pZnJfaWZydS5pZnJ1X2RhdGE7CiAgICAgICAg
aW50IHJjID0gMDsKICAgICAgICBpbnQgcGh5ID0gdHAtPnBoeXNbMF0gJiAweDNmOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICBpZiAoY21kICE9IDB4ODk0NikgewoKICAg
ICAgICAgICAgICAgIGRhdGEtPnBoeV9pZCAmPSAweDFmOwogICAgICAgICAgICAgICAgZGF0YS0+
cmVnX251bSAmPSAweDFmOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoIChjbWQpIHsKICAgICAg
ICBjYXNlIDB4ODk0NjoKICAgICAgICAgICAgICAgIHJldHVybiBuZXRkZXZfZXRodG9vbF9pb2N0
bChkZXYsICh2b2lkICopIHJxLT5pZnJfaWZydS5pZnJ1X2RhdGEpOwoKICAgICAgICBjYXNlIDB4
ODk0NzoKICAgICAgICBjYXNlIDB4ODlGMDoKICAgICAgICAgICAgICAgIGRhdGEtPnBoeV9pZCA9
IHBoeTsKCgogICAgICAgIGNhc2UgMHg4OTQ4OgogICAgICAgIGNhc2UgMHg4OUYwICsxOgogICAg
ICAgICAgICAgICAgZGF0YS0+dmFsX291dCA9IG1kaW9fcmVhZCAoZGV2LCBkYXRhLT5waHlfaWQs
IGRhdGEtPnJlZ19udW0pOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHg4
OTQ5OgogICAgICAgIGNhc2UgMHg4OUYwICsyOgogICAgICAgICAgICAgICAgaWYgKCFjYXBhYmxl
ICgxMikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSAtMTsKICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGRh
dGEtPnBoeV9pZCA9PSBwaHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdTE2IHZhbHVlID0g
ZGF0YS0+dmFsX2luOwogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEtPnJlZ19u
dW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cC0+bWVkaWFsb2NrID0gKHZhbHVlICYgMHg5MDAwKSA/IDAgOiAxOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cC0+bWVkaWFsb2NrKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPmZ1bGxfZHVwbGV4ID0gKHZhbHVl
ICYgMHgwMTAwKSA/IDEgOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtZGlvX3dyaXRlKGRl
diwgZGF0YS0+cGh5X2lkLCBkYXRhLT5yZWdfbnVtLCBkYXRhLT52YWxfaW4pOwogICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByYyA9IC05NTsK
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIHJldHVybiByYzsKfQoKCnN0YXRpYyBzdHJ1
Y3QgbmV0X2RldmljZV9zdGF0cyAqcnRsODEzOV9nZXRfc3RhdHMgKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+cHJpdjsK
ICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZmxhZ3M7CgogICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgIGlmIChuZXRp
Zl9ydW5uaW5nKGRldikpIHsKICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxl
X18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZv
aWQpKCZ0cC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4
X21pc3NlZF9lcnJvcnMgKz0gKCh1bnNpZ25lZCBsb25nKSAoKih2b2xhdGlsZSB1bnNpZ25lZCBp
bnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3NlZCkpKSkpOwogICAgICAgICAgICAgICAg
KCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQp
KSkgPSAoKDApKSk7CiAgICAgICAgICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21f
XyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIs
ICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAg
IDsKICAgICAgICByZXR1cm4gJnRwLT5zdGF0czsKfQoKCgoKc3RhdGljIHVuc2lnbmVkIGNvbnN0
IGV0aGVybmV0X3BvbHlub21pYWwgPSAweDA0YzExZGI3VTsKc3RhdGljIGlubGluZSB1MzIgZXRo
ZXJfY3JjIChpbnQgbGVuZ3RoLCB1bnNpZ25lZCBjaGFyICpkYXRhKQp7CiAgICAgICAgaW50IGNy
YyA9IC0xOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICB3aGlsZSAoLS1s
ZW5ndGggPj0gMCkgewogICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjdXJyZW50X29jdGV0
ID0gKmRhdGErKzsKICAgICAgICAgICAgICAgIGludCBiaXQ7CiAgICAgICAgICAgICAgICBmb3Ig
KGJpdCA9IDA7IGJpdCA8IDg7IGJpdCsrLCBjdXJyZW50X29jdGV0ID4+PSAxKQogICAgICAgICAg
ICAgICAgICAgICAgICBjcmMgPSAoY3JjIDw8IDEpIF4gKChjcmMgPCAwKSBeIChjdXJyZW50X29j
dGV0ICYgMSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVybmV0X3BvbHlub21p
YWwgOiAwKTsKICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CiAgICAgICAgcmV0dXJuIGNyYzsKfQoKCnN0YXRpYyB2b2lkIF9fc2V0X3J4X21v
ZGUgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2
YXRlICp0cCA9IGRldi0+cHJpdjsKICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRy
OwogICAgICAgIHUzMiBtY19maWx0ZXJbMl07CiAgICAgICAgaW50IGksIHJ4X21vZGU7CiAgICAg
ICAgdTMyIHRtcDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoK
ICAgICAgICBpZiAoZGV2LT5mbGFncyAmIDB4MTAwKSB7CgogICAgICAgICAgICAgICAgcHJpbnRr
ICgiPDU+IiAiJXM6IFByb21pc2N1b3VzIG1vZGUgZW5hYmxlZC5cbiIsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGRldi0+bmFtZSk7CiAgICAgICAgICAgICAgICByeF9tb2RlID0KICAgICAgICAg
ICAgICAgICAgICBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNdWx0aWNhc3QgfCBBY2NlcHRNeVBo
eXMgfAogICAgICAgICAgICAgICAgICAgIEFjY2VwdEFsbFBoeXM7CiAgICAgICAgICAgICAgICBt
Y19maWx0ZXJbMV0gPSBtY19maWx0ZXJbMF0gPSAweGZmZmZmZmZmOwogICAgICAgIH0gZWxzZSBp
ZiAoKGRldi0+bWNfY291bnQgPiBtdWx0aWNhc3RfZmlsdGVyX2xpbWl0KQogICAgICAgICAgICAg
ICAgICAgfHwgKGRldi0+ZmxhZ3MgJiAweDIwMCkpIHsKCiAgICAgICAgICAgICAgICByeF9tb2Rl
ID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXVsdGljYXN0IHwgQWNjZXB0TXlQaHlzOwogICAg
ICAgICAgICAgICAgbWNfZmlsdGVyWzFdID0gbWNfZmlsdGVyWzBdID0gMHhmZmZmZmZmZjsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc3RydWN0IGRldl9tY19saXN0ICptY2xpc3Q7
CiAgICAgICAgICAgICAgICByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlz
OwogICAgICAgICAgICAgICAgbWNfZmlsdGVyWzFdID0gbWNfZmlsdGVyWzBdID0gMDsKICAgICAg
ICAgICAgICAgIGZvciAoaSA9IDAsIG1jbGlzdCA9IGRldi0+bWNfbGlzdDsgbWNsaXN0ICYmIGkg
PCBkZXYtPm1jX2NvdW50OwogICAgICAgICAgICAgICAgICAgICBpKyssIG1jbGlzdCA9IG1jbGlz
dC0+bmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgYml0X25yID0gZXRoZXJfY3Jj
KDYsIG1jbGlzdC0+ZG1pX2FkZHIpID4+IDI2OwoKICAgICAgICAgICAgICAgICAgICAgICAgbWNf
ZmlsdGVyW2JpdF9uciA+PiA1XSB8PSAoKF9fdTMyKSgxIDw8IChiaXRfbnIgJiAzMSkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgcnhfbW9kZSB8PSBBY2NlcHRNdWx0aWNhc3Q7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgdG1wID0gcnRsODEzOV9yeF9jb25maWcgfCBy
eF9tb2RlOwogICAgICAgIGlmICh0cC0+cnhfY29uZmlnICE9IHRtcCkgewogICAgICAgICAgICAg
ICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChS
eENvbmZpZykpKSA9ICgodG1wKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lk
ICopKGlvYWRkciArIChSeENvbmZpZykpKSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAg
dHAtPnJ4X2NvbmZpZyA9IHRtcDsKICAgICAgICB9CiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1
bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChNQVIwICsgMCkpKSA9ICgobWNfZmls
dGVyWzBdKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciAr
IChNQVIwICsgMCkpKSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5z
aWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoTUFSMCArIDQpKSkgPSAoKG1jX2ZpbHRl
clsxXSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAo
TUFSMCArIDQpKSkpOyB9IHdoaWxlICgwKTsKCgogICAgICAgICAgICAgICAgICAgICAgICAgIDsK
fQoKc3RhdGljIHZvaWQgcnRsODEzOV9zZXRfcnhfbW9kZSAoc3RydWN0IG5ldF9kZXZpY2UgKmRl
dikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlf
cHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxl
X18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZv
aWQpKCZ0cC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIF9fc2V0X3J4X21vZGUoZGV2KTsK
ICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hs
ICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsK
fQoKCgpzdGF0aWMgaW50IHJ0bDgxMzlfc3VzcGVuZCAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUz
MiBzdGF0ZSkKewogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwY2lfZ2V0X2RydmRh
dGEgKHBkZXYpOwogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2
OwogICAgICAgIHZvaWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBmbGFnczsKCiAgICAgICAgaWYgKCFuZXRpZl9ydW5uaW5nIChkZXYpKQogICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CgogICAgICAgIG5ldGlmX2RldmljZV9kZXRhY2ggKGRldik7CgogICAg
ICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9
ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZ0cC0+bG9jayk7IH0gd2hpbGUgKDApOwoK
CiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciAr
IChJbnRyTWFzaykpKSA9ICgoMCkpKTsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFy
ICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoMCkpKTsKCgogICAgICAgIHRw
LT5zdGF0cy5yeF9taXNzZWRfZXJyb3JzICs9ICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUg
dW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQpKSkpKTsKICAgICAg
ICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3Nl
ZCkpKSA9ICgoMCkpKTsKCiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192
b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2Mi
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgpzdGF0aWMgaW50IHJ0bDgxMzlf
cmVzdW1lIChzdHJ1Y3QgcGNpX2RldiAqcGRldikKewogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYgPSBwY2lfZ2V0X2RydmRhdGEgKHBkZXYpOwoKICAgICAgICBpZiAoIW5ldGlmX3J1bm5p
bmcgKGRldikpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBuZXRpZl9kZXZpY2Vf
YXR0YWNoIChkZXYpOwogICAgICAgIHJ0bDgxMzlfaHdfc3RhcnQgKGRldik7CiAgICAgICAgcmV0
dXJuIDA7Cn0KCgoKCnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBydGw4MTM5X3BjaV9kcml2ZXIg
PSB7CiAgICAgICAgbmFtZTogIjgxMzl0b28iLAogICAgICAgIGlkX3RhYmxlOiBydGw4MTM5X3Bj
aV90YmwsCiAgICAgICAgcHJvYmU6IHJ0bDgxMzlfaW5pdF9vbmUsCiAgICAgICAgcmVtb3ZlOiBy
dGw4MTM5X3JlbW92ZV9vbmUsCgogICAgICAgIHN1c3BlbmQ6IHJ0bDgxMzlfc3VzcGVuZCwKICAg
ICAgICByZXN1bWU6IHJ0bDgxMzlfcmVzdW1lLAoKfTsKCgpzdGF0aWMgaW50IF9fYXR0cmlidXRl
X18gKChfX3NlY3Rpb25fXyAoIi50ZXh0LmluaXQiKSkpIHJ0bDgxMzlfaW5pdF9tb2R1bGUgKHZv
aWQpCnsKCgoKCgoKCiAgICAgICAgcmV0dXJuIHBjaV9tb2R1bGVfaW5pdCAoJnJ0bDgxMzlfcGNp
X2RyaXZlcik7Cn0KCgpzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkLCBfX3NlY3Rp
b25fXygiLnRleHQuZXhpdCIpKSkgcnRsODEzOV9jbGVhbnVwX21vZHVsZSAodm9pZCkKewogICAg
ICAgIHBjaV91bnJlZ2lzdGVyX2RyaXZlciAoJnJ0bDgxMzlfcGNpX2RyaXZlcik7Cn0KCgpzdGF0
aWMgaW5pdGNhbGxfdCBfX2luaXRjYWxsX3J0bDgxMzlfaW5pdF9tb2R1bGUgX19hdHRyaWJ1dGVf
XyAoKHVudXNlZCxfX3NlY3Rpb25fXyAoIi5pbml0Y2FsbC5pbml0IikpKSA9IHJ0bDgxMzlfaW5p
dF9tb2R1bGU7OwpzdGF0aWMgZXhpdGNhbGxfdCBfX2V4aXRjYWxsX3J0bDgxMzlfY2xlYW51cF9t
b2R1bGUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCxfX3NlY3Rpb25fXyAoIi5leGl0Y2FsbC5leGl0
IikpKSA9IHJ0bDgxMzlfY2xlYW51cF9tb2R1bGU7Owo+Rml4OgpJIGRvbid0IGtub3cgaG93IHRv
IGNvcnJlY3Qgb3Igd29yayBhcm91bmQgdGhlIHByb2JsZW0uCgoK


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