public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/4667: Compiling kernel 2.4.13 with -O2 causes internal compiler error
@ 2001-10-28  8:56 rodrigc
  0 siblings, 0 replies; 2+ messages in thread
From: rodrigc @ 2001-10-28  8:56 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, jorgew, nobody

Synopsis: Compiling kernel 2.4.13 with -O2 causes internal compiler error

State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Sun Oct 28 08:56:23 2001
State-Changed-Why:
    Duplicate of PR 4529.
    http://gcc.gnu.org/cgi-bin/gnatsweb.pl?pr=4529&cmd=view&database=gcc

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


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

* c/4667: Compiling kernel 2.4.13 with -O2 causes internal compiler error
@ 2001-10-25 16:26 jorgew
  0 siblings, 0 replies; 2+ messages in thread
From: jorgew @ 2001-10-25 16:26 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4667
>Category:       c
>Synopsis:       Compiling kernel 2.4.13 with -O2 causes internal compiler error
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Oct 25 16:26:09 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     huh?
>Release:        gcc 3.0.1
>Organization:
>Environment:
Redhat 7.1, glibc 2.2.4, on a dual pentium III 550 running kernel 2.4.10
>Description:
If I select RealTek RTL-8139 ethernet adaptor support I get the following error...

Issuing command:

gcc -v -save-temps -D__KERNEL__ -I/usr/src/linux-2.4.13/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686    -c -o 8139too.o 8139too.c 

Results in:

gcc: Warning: -pipe ignored because -save-temps specified
Reading specs from /usr/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.0.1/specs
Configured with: ../gcc-3.0.1/configure --prefix=/usr/ --enable-threads
Thread model: posix
gcc version 3.0.1
 /usr/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.0.1/cpp0 -lang-c -v -I/usr/src/linux-2.4.13/linux/include -iprefix /usr/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.0.1/ -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=1 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -Wall -Wstrict-prototypes -Wno-trigraphs -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ -D__tune_i686__ -D__tune_pentiumpro__ -D__KERNEL__ 8139too.c 8139too.i
GNU CPP version 3.0.1 (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/usr/i686-pc-linux-gnu/include"
ignoring nonexistent directory "/usr/i686-pc-linux-gnu/include"
ignoring duplicate directory "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/src/linux-2.4.13/linux/include
 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include
 /usr/local/include
 /usr/include
End of search list.
 /usr/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.0.1/cc1 -fpreprocessed 8139too.i -quiet -dumpbase 8139too.c -mpreferred-stack-boundary=2 -march=i686 -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -version -fomit-frame-pointer -fno-strict-aliasing -fno-common -o 8139too.s
GNU CPP version 3.0.1 (cpplib) (i386 Linux/ELF)
GNU C version 3.0.1 (i686-pc-linux-gnu)
	compiled by GNU C version 3.0.1.
8139too.c: In function `netdev_ethtool_ioctl':
8139too.c:2432: Unrecognizable insn:
(insn/i 641 1103 1100 (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 [170])
                        (mem:SI (plus:SI (reg/f:SI 6 ebp)
                                (const_int -356 [0xfffffe9c])) 0)
                        (mem/s:SI (plus:SI (reg:SI 0 eax [178])
                                (const_int 12 [0xc])) 0)
                    ] 
                    [ 
                        (asm_input:SI ("1"))
                        (asm_input:SI ("g"))
                        (asm_input:SI ("g"))
                    ]  ("/usr/src/linux-2.4.13/linux/include/asm/uaccess.h") 558))
            (set (reg/v:SI 1 edx [170])
                (asm_operands:SI ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0") ("=r") 1[ 
                        (reg/v:SI 1 edx [170])
                        (mem:SI (plus:SI (reg/f:SI 6 ebp)
                                (const_int -356 [0xfffffe9c])) 0)
                        (mem/s:SI (plus:SI (reg:SI 0 eax [178])
                                (const_int 12 [0xc])) 0)
                    ] 
                    [ 
                        (asm_input:SI ("1"))
                        (asm_input:SI ("g"))
                        (asm_input:SI ("g"))
                    ]  ("/usr/src/linux-2.4.13/linux/include/asm/uaccess.h") 558))
            (clobber (reg:QI 19 dirflag))
            (clobber (reg:QI 18 fpsr))
            (clobber (reg:QI 17 flags))
        ] ) -1 (insn_list 627 (insn_list 634 (nil)))
    (nil))
8139too.c:2432: Internal compiler error in reload_cse_simplify_operands, at reload1.c:8355
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:
Simply compile the kernel with realtek driver support -- I get this bug with both 2.4.12 and 2.4.13 
>Fix:
Removing -O2 from commandline seems to fix this.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/postscript; name="8139too.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="8139too.i"

IyAxNDUgIjgxMzl0b28uYyIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9jb25maWcuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L2F1dG9jb25mLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMgojIDE0NiAiODEzOXRvby5jIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDEKIyAxMCAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAx
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9z
cGlubG9jay5oIiAyCiMgMzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3NwaW5sb2NrLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
YXNtL3NwaW5sb2NrLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9hc20vYXRvbWljLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgv
aW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMgojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9hc20vYXRvbWljLmgiCnR5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgaW50IGNv
dW50ZXI7IH0gYXRvbWljX3Q7CiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfYWRkKGludCBp
LCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgImxvY2sgOyAiICJhZGRsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNv
dW50ZXIpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikpOwp9CiMg
NjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3Rh
dGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfc3ViKGludCBpLCBhdG9taWNfdCAqdikKewogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImxvY2sgOyAiICJzdWJs
ICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAg
ICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikpOwp9CiMgODcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0
b21pY19zdWJfYW5kX3Rlc3QoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICJs
b2NrIDsgIiAic3VibCAlMiwlMDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5j
b3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291
bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyAxMDUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18g
dm9pZCBhdG9taWNfaW5jKGF0b21pY190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxl
X18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImluY2wgJTAiCiAgICAgICAgICAgICAgICA6
Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpKTsKfQoj
IDEyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19kZWMoYXRvbWljX3QgKnYpCnsKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICJsb2NrIDsgIiAiZGVjbCAlMCIK
ICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAgICAgICAgOiJtIiAo
di0+Y291bnRlcikpOwp9CiMgMTM3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfZGVjX2FuZF90ZXN0
KGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICJsb2NrIDsgIiAiZGVjbCAlMDsgc2V0ZSAl
MSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAg
ICAgICAgICA6Im0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAh
PSAwOwp9CiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYXRv
bWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2FuZF90ZXN0KGF0b21pY190
ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAgICAgICAgICJsb2NrIDsgIiAiaW5jbCAlMDsgc2V0ZSAlMSIKICAgICAg
ICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6
Im0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9CiMg
MTc4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0
YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfYWRkX25lZ2F0aXZlKGludCBpLCBhdG9taWNfdCAq
dikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxl
X18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImFkZGwgJTIsJTA7IHNldHMgJTEiCiAgICAg
ICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlciksICI9cW0iIChjKQogICAgICAgICAgICAgICAg
OiJpciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBj
Owp9CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NwaW5sb2Nr
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcndsb2Nr
LmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc3Bpbmxv
Y2suaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wYWdl
LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BhZ2Uu
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcu
aCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5o
IiAyCiMgNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgi
CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwdGVfbG93OyB9IHB0ZV90Owp0eXBlZGVm
IHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcG1kOyB9IHBtZF90Owp0eXBlZGVmIHN0cnVjdCB7IHVu
c2lnbmVkIGxvbmcgcGdkOyB9IHBnZF90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBs
b25nIHBncHJvdDsgfSBwZ3Byb3RfdDsKIyAxMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2FzbS9wYWdlLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBnZXRfb3JkZXIodW5z
aWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgaW50IG9yZGVyOwoKICAgICAgICBzaXplID0gKHNp
emUtMSkgPj4gKDEyIC0xKTsKICAgICAgICBvcmRlciA9IC0xOwogICAgICAgIGRvIHsKICAgICAg
ICAgICAgICAgIHNpemUgPj49IDE7CiAgICAgICAgICAgICAgICBvcmRlcisrOwogICAgICAgIH0g
d2hpbGUgKHNpemUpOwogICAgICAgIHJldHVybiBvcmRlcjsKfQojIDcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc3BpbmxvY2suaCIgMgoKZXh0ZXJuIGludCBw
cmludGsoY29uc3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3Jt
YXQgKHByaW50ZiwgMSwgMikpKTsKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvYXNtL3NwaW5sb2NrLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2xhdGlsZSB1
bnNpZ25lZCBpbnQgbG9jazsKCgoKfSBzcGlubG9ja190OwojIDczICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9hc20vc3BpbmxvY2suaCIKc3RhdGljIGlubGluZSBpbnQgc3Bp
bl90cnlsb2NrKHNwaW5sb2NrX3QgKmxvY2spCnsKICAgICAgICBjaGFyIG9sZHZhbDsKICAgICAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICJ4Y2hnYiAlYjAsJTEiCiAg
ICAgICAgICAgICAgICA6Ij1xIiAob2xkdmFsKSwgIj1tIiAobG9jay0+bG9jaykKICAgICAgICAg
ICAgICAgIDoiMCIgKDApIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGR2YWwgPiAwOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgc3Bpbl9sb2NrKHNwaW5sb2NrX3QgKmxvY2spCnsKIyA5MyAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCiAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiXG4xOlx0IiAibG9jayA7
IGRlY2IgJTBcblx0IiAianMgMmZcbiIgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iICIy
Olx0IiAiY21wYiAkMCwlMFxuXHQiICJyZXA7bm9wXG5cdCIgImpsZSAyYlxuXHQiICJqbXAgMWJc
biIgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPW0iIChsb2NrLT5sb2NrKSA6IDogIm1l
bW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc3Bpbl91bmxvY2soc3BpbmxvY2tfdCAqbG9j
aykKewoKCgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAg
Im1vdmIgJDEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAobG9jay0+bG9jaykgOiA6ICJtZW1v
cnkiKTsKfQojIDEyMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3Nw
aW5sb2NrLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2xhdGlsZSB1bnNpZ25lZCBpbnQg
bG9jazsKCgoKfSByd2xvY2tfdDsKIyAxNTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2FzbS9zcGlubG9jay5oIgpzdGF0aWMgaW5saW5lIHZvaWQgcmVhZF9sb2NrKHJ3bG9j
a190ICpydykKewoKCgoKICAgICAgICBkbyB7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChydykp
IGFzbSB2b2xhdGlsZSgibG9jayA7ICIgInN1YmwgJDEsJTBcblx0IiAianMgMmZcbiIgIjE6XG4i
ICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIiAiMjpcdHB1c2hsICUlZWF4XG5cdCIgImxl
YWwgJTAsJSVlYXhcblx0IiAiY2FsbCAiICJfX3JlYWRfbG9ja19mYWlsZWQiICJcblx0IiAicG9w
bCAlJWVheFxuXHQiICJqbXAgMWJcbiIgIi5wcmV2aW91cyIgOiI9bSIgKCoodm9sYXRpbGUgaW50
ICopcncpIDogOiAibWVtb3J5Iik7IGVsc2UgYXNtIHZvbGF0aWxlKCJsb2NrIDsgIiAic3VibCAk
MSwoJTApXG5cdCIgImpzIDJmXG4iICIxOlxuIiAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJc
biIgIjI6XHRjYWxsICIgIl9fcmVhZF9sb2NrX2ZhaWxlZCIgIlxuXHQiICJqbXAgMWJcbiIgIi5w
cmV2aW91cyIgOjoiYSIgKHJ3KSA6ICJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCB3cml0ZV9sb2NrKHJ3bG9ja190ICpydykKewoKCgoKICAgICAgICBkbyB7IGlm
IChfX2J1aWx0aW5fY29uc3RhbnRfcChydykpIGFzbSB2b2xhdGlsZSgibG9jayA7ICIgInN1Ymwg
JCIgIjB4MDEwMDAwMDAiICIsKCUwKVxuXHQiICJqbnogMmZcbiIgIjE6XG4iICIuc2VjdGlvbiAu
dGV4dC5sb2NrLFwiYXhcIlxuIiAiMjpcdHB1c2hsICUlZWF4XG5cdCIgImxlYWwgJTAsJSVlYXhc
blx0IiAiY2FsbCAiICJfX3dyaXRlX2xvY2tfZmFpbGVkIiAiXG5cdCIgInBvcGwgJSVlYXhcblx0
IiAiam1wIDFiXG4iICIucHJldmlvdXMiIDoiPW0iICgqKHZvbGF0aWxlIGludCAqKXJ3KSA6IDog
Im1lbW9yeSIpOyBlbHNlIGFzbSB2b2xhdGlsZSgibG9jayA7ICIgInN1YmwgJCIgIjB4MDEwMDAw
MDAiICIsKCUwKVxuXHQiICJqbnogMmZcbiIgIjE6XG4iICIuc2VjdGlvbiAudGV4dC5sb2NrLFwi
YXhcIlxuIiAiMjpcdGNhbGwgIiAiX193cml0ZV9sb2NrX2ZhaWxlZCIgIlxuXHQiICJqbXAgMWJc
biIgIi5wcmV2aW91cyIgOjoiYSIgKHJ3KSA6ICJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KCgoK
CnN0YXRpYyBpbmxpbmUgaW50IHdyaXRlX3RyeWxvY2socndsb2NrX3QgKmxvY2spCnsKICAgICAg
ICBhdG9taWNfdCAqY291bnQgPSAoYXRvbWljX3QgKilsb2NrOwogICAgICAgIGlmIChhdG9taWNf
c3ViX2FuZF90ZXN0KDB4MDEwMDAwMDAsIGNvdW50KSkKICAgICAgICAgICAgICAgIHJldHVybiAx
OwogICAgICAgIGF0b21pY19hZGQoMHgwMTAwMDAwMCwgY291bnQpOwogICAgICAgIHJldHVybiAw
Owp9CiMgNDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NwaW5s
b2NrLmgiIDIKIyAxMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3NwaW5sb2NrLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNt
L2F0b21pYy5oIiAxCiMgMTM4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9zcGlubG9jay5oIiAyCmV4dGVybiBpbnQgYXRvbWljX2RlY19hbmRfbG9jayhhdG9taWNf
dCAqYXRvbWljLCBzcGlubG9ja190ICpsb2NrKTsKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDEKIyAxMyAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEKIyAxMCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS92bTg2LmgiIDEKIyA2OCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3ZtODYuaCIKc3RydWN0IHZtODZf
cmVncyB7CgoKCiAgICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9u
ZyBlZHg7CiAgICAgICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBl
YnA7CiAgICAgICAgbG9uZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9u
ZyBfX251bGxfZXM7CiAgICAgICAgbG9uZyBfX251bGxfZnM7CiAgICAgICAgbG9uZyBfX251bGxf
Z3M7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBl
c3A7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2lnbmVk
IHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBf
X2dzaDsKfTsKCnN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBfX21hcFs4XTsKfTsKCnN0cnVjdCB2bTg2X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZf
cmVncyByZWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzY3JlZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAg
ICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVj
dCByZXZlY3RvcmVkX3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwp9OwoKCgoKCgpzdHJ1Y3Qgdm04
NnBsdXNfaW5mb19zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZm9yY2VfcmV0dXJuX2Zv
cl9waWM6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfYWN0aXZlOjE7CiAgICAgICAg
dW5zaWduZWQgbG9uZyB2bTg2ZGJnX1RGcGVuZGlnOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyB1
bnVzZWQ6Mjg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpc192bTg2cHVzOjE7CiAgICAgICAgdW5z
aWduZWQgY2hhciB2bTg2ZGJnX2ludHh4dGFiWzMyXTsKfTsKCnN0cnVjdCB2bTg2cGx1c19zdHJ1
Y3QgewogICAgICAgIHN0cnVjdCB2bTg2X3JlZ3MgcmVnczsKICAgICAgICB1bnNpZ25lZCBsb25n
IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGNwdV90eXBlOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnRf
cmV2ZWN0b3JlZDsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0
b3JlZDsKICAgICAgICBzdHJ1Y3Qgdm04NnBsdXNfaW5mb19zdHJ1Y3Qgdm04NnBsdXM7Cn07CiMg
MTQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdm04Ni5oIgpzdHJ1
Y3Qga2VybmVsX3ZtODZfcmVncyB7CgoKCiAgICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBl
Y3g7CiAgICAgICAgbG9uZyBlZHg7CiAgICAgICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7
CiAgICAgICAgbG9uZyBlYnA7CiAgICAgICAgbG9uZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxf
ZHM7CiAgICAgICAgbG9uZyBfX251bGxfZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAg
ICBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgbG9u
ZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9f
c3NoOwoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKfTsKCnN0cnVjdCBrZXJuZWxfdm04Nl9zdHJ1
Y3QgewogICAgICAgIHN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzIHJlZ3M7CiMgMTg0ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdm04Ni5oIgogICAgICAgIHVuc2lnbmVk
IGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0bWFwOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0
IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnQyMV9y
ZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB2bTg2cGx1czsK
ICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVnczMyOwojIDIwMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3ZtODYuaCIKfTsKCnZvaWQgaGFuZGxlX3ZtODZfZmF1bHQo
c3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZyk7CmludCBoYW5kbGVfdm04Nl90cmFwKHN0
cnVjdCBrZXJuZWxfdm04Nl9yZWdzICosIGxvbmcsIGludCk7CiMgMTEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIgMQojIDE4ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIgpzdHJ1
Y3QgX2ZwcmVnIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4cmVnIHsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBleHBv
bmVudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9OwoKc3RydWN0IF94bW1y
ZWcgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZWxlbWVudFs0XTsKfTsKCnN0cnVjdCBfZnBzdGF0
ZSB7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHRhZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlwb2ZmOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgY3NzZWw7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhb2Zm
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YXNlbDsKICAgICAgICBzdHJ1Y3QgX2ZwcmVnIF9z
dFs4XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgbWFnaWM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9meHNyX2Vudls2XTsKICAgICAgICB1
bnNpZ25lZCBsb25nIG14Y3NyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQ7CiAgICAg
ICAgc3RydWN0IF9mcHhyZWcgX2Z4c3Jfc3RbOF07CiAgICAgICAgc3RydWN0IF94bW1yZWcgX3ht
bVs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhZGRpbmdbNTZdOwp9OwoKCgpzdHJ1Y3Qgc2ln
Y29udGV4dCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWRp
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJ4OwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZWR4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWN4OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHJhcG5vOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZXJyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGVzcF9hdF9zaWduYWw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3MsIF9fc3NoOwogICAgICAgIHN0cnVjdCBfZnBzdGF0ZSAqIGZwc3RhdGU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBvbGRtYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3IyOwp9OwojIDUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAyCgppbnQg
cmVzdG9yZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICpidWYpOwppbnQg
c2F2ZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICogYnVmKTsKCgoKCgpz
dHJ1Y3QgaW5mbyB7CiAgICAgICAgbG9uZyBfX19vcmlnX2VpcDsKICAgICAgICBsb25nIF9fX2Vi
eDsKICAgICAgICBsb25nIF9fX2VjeDsKICAgICAgICBsb25nIF9fX2VkeDsKICAgICAgICBsb25n
IF9fX2VzaTsKICAgICAgICBsb25nIF9fX2VkaTsKICAgICAgICBsb25nIF9fX2VicDsKICAgICAg
ICBsb25nIF9fX2VheDsKICAgICAgICBsb25nIF9fX2RzOwogICAgICAgIGxvbmcgX19fZXM7CiAg
ICAgICAgbG9uZyBfX19vcmlnX2VheDsKICAgICAgICBsb25nIF9fX2VpcDsKICAgICAgICBsb25n
IF9fX2NzOwogICAgICAgIGxvbmcgX19fZWZsYWdzOwogICAgICAgIGxvbmcgX19fZXNwOwogICAg
ICAgIGxvbmcgX19fc3M7CiAgICAgICAgbG9uZyBfX192bTg2X2VzOwogICAgICAgIGxvbmcgX19f
dm04Nl9kczsKICAgICAgICBsb25nIF9fX3ZtODZfZnM7CiAgICAgICAgbG9uZyBfX192bTg2X2dz
Owp9OwojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vz
c29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc2Vn
bWVudC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2Fz
bS9wYWdlLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNt
L3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
YXNtL3R5cGVzLmgiIDEKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1bW9kZV90OwoKCgoKCgp0
eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191ODsK
CnR5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBfX3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBf
X3UxNjsKCnR5cGVkZWYgX19zaWduZWRfXyBpbnQgX19zMzI7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9fdTMyOwoKCnR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7CnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBsb25nIF9fdTY0OwoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDMxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9hc20vdHlwZXMuaCIgMgoKdHlwZWRlZiBzaWduZWQgY2hhciBzODsK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwoKdHlwZWRlZiBzaWduZWQgc2hvcnQgczE2Owp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKCnR5cGVkZWYgc2lnbmVkIGludCBzMzI7CnR5cGVkZWYg
dW5zaWduZWQgaW50IHUzMjsKCnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7CnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIHU2NDsKIyA1MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvYXNtL3R5cGVzLmgiCnR5cGVkZWYgdTMyIGRtYV9hZGRyX3Q7Cgp0eXBlZGVmIHU2
NCBkbWE2NF9hZGRyX3Q7CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2FzbS9zaWdjb250ZXh0LmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2NhY2hlLmgiIDEKCgoKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDggIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAyCiMgNiAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMgojIDE4ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQoj
IDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90aHJlYWRz
LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9j
b25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3RocmVhZHMuaCIgMgojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9h
c20vcHJvY2Vzc29yLmgiIDIKIyAzMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgY3B1aW5mb194ODYgewogICAgICAgIF9fdTggeDg2
OwogICAgICAgIF9fdTggeDg2X3ZlbmRvcjsKICAgICAgICBfX3U4IHg4Nl9tb2RlbDsKICAgICAg
ICBfX3U4IHg4Nl9tYXNrOwogICAgICAgIGNoYXIgd3Bfd29ya3Nfb2s7CiAgICAgICAgY2hhciBo
bHRfd29ya3Nfb2s7CiAgICAgICAgY2hhciBoYXJkX21hdGg7CiAgICAgICAgY2hhciByZnU7CiAg
ICAgICAgaW50IGNwdWlkX2xldmVsOwogICAgICAgIF9fdTMyIHg4Nl9jYXBhYmlsaXR5WzRdOwog
ICAgICAgIGNoYXIgeDg2X3ZlbmRvcl9pZFsxNl07CiAgICAgICAgY2hhciB4ODZfbW9kZWxfaWRb
NjRdOwogICAgICAgIGludCB4ODZfY2FjaGVfc2l6ZTsKCiAgICAgICAgaW50IGZkaXZfYnVnOwog
ICAgICAgIGludCBmMDBmX2J1ZzsKICAgICAgICBpbnQgY29tYV9idWc7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsb29wc19wZXJfamlmZnk7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcGdkX3F1aWNr
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnBtZF9xdWljazsKICAgICAgICB1bnNpZ25lZCBsb25n
ICpwdGVfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwZ3RhYmxlX2NhY2hlX3N6Owp9IF9f
YXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkpKSkpKTsKIyA3MiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4gc3RydWN0
IGNwdWluZm9feDg2IGJvb3RfY3B1X2RhdGE7CmV4dGVybiBzdHJ1Y3QgdHNzX3N0cnVjdCBpbml0
X3Rzc1szMl07CgoKZXh0ZXJuIHN0cnVjdCBjcHVpbmZvX3g4NiBjcHVfZGF0YVtdOwojIDk0ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVy
biBjaGFyIGlnbm9yZV9pcnExMzsKCmV4dGVybiB2b2lkIGlkZW50aWZ5X2NwdShzdHJ1Y3QgY3B1
aW5mb194ODYgKik7CmV4dGVybiB2b2lkIHByaW50X2NwdV9pbmZvKHN0cnVjdCBjcHVpbmZvX3g4
NiAqKTsKZXh0ZXJuIHZvaWQgZG9kZ3lfdHNjKHZvaWQpOwojIDEyNCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdGF0aWMgaW5saW5lIHZvaWQg
Y3B1aWQoaW50IG9wLCBpbnQgKmVheCwgaW50ICplYngsIGludCAqZWN4LCBpbnQgKmVkeCkKewog
ICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiICgqZWF4KSwKICAg
ICAgICAgICAgICAgICAgIj1iIiAoKmVieCksCiAgICAgICAgICAgICAgICAgICI9YyIgKCplY3gp
LAogICAgICAgICAgICAgICAgICAiPWQiICgqZWR4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9w
KSk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VheCh1bnNpZ25lZCBp
bnQgb3ApCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZWF4OwoKICAgICAgICBfX2FzbV9fKCJjcHVp
ZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9w
KQogICAgICAgICAgICAgICAgOiAiYngiLCAiY3giLCAiZHgiKTsKICAgICAgICByZXR1cm4gZWF4
Owp9CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VieCh1bnNpZ25lZCBpbnQgb3Ap
CnsKICAgICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlYng7CgogICAgICAgIF9fYXNtX18oImNwdWlk
IgogICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpCiAgICAgICAgICAgICAg
ICA6ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJjeCIsICJkeCIgKTsKICAgICAgICByZXR1
cm4gZWJ4Owp9CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VjeCh1bnNpZ25lZCBp
bnQgb3ApCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlY3g7CgogICAgICAgIF9fYXNtX18o
ImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWMiIChlY3gpCiAgICAgICAg
ICAgICAgICA6ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJkeCIgKTsKICAgICAg
ICByZXR1cm4gZWN4Owp9CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VkeCh1bnNp
Z25lZCBpbnQgb3ApCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlZHg7CgogICAgICAgIF9f
YXNtX18oImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWQiIChlZHgpCiAg
ICAgICAgICAgICAgICA6ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJjeCIpOwog
ICAgICAgIHJldHVybiBlZHg7Cn0KIyAxOTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbW11X2NyNF9mZWF0
dXJlczsKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfaW5fY3I0ICh1bnNpZ25lZCBsb25nIG1hc2sp
CnsKICAgICAgICBtbXVfY3I0X2ZlYXR1cmVzIHw9IG1hc2s7CiAgICAgICAgX19hc21fXygibW92
bCAlJWNyNCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAib3JsICUwLCUlZWF4XG5cdCIKICAg
ICAgICAgICAgICAgICJtb3ZsICUlZWF4LCUlY3I0XG4iCiAgICAgICAgICAgICAgICA6IDogImly
ZyIgKG1hc2spCiAgICAgICAgICAgICAgICA6ImF4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBj
bGVhcl9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIG1tdV9jcjRfZmVhdHVy
ZXMgJj0gfm1hc2s7CiAgICAgICAgX19hc21fXygibW92bCAlJWNyNCwlJWVheFxuXHQiCiAgICAg
ICAgICAgICAgICAiYW5kbCAlMCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAibW92bCAlJWVh
eCwlJWNyNFxuIgogICAgICAgICAgICAgICAgOiA6ICJpcmciICh+bWFzaykKICAgICAgICAgICAg
ICAgIDoiYXgiKTsKfQojIDI1NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
YXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4gaW50IE1DQV9idXM7CgoKCmV4dGVybiB1bnNpZ25lZCBp
bnQgbWFjaGluZV9pZDsKZXh0ZXJuIHVuc2lnbmVkIGludCBtYWNoaW5lX3N1Ym1vZGVsX2lkOwpl
eHRlcm4gdW5zaWduZWQgaW50IEJJT1NfcmV2aXNpb247CmV4dGVybiB1bnNpZ25lZCBpbnQgbWNh
X3BlbnRpdW1fZmxhZzsKIyAyODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IGkzODdfZnNhdmVfc3RydWN0IHsKICAgICAgICBsb25n
IGN3ZDsKICAgICAgICBsb25nIHN3ZDsKICAgICAgICBsb25nIHR3ZDsKICAgICAgICBsb25nIGZp
cDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25nIGZvczsK
ICAgICAgICBsb25nIHN0X3NwYWNlWzIwXTsKICAgICAgICBsb25nIHN0YXR1czsKfTsKCnN0cnVj
dCBpMzg3X2Z4c2F2ZV9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGN3ZDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzd2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHdkOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGZvcDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBsb25nIGZjczsK
ICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25nIG14Y3NyOwog
ICAgICAgIGxvbmcgcmVzZXJ2ZWQ7CiAgICAgICAgbG9uZyBzdF9zcGFjZVszMl07CiAgICAgICAg
bG9uZyB4bW1fc3BhY2VbMzJdOwogICAgICAgIGxvbmcgcGFkZGluZ1s1Nl07Cn0gX19hdHRyaWJ1
dGVfXyAoKGFsaWduZWQgKDE2KSkpOwoKc3RydWN0IGkzODdfc29mdF9zdHJ1Y3QgewogICAgICAg
IGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwogICAgICAgIGxvbmcgdHdkOwogICAgICAgIGxv
bmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcg
Zm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZnRv
cCwgY2hhbmdlZCwgbG9va2FoZWFkLCBub191cGRhdGUsIHJtLCBhbGltaXQ7CiAgICAgICAgc3Ry
dWN0IGluZm8gKmluZm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBlbnRyeV9laXA7Cn07Cgp1bmlv
biBpMzg3X3VuaW9uIHsKICAgICAgICBzdHJ1Y3QgaTM4N19mc2F2ZV9zdHJ1Y3QgZnNhdmU7CiAg
ICAgICAgc3RydWN0IGkzODdfZnhzYXZlX3N0cnVjdCBmeHNhdmU7CiAgICAgICAgc3RydWN0IGkz
ODdfc29mdF9zdHJ1Y3Qgc29mdDsKfTsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7CgpzdHJ1Y3QgdHNzX3N0cnVjdCB7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgYmFja19saW5rLF9fYmxoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNw
MDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczAsX19zczBoOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZXNwMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczEsX19zczFoOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZXNwMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczIsX19zczJoOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgX19jcjM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBlZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXgsZWN4LGVkeCxl
Yng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYnA7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc2k7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZGk7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNz
LCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGR0
LCBfX2xkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHJhY2UsIGJpdG1hcDsKICAgICAgICB1
bnNpZ25lZCBsb25nIGlvX2JpdG1hcFszMiArMV07CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBf
X2NhY2hlbGluZV9maWxsZXJbNV07Cn07CgpzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnM7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBnczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBkZWJ1Z3JlZ1s4XTsKCiAgICAgICAg
dW5zaWduZWQgbG9uZyBjcjIsIHRyYXBfbm8sIGVycm9yX2NvZGU7CgogICAgICAgIHVuaW9uIGkz
ODdfdW5pb24gaTM4NzsKCiAgICAgICAgc3RydWN0IHZtODZfc3RydWN0ICogdm04Nl9pbmZvOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25n
IHY4NmZsYWdzLCB2ODZtYXNrLCB2ODZtb2RlLCBzYXZlZF9lc3AwOwoKICAgICAgICBpbnQgaW9w
ZXJtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fYml0bWFwWzMyICsxXTsKfTsKIyA0MjQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0
IHRhc2tfc3RydWN0OwpzdHJ1Y3QgbW1fc3RydWN0OwoKCmV4dGVybiB2b2lkIHJlbGVhc2VfdGhy
ZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKCgoKZXh0ZXJuIGludCBrZXJuZWxfdGhyZWFkKGlu
dCAoKmZuKSh2b2lkICopLCB2b2lkICogYXJnLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKCgpleHRl
cm4gdm9pZCBjb3B5X3NlZ21lbnRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IG1tX3N0
cnVjdCAqIG1tKTsKZXh0ZXJuIHZvaWQgcmVsZWFzZV9zZWdtZW50cyhzdHJ1Y3QgbW1fc3RydWN0
ICogbW0pOwoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRocmVhZF9zYXZlZF9wYyhz
dHJ1Y3QgdGhyZWFkX3N0cnVjdCAqdCkKewogICAgICAgIHJldHVybiAoKHVuc2lnbmVkIGxvbmcg
Kil0LT5lc3ApWzNdOwp9Cgp1bnNpZ25lZCBsb25nIGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1
Y3QgKnApOwojIDQ1OCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3By
b2Nlc3Nvci5oIgpzdHJ1Y3QgbWljcm9jb2RlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaGRydmVy
OwogICAgICAgIHVuc2lnbmVkIGludCByZXY7CiAgICAgICAgdW5zaWduZWQgaW50IGRhdGU7CiAg
ICAgICAgdW5zaWduZWQgaW50IHNpZzsKICAgICAgICB1bnNpZ25lZCBpbnQgY2tzdW07CiAgICAg
ICAgdW5zaWduZWQgaW50IGxkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcGY7CiAgICAgICAg
dW5zaWduZWQgaW50IHJlc2VydmVkWzVdOwogICAgICAgIHVuc2lnbmVkIGludCBiaXRzWzUwMF07
Cn07CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHJlcF9ub3Aodm9pZCkKewogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKCJyZXA7bm9wIik7Cn0KCgoKCgoKCmV4dGVybiBpbmxpbmUgdm9pZCBw
cmVmZXRjaChjb25zdCB2b2lkICp4KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJw
cmVmZXRjaG50YSAoJTApIiA6IDogInIiKHgpKTsKfQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2NhY2hlLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMgojIDQ4ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIgpzdGF0aWMgaW5saW5l
IHZvaWQgcHJlZmV0Y2h3KGNvbnN0IHZvaWQgKngpIHs7fQojIDcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMgojIDE4ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0cnVjdCBsaXN0X2hlYWQgewogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQsICpwcmV2Owp9OwojIDM3ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZv
aWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICogbmV3LAogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgKiBwcmV2LAogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0KQp7CiAgICAgICAg
bmV4dC0+cHJldiA9IG5ldzsKICAgICAgICBuZXctPm5leHQgPSBuZXh0OwogICAgICAgIG5ldy0+
cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+bmV4dCA9IG5ldzsKfQojIDU1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpo
ZWFkKQp7CiAgICAgICAgX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQpOwp9CiMgNjgg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGlj
IF9faW5saW5lX18gdm9pZCBsaXN0X2FkZF90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3Ry
dWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2
LCBoZWFkKTsKfQojIDgwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19saXN0X2RlbChzdHJ1Y3QgbGlzdF9o
ZWFkICogcHJldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgKiBuZXh0KQp7CiAgICAgICAgbmV4dC0+cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+
bmV4dCA9IG5leHQ7Cn0KCgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2RlbChzdHJ1
Y3QgbGlzdF9oZWFkICplbnRyeSkKewogICAgICAgIF9fbGlzdF9kZWwoZW50cnktPnByZXYsIGVu
dHJ5LT5uZXh0KTsKfQoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9kZWxfaW5pdChz
dHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogICAgICAgIF9fbGlzdF9kZWwoZW50cnktPnByZXYs
IGVudHJ5LT5uZXh0KTsKICAgICAgICBkbyB7IChlbnRyeSktPm5leHQgPSAoZW50cnkpOyAoZW50
cnkpLT5wcmV2ID0gKGVudHJ5KTsgfSB3aGlsZSAoMCk7Cn0KCgoKCgpzdGF0aWMgX19pbmxpbmVf
XyBpbnQgbGlzdF9lbXB0eShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgcmV0dXJu
IGhlYWQtPm5leHQgPT0gaGVhZDsKfQoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3Rf
c3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7CgogICAgICAgIGlm
IChmaXJzdCAhPSBsaXN0KSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsYXN0
ID0gbGlzdC0+cHJldjsKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmF0ID0gaGVh
ZC0+bmV4dDsKCiAgICAgICAgICAgICAgICBmaXJzdC0+cHJldiA9IGhlYWQ7CiAgICAgICAgICAg
ICAgICBoZWFkLT5uZXh0ID0gZmlyc3Q7CgogICAgICAgICAgICAgICAgbGFzdC0+bmV4dCA9IGF0
OwogICAgICAgICAgICAgICAgYXQtPnByZXYgPSBsYXN0OwogICAgICAgIH0KfQojIDEzICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIgMgojIDI1ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyNiAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDIKCgpz
dHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5OwoKCnN0cnVjdCBrZXJuZWxfc3ltCnsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHZhbHVlOwogICAgICAgIGNoYXIgbmFtZVs2MF07Cn07CgpzdHJ1Y3Qg
bW9kdWxlX3N5bWJvbAp7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKICAgICAgICBjb25z
dCBjaGFyICpuYW1lOwp9OwoKc3RydWN0IG1vZHVsZV9yZWYKewogICAgICAgIHN0cnVjdCBtb2R1
bGUgKmRlcDsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpyZWY7CiAgICAgICAgc3RydWN0IG1vZHVs
ZV9yZWYgKm5leHRfcmVmOwp9OwoKCnN0cnVjdCBtb2R1bGVfcGVyc2lzdDsKCnN0cnVjdCBtb2R1
bGUKewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZV9vZl9zdHJ1Y3Q7CiAgICAgICAgc3RydWN0
IG1vZHVsZSAqbmV4dDsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc2l6ZTsKCiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBhdG9t
aWNfdCB1c2Vjb3VudDsKICAgICAgICAgICAgICAgIGxvbmcgcGFkOwogICAgICAgIH0gdWM7Cgog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgIHVuc2lnbmVkIG5zeW1zOwogICAg
ICAgIHVuc2lnbmVkIG5kZXBzOwoKICAgICAgICBzdHJ1Y3QgbW9kdWxlX3N5bWJvbCAqc3ltczsK
ICAgICAgICBzdHJ1Y3QgbW9kdWxlX3JlZiAqZGVwczsKICAgICAgICBzdHJ1Y3QgbW9kdWxlX3Jl
ZiAqcmVmczsKICAgICAgICBpbnQgKCppbml0KSh2b2lkKTsKICAgICAgICB2b2lkICgqY2xlYW51
cCkodm9pZCk7CiAgICAgICAgY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXhf
dGFibGVfc3RhcnQ7CiAgICAgICAgY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAq
ZXhfdGFibGVfZW5kOwoKCgoKCgogICAgICAgIGNvbnN0IHN0cnVjdCBtb2R1bGVfcGVyc2lzdCAq
cGVyc2lzdF9zdGFydDsKICAgICAgICBjb25zdCBzdHJ1Y3QgbW9kdWxlX3BlcnNpc3QgKnBlcnNp
c3RfZW5kOwogICAgICAgIGludCAoKmNhbl91bmxvYWQpKHZvaWQpOwogICAgICAgIGludCBydW5z
aXplOwogICAgICAgIGNvbnN0IGNoYXIgKmthbGxzeW1zX3N0YXJ0OwogICAgICAgIGNvbnN0IGNo
YXIgKmthbGxzeW1zX2VuZDsKICAgICAgICBjb25zdCBjaGFyICphcmNoZGF0YV9zdGFydDsKICAg
ICAgICBjb25zdCBjaGFyICphcmNoZGF0YV9lbmQ7CiAgICAgICAgY29uc3QgY2hhciAqa2VybmVs
X2RhdGE7Cn07CgpzdHJ1Y3QgbW9kdWxlX2luZm8KewogICAgICAgIHVuc2lnbmVkIGxvbmcgYWRk
cjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFn
czsKICAgICAgICBsb25nIHVzZWNvdW50Owp9OwojIDE4MyAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgiCmV4dGVybiB2b2lkIGludGVyX21vZHVsZV9y
ZWdpc3Rlcihjb25zdCBjaGFyICosIHN0cnVjdCBtb2R1bGUgKiwgY29uc3Qgdm9pZCAqKTsKZXh0
ZXJuIHZvaWQgaW50ZXJfbW9kdWxlX3VucmVnaXN0ZXIoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNv
bnN0IHZvaWQgKmludGVyX21vZHVsZV9nZXQoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNvbnN0IHZv
aWQgKmludGVyX21vZHVsZV9nZXRfcmVxdWVzdChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7
CmV4dGVybiB2b2lkIGludGVyX21vZHVsZV9wdXQoY29uc3QgY2hhciAqKTsKCnN0cnVjdCBpbnRl
cl9tb2R1bGVfZW50cnkgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBj
b25zdCBjaGFyICppbV9uYW1lOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAg
IGNvbnN0IHZvaWQgKnVzZXJkYXRhOwp9OwoKZXh0ZXJuIGludCB0cnlfaW5jX21vZF9jb3VudChz
dHJ1Y3QgbW9kdWxlICptb2QpOwojIDMyNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdWxlLmgiCmV4dGVybiBzdHJ1Y3QgbW9kdWxlICptb2R1bGVfbGlzdDsK
IyAxNDcgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L2tlcm5lbC5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVp
bHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDExMCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19nbnVjX3Zh
X2xpc3QgdmFfbGlzdDsKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgva2VybmVsLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9saW5rYWdlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgv
aW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMgojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDIKCgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDEKCgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIg
MQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5
cGVzLmgiIDIKIyAzNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
cG9zaXhfdHlwZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmRz
X2JpdHMgWygxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSldOwp9IF9fa2VybmVsX2Zk
X3NldDsKCgp0eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGludCk7CgoKdHlw
ZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IF9fa2VybmVsX2Rldl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19rZXJuZWxfaW5vX3Q7CnR5
cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfbW9kZV90Owp0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IF9fa2VybmVsX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9vZmZfdDsKdHlwZWRl
ZiBpbnQgX19rZXJuZWxfcGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfaXBj
X3BpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX3VpZF90Owp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IF9fa2VybmVsX2dpZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5l
bF9zaXplX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3NzaXplX3Q7CnR5cGVkZWYgaW50IF9fa2Vy
bmVsX3B0cmRpZmZfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX3RpbWVfdDsKdHlwZWRlZiBsb25n
IF9fa2VybmVsX3N1c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfY2xvY2tfdDsKdHlw
ZWRlZiBpbnQgX19rZXJuZWxfZGFkZHJfdDsKdHlwZWRlZiBjaGFyICogX19rZXJuZWxfY2FkZHJf
dDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF91aWQxNl90Owp0eXBlZGVmIHVuc2ln
bmVkIHNob3J0IF9fa2VybmVsX2dpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVs
X3VpZDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX2dpZDMyX3Q7Cgp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF91aWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBfX2tlcm5lbF9vbGRfZ2lkX3Q7CgoKdHlwZWRlZiBsb25nIGxvbmcgX19rZXJuZWxfbG9mZl90
OwoKCnR5cGVkZWYgc3RydWN0IHsKCiAgICAgICAgaW50IHZhbFsyXTsKCgoKfSBfX2tlcm5lbF9m
c2lkX3Q7CiMgNDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Bv
c2l4X3R5cGVzLmgiIDIKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC90eXBlcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
YXNtL3R5cGVzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvdHlwZXMuaCIgMgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZkX3NldCBmZF9zZXQ7CnR5cGVk
ZWYgX19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJuZWxfaW5vX3QgaW5vX3Q7CnR5
cGVkZWYgX19rZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiBfX2tlcm5lbF9ubGlua190IG5s
aW5rX3Q7CnR5cGVkZWYgX19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CnR5cGVkZWYgX19rZXJuZWxfcGlk
X3QgcGlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fa2Vy
bmVsX2tleV90IGtleV90Owp0eXBlZGVmIF9fa2VybmVsX3N1c2Vjb25kc190IHN1c2Vjb25kc190
OwoKCnR5cGVkZWYgX19rZXJuZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQz
Ml90IGdpZF90Owp0eXBlZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZfdDsKdHlwZWRlZiBfX2tl
cm5lbF9naWQxNl90IGdpZDE2X3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfb2xkX3VpZF90IG9sZF91
aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9vbGRfZ2lkX3Qgb2xkX2dpZF90OwojIDQ1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIgp0eXBlZGVmIF9fa2Vy
bmVsX2xvZmZfdCBsb2ZmX3Q7CiMgNTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IHNpemVfdDsKCgoKCnR5
cGVkZWYgX19rZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9wdHJk
aWZmX3QgcHRyZGlmZl90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgdGltZV90OwoKCgoK
dHlwZWRlZiBfX2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX2Nh
ZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDsKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdW5jaGFyOwp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKCgoKdHlwZWRlZiBfX3U4IHVfaW50OF90Owp0
eXBlZGVmIF9fczggaW50OF90Owp0eXBlZGVmIF9fdTE2IHVfaW50MTZfdDsKdHlwZWRlZiBfX3Mx
NiBpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJfdDsKdHlwZWRlZiBfX3MzMiBpbnQzMl90
OwoKCgp0eXBlZGVmIF9fdTggdWludDhfdDsKdHlwZWRlZiBfX3UxNiB1aW50MTZfdDsKdHlwZWRl
ZiBfX3UzMiB1aW50MzJfdDsKCgp0eXBlZGVmIF9fdTY0IHVpbnQ2NF90Owp0eXBlZGVmIF9fdTY0
IHVfaW50NjRfdDsKdHlwZWRlZiBfX3M2NCBpbnQ2NF90OwojIDEyMyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIKc3RydWN0IHVzdGF0IHsKICAgICAg
ICBfX2tlcm5lbF9kYWRkcl90IGZfdGZyZWU7CiAgICAgICAgX19rZXJuZWxfaW5vX3QgZl90aW5v
ZGU7CiAgICAgICAgY2hhciBmX2ZuYW1lWzZdOwogICAgICAgIGNoYXIgZl9mcGFja1s2XTsKfTsK
IyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgi
IDIKIyA0OSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVs
LmgiCnN0cnVjdCBjb21wbGV0aW9uOwoKZXh0ZXJuIHN0cnVjdCBub3RpZmllcl9ibG9jayAqcGFu
aWNfbm90aWZpZXJfbGlzdDsKICAgICAgICAgICB2b2lkIHBhbmljKGNvbnN0IGNoYXIgKiBmbXQs
IC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4sIGZvcm1hdCAocHJpbnRmLCAx
LCAyKSkpOwogICAgICAgICAgIHZvaWQgZG9fZXhpdChsb25nIGVycm9yX2NvZGUpCiAgICAgICAg
X19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKICAgICAgICAgICB2b2lkIGNvbXBsZXRlX2FuZF9l
eGl0KHN0cnVjdCBjb21wbGV0aW9uICosIGxvbmcpCiAgICAgICAgX19hdHRyaWJ1dGVfXygobm9y
ZXR1cm4pKTsKZXh0ZXJuIGludCBhYnMoaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2ltcGxl
X3N0cnRvdWwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGxvbmcg
c2ltcGxlX3N0cnRvbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4g
dW5zaWduZWQgbG9uZyBsb25nIHNpbXBsZV9zdHJ0b3VsbChjb25zdCBjaGFyICosY2hhciAqKix1
bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9uZyBsb25nIHNpbXBsZV9zdHJ0b2xsKGNvbnN0IGNoYXIg
KixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgc3ByaW50ZihjaGFyICogYnVmLCBj
b25zdCBjaGFyICogZm10LCAuLi4pOwpleHRlcm4gaW50IHZzcHJpbnRmKGNoYXIgKmJ1ZiwgY29u
c3QgY2hhciAqLCB2YV9saXN0KTsKZXh0ZXJuIGludCBzbnByaW50ZihjaGFyICogYnVmLCBzaXpl
X3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwpleHRlcm4gaW50IHZzbnByaW50ZihjaGFy
ICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CgpleHRl
cm4gaW50IHNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgIF9f
YXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5mLDIsMykpKTsKZXh0ZXJuIGludCB2c3NjYW5mKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKCmV4dGVybiBpbnQgZ2V0X29wdGlv
bihjaGFyICoqc3RyLCBpbnQgKnBpbnQpOwpleHRlcm4gY2hhciAqZ2V0X29wdGlvbnMoY2hhciAq
c3RyLCBpbnQgbmludHMsIGludCAqaW50cyk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgbWVt
cGFyc2UoY2hhciAqcHRyLCBjaGFyICoqcmV0cHRyKTsKZXh0ZXJuIHZvaWQgZGV2X3Byb2JlX2xv
Y2sodm9pZCk7CmV4dGVybiB2b2lkIGRldl9wcm9iZV91bmxvY2sodm9pZCk7CgpleHRlcm4gaW50
IHNlc3Npb25fb2ZfcGdycChpbnQgcGdycCk7CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IGludCBwcmludGsoY29uc3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18g
KChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKCmV4dGVybiBpbnQgY29uc29sZV9sb2dsZXZlbDsK
CnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3NpbGVudCh2b2lkKQp7CiAgICAgICAgY29uc29s
ZV9sb2dsZXZlbCA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3ZlcmJvc2Uodm9p
ZCkKewogICAgICAgIGlmIChjb25zb2xlX2xvZ2xldmVsKQogICAgICAgICAgICAgICAgY29uc29s
ZV9sb2dsZXZlbCA9IDE1Owp9CgpleHRlcm4gdm9pZCBidXN0X3NwaW5sb2NrcyhpbnQgeWVzKTsK
ZXh0ZXJuIGludCBvb3BzX2luX3Byb2dyZXNzOwoKZXh0ZXJuIGludCB0YWludGVkOwpleHRlcm4g
Y29uc3QgY2hhciAqcHJpbnRfdGFpbnRlZCh2b2lkKTsKIyAxNjAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpzdHJ1Y3Qgc3lzaW5mbyB7CiAgICAg
ICAgbG9uZyB1cHRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb2Fkc1szXTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHRvdGFscmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZXJhbTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNoYXJlZHJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZl
cnJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFsc3dhcDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGZyZWVzd2FwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHByb2NzOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHBhZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFsaGlnaDsKICAgICAgICB1
bnNpZ25lZCBsb25nIGZyZWVoaWdoOwogICAgICAgIHVuc2lnbmVkIGludCBtZW1fdW5pdDsKICAg
ICAgICBjaGFyIF9mWzIwLTIqc2l6ZW9mKGxvbmcpLXNpemVvZihpbnQpXTsKfTsKIyAxNDggIjgx
Mzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3BjaS5oIiAxCiMgMjc2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9wY2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9w
Y2lfaWRzLmgiIDEKIyAyNzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3BjaS5oIiAyCiMgMjk5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9wY2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgMzAwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L2NvbmZpZy5oIiAxCiMgMzAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L2lvcG9ydC5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2lvcG9ydC5oIgpzdHJ1Y3QgcmVzb3VyY2UgewogICAgICAgIGNvbnN0IGNoYXIg
Km5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZmxhZ3M7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpzaWJsaW5nLCAq
Y2hpbGQ7Cn07CgpzdHJ1Y3QgcmVzb3VyY2VfbGlzdCB7CiAgICAgICAgc3RydWN0IHJlc291cmNl
X2xpc3QgKm5leHQ7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpyZXM7CiAgICAgICAgc3RydWN0
IHBjaV9kZXYgKmRldjsKfTsKIyA4MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvaW9wb3J0LmgiCmV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgaW9wb3J0X3Jlc291cmNl
OwpleHRlcm4gc3RydWN0IHJlc291cmNlIGlvbWVtX3Jlc291cmNlOwoKZXh0ZXJuIGludCBnZXRf
cmVzb3VyY2VfbGlzdChzdHJ1Y3QgcmVzb3VyY2UgKiwgY2hhciAqYnVmLCBpbnQgc2l6ZSk7Cgpl
eHRlcm4gaW50IGNoZWNrX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcm9vdCwgdW5zaWduZWQg
bG9uZywgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgcmVxdWVzdF9yZXNvdXJjZShzdHJ1Y3Qg
cmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXJjZSAqbmV3KTsKZXh0ZXJuIGludCByZWxlYXNl
X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqbmV3KTsKZXh0ZXJuIGludCBhbGxvY2F0ZV9yZXNv
dXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXJjZSAqbmV3LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1pbiwgdW5zaWduZWQgbG9uZyBtYXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhbGlnbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkICgqYWxpZ25mKSh2b2lkICosIHN0cnVjdCByZXNvdXJjZSAq
LCB1bnNpZ25lZCBsb25nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphbGln
bmZfZGF0YSk7CgoKCgoKZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVzdF9yZWdpb24o
c3RydWN0IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbiwg
Y29uc3QgY2hhciAqbmFtZSk7CgoKCgoKCgpleHRlcm4gaW50IF9fY2hlY2tfcmVnaW9uKHN0cnVj
dCByZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQg
X19yZWxlYXNlX3JlZ2lvbihzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWdu
ZWQgbG9uZyk7CgoKCgoKZXh0ZXJuIHZvaWQgYXV0b2lycV9zZXR1cChpbnQgd2FpdHRpbWUpOwpl
eHRlcm4gaW50IGF1dG9pcnFfcmVwb3J0KGludCB3YWl0dGltZSk7CiMgMzAyICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDMwMyAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcGNpLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEKIyA1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyCiMgMzA0ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9wY2kuaCIgMgoKCmVudW0gcGNp
X21tYXBfc3RhdGUgewogICAgICAgIHBjaV9tbWFwX2lvLAogICAgICAgIHBjaV9tbWFwX21lbQp9
OwojIDMzNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcGNpLmgi
CnN0cnVjdCBwY2lfZGV2IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGdsb2JhbF9saXN0Owog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYnVzX2xpc3Q7CiAgICAgICAgc3RydWN0IHBjaV9idXMg
KmJ1czsKICAgICAgICBzdHJ1Y3QgcGNpX2J1cyAqc3Vib3JkaW5hdGU7CgogICAgICAgIHZvaWQg
KnN5c2RhdGE7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jZW50OwoKICAgICAg
ICB1bnNpZ25lZCBpbnQgZGV2Zm47CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGRldmljZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdWJzeXN0
ZW1fdmVuZG9yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN1YnN5c3RlbV9kZXZpY2U7CiAgICAg
ICAgdW5zaWduZWQgaW50IGNsYXNzOwogICAgICAgIHU4IGhkcl90eXBlOwogICAgICAgIHU4IHJv
bV9iYXNlX3JlZzsKCiAgICAgICAgc3RydWN0IHBjaV9kcml2ZXIgKmRyaXZlcjsKICAgICAgICB2
b2lkICpkcml2ZXJfZGF0YTsKICAgICAgICB1NjQgZG1hX21hc2s7CgoKCgoKICAgICAgICB1MzIg
Y3VycmVudF9zdGF0ZTsKCgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yX2NvbXBhdGli
bGVbNF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGV2aWNlX2NvbXBhdGlibGVbNF07CgoKCgoK
ICAgICAgICB1bnNpZ25lZCBpbnQgaXJxOwogICAgICAgIHN0cnVjdCByZXNvdXJjZSByZXNvdXJj
ZVsxMl07CiAgICAgICAgc3RydWN0IHJlc291cmNlIGRtYV9yZXNvdXJjZVsyXTsKICAgICAgICBz
dHJ1Y3QgcmVzb3VyY2UgaXJxX3Jlc291cmNlWzJdOwoKICAgICAgICBjaGFyIG5hbWVbODBdOwog
ICAgICAgIGNoYXIgc2xvdF9uYW1lWzhdOwogICAgICAgIGludCBhY3RpdmU7CiAgICAgICAgaW50
IHJvOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJlZ3M7CgogICAgICAgIGludCAoKnByZXBhcmUp
KHN0cnVjdCBwY2lfZGV2ICpkZXYpOwogICAgICAgIGludCAoKmFjdGl2YXRlKShzdHJ1Y3QgcGNp
X2RldiAqZGV2KTsKICAgICAgICBpbnQgKCpkZWFjdGl2YXRlKShzdHJ1Y3QgcGNpX2RldiAqZGV2
KTsKfTsKIyA0MDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Bj
aS5oIgpzdHJ1Y3QgcGNpX2J1cyB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBub2RlOwogICAg
ICAgIHN0cnVjdCBwY2lfYnVzICpwYXJlbnQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjaGls
ZHJlbjsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRldmljZXM7CiAgICAgICAgc3RydWN0IHBj
aV9kZXYgKnNlbGY7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpyZXNvdXJjZVs0XTsKCiAgICAg
ICAgc3RydWN0IHBjaV9vcHMgKm9wczsKICAgICAgICB2b2lkICpzeXNkYXRhOwogICAgICAgIHN0
cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2RpcjsKCiAgICAgICAgdW5zaWduZWQgY2hhciBudW1i
ZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBwcmltYXJ5OwogICAgICAgIHVuc2lnbmVkIGNoYXIg
c2Vjb25kYXJ5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3Vib3JkaW5hdGU7CgogICAgICAgIGNo
YXIgbmFtZVs0OF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGRldmljZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VyaWFsOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgcG5wdmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcHJvZHVjdHZlcjsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGNoZWNrc3VtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkMTsK
fTsKCgoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgcGNpX3Jvb3RfYnVzZXM7CmV4dGVybiBzdHJ1
Y3QgbGlzdF9oZWFkIHBjaV9kZXZpY2VzOwojIDQ1MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfb3BzIHsKICAgICAgICBpbnQgKCpy
ZWFkX2J5dGUpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTggKnZhbCk7CiAgICAgICAg
aW50ICgqcmVhZF93b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHUxNiAqdmFsKTsK
ICAgICAgICBpbnQgKCpyZWFkX2R3b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHUz
MiAqdmFsKTsKICAgICAgICBpbnQgKCp3cml0ZV9ieXRlKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQg
d2hlcmUsIHU4IHZhbCk7CiAgICAgICAgaW50ICgqd3JpdGVfd29yZCkoc3RydWN0IHBjaV9kZXYg
KiwgaW50IHdoZXJlLCB1MTYgdmFsKTsKICAgICAgICBpbnQgKCp3cml0ZV9kd29yZCkoc3RydWN0
IHBjaV9kZXYgKiwgaW50IHdoZXJlLCB1MzIgdmFsKTsKfTsKCnN0cnVjdCBwYnVzX3NldF9yYW5n
ZXNfZGF0YQp7CiAgICAgICAgaW50IGZvdW5kX3ZnYTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlv
X3N0YXJ0LCBpb19lbmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1fc3RhcnQsIG1lbV9lbmQ7
Cn07CgpzdHJ1Y3QgcGNpX2RldmljZV9pZCB7CiAgICAgICAgdW5zaWduZWQgaW50IHZlbmRvciwg
ZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGludCBzdWJ2ZW5kb3IsIHN1YmRldmljZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgY2xhc3MsIGNsYXNzX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk
cml2ZXJfZGF0YTsKfTsKCnN0cnVjdCBwY2lfZHJpdmVyIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIG5vZGU7CiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2Rl
dmljZV9pZCAqaWRfdGFibGU7CiAgICAgICAgaW50ICgqcHJvYmUpIChzdHJ1Y3QgcGNpX2RldiAq
ZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpOwogICAgICAgIHZvaWQgKCpyZW1v
dmUpIChzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKICAgICAgICBpbnQgKCpzYXZlX3N0YXRlKSAoc3Ry
dWN0IHBjaV9kZXYgKmRldiwgdTMyIHN0YXRlKTsKICAgICAgICBpbnQgKCpzdXNwZW5kKShzdHJ1
Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3RhdGUpOwogICAgICAgIGludCAoKnJlc3VtZSkgKHN0cnVj
dCBwY2lfZGV2ICpkZXYpOwogICAgICAgIGludCAoKmVuYWJsZV93YWtlKSAoc3RydWN0IHBjaV9k
ZXYgKmRldiwgdTMyIHN0YXRlLCBpbnQgZW5hYmxlKTsKfTsKIyA0OTQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgp2b2lkIHBjaWJpb3NfaW5pdCh2b2lk
KTsKdm9pZCBwY2liaW9zX2ZpeHVwX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqKTsKaW50IHBjaWJpb3Nf
ZW5hYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqKTsKY2hhciAqcGNpYmlvc19zZXR1cCAoY2hh
ciAqc3RyKTsKCgp2b2lkIHBjaWJpb3NfYWxpZ25fcmVzb3VyY2Uodm9pZCAqLCBzdHJ1Y3QgcmVz
b3VyY2UgKiwgdW5zaWduZWQgbG9uZyk7CnZvaWQgcGNpYmlvc191cGRhdGVfcmVzb3VyY2Uoc3Ry
dWN0IHBjaV9kZXYgKiwgc3RydWN0IHJlc291cmNlICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHJlc291cmNlICosIGludCk7CnZvaWQgcGNpYmlvc191cGRhdGVfaXJxKHN0
cnVjdCBwY2lfZGV2ICosIGludCBpcnEpOwp2b2lkIHBjaWJpb3NfZml4dXBfcGJ1c19yYW5nZXMo
c3RydWN0IHBjaV9idXMgKiwgc3RydWN0IHBidXNfc2V0X3Jhbmdlc19kYXRhICopOwoKCgppbnQg
cGNpYmlvc19wcmVzZW50KHZvaWQpOwppbnQgcGNpYmlvc19yZWFkX2NvbmZpZ19ieXRlICh1bnNp
Z25lZCBjaGFyIGJ1cywgdW5zaWduZWQgY2hhciBkZXZfZm4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIGNoYXIgKnZhbCk7CmludCBw
Y2liaW9zX3JlYWRfY29uZmlnX3dvcmQgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFy
IGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVy
ZSwgdW5zaWduZWQgc2hvcnQgKnZhbCk7CmludCBwY2liaW9zX3JlYWRfY29uZmlnX2R3b3JkICh1
bnNpZ25lZCBjaGFyIGJ1cywgdW5zaWduZWQgY2hhciBkZXZfZm4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBpbnQgKnZhbCk7Cmlu
dCBwY2liaW9zX3dyaXRlX2NvbmZpZ19ieXRlICh1bnNpZ25lZCBjaGFyIGJ1cywgdW5zaWduZWQg
Y2hhciBkZXZfZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IHdoZXJlLCB1bnNpZ25lZCBjaGFyIHZhbCk7CmludCBwY2liaW9zX3dyaXRlX2NvbmZpZ193b3Jk
ICh1bnNpZ25lZCBjaGFyIGJ1cywgdW5zaWduZWQgY2hhciBkZXZfZm4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBzaG9ydCB2YWwp
OwppbnQgcGNpYmlvc193cml0ZV9jb25maWdfZHdvcmQgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNp
Z25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBpbnQgdmFsKTsKaW50IHBjaWJpb3NfZmluZF9jbGFzcyAo
dW5zaWduZWQgaW50IGNsYXNzX2NvZGUsIHVuc2lnbmVkIHNob3J0IGluZGV4LCB1bnNpZ25lZCBj
aGFyICpidXMsIHVuc2lnbmVkIGNoYXIgKmRldl9mbik7CmludCBwY2liaW9zX2ZpbmRfZGV2aWNl
ICh1bnNpZ25lZCBzaG9ydCB2ZW5kb3IsIHVuc2lnbmVkIHNob3J0IGRldl9pZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGluZGV4LCB1bnNpZ25lZCBjaGFyICpidXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpkZXZfZm4pOwoKCgp2b2lk
IHBjaV9pbml0KHZvaWQpOwppbnQgcGNpX2J1c19leGlzdHMoY29uc3Qgc3RydWN0IGxpc3RfaGVh
ZCAqbGlzdCwgaW50IG5yKTsKc3RydWN0IHBjaV9idXMgKnBjaV9zY2FuX2J1cyhpbnQgYnVzLCBz
dHJ1Y3QgcGNpX29wcyAqb3BzLCB2b2lkICpzeXNkYXRhKTsKc3RydWN0IHBjaV9idXMgKnBjaV9h
bGxvY19wcmltYXJ5X2J1cyhpbnQgYnVzKTsKc3RydWN0IHBjaV9kZXYgKnBjaV9zY2FuX3Nsb3Qo
c3RydWN0IHBjaV9kZXYgKnRlbXApOwppbnQgcGNpX3Byb2NfYXR0YWNoX2RldmljZShzdHJ1Y3Qg
cGNpX2RldiAqZGV2KTsKaW50IHBjaV9wcm9jX2RldGFjaF9kZXZpY2Uoc3RydWN0IHBjaV9kZXYg
KmRldik7CnZvaWQgcGNpX25hbWVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwpjaGFyICpw
Y2lfY2xhc3NfbmFtZSh1MzIgY2xhc3MpOwp2b2lkIHBjaV9yZWFkX2JyaWRnZV9iYXNlcyhzdHJ1
Y3QgcGNpX2J1cyAqY2hpbGQpOwpzdHJ1Y3QgcmVzb3VyY2UgKnBjaV9maW5kX3BhcmVudF9yZXNv
dXJjZShjb25zdCBzdHJ1Y3QgcGNpX2RldiAqZGV2LCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7Cmlu
dCBwY2lfc2V0dXBfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX2dldF9pbnRl
cnJ1cHRfcGluKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBwY2lfZGV2ICoqYnJpZGdlKTsK
CgoKc3RydWN0IHBjaV9kZXYgKnBjaV9maW5kX2RldmljZSAodW5zaWduZWQgaW50IHZlbmRvciwg
dW5zaWduZWQgaW50IGRldmljZSwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKmZyb20pOwpzdHJ1Y3Qg
cGNpX2RldiAqcGNpX2ZpbmRfc3Vic3lzICh1bnNpZ25lZCBpbnQgdmVuZG9yLCB1bnNpZ25lZCBp
bnQgZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
c3NfdmVuZG9yLCB1bnNpZ25lZCBpbnQgc3NfZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqZnJvbSk7CnN0cnVjdCBwY2lfZGV2ICpw
Y2lfZmluZF9jbGFzcyAodW5zaWduZWQgaW50IGNsYXNzLCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAq
ZnJvbSk7CnN0cnVjdCBwY2lfZGV2ICpwY2lfZmluZF9zbG90ICh1bnNpZ25lZCBpbnQgYnVzLCB1
bnNpZ25lZCBpbnQgZGV2Zm4pOwppbnQgcGNpX2ZpbmRfY2FwYWJpbGl0eSAoc3RydWN0IHBjaV9k
ZXYgKmRldiwgaW50IGNhcCk7CgppbnQgcGNpX3JlYWRfY29uZmlnX2J5dGUoc3RydWN0IHBjaV9k
ZXYgKmRldiwgaW50IHdoZXJlLCB1OCAqdmFsKTsKaW50IHBjaV9yZWFkX2NvbmZpZ193b3JkKHN0
cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTE2ICp2YWwpOwppbnQgcGNpX3JlYWRfY29u
ZmlnX2R3b3JkKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTMyICp2YWwpOwppbnQg
cGNpX3dyaXRlX2NvbmZpZ19ieXRlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTgg
dmFsKTsKaW50IHBjaV93cml0ZV9jb25maWdfd29yZChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQg
d2hlcmUsIHUxNiB2YWwpOwppbnQgcGNpX3dyaXRlX2NvbmZpZ19kd29yZChzdHJ1Y3QgcGNpX2Rl
diAqZGV2LCBpbnQgd2hlcmUsIHUzMiB2YWwpOwoKaW50IHBjaV9lbmFibGVfZGV2aWNlKHN0cnVj
dCBwY2lfZGV2ICpkZXYpOwp2b2lkIHBjaV9kaXNhYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAq
ZGV2KTsKdm9pZCBwY2lfc2V0X21hc3RlcihzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKaW50IHBjaV9z
ZXRfZG1hX21hc2soc3RydWN0IHBjaV9kZXYgKmRldiwgdTY0IG1hc2spOwppbnQgcGNpX2RhY19z
ZXRfZG1hX21hc2soc3RydWN0IHBjaV9kZXYgKmRldiwgdTY0IG1hc2spOwppbnQgcGNpX2Fzc2ln
bl9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgaSk7CgoKaW50IHBjaV9zYXZlX3N0
YXRlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHUzMiAqYnVmZmVyKTsKaW50IHBjaV9yZXN0b3JlX3N0
YXRlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHUzMiAqYnVmZmVyKTsKaW50IHBjaV9zZXRfcG93ZXJf
c3RhdGUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHN0YXRlKTsKaW50IHBjaV9lbmFibGVfd2Fr
ZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3RhdGUsIGludCBlbmFibGUpOwoKCgppbnQgcGNp
X2NsYWltX3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICosIGludCk7CnZvaWQgcGNpX2Fzc2lnbl91
bmFzc2lnbmVkX3Jlc291cmNlcyh2b2lkKTsKdm9pZCBwZGV2X2VuYWJsZV9kZXZpY2Uoc3RydWN0
IHBjaV9kZXYgKik7CnZvaWQgcGRldl9zb3J0X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqLCBz
dHJ1Y3QgcmVzb3VyY2VfbGlzdCAqLCB1MzIpOwp1bnNpZ25lZCBsb25nIHBjaV9icmlkZ2VfY2hl
Y2tfaW8oc3RydWN0IHBjaV9kZXYgKik7CnZvaWQgcGNpX2ZpeHVwX2lycXModTggKCopKHN0cnVj
dCBwY2lfZGV2ICosIHU4ICopLAogICAgICAgICAgICAgICAgICAgIGludCAoKikoc3RydWN0IHBj
aV9kZXYgKiwgdTgsIHU4KSk7CgppbnQgcGNpX3JlcXVlc3RfcmVnaW9ucyhzdHJ1Y3QgcGNpX2Rl
diAqLCBjaGFyICopOwp2b2lkIHBjaV9yZWxlYXNlX3JlZ2lvbnMoc3RydWN0IHBjaV9kZXYgKik7
CgoKaW50IHBjaV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHBjaV9kcml2ZXIgKik7CnZvaWQgcGNp
X3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBwY2lfZHJpdmVyICopOwp2b2lkIHBjaV9pbnNlcnRf
ZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICosIHN0cnVjdCBwY2lfYnVzICopOwp2b2lkIHBjaV9yZW1v
dmVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICopOwpzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2Rldl9k
cml2ZXIoY29uc3Qgc3RydWN0IHBjaV9kZXYgKik7CmNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lk
ICpwY2lfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZHMsIGNvbnN0
IHN0cnVjdCBwY2lfZGV2ICpkZXYpOwoKCnN0cnVjdCBwY2lfcG9vbCAqcGNpX3Bvb2xfY3JlYXRl
IChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgcGNpX2RldiAqZGV2LAogICAgICAgICAgICAgICAg
c2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbiwgc2l6ZV90IGFsbG9jYXRpb24sIGludCBmbGFncyk7
CnZvaWQgcGNpX3Bvb2xfZGVzdHJveSAoc3RydWN0IHBjaV9wb29sICpwb29sKTsKCnZvaWQgKnBj
aV9wb29sX2FsbG9jIChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wsIGludCBmbGFncywgZG1hX2FkZHJf
dCAqaGFuZGxlKTsKdm9pZCBwY2lfcG9vbF9mcmVlIChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wsIHZv
aWQgKnZhZGRyLCBkbWFfYWRkcl90IGFkZHIpOwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiIDIKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIgpleHRlcm4gdW5zaWduZWQgaW50IHBjaWJpb3Nf
YXNzaWduX2FsbF9idXNzZXModm9pZCk7CgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBwY2lfbWVt
X3N0YXJ0OwoKCgp2b2lkIHBjaWJpb3Nfc2V0X21hc3RlcihzdHJ1Y3QgcGNpX2RldiAqZGV2KTsK
dm9pZCBwY2liaW9zX3BlbmFsaXplX2lzYV9pcnEoaW50IGlycSk7CgoKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMzAgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wY2kuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMQojIDEyICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zbGFiLmgiCnR5cGVkZWYgc3RydWN0
IGttZW1fY2FjaGVfcyBrbWVtX2NhY2hlX3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpleHRlcm4gdW5zaWduZWQgbG9uZyBl
dmVudDsKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9z
Y2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
YmluZm10cy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvcHRyYWNlLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvcHRyYWNlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvYXNtL3B0cmFjZS5oIiAxCiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2FzbS9wdHJhY2UuaCIKc3RydWN0IHB0X3JlZ3MgewogICAgICAgIGxvbmcgZWJ4OwogICAg
ICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcgZXNpOwogICAgICAg
IGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4OwogICAgICAgIGlu
dCB4ZHM7CiAgICAgICAgaW50IHhlczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxv
bmcgZWlwOwogICAgICAgIGludCB4Y3M7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9u
ZyBlc3A7CiAgICAgICAgaW50IHhzczsKfTsKIyA2MCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0
X3JlZ3MgKik7CiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3B0cmFjZS5oIiAyCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvYmluZm10cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvY2FwYWJpbGl0eS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgMTcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTggIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQojIDIxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDIKIyAzMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdHJ1Y3Qg
X193YWl0X3F1ZXVlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CgogICAgICAgIHN0cnVj
dCB0YXNrX3N0cnVjdCAqIHRhc2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0YXNrX2xpc3Q7
CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRfcXVldWUgd2FpdF9xdWV1ZV90OwojIDc3ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiCnN0cnVjdCBf
X3dhaXRfcXVldWVfaGVhZCB7CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgdGFza19saXN0OwoKCgoKfTsKdHlwZWRlZiBzdHJ1Y3QgX193YWl0X3F1ZXVl
X2hlYWQgd2FpdF9xdWV1ZV9oZWFkX3Q7CiMgMTU1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC93YWl0LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3dhaXRxdWV1
ZV9oZWFkKHdhaXRfcXVldWVfaGVhZF90ICpxKQp7CgoKCgogICAgICAgIHEtPmxvY2sgPSAoc3Bp
bmxvY2tfdCkgeyAxIH07CiAgICAgICAgZG8geyAoJnEtPnRhc2tfbGlzdCktPm5leHQgPSAoJnEt
PnRhc2tfbGlzdCk7ICgmcS0+dGFza19saXN0KS0+cHJldiA9ICgmcS0+dGFza19saXN0KTsgfSB3
aGlsZSAoMCk7CgoKCgp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF93YWl0cXVldWVfZW50cnko
d2FpdF9xdWV1ZV90ICpxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKCgoKCiAgICAgICAgcS0+
ZmxhZ3MgPSAwOwogICAgICAgIHEtPnRhc2sgPSBwOwoKCgp9CgpzdGF0aWMgaW5saW5lIGludCB3
YWl0cXVldWVfYWN0aXZlKHdhaXRfcXVldWVfaGVhZF90ICpxKQp7CgoKCgoKCiAgICAgICAgcmV0
dXJuICFsaXN0X2VtcHR5KCZxLT50YXNrX2xpc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19h
ZGRfd2FpdF9xdWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwgd2FpdF9xdWV1ZV90ICpuZXcp
CnsKIyAyMDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIKICAgICAgICBsaXN0X2FkZCgmbmV3LT50YXNrX2xpc3QsICZoZWFkLT50YXNrX2xpc3QpOwp9
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hZGRfd2FpdF9xdWV1ZV90YWlsKHdhaXRfcXVldWVf
aGVhZF90ICpoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3YWl0X3F1ZXVlX3QgKm5ldykKewojIDIyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIgogICAgICAgIGxpc3RfYWRkX3RhaWwoJm5ldy0+dGFz
a19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3Zl
X3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpvbGQpCnsK
CgoKCgogICAgICAgIGxpc3RfZGVsKCZvbGQtPnRhc2tfbGlzdCk7Cn0KIyAxMyAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNCAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Zmcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3N0YXRmcy5oIiAxCgoKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNyAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3N0YXRmcy5oIiAyCgp0eXBlZGVm
IF9fa2VybmVsX2ZzaWRfdCBmc2lkX3Q7CgoKCnN0cnVjdCBzdGF0ZnMgewogICAgICAgIGxvbmcg
Zl90eXBlOwogICAgICAgIGxvbmcgZl9ic2l6ZTsKICAgICAgICBsb25nIGZfYmxvY2tzOwogICAg
ICAgIGxvbmcgZl9iZnJlZTsKICAgICAgICBsb25nIGZfYmF2YWlsOwogICAgICAgIGxvbmcgZl9m
aWxlczsKICAgICAgICBsb25nIGZfZmZyZWU7CiAgICAgICAgX19rZXJuZWxfZnNpZF90IGZfZnNp
ZDsKICAgICAgICBsb25nIGZfbmFtZWxlbjsKICAgICAgICBsb25nIGZfc3BhcmVbNl07Cn07CiMg
NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdmZzLmgiIDIKIyAx
NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25ldC5oIiAxCiMgMjEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25ldC5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMjIg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25ldC5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDEKCgoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zb2NrZXQuaCIg
MQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zb2NraW9z
LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc29ja2V0
LmgiIDIKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zb2Nr
ZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Nv
Y2tpb3MuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9zb2NraW9zLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNt
L3NvY2tpb3MuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9zb2NraW9zLmgiIDIKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9zb2NrZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3Vpby5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3Vpby5oIiAyCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3Vpby5oIgpzdHJ1Y3QgaW92ZWMKewogICAgICAgIHZvaWQgKmlvdl9iYXNl
OwogICAgICAgIF9fa2VybmVsX3NpemVfdCBpb3ZfbGVuOwp9OwojIDkgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEwICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgoKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBzYV9mYW1pbHlfdDsKCgoKCgpzdHJ1Y3Qgc29ja2FkZHIgewogICAgICAgIHNh
X2ZhbWlseV90IHNhX2ZhbWlseTsKICAgICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKc3RydWN0
IGxpbmdlciB7CiAgICAgICAgaW50IGxfb25vZmY7CiAgICAgICAgaW50IGxfbGluZ2VyOwp9OwoK
CgoKCgoKc3RydWN0IG1zZ2hkciB7CiAgICAgICAgdm9pZCAqIG1zZ19uYW1lOwogICAgICAgIGlu
dCBtc2dfbmFtZWxlbjsKICAgICAgICBzdHJ1Y3QgaW92ZWMgKiBtc2dfaW92OwogICAgICAgIF9f
a2VybmVsX3NpemVfdCBtc2dfaW92bGVuOwogICAgICAgIHZvaWQgKiBtc2dfY29udHJvbDsKICAg
ICAgICBfX2tlcm5lbF9zaXplX3QgbXNnX2NvbnRyb2xsZW47CiAgICAgICAgdW5zaWduZWQgbXNn
X2ZsYWdzOwp9OwoKCgoKCgoKc3RydWN0IGNtc2doZHIgewogICAgICAgIF9fa2VybmVsX3NpemVf
dCBjbXNnX2xlbjsKICAgICAgICBpbnQgY21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBl
Owp9OwojIDEwMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc29j
a2V0LmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IGNtc2doZHIgKiBfX2Ntc2dfbnh0aGRyKHZvaWQg
Kl9fY3RsLCBfX2tlcm5lbF9zaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2cpCnsKICAgICAgICBz
dHJ1Y3QgY21zZ2hkciAqIF9fcHRyOwoKICAgICAgICBfX3B0ciA9IChzdHJ1Y3QgY21zZ2hkciop
KCgodW5zaWduZWQgY2hhciAqKSBfX2Ntc2cpICsgKCAoKF9fY21zZy0+Y21zZ19sZW4pK3NpemVv
Zihsb25nKS0xKSAmIH4oc2l6ZW9mKGxvbmcpLTEpICkpOwogICAgICAgIGlmICgodW5zaWduZWQg
bG9uZykoKGNoYXIqKShfX3B0cisxKSAtIChjaGFyICopIF9fY3RsKSA+IF9fc2l6ZSkKICAgICAg
ICAgICAgICAgIHJldHVybiAoc3RydWN0IGNtc2doZHIgKikwOwoKICAgICAgICByZXR1cm4gX19w
dHI7Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IGNtc2doZHIgKiBjbXNnX254dGhkciAoc3RydWN0
IG1zZ2hkciAqX19tc2csIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2cpCnsKICAgICAgICByZXR1cm4g
X19jbXNnX254dGhkcihfX21zZy0+bXNnX2NvbnRyb2wsIF9fbXNnLT5tc2dfY29udHJvbGxlbiwg
X19jbXNnKTsKfQoKCgoKCgoKc3RydWN0IHVjcmVkIHsKICAgICAgICBfX3UzMiBwaWQ7CiAgICAg
ICAgX191MzIgdWlkOwogICAgICAgIF9fdTMyIGdpZDsKfTsKIyAyNDUgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpleHRlcm4gaW50IG1lbWNweV9m
cm9taW92ZWModW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgbGVu
KTsKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVjZW5kKHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBz
dHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zm
c2V0LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBjc3VtX3BhcnRpYWxfY29weV9mcm9taW92ZWNlbmQo
dW5zaWduZWQgY2hhciAqa2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgKmNzdW1wKTsKCmV4dGVybiBpbnQgdmVyaWZ5
X2lvdmVjKHN0cnVjdCBtc2doZHIgKm0sIHN0cnVjdCBpb3ZlYyAqaW92LCBjaGFyICphZGRyZXNz
LCBpbnQgbW9kZSk7CmV4dGVybiBpbnQgbWVtY3B5X3RvaW92ZWMoc3RydWN0IGlvdmVjICp2LCB1
bnNpZ25lZCBjaGFyICprZGF0YSwgaW50IGxlbik7CmV4dGVybiB2b2lkIG1lbWNweV90b2tlcm5l
bGlvdmVjKHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBjaGFyICprZGF0YSwgaW50IGxlbik7
CmV4dGVybiBpbnQgbW92ZV9hZGRyX3RvX3VzZXIodm9pZCAqa2FkZHIsIGludCBrbGVuLCB2b2lk
ICp1YWRkciwgaW50ICp1bGVuKTsKZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fa2VybmVsKHZvaWQg
KnVhZGRyLCBpbnQgdWxlbiwgdm9pZCAqa2FkZHIpOwpleHRlcm4gaW50IHB1dF9jbXNnKHN0cnVj
dCBtc2doZHIqLCBpbnQgbGV2ZWwsIGludCB0eXBlLCBpbnQgbGVuLCB2b2lkICpkYXRhKTsKIyAy
MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0LmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDEKIyAy
NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0LmgiIDIKCnN0
cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA0OSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvbGludXgvbmV0LmgiCnR5cGVkZWYgZW51bSB7CiAgU1NfRlJFRSA9IDAsCiAgU1Nf
VU5DT05ORUNURUQsCiAgU1NfQ09OTkVDVElORywKICBTU19DT05ORUNURUQsCiAgU1NfRElTQ09O
TkVDVElORwp9IHNvY2tldF9zdGF0ZTsKIyA2NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvbGludXgvbmV0LmgiCnN0cnVjdCBzb2NrZXQKewogICAgICAgIHNvY2tldF9zdGF0
ZSBzdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgcHJv
dG9fb3BzICpvcHM7CiAgICAgICAgc3RydWN0IGlub2RlICppbm9kZTsKICAgICAgICBzdHJ1Y3Qg
ZmFzeW5jX3N0cnVjdCAqZmFzeW5jX2xpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUgKmZpbGU7CiAg
ICAgICAgc3RydWN0IHNvY2sgKnNrOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7Cgog
ICAgICAgIHNob3J0IHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBwYXNzY3JlZDsKfTsKCgoK
c3RydWN0IHNjbV9jb29raWU7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3RydWN0IHBhZ2U7Cgpz
dHJ1Y3QgcHJvdG9fb3BzIHsKICBpbnQgZmFtaWx5OwoKICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0
IHNvY2tldCAqc29jayk7CiAgaW50ICgqYmluZCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVj
dCBzb2NrYWRkciAqdW15YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NrYWRk
cl9sZW4pOwogIGludCAoKmNvbm5lY3QpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29j
a2FkZHIgKnVzZXJ2YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NrYWRkcl9s
ZW4sIGludCBmbGFncyk7CiAgaW50ICgqc29ja2V0cGFpcikgKHN0cnVjdCBzb2NrZXQgKnNvY2sx
LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrMik7CiAgaW50ICgqYWNjZXB0KSAoc3RydWN0IHNvY2tldCAq
c29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBmbGFncyk7CiAgaW50ICgqZ2V0bmFtZSkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBz
b2NrYWRkciAqdWFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnVzb2NrYWRkcl9s
ZW4sIGludCBwZWVyKTsKICB1bnNpZ25lZCBpbnQgKCpwb2xsKSAoc3RydWN0IGZpbGUgKmZpbGUs
IHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqd2FpdCk7CiAg
aW50ICgqaW9jdGwpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bnNpZ25lZCBpbnQgY21kLAogICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhcmcpOwogIGludCAoKmxpc3Rlbikg
KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZW4pOwogIGludCAoKnNodXRkb3duKSAoc3RydWN0
IHNvY2tldCAqc29jaywgaW50IGZsYWdzKTsKICBpbnQgKCpzZXRzb2Nrb3B0KSAoc3RydWN0IHNv
Y2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKm9wdHZhbCwgaW50IG9wdGxlbik7CiAgaW50ICgqZ2V0c29ja29wdCkgKHN0cnVj
dCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICpvcHR2YWwsIGludCAqb3B0bGVuKTsKICBpbnQgKCpzZW5kbXNnKSAoc3Ry
dWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgaW50IHRvdGFsX2xlbiwgc3RydWN0
IHNjbV9jb29raWUgKnNjbSk7CiAgaW50ICgqcmVjdm1zZykgKHN0cnVjdCBzb2NrZXQgKnNvY2ss
IHN0cnVjdCBtc2doZHIgKm0sIGludCB0b3RhbF9sZW4sIGludCBmbGFncywgc3RydWN0IHNjbV9j
b29raWUgKnNjbSk7CiAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29j
a2V0ICpzb2NrLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEpOwogIHNzaXplX3QgKCpzZW5k
cGFnZSkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb2Zmc2V0
LCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKTsKfTsKCnN0cnVjdCBuZXRfcHJvdG9fZmFtaWx5CnsK
ICAgICAgICBpbnQgZmFtaWx5OwogICAgICAgIGludCAoKmNyZWF0ZSkoc3RydWN0IHNvY2tldCAq
c29jaywgaW50IHByb3RvY29sKTsKCgogICAgICAgIHNob3J0IGF1dGhlbnRpY2F0aW9uOwogICAg
ICAgIHNob3J0IGVuY3J5cHRpb247CiAgICAgICAgc2hvcnQgZW5jcnlwdF9uZXQ7Cn07CgpzdHJ1
Y3QgbmV0X3Byb3RvCnsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHZvaWQgKCpp
bml0X2Z1bmMpKHN0cnVjdCBuZXRfcHJvdG8gKik7Cn07CgpleHRlcm4gaW50IHNvY2tfd2FrZV9h
c3luYyhzdHJ1Y3Qgc29ja2V0ICpzaywgaW50IGhvdywgaW50IGJhbmQpOwpleHRlcm4gaW50IHNv
Y2tfcmVnaXN0ZXIoc3RydWN0IG5ldF9wcm90b19mYW1pbHkgKmZhbSk7CmV4dGVybiBpbnQgc29j
a191bnJlZ2lzdGVyKGludCBmYW1pbHkpOwpleHRlcm4gc3RydWN0IHNvY2tldCAqc29ja19hbGxv
Yyh2b2lkKTsKZXh0ZXJuIGludCBzb2NrX2NyZWF0ZShpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50
IHByb3RvLCBzdHJ1Y3Qgc29ja2V0ICoqKTsKZXh0ZXJuIHZvaWQgc29ja19yZWxlYXNlKHN0cnVj
dCBzb2NrZXQgKik7CmV4dGVybiBpbnQgc29ja19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKiwgc3Ry
dWN0IG1zZ2hkciAqbSwgaW50IGxlbik7CmV4dGVybiBpbnQgc29ja19yZWN2bXNnKHN0cnVjdCBz
b2NrZXQgKiwgc3RydWN0IG1zZ2hkciAqbSwgaW50IGxlbiwgaW50IGZsYWdzKTsKZXh0ZXJuIGlu
dCBzb2NrX3JlYWR2X3dyaXRldihpbnQgdHlwZSwgc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVj
dCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
cnVjdCBpb3ZlYyAqIGlvdiwgbG9uZyBjb3VudCwgbG9uZyBzaXplKTsKCmV4dGVybiBpbnQgbmV0
X3JhdGVsaW1pdCh2b2lkKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbmV0X3JhbmRvbSh2b2lkKTsK
ZXh0ZXJuIHZvaWQgbmV0X3NyYW5kb20odW5zaWduZWQgbG9uZyk7CiMgMTYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIgMQojIDY3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBrZGV2X3Q7CiMgNzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L2tkZXZfdC5oIgpleHRlcm4gY29uc3QgY2hhciAqIGtkZXZuYW1lKGtkZXZfdCk7CgoK
CgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGtkZXZfdF90b19ucihrZGV2X3QgZGV2KSB7
CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChkZXYpID4+IDgpKTw8OCkgfCAoKHVu
c2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCA4KSAtIDEpKSk7Cn0KCnN0YXRpYyBpbmxpbmUg
a2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7CiAgICAgICAgaW50IG1ham9yLCBtaW5vcjsKIyA5
OCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgva2Rldl90LmgiCiAg
ICAgICAgbWFqb3IgPSAoZGV2ID4+IDgpOwogICAgICAgIG1pbm9yID0gKGRldiAmIDB4ZmYpOwoK
ICAgICAgICByZXR1cm4gKCgobWFqb3IpIDw8IDgpIHwgKG1pbm9yKSk7Cn0KIyAxNyAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lvY3RsLmgiIDEKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vaW9jdGwuaCIgMQojIDUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lvY3RsLmgiIDIKIyAxOCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDE5ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDEKCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQoj
IDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tb3VudC5oIgpz
dHJ1Y3QgdmZzbW91bnQKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2hhc2g7CiAgICAg
ICAgc3RydWN0IHZmc21vdW50ICptbnRfcGFyZW50OwogICAgICAgIHN0cnVjdCBkZW50cnkgKm1u
dF9tb3VudHBvaW50OwogICAgICAgIHN0cnVjdCBkZW50cnkgKm1udF9yb290OwogICAgICAgIHN0
cnVjdCBzdXBlcl9ibG9jayAqbW50X3NiOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X21v
dW50czsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9jaGlsZDsKICAgICAgICBhdG9taWNf
dCBtbnRfY291bnQ7CiAgICAgICAgaW50IG1udF9mbGFnczsKICAgICAgICBjaGFyICptbnRfZGV2
bmFtZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9saXN0Owp9OwoKc3RhdGljIGlubGlu
ZSBzdHJ1Y3QgdmZzbW91bnQgKm1udGdldChzdHJ1Y3QgdmZzbW91bnQgKm1udCkKewogICAgICAg
IGlmIChtbnQpCiAgICAgICAgICAgICAgICBhdG9taWNfaW5jKCZtbnQtPm1udF9jb3VudCk7CiAg
ICAgICAgcmV0dXJuIG1udDsKfQoKZXh0ZXJuIHZvaWQgX19tbnRwdXQoc3RydWN0IHZmc21vdW50
ICptbnQpOwoKc3RhdGljIGlubGluZSB2b2lkIG1udHB1dChzdHJ1Y3QgdmZzbW91bnQgKm1udCkK
ewogICAgICAgIGlmIChtbnQpIHsKICAgICAgICAgICAgICAgIGlmIChhdG9taWNfZGVjX2FuZF90
ZXN0KCZtbnQtPm1udF9jb3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgIF9fbW50cHV0KG1u
dCk7CiAgICAgICAgfQp9CiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvZGNhY2hlLmgiIDIKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvZGNhY2hlLmgiCnN0cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyICogbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGlu
dCBoYXNoOwp9OwoKc3RydWN0IGRlbnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7
CiAgICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGlu
dCB3YW50X3BhZ2VzOwogICAgICAgIGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50
cnlfc3RhdF90IGRlbnRyeV9zdGF0OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBs
b25nIHBhcnRpYWxfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2
aGFzaCkKewogICAgICAgIHJldHVybiAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAq
IDExOwp9CgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVu
c2lnbmVkIGxvbmcgaGFzaCkKewogICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9
CgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVu
c2lnbmVkIGNoYXIgKiBuYW1lLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBoYXNoID0gMDsKICAgICAgICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNo
ID0gcGFydGlhbF9uYW1lX2hhc2goKm5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9u
YW1lX2hhc2goaGFzaCk7Cn0KCgoKc3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9j
b3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUg
KiBkX2lub2RlOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGRfaGFzaDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfbHJ1OwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9jaGlsZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRf
c3ViZGlyczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfYWxpYXM7CiAgICAgICAgaW50IGRf
bW91bnRlZDsKICAgICAgICBzdHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBkX3RpbWU7CiAgICAgICAgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAg
IHN0cnVjdCBzdXBlcl9ibG9jayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Zmc19m
bGFnczsKICAgICAgICB2b2lkICogZF9mc2RhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciBkX2lu
YW1lWzE2XTsKfTsKCnN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqZF9y
ZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICosIGludCk7CiAgICAgICAgaW50ICgqZF9oYXNoKSAo
c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2NvbXBhcmUp
IChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICosIHN0cnVjdCBxc3RyICopOwogICAgICAg
IGludCAoKmRfZGVsZXRlKShzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX3JlbGVh
c2UpKHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgdm9pZCAoKmRfaXB1dCkoc3RydWN0IGRlbnRy
eSAqLCBzdHJ1Y3QgaW5vZGUgKik7Cn07CiMgMTI3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKZXh0ZXJuIHNwaW5sb2NrX3QgZGNhY2hlX2xvY2s7
CiMgMTQ2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9kY2FjaGUu
aCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2Ryb3Aoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSkK
ewogICAgICAgIHNwaW5fbG9jaygmZGNhY2hlX2xvY2spOwogICAgICAgIGxpc3RfZGVsKCZkZW50
cnktPmRfaGFzaCk7CiAgICAgICAgZG8geyAoJmRlbnRyeS0+ZF9oYXNoKS0+bmV4dCA9ICgmZGVu
dHJ5LT5kX2hhc2gpOyAoJmRlbnRyeS0+ZF9oYXNoKS0+cHJldiA9ICgmZGVudHJ5LT5kX2hhc2gp
OyB9IHdoaWxlICgwKTsKICAgICAgICBzcGluX3VubG9jaygmZGNhY2hlX2xvY2spOwp9CgpzdGF0
aWMgX19pbmxpbmVfXyBpbnQgZG5hbWVfZXh0ZXJuYWwoc3RydWN0IGRlbnRyeSAqZCkKewogICAg
ICAgIHJldHVybiBkLT5kX25hbWUubmFtZSAhPSBkLT5kX2luYW1lOwp9CgoKCgpleHRlcm4gdm9p
ZCBkX2luc3RhbnRpYXRlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4g
dm9pZCBkX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICog
ZF9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IHN0cnVjdCBxc3RyICopOwpleHRlcm4gdm9p
ZCBzaHJpbmtfZGNhY2hlX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIHZvaWQgc2hy
aW5rX2RjYWNoZV9wYXJlbnQoc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCBkX2ludmFsaWRh
dGUoc3RydWN0IGRlbnRyeSAqKTsKCgpzdHJ1Y3Qgem9uZV9zdHJ1Y3Q7CgpleHRlcm4gaW50IHNo
cmlua19kY2FjaGVfbWVtb3J5KGludCwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVf
ZGNhY2hlKGludCk7CgoKZXh0ZXJuIGludCBzaHJpbmtfaWNhY2hlX21lbW9yeShpbnQsIGludCk7
CmV4dGVybiB2b2lkIHBydW5lX2ljYWNoZShpbnQpOwoKCmV4dGVybiBpbnQgc2hyaW5rX2RxY2Fj
aGVfbWVtb3J5KGludCwgdW5zaWduZWQgaW50KTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRf
YWxsb2Nfcm9vdChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQgZF9nZW5vY2lkZShzdHJ1
Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmRfZmluZF9hbGlhcyhzdHJ1Y3Qg
aW5vZGUgKik7CmV4dGVybiB2b2lkIGRfcHJ1bmVfYWxpYXNlcyhzdHJ1Y3QgaW5vZGUgKik7CgoK
ZXh0ZXJuIGludCBoYXZlX3N1Ym1vdW50cyhzdHJ1Y3QgZGVudHJ5ICopOwoKCgoKZXh0ZXJuIHZv
aWQgZF9yZWhhc2goc3RydWN0IGRlbnRyeSAqKTsKIyAyMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRf
YWRkKHN0cnVjdCBkZW50cnkgKiBlbnRyeSwgc3RydWN0IGlub2RlICogaW5vZGUpCnsKICAgICAg
ICBkX2luc3RhbnRpYXRlKGVudHJ5LCBpbm9kZSk7CiAgICAgICAgZF9yZWhhc2goZW50cnkpOwp9
CgoKZXh0ZXJuIHZvaWQgZF9tb3ZlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsK
CgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfbG9va3VwKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0
IHFzdHIgKik7CgoKZXh0ZXJuIGludCBkX3ZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0
IGRlbnRyeSAqKTsKCmV4dGVybiBjaGFyICogX19kX3BhdGgoc3RydWN0IGRlbnRyeSAqLCBzdHJ1
Y3QgdmZzbW91bnQgKiwgc3RydWN0IGRlbnRyeSAqLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAq
LCBjaGFyICosIGludCk7CiMgMjQzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gc3RydWN0IGRlbnRyeSAqIGRnZXQo
c3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgaWYgKGRlbnRyeSkgewogICAgICAgICAg
ICAgICAgaWYgKCEoKCZkZW50cnktPmRfY291bnQpLT5jb3VudGVyKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAg
ICAgICAgICAgYXRvbWljX2luYygmZGVudHJ5LT5kX2NvdW50KTsKICAgICAgICB9CiAgICAgICAg
cmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1
Y3QgZGVudHJ5ICopOwojIDI2MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBk
ZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFz
aCk7Cn0KCmV4dGVybiB2b2lkIGRwdXQoc3RydWN0IGRlbnRyeSAqKTsKCnN0YXRpYyBfX2lubGlu
ZV9fIGludCBkX21vdW50cG9pbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0
dXJuIGRlbnRyeS0+ZF9tb3VudGVkOwp9CgpleHRlcm4gc3RydWN0IHZmc21vdW50ICpsb29rdXBf
bW50KHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICopOwojIDIwICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc3RhdC5oIiAxCgoKCnN0cnVjdCBfX29s
ZF9rZXJuZWxfc3RhdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9tb2RlOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3Vp
ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RfY3RpbWU7Cn07CgpzdHJ1Y3Qgc3RhdCB7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9tb2RlOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3VpZDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rf
cmRldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzdF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxrc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfbXRp
bWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1bnNp
Z25lZCBsb25nIF9fdW51c2VkNDsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNTsKfTsK
CgoKCnN0cnVjdCBzdGF0NjQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2RldjsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIF9fcGFkMFsxMF07CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9fc3Rf
aW5vOwoKICAgICAgICB1bnNpZ25lZCBpbnQgc3RfbW9kZTsKICAgICAgICB1bnNpZ25lZCBpbnQg
c3Rfbmxpbms7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfdWlkOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc3RfZ2lkOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVu
c2lnbmVkIGNoYXIgX19wYWQzWzEwXTsKCiAgICAgICAgbG9uZyBsb25nIHN0X3NpemU7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2Js
b2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNDsKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNTsKCiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNjsKCiAgICAgICAg
dW5zaWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNzsKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X2lubzsKfTsKIyA3ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zdGF0LmgiIDIKIyAyMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgMjMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgOSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDEwICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgoKCgoK
CmV4dGVybiBjaGFyICogX19fc3RydG9rOwpleHRlcm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hh
ciAqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICogc3RydG9rKGNoYXIgKixjb25zdCBjaGFy
ICopOwpleHRlcm4gY2hhciAqIHN0cnNlcChjaGFyICoqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBf
X2tlcm5lbF9zaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwoKCgoKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3N0cmluZy5oIiAxCgoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5o
IiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3N0cmluZy5o
IiAyCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zdHJpbmcu
aCIKc3RhdGljIGlubGluZSBjaGFyICogc3RyY3B5KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKnNy
YykKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRs
b2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5c
dCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0m
YSIgKGQyKQogICAgICAgIDoiMCIgKHNyYyksIjEiIChkZXN0KSA6ICJtZW1vcnkiKTsKcmV0dXJu
IGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJuY3B5KGNoYXIgKiBkZXN0LGNvbnN0
IGNoYXIgKnNyYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9f
dm9sYXRpbGVfXygKICAgICAgICAiMTpcdGRlY2wgJTJcblx0IgogICAgICAgICJqcyAyZlxuXHQi
CiAgICAgICAgImxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAl
JWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJyZXBcblx0IgogICAg
ICAgICJzdG9zYlxuIgogICAgICAgICIyOiIKICAgICAgICA6ICI9JlMiIChkMCksICI9JkQiIChk
MSksICI9JmMiIChkMiksICI9JmEiIChkMykKICAgICAgICA6IjAiIChzcmMpLCIxIiAoZGVzdCks
IjIiIChjb3VudCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBj
aGFyICogc3RyY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKiBzcmMpCnsKaW50IGQwLCBkMSwg
ZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAg
ICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcbiIKICAgICAgICAiMTpcdGxvZHNiXG5cdCIK
ICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAg
ICJqbmUgMWIiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIpLCAi
PSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksICIxIiAoZGVzdCksICIyIiAoMCksICIzIiAo
MHhmZmZmZmZmZik6Im1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUgY2hh
ciAqIHN0cm5jYXQoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqIHNyYyxzaXplX3QgY291bnQpCnsK
aW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVc
blx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcblx0IgogICAgICAgICJt
b3ZsICU4LCUzXG4iCiAgICAgICAgIjE6XHRkZWNsICUzXG5cdCIKICAgICAgICAianMgMmZcblx0
IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIg
JSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG4iCiAgICAgICAgIjI6XHR4b3JsICUyLCUy
XG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAi
PSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksIjEiIChkZXN0KSwiMiIg
KDApLCIzIiAoMHhmZmZmZmZmZiksICJnIiAoY291bnQpCiAgICAgICAgOiAibWVtb3J5Iik7CnJl
dHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBpbnQgc3RyY21wKGNvbnN0IGNoYXIgKiBjcyxj
b25zdCBjaGFyICogY3QpCnsKaW50IGQwLCBkMTsKcmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9f
IF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAic2Nhc2Jcblx0
IgogICAgICAgICJqbmUgMmZcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAg
ICAgICJqbmUgMWJcblx0IgogICAgICAgICJ4b3JsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAi
am1wIDNmXG4iCiAgICAgICAgIjI6XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAib3Ji
ICQxLCUlYWxcbiIKICAgICAgICAiMzoiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQw
KSwgIj0mRCIgKGQxKQogICAgICAgICAgICAgICAgICAgICA6IjEiIChjcyksIjIiIChjdCkpOwpy
ZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBzdHJuY21wKGNvbnN0IGNoYXIgKiBj
cyxjb25zdCBjaGFyICogY3Qsc2l6ZV90IGNvdW50KQp7CnJlZ2lzdGVyIGludCBfX3JlczsKaW50
IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICIxOlx0ZGVjbCAlM1xu
XHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9kc2Jcblx0IgogICAgICAgICJzY2Fz
YlxuXHQiCiAgICAgICAgImpuZSAzZlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQi
CiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIyOlx0eG9ybCAlJWVheCwlJWVheFxuXHQiCiAg
ICAgICAgImptcCA0ZlxuIgogICAgICAgICIzOlx0c2JibCAlJWVheCwlJWVheFxuXHQiCiAgICAg
ICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjQ6IgogICAgICAgICAgICAgICAgICAgICA6Ij1h
IiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIpCiAgICAgICAgICAg
ICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSwiMyIgKGNvdW50KSk7CnJldHVybiBfX3JlczsK
fQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNocihjb25zdCBjaGFyICogcywgaW50IGMpCnsK
aW50IGQwOwpyZWdpc3RlciBjaGFyICogX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAg
ICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJj
bXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImplIDJmXG5cdCIKICAgICAgICAidGVzdGIgJSVh
bCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAibW92bCAkMSwlMVxuIgog
ICAgICAgICIyOlx0bW92bCAlMSwlMFxuXHQiCiAgICAgICAgImRlY2wgJTAiCiAgICAgICAgOiI9
YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSA6ICIxIiAocyksIjAiIChjKSk7CnJldHVybiBfX3JlczsK
fQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cnJjaHIoY29uc3QgY2hhciAqIHMsIGludCBjKQp7
CmludCBkMCwgZDE7CnJlZ2lzdGVyIGNoYXIgKiBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgIm1vdmIgJSVhbCwlJWFoXG4iCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAg
ICAgImNtcGIgJSVhaCwlJWFsXG5cdCIKICAgICAgICAiam5lIDJmXG5cdCIKICAgICAgICAibGVh
bCAtMSglJWVzaSksJTBcbiIKICAgICAgICAiMjpcdHRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAg
ICAgImpuZSAxYiIKICAgICAgICA6Ij1nIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZhIiAoZDEp
IDoiMCIgKDApLCIxIiAocyksIjIiIChjKSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxp
bmUgc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICogcykKewppbnQgZDA7CnJlZ2lzdGVyIGludCBf
X3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAgICAgICAi
c2Nhc2Jcblx0IgogICAgICAgICJub3RsICUwXG5cdCIKICAgICAgICAiZGVjbCAlMCIKICAgICAg
ICA6Ij1jIiAoX19yZXMpLCAiPSZEIiAoZDApIDoiMSIgKHMpLCJhIiAoMCksICIwIiAoMHhmZmZm
ZmZmZikpOwpyZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fbWVtY3B5KHZv
aWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQp7CmludCBkMCwgZDEsIGQyOwpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwIDsgbW92c2xcblx0IgogICAgICAgICJ0
ZXN0YiAkMiwlYjRcblx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAgIm1vdnN3XG4iCiAg
ICAgICAgIjE6XHR0ZXN0YiAkMSwlYjRcblx0IgogICAgICAgICJqZSAyZlxuXHQiCiAgICAgICAg
Im1vdnNiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwg
Ij0mUyIgKGQyKQogICAgICAgIDoiMCIgKG4vNCksICJxIiAobiksIjEiICgobG9uZykgdG8pLCIy
IiAoKGxvbmcpIGZyb20pCiAgICAgICAgOiAibWVtb3J5Iik7CnJldHVybiAodG8pOwp9CgoKCgoK
c3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9tZW1jcHkodm9pZCAqIHRvLCBjb25zdCB2
b2lkICogZnJvbSwgc2l6ZV90IG4pCnsKICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAgICAgICAg
ICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAg
ICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGNoYXIgKil0
byA9ICooY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAg
ICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb207
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2Ug
MzoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0gKihjb25z
dCB1bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5z
aWduZWQgY2hhciAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb20pOwogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNp
Z25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAg
ICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxv
bmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAg
ICAgICAgICooMisodW5zaWduZWQgc2hvcnQgKil0bykgPSAqKDIrKGNvbnN0IHVuc2lnbmVkIHNo
b3J0ICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAg
ICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICop
dG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAg
ICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilm
cm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAg
Y2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAq
KGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDEr
KHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigyKyhj
b25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgICAgICoo
dW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAg
ICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1
bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWdu
ZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAg
ICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDMrKGNvbnN0IHVu
c2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwog
ICAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25l
ZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAg
ICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVk
IGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25n
ICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICooMysodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMysoY29uc3QgdW5zaWduZWQg
bG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDQrKHVuc2lnbmVkIGxvbmcg
Kil0bykgPSAqKDQrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgIH0KCgoKCgoKCnsKICAgICAgICBpbnQgZDAsIGQx
LCBkMjsKICAgICAgICBzd2l0Y2ggKG4gJSA0KSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6IF9f
YXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICIiIDogIj0mYyIgKGQwKSwgIj0mRCIg
KGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykg
ZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDE6IF9f
YXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c2IiIDogIj0mYyIgKGQw
KSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byksIjIi
ICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBj
YXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c3ciIDog
Ij0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25n
KSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAg
ICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAiXG5c
dG1vdnN3XG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAi
MCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsg
cmV0dXJuIHRvOwogICAgICAgIH0KfQoKCn0KIyAzMzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKZXh0ZXJuIHZvaWQgX19zdHJ1Y3RfY3B5X2J1ZyAo
dm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc3Ry
aW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbW1vdmUodm9pZCAqIGRlc3QsY29uc3Qgdm9p
ZCAqIHNyYywgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwgZDI7CmlmIChkZXN0PHNyYykKX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1vdnNiIgogICAgICAg
IDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLCIx
IiAoc3JjKSwiMiIgKGRlc3QpCiAgICAgICAgOiAibWVtb3J5Iik7CmVsc2UKX19hc21fXyBfX3Zv
bGF0aWxlX18oCiAgICAgICAgInN0ZFxuXHQiCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1v
dnNiXG5cdCIKICAgICAgICAiY2xkIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwg
Ij0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLAogICAgICAgICAiMSIgKG4tMSsoY29uc3QgY2hh
ciAqKXNyYyksCiAgICAgICAgICIyIiAobi0xKyhjaGFyICopZGVzdCkKICAgICAgICA6Im1lbW9y
eSIpOwpyZXR1cm4gZGVzdDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkICogbWVtY2hyKGNvbnN0
IHZvaWQgKiBjcyxpbnQgYyxzaXplX3QgY291bnQpCnsKaW50IGQwOwpyZWdpc3RlciB2b2lkICog
X19yZXM7CmlmICghY291bnQpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwpfX2FzbV9fIF9f
dm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAg
ICAgImplIDFmXG5cdCIKICAgICAgICAibW92bCAkMSwlMFxuIgogICAgICAgICIxOlx0ZGVjbCAl
MCIKICAgICAgICA6Ij1EIiAoX19yZXMpLCAiPSZjIiAoZDApIDogImEiIChjKSwiMCIgKGNzKSwi
MSIgKGNvdW50KSk7CnJldHVybiBfX3JlczsKfQoKc3RhdGljIGlubGluZSB2b2lkICogX19tZW1z
ZXRfZ2VuZXJpYyh2b2lkICogcywgY2hhciBjLHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxOwpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAgICAgICAic3Rvc2IiCiAg
ICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksIjEiIChzKSwi
MCIgKGNvdW50KQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiBzOwp9CiMgNDA4ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCAqIF9fY29uc3RhbnRfY19tZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgYywgc2l6
ZV90IGNvdW50KQp7CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJy
ZXAgOyBzdG9zbFxuXHQiCiAgICAgICAgInRlc3RiICQyLCViM1xuXHQiCiAgICAgICAgImplIDFm
XG5cdCIKICAgICAgICAic3Rvc3dcbiIKICAgICAgICAiMTpcdHRlc3RiICQxLCViM1xuXHQiCiAg
ICAgICAgImplIDJmXG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAgICAgICAg
OiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksICJxIiAoY291bnQpLCAi
MCIgKGNvdW50LzQpLCAiMSIgKChsb25nKSBzKQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiAo
cyk7Cn0KCgoKc3RhdGljIGlubGluZSBzaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICogcywgc2l6
ZV90IGNvdW50KQp7CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAibW92bCAlMiwlMFxuXHQiCiAgICAgICAgImptcCAyZlxuIgogICAgICAg
ICIxOlx0Y21wYiAkMCwoJTApXG5cdCIKICAgICAgICAiamUgM2Zcblx0IgogICAgICAgICJpbmNs
ICUwXG4iCiAgICAgICAgIjI6XHRkZWNsICUxXG5cdCIKICAgICAgICAiY21wbCAkLTEsJTFcblx0
IgogICAgICAgICJqbmUgMWJcbiIKICAgICAgICAiMzpcdHN1YmwgJTIsJTAiCiAgICAgICAgOiI9
YSIgKF9fcmVzKSwgIj0mZCIgKGQwKQogICAgICAgIDoiYyIgKHMpLCIxIiAoY291bnQpKTsKcmV0
dXJuIF9fcmVzOwp9CgoKCgpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKmNzLCBjb25z
dCBjaGFyICpjdCk7CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9jX2FuZF9j
b3VudF9tZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgcGF0dGVybiwgc2l6ZV90IGNvdW50
KQp7CiAgICAgICAgc3dpdGNoIChjb3VudCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAg
ICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBjaGFyICopcyA9IHBhdHRlcm47CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAg
ICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAg
ICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAg
ICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgY2hhciAqKXMpID0gcGF0dGVybjsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXMgPSBwYXR0ZXJuOwogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICB9CgoKCgoKCgp7CiAgICAgICAg
aW50IGQwLCBkMTsKICAgICAgICBzd2l0Y2ggKGNvdW50ICUgNCkgewogICAgICAgICAgICAgICAg
Y2FzZSAwOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiIiA6ICI9JmMiIChk
MCksICI9JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykg
cykgOiAibWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9f
IF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9
JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAi
bWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3IiA6ICI9JmMiIChkMCksICI9JkQiIChk
MSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5
Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxl
X18oICJyZXAgOyBzdG9zbCIgIlxuXHRzdG9zd1xuXHRzdG9zYiIgOiAiPSZjIiAoZDApLCAiPSZE
IiAoZDEpIDogImEiIChwYXR0ZXJuKSwiMCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1l
bW9yeSIpOyByZXR1cm4gczsKICAgICAgICB9Cn0KCgp9CiMgNTE1ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1l
bXNjYW4odm9pZCAqIGFkZHIsIGludCBjLCBzaXplX3Qgc2l6ZSkKewogICAgICAgIGlmICghc2l6
ZSkKICAgICAgICAgICAgICAgIHJldHVybiBhZGRyOwogICAgICAgIF9fYXNtX18oInJlcG56OyBz
Y2FzYlxuXHQiCiAgICAgICAgICAgICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJk
ZWMgJSVlZGlcbiIKICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgIDogIj1EIiAo
YWRkciksICI9YyIgKHNpemUpCiAgICAgICAgICAgICAgICA6ICIwIiAoYWRkciksICIxIiAoc2l6
ZSksICJhIiAoYykpOwogICAgICAgIHJldHVybiBhZGRyOwp9CiMgMjYgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpleHRlcm4gaW50IHN0cm5p
Y21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwojIDc3ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIKZXh0ZXJu
IGludCBfX2J1aWx0aW5fbWVtY21wKGNvbnN0IHZvaWQgKixjb25zdCB2b2lkICosX19rZXJuZWxf
c2l6ZV90KTsKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYXRv
bWljLmgiIDEKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9iaXRv
cHMuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2FzbS9iaXRvcHMuaCIgMgojIDM2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2JpdChpbnQgbnIsIHZv
bGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICJsb2Nr
IDsgIgogICAgICAgICAgICAgICAgImJ0c2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAo
KCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9
CiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIK
c3RhdGljIF9faW5saW5lX18gdm9pZCBfX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICog
YWRkcikKewogICAgICAgIF9fYXNtX18oCiAgICAgICAgICAgICAgICAiYnRzbCAlMSwlMCIKICAg
ICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAg
ICAgICAgOiJJciIgKG5yKSk7Cn0KIyA3MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGNsZWFyX2JpdChpbnQg
bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
ICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0cmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6
Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChu
cikpOwp9CiMgOTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9iaXRv
cHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGls
ZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgImJ0Y2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9u
ZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgMTA3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0Y2wg
JTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkK
ICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgMTIzICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0
X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQg
b2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggImxvY2sgOyAiCiAgICAgICAg
ICAgICAgICAiYnRzbCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIg
KG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAg
IDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDE0MyAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAq
IGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fKAogICAgICAgICAg
ICAgICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChv
bGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6
IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTYyICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGlu
dCB0ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAg
ICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAibG9jayA7ICIK
ICAgICAgICAgICAgICAgICJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAg
ICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAg
ICAgICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9
CiMgMTgyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgi
CnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0
aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygK
ICAgICAgICAgICAgICAgICJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAg
ICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAg
ICAgICAgICAgOiJJciIgKG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQoKCnN0YXRpYyBf
X2lubGluZV9fIGludCBfX3Rlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lk
ICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAg
ICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAg
ICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRi
aXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9iaXRv
cHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2
b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKCAibG9jayA7ICIKICAgICAgICAgICAgICAgICJidGNsICUyLCUxXG5c
dHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xh
dGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnki
KTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjMzICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBjb25zdGFu
dF90ZXN0X2JpdChpbnQgbnIsIGNvbnN0IHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAg
cmV0dXJuICgoMVVMIDw8IChuciAmIDMxKSkgJiAoKChjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBp
bnQgKikgYWRkcilbbnIgPj4gNV0pKSAhPSAwOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdmFy
aWFibGVfdGVzdF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGlu
dCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAg
ImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCkK
ICAgICAgICAgICAgICAgIDoibSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpLCJJciIgKG5y
KSk7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDI2MiAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmluZF9m
aXJzdF96ZXJvX2JpdCh2b2lkICogYWRkciwgdW5zaWduZWQgc2l6ZSkKewogICAgICAgIGludCBk
MCwgZDEsIGQyOwogICAgICAgIGludCByZXM7CgogICAgICAgIGlmICghc2l6ZSkKICAgICAgICAg
ICAgICAgIHJldHVybiAwOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAg
ICAgICAgICJtb3ZsICQtMSwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAieG9ybCAlJWVkeCwl
JWVkeFxuXHQiCiAgICAgICAgICAgICAgICAicmVwZTsgc2Nhc2xcblx0IgogICAgICAgICAgICAg
ICAgImplIDFmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsIC00KCUlZWRpKSwlJWVheFxuXHQi
CiAgICAgICAgICAgICAgICAic3VibCAkNCwlJWVkaVxuXHQiCiAgICAgICAgICAgICAgICAiYnNm
bCAlJWVheCwlJWVkeFxuIgogICAgICAgICAgICAgICAgIjE6XHRzdWJsICUlZWJ4LCUlZWRpXG5c
dCIKICAgICAgICAgICAgICAgICJzaGxsICQzLCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJh
ZGRsICUlZWRpLCUlZWR4IgogICAgICAgICAgICAgICAgOiI9ZCIgKHJlcyksICI9JmMiIChkMCks
ICI9JkQiIChkMSksICI9JmEiIChkMikKICAgICAgICAgICAgICAgIDoiMSIgKChzaXplICsgMzEp
ID4+IDUpLCAiMiIgKGFkZHIpLCAiYiIgKGFkZHIpKTsKICAgICAgICByZXR1cm4gcmVzOwp9CgoK
CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmluZF9uZXh0X3plcm9fYml0ICh2b2lkICogYWRk
ciwgaW50IHNpemUsIGludCBvZmZzZXQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nICogcCA9ICgo
dW5zaWduZWQgbG9uZyAqKSBhZGRyKSArIChvZmZzZXQgPj4gNSk7CiAgICAgICAgaW50IHNldCA9
IDAsIGJpdCA9IG9mZnNldCAmIDMxLCByZXM7CgogICAgICAgIGlmIChiaXQpIHsKCgoKICAgICAg
ICAgICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAg
ICAiam5lIDFmXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgIm1vdmwgJDMyLCAlMFxuIgog
ICAgICAgICAgICAgICAgICAgICAgICAiMToiCiAgICAgICAgICAgICAgICAgICAgICAgIDogIj1y
IiAoc2V0KQogICAgICAgICAgICAgICAgICAgICAgICA6ICJyIiAofigqcCA+PiBiaXQpKSk7CiAg
ICAgICAgICAgICAgICBpZiAoc2V0IDwgKDMyIC0gYml0KSkKICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNldCArIG9mZnNldDsKICAgICAgICAgICAgICAgIHNldCA9IDMyIC0gYml0Owog
ICAgICAgICAgICAgICAgcCsrOwogICAgICAgIH0KCgoKICAgICAgICByZXMgPSBmaW5kX2ZpcnN0
X3plcm9fYml0IChwLCBzaXplIC0gMzIgKiAocCAtICh1bnNpZ25lZCBsb25nICopIGFkZHIpKTsK
ICAgICAgICByZXR1cm4gKG9mZnNldCArIHNldCArIHJlcyk7Cn0KCgoKCgoKCnN0YXRpYyBfX2lu
bGluZV9fIHVuc2lnbmVkIGxvbmcgZmZ6KHVuc2lnbmVkIGxvbmcgd29yZCkKewogICAgICAgIF9f
YXNtX18oImJzZmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAod29yZCkKICAgICAgICAg
ICAgICAgIDoiciIgKH53b3JkKSk7CiAgICAgICAgcmV0dXJuIHdvcmQ7Cn0KIyAzNDMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5s
aW5lX18gaW50IGZmcyhpbnQgeCkKewogICAgICAgIGludCByOwoKICAgICAgICBfX2FzbV9fKCJi
c2ZsICUxLCUwXG5cdCIKICAgICAgICAgICAgICAgICJqbnogMWZcblx0IgogICAgICAgICAgICAg
ICAgIm1vdmwgJC0xLCUwXG4iCiAgICAgICAgICAgICAgICAiMToiIDogIj1yIiAocikgOiAiZyIg
KHgpKTsKICAgICAgICByZXR1cm4gcisxOwp9CiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1
MCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0
IGZpbGVzX3N0YXRfc3RydWN0IHsKICAgICAgICBpbnQgbnJfZmlsZXM7CiAgICAgICAgaW50IG5y
X2ZyZWVfZmlsZXM7CiAgICAgICAgaW50IG1heF9maWxlczsKfTsKZXh0ZXJuIHN0cnVjdCBmaWxl
c19zdGF0X3N0cnVjdCBmaWxlc19zdGF0OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAg
IGludCBucl9pbm9kZXM7CiAgICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlb
NV07Cn07CmV4dGVybiBzdHJ1Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBp
bnQgbGVhc2VzX2VuYWJsZSwgZGlyX25vdGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMg
MTk4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMQoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2xpbmthZ2Uu
aCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhv
cmUuaCIgMgojIDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc2Vt
YXBob3JlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3N5
c3RlbS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9h
c20vc3lzdGVtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9rZXJuZWwuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2FzbS9zeXN0ZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2FzbS9zZWdtZW50LmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9hc20vc3lzdGVtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9iaXRvcHMuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBpbnQgZ2VuZXJpY19mZnMoaW50IHgp
CnsKICAgICAgICBpbnQgciA9IDE7CgogICAgICAgIGlmICgheCkKICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgIGlmICghKHggJiAweGZmZmYpKSB7CiAgICAgICAgICAgICAgICB4ID4+
PSAxNjsKICAgICAgICAgICAgICAgIHIgKz0gMTY7CiAgICAgICAgfQogICAgICAgIGlmICghKHgg
JiAweGZmKSkgewogICAgICAgICAgICAgICAgeCA+Pj0gODsKICAgICAgICAgICAgICAgIHIgKz0g
ODsKICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZikpIHsKICAgICAgICAgICAgICAgIHgg
Pj49IDQ7CiAgICAgICAgICAgICAgICByICs9IDQ7CiAgICAgICAgfQogICAgICAgIGlmICghKHgg
JiAzKSkgewogICAgICAgICAgICAgICAgeCA+Pj0gMjsKICAgICAgICAgICAgICAgIHIgKz0gMjsK
ICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDEpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSAx
OwogICAgICAgICAgICAgICAgciArPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcjsKfQoK
CgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmljX2h3ZWlnaHQzMih1bnNpZ25l
ZCBpbnQgdykKewogICAgICAgIHVuc2lnbmVkIGludCByZXMgPSAodyAmIDB4NTU1NTU1NTUpICsg
KCh3ID4+IDEpICYgMHg1NTU1NTU1NSk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MzMzMzMzMzMp
ICsgKChyZXMgPj4gMikgJiAweDMzMzMzMzMzKTsKICAgICAgICByZXMgPSAocmVzICYgMHgwRjBG
MEYwRikgKyAoKHJlcyA+PiA0KSAmIDB4MEYwRjBGMEYpOwogICAgICAgIHJlcyA9IChyZXMgJiAw
eDAwRkYwMEZGKSArICgocmVzID4+IDgpICYgMHgwMEZGMDBGRik7CiAgICAgICAgcmV0dXJuIChy
ZXMgJiAweDAwMDBGRkZGKSArICgocmVzID4+IDE2KSAmIDB4MDAwMEZGRkYpOwp9CgpzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmljX2h3ZWlnaHQxNih1bnNpZ25lZCBpbnQgdykKewog
ICAgICAgIHVuc2lnbmVkIGludCByZXMgPSAodyAmIDB4NTU1NSkgKyAoKHcgPj4gMSkgJiAweDU1
NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDMzMzMpICsgKChyZXMgPj4gMikgJiAweDMzMzMp
OwogICAgICAgIHJlcyA9IChyZXMgJiAweDBGMEYpICsgKChyZXMgPj4gNCkgJiAweDBGMEYpOwog
ICAgICAgIHJldHVybiAocmVzICYgMHgwMEZGKSArICgocmVzID4+IDgpICYgMHgwMEZGKTsKfQoK
c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2VpZ2h0OCh1bnNpZ25lZCBpbnQg
dykKewogICAgICAgIHVuc2lnbmVkIGludCByZXMgPSAodyAmIDB4NTUpICsgKCh3ID4+IDEpICYg
MHg1NSk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MzMpICsgKChyZXMgPj4gMikgJiAweDMzKTsK
ICAgICAgICByZXR1cm4gKHJlcyAmIDB4MEYpICsgKChyZXMgPj4gNCkgJiAweDBGKTsKfQoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyA3
MCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvYml0b3BzLmgiIDIK
IyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIK
CgoKc3RydWN0IHRhc2tfc3RydWN0OwpleHRlcm4gdm9pZCBfX3N3aXRjaF90byhzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpOwojIDYzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9h
c20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfZ2V0X2Jhc2UoY2hhciAq
IGFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fYmFzZTsKICAgICAgICBfX2FzbV9fKCJt
b3ZiICUzLCUlZGhcblx0IgogICAgICAgICAgICAgICAgIm1vdmIgJTIsJSVkbFxuXHQiCiAgICAg
ICAgICAgICAgICAic2hsbCAkMTYsJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIm1vdncgJTEs
JSVkeCIKICAgICAgICAgICAgICAgIDoiPSZkIiAoX19iYXNlKQogICAgICAgICAgICAgICAgOiJt
IiAoKigoYWRkcikrMikpLAogICAgICAgICAgICAgICAgICJtIiAoKigoYWRkcikrNCkpLAogICAg
ICAgICAgICAgICAgICJtIiAoKigoYWRkcikrNykpKTsKICAgICAgICByZXR1cm4gX19iYXNlOwp9
CiMgMTMwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgi
CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfbGltaXQodW5zaWduZWQgbG9uZyBzZWdt
ZW50KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX2xpbWl0OwogICAgICAgIF9fYXNtX18oImxz
bGwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAoX19saW1pdCk6InIiIChzZWdtZW50KSk7
CiAgICAgICAgcmV0dXJuIF9fbGltaXQrMTsKfQoKCgoKCgoKc3RydWN0IF9feGNoZ19kdW1teSB7
IHVuc2lnbmVkIGxvbmcgYVsxMDBdOyB9OwojIDE1NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXQg
KHVuc2lnbmVkIGxvbmcgbG9uZyAqIHB0ciwKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBs
b3csIHVuc2lnbmVkIGludCBoaWdoKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAog
ICAgICAgICAgICAgICAgIlxuMTpcdCIKICAgICAgICAgICAgICAgICJtb3ZsICglMCksICUlZWF4
XG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsIDQoJTApLCAlJWVkeFxuXHQiCiAgICAgICAgICAg
ICAgICAiY21weGNoZzhiICglMClcblx0IgogICAgICAgICAgICAgICAgImpueiAxYiIKICAgICAg
ICAgICAgICAgIDoKICAgICAgICAgICAgICAgIDogIkQiKHB0ciksCiAgICAgICAgICAgICAgICAg
ICAgICAgICJiIihsb3cpLAogICAgICAgICAgICAgICAgICAgICAgICAiYyIoaGlnaCkKICAgICAg
ICAgICAgICAgIDogImF4IiwiZHgiLCJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIF9f
c2V0XzY0Yml0X2NvbnN0YW50ICh1bnNpZ25lZCBsb25nIGxvbmcgKnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2
YWx1ZSkKewogICAgICAgIF9fc2V0XzY0Yml0KHB0ciwodW5zaWduZWQgaW50KSh2YWx1ZSksICh1
bnNpZ25lZCBpbnQpKCh2YWx1ZSk+PjMyVUxMKSk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9f
c2V0XzY0Yml0X3ZhciAodW5zaWduZWQgbG9uZyBsb25nICpwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsKICAgICAgICBfX3NldF82NGJpdChw
dHIsKigoKHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzApLCAqKCgodW5zaWduZWQgaW50KikmKHZh
bHVlKSkrMSkpOwp9CiMgMjAyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9h
c20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX3hjaGcodW5zaWduZWQg
bG9uZyB4LCB2b2xhdGlsZSB2b2lkICogcHRyLCBpbnQgc2l6ZSkKewogICAgICAgIHN3aXRjaCAo
c2l6ZSkgewogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2IgJWIwLCUxIgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDoiPXEiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibSIg
KCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKCJ4Y2hndyAldzAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiI9ciIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigo
c3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oInhjaGdsICUwLCUxIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDoiPXIiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibSIgKCooKHN0cnVj
dCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgfQogICAgICAgIHJldHVybiB4Owp9CiMgMjM2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2Nt
cHhjaGcodm9sYXRpbGUgdm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIG9sZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5ldywgaW50IHNpemUpCnsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHByZXY7CiAgICAgICAgc3dpdGNoIChzaXplKSB7CiAgICAg
ICAgY2FzZSAxOgogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImxvY2sgOyAi
ICJjbXB4Y2hnYiAlYjEsJTIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
ICI9YSIocHJldikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5l
dyksICJtIigqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAg
ICAgcmV0dXJuIHByZXY7CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oImxvY2sgOyAiICJjbXB4Y2hndyAldzEsJTIiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0
cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIm1l
bW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAgY2FzZSA0OgogICAg
ICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImxvY2sgOyAiICJjbXB4Y2hnbCAlMSwl
MiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1hIihwcmV2KQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAicSIobmV3KSwgIm0iKCooKHN0cnVj
dCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIob2xkKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjsK
ICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9sZDsKfQojIDMyNyAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpleHRlcm4gdm9pZCBfX2dsb2JhbF9jbGko
dm9pZCk7CmV4dGVybiB2b2lkIF9fZ2xvYmFsX3N0aSh2b2lkKTsKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgX19nbG9iYWxfc2F2ZV9mbGFncyh2b2lkKTsKZXh0ZXJuIHZvaWQgX19nbG9iYWxfcmVzdG9y
ZV9mbGFncyh1bnNpZ25lZCBsb25nKTsKIyAzNDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKdm9pZCBkaXNhYmxlX2hsdCh2b2lkKTsKdm9pZCBlbmFi
bGVfaGx0KHZvaWQpOwoKZXh0ZXJuIGludCBpc19zb255X3ZhaW9fbGFwdG9wOwojIDQwICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyA0MSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMg
NDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgi
IDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcndzZW0u
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9saW5rYWdl
LmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcndz
ZW0uaCIgMgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvcndzZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3R5cGVzLmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvcndzZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgv
aW5jbHVkZS9hc20vc3lzdGVtLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCgpzdHJ1Y3Qgcndfc2VtYXBob3JlOwoKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcndzZW0uaCIgMQojIDQx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcndzZW0uaCIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyA0MiAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3J3c2VtLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMg
NDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9yd3NlbS5oIiAyCgpz
dHJ1Y3QgcndzZW1fd2FpdGVyOwoKZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3c2VtX2Rv
d25fcmVhZF9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlICpyd3NlbV9kb3duX3dyaXRl
X2ZhaWxlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3c2VtX3dha2Uoc3RydWN0IHJ3X3Nl
bWFwaG9yZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKCgpzdHJ1Y3Qgcndfc2Vt
YXBob3JlIHsKICAgICAgICBzaWduZWQgbG9uZyBjb3VudDsKCgoKCgoKICAgICAgICBzcGlubG9j
a190IHdhaXRfbG9jazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRfbGlzdDsKCgoKfTsK
IyA4NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3J3c2VtLmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCBpbml0X3J3c2VtKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewog
ICAgICAgIHNlbS0+Y291bnQgPSAweDAwMDAwMDAwOwogICAgICAgIGRvIHsgKigmc2VtLT53YWl0
X2xvY2spID0gKHNwaW5sb2NrX3QpIHsgMSB9OyB9IHdoaWxlKDApOwogICAgICAgIGRvIHsgKCZz
ZW0tPndhaXRfbGlzdCktPm5leHQgPSAoJnNlbS0+d2FpdF9saXN0KTsgKCZzZW0tPndhaXRfbGlz
dCktPnByZXYgPSAoJnNlbS0+d2FpdF9saXN0KTsgfSB3aGlsZSAoMCk7CgoKCn0KCgoKCnN0YXRp
YyBpbmxpbmUgdm9pZCBfX2Rvd25fcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBk
b3duX3JlYWRcblx0IgoibG9jayA7ICIgIiAgaW5jbCAgICAgICglJWVheClcblx0IgogICAgICAg
ICAgICAgICAgIiAganMgICAgICAgIDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAg
ICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAg
ICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAg
ICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIGNh
bGwgICAgICByd3NlbV9kb3duX3JlYWRfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBv
cGwgICAgICAlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0
IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAiLnBy
ZXZpb3VzIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25fcmVhZFxuXHQiCiAgICAgICAg
ICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogImEiKHNlbSkKICAg
ICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQg
X19kb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGludCB0bXA7
CgogICAgICAgIHRtcCA9ICgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSk7CiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgZG93bl93cml0
ZVxuXHQiCiJsb2NrIDsgIiAiICB4YWRkICAgICAgJTAsKCUlZWF4KVxuXHQiCiAgICAgICAgICAg
ICAgICAiICB0ZXN0bCAgICAgJTAsJTBcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAg
IDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnNlY3Rp
b24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAg
ICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAg
ICAgIHJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwg
ICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAg
ICAgICAgICAgICIucHJldmlvdXNcbiIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBkb3duX3dy
aXRlIgogICAgICAgICAgICAgICAgOiAiK2QiKHRtcCksICIrbSIoc2VtLT5jb3VudCkKICAgICAg
ICAgICAgICAgIDogImEiKHNlbSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX191cF9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
bSkKewogICAgICAgIF9fczMyIHRtcCA9IC0weDAwMDAwMDAxOwogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfcmVhZFxuXHQiCiJs
b2NrIDsgIiAiICB4YWRkICAgICAgJSVlZHgsKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAgICAi
ICBqcyAgICAgICAgMmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAg
ICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XG5c
dCIKICAgICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIKICAgICAgICAgICAgICAg
ICIgIGpueiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hc
blx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dha2Vcblx0IgogICAgICAg
ICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAg
ICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuIgogICAgICAgICAgICAgICAg
IiMgZW5kaW5nIF9fdXBfcmVhZFxuIgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQp
LCAiK2QiKHRtcCkKICAgICAgICAgICAgICAgIDogImEiKHNlbSkKICAgICAgICAgICAgICAgIDog
Im1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX191cF93cml0ZShzdHJ1
Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAg
ICAgICAgICAgICAgICIjIGJlZ2lubmluZyBfX3VwX3dyaXRlXG5cdCIKICAgICAgICAgICAgICAg
ICIgIG1vdmwgICAgICAlMiwlJWVkeFxuXHQiCiJsb2NrIDsgIiAiICB4YWRkbCAgICAgJSVlZHgs
KCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAgMmZcblx0IgogICAgICAg
ICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwi
YXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIGRlY3cg
ICAgICAlJWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAxYlxuXHQiCiAgICAg
ICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2Fs
bCAgICAgIHJ3c2VtX3dha2Vcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4
XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAg
Ii5wcmV2aW91c1xuIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIF9fdXBfd3JpdGVcbiIKICAg
ICAgICAgICAgICAgIDogIittIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAiYSIoc2Vt
KSwgImkiKC0oKC0weDAwMDEwMDAwKSArIDB4MDAwMDAwMDEpKQogICAgICAgICAgICAgICAgOiAi
bWVtb3J5IiwgImNjIiwgImVkeCIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcndzZW1fYXRv
bWljX2FkZChpbnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKAoibG9jayA7ICIgImFkZGwgJTEsJTAiCiAgICAgICAgICAgICAg
ICA6Ij1tIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJpciIoZGVsdGEpLCAibSIoc2Vt
LT5jb3VudCkpOwp9CgoKCgpzdGF0aWMgaW5saW5lIGludCByd3NlbV9hdG9taWNfdXBkYXRlKGlu
dCBkZWx0YSwgc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgaW50IHRtcCA9IGRl
bHRhOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKImxvY2sgOyAiICJ4YWRkICUwLCgl
MikiCiAgICAgICAgICAgICAgICA6ICIrciIodG1wKSwgIj1tIihzZW0tPmNvdW50KQogICAgICAg
ICAgICAgICAgOiAiciIoc2VtKSwgIm0iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJt
ZW1vcnkiKTsKCiAgICAgICAgcmV0dXJuIHRtcCtkZWx0YTsKfQojIDI4ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgNDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCBkb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIF9fZG93bl9yZWFkKHNlbSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCgoKCnN0YXRpYyBp
bmxpbmUgdm9pZCBkb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgX19kb3duX3dy
aXRlKHNlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0p
CnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIF9f
dXBfcmVhZChzZW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
fQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHVwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
bSkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
IF9fdXBfd3JpdGUoc2VtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwp9CiMgNDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zZW1h
cGhvcmUuaCIgMgoKc3RydWN0IHNlbWFwaG9yZSB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAg
ICAgICAgaW50IHNsZWVwZXJzOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgoKCn07
CiMgNzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUu
aCIKc3RhdGljIGlubGluZSB2b2lkIHNlbWFfaW5pdCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtLCBp
bnQgdmFsKQp7CgoKCgoKCiAgICAgICAgKCgoJnNlbS0+Y291bnQpLT5jb3VudGVyKSA9ICh2YWwp
KTsKICAgICAgICBzZW0tPnNsZWVwZXJzID0gMDsKICAgICAgICBpbml0X3dhaXRxdWV1ZV9oZWFk
KCZzZW0tPndhaXQpOwoKCgp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9NVVRFWCAoc3RydWN0
IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2VtYV9pbml0KHNlbSwgMSk7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCBpbml0X01VVEVYX0xPQ0tFRCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAg
ICAgICAgc2VtYV9pbml0KHNlbSwgMCk7Cn0KCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg
dm9pZCBfX2Rvd25fZmFpbGVkKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBp
bnQgX19kb3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSBpbnQgX19kb3duX2ZhaWxlZF90cnlsb2NrKHZvaWQgKTsKIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fdXBfd2FrZXVwKHZvaWQgKTsKCiBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDApKSkgdm9pZCBfX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBz
ZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25f
dHJ5bG9jayhzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MCkpKSB2b2lkIF9fdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CgoKCgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCBkb3duKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKCgoKCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9taWMgZG93biBvcGVyYXRpb25c
blx0IgogICAgICAgICAgICAgICAgImxvY2sgOyAiICJkZWNsICUwXG5cdCIKICAgICAgICAgICAg
ICAgICJqcyAyZlxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnNl
Y3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rv
d25fZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAg
ICIucHJldmlvdXMiCiAgICAgICAgICAgICAgICA6Ij1tIiAoc2VtLT5jb3VudCkKICAgICAgICAg
ICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7Cn0KCgoKCgpzdGF0
aWMgaW5saW5lIGludCBkb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkK
ewogICAgICAgIGludCByZXN1bHQ7CgoKCgoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAgICAgICAgICIjIGF0b21pYyBpbnRlcnJ1cHRpYmxlIGRvd24gb3BlcmF0aW9uXG5c
dCIKICAgICAgICAgICAgICAgICJsb2NrIDsgIiAiZGVjbCAlMVxuXHQiCiAgICAgICAgICAgICAg
ICAianMgMmZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgJTAsJTBcbiIKICAgICAgICAgICAg
ICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4i
CiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlXG5c
dCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXMi
CiAgICAgICAgICAgICAgICA6Ij1hIiAocmVzdWx0KSwgIj1tIiAoc2VtLT5jb3VudCkKICAgICAg
ICAgICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAg
cmV0dXJuIHJlc3VsdDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRvd25fdHJ5bG9jayhzdHJ1
Y3Qgc2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJlc3VsdDsKCgoKCgogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIGludGVycnVwdGli
bGUgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgImxvY2sgOyAiICJkZWNsICUx
XG5cdCIKICAgICAgICAgICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgICAgICAgICAieG9ybCAl
MCwlMFxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnNlY3Rpb24g
LnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rvd25fZmFp
bGVkX3RyeWxvY2tcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAgICAg
ICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPWEiIChyZXN1bHQpLCAiPW0iIChzZW0t
PmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1v
cnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQg
dXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIHVwIG9wZXJhdGlvblxuXHQiCiAgICAgICAg
ICAgICAgICAibG9jayA7ICIgImluY2wgJTBcblx0IgogICAgICAgICAgICAgICAgImpsZSAyZlxu
IgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQu
bG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX3VwX3dha2V1cFxuXHQi
CiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzIgog
ICAgICAgICAgICAgICAgOiI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChz
ZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwp9CiMgMTk5ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDIKCgoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMgoKCnN0
YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UzMiBfX19hcmNoX19zd2FiMzIoX191MzIgeCkK
ewoKICAgICAgICBfX2FzbV9fKCJic3dhcCAlMCIgOiAiPXIiICh4KSA6ICIwIiAoeCkpOwoKCgoK
CgoKICAgICAgICByZXR1cm4geDsKfQoKc3RhdGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2
IF9fX2FyY2hfX3N3YWIxNihfX3UxNiB4KQp7CiAgICAgICAgX19hc21fXygieGNoZ2IgJWIwLCVo
MCIgOiAiPXEiICh4KSA6ICIwIiAoeCkpOyByZXR1cm4geDsKCgoKfQojIDQ1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4u
aCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9ieXRl
b3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiIDEKIyAxMzEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiCnN0YXRpYyBfX2lubGlu
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
MTMvbGludXgvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAyCiMgNjYg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0
bGVfZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMQojIDE1MCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIKZXh0ZXJuIF9fdTMyIG50b2hs
KF9fdTMyKTsKZXh0ZXJuIF9fdTMyIGh0b25sKF9fdTMyKTsKCgoKCmV4dGVybiB1bnNpZ25lZCBz
aG9ydCBpbnQgbnRvaHModW5zaWduZWQgc2hvcnQgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0
IGludCBodG9ucyh1bnNpZ25lZCBzaG9ydCBpbnQpOwojIDY3ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAyCiMgNDYg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMgoj
IDIwMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoK
ZXh0ZXJuIHZvaWQgdXBkYXRlX2F0aW1lIChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQg
YnVmZmVyX2luaXQodW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIGlub2RlX2luaXQodW5zaWdu
ZWQgbG9uZyk7CmV4dGVybiB2b2lkIG1udF9pbml0KHVuc2lnbmVkIGxvbmcpOwoKCmVudW0gYmhf
c3RhdGVfYml0cyB7CiAgICAgICAgQkhfVXB0b2RhdGUsCiAgICAgICAgQkhfRGlydHksCiAgICAg
ICAgQkhfTG9jaywKICAgICAgICBCSF9SZXEsCiAgICAgICAgQkhfTWFwcGVkLAogICAgICAgIEJI
X05ldywKICAgICAgICBCSF9Bc3luYywKICAgICAgICBCSF9XYWl0X0lPLAogICAgICAgIEJIX2xh
dW5kZXIsCgogICAgICAgIEJIX1ByaXZhdGVTdGFydCwKCgp9OwojIDIzNiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGJ1ZmZlcl9oZWFkIHsK
CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX25leHQ7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBiX2Jsb2NrbnI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYl9zaXplOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGJfbGlzdDsKICAgICAgICBrZGV2X3QgYl9kZXY7CgogICAgICAgIGF0b21pY190
IGJfY291bnQ7CiAgICAgICAga2Rldl90IGJfcmRldjsKICAgICAgICB1bnNpZ25lZCBsb25nIGJf
c3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX2ZsdXNodGltZTsKCiAgICAgICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICpiX25leHRfZnJlZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJf
cHJldl9mcmVlOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl90aGlzX3BhZ2U7CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3JlcW5leHQ7CgogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqKmJfcHByZXY7CiAgICAgICAgY2hhciAqIGJfZGF0YTsKICAgICAgICBzdHJ1Y3QgcGFn
ZSAqYl9wYWdlOwogICAgICAgIHZvaWQgKCpiX2VuZF9pbykoc3RydWN0IGJ1ZmZlcl9oZWFkICpi
aCwgaW50IHVwdG9kYXRlKTsKICAgICAgICB2b2lkICpiX3ByaXZhdGU7CgogICAgICAgIHVuc2ln
bmVkIGxvbmcgYl9yc2VjdG9yOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGJfd2FpdDsKCiAg
ICAgICAgc3RydWN0IGlub2RlICogYl9pbm9kZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJf
aW5vZGVfYnVmZmVyczsKfTsKCnR5cGVkZWYgdm9pZCAoYmhfZW5kX2lvX3QpKHN0cnVjdCBidWZm
ZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7CnZvaWQgaW5pdF9idWZmZXIoc3RydWN0IGJ1ZmZl
cl9oZWFkICosIGJoX2VuZF9pb190ICosIHZvaWQgKik7CiMgMjgyICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBzZXRfYmhfcGFnZShz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBv
ZmZzZXQpOwoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9waXBlX2ZzX2kuaCIgMQoKCgoKc3RydWN0IHBpcGVfaW5vZGVfaW5mbyB7CiAgICAgICAgd2Fp
dF9xdWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBjaGFyICpiYXNlOwogICAgICAgIHVuc2lnbmVk
IGludCBsZW47CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0OwogICAgICAgIHVuc2lnbmVkIGlu
dCByZWFkZXJzOwogICAgICAgIHVuc2lnbmVkIGludCB3cml0ZXJzOwogICAgICAgIHVuc2lnbmVk
IGludCB3YWl0aW5nX3JlYWRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdhaXRpbmdfd3JpdGVy
czsKICAgICAgICB1bnNpZ25lZCBpbnQgcl9jb3VudGVyOwogICAgICAgIHVuc2lnbmVkIGludCB3
X2NvdW50ZXI7Cn07CiMgNDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3BpcGVfZnNfaS5oIgp2b2lkIHBpcGVfd2FpdChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSk7Cgpz
dHJ1Y3QgaW5vZGUqIHBpcGVfbmV3KHN0cnVjdCBpbm9kZSogaW5vZGUpOwojIDI4OCAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX2kuaCIgMQoKCgoKCgpz
dHJ1Y3QgbWluaXhfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg
X191MTYgaTFfZGF0YVsxNl07CiAgICAgICAgICAgICAgICBfX3UzMiBpMl9kYXRhWzE2XTsKICAg
ICAgICB9IHU7Cn07CiMgMjg5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvZXh0Ml9mc19pLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvZXh0Ml9mc19pLmgiCnN0cnVjdCBleHQyX2lub2RlX2luZm8gewogICAgICAgIF9f
dTMyIGlfZGF0YVsxNV07CiAgICAgICAgX191MzIgaV9mbGFnczsKICAgICAgICBfX3UzMiBpX2Zh
ZGRyOwogICAgICAgIF9fdTggaV9mcmFnX25vOwogICAgICAgIF9fdTggaV9mcmFnX3NpemU7CiAg
ICAgICAgX191MTYgaV9vc3luYzsKICAgICAgICBfX3UzMiBpX2ZpbGVfYWNsOwogICAgICAgIF9f
dTMyIGlfZGlyX2FjbDsKICAgICAgICBfX3UzMiBpX2R0aW1lOwogICAgICAgIF9fdTMyIGlfYmxv
Y2tfZ3JvdXA7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMy
IGlfbmV4dF9hbGxvY19nb2FsOwogICAgICAgIF9fdTMyIGlfcHJlYWxsb2NfYmxvY2s7CiAgICAg
ICAgX191MzIgaV9wcmVhbGxvY19jb3VudDsKICAgICAgICBfX3UzMiBpX2Rpcl9zdGFydF9sb29r
dXA7CiAgICAgICAgaW50IGlfbmV3X2lub2RlOjE7Cn07CiMgMjkwICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaHBmc19mc19pLmgiIDEKCgoKc3RydWN0IGhwZnNfaW5v
ZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICBpbm9f
dCBpX3BhcmVudF9kaXI7CiAgICAgICAgdW5zaWduZWQgaV9kbm87CiAgICAgICAgdW5zaWduZWQg
aV9kcG9zOwogICAgICAgIHVuc2lnbmVkIGlfZHN1YmRubzsKICAgICAgICB1bnNpZ25lZCBpX2Zp
bGVfc2VjOwogICAgICAgIHVuc2lnbmVkIGlfZGlza19zZWM7CiAgICAgICAgdW5zaWduZWQgaV9u
X3NlY3M7CiAgICAgICAgdW5zaWduZWQgaV9lYV9zaXplOwogICAgICAgIHVuc2lnbmVkIGlfY29u
diA6IDI7CiAgICAgICAgdW5zaWduZWQgaV9lYV9tb2RlIDogMTsKICAgICAgICB1bnNpZ25lZCBp
X2VhX3VpZCA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9lYV9naWQgOiAxOwogICAgICAgIHVuc2ln
bmVkIGlfZGlydHkgOiAxOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9zZW07CiAgICAgICAg
bG9mZl90ICoqaV9yZGRpcl9vZmY7Cn07CiMgMjkxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvbGludXgvbnRmc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbnRmc19mc19pLmgiIDIKCgpzdHJ1Y3QgbnRmc19hdHRy
aWJ1dGU7CnN0cnVjdCBudGZzX3NiX2luZm87CgoKCgp0eXBlZGVmIHU4IG50ZnNfdTg7CnR5cGVk
ZWYgdTE2IG50ZnNfdTE2Owp0eXBlZGVmIHUzMiBudGZzX3UzMjsKdHlwZWRlZiB1NjQgbnRmc191
NjQ7CnR5cGVkZWYgczggbnRmc19zODsKdHlwZWRlZiBzMTYgbnRmc19zMTY7CnR5cGVkZWYgczMy
IG50ZnNfczMyOwp0eXBlZGVmIHM2NCBudGZzX3M2NDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfbW9k
ZV90IG50bW9kZV90OwoKCgp0eXBlZGVmIHVpZF90IG50ZnNfdWlkX3Q7CgoKCnR5cGVkZWYgZ2lk
X3QgbnRmc19naWRfdDsKCgoKdHlwZWRlZiBfX2tlcm5lbF9zaXplX3QgbnRmc19zaXplX3Q7CgoK
CnR5cGVkZWYgX19rZXJuZWxfdGltZV90IG50ZnNfdGltZV90OwoKCgoKCnR5cGVkZWYgdTE2IG50
ZnNfd2NoYXJfdDsKCgoKCnR5cGVkZWYgczY0IG50ZnNfb2Zmc2V0X3Q7CgoKCgp0eXBlZGVmIHU2
NCBudGZzX3RpbWU2NF90OwojIDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9udGZzX2ZzX2kuaCIKdHlwZWRlZiBzMzIgbnRmc19jbHVzdGVyX3Q7CgoKCnN0cnVj
dCBudGZzX2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gKnZvbDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGlfbnVtYmVyOwogICAgICAgIF9fdTE2IHNlcXVlbmNlX251bWJl
cjsKICAgICAgICB1bnNpZ25lZCBjaGFyICphdHRyOwogICAgICAgIGludCBhdHRyX2NvdW50Owog
ICAgICAgIHN0cnVjdCBudGZzX2F0dHJpYnV0ZSAqYXR0cnM7CiAgICAgICAgaW50IHJlY29yZF9j
b3VudDsKICAgICAgICBpbnQgKnJlY29yZHM7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCByZWNvcmRzaXplOwogICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgY2x1c3RlcnNfcGVyX3JlY29yZDsKICAgICAgICAgICAg
ICAgIH0gaW5kZXg7CiAgICAgICAgfSB1Owp9OwojIDI5MiAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX2kuaCIgMQoKCgoKCgoKc3RydWN0IG1zZG9zX2lu
b2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAgaW50
IGlfc3RhcnQ7CiAgICAgICAgaW50IGlfbG9nc3RhcnQ7CiAgICAgICAgaW50IGlfYXR0cnM7CiAg
ICAgICAgaW50IGlfY3RpbWVfbXM7CiAgICAgICAgaW50IGlfbG9jYXRpb247CiAgICAgICAgc3Ry
dWN0IGlub2RlICppX2ZhdF9pbm9kZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlfZmF0X2hh
c2g7Cn07CiMgMjkzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdW1z
ZG9zX2ZzX2kuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC9tc2Rvc19mc19pLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC91bXNkb3NfZnNfaS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIgMgojIDM5ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC91bXNkb3NfZnNfaS5oIgpzdHJ1
Y3QgZGlyX2xvY2tpbmdfaW5mbyB7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgcDsKICAgICAg
ICBzaG9ydCBpbnQgbG9va2luZzsKICAgICAgICBzaG9ydCBpbnQgY3JlYXRpbmc7CgoKCiAgICAg
ICAgbG9uZyBwaWQ7Cgp9OwoKc3RydWN0IHVtc2Rvc19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1
Y3QgbXNkb3NfaW5vZGVfaW5mbyBtc2Rvc19pbmZvOwogICAgICAgIHN0cnVjdCBkaXJfbG9ja2lu
Z19pbmZvIGRpcl9pbmZvOwogICAgICAgIGludCBpX3BhdGNoZWQ7CiAgICAgICAgaW50IGlfaXNf
aGxpbms7CiAgICAgICAgb2ZmX3QgcG9zOwp9OwojIDI5NCAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2lzb19mc19pLmgiIDEKCgoKCgoKc3RydWN0IGlzb19pbm9kZV9p
bmZvIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9maXJzdF9leHRlbnQ7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBpX2ZpbGVfZm9ybWF0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9uZXh0X3NlY3Rp
b25faW5vOwogICAgICAgIG9mZl90IGlfc2VjdGlvbl9zaXplOwp9OwojIDI5NSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDEKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdHlwZXMuaCIgMQojIDUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyA2ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzLmgiIDEKIyAx
MCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3VucnBjL21zZ19wcm90
LmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3Vu
cnBjL21zZ19wcm90LmgiCmVudW0gcnBjX2F1dGhfZmxhdm9yIHsKICAgICAgICBSUENfQVVUSF9O
VUxMID0gMCwKICAgICAgICBSUENfQVVUSF9VTklYID0gMSwKICAgICAgICBSUENfQVVUSF9TSE9S
VCA9IDIsCiAgICAgICAgUlBDX0FVVEhfREVTID0gMywKICAgICAgICBSUENfQVVUSF9LUkIgPSA0
LAp9OwoKZW51bSBycGNfbXNnX3R5cGUgewogICAgICAgIFJQQ19DQUxMID0gMCwKICAgICAgICBS
UENfUkVQTFkgPSAxCn07CgplbnVtIHJwY19yZXBseV9zdGF0IHsKICAgICAgICBSUENfTVNHX0FD
Q0VQVEVEID0gMCwKICAgICAgICBSUENfTVNHX0RFTklFRCA9IDEKfTsKCmVudW0gcnBjX2FjY2Vw
dF9zdGF0IHsKICAgICAgICBSUENfU1VDQ0VTUyA9IDAsCiAgICAgICAgUlBDX1BST0dfVU5BVkFJ
TCA9IDEsCiAgICAgICAgUlBDX1BST0dfTUlTTUFUQ0ggPSAyLAogICAgICAgIFJQQ19QUk9DX1VO
QVZBSUwgPSAzLAogICAgICAgIFJQQ19HQVJCQUdFX0FSR1MgPSA0LAogICAgICAgIFJQQ19TWVNU
RU1fRVJSID0gNQp9OwoKZW51bSBycGNfcmVqZWN0X3N0YXQgewogICAgICAgIFJQQ19NSVNNQVRD
SCA9IDAsCiAgICAgICAgUlBDX0FVVEhfRVJST1IgPSAxCn07CgplbnVtIHJwY19hdXRoX3N0YXQg
ewogICAgICAgIFJQQ19BVVRIX09LID0gMCwKICAgICAgICBSUENfQVVUSF9CQURDUkVEID0gMSwK
ICAgICAgICBSUENfQVVUSF9SRUpFQ1RFRENSRUQgPSAyLAogICAgICAgIFJQQ19BVVRIX0JBRFZF
UkYgPSAzLAogICAgICAgIFJQQ19BVVRIX1JFSkVDVEVEVkVSRiA9IDQsCiAgICAgICAgUlBDX0FV
VEhfVE9PV0VBSyA9IDUKfTsKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvbmZzLmgiIDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvbmZzLmgiCiBlbnVtIG5mc19zdGF0IHsKICAgICAgICBORlNfT0sgPSAwLAogICAg
ICAgIE5GU0VSUl9QRVJNID0gMSwKICAgICAgICBORlNFUlJfTk9FTlQgPSAyLAogICAgICAgIE5G
U0VSUl9JTyA9IDUsCiAgICAgICAgTkZTRVJSX05YSU8gPSA2LAogICAgICAgIE5GU0VSUl9FQUdB
SU4gPSAxMSwKICAgICAgICBORlNFUlJfQUNDRVMgPSAxMywKICAgICAgICBORlNFUlJfRVhJU1Qg
PSAxNywKICAgICAgICBORlNFUlJfWERFViA9IDE4LAogICAgICAgIE5GU0VSUl9OT0RFViA9IDE5
LAogICAgICAgIE5GU0VSUl9OT1RESVIgPSAyMCwKICAgICAgICBORlNFUlJfSVNESVIgPSAyMSwK
ICAgICAgICBORlNFUlJfSU5WQUwgPSAyMiwKICAgICAgICBORlNFUlJfRkJJRyA9IDI3LAogICAg
ICAgIE5GU0VSUl9OT1NQQyA9IDI4LAogICAgICAgIE5GU0VSUl9ST0ZTID0gMzAsCiAgICAgICAg
TkZTRVJSX01MSU5LID0gMzEsCiAgICAgICAgTkZTRVJSX09QTk9UU1VQUCA9IDQ1LAogICAgICAg
IE5GU0VSUl9OQU1FVE9PTE9ORyA9IDYzLAogICAgICAgIE5GU0VSUl9OT1RFTVBUWSA9IDY2LAog
ICAgICAgIE5GU0VSUl9EUVVPVCA9IDY5LAogICAgICAgIE5GU0VSUl9TVEFMRSA9IDcwLAogICAg
ICAgIE5GU0VSUl9SRU1PVEUgPSA3MSwKICAgICAgICBORlNFUlJfV0ZMVVNIID0gOTksCiAgICAg
ICAgTkZTRVJSX0JBREhBTkRMRSA9IDEwMDAxLAogICAgICAgIE5GU0VSUl9OT1RfU1lOQyA9IDEw
MDAyLAogICAgICAgIE5GU0VSUl9CQURfQ09PS0lFID0gMTAwMDMsCiAgICAgICAgTkZTRVJSX05P
VFNVUFAgPSAxMDAwNCwKICAgICAgICBORlNFUlJfVE9PU01BTEwgPSAxMDAwNSwKICAgICAgICBO
RlNFUlJfU0VSVkVSRkFVTFQgPSAxMDAwNiwKICAgICAgICBORlNFUlJfQkFEVFlQRSA9IDEwMDA3
LAogICAgICAgIE5GU0VSUl9KVUtFQk9YID0gMTAwMDgKIH07CgoKCmVudW0gbmZzX2Z0eXBlIHsK
ICAgICAgICBORk5PTiA9IDAsCiAgICAgICAgTkZSRUcgPSAxLAogICAgICAgIE5GRElSID0gMiwK
ICAgICAgICBORkJMSyA9IDMsCiAgICAgICAgTkZDSFIgPSA0LAogICAgICAgIE5GTE5LID0gNSwK
ICAgICAgICBORlNPQ0sgPSA2LAogICAgICAgIE5GQkFEID0gNywKICAgICAgICBORkZJRk8gPSA4
Cn07CgoKCgoKCnN0cnVjdCBuZnNfZmggewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNpemU7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBkYXRhWzY0XTsKfTsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25mcy5oIgplbnVtIG5mczNfc3RhYmxlX2hvdyB7CiAg
ICAgICAgTkZTX1VOU1RBQkxFID0gMCwKICAgICAgICBORlNfREFUQV9TWU5DID0gMSwKICAgICAg
ICBORlNfRklMRV9TWU5DID0gMgp9OwojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIKCgoKCnN0cnVjdCBuZnNfaW5vZGVfaW5mbyB7CgoK
CiAgICAgICAgX191NjQgZnNpZDsKICAgICAgICBfX3U2NCBmaWxlaWQ7CgoKCgogICAgICAgIHN0
cnVjdCBuZnNfZmggZmg7CgoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwojIDQ1ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIgogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcmVhZF9jYWNoZV9qaWZmaWVzOwogICAgICAgIF9fdTY0IHJlYWRf
Y2FjaGVfY3RpbWU7CiAgICAgICAgX191NjQgcmVhZF9jYWNoZV9tdGltZTsKICAgICAgICBfX3U2
NCByZWFkX2NhY2hlX2lzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0cnRpbWVvOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgYXR0cnRpbWVvX3RpbWVzdGFtcDsKCgoKCgogICAgICAgIF9fdTMy
IGNvb2tpZXZlcmZbMl07CgoKCgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVhZDsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY29tbWl0
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgd3JpdGViYWNrOwoKICAgICAgICB1bnNpZ25lZCBp
bnQgbnJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpcnR5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5jb21taXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnBhZ2VzOwoKCiAgICAgICAgc3RydWN0IGlub2RlICpoYXNoX25leHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmhhc2hfcHJldjsKICAgICAgICB1bnNpZ25lZCBs
b25nIG5leHRzY2FuOwoKCiAgICAgICAgc3RydWN0IHJwY19jcmVkICptbV9jcmVkOwp9OwojIDky
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIgpz
dHJ1Y3QgbmZzX2xvY2tfaW5mbyB7CiAgICAgICAgdTMyIHN0YXRlOwogICAgICAgIHUzMiBmbGFn
czsKICAgICAgICBzdHJ1Y3QgbmxtX2hvc3QgKmhvc3Q7Cn07CiMgMjk2ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3lzdl9mc19pLmgiIDEKCgoKCgoKc3RydWN0IHN5
c3ZfaW5vZGVfaW5mbyB7CiAgICAgICAgdTMyIGlfZGF0YVsxMCsxKzErMV07CgoKCgp9OwojIDI5
NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvYS5vdXQu
aCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20v
YS5vdXQuaCIgMQoKCgpzdHJ1Y3QgZXhlYwp7CiAgdW5zaWduZWQgbG9uZyBhX2luZm87CiAgdW5z
aWduZWQgYV90ZXh0OwogIHVuc2lnbmVkIGFfZGF0YTsKICB1bnNpZ25lZCBhX2JzczsKICB1bnNp
Z25lZCBhX3N5bXM7CiAgdW5zaWduZWQgYV9lbnRyeTsKICB1bnNpZ25lZCBhX3Ryc2l6ZTsKICB1
bnNpZ25lZCBhX2Ryc2l6ZTsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC9hLm91dC5oIiAyCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAgTV9PTERT
VU4yID0gMCwKCgoKCiAgTV82ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoKICBNX1NQ
QVJDID0gMywKCgogIE1fMzg2ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBTMiA9IDE1
Mgp9OwojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvYS5v
dXQuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5o
IiAxCiMgMTMyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9hLm91
dC5oIiAyCiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9h
Lm91dC5oIgpzdHJ1Y3Qgbmxpc3QgewogIHVuaW9uIHsKICAgIGNoYXIgKm5fbmFtZTsKICAgIHN0
cnVjdCBubGlzdCAqbl9uZXh0OwogICAgbG9uZyBuX3N0cng7CiAgfSBuX3VuOwogIHVuc2lnbmVk
IGNoYXIgbl90eXBlOwogIGNoYXIgbl9vdGhlcjsKICBzaG9ydCBuX2Rlc2M7CiAgdW5zaWduZWQg
bG9uZyBuX3ZhbHVlOwp9OwojIDIzNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvYS5vdXQuaCIKc3RydWN0IHJlbG9jYXRpb25faW5mbwp7CgogIGludCByX2FkZHJl
c3M7CgogIHVuc2lnbmVkIGludCByX3N5bWJvbG51bToyNDsKCgoKICB1bnNpZ25lZCBpbnQgcl9w
Y3JlbDoxOwoKCiAgdW5zaWduZWQgaW50IHJfbGVuZ3RoOjI7CgoKCgoKCiAgdW5zaWduZWQgaW50
IHJfZXh0ZXJuOjE7CgoKCgoKCgogIHVuc2lnbmVkIGludCByX3BhZDo0OwoKfTsKIyA1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMgoKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZS5oIiAxCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAx
CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZS5oIiAy
CgoKCnN0cnVjdCB0aW1lc3BlYyB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBsb25n
IHR2X25zZWM7Cn07CiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3RpbWUuaCIKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZwp0aW1lc3BlY190b19q
aWZmaWVzKHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNl
YyA9IHZhbHVlLT50dl9zZWM7CiAgICAgICAgbG9uZyBuc2VjID0gdmFsdWUtPnR2X25zZWM7Cgog
ICAgICAgIGlmIChzZWMgPj0gKCgofjBVTCA+PiAxKS0xKSAvIDEwMCkpCiAgICAgICAgICAgICAg
ICByZXR1cm4gKCh+MFVMID4+IDEpLTEpOwogICAgICAgIG5zZWMgKz0gMTAwMDAwMDAwMEwgLyAx
MDAgLSAxOwogICAgICAgIG5zZWMgLz0gMTAwMDAwMDAwMEwgLyAxMDA7CiAgICAgICAgcmV0dXJu
IDEwMCAqIHNlYyArIG5zZWM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKamlmZmllc190b190
aW1lc3BlYyh1bnNpZ25lZCBsb25nIGppZmZpZXMsIHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsK
ICAgICAgICB2YWx1ZS0+dHZfbnNlYyA9IChqaWZmaWVzICUgMTAwKSAqICgxMDAwMDAwMDAwTCAv
IDEwMCk7CiAgICAgICAgdmFsdWUtPnR2X3NlYyA9IGppZmZpZXMgLyAxMDA7Cn0KIyA2NyAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZS5oIgpzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGxvbmcKbWt0aW1lICh1bnNpZ25lZCBpbnQgeWVhciwgdW5zaWduZWQgaW50
IG1vbiwKICAgICAgICB1bnNpZ25lZCBpbnQgZGF5LCB1bnNpZ25lZCBpbnQgaG91ciwKICAgICAg
ICB1bnNpZ25lZCBpbnQgbWluLCB1bnNpZ25lZCBpbnQgc2VjKQp7CiAgICAgICAgaWYgKDAgPj0g
KGludCkgKG1vbiAtPSAyKSkgewogICAgICAgICAgICAgICAgbW9uICs9IDEyOwogICAgICAgICAg
ICAgICAgeWVhciAtPSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgoKAogICAgICAgICAg
ICAgICAgKHVuc2lnbmVkIGxvbmcpICh5ZWFyLzQgLSB5ZWFyLzEwMCArIHllYXIvNDAwICsgMzY3
Km1vbi8xMiArIGRheSkgKwogICAgICAgICAgICAgICAgICAgICAgICB5ZWFyKjM2NSAtIDcxOTQ5
OQogICAgICAgICAgICApKjI0ICsgaG91cgogICAgICAgICAgKSo2MCArIG1pbgogICAgICAgICkq
NjAgKyBzZWM7Cn0KCgoKCnN0cnVjdCB0aW1ldmFsIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwog
ICAgICAgIHN1c2Vjb25kc190IHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdGltZXpvbmUgewogICAgICAg
IGludCB0el9taW51dGVzd2VzdDsKICAgICAgICBpbnQgdHpfZHN0dGltZTsKfTsKCgoKCmV4dGVy
biB2b2lkIGRvX2dldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwpleHRlcm4gdm9pZCBk
b19zZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZvaWQgZ2V0X2Zhc3Rf
dGltZShzdHJ1Y3QgdGltZXZhbCAqdHYpOwpleHRlcm4gdm9pZCAoKmRvX2dldF9mYXN0X3RpbWUp
KHN0cnVjdCB0aW1ldmFsICopOwojIDEyMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRp
bWVzcGVjIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsK
CnN0cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwog
ICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwojIDggIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAyCiMgMTcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIgpzdHJ1Y3QgYWZmc19l
eHRfa2V5IHsKICAgICAgICB1MzIgZXh0OwogICAgICAgIHUzMiBrZXk7Cn07CgoKCgpzdHJ1Y3Qg
YWZmc19pbm9kZV9pbmZvIHsKICAgICAgICB1MzIgaV9vcGVuY250OwogICAgICAgIHN0cnVjdCBz
ZW1hcGhvcmUgaV9saW5rX2xvY2s7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX2V4dF9sb2Nr
OwoKICAgICAgICB1MzIgaV9ibGtjbnQ7CiAgICAgICAgdTMyIGlfZXh0Y250OwogICAgICAgIHUz
MiAqaV9sYzsKICAgICAgICB1MzIgaV9sY19zaXplOwogICAgICAgIHUzMiBpX2xjX3NoaWZ0Owog
ICAgICAgIHUzMiBpX2xjX21hc2s7CiAgICAgICAgc3RydWN0IGFmZnNfZXh0X2tleSAqaV9hYzsK
ICAgICAgICB1MzIgaV9leHRfbGFzdDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmlfZXh0
X2JoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAgdTMyIGlfcHJv
dGVjdDsKICAgICAgICB1MzIgaV9sYXN0YWxsb2M7CiAgICAgICAgaW50IGlfcGFfY250OwojIDUx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIK
fTsKIyAyOTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC91ZnNfZnNf
aS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Vm
c19mc19pLmgiCnN0cnVjdCB1ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAgICAgICAgICAgIF9fdTggaV9zeW1saW5r
WzQqMTVdOwogICAgICAgIH0gaV91MTsKICAgICAgICBfX3U2NCBpX3NpemU7CiAgICAgICAgX191
MzIgaV9mbGFnczsKICAgICAgICBfX3UzMiBpX2dlbjsKICAgICAgICBfX3UzMiBpX3NoYWRvdzsK
ICAgICAgICBfX3UzMiBpX3VudXNlZDE7CiAgICAgICAgX191MzIgaV91bnVzZWQyOwogICAgICAg
IF9fdTMyIGlfb2VmdGZsYWc7CiAgICAgICAgX191MTYgaV9vc3luYzsKICAgICAgICBfX3UzMiBp
X2xhc3RmcmFnOwp9OwojIDI5OSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L2Vmc19mc19pLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvZWZzX2ZzX2kuaCIKdHlwZWRlZiBpbnQzMl90IGVmc19ibG9ja190Owp0eXBlZGVm
IHVpbnQzMl90IGVmc19pbm9fdDsKCgoKCgoKdHlwZWRlZiB1bmlvbiBleHRlbnRfdSB7CiAgICAg
ICAgdW5zaWduZWQgY2hhciByYXdbOF07CiAgICAgICAgc3RydWN0IGV4dGVudF9zIHsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBleF9tYWdpYzo4OwogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGV4X2JuOjI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4X2xlbmd0aDo4
OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4X29mZnNldDoyNDsKICAgICAgICB9IGNv
b2tlZDsKfSBlZnNfZXh0ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgZWRldnMgewogICAgICAgIHNob3J0
IG9kZXY7CiAgICAgICAgdW5zaWduZWQgaW50IG5kZXY7Cn0gZWZzX2RldnM7CgoKCgoKc3RydWN0
IGVmc19kaW5vZGUgewogICAgICAgIHVfc2hvcnQgZGlfbW9kZTsKICAgICAgICBzaG9ydCBkaV9u
bGluazsKICAgICAgICB1X3Nob3J0IGRpX3VpZDsKICAgICAgICB1X3Nob3J0IGRpX2dpZDsKICAg
ICAgICBpbnQzMl90IGRpX3NpemU7CiAgICAgICAgaW50MzJfdCBkaV9hdGltZTsKICAgICAgICBp
bnQzMl90IGRpX210aW1lOwogICAgICAgIGludDMyX3QgZGlfY3RpbWU7CiAgICAgICAgdWludDMy
X3QgZGlfZ2VuOwogICAgICAgIHNob3J0IGRpX251bWV4dGVudHM7CiAgICAgICAgdV9jaGFyIGRp
X3ZlcnNpb247CiAgICAgICAgdV9jaGFyIGRpX3NwYXJlOwogICAgICAgIHVuaW9uIGRpX2FkZHIg
ewogICAgICAgICAgICAgICAgZWZzX2V4dGVudCBkaV9leHRlbnRzWzEyXTsKICAgICAgICAgICAg
ICAgIGVmc19kZXZzIGRpX2RldjsKICAgICAgICB9IGRpX3U7Cn07CgoKc3RydWN0IGVmc19pbm9k
ZV9pbmZvIHsKICAgICAgICBpbnQgbnVtZXh0ZW50czsKICAgICAgICBpbnQgbGFzdGV4dGVudDsK
CiAgICAgICAgZWZzX2V4dGVudCBleHRlbnRzWzEyXTsKfTsKIyAzMDAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMQojIDEyICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIiAx
CiMgMTA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgi
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfcXVhZF90OwojIDE2NCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgdmVudXNfZGlyZW50
IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1ICsgMV07Cn07CiMgMTk4ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYg
dV9sb25nIFZvbHVtZUlkOwp0eXBlZGVmIHVfbG9uZyBWbm9kZUlkOwp0eXBlZGVmIHVfbG9uZyBV
bmlxdWVfdDsKdHlwZWRlZiB1X2xvbmcgRmlsZVZlcnNpb247CgoKCgp0eXBlZGVmIHN0cnVjdCBW
aWNlRmlkIHsKICAgIFZvbHVtZUlkIFZvbHVtZTsKICAgIFZub2RlSWQgVm5vZGU7CiAgICBVbmlx
dWVfdCBVbmlxdWU7Cn0gVmljZUZpZDsKCgoKCnN0YXRpYyBfX2lubGluZV9fIGlub190IGNvZGFf
ZjJpKHN0cnVjdCBWaWNlRmlkICpmaWQpCnsKICAgICAgICBpZiAoICEgZmlkICkKICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgIGlmIChmaWQtPlZub2RlID09IDB4ZmZmZmZmZmUgfHwg
ZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZmKQogICAgICAgICAgICAgICAgcmV0dXJuICgoZmlkLT5W
b2x1bWUgPDwgMjApIHwgKGZpZC0+VW5pcXVlICYgMHhmZmZmZikpOwogICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgIHJldHVybiAoZmlkLT5VbmlxdWUgKyAoZmlkLT5Wbm9kZTw8MTApICsgKGZp
ZC0+Vm9sdW1lPDwyMCkpOwp9CiMgMjMzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdV9pbnQzMl90IHZ1aWRfdDsKdHlwZWRlZiB1X2lu
dDMyX3QgdmdpZF90OwoKCgoKc3RydWN0IGNvZGFfY3JlZCB7CiAgICB2dWlkX3QgY3JfdWlkLCBj
cl9ldWlkLCBjcl9zdWlkLCBjcl9mc3VpZDsKICAgIHZnaWRfdCBjcl9ncm91cGlkLCBjcl9lZ2lk
LCBjcl9zZ2lkLCBjcl9mc2dpZDsKfTsKCgoKCgoKCmVudW0gY29kYV92dHlwZSB7IENfVk5PTiwg
Q19WUkVHLCBDX1ZESVIsIENfVkJMSywgQ19WQ0hSLCBDX1ZMTkssIENfVlNPQ0ssIENfVkZJRk8s
IENfVkJBRCB9OwoKc3RydWN0IGNvZGFfdmF0dHIgewogICAgICAgIGxvbmcgdmFfdHlwZTsKICAg
ICAgICB1X3Nob3J0IHZhX21vZGU7CiAgICAgICAgc2hvcnQgdmFfbmxpbms7CiAgICAgICAgdnVp
ZF90IHZhX3VpZDsKICAgICAgICB2Z2lkX3QgdmFfZ2lkOwogICAgICAgIGxvbmcgdmFfZmlsZWlk
OwogICAgICAgIHVfcXVhZF90IHZhX3NpemU7CiAgICAgICAgbG9uZyB2YV9ibG9ja3NpemU7CiAg
ICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX2F0aW1lOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2
YV9tdGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfY3RpbWU7CiAgICAgICAgdV9sb25n
IHZhX2dlbjsKICAgICAgICB1X2xvbmcgdmFfZmxhZ3M7CiAgICAgICAgdV9xdWFkX3QgdmFfcmRl
djsKICAgICAgICB1X3F1YWRfdCB2YV9ieXRlczsKICAgICAgICB1X3F1YWRfdCB2YV9maWxlcmV2
Owp9OwoKCgoKc3RydWN0IGNvZGFfc3RhdGZzIHsKICAgIGludDMyX3QgZl9ibG9ja3M7CiAgICBp
bnQzMl90IGZfYmZyZWU7CiAgICBpbnQzMl90IGZfYmF2YWlsOwogICAgaW50MzJfdCBmX2ZpbGVz
OwogICAgaW50MzJfdCBmX2ZmcmVlOwp9OwojIDMzNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9pbl9oZHIgewogICAgdW5zaWdu
ZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAgIHVfc2hvcnQgcGlk
OwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9ydCBzaWQ7CiAgICBzdHJ1Y3QgY29kYV9jcmVk
IGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hkciB7CiAgICB1bnNpZ25lZCBsb25nIG9wY29k
ZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwogICAgdW5zaWduZWQgbG9uZyByZXN1bHQ7Cn07
CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAg
IFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3Jvb3RfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5faW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFf
b3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHVfcXVhZF90IGRldjsK
ICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3QgY29kYV9zdG9yZV9pbiB7CiAgICBzdHJ1Y3Qg
Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1
Y3QgY29kYV9zdG9yZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3Ry
dWN0IGNvZGFfcmVsZWFzZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9yZWxlYXNlX291dCB7CiAg
ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9jbG9zZV9pbiB7CiAg
ICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7
Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7
Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwog
ICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGludCBsZW47CiAgICBpbnQgcndmbGFn
OwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lvY3RsX291dCB7CiAgICBzdHJ1Y3Qg
Y29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNhZGRyX3QgZGF0YTsKfTsKCgoKc3Ry
dWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
dXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFf
c2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7
CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3RydWN0IGNvZGFfc2V0YXR0cl9vdXQg
ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfYWNjZXNzX2lu
IHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBm
bGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5hbWU7CiAgICBpbnQgZmxhZ3M7
Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CgoKCnN0cnVjdCBjb2RhX2NyZWF0
ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBz
dHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7CiAgICBpbnQgbW9kZTsKICAgIGlu
dCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRf
aGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsK
CgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVtb3ZlX291dCB7
CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9saW5rX2luIHsK
ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgc291cmNlRmlkOwogICAgVmlj
ZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfbGlua19vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0cnVjdCBjb2RhX3JlbmFtZV9pbiB7
CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIHNvdXJjZUZpZDsKICAgIGlu
dCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IGRlc3RuYW1lOwp9OwoKc3Ry
dWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpz
dHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IG5hbWU7Cn07Cgpz
dHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZp
Y2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2Rh
X3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsK
ICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJfb3V0IHsKICAgIHN0cnVjdCBjb2Rh
X291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxpbmtfaW4gewogICAgc3RydWN0IGNv
ZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHNyY25hbWU7CiAgICBzdHJ1
Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfc3ltbGlu
a19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfcmVh
ZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9
OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2ZzeW5j
X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0
cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpz
dHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
aWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9o
ZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CiMgNjE2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2RhX3B1
cmdldXNlcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2Rh
X2NyZWQgY3JlZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgewogICAgc3RydWN0IGNv
ZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfemFw
ZGlyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlk
Owp9OwoKCgpzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvaDsKICAgIHN0cnVjdCBjb2RhX2NyZWQgY3JlZDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCgoK
c3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAg
ICBWaWNlRmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIE5ld0ZpZDsKICAgIFZpY2VGaWQgT2xk
RmlkOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfaW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFf
b3Blbl9ieV9mZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBmZDsK
CgogICAgc3RydWN0IGZpbGUgKmZoOwoKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4g
ewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZs
YWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
dXRfaGRyIG9oOwogICAgICAgIGludCBwYXRoOwp9OwoKCnN0cnVjdCBjb2RhX3N0YXRmc19pbiB7
CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaW47Cn07CgpzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0IHsK
ICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnMgc3RhdDsK
fTsKIyA3MDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEu
aCIKdW5pb24gaW5wdXRBcmdzIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIHN0cnVj
dCBjb2RhX29wZW5faW4gY29kYV9vcGVuOwogICAgc3RydWN0IGNvZGFfc3RvcmVfaW4gY29kYV9z
dG9yZTsKICAgIHN0cnVjdCBjb2RhX3JlbGVhc2VfaW4gY29kYV9yZWxlYXNlOwogICAgc3RydWN0
IGNvZGFfY2xvc2VfaW4gY29kYV9jbG9zZTsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX2luIGNvZGFf
aW9jdGw7CiAgICBzdHJ1Y3QgY29kYV9nZXRhdHRyX2luIGNvZGFfZ2V0YXR0cjsKICAgIHN0cnVj
dCBjb2RhX3NldGF0dHJfaW4gY29kYV9zZXRhdHRyOwogICAgc3RydWN0IGNvZGFfYWNjZXNzX2lu
IGNvZGFfYWNjZXNzOwogICAgc3RydWN0IGNvZGFfbG9va3VwX2luIGNvZGFfbG9va3VwOwogICAg
c3RydWN0IGNvZGFfY3JlYXRlX2luIGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfcmVtb3Zl
X2luIGNvZGFfcmVtb3ZlOwogICAgc3RydWN0IGNvZGFfbGlua19pbiBjb2RhX2xpbms7CiAgICBz
dHJ1Y3QgY29kYV9yZW5hbWVfaW4gY29kYV9yZW5hbWU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9p
biBjb2RhX21rZGlyOwogICAgc3RydWN0IGNvZGFfcm1kaXJfaW4gY29kYV9ybWRpcjsKICAgIHN0
cnVjdCBjb2RhX3N5bWxpbmtfaW4gY29kYV9zeW1saW5rOwogICAgc3RydWN0IGNvZGFfcmVhZGxp
bmtfaW4gY29kYV9yZWFkbGluazsKICAgIHN0cnVjdCBjb2RhX2ZzeW5jX2luIGNvZGFfZnN5bmM7
CiAgICBzdHJ1Y3QgY29kYV92Z2V0X2luIGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2RhX29wZW5f
YnlfZmRfaW4gY29kYV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX2lu
IGNvZGFfb3Blbl9ieV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX2luIGNvZGFfc3RhdGZz
Owp9OwoKdW5pb24gb3V0cHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAg
c3RydWN0IGNvZGFfcm9vdF9vdXQgY29kYV9yb290OwogICAgc3RydWN0IGNvZGFfb3Blbl9vdXQg
Y29kYV9vcGVuOwogICAgc3RydWN0IGNvZGFfaW9jdGxfb3V0IGNvZGFfaW9jdGw7CiAgICBzdHJ1
Y3QgY29kYV9nZXRhdHRyX291dCBjb2RhX2dldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9sb29rdXBf
b3V0IGNvZGFfbG9va3VwOwogICAgc3RydWN0IGNvZGFfY3JlYXRlX291dCBjb2RhX2NyZWF0ZTsK
ICAgIHN0cnVjdCBjb2RhX21rZGlyX291dCBjb2RhX21rZGlyOwogICAgc3RydWN0IGNvZGFfcmVh
ZGxpbmtfb3V0IGNvZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV92Z2V0X291dCBjb2RhX3Zn
ZXQ7CiAgICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IGNvZGFfcHVyZ2V1c2VyOwogICAgc3Ry
dWN0IGNvZGFfemFwZmlsZV9vdXQgY29kYV96YXBmaWxlOwogICAgc3RydWN0IGNvZGFfemFwZGly
X291dCBjb2RhX3phcGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCBjb2RhX3phcHZu
b2RlOwogICAgc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IGNvZGFfcHVyZ2VmaWQ7CiAgICBzdHJ1
Y3QgY29kYV9yZXBsYWNlX291dCBjb2RhX3JlcGxhY2U7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5
X2ZkX291dCBjb2RhX29wZW5fYnlfZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0
IGNvZGFfb3Blbl9ieV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX291dCBjb2RhX3N0YXRm
czsKfTsKCnVuaW9uIGNvZGFfZG93bmNhbGxzIHsKCgogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2Vy
X291dCBwdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291dCB6YXBmaWxlOwogICAg
c3RydWN0IGNvZGFfemFwZGlyX291dCB6YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9v
dXQgemFwdm5vZGU7CiAgICBzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgcHVyZ2VmaWQ7CiAgICBz
dHJ1Y3QgY29kYV9yZXBsYWNlX291dCByZXBsYWNlOwp9OwoKCgoKCgoKc3RydWN0IFZpY2VJb2N0
bCB7CiAgICAgICAgY2FkZHJfdCBpbiwgb3V0OwogICAgICAgIHNob3J0IGluX3NpemU7CiAgICAg
ICAgc2hvcnQgb3V0X3NpemU7Cn07CgpzdHJ1Y3QgUGlvY3RsRGF0YSB7CiAgICAgICAgY29uc3Qg
Y2hhciAqcGF0aDsKICAgICAgICBpbnQgZm9sbG93OwogICAgICAgIHN0cnVjdCBWaWNlSW9jdGwg
dmk7Cn07CiMgNzk3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9j
b2RhLmgiCnN0cnVjdCBjb2RhX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAg
ICAgIGludCBmZDsKfTsKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvY29kYV9mc19pLmgiIDIKCgoKCnN0cnVjdCBjb2RhX2lub2RlX2luZm8gewogICAgICAg
IHN0cnVjdCBWaWNlRmlkIGNfZmlkOwogICAgICAgIHVfc2hvcnQgY19mbGFnczsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGNfY2lsaXN0OwogICAgICAgIHN0cnVjdCBmaWxlICpjX2NvbnRhaW5l
cjsKICAgICAgICB1bnNpZ25lZCBpbnQgY19jb250Y291bnQ7CiAgICAgICAgc3RydWN0IGNvZGFf
Y3JlZCBjX2NhY2hlZF9jcmVkOwogICAgICAgIHVuc2lnbmVkIGludCBjX2NhY2hlZF9wZXJtOwp9
OwoKCgoKCgoKaW50IGNvZGFfY25vZGVfbWFrZShzdHJ1Y3QgaW5vZGUgKiosIHN0cnVjdCBWaWNl
RmlkICosIHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKaW50IGNvZGFfY25vZGVfbWFrZWN0bChzdHJ1
Y3QgaW5vZGUgKippbm9kZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0cnVjdCBpbm9kZSAq
Y29kYV9maWRfdG9faW5vZGUoVmljZUZpZCAqZmlkLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsK
dm9pZCBjb2RhX3JlcGxhY2VfZmlkKHN0cnVjdCBpbm9kZSAqLCBWaWNlRmlkICosIFZpY2VGaWQg
Kik7CiMgMzAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcm9tZnNf
ZnNfaS5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVk
IGxvbmcgaV9tZXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZGF0YW9mZnNldDsKfTsK
IyAzMDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5o
IiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NobWVt
X2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHZhbDsKfSBzd3Bf
ZW50cnlfdDsKCmV4dGVybiBhdG9taWNfdCBzaG1lbV9ucnBhZ2VzOwoKc3RydWN0IHNobWVtX2lu
b2RlX2luZm8gewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlIHNlbTsKICAgICAgICB1bnNpZ25lZCBsb25nIG5leHRfaW5kZXg7CiAgICAgICAgc3dwX2Vu
dHJ5X3QgaV9kaXJlY3RbMTZdOwogICAgICAgIHZvaWQgKippX2luZGlyZWN0OwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAgICBpbnQgbG9ja2VkOwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgbGlzdDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwp9OwoKc3RydWN0IHNo
bWVtX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4X2Jsb2NrczsKICAgICAgICB1
bnNpZ25lZCBsb25nIGZyZWVfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4X2lub2Rl
czsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfaW5vZGVzOwogICAgICAgIHNwaW5sb2NrX3Qg
c3RhdF9sb2NrOwp9OwojIDMwMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3NtYl9mc19pLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvc21iX2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiIDIKCgoKCnN0cnVjdCBzbWJfaW5vZGVfaW5mbyB7CgoK
CgoKICAgICAgICB1bnNpZ25lZCBpbnQgb3BlbjsKICAgICAgICBfX3UxNiBmaWxlaWQ7CiAgICAg
ICAgX191MTYgYXR0cjsKCiAgICAgICAgX191MTYgYWNjZXNzOwogICAgICAgIF9fdTE2IGZsYWdz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBj
bG9zZWQ7CiAgICAgICAgdW5zaWduZWQgb3BlbmVyczsKfTsKIyAzMDQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9oZnNfZnNfaS5oIiAxCiMgMTkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2hmc19mc19pLmgiCnN0cnVjdCBoZnNfaW5v
ZGVfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwoKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9w
cml2YXRlOwogICAgICAgIHN0cnVjdCBoZnNfY2F0X2VudHJ5ICplbnRyeTsKCgogICAgICAgIHN0
cnVjdCBoZnNfZm9yayAqZm9yazsKICAgICAgICBpbnQgY29udmVydDsKCgogICAgICAgIGlub190
IGZpbGVfdHlwZTsKICAgICAgICBjaGFyIGRpcl9zaXplOwoKCiAgICAgICAgY29uc3Qgc3RydWN0
IGhmc19oZHJfbGF5b3V0ICpkZWZhdWx0X2xheW91dDsKICAgICAgICBzdHJ1Y3QgaGZzX2hkcl9s
YXlvdXQgKmxheW91dDsKCgogICAgICAgIGludCB0el9zZWNvbmRzd2VzdDsKCgogICAgICAgIHZv
aWQgKCpkX2Ryb3Bfb3ApKHN0cnVjdCBkZW50cnkgKiwgY29uc3QgaW5vX3QpOwp9OwojIDMwNSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2FkZnNfZnNfaS5oIiAxCiMg
MTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2FkZnNfZnNfaS5o
IgpzdHJ1Y3QgYWRmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2
YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X2lkOwogICAgICAgIF9fdTMyIGxvYWRh
ZGRyOwogICAgICAgIF9fdTMyIGV4ZWNhZGRyOwogICAgICAgIHVuc2lnbmVkIGludCBmaWxldHlw
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cjsKICAgICAgICBpbnQgc3RhbXBlZDoxOwp9Owoj
IDMwNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5o
IiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRf
ZnNfaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Fu
eHR5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcW54dHlwZXMuaCIKdHlwZWRlZiBfX3UxNiBxbng0X254dG50X3Q7CnR5cGVkZWYgX191OCBx
bng0X2Z0eXBlX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgX191MzIgeHRudF9ibGs7CiAg
ICAgICAgX191MzIgeHRudF9zaXplOwp9IHFueDRfeHRudF90OwoKdHlwZWRlZiBfX3UxNiBxbng0
X21vZGVfdDsKdHlwZWRlZiBfX3UxNiBxbng0X211aWRfdDsKdHlwZWRlZiBfX3UxNiBxbng0X21n
aWRfdDsKdHlwZWRlZiBfX3UzMiBxbng0X29mZl90Owp0eXBlZGVmIF9fdTE2IHFueDRfbmxpbmtf
dDsKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcW54NF9m
c19pLmgiIDIKCgoKCnN0cnVjdCBxbng0X2lub2RlX2luZm8gewogICAgICAgIGNoYXIgaV9yZXNl
cnZlZFsxNl07CiAgICAgICAgcW54NF9vZmZfdCBpX3NpemU7CiAgICAgICAgcW54NF94dG50X3Qg
aV9maXJzdF94dG50OwogICAgICAgIF9fdTMyIGlfeGJsazsKICAgICAgICBfX3MzMiBpX2Z0aW1l
OwogICAgICAgIF9fczMyIGlfbXRpbWU7CiAgICAgICAgX19zMzIgaV9hdGltZTsKICAgICAgICBf
X3MzMiBpX2N0aW1lOwogICAgICAgIHFueDRfbnh0bnRfdCBpX251bV94dG50czsKICAgICAgICBx
bng0X21vZGVfdCBpX21vZGU7CiAgICAgICAgcW54NF9tdWlkX3QgaV91aWQ7CiAgICAgICAgcW54
NF9tZ2lkX3QgaV9naWQ7CiAgICAgICAgcW54NF9ubGlua190IGlfbmxpbms7CiAgICAgICAgX191
OCBpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlwZV90IGlfdHlwZTsKICAgICAgICBfX3U4IGlf
c3RhdHVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7Cn07CiMgMzA3ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIiAxCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAx
CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNf
ZnNfaS5oIiAyCgpzdHJ1Y3QgcmVpc2VyZnNfaW5vZGVfaW5mbyB7CiAgX191MzIgaV9rZXkgWzRd
OwoKCgoKCgogIGludCBpX3ZlcnNpb247CgogIGludCBpX3BhY2tfb25fY2xvc2UgOwoKICBfX3Uz
MiBpX2ZpcnN0X2RpcmVjdF9ieXRlOwojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgv
aW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19pLmgiCiAgaW50IGlfcHJlYWxsb2NfYmxvY2s7CiAg
aW50IGlfcHJlYWxsb2NfY291bnQ7CiAgc3RydWN0IGxpc3RfaGVhZCBpX3ByZWFsbG9jX2xpc3Q7
CgoKCgogIGludCBub3BhY2s7CgoKCgogIHVuc2lnbmVkIGxvbmcgaV90cmFuc19pZCA7CiAgdW5z
aWduZWQgbG9uZyBpX3RyYW5zX2luZGV4IDsKfTsKIyAzMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2Jmc19mc19pLmgiCnN0cnVjdCBiZnNfaW5vZGVfaW5m
byB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Rza19pbm87CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBpX3NibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZWJsb2NrOwp9OwojIDMwOSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDEKIyAyNCAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdWRmX2ZzX2kuaCIKdHlw
ZWRlZiBzdHJ1Y3QKewogICAgICAgIF9fdTMyIGxvZ2ljYWxCbG9ja051bTsKICAgICAgICBfX3Ux
NiBwYXJ0aXRpb25SZWZlcmVuY2VOdW07Cn0gbGJfYWRkcjsKCgpzdHJ1Y3QgdWRmX2lub2RlX2lu
Zm8KewogICAgICAgIGxvbmcgaV91bXRpbWU7CiAgICAgICAgbG9uZyBpX3VjdGltZTsKICAgICAg
ICBsb25nIGlfY3J0aW1lOwogICAgICAgIGxvbmcgaV91Y3J0aW1lOwoKICAgICAgICBsYl9hZGRy
IGlfbG9jYXRpb247CiAgICAgICAgX191NjQgaV91bmlxdWU7CiAgICAgICAgX191MzIgaV9sZW5F
QXR0cjsKICAgICAgICBfX3UzMiBpX2xlbkFsbG9jOwogICAgICAgIF9fdTY0IGlfbGVuRXh0ZW50
czsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9uZXh0
X2FsbG9jX2dvYWw7CiAgICAgICAgdW5zaWduZWQgaV9hbGxvY190eXBlIDogMzsKICAgICAgICB1
bnNpZ25lZCBpX2V4dGVuZGVkX2ZlIDogMTsKICAgICAgICB1bnNpZ25lZCBpX3N0cmF0XzQwOTYg
OiAxOwogICAgICAgIHVuc2lnbmVkIGlfbmV3X2lub2RlIDogMTsKICAgICAgICB1bnNpZ25lZCBy
ZXNlcnZlZCA6IDI2Owp9OwojIDMxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L25jcF9mc19pLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbmNwX2ZzX2kuaCIKc3RydWN0IG5jcF9pbm9kZV9pbmZvIHsKICAgICAgICBf
X3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9z
RGlyTnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBud2F0dHI7CiAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSBvcGVuX3NlbTsKICAgICAgICBhdG9taWNfdCBvcGVuZWQ7CiAgICAgICAg
aW50IGFjY2VzczsKICAgICAgICBfX3UzMiBzZXJ2ZXJfZmlsZV9oYW5kbGUgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191OCBvcGVuX2NyZWF0ZV9hY3Rpb24gX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191OCBmaWxlX2hhbmRsZVs2XSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKfTsKIyAzMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9wcm9jX2ZzX2kuaCIgMQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnRhc2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgaW50ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0cnVjdCBk
ZW50cnkgKiosIHN0cnVjdCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9j
X3JlYWQpKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBv
cDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMTIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC91c2JkZXZfZnNfaS5oIiAxCnN0cnVjdCB1c2JfZGV2aWNl
OwpzdHJ1Y3QgdXNiX2J1czsKCnN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBkbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgdXNiX2J1cyAqYnVzOwogICAgICAgIH0gcDsKfTsKIyAzMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9qZmZzMl9mc19pLmgiIDEKIyAx
NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJfZnNfaS5o
IgpzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyB7CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl
IHNlbTsKCgogICAgICAgIF9fdTMyIGhpZ2hlc3RfdmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBq
ZmZzMl9ub2RlX2ZyYWcgKmZyYWdsaXN0OwoKCgoKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxs
X2Rub2RlICptZXRhZGF0YTsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVu
dHM7CgoKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlOwoKCgoKCiAg
ICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgX191OCB1c2VyY29tcHI7Cn07CiMgMzE0ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY3JhbWZzX2ZzX3NiLmgiIDEKCgoK
CgoKc3RydWN0IGNyYW1mc19zYl9pbmZvIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBtYWdpYzsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzaXpl
OwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJsb2NrczsKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmaWxlczsKICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKfTsKIyAzMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAzNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBpYXR0ciB7CiAgICAgICAgdW5zaWduZWQg
aW50IGlhX3ZhbGlkOwogICAgICAgIHVtb2RlX3QgaWFfbW9kZTsKICAgICAgICB1aWRfdCBpYV91
aWQ7CiAgICAgICAgZ2lkX3QgaWFfZ2lkOwogICAgICAgIGxvZmZfdCBpYV9zaXplOwogICAgICAg
IHRpbWVfdCBpYV9hdGltZTsKICAgICAgICB0aW1lX3QgaWFfbXRpbWU7CiAgICAgICAgdGltZV90
IGlhX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpYV9hdHRyX2ZsYWdzOwp9OwojIDM2NSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIiAxCiMgNDIgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZXJybm8uaCIgMQojIDQzICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCiMgMTA5
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIgpzdHJ1
Y3QgZHFibGsgewogICAgICAgIF9fdTMyIGRxYl9iaGFyZGxpbWl0OwogICAgICAgIF9fdTMyIGRx
Yl9ic29mdGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9jdXJibG9ja3M7CiAgICAgICAgX191MzIg
ZHFiX2loYXJkbGltaXQ7CiAgICAgICAgX191MzIgZHFiX2lzb2Z0bGltaXQ7CiAgICAgICAgX191
MzIgZHFiX2N1cmlub2RlczsKICAgICAgICB0aW1lX3QgZHFiX2J0aW1lOwogICAgICAgIHRpbWVf
dCBkcWJfaXRpbWU7Cn07CiMgMTM0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZHFzdGF0cyB7CiAgICAgICAgX191MzIgbG9va3VwczsK
ICAgICAgICBfX3UzMiBkcm9wczsKICAgICAgICBfX3UzMiByZWFkczsKICAgICAgICBfX3UzMiB3
cml0ZXM7CiAgICAgICAgX191MzIgY2FjaGVfaGl0czsKICAgICAgICBfX3UzMiBhbGxvY2F0ZWRf
ZHF1b3RzOwogICAgICAgIF9fdTMyIGZyZWVfZHF1b3RzOwogICAgICAgIF9fdTMyIHN5bmNzOwp9
OwoKCgpleHRlcm4gaW50IG5yX2RxdW90cywgbnJfZnJlZV9kcXVvdHM7CmV4dGVybiBpbnQgZHF1
b3Rfcm9vdF9zcXVhc2g7CiMgMTU4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZHF1b3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZHFfaGFzaDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ludXNlOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZHFfZnJlZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0X2xv
Y2s7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZHFfd2FpdF9mcmVlOwogICAgICAgIGludCBk
cV9jb3VudDsKCgogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7CiAgICAgICAgdW5z
aWduZWQgaW50IGRxX2lkOwogICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAgICAgc2hvcnQgZHFf
dHlwZTsKICAgICAgICBzaG9ydCBkcV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRxX3Jl
ZmVyZW5jZWQ7CgogICAgICAgIHN0cnVjdCBkcWJsayBkcV9kcWI7Cn07CiMgMzY2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQojIDM2NyAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCgoKc3RydWN0IHBh
Z2U7CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qga2lvYnVmOwoKc3RydWN0IGFkZHJlc3Nf
c3BhY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqd3JpdGVwYWdlKShzdHJ1Y3QgcGFnZSAq
KTsKICAgICAgICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7
CiAgICAgICAgaW50ICgqc3luY19wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKICAgICAgICBpbnQgKCpw
cmVwYXJlX3dyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwgdW5z
aWduZWQpOwogICAgICAgIGludCAoKmNvbW1pdF93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0
IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKCiAgICAgICAgaW50ICgqYm1hcCkoc3RydWN0
IGFkZHJlc3Nfc3BhY2UgKiwgbG9uZyk7CgogICAgICAgIGludCAoKmRpcmVjdF9JTykoaW50LCBz
dHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGtpb2J1ZiAqLCB1bnNpZ25lZCBsb25nLCBpbnQpOwp9OwoK
c3RydWN0IGFkZHJlc3Nfc3BhY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fcGFn
ZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eV9wYWdlczsKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIGxvY2tlZF9wYWdlczsKICAgICAgICB1bnNpZ25lZCBsb25nIG5ycGFnZXM7CiAg
ICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyAqYV9vcHM7CiAgICAgICAgc3Ry
dWN0IGlub2RlICpob3N0OwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9tbWFwOwog
ICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9tbWFwX3NoYXJlZDsKICAgICAgICBzcGlu
bG9ja190IGlfc2hhcmVkX2xvY2s7CiAgICAgICAgaW50IGdmcF9tYXNrOwp9OwoKc3RydWN0IGNo
YXJfZGV2aWNlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGhhc2g7CiAgICAgICAgYXRvbWlj
X3QgY291bnQ7CiAgICAgICAgZGV2X3QgZGV2OwogICAgICAgIGF0b21pY190IG9wZW5lcnM7CiAg
ICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07Cn07CgpzdHJ1Y3QgYmxvY2tfZGV2aWNlIHsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2hhc2g7CiAgICAgICAgYXRvbWljX3QgYmRfY291bnQ7
CiAgICAgICAgc3RydWN0IGlub2RlICogYmRfaW5vZGU7CiAgICAgICAgZGV2X3QgYmRfZGV2Owog
ICAgICAgIGludCBiZF9vcGVuZXJzOwogICAgICAgIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vf
b3BlcmF0aW9ucyAqYmRfb3A7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBiZF9zZW07CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBiZF9pbm9kZXM7Cn07CgpzdHJ1Y3QgaW5vZGUgewogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgaV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9saXN0
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZW50cnk7CgogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgaV9kaXJ0eV9idWZmZXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kaXJ0eV9k
YXRhX2J1ZmZlcnM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9pbm87CiAgICAgICAgYXRvbWlj
X3QgaV9jb3VudDsKICAgICAgICBrZGV2X3QgaV9kZXY7CiAgICAgICAgdW1vZGVfdCBpX21vZGU7
CiAgICAgICAgbmxpbmtfdCBpX25saW5rOwogICAgICAgIHVpZF90IGlfdWlkOwogICAgICAgIGdp
ZF90IGlfZ2lkOwogICAgICAgIGtkZXZfdCBpX3JkZXY7CiAgICAgICAgbG9mZl90IGlfc2l6ZTsK
ICAgICAgICB0aW1lX3QgaV9hdGltZTsKICAgICAgICB0aW1lX3QgaV9tdGltZTsKICAgICAgICB0
aW1lX3QgaV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9ibGtiaXRzOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgaV9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9ibG9ja3M7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBpX3ZlcnNpb247CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBp
X3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfem9tYmllOwogICAgICAgIHN0cnVjdCBp
bm9kZV9vcGVyYXRpb25zICppX29wOwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmlf
Zm9wOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqaV9zYjsKICAgICAgICB3YWl0X3F1ZXVl
X2hlYWRfdCBpX3dhaXQ7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqaV9mbG9jazsKICAgICAg
ICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqaV9tYXBwaW5nOwogICAgICAgIHN0cnVjdCBhZGRyZXNz
X3NwYWNlIGlfZGF0YTsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKmlfZHF1b3RbMl07CgogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgaV9kZXZpY2VzOwogICAgICAgIHN0cnVjdCBwaXBlX2lub2RlX2lu
Zm8gKmlfcGlwZTsKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICppX2JkZXY7CiAgICAgICAg
c3RydWN0IGNoYXJfZGV2aWNlICppX2NkZXY7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kbm90
aWZ5X21hc2s7CiAgICAgICAgc3RydWN0IGRub3RpZnlfc3RydWN0ICppX2Rub3RpZnk7CgogICAg
ICAgIHVuc2lnbmVkIGxvbmcgaV9zdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGlfZmxhZ3M7
CiAgICAgICAgdW5zaWduZWQgY2hhciBpX3NvY2s7CgogICAgICAgIGF0b21pY190IGlfd3JpdGVj
b3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9hdHRyX2ZsYWdzOwogICAgICAgIF9fdTMyIGlf
Z2VuZXJhdGlvbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhf
aW5vZGVfaW5mbyBtaW5peF9pOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfaW5vZGVfaW5m
byBleHQyX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaHBmc19pbm9kZV9pbmZvIGhwZnNfaTsK
ICAgICAgICAgICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gbnRmc19pOwogICAgICAgICAg
ICAgICAgc3RydWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0
cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB1bXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBp
c29faW5vZGVfaW5mbyBpc29mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IG5mc19pbm9kZV9p
bmZvIG5mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3ZfaW5vZGVfaW5mbyBzeXN2X2k7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWZmc19pbm9kZV9pbmZvIGFmZnNfaTsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB1ZnNfaW5vZGVfaW5mbyB1ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVj
dCBlZnNfaW5vZGVfaW5mbyBlZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCByb21mc19pbm9k
ZV9pbmZvIHJvbWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyBz
aG1lbV9pOwogICAgICAgICAgICAgICAgc3RydWN0IGNvZGFfaW5vZGVfaW5mbyBjb2RhX2k7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgc21iX2lub2RlX2luZm8gc21iZnNfaTsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBoZnNfaW5vZGVfaW5mbyBoZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBh
ZGZzX2lub2RlX2luZm8gYWRmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHFueDRfaW5vZGVf
aW5mbyBxbng0X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVpc2VyZnNfaW5vZGVfaW5mbyBy
ZWlzZXJmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGJmc19pbm9kZV9pbmZvIGJmc19pOwog
ICAgICAgICAgICAgICAgc3RydWN0IHVkZl9pbm9kZV9pbmZvIHVkZl9pOwogICAgICAgICAgICAg
ICAgc3RydWN0IG5jcF9pbm9kZV9pbmZvIG5jcGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
cHJvY19pbm9kZV9pbmZvIHByb2NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrZXQgc29j
a2V0X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiZGV2X2lub2RlX2luZm8gdXNiZGV2X2k7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyBqZmZzMl9pOwogICAgICAg
ICAgICAgICAgdm9pZCAqZ2VuZXJpY19pcDsKICAgICAgICB9IHU7Cn07CgpzdHJ1Y3QgZm93bl9z
dHJ1Y3QgewogICAgICAgIGludCBwaWQ7CiAgICAgICAgdWlkX3QgdWlkLCBldWlkOwogICAgICAg
IGludCBzaWdudW07Cn07CgpzdHJ1Y3QgZmlsZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBm
X2xpc3Q7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZl9kZW50cnk7CiAgICAgICAgc3RydWN0IHZm
c21vdW50ICpmX3Zmc21udDsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29wOwog
ICAgICAgIGF0b21pY190IGZfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGZfZmxhZ3M7CiAg
ICAgICAgbW9kZV90IGZfbW9kZTsKICAgICAgICBsb2ZmX3QgZl9wb3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmX3JlYWRhLCBmX3JhbWF4LCBmX3JhZW5kLCBmX3JhbGVuLCBmX3Jhd2luOwogICAg
ICAgIHN0cnVjdCBmb3duX3N0cnVjdCBmX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBmX3Vp
ZCwgZl9naWQ7CiAgICAgICAgaW50IGZfZXJyb3I7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZl92
ZXJzaW9uOwoKCiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwoKCiAgICAgICAgc3RydWN0IGtp
b2J1ZiAqZl9pb2J1ZjsKICAgICAgICBsb25nIGZfaW9idWZfbG9jazsKfTsKZXh0ZXJuIHNwaW5s
b2NrX3QgZmlsZXNfbG9jazsKCgoKCgoKZXh0ZXJuIGludCBpbml0X3ByaXZhdGVfZmlsZShzdHJ1
Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CiMgNTU2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgp0eXBlZGVmIHN0cnVjdCBmaWxlc19zdHJ1
Y3QgKmZsX293bmVyX3Q7CgpzdHJ1Y3QgZmlsZV9sb2NrIHsKICAgICAgICBzdHJ1Y3QgZmlsZV9s
b2NrICpmbF9uZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZmxfbGluazsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGZsX2Jsb2NrOwogICAgICAgIGZsX293bmVyX3QgZmxfb3duZXI7CiAg
ICAgICAgdW5zaWduZWQgaW50IGZsX3BpZDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBmbF93
YWl0OwogICAgICAgIHN0cnVjdCBmaWxlICpmbF9maWxlOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
ZmxfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbF90eXBlOwogICAgICAgIGxvZmZfdCBm
bF9zdGFydDsKICAgICAgICBsb2ZmX3QgZmxfZW5kOwoKICAgICAgICB2b2lkICgqZmxfbm90aWZ5
KShzdHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZvaWQgKCpmbF9pbnNlcnQpKHN0cnVjdCBm
aWxlX2xvY2sgKik7CiAgICAgICAgdm9pZCAoKmZsX3JlbW92ZSkoc3RydWN0IGZpbGVfbG9jayAq
KTsKCiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiBmbF9mYXN5bmM7CgogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfbG9ja19pbmZvIG5mc19mbDsKICAgICAg
ICB9IGZsX3U7Cn07CiMgNTg5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBmaWxlX2xvY2tfbGlzdDsKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZmNudGwuaCIgMQoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9mY250bC5oIiAxCiMg
NjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9mY250bC5oIgpzdHJ1
Y3QgZmxvY2sgewogICAgICAgIHNob3J0IGxfdHlwZTsKICAgICAgICBzaG9ydCBsX3doZW5jZTsK
ICAgICAgICBvZmZfdCBsX3N0YXJ0OwogICAgICAgIG9mZl90IGxfbGVuOwogICAgICAgIHBpZF90
IGxfcGlkOwp9OwoKc3RydWN0IGZsb2NrNjQgewogICAgICAgIHNob3J0IGxfdHlwZTsKICAgICAg
ICBzaG9ydCBsX3doZW5jZTsKICAgICAgICBsb2ZmX3QgbF9zdGFydDsKICAgICAgICBsb2ZmX3Qg
bF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvZmNudGwuaCIgMgojIDU5MiAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKZXh0ZXJuIGludCBmY250bF9nZXRsayh1
bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jayAqKTsKZXh0ZXJuIGludCBmY250bF9zZXRsayh1bnNp
Z25lZCBpbnQsIHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrICopOwoKZXh0ZXJuIGludCBmY250
bF9nZXRsazY0KHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrNjQgKik7CmV4dGVybiBpbnQgZmNu
dGxfc2V0bGs2NCh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrNjQgKik7
CgoKZXh0ZXJuIHZvaWQgbG9ja3NfaW5pdF9sb2NrKHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVy
biB2b2lkIGxvY2tzX2NvcHlfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xv
Y2sgKik7CmV4dGVybiB2b2lkIGxvY2tzX3JlbW92ZV9wb3NpeChzdHJ1Y3QgZmlsZSAqLCBmbF9v
d25lcl90KTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVtb3ZlX2Zsb2NrKHN0cnVjdCBmaWxlICopOwpl
eHRlcm4gc3RydWN0IGZpbGVfbG9jayAqcG9zaXhfdGVzdF9sb2NrKHN0cnVjdCBmaWxlICosIHN0
cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgcG9zaXhfbG9ja19maWxlKHN0cnVjdCBmaWxl
ICosIHN0cnVjdCBmaWxlX2xvY2sgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcG9zaXhf
YmxvY2tfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVy
biB2b2lkIHBvc2l4X3VuYmxvY2tfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50
IHBvc2l4X2xvY2tzX2RlYWRsb2NrKHN0cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVfbG9j
ayAqKTsKZXh0ZXJuIGludCBfX2dldF9sZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25l
ZCBpbnQgZmxhZ3MpOwpleHRlcm4gdGltZV90IGxlYXNlX2dldF9tdGltZShzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiBpbnQgbG9ja19tYXlfcmVhZChzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0
LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKZXh0ZXJuIGludCBsb2NrX21heV93cml0ZShzdHJ1Y3Qg
aW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKCnN0cnVjdCBmYXN5
bmNfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgaW50IGZhX2ZkOwogICAgICAg
IHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYV9uZXh0OwogICAgICAgIHN0cnVjdCBmaWxlICpmYV9m
aWxlOwp9OwoKCgoKZXh0ZXJuIGludCBmYXN5bmNfaGVscGVyKGludCwgc3RydWN0IGZpbGUgKiwg
aW50LCBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKik7CgpleHRlcm4gdm9pZCBraWxsX2Zhc3luYyhz
dHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKiwgaW50LCBpbnQpOwoKZXh0ZXJuIHZvaWQgX19raWxsX2Zh
c3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqLCBpbnQsIGludCk7CgpzdHJ1Y3QgbmFtZWlkYXRh
IHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAgICAgICAgc3RydWN0IHZmc21vdW50
ICptbnQ7CiAgICAgICAgc3RydWN0IHFzdHIgbGFzdDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxh
Z3M7CiAgICAgICAgaW50IGxhc3RfdHlwZTsKfTsKCgoKCnN0cnVjdCBxdW90YV9tb3VudF9vcHRp
b25zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgc3RydWN0IHNlbWFwaG9y
ZSBkcWlvX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRxb2ZmX3NlbTsKICAgICAgICBz
dHJ1Y3QgZmlsZSAqZmlsZXNbMl07CiAgICAgICAgdGltZV90IGlub2RlX2V4cGlyZVsyXTsKICAg
ICAgICB0aW1lX3QgYmxvY2tfZXhwaXJlWzJdOwogICAgICAgIGNoYXIgcnNxdWFzaFsyXTsKfTsK
IyA2NTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbWluaXhfZnNfc2Iu
aCIgMQoKCgoKCgpzdHJ1Y3QgbWluaXhfc2JfaW5mbyB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgc19uaW5vZGVzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfbnpvbmVzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNf
aW1hcF9ibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc196bWFw
X2Jsb2NrczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZpcnN0ZGF0
YXpvbmU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19sb2dfem9uZV9z
aXplOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4X3NpemU7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBzX2RpcnNpemU7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzX25hbWVsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBzX2xpbmtfbWF4
OwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19pbWFwOwog
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc196bWFwOwogICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IG1pbml4X3N1cGVyX2Jsb2NrICogc19tczsKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc192ZXJzaW9uOwp9OwojIDY2MCAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2V4dDJfZnNfc2IuaCIgMQojIDMwICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9leHQyX2ZzX3NiLmgiCnN0cnVj
dCBleHQyX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnX3NpemU7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNfaW5vZGVzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2dy
b3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja3NfcGVyX2dyb3VwOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc19pbm9kZXNfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19p
dGJfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19nZGJfY291bnQ7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzX2Rlc2NfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19n
cm91cHNfY291bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAg
c3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKiBzX2VzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVh
ZCAqKiBzX2dyb3VwX2Rlc2M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfaW5vZGVf
Yml0bWFwczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2xvYWRlZF9ibG9ja19iaXRtYXBzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19pbm9kZV9iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqIHNfaW5vZGVfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc19ibG9ja19iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
IHNfYmxvY2tfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CiAg
ICAgICAgdWlkX3Qgc19yZXN1aWQ7CiAgICAgICAgZ2lkX3Qgc19yZXNnaWQ7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX3BhZDsK
ICAgICAgICBpbnQgc19hZGRyX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2Rlc2NfcGVy
X2Jsb2NrX2JpdHM7CiAgICAgICAgaW50IHNfaW5vZGVfc2l6ZTsKICAgICAgICBpbnQgc19maXJz
dF9pbm87Cn07CiMgNjYxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
aHBmc19mc19zYi5oIiAxCgoKCnN0cnVjdCBocGZzX3NiX2luZm8gewogICAgICAgIGlub190IHNi
X3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgc2JfZnNfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzYl9i
aXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNiX2RpcmJhbmRfc3RhcnQ7CiAgICAgICAgdW5zaWdu
ZWQgc2JfZGlyYmFuZF9zaXplOwogICAgICAgIHVuc2lnbmVkIHNiX2RtYXA7CiAgICAgICAgdW5z
aWduZWQgc2Jfbl9mcmVlOwogICAgICAgIHVuc2lnbmVkIHNiX25fZnJlZV9kbm9kZXM7CiAgICAg
ICAgdWlkX3Qgc2JfdWlkOwogICAgICAgIGdpZF90IHNiX2dpZDsKICAgICAgICB1bW9kZV90IHNi
X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2JfY29udiA6IDI7CiAgICAgICAgdW5zaWduZWQgc2Jf
ZWFzIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9lcnIgOiAyOwogICAgICAgIHVuc2lnbmVkIHNi
X2NoayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfbG93ZXJjYXNlIDogMTsKICAgICAgICB1bnNp
Z25lZCBzYl93YXNfZXJyb3IgOiAxOwogICAgICAgIHVuc2lnbmVkIHNiX2Noa2RzayA6IDI7CiAg
ICAgICAgdW5zaWduZWQgc2JfcmRfZm5vZGUgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX3JkX2lu
b2RlIDogMjsKCgogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHNiX2lnZXRfcTsKICAgICAgICB1
bnNpZ25lZCBjaGFyICpzYl9jcF90YWJsZTsKCgogICAgICAgIHVuc2lnbmVkICpzYl9ibXBfZGly
OwogICAgICAgIHVuc2lnbmVkIHNiX2NfYml0bWFwOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90
IHNiX2NyZWF0aW9uX2RlOwoKICAgICAgICB1bnNpZ25lZCBzYl9jcmVhdGlvbl9kZV9sb2NrIDog
MTsKCiAgICAgICAgaW50IHNiX3RpbWVzaGlmdDsKfTsKIyA2NjIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9udGZzX2ZzX2kuaCIgMQojIDUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfc2IuaCIgMgoKc3Ry
dWN0IG50ZnNfc2JfaW5mb3sKCiAgICAgICAgbnRmc191aWRfdCB1aWQ7CiAgICAgICAgbnRmc19n
aWRfdCBnaWQ7CiAgICAgICAgbnRtb2RlX3QgdW1hc2s7CiAgICAgICAgdm9pZCAqbmxzX21hcDsK
ICAgICAgICB1bnNpZ25lZCBpbnQgbmd0OwogICAgICAgIGNoYXIgbWZ0X3pvbmVfbXVsdGlwbGll
cjsKICAgICAgICB1bnNpZ25lZCBsb25nIG1mdF9kYXRhX3BvczsKICAgICAgICBudGZzX2NsdXN0
ZXJfdCBtZnRfem9uZV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVfc3RhcnQ7
CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVfZW5kOwogICAgICAgIG50ZnNfY2x1c3Rl
cl90IGRhdGExX3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IGRhdGEyX3pvbmVfcG9z
OwoKCiAgICAgICAgbnRmc19zaXplX3QgcGFydGl0aW9uX2JpYXM7CgogICAgICAgIG50ZnNfdTMy
IGF0X3N0YW5kYXJkX2luZm9ybWF0aW9uOwogICAgICAgIG50ZnNfdTMyIGF0X2F0dHJpYnV0ZV9s
aXN0OwogICAgICAgIG50ZnNfdTMyIGF0X2ZpbGVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92
b2x1bWVfdmVyc2lvbjsKICAgICAgICBudGZzX3UzMiBhdF9zZWN1cml0eV9kZXNjcmlwdG9yOwog
ICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9uYW1lOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVt
ZV9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9kYXRhOwogICAgICAgIG50ZnNfdTMy
IGF0X2luZGV4X3Jvb3Q7CiAgICAgICAgbnRmc191MzIgYXRfaW5kZXhfYWxsb2NhdGlvbjsKICAg
ICAgICBudGZzX3UzMiBhdF9iaXRtYXA7CiAgICAgICAgbnRmc191MzIgYXRfc3ltbGluazsKCiAg
ICAgICAgaW50IHNlY3Rvcl9zaXplOwogICAgICAgIGludCBjbHVzdGVyX3NpemU7CiAgICAgICAg
aW50IGNsdXN0ZXJfc2l6ZV9iaXRzOwogICAgICAgIGludCBtZnRfY2x1c3RlcnNfcGVyX3JlY29y
ZDsKICAgICAgICBpbnQgbWZ0X3JlY29yZF9zaXplOwogICAgICAgIGludCBtZnRfcmVjb3JkX3Np
emVfYml0czsKICAgICAgICBpbnQgaW5kZXhfY2x1c3RlcnNfcGVyX3JlY29yZDsKICAgICAgICBp
bnQgaW5kZXhfcmVjb3JkX3NpemU7CiAgICAgICAgaW50IGluZGV4X3JlY29yZF9zaXplX2JpdHM7
CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbnJfY2x1c3RlcnM7CiAgICAgICAgbnRmc19jbHVzdGVy
X3QgbWZ0X2xjbjsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfbWlycl9sY247CgogICAgICAg
IHVuc2lnbmVkIGNoYXIgKm1mdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqdXBjYXNlOwogICAg
ICAgIHVuc2lnbmVkIGludCB1cGNhc2VfbGVuZ3RoOwoKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9k
ZV9pbmZvICptZnRfaW5vOwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKm1mdG1pcnI7
CiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqYml0bWFwOwogICAgICAgIHN0cnVjdCBz
dXBlcl9ibG9jayAqc2I7CiAgICAgICAgdW5zaWduZWQgY2hhciBpbm9fZmxhZ3M7Cn07CiMgNjYz
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbXNkb3NfZnNfc2IuaCIg
MQoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZmF0X2N2
Zi5oIiAxCgoKCgoKc3RydWN0IGN2Zl9mb3JtYXQKeyBpbnQgY3ZmX3ZlcnNpb247CiAgY2hhciog
Y3ZmX3ZlcnNpb25fdGV4dDsKICB1bnNpZ25lZCBsb25nIGZsYWdzOwogIGludCAoKmRldGVjdF9j
dmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwogIGludCAoKm1vdW50X2N2ZikgKHN0cnVjdCBz
dXBlcl9ibG9jaypzYixjaGFyKm9wdGlvbnMpOwogIGludCAoKnVubW91bnRfY3ZmKSAoc3RydWN0
IHN1cGVyX2Jsb2NrKnNiKTsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQqICgqY3ZmX2JyZWFkKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2
Zl9nZXRibGspIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsaW50IGJsb2NrKTsKICB2b2lkICgqY3Zm
X2JyZWxzZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Isc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7
CiAgdm9pZCAoKmN2Zl9tYXJrX2J1ZmZlcl9kaXJ0eSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwog
IHZvaWQgKCpjdmZfc2V0X3VwdG9kYXRlKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgdmFsKTsKICBpbnQgKCpjdmZfaXNfdXB0b2RhdGUpIChzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfbGxfcndf
YmxvY2spIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICBp
bnQgb3ByLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmJyZXEsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmhbMzJdKTsKICBpbnQgKCpmYXRfYWNjZXNz
KSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixpbnQgbnIsaW50IG5ld192YWx1ZSk7CiAgaW50ICgq
Y3ZmX3N0YXRmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Isc3RydWN0IHN0YXRmcyAqYnVmLCBp
bnQgYnVmc2l6KTsKICBpbnQgKCpjdmZfYm1hcCkgKHN0cnVjdCBpbm9kZSAqaW5vZGUsaW50IGJs
b2NrKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfcmVhZCkgKCBzdHJ1Y3QgZmlsZSAqLCBjaGFyICos
IHNpemVfdCwgbG9mZl90ICopOwogIHNzaXplX3QgKCpjdmZfZmlsZV93cml0ZSkgKCBzdHJ1Y3Qg
ZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogIGludCAoKmN2Zl9tbWFw
KSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwogIGludCAoKmN2Zl9y
ZWFkcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICBpbnQgKCpjdmZfd3Jp
dGVwYWdlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBwYWdlICopOwogIGludCAoKmN2Zl9kaXJf
aW9jdGwpIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwLAogICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiAg
dm9pZCAoKnplcm9fb3V0X2NsdXN0ZXIpIChzdHJ1Y3QgaW5vZGUqLCBpbnQgY2x1c3Rlcm5yKTsK
fTsKCmludCByZWdpc3Rlcl9jdmZfZm9ybWF0KHN0cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQp
OwppbnQgdW5yZWdpc3Rlcl9jdmZfZm9ybWF0KHN0cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQp
Owp2b2lkIGRlY19jdmZfZm9ybWF0X3VzZV9jb3VudF9ieV92ZXJzaW9uKGludCB2ZXJzaW9uKTsK
aW50IGRldGVjdF9jdmYoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGNoYXIqZm9yY2UpOwoKZXh0ZXJu
IHN0cnVjdCBjdmZfZm9ybWF0ICpjdmZfZm9ybWF0c1tdOwpleHRlcm4gaW50IGN2Zl9mb3JtYXRf
dXNlX2NvdW50W107CiMgNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbXNkb3NfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBmYXRfbW91bnRfb3B0aW9ucyB7CiAgICAg
ICAgdWlkX3QgZnNfdWlkOwogICAgICAgIGdpZF90IGZzX2dpZDsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBmc191bWFzazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb2RlcGFnZTsKICAgICAgICBj
aGFyICppb2NoYXJzZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2hvcnRuYW1lOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgbmFtZV9jaGVjazsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbnZlcnNp
b247CiAgICAgICAgdW5zaWduZWQgcXVpZXQ6MSwKICAgICAgICAgICAgICAgICBzaG93ZXhlYzox
LAogICAgICAgICAgICAgICAgIHN5c19pbW11dGFibGU6MSwKICAgICAgICAgICAgICAgICBkb3Rz
T0s6MSwKICAgICAgICAgICAgICAgICBpc3ZmYXQ6MSwKICAgICAgICAgICAgICAgICB1dGY4OjEs
CiAgICAgICAgICAgICAgICAgdW5pY29kZV94bGF0ZToxLAogICAgICAgICAgICAgICAgIHBvc2l4
ZnM6MSwKICAgICAgICAgICAgICAgICBudW10YWlsOjEsCiAgICAgICAgICAgICAgICAgYXRhcmk6
MSwKICAgICAgICAgICAgICAgICBmYXQzMjoxLAogICAgICAgICAgICAgICAgIG5vY2FzZToxOwp9
OwoKc3RydWN0IG1zZG9zX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIHNob3J0IGNsdXN0ZXJf
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjbHVzdGVyX2JpdHM7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBmYXRzLGZhdF9iaXRzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZhdF9zdGFydDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZhdF9sZW5ndGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk
aXJfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGlyX2VudHJpZXM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBkYXRhX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2x1c3RlcnM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyByb290X2NsdXN0ZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBm
c2luZm9fc2VjdG9yOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgZmF0X2xvY2s7CiAgICAgICAg
aW50IHByZXZfZnJlZTsKICAgICAgICBpbnQgZnJlZV9jbHVzdGVyczsKICAgICAgICBzdHJ1Y3Qg
ZmF0X21vdW50X29wdGlvbnMgb3B0aW9uczsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNf
ZGlzazsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CiAgICAgICAgc3RydWN0IGN2
Zl9mb3JtYXQqIGN2Zl9mb3JtYXQ7CiAgICAgICAgdm9pZCAqZGlyX29wczsKICAgICAgICB2b2lk
ICpwcml2YXRlX2RhdGE7CiAgICAgICAgaW50IGRpcl9wZXJfYmxvY2s7CiAgICAgICAgaW50IGRp
cl9wZXJfYmxvY2tfYml0czsKfTsKIyA2NjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC9pc29fZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3QgaXNvZnNfc2JfaW5mbyB7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX25pbm9kZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX256
b25lczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4X3Np
emU7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgc19oaWdoX3NpZXJyYTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHNfbWFwcGluZzsKICAgICAgICBpbnQgc19yb2NrX29mZnNldDsKICAgICAgICB1bnNp
Z25lZCBjaGFyIHNfcm9jazsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfam9saWV0X2xldmVsOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgc191dGY4OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19jcnVm
dDsKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgc191bmhpZGU7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBzX25vc3VpZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfbm9kZXY7CiAgICAgICAgbW9kZV90
IHNfbW9kZTsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAg
ICBzdHJ1Y3QgbmxzX3RhYmxlICpzX25sc19pb2NoYXJzZXQ7Cn07CiMgNjY1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzX2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0
IG5mc19zZXJ2ZXIgewogICAgICAgIHN0cnVjdCBycGNfY2xudCAqIGNsaWVudDsKICAgICAgICBz
dHJ1Y3QgbmZzX3JwY19vcHMgKiBycGNfb3BzOwogICAgICAgIGludCBmbGFnczsKICAgICAgICB1
bnNpZ25lZCBpbnQgcnNpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHJwYWdlczsKICAgICAgICB1
bnNpZ25lZCBpbnQgd3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHdwYWdlczsKICAgICAgICB1
bnNpZ25lZCBpbnQgZHRzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBic2l6ZTsKICAgICAgICB1
bnNpZ25lZCBpbnQgYWNyZWdtaW47CiAgICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWF4OwogICAg
ICAgIHVuc2lnbmVkIGludCBhY2Rpcm1pbjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtYXg7
CiAgICAgICAgdW5zaWduZWQgaW50IG5hbWVsZW47CiAgICAgICAgY2hhciAqIGhvc3RuYW1lOwog
ICAgICAgIHN0cnVjdCBuZnNfcmVxbGlzdCAqIHJ3X3JlcXVlc3RzOwp9OwoKCgoKc3RydWN0IG5m
c19zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbmZzX3NlcnZlciBzX3NlcnZlcjsKfTsKIyA2NjYg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zeXN2X2ZzX3NiLmgiIDEK
IyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3lzdl9mc19z
Yi5oIgpzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHsKICAgICAgICBpbnQgc190eXBlOwogICAgICAgIGNo
YXIgc19ieXRlc2V4OwogICAgICAgIGNoYXIgc19rbHVkZ2Vfc3ltbGlua3M7CiAgICAgICAgY2hh
ciBzX3RydW5jYXRlOwoKICAgICAgICBubGlua190IHNfbGlua19tYXg7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNf
cGVyX2Jsb2NrXzE7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9ja19iaXRz
OwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQg
aW50IHNfaW5kX3Blcl9ibG9ja19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9wZXJf
YmxvY2tfMjsKICAgICAgICB1bnNpZ25lZCBpbnQgc190b29iaWdfYmxvY2s7CiAgICAgICAgdW5z
aWduZWQgaW50IHNfYmxvY2tfYmFzZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2ZpY19zaXpl
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfZmxjX3NpemU7CgogICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqc19iaDE7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2JoMjsKCgogICAg
ICAgIGNoYXIgKiBzX3NiZDE7CiAgICAgICAgY2hhciAqIHNfc2JkMjsKICAgICAgICB1MTYgKnNf
c2JfZmljX2NvdW50OwogICAgICAgIHUxNiAqc19zYl9maWNfaW5vZGVzOwogICAgICAgIHUxNiAq
c19zYl90b3RhbF9mcmVlX2lub2RlczsKICAgICAgICB1MTYgKnNfYmNhY2hlX2NvdW50OwogICAg
ICAgIHUzMiAqc19iY2FjaGU7CiAgICAgICAgdTMyICpzX2ZyZWVfYmxvY2tzOwogICAgICAgIHUz
MiAqc19zYl90aW1lOwogICAgICAgIHUzMiAqc19zYl9zdGF0ZTsKCgogICAgICAgIHUzMiBzX2Zp
cnN0aW5vZGV6b25lOwogICAgICAgIHUzMiBzX2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgdTMyIHNf
bmlub2RlczsKICAgICAgICB1MzIgc19uZGF0YXpvbmVzOwogICAgICAgIHUzMiBzX256b25lczsK
ICAgICAgICB1MTYgc19uYW1lbGVuOwp9OwojIDY2NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX3NiLmgiCnN0cnVjdCBhZmZzX2JtX2luZm8g
ewogICAgICAgIHUzMiBibV9rZXk7CiAgICAgICAgdTMyIGJtX2ZyZWU7Cn07CgpzdHJ1Y3QgYWZm
c19zYl9pbmZvIHsKICAgICAgICBpbnQgc19wYXJ0aXRpb25fc2l6ZTsKICAgICAgICBpbnQgc19y
ZXNlcnZlZDsKCiAgICAgICAgdTMyIHNfZGF0YV9ibGtzaXplOwogICAgICAgIHUzMiBzX3Jvb3Rf
YmxvY2s7CiAgICAgICAgaW50IHNfaGFzaHNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Zs
YWdzOwogICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVt
b2RlX3Qgc19tb2RlOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19yb290X2JoOwogICAg
ICAgIHN0cnVjdCBzZW1hcGhvcmUgc19ibWxvY2s7CiAgICAgICAgc3RydWN0IGFmZnNfYm1faW5m
byAqc19iaXRtYXA7CiAgICAgICAgdTMyIHNfYm1hcF9jb3VudDsKICAgICAgICB1MzIgc19ibWFw
X2JpdHM7CiAgICAgICAgdTMyIHNfbGFzdF9ibWFwOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVh
ZCAqc19ibWFwX2JoOwogICAgICAgIGNoYXIgKnNfcHJlZml4OwogICAgICAgIGludCBzX3ByZWZp
eF9sZW47CiAgICAgICAgY2hhciBzX3ZvbHVtZVszMl07Cn07CiMgNjY4ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDEKIyAxNyAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDEKIyAzMCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDMxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMg
MzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZS5oIiAx
CiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3RhdC5o
IiAxCiMgMzQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19m
cy5oIiAyCiMgMjQ4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC91
ZnNfZnMuaCIKc3RydWN0IHVmc190aW1ldmFsIHsKICAgICAgICBfX3MzMiB0dl9zZWM7CiAgICAg
ICAgX19zMzIgdHZfdXNlYzsKfTsKCnN0cnVjdCB1ZnNfZGlyX2VudHJ5IHsKICAgICAgICBfX3Uz
MiBkX2lubzsKICAgICAgICBfX3UxNiBkX3JlY2xlbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICAgICBfX3UxNiBkX25hbWxlbjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdTggZF90eXBlOwogICAgICAgICAgICAgICAgICAgICAgICBfX3U4
IGRfbmFtbGVuOwogICAgICAgICAgICAgICAgfSBkXzQ0OwogICAgICAgIH0gZF91OwogICAgICAg
IF9fdTggZF9uYW1lWzI1NSArIDFdOwp9OwoKc3RydWN0IHVmc19jc3VtIHsKICAgICAgICBfX3Uz
MiBjc19uZGlyOwogICAgICAgIF9fdTMyIGNzX25iZnJlZTsKICAgICAgICBfX3UzMiBjc19uaWZy
ZWU7CiAgICAgICAgX191MzIgY3NfbmZmcmVlOwp9OwoKCgoKc3RydWN0IHVmc19zdXBlcl9ibG9j
ayB7CiAgICAgICAgX191MzIgZnNfbGluazsKICAgICAgICBfX3UzMiBmc19ybGluazsKICAgICAg
ICBfX3UzMiBmc19zYmxrbm87CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwogICAgICAgIF9fdTMy
IGZzX2libGtubzsKICAgICAgICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAgX191MzIgZnNfY2dv
ZmZzZXQ7CiAgICAgICAgX191MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMyIGZzX3RpbWU7CiAg
ICAgICAgX191MzIgZnNfc2l6ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsKICAgICAgICBfX3Uz
MiBmc19uY2c7CiAgICAgICAgX191MzIgZnNfYnNpemU7CiAgICAgICAgX191MzIgZnNfZnNpemU7
CiAgICAgICAgX191MzIgZnNfZnJhZzsKCiAgICAgICAgX191MzIgZnNfbWluZnJlZTsKICAgICAg
ICBfX3UzMiBmc19yb3RkZWxheTsKICAgICAgICBfX3UzMiBmc19ycHM7CgogICAgICAgIF9fdTMy
IGZzX2JtYXNrOwogICAgICAgIF9fdTMyIGZzX2ZtYXNrOwogICAgICAgIF9fdTMyIGZzX2JzaGlm
dDsKICAgICAgICBfX3UzMiBmc19mc2hpZnQ7CgogICAgICAgIF9fdTMyIGZzX21heGNvbnRpZzsK
ICAgICAgICBfX3UzMiBmc19tYXhicGc7CgogICAgICAgIF9fdTMyIGZzX2ZyYWdzaGlmdDsKICAg
ICAgICBfX3UzMiBmc19mc2J0b2RiOwogICAgICAgIF9fdTMyIGZzX3Nic2l6ZTsKICAgICAgICBf
X3UzMiBmc19jc21hc2s7CiAgICAgICAgX191MzIgZnNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBm
c19uaW5kaXI7CiAgICAgICAgX191MzIgZnNfaW5vcGI7CiAgICAgICAgX191MzIgZnNfbnNwZjsK
CiAgICAgICAgX191MzIgZnNfb3B0aW07CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAg
ICAgICAgICAgIH0gZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsK
ICAgICAgICB9IGZzX3UxOwogICAgICAgIF9fdTMyIGZzX2ludGVybGVhdmU7CiAgICAgICAgX191
MzIgZnNfdHJhY2tza2V3OwoKCgoKICAgICAgICBfX3UzMiBmc19pZFsyXTsKCiAgICAgICAgX191
MzIgZnNfY3NhZGRyOwogICAgICAgIF9fdTMyIGZzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBmc19j
Z3NpemU7CgogICAgICAgIF9fdTMyIGZzX250cmFrOwogICAgICAgIF9fdTMyIGZzX25zZWN0Owog
ICAgICAgIF9fdTMyIGZzX3NwYzsKCiAgICAgICAgX191MzIgZnNfbmN5bDsKCiAgICAgICAgX191
MzIgZnNfY3BnOwogICAgICAgIF9fdTMyIGZzX2lwZzsKICAgICAgICBfX3UzMiBmc19mcGc7Cgog
ICAgICAgIHN0cnVjdCB1ZnNfY3N1bSBmc19jc3RvdGFsOwoKICAgICAgICBfX3M4IGZzX2Ztb2Q7
CiAgICAgICAgX19zOCBmc19jbGVhbjsKICAgICAgICBfX3M4IGZzX3Jvbmx5OwogICAgICAgIF9f
czggZnNfZmxhZ3M7CiAgICAgICAgX19zOCBmc19mc21udFs1MTJdOwoKICAgICAgICBfX3UzMiBm
c19jZ3JvdG9yOwogICAgICAgIF9fdTMyIGZzX2NzcFszMV07CiAgICAgICAgX191MzIgZnNfbWF4
Y2x1c3RlcjsKICAgICAgICBfX3UzMiBmc19jcGM7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFsx
Nl1bOF07CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19z
cGFyZWNvbjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VuOwogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3Bh
cmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNsYWltOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
ZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07
CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUwXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgX19zMzIgZnNfY29udGlnc3Vtc2l6ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfbWF4c3ltbGlua2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIg
ZnNfaW5vZGVmbXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX21heGZpbGVzaXpl
WzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzXzQ0OwogICAgICAgIH0gZnNf
dTI7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMyIGZzX25ycG9z
OwogICAgICAgIF9fczMyIGZzX3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBmc19yb3RibG9mZjsK
ICAgICAgICBfX3MzMiBmc19tYWdpYzsKICAgICAgICBfX3U4IGZzX3NwYWNlWzFdOwp9OwojIDQy
NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiCnN0
cnVjdCB1ZnNfY3lsaW5kZXJfZ3JvdXAgewogICAgICAgIF9fdTMyIGNnX2xpbms7CiAgICAgICAg
X191MzIgY2dfbWFnaWM7CiAgICAgICAgX191MzIgY2dfdGltZTsKICAgICAgICBfX3UzMiBjZ19j
Z3g7CiAgICAgICAgX191MTYgY2dfbmN5bDsKICAgICAgICBfX3UxNiBjZ19uaWJsazsKICAgICAg
ICBfX3UzMiBjZ19uZGJsazsKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gY2dfY3M7CiAgICAgICAg
X191MzIgY2dfcm90b3I7CiAgICAgICAgX191MzIgY2dfZnJvdG9yOwogICAgICAgIF9fdTMyIGNn
X2lyb3RvcjsKICAgICAgICBfX3UzMiBjZ19mcnN1bVsoODE5MiAvIDEwMjQpXTsKICAgICAgICBf
X3UzMiBjZ19idG90b2ZmOwogICAgICAgIF9fdTMyIGNnX2JvZmY7CiAgICAgICAgX191MzIgY2df
aXVzZWRvZmY7CiAgICAgICAgX191MzIgY2dfZnJlZW9mZjsKICAgICAgICBfX3UzMiBjZ19uZXh0
ZnJlZW9mZjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiBjZ19jbHVzdGVyc3Vtb2ZmOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3UzMiBjZ19jbHVzdGVyb2ZmOwogICAgICAgICAgICAgICAgICAgICAgICBfX3Uz
MiBjZ19uY2x1c3RlcmJsa3M7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX3NwYXJl
Y29uWzEzXTsKICAgICAgICAgICAgICAgIH0gY2dfNDQ7CiAgICAgICAgICAgICAgICBfX3UzMiBj
Z19zcGFyZWNvblsxNl07CiAgICAgICAgfSBjZ191OwogICAgICAgIF9fdTggY2dfc3BhY2VbMV07
Cgp9OwoKCgoKc3RydWN0IHVmc19pbm9kZSB7CiAgICAgICAgX191MTYgdWlfbW9kZTsKICAgICAg
ICBfX3UxNiB1aV9ubGluazsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9zdWlkOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3UxNiB1aV9zZ2lkOwogICAgICAgICAgICAgICAgfSBvbGRpZHM7CiAgICAgICAg
ICAgICAgICBfX3UzMiB1aV9pbnVtYmVyOwogICAgICAgICAgICAgICAgX191MzIgdWlfYXV0aG9y
OwogICAgICAgIH0gdWlfdTE7CiAgICAgICAgX191NjQgdWlfc2l6ZTsKICAgICAgICBzdHJ1Y3Qg
dWZzX3RpbWV2YWwgdWlfYXRpbWU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX210aW1l
OwogICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9jdGltZTsKICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9k
YlsxMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2liWzNdOwogICAgICAgICAg
ICAgICAgfSB1aV9hZGRyOwogICAgICAgICAgICAgICAgX191OCB1aV9zeW1saW5rWzQqKDEyICsz
KV07CiAgICAgICAgfSB1aV91MjsKICAgICAgICBfX3UzMiB1aV9mbGFnczsKICAgICAgICBfX3Uz
MiB1aV9ibG9ja3M7CiAgICAgICAgX191MzIgdWlfZ2VuOwogICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3NoYWRv
dzsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX29l
ZnRmbGFnOwogICAgICAgICAgICAgICAgfSB1aV9zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV91aWQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdTMyIHVpX2dpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgdWlfc3Bh
cmVbMl07CiAgICAgICAgICAgICAgICB9IHVpXzQ0OwogICAgICAgICAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX21vZGVo
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9zcGFyZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgdWlfdHJhbnM7CiAgICAgICAgICAgICAgICB9IHVpX2h1cmQ7CiAgICAg
ICAgfSB1aV91MzsKfTsKIyA1MjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3Vmc19mcy5oIgpleHRlcm4gdm9pZCB1ZnNfZnJlZV9mcmFnbWVudHMgKHN0cnVjdCBp
bm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwpleHRlcm4gdm9pZCB1ZnNfZnJlZV9ibG9ja3Mg
KHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwpleHRlcm4gdW5zaWduZWQgdWZz
X25ld19mcmFnbWVudHMgKHN0cnVjdCBpbm9kZSAqLCB1MzIgKiwgdW5zaWduZWQsIHVuc2lnbmVk
LCB1bnNpZ25lZCwgaW50ICopOwoKCmV4dGVybiBzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAq
IHVmc19sb2FkX2N5bGluZGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQpOwpleHRl
cm4gdm9pZCB1ZnNfcHV0X2N5bGluZGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQp
OwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZGlyX2lub2RlX29wZXJhdGlv
bnM7CmV4dGVybiBpbnQgdWZzX2NoZWNrX2Rpcl9lbnRyeSAoY29uc3QgY2hhciAqLCBzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIHVu
c2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHVmc19hZGRfbGluayAoc3RydWN0IGRlbnRyeSAqLCBz
dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9fdCB1ZnNfaW5vZGVfYnlfbmFtZShzdHJ1Y3QgaW5v
ZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB1ZnNfbWFrZV9lbXB0eShzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IHVmc19kaXJfZW50cnkgKiB1
ZnNfZmluZF9lbnRyeSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiopOwpl
eHRlcm4gaW50IHVmc19kZWxldGVfZW50cnkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rp
cl9lbnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVybiBpbnQgdWZzX2VtcHR5X2Rp
ciAoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IHVmc19kaXJfZW50cnkgKiB1ZnNfZG90
ZG90IChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICoqKTsKZXh0ZXJuIHZvaWQg
dWZzX3NldF9saW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlub2RlICopOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVf
b3BlcmF0aW9ucyB1ZnNfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVf
b3BlcmF0aW9ucyB1ZnNfZmlsZV9vcGVyYXRpb25zOwoKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3Nw
YWNlX29wZXJhdGlvbnMgdWZzX2FvcHM7CgoKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfaW5vZGUgKHN0
cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gc3RydWN0IGlub2RlICogdWZzX25ld19pbm9kZSAo
Y29uc3Qgc3RydWN0IGlub2RlICosIGludCk7CgoKZXh0ZXJuIGludCB1ZnNfZnJhZ19tYXAgKHN0
cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gdm9pZCB1ZnNfcmVhZF9pbm9kZSAoc3RydWN0IGlu
b2RlICopOwpleHRlcm4gdm9pZCB1ZnNfcHV0X2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVy
biB2b2lkIHVmc193cml0ZV9pbm9kZSAoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQg
dWZzX3N5bmNfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX2RlbGV0ZV9p
bm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogdWZzX2dl
dGZyYWcgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgaW50LCBpbnQgKik7CmV4dGVybiBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfYnJlYWQgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgaW50
LCBpbnQgKik7CgoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdWZzX2Rpcl9vcGVyYXRp
b25zOwoKCmV4dGVybiBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB1ZnNfZnNfdHlwZTsKZXh0ZXJu
IHZvaWQgdWZzX3dhcm5pbmcgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7
CmV4dGVybiB2b2lkIHVmc19lcnJvciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywg
NCkpKTsKZXh0ZXJuIHZvaWQgdWZzX3BhbmljIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3Qg
Y2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRm
LCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfd3JpdGVfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9j
ayAqKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Zhc3Rfc3ltbGlua19p
bm9kZV9vcGVyYXRpb25zOwoKCmV4dGVybiB2b2lkIHVmc190cnVuY2F0ZSAoc3RydWN0IGlub2Rl
ICopOwojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC91ZnNf
ZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgewogICAgICAgIHVuc2lnbmVk
IGZyYWdtZW50OwogICAgICAgIHVuc2lnbmVkIGNvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqIGJoWyg4MTkyIC8gMTAyNCldOwp9OwoKc3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8g
ewogICAgICAgIHN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3JvdXAgdWNnOwogICAgICAgIF9fdTMyIGNf
Y2d4OwogICAgICAgIF9fdTE2IGNfbmN5bDsKICAgICAgICBfX3UxNiBjX25pYmxrOwogICAgICAg
IF9fdTMyIGNfbmRibGs7CiAgICAgICAgX191MzIgY19yb3RvcjsKICAgICAgICBfX3UzMiBjX2Zy
b3RvcjsKICAgICAgICBfX3UzMiBjX2lyb3RvcjsKICAgICAgICBfX3UzMiBjX2J0b3RvZmY7CiAg
ICAgICAgX191MzIgY19ib2ZmOwogICAgICAgIF9fdTMyIGNfaXVzZWRvZmY7CiAgICAgICAgX191
MzIgY19mcmVlb2ZmOwogICAgICAgIF9fdTMyIGNfbmV4dGZyZWVvZmY7CiAgICAgICAgX191MzIg
Y19jbHVzdGVyc3Vtb2ZmOwogICAgICAgIF9fdTMyIGNfY2x1c3Rlcm9mZjsKICAgICAgICBfX3Uz
MiBjX25jbHVzdGVyYmxrczsKfTsKCnN0cnVjdCB1ZnNfc2JfcHJpdmF0ZV9pbmZvIHsKICAgICAg
ICBzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHNfdWJoOwogICAgICAgIF9fdTMyIHNfc2Jsa25vOwog
ICAgICAgIF9fdTMyIHNfY2Jsa25vOwogICAgICAgIF9fdTMyIHNfaWJsa25vOwogICAgICAgIF9f
dTMyIHNfZGJsa25vOwogICAgICAgIF9fdTMyIHNfY2dvZmZzZXQ7CiAgICAgICAgX191MzIgc19j
Z21hc2s7CiAgICAgICAgX191MzIgc19zaXplOwogICAgICAgIF9fdTMyIHNfZHNpemU7CiAgICAg
ICAgX191MzIgc19uY2c7CiAgICAgICAgX191MzIgc19ic2l6ZTsKICAgICAgICBfX3UzMiBzX2Zz
aXplOwogICAgICAgIF9fdTMyIHNfZnBiOwogICAgICAgIF9fdTMyIHNfbWluZnJlZTsKICAgICAg
ICBfX3UzMiBzX2JtYXNrOwogICAgICAgIF9fdTMyIHNfZm1hc2s7CiAgICAgICAgX191MzIgc19i
c2hpZnQ7CiAgICAgICAgX191MzIgc19mc2hpZnQ7CiAgICAgICAgX191MzIgc19mcGJzaGlmdDsK
ICAgICAgICBfX3UzMiBzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgc19zYnNpemU7CiAgICAgICAg
X191MzIgc19jc21hc2s7CiAgICAgICAgX191MzIgc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIHNf
bmluZGlyOwogICAgICAgIF9fdTMyIHNfaW5vcGI7CiAgICAgICAgX191MzIgc19uc3BmOwogICAg
ICAgIF9fdTMyIHNfbnBzZWN0OwogICAgICAgIF9fdTMyIHNfaW50ZXJsZWF2ZTsKICAgICAgICBf
X3UzMiBzX3RyYWNrc2tldzsKICAgICAgICBfX3UzMiBzX2NzYWRkcjsKICAgICAgICBfX3UzMiBz
X2Nzc2l6ZTsKICAgICAgICBfX3UzMiBzX2Nnc2l6ZTsKICAgICAgICBfX3UzMiBzX250cmFrOwog
ICAgICAgIF9fdTMyIHNfbnNlY3Q7CiAgICAgICAgX191MzIgc19zcGM7CiAgICAgICAgX191MzIg
c19pcGc7CiAgICAgICAgX191MzIgc19mcGc7CiAgICAgICAgX191MzIgc19jcGM7CiAgICAgICAg
X19zMzIgc19jb250aWdzdW1zaXplOwogICAgICAgIF9fczY0IHNfcWJtYXNrOwogICAgICAgIF9f
czY0IHNfcWZtYXNrOwogICAgICAgIF9fczMyIHNfcG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMy
IHNfbnJwb3M7CiAgICAgICAgX19zMzIgc19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgc19yb3Ri
bG9mZjsKCiAgICAgICAgX191MzIgc19mcGJtYXNrOwogICAgICAgIF9fdTMyIHNfYXBiOwogICAg
ICAgIF9fdTMyIHNfMmFwYjsKICAgICAgICBfX3UzMiBzXzNhcGI7CiAgICAgICAgX191MzIgc19h
cGJtYXNrOwogICAgICAgIF9fdTMyIHNfYXBic2hpZnQ7CiAgICAgICAgX191MzIgc18yYXBic2hp
ZnQ7CiAgICAgICAgX191MzIgc18zYXBic2hpZnQ7CiAgICAgICAgX191MzIgc19uc3Bmc2hpZnQ7
CiAgICAgICAgX191MzIgc19uc3BiOwogICAgICAgIF9fdTMyIHNfaW5vcGY7CiAgICAgICAgX191
MzIgc19zYmJhc2U7CiAgICAgICAgX191MzIgc19icGY7CiAgICAgICAgX191MzIgc19icGZzaGlm
dDsKICAgICAgICBfX3UzMiBzX2JwZm1hc2s7CgogICAgICAgIF9fdTMyIHNfbWF4c3ltbGlua2xl
bjsKfTsKCgoKCgpzdHJ1Y3QgdWZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfc2JfcHJp
dmF0ZV9pbmZvICogc191c3BpOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1bSAqIHNfY3NwWzMxXTsK
ICAgICAgICB1bnNpZ25lZCBzX3N3YWI7CiAgICAgICAgdW5zaWduZWQgc19mbGFnczsKICAgICAg
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc191Y2c7CiAgICAgICAgc3RydWN0IHVmc19jZ19wcml2
YXRlX2luZm8gKiBzX3VjcGlbOF07CiAgICAgICAgdW5zaWduZWQgc19jZ25vWzhdOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHNfY2dfbG9hZGVkOwogICAgICAgIHVuc2lnbmVkIHNfbW91bnRfb3B0
Owp9OwoKCgoKCgoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19maXJzdCB7CiAgICAgICAgX191MzIg
ZnNfbGluazsKICAgICAgICBfX3UzMiBmc19ybGluazsKICAgICAgICBfX3UzMiBmc19zYmxrbm87
CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2libGtubzsKICAgICAg
ICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAgX191MzIgZnNfY2dvZmZzZXQ7CiAgICAgICAgX191
MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMyIGZzX3RpbWU7CiAgICAgICAgX191MzIgZnNfc2l6
ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsKICAgICAgICBfX3UzMiBmc19uY2c7CiAgICAgICAg
X191MzIgZnNfYnNpemU7CiAgICAgICAgX191MzIgZnNfZnNpemU7CiAgICAgICAgX191MzIgZnNf
ZnJhZzsKICAgICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5
OwogICAgICAgIF9fdTMyIGZzX3JwczsKICAgICAgICBfX3UzMiBmc19ibWFzazsKICAgICAgICBf
X3UzMiBmc19mbWFzazsKICAgICAgICBfX3UzMiBmc19ic2hpZnQ7CiAgICAgICAgX191MzIgZnNf
ZnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX21heGNvbnRpZzsKICAgICAgICBfX3UzMiBmc19tYXhi
cGc7CiAgICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRvZGI7
CiAgICAgICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAgICAg
ICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBfX3Uz
MiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwogICAgICAgIF9fdTMyIGZzX29wdGlt
OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgIH0gZnNfc3VuOwogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3Rh
dGU7CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICB9IGZzX3UxOwogICAgICAg
IF9fdTMyIGZzX2ludGVybGVhdmU7CiAgICAgICAgX191MzIgZnNfdHJhY2tza2V3OwogICAgICAg
IF9fdTMyIGZzX2lkWzJdOwogICAgICAgIF9fdTMyIGZzX2NzYWRkcjsKICAgICAgICBfX3UzMiBm
c19jc3NpemU7CiAgICAgICAgX191MzIgZnNfY2dzaXplOwogICAgICAgIF9fdTMyIGZzX250cmFr
OwogICAgICAgIF9fdTMyIGZzX25zZWN0OwogICAgICAgIF9fdTMyIGZzX3NwYzsKICAgICAgICBf
X3UzMiBmc19uY3lsOwogICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAgICBfX3UzMiBmc19pcGc7
CiAgICAgICAgX191MzIgZnNfZnBnOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1bSBmc19jc3RvdGFs
OwogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAgICAgIF9f
czggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBfX3M4IGZzX2ZzbW50
WzUxMiAtIDIxMl07Cgp9OwoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19zZWNvbmQgewogICAgICAg
IF9fczggZnNfZnNtbnRbMjEyXTsKICAgICAgICBfX3UzMiBmc19jZ3JvdG9yOwogICAgICAgIF9f
dTMyIGZzX2NzcFszMV07CiAgICAgICAgX191MzIgZnNfbWF4Y2x1c3RlcjsKICAgICAgICBfX3Uz
MiBmc19jcGM7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs4Ml07Cn07CgpzdHJ1Y3QgdWZzX3N1
cGVyX2Jsb2NrX3RoaXJkIHsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzQ2XTsKICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Jl
Y2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
cWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
ZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAg
IH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3Mz
MiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19tYXhz
eW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0
ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191MjsKICAgICAgICBfX3Mz
MiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIg
ZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZz
X21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNjY5ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZWZzX2ZzX3NiLmgiIDEKIyAyNSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZWZzX2ZzX3NiLmgiCnN0cnVjdCBlZnNf
c3VwZXIgewogICAgICAgIGludDMyX3QgZnNfc2l6ZTsKICAgICAgICBpbnQzMl90IGZzX2ZpcnN0
Y2c7CiAgICAgICAgaW50MzJfdCBmc19jZ2ZzaXplOwogICAgICAgIHNob3J0IGZzX2NnaXNpemU7
CiAgICAgICAgc2hvcnQgZnNfc2VjdG9yczsKICAgICAgICBzaG9ydCBmc19oZWFkczsKICAgICAg
ICBzaG9ydCBmc19uY2c7CiAgICAgICAgc2hvcnQgZnNfZGlydHk7CiAgICAgICAgaW50MzJfdCBm
c190aW1lOwogICAgICAgIGludDMyX3QgZnNfbWFnaWM7CiAgICAgICAgY2hhciBmc19mbmFtZVs2
XTsKICAgICAgICBjaGFyIGZzX2ZwYWNrWzZdOwogICAgICAgIGludDMyX3QgZnNfYm1zaXplOwog
ICAgICAgIGludDMyX3QgZnNfdGZyZWU7CiAgICAgICAgaW50MzJfdCBmc190aW5vZGU7CiAgICAg
ICAgaW50MzJfdCBmc19ibWJsb2NrOwogICAgICAgIGludDMyX3QgZnNfcmVwbHNiOwogICAgICAg
IGludDMyX3QgZnNfbGFzdGlhbGxvYzsKICAgICAgICBjaGFyIGZzX3NwYXJlWzIwXTsKICAgICAg
ICBpbnQzMl90IGZzX2NoZWNrc3VtOwp9OwoKCnN0cnVjdCBlZnNfc2JfaW5mbyB7CiAgICAgICAg
aW50MzJfdCBmc19tYWdpYzsKICAgICAgICBpbnQzMl90IGZzX3N0YXJ0OwogICAgICAgIGludDMy
X3QgZmlyc3RfYmxvY2s7CiAgICAgICAgaW50MzJfdCB0b3RhbF9ibG9ja3M7CiAgICAgICAgaW50
MzJfdCBncm91cF9zaXplOwogICAgICAgIGludDMyX3QgZGF0YV9mcmVlOwogICAgICAgIGludDMy
X3QgaW5vZGVfZnJlZTsKICAgICAgICBzaG9ydCBpbm9kZV9ibG9ja3M7CiAgICAgICAgc2hvcnQg
dG90YWxfZ3JvdXBzOwp9OwojIDY3MCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3JvbWZzX2ZzX3NiLmgiIDEKCgoKCgpzdHJ1Y3Qgcm9tZnNfc2JfaW5mbyB7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX21heHNpemU7Cn07CiMgNjcxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvc21iX2ZzX3NiLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc21iX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NtYi5oIiAxCiMgMTIgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NtYi5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMyAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc21iLmgiIDIKCmVudW0gc21iX3By
b3RvY29sIHsKICAgICAgICBTTUJfUFJPVE9DT0xfTk9ORSwKICAgICAgICBTTUJfUFJPVE9DT0xf
Q09SRSwKICAgICAgICBTTUJfUFJPVE9DT0xfQ09SRVBMVVMsCiAgICAgICAgU01CX1BST1RPQ09M
X0xBTk1BTjEsCiAgICAgICAgU01CX1BST1RPQ09MX0xBTk1BTjIsCiAgICAgICAgU01CX1BST1RP
Q09MX05UMQp9OwoKZW51bSBzbWJfY2FzZV9obmRsIHsKICAgICAgICBTTUJfQ0FTRV9ERUZBVUxU
LAogICAgICAgIFNNQl9DQVNFX0xPV0VSLAogICAgICAgIFNNQl9DQVNFX1VQUEVSCn07CgpzdHJ1
Y3Qgc21iX2Rza2F0dHIgewogICAgICAgIF9fdTE2IHRvdGFsOwogICAgICAgIF9fdTE2IGFsbG9j
YmxvY2tzOwogICAgICAgIF9fdTE2IGJsb2Nrc2l6ZTsKICAgICAgICBfX3UxNiBmcmVlOwp9OwoK
c3RydWN0IHNtYl9jb25uX29wdCB7CgoKICAgICAgICB1bnNpZ25lZCBpbnQgZmQ7CgogICAgICAg
IGVudW0gc21iX3Byb3RvY29sIHByb3RvY29sOwogICAgICAgIGVudW0gc21iX2Nhc2VfaG5kbCBj
YXNlX2hhbmRsaW5nOwoKCgogICAgICAgIF9fdTMyIG1heF94bWl0OwogICAgICAgIF9fdTE2IHNl
cnZlcl91aWQ7CiAgICAgICAgX191MTYgdGlkOwoKCiAgICAgICAgX191MTYgc2VjbW9kZTsKICAg
ICAgICBfX3UxNiBtYXhtdXg7CiAgICAgICAgX191MTYgbWF4dmNzOwogICAgICAgIF9fdTE2IHJh
d21vZGU7CiAgICAgICAgX191MzIgc2Vzc2tleTsKCgogICAgICAgIF9fdTMyIG1heHJhdzsKICAg
ICAgICBfX3UzMiBjYXBhYmlsaXRpZXM7CiAgICAgICAgX19zMTYgc2VydmVyem9uZTsKfTsKCgoK
CnN0cnVjdCBzbWJfbmxzX2NvZGVwYWdlIHsKICAgICAgICBjaGFyIGxvY2FsX25hbWVbMjBdOwog
ICAgICAgIGNoYXIgcmVtb3RlX25hbWVbMjBdOwp9OwojIDc4ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9zbWIuaCIKc3RydWN0IHNtYl9mYXR0ciB7CgogICAgICAg
IF9fdTE2IGF0dHI7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9pbm87CiAgICAgICAgdW1vZGVf
dCBmX21vZGU7CiAgICAgICAgbmxpbmtfdCBmX25saW5rOwogICAgICAgIHVpZF90IGZfdWlkOwog
ICAgICAgIGdpZF90IGZfZ2lkOwogICAgICAgIGtkZXZfdCBmX3JkZXY7CiAgICAgICAgb2ZmX3Qg
Zl9zaXplOwogICAgICAgIHRpbWVfdCBmX2F0aW1lOwogICAgICAgIHRpbWVfdCBmX210aW1lOwog
ICAgICAgIHRpbWVfdCBmX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9ibGtzaXplOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZl9ibG9ja3M7Cn07CgplbnVtIHNtYl9jb25uX3N0YXRlIHsK
ICAgICAgICBDT05OX1ZBTElELAogICAgICAgIENPTk5fSU5WQUxJRCwKCiAgICAgICAgQ09OTl9S
RVRSSUVELAogICAgICAgIENPTk5fUkVUUllJTkcKfTsKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc21iX2ZzX3NiLmgiIDIKCgoKCgoKCnN0cnVjdCBzbWJf
c2JfaW5mbyB7CiAgICAgICAgZW51bSBzbWJfY29ubl9zdGF0ZSBzdGF0ZTsKICAgICAgICBzdHJ1
Y3QgZmlsZSAqIHNvY2tfZmlsZTsKCiAgICAgICAgc3RydWN0IHNtYl9tb3VudF9kYXRhX2tlcm5l
bCAqbW50OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnRlbXBfYnVmOwoKCgoKICAgICAgICB1bnNp
Z25lZCBpbnQgZ2VuZXJhdGlvbjsKICAgICAgICBwaWRfdCBjb25uX3BpZDsKICAgICAgICBzdHJ1
Y3Qgc21iX2Nvbm5fb3B0IG9wdDsKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CiAgICAg
ICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCiAgICAgICAgX191MzIgcGFja2V0X3NpemU7CiAg
ICAgICAgdW5zaWduZWQgY2hhciAqIHBhY2tldDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByY2xz
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVycjsKCgogICAgICAgIHZvaWQgKmRhdGFfcmVhZHk7
CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpyZW1vdGVfbmxzOwogICAgICAgIHN0cnVjdCBu
bHNfdGFibGUgKmxvY2FsX25sczsKCgoKCiAgICAgICAgY2hhciAqbmFtZV9idWY7CgogICAgICAg
IGludCAoKmNvbnZlcnQpKGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICosIGludCwKICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICosIHN0cnVjdCBubHNfdGFibGUgKik7Cn07
CgoKc3RhdGljIGlubGluZSB2b2lkCnNtYl9sb2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8g
KnNlcnZlcikKewogICAgICAgIGRvd24oJihzZXJ2ZXItPnNlbSkpOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQKc21iX3VubG9ja19zZXJ2ZXIoc3RydWN0IHNtYl9zYl9pbmZvICpzZXJ2ZXIpCnsKICAg
ICAgICB1cCgmKHNlcnZlci0+c2VtKSk7Cn0KIyA2NzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9oZnNfZnNfc2IuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9oZnNfZnNfc2IuaCIKc3RydWN0IGhmc19uYW1lOwoKdHlw
ZWRlZiBpbnQgKCpoZnNfbmFtZWluX2ZuKSAoY2hhciAqLCBjb25zdCBzdHJ1Y3QgaGZzX25hbWUg
Kik7CnR5cGVkZWYgdm9pZCAoKmhmc19uYW1lb3V0X2ZuKSAoc3RydWN0IGhmc19uYW1lICosIGNv
bnN0IGNoYXIgKiwgaW50KTsKdHlwZWRlZiB2b2lkICgqaGZzX2lmaWxsX2ZuKSAoc3RydWN0IGlu
b2RlICosIGlub190LCBjb25zdCBpbnQpOwoKCgoKCgpzdHJ1Y3QgaGZzX3NiX2luZm8gewogICAg
ICAgIGludCBtYWdpYzsKICAgICAgICBzdHJ1Y3QgaGZzX21kYiAqc19tZGI7CiAgICAgICAgaW50
IHNfcXVpZXQ7CgogICAgICAgIGludCBzX2xvd2VyY2FzZTsKICAgICAgICBpbnQgc19hZnBkOwog
ICAgICAgIGludCBzX3ZlcnNpb247CiAgICAgICAgaGZzX25hbWVpbl9mbiBzX25hbWVpbjsKCgog
ICAgICAgIGhmc19uYW1lb3V0X2ZuIHNfbmFtZW91dDsKCgogICAgICAgIGhmc19pZmlsbF9mbiBz
X2lmaWxsOwoKICAgICAgICBjb25zdCBzdHJ1Y3QgaGZzX25hbWUgKnNfcmVzZXJ2ZWQxOwogICAg
ICAgIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDI7CiAgICAgICAgX191MzIgc190
eXBlOwogICAgICAgIF9fdTMyIHNfY3JlYXRvcjsKICAgICAgICB1bW9kZV90IHNfdW1hc2s7Cgog
ICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIGNoYXIgc19j
b252Owp9OwojIDY3MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2Fk
ZnNfZnNfc2IuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9hZGZzX2ZzX3NiLmgiCnN0cnVjdCBhZGZzX2Rpc2NtYXA7CnN0cnVjdCBhZGZzX2Rpcl9v
cHM7CgoKCgpzdHJ1Y3QgYWRmc19zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYWRmc19kaXNjbWFw
ICpzX21hcDsKICAgICAgICBzdHJ1Y3QgYWRmc19kaXJfb3BzICpzX2RpcjsKCiAgICAgICAgdWlk
X3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdW1vZGVfdCBzX293bmVyX21h
c2s7CiAgICAgICAgdW1vZGVfdCBzX290aGVyX21hc2s7CgogICAgICAgIF9fdTMyIHNfaWRzX3Bl
cl96b25lOwogICAgICAgIF9fdTMyIHNfaWRsZW47CiAgICAgICAgX191MzIgc19tYXBfc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfc2l6ZTsKICAgICAgICBzaWduZWQgaW50IHNfbWFwMmJs
azsKICAgICAgICB1bnNpZ25lZCBpbnQgc19sb2cyc2hhcmVzaXplOwogICAgICAgIHVuc2lnbmVk
IGludCBzX3ZlcnNpb247CiAgICAgICAgdW5zaWduZWQgaW50IHNfbmFtZWxlbjsKfTsKIyA2NzQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiIDEK
IyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcW54NF9mc19z
Yi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRf
ZnMuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9x
bng0X2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
cW54dHlwZXMuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9xbng0X2ZzLmgiIDIKIyA0NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvcW54NF9mcy5oIgpzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSB7CiAgICAgICAgY2hh
ciBkaV9mbmFtZVsxNl07CiAgICAgICAgcW54NF9vZmZfdCBkaV9zaXplOwogICAgICAgIHFueDRf
eHRudF90IGRpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgZGlfeGJsazsKICAgICAgICBfX3Mz
MiBkaV9mdGltZTsKICAgICAgICBfX3MzMiBkaV9tdGltZTsKICAgICAgICBfX3MzMiBkaV9hdGlt
ZTsKICAgICAgICBfX3MzMiBkaV9jdGltZTsKICAgICAgICBxbng0X254dG50X3QgZGlfbnVtX3h0
bnRzOwogICAgICAgIHFueDRfbW9kZV90IGRpX21vZGU7CiAgICAgICAgcW54NF9tdWlkX3QgZGlf
dWlkOwogICAgICAgIHFueDRfbWdpZF90IGRpX2dpZDsKICAgICAgICBxbng0X25saW5rX3QgZGlf
bmxpbms7CiAgICAgICAgX191OCBkaV96ZXJvWzRdOwogICAgICAgIHFueDRfZnR5cGVfdCBkaV90
eXBlOwogICAgICAgIF9fdTggZGlfc3RhdHVzOwp9OwoKc3RydWN0IHFueDRfbGlua19pbmZvIHsK
ICAgICAgICBjaGFyIGRsX2ZuYW1lWzQ4XTsKICAgICAgICBfX3UzMiBkbF9pbm9kZV9ibGs7CiAg
ICAgICAgX191OCBkbF9pbm9kZV9uZHg7CiAgICAgICAgX191OCBkbF9zcGFyZVsxMF07CiAgICAg
ICAgX191OCBkbF9zdGF0dXM7Cn07CgpzdHJ1Y3QgcW54NF94YmxrIHsKICAgICAgICBfX3UzMiB4
YmxrX25leHRfeGJsazsKICAgICAgICBfX3UzMiB4YmxrX3ByZXZfeGJsazsKICAgICAgICBfX3U4
IHhibGtfbnVtX3h0bnRzOwogICAgICAgIF9fdTggeGJsa19zcGFyZVszXTsKICAgICAgICBfX3Mz
MiB4YmxrX251bV9ibG9ja3M7CiAgICAgICAgcW54NF94dG50X3QgeGJsa194dG50c1s2MF07CiAg
ICAgICAgY2hhciB4YmxrX3NpZ25hdHVyZVs4XTsKICAgICAgICBxbng0X3h0bnRfdCB4YmxrX2Zp
cnN0X3h0bnQ7Cn07CgpzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayB7CiAgICAgICAgc3RydWN0IHFu
eDRfaW5vZGVfZW50cnkgUm9vdERpcjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBJ
bm9kZTsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBCb290OwogICAgICAgIHN0cnVj
dCBxbng0X2lub2RlX2VudHJ5IEFsdEJvb3Q7Cn07CiMgMTAwICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpx
bng0X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9jb3VudF9mcmVlX2Jsb2NrcyhzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnNiKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9ibG9ja19tYXAoc3RydWN0IGlub2Rl
ICppbm9kZSwgbG9uZyBpYmxvY2spOwoKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqcW54NF9n
ZXRibGsoc3RydWN0IGlub2RlICosIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVh
ZCAqcW54NF9icmVhZChzdHJ1Y3QgaW5vZGUgKiwgaW50LCBpbnQpOwoKZXh0ZXJuIGludCBxbng0
X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9k
ZSk7CmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBxbng0X2ZpbGVfaW5vZGVfb3BlcmF0
aW9uczsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHFueDRfZGlyX2lub2RlX29wZXJh
dGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHFueDRfZmlsZV9vcGVyYXRpb25z
OwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBxbng0X2Rpcl9vcGVyYXRpb25zOwpleHRl
cm4gaW50IHFueDRfaXNfZnJlZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBsb25nIGJsb2NrKTsK
ZXh0ZXJuIGludCBxbng0X3NldF9iaXRtYXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgbG9uZyBi
bG9jaywgaW50IGJ1c3kpOwpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVjdCBpbm9kZSAqaW5v
ZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gdm9pZCBxbng0X3Ry
dW5jYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBxbng0X2ZyZWVfaW5vZGUo
c3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF91bmxpbmsoc3RydWN0IGlub2Rl
ICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54NF9ybWRpcihzdHJ1
Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKZXh0ZXJuIGludCBxbng0X3N5
bmNfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQpOwpl
eHRlcm4gaW50IHFueDRfc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIGlu
dCBxbng0X2dldF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGlibG9jaywgc3RydWN0
IGJ1ZmZlcl9oZWFkICpiaCwgaW50IGNyZWF0ZSk7CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBxbng0X3Ni
X2luZm8gewogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc2JfYnVmOwogICAgICAgIHN0cnVj
dCBxbng0X3N1cGVyX2Jsb2NrICpzYjsKICAgICAgICB1bnNpZ25lZCBpbnQgVmVyc2lvbjsKICAg
ICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSAqQml0TWFwOwp9OwojIDY3NSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDEKCgoKCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgi
IDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVl
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3Bpbmxv
Y2suaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90
cXVldWUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L2xpc3QuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC90cXVldWUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2Fz
bS9iaXRvcHMuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC90cXVldWUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2FzbS9zeXN0ZW0uaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC90cXVldWUuaCIgMgojIDM4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC90cXVldWUuaCIKc3RydWN0IHRxX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBsaXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3luYzsKICAgICAgICB2b2lkICgq
cm91dGluZSkodm9pZCAqKTsKICAgICAgICB2b2lkICpkYXRhOwp9OwojIDY0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90cXVldWUuaCIKdHlwZWRlZiBzdHJ1Y3Qg
bGlzdF9oZWFkIHRhc2tfcXVldWU7CgoKCgpleHRlcm4gdGFza19xdWV1ZSB0cV90aW1lciwgdHFf
aW1tZWRpYXRlLCB0cV9kaXNrOwojIDk0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC90cXVldWUuaCIKZXh0ZXJuIHNwaW5sb2NrX3QgdHF1ZXVlX2xvY2s7CgoKCgoK
c3RhdGljIGlubGluZSBpbnQgcXVldWVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICpiaF9wb2ludGVy
LCB0YXNrX3F1ZXVlICpiaF9saXN0KQp7CiAgICAgICAgaW50IHJldCA9IDA7CiAgICAgICAgaWYg
KCF0ZXN0X2FuZF9zZXRfYml0KDAsJmJoX3BvaW50ZXItPnN5bmMpKSB7CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIp
OyBzcGluX2xvY2soJnRxdWV1ZV9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBs
aXN0X2FkZF90YWlsKCZiaF9wb2ludGVyLT5saXN0LCBiaF9saXN0KTsKICAgICAgICAgICAgICAg
IGRvIHsgc3Bpbl91bmxvY2soJnRxdWV1ZV9sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1
c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgw
KTsKICAgICAgICAgICAgICAgIHJldCA9IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXQ7
Cn0KCgoKCgpleHRlcm4gdm9pZCBfX3J1bl90YXNrX3F1ZXVlKHRhc2tfcXVldWUgKmxpc3QpOwoK
c3RhdGljIGlubGluZSB2b2lkIHJ1bl90YXNrX3F1ZXVlKHRhc2tfcXVldWUgKmxpc3QpCnsKICAg
ICAgICBpZiAoKCFsaXN0X2VtcHR5KCYqbGlzdCkpKQogICAgICAgICAgICAgICAgX19ydW5fdGFz
a19xdWV1ZShsaXN0KTsKfQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDIKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKc3RydWN0IHJlaXNlcmZzX3N1cGVy
X2Jsb2NrCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAg
X191MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pv
dXJuYWxfZGV2OwojIDQzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9yZWlzZXJmc19mc19zYi5oIgogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7CiAgX191MzIg
c19qb3VybmFsX3RyYW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2NvdW50IDsKICBf
X3UzMiBzX2pvdXJuYWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9h
Z2UgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6
ZTsKICBfX3UxNiBzX29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7CiAgX191MTYg
c19zdGF0ZTsKICBjaGFyIHNfbWFnaWNbMTJdOwogIF9fdTMyIHNfaGFzaF9mdW5jdGlvbl9jb2Rl
OwogIF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19ibWFwX25yOwogIF9fdTE2IHNfdmVy
c2lvbjsKCgoKCiAgX191MTYgc19yZXNlcnZlZDsKICBfX3UzMiBzX2lub2RlX2dlbmVyYXRpb247
CiAgY2hhciBzX3VudXNlZFsxMjRdIDsKfSBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOwoj
IDEyMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNf
ZnNfc2IuaCIKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2NrX3YxCnsKICBfX3UzMiBzX2Jsb2Nr
X2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAgX191MzIgc19yb290X2Jsb2NrOwogIF9f
dTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfZGV2OwogIF9fdTMyIHNfb3Jp
Z19qb3VybmFsX3NpemU7CiAgX191MzIgc19qb3VybmFsX3RyYW5zX21heCA7CiAgX191MzIgc19q
b3VybmFsX2Jsb2NrX2NvdW50IDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2JhdGNoIDsKICBfX3Uz
MiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfdHJhbnNf
YWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsKICBfX3UxNiBzX29pZF9tYXhzaXplOwogIF9fdTE2
IHNfb2lkX2N1cnNpemU7CiAgX191MTYgc19zdGF0ZTsKICBjaGFyIHNfbWFnaWNbMTZdOwogIF9f
dTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19ibWFwX25yOwogIF9fdTMyIHNfcmVzZXJ2ZWQ7
Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKTsKIyAyMDAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJm
c19qb3VybmFsX2Nub2RlIHsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoIDsKICBrZGV2X3QgZGV2
IDsKICB1bnNpZ25lZCBsb25nIGJsb2NrbnIgOwogIGludCBzdGF0ZSA7CiAgc3RydWN0IHJlaXNl
cmZzX2pvdXJuYWxfbGlzdCAqamxpc3QgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2Rl
ICpuZXh0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqcHJldiA7CiAgc3RydWN0
IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmhwcmV2IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5h
bF9jbm9kZSAqaG5leHQgOwp9OwoKc3RydWN0IHJlaXNlcmZzX2JpdG1hcF9ub2RlIHsKICBpbnQg
aWQgOwogIGNoYXIgKmRhdGEgOwogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdCA7Cn0gOwoKc3RydWN0
IHJlaXNlcmZzX2xpc3RfYml0bWFwIHsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0ICpq
b3VybmFsX2xpc3QgOwogIHN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSAqKmJpdG1hcHMgOwp9
IDsKCgoKCnN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgewoKICBjaGFyICp0X2Nh
bGxlciA7CiAgaW50IHRfYmxvY2tzX2xvZ2dlZCA7CiAgaW50IHRfYmxvY2tzX2FsbG9jYXRlZCA7
CiAgdW5zaWduZWQgbG9uZyB0X3RyYW5zX2lkIDsKICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnRfc3Vw
ZXIgOwoKfSA7CgoKCgoKCgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0IHsKICB1bnNpZ25l
ZCBsb25nIGpfc3RhcnQgOwogIHVuc2lnbmVkIGxvbmcgal9sZW4gOwogIGF0b21pY190IGpfbm9u
emVyb2xlbiA7CiAgYXRvbWljX3Qgal9jb21taXRfbGVmdCA7CiAgYXRvbWljX3Qgal9mbHVzaGlu
ZyA7CiAgYXRvbWljX3Qgal9jb21taXRfZmx1c2hpbmcgOwogIGF0b21pY190IGpfb2xkZXJfY29t
bWl0c19kb25lIDsKICB1bnNpZ25lZCBsb25nIGpfdHJhbnNfaWQgOwogIHRpbWVfdCBqX3RpbWVz
dGFtcCA7CiAgc3RydWN0IHJlaXNlcmZzX2xpc3RfYml0bWFwICpqX2xpc3RfYml0bWFwIDsKICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmpfY29tbWl0X2JoIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5h
bF9jbm9kZSAqal9yZWFsYmxvY2sgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpq
X2ZyZWVkbGlzdCA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9jb21taXRfd2FpdCA7CiAgd2FpdF9x
dWV1ZV9oZWFkX3Qgal9mbHVzaF93YWl0IDsKfSA7CgpzdHJ1Y3QgcmVpc2VyZnNfcGFnZV9saXN0
IDsKCnN0cnVjdCByZWlzZXJmc19qb3VybmFsIHsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogal9h
cF9ibG9ja3MgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2xhc3QgOwogIHN0
cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2ZpcnN0IDsKCiAgaW50IGpfc3RhdGUgOwog
IHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdW5zaWduZWQgbG9uZyBqX21vdW50X2lkIDsK
ICB1bnNpZ25lZCBsb25nIGpfc3RhcnQgOwogIHVuc2lnbmVkIGxvbmcgal9sZW4gOwogIHVuc2ln
bmVkIGxvbmcgal9sZW5fYWxsb2MgOwogIGF0b21pY190IGpfd2NvdW50IDsKICB1bnNpZ25lZCBs
b25nIGpfYmNvdW50IDsKICB1bnNpZ25lZCBsb25nIGpfZmlyc3RfdW5mbHVzaGVkX29mZnNldCA7
CiAgdW5zaWduZWQgbG9uZyBqX2xhc3RfZmx1c2hfdHJhbnNfaWQgOwogIHN0cnVjdCBidWZmZXJf
aGVhZCAqal9oZWFkZXJfYmggOwoKCgoKICBzdHJ1Y3QgcmVpc2VyZnNfcGFnZV9saXN0ICpqX2Zs
dXNoX3BhZ2VzIDsKICB0aW1lX3Qgal90cmFuc19zdGFydF90aW1lIDsKICB3YWl0X3F1ZXVlX2hl
YWRfdCBqX3dhaXQgOwogIGF0b21pY190IGpfd2xvY2sgOwogIHdhaXRfcXVldWVfaGVhZF90IGpf
am9pbl93YWl0IDsKICBhdG9taWNfdCBqX2psb2NrIDsKICBpbnQgal9qb3VybmFsX2xpc3RfaW5k
ZXggOwogIGludCBqX2xpc3RfYml0bWFwX2luZGV4IDsKICBpbnQgal9tdXN0X3dhaXQgOwogIGlu
dCBqX25leHRfZnVsbF9mbHVzaCA7CiAgaW50IGpfbmV4dF9hc3luY19mbHVzaCA7CgogIGludCBq
X2Nub2RlX3VzZWQgOwogIGludCBqX2Nub2RlX2ZyZWUgOwoKICBzdHJ1Y3QgcmVpc2VyZnNfam91
cm5hbF9jbm9kZSAqal9jbm9kZV9mcmVlX2xpc3QgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFs
X2Nub2RlICpqX2Nub2RlX2ZyZWVfb3JpZyA7CgogIGludCBqX2ZyZWVfYml0bWFwX25vZGVzIDsK
ICBpbnQgal91c2VkX2JpdG1hcF9ub2RlcyA7CiAgc3RydWN0IGxpc3RfaGVhZCBqX2JpdG1hcF9u
b2RlcyA7CiAgc3RydWN0IGlub2RlIGpfZHVtbXlfaW5vZGUgOwogIHN0cnVjdCByZWlzZXJmc19s
aXN0X2JpdG1hcCBqX2xpc3RfYml0bWFwWzVdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9s
aXN0IGpfam91cm5hbF9saXN0WzY0XSA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmpfaGFzaF90YWJsZVs4MTkyXSA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpf
bGlzdF9oYXNoX3RhYmxlWzgxOTJdIDsKCiAgc3RydWN0IGxpc3RfaGVhZCBqX3ByZWFsbG9jX2xp
c3Q7Cn07CgoKCgp0eXBlZGVmIF9fdTMyICgqaGFzaGZfdCkgKGNvbnN0IHNpZ25lZCBjaGFyICos
IGludCk7CgoKc3RydWN0IHJlaXNlcmZzX3NiX2luZm8KewogICAgc3RydWN0IGJ1ZmZlcl9oZWFk
ICogc19zYmg7CgoKICAgIHN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jayAqIHNfcnM7CiAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19hcF9iaXRtYXA7CiAgICBzdHJ1Y3QgcmVpc2VyZnNfam91
cm5hbCAqc19qb3VybmFsIDsKICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CgoKICAg
IHZvaWQgKCplbmRfaW9faGFuZGxlcikoc3RydWN0IGJ1ZmZlcl9oZWFkICosIGludCk7CiAgICBo
YXNoZl90IHNfaGFzaF9mdW5jdGlvbjsKCgogICAgdW5zaWduZWQgbG9uZyBzX21vdW50X29wdDsK
CgoKCiAgICB3YWl0X3F1ZXVlX2hlYWRfdCBzX3dhaXQ7CgogICAgYXRvbWljX3Qgc19nZW5lcmF0
aW9uX2NvdW50ZXI7CgoKCiAgICBpbnQgc19rbWFsbG9jczsKICAgIGludCBzX2Rpc2tfcmVhZHM7
CiAgICBpbnQgc19kaXNrX3dyaXRlczsKICAgIGludCBzX2ZpeF9ub2RlczsKICAgIGludCBzX2Rv
X2JhbGFuY2U7CiAgICBpbnQgc191bm5lZWRlZF9sZWZ0X25laWdoYm9yOwogICAgaW50IHNfZ29v
ZF9zZWFyY2hfYnlfa2V5X3JlYWRhOwogICAgaW50IHNfYm1hcHM7CiAgICBpbnQgc19ibWFwc193
aXRob3V0X3NlYXJjaDsKICAgIGludCBzX2RpcmVjdDJpbmRpcmVjdDsKICAgIGludCBzX2luZGly
ZWN0MmRpcmVjdDsKfTsKIyA0MTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnZvaWQgcmVpc2VyZnNfZmlsZV9idWZmZXIgKHN0cnVj
dCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgbGlzdCk7CmludCByZWlzZXJmc19pc19zdXBlcihzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnMpIDsKaW50IGpvdXJuYWxfbWFya19kaXJ0eShzdHJ1Y3QgcmVpc2Vy
ZnNfdHJhbnNhY3Rpb25faGFuZGxlICosIHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKmJoKSA7CmludCBmbHVzaF9vbGRfY29tbWl0cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnMsIGludCkgOwppbnQgc2hvd19yZWlzZXJmc19sb2Nrcyh2b2lkKSA7CmludCByZWlzZXJmc19y
ZXNpemUoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcpIDsKIyA2NzYgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfc2IuaCIgMQojIDEyICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfc2IuaCIKc3Ry
dWN0IGJmc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2Jsb2NrczsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNpX2ZyZWViOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJlZWk7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9sZl9pb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c2lfbGZfc2JsazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX2VibGs7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzaV9sYXN0aTsKICAgICAgICBjaGFyICogc2lfaW1hcDsKICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiBzaV9zYmg7CiAgICAgICAgc3RydWN0IGJmc19zdXBlcl9ibG9jayAq
IHNpX2Jmc19zYjsKfTsKIyA2NzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC91ZGZfZnNfc2IuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC91ZGZfZnNfc2IuaCIKI3ByYWdtYSBwYWNrKDEpCiMgMzAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIgpzdHJ1Y3QgdWRmX3Nw
YXJpbmdfZGF0YQp7CiAgICAgICAgX191MTYgc19wYWNrZXRfbGVuOwogICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqc19zcGFyX21hcFs0XTsKfTsKCnN0cnVjdCB1ZGZfdmlydHVhbF9kYXRhCnsK
ICAgICAgICBfX3UzMiBzX251bV9lbnRyaWVzOwogICAgICAgIF9fdTE2IHNfc3RhcnRfb2Zmc2V0
Owp9OwoKc3RydWN0IHVkZl9iaXRtYXAKewogICAgICAgIF9fdTMyIHNfZXh0TGVuZ3RoOwogICAg
ICAgIF9fdTMyIHNfZXh0UG9zaXRpb247CiAgICAgICAgX191MTYgc19ucl9ncm91cHM7CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqc19ibG9ja19iaXRtYXA7Cn07CgpzdHJ1Y3QgdWRmX3Bh
cnRfbWFwCnsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1
ZGZfYml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqc190YWJs
ZTsKICAgICAgICB9IHNfdXNwYWNlOwogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAg
ICAgICAgc3RydWN0IHVkZl9iaXRtYXAgKnNfYml0bWFwOwogICAgICAgICAgICAgICAgc3RydWN0
IGlub2RlICpzX3RhYmxlOwogICAgICAgIH0gc19mc3BhY2U7CiAgICAgICAgX191MzIgc19wYXJ0
aXRpb25fcm9vdDsKICAgICAgICBfX3UzMiBzX3BhcnRpdGlvbl9sZW47CiAgICAgICAgX191MTYg
c19wYXJ0aXRpb25fdHlwZTsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl9udW07CiAgICAgICAg
dW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX3NwYXJpbmdfZGF0YSBz
X3NwYXJpbmc7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0YSBzX3ZpcnR1
YWw7CiAgICAgICAgfSBzX3R5cGVfc3BlY2lmaWM7CiAgICAgICAgX191MzIgKCpzX3BhcnRpdGlv
bl9mdW5jKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgX191MzIsIF9fdTE2LCBfX3UzMik7CiAgICAg
ICAgX191MTYgc192b2x1bWVzZXFudW07CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fZmxhZ3M7
Cn07CgojcHJhZ21hIHBhY2soKQoKc3RydWN0IHVkZl9zYl9pbmZvCnsKICAgICAgICBzdHJ1Y3Qg
dWRmX3BhcnRfbWFwICpzX3BhcnRtYXBzOwogICAgICAgIF9fdTggc192b2xpZGVudFszMl07CgoK
ICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbnM7CiAgICAgICAgX191MTYgc19wYXJ0aXRpb247CgoK
ICAgICAgICBfX3MzMiBzX3Nlc3Npb247CiAgICAgICAgX191MzIgc19hbmNob3JbNF07CiAgICAg
ICAgX191MzIgc19sYXN0YmxvY2s7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19sdmlk
Ymg7CgoKICAgICAgICBtb2RlX3Qgc191bWFzazsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAg
ICB1aWRfdCBzX3VpZDsKCgogICAgICAgIHRpbWVfdCBzX3JlY29yZHRpbWU7CgoKICAgICAgICBf
X3UxNiBzX3NlcmlhbG51bTsKCgogICAgICAgIF9fdTE2IHNfdWRmcmV2OwoKCiAgICAgICAgX191
MzIgc19mbGFnczsKCgogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKnNfbmxzX21hcDsKCgogICAg
ICAgIHN0cnVjdCBpbm9kZSAqc192YXQ7Cn07CiMgNjc4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAxCiMgMTEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAx
MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwX21vdW50Lmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uY3AuaCIg
MQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uY3AuaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAx
CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIiAy
CiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIgpz
dHJ1Y3QgbmNwX3JlcXVlc3RfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2hp
Z2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBmdW5jdGlvbiBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7Cn07CgoKCgpzdHJ1Y3QgbmNwX3JlcGx5X2hlYWRlciB7CiAgICAgICAgX191MTYgdHlw
ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHNlcXVlbmNlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9sb3cgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191OCB0YXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTggY29ubl9oaWdoIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29t
cGxldGlvbl9jb2RlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubmVj
dGlvbl9zdGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFbMF0g
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCnN0cnVjdCBuY3Bfdm9sdW1lX2luZm8gewog
ICAgICAgIF9fdTMyIHRvdGFsX2Jsb2NrczsKICAgICAgICBfX3UzMiBmcmVlX2Jsb2NrczsKICAg
ICAgICBfX3UzMiBwdXJnZWFibGVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5vdF95ZXRfcHVyZ2Vh
YmxlX2Jsb2NrczsKICAgICAgICBfX3UzMiB0b3RhbF9kaXJfZW50cmllczsKICAgICAgICBfX3Uz
MiBhdmFpbGFibGVfZGlyX2VudHJpZXM7CiAgICAgICAgX191OCBzZWN0b3JzX3Blcl9ibG9jazsK
ICAgICAgICBjaGFyIHZvbHVtZV9uYW1lWygxNikgKyAxXTsKfTsKIyAxMTIgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfaW5mb19zdHJ1
Y3QgewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAg
ICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UxNiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkYXRhU3Ry
ZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiB0b3RhbFN0cmVh
bVNpemUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbnVtYmVyT2ZTdHJl
YW1zIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uVGltZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hp
dmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGVkUmlnaHRzTWFz
ayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJFbnROdW0gX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9zRGlyTnVtIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
MzIgRUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIE5TQ3Jl
YXRvciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG5hbWVMZW4gX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBlbnRyeU5hbWVbMjU2XSBfX2F0dHJpYnV0
ZV9fKChwYWNrZWQpKTsKfTsKIyAxNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5X2Rvc19pbmZvIHsKICAgICAgICBfX3Uz
MiBhdHRyaWJ1dGVzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0
aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvblRp
bWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeURhdGUgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMy
IGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFj
Y2Vzc0RhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFu
Y2VHcmFudE1hc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJp
dGFuY2VSZXZva2VNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1h
eGltdW1TcGFjZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCnN0cnVjdCBud19zZWFyY2hf
c2VxdWVuY2UgewogICAgICAgIF9fdTggdm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg
X191MzIgc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMgMTMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAyCiMgMjUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIgpzdHJ1
Y3QgbmNwX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVk
IGludCBuY3BfZmQ7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAgICAg
X19rZXJuZWxfcGlkX3Qgd2RvZ19waWQ7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92
b2xbKDE2KSArIDFdOwogICAgICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5z
aWduZWQgaW50IHJldHJ5X2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAg
ICAgX19rZXJuZWxfdWlkX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAg
ICBfX2tlcm5lbF9tb2RlX3QgZmlsZV9tb2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJf
bW9kZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVyc2lv
bjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBt
b3VudGVkX3VpZDsKCiAgICAgICAgbG9uZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgaW50
IG5jcF9mZDsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVk
IGludCByZXRyeV9jb3VudDsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAgICB1
bnNpZ25lZCBsb25nIGdpZDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX2tl
cm5lbCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQg
aW50X2ZsYWdzOwoKICAgICAgICBfX2tlcm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAgICAg
IF9fa2VybmVsX3BpZF90IHdkb2dfcGlkOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAg
ICAgICAgdW5zaWduZWQgaW50IHRpbWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlf
Y291bnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAg
ICAgX19rZXJuZWxfdWlkMzJfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAg
ICAgICAgX19rZXJuZWxfbW9kZV90IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3Qg
ZGlyX21vZGU7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L25jcF9mc19zYi5oIiAyCgoKCgoKc3RydWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1
Y3QgbmNwX21vdW50X2RhdGFfa2VybmVsIG07CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2
NCkgKyAyXTsKCiAgICAgICAgc3RydWN0IGZpbGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1
ZW5jZTsKICAgICAgICB1OCB0YXNrOwogICAgICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1
OCBjb21wbGV0aW9uOwogICAgICAgIHU4IGNvbm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZm
ZXJfc2l6ZTsKCiAgICAgICAgaW50IHJlcGx5X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpwYWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAg
ICAgICBpbnQgaGFzX3N1YmZ1bmN0aW9uOwogICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAg
ICAgICAgaW50IHJvb3Rfc2V0dXBlZDsKCgogICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAg
ICBpbnQgc2lnbl9hY3RpdmU7CiAgICAgICAgY2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hh
ciBzaWduX2xhc3RbMTZdOwoKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBh
dXRoX3R5cGU7CiAgICAgICAgICAgICAgICBzaXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAg
ICAgICAgICAgdm9pZCogb2JqZWN0X25hbWU7CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5
cGU7CiAgICAgICAgfSBhdXRoOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6
ZV90IGxlbjsKICAgICAgICAgICAgICAgIHZvaWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAg
ICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxzX3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxl
ICpubHNfaW87CgoKICAgICAgICBpbnQgZGVudHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGlu
dCBmbGFnczsKfTsKIyA5MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbmNwX2ZzX3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50IG5jcF9jb25uX3ZhbGlkKHN0cnVjdCBu
Y3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICByZXR1cm4gKChzZXJ2ZXItPmNvbm5fc3RhdHVz
ICYgMHgxMSkgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuY3BfaW52YWxpZGF0ZV9jb25u
KHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICBzZXJ2ZXItPmNvbm5fc3RhdHVz
IHw9IDB4MDE7Cn0KIyA2NzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC91c2JkZXZfZnNfc2IuaCIgMQpzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbGlzdDsKICAgICAg
ICB1aWRfdCBkZXZ1aWQ7CiAgICAgICAgZ2lkX3QgZGV2Z2lkOwogICAgICAgIHVtb2RlX3QgZGV2
bW9kZTsKICAgICAgICB1aWRfdCBidXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVzZ2lkOwogICAgICAg
IHVtb2RlX3QgYnVzbW9kZTsKICAgICAgICB1aWRfdCBsaXN0dWlkOwogICAgICAgIGdpZF90IGxp
c3RnaWQ7CiAgICAgICAgdW1vZGVfdCBsaXN0bW9kZTsKfTsKIyA2ODAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jcmFtZnNfZnNfc2IuaCIgMQojIDY4MSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiIDEKCgoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEK
IyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9qZmZzMl9mc19z
Yi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3Bp
bmxvY2suaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L2pmZnMyX2ZzX3NiLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDIKCnN0cnVjdCBjb21wbGV0aW9uIHsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZG9uZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0
Owp9OwoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfY29tcGxldGlvbihzdHJ1Y3QgY29t
cGxldGlvbiAqeCkKewogICAgICAgIHgtPmRvbmUgPSAwOwogICAgICAgIGluaXRfd2FpdHF1ZXVl
X2hlYWQoJngtPndhaXQpOwp9CgpleHRlcm4gdm9pZCB3YWl0X2Zvcl9jb21wbGV0aW9uKHN0cnVj
dCBjb21wbGV0aW9uICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQg
Y29tcGxldGUoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2Zz
X3NiLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc2Vt
YXBob3JlLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2xpc3QuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsK
ICAgICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87
CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3Rf
bG9jazsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIGdjX3RocmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBn
Y190aHJlYWRfZXhpdDsKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoK
CiAgICAgICAgX191MzIgZmxhc2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAg
ICAgX191MzIgZGlydHlfc2l6ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191
MzIgZXJhc2luZ19zaXplOwogICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNl
Y3Rvcl9zaXplOwoKCgogICAgICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMy
IG5yX2VyYXNpbmdfYmxvY2tzOwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3Ry
dWN0IGpmZnMyX2VyYXNlYmxvY2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNl
YmxvY2sgKm5leHRibG9jazsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxv
Y2s7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIGRpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xp
c3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgZnJlZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVy
YXNlX2NvbXBsZXRpb25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2Fp
dDsKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAg
ICAgICAgc3BpbmxvY2tfdCBpbm9jYWNoZV9sb2NrOwp9OwojIDY4MiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hl
YWQgc3VwZXJfYmxvY2tzOwpleHRlcm4gc3BpbmxvY2tfdCBzYl9sb2NrOwoKCgpzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19saXN0OwogICAgICAgIGtkZXZf
dCBzX2RldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzaXplOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgc19ibG9ja3NpemVfYml0czsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfZGlydDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc19tYXhieXRlczsKICAgICAgICBzdHJ1Y3QgZmls
ZV9zeXN0ZW1fdHlwZSAqc190eXBlOwogICAgICAgIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zICpz
X29wOwogICAgICAgIHN0cnVjdCBkcXVvdF9vcGVyYXRpb25zICpkcV9vcDsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21hZ2ljOwogICAgICAg
IHN0cnVjdCBkZW50cnkgKnNfcm9vdDsKICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1v
dW50OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc19sb2NrOwogICAgICAgIGludCBzX2NvdW50
OwogICAgICAgIGF0b21pY190IHNfYWN0aXZlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNf
ZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2xvY2tlZF9pbm9kZXM7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBzX2ZpbGVzOwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpz
X2JkZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2luc3RhbmNlczsKICAgICAgICBzdHJ1
Y3QgcXVvdGFfbW91bnRfb3B0aW9ucyBzX2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgbWluaXhfc2JfaW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0
cnVjdCBleHQyX3NiX2luZm8gZXh0Ml9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX3Ni
X2luZm8gaHBmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gbnRmc19z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19zYl9pbmZvIG1zZG9zX3NiOwogICAgICAg
ICAgICAgICAgc3RydWN0IGlzb2ZzX3NiX2luZm8gaXNvZnNfc2I7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3Zfc2Jf
aW5mbyBzeXN2X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGFmZnNfc2JfaW5mbyBhZmZzX3Ni
OwogICAgICAgICAgICAgICAgc3RydWN0IHVmc19zYl9pbmZvIHVmc19zYjsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBlZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2ht
ZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByb21mc19zYl9pbmZv
IHJvbWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHNtYl9zYl9pbmZvIHNtYmZzX3NiOwog
ICAgICAgICAgICAgICAgc3RydWN0IGhmc19zYl9pbmZvIGhmc19zYjsKICAgICAgICAgICAgICAg
IHN0cnVjdCBhZGZzX3NiX2luZm8gYWRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0
X3NiX2luZm8gcW54NF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByZWlzZXJmc19zYl9pbmZv
IHJlaXNlcmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGJmc19zYl9pbmZvIGJmc19zYjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc2JfaW5mbyB1ZGZfc2I7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2Jk
ZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9zYl9p
bmZvIGpmZnMyX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGNyYW1mc19zYl9pbmZvIGNyYW1m
c19zYjsKICAgICAgICAgICAgICAgIHZvaWQgKmdlbmVyaWNfc2JwOwogICAgICAgIH0gdTsKCgoK
CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX3Zmc19yZW5hbWVfc2VtOwojIDc1NCAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhfc2VtOwp9OwoKCgoKZXh0ZXJuIGludCB2ZnNfY3Jl
YXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZz
X21rZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQg
dmZzX21rbm9kKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCwgZGV2X3QpOwpl
eHRlcm4gaW50IHZmc19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNv
bnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2ZnNfcm1kaXIoc3RydWN0IGlu
b2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3VubGluayhzdHJ1Y3QgaW5v
ZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2ZnNfcmVuYW1lKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoj
IDc4OCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKdHlw
ZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHZvaWQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGxvZmZfdCwg
aW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAg
ICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBp
bnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGlu
dCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNp
Z25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwog
ICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9v
cGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKICAgICAgICBsb2ZmX3Qg
KCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CiAgICAgICAgc3NpemVfdCAo
KnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgICAg
IHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBs
b2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikgKHN0cnVjdCBmaWxlICosIHZvaWQgKiwg
ZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwg
c3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0
IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CiAg
ICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
KTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwog
ICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqcmVsZWFz
ZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpmc3luYykg
KHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50IGRhdGFzeW5jKTsKICAgICAgICBp
bnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICosIGludCk7CiAgICAgICAgaW50ICgqbG9j
aykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICBzc2l6
ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWdu
ZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZXYpIChzdHJ1Y3QgZmls
ZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAg
ICAgIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICosIGlu
dCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKICAgICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3Vu
bWFwcGVkX2FyZWEpKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwp9OwoKc3RydWN0IGlub2RlX29wZXJhdGlv
bnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkg
KixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmxvb2t1cCkgKHN0cnVjdCBpbm9kZSAq
LHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbGluaykgKHN0cnVjdCBkZW50cnkgKixz
dHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnVubGluaykgKHN0
cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqc3ltbGluaykgKHN0
cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25zdCBjaGFyICopOwogICAgICAgIGludCAo
Km1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGludCk7CiAgICAgICAgaW50
ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAo
Km1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGludCxpbnQpOwogICAgICAg
IGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAg
IGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosaW50KTsKICAgICAgICBp
bnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsK
ICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgaW50ICgq
cGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIGludCAoKnJldmFsaWRh
dGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVu
dHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBpbnQgKCpnZXRhdHRyKSAoc3RydWN0IGRl
bnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoKc3RydWN0IHN1cGVyX29wZXJhdGlvbnMg
ewogICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0IGlub2RlICopOwoKCgoKCgoKICAg
ICAgICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSA7CiAgICAg
ICAgdm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp3
cml0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIHZvaWQgKCpwdXRfaW5v
ZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAoKmRlbGV0ZV9pbm9kZSkgKHN0cnVj
dCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2Nr
ICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsK
ICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICop
OwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAg
ICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsK
ICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBj
aGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAg
ICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwojIDg5MyAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKICAgICAgICBz
dHJ1Y3QgZGVudHJ5ICogKCpmaF90b19kZW50cnkpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIF9f
dTMyICpmaCwgaW50IGxlbiwgaW50IGZodHlwZSwgaW50IHBhcmVudCk7CiAgICAgICAgaW50ICgq
ZGVudHJ5X3RvX2ZoKShzdHJ1Y3QgZGVudHJ5ICosIF9fdTMyICpmaCwgaW50ICpsZW5wLCBpbnQg
bmVlZF9wYXJlbnQpOwp9OwojIDkwNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQgX19tYXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9k
ZSAqLCBpbnQpOwpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5v
ZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5KGlub2RlLCAoMSB8IDIgfCA0
KSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5X3N5bmMoc3RydWN0IGlu
b2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9kZV9kaXJ0eShpbm9kZSwgMSk7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5X3BhZ2VzKHN0cnVjdCBpbm9kZSAqaW5v
ZGUpCnsKICAgICAgICBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUsIDQpOwp9CgpzdHJ1Y3QgZHF1
b3Rfb3BlcmF0aW9ucyB7CiAgICAgICAgdm9pZCAoKmluaXRpYWxpemUpIChzdHJ1Y3QgaW5vZGUg
Kiwgc2hvcnQpOwogICAgICAgIHZvaWQgKCpkcm9wKSAoc3RydWN0IGlub2RlICopOwogICAgICAg
IGludCAoKmFsbG9jX2Jsb2NrKSAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIGNoYXIp
OwogICAgICAgIGludCAoKmFsbG9jX2lub2RlKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2ln
bmVkIGxvbmcpOwogICAgICAgIHZvaWQgKCpmcmVlX2Jsb2NrKSAoc3RydWN0IGlub2RlICosIHVu
c2lnbmVkIGxvbmcpOwogICAgICAgIHZvaWQgKCpmcmVlX2lub2RlKSAoY29uc3Qgc3RydWN0IGlu
b2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKnRyYW5zZmVyKSAoc3RydWN0IGlu
b2RlICosIHN0cnVjdCBpYXR0ciAqKTsKfTsKCnN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHsKICAg
ICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGludCBmc19mbGFnczsKICAgICAgICBzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKigqcmVhZF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lk
ICosIGludCk7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXI7CiAgICAgICAgc3RydWN0IGZp
bGVfc3lzdGVtX3R5cGUgKiBuZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnNfc3VwZXJz
Owp9OwojIDk2NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMu
aCIKZXh0ZXJuIGludCByZWdpc3Rlcl9maWxlc3lzdGVtKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBl
ICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1f
dHlwZSAqKTsKZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqa2Vybl9tb3VudChzdHJ1Y3QgZmlsZV9z
eXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCBtYXlfdW1vdW50KHN0cnVjdCB2ZnNtb3VudCAqKTsK
ZXh0ZXJuIGxvbmcgZG9fbW91bnQoY2hhciAqLCBjaGFyICosIGNoYXIgKiwgdW5zaWduZWQgbG9u
Zywgdm9pZCAqKTsKCgoKZXh0ZXJuIGludCB2ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAq
LCBzdHJ1Y3Qgc3RhdGZzICopOwojIDk4MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIGludCBsb2Nrc19tYW5kYXRvcnlfbG9ja2VkKHN0cnVj
dCBpbm9kZSAqKTsKZXh0ZXJuIGludCBsb2Nrc19tYW5kYXRvcnlfYXJlYShpbnQsIHN0cnVjdCBp
bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIHNpemVfdCk7CiMgOTkzICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIGludCBs
b2Nrc192ZXJpZnlfbG9ja2VkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBpZiAoKCgo
aW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAy
MDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19t
YW5kYXRvcnlfbG9ja2VkKGlub2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGlu
ZSBpbnQgbG9ja3NfdmVyaWZ5X2FyZWEoaW50IHJlYWRfd3JpdGUsIHN0cnVjdCBpbm9kZSAqaW5v
ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxw
LCBsb2ZmX3Qgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgY291bnQpCnsKICAgICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3Ni
LT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTAp
KSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJl
YShyZWFkX3dyaXRlLCBpbm9kZSwgZmlscCwgb2Zmc2V0LCBjb3VudCk7CiAgICAgICAgcmV0dXJu
IDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGxvY2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5v
ZGUgKmlub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmls
ZSAqZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9mZl90IHNpemUp
CnsKICAgICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdz
ICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAy
MDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYSgKICAgICAg
ICAgICAgICAgICAgICAgICAgMiwgaW5vZGUsIGZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAg
IHNpemUgPCBpbm9kZS0+aV9zaXplID8gc2l6ZSA6IGlub2RlLT5pX3NpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgIChzaXplIDwgaW5vZGUtPmlfc2l6ZSA/IGlub2RlLT5pX3NpemUgLSBzaXpl
CiAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemUgLSBpbm9kZS0+aV9zaXplKQogICAgICAg
ICAgICAgICAgKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZ2V0X2xl
YXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBtb2RlKQp7CiAgICAgICAgaWYg
KGlub2RlLT5pX2Zsb2NrICYmIChpbm9kZS0+aV9mbG9jay0+ZmxfZmxhZ3MgJiAzMikpCiAgICAg
ICAgICAgICAgICByZXR1cm4gX19nZXRfbGVhc2UoaW5vZGUsIG1vZGUpOwogICAgICAgIHJldHVy
biAwOwp9CgoKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfb3Blbihjb25z
dCBjaGFyICosIGludCwgaW50KTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5
c19jbG9zZSh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0cnVjdCBkZW50
cnkgKiwgbG9mZl90IHN0YXJ0KTsKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9vcGVuKGNvbnN0
IGNoYXIgKiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlfb3BlbihzdHJ1
Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwpleHRlcm4gaW50IGZpbHBfY2xv
c2Uoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBpZCk7CmV4dGVybiBjaGFyICogZ2V0bmFtZShj
b25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNpZ25lZCBsb25n
KTsKCgoKCmVudW0ge0JERVZfRklMRSwgQkRFVl9TV0FQLCBCREVWX0ZTLCBCREVWX1JBV307CmV4
dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1
Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9ibGtk
ZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGJsb2NrX2Rldmlj
ZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4gaW50IGJkX2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9k
ZSk7CmV4dGVybiB2b2lkIGJkX2ZvcmdldChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZv
aWQgYmRwdXQoc3RydWN0IGJsb2NrX2RldmljZSAqKTsKZXh0ZXJuIHN0cnVjdCBjaGFyX2Rldmlj
ZSAqY2RnZXQoZGV2X3QpOwpleHRlcm4gdm9pZCBjZHB1dChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7
CmV4dGVybiBpbnQgYmxrZGV2X29wZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpl
eHRlcm4gaW50IGJsa2Rldl9jbG9zZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4
dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRlZl9ibGtfZm9wczsKZXh0ZXJuIHN0cnVjdCBh
ZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgZGVmX2Jsa19hb3BzOwpleHRlcm4gc3RydWN0IGZpbGVf
b3BlcmF0aW9ucyBkZWZfZmlmb19mb3BzOwpleHRlcm4gaW50IGlvY3RsX2J5X2JkZXYoc3RydWN0
IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxr
ZGV2X2dldChzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIG1vZGVfdCwgdW5zaWduZWQsIGludCk7CmV4
dGVybiBpbnQgYmxrZGV2X3B1dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIGludCk7CgoKZXh0ZXJu
IGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqZ2V0X2Jsa2ZvcHModW5zaWdu
ZWQgaW50KTsKZXh0ZXJuIGludCByZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBj
aGFyICosIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9j
aHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGNocmRldl9vcGVu
KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBiZGV2
bmFtZShrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hhciAqIGNkZXZuYW1lKGtkZXZfdCk7CmV4dGVy
biBjb25zdCBjaGFyICoga2Rldm5hbWUoa2Rldl90KTsKZXh0ZXJuIHZvaWQgaW5pdF9zcGVjaWFs
X2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1bW9kZV90LCBpbnQpOwoKCmV4dGVybiB2b2lkIG1ha2Vf
YmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpc19iYWRfaW5vZGUoc3RydWN0
IGlub2RlICopOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmVhZF9maWZvX2ZvcHM7
CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHdyaXRlX2ZpZm9fZm9wczsKZXh0ZXJuIHN0
cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3cl9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9v
cGVyYXRpb25zIHJlYWRfcGlwZV9mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3
cml0ZV9waXBlX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJkd3JfcGlwZV9m
b3BzOwoKZXh0ZXJuIGludCBmc19tYXlfcmVtb3VudF9ybyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7
CgpleHRlcm4gaW50IHRyeV90b19mcmVlX2J1ZmZlcnMoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQg
aW50KTsKZXh0ZXJuIHZvaWQgcmVmaWxlX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBidWYp
OwpleHRlcm4gdm9pZCBlbmRfYnVmZmVyX2lvX3N5bmMoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwg
aW50IHVwdG9kYXRlKTsKCgpleHRlcm4gdm9pZCBzZXRfYnVmZmVyX2FzeW5jX2lvKHN0cnVjdCBi
dWZmZXJfaGVhZCAqYmgpIDsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGdldF9iaChzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGF0b21pY19pbmMoJihiaCktPmJfY291bnQpOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21p
Y19kZWMoJmJoLT5iX2NvdW50KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVy
X3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgb24pCnsKICAgICAgICBpZiAo
b24pCiAgICAgICAgICAgICAgICBzZXRfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUpOwog
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2JpdChCSF9VcHRvZGF0ZSwgJmJoLT5i
X3N0YXRlKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVhbihzdHJ1
Y3QgYnVmZmVyX2hlYWQgKmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcihiaCk7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBtYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkK
ewogICAgICAgIGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoQkhfRGlydHksICYoYmgpLT5iX3N0YXRl
KSkKICAgICAgICAgICAgICAgIF9fbWFya19idWZmZXJfY2xlYW4oYmgpOwp9CgpleHRlcm4gdm9p
ZCBfX21hcmtfZGlydHkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpleHRlcm4gdm9pZCBfX21hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJf
aGVhZCAqYmgpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgbWFya19i
dWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwpleHRlcm4gdm9pZCBidWZmZXJfaW5zZXJ0X2lub2RlX2RhdGFfcXVldWUoc3RydWN0
IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBpbm9kZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2J1ZmZlcl9hc3luYyhzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBiaCwgaW50IG9uKQp7CiAgICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0
X2JpdChCSF9Bc3luYywgJmJoLT5iX3N0YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICBjbGVhcl9iaXQoQkhfQXN5bmMsICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCBidWZmZXJfSU9fZXJyb3Ioc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAg
ICBtYXJrX2J1ZmZlcl9jbGVhbihiaCk7CgoKCiAgICAgICAgYmgtPmJfZW5kX2lvKGJoLCAwKTsK
fQoKZXh0ZXJuIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShzdHJ1Y3QgYnVmZmVyX2hl
YWQgKiwgc3RydWN0IGlub2RlICopOwpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfZGly
dHlfaW5vZGUoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgc3RydWN0IGlub2RlICppbm9kZSkKewog
ICAgICAgIG1hcmtfYnVmZmVyX2RpcnR5KGJoKTsKICAgICAgICBidWZmZXJfaW5zZXJ0X2lub2Rl
X3F1ZXVlKGJoLCBpbm9kZSk7Cn0KCmV4dGVybiB2b2lkIGJhbGFuY2VfZGlydHkodm9pZCk7CmV4
dGVybiBpbnQgY2hlY2tfZGlza19jaGFuZ2Uoa2Rldl90KTsKZXh0ZXJuIGludCBpbnZhbGlkYXRl
X2lub2RlcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiBpbnQgaW52YWxpZGF0ZV9kZXZp
Y2Uoa2Rldl90LCBpbnQpOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX3BhZ2VzKHN0cnVj
dCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9kZV9wYWdlczIoc3RydWN0IGFk
ZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfYnVmZmVycyhzdHJ1
Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9iZGV2KHN0cnVjdCBibG9ja19k
ZXZpY2UgKiwgaW50KTsKZXh0ZXJuIHZvaWQgX19pbnZhbGlkYXRlX2J1ZmZlcnMoa2Rldl90IGRl
diwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXMoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3lu
Y191bmxvY2tlZF9pbm9kZXModm9pZCk7CmV4dGVybiB2b2lkIHdyaXRlX2lub2RlX25vdyhzdHJ1
Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBzeW5jX2J1ZmZlcnMoa2Rldl90LCBpbnQpOwpl
eHRlcm4gdm9pZCBzeW5jX2RldihrZGV2X3QpOwpleHRlcm4gaW50IGZzeW5jX2RldihrZGV2X3Qp
OwpleHRlcm4gaW50IGZzeW5jX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGlu
dCBmc3luY19ub19zdXBlcihrZGV2X3QpOwpleHRlcm4gdm9pZCBzeW5jX2lub2Rlc19zYihzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiBpbnQgb3N5bmNfaW5vZGVfYnVmZmVycyhzdHJ1Y3Qg
aW5vZGUgKik7CmV4dGVybiBpbnQgb3N5bmNfaW5vZGVfZGF0YV9idWZmZXJzKHN0cnVjdCBpbm9k
ZSAqKTsKZXh0ZXJuIGludCBmc3luY19pbm9kZV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIGludCBmc3luY19pbm9kZV9kYXRhX2J1ZmZlcnMoc3RydWN0IGlub2RlICopOwpleHRlcm4g
aW50IGlub2RlX2hhc19idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZmlsZW1h
cF9mZGF0YXN5bmMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIGZpbGVtYXBf
ZmRhdGF3YWl0KHN0cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBzeW5jX3N1cGVy
cyhrZGV2X3QpOwpleHRlcm4gaW50IGJtYXAoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBp
bnQgbm90aWZ5X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKZXh0ZXJu
IGludCBwZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19wZXJt
aXNzaW9uKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IGdldF93cml0ZV9hY2Nlc3Mo
c3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGRlbnlfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxl
ICopOwpzdGF0aWMgaW5saW5lIHZvaWQgcHV0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgaW5vZGUgKiBp
bm9kZSkKewogICAgICAgIGF0b21pY19kZWMoJmlub2RlLT5pX3dyaXRlY291bnQpOwp9CnN0YXRp
YyBpbmxpbmUgdm9pZCBhbGxvd193cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmZpbGUpCnsKICAg
ICAgICBpZiAoZmlsZSkKICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJmZpbGUtPmZfZGVudHJ5
LT5kX2lub2RlLT5pX3dyaXRlY291bnQpOwp9CmV4dGVybiBpbnQgZG9fcGlwZShpbnQgKik7Cgpl
eHRlcm4gaW50IG9wZW5fbmFtZWkoY29uc3QgY2hhciAqLCBpbnQsIGludCwgc3RydWN0IG5hbWVp
ZGF0YSAqKTsKCmV4dGVybiBpbnQga2VybmVsX3JlYWQoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQg
bG9uZywgY2hhciAqLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogb3Blbl9l
eGVjKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGludCBpc19zdWJkaXIoc3RydWN0IGRlbnRyeSAq
LCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW5vX3QgZmluZF9pbm9kZV9udW1iZXIoc3RydWN0
IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKIyAxMjM0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKkVSUl9QVFIobG9u
ZyBlcnJvcikKewogICAgICAgIHJldHVybiAodm9pZCAqKSBlcnJvcjsKfQoKc3RhdGljIGlubGlu
ZSBsb25nIFBUUl9FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAgcmV0dXJuIChsb25nKSBw
dHI7Cn0KCnN0YXRpYyBpbmxpbmUgbG9uZyBJU19FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAg
ICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKXB0ciA+ICh1bnNpZ25lZCBsb25nKS0xMDAwTDsKfQoj
IDEyNjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmVu
dW0ge0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1QsIExBU1RfQklO
RH07CiMgMTI3NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMu
aCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHNpemVfdCB3cml0dGVuOwogICAgICAgIHNpemVf
dCBjb3VudDsKICAgICAgICBjaGFyICogYnVmOwogICAgICAgIGludCBlcnJvcjsKfSByZWFkX2Rl
c2NyaXB0b3JfdDsKCnR5cGVkZWYgaW50ICgqcmVhZF9hY3Rvcl90KShyZWFkX2Rlc2NyaXB0b3Jf
dCAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCgpleHRl
cm4gbG9mZl90IGRlZmF1bHRfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0
LCBpbnQgb3JpZ2luKTsKCmV4dGVybiBpbnQgX191c2VyX3dhbGsoY29uc3QgY2hhciAqLCB1bnNp
Z25lZCwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4
dGVybiBpbnQgcGF0aF9pbml0KGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRh
dGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IHBhdGhfd2Fsayhj
b25zdCBjaGFyICosIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gaW50IGxpbmtfcGF0aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVp
ZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHBhdGhfcmVs
ZWFzZShzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gaW50IGZvbGxvd19kb3duKHN0cnVjdCB2
ZnNtb3VudCAqKiwgc3RydWN0IGRlbnRyeSAqKik7CmV4dGVybiBpbnQgZm9sbG93X3VwKHN0cnVj
dCB2ZnNtb3VudCAqKiwgc3RydWN0IGRlbnRyeSAqKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICog
bG9va3VwX29uZV9sZW4oY29uc3QgY2hhciAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVy
biBzdHJ1Y3QgZGVudHJ5ICogbG9va3VwX2hhc2goc3RydWN0IHFzdHIgKiwgc3RydWN0IGRlbnRy
eSAqKTsKCgoKZXh0ZXJuIHZvaWQgaXB1dChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGZv
cmNlX2RlbGV0ZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ3JhYihz
dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9fdCBpdW5pcXVlKHN0cnVjdCBzdXBlcl9ibG9jayAq
LCBpbm9fdCk7Cgp0eXBlZGVmIGludCAoKmZpbmRfaW5vZGVfdCkoc3RydWN0IGlub2RlICosIHVu
c2lnbmVkIGxvbmcsIHZvaWQgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ2V0NChzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9uZywgZmluZF9pbm9kZV90LCB2b2lkICopOwpzdGF0
aWMgaW5saW5lIHN0cnVjdCBpbm9kZSAqaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNp
Z25lZCBsb25nIGlubykKewogICAgICAgIHJldHVybiBpZ2V0NChzYiwgaW5vLCAoKHZvaWQgKikw
KSwgKCh2b2lkICopMCkpOwp9CgpleHRlcm4gdm9pZCBjbGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBnZXRfZW1wdHlfaW5vZGUodm9pZCk7CgpzdGF0aWMg
aW5saW5lIHN0cnVjdCBpbm9kZSAqIG5ld19pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7
CiAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGdldF9lbXB0eV9pbm9kZSgpOwogICAgICAg
IGlmIChpbm9kZSkgewogICAgICAgICAgICAgICAgaW5vZGUtPmlfc2IgPSBzYjsKICAgICAgICAg
ICAgICAgIGlub2RlLT5pX2RldiA9IHNiLT5zX2RldjsKICAgICAgICAgICAgICAgIGlub2RlLT5p
X2Jsa2JpdHMgPSBzYi0+c19ibG9ja3NpemVfYml0czsKICAgICAgICB9CiAgICAgICAgcmV0dXJu
IGlub2RlOwp9CmV4dGVybiB2b2lkIHJlbW92ZV9zdWlkKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoK
ZXh0ZXJuIHZvaWQgaW5zZXJ0X2lub2RlX2hhc2goc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9p
ZCByZW1vdmVfaW5vZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZSAq
IGdldF9lbXB0eV9maWxwKHZvaWQpOwpleHRlcm4gdm9pZCBmaWxlX21vdmUoc3RydWN0IGZpbGUg
KmYsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICog
Z2V0X2hhc2hfdGFibGUoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKiBnZXRibGsoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiB2b2lkIGxsX3J3X2Jsb2NrKGlu
dCwgaW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaFtdKTsKZXh0ZXJuIHZvaWQgc3VibWl0X2Jo
KGludCwgc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gaW50IGlzX3JlYWRfb25seShrZGV2
X3QpOwpleHRlcm4gdm9pZCBfX2JyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBp
bmxpbmUgdm9pZCBicmVsc2Uoc3RydWN0IGJ1ZmZlcl9oZWFkICpidWYpCnsKICAgICAgICBpZiAo
YnVmKQogICAgICAgICAgICAgICAgX19icmVsc2UoYnVmKTsKfQpleHRlcm4gdm9pZCBfX2Jmb3Jn
ZXQoc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpzdGF0aWMgaW5saW5lIHZvaWQgYmZvcmdldChzdHJ1
Y3QgYnVmZmVyX2hlYWQgKmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBf
X2Jmb3JnZXQoYnVmKTsKfQpleHRlcm4gaW50IHNldF9ibG9ja3NpemUoa2Rldl90LCBpbnQpOwpl
eHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogYnJlYWQoa2Rldl90LCBpbnQsIGludCk7CmV4dGVy
biB2b2lkIHdha2V1cF9iZGZsdXNoKHZvaWQpOwoKZXh0ZXJuIGludCBicndfcGFnZShpbnQsIHN0
cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQgKGdldF9ibG9j
a190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwoKCmV4dGVy
biBpbnQgZGlzY2FyZF9iaF9wYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIGludCk7
CgoKZXh0ZXJuIGludCBibG9ja19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBjb25zdCBjaGFyICos
IGludCk7CmV4dGVybiBpbnQgYmxvY2tfd3JpdGVfZnVsbF9wYWdlKHN0cnVjdCBwYWdlKiwgZ2V0
X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBibG9ja19yZWFkX2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSos
IGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tfcHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFn
ZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBjb250X3By
ZXBhcmVfd3JpdGUoc3RydWN0IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGdldF9ibG9ja190
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICopOwpleHRl
cm4gaW50IGJsb2NrX2NvbW1pdF93cml0ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8pOwpleHRlcm4gaW50IGJsb2NrX3N5bmNfcGFnZShzdHJ1Y3QgcGFnZSAq
KTsKCmludCBnZW5lcmljX2Jsb2NrX2JtYXAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9uZywg
Z2V0X2Jsb2NrX3QgKik7CmludCBnZW5lcmljX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqLCBz
dHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwppbnQgYmxvY2tfdHJ1bmNhdGVfcGFn
ZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QsIGdldF9ibG9ja190ICopOwpleHRlcm4g
dm9pZCBjcmVhdGVfZW1wdHlfYnVmZmVycyhzdHJ1Y3QgcGFnZSAqLCBrZGV2X3QsIHVuc2lnbmVk
IGxvbmcpOwoKZXh0ZXJuIGludCB3YWl0Zm9yX29uZV9wYWdlKHN0cnVjdCBwYWdlKik7CmV4dGVy
biBpbnQgZ2VuZXJpY19maWxlX21tYXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICopOwpleHRlcm4gaW50IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2NyaXB0b3JfdCAqIGRl
c2MsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9u
ZyBzaXplKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3JlYWQoc3RydWN0IGZpbGUgKiwg
Y2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3dy
aXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVy
biB2b2lkIGRvX2dlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCByZWFk
X2Rlc2NyaXB0b3JfdCAqLCByZWFkX2FjdG9yX3QpOwpleHRlcm4gbG9mZl90IG5vX2xsc2Vlayhz
dHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBsb2Zm
X3QgZ2VuZXJpY19maWxlX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwg
aW50IG9yaWdpbik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUg
KiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfb3Bl
bihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKCmV4dGVybiBzdHJ1
Y3QgZmlsZV9vcGVyYXRpb25zIGdlbmVyaWNfcm9fZm9wczsKCmV4dGVybiBpbnQgdmZzX3JlYWRs
aW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBp
bnQgdmZzX2ZvbGxvd19saW5rKHN0cnVjdCBuYW1laWRhdGEgKiwgY29uc3QgY2hhciAqKTsKZXh0
ZXJuIGludCBwYWdlX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQpOwpleHRl
cm4gaW50IHBhZ2VfZm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRh
ICopOwpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2RlX29w
ZXJhdGlvbnM7CgpleHRlcm4gaW50IHZmc19yZWFkZGlyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJf
dCwgdm9pZCAqKTsKZXh0ZXJuIGludCBkY2FjaGVfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lk
ICosIGZpbGxkaXJfdCk7CgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9mc190
eXBlKGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc3Vw
ZXIoa2Rldl90KTsKZXh0ZXJuIHZvaWQgZHJvcF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi
KTsKc3RhdGljIGlubGluZSBpbnQgaXNfbW91bnRlZChrZGV2X3QgZGV2KQp7CiAgICAgICAgc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYiA9IGdldF9zdXBlcihkZXYpOwogICAgICAgIGlmIChzYikgewog
ICAgICAgICAgICAgICAgZHJvcF9zdXBlcihzYik7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsK
ICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVz
dGVyKGtkZXZfdCwgaW50IGJbXSwgaW50KTsKdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVy
X3N3YWIzMihrZGV2X3QsIGludCBiW10sIGludCk7CmV4dGVybiBrZGV2X3QgUk9PVF9ERVY7CmV4
dGVybiBjaGFyIHJvb3RfZGV2aWNlX25hbWVbXTsKCgpleHRlcm4gdm9pZCBzaG93X2J1ZmZlcnMo
dm9pZCk7CmV4dGVybiB2b2lkIG1vdW50X3Jvb3Qodm9pZCk7CgoKCgoKCmV4dGVybiBzc2l6ZV90
IGNoYXJfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRl
cm4gc3NpemVfdCBibG9ja19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2Zm
X3QgKik7CmV4dGVybiBpbnQgcmVhZF9haGVhZFtdOwoKZXh0ZXJuIHNzaXplX3QgY2hhcl93cml0
ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4g
c3NpemVfdCBibG9ja193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwg
bG9mZl90ICopOwoKZXh0ZXJuIGludCBmaWxlX2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBk
ZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2J1ZmZlcl9mZGF0YXN5bmMoc3RydWN0
IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVkIGxvbmcgZW5k
X2lkeCk7CmV4dGVybiBpbnQgZ2VuZXJpY19vc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKiwgaW50
KTsKCgoKCmV4dGVybiBpbnQgaW5vZGVfY2hhbmdlX29rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
aWF0dHIgKik7CmV4dGVybiBpbnQgaW5vZGVfc2V0YXR0cihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGlhdHRyICopOwojIDE0NTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqbG9ja19wYXJlbnQoc3RydWN0
IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGlyID0gZGdldChkZW50
cnktPmRfcGFyZW50KTsKCiAgICAgICAgZG93bigmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAg
ICAgcmV0dXJuIGRpcjsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVudHJ5ICpnZXRfcGFyZW50
KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZ2V0KGRlbnRyeS0+ZF9w
YXJlbnQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrX2RpcihzdHJ1Y3QgZGVudHJ5ICpk
aXIpCnsKICAgICAgICB1cCgmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChkaXIp
Owp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9kb3duKHN0cnVjdCBzZW1hcGhvcmUg
KnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIGlmIChzMSAhPSBzMikgewogICAg
ICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMikg
ewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMjsKICAg
ICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICBkb3duKHMxKTsKICAgICAgICB9CiAgICAgICAgZG93bihzMik7Cn0K
IyAxNTAyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpz
dGF0aWMgaW5saW5lIHZvaWQgdHJpcGxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgaWYg
KHMxICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVu
c2lnbmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQg
bG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzMyA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVk
IGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFw
aG9yZSAqdG1wID0gczI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsg
czEgPSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5z
aWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9
IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRv
d24oczEpOwogICAgICAgIH0gZWxzZSBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVk
IGxvbmcpIHMzKSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsK
ICAgICAgICAgICAgICAgIHMzID0gczI7IHMyID0gdG1wOwogICAgICAgIH0KICAgICAgICBkb3du
KHMyKTsKICAgICAgICBkb3duKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91cChz
dHJ1Y3Qgc2VtYXBob3JlICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICB1cChz
MSk7CiAgICAgICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgdHJpcGxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgdXAoczEpOwogICAg
ICAgIGlmIChzMSAhPSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKICAgICAgICB1cChzMyk7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfbG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3Ry
dWN0IGRlbnRyeSAqZDIpCnsKICAgICAgICBkb3VibGVfZG93bigmZDEtPmRfaW5vZGUtPmlfc2Vt
LCAmZDItPmRfaW5vZGUtPmlfc2VtKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91bmxv
Y2soc3RydWN0IGRlbnRyeSAqZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91Ymxl
X3VwKCZkMS0+ZF9pbm9kZS0+aV9zZW0sJmQyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1
dChkMSk7CiAgICAgICAgZHB1dChkMik7Cn0KIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCiMgMzIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBzdHJ1Y3QgX191
c2VyX2NhcF9oZWFkZXJfc3RydWN0IHsKICAgICAgICBfX3UzMiB2ZXJzaW9uOwogICAgICAgIGlu
dCBwaWQ7Cn0gKmNhcF91c2VyX2hlYWRlcl90OwoKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9k
YXRhX3N0cnVjdCB7CiAgICAgICAgX191MzIgZWZmZWN0aXZlOwogICAgICAgIF9fdTMyIHBlcm1p
dHRlZDsKICAgICAgICBfX3UzMiBpbmhlcml0YWJsZTsKfSAqY2FwX3VzZXJfZGF0YV90OwojIDU1
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5Lmgi
CnR5cGVkZWYgX191MzIga2VybmVsX2NhcF90OwojIDI4NCAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgpleHRlcm4ga2VybmVsX2NhcF90IGNh
cF9ic2V0OwojIDMxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
Y2FwYWJpbGl0eS5oIgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfY29tYmluZShrZXJu
ZWxfY2FwX3QgYSwga2VybmVsX2NhcF90IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAg
ICAoZGVzdCkgPSAoYSkgfCAoYik7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUg
a2VybmVsX2NhcF90IGNhcF9pbnRlcnNlY3Qoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBi
KQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpICYgKGIpOwogICAg
IHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfZHJvcChrZXJu
ZWxfY2FwX3QgYSwga2VybmVsX2NhcF90IGRyb3ApCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsK
ICAgICAoZGVzdCkgPSAoYSkgJiB+KGRyb3ApOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMg
aW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfaW52ZXJ0KGtlcm5lbF9jYXBfdCBjKQp7CiAgICAga2Vy
bmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gfihjKTsKICAgICByZXR1cm4gZGVzdDsKfQoj
IDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIg
MgojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9iaW5mbXRz
LmgiCnN0cnVjdCBsaW51eF9iaW5wcm17CiAgICAgICAgY2hhciBidWZbMTI4XTsKICAgICAgICBz
dHJ1Y3QgcGFnZSAqcGFnZVszMl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBwOwogICAgICAgIGlu
dCBzaF9iYW5nOwogICAgICAgIHN0cnVjdCBmaWxlICogZmlsZTsKICAgICAgICBpbnQgZV91aWQs
IGVfZ2lkOwogICAgICAgIGtlcm5lbF9jYXBfdCBjYXBfaW5oZXJpdGFibGUsIGNhcF9wZXJtaXR0
ZWQsIGNhcF9lZmZlY3RpdmU7CiAgICAgICAgaW50IGFyZ2MsIGVudmM7CiAgICAgICAgY2hhciAq
IGZpbGVuYW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZGVyLCBleGVjOwp9OwoKCgoKCnN0
cnVjdCBsaW51eF9iaW5mbXQgewogICAgICAgIHN0cnVjdCBsaW51eF9iaW5mbXQgKiBuZXh0Owog
ICAgICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZTsKICAgICAgICBpbnQgKCpsb2FkX2JpbmFyeSko
c3RydWN0IGxpbnV4X2JpbnBybSAqLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwogICAgICAgIGlu
dCAoKmxvYWRfc2hsaWIpKHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmNvcmVfZHVtcCko
bG9uZyBzaWduciwgc3RydWN0IHB0X3JlZ3MgKiByZWdzLCBzdHJ1Y3QgZmlsZSAqIGZpbGUpOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbWluX2NvcmVkdW1wOwp9OwoKZXh0ZXJuIGludCByZWdpc3Rl
cl9iaW5mbXQoc3RydWN0IGxpbnV4X2JpbmZtdCAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2Jp
bmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICopOwoKZXh0ZXJuIGludCBwcmVwYXJlX2JpbnBybShz
dHJ1Y3QgbGludXhfYmlucHJtICopOwpleHRlcm4gdm9pZCByZW1vdmVfYXJnX3plcm8oc3RydWN0
IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIGludCBzZWFyY2hfYmluYXJ5X2hhbmRsZXIoc3RydWN0
IGxpbnV4X2JpbnBybSAqLHN0cnVjdCBwdF9yZWdzICopOwpleHRlcm4gaW50IGZsdXNoX29sZF9l
eGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBzZXR1cF9hcmdfcGFn
ZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pOwpleHRlcm4gaW50IGNvcHlfc3RyaW5ncyhp
bnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CmV4dGVybiBp
bnQgY29weV9zdHJpbmdzX2tlcm5lbChpbnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3RydWN0IGxpbnV4
X2JpbnBybSAqYnBybSk7CmV4dGVybiB2b2lkIGNvbXB1dGVfY3JlZHMoc3RydWN0IGxpbnV4X2Jp
bnBybSAqYmlucHJtKTsKZXh0ZXJuIGludCBkb19jb3JlZHVtcChsb25nIHNpZ25yLCBzdHJ1Y3Qg
cHRfcmVncyAqIHJlZ3MpOwpleHRlcm4gdm9pZCBzZXRfYmluZm10KHN0cnVjdCBsaW51eF9iaW5m
bXQgKm5ldyk7CiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC90aHJlYWRzLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L2tlcm5lbC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgv
aW5jbHVkZS9saW51eC90aW1lcy5oIiAxCgoKCnN0cnVjdCB0bXMgewogICAgICAgIGNsb2NrX3Qg
dG1zX3V0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX3N0aW1lOwogICAgICAgIGNsb2NrX3QgdG1z
X2N1dGltZTsKICAgICAgICBjbG9ja190IHRtc19jc3RpbWU7Cn07CiMgMTQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIiAxCiMgNTQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEKIyA1NSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIgMgojIDE1MiAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdGltZXguaCIgMQojIDkgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL21zci5oIiAxCiMgMTEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMzIgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS90aW1leC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBjeWNsZXNfdDsKCmV4dGVybiBjeWNsZXNfdCBjYWNoZWZsdXNoX3RpbWU7CgpzdGF0
aWMgaW5saW5lIGN5Y2xlc190IGdldF9jeWNsZXMgKHZvaWQpCnsKCgoKICAgICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgcmV0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDog
Ij1BIiAocmV0KSk7CiAgICAgICAgcmV0dXJuIHJldDsKCn0KCmV4dGVybiB1bnNpZ25lZCBsb25n
IGNwdV9raHo7CiMgMTUzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC90aW1leC5oIiAyCiMgMTYxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC90aW1leC5oIgpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2lnbmVkIGludCBtb2RlczsK
ICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAgICAgICAgbG9uZyBtYXhl
cnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBzdGF0dXM7CiAgICAgICAg
bG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAgICAgICBsb25nIHRvbGVy
YW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAgICAgbG9uZyB0aWNrOwoK
ICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7CiAgICAgICAgaW50IHNo
aWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0Y250OwogICAgICAgIGxv
bmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxvbmcgc3RiY250OwoKICAg
ICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwogICAgICAgIGludCA6MzI7
IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDozMjsgaW50IDozMjsgaW50
IDozMjsgaW50IDozMjsKfTsKIyAyNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3RpbWV4LmgiCmV4dGVybiBsb25nIHRpY2s7CmV4dGVybiBpbnQgdGlja2FkajsK
CgoKCmV4dGVybiBpbnQgdGltZV9zdGF0ZTsKZXh0ZXJuIGludCB0aW1lX3N0YXR1czsKZXh0ZXJu
IGxvbmcgdGltZV9vZmZzZXQ7CmV4dGVybiBsb25nIHRpbWVfY29uc3RhbnQ7CmV4dGVybiBsb25n
IHRpbWVfdG9sZXJhbmNlOwpleHRlcm4gbG9uZyB0aW1lX3ByZWNpc2lvbjsKZXh0ZXJuIGxvbmcg
dGltZV9tYXhlcnJvcjsKZXh0ZXJuIGxvbmcgdGltZV9lc3RlcnJvcjsKCmV4dGVybiBsb25nIHRp
bWVfcGhhc2U7CmV4dGVybiBsb25nIHRpbWVfZnJlcTsKZXh0ZXJuIGxvbmcgdGltZV9hZGo7CmV4
dGVybiBsb25nIHRpbWVfcmVmdGltZTsKCmV4dGVybiBsb25nIHRpbWVfYWRqdXN0OwoKCmV4dGVy
biBsb25nIHBwc19vZmZzZXQ7CmV4dGVybiBsb25nIHBwc19qaXR0ZXI7CmV4dGVybiBsb25nIHBw
c19mcmVxOwpleHRlcm4gbG9uZyBwcHNfc3RhYmlsOwpleHRlcm4gbG9uZyBwcHNfdmFsaWQ7CgoK
ZXh0ZXJuIGludCBwcHNfc2hpZnQ7CmV4dGVybiBsb25nIHBwc19qaXRjbnQ7CmV4dGVybiBsb25n
IHBwc19jYWxjbnQ7CmV4dGVybiBsb25nIHBwc19lcnJjbnQ7CmV4dGVybiBsb25nIHBwc19zdGJj
bnQ7CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9yYnRy
ZWUuaCIgMQojIDk3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9y
YnRyZWUuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9r
ZXJuZWwuaCIgMQojIDk4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9yYnRyZWUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3N0ZGRlZi5oIiAxCiMgOTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3JidHJlZS5oIiAyCgp0eXBlZGVmIHN0cnVjdCByYl9ub2RlX3MKewogICAgICAgIHN0
cnVjdCByYl9ub2RlX3MgKiByYl9wYXJlbnQ7CiAgICAgICAgaW50IHJiX2NvbG9yOwoKCiAgICAg
ICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX3JpZ2h0OwogICAgICAgIHN0cnVjdCByYl9ub2RlX3Mg
KiByYl9sZWZ0Owp9CnJiX25vZGVfdDsKCnR5cGVkZWYgc3RydWN0IHJiX3Jvb3Rfcwp7CiAgICAg
ICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX25vZGU7Cn0KcmJfcm9vdF90OwoKCgoKCmV4dGVybiB2
b2lkIHJiX2luc2VydF9jb2xvcihyYl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwpleHRlcm4gdm9p
ZCByYl9lcmFzZShyYl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwoKc3RhdGljIGlubGluZSB2b2lk
IHJiX2xpbmtfbm9kZShyYl9ub2RlX3QgKiBub2RlLCByYl9ub2RlX3QgKiBwYXJlbnQsIHJiX25v
ZGVfdCAqKiByYl9saW5rKQp7CiAgICAgICAgbm9kZS0+cmJfcGFyZW50ID0gcGFyZW50OwogICAg
ICAgIG5vZGUtPnJiX2NvbG9yID0gMDsKICAgICAgICBub2RlLT5yYl9sZWZ0ID0gbm9kZS0+cmJf
cmlnaHQgPSAoKHZvaWQgKikwKTsKCiAgICAgICAgKnJiX2xpbmsgPSBub2RlOwp9CiMgMTYgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMTgg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEK
IyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEK
IyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIg
MQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL21tdS5oIiAx
CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdm9pZCAqc2VnbWVudHM7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBjcHV2YWxpZDsKfSBtbV9jb250ZXh0X3Q7CiMgMjIgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc21wLmgiIDEKIyA5ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zbXAuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEwICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zbXAuaCIgMgoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NtcC5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NtcC5oIiAxCgoKCgoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgOSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NtcC5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGhyZWFkcy5oIiAxCiMgMTAg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zbXAuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAxCiMgMTEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zbXAuaCIgMgoKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiIDEKIyAx
NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg
MTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAx
CiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9hcGljZGVmLmgi
IDEKIyAxMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9hcGljZGVm
LmgiCnN0cnVjdCBsb2NhbF9hcGljIHsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9f
cmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMjsKCiAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAgICAgICAg
ICAgICAgICAgICAgcGh5c19hcGljX2lkIDogNCwKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8yIDogNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNd
OwogICAgICAgIH0gaWQ7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAg
X19yZXNlcnZlZF8xIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2x2dCA6IDgsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDg7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IHZlcnNpb247CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDM7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDQ7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMDU7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f
cmVzZXJ2ZWRfMDY7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAy
NDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAg
fSB0cHI7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2
ZWRfMSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsK
ICAgICAgICB9IGFwcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAg
X19yZXNlcnZlZF8xIDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZF8yWzNdOwogICAgICAgIH0gcHByOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGVvaTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVk
WzNdOwogICAgICAgIH0gZW9pOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNl
cnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA3OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAgICAg
ICBsb2dpY2FsX2Rlc3QgOiA4OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRfMlszXTsKICAgICAgICB9IGxkcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyOCwKICAgICAgICAgICAgICAgICAgICAgICAg
bW9kZWwgOiA0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsK
ICAgICAgICB9IGRmcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBzcHVyaW91c192ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBhcGljX2Vu
YWJsZWQgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBmb2N1c19jcHUgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyMjsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBzdnI7CgogICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGlzciBbOF07CgogICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IHRtciBbOF07CgogICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGlyciBbOF07
CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBzZW5kX2NzX2Vycm9yIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWNlaXZlX2NzX2Vycm9yIDogMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZW5kX2FjY2VwdF9lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVjZWl2ZV9hY2NlcHRfZXJyb3IgOiAxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VuZF9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVjZWl2ZV9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWxsZWdhbF9yZWdpc3Rlcl9hZGRyZXNzIDogMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyNDsKICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICAgICAgICAgIH0gZXJyb3JfYml0
czsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBlcnJvcnM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl
c2VydmVkXzNbM107CiAgICAgICAgICAgICAgICB9IGFsbF9lcnJvcnM7CiAgICAgICAgfSBlc3I7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMDg7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f
cmVzZXJ2ZWRfMDk7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRd
OyB9IF9fcmVzZXJ2ZWRfMTA7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTE7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTI7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTM7CgogICAgICAgIHN0cnVjdCB7IHVu
c2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTQ7CgogICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAg
ICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3RpbmF0aW9uX21vZGUgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0
dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICBsZXZlbCA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdn
ZXIgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyLAogICAgICAg
ICAgICAgICAgICAgICAgICBzaG9ydGhhbmQgOiAyLAogICAgICAgICAgICAgICAgICAgICAgICBf
X3Jlc2VydmVkXzMgOiAxMjsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVk
XzRbM107CiAgICAgICAgfSBpY3IxOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
dW5pb24gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8x
IDogMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5c19kZXN0IDogNCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA0OwogICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zIDogMjQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9kZXN0IDogODsKICAgICAgICAgICAgICAgIH0g
ZGVzdDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAg
ICAgfSBpY3IyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sg
OiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lcl9tb2RlIDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gbHZ0X3RpbWVyOwoKICAgICAgICBzdHJ1Y3Qg
eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE1OwoKICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAg
ICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0
dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAg
ICAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNl
cnZlZF8zIDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNd
OwogICAgICAgIH0gbHZ0X3BjOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21v
ZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAg
ICAgICBwb2xhcml0eSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pcnIgOiAx
LAogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDE1
OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICB9
IGx2dF9saW50MDsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9s
YXJpdHkgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfaXJyIDogMSwKICAgICAg
ICAgICAgICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIG1h
c2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAxNTsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBsdnRfbGlu
dDE7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9y
IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogNCwKICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgX19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE1OwogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF9lcnJvcjsKCiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbml0aWFsX2NvdW50Owog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHRp
bWVyX2ljcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGN1cnJfY291bnQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdGltZXJfY2NyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE2OwoKICAgICAgICBzdHJ1Y3Qg
eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE3OwoKICAgICAgICBz
dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE4OwoKICAg
ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE5
OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpdmlzb3Ig
OiA0LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyODsKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9kY3I7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMjA7Cgp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIyAxOSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyA1MCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgplbnVtIGZpeGVkX2FkZHJlc3NlcyB7
CgogICAgICAgIEZJWF9BUElDX0JBU0UsCgoKICAgICAgICBGSVhfSU9fQVBJQ19CQVNFXzAsCiAg
ICAgICAgRklYX0lPX0FQSUNfQkFTRV9FTkQgPSBGSVhfSU9fQVBJQ19CQVNFXzAgKyA4IC0xLAoj
IDY4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiCiAg
ICAgICAgX19lbmRfb2ZfZml4ZWRfYWRkcmVzc2VzCn07CgpleHRlcm4gdm9pZCBfX3NldF9maXht
YXAgKGVudW0gZml4ZWRfYWRkcmVzc2VzIGlkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGh5cywgcGdwcm90X3QgZmxhZ3MpOwojIDk0ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiCmV4dGVybiB2
b2lkIF9fdGhpc19maXhtYXBfZG9lc19ub3RfZXhpc3Qodm9pZCk7CgoKCgoKCnN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbG9uZyBmaXhfdG9fdmlydChjb25zdCB1bnNpZ25lZCBpbnQgaWR4KQp7CiMg
MTEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiCiAg
ICAgICAgaWYgKGlkeCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMpCiAgICAgICAgICAgICAg
ICBfX3RoaXNfZml4bWFwX2RvZXNfbm90X2V4aXN0KCk7CgogICAgICAgIHJldHVybiAoKDB4ZmZm
ZmUwMDBVTCkgLSAoKGlkeCkgPDwgMTIpKTsKfQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9hc20vc21wLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvYXNtL3NtcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvYXNtL21wc3BlYy5oIiAxCiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKc3RydWN0IGludGVsX21wX2Zsb2F0aW5nCnsKICAgICAg
ICBjaGFyIG1wZl9zaWduYXR1cmVbNF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBtcGZfcGh5c3B0
cjsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wZl9sZW5ndGg7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBtcGZfc3BlY2lmaWNhdGlvbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wZl9jaGVja3N1bTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIG1wZl9mZWF0dXJlMTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IG1wZl9mZWF0dXJlMjsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wZl9mZWF0dXJlMzsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIG1wZl9mZWF0dXJlNDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wZl9m
ZWF0dXJlNTsKfTsKCnN0cnVjdCBtcF9jb25maWdfdGFibGUKewogICAgICAgIGNoYXIgbXBjX3Np
Z25hdHVyZVs0XTsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbXBjX2xlbmd0aDsKICAgICAgICBj
aGFyIG1wY19zcGVjOwogICAgICAgIGNoYXIgbXBjX2NoZWNrc3VtOwogICAgICAgIGNoYXIgbXBj
X29lbVs4XTsKICAgICAgICBjaGFyIG1wY19wcm9kdWN0aWRbMTJdOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbXBjX29lbXB0cjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcGNfb2Vtc2l6ZTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBtcGNfb2VtY291bnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBt
cGNfbGFwaWM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXNlcnZlZDsKfTsKIyA1OSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL21wc3BlYy5oIgpzdHJ1Y3QgbXBjX2Nv
bmZpZ19wcm9jZXNzb3IKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAg
dW5zaWduZWQgY2hhciBtcGNfYXBpY2lkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2FwaWN2
ZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfY3B1ZmxhZzsKCgogICAgICAgIHVuc2lnbmVk
IGxvbmcgbXBjX2NwdWZlYXR1cmU7CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtcGNfZmVhdHVy
ZWZsYWc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtcGNfcmVzZXJ2ZWRbMl07Cn07CgpzdHJ1Y3Qg
bXBjX2NvbmZpZ19idXMKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAg
dW5zaWduZWQgY2hhciBtcGNfYnVzaWQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfYnVzdHlw
ZVs2XSBfX2F0dHJpYnV0ZSgocGFja2VkKSk7Cn07CiMgMTAyICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9hc20vbXBzcGVjLmgiCnN0cnVjdCBtcGNfY29uZmlnX2lvYXBpYwp7
CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1w
Y19hcGljaWQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfYXBpY3ZlcjsKICAgICAgICB1bnNp
Z25lZCBjaGFyIG1wY19mbGFnczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtcGNfYXBpY2FkZHI7
Cn07CgpzdHJ1Y3QgbXBjX2NvbmZpZ19pbnRzcmMKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBj
X3R5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfaXJxdHlwZTsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBtcGNfaXJxZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19zcmNidXM7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBtcGNfc3JjYnVzaXJxOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
bXBjX2RzdGFwaWM7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfZHN0aXJxOwp9OwoKZW51bSBt
cF9pcnFfc291cmNlX3R5cGVzIHsKICAgICAgICBtcF9JTlQgPSAwLAogICAgICAgIG1wX05NSSA9
IDEsCiAgICAgICAgbXBfU01JID0gMiwKICAgICAgICBtcF9FeHRJTlQgPSAzCn07CgoKCgoKCnN0
cnVjdCBtcGNfY29uZmlnX2xpbnRzcmMKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7
CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfaXJxdHlwZTsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBtcGNfaXJxZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19zcmNidXNpZDsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIG1wY19zcmNidXNpcnE7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNf
ZGVzdGFwaWM7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2Rlc3RhcGljbGludDsKfTsKIyAx
NjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKZW51
bSBtcF9idXN0eXBlIHsKICAgICAgICBNUF9CVVNfSVNBID0gMSwKICAgICAgICBNUF9CVVNfRUlT
QSwKICAgICAgICBNUF9CVVNfUENJLAogICAgICAgIE1QX0JVU19NQ0EKfTsKZXh0ZXJuIGludCBt
cF9idXNfaWRfdG9fdHlwZSBbMzJdOwpleHRlcm4gaW50IG1wX2J1c19pZF90b19wY2lfYnVzIFsz
Ml07CgpleHRlcm4gdW5zaWduZWQgaW50IGJvb3RfY3B1X3BoeXNpY2FsX2FwaWNpZDsKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgcGh5c19jcHVfcHJlc2VudF9tYXA7CmV4dGVybiBpbnQgc21wX2ZvdW5k
X2NvbmZpZzsKZXh0ZXJuIHZvaWQgZmluZF9zbXBfY29uZmlnICh2b2lkKTsKZXh0ZXJuIHZvaWQg
Z2V0X3NtcF9jb25maWcgKHZvaWQpOwpleHRlcm4gaW50IG5yX2lvYXBpY3M7CmV4dGVybiBpbnQg
YXBpY192ZXJzaW9uIFsxNl07CmV4dGVybiBpbnQgbXBfYnVzX2lkX3RvX3R5cGUgWzMyXTsKZXh0
ZXJuIGludCBtcF9pcnFfZW50cmllczsKZXh0ZXJuIHN0cnVjdCBtcGNfY29uZmlnX2ludHNyYyBt
cF9pcnFzIFsyNTZdOwpleHRlcm4gaW50IG1wY19kZWZhdWx0X3R5cGU7CmV4dGVybiBpbnQgbXBf
YnVzX2lkX3RvX3BjaV9idXMgWzMyXTsKZXh0ZXJuIGludCBtcF9jdXJyZW50X3BjaV9pZDsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbXBfbGFwaWNfYWRkcjsKZXh0ZXJuIGludCBwaWNfbW9kZTsKZXh0
ZXJuIGludCB1c2luZ19hcGljX3RpbWVyOwojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9hc20vc21wLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvYXNtL2lvX2FwaWMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvYXNtL2lvX2FwaWMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvYXNtL2lvX2FwaWMuaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9hc20vaW9fYXBpYy5oIgpzdHJ1Y3QgSU9fQVBJQ19yZWdfMDAgewog
ICAgICAgIF9fdTMyIF9fcmVzZXJ2ZWRfMiA6IDI0LAogICAgICAgICAgICAgICAgSUQgOiA0LAog
ICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogNDsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2Vk
KSk7CgpzdHJ1Y3QgSU9fQVBJQ19yZWdfMDEgewogICAgICAgIF9fdTMyIHZlcnNpb24gOiA4LAog
ICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogNywKICAgICAgICAgICAgICAgIFBSUSA6IDEs
CiAgICAgICAgICAgICAgICBlbnRyaWVzIDogOCwKICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf
MSA6IDg7Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKc3RydWN0IElPX0FQSUNfcmVnXzAy
IHsKICAgICAgICBfX3UzMiBfX3Jlc2VydmVkXzIgOiAyNCwKICAgICAgICAgICAgICAgIGFyYml0
cmF0aW9uIDogNCwKICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDQ7Cn0gX19hdHRyaWJ1
dGVfXyAoKHBhY2tlZCkpOwoKCgoKZXh0ZXJuIGludCBucl9pb2FwaWNzOwpleHRlcm4gaW50IG5y
X2lvYXBpY19yZWdpc3RlcnNbOF07CgplbnVtIGlvYXBpY19pcnFfZGVzdGluYXRpb25fdHlwZXMg
ewogICAgICAgIGRlc3RfRml4ZWQgPSAwLAogICAgICAgIGRlc3RfTG93ZXN0UHJpbyA9IDEsCiAg
ICAgICAgZGVzdF9TTUkgPSAyLAogICAgICAgIGRlc3RfX3Jlc2VydmVkXzEgPSAzLAogICAgICAg
IGRlc3RfTk1JID0gNCwKICAgICAgICBkZXN0X0lOSVQgPSA1LAogICAgICAgIGRlc3RfX3Jlc2Vy
dmVkXzIgPSA2LAogICAgICAgIGRlc3RfRXh0SU5UID0gNwp9OwoKc3RydWN0IElPX0FQSUNfcm91
dGVfZW50cnkgewogICAgICAgIF9fdTMyIHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICBkZWxp
dmVyeV9tb2RlIDogMywKCgoKICAgICAgICAgICAgICAgIGRlc3RfbW9kZSA6IDEsCiAgICAgICAg
ICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgcG9sYXJpdHkgOiAx
LAogICAgICAgICAgICAgICAgaXJyIDogMSwKICAgICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAog
ICAgICAgICAgICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAx
NTsKCiAgICAgICAgdW5pb24geyBzdHJ1Y3QgeyBfX3UzMgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMjQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwaHlzaWNhbF9kZXN0IDogNCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0gcGh5c2ljYWw7CgogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBfX3Uz
MgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDog
MjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2Rlc3Qg
OiA4OwogICAgICAgICAgICAgICAgICAgICAgICB9IGxvZ2ljYWw7CiAgICAgICAgfSBkZXN0OwoK
fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgbXBjX2NvbmZp
Z19pb2FwaWMgbXBfaW9hcGljc1s4XTsKCgpleHRlcm4gaW50IG1wX2lycV9lbnRyaWVzOwoKCmV4
dGVybiBzdHJ1Y3QgbXBjX2NvbmZpZ19pbnRzcmMgbXBfaXJxc1syNTZdOwoKCmV4dGVybiBpbnQg
bXBjX2RlZmF1bHRfdHlwZTsKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlvX2FwaWNfcmVh
ZCh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZykKewogICAgICAgICooKHZvbGF0
aWxlIGludCAqKSgoMHhmZmZmZTAwMFVMKSAtICgoRklYX0lPX0FQSUNfQkFTRV8wICsgYXBpYykg
PDwgMTIpKSkgPSByZWc7CiAgICAgICAgcmV0dXJuICooKCh2b2xhdGlsZSBpbnQgKikoKDB4ZmZm
ZmUwMDBVTCkgLSAoKEZJWF9JT19BUElDX0JBU0VfMCArIGFwaWMpIDw8IDEyKSkpKzQpOwp9Cgpz
dGF0aWMgaW5saW5lIHZvaWQgaW9fYXBpY193cml0ZSh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWdu
ZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZhbHVlKQp7CiAgICAgICAgKigodm9sYXRpbGUgaW50
ICopKCgweGZmZmZlMDAwVUwpIC0gKChGSVhfSU9fQVBJQ19CQVNFXzAgKyBhcGljKSA8PCAxMikp
KSA9IHJlZzsKICAgICAgICAqKCgodm9sYXRpbGUgaW50ICopKCgweGZmZmZlMDAwVUwpIC0gKChG
SVhfSU9fQVBJQ19CQVNFXzAgKyBhcGljKSA8PCAxMikpKSs0KSA9IHZhbHVlOwp9CgoKCgoKc3Rh
dGljIGlubGluZSB2b2lkIGlvX2FwaWNfbW9kaWZ5KHVuc2lnbmVkIGludCBhcGljLCB1bnNpZ25l
ZCBpbnQgdmFsdWUpCnsKICAgICAgICAqKCgodm9sYXRpbGUgaW50ICopKCgweGZmZmZlMDAwVUwp
IC0gKChGSVhfSU9fQVBJQ19CQVNFXzAgKyBhcGljKSA8PCAxMikpKSs0KSA9IHZhbHVlOwp9CgoK
CgoKc3RhdGljIGlubGluZSB2b2lkIGlvX2FwaWNfc3luYyh1bnNpZ25lZCBpbnQgYXBpYykKewog
ICAgICAgICh2b2lkKSAqKCgodm9sYXRpbGUgaW50ICopKCgweGZmZmZlMDAwVUwpIC0gKChGSVhf
SU9fQVBJQ19CQVNFXzAgKyBhcGljKSA8PCAxMikpKSs0KTsKfQoKCmV4dGVybiBpbnQgc2tpcF9p
b2FwaWNfc2V0dXA7CiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2Fz
bS9zbXAuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20v
YXBpYy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9h
c20vYXBpYy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcG0uaCIgMQojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9wbS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2Nv
bmZpZy5oIiAxCiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3BtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9s
aXN0LmgiIDEKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
cG0uaCIgMgoKCgoKZW51bQp7CiAgICAgICAgUE1fU1VTUEVORCwKICAgICAgICBQTV9SRVNVTUUs
CgogICAgICAgIFBNX1NBVkVfU1RBVEUsCgoKICAgICAgICBQTV9TRVRfV0FLRVVQLAoKCiAgICAg
ICAgUE1fR0VUX1JFU09VUkNFUywKICAgICAgICBQTV9TRVRfUkVTT1VSQ0VTLAoKCiAgICAgICAg
UE1fRUpFQ1QsCiAgICAgICAgUE1fTE9DSywKfTsKCnR5cGVkZWYgaW50IHBtX3JlcXVlc3RfdDsK
CgoKCmVudW0KewogICAgICAgIFBNX1VOS05PV05fREVWID0gMCwKICAgICAgICBQTV9TWVNfREVW
LAogICAgICAgIFBNX1BDSV9ERVYsCiAgICAgICAgUE1fVVNCX0RFViwKICAgICAgICBQTV9TQ1NJ
X0RFViwKICAgICAgICBQTV9JU0FfREVWLAogICAgICAgIFBNX01URF9ERVYsCn07Cgp0eXBlZGVm
IGludCBwbV9kZXZfdDsKCgoKCmVudW0KewogICAgICAgIFBNX1NZU19VTktOT1dOID0gMHgwMDAw
MDAwMCwKICAgICAgICBQTV9TWVNfS0JDID0gMHg0MWQwMDMwMywKICAgICAgICBQTV9TWVNfQ09N
ID0gMHg0MWQwMDUwMCwKICAgICAgICBQTV9TWVNfSVJEQSA9IDB4NDFkMDA1MTAsCiAgICAgICAg
UE1fU1lTX0ZEQyA9IDB4NDFkMDA3MDAsCiAgICAgICAgUE1fU1lTX1ZHQSA9IDB4NDFkMDA5MDAs
CiAgICAgICAgUE1fU1lTX1BDTUNJQSA9IDB4NDFkMDBlMDAsCn07CiMgOTEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3BtLmgiCnN0cnVjdCBwbV9kZXY7Cgp0eXBl
ZGVmIGludCAoKnBtX2NhbGxiYWNrKShzdHJ1Y3QgcG1fZGV2ICpkZXYsIHBtX3JlcXVlc3RfdCBy
cXN0LCB2b2lkICpkYXRhKTsKCgoKCnN0cnVjdCBwbV9kZXYKewogICAgICAgIHBtX2Rldl90IHR5
cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpZDsKICAgICAgICBwbV9jYWxsYmFjayBjYWxsYmFj
azsKICAgICAgICB2b2lkICpkYXRhOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAg
ICAgIGludCBzdGF0ZTsKICAgICAgICBpbnQgcHJldl9zdGF0ZTsKCiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBlbnRyeTsKfTsKCgoKZXh0ZXJuIGludCBwbV9hY3RpdmU7CgoKCgoKCnN0cnVjdCBw
bV9kZXYgKnBtX3JlZ2lzdGVyKHBtX2Rldl90IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtX2NhbGxi
YWNrIGNhbGxiYWNrKTsKCgoKCnZvaWQgcG1fdW5yZWdpc3RlcihzdHJ1Y3QgcG1fZGV2ICpkZXYp
OwoKCgoKdm9pZCBwbV91bnJlZ2lzdGVyX2FsbChwbV9jYWxsYmFjayBjYWxsYmFjayk7CgoKCgpp
bnQgcG1fc2VuZChzdHJ1Y3QgcG1fZGV2ICpkZXYsIHBtX3JlcXVlc3RfdCBycXN0LCB2b2lkICpk
YXRhKTsKCgoKCmludCBwbV9zZW5kX2FsbChwbV9yZXF1ZXN0X3QgcnFzdCwgdm9pZCAqZGF0YSk7
CgoKCgpzdHJ1Y3QgcG1fZGV2ICpwbV9maW5kKHBtX2Rldl90IHR5cGUsIHN0cnVjdCBwbV9kZXYg
KmZyb20pOwoKc3RhdGljIGlubGluZSB2b2lkIHBtX2FjY2VzcyhzdHJ1Y3QgcG1fZGV2ICpkZXYp
IHt9CnN0YXRpYyBpbmxpbmUgdm9pZCBwbV9kZXZfaWRsZShzdHJ1Y3QgcG1fZGV2ICpkZXYpIHt9
CiMgMTg4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9wbS5oIgpl
eHRlcm4gdm9pZCAoKnBtX2lkbGUpKHZvaWQpOwpleHRlcm4gdm9pZCAoKnBtX3Bvd2VyX29mZiko
dm9pZCk7CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2FwaWMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9hcGljZGVm
LmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYXBpYy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5o
IiAxCiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2FwaWMuaCIg
MgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYXBpYy5oIgpz
dGF0aWMgX19pbmxpbmUgdm9pZCBhcGljX3dyaXRlKHVuc2lnbmVkIGxvbmcgcmVnLCB1bnNpZ25l
ZCBsb25nIHYpCnsKICAgICAgICAqKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKChmaXhfdG9f
dmlydChGSVhfQVBJQ19CQVNFKSkrcmVnKSkgPSB2Owp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZCBh
cGljX3dyaXRlX2F0b21pYyh1bnNpZ25lZCBsb25nIHJlZywgdW5zaWduZWQgbG9uZyB2KQp7CiAg
ICAgICAgKChfX3R5cGVvZl9fKCooKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoKGZpeF90b192
aXJ0KEZJWF9BUElDX0JBU0UpKStyZWcpKSkpX194Y2hnKCh1bnNpZ25lZCBsb25nKSh2KSwoKHZv
bGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoKGZpeF90b192aXJ0KEZJWF9BUElDX0JBU0UpKStyZWcp
KSxzaXplb2YoKigodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQ
SUNfQkFTRSkpK3JlZykpKSkpOwp9CgpzdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgbG9uZyBhcGlj
X3JlYWQodW5zaWduZWQgbG9uZyByZWcpCnsKICAgICAgICByZXR1cm4gKigodm9sYXRpbGUgdW5z
aWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQSUNfQkFTRSkpK3JlZykpOwp9CgpzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIGFwaWNfd2FpdF9pY3JfaWRsZSh2b2lkKQp7CiAgICAgICAgZG8g
eyB9IHdoaWxlICggYXBpY19yZWFkKCAweDMwMCApICYgMHgwMTAwMCApOwp9CiMgNTMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9hcGljLmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBhY2tfQVBJQ19pcnEodm9pZCkKewojIDYzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9hc20vYXBpYy5oIgogICAgICAgIGFwaWNfd3JpdGUoKDB4QjApLCgwKSk7Cn0K
CmV4dGVybiBpbnQgZ2V0X21heGx2dCh2b2lkKTsKZXh0ZXJuIHZvaWQgY2xlYXJfbG9jYWxfQVBJ
Qyh2b2lkKTsKZXh0ZXJuIHZvaWQgY29ubmVjdF9ic3BfQVBJQyAodm9pZCk7CmV4dGVybiB2b2lk
IGRpc2Nvbm5lY3RfYnNwX0FQSUMgKHZvaWQpOwpleHRlcm4gdm9pZCBkaXNhYmxlX2xvY2FsX0FQ
SUMgKHZvaWQpOwpleHRlcm4gaW50IHZlcmlmeV9sb2NhbF9BUElDICh2b2lkKTsKZXh0ZXJuIHZv
aWQgY2FjaGVfQVBJQ19yZWdpc3RlcnMgKHZvaWQpOwpleHRlcm4gdm9pZCBzeW5jX0FyYl9JRHMg
KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2JzcF9BUElDICh2b2lkKTsKZXh0ZXJuIHZvaWQgc2V0
dXBfbG9jYWxfQVBJQyAodm9pZCk7CmV4dGVybiB2b2lkIGluaXRfYXBpY19tYXBwaW5ncyAodm9p
ZCk7CmV4dGVybiB2b2lkIHNtcF9sb2NhbF90aW1lcl9pbnRlcnJ1cHQgKHN0cnVjdCBwdF9yZWdz
ICogcmVncyk7CmV4dGVybiB2b2lkIHNldHVwX0FQSUNfY2xvY2tzICh2b2lkKTsKZXh0ZXJuIHZv
aWQgc2V0dXBfYXBpY19ubWlfd2F0Y2hkb2cgKHZvaWQpOwpleHRlcm4gaW5saW5lIHZvaWQgbm1p
X3dhdGNoZG9nX3RpY2sgKHN0cnVjdCBwdF9yZWdzICogcmVncyk7CmV4dGVybiBpbnQgQVBJQ19p
bml0X3VuaXByb2Nlc3NvciAodm9pZCk7CgpleHRlcm4gc3RydWN0IHBtX2RldiAqYXBpY19wbV9y
ZWdpc3RlcihwbV9kZXZfdCwgdW5zaWduZWQgbG9uZywgcG1fY2FsbGJhY2spOwpleHRlcm4gdm9p
ZCBhcGljX3BtX3VucmVnaXN0ZXIoc3RydWN0IHBtX2RldiopOwoKZXh0ZXJuIHVuc2lnbmVkIGlu
dCBhcGljX3RpbWVyX2lycXMgWzMyXTsKZXh0ZXJuIGludCBjaGVja19ubWlfd2F0Y2hkb2cgKHZv
aWQpOwoKZXh0ZXJuIHVuc2lnbmVkIGludCBubWlfd2F0Y2hkb2c7CiMgMjIgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zbXAuaCIgMgojIDU1ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc21wLmgiCmV4dGVybiB2b2lkIHNtcF9hbGxvY19t
ZW1vcnkodm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBoeXNfY3B1X3ByZXNlbnRfbWFwOwpl
eHRlcm4gdW5zaWduZWQgbG9uZyBjcHVfb25saW5lX21hcDsKZXh0ZXJuIHZvbGF0aWxlIHVuc2ln
bmVkIGxvbmcgc21wX2ludmFsaWRhdGVfbmVlZGVkOwpleHRlcm4gaW50IHBpY19tb2RlOwpleHRl
cm4gdm9pZCBzbXBfZmx1c2hfdGxiKHZvaWQpOwpleHRlcm4gdm9pZCBzbXBfbWVzc2FnZV9pcnEo
aW50IGNwbCwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CmV4dGVybiB2b2lk
IHNtcF9zZW5kX3Jlc2NoZWR1bGUoaW50IGNwdSk7CmV4dGVybiB2b2lkIHNtcF9pbnZhbGlkYXRl
X3Jjdih2b2lkKTsKZXh0ZXJuIHZvaWQgKCptdHJyX2hvb2spICh2b2lkKTsKZXh0ZXJuIHZvaWQg
emFwX2xvd19tYXBwaW5ncyAodm9pZCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGNwdV9sb2dp
Y2FsX21hcChpbnQgY3B1KQp7CiAgICAgICAgcmV0dXJuIGNwdTsKfQpzdGF0aWMgaW5saW5lIGlu
dCBjcHVfbnVtYmVyX21hcChpbnQgY3B1KQp7CiAgICAgICAgcmV0dXJuIGNwdTsKfQoKCgoKCgpl
eHRlcm4gdm9sYXRpbGUgaW50IGNwdV90b19waHlzaWNhbF9hcGljaWRbMzJdOwpleHRlcm4gdm9s
YXRpbGUgaW50IHBoeXNpY2FsX2FwaWNpZF90b19jcHVbMjU2XTsKZXh0ZXJuIHZvbGF0aWxlIGlu
dCBjcHVfdG9fbG9naWNhbF9hcGljaWRbMzJdOwpleHRlcm4gdm9sYXRpbGUgaW50IGxvZ2ljYWxf
YXBpY2lkX3RvX2NwdVsyNTZdOwoKCgoKCmV4dGVybiB2b2lkIHNtcF9ib290X2NwdXModm9pZCk7
CmV4dGVybiB2b2lkIHNtcF9zdG9yZV9jcHVfaW5mbyhpbnQgaWQpOwojIDEwNiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NtcC5oIgpzdGF0aWMgX19pbmxpbmUgaW50
IGhhcmRfc21wX3Byb2Nlc3Nvcl9pZCh2b2lkKQp7CgogICAgICAgIHJldHVybiAoKCgqKHVuc2ln
bmVkIGxvbmcgKikoKGZpeF90b192aXJ0KEZJWF9BUElDX0JBU0UpKSsweDIwKSk+PjI0KSYweDBG
KTsKfQoKc3RhdGljIF9faW5saW5lIGludCBsb2dpY2FsX3NtcF9wcm9jZXNzb3JfaWQodm9pZCkK
ewoKICAgICAgICByZXR1cm4gKCgoKih1bnNpZ25lZCBsb25nICopKChmaXhfdG9fdmlydChGSVhf
QVBJQ19CQVNFKSkrMHhEMCkpPj4yNCkmMHhGRik7Cn0KIyAxNSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc21wLmgiIDIKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc21wLmgiCmV4dGVybiB2b2lkIHNtcF9zZW5kX3N0b3Ao
dm9pZCk7CgoKCgpleHRlcm4gdm9pZCBzbXBfc2VuZF9yZXNjaGVkdWxlKGludCBjcHUpIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCgoKCgpleHRlcm4gdm9pZCBzbXBfYm9vdF9jcHVzKHZv
aWQpOwoKCgoKZXh0ZXJuIHZvaWQgc21wX2NhbGxpbih2b2lkKTsKCgoKCmV4dGVybiB2b2lkIHNt
cF9jb21tZW5jZSh2b2lkKTsKCgoKCmV4dGVybiBpbnQgc21wX2NhbGxfZnVuY3Rpb24gKHZvaWQg
KCpmdW5jKSAodm9pZCAqaW5mbyksIHZvaWQgKmluZm8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCByZXRyeSwgaW50IHdhaXQpOwoKCgoKZXh0ZXJuIGludCBzbXBfdGhyZWFkc19y
ZWFkeTsKCmV4dGVybiBpbnQgc21wX251bV9jcHVzOwoKZXh0ZXJuIHZvbGF0aWxlIHVuc2lnbmVk
IGxvbmcgc21wX21zZ19kYXRhOwpleHRlcm4gdm9sYXRpbGUgaW50IHNtcF9zcmNfY3B1OwpleHRl
cm4gdm9sYXRpbGUgaW50IHNtcF9tc2dfaWQ7CiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC90dHkuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9tYWpvci5oIiAxCiMgMTc3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9tYWpvci5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgc2NzaV9i
bGtfbWFqb3IoaW50IG0pIHsKICAgICAgICByZXR1cm4gKCgobSkgPT0gOCB8fCAoKG0pID49IDY1
ICYmIChtKSA8PSA3MSkpIHx8IChtKSA9PSAxMSk7Cn0KIyAxOTAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21ham9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBp
ZGVfYmxrX21ham9yKGludCBtKQp7CiAgICAgICAgcmV0dXJuICgobSkgPT0gMyB8fCAobSkgPT0g
MjIgfHwgKG0pID09IDMzIHx8IChtKSA9PSAzNCB8fCAobSkgPT0gNTYgfHwgKG0pID09IDU3IHx8
IChtKSA9PSA4OCB8fCAobSkgPT0gODkgfHwgKG0pID09IDkwIHx8IChtKSA9PSA5MSk7Cn0KIyAy
MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90ZXJtaW9zLmgiIDEK
CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5o
IiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGVybWlv
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3Rlcm1p
b3MuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS90
ZXJtYml0cy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvcG9zaXhfdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2FzbS90ZXJtYml0cy5oIiAyCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgY2NfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgc3BlZWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdGNmbGFnX3Q7
CgoKc3RydWN0IHRlcm1pb3MgewogICAgICAgIHRjZmxhZ190IGNfaWZsYWc7CiAgICAgICAgdGNm
bGFnX3QgY19vZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX2NmbGFnOwogICAgICAgIHRjZmxhZ190
IGNfbGZsYWc7CiAgICAgICAgY2NfdCBjX2xpbmU7CiAgICAgICAgY2NfdCBjX2NjWzE5XTsKfTsK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2lvY3Rscy5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2lvY3RsLmgi
IDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vaW9jdGxzLmgi
IDIKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdGVybWlvcy5o
IiAyCgpzdHJ1Y3Qgd2luc2l6ZSB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3Nfcm93OwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHdzX2NvbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c194cGl4
ZWw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfeXBpeGVsOwp9OwoKCnN0cnVjdCB0ZXJtaW8g
ewogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfaWZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y19vZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX2NmbGFnOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGNfbGZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBjX2xpbmU7CiAgICAgICAgdW5z
aWduZWQgY2hhciBjX2NjWzhdOwp9OwojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAxCiMgMTE4ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90dHlfZHJpdmVyLmgiCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDExOSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAyCgpzdHJ1Y3QgdHR5
X2RyaXZlciB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGNvbnN0IGNoYXIgKmRyaXZlcl9u
YW1lOwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG5hbWVfYmFzZTsKICAg
ICAgICBzaG9ydCBtYWpvcjsKICAgICAgICBzaG9ydCBtaW5vcl9zdGFydDsKICAgICAgICBzaG9y
dCBudW07CiAgICAgICAgc2hvcnQgdHlwZTsKICAgICAgICBzaG9ydCBzdWJ0eXBlOwogICAgICAg
IHN0cnVjdCB0ZXJtaW9zIGluaXRfdGVybWlvczsKICAgICAgICBpbnQgZmxhZ3M7CiAgICAgICAg
aW50ICpyZWZjb3VudDsKICAgICAgICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NfZW50cnk7
CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm90aGVyOwoKCgoKICAgICAgICBzdHJ1Y3QgdHR5
X3N0cnVjdCAqKnRhYmxlOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlvczsKICAgICAg
ICBzdHJ1Y3QgdGVybWlvcyAqKnRlcm1pb3NfbG9ja2VkOwogICAgICAgIHZvaWQgKmRyaXZlcl9z
dGF0ZTsKCgoKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBz
dHJ1Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHR0eV9zdHJ1
Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAgICAgaW50ICgqd3JpdGUpKHN0cnVj
dCB0dHlfc3RydWN0ICogdHR5LCBpbnQgZnJvbV91c2VyLAogICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpOwogICAgICAgIHZvaWQgKCpwdXRf
Y2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgdW5zaWduZWQgY2hhciBjaCk7CiAgICAgICAg
dm9pZCAoKmZsdXNoX2NoYXJzKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBpbnQg
KCp3cml0ZV9yb29tKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBpbnQgKCpjaGFy
c19pbl9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKmlvY3Rs
KShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogICAgICAgIHZv
aWQgKCpzZXRfdGVybWlvcykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHRlcm1pb3Mg
KiBvbGQpOwogICAgICAgIHZvaWQgKCp0aHJvdHRsZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkp
OwogICAgICAgIHZvaWQgKCp1bnRocm90dGxlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CiAg
ICAgICAgdm9pZCAoKnN0b3ApKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQg
KCpzdGFydCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKmhhbmd1cCko
c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKmJyZWFrX2N0bCkoc3RydWN0
IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHN0YXRlKTsKICAgICAgICB2b2lkICgqZmx1c2hfYnVmZmVy
KShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqc2V0X2xkaXNjKShzdHJ1
Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqd2FpdF91bnRpbF9zZW50KShzdHJ1
Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgdGltZW91dCk7CiAgICAgICAgdm9pZCAoKnNlbmRfeGNo
YXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgY2gpOwogICAgICAgIGludCAoKnJlYWRf
cHJvYykoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7CiAgICAgICAgaW50
ICgqd3JpdGVfcHJvYykoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvdW50LCB2b2lkICpkYXRhKTsK
CgoKCiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm5leHQ7CiAgICAgICAgc3RydWN0IHR0eV9k
cml2ZXIgKnByZXY7Cn07CiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvdHR5X2xkaXNjLmgiIDEKIyAxMDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyAxMDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTAyICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMgoKc3RydWN0IHR0eV9sZGlzYyB7
CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG51bTsK
ICAgICAgICBpbnQgZmxhZ3M7CgoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0IHR0eV9zdHJ1
Y3QgKik7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAg
ICB2b2lkICgqZmx1c2hfYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBz
c2l6ZV90ICgqY2hhcnNfaW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAg
ICBzc2l6ZV90ICgqcmVhZCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICog
ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6ZV90
IG5yKTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBz
dHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyICogYnVmLCBzaXplX3QgbnIpOwogICAgICAgIGludCAoKmlvY3RsKShzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogICAgICAgIHZvaWQgKCpz
ZXRfdGVybWlvcykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHRlcm1pb3MgKiBvbGQp
OwogICAgICAgIHVuc2lnbmVkIGludCAoKnBvbGwpKHN0cnVjdCB0dHlfc3RydWN0ICosIHN0cnVj
dCBmaWxlICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBvbGxfdGFibGVf
c3RydWN0ICopOwoKCgoKICAgICAgICB2b2lkICgqcmVjZWl2ZV9idWYpKHN0cnVjdCB0dHlfc3Ry
dWN0ICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqZnAsIGludCBjb3VudCk7CiAgICAgICAgaW50ICgqcmVjZWl2ZV9yb29tKShz
dHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfd2FrZXVwKShzdHJ1Y3Qg
dHR5X3N0cnVjdCAqKTsKfTsKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvdHR5LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3R0eS5oIiAyCiMgNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3R0eS5oIgpzdHJ1Y3Qgc2NyZWVuX2luZm8gewogICAgICAgIHVuc2lnbmVkIGNo
YXIgb3JpZ194OwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ195OwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGRvbnR1c2UxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWdfdmlkZW9fcGFnZTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fbW9kZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIG9yaWdfdmlkZW9fY29sczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bnVzZWQyOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IG9yaWdfdmlkZW9fZWdhX2J4OwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHVudXNlZDM7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX2xpbmVzOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19pc1ZHQTsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBvcmlnX3ZpZGVvX3BvaW50czsKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGxmYl93aWR0aDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfaGVpZ2h0OwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGxmYl9kZXB0aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGxmYl9iYXNlOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgbGZiX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZG9udHVzZTIsIGRvbnR1
c2UzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxmYl9saW5lbGVuZ3RoOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgcmVkX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciByZWRfcG9zOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgZ3JlZW5fc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuX3Bv
czsKICAgICAgICB1bnNpZ25lZCBjaGFyIGJsdWVfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IGJsdWVfcG9zOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnN2ZF9zaXplOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgcnN2ZF9wb3M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVzYXBtX3NlZzsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB2ZXNhcG1fb2ZmOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBh
Z2VzOwoKfTsKCmV4dGVybiBzdHJ1Y3Qgc2NyZWVuX2luZm8gc2NyZWVuX2luZm87CiMgMTM5ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHR0
eV9mbGlwX2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cXVldWU7CiAgICAgICAg
c3RydWN0IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIgKmNoYXJfYnVmX3B0cjsKICAg
ICAgICB1bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAgICAgaW50IGNvdW50OwogICAg
ICAgIGludCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hhcl9idWZbMio1MTJdOwog
ICAgICAgIGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xvcFs0
XTsKfTsKIyAyNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3R0
eS5oIgpzdHJ1Y3QgdHR5X3N0cnVjdCB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIHN0cnVj
dCB0dHlfZHJpdmVyIGRyaXZlcjsKICAgICAgICBzdHJ1Y3QgdHR5X2xkaXNjIGxkaXNjOwogICAg
ICAgIHN0cnVjdCB0ZXJtaW9zICp0ZXJtaW9zLCAqdGVybWlvc19sb2NrZWQ7CiAgICAgICAgaW50
IHBncnA7CiAgICAgICAgaW50IHNlc3Npb247CiAgICAgICAga2Rldl90IGRldmljZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGludCBjb3VudDsKICAgICAgICBzdHJ1Y3Qg
d2luc2l6ZSB3aW5zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3RvcHBlZDoxLCBod19zdG9w
cGVkOjEsIGZsb3dfc3RvcHBlZDoxLCBwYWNrZXQ6MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGxv
d19sYXRlbmN5OjEsIHdhcm5lZDoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY3RybF9zdGF0dXM7
CgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICpsaW5rOwogICAgICAgIHN0cnVjdCBmYXN5bmNf
c3RydWN0ICpmYXN5bmM7CiAgICAgICAgc3RydWN0IHR0eV9mbGlwX2J1ZmZlciBmbGlwOwogICAg
ICAgIGludCBtYXhfZmxpcF9jbnQ7CiAgICAgICAgaW50IGFsdF9zcGVlZDsKICAgICAgICB3YWl0
X3F1ZXVlX2hlYWRfdCB3cml0ZV93YWl0OwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHJlYWRf
d2FpdDsKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0IHRxX2hhbmd1cDsKICAgICAgICB2b2lkICpk
aXNjX2RhdGE7CiAgICAgICAgdm9pZCAqZHJpdmVyX2RhdGE7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCB0dHlfZmlsZXM7CgoKCgoKCgogICAgICAgIHVuc2lnbmVkIGludCBjb2x1bW47CiAgICAg
ICAgdW5zaWduZWQgY2hhciBsbmV4dDoxLCBlcmFzaW5nOjEsIHJhdzoxLCByZWFsX3JhdzoxLCBp
Y2Fub246MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNsb3Npbmc6MTsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBtaW5pbXVtX3RvX3dha2U7CiAgICAgICAgdW5zaWduZWQgb3ZlcnJ1bl90aW1lOwog
ICAgICAgIGludCBudW1fb3ZlcnJ1bjsKICAgICAgICB1bnNpZ25lZCBsb25nIHByb2Nlc3NfY2hh
cl9tYXBbMjU2Lyg4KnNpemVvZih1bnNpZ25lZCBsb25nKSldOwogICAgICAgIGNoYXIgKnJlYWRf
YnVmOwogICAgICAgIGludCByZWFkX2hlYWQ7CiAgICAgICAgaW50IHJlYWRfdGFpbDsKICAgICAg
ICBpbnQgcmVhZF9jbnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWFkX2ZsYWdzWzQwOTYvKDgq
c2l6ZW9mKHVuc2lnbmVkIGxvbmcpKV07CiAgICAgICAgaW50IGNhbm9uX2RhdGE7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBjYW5vbl9oZWFkOwogICAgICAgIHVuc2lnbmVkIGludCBjYW5vbl9jb2x1
bW47CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBhdG9taWNfcmVhZDsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIGF0b21pY193cml0ZTsKICAgICAgICBzcGlubG9ja190IHJlYWRfbG9jazsKCiAg
ICAgICAgc3RydWN0IHRxX3N0cnVjdCBTQUtfdHE7Cn07CiMgMzQxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIKZXh0ZXJuIHZvaWQgdHR5X3dyaXRlX2Zs
dXNoKHN0cnVjdCB0dHlfc3RydWN0ICopOwoKZXh0ZXJuIHN0cnVjdCB0ZXJtaW9zIHR0eV9zdGRf
dGVybWlvczsKZXh0ZXJuIHN0cnVjdCB0dHlfc3RydWN0ICogcmVkaXJlY3Q7CmV4dGVybiBzdHJ1
Y3QgdHR5X2xkaXNjIGxkaXNjc1tdOwpleHRlcm4gaW50IGZnX2NvbnNvbGUsIGxhc3RfY29uc29s
ZSwgd2FudF9jb25zb2xlOwoKZXh0ZXJuIGludCBrbXNnX3JlZGlyZWN0OwoKZXh0ZXJuIHZvaWQg
Y29uX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGNvbnNvbGVfaW5pdCh2b2lkKTsKCmV4dGVybiBp
bnQgbHBfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwdHlfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQg
dHR5X2luaXQodm9pZCk7CmV4dGVybiBpbnQgbXhzZXJfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBt
b3hhX2luaXQodm9pZCk7CmV4dGVybiBpbnQgaXAyX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcGN4
ZV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHBjX2luaXQodm9pZCk7CmV4dGVybiBpbnQgdmNzX2lu
aXQodm9pZCk7CmV4dGVybiBpbnQgcnBfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBjeV9pbml0KHZv
aWQpOwpleHRlcm4gaW50IHN0bF9pbml0KHZvaWQpOwpleHRlcm4gaW50IHN0bGlfaW5pdCh2b2lk
KTsKZXh0ZXJuIGludCBzcGVjaWFsaXhfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBlc3BzZXJpYWxf
aW5pdCh2b2lkKTsKZXh0ZXJuIGludCBtYWNzZXJpYWxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBh
MjIzMmJvYXJkX2luaXQodm9pZCk7CgpleHRlcm4gaW50IHR0eV9wYXJhbm9pYV9jaGVjayhzdHJ1
Y3QgdHR5X3N0cnVjdCAqdHR5LCBrZGV2X3QgZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpyb3V0aW5lKTsKZXh0ZXJuIGNoYXIgKnR0eV9uYW1lKHN0cnVj
dCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKmJ1Zik7CmV4dGVybiB2b2lkIHR0eV93YWl0X3VudGls
X3NlbnQoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIGxvbmcgdGltZW91dCk7CmV4dGVybiBpbnQg
dHR5X2NoZWNrX2NoYW5nZShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHN0
b3BfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RhcnRfdHR5KHN0
cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfbGRpc2MoaW50
IGRpc2MsIHN0cnVjdCB0dHlfbGRpc2MgKm5ld19sZGlzYyk7CmV4dGVybiBpbnQgdHR5X3JlZ2lz
dGVyX2RyaXZlcihzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyKTsKZXh0ZXJuIGludCB0dHlfdW5y
ZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0
eV9yZWdpc3Rlcl9kZXZmcyAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgaW50
IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1pbm9yKTsK
ZXh0ZXJuIHZvaWQgdHR5X3VucmVnaXN0ZXJfZGV2ZnMgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2
ZXIsIHVuc2lnbmVkIG1pbm9yKTsKZXh0ZXJuIGludCB0dHlfcmVhZF9yYXdfZGF0YShzdHJ1Y3Qg
dHR5X3N0cnVjdCAqdHR5LCB1bnNpZ25lZCBjaGFyICpidWZwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBidWZsZW4pOwpleHRlcm4gdm9pZCB0dHlfd3JpdGVfbWVzc2FnZShzdHJ1
Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFyICptc2cpOwoKZXh0ZXJuIGludCBpc19vcnBoYW5lZF9w
Z3JwKGludCBwZ3JwKTsKZXh0ZXJuIGludCBpc19pZ25vcmVkKGludCBzaWcpOwpleHRlcm4gaW50
IHR0eV9zaWduYWwoaW50IHNpZywgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lk
IHR0eV9oYW5ndXAoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCB0dHlfdmhh
bmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0eV91bmhhbmd1cChz
dHJ1Y3QgZmlsZSAqZmlscCk7CmV4dGVybiBpbnQgdHR5X2h1bmdfdXBfcChzdHJ1Y3QgZmlsZSAq
IGZpbHApOwpleHRlcm4gdm9pZCBkb19TQUsoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVy
biB2b2lkIGRpc2Fzc29jaWF0ZV9jdHR5KGludCBwcml2KTsKZXh0ZXJuIHZvaWQgdHR5X2ZsaXBf
YnVmZmVyX3B1c2goc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiBpbnQgdHR5X2dldF9i
YXVkX3JhdGUoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CgoKZXh0ZXJuIHN0cnVjdCB0dHlfbGRp
c2MgdHR5X2xkaXNjX05fVFRZOwoKCmV4dGVybiBpbnQgbl90dHlfaW9jdGwoc3RydWN0IHR0eV9z
dHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CgoKCmV4dGVybiB2b2lkIHNlcmlh
bF9jb25zb2xlX2luaXQodm9pZCk7CgoKCmV4dGVybiBpbnQgcGN4ZV9vcGVuKHN0cnVjdCB0dHlf
c3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxwKTsKCgoKZXh0ZXJuIHZvaWQgY29uc29sZV9w
cmludChjb25zdCBjaGFyICopOwoKCgpleHRlcm4gaW50IHZ0X2lvY3RsKHN0cnVjdCB0dHlfc3Ry
dWN0ICp0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9zZW0uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAyCgoKCgpzdHJ1Y3QgaXBjX3Blcm0K
ewogICAgICAgIF9fa2VybmVsX2tleV90IGtleTsKICAgICAgICBfX2tlcm5lbF91aWRfdCB1aWQ7
CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgZ2lkOwogICAgICAgIF9fa2VybmVsX3VpZF90IGN1aWQ7
CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgY2dpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgbW9k
ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXE7Cn07CgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9hc20vaXBjYnVmLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2lwY2J1Zi5oIgpzdHJ1Y3QgaXBjNjRfcGVybQp7CiAg
ICAgICAgX19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgdWlkOwog
ICAgICAgIF9fa2VybmVsX2dpZDMyX3QgZ2lkOwogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgY3Vp
ZDsKICAgICAgICBfX2tlcm5lbF9naWQzMl90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90
IG1vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHNlcTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7Cn07CiMgMjIg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAyCiMgNTcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lwYy5oIgpzdHJ1Y3Qg
a2Vybl9pcGNfcGVybQp7CiAgICAgICAga2V5X3Qga2V5OwogICAgICAgIHVpZF90IHVpZDsKICAg
ICAgICBnaWRfdCBnaWQ7CiAgICAgICAgdWlkX3QgY3VpZDsKICAgICAgICBnaWRfdCBjZ2lkOwog
ICAgICAgIG1vZGVfdCBtb2RlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VxOwp9OwojIDUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAyCiMgMjMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5oIgpzdHJ1Y3Qgc2Vt
aWRfZHMgewogICAgICAgIHN0cnVjdCBpcGNfcGVybSBzZW1fcGVybTsKICAgICAgICBfX2tlcm5l
bF90aW1lX3Qgc2VtX290aW1lOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fY3RpbWU7CiAg
ICAgICAgc3RydWN0IHNlbSAqc2VtX2Jhc2U7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqc2Vt
X3BlbmRpbmc7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKnNlbV9wZW5kaW5nX2xhc3Q7CiAg
ICAgICAgc3RydWN0IHNlbV91bmRvICp1bmRvOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlbV9u
c2VtczsKfTsKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9z
ZW1idWYuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20v
c2VtYnVmLmgiCnN0cnVjdCBzZW1pZDY0X2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjNjRfcGVybSBz
ZW1fcGVybTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX290aW1lOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fY3RpbWU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZW1f
bnNlbXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDM7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBfX3VudXNlZDQ7Cn07CiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3NlbS5oIiAyCgoKc3RydWN0IHNlbWJ1ZiB7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc2VtX251bTsKICAgICAgICBzaG9ydCBzZW1fb3A7CiAgICAgICAgc2hvcnQgc2VtX2ZsZzsK
fTsKCgp1bmlvbiBzZW11biB7CiAgICAgICAgaW50IHZhbDsKICAgICAgICBzdHJ1Y3Qgc2VtaWRf
ZHMgKmJ1ZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqYXJyYXk7CiAgICAgICAgc3RydWN0IHNl
bWluZm8gKl9fYnVmOwogICAgICAgIHZvaWQgKl9fcGFkOwp9OwoKc3RydWN0IHNlbWluZm8gewog
ICAgICAgIGludCBzZW1tYXA7CiAgICAgICAgaW50IHNlbW1uaTsKICAgICAgICBpbnQgc2VtbW5z
OwogICAgICAgIGludCBzZW1tbnU7CiAgICAgICAgaW50IHNlbW1zbDsKICAgICAgICBpbnQgc2Vt
b3BtOwogICAgICAgIGludCBzZW11bWU7CiAgICAgICAgaW50IHNlbXVzejsKICAgICAgICBpbnQg
c2Vtdm14OwogICAgICAgIGludCBzZW1hZW07Cn07CiMgODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5oIgpzdHJ1Y3Qgc2VtIHsKICAgICAgICBpbnQgc2Vt
dmFsOwogICAgICAgIGludCBzZW1waWQ7Cn07CgoKc3RydWN0IHNlbV9hcnJheSB7CiAgICAgICAg
c3RydWN0IGtlcm5faXBjX3Blcm0gc2VtX3Blcm07CiAgICAgICAgdGltZV90IHNlbV9vdGltZTsK
ICAgICAgICB0aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwog
ICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1f
cXVldWUgKipzZW1fcGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNlbV9uc2VtczsKfTsKCgpzdHJ1Y3Qgc2VtX3F1ZXVlIHsK
ICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICogbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVl
ICoqIHByZXY7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0KiBzbGVlcGVyOwogICAgICAgIHN0
cnVjdCBzZW1fdW5kbyAqIHVuZG87CiAgICAgICAgaW50IHBpZDsKICAgICAgICBpbnQgc3RhdHVz
OwogICAgICAgIHN0cnVjdCBzZW1fYXJyYXkgKiBzbWE7CiAgICAgICAgaW50IGlkOwogICAgICAg
IHN0cnVjdCBzZW1idWYgKiBzb3BzOwogICAgICAgIGludCBuc29wczsKICAgICAgICBpbnQgYWx0
ZXI7Cn07CgoKCgpzdHJ1Y3Qgc2VtX3VuZG8gewogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqIHBy
b2NfbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBpZF9uZXh0OwogICAgICAgIGludCBz
ZW1pZDsKICAgICAgICBzaG9ydCAqIHNlbWFkajsKfTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDApKSkgbG9uZyBzeXNfc2VtZ2V0IChrZXlfdCBrZXksIGludCBuc2VtcywgaW50IHNlbWZsZyk7
CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2Vtb3AgKGludCBzZW1pZCwg
c3RydWN0IHNlbWJ1ZiAqc29wcywgdW5zaWduZWQgbnNvcHMpOwogX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIGxvbmcgc3lzX3NlbWN0bCAoaW50IHNlbWlkLCBpbnQgc2VtbnVtLCBpbnQgY21k
LCB1bmlvbiBzZW11biBhcmcpOwojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvc2lnbmFsLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAyCgoKc3RydWN0IHNpZ2luZm87CiMgMTcgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zaWduYWwuaCIKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIG9sZF9zaWdzZXRfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNpZ1soNjQgLyAzMildOwp9IHNpZ3NldF90OwojIDEyOSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHZvaWQgKCpfX3Np
Z2hhbmRsZXJfdCkoaW50KTsKCgoKCgoKc3RydWN0IG9sZF9zaWdhY3Rpb24gewogICAgICAgIF9f
c2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7CiAgICAgICAgb2xkX3NpZ3NldF90IHNhX21hc2s7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIp
KHZvaWQpOwp9OwoKc3RydWN0IHNpZ2FjdGlvbiB7CiAgICAgICAgX19zaWdoYW5kbGVyX3Qgc2Ff
aGFuZGxlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAgIHZvaWQgKCpz
YV9yZXN0b3Jlcikodm9pZCk7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKfTsKCnN0cnVjdCBr
X3NpZ2FjdGlvbiB7CiAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKfTsKIyAxNzEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zaWduYWwuaCIKdHlwZWRlZiBzdHJ1
Y3Qgc2lnYWx0c3RhY2sgewogICAgICAgIHZvaWQgKnNzX3NwOwogICAgICAgIGludCBzc19mbGFn
czsKICAgICAgICBzaXplX3Qgc3Nfc2l6ZTsKfSBzdGFja190OwoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIgMQojIDE3OSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAyCgoKCnN0YXRpYyBf
X2lubGluZV9fIHZvaWQgc2lnYWRkc2V0KHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAg
ICAgX19hc21fXygiYnRzbCAlMSwlMCIgOiAiPW0iKCpzZXQpIDogIklyIihfc2lnIC0gMSkgOiAi
Y2MiKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdkZWxzZXQoc2lnc2V0X3QgKnNldCwg
aW50IF9zaWcpCnsKICAgICAgICBfX2FzbV9fKCJidHJsICUxLCUwIiA6ICI9bSIoKnNldCkgOiAi
SXIiKF9zaWcgLSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19jb25zdF9z
aWdpc21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIHVuc2lnbmVkIGxv
bmcgc2lnID0gX3NpZyAtIDE7CiAgICAgICAgcmV0dXJuIDEgJiAoc2V0LT5zaWdbc2lnIC8gMzJd
ID4+IChzaWcgJSAzMikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19nZW5fc2lnaXNtZW1i
ZXIoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBpbnQgcmV0OwogICAgICAgIF9f
YXNtX18oImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiAiPXIiKHJl
dCkgOiAibSIoKnNldCksICJJciIoX3NpZy0xKSA6ICJjYyIpOwogICAgICAgIHJldHVybiByZXQ7
Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zaWduYWwu
aCIKc3RhdGljIF9faW5saW5lX18gaW50IHNpZ2ZpbmRpbndvcmQodW5zaWduZWQgbG9uZyB3b3Jk
KQp7CiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMCIgOiAiPXIiKHdvcmQpIDogInJtIih3b3Jk
KSA6ICJjYyIpOwogICAgICAgIHJldHVybiB3b3JkOwp9CiMgNSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9hc20vc2lnaW5mby5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDIKCgoKdHlwZWRlZiB1bmlv
biBzaWd2YWwgewogICAgICAgIGludCBzaXZhbF9pbnQ7CiAgICAgICAgdm9pZCAqc2l2YWxfcHRy
Owp9IHNpZ3ZhbF90OwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgc2lnaW5mbyB7CiAgICAgICAgaW50IHNp
X3NpZ25vOwogICAgICAgIGludCBzaV9lcnJubzsKICAgICAgICBpbnQgc2lfY29kZTsKCiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgaW50IF9wYWRbKCgxMjgvc2l6ZW9mKGludCkpIC0g
MyldOwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBw
aWRfdCBfcGlkOwogICAgICAgICAgICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAg
ICAgICAgfSBfa2lsbDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjE7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBfdGltZXIyOwogICAgICAgICAgICAgICAgfSBfdGltZXI7CgoKICAgICAgICAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHNp
Z3ZhbF90IF9zaWd2YWw7CiAgICAgICAgICAgICAgICB9IF9ydDsKCgogICAgICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAgICAg
ICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9zdGF0
dXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrX3QgX3V0aW1lOwogICAgICAgICAgICAg
ICAgICAgICAgICBjbG9ja190IF9zdGltZTsKICAgICAgICAgICAgICAgIH0gX3NpZ2NobGQ7CgoK
ICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9h
ZGRyOwogICAgICAgICAgICAgICAgfSBfc2lnZmF1bHQ7CgoKICAgICAgICAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfYmFuZDsKICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9mZDsKICAgICAgICAgICAgICAgIH0gX3NpZ3BvbGw7CiAgICAgICAgfSBfc2lm
aWVsZHM7Cn0gc2lnaW5mb190OwojIDE5OSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvYXNtL3NpZ2luZm8uaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQgewogICAgICAgIHNp
Z3ZhbF90IHNpZ2V2X3ZhbHVlOwogICAgICAgIGludCBzaWdldl9zaWdubzsKICAgICAgICBpbnQg
c2lnZXZfbm90aWZ5OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygo
NjQvc2l6ZW9mKGludCkpIC0gMyldOwoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNpZ3ZhbF90KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqX2F0dHJpYnV0ZTsKICAgICAgICAgICAgICAgIH0gX3NpZ2V2X3Ro
cmVhZDsKICAgICAgICB9IF9zaWdldl91bjsKfSBzaWdldmVudF90OwoKCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEKIyAyMTggIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDIKCnN0YXRp
YyBpbmxpbmUgdm9pZCBjb3B5X3NpZ2luZm8oc2lnaW5mb190ICp0bywgc2lnaW5mb190ICpmcm9t
KQp7CiAgICAgICAgaWYgKGZyb20tPnNpX2NvZGUgPCAwKQogICAgICAgICAgICAgICAgKF9fYnVp
bHRpbl9jb25zdGFudF9wKHNpemVvZihzaWdpbmZvX3QpKSA/IF9fY29uc3RhbnRfbWVtY3B5KCh0
byksKGZyb20pLChzaXplb2Yoc2lnaW5mb190KSkpIDogX19tZW1jcHkoKHRvKSwoZnJvbSksKHNp
emVvZihzaWdpbmZvX3QpKSkpOwogICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICAoX19idWls
dGluX2NvbnN0YW50X3AoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3Np
Z2NobGQpKSA/IF9fY29uc3RhbnRfbWVtY3B5KCh0byksKGZyb20pLCgzKnNpemVvZihpbnQpICsg
c2l6ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpKSA6IF9fbWVtY3B5KCh0byksKGZyb20p
LCgzKnNpemVvZihpbnQpICsgc2l6ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpKSk7Cn0K
CmV4dGVybiBpbnQgY29weV9zaWdpbmZvX3RvX3VzZXIoc2lnaW5mb190ICp0bywgc2lnaW5mb190
ICpmcm9tKTsKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9z
aWduYWwuaCIgMgoKCgoKCgpzdHJ1Y3Qgc2lncXVldWUgewogICAgICAgIHN0cnVjdCBzaWdxdWV1
ZSAqbmV4dDsKICAgICAgICBzaWdpbmZvX3QgaW5mbzsKfTsKCnN0cnVjdCBzaWdwZW5kaW5nIHsK
ICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKmhlYWQsICoqdGFpbDsKICAgICAgICBzaWdzZXRfdCBz
aWduYWw7Cn07CiMgNjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3NpZ25hbC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3N0cmluZy5oIiAxCiMgNjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3NpZ25hbC5oIiAyCiMgMTA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
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
L2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFsLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdub3Rz
ZXQoc2lnc2V0X3QgKnNldCkgeyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQg
LyAzMikvNDsgKytpKSB7IHNldC0+c2lnWzQqaSswXSA9ICh+KHNldC0+c2lnWzQqaSswXSkpOyBz
ZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsgc2V0LT5zaWdbNCppKzJdID0g
KH4oc2V0LT5zaWdbNCppKzJdKSk7IHNldC0+c2lnWzQqaSszXSA9ICh+KHNldC0+c2lnWzQqaSsz
XSkpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IHNldC0+c2lnWzQqaSsyXSA9
ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBjYXNlIDI6IHNldC0+c2lnWzQqaSsxXSA9ICh+KHNldC0+
c2lnWzQqaSsxXSkpOyBjYXNlIDE6IHNldC0+c2lnWzQqaSswXSA9ICh+KHNldC0+c2lnWzQqaSsw
XSkpOyB9IH0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdlbXB0eXNldChzaWdzZXRfdCAqc2V0
KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
KChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHNl
dCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKHNpZ3NldF90
KSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWdu
ZWQgY2hhcikoMCkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFu
dF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHNldCkpKSwoKCgw
KSkpLCgoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHNldCkpLCgo
MCkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IDA7CiAgICAgICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9
IDA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9p
ZCBzaWdmaWxsc2V0KHNpZ3NldF90ICpzZXQpCnsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkg
ewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3Ao
LTEpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX2NvbnN0
YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBj
aGFyKSgtMSkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgo
c2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKHNpZ3Nl
dF90KSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihzaWdzZXRfdCkpKSA/IF9f
bWVtc2V0X2dlbmVyaWMoKCgoc2V0KSkpLCgoKC0xKSkpLCgoKHNpemVvZihzaWdzZXRfdCkpKSkp
IDogX19tZW1zZXRfZ2VuZXJpYygoKHNldCkpLCgoLTEpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkp
KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAt
MTsKICAgICAgICBjYXNlIDE6IHNldC0+c2lnWzBdID0gLTE7CiAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICB9Cn0KCmV4dGVybiBjaGFyICogcmVuZGVyX3NpZ3NldF90KHNpZ3NldF90ICpz
ZXQsIGNoYXIgKmJ1ZmZlcik7CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdhZGRzZXRtYXNrKHNp
Z3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdIHw9
IG1hc2s7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdkZWxzZXRtYXNrKHNpZ3NldF90ICpzZXQs
IHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdICY9IH5tYXNrOwp9Cgpz
dGF0aWMgaW5saW5lIGludCBzaWd0ZXN0c2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBs
b25nIG1hc2spCnsKICAgICAgICByZXR1cm4gKHNldC0+c2lnWzBdICYgbWFzaykgIT0gMDsKfQoK
c3RhdGljIGlubGluZSB2b2lkIHNpZ2luaXRzZXQoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9u
ZyBtYXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gPSBtYXNrOwogICAgICAgIHN3aXRjaCAoKDY0
IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29u
c3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAz
MiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSks
KCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YobG9uZykqKCg2NCAv
IDMyKS0xKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEw
MTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEp
KSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkp
KSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoJnNldC0+c2lnWzFdKSkpLCgoKDApKSksKCgoc2l6ZW9m
KGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKCZzZXQtPnNpZ1sx
XSkpLCgoMCkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpKTsKICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2Ug
MTogOwogICAgICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2luaXRzZXRpbnYoc2lnc2V0
X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gPSB+bWFz
azsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoLTEpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
KChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9t
ZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEp
KSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQo
KCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEpKSksKChz
aXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNp
emVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKCZzZXQtPnNp
Z1sxXSkpKSwoKCgtMSkpKSwoKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkgOiBfX21l
bXNldF9nZW5lcmljKCgoJnNldC0+c2lnWzFdKSksKCgtMSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQg
LyAzMiktMSkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0
LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IDsKICAgICAgICB9Cn0KCgoKc3RhdGljIGlu
bGluZSB2b2lkIGluaXRfc2lncGVuZGluZyhzdHJ1Y3Qgc2lncGVuZGluZyAqc2lnKQp7CiAgICAg
ICAgc2lnZW1wdHlzZXQoJnNpZy0+c2lnbmFsKTsKICAgICAgICBzaWctPmhlYWQgPSAoKHZvaWQg
KikwKTsKICAgICAgICBzaWctPnRhaWwgPSAmc2lnLT5oZWFkOwp9CgpleHRlcm4gbG9uZyBkb19z
aWdwZW5kaW5nKHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zZWN1cmViaXRzLmgiIDEKCgoKCgpleHRlcm4gdW5z
aWduZWQgc2VjdXJlYml0czsKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzX3N0cnVjdC5oIiAxCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgICAgICBh
dG9taWNfdCBjb3VudDsKICAgICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1bWFzazsK
ICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAgICAgICBz
dHJ1Y3QgdmZzbW91bnQgKiByb290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9OwojIDIw
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIK
ZXh0ZXJuIHZvaWQgZXhpdF9mcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHNl
dF9mc19hbHRyb290KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3Jvb3Qo
c3RydWN0IGZzX3N0cnVjdCAqZnMsCiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQsCiAgICAg
ICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX3Jv
b3Q7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpvbGRfcm9vdG1udDsKICAgICAgICB3cml0ZV9s
b2NrKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3Jvb3QgPSBmcy0+cm9vdDsKICAgICAgICBvbGRf
cm9vdG1udCA9IGZzLT5yb290bW50OwogICAgICAgIGZzLT5yb290bW50ID0gbW50Z2V0KG1udCk7
CiAgICAgICAgZnMtPnJvb3QgPSBkZ2V0KGRlbnRyeSk7CiAgICAgICAgYXNtIHZvbGF0aWxlKCJs
b2NrIDsgYWRkbCAkIiAiMHgwMTAwMDAwMCIgIiwlMCI6Ij1tIiAoKCZmcy0+bG9jayktPmxvY2sp
IDogOiAibWVtb3J5Iik7CiAgICAgICAgaWYgKG9sZF9yb290KSB7CiAgICAgICAgICAgICAgICBk
cHV0KG9sZF9yb290KTsKICAgICAgICAgICAgICAgIG1udHB1dChvbGRfcm9vdG1udCk7CiAgICAg
ICAgfQp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZnNfcHdkKHN0cnVjdCBmc19zdHJ1
Y3QgKmZzLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVjdCBkZW50
cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9wd2Q7CiAgICAgICAgc3Ry
dWN0IHZmc21vdW50ICpvbGRfcHdkbW50OwogICAgICAgIHdyaXRlX2xvY2soJmZzLT5sb2NrKTsK
ICAgICAgICBvbGRfcHdkID0gZnMtPnB3ZDsKICAgICAgICBvbGRfcHdkbW50ID0gZnMtPnB3ZG1u
dDsKICAgICAgICBmcy0+cHdkbW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnB3ZCA9IGRn
ZXQoZGVudHJ5KTsKICAgICAgICBhc20gdm9sYXRpbGUoImxvY2sgOyBhZGRsICQiICIweDAxMDAw
MDAwIiAiLCUwIjoiPW0iICgoJmZzLT5sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsKICAgICAg
ICBpZiAob2xkX3B3ZCkgewogICAgICAgICAgICAgICAgZHB1dChvbGRfcHdkKTsKICAgICAgICAg
ICAgICAgIG1udHB1dChvbGRfcHdkbW50KTsKICAgICAgICB9Cn0KCnN0cnVjdCBmc19zdHJ1Y3Qg
KmNvcHlfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1Y3QgKm9sZCk7CnZvaWQgcHV0X2ZzX3N0cnVj
dChzdHJ1Y3QgZnNfc3RydWN0ICpmcyk7CiMgMjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCnN0cnVjdCBleGVjX2RvbWFpbjsKIyA1OCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgYXZlbnJ1bltdOwojIDc1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgv
aW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IG5yX3J1bm5pbmcsIG5yX3RocmVhZHM7
CmV4dGVybiBpbnQgbGFzdF9waWQ7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyA3OSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3RpbWUuaCIgMQojIDgwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgv
aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMgojIDgxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKIyAyMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIKc3RydWN0IHJ1c2Fn
ZSB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWV2
YWwgcnVfc3RpbWU7CiAgICAgICAgbG9uZyBydV9tYXhyc3M7CiAgICAgICAgbG9uZyBydV9peHJz
czsKICAgICAgICBsb25nIHJ1X2lkcnNzOwogICAgICAgIGxvbmcgcnVfaXNyc3M7CiAgICAgICAg
bG9uZyBydV9taW5mbHQ7CiAgICAgICAgbG9uZyBydV9tYWpmbHQ7CiAgICAgICAgbG9uZyBydV9u
c3dhcDsKICAgICAgICBsb25nIHJ1X2luYmxvY2s7CiAgICAgICAgbG9uZyBydV9vdWJsb2NrOwog
ICAgICAgIGxvbmcgcnVfbXNnc25kOwogICAgICAgIGxvbmcgcnVfbXNncmN2OwogICAgICAgIGxv
bmcgcnVfbnNpZ25hbHM7CiAgICAgICAgbG9uZyBydV9udmNzdzsKICAgICAgICBsb25nIHJ1X25p
dmNzdzsKfTsKCnN0cnVjdCBybGltaXQgewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9jdXI7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBybGltX21heDsKfTsKIyA1NiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcmVzb3VyY2UuaCIgMQojIDU3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIiAyCiMgODIgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAxCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMg
NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXIuaCIgMgoj
IDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90aW1lci5oIgpz
dHJ1Y3QgdGltZXJfbGlzdCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZXhwaXJlczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGE7CiAgICAg
ICAgdm9pZCAoKmZ1bmN0aW9uKSh1bnNpZ25lZCBsb25nKTsKfTsKCmV4dGVybiB2b2lkIGFkZF90
aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKZXh0ZXJuIGludCBkZWxfdGltZXIoc3Ry
dWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CgoKZXh0ZXJuIGludCBkZWxfdGltZXJfc3luYyhzdHJ1
Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKZXh0ZXJuIHZvaWQgc3luY190aW1lcnModm9pZCk7CiMg
NDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiCmlu
dCBtb2RfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4cGly
ZXMpOwoKZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxp
bmUgdm9pZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpCnsKICAgICAgICB0
aW1lci0+bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAqKTApOwp9CgpzdGF0
aWMgaW5saW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqIHRp
bWVyKQp7CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2b2lkICopMCk7Cn0K
IyA4MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIg
MgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29y
LmgiIDEKIyA4NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2No
ZWQuaCIgMgojIDEyNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
c2NoZWQuaCIKc3RydWN0IHNjaGVkX3BhcmFtIHsKICAgICAgICBpbnQgc2NoZWRfcHJpb3JpdHk7
Cn07CgpzdHJ1Y3QgY29tcGxldGlvbjsKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgMTM0ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgoKCgoKCgpleHRlcm4gcndsb2NrX3Qg
dGFza2xpc3RfbG9jazsKZXh0ZXJuIHNwaW5sb2NrX3QgcnVucXVldWVfbG9jazsKZXh0ZXJuIHNw
aW5sb2NrX3QgbW1saXN0X2xvY2s7CgpleHRlcm4gdm9pZCBzY2hlZF9pbml0KHZvaWQpOwpleHRl
cm4gdm9pZCBpbml0X2lkbGUodm9pZCk7CmV4dGVybiB2b2lkIHNob3dfc3RhdGUodm9pZCk7CmV4
dGVybiB2b2lkIGNwdV9pbml0ICh2b2lkKTsKZXh0ZXJuIHZvaWQgdHJhcF9pbml0KHZvaWQpOwpl
eHRlcm4gdm9pZCB1cGRhdGVfcHJvY2Vzc190aW1lcyhpbnQgdXNlcik7CmV4dGVybiB2b2lkIHVw
ZGF0ZV9vbmVfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHVuc2lnbmVkIGxvbmcgdXNl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtLCBp
bnQgY3B1KTsKCgpleHRlcm4gc2lnbmVkIGxvbmcgc2NoZWR1bGVfdGltZW91dChzaWduZWQgbG9u
ZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgdm9pZCBzY2hlZHVsZSh2b2lkKTsKCmV4dGVybiBpbnQgc2NoZWR1bGVfdGFz
ayhzdHJ1Y3QgdHFfc3RydWN0ICp0YXNrKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2NoZWR1bGVkX3Rh
c2tzKHZvaWQpOwpleHRlcm4gaW50IHN0YXJ0X2NvbnRleHRfdGhyZWFkKHZvaWQpOwpleHRlcm4g
aW50IGN1cnJlbnRfaXNfa2V2ZW50ZCh2b2lkKTsKIyAxNzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCBmaWxlc19zdHJ1Y3QgewogICAg
ICAgIGF0b21pY190IGNvdW50OwogICAgICAgIHJ3bG9ja190IGZpbGVfbG9jazsKICAgICAgICBp
bnQgbWF4X2ZkczsKICAgICAgICBpbnQgbWF4X2Zkc2V0OwogICAgICAgIGludCBuZXh0X2ZkOwog
ICAgICAgIHN0cnVjdCBmaWxlICoqIGZkOwogICAgICAgIGZkX3NldCAqY2xvc2Vfb25fZXhlYzsK
ICAgICAgICBmZF9zZXQgKm9wZW5fZmRzOwogICAgICAgIGZkX3NldCBjbG9zZV9vbl9leGVjX2lu
aXQ7CiAgICAgICAgZmRfc2V0IG9wZW5fZmRzX2luaXQ7CiAgICAgICAgc3RydWN0IGZpbGUgKiBm
ZF9hcnJheVszMl07Cn07CiMgMjA0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIgpzdHJ1Y3QgbW1fc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3QgKiBtbWFwOwogICAgICAgIHJiX3Jvb3RfdCBtbV9yYjsKICAgICAgICBzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKiBtbWFwX2NhY2hlOwogICAgICAgIHBnZF90ICogcGdkOwogICAgICAg
IGF0b21pY190IG1tX3VzZXJzOwogICAgICAgIGF0b21pY190IG1tX2NvdW50OwogICAgICAgIGlu
dCBtYXBfY291bnQ7CiAgICAgICAgc3RydWN0IHJ3X3NlbWFwaG9yZSBtbWFwX3NlbTsKICAgICAg
ICBzcGlubG9ja190IHBhZ2VfdGFibGVfbG9jazsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBt
bWxpc3Q7CgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfY29kZSwgZW5kX2NvZGUsIHN0
YXJ0X2RhdGEsIGVuZF9kYXRhOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfYnJrLCBicmss
IHN0YXJ0X3N0YWNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnX3N0YXJ0LCBhcmdfZW5kLCBl
bnZfc3RhcnQsIGVudl9lbmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyByc3MsIHRvdGFsX3ZtLCBs
b2NrZWRfdm07CiAgICAgICAgdW5zaWduZWQgbG9uZyBkZWZfZmxhZ3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBjcHVfdm1fbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIHN3YXBfYWRkcmVzczsK
CiAgICAgICAgdW5zaWduZWQgZHVtcGFibGU6MTsKCgogICAgICAgIG1tX2NvbnRleHRfdCBjb250
ZXh0Owp9OwoKZXh0ZXJuIGludCBtbWxpc3RfbnI7CiMgMjQ3ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCB7CiAg
ICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgc3RydWN0IGtfc2lnYWN0aW9uIGFjdGlvbls2
NF07CiAgICAgICAgc3BpbmxvY2tfdCBzaWdsb2NrOwp9OwojIDI2MyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHVzZXJfc3RydWN0IHsK
ICAgICAgICBhdG9taWNfdCBfX2NvdW50OwogICAgICAgIGF0b21pY190IHByb2Nlc3NlczsKICAg
ICAgICBhdG9taWNfdCBmaWxlczsKCgogICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqbmV4dCwg
KipwcHJldjsKICAgICAgICB1aWRfdCB1aWQ7Cn07CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9z
dHJ1Y3Qgcm9vdF91c2VyOwoKCnN0cnVjdCB0YXNrX3N0cnVjdCB7CgoKCiAgICAgICAgdm9sYXRp
bGUgbG9uZyBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGludCBz
aWdwZW5kaW5nOwogICAgICAgIG1tX3NlZ21lbnRfdCBhZGRyX2xpbWl0OwoKCgogICAgICAgIHN0
cnVjdCBleGVjX2RvbWFpbiAqZXhlY19kb21haW47CiAgICAgICAgdm9sYXRpbGUgbG9uZyBuZWVk
X3Jlc2NoZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwdHJhY2U7CgogICAgICAgIGludCBsb2Nr
X2RlcHRoOwoKCgoKCgogICAgICAgIGxvbmcgY291bnRlcjsKICAgICAgICBsb25nIG5pY2U7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBwb2xpY3k7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW07
CiAgICAgICAgaW50IGhhc19jcHUsIHByb2Nlc3NvcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNw
dXNfYWxsb3dlZDsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBydW5fbGlzdDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNsZWVwX3RpbWU7CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAq
bmV4dF90YXNrLCAqcHJldl90YXNrOwogICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9t
bTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxvY2FsX3BhZ2VzOwogICAgICAgIHVuc2lnbmVk
IGludCBhbGxvY2F0aW9uX29yZGVyLCBucl9sb2NhbF9wYWdlczsKCgogICAgICAgIHN0cnVjdCBs
aW51eF9iaW5mbXQgKmJpbmZtdDsKICAgICAgICBpbnQgZXhpdF9jb2RlLCBleGl0X3NpZ25hbDsK
ICAgICAgICBpbnQgcGRlYXRoX3NpZ25hbDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBwZXJzb25h
bGl0eTsKICAgICAgICBpbnQgZGlkX2V4ZWM6MTsKICAgICAgICBwaWRfdCBwaWQ7CiAgICAgICAg
cGlkX3QgcGdycDsKICAgICAgICBwaWRfdCB0dHlfb2xkX3BncnA7CiAgICAgICAgcGlkX3Qgc2Vz
c2lvbjsKICAgICAgICBwaWRfdCB0Z2lkOwoKICAgICAgICBpbnQgbGVhZGVyOwoKCgoKCiAgICAg
ICAgc3RydWN0IHRhc2tfc3RydWN0ICpwX29wcHRyLCAqcF9wcHRyLCAqcF9jcHRyLCAqcF95c3B0
ciwgKnBfb3NwdHI7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0aHJlYWRfZ3JvdXA7CgoKICAg
ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hfbmV4dDsKICAgICAgICBzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKipwaWRoYXNoX3BwcmV2OwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0
X2NobGRleGl0OwogICAgICAgIHN0cnVjdCBjb21wbGV0aW9uICp2Zm9ya19kb25lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgcnRfcHJpb3JpdHk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpdF9yZWFs
X3ZhbHVlLCBpdF9wcm9mX3ZhbHVlLCBpdF92aXJ0X3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgaXRfcmVhbF9pbmNyLCBpdF9wcm9mX2luY3IsIGl0X3ZpcnRfaW5jcjsKICAgICAgICBzdHJ1
Y3QgdGltZXJfbGlzdCByZWFsX3RpbWVyOwogICAgICAgIHN0cnVjdCB0bXMgdGltZXM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdGFydF90aW1lOwogICAgICAgIGxvbmcgcGVyX2NwdV91dGltZVsz
Ml0sIHBlcl9jcHVfc3RpbWVbMzJdOwoKICAgICAgICB1bnNpZ25lZCBsb25nIG1pbl9mbHQsIG1h
al9mbHQsIG5zd2FwLCBjbWluX2ZsdCwgY21hal9mbHQsIGNuc3dhcDsKICAgICAgICBpbnQgc3dh
cHBhYmxlOjE7CgogICAgICAgIHVpZF90IHVpZCxldWlkLHN1aWQsZnN1aWQ7CiAgICAgICAgZ2lk
X3QgZ2lkLGVnaWQsc2dpZCxmc2dpZDsKICAgICAgICBpbnQgbmdyb3VwczsKICAgICAgICBnaWRf
dCBncm91cHNbMzJdOwogICAgICAgIGtlcm5lbF9jYXBfdCBjYXBfZWZmZWN0aXZlLCBjYXBfaW5o
ZXJpdGFibGUsIGNhcF9wZXJtaXR0ZWQ7CiAgICAgICAgaW50IGtlZXBfY2FwYWJpbGl0aWVzOjE7
CiAgICAgICAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyOwoKICAgICAgICBzdHJ1Y3QgcmxpbWl0
IHJsaW1bMTFdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVzZWRfbWF0aDsKICAgICAgICBjaGFy
IGNvbW1bMTZdOwoKICAgICAgICBpbnQgbGlua19jb3VudCwgdG90YWxfbGlua19jb3VudDsKICAg
ICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5OwogICAgICAgIHVuc2lnbmVkIGludCBsb2NrczsK
CiAgICAgICAgc3RydWN0IHNlbV91bmRvICpzZW11bmRvOwogICAgICAgIHN0cnVjdCBzZW1fcXVl
dWUgKnNlbXNsZWVwaW5nOwoKICAgICAgICBzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB0aHJlYWQ7Cgog
ICAgICAgIHN0cnVjdCBmc19zdHJ1Y3QgKmZzOwoKICAgICAgICBzdHJ1Y3QgZmlsZXNfc3RydWN0
ICpmaWxlczsKCiAgICAgICAgc3BpbmxvY2tfdCBzaWdtYXNrX2xvY2s7CiAgICAgICAgc3RydWN0
IHNpZ25hbF9zdHJ1Y3QgKnNpZzsKCiAgICAgICAgc2lnc2V0X3QgYmxvY2tlZDsKICAgICAgICBz
dHJ1Y3Qgc2lncGVuZGluZyBwZW5kaW5nOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHNhc19zc19z
cDsKICAgICAgICBzaXplX3Qgc2FzX3NzX3NpemU7CiAgICAgICAgaW50ICgqbm90aWZpZXIpKHZv
aWQgKnByaXYpOwogICAgICAgIHZvaWQgKm5vdGlmaWVyX2RhdGE7CiAgICAgICAgc2lnc2V0X3Qg
Km5vdGlmaWVyX21hc2s7CgoKICAgICAgICB1MzIgcGFyZW50X2V4ZWNfaWQ7CiAgICAgICAgdTMy
IHNlbGZfZXhlY19pZDsKCiAgICAgICAgc3BpbmxvY2tfdCBhbGxvY19sb2NrOwp9OwojIDQ0NCAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJu
IHN0cnVjdCBleGVjX2RvbWFpbiBkZWZhdWx0X2V4ZWNfZG9tYWluOwojIDQ5NiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKdW5pb24gdGFza191bmlv
biB7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0IHRhc2s7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzdGFja1syMDQ4KnNpemVvZihsb25nKS9zaXplb2YobG9uZyldOwp9OwoKZXh0ZXJuIHVuaW9u
IHRhc2tfdW5pb24gaW5pdF90YXNrX3VuaW9uOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgaW5p
dF9tbTsKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqaW5pdF90YXNrc1szMl07CgoKCmV4dGVy
biBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hbKDQwOTYgPj4gMildOwoKCgpzdGF0aWMgaW5s
aW5lIHZvaWQgaGFzaF9waWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgc3RydWN0
IHRhc2tfc3RydWN0ICoqaHRhYmxlID0gJnBpZGhhc2hbKCgoKHAtPnBpZCkgPj4gOCkgXiAocC0+
cGlkKSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBpZigocC0+cGlkaGFzaF9uZXh0
ID0gKmh0YWJsZSkgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAoKmh0YWJsZSktPnBp
ZGhhc2hfcHByZXYgPSAmcC0+cGlkaGFzaF9uZXh0OwogICAgICAgICpodGFibGUgPSBwOwogICAg
ICAgIHAtPnBpZGhhc2hfcHByZXYgPSBodGFibGU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhh
c2hfcGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIGlmKHAtPnBpZGhhc2hfbmV4
dCkKICAgICAgICAgICAgICAgIHAtPnBpZGhhc2hfbmV4dC0+cGlkaGFzaF9wcHJldiA9IHAtPnBp
ZGhhc2hfcHByZXY7CiAgICAgICAgKnAtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX25leHQ7
Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Rhc2tfYnlfcGlkKGlu
dCBwaWQpCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsICoqaHRhYmxlID0gJnBpZGhh
c2hbKCgoKHBpZCkgPj4gOCkgXiAocGlkKSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAg
ICBmb3IocCA9ICpodGFibGU7IHAgJiYgcC0+cGlkICE9IHBpZDsgcCA9IHAtPnBpZGhhc2hfbmV4
dCkKICAgICAgICAgICAgICAgIDsKCiAgICAgICAgcmV0dXJuIHA7Cn0KCgpleHRlcm4gc3RydWN0
IHVzZXJfc3RydWN0ICogYWxsb2NfdWlkKHVpZF90KTsKZXh0ZXJuIHZvaWQgZnJlZV91aWQoc3Ry
dWN0IHVzZXJfc3RydWN0ICopOwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9hc20vY3VycmVudC5oIiAxCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKCnN0YXRpYyBpbmxp
bmUgc3RydWN0IHRhc2tfc3RydWN0ICogZ2V0X2N1cnJlbnQodm9pZCkKewogICAgICAgIHN0cnVj
dCB0YXNrX3N0cnVjdCAqY3VycmVudDsKICAgICAgICBfX2FzbV9fKCJhbmRsICUlZXNwLCUwOyAi
OiI9ciIgKGN1cnJlbnQpIDogIjAiICh+ODE5MVVMKSk7CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7
CiB9CiMgNTQ0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zY2hl
ZC5oIiAyCgpleHRlcm4gdW5zaWduZWQgbG9uZyB2b2xhdGlsZSBqaWZmaWVzOwpleHRlcm4gdW5z
aWduZWQgbG9uZyBpdGltZXJfdGlja3M7CmV4dGVybiB1bnNpZ25lZCBsb25nIGl0aW1lcl9uZXh0
OwpleHRlcm4gc3RydWN0IHRpbWV2YWwgeHRpbWU7CmV4dGVybiB2b2lkIGRvX3RpbWVyKHN0cnVj
dCBwdF9yZWdzICopOwoKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2ZfYnVmZmVyOwpleHRlcm4g
dW5zaWduZWQgbG9uZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9zaGlmdDsK
CgoKZXh0ZXJuIHZvaWQgX193YWtlX3VwKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBp
bnQgbW9kZSwgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lk
IF9fd2FrZV91cF9zeW5jKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwg
aW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHNsZWVwX29u
KHdhaXRfcXVldWVfaGVhZF90ICpxKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biBsb25nIHNsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHNpZ25lZCBsb25n
IHRpbWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIGludGVy
cnVwdGlibGVfc2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMykpKTsKZXh0ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KHdh
aXRfcXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CgpleHRlcm4gaW50IHdha2VfdXBfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1
Y3QgKiB0c2spIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA1NzcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgbG9uZyBzeXNfd2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGludCAqIHN0YXRf
YWRkciwgaW50IG9wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4gaW50IGluX2dy
b3VwX3AoZ2lkX3QpOwpleHRlcm4gaW50IGluX2Vncm91cF9wKGdpZF90KTsKCmV4dGVybiB2b2lk
IHByb2NfY2FjaGVzX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbHMoc3RydWN0
IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBmbHVzaF9zaWduYWxfaGFuZGxlcnMoc3RydWN0
IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGRlcXVldWVfc2lnbmFsKHNpZ3NldF90ICosIHNp
Z2luZm9fdCAqKTsKZXh0ZXJuIHZvaWQgYmxvY2tfYWxsX3NpZ25hbHMoaW50ICgqbm90aWZpZXIp
KHZvaWQgKnByaXYpLCB2b2lkICpwcml2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aWdzZXRfdCAqbWFzayk7CmV4dGVybiB2b2lkIHVuYmxvY2tfYWxsX3NpZ25hbHModm9pZCk7CmV4
dGVybiBpbnQgc2VuZF9zaWdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHN0cnVjdCB0YXNr
X3N0cnVjdCAqKTsKZXh0ZXJuIGludCBmb3JjZV9zaWdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZv
ICosIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBraWxsX3BnX2luZm8oaW50LCBz
dHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiBpbnQga2lsbF9zbF9pbmZvKGludCwgc3Ry
dWN0IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gaW50IGtpbGxfcHJvY19pbmZvKGludCwgc3Ry
dWN0IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gdm9pZCBub3RpZnlfcGFyZW50KHN0cnVjdCB0
YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBkb19ub3RpZnlfcGFyZW50KHN0cnVjdCB0
YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBmb3JjZV9zaWcoaW50LCBzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKik7CmV4dGVybiBpbnQgc2VuZF9zaWcoaW50LCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KiwgaW50KTsKZXh0ZXJuIGludCBraWxsX3BnKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQg
a2lsbF9zbChwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGtpbGxfcHJvYyhwaWRfdCwgaW50
LCBpbnQpOwpleHRlcm4gaW50IGRvX3NpZ2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBrX3NpZ2Fj
dGlvbiAqLCBzdHJ1Y3Qga19zaWdhY3Rpb24gKik7CmV4dGVybiBpbnQgZG9fc2lnYWx0c3RhY2so
Y29uc3Qgc3RhY2tfdCAqLCBzdGFja190ICosIHVuc2lnbmVkIGxvbmcpOwoKc3RhdGljIGlubGlu
ZSBpbnQgc2lnbmFsX3BlbmRpbmcoc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgcmV0
dXJuIChwLT5zaWdwZW5kaW5nICE9IDApOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgaGFzX3Bl
bmRpbmdfc2lnbmFscyhzaWdzZXRfdCAqc2lnbmFsLCBzaWdzZXRfdCAqYmxvY2tlZCkKewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcmVhZHk7CiAgICAgICAgbG9uZyBpOwoKICAgICAgICBzd2l0Y2gg
KCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAo
NjQgLyAzMiksIHJlYWR5ID0gMDsgLS1pID49IDAgOykKICAgICAgICAgICAgICAgICAgICAgICAg
cmVhZHkgfD0gc2lnbmFsLT5zaWdbaV0gJn4gYmxvY2tlZC0+c2lnW2ldOwogICAgICAgICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgNDogcmVhZHkgPSBzaWduYWwtPnNpZ1szXSAmfiBibG9j
a2VkLT5zaWdbM107CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1syXSAmfiBi
bG9ja2VkLT5zaWdbMl07CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1sxXSAm
fiBibG9ja2VkLT5zaWdbMV07CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1sw
XSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2Fz
ZSAyOiByZWFkeSA9IHNpZ25hbC0+c2lnWzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAg
ICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDE6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMF0g
Jn4gYmxvY2tlZC0+c2lnWzBdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVhZHkgIT0gMDsK
fQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCByZWNhbGNfc2lncGVuZGluZyhzdHJ1Y3QgdGFza19z
dHJ1Y3QgKnQpCnsKICAgICAgICB0LT5zaWdwZW5kaW5nID0gaGFzX3BlbmRpbmdfc2lnbmFscygm
dC0+cGVuZGluZy5zaWduYWwsICZ0LT5ibG9ja2VkKTsKfQoKCgpzdGF0aWMgaW5saW5lIGludCBv
bl9zaWdfc3RhY2sodW5zaWduZWQgbG9uZyBzcCkKewogICAgICAgIHJldHVybiAoc3AgLSBnZXRf
Y3VycmVudCgpLT5zYXNfc3Nfc3AgPCBnZXRfY3VycmVudCgpLT5zYXNfc3Nfc2l6ZSk7Cn0KCnN0
YXRpYyBpbmxpbmUgaW50IHNhc19zc19mbGFncyh1bnNpZ25lZCBsb25nIHNwKQp7CiAgICAgICAg
cmV0dXJuIChnZXRfY3VycmVudCgpLT5zYXNfc3Nfc2l6ZSA9PSAwID8gMgogICAgICAgICAgICAg
ICAgOiBvbl9zaWdfc3RhY2soc3ApID8gMSA6IDApOwp9CgpleHRlcm4gaW50IHJlcXVlc3RfaXJx
KHVuc2lnbmVkIGludCwKICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqaGFuZGxlcikoaW50
LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZnJlZV9pcnEodW5z
aWduZWQgaW50LCB2b2lkICopOwojIDY4MCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvc2NoZWQuaCIKc3RhdGljIGlubGluZSBpbnQgc3VzZXIodm9pZCkKewogICAg
ICAgIGlmICghKCAoMSA8PCAoMCArMSkpICYgMHgwMDAwMDAwMCA/ICgxIDw8ICgwKSkgJiAweDAw
MDAwMDAwIDogKDEgPDwgKDApKSAmIHNlY3VyZWJpdHMgKSAmJiBnZXRfY3VycmVudCgpLT5ldWlk
ID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9IDB4MDAwMDAx
MDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7
Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGZzdXNlcih2b2lkKQp7CiAgICAgICAgaWYgKCEoICgxIDw8
ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAmIDB4MDAwMDAwMDAgOiAoMSA8PCAo
MCkpICYgc2VjdXJlYml0cyApICYmIGdldF9jdXJyZW50KCktPmZzdWlkID09IDApIHsKICAgICAg
ICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9IDB4MDAwMDAxMDA7CiAgICAgICAgICAg
ICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCgoKCnN0YXRp
YyBpbmxpbmUgaW50IGNhcGFibGUoaW50IGNhcCkKewoKICAgICAgICBpZiAoKChnZXRfY3VycmVu
dCgpLT5jYXBfZWZmZWN0aXZlKSAmICgxIDw8IChjYXApKSkpCgoKCiAgICAgICAgewogICAgICAg
ICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAg
ICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKCgoKZXh0ZXJuIHN0
cnVjdCBtbV9zdHJ1Y3QgKiBtbV9hbGxvYyh2b2lkKTsKCmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0
ICogc3RhcnRfbGF6eV90bGIodm9pZCk7CmV4dGVybiB2b2lkIGVuZF9sYXp5X3RsYihzdHJ1Y3Qg
bW1fc3RydWN0ICptbSk7CgoKZXh0ZXJuIGlubGluZSB2b2lkIF9fbW1kcm9wKHN0cnVjdCBtbV9z
dHJ1Y3QgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpzdGF0aWMgaW5saW5lIHZvaWQg
bW1kcm9wKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSkKewogICAgICAgIGlmIChhdG9taWNfZGVjX2Fu
ZF90ZXN0KCZtbS0+bW1fY291bnQpKQogICAgICAgICAgICAgICAgX19tbWRyb3AobW0pOwp9CgoK
ZXh0ZXJuIHZvaWQgbW1wdXQoc3RydWN0IG1tX3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIG1tX3Jl
bGVhc2Uodm9pZCk7CgoKCgpleHRlcm4gc3RydWN0IGZpbGUgKiogYWxsb2NfZmRfYXJyYXkoaW50
KTsKZXh0ZXJuIGludCBleHBhbmRfZmRfYXJyYXkoc3RydWN0IGZpbGVzX3N0cnVjdCAqLCBpbnQg
bnIpOwpleHRlcm4gdm9pZCBmcmVlX2ZkX2FycmF5KHN0cnVjdCBmaWxlICoqLCBpbnQpOwoKZXh0
ZXJuIGZkX3NldCAqYWxsb2NfZmRzZXQoaW50KTsKZXh0ZXJuIGludCBleHBhbmRfZmRzZXQoc3Ry
dWN0IGZpbGVzX3N0cnVjdCAqLCBpbnQgbnIpOwpleHRlcm4gdm9pZCBmcmVlX2Zkc2V0KGZkX3Nl
dCAqLCBpbnQpOwoKZXh0ZXJuIGludCBjb3B5X3RocmVhZChpbnQsIHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBzdHJ1Y3Qg
cHRfcmVncyAqKTsKZXh0ZXJuIHZvaWQgZmx1c2hfdGhyZWFkKHZvaWQpOwpleHRlcm4gdm9pZCBl
eGl0X3RocmVhZCh2b2lkKTsKCmV4dGVybiB2b2lkIGV4aXRfbW0oc3RydWN0IHRhc2tfc3RydWN0
ICopOwpleHRlcm4gdm9pZCBleGl0X2ZpbGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJu
IHZvaWQgZXhpdF9zaWdoYW5kKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIHJl
cGFyZW50X3RvX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGRhZW1vbml6ZSh2b2lkKTsKCmV4dGVy
biBpbnQgZG9fZXhlY3ZlKGNoYXIgKiwgY2hhciAqKiwgY2hhciAqKiwgc3RydWN0IHB0X3JlZ3Mg
Kik7CmV4dGVybiBpbnQgZG9fZm9yayh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBzdHJ1
Y3QgcHRfcmVncyAqLCB1bnNpZ25lZCBsb25nKTsKCmV4dGVybiB2b2lkIGFkZF93YWl0X3F1ZXVl
KHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZSh3YWl0
X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpleHRlcm4gdm9pZCByZW1vdmVfd2FpdF9xdWV1ZSh3YWl0X3F1ZXVlX2hlYWRf
dCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoj
IDg0OCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIK
c3RhdGljIGlubGluZSB2b2lkIGRlbF9mcm9tX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAq
IHApCnsKICAgICAgICBucl9ydW5uaW5nLS07CiAgICAgICAgcC0+c2xlZXBfdGltZSA9IGppZmZp
ZXM7CiAgICAgICAgbGlzdF9kZWwoJnAtPnJ1bl9saXN0KTsKICAgICAgICBwLT5ydW5fbGlzdC5u
ZXh0ID0gKCh2b2lkICopMCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHRhc2tfb25fcnVucXVldWUo
c3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgcmV0dXJuIChwLT5ydW5fbGlzdC5uZXh0
ICE9ICgodm9pZCAqKTApKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHVuaGFzaF9wcm9jZXNzKHN0
cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIGlmICh0YXNrX29uX3J1bnF1ZXVlKHApKSBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAgZG8geyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB3cml0ZV9sb2NrKCZ0YXNrbGlz
dF9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbnJfdGhyZWFkcy0tOwogICAgICAgIHVuaGFz
aF9waWQocCk7CiAgICAgICAgZG8geyAocCktPm5leHRfdGFzay0+cHJldl90YXNrID0gKHApLT5w
cmV2X3Rhc2s7IChwKS0+cHJldl90YXNrLT5uZXh0X3Rhc2sgPSAocCktPm5leHRfdGFzazsgaWYg
KChwKS0+cF9vc3B0cikgKHApLT5wX29zcHRyLT5wX3lzcHRyID0gKHApLT5wX3lzcHRyOyBpZiAo
KHApLT5wX3lzcHRyKSAocCktPnBfeXNwdHItPnBfb3NwdHIgPSAocCktPnBfb3NwdHI7IGVsc2Ug
KHApLT5wX3BwdHItPnBfY3B0ciA9IChwKS0+cF9vc3B0cjsgfSB3aGlsZSAoMCk7CiAgICAgICAg
bGlzdF9kZWwoJnAtPnRocmVhZF9ncm91cCk7CiAgICAgICAgZG8geyBhc20gdm9sYXRpbGUoImxv
Y2sgOyBhZGRsICQiICIweDAxMDAwMDAwIiAiLCUwIjoiPW0iICgoJnRhc2tsaXN0X2xvY2spLT5s
b2NrKSA6IDogIm1lbW9yeSIpOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9y
eSIpOyB9IHdoaWxlICgwKTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX2xvY2soc3RydWN0
IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgc3Bpbl9sb2NrKCZwLT5hbGxvY19sb2NrKTsKfQoK
c3RhdGljIGlubGluZSB2b2lkIHRhc2tfdW5sb2NrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewog
ICAgICAgIHNwaW5fdW5sb2NrKCZwLT5hbGxvY19sb2NrKTsKfQoKCnN0YXRpYyBpbmxpbmUgY2hh
ciAqIGRfcGF0aChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCB2ZnNtb3VudCAqdmZzbW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgaW50IGJ1ZmxlbikK
ewogICAgICAgIGNoYXIgKnJlczsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKnJvb3RtbnQ7CiAg
ICAgICAgc3RydWN0IGRlbnRyeSAqcm9vdDsKICAgICAgICByZWFkX2xvY2soJmdldF9jdXJyZW50
KCktPmZzLT5sb2NrKTsKICAgICAgICByb290bW50ID0gbW50Z2V0KGdldF9jdXJyZW50KCktPmZz
LT5yb290bW50KTsKICAgICAgICByb290ID0gZGdldChnZXRfY3VycmVudCgpLT5mcy0+cm9vdCk7
CiAgICAgICAgYXNtIHZvbGF0aWxlKCJsb2NrIDsgaW5jbCAlMCIgOiI9bSIgKCgmZ2V0X2N1cnJl
bnQoKS0+ZnMtPmxvY2spLT5sb2NrKSA6IDogIm1lbW9yeSIpOwogICAgICAgIHNwaW5fbG9jaygm
ZGNhY2hlX2xvY2spOwogICAgICAgIHJlcyA9IF9fZF9wYXRoKGRlbnRyeSwgdmZzbW50LCByb290
LCByb290bW50LCBidWYsIGJ1Zmxlbik7CiAgICAgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2Nr
KTsKICAgICAgICBkcHV0KHJvb3QpOwogICAgICAgIG1udHB1dChyb290bW50KTsKICAgICAgICBy
ZXR1cm4gcmVzOwp9CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L2Vycm5vLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9tbS5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3N0cmluZy5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9saXN0LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L21tem9uZS5oIiAxCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgv
aW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDIxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRlZiBzdHJ1Y3QgZnJlZV9h
cmVhX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAg
dW5zaWduZWQgbG9uZyAqbWFwOwp9IGZyZWVfYXJlYV90OwoKc3RydWN0IHBnbGlzdF9kYXRhOwoj
IDM2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK
dHlwZWRlZiBzdHJ1Y3Qgem9uZV9zdHJ1Y3QgewoKCgogICAgICAgIHNwaW5sb2NrX3QgbG9jazsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfcGFnZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBw
YWdlc19taW4sIHBhZ2VzX2xvdywgcGFnZXNfaGlnaDsKICAgICAgICBpbnQgbmVlZF9iYWxhbmNl
OwoKCgoKICAgICAgICBmcmVlX2FyZWFfdCBmcmVlX2FyZWFbMTBdOwoKCgoKICAgICAgICBzdHJ1
Y3QgcGdsaXN0X2RhdGEgKnpvbmVfcGdkYXQ7CiAgICAgICAgc3RydWN0IHBhZ2UgKnpvbmVfbWVt
X21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHpvbmVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5z
aWduZWQgbG9uZyB6b25lX3N0YXJ0X21hcG5yOwoKCgoKICAgICAgICBjaGFyICpuYW1lOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKfSB6b25lX3Q7CiMgODEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgp0eXBlZGVmIHN0cnVjdCB6b25lbGlz
dF9zdHJ1Y3QgewogICAgICAgIHpvbmVfdCAqIHpvbmVzIFszICsxXTsKfSB6b25lbGlzdF90Owoj
IDk4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK
c3RydWN0IGJvb3RtZW1fZGF0YTsKdHlwZWRlZiBzdHJ1Y3QgcGdsaXN0X2RhdGEgewogICAgICAg
IHpvbmVfdCBub2RlX3pvbmVzWzNdOwogICAgICAgIHpvbmVsaXN0X3Qgbm9kZV96b25lbGlzdHNb
MHgwZiArMV07CiAgICAgICAgaW50IG5yX3pvbmVzOwogICAgICAgIHN0cnVjdCBwYWdlICpub2Rl
X21lbV9tYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqdmFsaWRfYWRkcl9iaXRtYXA7CiAgICAg
ICAgc3RydWN0IGJvb3RtZW1fZGF0YSAqYmRhdGE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBub2Rl
X3N0YXJ0X3BhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zdGFydF9tYXBucjsKICAg
ICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc2l6ZTsKICAgICAgICBpbnQgbm9kZV9pZDsKICAgICAg
ICBzdHJ1Y3QgcGdsaXN0X2RhdGEgKm5vZGVfbmV4dDsKfSBwZ19kYXRhX3Q7CgpleHRlcm4gaW50
IG51bW5vZGVzOwpleHRlcm4gcGdfZGF0YV90ICpwZ2RhdF9saXN0OwojIDEyMyAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0cnVjdCBwYWdlOwpl
eHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNfY29yZShwZ19kYXRhX3QgKnBnZGF0KTsKZXh0ZXJu
IHZvaWQgZnJlZV9hcmVhX2luaXRfY29yZShpbnQgbmlkLCBwZ19kYXRhX3QgKnBnZGF0LCBzdHJ1
Y3QgcGFnZSAqKmdtYXAsCiAgdW5zaWduZWQgbG9uZyAqem9uZXNfc2l6ZSwgdW5zaWduZWQgbG9u
ZyBwYWRkciwgdW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUsCiAgc3RydWN0IHBhZ2UgKnBtYXAp
OwoKZXh0ZXJuIHBnX2RhdGFfdCBjb250aWdfcGFnZV9kYXRhOwojIDEzICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3dhcC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyA2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zd2FwLmgiIDIKIyAyNSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3dhcC5oIgp1bmlvbiBzd2FwX2hlYWRl
ciB7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciByZXNlcnZl
ZFsoMVVMIDw8IDEyKSAtIDEwXTsKICAgICAgICAgICAgICAgIGNoYXIgbWFnaWNbMTBdOwogICAg
ICAgIH0gbWFnaWM7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hh
ciBib290Yml0c1sxMDI0XTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxhc3RfcGFnZTsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBucl9iYWRwYWdlczsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWRk
aW5nWzEyNV07CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFkcGFnZXNbMV07CiAgICAg
ICAgfSBpbmZvOwp9OwojIDUxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9zd2FwLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNt
L2F0b21pYy5oIiAxCiMgNTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3N3YXAuaCIgMgojIDY0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9zd2FwLmgiCnN0cnVjdCBzd2FwX2luZm9fc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBp
bnQgZmxhZ3M7CiAgICAgICAga2Rldl90IHN3YXBfZGV2aWNlOwogICAgICAgIHNwaW5sb2NrX3Qg
c2Rldl9sb2NrOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiBzd2FwX2ZpbGU7CiAgICAgICAgc3Ry
dWN0IHZmc21vdW50ICpzd2FwX3Zmc21udDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqIHN3YXBf
bWFwOwogICAgICAgIHVuc2lnbmVkIGludCBsb3dlc3RfYml0OwogICAgICAgIHVuc2lnbmVkIGlu
dCBoaWdoZXN0X2JpdDsKICAgICAgICB1bnNpZ25lZCBpbnQgY2x1c3Rlcl9uZXh0OwogICAgICAg
IHVuc2lnbmVkIGludCBjbHVzdGVyX25yOwogICAgICAgIGludCBwcmlvOwogICAgICAgIGludCBw
YWdlczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heDsKICAgICAgICBpbnQgbmV4dDsKfTsKCmV4
dGVybiBpbnQgbnJfc3dhcF9wYWdlczsKZXh0ZXJuIHVuc2lnbmVkIGludCBucl9mcmVlX3BhZ2Vz
KHZvaWQpOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX2ZyZWVfYnVmZmVyX3BhZ2VzKHZvaWQpOwpl
eHRlcm4gaW50IG5yX2FjdGl2ZV9wYWdlczsKZXh0ZXJuIGludCBucl9pbmFjdGl2ZV9wYWdlczsK
ZXh0ZXJuIGF0b21pY190IG5yX2FzeW5jX3BhZ2VzOwpleHRlcm4gYXRvbWljX3QgcGFnZV9jYWNo
ZV9zaXplOwpleHRlcm4gYXRvbWljX3QgYnVmZmVybWVtX3BhZ2VzOwpleHRlcm4gc3BpbmxvY2tf
dCBwYWdlY2FjaGVfbG9jazsKZXh0ZXJuIHZvaWQgX19yZW1vdmVfaW5vZGVfcGFnZShzdHJ1Y3Qg
cGFnZSAqKTsKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3Ry
dWN0IHN5c2luZm87CgpzdHJ1Y3Qgem9uZV90OwoKCmV4dGVybiB2b2lkIGxydV9jYWNoZV9hZGQo
c3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBf
X2xydV9jYWNoZV9kZWwoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpleHRlcm4gdm9pZCBscnVfY2FjaGVfZGVsKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIGRlYWN0aXZhdGVfcGFnZShzdHJ1Y3QgcGFnZSAq
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGFjdGl2YXRlX3BhZ2Uo
c3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJuIHZvaWQg
c3dhcF9zZXR1cCh2b2lkKTsKCgpleHRlcm4gd2FpdF9xdWV1ZV9oZWFkX3Qga3N3YXBkX3dhaXQ7
CmV4dGVybiBpbnQgdHJ5X3RvX2ZyZWVfcGFnZXMoem9uZV90ICosIHVuc2lnbmVkIGludCwgdW5z
aWduZWQgaW50KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKZXh0ZXJuIHZvaWQgcndf
c3dhcF9wYWdlKGludCwgc3RydWN0IHBhZ2UgKik7CmV4dGVybiB2b2lkIHJ3X3N3YXBfcGFnZV9u
b2xvY2soaW50LCBzd3BfZW50cnlfdCwgY2hhciAqKTsKCgoKCgoKZXh0ZXJuIHZvaWQgc2hvd19z
d2FwX2NhY2hlX2luZm8odm9pZCk7CgpleHRlcm4gaW50IGFkZF90b19zd2FwX2NhY2hlKHN0cnVj
dCBwYWdlICosIHN3cF9lbnRyeV90KTsKZXh0ZXJuIHZvaWQgX19kZWxldGVfZnJvbV9zd2FwX2Nh
Y2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIHZvaWQgZGVsZXRlX2Zyb21fc3dhcF9jYWNo
ZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiB2b2lkIGZyZWVfcGFnZV9hbmRfc3dhcF9jYWNo
ZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIGxvb2t1cF9zd2FwX2Nh
Y2hlKHN3cF9lbnRyeV90KTsKZXh0ZXJuIHN0cnVjdCBwYWdlICogcmVhZF9zd2FwX2NhY2hlX2Fz
eW5jKHN3cF9lbnRyeV90KTsKCgpleHRlcm4gaW50IG91dF9vZl9tZW1vcnkodm9pZCk7CmV4dGVy
biB2b2lkIG9vbV9raWxsKHZvaWQpOwoKCmV4dGVybiBpbnQgdG90YWxfc3dhcF9wYWdlczsKZXh0
ZXJuIHVuc2lnbmVkIGludCBucl9zd2FwZmlsZXM7CmV4dGVybiBzdHJ1Y3Qgc3dhcF9pbmZvX3N0
cnVjdCBzd2FwX2luZm9bXTsKZXh0ZXJuIGludCBpc19zd2FwX3BhcnRpdGlvbihrZGV2X3QpOwpl
eHRlcm4gdm9pZCBzaV9zd2FwaW5mbyhzdHJ1Y3Qgc3lzaW5mbyAqKTsKZXh0ZXJuIHN3cF9lbnRy
eV90IGdldF9zd2FwX3BhZ2Uodm9pZCk7CmV4dGVybiB2b2lkIGdldF9zd2FwaGFuZGxlX2luZm8o
c3dwX2VudHJ5X3QsIHVuc2lnbmVkIGxvbmcgKiwga2Rldl90ICosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKiopOwpleHRlcm4gaW50IHN3YXBf
ZHVwbGljYXRlKHN3cF9lbnRyeV90KTsKZXh0ZXJuIGludCBzd2FwX2NvdW50KHN0cnVjdCBwYWdl
ICopOwpleHRlcm4gaW50IHZhbGlkX3N3YXBoYW5kbGVzKHN3cF9lbnRyeV90LCB1bnNpZ25lZCBs
b25nICopOwpleHRlcm4gdm9pZCBzd2FwX2ZyZWUoc3dwX2VudHJ5X3QpOwpzdHJ1Y3Qgc3dhcF9s
aXN0X3QgewogICAgICAgIGludCBoZWFkOwogICAgICAgIGludCBuZXh0Owp9OwpleHRlcm4gc3Ry
dWN0IHN3YXBfbGlzdF90IHN3YXBfbGlzdDsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs
b25nIHN5c19zd2Fwb2ZmKGNvbnN0IGNoYXIgKik7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDAp
KSkgbG9uZyBzeXNfc3dhcG9uKGNvbnN0IGNoYXIgKiwgaW50KTsKCmV4dGVybiBzcGlubG9ja190
IHBhZ2VtYXBfbHJ1X2xvY2s7CgpleHRlcm4gdm9pZCBtYXJrX3BhZ2VfYWNjZXNzZWQoc3RydWN0
IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDIyMCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc3dhcC5oIgpleHRlcm4gc3BpbmxvY2tfdCBz
d2FwbG9jazsKCgoKCgoKZXh0ZXJuIHZvaWQgc2htZW1fdW51c2Uoc3dwX2VudHJ5X3QgZW50cnks
IHN0cnVjdCBwYWdlICpwYWdlKTsKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3JidHJlZS5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L21tLmgiIDIKCmV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9tYXBucjsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbnVtX3BoeXNwYWdlczsKZXh0ZXJuIHZvaWQgKiBoaWdoX21lbW9y
eTsKZXh0ZXJuIGludCBwYWdlX2NsdXN0ZXI7CgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBhY3Rp
dmVfbGlzdDsKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgaW5hY3RpdmVfbGlzdDsKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDI1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMgojIDE2
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQoj
IDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAx
CiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC90aHJlYWRz
LmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFi
bGUuaCIgMgoKCgoKCmV4dGVybiBwZ2RfdCBzd2FwcGVyX3BnX2RpclsxMDI0XTsKZXh0ZXJuIHZv
aWQgcGFnaW5nX2luaXQodm9pZCk7CiMgNjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHBna2Vybl9tYXNrOwoj
IDk1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgpl
eHRlcm4gdW5zaWduZWQgbG9uZyBlbXB0eV96ZXJvX3BhZ2VbMTAyNF07CiMgMTA5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIiAxCiMgMzIg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5o
IgpzdGF0aWMgaW5saW5lIGludCBwZ2Rfbm9uZShwZ2RfdCBwZ2QpIHsgcmV0dXJuIDA7IH0Kc3Rh
dGljIGlubGluZSBpbnQgcGdkX2JhZChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDA7IH0Kc3RhdGljIGlu
bGluZSBpbnQgcGdkX3ByZXNlbnQocGdkX3QgcGdkKSB7IHJldHVybiAxOyB9CiMgNTMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIgpzdGF0
aWMgaW5saW5lIHBtZF90ICogcG1kX29mZnNldChwZ2RfdCAqIGRpciwgdW5zaWduZWQgbG9uZyBh
ZGRyZXNzKQp7CiAgICAgICAgcmV0dXJuIChwbWRfdCAqKSBkaXI7Cn0KIyAxMTAgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIKIyAyNDQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNp
Z25lZCBsb25nIHBnMFsxMDI0XTsKIyAyNjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRpYyBpbmxpbmUgaW50IHB0ZV9yZWFkKHB0ZV90IHB0
ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0
ZV9leGVjKHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDA0OyB9CnN0YXRp
YyBpbmxpbmUgaW50IHB0ZV9kaXJ0eShwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cg
JiAweDA0MDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfeW91bmcocHRlX3QgcHRlKSB7IHJldHVy
biAocHRlKS5wdGVfbG93ICYgMHgwMjA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX3dyaXRlKHB0
ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDAyOyB9CgpzdGF0aWMgaW5saW5l
IHB0ZV90IHB0ZV9yZHByb3RlY3QocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDA0
OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX2V4cHJvdGVjdChwdGVfdCBw
dGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwMDQ7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGlu
ZSBwdGVfdCBwdGVfbWtjbGVhbihwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwNDA7
IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtvbGQocHRlX3QgcHRlKSB7
IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDIwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRl
X3QgcHRlX3dycHJvdGVjdChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwMDI7IHJl
dHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtyZWFkKHB0ZV90IHB0ZSkgeyAo
cHRlKS5wdGVfbG93IHw9IDB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3Qg
cHRlX21rZXhlYyhwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDAwNDsgcmV0dXJuIHB0
ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta2RpcnR5KHB0ZV90IHB0ZSkgeyAocHRlKS5w
dGVfbG93IHw9IDB4MDQwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21r
eW91bmcocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwMjA7IHJldHVybiBwdGU7IH0K
c3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWt3cml0ZShwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xv
dyB8PSAweDAwMjsgcmV0dXJuIHB0ZTsgfQoKc3RhdGljIGlubGluZSBpbnQgcHRlcF90ZXN0X2Fu
ZF9jbGVhcl9kaXJ0eShwdGVfdCAqcHRlcCkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KDYs
IHB0ZXApOyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcocHRl
X3QgKnB0ZXApIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdCg1LCBwdGVwKTsgfQpzdGF0aWMg
aW5saW5lIHZvaWQgcHRlcF9zZXRfd3Jwcm90ZWN0KHB0ZV90ICpwdGVwKSB7IGNsZWFyX2JpdCgx
LCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIHZvaWQgcHRlcF9ta2RpcnR5KHB0ZV90ICpwdGVwKSB7
IHNldF9iaXQoNiwgcHRlcCk7IH0KIyAyOTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21vZGlmeShwdGVf
dCBwdGUsIHBncHJvdF90IG5ld3Byb3QpCnsKICAgICAgICBwdGUucHRlX2xvdyAmPSAoKH4oKDFV
TCA8PCAxMiktMSkpIHwgMHgwMjAgfCAweDA0MCk7CiAgICAgICAgcHRlLnB0ZV9sb3cgfD0gKChu
ZXdwcm90KS5wZ3Byb3QpOwogICAgICAgIHJldHVybiBwdGU7Cn0KIyAyNiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDI3ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgNDMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCnN0cnVjdCB2bV9hcmVhX3N0cnVjdCB7
CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqIHZtX21tOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
dm1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9lbmQ7CgoKICAgICAgICBzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKnZtX25leHQ7CgogICAgICAgIHBncHJvdF90IHZtX3BhZ2VfcHJvdDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzOwoKICAgICAgICByYl9ub2RlX3Qgdm1fcmI7
CgoKCgoKCiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bV9uZXh0X3NoYXJlOwogICAg
ICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtX3BwcmV2X3NoYXJlOwoKCiAgICAgICAgc3Ry
dWN0IHZtX29wZXJhdGlvbnNfc3RydWN0ICogdm1fb3BzOwoKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyB2bV9wZ29mZjsKCiAgICAgICAgc3RydWN0IGZpbGUgKiB2bV9maWxlOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgdm1fcmFlbmQ7CiAgICAgICAgdm9pZCAqIHZtX3ByaXZhdGVfZGF0YTsKfTsKIyAx
MTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVy
biBwZ3Byb3RfdCBwcm90ZWN0aW9uX21hcFsxNl07CgoKCgoKCgpzdHJ1Y3Qgdm1fb3BlcmF0aW9u
c19zdHJ1Y3QgewogICAgICAgIHZvaWQgKCpvcGVuKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBh
cmVhKTsKICAgICAgICB2b2lkICgqY2xvc2UpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGFyZWEp
OwogICAgICAgIHN0cnVjdCBwYWdlICogKCpub3BhZ2UpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
IGFyZWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50IHdyaXRlX2FjY2Vzcyk7Cn07CiMgMTQ2
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIgp0eXBlZGVm
IHN0cnVjdCBwYWdlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgc3Ry
dWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsK
ICAgICAgICBzdHJ1Y3QgcGFnZSAqbmV4dF9oYXNoOwoKICAgICAgICBhdG9taWNfdCBjb3VudDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxy
dTsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBzdHJ1Y3QgcGFnZSAq
KnBwcmV2X2hhc2g7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKICAgICAg
ICB2b2lkICp2aXJ0dWFsOwoKICAgICAgICBzdHJ1Y3Qgem9uZV9zdHJ1Y3QgKnpvbmU7Cn0gbWVt
X21hcF90OwojIDI5OSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
bW0uaCIKZXh0ZXJuIHZvaWQgX19zZXRfcGFnZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqKTsKCnN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRfcGFnZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqIHBhZ2UpCnsKICAgICAg
ICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoNCwgJnBhZ2UtPmZsYWdzKSkKICAgICAgICAgICAgICAg
IF9fc2V0X3BhZ2VfZGlydHkocGFnZSk7Cn0KIyAzNjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiBtZW1fbWFwX3QgKiBtZW1fbWFwOwoKCgoK
CgoKZXh0ZXJuIHN0cnVjdCBwYWdlICogX2FsbG9jX3BhZ2VzKHVuc2lnbmVkIGludCBnZnBfbWFz
aywgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biBzdHJ1Y3QgcGFnZSAqIF9fYWxsb2NfcGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNp
Z25lZCBpbnQgb3JkZXIsIHpvbmVsaXN0X3QgKnpvbmVsaXN0KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIGFsbG9jX3BhZ2VzX25vZGUoaW50IG5pZCwg
dW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpOwoKc3RhdGljIGlubGlu
ZSBzdHJ1Y3QgcGFnZSAqIGFsbG9jX3BhZ2VzKHVuc2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWdu
ZWQgaW50IG9yZGVyKQp7CgoKCiAgICAgICAgaWYgKG9yZGVyID49IDEwKQogICAgICAgICAgICAg
ICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiBfYWxsb2NfcGFnZXMoZ2ZwX21h
c2ssIG9yZGVyKTsKfQoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBfX2dldF9mcmVlX3BhZ2VzKHVu
c2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvZWRfcGFnZSh1bnNpZ25l
ZCBpbnQgZ2ZwX21hc2spIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA0MDUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiB2b2lkIF9f
ZnJlZV9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGZyZWVfcGFnZXModW5zaWduZWQgbG9u
ZyBhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsK
CgoKCmV4dGVybiB2b2lkIHNob3dfZnJlZV9hcmVhcyh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19m
cmVlX2FyZWFzX25vZGUocGdfZGF0YV90ICpwZ2RhdCk7CgpleHRlcm4gdm9pZCBjbGVhcl9wYWdl
X3RhYmxlcyhzdHJ1Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgpzdHJ1Y3Qg
cGFnZSAqIHNobWVtX25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVk
IGxvbmcgYWRkcmVzcywgaW50IG5vX3NoYXJlKTsKc3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0
dXAoY2hhciAqIG5hbWUsIGxvZmZfdCBzaXplKTsKZXh0ZXJuIHZvaWQgc2htZW1fbG9jayhzdHJ1
Y3QgZmlsZSAqIGZpbGUsIGludCBsb2NrKTsKZXh0ZXJuIGludCBzaG1lbV96ZXJvX3NldHVwKHN0
cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVj
dCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6
ZSk7CmV4dGVybiBpbnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3Ry
dWN0IG1tX3N0cnVjdCAqc3JjLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CmV4dGVybiBp
bnQgcmVtYXBfcGFnZV9yYW5nZSh1bnNpZ25lZCBsb25nIGZyb20sIHVuc2lnbmVkIGxvbmcgdG8s
IHVuc2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90X3QgcHJvdCk7CmV4dGVybiBpbnQgemVyb21hcF9w
YWdlX3JhbmdlKHVuc2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3Byb3Rf
dCBwcm90KTsKCmV4dGVybiBpbnQgdm10cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgbG9m
Zl90IG9mZnNldCk7CmV4dGVybiBwbWRfdCAqX19wbWRfYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAq
bW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpleHRlcm4gcHRlX3QgKnB0ZV9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwg
cG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CmV4dGVybiBpbnQgaGFuZGxlX21tX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLHN0
cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0
ZV9hY2Nlc3MpOwpleHRlcm4gaW50IG1ha2VfcGFnZXNfcHJlc2VudCh1bnNpZ25lZCBsb25nIGFk
ZHIsIHVuc2lnbmVkIGxvbmcgZW5kKTsKZXh0ZXJuIGludCBhY2Nlc3NfcHJvY2Vzc192bShzdHJ1
Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpidWYsIGludCBs
ZW4sIGludCB3cml0ZSk7CmV4dGVybiBpbnQgcHRyYWNlX3JlYWRkYXRhKHN0cnVjdCB0YXNrX3N0
cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIHNyYywgY2hhciAqZHN0LCBpbnQgbGVuKTsKZXh0ZXJu
IGludCBwdHJhY2Vfd3JpdGVkYXRhKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBjaGFyICogc3Jj
LCB1bnNpZ25lZCBsb25nIGRzdCwgaW50IGxlbik7CmV4dGVybiBpbnQgcHRyYWNlX2F0dGFjaChz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CmV4dGVybiBpbnQgcHRyYWNlX2RldGFjaChzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHRyYWNlX2Rpc2FibGUo
c3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgoKCgpzdGF0aWMgaW5saW5lIHBtZF90ICpwbWRfYWxs
b2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVz
cykKewogICAgICAgIGlmIChwZ2Rfbm9uZSgqcGdkKSkKICAgICAgICAgICAgICAgIHJldHVybiBf
X3BtZF9hbGxvYyhtbSwgcGdkLCBhZGRyZXNzKTsKICAgICAgICByZXR1cm4gcG1kX29mZnNldChw
Z2QsIGFkZHJlc3MpOwp9CgpleHRlcm4gaW50IHBndF9jYWNoZV93YXRlclsyXTsKZXh0ZXJuIGlu
dCBjaGVja19wZ3RfY2FjaGUodm9pZCk7CgpleHRlcm4gdm9pZCBmcmVlX2FyZWFfaW5pdCh1bnNp
Z25lZCBsb25nICogem9uZXNfc2l6ZSk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0X25vZGUo
aW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKnBtYXAsCiAgICAgICAgdW5z
aWduZWQgbG9uZyAqIHpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9wYWRkciwK
ICAgICAgICB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSk7CmV4dGVybiB2b2lkIG1lbV9pbml0
KHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X21lbSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2lfbWVtaW5m
byhzdHJ1Y3Qgc3lzaW5mbyAqIHZhbCk7CmV4dGVybiB2b2lkIHN3YXBpbl9yZWFkYWhlYWQoc3dw
X2VudHJ5X3QpOwoKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlIHN3YXBwZXJfc3BhY2U7CgoK
c3RhdGljIGlubGluZSBpbnQgaXNfcGFnZV9jYWNoZV9mcmVlYWJsZShzdHJ1Y3QgcGFnZSAqIHBh
Z2UpCnsKICAgICAgICByZXR1cm4gKCgmKHBhZ2UpLT5jb3VudCktPmNvdW50ZXIpIC0gISFwYWdl
LT5idWZmZXJzID09IDE7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBleGNsdXNpdmVfc3dhcF9w
YWdlKHN0cnVjdCBwYWdlICpwYWdlKQp7CiAgICAgICAgaWYgKCEoX19idWlsdGluX2NvbnN0YW50
X3AoMCkgPyBjb25zdGFudF90ZXN0X2JpdCgoMCksKCYocGFnZSktPmZsYWdzKSkgOiB2YXJpYWJs
ZV90ZXN0X2JpdCgoMCksKCYocGFnZSktPmZsYWdzKSkpKQogICAgICAgICAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIGlmICghKChwYWdlKS0+
bWFwcGluZyA9PSAmc3dhcHBlcl9zcGFjZSkpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICBpZiAoKCgmKHBhZ2UpLT5jb3VudCktPmNvdW50ZXIpIC0gISFwYWdlLT5idWZmZXJzICE9
IDIpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gc3dhcF9jb3VudChw
YWdlKSA9PSAxOwp9CgpleHRlcm4gdm9pZCBfX2ZyZWVfcHRlKHB0ZV90KTsKCgpleHRlcm4gdm9p
ZCBsb2NrX3ZtYV9tYXBwaW5ncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lk
IHVubG9ja192bWFfbWFwcGluZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9p
ZCBpbnNlcnRfdm1fc3RydWN0KHN0cnVjdCBtbV9zdHJ1Y3QgKiwgc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICopOwpleHRlcm4gdm9pZCBfX2luc2VydF92bV9zdHJ1Y3Qoc3RydWN0IG1tX3N0cnVjdCAq
LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGJ1aWxkX21tYXBfcmIoc3Ry
dWN0IG1tX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZXhpdF9tbWFwKHN0cnVjdCBtbV9zdHJ1Y3Qg
Kik7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfdW5tYXBwZWRfYXJlYShzdHJ1Y3QgZmlsZSAq
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRvX21tYXBfcGdvZmYoc3RydWN0IGZpbGUgKmZp
bGUsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWdu
ZWQgbG9uZyBwcm90LAogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZywgdW5zaWduZWQgbG9uZyBw
Z29mZik7CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAq
ZmlsZSwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNp
Z25lZCBsb25nIHByb3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25n
IG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmV0ID0gLTIyOwogICAgICAgIGlmICgo
b2Zmc2V0ICsgKCgobGVuKSsoMVVMIDw8IDEyKS0xKSYofigoMVVMIDw8IDEyKS0xKSkpKSA8IG9m
ZnNldCkKICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgIGlmICghKG9mZnNldCAmIH4o
figoMVVMIDw8IDEyKS0xKSkpKQogICAgICAgICAgICAgICAgcmV0ID0gZG9fbW1hcF9wZ29mZihm
aWxlLCBhZGRyLCBsZW4sIHByb3QsIGZsYWcsIG9mZnNldCA+PiAxMik7Cm91dDoKICAgICAgICBy
ZXR1cm4gcmV0Owp9CgpleHRlcm4gaW50IGRvX211bm1hcChzdHJ1Y3QgbW1fc3RydWN0ICosIHVu
c2lnbmVkIGxvbmcsIHNpemVfdCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBkb19icmsodW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgX192bWFfdW5saW5r
KHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCBzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBwcmV2KQp7CiAgICAgICAgcHJldi0+dm1fbmV4dCA9IHZtYS0+
dm1fbmV4dDsKICAgICAgICByYl9lcmFzZSgmdm1hLT52bV9yYiwgJm1tLT5tbV9yYik7CiAgICAg
ICAgaWYgKG1tLT5tbWFwX2NhY2hlID09IHZtYSkKICAgICAgICAgICAgICAgIG1tLT5tbWFwX2Nh
Y2hlID0gcHJldjsKfQoKc3RhdGljIGlubGluZSBpbnQgY2FuX3ZtYV9tZXJnZShzdHJ1Y3Qgdm1f
YXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3MpCnsKICAgICAgICBpZiAo
IXZtYS0+dm1fZmlsZSAmJiB2bWEtPnZtX2ZsYWdzID09IHZtX2ZsYWdzKQogICAgICAgICAgICAg
ICAgcmV0dXJuIDE7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIDA7Cn0KCnN0
cnVjdCB6b25lX3Q7CgpleHRlcm4gdm9pZCByZW1vdmVfaW5vZGVfcGFnZShzdHJ1Y3QgcGFnZSAq
KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGFnZV91bnVzZShzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJu
IHZvaWQgdHJ1bmNhdGVfaW5vZGVfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9mZl90
KTsKCgpleHRlcm4gaW50IGZpbGVtYXBfc3luYyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwgdW5z
aWduZWQgbG9uZywgc2l6ZV90LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gc3RydWN0IHBhZ2UgKmZp
bGVtYXBfbm9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25nLCBpbnQp
OwojIDU3NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIK
c3RhdGljIGlubGluZSBpbnQgZXhwYW5kX3N0YWNrKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZt
YSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBncm93OwoK
CgoKCgogICAgICAgIGFkZHJlc3MgJj0gKH4oKDFVTCA8PCAxMiktMSkpOwogICAgICAgIGdyb3cg
PSAodm1hLT52bV9zdGFydCAtIGFkZHJlc3MpID4+IDEyOwogICAgICAgIGlmICh2bWEtPnZtX2Vu
ZCAtIGFkZHJlc3MgPiBnZXRfY3VycmVudCgpLT5ybGltWzNdLnJsaW1fY3VyIHx8CiAgICAgICAg
ICAgICgodm1hLT52bV9tbS0+dG90YWxfdm0gKyBncm93KSA8PCAxMikgPiBnZXRfY3VycmVudCgp
LT5ybGltWzldLnJsaW1fY3VyKQogICAgICAgICAgICAgICAgcmV0dXJuIC0xMjsKICAgICAgICBz
cGluX2xvY2soJnZtYS0+dm1fbW0tPnBhZ2VfdGFibGVfbG9jayk7CiAgICAgICAgdm1hLT52bV9z
dGFydCA9IGFkZHJlc3M7CiAgICAgICAgdm1hLT52bV9wZ29mZiAtPSBncm93OwogICAgICAgIHZt
YS0+dm1fbW0tPnRvdGFsX3ZtICs9IGdyb3c7CiAgICAgICAgaWYgKHZtYS0+dm1fZmxhZ3MgJiAw
eDAwMDAyMDAwKQogICAgICAgICAgICAgICAgdm1hLT52bV9tbS0+bG9ja2VkX3ZtICs9IGdyb3c7
CiAgICAgICAgc3Bpbl91bmxvY2soJnZtYS0+dm1fbW0tPnBhZ2VfdGFibGVfbG9jayk7CiAgICAg
ICAgcmV0dXJuIDA7Cn0KCgpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92bWEo
c3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIGFkZHIpOwpleHRlcm4gc3RydWN0
IHZtX2FyZWFfc3RydWN0ICogZmluZF92bWFfcHJldihzdHJ1Y3QgbW1fc3RydWN0ICogbW0sIHVu
c2lnbmVkIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqcHByZXYpOwoKCgpzdGF0aWMgaW5saW5lIHN0
cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX2ludGVyc2VjdGlvbihzdHJ1Y3QgbW1fc3Ry
dWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnRfYWRkciwgdW5zaWduZWQgbG9uZyBlbmRfYWRk
cikKewogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSA9IGZpbmRfdm1hKG1tLHN0
YXJ0X2FkZHIpOwoKICAgICAgICBpZiAodm1hICYmIGVuZF9hZGRyIDw9IHZtYS0+dm1fc3RhcnQp
CiAgICAgICAgICAgICAgICB2bWEgPSAoKHZvaWQgKikwKTsKICAgICAgICByZXR1cm4gdm1hOwp9
CgpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICpmaW5kX2V4dGVuZF92bWEoc3RydWN0IG1t
X3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCiMgNDggIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKZXh0ZXJuIHZvaWQga21lbV9jYWNo
ZV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBrbWVtX2NhY2hlX3NpemVzX2luaXQodm9pZCk7Cgpl
eHRlcm4ga21lbV9jYWNoZV90ICprbWVtX2ZpbmRfZ2VuZXJhbF9jYWNoZXAoc2l6ZV90LCBpbnQg
Z2ZwZmxhZ3MpOwpleHRlcm4ga21lbV9jYWNoZV90ICprbWVtX2NhY2hlX2NyZWF0ZShjb25zdCBj
aGFyICosIHNpemVfdCwgc2l6ZV90LCB1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1bnNp
Z25lZCBsb25nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo
Kikodm9pZCAqLCBrbWVtX2NhY2hlX3QgKiwgdW5zaWduZWQgbG9uZykpOwpleHRlcm4gaW50IGtt
ZW1fY2FjaGVfZGVzdHJveShrbWVtX2NhY2hlX3QgKik7CmV4dGVybiBpbnQga21lbV9jYWNoZV9z
aHJpbmsoa21lbV9jYWNoZV90ICopOwpleHRlcm4gdm9pZCAqa21lbV9jYWNoZV9hbGxvYyhrbWVt
X2NhY2hlX3QgKiwgaW50KTsKZXh0ZXJuIHZvaWQga21lbV9jYWNoZV9mcmVlKGttZW1fY2FjaGVf
dCAqLCB2b2lkICopOwoKZXh0ZXJuIHZvaWQgKmttYWxsb2Moc2l6ZV90LCBpbnQpOwpleHRlcm4g
dm9pZCBrZnJlZShjb25zdCB2b2lkICopOwoKZXh0ZXJuIGludCBrbWVtX2NhY2hlX3JlYXAoaW50
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgc2xhYmluZm9fcmVhZF9w
cm9jKGNoYXIgKnBhZ2UsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2ZmLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgY291bnQsIGludCAqZW9mLCB2b2lkICpkYXRhKTsKZXh0ZXJu
IGludCBzbGFiaW5mb193cml0ZV9wcm9jKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpi
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZv
aWQgKmRhdGEpOwoKCmV4dGVybiBrbWVtX2NhY2hlX3QgKnZtX2FyZWFfY2FjaGVwOwpleHRlcm4g
a21lbV9jYWNoZV90ICptbV9jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKm5hbWVzX2NhY2hl
cDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZmlsZXNfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90
ICpmaWxwX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZHF1b3RfY2FjaGVwOwpleHRlcm4g
a21lbV9jYWNoZV90ICpiaF9jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmZzX2NhY2hlcDsK
ZXh0ZXJuIGttZW1fY2FjaGVfdCAqc2lnYWN0X2NhY2hlcDsKIyAzMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NjYXR0ZXJsaXN0LmgiIDEKCgoKc3RydWN0IHNjYXR0ZXJs
aXN0IHsKICAgIGNoYXIgKiBhZGRyZXNzOwoKICAgIHN0cnVjdCBwYWdlICogcGFnZTsKICAgIHVu
c2lnbmVkIGludCBvZmZzZXQ7CgogICAgZG1hX2FkZHJfdCBkbWFfYWRkcmVzczsKICAgIHVuc2ln
bmVkIGludCBsZW5ndGg7Cn07CiMgMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2FzbS9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3N0cmluZy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2FzbS9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2FzbS9pby5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9hc20vaW8uaCIgMgojIDQ2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9h
c20vaW8uaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC92
bWFsbG9jLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9zY2hlZC5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvdm1hbGxvYy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvbW0uaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3ZtYWxsb2MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgv
aW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaCIgMgoKCgoKCnN0cnVjdCB2bV9zdHJ1Y3Qgewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdm9pZCAqIGFkZHI7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzaXplOwogICAgICAgIHN0cnVjdCB2bV9zdHJ1Y3QgKiBuZXh0Owp9OwoK
ZXh0ZXJuIHN0cnVjdCB2bV9zdHJ1Y3QgKiBnZXRfdm1fYXJlYSAodW5zaWduZWQgbG9uZyBzaXpl
LCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKZXh0ZXJuIHZvaWQgdmZyZWUodm9pZCAqIGFkZHIpOwpl
eHRlcm4gdm9pZCAqIF9fdm1hbGxvYyAodW5zaWduZWQgbG9uZyBzaXplLCBpbnQgZ2ZwX21hc2ss
IHBncHJvdF90IHByb3QpOwpleHRlcm4gbG9uZyB2cmVhZChjaGFyICpidWYsIGNoYXIgKmFkZHIs
IHVuc2lnbmVkIGxvbmcgY291bnQpOwpleHRlcm4gdm9pZCB2bWZyZWVfYXJlYV9wYWdlcyh1bnNp
Z25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBpbnQgdm1hbGxv
Y19hcmVhX3BhZ2VzKHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2ZwX21hc2ssIHBncHJvdF90IHByb3Qp
OwoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIHZtYWxsb2MgKHVuc2lnbmVkIGxvbmcgc2l6ZSkK
ewogICAgICAgIHJldHVybiBfX3ZtYWxsb2Moc2l6ZSwgKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4
ODAgfCAweDEwMCkgfCAweDAyLCAoKHBncHJvdF90KSB7ICgoKDB4MDAxIHwgMHgwMDIgfCAweDA0
MCB8IDB4MDIwKSkgfCAweDEwMCkgfSApKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIHZt
YWxsb2NfZG1hICh1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICByZXR1cm4gX192bWFsbG9j
KHNpemUsICgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwgMHgxMDApfDB4MDEsICgocGdwcm90
X3QpIHsgKCgoMHgwMDEgfCAweDAwMiB8IDB4MDQwIHwgMHgwMjApKSB8IDB4MTAwKSB9ICkpOwp9
CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogdm1hbGxvY18zMih1bnNpZ25lZCBsb25nIHNpemUp
CnsKICAgICAgICByZXR1cm4gX192bWFsbG9jKHNpemUsICgweDIwIHwgMHgxMCB8IDB4NDAgfCAw
eDgwIHwgMHgxMDApLCAoKHBncHJvdF90KSB7ICgoKDB4MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4
MDIwKSkgfCAweDEwMCkgfSApKTsKfQoKCgoKCmV4dGVybiByd2xvY2tfdCB2bWxpc3RfbG9jazsK
CmV4dGVybiBzdHJ1Y3Qgdm1fc3RydWN0ICogdm1saXN0OwojIDQ3ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9hc20vaW8uaCIgMgojIDY2ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHZp
cnRfdG9fcGh5cyh2b2xhdGlsZSB2b2lkICogYWRkcmVzcykKewogICAgICAgIHJldHVybiAoKHVu
c2lnbmVkIGxvbmcpKGFkZHJlc3MpLSgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKTsKfQoK
c3RhdGljIGlubGluZSB2b2lkICogcGh5c190b192aXJ0KHVuc2lnbmVkIGxvbmcgYWRkcmVzcykK
ewogICAgICAgIHJldHVybiAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKGFkZHJlc3MpKygodW5z
aWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKSk7Cn0KCgoKCgoKZXh0ZXJuIHZvaWQgKiBfX2lvcmVt
YXAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9u
ZyBmbGFncyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgKiBpb3JlbWFwICh1bnNpZ25lZCBsb25nIG9m
ZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgcmV0dXJuIF9faW9yZW1hcChvZmZz
ZXQsIHNpemUsIDApOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIGlvcmVtYXBfbm9jYWNo
ZSAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJl
dHVybiBfX2lvcmVtYXAob2Zmc2V0LCBzaXplLCAweDAxMCk7Cn0KCmV4dGVybiB2b2lkIGlvdW5t
YXAodm9pZCAqYWRkcik7CiMgMTYwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSBpbnQgY2hlY2tfc2lnbmF0dXJlKHVuc2lnbmVkIGxv
bmcgaW9fYWRkciwKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaWduYXR1cmUsIGludCBs
ZW5ndGgpCnsKICAgICAgICBpbnQgcmV0dmFsID0gMDsKICAgICAgICBkbyB7CiAgICAgICAgICAg
ICAgICBpZiAoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9fYWRkcikp
KSAhPSAqc2lnbmF0dXJlKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAg
ICAgICAgICAgIGlvX2FkZHIrKzsKICAgICAgICAgICAgICAgIHNpZ25hdHVyZSsrOwogICAgICAg
ICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAgfSB3aGlsZSAobGVuZ3RoKTsKICAgICAgICByZXR2
YWwgPSAxOwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldHZhbDsKfQoKc3RhdGljIGlubGluZSBpbnQg
aXNhX2NoZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGlvX2FkZHIsCiAgICAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciAqc2lnbmF0dXJlLCBpbnQgbGVuZ3RoKQp7CiAgICAgICAgaW50IHJldHZh
bCA9IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgaWYgKCgqKHZvbGF0aWxlIHVuc2ln
bmVkIGNoYXIgKikgKCh2b2lkICopKCgoY2hhciAqKSgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAw
MDApKSkpICsgKGlvX2FkZHIpKSkpICE9ICpzaWduYXR1cmUpCiAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgaW9fYWRkcisrOwogICAgICAgICAgICAgICAg
c2lnbmF0dXJlKys7CiAgICAgICAgICAgICAgICBsZW5ndGgtLTsKICAgICAgICB9IHdoaWxlIChs
ZW5ndGgpOwogICAgICAgIHJldHZhbCA9IDE7Cm91dDoKICAgICAgICByZXR1cm4gcmV0dmFsOwp9
CiMgMjg1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vaW8uaCIKc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBjaGFyIGluYih1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2ln
bmVkIGNoYXIgX3Y7IF9fYXNtX18gX192b2xhdGlsZV9fICgiaW4iICJiIiAiICUiICJ3IiAiMSwl
IiAiIiAiMCIgOiAiPWEiIChfdikgOiAiTmQiIChwb3J0KSApOyByZXR1cm4gX3Y7IH0gc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBjaGFyIGluYl9wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWdu
ZWQgY2hhciBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgImIiICIgJSIgInciICIxLCUi
ICIiICIwIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsg
cmV0dXJuIF92OyB9CgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydCBpbncodW5zaWduZWQg
c2hvcnQgcG9ydCkgeyB1bnNpZ25lZCBzaG9ydCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJp
biIgInciICIgJSIgInciICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7
IHJldHVybiBfdjsgfSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3J0IGlud19wKHVuc2lnbmVk
IHNob3J0IHBvcnQpIHsgdW5zaWduZWQgc2hvcnQgX3Y7IF9fYXNtX18gX192b2xhdGlsZV9fICgi
aW4iICJ3IiAiICUiICJ3IiAiMSwlIiAiIiAiMCIgIlxub3V0YiAlJWFsLCQweDgwIiA6ICI9YSIg
KF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBfdjsgfQoKCnN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgaW50IGlubCh1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21f
XyBfX3ZvbGF0aWxlX18gKCJpbiIgImwiICIgJSIgInciICIxLCUiICIiICIwIiA6ICI9YSIgKF92
KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBfdjsgfSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGlu
dCBpbmxfcCh1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBf
X3ZvbGF0aWxlX18gKCJpbiIgImwiICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWws
JDB4ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGlj
IGlubGluZSB2b2lkIG91dGIodW5zaWduZWQgY2hhciB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9y
dCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm91dCIgImIiICIgJSIgImIiICIwLCUiICJ3IiAi
MSIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2b2lkIG91
dGJfcCh1bnNpZ25lZCBjaGFyIHZhbHVlLCB1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IF9fYXNtX18g
X192b2xhdGlsZV9fICgib3V0IiAiYiIgIiAlIiAiYiIgIjAsJSIgInciICIxIiAiXG5vdXRiICUl
YWwsJDB4ODAiIDogOiAiYSIgKHZhbHVlKSwgIk5kIiAocG9ydCkpO30Kc3RhdGljIGlubGluZSB2
b2lkIG91dHcodW5zaWduZWQgc2hvcnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19h
c21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJ3IiAiICUiICJ3IiAiMCwlIiAidyIgIjEiIDogOiAi
YSIgKHZhbHVlKSwgIk5kIiAocG9ydCkpOyB9IHN0YXRpYyBpbmxpbmUgdm9pZCBvdXR3X3AodW5z
aWduZWQgc2hvcnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0
aWxlX18gKCJvdXQiICJ3IiAiICUiICJ3IiAiMCwlIiAidyIgIjEiICJcbm91dGIgJSVhbCwkMHg4
MCIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7fQpzdGF0aWMgaW5saW5lIHZvaWQgb3V0
bCh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3Zv
bGF0aWxlX18gKCJvdXQiICJsIiAiICUiICIwLCUiICJ3IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAi
TmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2b2lkIG91dGxfcCh1bnNpZ25lZCBpbnQgdmFs
dWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJs
IiAiICUiICIwLCUiICJ3IiAiMSIgIlxub3V0YiAlJWFsLCQweDgwIiA6IDogImEiICh2YWx1ZSks
ICJOZCIgKHBvcnQpKTt9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5zYih1bnNpZ25lZCBzaG9ydCBw
b3J0LCB2b2lkICogYWRkciwgdW5zaWduZWQgbG9uZyBjb3VudCkgeyBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoInJlcCA7IGlucyIgImIiIDogIj1EIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAo
cG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIGluc3co
dW5zaWduZWQgc2hvcnQgcG9ydCwgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsg
X19hc21fXyBfX3ZvbGF0aWxlX18gKCJyZXAgOyBpbnMiICJ3IiA6ICI9RCIgKGFkZHIpLCAiPWMi
IChjb3VudCkgOiAiZCIgKHBvcnQpLCIwIiAoYWRkciksIjEiIChjb3VudCkpOyB9CnN0YXRpYyBp
bmxpbmUgdm9pZCBpbnNsKHVuc2lnbmVkIHNob3J0IHBvcnQsIHZvaWQgKiBhZGRyLCB1bnNpZ25l
ZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgaW5zIiAibCIgOiAi
PUQiIChhZGRyKSwgIj1jIiAoY291bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291
bnQpKTsgfQoKc3RhdGljIGlubGluZSB2b2lkIG91dHNiKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNv
bnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGls
ZV9fICgicmVwIDsgb3V0cyIgImIiIDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAo
cG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIG91dHN3
KHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNv
dW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgInciIDogIj1TIiAoYWRk
ciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0K
c3RhdGljIGlubGluZSB2b2lkIG91dHNsKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQg
KiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVw
IDsgb3V0cyIgImwiIDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAi
IChhZGRyKSwiMSIgKGNvdW50KSk7IH0KIyAzNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvYXNtL3BjaS5oIiAyCgpzdHJ1Y3QgcGNpX2RldjsKIyA1MCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIgpleHRlcm4gdm9pZCAqcGNpX2FsbG9j
X2NvbnNpc3RlbnQoc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUpOwojIDYxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiCmV4dGVybiB2b2lk
IHBjaV9mcmVlX2NvbnNpc3RlbnQoc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWRkciwgZG1hX2FkZHJfdCBk
bWFfaGFuZGxlKTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBwY2lfbWFwX3Npbmds
ZShzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHZvaWQgKnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAg
aWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
Ii5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIHJldHVybiB2aXJ0X3RvX3BoeXMocHRyKTsKfQoj
IDg1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiCnN0YXRp
YyBpbmxpbmUgdm9pZCBwY2lfdW5tYXBfc2luZ2xlKHN0cnVjdCBwY2lfZGV2ICpod2RldiwgZG1h
X2FkZHJfdCBkbWFfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUsIGludCBkaXJlY3Rpb24pCnsKICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAg
ICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7Cgp9
CgoKCgoKc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHBjaV9tYXBfcGFnZShzdHJ1Y3QgcGNpX2Rl
diAqaHdkZXYsIHN0cnVjdCBwYWdlICpwYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgaW50IGRpcmVjdGlv
bikKewogICAgICAgIGlmIChkaXJlY3Rpb24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKCiAgICAgICAgcmV0dXJuIChwYWdlIC0g
bWVtX21hcCkgKiAoMVVMIDw8IDEyKSArIG9mZnNldDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHBj
aV91bm1hcF9wYWdlKHN0cnVjdCBwY2lfZGV2ICpod2RldiwgZG1hX2FkZHJfdCBkbWFfYWRkcmVz
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBpbnQgZGly
ZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoKfQojIDEyOSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIgpzdGF0aWMgaW5saW5lIGludCBw
Y2lfbWFwX3NnKHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmVudHMsIGludCBkaXJlY3Rpb24pCnsK
ICAgICAgICBpbnQgaTsKCiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoKCgoKICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgbmVudHM7IGkrKyApIHsKICAgICAgICAgICAgICAgIGlmIChzZ1tpXS5h
ZGRyZXNzICYmIHNnW2ldLnBhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFz
Z1tpXS5hZGRyZXNzICYmICFzZ1tpXS5wYWdlKQogICAgICAgICAgICAgICAgICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CgogICAgICAgICAgICAgICAgaWYg
KHNnW2ldLmFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgIHNnW2ldLmRtYV9hZGRyZXNz
ID0gdmlydF90b19waHlzKHNnW2ldLmFkZHJlc3MpOwogICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICAgICBzZ1tpXS5kbWFfYWRkcmVzcyA9ICgoc2dbaV0ucGFnZSAtIG1l
bV9tYXApIDw8IDEyKSArIHNnW2ldLm9mZnNldDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBu
ZW50czsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfdW5tYXBfc2coc3RydWN0IHBjaV9k
ZXYgKmh3ZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBuZW50cywgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChkaXJlY3Rp
b24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBm
LDB4MGIiKTsKCn0KIyAxNzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2Fz
bS9wY2kuaCIKc3RhdGljIGlubGluZSB2b2lkIHBjaV9kbWFfc3luY19zaW5nbGUoc3RydWN0IHBj
aV9kZXYgKmh3ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbWFf
YWRkcl90IGRtYV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAz
KQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIp
OwoKfQoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHBjaV9kbWFfc3luY19zZyhzdHJ1Y3QgcGNp
X2RldiAqaHdkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNj
YXR0ZXJsaXN0ICpzZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmVs
ZW1zLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAg
ICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoKfQoKCgoK
CgpzdGF0aWMgaW5saW5lIGludCBwY2lfZG1hX3N1cHBvcnRlZChzdHJ1Y3QgcGNpX2RldiAqaHdk
ZXYsIHU2NCBtYXNrKQp7CgoKCgoKICAgICAgICBpZihtYXNrIDwgMHgwMGZmZmZmZikKICAgICAg
ICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICByZXR1cm4gMTsKfQoKCgoKc3RhdGljIF9faW5s
aW5lX18gZG1hNjRfYWRkcl90CnBjaV9kYWNfcGFnZV90b19kbWEoc3RydWN0IHBjaV9kZXYgKnBk
ZXYsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgaW50IGRpcmVjdGlv
bikKewogICAgICAgIHJldHVybiAoKGRtYTY0X2FkZHJfdCkgKChwYWdlIC0gbWVtX21hcCkgPDwg
MTIpICsKICAgICAgICAgICAgICAgIChkbWE2NF9hZGRyX3QpIG9mZnNldCk7Cn0KCnN0YXRpYyBf
X2lubGluZV9fIHN0cnVjdCBwYWdlICoKcGNpX2RhY19kbWFfdG9fcGFnZShzdHJ1Y3QgcGNpX2Rl
diAqcGRldiwgZG1hNjRfYWRkcl90IGRtYV9hZGRyKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBw
b2ZmID0gKGRtYV9hZGRyID4+IDEyKTsKCiAgICAgICAgcmV0dXJuIG1lbV9tYXAgKyBwb2ZmOwp9
CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCnBjaV9kYWNfZG1hX3RvX29mZnNldChz
dHJ1Y3QgcGNpX2RldiAqcGRldiwgZG1hNjRfYWRkcl90IGRtYV9hZGRyKQp7CiAgICAgICAgcmV0
dXJuIChkbWFfYWRkciAmIH4ofigoMVVMIDw8IDEyKS0xKSkpOwp9CgpzdGF0aWMgX19pbmxpbmVf
XyB2b2lkCnBjaV9kYWNfZG1hX3N5bmNfc2luZ2xlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBkbWE2
NF9hZGRyX3QgZG1hX2FkZHIsIHNpemVfdCBsZW4sIGludCBkaXJlY3Rpb24pCnsKCn0KIyAyNTcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wY2kuaCIKc3RhdGljIGlu
bGluZSBpbnQgcGNpX2NvbnRyb2xsZXJfbnVtKHN0cnVjdCBwY2lfZGV2ICpkZXYpCnsKICAgICAg
ICByZXR1cm4gMDsKfQoKCmV4dGVybiBpbnQgcGNpX21tYXBfcGFnZV9yYW5nZShzdHJ1Y3QgcGNp
X2RldiAqZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVudW0gcGNpX21tYXBfc3RhdGUgbW1hcF9zdGF0ZSwgaW50IHdyaXRlX2Nv
bWJpbmUpOwojIDYwNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
cGNpLmgiIDIKIyA2NzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3BjaS5oIgpzdGF0aWMgaW5saW5lIGludCBwY2lfbW9kdWxlX2luaXQoc3RydWN0IHBjaV9kcml2
ZXIgKmRydikKewogICAgICAgIGludCByYyA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIgKGRydik7Cgog
ICAgICAgIGlmIChyYyA+IDApCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKIyA2ODYgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgogICAgICAgIGlmIChy
YyA9PSAwKQogICAgICAgICAgICAgICAgcmMgPSAtMTk7CgoKCgogICAgICAgIHBjaV91bnJlZ2lz
dGVyX2RyaXZlciAoZHJ2KTsKCiAgICAgICAgcmV0dXJuIHJjOwp9CiMgNzE2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9wY2kuaCIKc3RhdGljIGlubGluZSB2b2lk
ICpwY2lfZ2V0X2RydmRhdGEgKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQp7CiAgICAgICAgcmV0dXJu
IHBkZXYtPmRyaXZlcl9kYXRhOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcGNpX3NldF9kcnZkYXRh
IChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCAqZGF0YSkKewogICAgICAgIHBkZXYtPmRyaXZl
cl9kYXRhID0gZGF0YTsKfQojIDczMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfZml4dXAgewogICAgICAgIGludCBwYXNzOwogICAg
ICAgIHUxNiB2ZW5kb3IsIGRldmljZTsKICAgICAgICB2b2lkICgqaG9vaykoc3RydWN0IHBjaV9k
ZXYgKmRldik7Cn07CgpleHRlcm4gc3RydWN0IHBjaV9maXh1cCBwY2liaW9zX2ZpeHVwc1tdOwoK
CgoKdm9pZCBwY2lfZml4dXBfZGV2aWNlKGludCBwYXNzLCBzdHJ1Y3QgcGNpX2RldiAqZGV2KTsK
CmV4dGVybiBpbnQgcGNpX3BjaV9wcm9ibGVtczsKIyAxNDkgIjgxMzl0b28uYyIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2luaXQuaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg
NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaW5pdC5oIiAyCiMg
NDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2luaXQuaCIKdHlw
ZWRlZiBpbnQgKCppbml0Y2FsbF90KSh2b2lkKTsKdHlwZWRlZiB2b2lkICgqZXhpdGNhbGxfdCko
dm9pZCk7CgpleHRlcm4gaW5pdGNhbGxfdCBfX2luaXRjYWxsX3N0YXJ0LCBfX2luaXRjYWxsX2Vu
ZDsKIyA2MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaW5pdC5o
IgpzdHJ1Y3Qga2VybmVsX3BhcmFtIHsKICAgICAgICBjb25zdCBjaGFyICpzdHI7CiAgICAgICAg
aW50ICgqc2V0dXBfZnVuYykoY2hhciAqKTsKfTsKCmV4dGVybiBzdHJ1Y3Qga2VybmVsX3BhcmFt
IF9fc2V0dXBfc3RhcnQsIF9fc2V0dXBfZW5kOwojIDE1MCAiODEzOXRvby5jIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaW9wb3J0LmgiIDEKIyAxNTEg
IjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L25ldGRldmljZS5oIiAxCiMgMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L25ldGRldmljZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L2lmLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaWYuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC90eXBlcy5oIiAxCiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2lmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9zb2NrZXQuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9saW51eC9pZi5oIiAyCiMgNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2lmLmgiCnN0cnVjdCBpZm1hcAp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1f
c3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1fZW5kOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGJhc2VfYWRkcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlycTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIGRtYTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBvcnQ7Cgp9OwojIDc2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pZi5oIgpzdHJ1Y3QgaWZyZXEKewoK
CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGFyIGlmcm5fbmFtZVsx
Nl07CiAgICAgICAgfSBpZnJfaWZybjsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg
c3RydWN0IHNvY2thZGRyIGlmcnVfYWRkcjsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRk
ciBpZnJ1X2RzdGFkZHI7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9icm9h
ZGFkZHI7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9uZXRtYXNrOwogICAg
ICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfaHdhZGRyOwogICAgICAgICAgICAgICAg
c2hvcnQgaWZydV9mbGFnczsKICAgICAgICAgICAgICAgIGludCBpZnJ1X2l2YWx1ZTsKICAgICAg
ICAgICAgICAgIGludCBpZnJ1X210dTsKICAgICAgICAgICAgICAgIHN0cnVjdCBpZm1hcCBpZnJ1
X21hcDsKICAgICAgICAgICAgICAgIGNoYXIgaWZydV9zbGF2ZVsxNl07CiAgICAgICAgICAgICAg
ICBjaGFyIGlmcnVfbmV3bmFtZVsxNl07CiAgICAgICAgICAgICAgICBjaGFyICogaWZydV9kYXRh
OwogICAgICAgIH0gaWZyX2lmcnU7Cn07CiMgMTI1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9pZi5oIgpzdHJ1Y3QgaWZjb25mCnsKICAgICAgICBpbnQgaWZjX2xl
bjsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIGNoYXIgKiBpZmN1X2J1
ZjsKICAgICAgICAgICAgICAgIHN0cnVjdCBpZnJlcSAqaWZjdV9yZXE7CiAgICAgICAgfSBpZmNf
aWZjdTsKfTsKIyAyOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
bmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9pZl9ldGhlci5oIiAxCiMgOTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2lmX2V0aGVyLmgiCnN0cnVjdCBldGhoZHIKewogICAgICAgIHVuc2lnbmVkIGNo
YXIgaF9kZXN0WzZdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaF9zb3VyY2VbNl07CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgaF9wcm90bzsKfTsKIyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9pZl9wYWNrZXQuaCIgMQoKCgpzdHJ1Y3Qgc29ja2FkZHJf
cGt0CnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcGt0X2ZhbWlseTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHNwa3RfZGV2aWNlWzE0XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcGt0X3Byb3Rv
Y29sOwp9OwoKc3RydWN0IHNvY2thZGRyX2xsCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzbGxf
ZmFtaWx5OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNsbF9wcm90b2NvbDsKICAgICAgICBpbnQg
c2xsX2lmaW5kZXg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2xsX2hhdHlwZTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIHNsbF9wa3R0eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xsX2hhbGVu
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xsX2FkZHJbOF07Cn07CiMgNDMgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lmX3BhY2tldC5oIgpzdHJ1Y3QgdHBhY2tl
dF9zdGF0cwp7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX3BhY2tldHM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHRwX2Ryb3BzOwp9OwoKc3RydWN0IHRwYWNrZXRfaGRyCnsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHRwX3N0YXR1czsKCgoKCgogICAgICAgIHVuc2lnbmVkIGludCB0cF9sZW47CiAgICAg
ICAgdW5zaWduZWQgaW50IHRwX3NuYXBsZW47CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHBfbWFj
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHRwX25ldDsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBf
c2VjOwogICAgICAgIHVuc2lnbmVkIGludCB0cF91c2VjOwp9OwojIDgyICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pZl9wYWNrZXQuaCIKc3RydWN0IHRwYWNrZXRf
cmVxCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfYmxvY2tfc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgdHBfYmxvY2tfbnI7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX2ZyYW1lX3NpemU7CiAg
ICAgICAgdW5zaWduZWQgaW50IHRwX2ZyYW1lX25yOwp9OwoKc3RydWN0IHBhY2tldF9tcmVxCnsK
ICAgICAgICBpbnQgbXJfaWZpbmRleDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcl90eXBlOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IG1yX2FsZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBtcl9h
ZGRyZXNzWzhdOwp9OwojIDMxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9uZXRkZXZpY2UuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9hc20vYXRvbWljLmgiIDEKIyAzMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9hc20vY2FjaGUuaCIgMQojIDM0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMQojIDM1ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIgMgoKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAzOCAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKCgoKCnN0
cnVjdCBkaXZlcnRfYmxrOwojIDk2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9uZXRkZXZpY2UuaCIKc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMKewogICAgICAgIHVu
c2lnbmVkIGxvbmcgcnhfcGFja2V0czsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4X3BhY2tldHM7
CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9ieXRlczsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4
X2J5dGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfZXJyb3JzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgdHhfZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfZHJvcHBlZDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHR4X2Ryb3BwZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtdWx0aWNh
c3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjb2xsaXNpb25zOwoKCiAgICAgICAgdW5zaWduZWQg
bG9uZyByeF9sZW5ndGhfZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfb3Zlcl9lcnJv
cnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9jcmNfZXJyb3JzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgcnhfZnJhbWVfZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfZmlmb19lcnJv
cnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9taXNzZWRfZXJyb3JzOwoKCiAgICAgICAgdW5z
aWduZWQgbG9uZyB0eF9hYm9ydGVkX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4X2Nh
cnJpZXJfZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfZmlmb19lcnJvcnM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyB0eF9oZWFydGJlYXRfZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgdHhfd2luZG93X2Vycm9yczsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfY29tcHJlc3Nl
ZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4X2NvbXByZXNzZWQ7Cn07CgoKCmVudW0gewogICAg
ICAgIElGX1BPUlRfVU5LTk9XTiA9IDAsCiAgICAgICAgSUZfUE9SVF8xMEJBU0UyLAogICAgICAg
IElGX1BPUlRfMTBCQVNFVCwKICAgICAgICBJRl9QT1JUX0FVSSwKICAgICAgICBJRl9QT1JUXzEw
MEJBU0VULAogICAgICAgIElGX1BPUlRfMTAwQkFTRVRYLAogICAgICAgIElGX1BPUlRfMTAwQkFT
RUZYCn07CgoKCmV4dGVybiBjb25zdCBjaGFyICppZl9wb3J0X3RleHRbXTsKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMQojIDE0NiAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMQoj
IDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIg
MQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5l
bC5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Nr
YnVmZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
c2NoZWQuaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3RpbWUuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L2NhY2hlLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvc2tidWZmLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4
L2luY2x1ZGUvbGludXgvc2tidWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIgMQojIDI3ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2hpZ2htZW0uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaGlnaG1lbS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQoj
IDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiIDEK
IyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGdhbGxvYy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvdGhyZWFkcy5o
IiAxCiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxsb2Mu
aCIgMgojIDUxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGdhbGxv
Yy5oIgpzdGF0aWMgX19pbmxpbmVfXyBwZ2RfdCAqZ2V0X3BnZF9zbG93KHZvaWQpCnsKICAgICAg
ICBwZ2RfdCAqcGdkID0gKHBnZF90ICopX19nZXRfZnJlZV9wYWdlcygoKDB4MjAgfCAweDEwIHwg
MHg0MCB8IDB4ODAgfCAweDEwMCkpLDApOwoKICAgICAgICBpZiAocGdkKSB7CiAgICAgICAgICAg
ICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKCgo
KCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihwZ2Rf
dCkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgocGdkKSksKCgweDAxMDEwMTAx
VUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkp
KS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgo
KHBnZCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoKCgoKHVuc2lnbmVk
IGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6ZW9mKHBnZF90KSkpKSkgOiAo
X19idWlsdGluX2NvbnN0YW50X3AoKCgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygx
VUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgocGdkKSkp
LCgoKDApKSksKCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikp
ICogc2l6ZW9mKHBnZF90KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgocGdkKSksKCgwKSksKCgo
KCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdk
X3QpKSkpKSk7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoKDEwMjQgLSAo
KCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpICogc2l6ZW9mKHBn
ZF90KSkgPyBfX2NvbnN0YW50X21lbWNweSgocGdkICsgKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAw
MDAwMDApKSkvKDFVTCA8PCAyMikpKSwoc3dhcHBlcl9wZ19kaXIgKyAoKCgodW5zaWduZWQgbG9u
ZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpLCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25n
KSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSkgKiBzaXplb2YocGdkX3QpKSkgOiBfX21lbWNw
eSgocGdkICsgKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpKSwo
c3dhcHBlcl9wZ19kaXIgKyAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8
IDIyKSkpLCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwg
MjIpKSkgKiBzaXplb2YocGdkX3QpKSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcGdkOwp9
CgoKCnN0YXRpYyBfX2lubGluZV9fIHBnZF90ICpnZXRfcGdkX2Zhc3Qodm9pZCkKewogICAgICAg
IHVuc2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgaWYgKChyZXQgPSAoY3B1X2RhdGFbKGdldF9j
dXJyZW50KCktPnByb2Nlc3NvcildLnBnZF9xdWljaykpICE9ICgodm9pZCAqKTApKSB7CiAgICAg
ICAgICAgICAgICAoY3B1X2RhdGFbKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcildLnBnZF9xdWlj
aykgPSAodW5zaWduZWQgbG9uZyAqKSgqcmV0KTsKICAgICAgICAgICAgICAgIHJldFswXSA9IDA7
CiAgICAgICAgICAgICAgICAoY3B1X2RhdGFbKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcildLnBn
dGFibGVfY2FjaGVfc3opLS07CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICByZXQgPSAo
dW5zaWduZWQgbG9uZyAqKWdldF9wZ2Rfc2xvdygpOwogICAgICAgIHJldHVybiAocGdkX3QgKily
ZXQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgZnJlZV9wZ2RfZmFzdChwZ2RfdCAqcGdkKQp7
CiAgICAgICAgKih1bnNpZ25lZCBsb25nICopcGdkID0gKHVuc2lnbmVkIGxvbmcpIChjcHVfZGF0
YVsoZ2V0X2N1cnJlbnQoKS0+cHJvY2Vzc29yKV0ucGdkX3F1aWNrKTsKICAgICAgICAoY3B1X2Rh
dGFbKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcildLnBnZF9xdWljaykgPSAodW5zaWduZWQgbG9u
ZyAqKSBwZ2Q7CiAgICAgICAgKGNwdV9kYXRhWyhnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5w
Z3RhYmxlX2NhY2hlX3N6KSsrOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGZyZWVfcGdkX3Ns
b3cocGdkX3QgKnBnZCkKewoKCgoKCgoKICAgICAgICBmcmVlX3BhZ2VzKCgodW5zaWduZWQgbG9u
ZylwZ2QpLDApOwoKfQoKc3RhdGljIGlubGluZSBwdGVfdCAqcHRlX2FsbG9jX29uZShzdHJ1Y3Qg
bW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAgcHRlX3QgKnB0
ZTsKCiAgICAgICAgcHRlID0gKHB0ZV90ICopIF9fZ2V0X2ZyZWVfcGFnZXMoKCgweDIwIHwgMHgx
MCB8IDB4NDAgfCAweDgwIHwgMHgxMDApKSwwKTsKICAgICAgICBpZiAocHRlKQogICAgICAgICAg
ICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKCgo
MVVMIDw8IDEyKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgodm9pZCAqKShw
dGUpKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgoMVVMIDw8IDEyKSkp
KSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgodm9pZCAqKShwdGUpKSksKCgweDAxMDEwMTAxVUwq
KHVuc2lnbmVkIGNoYXIpKDApKSksKCgoMVVMIDw8IDEyKSkpKSkgOiAoX19idWlsdGluX2NvbnN0
YW50X3AoKCgxVUwgPDwgMTIpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKCh2b2lkICopKHB0ZSkp
KSksKCgoMCkpKSwoKCgoMVVMIDw8IDEyKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoKHZvaWQg
KikocHRlKSkpLCgoMCkpLCgoKDFVTCA8PCAxMikpKSkpKTsKICAgICAgICByZXR1cm4gcHRlOwp9
CgpzdGF0aWMgaW5saW5lIHB0ZV90ICpwdGVfYWxsb2Nfb25lX2Zhc3Qoc3RydWN0IG1tX3N0cnVj
dCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKnJl
dDsKCiAgICAgICAgaWYgKChyZXQgPSAodW5zaWduZWQgbG9uZyAqKShjcHVfZGF0YVsoZ2V0X2N1
cnJlbnQoKS0+cHJvY2Vzc29yKV0ucHRlX3F1aWNrKSkgIT0gKCh2b2lkICopMCkpIHsKICAgICAg
ICAgICAgICAgIChjcHVfZGF0YVsoZ2V0X2N1cnJlbnQoKS0+cHJvY2Vzc29yKV0ucHRlX3F1aWNr
KSA9ICh1bnNpZ25lZCBsb25nICopKCpyZXQpOwogICAgICAgICAgICAgICAgcmV0WzBdID0gcmV0
WzFdOwogICAgICAgICAgICAgICAgKGNwdV9kYXRhWyhnZXRfY3VycmVudCgpLT5wcm9jZXNzb3Ip
XS5wZ3RhYmxlX2NhY2hlX3N6KS0tOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKHB0ZV90ICop
cmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB0ZV9mcmVlX2Zhc3QocHRlX3QgKnB0ZSkK
ewogICAgICAgICoodW5zaWduZWQgbG9uZyAqKXB0ZSA9ICh1bnNpZ25lZCBsb25nKSAoY3B1X2Rh
dGFbKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcildLnB0ZV9xdWljayk7CiAgICAgICAgKGNwdV9k
YXRhWyhnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5wdGVfcXVpY2spID0gKHVuc2lnbmVkIGxv
bmcgKikgcHRlOwogICAgICAgIChjcHVfZGF0YVsoZ2V0X2N1cnJlbnQoKS0+cHJvY2Vzc29yKV0u
cGd0YWJsZV9jYWNoZV9zeikrKzsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBwdGVfZnJlZV9z
bG93KHB0ZV90ICpwdGUpCnsKICAgICAgICBmcmVlX3BhZ2VzKCgodW5zaWduZWQgbG9uZylwdGUp
LDApOwp9CiMgMTUzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGdh
bGxvYy5oIgpleHRlcm4gaW50IGRvX2NoZWNrX3BndF9jYWNoZShpbnQsIGludCk7CiMgMTk3ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zbXAuaCIgMQojIDE5OCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIgMgoKCgoKZXh0
ZXJuIHZvaWQgZmx1c2hfdGxiX2FsbCh2b2lkKTsKZXh0ZXJuIHZvaWQgZmx1c2hfdGxiX2N1cnJl
bnRfdGFzayh2b2lkKTsKZXh0ZXJuIHZvaWQgZmx1c2hfdGxiX21tKHN0cnVjdCBtbV9zdHJ1Y3Qg
Kik7CmV4dGVybiB2b2lkIGZsdXNoX3RsYl9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCB1
bnNpZ25lZCBsb25nKTsKCgoKc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3RsYl9yYW5nZShzdHJ1
Y3QgbW1fc3RydWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5k
KQp7CiAgICAgICAgZmx1c2hfdGxiX21tKG1tKTsKfQoKCgoKc3RydWN0IHRsYl9zdGF0ZQp7CiAg
ICAgICAgc3RydWN0IG1tX3N0cnVjdCAqYWN0aXZlX21tOwogICAgICAgIGludCBzdGF0ZTsKfTsK
ZXh0ZXJuIHN0cnVjdCB0bGJfc3RhdGUgY3B1X3RsYnN0YXRlWzMyXTsKCgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCBmbHVzaF90bGJfcGd0YWJsZXMoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWdu
ZWQgbG9uZyBlbmQpCnsKCn0KIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9oaWdobWVtLmgiIDIKIyAzMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaGlnaG1lbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBucl9mcmVl
X2hpZ2hwYWdlcyh2b2lkKSB7IHJldHVybiAwOyB9CgpzdGF0aWMgaW5saW5lIHZvaWQgKmttYXAo
c3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuICgocGFnZSktPnZpcnR1YWwpOyB9CiMgNDYgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2hpZ2htZW0uaCIKc3RhdGlj
IGlubGluZSB2b2lkIGNsZWFyX3VzZXJfaGlnaHBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2ln
bmVkIGxvbmcgdmFkZHIpCnsKICAgICAgICB2b2lkICphZGRyID0ga21hcChwYWdlKTsKICAgICAg
ICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKCgxVUwg
PDwgMTIpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCh2b2lkICopKGFkZHIp
KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgoMVVMIDw8IDEyKSkpKSA6
IF9fY29uc3RhbnRfY19tZW1zZXQoKCgodm9pZCAqKShhZGRyKSkpLCgoMHgwMTAxMDEwMVVMKih1
bnNpZ25lZCBjaGFyKSgwKSkpLCgoKDFVTCA8PCAxMikpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFu
dF9wKCgoMVVMIDw8IDEyKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgodm9pZCAqKShhZGRyKSkp
KSwoKCgwKSkpLCgoKCgxVUwgPDwgMTIpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgodm9pZCAq
KShhZGRyKSkpLCgoMCkpLCgoKDFVTCA8PCAxMikpKSkpKTsKICAgICAgICBkbyB7IH0gd2hpbGUg
KDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfaGlnaHBhZ2Uoc3RydWN0IHBhZ2UgKnBh
Z2UpCnsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0
YW50X3AoKCgxVUwgPDwgMTIpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCh2
b2lkICopKGttYXAocGFnZSkpKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSks
KCgoMVVMIDw8IDEyKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgodm9pZCAqKShrbWFwKHBh
Z2UpKSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoKDFVTCA8PCAxMikp
KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKCgoMVVMIDw8IDEyKSkpID8gX19tZW1zZXRfZ2Vu
ZXJpYygoKCgodm9pZCAqKShrbWFwKHBhZ2UpKSkpKSwoKCgwKSkpLCgoKCgxVUwgPDwgMTIpKSkp
KSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgodm9pZCAqKShrbWFwKHBhZ2UpKSkpLCgoMCkpLCgoKDFV
TCA8PCAxMikpKSkpKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgbWVtY2xlYXJfaGlnaHBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBv
ZmZzZXQsIHVuc2lnbmVkIGludCBzaXplKQp7CiAgICAgICAgY2hhciAqa2FkZHI7CgogICAgICAg
IGlmIChvZmZzZXQgKyBzaXplID4gKDFVTCA8PCAxMikpCiAgICAgICAgICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAga2FkZHIgPSBrbWFwKHBh
Z2UpOwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoc2l6ZSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChrYWRkciArIG9m
ZnNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZSkpKSA6IF9f
Y29uc3RhbnRfY19tZW1zZXQoKChrYWRkciArIG9mZnNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNp
Z25lZCBjaGFyKSgwKSkpLCgoc2l6ZSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemUp
KSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoa2FkZHIgKyBvZmZzZXQpKSksKCgoMCkpKSwoKChzaXpl
KSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChrYWRkciArIG9mZnNldCkpLCgoMCkpLCgoc2l6ZSkp
KSkpOwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBt
ZW1jbGVhcl9oaWdocGFnZV9mbHVzaChzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9m
ZnNldCwgdW5zaWduZWQgaW50IHNpemUpCnsKICAgICAgICBjaGFyICprYWRkcjsKCiAgICAgICAg
aWYgKG9mZnNldCArIHNpemUgPiAoMVVMIDw8IDEyKSkKICAgICAgICAgICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKICAgICAgICBrYWRkciA9IGttYXAocGFn
ZSk7CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFu
dF9wKChzaXplKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKGthZGRyICsgb2Zm
c2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplKSkpIDogX19j
b25zdGFudF9jX21lbXNldCgoKGthZGRyICsgb2Zmc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2ln
bmVkIGNoYXIpKDApKSksKChzaXplKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZSkp
ID8gX19tZW1zZXRfZ2VuZXJpYygoKChrYWRkciArIG9mZnNldCkpKSwoKCgwKSkpLCgoKHNpemUp
KSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKGthZGRyICsgb2Zmc2V0KSksKCgwKSksKChzaXplKSkp
KSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgY29weV91c2VyX2hpZ2hwYWdlKHN0cnVjdCBwYWdlICp0bywg
c3RydWN0IHBhZ2UgKmZyb20sIHVuc2lnbmVkIGxvbmcgdmFkZHIpCnsKICAgICAgICBjaGFyICp2
ZnJvbSwgKnZ0bzsKCiAgICAgICAgdmZyb20gPSBrbWFwKGZyb20pOwogICAgICAgIHZ0byA9IGtt
YXAodG8pOwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoMVVMIDw8IDEyKSkgPyBfX2Nv
bnN0YW50X21lbWNweSgoKHZvaWQgKikodnRvKSksKCh2b2lkICopKHZmcm9tKSksKCgxVUwgPDwg
MTIpKSkgOiBfX21lbWNweSgoKHZvaWQgKikodnRvKSksKCh2b2lkICopKHZmcm9tKSksKCgxVUwg
PDwgMTIpKSkpOwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyB9IHdoaWxl
ICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNvcHlfaGlnaHBhZ2Uoc3RydWN0IHBhZ2UgKnRv
LCBzdHJ1Y3QgcGFnZSAqZnJvbSkKewogICAgICAgIGNoYXIgKnZmcm9tLCAqdnRvOwoKICAgICAg
ICB2ZnJvbSA9IGttYXAoZnJvbSk7CiAgICAgICAgdnRvID0ga21hcCh0byk7CiAgICAgICAgKF9f
YnVpbHRpbl9jb25zdGFudF9wKCgxVUwgPDwgMTIpKSA/IF9fY29uc3RhbnRfbWVtY3B5KCgodm9p
ZCAqKSh2dG8pKSwoKHZvaWQgKikodmZyb20pKSwoKDFVTCA8PCAxMikpKSA6IF9fbWVtY3B5KCgo
dm9pZCAqKSh2dG8pKSwoKHZvaWQgKikodmZyb20pKSwoKDFVTCA8PCAxMikpKSk7CiAgICAgICAg
ZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CiMgMjggIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgOTUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdHJ1Y3Qg
c2tfYnVmZl9oZWFkIHsKCiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKiBuZXh0OwogICAgICAgIHN0
cnVjdCBza19idWZmICogcHJldjsKCiAgICAgICAgX191MzIgcWxlbjsKICAgICAgICBzcGlubG9j
a190IGxvY2s7Cn07CgpzdHJ1Y3Qgc2tfYnVmZjsKCgoKdHlwZWRlZiBzdHJ1Y3Qgc2tiX2ZyYWdf
c3RydWN0IHNrYl9mcmFnX3Q7CgpzdHJ1Y3Qgc2tiX2ZyYWdfc3RydWN0CnsKICAgICAgICBzdHJ1
Y3QgcGFnZSAqcGFnZTsKICAgICAgICBfX3UxNiBwYWdlX29mZnNldDsKICAgICAgICBfX3UxNiBz
aXplOwp9OwoKCgoKc3RydWN0IHNrYl9zaGFyZWRfaW5mbyB7CiAgICAgICAgYXRvbWljX3QgZGF0
YXJlZjsKICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZnJhZ3M7CiAgICAgICAgc3RydWN0IHNrX2J1
ZmYgKmZyYWdfbGlzdDsKICAgICAgICBza2JfZnJhZ190IGZyYWdzWzZdOwp9OwoKc3RydWN0IHNr
X2J1ZmYgewoKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNr
X2J1ZmYgKiBwcmV2OwoKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICogbGlzdDsKICAgICAg
ICBzdHJ1Y3Qgc29jayAqc2s7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgc3RhbXA7CiAgICAgICAg
c3RydWN0IG5ldF9kZXZpY2UgKmRldjsKCgogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAg
ICAgICAgICAgc3RydWN0IHRjcGhkciAqdGg7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwaGRy
ICp1aDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpY21waGRyICppY21waDsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBpZ21waGRyICppZ21waDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpcGhkciAq
aXBpcGg7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3B4aGRyICpzcHhoOwogICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciAqcmF3OwogICAgICAgIH0gaDsKCgogICAgICAgIHVuaW9uCiAgICAg
ICAgewogICAgICAgICAgICAgICAgc3RydWN0IGlwaGRyICppcGg7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgaXB2NmhkciAqaXB2Nmg7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYXJwaGRyICphcnBo
OwogICAgICAgICAgICAgICAgc3RydWN0IGlweGhkciAqaXB4aDsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgKnJhdzsKICAgICAgICB9IG5oOwoKCiAgICAgICAgdW5pb24KICAgICAgICB7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXRoaGRyICpldGhlcm5ldDsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgKnJhdzsKICAgICAgICB9IG1hYzsKCiAgICAgICAgc3RydWN0IGRzdF9l
bnRyeSAqZHN0OwoKCgoKCgoKICAgICAgICBjaGFyIGNiWzQ4XTsKCiAgICAgICAgdW5zaWduZWQg
aW50IGxlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGF0YV9sZW47CiAgICAgICAgdW5zaWduZWQg
aW50IGNzdW07CiAgICAgICAgdW5zaWduZWQgY2hhciBfX3VudXNlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgY2xvbmVkLAogICAgICAgICAgICAgICAgICAgICAgICBwa3RfdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgaXBfc3VtbWVkOwogICAgICAgIF9fdTMyIHByaW9yaXR5OwogICAg
ICAgIGF0b21pY190IHVzZXJzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHByb3RvY29sOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNlY3VyaXR5OwogICAgICAgIHVuc2lnbmVkIGludCB0cnVlc2l6
ZTsKCiAgICAgICAgdW5zaWduZWQgY2hhciAqaGVhZDsKICAgICAgICB1bnNpZ25lZCBjaGFyICpk
YXRhOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnRhaWw7CiAgICAgICAgdW5zaWduZWQgY2hhciAq
ZW5kOwoKICAgICAgICB2b2lkICgqZGVzdHJ1Y3Rvcikoc3RydWN0IHNrX2J1ZmYgKik7CiMgMjE2
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKfTsK
IyAyMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIg
MQojIDIyNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZm
LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3Rl
bS5oIiAxCiMgMjI4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9z
a2J1ZmYuaCIgMgoKZXh0ZXJuIHZvaWQgX19rZnJlZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYik7
CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIGFsbG9jX3NrYih1bnNpZ25lZCBpbnQgc2l6ZSwgaW50
IHByaW9yaXR5KTsKZXh0ZXJuIHZvaWQga2ZyZWVfc2tibWVtKHN0cnVjdCBza19idWZmICpza2Ip
OwpleHRlcm4gc3RydWN0IHNrX2J1ZmYgKiBza2JfY2xvbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwg
aW50IHByaW9yaXR5KTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX2NvcHkoY29uc3Qgc3Ry
dWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaW9yaXR5KTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICog
cHNrYl9jb3B5KHN0cnVjdCBza19idWZmICpza2IsIGludCBnZnBfbWFzayk7CmV4dGVybiBpbnQg
cHNrYl9leHBhbmRfaGVhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmhlYWQsIGludCBudGFp
bCwgaW50IGdmcF9tYXNrKTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX3JlYWxsb2NfaGVh
ZHJvb20oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhlYWRyb29tKTsKZXh0ZXJu
IHN0cnVjdCBza19idWZmICogc2tiX2NvcHlfZXhwYW5kKGNvbnN0IHN0cnVjdCBza19idWZmICpz
a2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBu
ZXdoZWFkcm9vbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IG5ld3RhaWxyb29tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgcHJpb3JpdHkpOwoKZXh0ZXJuIHZvaWQgc2tiX292ZXJfcGFuaWMoc3Ry
dWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbiwgdm9pZCAqaGVyZSk7CmV4dGVybiB2b2lkIHNrYl91
bmRlcl9wYW5pYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbGVuLCB2b2lkICpoZXJlKTsKIyAy
NTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpz
dGF0aWMgaW5saW5lIGludCBza2JfcXVldWVfZW1wdHkoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlz
dCkKewogICAgICAgIHJldHVybiAobGlzdC0+bmV4dCA9PSAoc3RydWN0IHNrX2J1ZmYgKikgbGlz
dCk7Cn0KIyAyNjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3Nr
YnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpza2JfZ2V0KHN0cnVjdCBza19i
dWZmICpza2IpCnsKICAgICAgICBhdG9taWNfaW5jKCZza2ItPnVzZXJzKTsKICAgICAgICByZXR1
cm4gc2tiOwp9CiMgMjg3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51
eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIGtmcmVlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAq
c2tiKQp7CiAgICAgICAgaWYgKCgoJnNrYi0+dXNlcnMpLT5jb3VudGVyKSA9PSAxIHx8IGF0b21p
Y19kZWNfYW5kX3Rlc3QoJnNrYi0+dXNlcnMpKQogICAgICAgICAgICAgICAgX19rZnJlZV9za2Io
c2tiKTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBrZnJlZV9za2JfZmFzdChzdHJ1Y3Qgc2tfYnVm
ZiAqc2tiKQp7CiAgICAgICAgaWYgKCgoJnNrYi0+dXNlcnMpLT5jb3VudGVyKSA9PSAxIHx8IGF0
b21pY19kZWNfYW5kX3Rlc3QoJnNrYi0+dXNlcnMpKQogICAgICAgICAgICAgICAga2ZyZWVfc2ti
bWVtKHNrYik7Cn0KIyAzMDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIGludCBza2JfY2xvbmVkKHN0cnVjdCBza19idWZm
ICpza2IpCnsKICAgICAgICByZXR1cm4gc2tiLT5jbG9uZWQgJiYgKCgmKChzdHJ1Y3Qgc2tiX3No
YXJlZF9pbmZvICopKChza2IpLT5lbmQpKS0+ZGF0YXJlZiktPmNvdW50ZXIpICE9IDE7Cn0KIyAz
MjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpz
dGF0aWMgaW5saW5lIGludCBza2Jfc2hhcmVkKHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAg
ICByZXR1cm4gKCgoJnNrYi0+dXNlcnMpLT5jb3VudGVyKSAhPSAxKTsKfQojIDM0MSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxp
bmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9zaGFyZV9jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBp
bnQgcHJpKQp7CiAgICAgICAgaWYgKHNrYl9zaGFyZWQoc2tiKSkgewogICAgICAgICAgICAgICAg
c3RydWN0IHNrX2J1ZmYgKm5za2I7CiAgICAgICAgICAgICAgICBuc2tiID0gc2tiX2Nsb25lKHNr
YiwgcHJpKTsKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwogICAgICAgICAgICAgICAg
cmV0dXJuIG5za2I7CiAgICAgICAgfQogICAgICAgIHJldHVybiBza2I7Cn0KIyAzNzQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5s
aW5lIHN0cnVjdCBza19idWZmICpza2JfdW5zaGFyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQg
cHJpKQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKm5za2I7CiAgICAgICAgaWYoIXNrYl9jbG9u
ZWQoc2tiKSkKICAgICAgICAgICAgICAgIHJldHVybiBza2I7CiAgICAgICAgbnNrYj1za2JfY29w
eShza2IsIHByaSk7CiAgICAgICAga2ZyZWVfc2tiKHNrYik7CiAgICAgICAgcmV0dXJuIG5za2I7
Cn0KIyAzOTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVm
Zi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpza2JfcGVlayhzdHJ1Y3Qgc2tfYnVm
Zl9oZWFkICpsaXN0XykKewogICAgICAgIHN0cnVjdCBza19idWZmICpsaXN0ID0gKChzdHJ1Y3Qg
c2tfYnVmZiAqKWxpc3RfKS0+bmV4dDsKICAgICAgICBpZiAobGlzdCA9PSAoc3RydWN0IHNrX2J1
ZmYgKilsaXN0XykKICAgICAgICAgICAgICAgIGxpc3QgPSAoKHZvaWQgKikwKTsKICAgICAgICBy
ZXR1cm4gbGlzdDsKfQojIDQyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUv
bGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9wZWVrX3Rh
aWwoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdF8pCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAq
bGlzdCA9ICgoc3RydWN0IHNrX2J1ZmYgKilsaXN0XyktPnByZXY7CiAgICAgICAgaWYgKGxpc3Qg
PT0gKHN0cnVjdCBza19idWZmICopbGlzdF8pCiAgICAgICAgICAgICAgICBsaXN0ID0gKCh2b2lk
ICopMCk7CiAgICAgICAgcmV0dXJuIGxpc3Q7Cn0KIyA0MzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIF9fdTMyIHNrYl9x
dWV1ZV9sZW4oc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdF8pCnsKICAgICAgICByZXR1cm4obGlz
dF8tPnFsZW4pOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3F1ZXVlX2hlYWRfaW5pdChzdHJ1
Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7CiAgICAgICAgZG8geyAqKCZsaXN0LT5sb2NrKSA9IChz
cGlubG9ja190KSB7IDEgfTsgfSB3aGlsZSgwKTsKICAgICAgICBsaXN0LT5wcmV2ID0gKHN0cnVj
dCBza19idWZmICopbGlzdDsKICAgICAgICBsaXN0LT5uZXh0ID0gKHN0cnVjdCBza19idWZmICop
bGlzdDsKICAgICAgICBsaXN0LT5xbGVuID0gMDsKfQojIDQ2NiAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3Nr
Yl9xdWV1ZV9oZWFkKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIHN0cnVjdCBza19idWZmICpu
ZXdzaykKewogICAgICAgIHN0cnVjdCBza19idWZmICpwcmV2LCAqbmV4dDsKCiAgICAgICAgbmV3
c2stPmxpc3QgPSBsaXN0OwogICAgICAgIGxpc3QtPnFsZW4rKzsKICAgICAgICBwcmV2ID0gKHN0
cnVjdCBza19idWZmICopbGlzdDsKICAgICAgICBuZXh0ID0gcHJldi0+bmV4dDsKICAgICAgICBu
ZXdzay0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3c2stPnByZXYgPSBwcmV2OwogICAgICAgIG5l
eHQtPnByZXYgPSBuZXdzazsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3c2s7Cn0KIyA0OTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMg
aW5saW5lIHZvaWQgc2tiX3F1ZXVlX2hlYWQoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgc3Ry
dWN0IHNrX2J1ZmYgKm5ld3NrKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAg
ICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1n
IiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyBzcGluX2xvY2soJmxpc3QtPmxvY2spOyB9IHdoaWxlICgw
KTsKICAgICAgICBfX3NrYl9xdWV1ZV9oZWFkKGxpc3QsIG5ld3NrKTsKICAgICAgICBkbyB7IHNw
aW5fdW5sb2NrKCZsaXN0LT5sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsg
cG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQojIDUx
NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCBfX3NrYl9xdWV1ZV90YWlsKHN0cnVjdCBza19idWZmX2hlYWQgKmxp
c3QsIHN0cnVjdCBza19idWZmICpuZXdzaykKewogICAgICAgIHN0cnVjdCBza19idWZmICpwcmV2
LCAqbmV4dDsKCiAgICAgICAgbmV3c2stPmxpc3QgPSBsaXN0OwogICAgICAgIGxpc3QtPnFsZW4r
KzsKICAgICAgICBuZXh0ID0gKHN0cnVjdCBza19idWZmICopbGlzdDsKICAgICAgICBwcmV2ID0g
bmV4dC0+cHJldjsKICAgICAgICBuZXdzay0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3c2stPnBy
ZXYgPSBwcmV2OwogICAgICAgIG5leHQtPnByZXYgPSBuZXdzazsKICAgICAgICBwcmV2LT5uZXh0
ID0gbmV3c2s7Cn0KIyA1NDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3F1ZXVlX3RhaWwoc3RydWN0IHNr
X2J1ZmZfaGVhZCAqbGlzdCwgc3RydWN0IHNrX2J1ZmYgKm5ld3NrKQp7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmbGFnczsKCiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZs
IDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyBzcGluX2xvY2soJmxp
c3QtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBfX3NrYl9xdWV1ZV90YWlsKGxpc3QsIG5l
d3NrKTsKICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZsaXN0LT5sb2NrKTsgX19hc21fXyBfX3Zv
bGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIp
OyB9IHdoaWxlICgwKTsKfQojIDU1OCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKl9fc2tiX2Rl
cXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0cnVjdCBza19idWZm
ICpuZXh0LCAqcHJldiwgKnJlc3VsdDsKCiAgICAgICAgcHJldiA9IChzdHJ1Y3Qgc2tfYnVmZiAq
KSBsaXN0OwogICAgICAgIG5leHQgPSBwcmV2LT5uZXh0OwogICAgICAgIHJlc3VsdCA9ICgodm9p
ZCAqKTApOwogICAgICAgIGlmIChuZXh0ICE9IHByZXYpIHsKICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IG5leHQ7CiAgICAgICAgICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dDsKICAgICAgICAgICAg
ICAgIGxpc3QtPnFsZW4tLTsKICAgICAgICAgICAgICAgIG5leHQtPnByZXYgPSBwcmV2OwogICAg
ICAgICAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7CiAgICAgICAgICAgICAgICByZXN1bHQtPm5l
eHQgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICAgIHJlc3VsdC0+cHJldiA9ICgodm9pZCAq
KTApOwogICAgICAgICAgICAgICAgcmVzdWx0LT5saXN0ID0gKCh2b2lkICopMCk7CiAgICAgICAg
fQogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KIyA1ODcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZm
ICpza2JfZGVxdWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7CiAgICAgICAgbG9uZyBm
bGFnczsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzdWx0OwoKICAgICAgICBkbyB7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoi
bWVtb3J5Iik7IHNwaW5fbG9jaygmbGlzdC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIHJl
c3VsdCA9IF9fc2tiX2RlcXVldWUobGlzdCk7CiAgICAgICAgZG8geyBzcGluX3VubG9jaygmbGlz
dC0+bG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAo
ZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NrYl9pbnNlcnQoc3RydWN0IHNrX2J1ZmYg
Km5ld3NrLAogICAgICAgIHN0cnVjdCBza19idWZmICogcHJldiwgc3RydWN0IHNrX2J1ZmYgKm5l
eHQsCiAgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqIGxpc3QpCnsKICAgICAgICBuZXdzay0+
bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3c2stPnByZXYgPSBwcmV2OwogICAgICAgIG5leHQtPnBy
ZXYgPSBuZXdzazsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3c2s7CiAgICAgICAgbmV3c2stPmxp
c3QgPSBsaXN0OwogICAgICAgIGxpc3QtPnFsZW4rKzsKfQojIDYyNCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBz
a2JfaW5zZXJ0KHN0cnVjdCBza19idWZmICpvbGQsIHN0cnVjdCBza19idWZmICpuZXdzaykKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0
aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsg
c3Bpbl9sb2NrKCZvbGQtPmxpc3QtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBfX3NrYl9p
bnNlcnQobmV3c2ssIG9sZC0+cHJldiwgb2xkLCBvbGQtPmxpc3QpOwogICAgICAgIGRvIHsgc3Bp
bl91bmxvY2soJm9sZC0+bGlzdC0+bG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAl
MCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7Cn0K
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19za2JfYXBwZW5kKHN0cnVjdCBza19idWZmICpvbGQs
IHN0cnVjdCBza19idWZmICpuZXdzaykKewogICAgICAgIF9fc2tiX2luc2VydChuZXdzaywgb2xk
LCBvbGQtPm5leHQsIG9sZC0+bGlzdCk7Cn0KIyA2NTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX2FwcGVu
ZChzdHJ1Y3Qgc2tfYnVmZiAqb2xkLCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAgICAgICB1
bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJw
dXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7IHNwaW5fbG9j
aygmb2xkLT5saXN0LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19za2JfYXBwZW5kKG9s
ZCwgbmV3c2spOwogICAgICAgIGRvIHsgc3Bpbl91bmxvY2soJm9sZC0+bGlzdC0+bG9jayk7IF9f
YXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1v
cnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fc2ti
X3VubGluayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7
CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKiBuZXh0LCAqIHByZXY7CgogICAgICAgIGxpc3QtPnFs
ZW4tLTsKICAgICAgICBuZXh0ID0gc2tiLT5uZXh0OwogICAgICAgIHByZXYgPSBza2ItPnByZXY7
CiAgICAgICAgc2tiLT5uZXh0ID0gKCh2b2lkICopMCk7CiAgICAgICAgc2tiLT5wcmV2ID0gKCh2
b2lkICopMCk7CiAgICAgICAgc2tiLT5saXN0ID0gKCh2b2lkICopMCk7CiAgICAgICAgbmV4dC0+
cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7Cn0KIyA2OTQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5l
IHZvaWQgc2tiX3VubGluayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgc3RydWN0IHNr
X2J1ZmZfaGVhZCAqbGlzdCA9IHNrYi0+bGlzdDsKCiAgICAgICAgaWYobGlzdCkgewogICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgICAgICAgICBkbyB7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoi
bWVtb3J5Iik7IHNwaW5fbG9jaygmbGlzdC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAg
ICAgICAgaWYoc2tiLT5saXN0ID09IGxpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgIF9fc2ti
X3VubGluayhza2IsIHNrYi0+bGlzdCk7CiAgICAgICAgICAgICAgICBkbyB7IHNwaW5fdW5sb2Nr
KCZsaXN0LT5sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6
ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICB9Cn0KIyA3
MTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpz
dGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpfX3NrYl9kZXF1ZXVlX3RhaWwoc3RydWN0IHNr
X2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0cnVjdCBza19idWZmICpza2IgPSBza2JfcGVl
a190YWlsKGxpc3QpOwogICAgICAgIGlmIChza2IpCiAgICAgICAgICAgICAgICBfX3NrYl91bmxp
bmsoc2tiLCBsaXN0KTsKICAgICAgICByZXR1cm4gc2tiOwp9CiMgNzM2ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1
Y3Qgc2tfYnVmZiAqc2tiX2RlcXVldWVfdGFpbChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7
CiAgICAgICAgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzdWx0OwoKICAg
ICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoi
PWciIChmbGFncyk6IDoibWVtb3J5Iik7IHNwaW5fbG9jaygmbGlzdC0+bG9jayk7IH0gd2hpbGUg
KDApOwogICAgICAgIHJlc3VsdCA9IF9fc2tiX2RlcXVldWVfdGFpbChsaXN0KTsKICAgICAgICBk
byB7IHNwaW5fdW5sb2NrKCZsaXN0LT5sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hs
ICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsK
ICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgpzdGF0aWMgaW5saW5lIGludCBza2JfaXNfbm9ubGlu
ZWFyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICByZXR1cm4gc2tiLT5kYXRh
X2xlbjsKfQoKc3RhdGljIGlubGluZSBpbnQgc2tiX2hlYWRsZW4oY29uc3Qgc3RydWN0IHNrX2J1
ZmYgKnNrYikKewogICAgICAgIHJldHVybiBza2ItPmxlbiAtIHNrYi0+ZGF0YV9sZW47Cn0KIyA3
NjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKl9fc2tiX3B1dChzdHJ1Y3Qgc2tfYnVmZiAqc2ti
LCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgY2hhciAqdG1wPXNrYi0+dGFp
bDsKICAgICAgICBkbyB7IGlmIChza2JfaXNfbm9ubGluZWFyKHNrYikpIF9fYXNtX18gX192b2xh
dGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgc2tiLT50YWls
Kz1sZW47CiAgICAgICAgc2tiLT5sZW4rPWxlbjsKICAgICAgICByZXR1cm4gdG1wOwp9CiMgNzg0
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfcHV0KHN0cnVjdCBza19idWZmICpza2IsIHVu
c2lnbmVkIGludCBsZW4pCnsKICAgICAgICB1bnNpZ25lZCBjaGFyICp0bXA9c2tiLT50YWlsOwog
ICAgICAgIGRvIHsgaWYgKHNrYl9pc19ub25saW5lYXIoc2tiKSkgX19hc21fXyBfX3ZvbGF0aWxl
X18oIi5ieXRlIDB4MGYsMHgwYiIpOyB9IHdoaWxlICgwKTsKICAgICAgICBza2ItPnRhaWwrPWxl
bjsKICAgICAgICBza2ItPmxlbis9bGVuOwogICAgICAgIGlmKHNrYi0+dGFpbD5za2ItPmVuZCkg
ewogICAgICAgICAgICAgICAgc2tiX292ZXJfcGFuaWMoc2tiLCBsZW4sICh7IHZvaWQgKnBjOyBf
X2FzbV9fKCJtb3ZsICQxZiwlMFxuMToiOiI9ZyIgKHBjKSk7IHBjOyB9KSk7CiAgICAgICAgfQog
ICAgICAgIHJldHVybiB0bXA7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqX19za2Jf
cHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgc2ti
LT5kYXRhLT1sZW47CiAgICAgICAgc2tiLT5sZW4rPWxlbjsKICAgICAgICByZXR1cm4gc2tiLT5k
YXRhOwp9CiMgODEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9z
a2J1ZmYuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfcHVzaChzdHJ1Y3Qgc2tf
YnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgc2tiLT5kYXRhLT1sZW47CiAg
ICAgICAgc2tiLT5sZW4rPWxlbjsKICAgICAgICBpZihza2ItPmRhdGE8c2tiLT5oZWFkKSB7CiAg
ICAgICAgICAgICAgICBza2JfdW5kZXJfcGFuaWMoc2tiLCBsZW4sICh7IHZvaWQgKnBjOyBfX2Fz
bV9fKCJtb3ZsICQxZiwlMFxuMToiOiI9ZyIgKHBjKSk7IHBjOyB9KSk7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiBza2ItPmRhdGE7Cn0KCnN0YXRpYyBpbmxpbmUgY2hhciAqX19za2JfcHVsbChz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgc2tiLT5sZW4t
PWxlbjsKICAgICAgICBpZiAoc2tiLT5sZW4gPCBza2ItPmRhdGFfbGVuKQogICAgICAgICAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIHJldHVy
biBza2ItPmRhdGErPWxlbjsKfQojIDg0MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqIHNrYl9w
dWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBpZiAo
bGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAg
ICAgcmV0dXJuIF9fc2tiX3B1bGwoc2tiLGxlbik7Cn0KCmV4dGVybiB1bnNpZ25lZCBjaGFyICog
X19wc2tiX3B1bGxfdGFpbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZGVsdGEpOwoKc3RhdGlj
IGlubGluZSBjaGFyICpfX3Bza2JfcHVsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBp
bnQgbGVuKQp7CiAgICAgICAgaWYgKGxlbiA+IHNrYl9oZWFkbGVuKHNrYikgJiYKICAgICAgICAg
ICAgX19wc2tiX3B1bGxfdGFpbChza2IsIGxlbi1za2JfaGVhZGxlbihza2IpKSA9PSAoKHZvaWQg
KikwKSkKICAgICAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICBza2ItPmxl
biAtPSBsZW47CiAgICAgICAgcmV0dXJuIHNrYi0+ZGF0YSArPSBsZW47Cn0KCnN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgY2hhciAqIHBza2JfcHVsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25l
ZCBpbnQgbGVuKQp7CiAgICAgICAgaWYgKGxlbiA+IHNrYi0+bGVuKQogICAgICAgICAgICAgICAg
cmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiBfX3Bza2JfcHVsbChza2IsbGVuKTsK
fQoKc3RhdGljIGlubGluZSBpbnQgcHNrYl9tYXlfcHVsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1
bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYgKGxlbiA8PSBza2JfaGVhZGxlbihza2IpKQog
ICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgaWYgKGxlbiA+IHNrYi0+bGVuKQogICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgcmV0dXJuIChfX3Bza2JfcHVsbF90YWlsKHNr
YiwgbGVuLXNrYl9oZWFkbGVuKHNrYikpICE9ICgodm9pZCAqKTApKTsKfQojIDg4MyAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxp
bmUgaW50IHNrYl9oZWFkcm9vbShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAg
cmV0dXJuIHNrYi0+ZGF0YS1za2ItPmhlYWQ7Cn0KIyA4OTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIGludCBza2JfdGFp
bHJvb20oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIHJldHVybiBza2JfaXNf
bm9ubGluZWFyKHNrYikgPyAwIDogc2tiLT5lbmQtc2tiLT50YWlsOwp9CiMgOTA5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGlu
ZSB2b2lkIHNrYl9yZXNlcnZlKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4p
CnsKICAgICAgICBza2ItPmRhdGErPWxlbjsKICAgICAgICBza2ItPnRhaWwrPWxlbjsKfQoKZXh0
ZXJuIGludCBfX19wc2tiX3RyaW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxl
biwgaW50IHJlYWxsb2MpOwoKc3RhdGljIGlubGluZSB2b2lkIF9fc2tiX3RyaW0oc3RydWN0IHNr
X2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIGlmICghc2tiLT5kYXRhX2xl
bikgewogICAgICAgICAgICAgICAgc2tiLT5sZW4gPSBsZW47CiAgICAgICAgICAgICAgICBza2It
PnRhaWwgPSBza2ItPmRhdGErbGVuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBf
X19wc2tiX3RyaW0oc2tiLCBsZW4sIDApOwogICAgICAgIH0KfQojIDkzNiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCBza2JfdHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAg
ICAgaWYgKHNrYi0+bGVuID4gbGVuKSB7CiAgICAgICAgICAgICAgICBfX3NrYl90cmltKHNrYiwg
bGVuKTsKICAgICAgICB9Cn0KCgpzdGF0aWMgaW5saW5lIGludCBfX3Bza2JfdHJpbShzdHJ1Y3Qg
c2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYgKCFza2ItPmRhdGFf
bGVuKSB7CiAgICAgICAgICAgICAgICBza2ItPmxlbiA9IGxlbjsKICAgICAgICAgICAgICAgIHNr
Yi0+dGFpbCA9IHNrYi0+ZGF0YStsZW47CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIF9fX3Bza2JfdHJpbShza2IsIGxlbiwg
MSk7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIGludCBwc2tiX3RyaW0oc3RydWN0IHNrX2J1
ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIGlmIChsZW4gPCBza2ItPmxlbikK
ICAgICAgICAgICAgICAgIHJldHVybiBfX3Bza2JfdHJpbShza2IsIGxlbik7CiAgICAgICAgcmV0
dXJuIDA7Cn0KIyA5NzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX29ycGhhbihzdHJ1Y3Qgc2tfYnVmZiAq
c2tiKQp7CiAgICAgICAgaWYgKHNrYi0+ZGVzdHJ1Y3RvcikKICAgICAgICAgICAgICAgIHNrYi0+
ZGVzdHJ1Y3Rvcihza2IpOwogICAgICAgIHNrYi0+ZGVzdHJ1Y3RvciA9ICgodm9pZCAqKTApOwog
ICAgICAgIHNrYi0+c2sgPSAoKHZvaWQgKikwKTsKfQojIDk5MCAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBza2Jf
cXVldWVfcHVyZ2Uoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0cnVjdCBz
a19idWZmICpza2I7CiAgICAgICAgd2hpbGUgKChza2I9c2tiX2RlcXVldWUobGlzdCkpIT0oKHZv
aWQgKikwKSkKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwp9CiMgMTAwNyAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBfX3NrYl9xdWV1ZV9wdXJnZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7CiAg
ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKICAgICAgICB3aGlsZSAoKHNrYj1fX3NrYl9kZXF1
ZXVlKGxpc3QpKSE9KCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICBrZnJlZV9za2Ioc2tiKTsK
fQojIDEwMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVm
Zi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpfX2Rldl9hbGxvY19za2IodW5zaWdu
ZWQgaW50IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBnZnBfbWFzaykKewogICAgICAgIHN0cnVjdCBza19idWZmICpza2I7CgogICAgICAg
IHNrYiA9IGFsbG9jX3NrYihsZW5ndGgrMTYsIGdmcF9tYXNrKTsKICAgICAgICBpZiAoc2tiKQog
ICAgICAgICAgICAgICAgc2tiX3Jlc2VydmUoc2tiLDE2KTsKICAgICAgICByZXR1cm4gc2tiOwp9
CiMgMTA1MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZm
LmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKmRldl9hbGxvY19za2IodW5zaWduZWQg
aW50IGxlbmd0aCkKewogICAgICAgIHJldHVybiBfX2Rldl9hbGxvY19za2IobGVuZ3RoLCAoMHgy
MCkpOwp9CiMgMTA2OSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
c2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgaW50CnNrYl9jb3coc3RydWN0IHNrX2J1ZmYgKnNrYiwg
dW5zaWduZWQgaW50IGhlYWRyb29tKQp7CiAgICAgICAgaW50IGRlbHRhID0gKGhlYWRyb29tID4g
MTYgPyBoZWFkcm9vbSA6IDE2KSAtIHNrYl9oZWFkcm9vbShza2IpOwoKICAgICAgICBpZiAoZGVs
dGEgPCAwKQogICAgICAgICAgICAgICAgZGVsdGEgPSAwOwoKICAgICAgICBpZiAoZGVsdGEgfHwg
c2tiX2Nsb25lZChza2IpKQogICAgICAgICAgICAgICAgcmV0dXJuIHBza2JfZXhwYW5kX2hlYWQo
c2tiLCAoZGVsdGErMTUpJn4xNSwgMCwgKDB4MjApKTsKICAgICAgICByZXR1cm4gMDsKfQojIDEw
ODkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpp
bnQgc2tiX2xpbmVhcml6ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZ2ZwKTsKCnN0YXRpYyBp
bmxpbmUgdm9pZCAqa21hcF9za2JfZnJhZyhjb25zdCBza2JfZnJhZ190ICpmcmFnKQp7CgoKCgoK
CiAgICAgICAgcmV0dXJuIGttYXAoZnJhZy0+cGFnZSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBr
dW5tYXBfc2tiX2ZyYWcodm9pZCAqdmFkZHIpCnsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwoK
Cgp9CgoKCgoKCgpleHRlcm4gc3RydWN0IHNrX2J1ZmYgKiBza2JfcmVjdl9kYXRhZ3JhbShzdHJ1
Y3Qgc29jayAqc2ssdW5zaWduZWQgZmxhZ3MsaW50IG5vYmxvY2ssIGludCAqZXJyKTsKZXh0ZXJu
IHVuc2lnbmVkIGludCBkYXRhZ3JhbV9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29j
a2V0ICpzb2NrLCBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKndhaXQpOwpleHRlcm4gaW50IHNr
Yl9jb3B5X2RhdGFncmFtKGNvbnN0IHN0cnVjdCBza19idWZmICpmcm9tLCBpbnQgb2Zmc2V0LCBj
aGFyICp0byxpbnQgc2l6ZSk7CmV4dGVybiBpbnQgc2tiX2NvcHlfZGF0YWdyYW1faW92ZWMoY29u
c3Qgc3RydWN0IHNrX2J1ZmYgKmZyb20sIGludCBvZmZzZXQsIHN0cnVjdCBpb3ZlYyAqdG8saW50
IHNpemUpOwpleHRlcm4gaW50IHNrYl9jb3B5X2FuZF9jc3VtX2RhdGFncmFtKGNvbnN0IHN0cnVj
dCBza19idWZmICpza2IsIGludCBvZmZzZXQsIHU4ICp0bywgaW50IGxlbiwgdW5zaWduZWQgaW50
ICpjc3VtcCk7CmV4dGVybiBpbnQgc2tiX2NvcHlfYW5kX2NzdW1fZGF0YWdyYW1faW92ZWMoY29u
c3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGhsZW4sIHN0cnVjdCBpb3ZlYyAqaW92KTsKZXh0
ZXJuIHZvaWQgc2tiX2ZyZWVfZGF0YWdyYW0oc3RydWN0IHNvY2sgKiBzaywgc3RydWN0IHNrX2J1
ZmYgKnNrYik7CgpleHRlcm4gdW5zaWduZWQgaW50IHNrYl9jaGVja3N1bShjb25zdCBzdHJ1Y3Qg
c2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCB1bnNpZ25lZCBpbnQgY3N1bSk7CmV4
dGVybiBpbnQgc2tiX2NvcHlfYml0cyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zm
c2V0LCB2b2lkICp0bywgaW50IGxlbik7CmV4dGVybiB1bnNpZ25lZCBpbnQgc2tiX2NvcHlfYW5k
X2NzdW1fYml0cyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCB1OCAqdG8s
IGludCBsZW4sIHVuc2lnbmVkIGludCBjc3VtKTsKZXh0ZXJuIHZvaWQgc2tiX2NvcHlfYW5kX2Nz
dW1fZGV2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHU4ICp0byk7CgpleHRlcm4gdm9pZCBz
a2JfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgc2tiX2FkZF9tdHUoaW50IG10dSk7CiMgMTQ3ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIgMgoK
c3RydWN0IG5laWdoYm91cjsKc3RydWN0IG5laWdoX3Bhcm1zOwpzdHJ1Y3Qgc2tfYnVmZjsKCnN0
cnVjdCBuZXRpZl9yeF9zdGF0cwp7CiAgICAgICAgdW5zaWduZWQgdG90YWw7CiAgICAgICAgdW5z
aWduZWQgZHJvcHBlZDsKICAgICAgICB1bnNpZ25lZCB0aW1lX3NxdWVlemU7CiAgICAgICAgdW5z
aWduZWQgdGhyb3R0bGVkOwogICAgICAgIHVuc2lnbmVkIGZhc3Ryb3V0ZV9oaXQ7CiAgICAgICAg
dW5zaWduZWQgZmFzdHJvdXRlX3N1Y2Nlc3M7CiAgICAgICAgdW5zaWduZWQgZmFzdHJvdXRlX2Rl
ZmVyOwogICAgICAgIHVuc2lnbmVkIGZhc3Ryb3V0ZV9kZWZlcnJlZF9vdXQ7CiAgICAgICAgdW5z
aWduZWQgZmFzdHJvdXRlX2xhdGVuY3lfcmVkdWN0aW9uOwogICAgICAgIHVuc2lnbmVkIGNwdV9j
b2xsaXNpb247Cn0gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkpKSkpKTsK
CmV4dGVybiBzdHJ1Y3QgbmV0aWZfcnhfc3RhdHMgbmV0ZGV2X3J4X3N0YXRbXTsKCgoKCgoKc3Ry
dWN0IGRldl9tY19saXN0CnsKICAgICAgICBzdHJ1Y3QgZGV2X21jX2xpc3QgKm5leHQ7CiAgICAg
ICAgX191OCBkbWlfYWRkcls4XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRtaV9hZGRybGVuOwog
ICAgICAgIGludCBkbWlfdXNlcnM7CiAgICAgICAgaW50IGRtaV9ndXNlcnM7Cn07CgpzdHJ1Y3Qg
aGhfY2FjaGUKewogICAgICAgIHN0cnVjdCBoaF9jYWNoZSAqaGhfbmV4dDsKICAgICAgICBhdG9t
aWNfdCBoaF9yZWZjbnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaGhfdHlwZTsKICAgICAgICBp
bnQgaGhfbGVuOwogICAgICAgIGludCAoKmhoX291dHB1dCkoc3RydWN0IHNrX2J1ZmYgKnNrYik7
CiAgICAgICAgcndsb2NrX3QgaGhfbG9jazsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBoaF9kYXRh
WzE2L3NpemVvZih1bnNpZ25lZCBsb25nKV07Cn07CgoKCgoKCmVudW0gbmV0ZGV2X3N0YXRlX3QK
ewogICAgICAgIF9fTElOS19TVEFURV9YT0ZGPTAsCiAgICAgICAgX19MSU5LX1NUQVRFX1NUQVJU
LAogICAgICAgIF9fTElOS19TVEFURV9QUkVTRU5ULAogICAgICAgIF9fTElOS19TVEFURV9TQ0hF
RCwKICAgICAgICBfX0xJTktfU1RBVEVfTk9DQVJSSUVSCn07CgoKCgoKCnN0cnVjdCBuZXRkZXZf
Ym9vdF9zZXR1cCB7CiAgICAgICAgY2hhciBuYW1lWzE2XTsKICAgICAgICBzdHJ1Y3QgaWZtYXAg
bWFwOwp9OwojIDIzMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
bmV0ZGV2aWNlLmgiCnN0cnVjdCBuZXRfZGV2aWNlCnsKCgoKCgoKICAgICAgICBjaGFyIG5hbWVb
MTZdOwoKCgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBybWVtX2VuZDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHJtZW1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1fZW5kOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgbWVtX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmFzZV9hZGRy
OwogICAgICAgIHVuc2lnbmVkIGludCBpcnE7CgoKCgoKCiAgICAgICAgdW5zaWduZWQgY2hhciBp
Zl9wb3J0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZG1hOwoKICAgICAgICB1bnNpZ25lZCBsb25n
IHN0YXRlOwoKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV4dDsKCgogICAgICAgIGludCAo
KmluaXQpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKCgogICAgICAgIHN0cnVjdCBuZXRfZGV2
aWNlICpuZXh0X3NjaGVkOwoKCiAgICAgICAgaW50IGlmaW5kZXg7CiAgICAgICAgaW50IGlmbGlu
azsKCgogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzKiAoKmdldF9zdGF0cykoc3RydWN0
IG5ldF9kZXZpY2UgKmRldik7CiAgICAgICAgc3RydWN0IGl3X3N0YXRpc3RpY3MqICgqZ2V0X3dp
cmVsZXNzX3N0YXRzKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIyAyODUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIgogICAgICAgIHVuc2ln
bmVkIGxvbmcgdHJhbnNfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsYXN0X3J4OwoKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBnZmxhZ3M7
CiAgICAgICAgdW5zaWduZWQgbXR1OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGU7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgaGFyZF9oZWFkZXJfbGVuOwogICAgICAgIHZvaWQgKnByaXY7Cgog
ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXI7CgoKCgogICAgICAgIHVuc2lnbmVkIGNo
YXIgYnJvYWRjYXN0WzhdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZGV2X2FkZHJbOF07CiAgICAg
ICAgdW5zaWduZWQgY2hhciBhZGRyX2xlbjsKCiAgICAgICAgc3RydWN0IGRldl9tY19saXN0ICpt
Y19saXN0OwogICAgICAgIGludCBtY19jb3VudDsKICAgICAgICBpbnQgcHJvbWlzY3VpdHk7CiAg
ICAgICAgaW50IGFsbG11bHRpOwoKICAgICAgICBpbnQgd2F0Y2hkb2dfdGltZW87CiAgICAgICAg
c3RydWN0IHRpbWVyX2xpc3Qgd2F0Y2hkb2dfdGltZXI7CgoKCiAgICAgICAgdm9pZCAqYXRhbGtf
cHRyOwogICAgICAgIHZvaWQgKmlwX3B0cjsKICAgICAgICB2b2lkICpkbl9wdHI7CiAgICAgICAg
dm9pZCAqaXA2X3B0cjsKICAgICAgICB2b2lkICplY19wdHI7CgogICAgICAgIHN0cnVjdCBRZGlz
YyAqcWRpc2M7CiAgICAgICAgc3RydWN0IFFkaXNjICpxZGlzY19zbGVlcGluZzsKICAgICAgICBz
dHJ1Y3QgUWRpc2MgKnFkaXNjX2xpc3Q7CiAgICAgICAgc3RydWN0IFFkaXNjICpxZGlzY19pbmdy
ZXNzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfcXVldWVfbGVuOwoKCiAgICAgICAgc3Bpbmxv
Y2tfdCB4bWl0X2xvY2s7CgoKCiAgICAgICAgaW50IHhtaXRfbG9ja19vd25lcjsKCiAgICAgICAg
c3BpbmxvY2tfdCBxdWV1ZV9sb2NrOwoKICAgICAgICBhdG9taWNfdCByZWZjbnQ7CgogICAgICAg
IGludCBkZWFkYmVhZjsKCgogICAgICAgIGludCBmZWF0dXJlczsKIyAzNTAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIgogICAgICAgIHZvaWQg
KCp1bmluaXQpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKICAgICAgICB2b2lkICgqZGVzdHJ1
Y3Rvcikoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgoKICAgICAgICBpbnQgKCpvcGVuKShzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2KTsKICAgICAgICBpbnQgKCpzdG9wKShzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KTsKICAgICAgICBpbnQgKCpoYXJkX3N0YXJ0X3htaXQpIChzdHJ1Y3Qgc2tfYnVmZiAq
c2tiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiAgICAgICAgaW50ICgqaGFyZF9oZWFkZXIpIChzdHJ1
Y3Qgc2tfYnVmZiAqc2tiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYWRkciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2FkZHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbik7
CiAgICAgICAgaW50ICgqcmVidWlsZF9oZWFkZXIpKHN0cnVjdCBza19idWZmICpza2IpOwoKICAg
ICAgICB2b2lkICgqc2V0X211bHRpY2FzdF9saXN0KShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsK
CiAgICAgICAgaW50ICgqc2V0X21hY19hZGRyZXNzKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICph
ZGRyKTsKCiAgICAgICAgaW50ICgqZG9faW9jdGwpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlmcmVxICpp
ZnIsIGludCBjbWQpOwoKICAgICAgICBpbnQgKCpzZXRfY29uZmlnKShzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGlmbWFwICptYXApOwoKICAgICAgICBpbnQgKCpoYXJkX2hlYWRlcl9jYWNoZSkoc3RydWN0
IG5laWdoYm91ciAqbmVpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGhoX2NhY2hlICpoaCk7CiAgICAgICAgdm9pZCAoKmhlYWRl
cl9jYWNoZV91cGRhdGUpKHN0cnVjdCBoaF9jYWNoZSAqaGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciAqIGhhZGRyKTsKCiAgICAgICAgaW50ICgqY2hhbmdlX210dSkoc3RydWN0
IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpOwoKCiAgICAgICAgdm9pZCAoKnR4X3RpbWVv
dXQpIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCiAgICAgICAgaW50ICgqaGFyZF9oZWFkZXJf
cGFyc2UpKHN0cnVjdCBza19idWZmICpza2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaGFkZHIpOwogICAgICAgIGlu
dCAoKm5laWdoX3NldHVwKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmVpZ2hfcGFy
bXMgKik7CiAgICAgICAgaW50ICgqYWNjZXB0X2Zhc3RwYXRoKShzdHJ1Y3QgbmV0X2RldmljZSAq
LCBzdHJ1Y3QgZHN0X2VudHJ5Kik7CgoKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKCgog
ICAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKmJyX3BvcnQ7CiMgNDEwICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIKfTsKCgpzdHJ1Y3Qg
cGFja2V0X3R5cGUKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGU7CiAgICAgICAgc3RydWN0
IG5ldF9kZXZpY2UgKmRldjsKICAgICAgICBpbnQgKCpmdW5jKSAoc3RydWN0IHNrX2J1ZmYgKiwg
c3RydWN0IG5ldF9kZXZpY2UgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICBz
dHJ1Y3QgcGFja2V0X3R5cGUgKm5leHQ7Cn07CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyA3ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3NtcC5oIiAxCiMgOCAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAx
CiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaW50ZXJydXB0
LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9w
cy5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lu
dGVycnVwdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNt
L2F0b21pYy5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvYXNtL3B0cmFjZS5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCgpzdHJ1Y3QgaXJxYWN0aW9uIHsKICAgICAgICB2b2lk
ICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXNrOwogICAgICAgIGNvbnN0
IGNoYXIgKm5hbWU7CiAgICAgICAgdm9pZCAqZGV2X2lkOwogICAgICAgIHN0cnVjdCBpcnFhY3Rp
b24gKm5leHQ7Cn07CgoKCgoKZW51bSB7CiAgICAgICAgVElNRVJfQkggPSAwLAogICAgICAgIFRR
VUVVRV9CSCwKICAgICAgICBESUdJX0JILAogICAgICAgIFNFUklBTF9CSCwKICAgICAgICBSSVND
T004X0JILAogICAgICAgIFNQRUNJQUxJWF9CSCwKICAgICAgICBBVVJPUkFfQkgsCiAgICAgICAg
RVNQX0JILAogICAgICAgIFNDU0lfQkgsCiAgICAgICAgSU1NRURJQVRFX0JILAogICAgICAgIENZ
Q0xBREVTX0JILAogICAgICAgIENNMjA2X0JILAogICAgICAgIEpTX0JILAogICAgICAgIE1BQ1NF
UklBTF9CSCwKICAgICAgICBJU0lDT01fQkgKfTsKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQojIDYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pcnEuaCIgMQojIDEyICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pcnEuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEzICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pcnEuaCIgMgoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyAxNyAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaXJxLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgMTggIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lycS5oIiAyCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9pcnEuaCIgMQojIDEzICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vaXJxLmgiCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxNCAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2lycS5oIiAyCiMgMjggIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9pcnEuaCIKc3RhdGljIF9faW5saW5lX18g
aW50IGlycV9jYW5ub25pY2FsaXplKGludCBpcnEpCnsKICAgICAgICByZXR1cm4gKChpcnEgPT0g
MikgPyA5IDogaXJxKTsKfQoKZXh0ZXJuIHZvaWQgZGlzYWJsZV9pcnEodW5zaWduZWQgaW50KTsK
ZXh0ZXJuIHZvaWQgZGlzYWJsZV9pcnFfbm9zeW5jKHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lk
IGVuYWJsZV9pcnEodW5zaWduZWQgaW50KTsKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvaXJxLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvaXJxLmgiIDIKIyAzOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvaXJxLmgiCnN0cnVjdCBod19pbnRlcnJ1cHRfdHlwZSB7CiAgICAg
ICAgY29uc3QgY2hhciAqIHR5cGVuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCAoKnN0YXJ0dXAp
KHVuc2lnbmVkIGludCBpcnEpOwogICAgICAgIHZvaWQgKCpzaHV0ZG93bikodW5zaWduZWQgaW50
IGlycSk7CiAgICAgICAgdm9pZCAoKmVuYWJsZSkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAg
dm9pZCAoKmRpc2FibGUpKHVuc2lnbmVkIGludCBpcnEpOwogICAgICAgIHZvaWQgKCphY2spKHVu
c2lnbmVkIGludCBpcnEpOwogICAgICAgIHZvaWQgKCplbmQpKHVuc2lnbmVkIGludCBpcnEpOwog
ICAgICAgIHZvaWQgKCpzZXRfYWZmaW5pdHkpKHVuc2lnbmVkIGludCBpcnEsIHVuc2lnbmVkIGxv
bmcgbWFzayk7Cn07Cgp0eXBlZGVmIHN0cnVjdCBod19pbnRlcnJ1cHRfdHlwZSBod19pcnFfY29u
dHJvbGxlcjsKIyA1OSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
aXJxLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdHVzOwogICAg
ICAgIGh3X2lycV9jb250cm9sbGVyICpoYW5kbGVyOwogICAgICAgIHN0cnVjdCBpcnFhY3Rpb24g
KmFjdGlvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVwdGg7CiAgICAgICAgc3BpbmxvY2tfdCBs
b2NrOwp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkpKSkpKSBpcnFfZGVz
Y190OwoKZXh0ZXJuIGlycV9kZXNjX3QgaXJxX2Rlc2MgWzIyNF07CgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9od19pcnEuaCIgMQojIDE1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vaHdfaXJxLmgiCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxNiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2h3X2lycS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMTcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9od19pcnEuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9pcnEuaCIgMQojIDE4ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vaHdfaXJxLmgiIDIKIyA2MSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2h3X2lycS5oIgpleHRlcm4gaW50IGlycV92
ZWN0b3JbMjI0XTsKIyA3MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNt
L2h3X2lycS5oIgpleHRlcm4gdm9pZCBtYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJu
IHZvaWQgdW5tYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIHZvaWQgZGlzYWJsZV84
MjU5QV9pcnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIGVuYWJsZV84MjU5QV9pcnEo
dW5zaWduZWQgaW50IGlycSk7CmV4dGVybiBpbnQgaTgyNTlBX2lycV9wZW5kaW5nKHVuc2lnbmVk
IGludCBpcnEpOwpleHRlcm4gdm9pZCBtYWtlXzgyNTlBX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsK
ZXh0ZXJuIHZvaWQgaW5pdF84MjU5QShpbnQgYWVvaSk7CmV4dGVybiB2b2lkIHNlbmRfSVBJX3Nl
bGYoaW50IHZlY3RvcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBp
bml0X1ZJU1dTX0FQSUNfaXJxcyh2b2lkKTsKZXh0ZXJuIHZvaWQgc2V0dXBfSU9fQVBJQyh2b2lk
KTsKZXh0ZXJuIHZvaWQgZGlzYWJsZV9JT19BUElDKHZvaWQpOwpleHRlcm4gdm9pZCBwcmludF9J
T19BUElDKHZvaWQpOwpleHRlcm4gaW50IElPX0FQSUNfZ2V0X1BDSV9pcnFfdmVjdG9yKGludCBi
dXMsIGludCBzbG90LCBpbnQgZm4pOwpleHRlcm4gdm9pZCBzZW5kX0lQSShpbnQgZGVzdCwgaW50
IHZlY3Rvcik7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpb19hcGljX2lycXM7CgpleHRlcm4gYXRv
bWljX3QgaXJxX2Vycl9jb3VudDsKZXh0ZXJuIGF0b21pY190IGlycV9taXNfY291bnQ7CgpleHRl
cm4gY2hhciBfc3RleHQsIF9ldGV4dDsKIyAxODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51
eC9pbmNsdWRlL2FzbS9od19pcnEuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9jcHVfbWFz
azsKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2ZfYnVmZmVyOwpleHRlcm4gdW5zaWduZWQgbG9u
ZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9zaGlmdDsKCgoKCgpzdGF0aWMg
aW5saW5lIHZvaWQgeDg2X2RvX3Byb2ZpbGUgKHVuc2lnbmVkIGxvbmcgZWlwKQp7CiAgICAgICAg
aWYgKCFwcm9mX2J1ZmZlcikKICAgICAgICAgICAgICAgIHJldHVybjsKCgoKCgogICAgICAgIGlm
ICghKCgxPDwoZ2V0X2N1cnJlbnQoKS0+cHJvY2Vzc29yKSkgJiBwcm9mX2NwdV9tYXNrKSkKICAg
ICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZWlwIC09ICh1bnNpZ25lZCBsb25nKSAmX3N0
ZXh0OwogICAgICAgIGVpcCA+Pj0gcHJvZl9zaGlmdDsKCgoKCgogICAgICAgIGlmIChlaXAgPiBw
cm9mX2xlbi0xKQogICAgICAgICAgICAgICAgZWlwID0gcHJvZl9sZW4tMTsKICAgICAgICBhdG9t
aWNfaW5jKChhdG9taWNfdCAqKSZwcm9mX2J1ZmZlcltlaXBdKTsKfQoKCnN0YXRpYyBpbmxpbmUg
dm9pZCBod19yZXNlbmRfaXJxKHN0cnVjdCBod19pbnRlcnJ1cHRfdHlwZSAqaCwgdW5zaWduZWQg
aW50IGkpIHsKICAgICAgICBpZiAoKCgoaSkgPj0gMTYpIHx8ICgoMTw8KGkpKSAmIGlvX2FwaWNf
aXJxcykpKQogICAgICAgICAgICAgICAgc2VuZF9JUElfc2VsZihpcnFfdmVjdG9yW2ldKTsKfQoj
IDcwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pcnEuaCIgMgoK
ZXh0ZXJuIGludCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3Mg
Kiwgc3RydWN0IGlycWFjdGlvbiAqKTsKZXh0ZXJuIGludCBzZXR1cF9pcnEodW5zaWduZWQgaW50
ICwgc3RydWN0IGlycWFjdGlvbiAqICk7CgpleHRlcm4gaHdfaXJxX2NvbnRyb2xsZXIgbm9faXJx
X3R5cGU7CmV4dGVybiB2b2lkIG5vX2FjdGlvbihpbnQgY3BsLCB2b2lkICpkZXZfaWQsIHN0cnVj
dCBwdF9yZWdzICpyZWdzKTsKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9hc20vaGFyZGlycS5oIiAyCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGlu
dCBfX3NvZnRpcnFfcGVuZGluZzsKICAgICAgICB1bnNpZ25lZCBpbnQgX19sb2NhbF9pcnFfY291
bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IF9fbG9jYWxfYmhfY291bnQ7CiAgICAgICAgdW5zaWdu
ZWQgaW50IF9fc3lzY2FsbF9jb3VudDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBfX2tz
b2Z0aXJxZF90YXNrOwogICAgICAgIHVuc2lnbmVkIGludCBfX25taV9jb3VudDsKfSBfX2F0dHJp
YnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoKDUpKSkpKSkgaXJxX2NwdXN0YXRfdDsKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaXJxX2NwdXN0YXQuaCIg
MQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pcnFfY3B1
c3RhdC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2Nv
bmZpZy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L2lycV9jcHVzdGF0LmgiIDIKCgoKCgoKCmV4dGVybiBpcnFfY3B1c3RhdF90IGlycV9zdGF0W107
CiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgi
IDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2hhcmRpcnEu
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgi
IDEKIyA0MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2hhcmRpcnEu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9zbXAuaCIg
MQojIDQzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vaGFyZGlycS5o
IiAyCgpleHRlcm4gdW5zaWduZWQgY2hhciBnbG9iYWxfaXJxX2hvbGRlcjsKZXh0ZXJuIHVuc2ln
bmVkIHZvbGF0aWxlIGxvbmcgZ2xvYmFsX2lycV9sb2NrOwoKc3RhdGljIGlubGluZSBpbnQgaXJx
c19ydW5uaW5nICh2b2lkKQp7CiAgICAgICAgaW50IGk7CgogICAgICAgIGZvciAoaSA9IDA7IGkg
PCBzbXBfbnVtX2NwdXM7IGkrKykKICAgICAgICAgICAgICAgIGlmICgoaXJxX3N0YXRbKGkpXS5f
X2xvY2FsX2lycV9jb3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAg
ICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcmVsZWFzZV9pcnFsb2NrKGludCBj
cHUpCnsKCiAgICAgICAgaWYgKGdsb2JhbF9pcnFfaG9sZGVyID09ICh1bnNpZ25lZCBjaGFyKSBj
cHUpIHsKICAgICAgICAgICAgICAgIGdsb2JhbF9pcnFfaG9sZGVyID0gMHhGRjsKICAgICAgICAg
ICAgICAgIGNsZWFyX2JpdCgwLCZnbG9iYWxfaXJxX2xvY2spOwogICAgICAgIH0KfQoKc3RhdGlj
IGlubGluZSB2b2lkIGlycV9lbnRlcihpbnQgY3B1LCBpbnQgaXJxKQp7CiAgICAgICAgKysoaXJx
X3N0YXRbKGNwdSldLl9fbG9jYWxfaXJxX2NvdW50KTsKCiAgICAgICAgd2hpbGUgKChfX2J1aWx0
aW5fY29uc3RhbnRfcCgwKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgwKSwoJmdsb2JhbF9pcnFfbG9j
aykpIDogdmFyaWFibGVfdGVzdF9iaXQoKDApLCgmZ2xvYmFsX2lycV9sb2NrKSkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lk
IGlycV9leGl0KGludCBjcHUsIGludCBpcnEpCnsKICAgICAgICAtLShpcnFfc3RhdFsoY3B1KV0u
X19sb2NhbF9pcnFfY291bnQpOwp9CgpzdGF0aWMgaW5saW5lIGludCBoYXJkaXJxX3RyeWxvY2so
aW50IGNwdSkKewogICAgICAgIHJldHVybiAhKGlycV9zdGF0WyhjcHUpXS5fX2xvY2FsX2lycV9j
b3VudCkgJiYgIShfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgw
KSwoJmdsb2JhbF9pcnFfbG9jaykpIDogdmFyaWFibGVfdGVzdF9iaXQoKDApLCgmZ2xvYmFsX2ly
cV9sb2NrKSkpOwp9CgoKCmV4dGVybiB2b2lkIHN5bmNocm9uaXplX2lycSh2b2lkKTsKIyA0NiAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc29mdGlycS5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5o
IiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3NvZnRpcnEu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9oYXJkaXJx
LmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vc29mdGly
cS5oIiAyCiMgNDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lu
dGVycnVwdC5oIiAyCiMgNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xp
bnV4L2ludGVycnVwdC5oIgplbnVtCnsKICAgICAgICBISV9TT0ZUSVJRPTAsCiAgICAgICAgTkVU
X1RYX1NPRlRJUlEsCiAgICAgICAgTkVUX1JYX1NPRlRJUlEsCiAgICAgICAgVEFTS0xFVF9TT0ZU
SVJRCn07CgoKCgoKc3RydWN0IHNvZnRpcnFfYWN0aW9uCnsKICAgICAgICB2b2lkICgqYWN0aW9u
KShzdHJ1Y3Qgc29mdGlycV9hY3Rpb24gKik7CiAgICAgICAgdm9pZCAqZGF0YTsKfTsKCiBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBkb19zb2Z0aXJxKHZvaWQpOwpleHRlcm4gdm9p
ZCBvcGVuX3NvZnRpcnEoaW50IG5yLCB2b2lkICgqYWN0aW9uKShzdHJ1Y3Qgc29mdGlycV9hY3Rp
b24qKSwgdm9pZCAqZGF0YSk7CmV4dGVybiB2b2lkIHNvZnRpcnFfaW5pdCh2b2lkKTsKCmV4dGVy
biB2b2lkIGNwdV9yYWlzZV9zb2Z0aXJxKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBu
cikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCByYWlzZV9zb2Z0aXJx
KHVuc2lnbmVkIGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDEwMyAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCnN0cnVj
dCB0YXNrbGV0X3N0cnVjdAp7CiAgICAgICAgc3RydWN0IHRhc2tsZXRfc3RydWN0ICpuZXh0Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhdGU7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAg
ICAgdm9pZCAoKmZ1bmMpKHVuc2lnbmVkIGxvbmcpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0
YTsKfTsKIyAxMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2lu
dGVycnVwdC5oIgplbnVtCnsKICAgICAgICBUQVNLTEVUX1NUQVRFX1NDSEVELAogICAgICAgIFRB
U0tMRVRfU1RBVEVfUlVOCn07CgpzdHJ1Y3QgdGFza2xldF9oZWFkCnsKICAgICAgICBzdHJ1Y3Qg
dGFza2xldF9zdHJ1Y3QgKmxpc3Q7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fKCgxIDw8
ICgoNSkpKSkpKTsKCmV4dGVybiBzdHJ1Y3QgdGFza2xldF9oZWFkIHRhc2tsZXRfdmVjWzMyXTsK
ZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQgdGFza2xldF9oaV92ZWNbMzJdOwoKCnN0YXRpYyBp
bmxpbmUgaW50IHRhc2tsZXRfdHJ5bG9jayhzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAg
ICAgICByZXR1cm4gIXRlc3RfYW5kX3NldF9iaXQoVEFTS0xFVF9TVEFURV9SVU4sICYodCktPnN0
YXRlKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfdW5sb2NrKHN0cnVjdCB0YXNrbGV0
X3N0cnVjdCAqdCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5
Iik7CiAgICAgICAgY2xlYXJfYml0KFRBU0tMRVRfU1RBVEVfUlVOLCAmKHQpLT5zdGF0ZSk7Cn0K
CnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X3VubG9ja193YWl0KHN0cnVjdCB0YXNrbGV0X3N0
cnVjdCAqdCkKewogICAgICAgIHdoaWxlICgoX19idWlsdGluX2NvbnN0YW50X3AoVEFTS0xFVF9T
VEFURV9SVU4pID8gY29uc3RhbnRfdGVzdF9iaXQoKFRBU0tMRVRfU1RBVEVfUlVOKSwoJih0KS0+
c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KChUQVNLTEVUX1NUQVRFX1JVTiksKCYodCktPnN0
YXRlKSkpKSB7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0KfQoKCgoK
CgpleHRlcm4gdm9pZCBfX3Rhc2tsZXRfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xl
dF9zY2hlZHVsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBpZiAoIXRlc3Rf
YW5kX3NldF9iaXQoVEFTS0xFVF9TVEFURV9TQ0hFRCwgJnQtPnN0YXRlKSkKICAgICAgICAgICAg
ICAgIF9fdGFza2xldF9zY2hlZHVsZSh0KTsKfQoKZXh0ZXJuIHZvaWQgX190YXNrbGV0X2hpX3Nj
aGVkdWxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfaGlfc2NoZWR1bGUoc3RydWN0IHRhc2ts
ZXRfc3RydWN0ICp0KQp7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KFRBU0tMRVRfU1RB
VEVfU0NIRUQsICZ0LT5zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX3Rhc2tsZXRfaGlfc2NoZWR1
bGUodCk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xldF9kaXNhYmxlX25vc3luYyhzdHJ1
Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBhdG9taWNfaW5jKCZ0LT5jb3VudCk7CiAg
ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKfQoKc3RhdGljIGlu
bGluZSB2b2lkIHRhc2tsZXRfZGlzYWJsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAg
ICAgICB0YXNrbGV0X2Rpc2FibGVfbm9zeW5jKHQpOwogICAgICAgIHRhc2tsZXRfdW5sb2NrX3dh
aXQodCk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRsICQwLDAoJSVl
c3ApIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xldF9lbmFibGUo
c3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
IiI6IDogOiJtZW1vcnkiKTsKICAgICAgICBhdG9taWNfZGVjKCZ0LT5jb3VudCk7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCB0YXNrbGV0X2hpX2VuYWJsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQp
CnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAg
IGF0b21pY19kZWMoJnQtPmNvdW50KTsKfQoKZXh0ZXJuIHZvaWQgdGFza2xldF9raWxsKHN0cnVj
dCB0YXNrbGV0X3N0cnVjdCAqdCk7CmV4dGVybiB2b2lkIHRhc2tsZXRfaW5pdChzdHJ1Y3QgdGFz
a2xldF9zdHJ1Y3QgKnQsCiAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqZnVuYykodW5z
aWduZWQgbG9uZyksIHVuc2lnbmVkIGxvbmcgZGF0YSk7CiMgMjIyICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZXh0ZXJuIHN0cnVjdCB0YXNr
bGV0X3N0cnVjdCBiaF90YXNrX3ZlY1tdOwoKCmV4dGVybiBzcGlubG9ja190IGdsb2JhbF9iaF9s
b2NrOwoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYmgoaW50IG5yKQp7CiAgICAgICAgdGFza2xl
dF9oaV9zY2hlZHVsZShiaF90YXNrX3ZlYytucik7Cn0KCmV4dGVybiB2b2lkIGluaXRfYmgoaW50
IG5yLCB2b2lkICgqcm91dGluZSkodm9pZCkpOwpleHRlcm4gdm9pZCByZW1vdmVfYmgoaW50IG5y
KTsKIyAyNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2ludGVy
cnVwdC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9iZV9pcnFfb24odm9pZCk7CmV4dGVybiBp
bnQgcHJvYmVfaXJxX29mZih1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBwcm9i
ZV9pcnFfbWFzayh1bnNpZ25lZCBsb25nKTsKIyA0MjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9s
aW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIgMQojIDEyICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9ub3RpZmllci5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKIyAxMyAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIgMgoKc3RydWN0IG5v
dGlmaWVyX2Jsb2NrCnsKICAgICAgICBpbnQgKCpub3RpZmllcl9jYWxsKShzdHJ1Y3Qgbm90aWZp
ZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CiAgICAgICAgc3RydWN0IG5v
dGlmaWVyX2Jsb2NrICpuZXh0OwogICAgICAgIGludCBwcmlvcml0eTsKfTsKCgoKCmV4dGVybiBp
bnQgbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICoqbGlzdCwg
c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKTsKZXh0ZXJuIGludCBub3RpZmllcl9jaGFpbl91bnJl
Z2lzdGVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqKm5sLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg
Km4pOwpleHRlcm4gaW50IG5vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IG5vdGlmaWVyX2Jsb2Nr
ICoqbiwgdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYpOwojIDQyNiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKCmV4dGVybiBzdHJ1Y3Qg
bmV0X2RldmljZSBsb29wYmFja19kZXY7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2Jh
c2U7CmV4dGVybiByd2xvY2tfdCBkZXZfYmFzZV9sb2NrOwoKZXh0ZXJuIGludCBuZXRkZXZfYm9v
dF9zZXR1cF9hZGQoY2hhciAqbmFtZSwgc3RydWN0IGlmbWFwICptYXApOwpleHRlcm4gaW50IG5l
dGRldl9ib290X3NldHVwX2NoZWNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldl9nZXRieWh3YWRkcih1bnNpZ25lZCBzaG9ydCB0eXBlLCBjaGFy
ICpod2FkZHIpOwpleHRlcm4gdm9pZCBkZXZfYWRkX3BhY2soc3RydWN0IHBhY2tldF90eXBlICpw
dCk7CmV4dGVybiB2b2lkIGRldl9yZW1vdmVfcGFjayhzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0KTsK
ZXh0ZXJuIGludCBkZXZfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IG5ldF9k
ZXZpY2UgKmRldl9nZXRfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTsKZXh0ZXJuIHN0cnVjdCBu
ZXRfZGV2aWNlICpfX2Rldl9nZXRfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTsKZXh0ZXJuIHN0
cnVjdCBuZXRfZGV2aWNlICpkZXZfYWxsb2MoY29uc3QgY2hhciAqbmFtZSwgaW50ICplcnIpOwpl
eHRlcm4gaW50IGRldl9hbGxvY19uYW1lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IGNo
YXIgKm5hbWUpOwpleHRlcm4gaW50IGRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpl
eHRlcm4gaW50IGRldl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJuIGludCBk
ZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKZXh0ZXJuIGludCByZWdpc3Rlcl9u
ZXRkZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9u
ZXRkZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcmVnaXN0ZXJfbmV0
ZGV2aWNlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwpleHRlcm4gaW50IHVu
cmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwpl
eHRlcm4gaW50IGRldl9uZXdfaW5kZXgodm9pZCk7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2X2dldF9ieV9pbmRleChpbnQgaWZpbmRleCk7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAq
X19kZXZfZ2V0X2J5X2luZGV4KGludCBpZmluZGV4KTsKZXh0ZXJuIGludCBkZXZfcmVzdGFydChz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCnR5cGVkZWYgaW50IGdpZmNvbmZfZnVuY190KHN0cnVj
dCBuZXRfZGV2aWNlICogZGV2LCBjaGFyICogYnVmcHRyLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBy
ZWdpc3Rlcl9naWZjb25mKHVuc2lnbmVkIGludCBmYW1pbHksIGdpZmNvbmZfZnVuY190ICogZ2lm
Y29uZik7CnN0YXRpYyBpbmxpbmUgaW50IHVucmVnaXN0ZXJfZ2lmY29uZih1bnNpZ25lZCBpbnQg
ZmFtaWx5KQp7CiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyX2dpZmNvbmYoZmFtaWx5LCAwKTsKfQoK
CgoKCgpzdHJ1Y3Qgc29mdG5ldF9kYXRhCnsKICAgICAgICBpbnQgdGhyb3R0bGU7CiAgICAgICAg
aW50IGNuZ19sZXZlbDsKICAgICAgICBpbnQgYXZnX2Jsb2c7CiAgICAgICAgc3RydWN0IHNrX2J1
ZmZfaGVhZCBpbnB1dF9wa3RfcXVldWU7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm91dHB1
dF9xdWV1ZTsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqY29tcGxldGlvbl9xdWV1ZTsKfSBfX2F0
dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoKDUpKSkpKSk7CgoKZXh0ZXJuIHN0cnVjdCBz
b2Z0bmV0X2RhdGEgc29mdG5ldF9kYXRhWzMyXTsKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbmV0
aWZfc2NoZWR1bGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmICghdGVzdF9h
bmRfc2V0X2JpdChfX0xJTktfU1RBVEVfU0NIRUQsICZkZXYtPnN0YXRlKSkgewogICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICAgICAgICAgIGludCBjcHUgPSAoZ2V0
X2N1cnJlbnQoKS0+cHJvY2Vzc29yKTsKCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOwog
ICAgICAgICAgICAgICAgZGV2LT5uZXh0X3NjaGVkID0gc29mdG5ldF9kYXRhW2NwdV0ub3V0cHV0
X3F1ZXVlOwogICAgICAgICAgICAgICAgc29mdG5ldF9kYXRhW2NwdV0ub3V0cHV0X3F1ZXVlID0g
ZGV2OwogICAgICAgICAgICAgICAgY3B1X3JhaXNlX3NvZnRpcnEoY3B1LCBORVRfVFhfU09GVElS
USk7CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3Bm
bCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgbmV0aWZfc2NoZWR1bGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAg
IGlmICghKF9fYnVpbHRpbl9jb25zdGFudF9wKF9fTElOS19TVEFURV9YT0ZGKSA/IGNvbnN0YW50
X3Rlc3RfYml0KChfX0xJTktfU1RBVEVfWE9GRiksKCZkZXYtPnN0YXRlKSkgOiB2YXJpYWJsZV90
ZXN0X2JpdCgoX19MSU5LX1NUQVRFX1hPRkYpLCgmZGV2LT5zdGF0ZSkpKSkKICAgICAgICAgICAg
ICAgIF9fbmV0aWZfc2NoZWR1bGUoZGV2KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX3N0
YXJ0X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBjbGVhcl9iaXQoX19M
SU5LX1NUQVRFX1hPRkYsICZkZXYtPnN0YXRlKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlm
X3dha2VfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmICh0ZXN0X2Fu
ZF9jbGVhcl9iaXQoX19MSU5LX1NUQVRFX1hPRkYsICZkZXYtPnN0YXRlKSkKICAgICAgICAgICAg
ICAgIF9fbmV0aWZfc2NoZWR1bGUoZGV2KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX3N0
b3BfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHNldF9iaXQoX19MSU5L
X1NUQVRFX1hPRkYsICZkZXYtPnN0YXRlKTsKfQoKc3RhdGljIGlubGluZSBpbnQgbmV0aWZfcXVl
dWVfc3RvcHBlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgcmV0dXJuIChfX2J1
aWx0aW5fY29uc3RhbnRfcChfX0xJTktfU1RBVEVfWE9GRikgPyBjb25zdGFudF90ZXN0X2JpdCgo
X19MSU5LX1NUQVRFX1hPRkYpLCgmZGV2LT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKF9f
TElOS19TVEFURV9YT0ZGKSwoJmRldi0+c3RhdGUpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IG5l
dGlmX3J1bm5pbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHJldHVybiAoX19i
dWlsdGluX2NvbnN0YW50X3AoX19MSU5LX1NUQVRFX1NUQVJUKSA/IGNvbnN0YW50X3Rlc3RfYml0
KChfX0xJTktfU1RBVEVfU1RBUlQpLCgmZGV2LT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQo
KF9fTElOS19TVEFURV9TVEFSVCksKCZkZXYtPnN0YXRlKSkpOwp9CgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgZGV2X2tmcmVlX3NrYl9pcnEoc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIGlm
IChhdG9taWNfZGVjX2FuZF90ZXN0KCZza2ItPnVzZXJzKSkgewogICAgICAgICAgICAgICAgaW50
IGNwdSA9KGdldF9jdXJyZW50KCktPnByb2Nlc3Nvcik7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGZsYWdzOwoKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
ZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7CiAgICAgICAgICAg
ICAgICBza2ItPm5leHQgPSBzb2Z0bmV0X2RhdGFbY3B1XS5jb21wbGV0aW9uX3F1ZXVlOwogICAg
ICAgICAgICAgICAgc29mdG5ldF9kYXRhW2NwdV0uY29tcGxldGlvbl9xdWV1ZSA9IHNrYjsKICAg
ICAgICAgICAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgTkVUX1RYX1NPRlRJUlEpOwogICAg
ICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6Imci
IChmbGFncyk6Im1lbW9yeSIsICJjYyIpOwogICAgICAgIH0KfQoKCgoKc3RhdGljIGlubGluZSB2
b2lkIGRldl9rZnJlZV9za2JfYW55KHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBpZiAo
KChpcnFfc3RhdFsoKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcikpXS5fX2xvY2FsX2lycV9jb3Vu
dCkgIT0gMCkpCiAgICAgICAgICAgICAgICBkZXZfa2ZyZWVfc2tiX2lycShza2IpOwogICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwp9CgpleHRlcm4gdm9pZCBuZXRf
Y2FsbF9yeF9hdG9taWModm9pZCAoKmZuKSh2b2lkKSk7CgpleHRlcm4gaW50IG5ldGlmX3J4KHN0
cnVjdCBza19idWZmICpza2IpOwpleHRlcm4gaW50IGRldl9pb2N0bCh1bnNpZ25lZCBpbnQgY21k
LCB2b2lkICopOwpleHRlcm4gaW50IGRldl9jaGFuZ2VfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2Ug
KiwgdW5zaWduZWQpOwpleHRlcm4gdm9pZCBkZXZfcXVldWVfeG1pdF9uaXQoc3RydWN0IHNrX2J1
ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgpleHRlcm4gdm9pZCBkZXZfaW5pdCh2
b2lkKTsKCmV4dGVybiBpbnQgbmV0ZGV2X25pdDsKCgoKCnN0YXRpYyBpbmxpbmUgaW50IG5ldGlm
X3J4X25pKHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgIGludCBlcnIgPSBuZXRpZl9yeChz
a2IpOwogICAgICAgaWYgKChpcnFfc3RhdFsoKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcikpXS5f
X3NvZnRpcnFfcGVuZGluZykpCiAgICAgICAgICAgICAgIGRvX3NvZnRpcnEoKTsKICAgICAgIHJl
dHVybiBlcnI7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfaW5pdF9idWZmZXJzKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYpCnsKCn0KCmV4dGVybiBpbnQgbmV0ZGV2X2ZpbmlzaF91bnJlZ2lzdGVy
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKc3RhdGljIGlubGluZSB2b2lkIGRldl9wdXQoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZk
ZXYtPnJlZmNudCkpCiAgICAgICAgICAgICAgICBuZXRkZXZfZmluaXNoX3VucmVnaXN0ZXIoZGV2
KTsKfQojIDU5NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0
ZGV2aWNlLmgiCnN0YXRpYyBpbmxpbmUgaW50IG5ldGlmX2NhcnJpZXJfb2soc3RydWN0IG5ldF9k
ZXZpY2UgKmRldikKewogICAgICAgIHJldHVybiAhKF9fYnVpbHRpbl9jb25zdGFudF9wKF9fTElO
S19TVEFURV9OT0NBUlJJRVIpID8gY29uc3RhbnRfdGVzdF9iaXQoKF9fTElOS19TVEFURV9OT0NB
UlJJRVIpLCgmZGV2LT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKF9fTElOS19TVEFURV9O
T0NBUlJJRVIpLCgmZGV2LT5zdGF0ZSkpKTsKfQoKZXh0ZXJuIHZvaWQgX19uZXRkZXZfd2F0Y2hk
b2dfdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgpzdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZf
Y2Fycmllcl9vbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgY2xlYXJfYml0KF9f
TElOS19TVEFURV9OT0NBUlJJRVIsICZkZXYtPnN0YXRlKTsKICAgICAgICBpZiAobmV0aWZfcnVu
bmluZyhkZXYpKQogICAgICAgICAgICAgICAgX19uZXRkZXZfd2F0Y2hkb2dfdXAoZGV2KTsKfQoK
c3RhdGljIGlubGluZSB2b2lkIG5ldGlmX2NhcnJpZXJfb2ZmKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYpCnsKICAgICAgICBzZXRfYml0KF9fTElOS19TVEFURV9OT0NBUlJJRVIsICZkZXYtPnN0YXRl
KTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IG5ldGlmX2RldmljZV9wcmVzZW50KHN0cnVjdCBuZXRf
ZGV2aWNlICpkZXYpCnsKICAgICAgICByZXR1cm4gKF9fYnVpbHRpbl9jb25zdGFudF9wKF9fTElO
S19TVEFURV9QUkVTRU5UKSA/IGNvbnN0YW50X3Rlc3RfYml0KChfX0xJTktfU1RBVEVfUFJFU0VO
VCksKCZkZXYtPnN0YXRlKSkgOiB2YXJpYWJsZV90ZXN0X2JpdCgoX19MSU5LX1NUQVRFX1BSRVNF
TlQpLCgmZGV2LT5zdGF0ZSkpKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX2RldmljZV9k
ZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmICh0ZXN0X2FuZF9jbGVh
cl9iaXQoX19MSU5LX1NUQVRFX1BSRVNFTlQsICZkZXYtPnN0YXRlKSAmJgogICAgICAgICAgICBu
ZXRpZl9ydW5uaW5nKGRldikpIHsKICAgICAgICAgICAgICAgIG5ldGlmX3N0b3BfcXVldWUoZGV2
KTsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9kZXZpY2VfYXR0YWNoKHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoX19M
SU5LX1NUQVRFX1BSRVNFTlQsICZkZXYtPnN0YXRlKSAmJgogICAgICAgICAgICBuZXRpZl9ydW5u
aW5nKGRldikpIHsKICAgICAgICAgICAgICAgIG5ldGlmX3dha2VfcXVldWUoZGV2KTsKICAgICAg
ICAgICAgICAgIF9fbmV0ZGV2X3dhdGNoZG9nX3VwKGRldik7CiAgICAgICAgfQp9CgoKCgoKCmVu
dW0gewogICAgICAgIE5FVElGX01TR19EUlYgPSAweDAwMDEsCiAgICAgICAgTkVUSUZfTVNHX1BS
T0JFID0gMHgwMDAyLAogICAgICAgIE5FVElGX01TR19MSU5LID0gMHgwMDA0LAogICAgICAgIE5F
VElGX01TR19USU1FUiA9IDB4MDAwOCwKICAgICAgICBORVRJRl9NU0dfSUZET1dOID0gMHgwMDEw
LAogICAgICAgIE5FVElGX01TR19JRlVQID0gMHgwMDIwLAogICAgICAgIE5FVElGX01TR19SWF9F
UlIgPSAweDAwNDAsCiAgICAgICAgTkVUSUZfTVNHX1RYX0VSUiA9IDB4MDA4MCwKICAgICAgICBO
RVRJRl9NU0dfVFhfUVVFVUVEID0gMHgwMTAwLAogICAgICAgIE5FVElGX01TR19JTlRSID0gMHgw
MjAwLAogICAgICAgIE5FVElGX01TR19UWF9ET05FID0gMHgwNDAwLAogICAgICAgIE5FVElGX01T
R19SWF9TVEFUVVMgPSAweDA4MDAsCiAgICAgICAgTkVUSUZfTVNHX1BLVERBVEEgPSAweDEwMDAs
Cn07CiMgNjc2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9uZXRk
ZXZpY2UuaCIKZXh0ZXJuIHZvaWQgZXRoZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7
CmV4dGVybiB2b2lkIGZkZGlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiB2
b2lkIHRyX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBmY19zZXR1
cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgZmNfZnJlZWRldihzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2KTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBuZXRf
ZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCB1bnJlZ2lzdGVyX25ldGRldihzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KTsKCmV4dGVybiB2b2lkIGRldl9tY191cGxvYWQoc3RydWN0IG5ldF9kZXZpY2Ug
KmRldik7CmV4dGVybiBpbnQgZGV2X21jX2RlbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2
b2lkICphZGRyLCBpbnQgYWxlbiwgaW50IGFsbCk7CmV4dGVybiBpbnQgZGV2X21jX2FkZChzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICphZGRyLCBpbnQgYWxlbiwgaW50IG5ld29ubHkpOwpl
eHRlcm4gdm9pZCBkZXZfbWNfZGlzY2FyZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJu
IHZvaWQgZGV2X3NldF9wcm9taXNjdWl0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaW5j
KTsKZXh0ZXJuIHZvaWQgZGV2X3NldF9hbGxtdWx0aShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBp
bnQgaW5jKTsKZXh0ZXJuIHZvaWQgbmV0ZGV2X3N0YXRlX2NoYW5nZShzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KTsKCmV4dGVybiB2b2lkIGRldl9sb2FkKGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4g
dm9pZCBkZXZfbWNhc3RfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBuZXRkZXZfcmVnaXN0ZXJfZmMo
c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAoKnN0aW11bCkoc3RydWN0IG5ldF9kZXZpY2Ug
KmRldikpOwpleHRlcm4gdm9pZCBuZXRkZXZfdW5yZWdpc3Rlcl9mYyhpbnQgYml0KTsKZXh0ZXJu
IGludCBuZXRkZXZfbWF4X2JhY2tsb2c7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldGRldl9mY194
b2ZmOwpleHRlcm4gYXRvbWljX3QgbmV0ZGV2X2Ryb3BwaW5nOwpleHRlcm4gaW50IG5ldGRldl9z
ZXRfbWFzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICptYXN0
ZXIpOwpleHRlcm4gc3RydWN0IHNrX2J1ZmYgKiBza2JfY2hlY2tzdW1faGVscChzdHJ1Y3Qgc2tf
YnVmZiAqc2tiKTsKIyAxNTIgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmgiIDEKIyAyNyAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9pZl9ldGhlci5oIiAxCiMgMjggIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmgiIDIK
CgpleHRlcm4gaW50IGV0aF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9k
ZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBz
aG9ydCB0eXBlLCB2b2lkICpkYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpzYWRkciwgdW5zaWduZWQgbGVuKTsKZXh0ZXJuIGludCBldGhfcmVidWlsZF9oZWFk
ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBldGhfdHlwZV90
cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJu
IHZvaWQgZXRoX2hlYWRlcl9jYWNoZV91cGRhdGUoc3RydWN0IGhoX2NhY2hlICpoaCwgc3RydWN0
IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciAqIGhhZGRyKTsKZXh0ZXJuIGludCBldGhfaGVhZGVyX2Nh
Y2hlKHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBoaF9jYWNoZSAqaGgpOwpleHRlcm4gaW50IGV0aF9oZWFkZXJf
cGFyc2Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpoYWRkcik7CmV4dGVybiBzdHJ1Y3QgbmV0X2Rldmlj
ZSAqaW5pdF9ldGhlcmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc2l6ZW9mX3ByaXYp
OwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX2V0aGVyZGV2KGludCBzaXplb2ZfcHJp
dik7CgpzdGF0aWMgaW5saW5lIHZvaWQgZXRoX2NvcHlfYW5kX3N1bSAoc3RydWN0IHNrX2J1ZmYg
KmRlc3QsIHVuc2lnbmVkIGNoYXIgKnNyYywgaW50IGxlbiwgaW50IGJhc2UpCnsKICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AobGVuKSA/IF9fY29uc3RhbnRfbWVtY3B5KChkZXN0LT5kYXRh
KSwoc3JjKSwobGVuKSkgOiBfX21lbWNweSgoZGVzdC0+ZGF0YSksKHNyYyksKGxlbikpKTsKfQoj
IDU5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9ldGhlcmRldmlj
ZS5oIgpzdGF0aWMgaW5saW5lIGludCBpc192YWxpZF9ldGhlcl9hZGRyKCB1OCAqYWRkciApCnsK
ICAgICAgICBjb25zdCBjaGFyIHphZGRyWzZdID0gezAsfTsKCiAgICAgICAgcmV0dXJuICEoYWRk
clswXSYxKSAmJiBfX2J1aWx0aW5fbWVtY21wKCBhZGRyLCB6YWRkciwgNik7Cn0KIyAxNTMgIjgx
Mzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4
L3J0bmV0bGluay5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1
ZGUvbGludXgvbmV0bGluay5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L25ldGxpbmsuaCIKc3RydWN0IHNvY2thZGRyX25sCnsKICAgICAgICBzYV9m
YW1pbHlfdCBubF9mYW1pbHk7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbmxfcGFkOwogICAgICAg
IF9fdTMyIG5sX3BpZDsKICAgICAgICBfX3UzMiBubF9ncm91cHM7Cn07CgpzdHJ1Y3Qgbmxtc2do
ZHIKewogICAgICAgIF9fdTMyIG5sbXNnX2xlbjsKICAgICAgICBfX3UxNiBubG1zZ190eXBlOwog
ICAgICAgIF9fdTE2IG5sbXNnX2ZsYWdzOwogICAgICAgIF9fdTMyIG5sbXNnX3NlcTsKICAgICAg
ICBfX3UzMiBubG1zZ19waWQ7Cn07CiMgNzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L25ldGxpbmsuaCIKc3RydWN0IG5sbXNnZXJyCnsKICAgICAgICBpbnQgZXJy
b3I7CiAgICAgICAgc3RydWN0IG5sbXNnaGRyIG1zZzsKfTsKCgoKCgpzdHJ1Y3QgbmV0bGlua19z
a2JfcGFybXMKewogICAgICAgIHN0cnVjdCB1Y3JlZCBjcmVkczsKICAgICAgICBfX3UzMiBwaWQ7
CiAgICAgICAgX191MzIgZ3JvdXBzOwogICAgICAgIF9fdTMyIGRzdF9waWQ7CiAgICAgICAgX191
MzIgZHN0X2dyb3VwczsKICAgICAgICBrZXJuZWxfY2FwX3QgZWZmX2NhcDsKfTsKCgoKCgpleHRl
cm4gaW50IG5ldGxpbmtfYXR0YWNoKGludCB1bml0LCBpbnQgKCpmdW5jdGlvbikoaW50LHN0cnVj
dCBza19idWZmICpza2IpKTsKZXh0ZXJuIHZvaWQgbmV0bGlua19kZXRhY2goaW50IHVuaXQpOwpl
eHRlcm4gaW50IG5ldGxpbmtfcG9zdChpbnQgdW5pdCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4
dGVybiBpbnQgaW5pdF9uZXRsaW5rKHZvaWQpOwpleHRlcm4gc3RydWN0IHNvY2sgKm5ldGxpbmtf
a2VybmVsX2NyZWF0ZShpbnQgdW5pdCwgdm9pZCAoKmlucHV0KShzdHJ1Y3Qgc29jayAqc2ssIGlu
dCBsZW4pKTsKZXh0ZXJuIHZvaWQgbmV0bGlua19hY2soc3RydWN0IHNrX2J1ZmYgKmluX3NrYiwg
c3RydWN0IG5sbXNnaGRyICpubGgsIGludCBlcnIpOwpleHRlcm4gaW50IG5ldGxpbmtfdW5pY2Fz
dChzdHJ1Y3Qgc29jayAqc3NrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX3UzMiBwaWQsIGludCBu
b25ibG9jayk7CmV4dGVybiB2b2lkIG5ldGxpbmtfYnJvYWRjYXN0KHN0cnVjdCBzb2NrICpzc2ss
IHN0cnVjdCBza19idWZmICpza2IsIF9fdTMyIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgZ3JvdXAsIGludCBhbGxvY2F0aW9uKTsKZXh0ZXJuIHZvaWQgbmV0bGlua19z
ZXRfZXJyKHN0cnVjdCBzb2NrICpzc2ssIF9fdTMyIHBpZCwgX191MzIgZ3JvdXAsIGludCBjb2Rl
KTsKIyAxMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGxp
bmsuaCIKc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sKewogICAgICAgIHN0cnVjdCBza19idWZmICpz
a2I7CiAgICAgICAgc3RydWN0IG5sbXNnaGRyICpubGg7CiAgICAgICAgaW50ICgqZHVtcCkoc3Ry
dWN0IHNrX2J1ZmYgKiBza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7CiAgICAgICAg
aW50ICgqZG9uZSkoc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTsKICAgICAgICBpbnQgZmFt
aWx5OwogICAgICAgIGxvbmcgYXJnc1s0XTsKfTsKCnN0YXRpYyBfX2lubGluZV9fIHN0cnVjdCBu
bG1zZ2hkciAqCl9fbmxtc2dfcHV0KHN0cnVjdCBza19idWZmICpza2IsIHUzMiBwaWQsIHUzMiBz
ZXEsIGludCB0eXBlLCBpbnQgbGVuKQp7CiAgICAgICAgc3RydWN0IG5sbXNnaGRyICpubGg7CiAg
ICAgICAgaW50IHNpemUgPSAoKGxlbikrKCAoKHNpemVvZihzdHJ1Y3Qgbmxtc2doZHIpKSs0IC0x
KSAmIH4oNCAtMSkgKSk7CgogICAgICAgIG5saCA9IChzdHJ1Y3Qgbmxtc2doZHIqKXNrYl9wdXQo
c2tiLCAoICgoc2l6ZSkrNCAtMSkgJiB+KDQgLTEpICkpOwogICAgICAgIG5saC0+bmxtc2dfdHlw
ZSA9IHR5cGU7CiAgICAgICAgbmxoLT5ubG1zZ19sZW4gPSBzaXplOwogICAgICAgIG5saC0+bmxt
c2dfZmxhZ3MgPSAwOwogICAgICAgIG5saC0+bmxtc2dfcGlkID0gcGlkOwogICAgICAgIG5saC0+
bmxtc2dfc2VxID0gc2VxOwogICAgICAgIHJldHVybiBubGg7Cn0KCgoKCgpleHRlcm4gaW50IG5l
dGxpbmtfZHVtcF9zdGFydChzdHJ1Y3Qgc29jayAqc3NrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqZHVtcCkoc3RydWN0IHNrX2J1ZmYgKnNrYiwg
c3RydWN0IG5ldGxpbmtfY2FsbGJhY2sqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ICgqZG9uZSkoc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sqKSk7CiMgNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiIDIKIyA1NyAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBy
dGF0dHIKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHJ0YV9sZW47CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgcnRhX3R5cGU7Cn07CiMgODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgcnRtc2cKewogICAgICAgIHVuc2lnbmVkIGNo
YXIgcnRtX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJ0bV9kc3RfbGVuOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgcnRtX3NyY19sZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fdG9z
OwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHJ0bV90YWJsZTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IHJ0bV9wcm90b2NvbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJ0bV9zY29wZTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIHJ0bV90eXBlOwoKICAgICAgICB1bnNpZ25lZCBydG1fZmxhZ3M7Cn07CgoK
CmVudW0KewogICAgICAgIFJUTl9VTlNQRUMsCiAgICAgICAgUlROX1VOSUNBU1QsCiAgICAgICAg
UlROX0xPQ0FMLAogICAgICAgIFJUTl9CUk9BRENBU1QsCgogICAgICAgIFJUTl9BTllDQVNULAoK
ICAgICAgICBSVE5fTVVMVElDQVNULAogICAgICAgIFJUTl9CTEFDS0hPTEUsCiAgICAgICAgUlRO
X1VOUkVBQ0hBQkxFLAogICAgICAgIFJUTl9QUk9ISUJJVCwKICAgICAgICBSVE5fVEhST1csCiAg
ICAgICAgUlROX05BVCwKICAgICAgICBSVE5fWFJFU09MVkUsCn07CiMgMTU1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKZW51bSBydF9zY29w
ZV90CnsKICAgICAgICBSVF9TQ09QRV9VTklWRVJTRT0wLAoKICAgICAgICBSVF9TQ09QRV9TSVRF
PTIwMCwKICAgICAgICBSVF9TQ09QRV9MSU5LPTI1MywKICAgICAgICBSVF9TQ09QRV9IT1NUPTI1
NCwKICAgICAgICBSVF9TQ09QRV9OT1dIRVJFPTI1NQp9OwojIDE3MyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCmVudW0gcnRfY2xhc3NfdAp7
CiAgICAgICAgUlRfVEFCTEVfVU5TUEVDPTAsCgogICAgICAgIFJUX1RBQkxFX0RFRkFVTFQ9MjUz
LAogICAgICAgIFJUX1RBQkxFX01BSU49MjU0LAogICAgICAgIFJUX1RBQkxFX0xPQ0FMPTI1NQp9
OwoKCgoKCgplbnVtIHJ0YXR0cl90eXBlX3QKewogICAgICAgIFJUQV9VTlNQRUMsCiAgICAgICAg
UlRBX0RTVCwKICAgICAgICBSVEFfU1JDLAogICAgICAgIFJUQV9JSUYsCiAgICAgICAgUlRBX09J
RiwKICAgICAgICBSVEFfR0FURVdBWSwKICAgICAgICBSVEFfUFJJT1JJVFksCiAgICAgICAgUlRB
X1BSRUZTUkMsCiAgICAgICAgUlRBX01FVFJJQ1MsCiAgICAgICAgUlRBX01VTFRJUEFUSCwKICAg
ICAgICBSVEFfUFJPVE9JTkZPLAogICAgICAgIFJUQV9GTE9XLAogICAgICAgIFJUQV9DQUNIRUlO
Rk8KfTsKIyAyMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3J0
bmV0bGluay5oIgpzdHJ1Y3QgcnRuZXh0aG9wCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBydG5o
X2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJ0bmhfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBydG5oX2hvcHM7CiAgICAgICAgaW50IHJ0bmhfaWZpbmRleDsKfTsKIyAyNDUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3Qg
cnRhX2NhY2hlaW5mbwp7CiAgICAgICAgX191MzIgcnRhX2NsbnRyZWY7CiAgICAgICAgX191MzIg
cnRhX2xhc3R1c2U7CiAgICAgICAgX19zMzIgcnRhX2V4cGlyZXM7CiAgICAgICAgX191MzIgcnRh
X2Vycm9yOwogICAgICAgIF9fdTMyIHJ0YV91c2VkOwoKCiAgICAgICAgX191MzIgcnRhX2lkOwog
ICAgICAgIF9fdTMyIHJ0YV90czsKICAgICAgICBfX3UzMiBydGFfdHNhZ2U7Cn07CgoKCmVudW0K
ewogICAgICAgIFJUQVhfVU5TUEVDLAoKICAgICAgICBSVEFYX0xPQ0ssCgogICAgICAgIFJUQVhf
TVRVLAoKICAgICAgICBSVEFYX1dJTkRPVywKCiAgICAgICAgUlRBWF9SVFQsCgogICAgICAgIFJU
QVhfUlRUVkFSLAoKICAgICAgICBSVEFYX1NTVEhSRVNILAoKICAgICAgICBSVEFYX0NXTkQsCgog
ICAgICAgIFJUQVhfQURWTVNTLAoKICAgICAgICBSVEFYX1JFT1JERVJJTkcsCgp9OwojIDI5MyAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0
cnVjdCBpZmFkZHJtc2cKewogICAgICAgIHVuc2lnbmVkIGNoYXIgaWZhX2ZhbWlseTsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGlmYV9wcmVmaXhsZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBpZmFf
ZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBpZmFfc2NvcGU7CiAgICAgICAgaW50IGlmYV9p
bmRleDsKfTsKCmVudW0KewogICAgICAgIElGQV9VTlNQRUMsCiAgICAgICAgSUZBX0FERFJFU1Ms
CiAgICAgICAgSUZBX0xPQ0FMLAogICAgICAgIElGQV9MQUJFTCwKICAgICAgICBJRkFfQlJPQURD
QVNULAogICAgICAgIElGQV9BTllDQVNULAogICAgICAgIElGQV9DQUNIRUlORk8KfTsKIyAzMjMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpz
dHJ1Y3QgaWZhX2NhY2hlaW5mbwp7CiAgICAgICAgX19zMzIgaWZhX3ByZWZlcmVkOwogICAgICAg
IF9fczMyIGlmYV92YWxpZDsKfTsKIyAzNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgbmRtc2cKewogICAgICAgIHVuc2lnbmVk
IGNoYXIgbmRtX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG5kbV9wYWQxOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IG5kbV9wYWQyOwogICAgICAgIGludCBuZG1faWZpbmRleDsKICAgICAg
ICBfX3UxNiBuZG1fc3RhdGU7CiAgICAgICAgX191OCBuZG1fZmxhZ3M7CiAgICAgICAgX191OCBu
ZG1fdHlwZTsKfTsKCmVudW0KewogICAgICAgIE5EQV9VTlNQRUMsCiAgICAgICAgTkRBX0RTVCwK
ICAgICAgICBOREFfTExBRERSLAogICAgICAgIE5EQV9DQUNIRUlORk8KfTsKIyAzOTMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3Qg
bmRhX2NhY2hlaW5mbwp7CiAgICAgICAgX191MzIgbmRtX2NvbmZpcm1lZDsKICAgICAgICBfX3Uz
MiBuZG1fdXNlZDsKICAgICAgICBfX3UzMiBuZG1fdXBkYXRlZDsKICAgICAgICBfX3UzMiBuZG1f
cmVmY250Owp9OwoKCgoKCnN0cnVjdCBydGdlbm1zZwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBy
dGdlbl9mYW1pbHk7Cn07CiMgNDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IGlmaW5mb21zZwp7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBpZmlfZmFtaWx5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19pZmlfcGFkOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGlmaV90eXBlOwogICAgICAgIGludCBpZmlfaW5kZXg7CiAgICAgICAg
dW5zaWduZWQgaWZpX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGlmaV9jaGFuZ2U7Cn07CgplbnVt
CnsKICAgICAgICBJRkxBX1VOU1BFQywKICAgICAgICBJRkxBX0FERFJFU1MsCiAgICAgICAgSUZM
QV9CUk9BRENBU1QsCiAgICAgICAgSUZMQV9JRk5BTUUsCiAgICAgICAgSUZMQV9NVFUsCiAgICAg
ICAgSUZMQV9MSU5LLAogICAgICAgIElGTEFfUURJU0MsCiAgICAgICAgSUZMQV9TVEFUUywKICAg
ICAgICBJRkxBX0NPU1QsCgogICAgICAgIElGTEFfUFJJT1JJVFksCgogICAgICAgIElGTEFfTUFT
VEVSCgp9OwojIDQ4NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgv
cnRuZXRsaW5rLmgiCnN0cnVjdCB0Y21zZwp7CiAgICAgICAgdW5zaWduZWQgY2hhciB0Y21fZmFt
aWx5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgdGNtX19wYWQxOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHRjbV9fcGFkMjsKICAgICAgICBpbnQgdGNtX2lmaW5kZXg7CiAgICAgICAgX191MzIgdGNt
X2hhbmRsZTsKICAgICAgICBfX3UzMiB0Y21fcGFyZW50OwogICAgICAgIF9fdTMyIHRjbV9pbmZv
Owp9OwoKZW51bQp7CiAgICAgICAgVENBX1VOU1BFQywKICAgICAgICBUQ0FfS0lORCwKICAgICAg
ICBUQ0FfT1BUSU9OUywKICAgICAgICBUQ0FfU1RBVFMsCiAgICAgICAgVENBX1hTVEFUUywKICAg
ICAgICBUQ0FfUkFURSwKfTsKIyA1MzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L3J0bmV0bGluay5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9p
bmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNTQwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGlu
dXgvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIgMgoKc3RhdGljIF9faW5saW5lX18gaW50IHJ0
YXR0cl9zdHJjbXAoc3RydWN0IHJ0YXR0ciAqcnRhLCBjaGFyICpzdHIpCnsKICAgICAgICBpbnQg
bGVuID0gc3RybGVuKHN0cikgKyAxOwogICAgICAgIHJldHVybiBsZW4gPiBydGEtPnJ0YV9sZW4g
fHwgX19idWlsdGluX21lbWNtcCgoKHZvaWQqKSgoKGNoYXIqKShydGEpKSArICgoICgoc2l6ZW9m
KHN0cnVjdCBydGF0dHIpKSs0IC0xKSAmIH4oNCAtMSkgKSArICgwKSkpKSwgc3RyLCBsZW4pOwp9
CgpleHRlcm4gaW50IHJ0YXR0cl9wYXJzZShzdHJ1Y3QgcnRhdHRyICp0YltdLCBpbnQgbWF4YXR0
ciwgc3RydWN0IHJ0YXR0ciAqcnRhLCBpbnQgbGVuKTsKIyA1NzcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpleHRlcm4gc3RydWN0IHNlbWFw
aG9yZSBydG5sX3NlbTsKIyA1OTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRl
L2xpbnV4L3J0bmV0bGluay5oIgpleHRlcm4gdm9pZCBydG5sX2xvY2sodm9pZCk7CmV4dGVybiB2
b2lkIHJ0bmxfdW5sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBydG5ldGxpbmtfaW5pdCh2b2lkKTsK
IyAxNTQgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNs
dWRlL2xpbnV4L2RlbGF5LmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZGVsYXkuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9vcHNfcGVyX2ppZmZ5
OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vZGVsYXkuaCIg
MQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vZGVsYXkuaCIK
ZXh0ZXJuIHZvaWQgX19iYWRfdWRlbGF5KHZvaWQpOwoKZXh0ZXJuIHZvaWQgX191ZGVsYXkodW5z
aWduZWQgbG9uZyB1c2Vjcyk7CmV4dGVybiB2b2lkIF9fY29uc3RfdWRlbGF5KHVuc2lnbmVkIGxv
bmcgdXNlY3MpOwpleHRlcm4gdm9pZCBfX2RlbGF5KHVuc2lnbmVkIGxvbmcgbG9vcHMpOwojIDEz
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9kZWxheS5oIiAyCiMg
MTU1ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVk
ZS9saW51eC9ldGh0b29sLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZXRodG9vbC5oIgpzdHJ1Y3QgZXRodG9vbF9jbWQgewogICAgICAgIHUzMiBj
bWQ7CiAgICAgICAgdTMyIHN1cHBvcnRlZDsKICAgICAgICB1MzIgYWR2ZXJ0aXNpbmc7CiAgICAg
ICAgdTE2IHNwZWVkOwogICAgICAgIHU4IGR1cGxleDsKICAgICAgICB1OCBwb3J0OwogICAgICAg
IHU4IHBoeV9hZGRyZXNzOwogICAgICAgIHU4IHRyYW5zY2VpdmVyOwogICAgICAgIHU4IGF1dG9u
ZWc7CiAgICAgICAgdTMyIG1heHR4cGt0OwogICAgICAgIHUzMiBtYXhyeHBrdDsKICAgICAgICB1
MzIgcmVzZXJ2ZWRbNF07Cn07CgoKc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyB7CiAgICAgICAgdTMy
IGNtZDsKICAgICAgICBjaGFyIGRyaXZlclszMl07CiAgICAgICAgY2hhciB2ZXJzaW9uWzMyXTsK
ICAgICAgICBjaGFyIGZ3X3ZlcnNpb25bMzJdOwogICAgICAgIGNoYXIgYnVzX2luZm9bMzJdOwoK
ICAgICAgICBjaGFyIHJlc2VydmVkMVszMl07CiAgICAgICAgY2hhciByZXNlcnZlZDJbMjhdOwog
ICAgICAgIHUzMiByZWdkdW1wX2xlbjsKfTsKCgoKc3RydWN0IGV0aHRvb2xfd29saW5mbyB7CiAg
ICAgICAgdTMyIGNtZDsKICAgICAgICB1MzIgc3VwcG9ydGVkOwogICAgICAgIHUzMiB3b2xvcHRz
OwogICAgICAgIHU4IHNvcGFzc1s2XTsKfTsKIyAxNTYgIjgxMzl0b28uYyIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21paS5oIiAxCiMgMTEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21paS5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMiAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvbGludXgvbWlpLmgiIDIKIyAxMDUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21paS5oIgpzdHJ1Y3QgbWlpX2lv
Y3RsX2RhdGEgewogICAgICAgIHUxNiBwaHlfaWQ7CiAgICAgICAgdTE2IHJlZ19udW07CiAgICAg
ICAgdTE2IHZhbF9pbjsKICAgICAgICB1MTYgdmFsX291dDsKfTsKIyAxMjcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2xpbnV4L21paS5oIgpzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGludCBtaWlfbndheV9yZXN1bHQgKHVuc2lnbmVkIGludCBuZWdvdGlhdGVkKQp7CiAgICAg
ICAgdW5zaWduZWQgaW50IHJldDsKCiAgICAgICAgaWYgKG5lZ290aWF0ZWQgJiAweDAxMDApCiAg
ICAgICAgICAgICAgICByZXQgPSAweDAxMDA7CiAgICAgICAgZWxzZSBpZiAobmVnb3RpYXRlZCAm
IDB4MDIwMCkKICAgICAgICAgICAgICAgIHJldCA9IDB4MDIwMDsKICAgICAgICBlbHNlIGlmIChu
ZWdvdGlhdGVkICYgMHgwMDgwKQogICAgICAgICAgICAgICAgcmV0ID0gMHgwMDgwOwogICAgICAg
IGVsc2UgaWYgKG5lZ290aWF0ZWQgJiAweDAwNDApCiAgICAgICAgICAgICAgICByZXQgPSAweDAw
NDA7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gMHgwMDIwOwoKICAgICAgICBy
ZXR1cm4gcmV0Owp9CiMgMTU0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9s
aW51eC9taWkuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbWlpX2R1cGxleCAodW5zaWdu
ZWQgaW50IGR1cGxleF9sb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgbmVnb3RpYXRlZCkKewogICAgICAgIGlmIChkdXBsZXhfbG9jaykKICAg
ICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIGlmIChtaWlfbndheV9yZXN1bHQobmVnb3Rp
YXRlZCkgJiAoMHgwMDQwIHwgMHgwMTAwKSkKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAg
ICAgIHJldHVybiAwOwp9CiMgMTU3ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvbGludXgvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxNTggIjgxMzl0b28u
YyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS9pby5oIiAx
CiMgMTU5ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9hc20vdWFjY2Vzcy5oIiAxCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xp
bnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
bGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvbGludXgvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAzNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGludCBfX3Zlcmlm
eV93cml0ZShjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDYyICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIGludCB2
ZXJpZnlfYXJlYShpbnQgdHlwZSwgY29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6
ZSkKewogICAgICAgIHJldHVybiAoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRs
ICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFn
KSwgIj1yIiAoc3VtKSA6IjEiIChhZGRyKSwiZyIgKChpbnQpKHNpemUpKSwiZyIgKGdldF9jdXJy
ZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApID8gMCA6IC0xNDsKfQojIDgx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdHJ1
Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5CnsKICAgICAgICB1bnNpZ25lZCBsb25nIGluc24sIGZp
eHVwOwp9OwoKCmV4dGVybiB1bnNpZ25lZCBsb25nIHNlYXJjaF9leGNlcHRpb25fdGFibGUodW5z
aWduZWQgbG9uZyk7CiMgMTA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9h
c20vdWFjY2Vzcy5oIgpleHRlcm4gdm9pZCBfX2dldF91c2VyXzEodm9pZCk7CmV4dGVybiB2b2lk
IF9fZ2V0X3VzZXJfMih2b2lkKTsKZXh0ZXJuIHZvaWQgX19nZXRfdXNlcl80KHZvaWQpOwojIDEy
NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0
ZXJuIHZvaWQgX19wdXRfdXNlcl8xKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzIodm9p
ZCk7CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfNCh2b2lkKTsKZXh0ZXJuIHZvaWQgX19wdXRfdXNl
cl84KHZvaWQpOwoKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl9iYWQodm9pZCk7CiMgMTg4ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdHJ1Y3QgX19s
YXJnZV9zdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIGJ1ZlsxMDBdOyB9OwojIDIyMCAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGxvbmcgX19n
ZXRfdXNlcl9iYWQodm9pZCk7CiMgMzA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvbGludXgvaW5j
bHVkZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19nZW5lcmlj
X2NvcHlfZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2ln
bmVkIGxvbmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192b2xh
dGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92c2Jc
biIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0KSwl
MFxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglyZXA7IHN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglqbXAgMmJc
biIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0
XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9JmMi
KG4pLCAiPSZEIiAoX19kMCksICI9JlMiIChfX2QxKSA6ICJyIihuICYgMyksICIwIihuIC8gNCks
ICIxIih0byksICIyIihmcm9tKSA6ICJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0
dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2dlbmVyaWNfY29weV90b191
c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikK
ewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJ
cmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92c2JcbiIgIjI6XG4iICIu
c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0KSwlMFxuIiAiCWptcCAy
YlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWdu
IDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDJiXG4iICIucHJldmlvdXMiIDogIj0m
YyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIgKF9fZDEpIDogInIiKG4gJiAzKSwgIjAiKG4gLyA0
KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICBy
ZXR1cm4gbjsKfQojIDU0MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2xpbnV4L2luY2x1ZGUvYXNt
L3VhY2Nlc3MuaCIKdW5zaWduZWQgbG9uZyBfX2dlbmVyaWNfY29weV90b191c2VyKHZvaWQgKiwg
Y29uc3Qgdm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgbG9uZyBfX2dlbmVyaWNfY29w
eV9mcm9tX3VzZXIodm9pZCAqLCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwoKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV90b191c2VyKHZvaWQgKnRvLCBj
b25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBwcmVmZXRjaChmcm9t
KTsKICAgICAgICBpZiAoKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxzdW07IGFzbSgiYWRkbCAlMywl
MSA7IHNiYmwgJTAsJTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAiIDoiPSZyIiAoZmxhZyksICI9
ciIgKHN1bSkgOiIxIiAodG8pLCJnIiAoKGludCkobikpLCJnIiAoZ2V0X2N1cnJlbnQoKS0+YWRk
cl9saW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkpCiAgICAgICAgICAgICAgICBkbyB7IGludCBf
X2QwLCBfX2QxOyBzd2l0Y2ggKG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9f
KCAiMDoJcmVwOyBtb3ZzbFxuIiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6
CXNobCAkMiwlMFxuIiAiCWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3Rh
YmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6
ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8p
LCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxl
X18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1
cCxcImF4XCJcbiIgIjM6CXNobCAkMiwlMFxuIiAiNDoJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAi
LnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIg
IgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwg
Ij0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQp
IDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJl
cDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxu
IiAiMzoJc2hsICQyLCUwXG4iICI0OglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlv
dXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25n
IDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAo
X19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVt
b3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3Zz
bFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwi
YXhcIlxuIiAiNDoJc2hsICQyLCUwXG4iICI1OglhZGRsICQyLCUwXG4iICI2OglpbmNsICUwXG4i
ICIJam1wIDNiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIg
IgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAy
Yiw2YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEp
IDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3
aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u
ZwpfX2NvbnN0YW50X2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1
bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBpZiAoKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxzdW07
IGFzbSgiYWRkbCAlMywlMSA7IHNiYmwgJTAsJTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAiIDoi
PSZyIiAoZmxhZyksICI9ciIgKHN1bSkgOiIxIiAoZnJvbSksImciICgoaW50KShuKSksImciIChn
ZXRfY3VycmVudCgpLT5hZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkKICAgICAgICAg
ICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVsdDogX19h
c21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rpb24gLmZp
eHVwLFwiYXhcIlxuIiAiMjoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVl
YXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIg
IglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90
YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIgIi5wcmV2aW91cyIg
OiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRv
KSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNtX18gX192b2xhdGls
ZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4
dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVh
eCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglw
b3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiNDoJcHVz
aGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4
XG4iICIJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4
X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFi
LDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkg
OiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAy
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIy
OlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAl
JWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIg
Iglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFkZGwgJDIsJTBc
biIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAi
CXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIgIi5w
cmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJ
LmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9
JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6
ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7
IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIuc2VjdGlvbiAuZml4
dXAsXCJheFwiXG4iICI0OglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVh
eCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXN0b3NiXG4iICIJcG9wbCAl
JWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRsICQzLCUwXG4iICIJam1w
IDJiXG4iICI1OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zd1xu
IiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIg
IjY6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3NiXG4iICIJcG9w
bCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rp
b24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgku
bG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0m
UyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDog
Im1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKG4p
KSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgodG8pKSwoKDB4MDEwMTAxMDFVTCoo
dW5zaWduZWQgY2hhcikoMCkpKSwoKG4pKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgodG8pKSwo
KDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKG4pKSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wKChuKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHRvKSkpLCgoKDApKSksKCgobikp
KSkgOiBfX21lbXNldF9nZW5lcmljKCgodG8pKSwoKDApKSwoKG4pKSkpKTsKICAgICAgICByZXR1
cm4gbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV90b191
c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikK
ewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVsdDog
X19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rpb24g
LmZpeHVwLFwiYXhcIlxuIiAiMjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNc
biIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBi
LDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkg
OiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAx
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIy
OlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0OglpbmNs
ICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJh
XCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5w
cmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9t
KSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18g
X192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2Vj
dGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIsJTBcbiIg
IglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAi
CS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3Vz
IiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIo
dG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0
aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4i
ICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFkZGwgJDIs
JTBcbiIgIjY6CWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24g
X19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgkubG9u
ZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIg
KF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1l
bW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXJfbm9jaGVjayh2
b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8g
eyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwi
XG4iICIyOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxu
IiAiCXJlcDsgc3Rvc2xcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwl
MFxuIiAiCWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwi
XG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiks
ICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80
KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOgly
ZXA7IG1vdnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJc
biIgIjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4i
ICIJcmVwOyBzdG9zbFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIg
IglzaGwgJDIsJTBcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxu
IiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNs
ICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJh
XCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5w
cmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9t
KSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18g
X192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2Vj
dGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJ
eG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVl
YXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAy
YlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIg
Iglwb3BsICUlZWF4XG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4i
ICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwz
YlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDAp
LCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIp
OyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIg
IjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJc
biIgIjQ6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4i
ICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJ
cG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIgIjU6
CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3N3XG4iICIJc3Rvc2Jc
biIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNjoJcHVzaGwg
JSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4i
ICIJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3Rh
YmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDVi
XG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCks
ICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7
IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CiMgNTk5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpsb25nIHN0cm5jcHlf
ZnJvbV91c2VyKGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsKbG9uZyBf
X3N0cm5jcHlfZnJvbV91c2VyKGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50
KTsKCmxvbmcgc3Rybmxlbl91c2VyKGNvbnN0IGNoYXIgKnN0ciwgbG9uZyBuKTsKdW5zaWduZWQg
bG9uZyBjbGVhcl91c2VyKHZvaWQgKm1lbSwgdW5zaWduZWQgbG9uZyBsZW4pOwp1bnNpZ25lZCBs
b25nIF9fY2xlYXJfdXNlcih2b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgbGVuKTsKIyAxNjAgIjgx
Mzl0b28uYyIgMgojIDE5OCAiODEzOXRvby5jIgpzdGF0aWMgaW50IG1lZGlhWzhdID0gey0xLCAt
MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMX07CnN0YXRpYyBpbnQgZnVsbF9kdXBsZXhbOF0gPSB7
LTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xfTsKCgpzdGF0aWMgaW50IG1heF9pbnRlcnJ1
cHRfd29yayA9IDIwOwoKCgpzdGF0aWMgaW50IG11bHRpY2FzdF9maWx0ZXJfbGltaXQgPSAzMjsK
IyAyNDEgIjgxMzl0b28uYyIKZW51bSB7CiAgICAgICAgSEFTX01JSV9YQ1ZSID0gMHgwMTAwMDAs
CiAgICAgICAgSEFTX0NISVBfWENWUiA9IDB4MDIwMDAwLAogICAgICAgIEhBU19MTktfQ0hORyA9
IDB4MDQwMDAwLAp9OwoKCgoKCgoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBSVEw4MTM5ID0gMCwK
ICAgICAgICBSVEw4MTM5X0NCLAogICAgICAgIFNNQzEyMTFUWCwKCiAgICAgICAgREVMVEE4MTM5
LAogICAgICAgIEFERFRST044MTM5LAogICAgICAgIERGRTUzOFRYLAogICAgICAgIERGRTY5MFRY
RCwKICAgICAgICBSVEw4MTI5LAp9IGJvYXJkX3Q7CgoKCnN0YXRpYyBzdHJ1Y3QgewogICAgICAg
IGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdTMyIGh3X2ZsYWdzOwp9IGJvYXJkX2luZm9bXSBf
X2F0dHJpYnV0ZV9fICgoX19zZWN0aW9uX18gKCIuZGF0YS5pbml0IikpKSA9IHsKICAgICAgICB7
ICJSZWFsVGVrIFJUTDgxMzkgRmFzdCBFdGhlcm5ldCIsIEhBU19DSElQX1hDVlJ8SEFTX0xOS19D
SE5HIH0sCiAgICAgICAgeyAiUmVhbFRlayBSVEw4MTM5QiBQQ0kvQ2FyZEJ1cyIsIEhBU19DSElQ
X1hDVlJ8SEFTX0xOS19DSE5HIH0sCiAgICAgICAgeyAiU01DMTIxMVRYIEVaQ2FyZCAxMC8xMDAg
KFJlYWxUZWsgUlRMODEzOSkiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktfQ0hORyB9LAoKICAgICAg
ICB7ICJEZWx0YSBFbGVjdHJvbmljcyA4MTM5IDEwLzEwMEJhc2VUWCIsIEhBU19DSElQX1hDVlJ8
SEFTX0xOS19DSE5HIH0sCiAgICAgICAgeyAiQWRkdHJvbiBUZWNobm9sZ3kgODEzOSAxMC8xMDBC
YXNlVFgiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktfQ0hORyB9LAogICAgICAgIHsgIkQtTGluayBE
RkUtNTM4VFggKFJlYWxUZWsgUlRMODEzOSkiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktfQ0hORyB9
LAogICAgICAgIHsgIkQtTGluayBERkUtNjkwVFhEIChSZWFsVGVrIFJUTDgxMzkpIiwgSEFTX0NI
SVBfWENWUnxIQVNfTE5LX0NITkcgfSwKICAgICAgICB7ICJSZWFsVGVrIFJUTDgxMjkiLCBIQVNf
TUlJX1hDVlIgfSwKfTsKCgpzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODEzOV9wY2lf
dGJsW10gX19hdHRyaWJ1dGVfXyAoKF9fc2VjdGlvbl9fICgiLmRhdGEuaW5pdCIpKSkgPSB7CiAg
ICAgICAgezB4MTBlYywgMHg4MTM5LCAofjApLCAofjApLCAwLCAwLCBSVEw4MTM5IH0sCiAgICAg
ICAgezB4MTBlYywgMHg4MTM4LCAofjApLCAofjApLCAwLCAwLCBSVEw4MTM5X0NCIH0sCiAgICAg
ICAgezB4MTExMywgMHgxMjExLCAofjApLCAofjApLCAwLCAwLCBTTUMxMjExVFggfSwKCiAgICAg
ICAgezB4MTUwMCwgMHgxMzYwLCAofjApLCAofjApLCAwLCAwLCBERUxUQTgxMzkgfSwKICAgICAg
ICB7MHg0MDMzLCAweDEzNjAsICh+MCksICh+MCksIDAsIDAsIEFERFRST044MTM5IH0sCiAgICAg
ICAgezB4MTE4NiwgMHgxMzAwLCAofjApLCAofjApLCAwLCAwLCBERkU1MzhUWCB9LAogICAgICAg
IHsweDExODYsIDB4MTM0MCwgKH4wKSwgKH4wKSwgMCwgMCwgREZFNjkwVFhEIH0sCiMgMzAxICI4
MTM5dG9vLmMiCiAgICAgICAgeyh+MCksIDB4ODEzOSwgMHgxMGVjLCAweDgxMzksIDAsIDAsIFJU
TDgxMzkgfSwKICAgICAgICB7KH4wKSwgMHg4MTM5LCAweDExODYsIDB4MTMwMCwgMCwgMCwgREZF
NTM4VFggfSwKCiAgICAgICAgezAsfQp9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CgoKCgoKZW51bSBSVEw4MTM5X3JlZ2lzdGVycyB7CiAgICAgICAgTUFDMCA9
IDAsCiAgICAgICAgTUFSMCA9IDgsCiAgICAgICAgVHhTdGF0dXMwID0gMHgxMCwKICAgICAgICBU
eEFkZHIwID0gMHgyMCwKICAgICAgICBSeEJ1ZiA9IDB4MzAsCiAgICAgICAgUnhFYXJseUNudCA9
IDB4MzQsCiAgICAgICAgUnhFYXJseVN0YXR1cyA9IDB4MzYsCiAgICAgICAgQ2hpcENtZCA9IDB4
MzcsCiAgICAgICAgUnhCdWZQdHIgPSAweDM4LAogICAgICAgIFJ4QnVmQWRkciA9IDB4M0EsCiAg
ICAgICAgSW50ck1hc2sgPSAweDNDLAogICAgICAgIEludHJTdGF0dXMgPSAweDNFLAogICAgICAg
IFR4Q29uZmlnID0gMHg0MCwKICAgICAgICBDaGlwVmVyc2lvbiA9IDB4NDMsCiAgICAgICAgUnhD
b25maWcgPSAweDQ0LAogICAgICAgIFRpbWVyID0gMHg0OCwKICAgICAgICBSeE1pc3NlZCA9IDB4
NEMsCiAgICAgICAgQ2ZnOTM0NiA9IDB4NTAsCiAgICAgICAgQ29uZmlnMCA9IDB4NTEsCiAgICAg
ICAgQ29uZmlnMSA9IDB4NTIsCiAgICAgICAgRmxhc2hSZWcgPSAweDU0LAogICAgICAgIE1lZGlh
U3RhdHVzID0gMHg1OCwKICAgICAgICBDb25maWczID0gMHg1OSwKICAgICAgICBDb25maWc0ID0g
MHg1QSwKICAgICAgICBIbHRDbGsgPSAweDVCLAogICAgICAgIE11bHRpSW50ciA9IDB4NUMsCiAg
ICAgICAgVHhTdW1tYXJ5ID0gMHg2MCwKICAgICAgICBCYXNpY01vZGVDdHJsID0gMHg2MiwKICAg
ICAgICBCYXNpY01vZGVTdGF0dXMgPSAweDY0LAogICAgICAgIE5XYXlBZHZlcnQgPSAweDY2LAog
ICAgICAgIE5XYXlMUEFSID0gMHg2OCwKICAgICAgICBOV2F5RXhwYW5zaW9uID0gMHg2QSwKCiAg
ICAgICAgRklGT1RNUyA9IDB4NzAsCiAgICAgICAgQ1NDUiA9IDB4NzQsCiAgICAgICAgUEFSQTc4
ID0gMHg3OCwKICAgICAgICBQQVJBN2MgPSAweDdjLAogICAgICAgIENvbmZpZzUgPSAweEQ4LAp9
OwoKZW51bSBDbGVhckJpdE1hc2tzIHsKICAgICAgICBNdWx0aUludHJDbGVhciA9IDB4RjAwMCwK
ICAgICAgICBDaGlwQ21kQ2xlYXIgPSAweEUyLAogICAgICAgIENvbmZpZzFDbGVhciA9ICgxPDw3
KXwoMTw8Nil8KDE8PDMpfCgxPDwyKXwoMTw8MSksCn07CgplbnVtIENoaXBDbWRCaXRzIHsKICAg
ICAgICBDbWRSZXNldCA9IDB4MTAsCiAgICAgICAgQ21kUnhFbmIgPSAweDA4LAogICAgICAgIENt
ZFR4RW5iID0gMHgwNCwKICAgICAgICBSeEJ1ZkVtcHR5ID0gMHgwMSwKfTsKCgplbnVtIEludHJT
dGF0dXNCaXRzIHsKICAgICAgICBQQ0lFcnIgPSAweDgwMDAsCiAgICAgICAgUENTVGltZW91dCA9
IDB4NDAwMCwKICAgICAgICBSeEZJRk9PdmVyID0gMHg0MCwKICAgICAgICBSeFVuZGVycnVuID0g
MHgyMCwKICAgICAgICBSeE92ZXJmbG93ID0gMHgxMCwKICAgICAgICBUeEVyciA9IDB4MDgsCiAg
ICAgICAgVHhPSyA9IDB4MDQsCiAgICAgICAgUnhFcnIgPSAweDAyLAogICAgICAgIFJ4T0sgPSAw
eDAxLAoKICAgICAgICBSeEFja0JpdHMgPSBSeEZJRk9PdmVyIHwgUnhPdmVyZmxvdyB8IFJ4T0ss
Cn07CgplbnVtIFR4U3RhdHVzQml0cyB7CiAgICAgICAgVHhIb3N0T3ducyA9IDB4MjAwMCwKICAg
ICAgICBUeFVuZGVycnVuID0gMHg0MDAwLAogICAgICAgIFR4U3RhdE9LID0gMHg4MDAwLAogICAg
ICAgIFR4T3V0T2ZXaW5kb3cgPSAweDIwMDAwMDAwLAogICAgICAgIFR4QWJvcnRlZCA9IDB4NDAw
MDAwMDAsCiAgICAgICAgVHhDYXJyaWVyTG9zdCA9IDB4ODAwMDAwMDAsCn07CmVudW0gUnhTdGF0
dXNCaXRzIHsKICAgICAgICBSeE11bHRpY2FzdCA9IDB4ODAwMCwKICAgICAgICBSeFBoeXNpY2Fs
ID0gMHg0MDAwLAogICAgICAgIFJ4QnJvYWRjYXN0ID0gMHgyMDAwLAogICAgICAgIFJ4QmFkU3lt
Ym9sID0gMHgwMDIwLAogICAgICAgIFJ4UnVudCA9IDB4MDAxMCwKICAgICAgICBSeFRvb0xvbmcg
PSAweDAwMDgsCiAgICAgICAgUnhDUkNFcnIgPSAweDAwMDQsCiAgICAgICAgUnhCYWRBbGlnbiA9
IDB4MDAwMiwKICAgICAgICBSeFN0YXR1c09LID0gMHgwMDAxLAp9OwoKCmVudW0gcnhfbW9kZV9i
aXRzIHsKICAgICAgICBBY2NlcHRFcnIgPSAweDIwLAogICAgICAgIEFjY2VwdFJ1bnQgPSAweDEw
LAogICAgICAgIEFjY2VwdEJyb2FkY2FzdCA9IDB4MDgsCiAgICAgICAgQWNjZXB0TXVsdGljYXN0
ID0gMHgwNCwKICAgICAgICBBY2NlcHRNeVBoeXMgPSAweDAyLAogICAgICAgIEFjY2VwdEFsbFBo
eXMgPSAweDAxLAp9OwoKCmVudW0gdHhfY29uZmlnX2JpdHMgewogICAgICAgIFR4SUZHMSA9ICgx
IDw8IDI1KSwKICAgICAgICBUeElGRzAgPSAoMSA8PCAyNCksCiAgICAgICAgVHhMb29wQmFjayA9
ICgxIDw8IDE4KSB8ICgxIDw8IDE3KSwKICAgICAgICBUeENSQyA9ICgxIDw8IDE2KSwKICAgICAg
ICBUeENsZWFyQWJ0ID0gKDEgPDwgMCksCiAgICAgICAgVHhETUFTaGlmdCA9IDgsCgogICAgICAg
IFR4VmVyc2lvbk1hc2sgPSAweDdDODAwMDAwLAp9OwoKCmVudW0gQ29uZmlnMUJpdHMgewogICAg
ICAgIENmZzFfUE1fRW5hYmxlID0gMHgwMSwKICAgICAgICBDZmcxX1ZQRF9FbmFibGUgPSAweDAy
LAogICAgICAgIENmZzFfUElPID0gMHgwNCwKICAgICAgICBDZmcxX01NSU8gPSAweDA4LAogICAg
ICAgIExXQUtFID0gMHgxMCwKICAgICAgICBDZmcxX0RyaXZlcl9Mb2FkID0gMHgyMCwKICAgICAg
ICBDZmcxX0xFRDAgPSAweDQwLAogICAgICAgIENmZzFfTEVEMSA9IDB4ODAsCiAgICAgICAgU0xF
RVAgPSAoMSA8PCAxKSwKICAgICAgICBQV1JETiA9ICgxIDw8IDApLAp9OwoKCmVudW0gQ29uZmln
M0JpdHMgewogICAgICAgIENmZzNfRkJ0QkVuID0gKDEgPDwgMCksCiAgICAgICAgQ2ZnM19GdW5j
UmVnRW4gPSAoMSA8PCAxKSwKICAgICAgICBDZmczX0NMS1JVTl9FbiA9ICgxIDw8IDIpLAogICAg
ICAgIENmZzNfQ2FyZEJfRW4gPSAoMSA8PCAzKSwKICAgICAgICBDZmczX0xpbmtVcCA9ICgxIDw8
IDQpLAogICAgICAgIENmZzNfTWFnaWMgPSAoMSA8PCA1KSwKICAgICAgICBDZmczX1BBUk1fRW4g
PSAoMSA8PCA2KSwKICAgICAgICBDZmczX0dOVFNlbCA9ICgxIDw8IDcpLAp9OwoKCmVudW0gQ29u
ZmlnNEJpdHMgewogICAgICAgIExXUFROID0gKDEgPDwgMiksCn07CgoKZW51bSBDb25maWc1Qml0
cyB7CiAgICAgICAgQ2ZnNV9QTUVfU1RTID0gKDEgPDwgMCksCiAgICAgICAgQ2ZnNV9MQU5XYWtl
ID0gKDEgPDwgMSksCiAgICAgICAgQ2ZnNV9MRFBTID0gKDEgPDwgMiksCiAgICAgICAgQ2ZnNV9G
SUZPQWRkclB0ciA9ICgxIDw8IDMpLAogICAgICAgIENmZzVfVVdGID0gKDEgPDwgNCksCiAgICAg
ICAgQ2ZnNV9NV0YgPSAoMSA8PCA1KSwKICAgICAgICBDZmc1X0JXRiA9ICgxIDw8IDYpLAp9OwoK
ZW51bSBSeENvbmZpZ0JpdHMgewoKICAgICAgICBSeENmZ0Vhcmx5UnhOb25lID0gMCwKICAgICAg
ICBSeENmZ0Vhcmx5UnhTaGlmdCA9IDI0LAoKCiAgICAgICAgUnhDZmdGSUZPU2hpZnQgPSAxMywK
ICAgICAgICBSeENmZ0ZJRk9Ob25lID0gKDcgPDwgUnhDZmdGSUZPU2hpZnQpLAoKCiAgICAgICAg
UnhDZmdETUFTaGlmdCA9IDgsCiAgICAgICAgUnhDZmdETUFVbmxpbWl0ZWQgPSAoNyA8PCBSeENm
Z0RNQVNoaWZ0KSwKCgogICAgICAgIFJ4Q2ZnUmN2OEsgPSAwLAogICAgICAgIFJ4Q2ZnUmN2MTZL
ID0gKDEgPDwgMTEpLAogICAgICAgIFJ4Q2ZnUmN2MzJLID0gKDEgPDwgMTIpLAogICAgICAgIFJ4
Q2ZnUmN2NjRLID0gKDEgPDwgMTEpIHwgKDEgPDwgMTIpLAoKCiAgICAgICAgUnhOb1dyYXAgPSAo
MSA8PCA3KSwKfTsKCgoKCmVudW0gQ1NDUkJpdHMgewogICAgICAgIENTQ1JfTGlua09LQml0ID0g
MHgwNDAwLAogICAgICAgIENTQ1JfTGlua0NoYW5nZUJpdCA9IDB4MDgwMCwKICAgICAgICBDU0NS
X0xpbmtTdGF0dXNCaXRzID0gMHgwZjAwMCwKICAgICAgICBDU0NSX0xpbmtEb3duT2ZmQ21kID0g
MHgwMDNjMCwKICAgICAgICBDU0NSX0xpbmtEb3duQ21kID0gMHgwZjNjMCwKfTsKCgplbnVtIENm
ZzkzNDZCaXRzIHsKICAgICAgICBDZmc5MzQ2X0xvY2sgPSAweDAwLAogICAgICAgIENmZzkzNDZf
VW5sb2NrID0gMHhDMCwKfTsKCgoKCgpzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBwYXJhbVs0
XVs0XSA9IHsKICAgICAgICB7MHhjYjM5ZGU0MywgMHhjYjM5Y2U0MywgMHhmYjM4ZGUwMywgMHhj
YjM4ZGU0M30sCiAgICAgICAgezB4Y2IzOWRlNDMsIDB4Y2IzOWNlNDMsIDB4Y2IzOWNlODMsIDB4
Y2IzOWNlODN9LAogICAgICAgIHsweGNiMzlkZTQzLCAweGNiMzljZTQzLCAweGNiMzljZTgzLCAw
eGNiMzljZTgzfSwKICAgICAgICB7MHhiYjM5ZGU0MywgMHhiYjM5Y2U0MywgMHhiYjM5Y2U4Mywg
MHhiYjM5Y2U4M30KfTsKCnN0cnVjdCByaW5nX2luZm8gewogICAgICAgIHN0cnVjdCBza19idWZm
ICpza2I7CiAgICAgICAgZG1hX2FkZHJfdCBtYXBwaW5nOwp9OwoKCnR5cGVkZWYgZW51bSB7CiAg
ICAgICAgQ0hfODEzOSA9IDAsCiAgICAgICAgQ0hfODEzOV9LLAogICAgICAgIENIXzgxMzlBLAog
ICAgICAgIENIXzgxMzlCLAogICAgICAgIENIXzgxMzAsCiAgICAgICAgQ0hfODEzOUMsCn0gY2hp
cF90OwoKZW51bSBjaGlwX2ZsYWdzIHsKICAgICAgICBIYXNIbHRDbGsgPSAoMSA8PCAwKSwKICAg
ICAgICBIYXNMV2FrZSA9ICgxIDw8IDEpLAp9OwoKCgpjb25zdCBzdGF0aWMgc3RydWN0IHsKICAg
ICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHU4IHZlcnNpb247CiAgICAgICAgdTMyIFJ4
Q29uZmlnTWFzazsKICAgICAgICB1MzIgZmxhZ3M7Cn0gcnRsX2NoaXBfaW5mb1tdID0gewogICAg
ICAgIHsgIlJUTC04MTM5IiwKICAgICAgICAgIDB4NDAsCiAgICAgICAgICAweGYwZmUwMDQwLAog
ICAgICAgICAgSGFzSGx0Q2xrLAogICAgICAgIH0sCgogICAgICAgIHsgIlJUTC04MTM5IHJldiBL
IiwKICAgICAgICAgIDB4NjAsCiAgICAgICAgICAweGYwZmUwMDQwLAogICAgICAgICAgSGFzSGx0
Q2xrLAogICAgICAgIH0sCgogICAgICAgIHsgIlJUTC04MTM5QSIsCiAgICAgICAgICAweDcwLAog
ICAgICAgICAgMHhmMGZlMDA0MCwKICAgICAgICAgIEhhc0hsdENsaywKICAgICAgICB9LAoKICAg
ICAgICB7ICJSVEwtODEzOUIiLAogICAgICAgICAgMHg3OCwKICAgICAgICAgIDB4ZjBmYzAwNDAs
CiAgICAgICAgICBIYXNMV2FrZSwKICAgICAgICB9LAoKICAgICAgICB7ICJSVEwtODEzMCIsCiAg
ICAgICAgICAweDdDLAogICAgICAgICAgMHhmMGZlMDA0MCwKICAgICAgICAgIEhhc0xXYWtlLAog
ICAgICAgIH0sCgogICAgICAgIHsgIlJUTC04MTM5QyIsCiAgICAgICAgICAweDc0LAogICAgICAg
ICAgMHhmMGZjMDA0MCwKICAgICAgICAgIEhhc0xXYWtlLAogICAgICAgIH0sCgp9OwoKc3RydWN0
IHJ0bF9leHRyYV9zdGF0cyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXJseV9yeDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHR4X2J1Zl9tYXBwZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF90
aW1lb3V0czsKfTsKCnN0cnVjdCBydGw4MTM5X3ByaXZhdGUgewogICAgICAgIHZvaWQgKm1taW9f
YWRkcjsKICAgICAgICBpbnQgZHJ2X2ZsYWdzOwogICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwY2lf
ZGV2OwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIHN0YXRzOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgKnJ4X3Jpbmc7CiAgICAgICAgdW5zaWduZWQgaW50IGN1cl9yeDsKICAgICAgICB1
bnNpZ25lZCBpbnQgdHhfZmxhZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGN1cl90eDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGRpcnR5X3R4OwoKICAgICAgICBzdHJ1Y3QgcmluZ19pbmZvIHR4X2lu
Zm9bNF07CiAgICAgICAgdW5zaWduZWQgY2hhciAqdHhfYnVmWzRdOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgKnR4X2J1ZnM7CiAgICAgICAgZG1hX2FkZHJfdCByeF9yaW5nX2RtYTsKICAgICAgICBk
bWFfYWRkcl90IHR4X2J1ZnNfZG1hOwogICAgICAgIHNpZ25lZCBjaGFyIHBoeXNbNF07CiAgICAg
ICAgY2hhciB0d2lzdGllLCB0d2lzdF9yb3csIHR3aXN0X2NvbDsKICAgICAgICB1bnNpZ25lZCBp
bnQgZnVsbF9kdXBsZXg6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZHVwbGV4X2xvY2s6MTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgZGVmYXVsdF9wb3J0OjQ7CiAgICAgICAgdW5zaWduZWQgaW50IG1l
ZGlhMjo0OwogICAgICAgIHVuc2lnbmVkIGludCBtZWRpYWxvY2s6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbWVkaWFzZW5zZToxOwogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBjaGlw
X3QgY2hpcHNldDsKICAgICAgICBwaWRfdCB0aHJfcGlkOwogICAgICAgIHdhaXRfcXVldWVfaGVh
ZF90IHRocl93YWl0OwogICAgICAgIHN0cnVjdCBjb21wbGV0aW9uIHRocl9leGl0ZWQ7CiAgICAg
ICAgdTMyIHJ4X2NvbmZpZzsKICAgICAgICBzdHJ1Y3QgcnRsX2V4dHJhX3N0YXRzIHhzdGF0czsK
fTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwoKc3RhdGljIGludCByZWFkX2VlcHJvbSAodm9pZCAqaW9hZGRyLCBp
bnQgbG9jYXRpb24sIGludCBhZGRyX2xlbik7CnN0YXRpYyBpbnQgcnRsODEzOV9vcGVuIChzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2KTsKc3RhdGljIGludCBtZGlvX3JlYWQgKHN0cnVjdCBuZXRfZGV2
aWNlICpkZXYsIGludCBwaHlfaWQsIGludCBsb2NhdGlvbik7CnN0YXRpYyB2b2lkIG1kaW9fd3Jp
dGUgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBwaHlfaWQsIGludCBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CnN0YXRpYyBpbnQgcnRsODEzOV90aHJlYWQg
KHZvaWQgKmRhdGEpOwpzdGF0aWMgdm9pZCBydGw4MTM5X3R4X3RpbWVvdXQgKHN0cnVjdCBuZXRf
ZGV2aWNlICpkZXYpOwpzdGF0aWMgdm9pZCBydGw4MTM5X2luaXRfcmluZyAoc3RydWN0IG5ldF9k
ZXZpY2UgKmRldik7CnN0YXRpYyBpbnQgcnRsODEzOV9zdGFydF94bWl0IChzdHJ1Y3Qgc2tfYnVm
ZiAqc2tiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2Ug
KmRldik7CnN0YXRpYyB2b2lkIHJ0bDgxMzlfaW50ZXJydXB0IChpbnQgaXJxLCB2b2lkICpkZXZf
aW5zdGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHRfcmVncyAq
cmVncyk7CnN0YXRpYyBpbnQgcnRsODEzOV9jbG9zZSAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7
CnN0YXRpYyBpbnQgbmV0ZGV2X2lvY3RsIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qg
aWZyZXEgKnJxLCBpbnQgY21kKTsKc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICpydGw4
MTM5X2dldF9zdGF0cyAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CnN0YXRpYyBpbmxpbmUgdTMy
IGV0aGVyX2NyYyAoaW50IGxlbmd0aCwgdW5zaWduZWQgY2hhciAqZGF0YSk7CnN0YXRpYyB2b2lk
IHJ0bDgxMzlfc2V0X3J4X21vZGUgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpzdGF0aWMgdm9p
ZCBfX3NldF9yeF9tb2RlIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKc3RhdGljIHZvaWQgcnRs
ODEzOV9od19zdGFydCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiMgNzEyICI4MTM5dG9vLmMi
CnN0YXRpYyBjb25zdCB1MTYgcnRsODEzOV9pbnRyX21hc2sgPQogICAgICAgIFBDSUVyciB8IFBD
U1RpbWVvdXQgfCBSeFVuZGVycnVuIHwgUnhPdmVyZmxvdyB8IFJ4RklGT092ZXIgfAogICAgICAg
IFR4RXJyIHwgVHhPSyB8IFJ4RXJyIHwgUnhPSzsKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQg
cnRsODEzOV9yeF9jb25maWcgPQogICAgICAgICAgKDE0IDw8IFJ4Q2ZnRWFybHlSeFNoaWZ0KSB8
IFJ4Q2ZnUmN2MzJLIHwgUnhOb1dyYXAgfAogICAgICAgICAgKDcgPDwgUnhDZmdGSUZPU2hpZnQp
IHwKICAgICAgICAgICg3IDw8IFJ4Q2ZnRE1BU2hpZnQpOwoKCnN0YXRpYyB2b2lkIF9fcnRsODEz
OV9jbGVhbnVwX2RldiAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBy
dGw4MTM5X3ByaXZhdGUgKnRwOwogICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2OwoKICAgICAg
ICBpZighKGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEg
JXMsJXMsJXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9O
X18sNzI3KTsgfTsKICAgICAgICBpZighKGRldi0+cHJpdiAhPSAoKHZvaWQgKikwKSkpIHsgcHJp
bnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldi0+cHJpdiAh
PSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sNzI4KTsgfTsKCiAgICAgICAgdHAgPSBk
ZXYtPnByaXY7CiAgICAgICAgaWYoISh0cC0+cGNpX2RldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJp
bnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgInRwLT5wY2lfZGV2
ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXyw3MzEpOyB9OwogICAgICAgIHBkZXYg
PSB0cC0+cGNpX2RldjsKCgogICAgICAgIGlmICh0cC0+bW1pb19hZGRyKQogICAgICAgICAgICAg
ICAgaW91bm1hcCAodHAtPm1taW9fYWRkcik7CgoKCiAgICAgICAgcGNpX3JlbGVhc2VfcmVnaW9u
cyAocGRldik7CgoKCiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDB4QkMpID8gKF9fYnVp
bHRpbl9jb25zdGFudF9wKChzaXplb2YgKHN0cnVjdCBuZXRfZGV2aWNlKSArIHNpemVvZiAoc3Ry
dWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgo
ZGV2KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDB4QkMpKSksKChzaXplb2YgKHN0
cnVjdCBuZXRfZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSkgOiBf
X2NvbnN0YW50X2NfbWVtc2V0KCgoZGV2KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIp
KDB4QkMpKSksKChzaXplb2YgKHN0cnVjdCBuZXRfZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0
bDgxMzlfcHJpdmF0ZSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YgKHN0cnVj
dCBuZXRfZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSA/IF9fbWVt
c2V0X2dlbmVyaWMoKCgoZGV2KSkpLCgoKDB4QkMpKSksKCgoc2l6ZW9mIChzdHJ1Y3QgbmV0X2Rl
dmljZSkgKyBzaXplb2YgKHN0cnVjdCBydGw4MTM5X3ByaXZhdGUpKSkpKSA6IF9fbWVtc2V0X2dl
bmVyaWMoKChkZXYpKSwoKDB4QkMpKSwoKHNpemVvZiAoc3RydWN0IG5ldF9kZXZpY2UpICsgc2l6
ZW9mIChzdHJ1Y3QgcnRsODEzOV9wcml2YXRlKSkpKSkpOwoKCgoKICAgICAgICBrZnJlZSAoZGV2
KTsKCiAgICAgICAgcGNpX3NldF9kcnZkYXRhIChwZGV2LCAoKHZvaWQgKikwKSk7Cn0KCgpzdGF0
aWMgdm9pZCBydGw4MTM5X2NoaXBfcmVzZXQgKHZvaWQgKmlvYWRkcikKewogICAgICAgIGludCBp
OwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKENoaXBDbWQpKSkgPSAoKENtZFJlc2V0KSkpOwoKCiAgICAgICAgZm9yIChpID0gMTAwMDsg
aSA+IDA7IGktLSkgewogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog
OiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIGlmICgoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hh
ciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpICYgQ21kUmVzZXQpID09IDApCiAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9j
b25zdGFudF9wKDEwKSA/ICgoMTApID4gMjAwMDAgPyBfX2JhZF91ZGVsYXkoKSA6IF9fY29uc3Rf
dWRlbGF5KCgxMCkgKiAweDEwYzZ1bCkpIDogX191ZGVsYXkoMTApKTsKICAgICAgICB9Cn0KCgpz
dGF0aWMgaW50IF9fYXR0cmlidXRlX18gKChfX3NlY3Rpb25fXyAoIi50ZXh0LmluaXQiKSkpIHJ0
bDgxMzlfaW5pdF9ib2FyZCAoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKipkZXZfb3V0KQp7CiAg
ICAgICAgdm9pZCAqaW9hZGRyOwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAgICAg
ICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHA7CiAgICAgICAgdTggdG1wODsKICAgICAgICBp
bnQgcmM7CiAgICAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgICAgdTMyIHBpb19zdGFydCwgcGlv
X2VuZCwgcGlvX2ZsYWdzLCBwaW9fbGVuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW1pb19zdGFy
dCwgbW1pb19lbmQsIG1taW9fZmxhZ3MsIG1taW9fbGVuOwogICAgICAgIHUzMiB0bXA7CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgIGlmKCEocGRldiAhPSAoKHZvaWQgKikw
KSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgInBk
ZXYgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDc4Nyk7IH07CgogICAgICAgICpk
ZXZfb3V0ID0gKCh2b2lkICopMCk7CgoKICAgICAgICBkZXYgPSBhbGxvY19ldGhlcmRldiAoc2l6
ZW9mICgqdHApKTsKICAgICAgICBpZiAoZGV2ID09ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAg
ICAgICBwcmludGsgKCI8Mz4iICI4MTM5dG9vIiAiOiAiICIlczogVW5hYmxlIHRvIGFsbG9jIG5l
dyBuZXQgZGV2aWNlXG4iLCBwZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHJldHVybiAt
MTI7CiAgICAgICAgfQogICAgICAgIGRvIHsgKGRldiktPm93bmVyID0gKCh2b2lkICopMCk7IH0g
d2hpbGUgKDApOwogICAgICAgIHRwID0gZGV2LT5wcml2OwogICAgICAgIHRwLT5wY2lfZGV2ID0g
cGRldjsKCgogICAgICAgIHJjID0gcGNpX2VuYWJsZV9kZXZpY2UgKHBkZXYpOwogICAgICAgIGlm
IChyYykKICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKCiAgICAgICAgcGlvX3N0YXJ0ID0g
KChwZGV2KS0+cmVzb3VyY2VbKDApXS5zdGFydCk7CiAgICAgICAgcGlvX2VuZCA9ICgocGRldikt
PnJlc291cmNlWygwKV0uZW5kKTsKICAgICAgICBwaW9fZmxhZ3MgPSAoKHBkZXYpLT5yZXNvdXJj
ZVsoMCldLmZsYWdzKTsKICAgICAgICBwaW9fbGVuID0gKCgoKChwZGV2KSktPnJlc291cmNlWygo
MCkpXS5zdGFydCkgPT0gMCAmJiAoKChwZGV2KSktPnJlc291cmNlWygoMCkpXS5lbmQpID09ICgo
KHBkZXYpKS0+cmVzb3VyY2VbKCgwKSldLnN0YXJ0KSkgPyAwIDogKCgoKHBkZXYpKS0+cmVzb3Vy
Y2VbKCgwKSldLmVuZCkgLSAoKChwZGV2KSktPnJlc291cmNlWygoMCkpXS5zdGFydCkgKyAxKSk7
CgogICAgICAgIG1taW9fc3RhcnQgPSAoKHBkZXYpLT5yZXNvdXJjZVsoMSldLnN0YXJ0KTsKICAg
ICAgICBtbWlvX2VuZCA9ICgocGRldiktPnJlc291cmNlWygxKV0uZW5kKTsKICAgICAgICBtbWlv
X2ZsYWdzID0gKChwZGV2KS0+cmVzb3VyY2VbKDEpXS5mbGFncyk7CiAgICAgICAgbW1pb19sZW4g
PSAoKCgoKHBkZXYpKS0+cmVzb3VyY2VbKCgxKSldLnN0YXJ0KSA9PSAwICYmICgoKHBkZXYpKS0+
cmVzb3VyY2VbKCgxKSldLmVuZCkgPT0gKCgocGRldikpLT5yZXNvdXJjZVsoKDEpKV0uc3RhcnQp
KSA/IDAgOiAoKCgocGRldikpLT5yZXNvdXJjZVsoKDEpKV0uZW5kKSAtICgoKHBkZXYpKS0+cmVz
b3VyY2VbKCgxKSldLnN0YXJ0KSArIDEpKTsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIyA4MzcgIjgxMzl0b28uYyIKICAgICAg
ICBpZiAoIShtbWlvX2ZsYWdzICYgMHgwMDAwMDIwMCkpIHsKICAgICAgICAgICAgICAgIHByaW50
ayAoIjwzPiIgIjgxMzl0b28iICI6ICIgIiVzOiByZWdpb24gIzEgbm90IGFuIE1NSU8gcmVzb3Vy
Y2UsIGFib3J0aW5nXG4iLCBwZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAgcmMgPSAt
MTk7CiAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQogICAgICAgIGlmICht
bWlvX2xlbiA8IDB4ODApIHsKICAgICAgICAgICAgICAgIHByaW50ayAoIjwzPiIgIjgxMzl0b28i
ICI6ICIgIiVzOiBJbnZhbGlkIFBDSSBtZW0gcmVnaW9uIHNpemUocyksIGFib3J0aW5nXG4iLCBw
ZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAgcmMgPSAtMTk7CiAgICAgICAgICAgICAg
ICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQoKCiAgICAgICAgcmMgPSBwY2lfcmVxdWVzdF9yZWdp
b25zIChwZGV2LCAiODEzOXRvbyIpOwogICAgICAgIGlmIChyYykKICAgICAgICAgICAgICAgIGdv
dG8gZXJyX291dDsKCgogICAgICAgIHBjaV9zZXRfbWFzdGVyIChwZGV2KTsKCgoKCgoKCiAgICAg
ICAgaW9hZGRyID0gaW9yZW1hcCAobW1pb19zdGFydCwgbW1pb19sZW4pOwogICAgICAgIGlmIChp
b2FkZHIgPT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAgICAgIHByaW50ayAoIjwzPiIgIjgx
Mzl0b28iICI6ICIgIiVzOiBjYW5ub3QgcmVtYXAgTU1JTywgYWJvcnRpbmdcbiIsIHBkZXYtPnNs
b3RfbmFtZSk7CiAgICAgICAgICAgICAgICByYyA9IC01OwogICAgICAgICAgICAgICAgZ290byBl
cnJfb3V0OwogICAgICAgIH0KICAgICAgICBkZXYtPmJhc2VfYWRkciA9IChsb25nKSBpb2FkZHI7
CiAgICAgICAgdHAtPm1taW9fYWRkciA9IGlvYWRkcjsKCgoKICAgICAgICAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoSGx0Q2xrKSkpID0gKCgnUicpKSk7
CgoKICAgICAgICBpZiAoKCh1bnNpZ25lZCBsb25nKSAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQg
KikgKCh2b2lkICopKGlvYWRkciArIChUeENvbmZpZykpKSkpID09IDB4RkZGRkZGRkYpIHsKICAg
ICAgICAgICAgICAgIHByaW50ayAoIjwzPiIgIjgxMzl0b28iICI6ICIgIiVzOiBDaGlwIG5vdCBy
ZXNwb25kaW5nLCBpZ25vcmluZyBib2FyZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgcGRl
di0+c2xvdF9uYW1lKTsKICAgICAgICAgICAgICAgIHJjID0gLTU7CiAgICAgICAgICAgICAgICBn
b3RvIGVycl9vdXQ7CiAgICAgICAgfQoKCiAgICAgICAgdG1wID0gKCoodm9sYXRpbGUgdW5zaWdu
ZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBWZXJzaW9uKSkpKTsKICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgKHNpemVvZihydGxfY2hpcF9pbmZvKSAvIHNpemVvZigocnRsX2NoaXBf
aW5mbylbMF0pKTsgaSsrKQogICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBydGxfY2hpcF9pbmZv
W2ldLnZlcnNpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPmNoaXBzZXQgPSBpOwog
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG1hdGNoOwogICAgICAgICAgICAgICAgfQoKCiAg
ICAgICAgcHJpbnRrICgiPDc+IiAiODEzOXRvbyIgIjogIiAiJXM6IHVua25vd24gY2hpcCB2ZXJz
aW9uLCBhc3N1bWluZyBSVEwtODEzOVxuIiwKICAgICAgICAgICAgICAgIHBkZXYtPnNsb3RfbmFt
ZSk7CiAgICAgICAgcHJpbnRrICgiPDc+IiAiODEzOXRvbyIgIjogIiAiJXM6IFR4Q29uZmlnID0g
MHglbHhcbiIsIHBkZXYtPnNsb3RfbmFtZSwgKCh1bnNpZ25lZCBsb25nKSAoKih2b2xhdGlsZSB1
bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeENvbmZpZykpKSkpKTsKICAgICAg
ICB0cC0+Y2hpcHNldCA9IDA7CgptYXRjaDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwoKCgoKICAgICAgICBpZiAodHAtPmNoaXBzZXQgPj0gQ0hfODEz
OUIpIHsKICAgICAgICAgICAgICAgIHU4IG5ld190bXA4ID0gdG1wOCA9ICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcxKSkpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgaWYgKChy
dGxfY2hpcF9pbmZvW3RwLT5jaGlwc2V0XS5mbGFncyAmIEhhc0xXYWtlKSAmJgogICAgICAgICAg
ICAgICAgICAgICh0bXA4ICYgTFdBS0UpKQogICAgICAgICAgICAgICAgICAgICAgICBuZXdfdG1w
OCAmPSB+TFdBS0U7CiAgICAgICAgICAgICAgICBuZXdfdG1wOCB8PSBDZmcxX1BNX0VuYWJsZTsK
ICAgICAgICAgICAgICAgIGlmIChuZXdfdG1wOCAhPSB0bXA4KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChD
Zmc5MzQ2KSkpID0gKChDZmc5MzQ2X1VubG9jaykpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
KCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzEp
KSkgPSAoKHRtcDgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2ln
bmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2X0xv
Y2spKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocnRsX2NoaXBfaW5m
b1t0cC0+Y2hpcHNldF0uZmxhZ3MgJiBIYXNMV2FrZSkgewogICAgICAgICAgICAgICAgICAgICAg
ICB0bXA4ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsg
KENvbmZpZzQpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wOCAmIExXUFROKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIg
KikgKCh2b2lkICopKGlvYWRkciArIChDb25maWc0KSkpID0gKCh0bXA4ICYgfkxXUFROKSkpOwog
ICAgICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgdG1wOCA9ICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcxKSkpKTsKICAgICAg
ICAgICAgICAgIHRtcDggJj0gfihTTEVFUCB8IFBXUkROKTsKICAgICAgICAgICAgICAgICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcxKSkpID0g
KCh0bXA4KSkpOwogICAgICAgIH0KCiAgICAgICAgcnRsODEzOV9jaGlwX3Jlc2V0IChpb2FkZHIp
OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICpkZXZf
b3V0ID0gZGV2OwogICAgICAgIHJldHVybiAwOwoKZXJyX291dDoKICAgICAgICBfX3J0bDgxMzlf
Y2xlYW51cF9kZXYgKGRldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwogICAgICAgIHJldHVybiByYzsKfQoKCnN0YXRpYyBpbnQgX19hdHRyaWJ1dGVfXyAo
KF9fc2VjdGlvbl9fICgiLnRleHQuaW5pdCIpKSkgcnRsODEzOV9pbml0X29uZSAoc3RydWN0IHBj
aV9kZXYgKnBkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCnsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2ID0gKCh2b2lkICopMCk7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHA7CiAg
ICAgICAgaW50IGksIGFkZHJfbGVuLCBvcHRpb247CiAgICAgICAgdm9pZCAqaW9hZGRyOwogICAg
ICAgIHN0YXRpYyBpbnQgYm9hcmRfaWR4ID0gLTE7CiAgICAgICAgdTggcGNpX3JldjsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgaWYoIShwZGV2ICE9ICgodm9pZCAqKTAp
KSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAicGRl
diAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTUyKTsgfTsKICAgICAgICBpZigh
KGVudCAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMs
JXMsbGluZT0lZFxuIiwgImVudCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTUz
KTsgfTsKCiAgICAgICAgYm9hcmRfaWR4Kys7CgoKCgoKICAgICAgICB7CiAgICAgICAgICAgICAg
ICBzdGF0aWMgaW50IHByaW50ZWRfdmVyc2lvbjsKICAgICAgICAgICAgICAgIGlmICghcHJpbnRl
ZF92ZXJzaW9uKyspCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ayAoIjw2PiIgIjgxMzl0
b28iICIgRmFzdCBFdGhlcm5ldCBkcml2ZXIgIiAiMC45LjIwIiAiXG4iKTsKICAgICAgICB9CgoK
ICAgICAgICBwY2lfcmVhZF9jb25maWdfYnl0ZShwZGV2LCAweDA4LCAmcGNpX3Jldik7CgogICAg
ICAgIGlmIChwZGV2LT52ZW5kb3IgPT0gMHgxMGVjICYmCiAgICAgICAgICAgIHBkZXYtPmRldmlj
ZSA9PSAweDgxMzkgJiYgcGNpX3JldiA+PSAweDIwKSB7CiAgICAgICAgICAgICAgICBwcmludGso
Ijw2PiIgIjgxMzl0b28iICI6ICIgInBjaSBkZXYgJXMgKGlkICUwNHg6JTA0eCByZXYgJTAyeCkg
aXMgYW4gZW5oYW5jZWQgODEzOUMrIGNoaXBcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgcGRl
di0+c2xvdF9uYW1lLCBwZGV2LT52ZW5kb3IsIHBkZXYtPmRldmljZSwgcGNpX3Jldik7CiAgICAg
ICAgICAgICAgICBwcmludGsoIjw2PiIgIjgxMzl0b28iICI6ICIgIlVzZSB0aGUgXCI4MTM5Y3Bc
IiBkcml2ZXIgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuXG4iKTsKICAg
ICAgICB9CgogICAgICAgIGkgPSBydGw4MTM5X2luaXRfYm9hcmQgKHBkZXYsICZkZXYpOwogICAg
ICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICB9CgogICAgICAg
IHRwID0gZGV2LT5wcml2OwogICAgICAgIGlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CgogICAgICAg
IGlmKCEoaW9hZGRyICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVk
ISAlcywlcywlcyxsaW5lPSVkXG4iLCAiaW9hZGRyICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVO
Q1RJT05fXyw5ODYpOyB9OwogICAgICAgIGlmKCEoZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmlu
dGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiZGV2ICE9IE5VTEwi
LCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXyw5ODcpOyB9OwogICAgICAgIGlmKCEodHAgIT0gKCh2
b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRc
biIsICJ0cCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTg4KTsgfTsKCiAgICAg
ICAgYWRkcl9sZW4gPSByZWFkX2VlcHJvbSAoaW9hZGRyLCAwLCA4KSA9PSAweDgxMjkgPyA4IDog
NjsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQogICAgICAgICAgICAgICAgKCh1MTYg
KikgKGRldi0+ZGV2X2FkZHIpKVtpXSA9CiAgICAgICAgICAgICAgICAgICAgKChfX3UxNikocmVh
ZF9lZXByb20gKGlvYWRkciwgaSArIDcsIGFkZHJfbGVuKSkpOwoKCiAgICAgICAgZGV2LT5vcGVu
ID0gcnRsODEzOV9vcGVuOwogICAgICAgIGRldi0+aGFyZF9zdGFydF94bWl0ID0gcnRsODEzOV9z
dGFydF94bWl0OwogICAgICAgIGRldi0+c3RvcCA9IHJ0bDgxMzlfY2xvc2U7CiAgICAgICAgZGV2
LT5nZXRfc3RhdHMgPSBydGw4MTM5X2dldF9zdGF0czsKICAgICAgICBkZXYtPnNldF9tdWx0aWNh
c3RfbGlzdCA9IHJ0bDgxMzlfc2V0X3J4X21vZGU7CiAgICAgICAgZGV2LT5kb19pb2N0bCA9IG5l
dGRldl9pb2N0bDsKICAgICAgICBkZXYtPnR4X3RpbWVvdXQgPSBydGw4MTM5X3R4X3RpbWVvdXQ7
CiAgICAgICAgZGV2LT53YXRjaGRvZ190aW1lbyA9ICg2KjEwMCk7CiAgICAgICAgZGV2LT5mZWF0
dXJlcyB8PSAxfDg7CgogICAgICAgIGRldi0+aXJxID0gcGRldi0+aXJxOwoKCiAgICAgICAgdHAg
PSBkZXYtPnByaXY7CgoKICAgICAgICB0cC0+ZHJ2X2ZsYWdzID0gYm9hcmRfaW5mb1tlbnQtPmRy
aXZlcl9kYXRhXS5od19mbGFnczsKICAgICAgICB0cC0+bW1pb19hZGRyID0gaW9hZGRyOwogICAg
ICAgIGRvIHsgKigmdHAtPmxvY2spID0gKHNwaW5sb2NrX3QpIHsgMSB9OyB9IHdoaWxlKDApOwog
ICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQgKCZ0cC0+dGhyX3dhaXQpOwogICAgICAgIGluaXRf
Y29tcGxldGlvbiAoJnRwLT50aHJfZXhpdGVkKTsKCgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAg
ICAgICAgaSA9IHJlZ2lzdGVyX25ldGRldiAoZGV2KTsKICAgICAgICBpZiAoaSkgZ290byBlcnJf
b3V0OwoKICAgICAgICBwY2lfc2V0X2RydmRhdGEgKHBkZXYsIGRldik7CgogICAgICAgIHByaW50
ayAoIjw2PiIgIiVzOiAlcyBhdCAweCVseCwgIgogICAgICAgICAgICAgICAgIiUyLjJ4OiUyLjJ4
OiUyLjJ4OiUyLjJ4OiUyLjJ4OiUyLjJ4LCAiCiAgICAgICAgICAgICAgICAiSVJRICVkXG4iLAog
ICAgICAgICAgICAgICAgZGV2LT5uYW1lLAogICAgICAgICAgICAgICAgYm9hcmRfaW5mb1tlbnQt
PmRyaXZlcl9kYXRhXS5uYW1lLAogICAgICAgICAgICAgICAgZGV2LT5iYXNlX2FkZHIsCiAgICAg
ICAgICAgICAgICBkZXYtPmRldl9hZGRyWzBdLCBkZXYtPmRldl9hZGRyWzFdLAogICAgICAgICAg
ICAgICAgZGV2LT5kZXZfYWRkclsyXSwgZGV2LT5kZXZfYWRkclszXSwKICAgICAgICAgICAgICAg
IGRldi0+ZGV2X2FkZHJbNF0sIGRldi0+ZGV2X2FkZHJbNV0sCiAgICAgICAgICAgICAgICBkZXYt
PmlycSk7CgogICAgICAgIHByaW50ayAoIjw3PiIgIiVzOiAgSWRlbnRpZmllZCA4MTM5IGNoaXAg
dHlwZSAnJXMnXG4iLAogICAgICAgICAgICAgICAgZGV2LT5uYW1lLCBydGxfY2hpcF9pbmZvW3Rw
LT5jaGlwc2V0XS5uYW1lKTsKIyAxMDYzICI4MTM5dG9vLmMiCiAgICAgICAgICAgICAgICB0cC0+
cGh5c1swXSA9IDMyOwoKCiAgICAgICAgb3B0aW9uID0gKGJvYXJkX2lkeCA+PSA4KSA/IDAgOiBt
ZWRpYVtib2FyZF9pZHhdOwogICAgICAgIGlmIChvcHRpb24gPiAwKSB7CiAgICAgICAgICAgICAg
ICB0cC0+ZnVsbF9kdXBsZXggPSAob3B0aW9uICYgMHgyMTApID8gMSA6IDA7CiAgICAgICAgICAg
ICAgICB0cC0+ZGVmYXVsdF9wb3J0ID0gb3B0aW9uICYgMHhGRjsKICAgICAgICAgICAgICAgIGlm
ICh0cC0+ZGVmYXVsdF9wb3J0KQogICAgICAgICAgICAgICAgICAgICAgICB0cC0+bWVkaWFsb2Nr
ID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKGJvYXJkX2lkeCA8IDggJiYgZnVsbF9kdXBsZXhb
Ym9hcmRfaWR4XSA+IDApCiAgICAgICAgICAgICAgICB0cC0+ZnVsbF9kdXBsZXggPSBmdWxsX2R1
cGxleFtib2FyZF9pZHhdOwogICAgICAgIGlmICh0cC0+ZnVsbF9kdXBsZXgpIHsKICAgICAgICAg
ICAgICAgIHByaW50aygiPDY+IiAiJXM6IE1lZGlhIHR5cGUgZm9yY2VkIHRvIEZ1bGwgRHVwbGV4
LlxuIiwgZGV2LT5uYW1lKTsKCgogICAgICAgICAgICAgICAgdHAtPmR1cGxleF9sb2NrID0gMTsK
ICAgICAgICB9CiAgICAgICAgaWYgKHRwLT5kZWZhdWx0X3BvcnQpIHsKICAgICAgICAgICAgICAg
IHByaW50aygiPDY+IiAiICBGb3JjaW5nICVkTWJwcyAlcy1kdXBsZXggb3BlcmF0aW9uLlxuIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbiAmIDB4MjAgPyAxMDAgOiAxMCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb24gJiAweDEwID8gImZ1bGwiIDogImhhbGYi
KSk7CiAgICAgICAgICAgICAgICBtZGlvX3dyaXRlKGRldiwgdHAtPnBoeXNbMF0sIDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChvcHRpb24gJiAweDIwKSA/IDB4MjAwMCA6
IDApIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG9wdGlvbiAmIDB4MTAp
ID8gMHgwMTAwIDogMCkpOwogICAgICAgIH0KCgogICAgICAgIGlmIChydGxfY2hpcF9pbmZvW3Rw
LT5jaGlwc2V0XS5mbGFncyAmIEhhc0hsdENsaykKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChIbHRDbGspKSkgPSAoKCdIJykp
KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgcmV0
dXJuIDA7CgplcnJfb3V0OgogICAgICAgIF9fcnRsODEzOV9jbGVhbnVwX2RldiAoZGV2KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgcmV0dXJu
IGk7Cn0KCgpzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkLCBfX3NlY3Rpb25fXygi
LnRleHQuZXhpdCIpKSkgcnRsODEzOV9yZW1vdmVfb25lIChzdHJ1Y3QgcGNpX2RldiAqcGRldikK
ewogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwY2lfZ2V0X2RydmRhdGEgKHBkZXYp
OwogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKm5wOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwoKICAgICAgICBpZighKGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAi
QXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEz
OXRvby5jIixfX0ZVTkNUSU9OX18sMTExMSk7IH07CiAgICAgICAgbnAgPSBkZXYtPnByaXY7CiAg
ICAgICAgaWYoIShucCAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxl
ZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgIm5wICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJ
T05fXywxMTEzKTsgfTsKCiAgICAgICAgdW5yZWdpc3Rlcl9uZXRkZXYgKGRldik7CgogICAgICAg
IF9fcnRsODEzOV9jbGVhbnVwX2RldiAoZGV2KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
Owp9CiMgMTE0NSAiODEzOXRvby5jIgpzdGF0aWMgaW50IF9fYXR0cmlidXRlX18gKChfX3NlY3Rp
b25fXyAoIi50ZXh0LmluaXQiKSkpIHJlYWRfZWVwcm9tICh2b2lkICppb2FkZHIsIGludCBsb2Nh
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
OyBzcGluX2xvY2soJmdldF9jdXJyZW50KCktPnNpZ21hc2tfbG9jayk7IH0gd2hpbGUgKDApOwog
ICAgICAgIHNpZ2VtcHR5c2V0KCZnZXRfY3VycmVudCgpLT5ibG9ja2VkKTsKICAgICAgICByZWNh
bGNfc2lncGVuZGluZyhnZXRfY3VycmVudCgpKTsKICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZn
ZXRfY3VycmVudCgpLT5zaWdtYXNrX2xvY2spOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjog
OiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgc3RybmNweSAoZ2V0X2N1cnJlbnQo
KS0+Y29tbSwgZGV2LT5uYW1lLCBzaXplb2YoZ2V0X2N1cnJlbnQoKS0+Y29tbSkgLSAxKTsKICAg
ICAgICBnZXRfY3VycmVudCgpLT5jb21tW3NpemVvZihnZXRfY3VycmVudCgpLT5jb21tKSAtIDFd
ID0gJ1wwJzsKCiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBu
ZXh0X3RpY2s7CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQgPSBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQgKCZ0cC0+dGhyX3dhaXQsIHRp
bWVvdXQpOwogICAgICAgICAgICAgICAgfSB3aGlsZSAoIXNpZ25hbF9wZW5kaW5nIChnZXRfY3Vy
cmVudCgpKSAmJiAodGltZW91dCA+IDApKTsKCiAgICAgICAgICAgICAgICBpZiAoc2lnbmFsX3Bl
bmRpbmcgKGdldF9jdXJyZW50KCkpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgICAgICAgICBydG5sX2xvY2sgKCk7CiAgICAgICAgICAgICAgICBydGw4MTM5X3RocmVh
ZF9pdGVyIChkZXYsIHRwLCB0cC0+bW1pb19hZGRyKTsKICAgICAgICAgICAgICAgIHJ0bmxfdW5s
b2NrICgpOwogICAgICAgIH0KCiAgICAgICAgY29tcGxldGVfYW5kX2V4aXQgKCZ0cC0+dGhyX2V4
aXRlZCwgMCk7Cn0KCgpzdGF0aWMgdm9pZCBydGw4MTM5X3R4X2NsZWFyIChzdHJ1Y3QgcnRsODEz
OV9wcml2YXRlICp0cCkKewogICAgICAgIGludCBpOwoKICAgICAgICB0cC0+Y3VyX3R4ID0gMDsK
ICAgICAgICB0cC0+ZGlydHlfdHggPSAwOwoKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkr
KykgewogICAgICAgICAgICAgICAgc3RydWN0IHJpbmdfaW5mbyAqcnAgPSAmdHAtPnR4X2luZm9b
aV07CiAgICAgICAgICAgICAgICBpZiAocnAtPm1hcHBpbmcgIT0gMCkgewogICAgICAgICAgICAg
ICAgICAgICAgICBwY2lfdW5tYXBfc2luZ2xlICh0cC0+cGNpX2RldiwgcnAtPm1hcHBpbmcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwLT5za2ItPmxlbiwgMSk7
CiAgICAgICAgICAgICAgICAgICAgICAgIHJwLT5tYXBwaW5nID0gMDsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIGlmIChycC0+c2tiKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGtmcmVlX3NrYihycC0+c2tiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcnAtPnNrYiA9ICgo
dm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMudHhfZHJvcHBlZCsr
OwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfdHhf
dGltZW91dCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBydGw4MTM5
X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIHZvaWQgKmlvYWRkciA9IHRwLT5tbWlv
X2FkZHI7CiAgICAgICAgaW50IGk7CiAgICAgICAgdTggdG1wODsKICAgICAgICB1bnNpZ25lZCBs
b25nIGZsYWdzOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgoK
ICAgICAgICB0cC0+eHN0YXRzLnR4X3RpbWVvdXRzKys7CgoKICAgICAgICB0bXA4ID0gKCoodm9s
YXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpOwog
ICAgICAgIGlmICh0bXA4ICYgQ21kVHhFbmIpCiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoQ21kUnhF
bmIpKSk7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKiko
aW9hZGRyICsgKEludHJNYXNrKSkpID0gKCgweDAwMDApKSk7CgoKICAgICAgICBwcmludGsgKCI8
Nz4iICIlczogVHggcXVldWUgc3RhcnQgZW50cnkgJWxkICBkaXJ0eSBlbnRyeSAlbGQuXG4iLAog
ICAgICAgICAgICAgICAgZGV2LT5uYW1lLCB0cC0+Y3VyX3R4LCB0cC0+ZGlydHlfdHgpOwogICAg
ICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAgICAgICAgICAgICAgICBwcmludGsgKCI8Nz4i
ICIlczogIFR4IGRlc2NyaXB0b3IgJWQgaXMgJTguOGx4LiVzXG4iLAogICAgICAgICAgICAgICAg
ICAgICAgICBkZXYtPm5hbWUsIGksICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUgdW5zaWdu
ZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhTdGF0dXMwICsgKGkgKiA0KSkpKSkpLAog
ICAgICAgICAgICAgICAgICAgICAgICBpID09IHRwLT5kaXJ0eV90eCAlIDQgPwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgKHF1ZXVlIGhlYWQpIiA6ICIiKTsKCgogICAgICAgIGRv
IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZs
YWdzKTogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZ0cC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAg
ICAgIHJ0bDgxMzlfdHhfY2xlYXIgKHRwKTsKICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZ0cC0+
bG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxh
Z3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CgoKICAgICAgICBydGw4MTM5X2h3X3N0
YXJ0IChkZXYpOwoKICAgICAgICBuZXRpZl93YWtlX3F1ZXVlIChkZXYpOwp9CgoKc3RhdGljIGlu
dCBydGw4MTM5X3N0YXJ0X3htaXQgKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2
aWNlICpkZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+cHJp
djsKICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAgIHVuc2lnbmVk
IGludCBlbnRyeTsKICAgICAgICB1MzIgZG1hX2FkZHI7CgogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKCgogICAgICAg
IGVudHJ5ID0gdHAtPmN1cl90eCAlIDQ7CgogICAgICAgIGlmKCEodHAtPnR4X2luZm9bZW50cnld
LnNrYiA9PSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMs
JXMsbGluZT0lZFxuIiwgInRwLT50eF9pbmZvW2VudHJ5XS5za2IgPT0gTlVMTCIsIjgxMzl0b28u
YyIsX19GVU5DVElPTl9fLDE3NjUpOyB9OwogICAgICAgIGlmKCEodHAtPnR4X2luZm9bZW50cnld
Lm1hcHBpbmcgPT0gMCkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGlu
ZT0lZFxuIiwgInRwLT50eF9pbmZvW2VudHJ5XS5tYXBwaW5nID09IDAiLCI4MTM5dG9vLmMiLF9f
RlVOQ1RJT05fXywxNzY2KTsgfTsKCiAgICAgICAgdHAtPnR4X2luZm9bZW50cnldLnNrYiA9IHNr
YjsKICAgICAgICBpZiAoICEoKHVuc2lnbmVkIGxvbmcpc2tiLT5kYXRhICYgMykgJiYgKChzdHJ1
Y3Qgc2tiX3NoYXJlZF9pbmZvICopKChza2IpLT5lbmQpKS0+bnJfZnJhZ3MgPT0gMCAmJgogICAg
ICAgICAgICAgICAgICAgICAgICBza2ItPmlwX3N1bW1lZCAhPSAxKSB7CiAgICAgICAgICAgICAg
ICB0cC0+eHN0YXRzLnR4X2J1Zl9tYXBwZWQrKzsKICAgICAgICAgICAgICAgIHRwLT50eF9pbmZv
W2VudHJ5XS5tYXBwaW5nID0KICAgICAgICAgICAgICAgICAgICBwY2lfbWFwX3NpbmdsZSAodHAt
PnBjaV9kZXYsIHNrYi0+ZGF0YSwgc2tiLT5sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEpOwogICAgICAgICAgICAgICAgZG1hX2FkZHIgPSB0cC0+dHhfaW5mb1tlbnRy
eV0ubWFwcGluZzsKICAgICAgICB9IGVsc2UgaWYgKHNrYi0+bGVuIDwgMTUzNikgewogICAgICAg
ICAgICAgICAgc2tiX2NvcHlfYW5kX2NzdW1fZGV2KHNrYiwgdHAtPnR4X2J1ZltlbnRyeV0pOwog
ICAgICAgICAgICAgICAgZG1hX2FkZHIgPSB0cC0+dHhfYnVmc19kbWEgKyAodHAtPnR4X2J1Zltl
bnRyeV0gLSB0cC0+dHhfYnVmcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGtm
cmVlX3NrYihza2IpOwogICAgICAgICAgICAgICAgdHAtPnR4X2luZm9bZW50cnldLnNrYiA9ICgo
dm9pZCAqKTApOwogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICBk
byB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7IHNwaW5fbG9jaygm
dHAtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4QWRkcjAgKyAoZW50cnkgKiA0KSkpKSA9ICgo
ZG1hX2FkZHIpKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKFR4QWRkcjAgKyAoZW50cnkgKiA0KSkpKSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIHsg
KCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhTdGF0dXMw
ICsgKGVudHJ5ICogc2l6ZW9mICh1MzIpKSkpKSA9ICgodHAtPnR4X2ZsYWcgfCAoc2tiLT5sZW4g
Pj0gNjAgPyBza2ItPmxlbiA6IDYwKSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgo
dm9pZCAqKShpb2FkZHIgKyAoVHhTdGF0dXMwICsgKGVudHJ5ICogc2l6ZW9mICh1MzIpKSkpKSk7
IH0gd2hpbGUgKDApOwoKCiAgICAgICAgZGV2LT50cmFuc19zdGFydCA9IGppZmZpZXM7CgogICAg
ICAgIHRwLT5jdXJfdHgrKzsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFk
ZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgaWYgKCh0cC0+Y3VyX3R4IC0g
NCkgPT0gdHAtPmRpcnR5X3R4KQogICAgICAgICAgICAgICAgbmV0aWZfc3RvcF9xdWV1ZSAoZGV2
KTsKICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZ0cC0+bG9jayk7IF9fYXNtX18gX192b2xhdGls
ZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogICAgICAgIHJldHVybiAw
Owp9CgoKc3RhdGljIHZvaWQgcnRsODEzOV90eF9pbnRlcnJ1cHQgKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRsODEzOV9w
cml2YXRlICp0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlvYWRk
cikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZGlydHlfdHgsIHR4X2xlZnQ7CgogICAgICAgIGlm
KCEoZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywl
cywlcyxsaW5lPSVkXG4iLCAiZGV2ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywx
ODExKTsgfTsKICAgICAgICBpZighKHRwICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3Nl
cnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAidHAgIT0gTlVMTCIsIjgxMzl0b28u
YyIsX19GVU5DVElPTl9fLDE4MTIpOyB9OwogICAgICAgIGlmKCEoaW9hZGRyICE9ICgodm9pZCAq
KTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAi
aW9hZGRyICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywxODEzKTsgfTsKCiAgICAg
ICAgZGlydHlfdHggPSB0cC0+ZGlydHlfdHg7CiAgICAgICAgdHhfbGVmdCA9IHRwLT5jdXJfdHgg
LSBkaXJ0eV90eDsKICAgICAgICB3aGlsZSAodHhfbGVmdCA+IDApIHsKICAgICAgICAgICAgICAg
IGludCBlbnRyeSA9IGRpcnR5X3R4ICUgNDsKICAgICAgICAgICAgICAgIGludCB0eHN0YXR1czsK
CiAgICAgICAgICAgICAgICB0eHN0YXR1cyA9ICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUg
dW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhTdGF0dXMwICsgKGVudHJ5ICog
c2l6ZW9mICh1MzIpKSkpKSkpOwoKICAgICAgICAgICAgICAgIGlmICghKHR4c3RhdHVzICYgKFR4
U3RhdE9LIHwgVHhVbmRlcnJ1biB8IFR4QWJvcnRlZCkpKQogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKCgogICAgICAgICAgICAgICAgaWYgKHR4c3RhdHVzICYgKFR4T3V0T2ZXaW5kb3cg
fCBUeEFib3J0ZWQpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9lcnJv
cnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR4c3RhdHVzICYgVHhBYm9ydGVkKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnR4X2Fib3J0ZWRfZXJy
b3JzKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1
bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeENvbmZpZykpKSA9ICgoVHhDbGVh
ckFidCB8ICg2IDw8IFR4RE1BU2hpZnQpKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikg
KCh2b2lkICopKGlvYWRkciArIChUeENvbmZpZykpKSk7IH0gd2hpbGUgKDApOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eHN0YXR1cyAmIFR4
Q2Fycmllckxvc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnR4
X2NhcnJpZXJfZXJyb3JzKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eHN0YXR1cyAm
IFR4T3V0T2ZXaW5kb3cpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRz
LnR4X3dpbmRvd19lcnJvcnMrKzsKCgoKCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodHhzdGF0dXMgJiBUeFVuZGVycnVuKSB7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0cC0+dHhfZmxhZyA8IDB4MDAzMDAwMDApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+dHhfZmxhZyArPSAweDAwMDIw
MDAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9maWZvX2Vy
cm9ycysrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IHRwLT5zdGF0cy5jb2xsaXNpb25zICs9ICh0eHN0YXR1cyA+PiAyNCkgJiAxNTsKICAgICAgICAg
ICAgICAgICAgICAgICAgdHAtPnN0YXRzLnR4X2J5dGVzICs9IHR4c3RhdHVzICYgMHg3ZmY7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9wYWNrZXRzKys7CiAgICAgICAgICAg
ICAgICB9CgoKICAgICAgICAgICAgICAgIGlmICh0cC0+dHhfaW5mb1tlbnRyeV0ubWFwcGluZyAh
PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV91bm1hcF9zaW5nbGUodHAtPnBjaV9k
ZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnR4X2luZm9b
ZW50cnldLm1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHAtPnR4X2luZm9bZW50cnldLnNrYi0+bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEpOwogICAgICAgICAgICAgICAgICAgICAgICB0cC0+dHhfaW5mb1tlbnRy
eV0ubWFwcGluZyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZXZfa2Zy
ZWVfc2tiX2lycSAodHAtPnR4X2luZm9bZW50cnldLnNrYik7CiAgICAgICAgICAgICAgICB0cC0+
dHhfaW5mb1tlbnRyeV0uc2tiID0gKCh2b2lkICopMCk7CgogICAgICAgICAgICAgICAgZGlydHlf
dHgrKzsKICAgICAgICAgICAgICAgIHR4X2xlZnQtLTsKICAgICAgICB9CgoKICAgICAgICBpZiAo
dHAtPmN1cl90eCAtIGRpcnR5X3R4ID4gNCkgewogICAgICAgICAgICAgICAgcHJpbnRrICgiPDM+
IiAiJXM6IE91dC1vZi1zeW5jIGRpcnR5IHBvaW50ZXIsICVsZCB2cy4gJWxkLlxuIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2LT5uYW1lLCBkaXJ0eV90eCwgdHAtPmN1cl90eCk7CiAgICAg
ICAgICAgICAgICBkaXJ0eV90eCArPSA0OwogICAgICAgIH0KCgoKICAgICAgICBpZiAodHAtPmRp
cnR5X3R4ICE9IGRpcnR5X3R4KSB7CiAgICAgICAgICAgICAgICB0cC0+ZGlydHlfdHggPSBkaXJ0
eV90eDsKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibG9jazsgYWRkbCAk
MCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIGlmIChuZXRpZl9xdWV1
ZV9zdG9wcGVkIChkZXYpKQogICAgICAgICAgICAgICAgICAgICAgICBuZXRpZl93YWtlX3F1ZXVl
IChkZXYpOwogICAgICAgIH0KfQoKCgpzdGF0aWMgdm9pZCBydGw4MTM5X3J4X2VyciAodTMyIHJ4
X3N0YXR1cywgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwLCB2b2lkICppb2FkZHIpCnsKICAgICAgICB1
OCB0bXA4OwogICAgICAgIGludCB0bXBfd29yazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwoKICAgICAgICBpZiAocnhfc3RhdHVzICYgUnhUb29Mb25nKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICB9CiAg
ICAgICAgdHAtPnN0YXRzLnJ4X2Vycm9ycysrOwogICAgICAgIGlmIChyeF9zdGF0dXMgJiAoUnhC
YWRTeW1ib2wgfCBSeEJhZEFsaWduKSkKICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9mcmFt
ZV9lcnJvcnMrKzsKICAgICAgICBpZiAocnhfc3RhdHVzICYgKFJ4UnVudCB8IFJ4VG9vTG9uZykp
CiAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrOwogICAgICAgIGlm
IChyeF9zdGF0dXMgJiBSeENSQ0VycikKICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9jcmNf
ZXJyb3JzKys7CgoKCgogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkgPSAoKENtZFR4RW5iKSkpOyAoKih2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7IH0gd2hp
bGUgKDApOwogICAgICAgIHRtcF93b3JrID0gMjAwOwogICAgICAgIHdoaWxlICgtLXRtcF93b3Jr
ID4gMCkgewogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDEpID8gKCgxKSA+
IDIwMDAwID8gX19iYWRfdWRlbGF5KCkgOiBfX2NvbnN0X3VkZWxheSgoMSkgKiAweDEwYzZ1bCkp
IDogX191ZGVsYXkoMSkpOwogICAgICAgICAgICAgICAgdG1wOCA9ICgqKHZvbGF0aWxlIHVuc2ln
bmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpKTsKICAgICAgICAgICAg
ICAgIGlmICghKHRtcDggJiBDbWRSeEVuYikpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIH0KICAgICAgICBpZiAodG1wX3dvcmsgPD0gMCkKICAgICAgICAgICAgICAgIHBy
aW50ayAoIjw0PiIgIjgxMzl0b28iICI6ICIgInJ4IHN0b3Agd2FpdCB0b28gbG9uZ1xuIik7Cgog
ICAgICAgIHRtcF93b3JrID0gMjAwOwogICAgICAgIHdoaWxlICgtLXRtcF93b3JrID4gMCkgewog
ICAgICAgICAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAq
KShpb2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoQ21kUnhFbmIgfCBDbWRUeEVuYikpKTsgKCoodm9s
YXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpOyB9
IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSA/ICgo
MSkgPiAyMDAwMCA/IF9fYmFkX3VkZWxheSgpIDogX19jb25zdF91ZGVsYXkoKDEpICogMHgxMGM2
dWwpKSA6IF9fdWRlbGF5KDEpKTsKICAgICAgICAgICAgICAgIHRtcDggPSAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7CiAgICAgICAg
ICAgICAgICBpZiAoKHRtcDggJiBDbWRSeEVuYikgJiYgKHRtcDggJiBDbWRUeEVuYikpCiAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAodG1wX3dvcmsg
PD0gMCkKICAgICAgICAgICAgICAgIHByaW50ayAoIjw0PiIgIjgxMzl0b28iICI6ICIgInR4L3J4
IGVuYWJsZSB3YWl0IHRvbyBsb25nXG4iKTsKCgogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5z
aWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZf
VW5sb2NrKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIg
KyAoQ2ZnOTM0NikpKSk7IH0gd2hpbGUgKDApOwoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25l
ZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoQ21kUnhFbmIgfCBD
bWRUeEVuYikpKTsKCiAgICAgICAgdHAtPnJ4X2NvbmZpZyA9IHJ0bDgxMzlfcnhfY29uZmlnIHwg
QWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2ln
bmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4Q29uZmlnKSkpID0gKCh0cC0+cnhfY29u
ZmlnKSkpOwogICAgICAgIHRwLT5jdXJfcnggPSAwOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZfTG9jaykpKTsKCgog
ICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIg
KyAoUnhCdWYpKSkgPSAoKHRwLT5yeF9yaW5nX2RtYSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQg
aW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhCdWYpKSkpOyB9IHdoaWxlICgwKTsKCgogICAg
ICAgIF9fc2V0X3J4X21vZGUgKGRldik7Cn0KCnN0YXRpYyB2b2lkIHJ0bDgxMzlfcnhfaW50ZXJy
dXB0IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAsIHZvaWQgKmlvYWRkcikKewogICAgICAg
IHVuc2lnbmVkIGNoYXIgKnJ4X3Jpbmc7CiAgICAgICAgdTE2IGN1cl9yeDsKCiAgICAgICAgaWYo
IShkZXYgIT0gKCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVz
LCVzLGxpbmU9JWRcbiIsICJkZXYgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDE5
NjMpOyB9OwogICAgICAgIGlmKCEodHAgIT0gKCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2Vy
dGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJ0cCAhPSBOVUxMIiwiODEzOXRvby5j
IixfX0ZVTkNUSU9OX18sMTk2NCk7IH07CiAgICAgICAgaWYoIShpb2FkZHIgIT0gKCh2b2lkICop
MCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJp
b2FkZHIgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDE5NjUpOyB9OwoKICAgICAg
ICByeF9yaW5nID0gdHAtPnJ4X3Jpbmc7CiAgICAgICAgY3VyX3J4ID0gdHAtPmN1cl9yeDsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoK
CiAgICAgICAgd2hpbGUgKCgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShp
b2FkZHIgKyAoQ2hpcENtZCkpKSkgJiBSeEJ1ZkVtcHR5KSA9PSAwKSB7CiAgICAgICAgICAgICAg
ICBpbnQgcmluZ19vZmZzZXQgPSBjdXJfcnggJSAoODE5MiA8PCAyKTsKICAgICAgICAgICAgICAg
IHUzMiByeF9zdGF0dXM7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcnhfc2l6ZTsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwa3Rfc2l6ZTsKICAgICAgICAgICAgICAgIHN0cnVj
dCBza19idWZmICpza2I7CgogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJs
b2NrOyBhZGRsICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwoKCiAgICAgICAgICAgICAgICBy
eF9zdGF0dXMgPSAoKF9fdTMyKSgqKHUzMiAqKSAocnhfcmluZyArIHJpbmdfb2Zmc2V0KSkpOwog
ICAgICAgICAgICAgICAgcnhfc2l6ZSA9IHJ4X3N0YXR1cyA+PiAxNjsKICAgICAgICAgICAgICAg
IHBrdF9zaXplID0gcnhfc2l6ZSAtIDQ7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDsKIyAyMDAzICI4MTM5dG9vLmMiCiAgICAgICAgICAgICAgICBpZiAocnhfc2l6
ZSA9PSAweGZmZjApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnhzdGF0cy5lYXJseV9y
eCsrOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCgoK
CgoKICAgICAgICAgICAgICAgIGlmICgocnhfc2l6ZSA+ICgxNTM2ICs0KSkgfHwKICAgICAgICAg
ICAgICAgICAgICAocnhfc2l6ZSA8IDgpIHx8CiAgICAgICAgICAgICAgICAgICAgKCEocnhfc3Rh
dHVzICYgUnhTdGF0dXNPSykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDgxMzlfcnhf
ZXJyIChyeF9zdGF0dXMsIGRldiwgdHAsIGlvYWRkcik7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgIH0KIyAyMDI5ICI4MTM5dG9vLmMiCiAgICAgICAgICAg
ICAgICBza2IgPSBkZXZfYWxsb2Nfc2tiIChwa3Rfc2l6ZSArIDIpOwogICAgICAgICAgICAgICAg
aWYgKHNrYikgewogICAgICAgICAgICAgICAgICAgICAgICBza2ItPmRldiA9IGRldjsKICAgICAg
ICAgICAgICAgICAgICAgICAgc2tiX3Jlc2VydmUgKHNrYiwgMik7CgogICAgICAgICAgICAgICAg
ICAgICAgICBldGhfY29weV9hbmRfc3VtIChza2IsICZyeF9yaW5nW3Jpbmdfb2Zmc2V0ICsgNF0s
IHBrdF9zaXplLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2tiX3B1dCAoc2tiLCBwa3Rf
c2l6ZSk7CgogICAgICAgICAgICAgICAgICAgICAgICBza2ItPnByb3RvY29sID0gZXRoX3R5cGVf
dHJhbnMgKHNrYiwgZGV2KTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV0aWZfcnggKHNrYik7
CiAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+bGFzdF9yeCA9IGppZmZpZXM7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9ieXRlcyArPSBwa3Rfc2l6ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X3BhY2tldHMrKzsKICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ayAoIjw0PiIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJXM6IE1lbW9yeSBzcXVlZXplLCBkcm9wcGluZyBwYWNrZXQu
XG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+bmFtZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9kcm9wcGVkKys7CiAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgY3VyX3J4ID0gKGN1cl9yeCArIHJ4X3NpemUgKyA0ICsgMykgJiB+
MzsKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAq
KShpb2FkZHIgKyAoUnhCdWZQdHIpKSkgPSAoKGN1cl9yeCAtIDE2KSkpOwoKICAgICAgICAgICAg
ICAgIGlmICgoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsg
KEludHJTdGF0dXMpKSkpICYgUnhBY2tCaXRzKQogICAgICAgICAgICAgICAgICAgICAgICBkbyB7
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoSW50clN0
YXR1cykpKSA9ICgoUnhBY2tCaXRzKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICB9
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CgoKCgogICAgICAgIHRwLT5jdXJfcnggPSBjdXJfcng7CgogICAgICAgIGlmICgoKCoodm9sYXRp
bGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpICYgUnhC
dWZFbXB0eSkgJiYKICAgICAgICAgICAgKCgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgo
dm9pZCAqKShpb2FkZHIgKyAoSW50clN0YXR1cykpKSkgJiBSeEFja0JpdHMpKQogICAgICAgICAg
ICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKEludHJTdGF0dXMpKSkgPSAoKFJ4QWNrQml0cykpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQg
c2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRyU3RhdHVzKSkpKTsgfSB3aGlsZSAoMCk7
Cn0KCgpzdGF0aWMgdm9pZCBydGw4MTM5X3dlaXJkX2ludGVycnVwdCAoc3RydWN0IG5ldF9kZXZp
Y2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGw4
MTM5X3ByaXZhdGUgKnRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqaW9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1
cywgaW50IGxpbmtfY2hhbmdlZCkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCgogICAgICAgIGlmKCEoZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRp
b24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiZGV2ICE9IE5VTEwiLCI4MTM5dG9vLmMi
LF9fRlVOQ1RJT05fXywyMDc3KTsgfTsKICAgICAgICBpZighKHRwICE9ICgodm9pZCAqKTApKSkg
eyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAidHAgIT0g
TlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDIwNzgpOyB9OwogICAgICAgIGlmKCEoaW9h
ZGRyICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywl
cyxsaW5lPSVkXG4iLCAiaW9hZGRyICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywy
MDc5KTsgfTsKCgogICAgICAgIHRwLT5zdGF0cy5yeF9taXNzZWRfZXJyb3JzICs9ICgodW5zaWdu
ZWQgbG9uZykgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAo
UnhNaXNzZWQpKSkpKTsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lk
ICopKGlvYWRkciArIChSeE1pc3NlZCkpKSA9ICgoMCkpKTsKCiAgICAgICAgaWYgKChzdGF0dXMg
JiBSeFVuZGVycnVuKSAmJiBsaW5rX2NoYW5nZWQgJiYKICAgICAgICAgICAgKHRwLT5kcnZfZmxh
Z3MgJiBIQVNfTE5LX0NITkcpKSB7CgogICAgICAgICAgICAgICAgaW50IGxwYXIgPSAoKih2b2xh
dGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE5XYXlMUEFSKSkpKTsK
ICAgICAgICAgICAgICAgIGludCBkdXBsZXggPSAobHBhciAmIDB4MDEwMCkgfHwgKGxwYXIgJiAw
eDAxQzApID09IDB4MDA0MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRwLT5k
dXBsZXhfbG9jazsKICAgICAgICAgICAgICAgIGlmICh0cC0+ZnVsbF9kdXBsZXggIT0gZHVwbGV4
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5mdWxsX2R1cGxleCA9IGR1cGxleDsKCgoK
CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdHVzICY9IH5SeFVuZGVycnVu
OwogICAgICAgIH0KCgogICAgICAgIGlmIChzdGF0dXMgJgogICAgICAgICAgICAoUnhVbmRlcnJ1
biB8IFJ4T3ZlcmZsb3cgfCBSeEVyciB8IFJ4RklGT092ZXIpKQogICAgICAgICAgICAgICAgdHAt
PnN0YXRzLnJ4X2Vycm9ycysrOwoKICAgICAgICBpZiAoc3RhdHVzICYgKFBDU1RpbWVvdXQpKQog
ICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsKICAgICAgICBpZiAo
c3RhdHVzICYgKFJ4VW5kZXJydW4gfCBSeEZJRk9PdmVyKSkKICAgICAgICAgICAgICAgIHRwLT5z
dGF0cy5yeF9maWZvX2Vycm9ycysrOwogICAgICAgIGlmIChzdGF0dXMgJiBQQ0lFcnIpIHsKICAg
ICAgICAgICAgICAgIHUxNiBwY2lfY21kX3N0YXR1czsKICAgICAgICAgICAgICAgIHBjaV9yZWFk
X2NvbmZpZ193b3JkICh0cC0+cGNpX2RldiwgMHgwNiwgJnBjaV9jbWRfc3RhdHVzKTsKCiAgICAg
ICAgICAgICAgICBwcmludGsgKCI8Mz4iICIlczogUENJIEJ1cyBlcnJvciAlNC40eC5cbiIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGRldi0+bmFtZSwgcGNpX2NtZF9zdGF0dXMpOwogICAgICAg
IH0KfQoKCgoKc3RhdGljIHZvaWQgcnRsODEzOV9pbnRlcnJ1cHQgKGludCBpcnEsIHZvaWQgKmRl
dl9pbnN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwdF9yZWdz
ICpyZWdzKQp7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IChzdHJ1Y3QgbmV0X2Rl
dmljZSAqKSBkZXZfaW5zdGFuY2U7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAg
PSBkZXYtPnByaXY7CiAgICAgICAgaW50IGJvZ3VzY250ID0gbWF4X2ludGVycnVwdF93b3JrOwog
ICAgICAgIHZvaWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgaW50IGFja3N0YXQs
IHN0YXR1czsKICAgICAgICBpbnQgbGlua19jaGFuZ2VkID0gMDsKCiAgICAgICAgc3Bpbl9sb2Nr
ICgmdHAtPmxvY2spOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSAoKih2
b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMp
KSkpOwoKCiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDB4RkZGRikKICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CgoKCiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICYgUnhVbmRl
cnJ1bikKICAgICAgICAgICAgICAgICAgICAgICAgbGlua19jaGFuZ2VkID0gKCoodm9sYXRpbGUg
dW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChDU0NSKSkpKSAmIENTQ1JfTGlu
a0NoYW5nZUJpdDsKCgoKCiAgICAgICAgICAgICAgICBhY2tzdGF0ID0gc3RhdHVzICYgflJ4QWNr
Qml0czsKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9p
ZCAqKShpb2FkZHIgKyAoSW50clN0YXR1cykpKSA9ICgoYWNrc3RhdCkpKTsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwoKCiAgICAgICAgICAgICAgICBpZiAoKHN0YXR1cyAmCiAgICAgICAgICAgICAgICAg
ICAgIChQQ0lFcnIgfCBQQ1NUaW1lb3V0IHwgUnhVbmRlcnJ1biB8IFJ4T3ZlcmZsb3cgfAogICAg
ICAgICAgICAgICAgICAgICAgUnhGSUZPT3ZlciB8IFR4RXJyIHwgVHhPSyB8IFJ4RXJyIHwgUnhP
SykpID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAg
IGlmIChuZXRpZl9ydW5uaW5nIChkZXYpICYmIChzdGF0dXMgJiBSeEFja0JpdHMpKQogICAgICAg
ICAgICAgICAgICAgICAgICBydGw4MTM5X3J4X2ludGVycnVwdCAoZGV2LCB0cCwgaW9hZGRyKTsK
CgogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAmIChQQ0lFcnIgfCBQQ1NUaW1lb3V0IHwgUnhV
bmRlcnJ1biB8IFJ4T3ZlcmZsb3cgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSeEZJ
Rk9PdmVyIHwgVHhFcnIgfCBSeEVycikpCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDgxMzlf
d2VpcmRfaW50ZXJydXB0IChkZXYsIHRwLCBpb2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIGxpbmtfY2hhbmdlZCk7CgogICAgICAg
ICAgICAgICAgaWYgKG5ldGlmX3J1bm5pbmcgKGRldikgJiYgKHN0YXR1cyAmIChUeE9LIHwgVHhF
cnIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgcnRsODEzOV90eF9pbnRlcnJ1cHQgKGRldiwg
dHAsIGlvYWRkcik7CgogICAgICAgICAgICAgICAgYm9ndXNjbnQtLTsKICAgICAgICB9IHdoaWxl
IChib2d1c2NudCA+IDApOwoKICAgICAgICBpZiAoYm9ndXNjbnQgPD0gMCkgewogICAgICAgICAg
ICAgICAgcHJpbnRrICgiPDQ+IiAiJXM6IFRvbyBtdWNoIHdvcmsgYXQgaW50ZXJydXB0LCAiCiAg
ICAgICAgICAgICAgICAgICAgICAgICJJbnRyU3RhdHVzPTB4JTQuNHguXG4iLCBkZXYtPm5hbWUs
IHN0YXR1cyk7CgoKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICop
ICgodm9pZCAqKShpb2FkZHIgKyAoSW50clN0YXR1cykpKSA9ICgoMHhmZmZmKSkpOwogICAgICAg
IH0KCiAgICAgICAgc3Bpbl91bmxvY2sgKCZ0cC0+bG9jayk7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKfQoKCnN0YXRpYyBpbnQgcnRsODEzOV9j
bG9zZSAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3By
aXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIHZvaWQgKmlvYWRkciA9IHRwLT5tbWlvX2Fk
ZHI7CiAgICAgICAgaW50IHJldCA9IDA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgbmV0aWZfc3RvcF9xdWV1ZSAoZGV2
KTsKCiAgICAgICAgaWYgKHRwLT50aHJfcGlkID49IDApIHsKICAgICAgICAgICAgICAgIHJldCA9
IGtpbGxfcHJvYyAodHAtPnRocl9waWQsIDE1LCAxKTsKICAgICAgICAgICAgICAgIGlmIChyZXQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrICgiPDM+IiAiJXM6IHVuYWJsZSB0byBz
aWduYWwgdGhyZWFkXG4iLCBkZXYtPm5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmV0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2FpdF9mb3JfY29tcGxl
dGlvbiAoJnRwLT50aHJfZXhpdGVkKTsKICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogICAgICAgIGRvIHsgX19hc21f
XyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJt
ZW1vcnkiKTsgc3Bpbl9sb2NrKCZ0cC0+bG9jayk7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgKCoo
dm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkg
PSAoKDApKSk7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQg
KikoaW9hZGRyICsgKEludHJNYXNrKSkpID0gKCgwKSkpOwoKCiAgICAgICAgdHAtPnN0YXRzLnJ4
X21pc3NlZF9lcnJvcnMgKz0gKCh1bnNpZ25lZCBsb25nKSAoKih2b2xhdGlsZSB1bnNpZ25lZCBp
bnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3NlZCkpKSkpOwogICAgICAgICgqKHZvbGF0
aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4TWlzc2VkKSkpID0gKCgw
KSkpOwoKICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZ0cC0+bG9jayk7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsg
fSB3aGlsZSAoMCk7CgogICAgICAgIHN5bmNocm9uaXplX2lycSAoKTsKICAgICAgICBmcmVlX2ly
cSAoZGV2LT5pcnEsIGRldik7CgogICAgICAgIHJ0bDgxMzlfdHhfY2xlYXIgKHRwKTsKCiAgICAg
ICAgcGNpX2ZyZWVfY29uc2lzdGVudCh0cC0+cGNpX2RldiwgKCg4MTkyIDw8IDIpICsgMTYgKyAy
MDQ4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5yeF9yaW5nLCB0cC0+cnhfcmlu
Z19kbWEpOwogICAgICAgIHBjaV9mcmVlX2NvbnNpc3RlbnQodHAtPnBjaV9kZXYsICgxNTM2ICog
NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+dHhfYnVmcywgdHAtPnR4X2J1ZnNf
ZG1hKTsKICAgICAgICB0cC0+cnhfcmluZyA9ICgodm9pZCAqKTApOwogICAgICAgIHRwLT50eF9i
dWZzID0gKCh2b2lkICopMCk7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICop
ICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2ZnOTM0Nl9VbmxvY2spKSk7Cgog
ICAgICAgIGlmIChydGxfY2hpcF9pbmZvW3RwLT5jaGlwc2V0XS5mbGFncyAmIEhhc0hsdENsaykK
ICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlv
YWRkciArIChIbHRDbGspKSkgPSAoKCdIJykpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
OwogICAgICAgIHJldHVybiAwOwp9CgoKCgoKc3RhdGljIHZvaWQgbmV0ZGV2X2dldF9lc2V0IChz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9jbWQgKmVzZXQpCnsKICAgICAg
ICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICpucCA9IGRldi0+cHJpdjsKICAgICAgICB2b2lkICpp
b2FkZHIgPSBucC0+bW1pb19hZGRyOwogICAgICAgIHUxNiBhZHZlcnQ7CgogICAgICAgIGVzZXQt
PnN1cHBvcnRlZCA9ICgxIDw8IDApCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDEgPDwgMSkK
ICAgICAgICAgICAgICAgICAgICAgICAgfCAoMSA8PCAyKQogICAgICAgICAgICAgICAgICAgICAg
ICB8ICgxIDw8IDMpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDEgPDwgNikKICAgICAgICAg
ICAgICAgICAgICAgICAgfCAoMSA8PCA3KTsKCiAgICAgICAgZXNldC0+YWR2ZXJ0aXNpbmcgPSAo
MSA8PCA3KSB8ICgxIDw8IDYpOwogICAgICAgIGFkdmVydCA9IG1kaW9fcmVhZCAoZGV2LCBucC0+
cGh5c1swXSwgNCk7CiAgICAgICAgaWYgKGFkdmVydCAmIDB4MDAyMCkKICAgICAgICAgICAgICAg
IGVzZXQtPmFkdmVydGlzaW5nIHw9ICgxIDw8IDApOwogICAgICAgIGlmIChhZHZlcnQgJiAweDAw
NDApCiAgICAgICAgICAgICAgICBlc2V0LT5hZHZlcnRpc2luZyB8PSAoMSA8PCAxKTsKICAgICAg
ICBpZiAoYWR2ZXJ0ICYgMHgwMDgwKQogICAgICAgICAgICAgICAgZXNldC0+YWR2ZXJ0aXNpbmcg
fD0gKDEgPDwgMik7CiAgICAgICAgaWYgKGFkdmVydCAmIDB4MDEwMCkKICAgICAgICAgICAgICAg
IGVzZXQtPmFkdmVydGlzaW5nIHw9ICgxIDw8IDMpOwoKICAgICAgICBlc2V0LT5zcGVlZCA9ICgo
Kih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoTWVkaWFTdGF0
dXMpKSkpICYgMHgwOCkgPyAxMCA6IDEwMDsKCgoKICAgICAgICBlc2V0LT5kdXBsZXggPSBucC0+
ZnVsbF9kdXBsZXggPyAweDAxIDogMHgwMDsKICAgICAgICBlc2V0LT5wb3J0ID0gMHgwMDsKCiAg
ICAgICAgZXNldC0+cGh5X2FkZHJlc3MgPSBucC0+cGh5c1swXTsKICAgICAgICBlc2V0LT50cmFu
c2NlaXZlciA9IDB4MDA7CiAgICAgICAgZXNldC0+YXV0b25lZyA9IChtZGlvX3JlYWQgKGRldiwg
bnAtPnBoeXNbMF0sIDApICYgMHgxMDAwKSAhPSAwOwogICAgICAgIGVzZXQtPm1heHR4cGt0ID0g
MTsKICAgICAgICBlc2V0LT5tYXhyeHBrdCA9IDE7Cn0KCgoKCgpzdGF0aWMgdm9pZCBuZXRkZXZf
Z2V0X3dvbCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAq
d29sKQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqbnAgPSBkZXYtPnByaXY7CiAg
ICAgICAgdm9pZCAqaW9hZGRyID0gbnAtPm1taW9fYWRkcjsKCiAgICAgICAgaWYgKHJ0bF9jaGlw
X2luZm9bbnAtPmNoaXBzZXRdLmZsYWdzICYgSGFzTFdha2UpIHsKICAgICAgICAgICAgICAgIHU4
IGNmZzMgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAo
Q29uZmlnMykpKSk7CiAgICAgICAgICAgICAgICB1OCBjZmc1ID0gKCoodm9sYXRpbGUgdW5zaWdu
ZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzUpKSkpOwoKICAgICAgICAgICAg
ICAgIHdvbC0+c3VwcG9ydGVkID0gKDEgPDwgMCkgfCAoMSA8PCA1KQogICAgICAgICAgICAgICAg
ICAgICAgICB8ICgxIDw8IDEpIHwgKDEgPDwgMikgfCAoMSA8PCAzKTsKCiAgICAgICAgICAgICAg
ICB3b2wtPndvbG9wdHMgPSAwOwogICAgICAgICAgICAgICAgaWYgKGNmZzMgJiBDZmczX0xpbmtV
cCkKICAgICAgICAgICAgICAgICAgICAgICAgd29sLT53b2xvcHRzIHw9ICgxIDw8IDApOwogICAg
ICAgICAgICAgICAgaWYgKGNmZzMgJiBDZmczX01hZ2ljKQogICAgICAgICAgICAgICAgICAgICAg
ICB3b2wtPndvbG9wdHMgfD0gKDEgPDwgNSk7CgoKICAgICAgICAgICAgICAgIGlmIChjZmc1ICYg
Q2ZnNV9VV0YpCiAgICAgICAgICAgICAgICAgICAgICAgIHdvbC0+d29sb3B0cyB8PSAoMSA8PCAx
KTsKICAgICAgICAgICAgICAgIGlmIChjZmc1ICYgQ2ZnNV9NV0YpCiAgICAgICAgICAgICAgICAg
ICAgICAgIHdvbC0+d29sb3B0cyB8PSAoMSA8PCAyKTsKICAgICAgICAgICAgICAgIGlmIChjZmc1
ICYgQ2ZnNV9CV0YpCiAgICAgICAgICAgICAgICAgICAgICAgIHdvbC0+d29sb3B0cyB8PSAoMSA8
PCAzKTsKICAgICAgICB9Cn0KCgoKCgpzdGF0aWMgaW50IG5ldGRldl9zZXRfd29sIChzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg
ZXRodG9vbF93b2xpbmZvICp3b2wpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICpu
cCA9IGRldi0+cHJpdjsKICAgICAgICB2b2lkICppb2FkZHIgPSBucC0+bW1pb19hZGRyOwogICAg
ICAgIHUzMiBzdXBwb3J0OwogICAgICAgIHU4IGNmZzMsIGNmZzU7CgogICAgICAgIHN1cHBvcnQg
PSAoKHJ0bF9jaGlwX2luZm9bbnAtPmNoaXBzZXRdLmZsYWdzICYgSGFzTFdha2UpCiAgICAgICAg
ICAgICAgICAgICA/ICgoMSA8PCAwKSB8ICgxIDw8IDUpCiAgICAgICAgICAgICAgICAgICAgICB8
ICgxIDw8IDEpIHwgKDEgPDwgMikgfCAoMSA8PCAzKSkKICAgICAgICAgICAgICAgICAgIDogMCk7
CiAgICAgICAgaWYgKHdvbC0+d29sb3B0cyAmIH5zdXBwb3J0KQogICAgICAgICAgICAgICAgcmV0
dXJuIC0yMjsKCiAgICAgICAgY2ZnMyA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2
b2lkICopKGlvYWRkciArIChDb25maWczKSkpKSAmIH4oQ2ZnM19MaW5rVXAgfCBDZmczX01hZ2lj
KTsKICAgICAgICBpZiAod29sLT53b2xvcHRzICYgKDEgPDwgMCkpCiAgICAgICAgICAgICAgICBj
ZmczIHw9IENmZzNfTGlua1VwOwogICAgICAgIGlmICh3b2wtPndvbG9wdHMgJiAoMSA8PCA1KSkK
ICAgICAgICAgICAgICAgIGNmZzMgfD0gQ2ZnM19NYWdpYzsKICAgICAgICAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2ZnOTM0
Nl9VbmxvY2spKSk7CiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQg
KikoaW9hZGRyICsgKENvbmZpZzMpKSkgPSAoKGNmZzMpKSk7CiAgICAgICAgKCoodm9sYXRpbGUg
dW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkz
NDZfTG9jaykpKTsKCiAgICAgICAgY2ZnNSA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikg
KCh2b2lkICopKGlvYWRkciArIChDb25maWc1KSkpKSAmIH4oQ2ZnNV9VV0YgfCBDZmc1X01XRiB8
IENmZzVfQldGKTsKCgoKICAgICAgICBpZiAod29sLT53b2xvcHRzICYgKDEgPDwgMSkpCiAgICAg
ICAgICAgICAgICBjZmc1IHw9IENmZzVfVVdGOwogICAgICAgIGlmICh3b2wtPndvbG9wdHMgJiAo
MSA8PCAyKSkKICAgICAgICAgICAgICAgIGNmZzUgfD0gQ2ZnNV9NV0Y7CiAgICAgICAgaWYgKHdv
bC0+d29sb3B0cyAmICgxIDw8IDMpKQogICAgICAgICAgICAgICAgY2ZnNSB8PSBDZmc1X0JXRjsK
ICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAo
Q29uZmlnNSkpKSA9ICgoY2ZnNSkpKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0KCgpzdGF0aWMgaW50
IG5ldGRldl9ldGh0b29sX2lvY3RsIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICp1c2Vy
YWRkcikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKm5wID0gZGV2LT5wcml2Owog
ICAgICAgIHUzMiBldGhjbWQ7CgoKCgogICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3Ao
c2l6ZW9mIChldGhjbWQpKSA/IF9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIoKCZldGhjbWQpLCh1
c2VyYWRkciksKHNpemVvZiAoZXRoY21kKSkpIDogX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKCgm
ZXRoY21kKSwodXNlcmFkZHIpLChzaXplb2YgKGV0aGNtZCkpKSkpCiAgICAgICAgICAgICAgICBy
ZXR1cm4gLTE0OwoKICAgICAgICBzd2l0Y2ggKGV0aGNtZCkgewogICAgICAgIGNhc2UgMHgwMDAw
MDAwMToKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV0
aHRvb2xfY21kIGVzZXQgPSB7IDB4MDAwMDAwMDEgfTsKICAgICAgICAgICAgICAgICAgICAgICAg
ZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyBzcGluX2xvY2so
Jm5wLT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9n
ZXRfZXNldCAoZGV2LCAmZXNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgc3Bpbl91
bmxvY2soJm5wLT5sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnki
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoX19idWlsdGluX2Nv
bnN0YW50X3Aoc2l6ZW9mIChlc2V0KSkgPyBfX2NvbnN0YW50X2NvcHlfdG9fdXNlcigodXNlcmFk
ZHIpLCgmZXNldCksKHNpemVvZiAoZXNldCkpKSA6IF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIoKHVz
ZXJhZGRyKSwoJmVzZXQpLChzaXplb2YgKGVzZXQpKSkpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAtMTQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAgICAgICAgfQoKCgogICAgICAgIGNhc2UgMHgwMDAwMDAwMzoKICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyBpbmZv
ID0geyAweDAwMDAwMDAzIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweSAoaW5mby5k
cml2ZXIsICI4MTM5dG9vIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweSAoaW5mby52
ZXJzaW9uLCAiMC45LjIwIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweSAoaW5mby5i
dXNfaW5mbywgbnAtPnBjaV9kZXYtPnNsb3RfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mIChpbmZvKSkgPyBfX2NvbnN0YW50X2Nv
cHlfdG9fdXNlcigodXNlcmFkZHIpLCgmaW5mbyksKHNpemVvZiAoaW5mbykpKSA6IF9fZ2VuZXJp
Y19jb3B5X3RvX3VzZXIoKHVzZXJhZGRyKSwoJmluZm8pLChzaXplb2YgKGluZm8pKSkpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICBjYXNlIDB4MDAwMDAw
MDU6CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBldGh0
b29sX3dvbGluZm8gd29sID0geyAweDAwMDAwMDA1IH07CiAgICAgICAgICAgICAgICAgICAgICAg
IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2Nr
KCZucC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXRkZXZf
Z2V0X3dvbCAoZGV2LCAmd29sKTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBzcGluX3Vu
bG9jaygmbnAtPmxvY2spOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIp
OyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChfX2J1aWx0aW5fY29u
c3RhbnRfcChzaXplb2YgKHdvbCkpID8gX19jb25zdGFudF9jb3B5X3RvX3VzZXIoKHVzZXJhZGRy
KSwoJndvbCksKHNpemVvZiAod29sKSkpIDogX19nZW5lcmljX2NvcHlfdG9fdXNlcigodXNlcmFk
ZHIpLCgmd29sKSwoc2l6ZW9mICh3b2wpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAtMTQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICBjYXNlIDB4MDAwMDAwMDY6CiAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBldGh0b29sX3dvbGluZm8gd29sOwogICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgcmM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoX19i
dWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mICh3b2wpKSA/IF9fY29uc3RhbnRfY29weV9mcm9tX3Vz
ZXIoKCZ3b2wpLCh1c2VyYWRkciksKHNpemVvZiAod29sKSkpIDogX19nZW5lcmljX2NvcHlfZnJv
bV91c2VyKCgmd29sKSwodXNlcmFkZHIpLChzaXplb2YgKHdvbCkpKSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xNDsKICAgICAgICAgICAgICAgICAgICAgICAgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyBzcGluX2xvY2soJm5w
LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gbmV0ZGV2
X3NldF93b2wgKGRldiwgJndvbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgc3Bpbl91
bmxvY2soJm5wLT5sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnki
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByYzsKICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgIH0KCiAgICAgICAgcmV0dXJuIC05NTsKfQoKCnN0YXRpYyBpbnQgbmV0ZGV2X2lvY3RsIChz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKQp7CiAgICAg
ICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAgc3RydWN0
IG1paV9pb2N0bF9kYXRhICpkYXRhID0gKHN0cnVjdCBtaWlfaW9jdGxfZGF0YSAqKSZycS0+aWZy
X2lmcnUuaWZydV9kYXRhOwogICAgICAgIGludCByYyA9IDA7CiAgICAgICAgaW50IHBoeSA9IHRw
LT5waHlzWzBdICYgMHgzZjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAg
aWYgKGNtZCAhPSAweDg5NDYpIHsKCiAgICAgICAgICAgICAgICBkYXRhLT5waHlfaWQgJj0gMHgx
ZjsKICAgICAgICAgICAgICAgIGRhdGEtPnJlZ19udW0gJj0gMHgxZjsKICAgICAgICB9CgogICAg
ICAgIHN3aXRjaCAoY21kKSB7CiAgICAgICAgY2FzZSAweDg5NDY6CiAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV0ZGV2X2V0aHRvb2xfaW9jdGwoZGV2LCAodm9pZCAqKSBycS0+aWZyX2lmcnUuaWZy
dV9kYXRhKTsKCiAgICAgICAgY2FzZSAweDg5NDc6CiAgICAgICAgY2FzZSAweDg5RjA6CiAgICAg
ICAgICAgICAgICBkYXRhLT5waHlfaWQgPSBwaHk7CgoKICAgICAgICBjYXNlIDB4ODk0ODoKICAg
ICAgICBjYXNlIDB4ODlGMCArMToKICAgICAgICAgICAgICAgIGRhdGEtPnZhbF9vdXQgPSBtZGlv
X3JlYWQgKGRldiwgZGF0YS0+cGh5X2lkLCBkYXRhLT5yZWdfbnVtKTsKICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlIDB4ODk0OToKICAgICAgICBjYXNlIDB4ODlGMCArMjoKICAg
ICAgICAgICAgICAgIGlmICghY2FwYWJsZSAoMTIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJjID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIGlmIChkYXRhLT5waHlfaWQgPT0gcGh5KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHUxNiB2YWx1ZSA9IGRhdGEtPnZhbF9pbjsKICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChkYXRhLT5yZWdfbnVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgMDoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPm1lZGlhbG9jayA9ICh2
YWx1ZSAmIDB4OTAwMCkgPyAwIDogMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodHAtPm1lZGlhbG9jaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRwLT5mdWxsX2R1cGxleCA9ICh2YWx1ZSAmIDB4MDEwMCkgPyAxIDogMDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0
OiBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgbWRpb193cml0ZShkZXYsIGRhdGEtPnBoeV9pZCwgZGF0YS0+cmVnX251bSwg
ZGF0YS0+dmFsX2luKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgcmMgPSAtOTU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICBy
ZXR1cm4gcmM7Cn0KCgpzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnJ0bDgxMzlfZ2V0
X3N0YXRzIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlf
cHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gdHAtPm1taW9f
YWRkcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwoKICAgICAgICBpZiAobmV0aWZfcnVubmluZyhkZXYpKSB7CiAgICAgICAgICAgICAg
ICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWci
IChmbGFncyk6IDoibWVtb3J5Iik7IHNwaW5fbG9jaygmdHAtPmxvY2spOyB9IHdoaWxlICgwKTsK
ICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9taXNzZWRfZXJyb3JzICs9ICgodW5zaWduZWQg
bG9uZykgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhN
aXNzZWQpKSkpKTsKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKFJ4TWlzc2VkKSkpID0gKCgwKSkpOwogICAgICAgICAgICAgICAg
ZG8geyBzcGluX3VubG9jaygmdHAtPmxvY2spOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwg
JTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwog
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIHJldHVybiAmdHAt
PnN0YXRzOwp9CgoKCgpzdGF0aWMgdW5zaWduZWQgY29uc3QgZXRoZXJuZXRfcG9seW5vbWlhbCA9
IDB4MDRjMTFkYjdVOwpzdGF0aWMgaW5saW5lIHUzMiBldGhlcl9jcmMgKGludCBsZW5ndGgsIHVu
c2lnbmVkIGNoYXIgKmRhdGEpCnsKICAgICAgICBpbnQgY3JjID0gLTE7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgogICAgICAgIHdoaWxlICgtLWxlbmd0aCA+PSAwKSB7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGN1cnJlbnRfb2N0ZXQgPSAqZGF0YSsrOwogICAgICAgICAg
ICAgICAgaW50IGJpdDsKICAgICAgICAgICAgICAgIGZvciAoYml0ID0gMDsgYml0IDwgODsgYml0
KyssIGN1cnJlbnRfb2N0ZXQgPj49IDEpCiAgICAgICAgICAgICAgICAgICAgICAgIGNyYyA9IChj
cmMgPDwgMSkgXiAoKGNyYyA8IDApIF4gKGN1cnJlbnRfb2N0ZXQgJiAxKSA/CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXRoZXJuZXRfcG9seW5vbWlhbCA6IDApOwogICAgICAgIH0KCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICByZXR1
cm4gY3JjOwp9CgoKc3RhdGljIHZvaWQgX19zZXRfcnhfbW9kZSAoc3RydWN0IG5ldF9kZXZpY2Ug
KmRldikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2Owog
ICAgICAgIHZvaWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgdTMyIG1jX2ZpbHRl
clsyXTsKICAgICAgICBpbnQgaSwgcnhfbW9kZTsKICAgICAgICB1MzIgdG1wOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgogICAgICAgIGlmIChkZXYtPmZsYWdz
ICYgMHgxMDApIHsKCiAgICAgICAgICAgICAgICBwcmludGsgKCI8NT4iICIlczogUHJvbWlzY3Vv
dXMgbW9kZSBlbmFibGVkLlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5uYW1lKTsK
ICAgICAgICAgICAgICAgIHJ4X21vZGUgPQogICAgICAgICAgICAgICAgICAgIEFjY2VwdEJyb2Fk
Y2FzdCB8IEFjY2VwdE11bHRpY2FzdCB8IEFjY2VwdE15UGh5cyB8CiAgICAgICAgICAgICAgICAg
ICAgQWNjZXB0QWxsUGh5czsKICAgICAgICAgICAgICAgIG1jX2ZpbHRlclsxXSA9IG1jX2ZpbHRl
clswXSA9IDB4ZmZmZmZmZmY7CiAgICAgICAgfSBlbHNlIGlmICgoZGV2LT5tY19jb3VudCA+IG11
bHRpY2FzdF9maWx0ZXJfbGltaXQpCiAgICAgICAgICAgICAgICAgICB8fCAoZGV2LT5mbGFncyAm
IDB4MjAwKSkgewoKICAgICAgICAgICAgICAgIHJ4X21vZGUgPSBBY2NlcHRCcm9hZGNhc3QgfCBB
Y2NlcHRNdWx0aWNhc3QgfCBBY2NlcHRNeVBoeXM7CiAgICAgICAgICAgICAgICBtY19maWx0ZXJb
MV0gPSBtY19maWx0ZXJbMF0gPSAweGZmZmZmZmZmOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgZGV2X21jX2xpc3QgKm1jbGlzdDsKICAgICAgICAgICAgICAgIHJ4X21v
ZGUgPSBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXM7CiAgICAgICAgICAgICAgICBtY19m
aWx0ZXJbMV0gPSBtY19maWx0ZXJbMF0gPSAwOwogICAgICAgICAgICAgICAgZm9yIChpID0gMCwg
bWNsaXN0ID0gZGV2LT5tY19saXN0OyBtY2xpc3QgJiYgaSA8IGRldi0+bWNfY291bnQ7CiAgICAg
ICAgICAgICAgICAgICAgIGkrKywgbWNsaXN0ID0gbWNsaXN0LT5uZXh0KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBiaXRfbnIgPSBldGhlcl9jcmMoNiwgbWNsaXN0LT5kbWlfYWRkcikg
Pj4gMjY7CgogICAgICAgICAgICAgICAgICAgICAgICBtY19maWx0ZXJbYml0X25yID4+IDVdIHw9
ICgoX191MzIpKDEgPDwgKGJpdF9uciAmIDMxKSkpOwogICAgICAgICAgICAgICAgICAgICAgICBy
eF9tb2RlIHw9IEFjY2VwdE11bHRpY2FzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgoK
ICAgICAgICB0bXAgPSBydGw4MTM5X3J4X2NvbmZpZyB8IHJ4X21vZGU7CiAgICAgICAgaWYgKHRw
LT5yeF9jb25maWcgIT0gdG1wKSB7CiAgICAgICAgICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4Q29uZmlnKSkpID0gKCh0bXApKSk7
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4Q29uZmln
KSkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICB0cC0+cnhfY29uZmlnID0gdG1wOwog
ICAgICAgIH0KICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQg
KikoaW9hZGRyICsgKE1BUjAgKyAwKSkpID0gKChtY19maWx0ZXJbMF0pKSk7ICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BUjAgKyAwKSkpKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICop
KGlvYWRkciArIChNQVIwICsgNCkpKSA9ICgobWNfZmlsdGVyWzFdKSkpOyAoKih2b2xhdGlsZSB1
bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChNQVIwICsgNCkpKSk7IH0gd2hpbGUg
KDApOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CgpzdGF0aWMgdm9pZCBydGw4MTM5
X3NldF9yeF9tb2RlIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+cHJp
djsKCiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7
IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyBzcGluX2xvY2soJnRwLT5sb2NrKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgX19zZXRfcnhfbW9kZShkZXYpOwogICAgICAgIGRvIHsgc3Bpbl91
bmxvY2soJnRwLT5sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwi
OiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQoKCgpzdGF0aWMg
aW50IHJ0bDgxMzlfc3VzcGVuZCAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUzMiBzdGF0ZSkKewog
ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwY2lfZ2V0X2RydmRhdGEgKHBkZXYpOwog
ICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIHZv
aWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK
CiAgICAgICAgaWYgKCFuZXRpZl9ydW5uaW5nIChkZXYpKQogICAgICAgICAgICAgICAgcmV0dXJu
IDA7CgogICAgICAgIG5ldGlmX2RldmljZV9kZXRhY2ggKGRldik7CgogICAgICAgIGRvIHsgX19h
c21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTog
OiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZ0cC0+bG9jayk7IH0gd2hpbGUgKDApOwoKCiAgICAgICAg
KCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRyTWFz
aykpKSA9ICgoMCkpKTsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9p
ZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoMCkpKTsKCgogICAgICAgIHRwLT5zdGF0cy5y
eF9taXNzZWRfZXJyb3JzICs9ICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUgdW5zaWduZWQg
aW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQpKSkpKTsKICAgICAgICAoKih2b2xh
dGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3NlZCkpKSA9ICgo
MCkpKTsKCiAgICAgICAgZG8geyBzcGluX3VubG9jaygmdHAtPmxvY2spOyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7
IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiAwOwp9CgoKc3RhdGljIGludCBydGw4MTM5X3Jl
c3VtZSAoc3RydWN0IHBjaV9kZXYgKnBkZXYpCnsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2ID0gcGNpX2dldF9kcnZkYXRhIChwZGV2KTsKCiAgICAgICAgaWYgKCFuZXRpZl9ydW5uaW5n
IChkZXYpKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgbmV0aWZfZGV2aWNlX2F0
dGFjaCAoZGV2KTsKICAgICAgICBydGw4MTM5X2h3X3N0YXJ0IChkZXYpOwogICAgICAgIHJldHVy
biAwOwp9CgoKCgpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnRsODEzOV9wY2lfZHJpdmVyID0g
ewogICAgICAgIG5hbWU6ICI4MTM5dG9vIiwKICAgICAgICBpZF90YWJsZTogcnRsODEzOV9wY2lf
dGJsLAogICAgICAgIHByb2JlOiBydGw4MTM5X2luaXRfb25lLAogICAgICAgIHJlbW92ZTogcnRs
ODEzOV9yZW1vdmVfb25lLAoKICAgICAgICBzdXNwZW5kOiBydGw4MTM5X3N1c3BlbmQsCiAgICAg
ICAgcmVzdW1lOiBydGw4MTM5X3Jlc3VtZSwKCn07CgoKc3RhdGljIGludCBfX2F0dHJpYnV0ZV9f
ICgoX19zZWN0aW9uX18gKCIudGV4dC5pbml0IikpKSBydGw4MTM5X2luaXRfbW9kdWxlICh2b2lk
KQp7CgoKCgoKCgogICAgICAgIHJldHVybiBwY2lfbW9kdWxlX2luaXQgKCZydGw4MTM5X3BjaV9k
cml2ZXIpOwp9CgoKc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCwgX19zZWN0aW9u
X18oIi50ZXh0LmV4aXQiKSkpIHJ0bDgxMzlfY2xlYW51cF9tb2R1bGUgKHZvaWQpCnsKICAgICAg
ICBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgKCZydGw4MTM5X3BjaV9kcml2ZXIpOwp9CgoKc3RhdGlj
IGluaXRjYWxsX3QgX19pbml0Y2FsbF9ydGw4MTM5X2luaXRfbW9kdWxlIF9fYXR0cmlidXRlX18g
KCh1bnVzZWQsX19zZWN0aW9uX18gKCIuaW5pdGNhbGwuaW5pdCIpKSkgPSBydGw4MTM5X2luaXRf
bW9kdWxlOzsKc3RhdGljIGV4aXRjYWxsX3QgX19leGl0Y2FsbF9ydGw4MTM5X2NsZWFudXBfbW9k
dWxlIF9fYXR0cmlidXRlX18gKCh1bnVzZWQsX19zZWN0aW9uX18gKCIuZXhpdGNhbGwuZXhpdCIp
KSkgPSBydGw4MTM5X2NsZWFudXBfbW9kdWxlOzsK


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

end of thread, other threads:[~2001-10-28  8:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-28  8:56 c/4667: Compiling kernel 2.4.13 with -O2 causes internal compiler error rodrigc
  -- strict thread matches above, loose matches on Subject: below --
2001-10-25 16:26 jorgew

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