gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] Re: Did you send me GCL 2.6.6 twc+?


From: Camm Maguire
Subject: [Gcl-devel] Re: Did you send me GCL 2.6.6 twc+?
Date: 20 Jun 2005 14:26:51 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings, and please excuse the delay!

I had delayed sending you the sources as it was not 100% clear what
the last tested twc+ patch was, as I had done a little extra C stack
overflow work which I wanted to separate out for you.  In any case, I
am including two patch files below.  The first is the file I believe
was used to produce the binary Bob tested so thoroughly.  The second
should differ from it only insignificantly, and is the latest twc
iteration I have here locally.  These both should apply cleanly to the
2.6.6 sources, simply cd to the source top, and 'patch -p0
<../patch_filename'.

In any case, you will hopefully be pleased to note that I've
apparently gotten acl2 to compile on CVS head, aka 2.7.0 (still doing
the regression, etc.).  I hope to check in these changes later today,
at which time you should be able to test the latest version receiving
my attention these days should you wish.  Please as always be
forwarned that this is unreleased software, and can change quickly in
the weeks ahead.  Still, testing and feedback is always most welcome
should you have the patience.  

Only those interested in current GCL development need read below :-).

The issue which has blocked acl2 temporarily on 2.7.0 concerns unboxed
argument passing to compiled functions.  Traditionally, GCL has
offered only two choices, 'object' and 'fixnum', the latter of which
is the standard machine representation of a word-sized integer.  

I've added quite a bit of type propagation and inferencing work to the
compiler (still not done here), which has resulted in at least some
more intelligent argument type deductions in acl2 (2.9.2).  For
example, the compiler is now aware that the first argument to
update-nth in axioms.lisp is of type (integer 0 *) which now is
distinct from a generic object for type propagation puposes.  

GCL has also traditionally offered some ability to inline or 'unbox'
bignum types, which, since we've standardized on gmp (as opposed to
the older pari), represents the number as a pointer to a structure of
two integers and an integer pointer.  While GCL could inline this
type, it could never pass it as a function argument nor return it
unboxed -- the changes I've now made allow for this possibility.  So
in sum at this burning moment the system can pass arguments of these
three types, object, fixnum, and 'integer/bignum'.

I'm not sure what benefit accrues from this, nor if this is a good
idea in general.  There is always the savings on the allocation and gc
of bignum structs, but this seems minimal.  I would never have thought
to bother inlining bignums -- the only reason driving me to keep it
now is that Schelter apparently saw a need.  Other possibilities,
e.g. char * for strings, char or short for smaller integers, floats,
etc. might seem more important.  We currently only have two bits to
represent up to 4 such types.  Feedback welcome as always.

Take care,

=============================================================================
--[[application/octet-stream
Content-Disposition: attachment; filename="zzzz3.p"][base64]]
PyBnYXpvbmswLmRhdGEKPyBnYXpvbmswLmxzcAo/IGdhem9uazEuZGF0YQo/IGdhem9uazEubHNw
Cj8gZ2F6b25rMi5kYXRhCj8gZ2F6b25rMi5sc3AKPyB0ci5jCj8gYW5zaS10ZXN0cy90Y29tcAo/
IGFuc2ktdGVzdHMvdGVzdC1yZXN1bHRzMwo/IGFuc2ktdGVzdHMvdGVzdF9yZXN1bHRzMQo/IGFu
c2ktdGVzdHMvdGVzdF9yZXN1bHRzMgo/IGdjbC10ay9nY2wuc2NyaXB0Cj8gbHNwL2dhem9uazAu
bHNwCj8gbHNwL2dhem9uazEubHNwCj8gbHNwL2dhem9uazIubHNwCj8gbHNwL2dhem9uazMubHNw
Cj8gbHNwL2dhem9uazQubHNwCj8gbHNwL2dhem9uazUubHNwCj8gbHNwL2dhem9uazYubHNwCj8g
bHNwL2dhem9uazcubHNwCj8gbHNwL2dhem9uazgubHNwCj8gby9wYWNrYWdlLmMKPyBvL3cKPyBw
Y2wvZm9vCj8gdW5peHBvcnQvZm9vZwo/IHVuaXhwb3J0L2dhem9uazAuYwo/IHVuaXhwb3J0L2dh
em9uazAuZGF0YQo/IHVuaXhwb3J0L2dhem9uazAuaAo/IHVuaXhwb3J0L2dhem9uazIuYwo/IHVu
aXhwb3J0L2dhem9uazIuZGF0YQo/IHVuaXhwb3J0L2dhem9uazIuaApJbmRleDogYWNjb25maWcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2FjY29uZmlnLmgsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMjIuNi45LjIuMS42LjEuNC4xCmRpZmYgLXUgLXIxLjIyLjYuOS4y
LjEuNi4xLjQuMSBhY2NvbmZpZy5oCi0tLSBhY2NvbmZpZy5oCTE1IEphbiAyMDA1IDE5OjE3OjE3
IC0wMDAwCTEuMjIuNi45LjIuMS42LjEuNC4xCisrKyBhY2NvbmZpZy5oCTMgSnVuIDIwMDUgMDQ6
MDU6MjAgLTAwMDAKQEAgLTEwLDEzICsxMCwxNCBAQAogcHJlYWxsb2NhdGVkIGluIGEgdGFibGUg
YXQgY29tcGlsZSB0aW1lLiAgdGhpcyBtdXN0IGJlIGEgcG93ZXIgb2YgMiBpZgogU0dDIGlzIGVu
YWJsZWQuICAqLwogCi0jZGVmaW5lIE1BWFBBR0UgMTI4KjEwMjQKLSNkZWZpbmUgVlNTSVpFIDEy
OCoxMDI0Ci0jZGVmaW5lIEJEU1NJWkUgMioxMDI0Ci0jZGVmaW5lIElIU1NJWkUgNCoxMDI0Ci0j
ZGVmaW5lIEZSU1NJWkUgNCoxMDI0CisjdW5kZWYgTUFYUEFHRQorI3VuZGVmIFZTU0laRQorI3Vu
ZGVmIEJEU1NJWkUKKyN1bmRlZiBJSFNTSVpFCisjdW5kZWYgRlJTU0laRQorI3VuZGVmIENTU0la
RQogCi0jZGVmaW5lIEhPTEVQQUdFIChNQVhQQUdFLzEwKQorI3VuZGVmIEhPTEVESVYKIAogLyog
Y2hlY2sgdG8gc2VlIGlmIGdldGN3ZCBleGlzdHMKICovCkBAIC05NCw2ICs5NSwxMyBAQAogKi8K
IAogI2RlZmluZSBDU1RBQ0tfQUREUkVTUyAwCisjZGVmaW5lIENTVEFDS19ESVJFQ1RJT04gMAor
I2RlZmluZSBDU1RBQ0tfQUxJR05NRU5UIDAKKyNkZWZpbmUgQ1NUQUNLX1RPUCAwCisjZGVmaW5l
IENTVEFDS19SQU5HRSAwCisjZGVmaW5lIFNIQVJFRF9MSUJfSEVBUF9DRUlMSU5HIDAKKyN1bmRl
ZiBJTV9GSVhfQkFTRQorI3VuZGVmIElNX0ZJWF9MSU0KIAogLyogZGVmaW5lIGlmIFNJR1NZUyBp
cyBkZWZpbmVkIGluIHNpZ25hbC5oICovCiAKQEAgLTI1MSwzICsyNTksNCBAQAogI3VuZGVmIEhP
U1RfU1lTVEVNCiAjdW5kZWYgR0NMX0dQUk9GX1NUQVJUCiAjdW5kZWYgSFoKKwpJbmRleDogY29u
ZmlndXJlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvY29uZmlndXJlLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjEwNy40LjEuMi4yLjIuNDguMi4zLjIuMS40LjIuNC4yCmRp
ZmYgLXUgLXIxLjEwNy40LjEuMi4yLjIuNDguMi4zLjIuMS40LjIuNC4yIGNvbmZpZ3VyZQotLS0g
Y29uZmlndXJlCTE1IEphbiAyMDA1IDE5OjE3OjE3IC0wMDAwCTEuMTA3LjQuMS4yLjIuMi40OC4y
LjMuMi4xLjQuMi40LjIKKysrIGNvbmZpZ3VyZQkzIEp1biAyMDA1IDA0OjA1OjIyIC0wMDAwCkBA
IC0xMiwyMCArMTIsMjQgQEAKIGFjX2RlZmF1bHRfcHJlZml4PS91c3IvbG9jYWwKICMgQW55IGFk
ZGl0aW9ucyBmcm9tIGNvbmZpZ3VyZS5pbjoKIGFjX2hlbHA9IiRhY19oZWxwCi0gLS1lbmFibGUt
bWF4cGFnZT1YWFhYIHdpbGwgY29tcGlsZSBpbiBhIHBhZ2UgdGFibGUgb2Ygc2l6ZSBYWFggKGVn
ICctLWVuYWJsZS1tYXhwYWdlPTY0KjEwMjQnIHdvdWxkIGdpdmUgNjRLIHBhZ2VzIGFsbG93aW5n
IDI1NiBNQiBpZiBwYWdlcyBhcmUgNEsgZWFjaCkgIgorIC0tZW5hYmxlLW1heHBhZ2U9WFhYWCB3
aWxsIGNvbXBpbGUgaW4gYSBwYWdlIHRhYmxlIG9mIHNpemUgWFhYIChlZyAnLS1lbmFibGUtbWF4
cGFnZT02NCoxMDI0JyB3b3VsZCBnaXZlIDY0SyBwYWdlcyBhbGxvd2luZyAyNTYgTUIgaWYgcGFn
ZXMgYXJlIDRLIGVhY2gpIgogYWNfaGVscD0iJGFjX2hlbHAKLSAtLWVuYWJsZS1ob2xlcGFnZT1Y
WFhYIHdpbGwgY29tcGlsZSBpbiBhIFhYWC1zaXplZCBob2xlIGJldHdlZW4gdGhlIGhlYXAgYW5k
IHJlbG9jYXRhYmxlIG1lbW9yeSBhcmVhIChlZyAnLS1lbmFibGUtaG9sZXBhZ2U9NjQqMTAyNCcg
d291bGQgZ2l2ZSA2NEsgcGFnZXMgYWxsb3dpbmcgMjU2IE1CIGlmIHBhZ2VzIGFyZSA0SyBlYWNo
KSAiCisgLS1lbmFibGUtaG9sZWRpdj1YWFhYIHdpbGwgc3BlY2lmeSB0aGF0IDEvWFhYWCBvZiB0
aGUgY29yZSBzaG91bGQgYmUgdXNlZCBhcyB0aGUgaG9sZSBiZXR3ZWVuIHRoZSBoZWFwIGFuZCBy
ZWxvY2F0YWJsZSBtZW1vcnkgYXJlYSIKIGFjX2hlbHA9IiRhY19oZWxwCi0gLS1lbmFibGUtdnNz
aXplPVhYWFggd2lsbCBjb21waWxlIGluIGEgdmFsdWUgc3RhY2sgb2Ygc2l6ZSBYWFggIgorIC0t
ZW5hYmxlLXZzc2l6ZT1YWFhYIHdpbGwgY29tcGlsZSBpbiBhIHZhbHVlIHN0YWNrIG9mIHNpemUg
WFhYIgogYWNfaGVscD0iJGFjX2hlbHAKLSAtLWVuYWJsZS1iZHNzaXplPVhYWFggd2lsbCBjb21w
aWxlIGluIGEgYmluZGluZyBzdGFjayBvZiBzaXplIFhYWCAiCisgLS1lbmFibGUtYmRzc2l6ZT1Y
WFhYIHdpbGwgY29tcGlsZSBpbiBhIGJpbmRpbmcgc3RhY2sgb2Ygc2l6ZSBYWFgiCiBhY19oZWxw
PSIkYWNfaGVscAotIC0tZW5hYmxlLWloc3NpemU9WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSBpbnZv
Y2F0aW9uIGhpc3Rvcnkgc3RhY2sgb2Ygc2l6ZSBYWFggIgorIC0tZW5hYmxlLWloc3NpemU9WFhY
WCB3aWxsIGNvbXBpbGUgaW4gYSBpbnZvY2F0aW9uIGhpc3Rvcnkgc3RhY2sgb2Ygc2l6ZSBYWFgi
CiBhY19oZWxwPSIkYWNfaGVscAotIC0tZW5hYmxlLWZyc3NpemU9WFhYWCB3aWxsIGNvbXBpbGUg
aW4gYSBmcmFtZSBzdGFjayBvZiBzaXplIFhYWCAiCisgLS1lbmFibGUtZnJzc2l6ZT1YWFhYIHdp
bGwgY29tcGlsZSBpbiBhIGZyYW1lIHN0YWNrIG9mIHNpemUgWFhYIgorYWNfaGVscD0iJGFjX2hl
bHAKKyAtLWVuYWJsZS1jc3NpemU9WFhYWCBwcm9kdWNlcyBleGVjdXRhYmxlcyB3aXRoIGEgQyBz
dGFjayBvZiBzaXplIFhYWCIKIGFjX2hlbHA9IiRhY19oZWxwCiAgLS1lbmFibGUtbWFjaGluZT1Y
WFhYIHdpbGwgZm9yY2UgdGhlIHVzZSBvZiBvbmUgb2YgdGhlIGRlZmluaXRpb25zIGluIGgvWFhY
WC5kZWZzICIKIGFjX2hlbHA9IiRhY19oZWxwCisgLS1lbmFibGUtaW1tZml4PVhYWFggd2lsbCBl
bmFibGUgYW4gaW1tZWRpYXRlIGZpeG51bSB0YWJsZSBhYm92ZSB0aGUgQyBzdGFjayIKK2FjX2hl
bHA9IiRhY19oZWxwCiAgLS1lbmFibGUtbm90aWZ5PW5vIHdpbGwgZGlzYWJsZSB0aGUgYXV0b21h
dGljIG5vdGlmaWNhdGlvbiBvZiBnY2wgbWFpbnRhaW5lcnMgb2Ygc3VjY2Vzc2Z1bCBidWlsZHMv
cHJvYmxlbXMgIgogYWNfaGVscD0iJGFjX2hlbHAKICAtLWVuYWJsZS10a2NvbmZpZz1YWFhYIHdp
bGwgZm9yY2UgdGhlIHVzZSBvZiBhIFRLX0NPTkZJR19QUkVGSVg9WFhYWFggYXMgcGxhY2UgdG8g
bG9vayBmb3IgdGtDb25maWcuc2ggYW5kIHRjbENvbmZpZy5zaCAgIgpAQCAtNjAyLDY1ICs2MDYs
MTAyIEBACiAjCiAKIGhlbHA9Ii0tZW5hYmxlLW1heHBhZ2U9WFhYWCB3aWxsIGNvbXBpbGUgaW4g
YSBwYWdlIHRhYmxlIG9mIHNpemUgWFhYIChkZWZhdWx0ICR7ZGVmYXVsdF9tYXhwYWdlfSkiCisK
KwogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1heHBhZ2Ugb3IgLS1kaXNhYmxlLW1heHBhZ2Ug
d2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfbWF4cGFnZStzZXR9IiA9IHNldDsgdGhlbgog
ICBlbmFibGV2YWw9IiRlbmFibGVfbWF4cGFnZSIKLSAgY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YK
KyAgOgorZWxzZQorICBlbmFibGVfbWF4cGFnZT0xMzEwNzIKK2ZpCisKK2NhdCA+PiBjb25mZGVm
cy5oIDw8RU9GCiAjZGVmaW5lIE1BWFBBR0UgJGVuYWJsZV9tYXhwYWdlCiBFT0YKIAotZmkKIAog
Ci0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtaG9sZXBhZ2Ugb3IgLS1kaXNhYmxlLWhvbGVwYWdl
IHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2hvbGVwYWdlK3NldH0iID0gc2V0OyB0aGVu
Ci0gIGVuYWJsZXZhbD0iJGVuYWJsZV9ob2xlcGFnZSIKLSAgY2F0ID4+IGNvbmZkZWZzLmggPDxF
T0YKLSNkZWZpbmUgSE9MRVBBR0UgJGVuYWJsZV9ob2xlcGFnZQorIyBDaGVjayB3aGV0aGVyIC0t
ZW5hYmxlLWhvbGVkaXYgb3IgLS1kaXNhYmxlLWhvbGVkaXYgd2FzIGdpdmVuLgoraWYgdGVzdCAi
JHtlbmFibGVfaG9sZWRpditzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVf
aG9sZWRpdiIKKyAgOgorZWxzZQorICBlbmFibGVfaG9sZWRpdj0xMAorZmkKKworY2F0ID4+IGNv
bmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgSE9MRURJViAkZW5hYmxlX2hvbGVkaXYKIEVPRgogCi1m
aQogCiAKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS12c3NpemUgb3IgLS1kaXNhYmxlLXZzc2l6
ZSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV92c3NpemUrc2V0fSIgPSBzZXQ7IHRoZW4K
ICAgZW5hYmxldmFsPSIkZW5hYmxlX3Zzc2l6ZSIKLSAgY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YK
KyAgOgorZWxzZQorICBlbmFibGVfdnNzaXplPTEzMTA3MgorZmkKKworY2F0ID4+IGNvbmZkZWZz
LmggPDxFT0YKICNkZWZpbmUgVlNTSVpFICRlbmFibGVfdnNzaXplCiBFT0YKIAotZmkKIAogCiAj
IENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYmRzc2l6ZSBvciAtLWRpc2FibGUtYmRzc2l6ZSB3YXMg
Z2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9iZHNzaXplK3NldH0iID0gc2V0OyB0aGVuCiAgIGVu
YWJsZXZhbD0iJGVuYWJsZV9iZHNzaXplIgotICBjYXQgPj4gY29uZmRlZnMuaCA8PEVPRgorICA6
CitlbHNlCisgIGVuYWJsZV9iZHNzaXplPTIwNDgKK2ZpCisKK2NhdCA+PiBjb25mZGVmcy5oIDw8
RU9GCiAjZGVmaW5lIEJEU1NJWkUgJGVuYWJsZV9iZHNzaXplCiBFT0YKIAotZmkKIAogCiAjIENo
ZWNrIHdoZXRoZXIgLS1lbmFibGUtaWhzc2l6ZSBvciAtLWRpc2FibGUtaWhzc2l6ZSB3YXMgZ2l2
ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9paHNzaXplK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJs
ZXZhbD0iJGVuYWJsZV9paHNzaXplIgotICBjYXQgPj4gY29uZmRlZnMuaCA8PEVPRgorICA6Citl
bHNlCisgIGVuYWJsZV9paHNzaXplPTQwOTYKK2ZpCisKK2NhdCA+PiBjb25mZGVmcy5oIDw8RU9G
CiAjZGVmaW5lIElIU1NJWkUgJGVuYWJsZV9paHNzaXplCiBFT0YKIAotZmkKLQogCiAjIENoZWNr
IHdoZXRoZXIgLS1lbmFibGUtZnJzc2l6ZSBvciAtLWRpc2FibGUtZnJzc2l6ZSB3YXMgZ2l2ZW4u
CiBpZiB0ZXN0ICIke2VuYWJsZV9mcnNzaXplK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZh
bD0iJGVuYWJsZV9mcnNzaXplIgotICBjYXQgPj4gY29uZmRlZnMuaCA8PEVPRgorICA6CitlbHNl
CisgIGVuYWJsZV9mcnNzaXplPTQwOTYKK2ZpCisKK2NhdCA+PiBjb25mZGVmcy5oIDw8RU9GCiAj
ZGVmaW5lIEZSU1NJWkUgJGVuYWJsZV9mcnNzaXplCiBFT0YKIAorCisjIENoZWNrIHdoZXRoZXIg
LS1lbmFibGUtY3NzaXplIG9yIC0tZGlzYWJsZS1jc3NpemUgd2FzIGdpdmVuLgoraWYgdGVzdCAi
JHtlbmFibGVfY3NzaXplK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9j
c3NpemUiCisgIDoKK2Vsc2UKKyAgZW5hYmxlX2Nzc2l6ZT04Mzg4NjA4CiBmaQogCitjYXQgPj4g
Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBDU1NJWkUgJGVuYWJsZV9jc3NpemUKK0VPRgorCiAK
ICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tYWNoaW5lIG9yIC0tZGlzYWJsZS1tYWNoaW5lIHdh
cyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX21hY2hpbmUrc2V0fSIgPSBzZXQ7IHRoZW4KQEAg
LTY3MSw2ICs3MTIsMTUgQEAKIGZpCiAKIAorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWltbWZp
eCBvciAtLWRpc2FibGUtaW1tZml4IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2ltbWZp
eCtzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfaW1tZml4IgorICA6Citl
bHNlCisgIGVuYWJsZV9pbW1maXg9eWVzCitmaQorCisKICNBQ19BUkdfRU5BQkxFKGdtcCxbIC0t
ZW5hYmxlLWdtcD1ubyB3aWxsIGRpc2FibGUgdXNlIG9mIEdNUCBnbnUgbXVsdGlwcmVjaXNpb24g
YXJpdGhtZXRpYywgKGRlZmF1bHQgaXMgPXllcyldICwKICNbdXNlX2dtcD0kZW5hYmxldmFsXSxb
dXNlX2dtcD0ieWVzIl0pCiAKQEAgLTc4Miw3ICs4MzIsNyBAQAogZmkKIAogZWNobyAkYWNfbiAi
Y2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1
cmU6Nzg2OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo4
MzY6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQogCiBob3N0X2FsaWFzPSRob3N0CiBj
YXNlICIkaG9zdF9hbGlhcyIgaW4KQEAgLTExOTUsNyArMTI0NSw3IEBACiAjIEV4dHJhY3QgdGhl
IGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy
Z3MuCiBzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Ig
JGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjExOTk6IGNoZWNraW5n
IGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MTI0OTogY2hlY2tpbmcgZm9yICRh
Y193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytz
ZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYK
IGVsc2UKQEAgLTEyMjUsNyArMTI3NSw3IEBACiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBv
ZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15
IGNjOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAk
YWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjEyMjk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIg
PiY1CitlY2hvICJjb25maWd1cmU6MTI3OTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlm
IGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9J2BcIiA9IHNldCI7
IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTEyNzYs
NyArMTMyNiw3IEBACiAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNsIiwgc28g
aXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBjbDsgYWNfd29y
ZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYK
LWVjaG8gImNvbmZpZ3VyZToxMjgwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAi
Y29uZmlndXJlOjEzMzA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0
IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVj
aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xMzA4LDcgKzEzNTgsNyBA
QAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJEND
ICRDRkxBR1MgJExERkxBR1MpIHdvcmtzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3Vy
ZToxMzEyOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERG
TEFHUykgd29ya3MiID4mNQorZWNobyAiY29uZmlndXJlOjEzNjI6IGNoZWNraW5nIHdoZXRoZXIg
dGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSB3b3JrcyIgPiY1CiAKIGFjX2V4
dD1jCiAjIENGTEFHUyBpcyBub3QgaW4gYWNfY3BwIGJlY2F1c2UgLWcsIC1PLCBldGMuIGFyZSBu
b3QgdmFsaWQgY3BwIG9wdGlvbnMuCkBAIC0xMzE5LDEyICsxMzY5LDEyIEBACiAKIGNhdCA+IGNv
bmZ0ZXN0LiRhY19leHQgPDwgRU9GCiAKLSNsaW5lIDEzMjMgImNvbmZpZ3VyZSIKKyNsaW5lIDEz
NzMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBtYWluKCl7cmV0dXJuKDAp
O30KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMzI4OiBcIiRhY19saW5rXCIpIDE+
JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4
dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTM3ODogXCIkYWNfbGlua1wiKSAx
PiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVl
eHR9OyB0aGVuCiAgIGFjX2N2X3Byb2dfY2Nfd29ya3M9eWVzCiAgICMgSWYgd2UgY2FuJ3QgcnVu
IGEgdHJpdmlhbCBwcm9ncmFtLCB3ZSBhcmUgcHJvYmFibHkgdXNpbmcgYSBjcm9zcyBjb21waWxl
ci4KICAgaWYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsOyB0aGVuCkBAIC0xMzUwLDEy
ICsxNDAwLDEyIEBACiAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogaW5zdGFsbGF0aW9uIG9y
IGNvbmZpZ3VyYXRpb24gcHJvYmxlbTogQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFi
bGVzLiIgMT4mMjsgZXhpdCAxOyB9CiBmaQogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0
aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIGlzIGEgY3Jvc3MtY29tcGlsZXIi
Ii4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjEzNTQ6IGNoZWNraW5nIHdoZXRoZXIg
dGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNvbXBpbGVy
IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNDA0OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBp
bGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIgPiY1CiBlY2hv
ICIkYWNfdCIiJGFjX2N2X3Byb2dfY2NfY3Jvc3MiIDE+JjYKIGNyb3NzX2NvbXBpbGluZz0kYWNf
Y3ZfcHJvZ19jY19jcm9zcwogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1
c2luZyBHTlUgQyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTM1OTogY2hlY2tp
bmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiID4mNQorZWNobyAiY29uZmlndXJlOjE0MDk6
IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiA+JjUKIGlmIGV2YWwgInRlc3Qg
XCJgZWNobyAnJCcneydhY19jdl9wcm9nX2djYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVj
aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xMzY0LDcgKzE0MTQsNyBA
QAogICB5ZXM7CiAjZW5kaWYKIEVPRgotaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1FIGNvbmZ0ZXN0
LmMnOyB7IChldmFsIGVjaG8gY29uZmlndXJlOjEzNjg6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZh
bCAkYWNfdHJ5KSAyPiY1OyB9OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4mMTsgdGhlbgor
aWYgeyBhY190cnk9JyR7Q0MtY2N9IC1FIGNvbmZ0ZXN0LmMnOyB7IChldmFsIGVjaG8gY29uZmln
dXJlOjE0MTg6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9IHwg
ZWdyZXAgeWVzID4vZGV2L251bGwgMj4mMTsgdGhlbgogICBhY19jdl9wcm9nX2djYz15ZXMKIGVs
c2UKICAgYWNfY3ZfcHJvZ19nY2M9bm8KQEAgLTEzODMsNyArMTQzMyw3IEBACiBhY19zYXZlX0NG
TEFHUz0iJENGTEFHUyIKIENGTEFHUz0KIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgJHtD
Qy1jY30gYWNjZXB0cyAtZyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTM4Nzog
Y2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiA+JjUKK2VjaG8gImNvbmZpZ3Vy
ZToxNDM3OiBjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciID4mNQogaWYgZXZh
bCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfY2NfZycrc2V0fSdgXCIgPSBzZXQiOyB0
aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xNDE1LDcg
KzE0NjUsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBw
cmVwcm9jZXNzb3IiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE0MTk6IGNoZWNr
aW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTox
NDY5OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIgPiY1CiAjIE9uIFN1
bnMsIHNvbWV0aW1lcyAkQ1BQIG5hbWVzIGEgZGlyZWN0b3J5LgogaWYgdGVzdCAtbiAiJENQUCIg
JiYgdGVzdCAtZCAiJENQUCI7IHRoZW4KICAgQ1BQPQpAQCAtMTQzMCwxMyArMTQ4MCwxMyBAQAog
ICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVy
J3MgcGFyc2VyLAogICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLgogICBjYXQgPiBjb25mdGVzdC4k
YWNfZXh0IDw8RU9GCi0jbGluZSAxNDM0ICJjb25maWd1cmUiCisjbGluZSAxNDg0ICJjb25maWd1
cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxhc3NlcnQuaD4KIFN5bnRheCBF
cnJvcgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+
Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDQwOiBcIiRhY190cnlcIikg
MT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDkw
OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVw
IC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQi
YAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgOgpAQCAtMTQ0NywxMyArMTQ5NywxMyBA
QAogICBybSAtcmYgY29uZnRlc3QqCiAgIENQUD0iJHtDQy1jY30gLUUgLXRyYWRpdGlvbmFsLWNw
cCIKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMTQ1MSAiY29uZmlndXJl
IgorI2xpbmUgMTUwMSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVk
ZSA8YXNzZXJ0Lmg+CiBTeW50YXggRXJyb3IKIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0
LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1
cmU6MTQ1NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2
YWwgZWNobyBjb25maWd1cmU6MTUwNzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkp
IDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAi
XmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIDoK
QEAgLTE0NjQsMTMgKzE1MTQsMTMgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBDUFA9IiR7Q0Mt
Y2N9IC1ub2xvZ28gLUUiCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDE0
NjggImNvbmZpZ3VyZSIKKyNsaW5lIDE1MTggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVm
cy5oIgogI2luY2x1ZGUgPGFzc2VydC5oPgogU3ludGF4IEVycm9yCiBFT0YKIGFjX3RyeT0iJGFj
X2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFs
IGVjaG8gY29uZmlndXJlOjE0NzQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAy
PiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjE1MjQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAo
ZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91
dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJy
IjsgdGhlbgogICA6CkBAIC0xNTQzLDcgKzE1OTMsNyBAQAogIyBFeHRyYWN0IHRoZSBmaXJzdCB3
b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3Mu
CiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZv
ciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTU0NzogY2hlY2tp
bmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNTk3OiBjaGVja2luZyBmb3Ig
JGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQVdL
JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+
JjYKIGVsc2UKQEAgLTE1ODMsNyArMTYzMyw3IEBACiBFT0YKIAogCWVjaG8gJGFjX24gImNoZWNr
aW5nIGZvciB0ZXh0IHN0YXJ0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNTg3
OiBjaGVja2luZyBmb3IgdGV4dCBzdGFydCIgPiY1CitlY2hvICJjb25maWd1cmU6MTYzNzogY2hl
Y2tpbmcgZm9yIHRleHQgc3RhcnQiID4mNQogCWVjaG8gJ2ludCBtYWluICgpIHtyZXR1cm4oMCk7
fScgPmZvby5jCiAJJENDIGZvby5jIC1vIGZvbwogCUdDTF9HUFJPRl9TVEFSVD1gbm0gZm9vIHwg
JEFXSyAgJy8gICpUICAqX18qc3RhcnQkLyB7cHJpbnQgJE5GfSdgCkBAIC0xNjI0LDYgKzE2NzQs
MTAgQEAKIAljYXNlICR1c2UgaW4KICMJCWFtZDY0KikgIyBzdGFjay1ib3VuZGFyeSBvcHRpb24g
ZG9lcyBub3Qgd29yawogIwkJCVRDRkxBR1M9IiRUQ0ZMQUdTIC1tNjQgLW1wcmVmZXJyZWQtc3Rh
Y2stYm91bmRhcnk9OCI7OyAgCisjCQkzODYqKQorIwkJCVRDRkxBR1M9IiRUQ0ZMQUdTIC1tcHJl
ZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTIiOzsgIAorIwkJYW1kNjQqKQorIwkJCVRDRkxBR1M9IiRU
Q0ZMQUdTIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMiOzsgIAogCQlhbHBoYSopCiAJCQlU
Q0ZMQUdTPSIkVENGTEFHUyAtbWllZWUiOzsKICMJCW02OGsqKQpAQCAtMTY1OSw3ICsxNzEzLDcg
QEAKICMgdGhlcmUgYXJlIGEgZmV3IHN5c3RlbXMsIGxpa2UgTmV4dCwgd2hlcmUgdGhpcyBkb2Vz
bid0IHdvcmsuCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHN5c3RlbSB2ZXJzaW9uIChmb3IgZHlu
YW1pYyBsb2FkaW5nKSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTY2MzogY2hl
Y2tpbmcgc3lzdGVtIHZlcnNpb24gKGZvciBkeW5hbWljIGxvYWRpbmcpIiA+JjUKK2VjaG8gImNv
bmZpZ3VyZToxNzE3OiBjaGVja2luZyBzeXN0ZW0gdmVyc2lvbiAoZm9yIGR5bmFtaWMgbG9hZGlu
ZykiID4mNQogaWYgbWFjaGluZT1gdW5hbWUgLW1gIDsgdGhlbiB0cnVlOyBlbHNlIG1hY2hpbmU9
dW5rbm93biA7IGZpCiAKIGZvciBhY19wcm9nIGluIG1ha2VpbmZvCkBAIC0xNjY3LDcgKzE3MjEs
NyBAQAogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBi
ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9
JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1l
Y2hvICJjb25maWd1cmU6MTY3MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNv
bmZpZ3VyZToxNzI1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBc
ImBlY2hvICckJyd7J2FjX2N2X3Byb2dfTUFLRUlORk8nK3NldH0nYFwiID0gc2V0IjsgdGhlbgog
ICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTcyNCwxNyArMTc3
OCwxNyBAQAogCiBhY19zYWZlPWBlY2hvICJ1bmlzdGQuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdg
CiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgdW5pc3RkLmgiIi4uLiAkYWNfYyIgMT4mNgotZWNo
byAiY29uZmlndXJlOjE3Mjg6IGNoZWNraW5nIGZvciB1bmlzdGQuaCIgPiY1CitlY2hvICJjb25m
aWd1cmU6MTc4MjogY2hlY2tpbmcgZm9yIHVuaXN0ZC5oIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJg
ZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgog
ICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVz
dC4kYWNfZXh0IDw8RU9GCi0jbGluZSAxNzMzICJjb25maWd1cmUiCisjbGluZSAxNzg3ICJjb25m
aWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDx1bmlzdGQuaD4KIEVPRgog
YWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91
dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MTczODogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFs
ICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTc5MjogXCIkYWNfdHJ5
XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycg
Y29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3Qg
LXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTE3NTEsNyArMTgwNSw3
IEBACiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9oZWFkZXJfJyRhY19zYWZlYFwiID0g
eWVzIjsgdGhlbgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiAgIGVjaG8gJGFjX24gImNoZWNr
aW5nIGZvciBzeXNjb25mIGluIC1sYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6
MTc1NTogY2hlY2tpbmcgZm9yIHN5c2NvbmYgaW4gLWxjIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTox
ODA5OiBjaGVja2luZyBmb3Igc3lzY29uZiBpbiAtbGMiID4mNQogYWNfbGliX3Zhcj1gZWNobyBj
J18nc3lzY29uZiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAn
JCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hv
ICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMTc1OSw3ICsxODEzLDcgQEAKICAgYWNf
c2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sYyAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNf
ZXh0IDw8RU9GCi0jbGluZSAxNzYzICJjb25maWd1cmUiCisjbGluZSAxODE3ICJjb25maWd1cmUi
CiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHBy
b3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGlu
dCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0xNzcwLDcgKzE4MjQs
NyBAQAogc3lzY29uZigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25m
aWd1cmU6MTc3NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm
JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29u
ZmlndXJlOjE4Mjg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0g
JiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3Qq
CiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0xNzg2LDEyICsx
ODQwLDEyIEBACiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9saWJfJyRhY19saWJfdmFy
YFwiID0geWVzIjsgdGhlbgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiAgIGVjaG8gJGFjX24g
ImNoZWNraW5nICJmb3IgX1NDX0NMS19UQ0siIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZp
Z3VyZToxNzkwOiBjaGVja2luZyAiZm9yIF9TQ19DTEtfVENLIiIgPiY1CitlY2hvICJjb25maWd1
cmU6MTg0NDogY2hlY2tpbmcgImZvciBfU0NfQ0xLX1RDSyIiID4mNQogCQlpZiB0ZXN0ICIkY3Jv
c3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBoej0wCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0
LiRhY19leHQgPDxFT0YKLSNsaW5lIDE3OTUgImNvbmZpZ3VyZSIKKyNsaW5lIDE4NDkgImNvbmZp
Z3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCQkgICAg
ICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTE4MDMsNyArMTg1Nyw3IEBACiAJCQkgICAg
ICAgIHJldHVybiAwOwogCQkJICAgIH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTox
ODA3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3Qg
LXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxs
CitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE4NjE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2
YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAo
Li9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgaHo9YGNhdCBjb25mdGVzdDFg
CiAJCQkgICAgY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YKQEAgLTE4NDcsMTcgKzE5MDEsMTcgQEAK
ICBpZiB0ZXN0ICIkZW5hYmxlX2R5bnN5c2dtcCIgPSAieWVzIiA7IHRoZW4KIAlhY19zYWZlPWBl
Y2hvICJnbXAuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBm
b3IgZ21wLmgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE4NTE6IGNoZWNraW5n
IGZvciBnbXAuaCIgPiY1CitlY2hvICJjb25maWd1cmU6MTkwNTogY2hlY2tpbmcgZm9yIGdtcC5o
IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUn
K3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4m
NgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAxODU2ICJjb25m
aWd1cmUiCisjbGluZSAxOTEwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNp
bmNsdWRlIDxnbXAuaD4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9k
ZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MTg2MTogXCIk
YWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25m
aWd1cmU6MTkxNTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFj
X2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7
YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVz
dCoKQEAgLTE4NzQsNyArMTkyOCw3IEBACiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9o
ZWFkZXJfJyRhY19zYWZlYFwiID0geWVzIjsgdGhlbgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2
CiAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBfX2dtcHpfaW5pdCBpbiAtbGdtcCIiLi4uICRh
Y19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTg3ODogY2hlY2tpbmcgZm9yIF9fZ21wel9pbml0
IGluIC1sZ21wIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxOTMyOiBjaGVja2luZyBmb3IgX19nbXB6
X2luaXQgaW4gLWxnbXAiID4mNQogYWNfbGliX3Zhcj1gZWNobyBnbXAnXydfX2dtcHpfaW5pdCB8
IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9s
aWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2Fj
aGVkKSAkYWNfYyIgMT4mNgpAQCAtMTg4Miw3ICsxOTM2LDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIk
TElCUyIKIExJQlM9Ii1sZ21wICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YK
LSNsaW5lIDE4ODYgImNvbmZpZ3VyZSIKKyNsaW5lIDE5NDAgImNvbmZpZ3VyZSIKICNpbmNsdWRl
ICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRv
IGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1h
dGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTE4OTMsNyArMTk0Nyw3IEBACiBfX2dt
cHpfaW5pdCgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6
MTg5NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0
IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjE5NTE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVz
dCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2
YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0xOTA5LDEyICsxOTYzLDEy
IEBACiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9saWJfJyRhY19saWJfdmFyYFwiID0g
eWVzIjsgdGhlbgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiAgIGVjaG8gJGFjX24gImNoZWNr
aW5nICJmb3IgZXh0ZXJuYWwgZ21wIHZlcnNpb24iIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNv
bmZpZ3VyZToxOTEzOiBjaGVja2luZyAiZm9yIGV4dGVybmFsIGdtcCB2ZXJzaW9uIiIgPiY1Citl
Y2hvICJjb25maWd1cmU6MTk2NzogY2hlY2tpbmcgImZvciBleHRlcm5hbCBnbXAgdmVyc2lvbiIi
ID4mNQogCQkJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgZWNobyAi
Q2Fubm90IHVzZSBkeW5hbWljIGdtcCBsaWIiIAogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNf
ZXh0IDw8RU9GCi0jbGluZSAxOTE4ICJjb25maWd1cmUiCisjbGluZSAxOTcyICJjb25maWd1cmUi
CiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxnbXAuaD4KIAkJCQkgICAgaW50IG1h
aW4oKSB7CkBAIC0xOTI1LDcgKzE5NzksNyBAQAogCQkJCSAgICAjZW5kaWYKIAkJCQkgICAgfQog
RU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE5Mjk6IFwiJGFjX2xpbmtcIikgMT4mNTsg
KGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAm
JiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1
cmU6MTk4MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0
ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYv
bnVsbAogdGhlbgogICAjCQkJCU1QRklMRVM9JEdNUERJUi9tcG4vbXVsX24ubwogIwkJCQlQQVRD
SEVEX1NZTUJPTFM9X19nbXBuX3Rvb20zX211bF9uCkBAIC0xOTcyLDcgKzIwMjYsNyBAQAogaWYg
dGVzdCAiJE5FRURfTE9DQUxfR01QIiAhPSAiIiA7IHRoZW4JCQkKIAogCSBlY2hvICRhY19uICJj
aGVja2luZyB1c2VfZ21wPXllcywgZG9pbmcgY29uZmlndXJlIGluIGdtcCBkaXJlY3RvcnkiIi4u
LiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE5NzY6IGNoZWNraW5nIHVzZV9nbXA9eWVz
LCBkb2luZyBjb25maWd1cmUgaW4gZ21wIGRpcmVjdG9yeSIgPiY1CitlY2hvICJjb25maWd1cmU6
MjAzMDogY2hlY2tpbmcgdXNlX2dtcD15ZXMsIGRvaW5nIGNvbmZpZ3VyZSBpbiBnbXAgZGlyZWN0
b3J5IiA+JjUKIAkgZWNobwogCSBlY2hvICIjIgogCSBlY2hvICIjIgpAQCAtMjAwNCw3ICsyMDU4
LDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nICJmb3IgbGVhZGluZyB1bmRlcnNjb3Jl
IGluIG9iamVjdCBzeW1ib2xzIiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjAw
ODogY2hlY2tpbmcgImZvciBsZWFkaW5nIHVuZGVyc2NvcmUgaW4gb2JqZWN0IHN5bWJvbHMiIiA+
JjUKK2VjaG8gImNvbmZpZ3VyZToyMDYyOiBjaGVja2luZyAiZm9yIGxlYWRpbmcgdW5kZXJzY29y
ZSBpbiBvYmplY3Qgc3ltYm9scyIiID4mNQogY2F0PmZvby5jIDw8RU9GRgogI2luY2x1ZGUgPG1h
dGguaD4KIGludCBtYWluKCkge2RvdWJsZSBkPTAuMDtjb3MoZCk7cmV0dXJuIDA7fQpAQCAtMjAx
OCw3ICsyMDcyLDcgQEAKIAllY2hvICIkYWNfdCIiIm5vIiIgMT4mNgogZmkKIGVjaG8gJGFjX24g
ImNoZWNraW5nICJmb3IgR05VIGxkIG9wdGlvbiAtTWFwIiIiLi4uICRhY19jIiAxPiY2Ci1lY2hv
ICJjb25maWd1cmU6MjAyMjogY2hlY2tpbmcgImZvciBHTlUgbGQgb3B0aW9uIC1NYXAiIiA+JjUK
K2VjaG8gImNvbmZpZ3VyZToyMDc2OiBjaGVja2luZyAiZm9yIEdOVSBsZCBvcHRpb24gLU1hcCIi
ID4mNQogdG91Y2ggbWFwCiAkQ0MgLW8gZm9vICAtV2wsLU1hcCAgbWFwIGZvby5vID4vZGV2L251
bGwgMj4mMQogaWYgdGVzdCBgY2F0IG1hcCB8IHdjIC1sYCAhPSAiMCIgOyB0aGVuCkBAIC0yMDM1
LDEyICsyMDg5LDEyIEBACiBybSAtZiBmb28uYyBmb28ubyBmb28gbWFwCiAKICBlY2hvICRhY19u
ICJjaGVja2luZyAiZm9yIHNpemUgb2YgZ21wIGxpbWJzIiIiLi4uICRhY19jIiAxPiY2Ci1lY2hv
ICJjb25maWd1cmU6MjAzOTogY2hlY2tpbmcgImZvciBzaXplIG9mIGdtcCBsaW1icyIiID4mNQor
ZWNobyAiY29uZmlndXJlOjIwOTM6IGNoZWNraW5nICJmb3Igc2l6ZSBvZiBnbXAgbGltYnMiIiA+
JjUKICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBtcHNpemU9MAog
ZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyMDQ0ICJjb25maWd1
cmUiCisjbGluZSAyMDk4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNs
dWRlIDxzdGRpby5oPgogCSNpbmNsdWRlICIkTVBfSU5DTFVERSIKQEAgLTIwNTEsNyArMjEwNSw3
IEBACiAJcmV0dXJuIDA7CiAJfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIwNTU6
IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj
b25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lm
IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjEwOTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAk
YWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2Nv
bmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBtcHNpemU9YGNhdCBjb25mdGVzdDFg
CiBlbHNlCkBAIC0yMDc0LDEyICsyMTI4LDEyIEBACiAgZWNobyAiJGFjX3QiIiRtcHNpemUiIDE+
JjYgCiAKICBlY2hvICRhY19uICJjaGVja2luZyAiX1NIT1JUX0xJTUIiIiIuLi4gJGFjX2MiIDE+
JjYKLWVjaG8gImNvbmZpZ3VyZToyMDc4OiBjaGVja2luZyAiX1NIT1JUX0xJTUIiIiA+JjUKK2Vj
aG8gImNvbmZpZ3VyZToyMTMyOiBjaGVja2luZyAiX1NIT1JUX0xJTUIiIiA+JjUKICBpZiB0ZXN0
ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBlY2hvICIkYWNfdCIibm8iIDE+JjYK
IGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjA4MyAiY29uZmln
dXJlIgorI2xpbmUgMjEzNyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5j
bHVkZSA8c3RkaW8uaD4KIAkjaW5jbHVkZSAiJE1QX0lOQ0xVREUiCkBAIC0yMDkxLDcgKzIxNDUs
NyBAQAogCSNlbmRpZgogCX0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyMDk1OiBc
IiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29u
ZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjIxNDk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25m
dGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9G
CiAjZGVmaW5lIF9fU0hPUlRfTElNQiAxCkBAIC0yMTA3LDEyICsyMTYxLDEyIEBACiBmaQogCiAg
ZWNobyAkYWNfbiAiY2hlY2tpbmcgIl9MT05HX0xPTkdfTElNQiIiIi4uLiAkYWNfYyIgMT4mNgot
ZWNobyAiY29uZmlndXJlOjIxMTE6IGNoZWNraW5nICJfTE9OR19MT05HX0xJTUIiIiA+JjUKK2Vj
aG8gImNvbmZpZ3VyZToyMTY1OiBjaGVja2luZyAiX0xPTkdfTE9OR19MSU1CIiIgPiY1CiAgaWYg
dGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgZWNobyAiJGFjX3QiIm5vIiAx
PiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDIxMTYgImNv
bmZpZ3VyZSIKKyNsaW5lIDIxNzAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgog
I2luY2x1ZGUgPHN0ZGlvLmg+CiAJI2luY2x1ZGUgIiRNUF9JTkNMVURFIgpAQCAtMjEyNCw3ICsy
MTc4LDcgQEAKIAkjZW5kaWYKIAl9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjEy
ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z
IGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAor
aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyMTgyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFs
ICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4v
Y29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIGNhdCA+PiBjb25mZGVmcy5oIDw8
XEVPRgogI2RlZmluZSBfX0xPTkdfTE9OR19MSU1CIDEKQEAgLTIxNjMsNyArMjIxNyw3IEBACiAj
IFVzZXMgYWNfIHZhcnMgYXMgdGVtcHMgdG8gYWxsb3cgY29tbWFuZCBsaW5lIHRvIG92ZXJyaWRl
IGNhY2hlIGFuZCBjaGVja3MuCiAjIC0td2l0aG91dC14IG92ZXJyaWRlcyBldmVyeXRoaW5nIGVs
c2UsIGJ1dCBkb2VzIG5vdCB0b3VjaCB0aGUgY2FjaGUuCiBlY2hvICRhY19uICJjaGVja2luZyBm
b3IgWCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjE2NzogY2hlY2tpbmcgZm9y
IFgiID4mNQorZWNobyAiY29uZmlndXJlOjIyMjE6IGNoZWNraW5nIGZvciBYIiA+JjUKIAogIyBD
aGVjayB3aGV0aGVyIC0td2l0aC14IG9yIC0td2l0aG91dC14IHdhcyBnaXZlbi4KIGlmIHRlc3Qg
IiR7d2l0aF94K3NldH0iID0gc2V0OyB0aGVuCkBAIC0yMjI1LDEyICsyMjc5LDEyIEBACiAKICAg
IyBGaXJzdCwgdHJ5IHVzaW5nIHRoYXQgZmlsZSB3aXRoIG5vIHNwZWNpYWwgZGlyZWN0b3J5IHNw
ZWNpZmllZC4KIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDIyMjkgImNvbmZp
Z3VyZSIKKyNsaW5lIDIyODMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2lu
Y2x1ZGUgPCR4X2RpcmVjdF90ZXN0X2luY2x1ZGU+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25m
dGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29u
ZmlndXJlOjIyMzQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7
IChldmFsIGVjaG8gY29uZmlndXJlOjIyODg6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNf
dHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAg
LXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgog
ICBybSAtcmYgY29uZnRlc3QqCkBAIC0yMjk5LDE0ICsyMzUzLDE0IEBACiAgIGFjX3NhdmVfTElC
Uz0iJExJQlMiCiAgIExJQlM9Ii1sJHhfZGlyZWN0X3Rlc3RfbGlicmFyeSAkTElCUyIKIGNhdCA+
IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDIzMDMgImNvbmZpZ3VyZSIKKyNsaW5lIDIz
NTcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKICR7
eF9kaXJlY3RfdGVzdF9mdW5jdGlvbn0oKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFs
IGVjaG8gY29uZmlndXJlOjIzMTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmsp
IDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZh
bCBlY2hvIGNvbmZpZ3VyZToyMzY0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5r
KSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJm
IGNvbmZ0ZXN0KgogICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgogIyBXZSBjYW4gbGluayBYIHByb2dy
YW1zIHdpdGggbm8gc3BlY2lhbCBsaWJyYXJ5IHBhdGguCkBAIC0yNDEyLDE3ICsyNDY2LDE3IEBA
CiAgICAgY2FzZSAiYCh1bmFtZSAtc3IpIDI+L2Rldi9udWxsYCIgaW4KICAgICAiU3VuT1MgNSIq
KQogICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAtUiBtdXN0IGJlIGZvbGxvd2Vk
IGJ5IGEgc3BhY2UiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0MTY6IGNoZWNr
aW5nIHdoZXRoZXIgLVIgbXVzdCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlIiA+JjUKK2VjaG8gImNv
bmZpZ3VyZToyNDcwOiBjaGVja2luZyB3aGV0aGVyIC1SIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBz
cGFjZSIgPiY1CiAgICAgICBhY194c2F2ZV9MSUJTPSIkTElCUyI7IExJQlM9IiRMSUJTIC1SJHhf
bGlicmFyaWVzIgogICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjQx
OSAiY29uZmlndXJlIgorI2xpbmUgMjQ3MyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZz
LmgiCiAKIGludCBtYWluKCkgewogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNo
byBjb25maWd1cmU6MjQyNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4m
NTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVj
aG8gY29uZmlndXJlOjI0ODA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+
JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29u
ZnRlc3QqCiAgIGFjX1Jfbm9zcGFjZT15ZXMKIGVsc2UKQEAgLTI0MzgsMTQgKzI0OTIsMTQgQEAK
ICAgICAgIGVsc2UKIAlMSUJTPSIkYWNfeHNhdmVfTElCUyAtUiAkeF9saWJyYXJpZXMiCiAJY2F0
ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjQ0MiAiY29uZmlndXJlIgorI2xpbmUg
MjQ5NiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewog
CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjQ0OTogXCIk
YWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0
ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI1MDM6IFwi
JGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25m
dGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGFjX1Jfc3BhY2U9
eWVzCiBlbHNlCkBAIC0yNDc3LDcgKzI1MzEsNyBAQAogICAgICMgbGlicmFyaWVzIHdlcmUgYnVp
bHQgd2l0aCBERUNuZXQgc3VwcG9ydC4gIEFuZCBrYXJsQGNzLnVtYi5lZHUgc2F5cwogICAgICMg
dGhlIEFscGhhIG5lZWRzIGRuZXRfc3R1YiAoZG5ldCBkb2VzIG5vdCBleGlzdCkuCiAgICAgZWNo
byAkYWNfbiAiY2hlY2tpbmcgZm9yIGRuZXRfbnRvYSBpbiAtbGRuZXQiIi4uLiAkYWNfYyIgMT4m
NgotZWNobyAiY29uZmlndXJlOjI0ODE6IGNoZWNraW5nIGZvciBkbmV0X250b2EgaW4gLWxkbmV0
IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNTM1OiBjaGVja2luZyBmb3IgZG5ldF9udG9hIGluIC1s
ZG5ldCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIGRuZXQnXydkbmV0X250b2EgfCBzZWQgJ3klLi8r
LSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJf
dmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2Mi
IDE+JjYKQEAgLTI0ODUsNyArMjUzOSw3IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJT
PSItbGRuZXQgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjQ4
OSAiY29uZmlndXJlIgorI2xpbmUgMjU0MyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZz
LmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4g
ZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJl
dHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMjQ5Niw3ICsyNTUwLDcgQEAKIGRuZXRfbnRvYSgpCiA7
IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjUwMDogXCIkYWNf
bGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0
JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI1NTQ6IFwiJGFj
X2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVz
dCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xp
Yl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0yNTE4LDcgKzI1NzIsNyBAQAogCiAgICAgaWYg
dGVzdCAkYWNfY3ZfbGliX2RuZXRfZG5ldF9udG9hID0gbm87IHRoZW4KICAgICAgIGVjaG8gJGFj
X24gImNoZWNraW5nIGZvciBkbmV0X250b2EgaW4gLWxkbmV0X3N0dWIiIi4uLiAkYWNfYyIgMT4m
NgotZWNobyAiY29uZmlndXJlOjI1MjI6IGNoZWNraW5nIGZvciBkbmV0X250b2EgaW4gLWxkbmV0
X3N0dWIiID4mNQorZWNobyAiY29uZmlndXJlOjI1NzY6IGNoZWNraW5nIGZvciBkbmV0X250b2Eg
aW4gLWxkbmV0X3N0dWIiID4mNQogYWNfbGliX3Zhcj1gZWNobyBkbmV0X3N0dWInXydkbmV0X250
b2EgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNf
Y3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAi
KGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTI1MjYsNyArMjU4MCw3IEBACiAgIGFjX3NhdmVfTElC
Uz0iJExJQlMiCiBMSUJTPSItbGRuZXRfc3R1YiAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNf
ZXh0IDw8RU9GCi0jbGluZSAyNTMwICJjb25maWd1cmUiCisjbGluZSAyNTg0ICJjb25maWd1cmUi
CiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHBy
b3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGlu
dCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0yNTM3LDcgKzI1OTEs
NyBAQAogZG5ldF9udG9hKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNv
bmZpZ3VyZToyNTQxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9
ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBj
b25maWd1cmU6MjU5NTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsg
fSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVz
dCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTI1NjYsMTIg
KzI2MjAsMTIgQEAKICAgICAjIFRoZSBuc2wgbGlicmFyeSBwcmV2ZW50cyBwcm9ncmFtcyBmcm9t
IG9wZW5pbmcgdGhlIFggZGlzcGxheQogICAgICMgb24gSXJpeCA1LjIsIGFjY29yZGluZyB0byBk
aWNrZXlAY2xhcmsubmV0LgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBnZXRob3N0Ynlu
YW1lIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNTcwOiBjaGVja2luZyBmb3Ig
Z2V0aG9zdGJ5bmFtZSIgPiY1CitlY2hvICJjb25maWd1cmU6MjYyNDogY2hlY2tpbmcgZm9yIGdl
dGhvc3RieW5hbWUiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNf
Z2V0aG9zdGJ5bmFtZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNo
ZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNs
aW5lIDI1NzUgImNvbmZpZ3VyZSIKKyNsaW5lIDI2MjkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJj
b25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQg
aG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNo
YXIgZ2V0aG9zdGJ5bmFtZSgpOyBiZWxvdy4gICovCkBAIC0yNTk0LDcgKzI2NDgsNyBAQAogCiA7
IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjU5ODogXCIkYWNf
bGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0
JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI2NTI6IFwiJGFj
X2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVz
dCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1
bmNfZ2V0aG9zdGJ5bmFtZT15ZXMiCiBlbHNlCkBAIC0yNjE1LDcgKzI2NjksNyBAQAogCiAgICAg
aWYgdGVzdCAkYWNfY3ZfZnVuY19nZXRob3N0YnluYW1lID0gbm87IHRoZW4KICAgICAgIGVjaG8g
JGFjX24gImNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lIGluIC1sbnNsIiIuLi4gJGFjX2MiIDE+
JjYKLWVjaG8gImNvbmZpZ3VyZToyNjE5OiBjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFtZSBpbiAt
bG5zbCIgPiY1CitlY2hvICJjb25maWd1cmU6MjY3MzogY2hlY2tpbmcgZm9yIGdldGhvc3RieW5h
bWUgaW4gLWxuc2wiID4mNQogYWNfbGliX3Zhcj1gZWNobyBuc2wnXydnZXRob3N0YnluYW1lIHwg
c2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xp
Yl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNo
ZWQpICRhY19jIiAxPiY2CkBAIC0yNjIzLDcgKzI2NzcsNyBAQAogICBhY19zYXZlX0xJQlM9IiRM
SUJTIgogTElCUz0iLWxuc2wgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgot
I2xpbmUgMjYyNyAiY29uZmlndXJlIgorI2xpbmUgMjY4MSAiY29uZmlndXJlIgogI2luY2x1ZGUg
ImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8g
YXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0
Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMjYzNCw3ICsyNjg4LDcgQEAKIGdldGhv
c3RieW5hbWUoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjI2Mzg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVz
dCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy
ZToyNjkyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRl
c3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBl
dmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMjY2NCwxMiArMjcxOCwx
MiBAQAogICAgICMgLWxzb2NrZXQgbXVzdCBiZSBnaXZlbiBiZWZvcmUgLWxuc2wgaWYgYm90aCBh
cmUgbmVlZGVkLgogICAgICMgV2UgYXNzdW1lIHRoYXQgaWYgY29ubmVjdCBuZWVkcyAtbG5zbCwg
c28gZG9lcyBnZXRob3N0YnluYW1lLgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBjb25u
ZWN0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNjY4OiBjaGVja2luZyBmb3Ig
Y29ubmVjdCIgPiY1CitlY2hvICJjb25maWd1cmU6MjcyMjogY2hlY2tpbmcgZm9yIGNvbm5lY3Qi
ID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfY29ubmVjdCcrc2V0
fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBl
bHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI2NzMgImNvbmZpZ3Vy
ZSIKKyNsaW5lIDI3MjcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lz
dGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90
b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY29ubmVjdCgpOyBiZWxv
dy4gICovCkBAIC0yNjkyLDcgKzI3NDYsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsg
KGV2YWwgZWNobyBjb25maWd1cmU6MjY5NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNf
bGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjI3NTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBy
bSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfY29ubmVjdD15ZXMiCiBlbHNlCkBA
IC0yNzEzLDcgKzI3NjcsNyBAQAogCiAgICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19jb25uZWN0ID0g
bm87IHRoZW4KICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBjb25uZWN0IGluIC1sc29j
a2V0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNzE3OiBjaGVja2luZyBmb3Ig
Y29ubmVjdCBpbiAtbHNvY2tldCIgPiY1CitlY2hvICJjb25maWd1cmU6Mjc3MTogY2hlY2tpbmcg
Zm9yIGNvbm5lY3QgaW4gLWxzb2NrZXQiID4mNQogYWNfbGliX3Zhcj1gZWNobyBzb2NrZXQnXydj
b25uZWN0IHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7
J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFj
X24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0yNzIxLDcgKzI3NzUsNyBAQAogICBhY19zYXZl
X0xJQlM9IiRMSUJTIgogTElCUz0iLWxzb2NrZXQgJFhfRVhUUkFfTElCUyAkTElCUyIKIGNhdCA+
IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI3MjUgImNvbmZpZ3VyZSIKKyNsaW5lIDI3
NzkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdj
YzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBj
aGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAg
LTI3MzIsNyArMjc4Niw3IEBACiBjb25uZWN0KCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAo
ZXZhbCBlY2hvIGNvbmZpZ3VyZToyNzM2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19s
aW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsg
KGV2YWwgZWNobyBjb25maWd1cmU6Mjc5MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNf
bGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJt
IC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UK
QEAgLTI3NTYsMTIgKzI4MTAsMTIgQEAKIAogICAgICMgZ29tZXpAbWkudW5pLWVybGFuZ2VuLmRl
IHNheXMgLWxwb3NpeCBpcyBuZWNlc3Nhcnkgb24gQS9VWC4KICAgICBlY2hvICRhY19uICJjaGVj
a2luZyBmb3IgcmVtb3ZlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNzYwOiBj
aGVja2luZyBmb3IgcmVtb3ZlIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyODE0OiBjaGVja2luZyBm
b3IgcmVtb3ZlIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX3Jl
bW92ZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19j
IiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI3NjUg
ImNvbmZpZ3VyZSIKKyNsaW5lIDI4MTkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5o
IgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5
IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgcmVtb3Zl
KCk7IGJlbG93LiAgKi8KQEAgLTI3ODQsNyArMjgzOCw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVP
RgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNzg4OiBcIiRhY19saW5rXCIpIDE+JjU7IChl
dmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRo
ZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mjg0MjogXCIkYWNfbGlua1wiKSAxPiY1OyAo
ZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0
aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY19yZW1vdmU9eWVzIgog
ZWxzZQpAQCAtMjgwNSw3ICsyODU5LDcgQEAKIAogICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfcmVt
b3ZlID0gbm87IHRoZW4KICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciByZW1vdmUgaW4g
LWxwb3NpeCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjgwOTogY2hlY2tpbmcg
Zm9yIHJlbW92ZSBpbiAtbHBvc2l4IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyODYzOiBjaGVja2lu
ZyBmb3IgcmVtb3ZlIGluIC1scG9zaXgiID4mNQogYWNfbGliX3Zhcj1gZWNobyBwb3NpeCdfJ3Jl
bW92ZSB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydh
Y19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19u
ICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMjgxMyw3ICsyODY3LDcgQEAKICAgYWNfc2F2ZV9M
SUJTPSIkTElCUyIKIExJQlM9Ii1scG9zaXggICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4
dCA8PEVPRgotI2xpbmUgMjgxNyAiY29uZmlndXJlIgorI2xpbmUgMjg3MSAiY29uZmlndXJlIgog
I2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90
b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQg
bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMjgyNCw3ICsyODc4LDcg
QEAKIHJlbW92ZSgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1
cmU6MjgyODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0
ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmln
dXJlOjI4ODI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYg
dGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAg
IGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0yODQ4LDEyICsyOTAy
LDEyIEBACiAKICAgICAjIEJTREkgQlNEL09TIDIuMSBuZWVkcyAtbGlwYyBmb3IgWE9wZW5EaXNw
bGF5LgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzaG1hdCIiLi4uICRhY19jIiAxPiY2
Ci1lY2hvICJjb25maWd1cmU6Mjg1MjogY2hlY2tpbmcgZm9yIHNobWF0IiA+JjUKK2VjaG8gImNv
bmZpZ3VyZToyOTA2OiBjaGVja2luZyBmb3Igc2htYXQiID4mNQogaWYgZXZhbCAidGVzdCBcImBl
Y2hvICckJyd7J2FjX2N2X2Z1bmNfc2htYXQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hv
ICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNf
ZXh0IDw8RU9GCi0jbGluZSAyODU3ICJjb25maWd1cmUiCisjbGluZSAyOTExICJjb25maWd1cmUi
CiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1
YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29u
ZmxpY3Qgd2l0aCBjaGFyIHNobWF0KCk7IGJlbG93LiAgKi8KQEAgLTI4NzYsNyArMjkzMCw3IEBA
CiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyODgwOiBc
IiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29u
ZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjkzNDog
XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNv
bmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNf
Y3ZfZnVuY19zaG1hdD15ZXMiCiBlbHNlCkBAIC0yODk3LDcgKzI5NTEsNyBAQAogCiAgICAgaWYg
dGVzdCAkYWNfY3ZfZnVuY19zaG1hdCA9IG5vOyB0aGVuCiAgICAgICBlY2hvICRhY19uICJjaGVj
a2luZyBmb3Igc2htYXQgaW4gLWxpcGMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJl
OjI5MDE6IGNoZWNraW5nIGZvciBzaG1hdCBpbiAtbGlwYyIgPiY1CitlY2hvICJjb25maWd1cmU6
Mjk1NTogY2hlY2tpbmcgZm9yIHNobWF0IGluIC1saXBjIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8g
aXBjJ18nc2htYXQgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8g
JyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNo
byAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTI5MDUsNyArMjk1OSw3IEBACiAgIGFj
X3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbGlwYyAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4k
YWNfZXh0IDw8RU9GCi0jbGluZSAyOTA5ICJjb25maWd1cmUiCisjbGluZSAyOTYzICJjb25maWd1
cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFs
IHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNl
IGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0yOTE2LDcgKzI5
NzAsNyBAQAogc2htYXQoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29u
ZmlndXJlOjI5MjA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0g
JiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNv
bmZpZ3VyZToyOTc0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9
ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0
KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMjk0OSw3ICsz
MDAzLDcgQEAKICAgIyBsaWJyYXJpZXMgd2UgY2hlY2sgZm9yIGJlbG93LCBzbyB1c2UgYSBkaWZm
ZXJlbnQgdmFyaWFibGUuCiAgICMgIC0taW50ZXJyYW5AdWx1cnUuU3RhbmZvcmQuRURVLCBrYkBj
cy51bWIuZWR1LgogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgSWNlQ29ubmVjdGlvbk51bWJl
ciBpbiAtbElDRSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mjk1MzogY2hlY2tp
bmcgZm9yIEljZUNvbm5lY3Rpb25OdW1iZXIgaW4gLWxJQ0UiID4mNQorZWNobyAiY29uZmlndXJl
OjMwMDc6IGNoZWNraW5nIGZvciBJY2VDb25uZWN0aW9uTnVtYmVyIGluIC1sSUNFIiA+JjUKIGFj
X2xpYl92YXI9YGVjaG8gSUNFJ18nSWNlQ29ubmVjdGlvbk51bWJlciB8IHNlZCAneSUuLystJV9f
cF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXIn
K3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4m
NgpAQCAtMjk1Nyw3ICszMDExLDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1s
SUNFICRYX0VYVFJBX0xJQlMgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0j
bGluZSAyOTYxICJjb25maWd1cmUiCisjbGluZSAzMDE1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAi
Y29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBh
dm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRj
aCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0yOTY4LDcgKzMwMjIsNyBAQAogSWNlQ29u
bmVjdGlvbk51bWJlcigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25m
aWd1cmU6Mjk3MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm
JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29u
ZmlndXJlOjMwMjY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0g
JiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3Qq
CiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0yOTk5LDcgKzMw
NTMsNyBAQAogCiBtaXNzPTAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYWluIGluIC1sWG11
IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMDAzOiBjaGVja2luZyBmb3IgbWFp
biBpbiAtbFhtdSIgPiY1CitlY2hvICJjb25maWd1cmU6MzA1NzogY2hlY2tpbmcgZm9yIG1haW4g
aW4gLWxYbXUiID4mNQogYWNfbGliX3Zhcj1gZWNobyBYbXUnXydtYWluIHwgc2VkICd5JS4vKy0l
X19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zh
cicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAx
PiY2CkBAIC0zMDA3LDE0ICszMDYxLDE0IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJT
PSItbFhtdSAkWF9MSUJTICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xp
bmUgMzAxMSAiY29uZmlndXJlIgorI2xpbmUgMzA2NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNv
bmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogbWFpbigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlm
IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzAxODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAk
YWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitp
ZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMwNzI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwg
JGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgog
ICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBl
bHNlCkBAIC0zMDM2LDcgKzMwOTAsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9y
IG1haW4gaW4gLWxYdCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzA0MDogY2hl
Y2tpbmcgZm9yIG1haW4gaW4gLWxYdCIgPiY1CitlY2hvICJjb25maWd1cmU6MzA5NDogY2hlY2tp
bmcgZm9yIG1haW4gaW4gLWxYdCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIFh0J18nbWFpbiB8IHNl
ZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJf
JGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVk
KSAkYWNfYyIgMT4mNgpAQCAtMzA0NCwxNCArMzA5OCwxNCBAQAogICBhY19zYXZlX0xJQlM9IiRM
SUJTIgogTElCUz0iLWxYdCAkWF9MSUJTICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8
PEVPRgotI2xpbmUgMzA0OCAiY29uZmlndXJlIgorI2xpbmUgMzEwMiAiY29uZmlndXJlIgogI2lu
Y2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogbWFpbigpCiA7IHJldHVybiAwOyB9
CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzA1NTogXCIkYWNfbGlua1wiKSAxPiY1
OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9
OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMxMDk6IFwiJGFjX2xpbmtcIikgMT4m
NTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0
fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zh
cj15ZXMiCiBlbHNlCkBAIC0zMDczLDcgKzMxMjcsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hl
Y2tpbmcgZm9yIG1haW4gaW4gLWxYZXh0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3Vy
ZTozMDc3OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbFhleHQiID4mNQorZWNobyAiY29uZmlndXJl
OjMxMzE6IGNoZWNraW5nIGZvciBtYWluIGluIC1sWGV4dCIgPiY1CiBhY19saWJfdmFyPWBlY2hv
IFhleHQnXydtYWluIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hv
ICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVj
aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zMDgxLDE0ICszMTM1LDE0IEBACiAg
IGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbFhleHQgJFhfTElCUyAkTElCUyIKIGNhdCA+
IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMwODUgImNvbmZpZ3VyZSIKKyNsaW5lIDMx
MzkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIG1h
aW4oKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMwOTI6
IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj
b25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMTQ2
OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMg
Y29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJh
Y19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMzExMCw3ICszMTY0LDcgQEAKIGZp
CiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYWluIGluIC1sWGF3IiIuLi4gJGFjX2MiIDE+
JjYKLWVjaG8gImNvbmZpZ3VyZTozMTE0OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbFhhdyIgPiY1
CitlY2hvICJjb25maWd1cmU6MzE2ODogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxYYXciID4mNQog
YWNfbGliX3Zhcj1gZWNobyBYYXcnXydtYWluIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZh
bCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBz
ZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zMTE4LDE0
ICszMTcyLDE0IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbFhhdyAkWF9MSUJT
ICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzEyMiAiY29uZmln
dXJlIgorI2xpbmUgMzE3NiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGlu
dCBtYWluKCkgewogbWFpbigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBj
b25maWd1cmU6MzEyOTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsg
fSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjMxODM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7
IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRl
c3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0zMTQ3LDcg
KzMyMDEsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxYMTEi
Ii4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMxNTE6IGNoZWNraW5nIGZvciBtYWlu
IGluIC1sWDExIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMjA1OiBjaGVja2luZyBmb3IgbWFpbiBp
biAtbFgxMSIgPiY1CiBhY19saWJfdmFyPWBlY2hvIFgxMSdfJ21haW4gfCBzZWQgJ3klLi8rLSVf
X3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFy
JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+
JjYKQEAgLTMxNTUsMTQgKzMyMDksMTQgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9
Ii1sWDExICRYX0xJQlMgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGlu
ZSAzMTU5ICJjb25maWd1cmUiCisjbGluZSAzMjEzICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29u
ZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiBtYWluKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYg
eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMTY2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRh
Y19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lm
IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzIyMDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAk
YWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAg
IHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVs
c2UKQEAgLTMyMDEsNyArMzI1NSw3IEBACiBpZiB0ZXN0ICIkZW5hYmxlX2Rsb3BlbiIgPSAieWVz
IiA7IHRoZW4KIAogIAllY2hvICRhY19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiIi4u
LiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMyMDU6IGNoZWNraW5nIGZvciBkbG9wZW4g
aW4gLWxkbCIgPiY1CitlY2hvICJjb25maWd1cmU6MzI1OTogY2hlY2tpbmcgZm9yIGRsb3BlbiBp
biAtbGRsIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gZGwnXydkbG9wZW4gfCBzZWQgJ3klLi8rLSVf
X3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFy
JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+
JjYKQEAgLTMyMDksNyArMzI2Myw3IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSIt
bGRsICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMyMTMgImNv
bmZpZ3VyZSIKKyNsaW5lIDMyNjcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgog
LyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9y
LiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4g
dHlwZSBvZiBhIGdjYzIKQEAgLTMyMjAsNyArMzI3NCw3IEBACiBkbG9wZW4oKQogOyByZXR1cm4g
MDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMyMjQ6IFwiJGFjX2xpbmtcIikg
MT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhl
ZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMjc4OiBcIiRhY19saW5rXCIp
IDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4
ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xp
Yl92YXI9eWVzIgogZWxzZQpAQCAtMzI1NiwxNyArMzMxMCwxNyBAQAogaWYgdGVzdCAiJGVuYWJs
ZV9zdGF0c3lzYmZkIiA9ICJ5ZXMiIHx8IHRlc3QgIiRlbmFibGVfZHluc3lzYmZkIiA9ICJ5ZXMi
IDsgdGhlbgogCWFjX3NhZmU9YGVjaG8gImJmZC5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVj
aG8gJGFjX24gImNoZWNraW5nIGZvciBiZmQuaCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25m
aWd1cmU6MzI2MDogY2hlY2tpbmcgZm9yIGJmZC5oIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMzE0
OiBjaGVja2luZyBmb3IgYmZkLmgiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2Fj
X2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24g
IihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxF
T0YKLSNsaW5lIDMyNjUgImNvbmZpZ3VyZSIKKyNsaW5lIDMzMTkgImNvbmZpZ3VyZSIKICNpbmNs
dWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGJmZC5oPgogRU9GCiBhY190cnk9IiRhY19jcHAg
Y29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hv
IGNvbmZpZ3VyZTozMjcwOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsg
fQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMzI0OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwg
JGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBn
cmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRo
ZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtMzI4Myw3ICszMzM3LDcgQEAKIGlmIGV2YWwgInRl
c3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIgPSB5ZXMiOyB0aGVuCiAgIGVj
aG8gIiRhY190IiJ5ZXMiIDE+JjYKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGJmZF9pbml0
IGluIC1sYmZkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMjg3OiBjaGVja2lu
ZyBmb3IgYmZkX2luaXQgaW4gLWxiZmQiID4mNQorZWNobyAiY29uZmlndXJlOjMzNDE6IGNoZWNr
aW5nIGZvciBiZmRfaW5pdCBpbiAtbGJmZCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIGJmZCdfJ2Jm
ZF9pbml0IHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7
J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFj
X24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zMjkxLDcgKzMzNDUsNyBAQAogICBhY19zYXZl
X0xJQlM9IiRMSUJTIgogTElCUz0iLWxiZmQgLWxpYmVydHkgJExJQlMiCiBjYXQgPiBjb25mdGVz
dC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMjk1ICJjb25maWd1cmUiCisjbGluZSAzMzQ5ICJjb25m
aWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVy
bmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNh
dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0zMzAyLDcg
KzMzNTYsNyBAQAogYmZkX2luaXQoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVj
aG8gY29uZmlndXJlOjMzMDY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+
JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZTozMzYwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy
PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNv
bmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMzMy
MSwxOCArMzM3NSwxOCBAQAogCQkjIE9sZCBiaW51dGlscyBhcHBlYXIgdG8gbmVlZCBDT05TVCBk
ZWZpbmVkIHRvIGNvbnN0CiAJCSMKIAkJCWVjaG8gJGFjX24gImNoZWNraW5nIGlmIG5lZWQgdG8g
ZGVmaW5lIENPTlNUIGZvciBiZmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMz
MjU6IGNoZWNraW5nIGlmIG5lZWQgdG8gZGVmaW5lIENPTlNUIGZvciBiZmQiID4mNQorZWNobyAi
Y29uZmlndXJlOjMzNzk6IGNoZWNraW5nIGlmIG5lZWQgdG8gZGVmaW5lIENPTlNUIGZvciBiZmQi
ID4mNQogCQkJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgZWNobyAi
JGFjX3QiImNhbm5vdCB1c2UgYmZkIiAxPiY2IGV4aXQgMTsKIGVsc2UKICAgY2F0ID4gY29uZnRl
c3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzMzMCAiY29uZmlndXJlIgorI2xpbmUgMzM4NCAiY29u
ZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjZGVmaW5lIElOX0dDQwogCQkJCSAgICAj
aW5jbHVkZSA8YmZkLmg+CiAJCQkJICAgIGludCBtYWluKCkgeyBzeW1ib2xfaW5mbyB0OyByZXR1
cm4gMDt9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzMzNjogXCIkYWNfbGlua1wi
KSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l
eGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hv
IGNvbmZpZ3VyZTozMzkwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1
OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQp
IDI+L2Rldi9udWxsCiB0aGVuCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNgogZWxzZQpAQCAtMzM0
MywxNCArMzM5NywxNCBAQAogICBlY2hvICIkYWNfdCIiY2Fubm90IHVzZSBiZmQiIDE+JjYgZXhp
dCAxOwogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMzQ3ICJj
b25maWd1cmUiCisjbGluZSAzNDAxICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIK
ICNkZWZpbmUgQ09OU1QgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgI2RlZmluZSBJTl9HQ0MKIAkJCQkJICAgICNpbmNsdWRlIDxiZmQuaD4KIAkJCQkJ
ICAgIGludCBtYWluKCkge3N5bWJvbF9pbmZvIHQ7IHJldHVybiAwO30KIEVPRgotaWYgeyAoZXZh
bCBlY2hvIGNvbmZpZ3VyZTozMzU0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5r
KSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7
IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM0MDg6IFwiJGFj
X2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVz
dCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAg
ZWNobyAiJGFjX3QiInllcyIgMT4mNiAKIAkJCQkJY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCkBA
IC0zMzkwLDE5ICszNDQ0LDE5IEBACiAjCiAKIAllY2hvICRhY19uICJjaGVja2luZyBmb3IgdXNl
YWJsZSBiZmRfYm9vbGVhbiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzM5NDog
Y2hlY2tpbmcgZm9yIHVzZWFibGUgYmZkX2Jvb2xlYW4iID4mNQorZWNobyAiY29uZmlndXJlOjM0
NDg6IGNoZWNraW5nIGZvciB1c2VhYmxlIGJmZF9ib29sZWFuIiA+JjUKIAlpZiB0ZXN0ICIkY3Jv
c3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGVsc2UK
ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzM5OSAiY29uZmlndXJlIgor
I2xpbmUgMzQ1MyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjZGVmaW5lIElO
X0dDQwogCQkgICAgI2luY2x1ZGUgPGJmZC5oPgogCQkgICAgYmZkX2Jvb2xlYW4gZm9vKCkge3Jl
dHVybiBGQUxTRTt9CiAJCSAgICBpbnQgbWFpbigpIHtyZXR1cm4gMDt9CiBFT0YKLWlmIHsgKGV2
YWwgZWNobyBjb25maWd1cmU6MzQwNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGlu
aykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0
OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNDYwOiBcIiRh
Y19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRl
c3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAg
IGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYgCiAJCWNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgpAQCAt
MzQ1MCwxNyArMzUwNCwxNyBAQAogCSMgbmVlZCBHTlUgZ2V0dGV4dCBzZXBhcmF0ZWx5LgogCWFj
X3NhZmU9YGVjaG8gImxpYmludGwuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19u
ICJjaGVja2luZyBmb3IgbGliaW50bC5oIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3Vy
ZTozNDU0OiBjaGVja2luZyBmb3IgbGliaW50bC5oIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNTA4
OiBjaGVja2luZyBmb3IgbGliaW50bC5oIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcn
eydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRh
Y19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0
IDw8RU9GCi0jbGluZSAzNDU5ICJjb25maWd1cmUiCisjbGluZSAzNTEzICJjb25maWd1cmUiCiAj
aW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBFT0YKIGFjX3RyeT0i
JGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChl
dmFsIGVjaG8gY29uZmlndXJlOjM0NjQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5
KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjM1MTg6IFwiJGFjX3RyeVwiKSAxPiY1
OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0
Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNf
ZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC0zNDg0LDE0ICszNTM4LDE0IEBACiAK
IAkKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgZGdldHRleHQi
Ii4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM0ODg6IGNoZWNraW5nIGZvciBsaWJy
YXJ5IGNvbnRhaW5pbmcgZGdldHRleHQiID4mNQorZWNobyAiY29uZmlndXJlOjM1NDI6IGNoZWNr
aW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgZGdldHRleHQiID4mNQogaWYgZXZhbCAidGVzdCBc
ImBlY2hvICckJyd7J2FjX2N2X3NlYXJjaF9kZ2V0dGV4dCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVu
CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGFjX2Z1bmNfc2Vh
cmNoX3NhdmVfTElCUz0iJExJQlMiCiBhY19jdl9zZWFyY2hfZGdldHRleHQ9Im5vIgogY2F0ID4g
Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzQ5NSAiY29uZmlndXJlIgorI2xpbmUgMzU0
OSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2Nj
MiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNo
YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAt
MzUwMiw3ICszNTU2LDcgQEAKIGRnZXR0ZXh0KCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAo
ZXZhbCBlY2hvIGNvbmZpZ3VyZTozNTA2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19s
aW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsg
KGV2YWwgZWNobyBjb25maWd1cmU6MzU2MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNf
bGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJt
IC1yZiBjb25mdGVzdCoKICAgYWNfY3Zfc2VhcmNoX2RnZXR0ZXh0PSJub25lIHJlcXVpcmVkIgog
ZWxzZQpAQCAtMzUxMyw3ICszNTY3LDcgQEAKIHRlc3QgIiRhY19jdl9zZWFyY2hfZGdldHRleHQi
ID0gIm5vIiAmJiBmb3IgaSBpbiBpbnRsOyBkbwogTElCUz0iLWwkaSAgJGFjX2Z1bmNfc2VhcmNo
X3NhdmVfTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM1MTcgImNv
bmZpZ3VyZSIKKyNsaW5lIDM1NzEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgog
LyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9y
LiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4g
dHlwZSBvZiBhIGdjYzIKQEAgLTM1MjQsNyArMzU3OCw3IEBACiBkZ2V0dGV4dCgpCiA7IHJldHVy
biAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzUyODogXCIkYWNfbGlua1wi
KSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l
eGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM1ODI6IFwiJGFjX2xpbmtc
IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf
ZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGFjX2N2X3NlYXJjaF9kZ2V0dGV4
dD0iLWwkaSIKIGJyZWFrCkBAIC0zNTg5LDcgKzM2NDMsNyBAQAogIyBhZGRyZXNzZXMsIGluIGNh
bGN1bGF0aW5nIGEgcGFnZSBmb3IgYW4gYWRkcmVzcyBpbiB0aGUgaGVhcC4KIAogZWNobyAkYWNf
biAiY2hlY2tpbmcgc2l6ZSBvZiBsb25nIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3Vy
ZTozNTkzOiBjaGVja2luZyBzaXplIG9mIGxvbmciID4mNQorZWNobyAiY29uZmlndXJlOjM2NDc6
IGNoZWNraW5nIHNpemUgb2YgbG9uZyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sn
YWNfY3Zfc2l6ZW9mX2xvbmcnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIo
Y2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMzU5Nyw3ICszNjUxLDcgQEAKICAgYWNfY3Zf
c2l6ZW9mX2xvbmc9MAogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGlu
ZSAzNjAxICJjb25maWd1cmUiCisjbGluZSAzNjU1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29u
ZmRlZnMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAt
MzYwOSw3ICszNjYzLDcgQEAKICAgZXhpdCgwKTsKIH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNv
bmZpZ3VyZTozNjEzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9
ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+
L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM2Njc6IFwiJGFjX2xpbmtcIikg
MT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhl
ZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgYWNfY3Zfc2l6
ZW9mX2xvbmc9YGNhdCBjb25mdGVzdHZhbGAKIGVsc2UKQEAgLTM2MjksNyArMzY4Myw3IEBACiAK
IAogZWNobyAkYWNfbiAiY2hlY2tpbmcgc2l6ZW9mIHN0cnVjdCBjb250YmxvY2siIi4uLiAkYWNf
YyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM2MzM6IGNoZWNraW5nIHNpemVvZiBzdHJ1Y3QgY29u
dGJsb2NrIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNjg3OiBjaGVja2luZyBzaXplb2Ygc3RydWN0
IGNvbnRibG9jayIgPiY1CiAKICMgd29yayBhcm91bmQgTVNZUyBwd2QgcmVzdWx0IGluY29tcGF0
aWJpbGl0eQogaWYgdGVzdCAiJHVzZSIgPSAibWluZ3ciIDsgdGhlbgpAQCAtMzYzNyw3ICszNjkx
LDcgQEAKICAgZWNobyBDYW5ub3QgZmluZCBzaXplb2Ygc3RydWN0IGNvbnRibG9jaztleGl0IDEK
IGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzY0MSAiY29uZmln
dXJlIgorI2xpbmUgMzY5NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5j
bHVkZSA8c3RkaW8uaD4KIAkjZGVmaW5lIEVYVEVSCkBAIC0zNjUxLDcgKzM3MDUsNyBAQAogCXJl
dHVybiAwOwogCX0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNjU1OiBcIiRhY19s
aW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qk
e2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFs
IGVjaG8gY29uZmlndXJlOjM3MDk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmsp
IDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsg
ZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgc2l6ZW9mX2NvbnRibG9jaz1gY2F0IGNvbmZ0ZXN0
MWAKIGVsc2UKQEAgLTM2NjgsNyArMzcyMiw3IEBACiAgIGVjaG8gQ2Fubm90IGZpbmQgc2l6ZW9m
IHN0cnVjdCBjb250YmxvY2s7ZXhpdCAxCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg
PDxFT0YKLSNsaW5lIDM2NzIgImNvbmZpZ3VyZSIKKyNsaW5lIDM3MjYgImNvbmZpZ3VyZSIKICNp
bmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAJI2RlZmluZSBFWFRFUgpA
QCAtMzY4Miw3ICszNzM2LDcgQEAKIAlyZXR1cm4gMDsKIAl9CiBFT0YKLWlmIHsgKGV2YWwgZWNo
byBjb25maWd1cmU6MzY4NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4m
NTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0
KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzQwOiBcIiRhY19saW5r
XCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2Fj
X2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIHNpemVv
Zl9jb250YmxvY2s9YGNhdCBjb25mdGVzdDFgCiBlbHNlCkBAIC0zNzA3LDE3ICszNzYxLDE3IEBA
CiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hv
ICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25m
aWd1cmU6MzcxMTogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQorZWNobyAiY29uZmlndXJlOjM3
NjU6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcn
eydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRh
Y19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0
IDw8RU9GCi0jbGluZSAzNzE2ICJjb25maWd1cmUiCisjbGluZSAzNzcwICJjb25maWd1cmUiCiAj
aW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBhY190cnk9IiRh
Y19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZh
bCBlY2hvIGNvbmZpZ3VyZTozNzIxOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkg
Mj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzc1OiBcIiRhY190cnlcIikgMT4mNTsg
KGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5v
dXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2Vy
ciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtMzczOCwxOCArMzc5MiwxOCBAQAogI2Rl
ZmluZSAkYWNfdHJfaGRyIDEKIEVPRgogIGVjaG8gJGFjX24gImNoZWNraW5nICJlbmRpYW5uZXNz
IiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mzc0MjogY2hlY2tpbmcgImVuZGlh
bm5lc3MiIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNzk2OiBjaGVja2luZyAiZW5kaWFubmVzcyIi
ID4mNQogCWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIGVjaG8gIiRh
Y190IiJiaWciIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xp
bmUgMzc0NyAiY29uZmlndXJlIgorI2xpbmUgMzgwMSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNv
bmZkZWZzLmgiCiAjZGVmaW5lIF9fQVJNRUJfXwogCQkjaW5jbHVkZSA8ZW5kaWFuLmg+IAogCQlp
bnQgbWFpbigpIHsgcmV0dXJuIEJZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOID8gMCA6IDE7
fQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM3NTM6IFwiJGFjX2xpbmtcIikgMT4m
NTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0
fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25m
aWd1cmU6MzgwNzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm
JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9k
ZXYvbnVsbAogdGhlbgogICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgTElUVExF
X0VORCAxCkBAIC0zNzc2LDEzICszODMwLDEzIEBACiAjIHRoaXMgYW5kIHJlc3RvcmUgdGhlIHRy
YWRpdGlvbmFsIGJlaGF2aW9yIGhlcmUKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHNicmsi
Ii4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM3ODA6IGNoZWNraW5nIGZvciBzYnJr
IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozODM0OiBjaGVja2luZyBmb3Igc2JyayIgPiY1CiBIQVZF
X1NCUks9IiIKIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIGVjaG8g
IiRhY190IiJubzogV0FSTklORyB5b3UgbXVzdCBiZSBhYmxlIHRvIGVtdWxhdGUgc2JyazogYXMg
b24gbWluZ3cgb3IgbWFjb3N4IiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg
PDxFT0YKLSNsaW5lIDM3ODYgImNvbmZpZ3VyZSIKKyNsaW5lIDM4NDAgImNvbmZpZ3VyZSIKICNp
bmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCSAgICAjaW5jbHVkZSA8
c3RkaW8uaD4KQEAgLTM3OTQsNyArMzg0OCw3IEBACiAJCXJldHVybiAwOwogCQl9CiBFT0YKLWlm
IHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzc5ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAk
YWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2Nv
bmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozODUy
OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMg
Y29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0
aGVuCiAgIEhBVkVfU0JSSz0xCiAJCWVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKQEAgLTM4MTAsMTIg
KzM4NjQsMTIgQEAKIAogaWYgdGVzdCAiJEhBVkVfU0JSSyIgPSAiMSIgOyB0aGVuCiAJZWNobyAk
YWNfbiAiY2hlY2tpbmcgZm9yIHJhbmRvbWl6ZWQgc2JyayIiLi4uICRhY19jIiAxPiY2Ci1lY2hv
ICJjb25maWd1cmU6MzgxNDogY2hlY2tpbmcgZm9yIHJhbmRvbWl6ZWQgc2JyayIgPiY1CitlY2hv
ICJjb25maWd1cmU6Mzg2ODogY2hlY2tpbmcgZm9yIHJhbmRvbWl6ZWQgc2JyayIgPiY1CiAJaWYg
dGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgU0JSSz0wCiBlbHNlCiAgIGNh
dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM4MTkgImNvbmZpZ3VyZSIKKyNsaW5l
IDM4NzMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHVuaXN0
ZC5oPgogCQkgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0zODI3LDcgKzM4ODEsNyBAQAogCQkJ
cmV0dXJuIDA7CiAJCQl9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzgzMTogXCIk
YWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0
ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAo
ZXZhbCBlY2hvIGNvbmZpZ3VyZTozODg1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19s
aW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRl
c3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIFNCUks9YGNhdCBjb25mdGVzdDFgCiBlbHNl
CkBAIC0zODQ3LDcgKzM5MDEsNyBAQAogICBTQlJLMT0wCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0
LiRhY19leHQgPDxFT0YKLSNsaW5lIDM4NTEgImNvbmZpZ3VyZSIKKyNsaW5lIDM5MDUgImNvbmZp
Z3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCQkgICAg
I2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0zODU5LDcgKzM5MTMsNyBAQAogCQkJcmV0dXJuIDA7CiAJ
CQl9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzg2MzogXCIkYWNfbGlua1wiKSAx
PiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVl
eHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNv
bmZpZ3VyZTozOTE3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9
ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+
L2Rldi9udWxsCiB0aGVuCiAgIFNCUksxPWBjYXQgY29uZnRlc3QxYAogZWxzZQpAQCAtMzg3OSwx
MiArMzkzMywxMiBAQAogCWlmIHRlc3QgIiRTQlJLIiAhPSAiJFNCUksxIiA7IHRoZW4KIAkJZWNo
byAiJGFjX3QiInllcyIgMT4mNgogCQllY2hvICRhY19uICJjaGVja2luZyBmb3IgcmFuZG9taXpl
ZCBicmsgcmVtZWR5IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozODgzOiBjaGVj
a2luZyBmb3IgcmFuZG9taXplZCBicmsgcmVtZWR5IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozOTM3
OiBjaGVja2luZyBmb3IgcmFuZG9taXplZCBicmsgcmVtZWR5IiA+JjUKIAkJaWYgdGVzdCAiJGNy
b3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgU0JSSz0wCiBlbHNlCiAgIGNhdCA+IGNvbmZ0
ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM4ODggImNvbmZpZ3VyZSIKKyNsaW5lIDM5NDIgImNv
bmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5c2NhbGwuaD4KIAkJ
CSAgICAjaW5jbHVkZSA8bGludXgvcGVyc29uYWxpdHkuaD4KQEAgLTM5MDQsNyArMzk1OCw3IEBA
CiAJCQkJcmV0dXJuIDA7CiAJCQkJfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM5
MDg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAt
cyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwK
K2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzk2MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZh
bCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICgu
L2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBTQlJLPWBjYXQgY29uZnRlc3Qx
YAogZWxzZQpAQCAtMzkyNCw3ICszOTc4LDcgQEAKICAgU0JSSzE9MAogZWxzZQogICBjYXQgPiBj
b25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzOTI4ICJjb25maWd1cmUiCisjbGluZSAzOTgy
ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzeXNjYWxsLmg+
CiAJCQkgICAgI2luY2x1ZGUgPGxpbnV4L3BlcnNvbmFsaXR5Lmg+CkBAIC0zOTQ0LDcgKzM5OTgs
NyBAQAogCQkJCXJldHVybiAwOwogCQkJCX0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy
ZTozOTQ4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRl
c3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9u
dWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQwMDI6IFwiJGFjX2xpbmtcIikgMT4mNTsg
KGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAm
JiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgU0JSSzE9YGNhdCBjb25m
dGVzdDFgCiBlbHNlCkBAIC0zOTc2LDE2ICs0MDMwLDQyIEBACiAJZmkKIGZpCiAKK2VjaG8gJGFj
X24gImNoZWNraW5nICJmaW5kaW5nIGRlZmF1bHQgbGlua2VyIHNjcmlwdCIiIi4uLiAkYWNfYyIg
MT4mNgorZWNobyAiY29uZmlndXJlOjQwMzU6IGNoZWNraW5nICJmaW5kaW5nIGRlZmF1bHQgbGlu
a2VyIHNjcmlwdCIiID4mNQordG91Y2ggdW5peHBvcnQvZ2NsLnNjcmlwdAorZWNobyAiaW50IG1h
aW4oKSB7cmV0dXJuIDA7fSIgPmZvby5jCiskQ0MgLVdsLC0tdmVyYm9zZSBmb28uYyAtbyBmb28g
Mj4mMSB8IFwKKyAgICBhd2sgJy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PS8ge2k9MS1pO25leHR9IHtpZiAoaSkgcHJpbnR9JyA+Z2NsLnNjcmlwdAor
cm0gLXJmIGZvby5jIGZvbworaWYgdGVzdCAiYGNhdCBnY2wuc2NyaXB0IHwgd2MgLWxgIiAhPSAi
MCIgOyB0aGVuCisgIGVjaG8gIiRhY190IiJnb3QgaXQiIDE+JjYKKyAgZWNobyAkYWNfbiAiY2hl
Y2tpbmcgInRyeWluZyB0byBsb3dlciBoZWFwIHN0YXJ0IiIiLi4uICRhY19jIiAxPiY2CitlY2hv
ICJjb25maWd1cmU6NDA0NDogY2hlY2tpbmcgInRyeWluZyB0byBsb3dlciBoZWFwIHN0YXJ0IiIg
PiY1CisgIGNwIGdjbC5zY3JpcHQgZ2NsLnNjcmlwdC5kZWYKKyAgY2F0IGdjbC5zY3JpcHQuZGVm
IHwgYXdrICcvX19leGVjdXRhYmxlX3N0YXJ0LyB7Z3N1YigiMHguLi4iLCIweDAwMCIsJDApO30g
e3ByaW50fScgPmdjbC5zY3JpcHQKKyAgaWYgZGlmZiBnY2wuc2NyaXB0LmRlZiBnY2wuc2NyaXB0
ID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKyAgICAgZWNobyAiJGFjX3QiIiJjYW5ub3Qgb3Igbm90
IG5lZWRlZCIiIDE+JjYKKyAgICAgcm0gLWYgZ2NsLnNjcmlwdCBnY2wuc2NyaXB0LmRlZgorICBl
bHNlCisgICAgIGVjaG8gIiRhY190IiIiZG9uZSIiIDE+JjYKKyAgICAgcm0gLWYgZ2NsLnNjcmlw
dC5kZWYKKyAgICAgTERGTEFHUz0iJExERkxBR1MgLVdsLC1UIGdjbC5zY3JpcHQgIgorICAgICBj
cCBnY2wuc2NyaXB0IHVuaXhwb3J0CisgIGZpCitlbHNlCisgIGVjaG8gIiRhY190IiIibm9uZSIi
IDE+JjYKKyAgcm0gLWYgZ2NsLnNjcmlwdAorZmkKIAogb2xkX0xERkxBR1M9IiRMREZMQUdTIgot
TERGTEFHUz0iJFRMREZMQUdTIgorTERGTEFHUz0iJExERkxBR1MgJFRMREZMQUdTIgogZWNobyAk
YWNfbiAiY2hlY2tpbmcgImZpbmRpbmcgREJFR0lOIiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJj
b25maWd1cmU6Mzk4NDogY2hlY2tpbmcgImZpbmRpbmcgREJFR0lOIiIgPiY1CitlY2hvICJjb25m
aWd1cmU6NDA2NDogY2hlY2tpbmcgImZpbmRpbmcgREJFR0lOIiIgPiY1CiBpZiB0ZXN0ICIkY3Jv
c3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBkYmVnaW49MAogZWxzZQogICBjYXQgPiBjb25m
dGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzOTg5ICJjb25maWd1cmUiCisjbGluZSA0MDY5ICJj
b25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogICAg
ICAgICAgICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtNDAyNCw3ICs0MTA0LDcgQEAKICAgcmV0
dXJuIDA7CiB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDAyODogXCIkYWNfbGlu
a1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHth
Y19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZTo0MTA4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy
PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4
aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIGRiZWdpbj1gY2F0IGNvbmZ0ZXN0MWAKIGVsc2UKQEAg
LTQwNDUsMTQgKzQxMjUsMTA4IEBACiBlY2hvICIkYWNfdCIiZ290ICRkYmVnaW4iIDE+JjYKIExE
RkxBR1M9IiRvbGRfTERGTEFHUyIKIAorZWNobyAkYWNfbiAiY2hlY2tpbmcgImZvciBoZWFwIHNo
YXJlZCBsaWJyYXJ5IGhlYXAgY2VpbGluZyIiIi4uLiAkYWNfYyIgMT4mNgorZWNobyAiY29uZmln
dXJlOjQxMzA6IGNoZWNraW5nICJmb3IgaGVhcCBzaGFyZWQgbGlicmFyeSBoZWFwIGNlaWxpbmci
IiA+JjUKK2VjaG8gImludCBtYWluKCkge3JldHVybiAwO30iID5mb28uYworJENDIGZvby5jIC1v
IGZvbworaGVhcF9jZWlsaW5nPWBsZGQgZm9vIHwgdGFpbCAtbiAxIHwgYXdrICd7cHJpbnQgJE5G
fScgfCB0ciAtZCAnKCknYAorZWNobyAiJGFjX3QiIiJnb3QgJGhlYXBfY2VpbGluZyIiIDE+JjYK
K2NhdCA+PiBjb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIFNIQVJFRF9MSUJfSEVBUF9DRUlMSU5H
ICRoZWFwX2NlaWxpbmcKK0VPRgorCisKKyMgcGFnZXdpZHRoCitlY2hvICRhY19uICJjaGVja2lu
ZyBmb3IgcGFnZXdpZHRoIiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZTo0MTQyOiBj
aGVja2luZyBmb3IgcGFnZXdpZHRoIiA+JjUKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0g
eWVzOyB0aGVuCisgIFBBR0VXSURUSD0wCitlbHNlCisgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg
PDxFT0YKKyNsaW5lIDQxNDcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+CitpbnQgbWFp
bigpIHtzaXplX3QgaT1nZXRwYWdlc2l6ZSgpLGo7IAorCSAgICBGSUxFICpmcD1mb3BlbigiY29u
ZnRlc3QxIiwidyIpOworCSAgICBmb3IgKGo9MDtpPj49MTtqKyspOworCSAgICBmcHJpbnRmKGZw
LCIldSIsaik7CisJICAgIHJldHVybiAwO30KK0VPRgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy
ZTo0MTU3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRl
c3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9u
dWxsCit0aGVuCisgIFBBR0VXSURUSD1gY2F0IGNvbmZ0ZXN0MWAKK2Vsc2UKKyAgZWNobyAiY29u
ZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQg
PiY1CisgIHJtIC1mciBjb25mdGVzdCoKKyAgUEFHRVdJRFRIPTAKK2ZpCitybSAtZnIgY29uZnRl
c3QqCitmaQorCitlY2hvICIkYWNfdCIiJFBBR0VXSURUSCIgMT4mNgorY2F0ID4+IGNvbmZkZWZz
LmggPDxFT0YKKyNkZWZpbmUgUEFHRVdJRFRIICRQQUdFV0lEVEgKK0VPRgorCisKKworZWNobyAk
YWNfbiAiY2hlY2tpbmcgImZvciBtYXhwYWdlIHJldmlzaW9uIiIiLi4uICRhY19jIiAxPiY2Citl
Y2hvICJjb25maWd1cmU6NDE3NzogY2hlY2tpbmcgImZvciBtYXhwYWdlIHJldmlzaW9uIiIgPiY1
CitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICB0bXBfbWF4cGFnZT0w
CitlbHNlCisgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIDQxODIgImNvbmZp
Z3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CittYWluKCkK
K3sKKyAgY2hhciAqYjsKKyAgdW5zaWduZWQgbG9uZyBpLGo7CisgIEZJTEUgKmZwID0gZm9wZW4o
ImNvbmZ0ZXN0MSIsInciKTsKKyAgaj0kZW5hYmxlX21heHBhZ2UgPDwkUEFHRVdJRFRIICsgJGRi
ZWdpbjsKKyAgaj1qPiRoZWFwX2NlaWxpbmcgPyAkaGVhcF9jZWlsaW5nIDogajsKKyAgai09JGRi
ZWdpbjsKKyAgaj4+PSRQQUdFV0lEVEg7CisgIGZvciAoaT0xO2k8PWo7aTw8PTEpOworICBpZiAo
aT5qKSBpPj49MTsKKyAgZnByaW50ZihmcCwiJWxkIixpKTsKKyAgZmNsb3NlKGZwKTsKKyAgcmV0
dXJuIDA7Cit9CitFT0YKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDIwMTogXCIkYWNfbGlu
a1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHth
Y19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAordGhlbgorICB0bXBf
bWF4cGFnZT1gY2F0IGNvbmZ0ZXN0MWAKK2Vsc2UKKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQg
cHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIHJtIC1mciBj
b25mdGVzdCoKKyAgdG1wX21heHBhZ2U9MAorZmkKK3JtIC1mciBjb25mdGVzdCoKK2ZpCisKK2lm
IHRlc3QgIiR0bXBfbWF4cGFnZSIgIT0gIiRlbmFibGVfbWF4cGFnZSIgOyB0aGVuCisgICBlbmFi
bGVfbWF4cGFnZT0kdG1wX21heHBhZ2UKKyAgIGVjaG8gIiRhY190IiIiZ290ICRlbmFibGVfbWF4
cGFnZSIiIDE+JjYKKyAgIGNhdCA+PiBjb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIE1BWFBBR0Ug
JGVuYWJsZV9tYXhwYWdlCitFT0YKKworZWxzZQorICAgZWNobyAiJGFjX3QiIiIkZW5hYmxlX21h
eHBhZ2UgaXMgT0siIiAxPiY2CitmaQogCiBlY2hvICRhY19uICJjaGVja2luZyAiZmluZGluZyBD
U1RBQ0tfQUREUkVTUyIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQwNTE6IGNo
ZWNraW5nICJmaW5kaW5nIENTVEFDS19BRERSRVNTIiIgPiY1CitlY2hvICJjb25maWd1cmU6NDIy
NTogY2hlY2tpbmcgImZpbmRpbmcgQ1NUQUNLX0FERFJFU1MiIiA+JjUKIGlmIHRlc3QgIiRjcm9z
c19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIGNzdGFja19hZGRyZXNzPTAKIGVsc2UKICAgY2F0
ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDA1NiAiY29uZmlndXJlIgorI2xpbmUg
NDIzMCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3RkaW8u
aD4KIG1haW4oKQpAQCAtNDA2NCw3ICs0MjM4LDcgQEAKICAgcmV0dXJuIDA7CiB9CiBFT0YKLWlm
IHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDA2ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAk
YWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2Nv
bmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0MjQy
OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMg
Y29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0
aGVuCiAgIGNzdGFja19hZGRyZXNzPWBjYXQgY29uZnRlc3QxYAogZWxzZQpAQCAtNDA4MywxNiAr
NDI1NywyNTAgQEAKIAogZWNobyAiJGFjX3QiImdvdCAkY3N0YWNrX2FkZHJlc3MiIDE+JjYKIAor
ZWNobyAkYWNfbiAiY2hlY2tpbmcgImZpbmRpbmcgQ1NUQUNLX0FMSUdOTUVOVCIiIi4uLiAkYWNf
YyIgMT4mNgorZWNobyAiY29uZmlndXJlOjQyNjI6IGNoZWNraW5nICJmaW5kaW5nIENTVEFDS19B
TElHTk1FTlQiIiA+JjUKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisg
IGNzdGFja19hbGlnbm1lbnQ9MAorZWxzZQorICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G
CisjbGluZSA0MjY3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRl
IDxzdGRpby5oPgorbWFpbigpCit7CisgIHZvaWQgKmIsKmM7CisgIEZJTEUgKmZwID0gZm9wZW4o
ImNvbmZ0ZXN0MSIsInciKTsKKyAgbG9uZyBuOworICBiPWFsbG9jYShzaXplb2YoYikpOworICBj
PWFsbG9jYShzaXplb2YoYykpOworICBuPWI+YyA/IGItYyA6IGMtYjsKKyAgbj1uPnNpemVvZihj
KSA/IG4gOiAwOworICBmcHJpbnRmKGZwLCIlbGQiLG4pOworICBmY2xvc2UoZnApOworICByZXR1
cm4gMDsKK30KK0VPRgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0Mjg0OiBcIiRhY19saW5r
XCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2Fj
X2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCit0aGVuCisgIGNzdGFj
a19hbGlnbm1lbnQ9YGNhdCBjb25mdGVzdDFgCitlbHNlCisgIGVjaG8gImNvbmZpZ3VyZTogZmFp
bGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICBybSAt
ZnIgY29uZnRlc3QqCisgIGNzdGFja19hbGlnbm1lbnQ9MAorZmkKK3JtIC1mciBjb25mdGVzdCoK
K2ZpCisKK2NhdCA+PiBjb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIENTVEFDS19BTElHTk1FTlQg
JGNzdGFja19hbGlnbm1lbnQgXAorCitFT0YKKworZWNobyAiJGFjX3QiImdvdCAkY3N0YWNrX2Fs
aWdubWVudCIgMT4mNgorCitlY2hvICRhY19uICJjaGVja2luZyAiZmluZGluZyBDU1RBQ0tfRElS
RUNUSU9OIiIiLi4uICRhY19jIiAxPiY2CitlY2hvICJjb25maWd1cmU6NDMwNDogY2hlY2tpbmcg
ImZpbmRpbmcgQ1NUQUNLX0RJUkVDVElPTiIiID4mNQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGlu
ZyIgPSB5ZXM7IHRoZW4KKyAgY3N0YWNrX2RpcmVjdGlvbj0wCitlbHNlCisgIGNhdCA+IGNvbmZ0
ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIDQzMDkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25m
ZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+Cit2b2lkICoKK2Zvbyh2b2lkKSB7CitpbnQgaTsK
K3JldHVybiAodm9pZCAqKSZpOworfQorCitpbnQKK21haW4oKQoreworICBjaGFyICpiOworICBG
SUxFICpmcCA9IGZvcGVuKCJjb25mdGVzdDEiLCJ3Iik7CisgIGZwcmludGYoZnAsIiVsZCIsKChs
b25nKSAmYikgPiAoKGxvbmcpIGZvbygpKSA/IC0xIDogMSk7CisgIGZjbG9zZShmcCk7CisgIHJl
dHVybiAwOworfQorRU9GCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQzMjg6IFwiJGFjX2xp
bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7
YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK3RoZW4KKyAgY3N0
YWNrX2RpcmVjdGlvbj1gY2F0IGNvbmZ0ZXN0MWAKK2Vsc2UKKyAgZWNobyAiY29uZmlndXJlOiBm
YWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIHJt
IC1mciBjb25mdGVzdCoKKyAgY3N0YWNrX2RpcmVjdGlvbj0wCitmaQorcm0gLWZyIGNvbmZ0ZXN0
KgorZmkKKworY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgQ1NUQUNLX0RJUkVDVElP
TiAkY3N0YWNrX2RpcmVjdGlvbiBcCisKK0VPRgorCitlY2hvICIkYWNfdCIiZ290ICRjc3RhY2tf
ZGlyZWN0aW9uIiAxPiY2CisKK2VjaG8gJGFjX24gImNoZWNraW5nICJmb3IgQyBzdGFjayBzaXpl
IGZsb29yIGZyb20gaGVhcCAiIiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZTo0MzQ4
OiBjaGVja2luZyAiZm9yIEMgc3RhY2sgc2l6ZSBmbG9vciBmcm9tIGhlYXAgIiIgPiY1CitpZiB0
ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICB0bXBfY3NzaXplPTAKK2Vsc2UK
KyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgNDM1MyAiY29uZmlndXJlIgor
I2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbigpCit7
CisgIGNoYXIgKmI7CisgIEZJTEUgKmZwID0gZm9wZW4oImNvbmZ0ZXN0MSIsInciKTsKKyAgdW5z
aWduZWQgbG9uZyBqLGs7CisgIAorICBqPSgodW5zaWduZWQgbG9uZykmYikgKyAkY3N0YWNrX2Rp
cmVjdGlvbiAqICRlbmFibGVfY3NzaXplOworICBrPSgkZGJlZ2luICsgJGVuYWJsZV9tYXhwYWdl
IDw8ICRQQUdFV0lEVEgpOworICBqPWFicyhqLSgodW5zaWduZWQgbG9uZykmYikpIT0kZW5hYmxl
X2Nzc2l6ZSB8fCBqPGsgPyBrIDogajsKKyAgai09KCh1bnNpZ25lZCBsb25nKSZiKTsKKyAgaio9
JGNzdGFja19kaXJlY3Rpb247CisgIGZwcmludGYoZnAsIiVsdSIsaik7CisgIGZjbG9zZShmcCk7
CisgIHJldHVybiAwOworfQorRU9GCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQzNzM6IFwi
JGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25m
dGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK3RoZW4K
KyAgdG1wX2Nzc2l6ZT1gY2F0IGNvbmZ0ZXN0MWAKK2Vsc2UKKyAgZWNobyAiY29uZmlndXJlOiBm
YWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIHJt
IC1mciBjb25mdGVzdCoKKyAgdG1wX2Nzc2l6ZT0wCitmaQorcm0gLWZyIGNvbmZ0ZXN0KgorZmkK
KworaWYgdGVzdCAiJHRtcF9jc3NpemUiICE9ICIkZW5hYmxlX2Nzc2l6ZSIgOyB0aGVuCisgICBl
bmFibGVfY3NzaXplPSR0bXBfY3NzaXplOworICAgZWNobyAiJGFjX3QiIiJnb3QgJGVuYWJsZV9j
c3NpemUiIiAxPiY2CisgICBjYXQgPj4gY29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBDU1NJWkUg
JGVuYWJsZV9jc3NpemUKK0VPRgorCitlbHNlCisgICBlY2hvICIkYWNfdCIiIiRlbmFibGVfY3Nz
aXplIGlzIE9LIiIgMT4mNgorZmkKKworY3N0YWNrX3RvcD0wCitjc3RhY2tfcmFuZ2U9MAorZWNo
byAkYWNfbiAiY2hlY2tpbmcgImZpbmRpbmcgY3N0YWNrIHRvcCIiIi4uLiAkYWNfYyIgMT4mNgor
ZWNobyAiY29uZmlndXJlOjQzOTk6IGNoZWNraW5nICJmaW5kaW5nIGNzdGFjayB0b3AiIiA+JjUK
K2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIGNzdGFja190b3A9MAor
ZWxzZQorICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSA0NDA0ICJjb25maWd1
cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWlu
KCkKK3sKKyAgdm9pZCAqdjsKKyAgdW5zaWduZWQgbG9uZyBpLGosazsKKyAgRklMRSAqZnAgPSBm
b3BlbigiY29uZnRlc3QxIiwidyIpOworCisgIGZvciAoaT0yLGs9MTtpO2s9aSxpPDw9MSk7Cisg
IGZvciAoaT1qPWs7aiAmJiBpPCh1bnNpZ25lZCBsb25nKSZ2ICsgKCRjc3RhY2tfZGlyZWN0aW9u
PT0xID8gJGVuYWJsZV9jc3NpemUgOiAwKTtqPj49MSxpfD1qKTsKKyAgZnByaW50ZihmcCwiMHgl
bHgiLGkmLTB4MTAwMCk7CisgIGZjbG9zZShmcCk7CisgIHJldHVybiAwOworfQorRU9GCitpZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjQ0MjE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25m
dGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK3RoZW4KKyAgY3N0YWNrX3RvcD1gY2F0IGNvbmZ0ZXN0
MWAKK2Vsc2UKKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAg
Y2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIHJtIC1mciBjb25mdGVzdCoKKyAgY3N0YWNrX3Rv
cD0wCitmaQorcm0gLWZyIGNvbmZ0ZXN0KgorZmkKKworZWNobyAiJGFjX3QiImdvdCAkY3N0YWNr
X3RvcCIgMT4mNgoraWYgdGVzdCAiJGNzdGFja190b3AiICE9ICIwIiA7IHRoZW4KKyAgIGVjaG8g
JGFjX24gImNoZWNraW5nICJmaW5kaW5nIG92ZXIgY3N0YWNrIGhhbGYgcmFuZ2UiIiIuLi4gJGFj
X2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZTo0NDM2OiBjaGVja2luZyAiZmluZGluZyBvdmVyIGNz
dGFjayBoYWxmIHJhbmdlIiIgPiY1CisgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHll
czsgdGhlbgorICBjc3RhY2tfcmFuZ2U9MAorZWxzZQorICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0
IDw8RU9GCisjbGluZSA0NDQxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNp
bmNsdWRlIDxzdGRpby5oPgorICAgaW50CisgICBtYWluKCkKKyAgIHsKKyAgICAgdW5zaWduZWQg
bG9uZyBqOworICAgICBGSUxFICpmcCA9IGZvcGVuKCJjb25mdGVzdDEiLCJ3Iik7CisKKyAgICAg
Zm9yIChqPTE7aiAmJiAhKGomICRjc3RhY2tfdG9wKTtqPDw9MSk7CisgICAgIGZwcmludGYoZnAs
IjB4JWx4IixqPj4xKTsKKyAgICAgZmNsb3NlKGZwKTsKKyAgICAgcmV0dXJuIDA7CisgICB9CitF
T0YKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDQ1NjogXCIkYWNfbGlua1wiKSAxPiY1OyAo
ZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYm
ICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAordGhlbgorICBjc3RhY2tfcmFuZ2U9YGNh
dCBjb25mdGVzdDFgCitlbHNlCisgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2Fz
OiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICBybSAtZnIgY29uZnRlc3QqCisg
IGNzdGFja19yYW5nZT0wCitmaQorcm0gLWZyIGNvbmZ0ZXN0KgorZmkKKworICAgZWNobyAiJGFj
X3QiImdvdCAkY3N0YWNrX3JhbmdlIiAxPiY2CisgICBpZiB0ZXN0ICIkY3N0YWNrX3JhbmdlIiAh
PSAiMCIgOyB0aGVuIAorCWNhdCA+PiBjb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIENTVEFDS19U
T1AgJGNzdGFja190b3AKK0VPRgorCisgICAgICBjYXQgPj4gY29uZmRlZnMuaCA8PEVPRgorI2Rl
ZmluZSBDU1RBQ0tfUkFOR0UgJGNzdGFja19yYW5nZQorRU9GCisKKyAgIGZpCitmaQorCitpZiB0
ZXN0ICIkZW5hYmxlX2ltbWZpeCIgPSAieWVzIiA7IHRoZW4KKyAgaWYgdGVzdCAiJGNzdGFja190
b3AiICE9ICIwIiA7IHRoZW4KKyAgICAgaWYgdGVzdCAiJGNzdGFja19yYW5nZSIgIT0gIjAiIDsg
dGhlbiAKKwljYXQgPj4gY29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBJTV9GSVhfQkFTRSAkY3N0
YWNrX3RvcAorRU9GCisKKyAgICAgICAgY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUg
SU1fRklYX0xJTSAkY3N0YWNrX3JhbmdlCitFT0YKKworICAgICBmaQorICBmaQorZmkKIAogCiBl
Y2hvICRhY19uICJjaGVja2luZyAic2l6ZW9mIGxvbmcgbG9uZyBpbnQiIiIuLi4gJGFjX2MiIDE+
JjYKLWVjaG8gImNvbmZpZ3VyZTo0MDkwOiBjaGVja2luZyAic2l6ZW9mIGxvbmcgbG9uZyBpbnQi
IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0NDk4OiBjaGVja2luZyAic2l6ZW9mIGxvbmcgbG9uZyBp
bnQiIiA+JjUKIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIGVjaG8g
IiRhY190IiJubyIgMT4mNgogCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YK
LSNsaW5lIDQwOTYgImNvbmZpZ3VyZSIKKyNsaW5lIDQ1MDQgImNvbmZpZ3VyZSIKICNpbmNsdWRl
ICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiBtYWluKCkKQEAgLTQxMDIsNyArNDUx
MCw3IEBACiB9CiAKIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0MTA2OiBcIiRhY19s
aW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qk
e2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFs
IGVjaG8gY29uZmlndXJlOjQ1MTQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmsp
IDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsg
ZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVm
aW5lIEhBVkVfTE9OR19MT05HIDEKQEAgLTQxNTgsNDIgKzQ1NjYsNiBAQAogCiAKIAotIyBwYWdl
d2lkdGgKLWVjaG8gJGFjX24gImNoZWNraW5nIGZvciBwYWdld2lkdGgiIi4uLiAkYWNfYyIgMT4m
NgotZWNobyAiY29uZmlndXJlOjQxNjQ6IGNoZWNraW5nIGZvciBwYWdld2lkdGgiID4mNQotaWYg
dGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KLSAgUEFHRVdJRFRIPTAKLWVsc2UK
LSAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDE2OSAiY29uZmlndXJlIgot
I2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgICAgICNp
bmNsdWRlIDx1bmlzdGQuaD4KLWludCBtYWluKCkge3NpemVfdCBpPWdldHBhZ2VzaXplKCksajsg
Ci0JICAgIEZJTEUgKmZwPWZvcGVuKCJjb25mdGVzdDEiLCJ3Iik7Ci0JICAgIGZvciAoaj0wO2k+
Pj0xO2orKyk7Ci0JICAgIGZwcmludGYoZnAsIiV1IixqKTsKLQkgICAgcmV0dXJuIDA7fQotRU9G
Ci1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQxNzk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2
YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAo
Li9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKLXRoZW4KLSAgUEFHRVdJRFRIPWBjYXQgY29u
ZnRlc3QxYAotZWxzZQotICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4m
NQotICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSAgcm0gLWZyIGNvbmZ0ZXN0KgotICBQQUdF
V0lEVEg9MAotZmkKLXJtIC1mciBjb25mdGVzdCoKLWZpCi0KLWVjaG8gIiRhY190IiIkUEFHRVdJ
RFRIIiAxPiY2Ci1jYXQgPj4gY29uZmRlZnMuaCA8PEVPRgotI2RlZmluZSBQQUdFV0lEVEggJFBB
R0VXSURUSAotRU9GCi0KLQotCiAjIE1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAKIApAQCAtNDIw
MiwxMiArNDU3NCwxMiBAQAogZm9yIGFjX2Z1bmMgaW4gZ2V0Y3dkCiBkbwogZWNobyAkYWNfbiAi
Y2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0
MjA2OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQorZWNobyAiY29uZmlndXJlOjQ1Nzg6IGNo
ZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNf
Y3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihj
YWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YK
LSNsaW5lIDQyMTEgImNvbmZpZ3VyZSIKKyNsaW5lIDQ1ODMgImNvbmZpZ3VyZSIKICNpbmNsdWRl
ICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBh
bmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRo
IGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLwpAQCAtNDIzMCw3ICs0NjAyLDcgQEAKIAogOyBy
ZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQyMzQ6IFwiJGFjX2xp
bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7
YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NjA2OiBcIiRhY19s
aW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qk
e2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5j
XyRhY19mdW5jPXllcyIKIGVsc2UKQEAgLTQyNTcsMTIgKzQ2MjksMTIgQEAKIGZvciBhY19mdW5j
IGluIGdldHdkCiBkbwogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFj
X2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MjYxOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4m
NQorZWNobyAiY29uZmlndXJlOjQ2MzM6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CiBpZiBl
dmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBz
ZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNh
dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQyNjYgImNvbmZpZ3VyZSIKKyNsaW5l
IDQ2MzggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRl
ciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAog
ICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLwpA
QCAtNDI4NSw3ICs0NjU3LDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVj
aG8gY29uZmlndXJlOjQyODk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+
JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZTo0NjYxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy
PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNv
bmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jXyRhY19mdW5jPXllcyIKIGVsc2UKQEAgLTQzMTAs
MTIgKzQ2ODIsMTIgQEAKIGRvbmUKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHVuYW1lIiIu
Li4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MzE0OiBjaGVja2luZyBmb3IgdW5hbWUi
ID4mNQorZWNobyAiY29uZmlndXJlOjQ2ODY6IGNoZWNraW5nIGZvciB1bmFtZSIgPiY1CiBpZiBl
dmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY191bmFtZScrc2V0fSdgXCIgPSBzZXQi
OyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+
IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQzMTkgImNvbmZpZ3VyZSIKKyNsaW5lIDQ2
OTEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0
byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAg
IHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgdW5hbWUoKTsgYmVsb3cuICAqLwpAQCAtNDMz
OCw3ICs0NzEwLDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29u
ZmlndXJlOjQzNDI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0g
JiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNv
bmZpZ3VyZTo0NzE0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9
ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0
KgogICBldmFsICJhY19jdl9mdW5jX3VuYW1lPXllcyIKIGVsc2UKQEAgLTQzNjIsMTIgKzQ3MzQs
MTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBnZXR0aW1lb2ZkYXkiIi4uLiAk
YWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQzNjY6IGNoZWNraW5nIGZvciBnZXR0aW1lb2Zk
YXkiID4mNQorZWNobyAiY29uZmlndXJlOjQ3Mzg6IGNoZWNraW5nIGZvciBnZXR0aW1lb2ZkYXki
ID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfZ2V0dGltZW9mZGF5
JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+
JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDM3MSAiY29u
ZmlndXJlIgorI2xpbmUgNDc0MyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAv
KiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3
IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBnZXR0aW1lb2Zk
YXkoKTsgYmVsb3cuICAqLwpAQCAtNDM5MCw3ICs0NzYyLDcgQEAKIAogOyByZXR1cm4gMDsgfQog
RU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQzOTQ6IFwiJGFjX2xpbmtcIikgMT4mNTsg
KGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsg
dGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NzY2OiBcIiRhY19saW5rXCIpIDE+JjU7
IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07
IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jX2dldHRpbWVvZmRh
eT15ZXMiCiBlbHNlCkBAIC00NDE5LDE3ICs0NzkxLDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAi
JGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Ig
JGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDQyMzogY2hlY2tpbmcg
Zm9yICRhY19oZHIiID4mNQorZWNobyAiY29uZmlndXJlOjQ3OTU6IGNoZWNraW5nIGZvciAkYWNf
aGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3Nh
ZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIg
MT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0NDI4ICJj
b25maWd1cmUiCisjbGluZSA0ODAwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIK
ICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4
dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NDMz
OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hv
IGNvbmZpZ3VyZTo0ODA1OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsg
fQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRl
c3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNv
bmZ0ZXN0KgpAQCAtNDQ2MSwxNyArNDgzMywxNyBAQAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19o
ZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19o
ZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ0NjU6IGNoZWNraW5nIGZvciAk
YWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0ODM3OiBjaGVja2luZyBmb3IgJGFjX2hkciIg
PiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytz
ZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYK
IGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDQ3MCAiY29uZmln
dXJlIgorI2xpbmUgNDg0MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5j
bHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9k
ZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6NDQ3NTogXCIk
YWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25m
aWd1cmU6NDg0NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFj
X2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7
YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVz
dCoKQEAgLTQ1MTEsMTIgKzQ4ODMsMTIgQEAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBlY2hvICRhY19uICJj
aGVja2luZyBmb3IgQlNEZ2V0dGltZW9mZGF5IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZp
Z3VyZTo0NTE1OiBjaGVja2luZyBmb3IgQlNEZ2V0dGltZW9mZGF5IiA+JjUKK2VjaG8gImNvbmZp
Z3VyZTo0ODg3OiBjaGVja2luZyBmb3IgQlNEZ2V0dGltZW9mZGF5IiA+JjUKIGlmIGV2YWwgInRl
c3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX0JTRGdldHRpbWVvZmRheScrc2V0fSdgXCIgPSBz
ZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNh
dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQ1MjAgImNvbmZpZ3VyZSIKKyNsaW5l
IDQ4OTIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRl
ciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAog
ICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgQlNEZ2V0dGltZW9mZGF5KCk7IGJlbG93
LiAgKi8KQEAgLTQ1MzksNyArNDkxMSw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAo
ZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NTQzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19s
aW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsg
KGV2YWwgZWNobyBjb25maWd1cmU6NDkxNTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNf
bGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJt
IC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY19CU0RnZXR0aW1lb2ZkYXk9eWVzIgog
ZWxzZQpAQCAtNDU2MCwxMiArNDkzMiwxMiBAQAogZWxzZQogICBlY2hvICIkYWNfdCIibm8iIDE+
JjYKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBnZXR0aW1lb2ZkYXkiIi4uLiAkYWNfYyIgMT4m
NgotZWNobyAiY29uZmlndXJlOjQ1NjQ6IGNoZWNraW5nIGZvciBnZXR0aW1lb2ZkYXkiID4mNQor
ZWNobyAiY29uZmlndXJlOjQ5MzY6IGNoZWNraW5nIGZvciBnZXR0aW1lb2ZkYXkiID4mNQogaWYg
ZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfZ2V0dGltZW9mZGF5JytzZXR9J2Bc
IiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UK
ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDU2OSAiY29uZmlndXJlIgor
I2xpbmUgNDk0MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0g
aGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlw
ZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBnZXR0aW1lb2ZkYXkoKTsgYmVs
b3cuICAqLwpAQCAtNDU4OCw3ICs0OTYwLDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjQ1OTI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYg
eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0OTY0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRh
Y19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAg
cm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jX2dldHRpbWVvZmRheT15ZXMiCiBl
bHNlCkBAIC00NjE1LDEwICs0OTg3LDEwIEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9y
IGdldHRpbWVvZmRheSBkZWNsYXJhdGlvbiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1
cmU6NDYxOTogY2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSBkZWNsYXJhdGlvbiIgPiY1CitlY2hv
ICJjb25maWd1cmU6NDk5MTogY2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSBkZWNsYXJhdGlvbiIg
PiY1CiAKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQ2MjIgImNvbmZpZ3Vy
ZSIKKyNsaW5lIDQ5OTQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1
ZGUgPHN5cy90aW1lLmg+CiBFT0YKQEAgLTQ2MzksNyArNTAxMSw3IEBACiAKIAogZWNobyAkYWNf
biAiY2hlY2tpbmcgZm9yIHNpbiBpbiAtbG0iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmln
dXJlOjQ2NDM6IGNoZWNraW5nIGZvciBzaW4gaW4gLWxtIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1
MDE1OiBjaGVja2luZyBmb3Igc2luIGluIC1sbSIgPiY1CiBhY19saWJfdmFyPWBlY2hvIG0nXydz
aW4gfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNf
Y3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAi
KGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTQ2NDcsNyArNTAxOSw3IEBACiAgIGFjX3NhdmVfTElC
Uz0iJExJQlMiCiBMSUJTPSItbG0gICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP
RgotI2xpbmUgNDY1MSAiY29uZmlndXJlIgorI2xpbmUgNTAyMyAiY29uZmlndXJlIgogI2luY2x1
ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUg
dG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQg
bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtNDY1OCw3ICs1MDMwLDcgQEAKIHNp
bigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDY2Mjog
XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNv
bmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUwMzQ6
IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj
b25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFj
X2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC00NjgwLDcgKzUwNTIsNyBAQAogZmkK
IAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxtaW5nd2V4IiIuLi4gJGFjX2Mi
IDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0Njg0OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbG1pbmd3
ZXgiID4mNQorZWNobyAiY29uZmlndXJlOjUwNTY6IGNoZWNraW5nIGZvciBtYWluIGluIC1sbWlu
Z3dleCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIG1pbmd3ZXgnXydtYWluIHwgc2VkICd5JS4vKy0l
X19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zh
cicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAx
PiY2CkBAIC00Njg4LDE0ICs1MDYwLDE0IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJT
PSItbG1pbmd3ZXggICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUg
NDY5MiAiY29uZmlndXJlIgorI2xpbmUgNTA2NCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZk
ZWZzLmgiCiAKIGludCBtYWluKCkgewogbWFpbigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsg
KGV2YWwgZWNobyBjb25maWd1cmU6NDY5OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNf
bGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjUwNzE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBy
bSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNl
CkBAIC00NzIzLDE3ICs1MDk1LDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBz
ZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4u
ICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDcyNzogY2hlY2tpbmcgZm9yICRhY19oZHIi
ID4mNQorZWNobyAiY29uZmlndXJlOjUwOTk6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlm
IGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwi
ID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQog
ICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0NzMyICJjb25maWd1cmUiCisj
bGluZSA1MTA0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwk
YWNfaGRyPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxs
IDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NzM3OiBcIiRhY190cnlc
IikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1
MTA5OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBn
cmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9
XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAt
NDc3MSwxNyArNTE0MywxNyBAQAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5
JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNf
YyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ3NzU6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUK
K2VjaG8gImNvbmZpZ3VyZTo1MTQ3OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFs
ICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNl
dCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0
ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDc4MCAiY29uZmlndXJlIgorI2xpbmUg
NTE1MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hk
cj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNv
bmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6NDc4NTogXCIkYWNfdHJ5XCIpIDE+
JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6NTE1Nzog
XCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAt
diAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAK
IGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTQ4MTgs
MTcgKzUxOTAsMTcgQEAKIGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLyst
JV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+
JjYKLWVjaG8gImNvbmZpZ3VyZTo0ODIyOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hv
ICJjb25maWd1cmU6NTE5NDogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVz
dCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0
aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNv
bmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQ4MjcgImNvbmZpZ3VyZSIKKyNsaW5lIDUxOTkg
ImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBF
T0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVz
dC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjQ4MzI6IFwiJGFjX3RyeVwiKSAxPiY1OyAo
ZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjUyMDQ6IFwiJGFj
X3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14g
KisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0
ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC00ODY4LDE3ICs1
MjQwLDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3Bf
JSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1l
Y2hvICJjb25maWd1cmU6NDg3MjogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQorZWNobyAiY29u
ZmlndXJlOjUyNDQ6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJg
ZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgog
ICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVz
dC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0ODc3ICJjb25maWd1cmUiCisjbGluZSA1MjQ5ICJjb25m
aWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBh
Y190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0
IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0ODgyOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwg
JGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MjU0OiBcIiRhY190cnlc
IikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBj
b25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAt
eiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtNDkxNSwxNyArNTI4Nywx
NyBAQAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAog
ZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAi
Y29uZmlndXJlOjQ5MTk6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3Vy
ZTo1MjkxOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8g
JyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNo
byAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFj
X2V4dCA8PEVPRgotI2xpbmUgNDkyNCAiY29uZmlndXJlIgorI2xpbmUgNTI5NiAiY29uZmlndXJl
IgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5
PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsg
KGV2YWwgZWNobyBjb25maWd1cmU6NDkyOTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190
cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6NTMwMTogXCIkYWNfdHJ5XCIpIDE+
JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRl
c3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRh
Y19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTQ5NjIsMTcgKzUzMzQsMTcgQEAK
IGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8g
JGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZp
Z3VyZTo0OTY2OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6NTMz
ODogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7
J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFj
X24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg
PDxFT0YKLSNsaW5lIDQ5NzEgImNvbmZpZ3VyZSIKKyNsaW5lIDUzNDMgImNvbmZpZ3VyZSIKICNp
bmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFj
X2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFs
IGVjaG8gY29uZmlndXJlOjQ5NzY6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAy
PiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjUzNDg6IFwiJGFjX3RyeVwiKSAxPiY1OyAo
ZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91
dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJy
IjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC01MDA4LDEyICs1MzgwLDEyIEBACiAjIHRl
c3QgbWFrZXMgc2Vuc2UuICBDTQogIwogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGlzbm9ybWFs
IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1MDEyOiBjaGVja2luZyBmb3IgaXNu
b3JtYWwiID4mNQorZWNobyAiY29uZmlndXJlOjUzODQ6IGNoZWNraW5nIGZvciBpc25vcm1hbCIg
PiY1CiBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBIQVZFX0lTTk9S
TUFMPTAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19l
eHQgPDxFT0YKLSNsaW5lIDUwMTcgImNvbmZpZ3VyZSIKKyNsaW5lIDUzODkgImNvbmZpZ3VyZSIK
ICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2RlZmluZSBfR05VX1NPVVJDRQogCSAgICAjaW5jbHVk
ZSA8bWF0aC5oPgpAQCAtNTAyMiw3ICs1Mzk0LDcgQEAKIAkJcmV0dXJuIGlzbm9ybWFsKGYpIHx8
ICFpc25vcm1hbChmKSA/IDAgOiAxOwogCQl9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1
cmU6NTAyNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0
ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYv
bnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1Mzk4OiBcIiRhY19saW5rXCIpIDE+JjU7
IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0g
JiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIGNhdCA+PiBjb25mZGVm
cy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX0lTTk9STUFMIDEKQEAgLTUwMzMsMTIgKzU0MDUsMTIg
QEAKICAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CiAgIHJtIC1mciBjb25mdGVzdCoKICAgZWNo
byAkYWNfbiAiY2hlY2tpbmcgZm9yIGZwY2xhc3MgaW4gaWVlZWZwLmgiIi4uLiAkYWNfYyIgMT4m
NgotZWNobyAiY29uZmlndXJlOjUwMzc6IGNoZWNraW5nIGZvciBmcGNsYXNzIGluIGllZWVmcC5o
IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NDA5OiBjaGVja2luZyBmb3IgZnBjbGFzcyBpbiBpZWVl
ZnAuaCIgPiY1CiAJCWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIEhB
VkVfSUVFRUZQPTAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0
LiRhY19leHQgPDxFT0YKLSNsaW5lIDUwNDIgImNvbmZpZ3VyZSIKKyNsaW5lIDU0MTQgImNvbmZp
Z3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGllZWVmcC5oPgogCQkJICAg
IGludCBtYWluKCkgewpAQCAtNTA0Niw3ICs1NDE4LDcgQEAKIAkJCQlyZXR1cm4gZnBjbGFzcyhm
KT49RlBfTlpFUk8gfHwgZnBjbGFzcyhmKTxGUF9OWkVSTyA/IDAgOiAxOwogCQkJCX0KIEVPRgot
aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MDUwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFs
ICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4v
Y29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU0
MjI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAt
cyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwK
IHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfSUVFRUZQIDEK
QEAgLTUwNjgsMTIgKzU0NDAsMTIgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgaXNm
aW5pdGUiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjUwNzI6IGNoZWNraW5nIGZv
ciBpc2Zpbml0ZSIgPiY1CitlY2hvICJjb25maWd1cmU6NTQ0NDogY2hlY2tpbmcgZm9yIGlzZmlu
aXRlIiA+JjUKIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIEhBVkVf
SVNGSU5JVEU9MCBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3Qu
JGFjX2V4dCA8PEVPRgotI2xpbmUgNTA3NyAiY29uZmlndXJlIgorI2xpbmUgNTQ0OSAiY29uZmln
dXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjZGVmaW5lIF9HTlVfU09VUkNFCiAJICAgICNp
bmNsdWRlIDxtYXRoLmg+CkBAIC01MDgyLDcgKzU0NTQsNyBAQAogCQlyZXR1cm4gaXNmaW5pdGUo
ZikgfHwgIWlzZmluaXRlKGYpID8gMCA6IDE7CiAJCX0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNv
bmZpZ3VyZTo1MDg2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9
ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+
L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU0NTg6IFwiJGFjX2xpbmtcIikg
MT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhl
ZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgY2F0ID4+IGNv
bmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfSVNGSU5JVEUgMQpAQCAtNTA5MywxMiArNTQ2
NSwxMiBAQAogICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKICAgcm0gLWZyIGNvbmZ0ZXN0Kgog
ICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZmluaXRlKCkiIi4uLiAkYWNfYyIgMT4mNgotZWNo
byAiY29uZmlndXJlOjUwOTc6IGNoZWNraW5nIGZvciBmaW5pdGUoKSIgPiY1CitlY2hvICJjb25m
aWd1cmU6NTQ2OTogY2hlY2tpbmcgZm9yIGZpbml0ZSgpIiA+JjUKIAkJaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgSEFWRV9GSU5JVEU9MCBlY2hvICIkYWNfdCIibm8i
IDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTEwMiAi
Y29uZmlndXJlIgorI2xpbmUgNTQ3NCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgi
CiAjaW5jbHVkZSA8bWF0aC5oPgogCSAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGllZWVm
cC5oPgpAQCAtNTEwNyw3ICs1NDc5LDcgQEAKIAkJCQlyZXR1cm4gZmluaXRlKGYpIHx8ICFmaW5p
dGUoZikgPyAwIDogMTsKIAkJCQl9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTEx
MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z
IGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAor
aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NDgzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFs
ICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4v
Y29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIGNhdCA+PiBjb25mZGVmcy5oIDw8
XEVPRgogI2RlZmluZSBIQVZFX0ZJTklURSAxCkBAIC01MTQ4LDE1ICs1NTIwLDE1IEBACiAjCSAg
IGlmIC1sc29ja2V0IGRvZXNuJ3Qgd29yayBieSBpdHNlbGYuCiAjLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGVjaG8g
JGFjX24gImNoZWNraW5nIGZvciBzb2NrZXRzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZp
Z3VyZTo1MTUyOiBjaGVja2luZyBmb3Igc29ja2V0cyIgPiY1CitlY2hvICJjb25maWd1cmU6NTUy
NDogY2hlY2tpbmcgZm9yIHNvY2tldHMiID4mNQogdGNsX2NoZWNrQm90aD0wCiBlY2hvICRhY19u
ICJjaGVja2luZyBmb3IgY29ubmVjdCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6
NTE1NTogY2hlY2tpbmcgZm9yIGNvbm5lY3QiID4mNQorZWNobyAiY29uZmlndXJlOjU1Mjc6IGNo
ZWNraW5nIGZvciBjb25uZWN0IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19j
dl9mdW5jX2Nvbm5lY3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2Fj
aGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0j
bGluZSA1MTYwICJjb25maWd1cmUiCisjbGluZSA1NTMyICJjb25maWd1cmUiCiAjaW5jbHVkZSAi
Y29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5k
IGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBj
aGFyIGNvbm5lY3QoKTsgYmVsb3cuICAqLwpAQCAtNTE3OSw3ICs1NTUxLDcgQEAKIAogOyByZXR1
cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUxODM6IFwiJGFjX2xpbmtc
IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf
ZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NTU1OiBcIiRhY19saW5r
XCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2Fj
X2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jX2Nv
bm5lY3Q9eWVzIgogZWxzZQpAQCAtNTIwMSw3ICs1NTczLDcgQEAKIAogaWYgdGVzdCAiJHRjbF9j
aGVja1NvY2tldCIgPSAxOyB0aGVuCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG1haW4g
aW4gLWxzb2NrZXQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjUyMDU6IGNoZWNr
aW5nIGZvciBtYWluIGluIC1sc29ja2V0IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NTc3OiBjaGVj
a2luZyBmb3IgbWFpbiBpbiAtbHNvY2tldCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIHNvY2tldCdf
J21haW4gfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sn
YWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNf
biAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTUyMDksMTQgKzU1ODEsMTQgQEAKICAgYWNfc2F2
ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sc29ja2V0ICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRh
Y19leHQgPDxFT0YKLSNsaW5lIDUyMTMgImNvbmZpZ3VyZSIKKyNsaW5lIDU1ODUgImNvbmZpZ3Vy
ZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIG1haW4oKQogOyByZXR1
cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUyMjA6IFwiJGFjX2xpbmtc
IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf
ZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NTkyOiBcIiRhY19saW5r
XCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2Fj
X2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFj
X2xpYl92YXI9eWVzIgogZWxzZQpAQCAtNTI0NCwxMiArNTYxNiwxMiBAQAogICAgIHRrX29sZExp
YnM9JFRMSUJTCiAgICAgVExJQlM9IiRUTElCUyAtbHNvY2tldCAtbG5zbCIKICAgICBlY2hvICRh
Y19uICJjaGVja2luZyBmb3IgYWNjZXB0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3Vy
ZTo1MjQ4OiBjaGVja2luZyBmb3IgYWNjZXB0IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NjIwOiBj
aGVja2luZyBmb3IgYWNjZXB0IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19j
dl9mdW5jX2FjY2VwdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNo
ZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNs
aW5lIDUyNTMgImNvbmZpZ3VyZSIKKyNsaW5lIDU2MjUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJj
b25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQg
aG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNo
YXIgYWNjZXB0KCk7IGJlbG93LiAgKi8KQEAgLTUyNzIsNyArNTY0NCw3IEBACiAKIDsgcmV0dXJu
IDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1Mjc2OiBcIiRhY19saW5rXCIp
IDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4
ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTY0ODogXCIkYWNfbGlua1wi
KSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l
eGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY19hY2Nl
cHQ9eWVzIgogZWxzZQpAQCAtNTI5NCwxMiArNTY2NiwxMiBAQAogCiBmaQogZWNobyAkYWNfbiAi
Y2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWUiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmln
dXJlOjUyOTg6IGNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lIiA+JjUKK2VjaG8gImNvbmZpZ3Vy
ZTo1NjcwOiBjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFtZSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwi
YGVjaG8gJyQnJ3snYWNfY3ZfZnVuY19nZXRob3N0YnluYW1lJytzZXR9J2BcIiA9IHNldCI7IHRo
ZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29u
ZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTMwMyAiY29uZmlndXJlIgorI2xpbmUgNTY3NSAi
Y29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRl
ZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hp
Y2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBnZXRob3N0YnluYW1lKCk7IGJlbG93LiAgKi8KQEAg
LTUzMjIsNyArNTY5NCw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hv
IGNvbmZpZ3VyZTo1MzI2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1
OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNo
byBjb25maWd1cmU6NTY5ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4m
NTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25m
dGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY19nZXRob3N0YnluYW1lPXllcyIKIGVsc2UKQEAgLTUz
NDAsNyArNTcxMiw3IEBACiBlbHNlCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNgogZWNobyAkYWNf
biAiY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxuc2wiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29u
ZmlndXJlOjUzNDQ6IGNoZWNraW5nIGZvciBtYWluIGluIC1sbnNsIiA+JjUKK2VjaG8gImNvbmZp
Z3VyZTo1NzE2OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbG5zbCIgPiY1CiBhY19saWJfdmFyPWBl
Y2hvIG5zbCdfJ21haW4gfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVj
aG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAg
ZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTUzNDgsMTQgKzU3MjAsMTQgQEAK
ICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sbnNsICAkTElCUyIKIGNhdCA+IGNvbmZ0
ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDUzNTIgImNvbmZpZ3VyZSIKKyNsaW5lIDU3MjQgImNv
bmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIG1haW4oKQog
OyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUzNTk6IFwiJGFj
X2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVz
dCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NzMxOiBcIiRh
Y19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRl
c3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9s
aWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtNTM4NSwxNyArNTc1NywxNyBAQAogZG8KIGFj
X3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAi
Y2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjUz
ODk6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NzYxOiBjaGVj
a2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zf
aGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNh
Y2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgot
I2xpbmUgNTM5NCAiY29uZmlndXJlIgorI2xpbmUgNTc2NiAiY29uZmlndXJlIgogI2luY2x1ZGUg
ImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNv
bmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBj
b25maWd1cmU6NTM5OTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0K
K3sgKGV2YWwgZWNobyBjb25maWd1cmU6NTc3MTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRh
Y190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3Jl
cCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVu
CiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTU0MTYsNyArNTc4OCw3IEBACiAjZGVmaW5lICRhY190
cl9oZHIgMQogRU9GCiAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxyZWFkbGlu
ZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTQyMDogY2hlY2tpbmcgZm9yIG1h
aW4gaW4gLWxyZWFkbGluZSIgPiY1CitlY2hvICJjb25maWd1cmU6NTc5MjogY2hlY2tpbmcgZm9y
IG1haW4gaW4gLWxyZWFkbGluZSIgPiY1CiBhY19saWJfdmFyPWBlY2hvIHJlYWRsaW5lJ18nbWFp
biB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19j
dl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIo
Y2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNTQyNCwxNCArNTc5NiwxNCBAQAogICBhY19zYXZlX0xJ
QlM9IiRMSUJTIgogTElCUz0iLWxyZWFkbGluZSAtbG5jdXJzZXMgJExJQlMiCiBjYXQgPiBjb25m
dGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1NDI4ICJjb25maWd1cmUiCisjbGluZSA1ODAwICJj
b25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiBtYWluKCkK
IDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NDM1OiBcIiRh
Y19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRl
c3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTgwNzogXCIk
YWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0
ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3Zf
bGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTU0NjgsNyArNTg0MCw3IEBACiAKICMgVGhl
c2UgdGVzdHMgZGlzY292ZXIgZGlmZmVyZW5jZXMgYmV0d2VlbiByZWFkbGluZSA0LjEgYW5kIDQu
MwogCWVjaG8gJGFjX24gImNoZWNraW5nIGZvciBybF9jb21wbGV0aW9uX21hdGNoZXMgaW4gLWxy
ZWFkbGluZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTQ3MjogY2hlY2tpbmcg
Zm9yIHJsX2NvbXBsZXRpb25fbWF0Y2hlcyBpbiAtbHJlYWRsaW5lIiA+JjUKK2VjaG8gImNvbmZp
Z3VyZTo1ODQ0OiBjaGVja2luZyBmb3IgcmxfY29tcGxldGlvbl9tYXRjaGVzIGluIC1scmVhZGxp
bmUiID4mNQogYWNfbGliX3Zhcj1gZWNobyByZWFkbGluZSdfJ3JsX2NvbXBsZXRpb25fbWF0Y2hl
cyB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19j
dl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIo
Y2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNTQ3Niw3ICs1ODQ4LDcgQEAKICAgYWNfc2F2ZV9MSUJT
PSIkTElCUyIKIExJQlM9Ii1scmVhZGxpbmUgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4
dCA8PEVPRgotI2xpbmUgNTQ4MCAiY29uZmlndXJlIgorI2xpbmUgNTg1MiAiY29uZmlndXJlIgog
I2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90
b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQg
bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtNTQ4Nyw3ICs1ODU5LDcg
QEAKIHJsX2NvbXBsZXRpb25fbWF0Y2hlcygpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2
YWwgZWNobyBjb25maWd1cmU6NTQ5MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGlu
aykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChl
dmFsIGVjaG8gY29uZmlndXJlOjU4NjM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xp
bmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAt
cmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBA
IC01NTIwLDkgKzU4OTIsOSBAQAogCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIEZvciBuZXR3b3Jr
IGNvZGUgZm9yIG5zb2NrZXQuYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTUy
NDogY2hlY2tpbmcgRm9yIG5ldHdvcmsgY29kZSBmb3IgbnNvY2tldC5jIiA+JjUKK2VjaG8gImNv
bmZpZ3VyZTo1ODk2OiBjaGVja2luZyBGb3IgbmV0d29yayBjb2RlIGZvciBuc29ja2V0LmMiID4m
NQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTUyNiAiY29uZmlndXJlIgor
I2xpbmUgNTg5OCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRl
IDxzeXMvdGltZS5oPgpAQCAtNTU0OSw3ICs1OTIxLDcgQEAKIAkKIDsgcmV0dXJuIDA7IH0KIEVP
RgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NTUzOiBcIiRhY19saW5rXCIpIDE+JjU7IChl
dmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRo
ZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTkyNTogXCIkYWNfbGlua1wiKSAxPiY1OyAo
ZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0
aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVm
aW5lIEhBVkVfTlNPQ0tFVCAxCkBAIC01NTY2LDkgKzU5MzgsOSBAQAogCiAKIGVjaG8gJGFjX24g
ImNoZWNraW5nIGNoZWNrIGZvciBsaXN0ZW4gdXNpbmcgZmNudGwiIi4uLiAkYWNfYyIgMT4mNgot
ZWNobyAiY29uZmlndXJlOjU1NzA6IGNoZWNraW5nIGNoZWNrIGZvciBsaXN0ZW4gdXNpbmcgZmNu
dGwiID4mNQorZWNobyAiY29uZmlndXJlOjU5NDI6IGNoZWNraW5nIGNoZWNrIGZvciBsaXN0ZW4g
dXNpbmcgZmNudGwiID4mNQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTU3
MiAiY29uZmlndXJlIgorI2xpbmUgNTk0NCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZz
LmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxmY250bC5oPgpAQCAtNTU4MSw3ICs1
OTUzLDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjU1ODU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07
IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTk1NzogXCIkYWNfY29tcGlsZVwiKSAx
PiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3Qq
CiAgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBMSVNURU5fVVNFX0ZDTlRMIDEK
QEAgLTU2MDAsMTIgKzU5NzIsMTIgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcHJv
ZmlsIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1NjA0OiBjaGVja2luZyBmb3Ig
cHJvZmlsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1OTc2OiBjaGVja2luZyBmb3IgcHJvZmlsIiA+
JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX3Byb2ZpbCcrc2V0fSdg
XCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNl
CiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU2MDkgImNvbmZpZ3VyZSIK
KyNsaW5lIDU5ODEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVt
IGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5
cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgcHJvZmlsKCk7IGJlbG93LiAg
Ki8KQEAgLTU2MjgsNyArNjAwMCw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZh
bCBlY2hvIGNvbmZpZ3VyZTo1NjMyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5r
KSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2
YWwgZWNobyBjb25maWd1cmU6NjAwNDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGlu
aykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1y
ZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY19wcm9maWw9eWVzIgogZWxzZQpAQCAtNTY1
MywxMiArNjAyNSwxMiBAQAogCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzZXRlbnYiIi4u
LiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjU2NTc6IGNoZWNraW5nIGZvciBzZXRlbnYi
ID4mNQorZWNobyAiY29uZmlndXJlOjYwMjk6IGNoZWNraW5nIGZvciBzZXRlbnYiID4mNQogaWYg
ZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfc2V0ZW52JytzZXR9J2BcIiA9IHNl
dCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0
ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTY2MiAiY29uZmlndXJlIgorI2xpbmUg
NjAzNCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVy
IHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAg
ICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBzZXRlbnYoKTsgYmVsb3cuICAqLwpAQCAt
NTY4MSw3ICs2MDUzLDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjU2ODU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7
IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hv
IGNvbmZpZ3VyZTo2MDU3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1
OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0
ZXN0KgogICBldmFsICJhY19jdl9mdW5jX3NldGVudj15ZXMiCiBlbHNlCkBAIC01NzA3LDEyICs2
MDc5LDEyIEBACiAKIGlmIHRlc3QgIiRub19zZXRlbnYiID0gIjEiIDsgdGhlbgogZWNobyAkYWNf
biAiY2hlY2tpbmcgZm9yIHB1dGVudiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6
NTcxMTogY2hlY2tpbmcgZm9yIHB1dGVudiIgPiY1CitlY2hvICJjb25maWd1cmU6NjA4MzogY2hl
Y2tpbmcgZm9yIHB1dGVudiIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zf
ZnVuY19wdXRlbnYnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVk
KSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGlu
ZSA1NzE2ICJjb25maWd1cmUiCisjbGluZSA2MDg4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29u
ZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhv
cGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFy
IHB1dGVudigpOyBiZWxvdy4gICovCkBAIC01NzM1LDcgKzYxMDcsNyBAQAogCiA7IHJldHVybiAw
OyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTczOTogXCIkYWNfbGlua1wiKSAx
PiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVl
eHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjYxMTE6IFwiJGFjX2xpbmtcIikg
MT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhl
ZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfcHV0ZW52
PXllcyIKIGVsc2UKQEAgLTU3NjEsMTIgKzYxMzMsMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNo
ZWNraW5nIGZvciBfY2xlYW51cCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTc2
NTogY2hlY2tpbmcgZm9yIF9jbGVhbnVwIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2MTM3OiBjaGVj
a2luZyBmb3IgX2NsZWFudXAiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2
X2Z1bmNfX2NsZWFudXAnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2Fj
aGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0j
bGluZSA1NzcwICJjb25maWd1cmUiCisjbGluZSA2MTQyICJjb25maWd1cmUiCiAjaW5jbHVkZSAi
Y29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5k
IGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBj
aGFyIF9jbGVhbnVwKCk7IGJlbG93LiAgKi8KQEAgLTU3ODksNyArNjE2MSw3IEBACiAKIDsgcmV0
dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NzkzOiBcIiRhY19saW5r
XCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2Fj
X2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjE2NTogXCIkYWNfbGlu
a1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHth
Y19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY19f
Y2xlYW51cD15ZXMiCiBlbHNlCkBAIC01ODE1LDcgKzYxODcsNyBAQAogZ2NsX29rPW5vCiAKIGNh
dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU4MTkgImNvbmZpZ3VyZSIKKyNsaW5l
IDYxOTEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGN0eXBl
Lmg+CiBFT0YKQEAgLTU4NDMsNyArNjIxNSw3IEBACiAKICMgaWYgdGVzdCAieCRlbmFibGVfbWFj
aGluZSIgPSAieCIgOyB0aGVuCiBlY2hvICRhY19uICJjaGVja2luZyBGSU9OQklPIHZzLiBPX05P
TkJMT0NLIGZvciBub25ibG9ja2luZyBJL08iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmln
dXJlOjU4NDc6IGNoZWNraW5nIEZJT05CSU8gdnMuIE9fTk9OQkxPQ0sgZm9yIG5vbmJsb2NraW5n
IEkvTyIgPiY1CitlY2hvICJjb25maWd1cmU6NjIxOTogY2hlY2tpbmcgRklPTkJJTyB2cy4gT19O
T05CTE9DSyBmb3Igbm9uYmxvY2tpbmcgSS9PIiA+JjUKIAogY2FzZSAkc3lzdGVtIGluCiAgICAg
ICAgT1NGKikKQEAgLTU4NzQsOSArNjI0Niw5IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcg
Y2hlY2sgZm9yIFNWX09OU1RBQ0siIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjU4
Nzg6IGNoZWNraW5nIGNoZWNrIGZvciBTVl9PTlNUQUNLIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2
MjUwOiBjaGVja2luZyBjaGVjayBmb3IgU1ZfT05TVEFDSyIgPiY1CiBjYXQgPiBjb25mdGVzdC4k
YWNfZXh0IDw8RU9GCi0jbGluZSA1ODgwICJjb25maWd1cmUiCisjbGluZSA2MjUyICJjb25maWd1
cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzaWduYWwuaD4KIGludCBqb2U9
U1ZfT05TVEFDSzsKQEAgLTU4ODUsNyArNjI1Nyw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgot
aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1ODg5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChl
dmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjYyNjE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07
IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNk
ZWZpbmUgSEFWRV9TVl9PTlNUQUNLIDEKQEAgLTU5MDIsOSArNjI3NCw5IEBACiBybSAtZiBjb25m
dGVzdCoKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgY2hlY2sgZm9yIFNJR1NZUyIiLi4uICRhY19j
IiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTkwNjogY2hlY2tpbmcgY2hlY2sgZm9yIFNJR1NZUyIg
PiY1CitlY2hvICJjb25maWd1cmU6NjI3ODogY2hlY2tpbmcgY2hlY2sgZm9yIFNJR1NZUyIgPiY1
CiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1OTA4ICJjb25maWd1cmUiCisj
bGluZSA2MjgwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxz
aWduYWwuaD4KIGludCBqb2U9U0lHU1lTOwpAQCAtNTkxMyw3ICs2Mjg1LDcgQEAKIAogOyByZXR1
cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU5MTc6IFwiJGFjX2NvbXBp
bGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwg
ZWNobyBjb25maWd1cmU6NjI4OTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29t
cGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGNhdCA+PiBjb25mZGVm
cy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX1NJR1NZUyAxCkBAIC01OTMxLDkgKzYzMDMsOSBAQAog
CiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGNoZWNrIGZvciBTSUdFTVQiIi4uLiAkYWNfYyIgMT4m
NgotZWNobyAiY29uZmlndXJlOjU5MzU6IGNoZWNraW5nIGNoZWNrIGZvciBTSUdFTVQiID4mNQor
ZWNobyAiY29uZmlndXJlOjYzMDc6IGNoZWNraW5nIGNoZWNrIGZvciBTSUdFTVQiID4mNQogY2F0
ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTkzNyAiY29uZmlndXJlIgorI2xpbmUg
NjMwOSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c2lnbmFs
Lmg+CiBpbnQgam9lPVNJR0VNVDsKQEAgLTU5NDIsNyArNjMxNCw3IEBACiAKIDsgcmV0dXJuIDA7
IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1OTQ2OiBcIiRhY19jb21waWxlXCIp
IDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjYzMTg6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUp
IDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBjYXQgPj4gY29uZmRlZnMuaCA8
PFxFT0YKICNkZWZpbmUgSEFWRV9TSUdFTVQgMQpAQCAtNTk2NiwxNyArNjMzOCwxNyBAQAogZG8K
IGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNf
biAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJl
OjU5NzA6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2MzQyOiBj
aGVja2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNf
Y3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAi
KGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP
RgotI2xpbmUgNTk3NSAiY29uZmlndXJlIgorI2xpbmUgNjM0NyAiY29uZmlndXJlIgogI2luY2x1
ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3Bw
IGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNo
byBjb25maWd1cmU6NTk4MDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7
IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6NjM1MjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFs
ICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwg
Z3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0
aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTYwMDYsMTcgKzYzNzgsMTcgQEAKIGRvCiBhY19z
YWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNo
ZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2MDEw
OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6NjM4MjogY2hlY2tp
bmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hl
YWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNo
ZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNs
aW5lIDYwMTUgImNvbmZpZ3VyZSIKKyNsaW5lIDYzODcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJj
b25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25m
dGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29u
ZmlndXJlOjYwMjA6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7
IChldmFsIGVjaG8gY29uZmlndXJlOjYzOTI6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNf
dHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAg
LXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgog
ICBybSAtcmYgY29uZnRlc3QqCkBAIC02MDQzLDkgKzY0MTUsOSBAQAogZG9uZQogCiAJZWNobyAk
YWNfbiAiY2hlY2tpbmcgZm9yIHNpZ2NvbnRleHQuLi4iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAi
Y29uZmlndXJlOjYwNDc6IGNoZWNraW5nIGZvciBzaWdjb250ZXh0Li4uIiA+JjUKK2VjaG8gImNv
bmZpZ3VyZTo2NDE5OiBjaGVja2luZyBmb3Igc2lnY29udGV4dC4uLiIgPiY1CiAgICAgICAgIGNh
dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDYwNDkgImNvbmZpZ3VyZSIKKyNsaW5l
IDY0MjEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHNpZ25h
bC5oPgogICAgICAgIApAQCAtNjA1NSw3ICs2NDI3LDcgQEAKICAgICAgICAKIDsgcmV0dXJuIDA7
IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MDU5OiBcIiRhY19jb21waWxlXCIp
IDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjY0MzE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUp
IDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICAKICAgICAgICAgc2lnY29udGV4
dF93b3Jrcz0xOwpAQCAtNjA3Niw5ICs2NDQ4LDkgQEAKIHJtIC1mIGNvbmZ0ZXN0KgogICAgICAg
IGlmIHRlc3QgIiRzaWdjb250ZXh0X3dvcmtzIiA9IDAgOyB0aGVuCiAgICAgICAgZWNobyAkYWNf
biAiY2hlY2tpbmcgZm9yIHNpZ2NvbnRleHQuLi4iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29u
ZmlndXJlOjYwODA6IGNoZWNraW5nIGZvciBzaWdjb250ZXh0Li4uIiA+JjUKK2VjaG8gImNvbmZp
Z3VyZTo2NDUyOiBjaGVja2luZyBmb3Igc2lnY29udGV4dC4uLiIgPiY1CiAgICAgICAgY2F0ID4g
Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjA4MiAiY29uZmlndXJlIgorI2xpbmUgNjQ1
NCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c2lnbmFsLmg+
CiAgICAgICAgICAgICAgI2lmZGVmIEhBVkVfQVNNX1NJR0NPTlRFWFRfSCAgICAgCkBAIC02MDk0
LDcgKzY0NjYsNyBAQAogICAgICAgICAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZTo2MDk4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21w
aWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjY0NzA6IFwiJGFj
X2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0g
LXJmIGNvbmZ0ZXN0KgogICAKICAgICAgICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCkBAIC02
MTM2LDcgKzY1MDgsNyBAQAogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJlbWFjcyIsIHNv
IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgZW1hY3M7IGFj
X3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAx
PiY2Ci1lY2hvICJjb25maWd1cmU6NjE0MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2Vj
aG8gImNvbmZpZ3VyZTo2NTEyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAi
dGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfRU1BQ1MnK3NldH0nYFwiID0gc2V0IjsgdGhl
bgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtNjE4NCw3ICs2
NTU2LDcgQEAKIEVPRgogCiBlY2hvICRhY19uICJjaGVja2luZyBlbWFjcyBzaXRlIGxpc3AgZGly
ZWN0b3J5IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2MTg4OiBjaGVja2luZyBl
bWFjcyBzaXRlIGxpc3AgZGlyZWN0b3J5IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NTYwOiBjaGVj
a2luZyBlbWFjcyBzaXRlIGxpc3AgZGlyZWN0b3J5IiA+JjUKIGlmIFsgIiRFTUFDU19TSVRFX0xJ
U1AiID0gInVua25vd24iIF0gOyB0aGVuCiAJaWYgWyAiJEVNQUNTIiAhPSAiIiBdIDsgdGhlbgog
CQlFTUFDU19TSVRFX0xJU1A9YCRFTUFDUyAtcSAtYmF0Y2ggLS1uby1zaXRlLWZpbGUgLWwgY29u
ZnRlc3QuZWwgMj4mMSB8IHNlZCAtZSAvTG9hZGluZy9kIHwgc2VkIC1lIC9sb2FkL2QgYApAQCAt
NjIwOCw3ICs2NTgwLDcgQEAKIEVPRgogCiBlY2hvICRhY19uICJjaGVja2luZyBlbWFjcyBkZWZh
dWx0LmVsIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2MjEyOiBjaGVja2luZyBl
bWFjcyBkZWZhdWx0LmVsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NTg0OiBjaGVja2luZyBlbWFj
cyBkZWZhdWx0LmVsIiA+JjUKIGlmIFsgIiRFTUFDUyIgIT0gIiIgXSA7IHRoZW4KIAlFTUFDU19E
RUZBVUxUX0VMPWAkRU1BQ1MgLXEgLWJhdGNoIC0tbm8tc2l0ZS1maWxlIC1sIGNvbmZ0ZXN0LmVs
IDI+JjEgfCBzZWQgLWUgL0xvYWRpbmcvZCB8IHNlZCAtZSAvbG9hZC9kIGAKIGVsc2UKQEAgLTYy
MzcsNyArNjYwOSw3IEBACiBFT0YKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZW1hY3MgaW5mby9k
aXIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjYyNDE6IGNoZWNraW5nIGVtYWNz
IGluZm8vZGlyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NjEzOiBjaGVja2luZyBlbWFjcyBpbmZv
L2RpciIgPiY1CiBpZiB0ZXN0ICIkdXNlIiA9ICJtaW5ndyIgOyB0aGVuCiAgICAgSU5GT19ESVI9
XCRcKHByZWZpeFwpL2xpYi9nY2wtJFZFUlNJT04vaW5mby8KIGVsc2UKQEAgLTYyNTUsNyArNjYy
Nyw3IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHRjbC90ayIiLi4uICRhY19jIiAx
PiY2Ci1lY2hvICJjb25maWd1cmU6NjI1OTogY2hlY2tpbmcgZm9yIHRjbC90ayIgPiY1CitlY2hv
ICJjb25maWd1cmU6NjYzMTogY2hlY2tpbmcgZm9yIHRjbC90ayIgPiY1CiAKIAogaWYgdGVzdCAt
ZCAiJHtUQ0xfQ09ORklHX1BSRUZJWH0iICA7IHRoZW4gdHJ1ZSA7IGVsc2UKQEAgLTYyNzgsNyAr
NjY1MCw3IEBACiAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInRjbHNoIiwgc28gaXQgY2Fu
IGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSB0Y2xzaDsgYWNfd29yZD0k
MgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVj
aG8gImNvbmZpZ3VyZTo2MjgyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29u
ZmlndXJlOjY2NTQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwi
YGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19UQ0xTSCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVj
aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC02Mzc4LDcgKzY3NTAsNyBA
QAogICBmaQogZmkKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYWluIGluIC1sbGllZWUiIi4u
LiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjYzODI6IGNoZWNraW5nIGZvciBtYWluIGlu
IC1sbGllZWUiID4mNQorZWNobyAiY29uZmlndXJlOjY3NTQ6IGNoZWNraW5nIGZvciBtYWluIGlu
IC1sbGllZWUiID4mNQogYWNfbGliX3Zhcj1gZWNobyBsaWVlZSdfJ21haW4gfCBzZWQgJ3klLi8r
LSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJf
dmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2Mi
IDE+JjYKQEAgLTYzODYsMTQgKzY3NTgsMTQgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJ
QlM9Ii1sbGllZWUgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUg
NjM5MCAiY29uZmlndXJlIgorI2xpbmUgNjc2MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZk
ZWZzLmgiCiAKIGludCBtYWluKCkgewogbWFpbigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsg
KGV2YWwgZWNobyBjb25maWd1cmU6NjM5NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNf
bGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjY3Njk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBy
bSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNl
CkBAIC02NDU4LDE2ICs2ODMwLDE2IEBACiAjIHRoZSB0aW1lIGhhbmRsaW5nIGZvciB1bml4dGlt
ZSwgYWRkIHRpbWV6b25lCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGFsbG9jYSIiLi4uICRhY19j
IiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjQ2MjogY2hlY2tpbmcgYWxsb2NhIiA+JjUKK2VjaG8g
ImNvbmZpZ3VyZTo2ODM0OiBjaGVja2luZyBhbGxvY2EiID4mNQogaWYgdGVzdCAiJGNyb3NzX2Nv
bXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgZ2NsX29rPW5vCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0
LiRhY19leHQgPDxFT0YKLSNsaW5lIDY0NjcgImNvbmZpZ3VyZSIKKyNsaW5lIDY4MzkgImNvbmZp
Z3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogaW50IG1haW4oKSB7IGV4aXQoYWxsb2NhKDUw
MCkgIT0gTlVMTCA/IDAgOiAxKTt9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjQ3
MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z
IGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAor
aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2ODQzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFs
ICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4v
Y29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIDoKIGVsc2UKQEAgLTY0OTAsMTIg
KzY4NjIsMTIgQEAKICAgZ2NsX29rPW5vCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg
PDxFT0YKLSNsaW5lIDY0OTQgImNvbmZpZ3VyZSIKKyNsaW5lIDY4NjYgImNvbmZpZ3VyZSIKICNp
bmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGFsbG9jYS5oPgogICBpbnQgbWFpbigpIHsg
ZXhpdChhbGxvY2EoNTAwKSAhPSBOVUxMID8gMCA6IDEpfQogRU9GCi1pZiB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjY0OTk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7
IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkg
Mj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njg3MTogXCIkYWNfbGlua1wi
KSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l
eGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICA6CiBlbHNl
CkBAIC02NTU2LDcgKzY5MjgsNyBAQAogIyByZWRoYXQvY3lnbnVzIHJlbGVhc2VkIGZvciBzb21l
IHJlYXNvbiBhIGJ1Z2d5IHZlcnNpb24gb2YgZ2NjLAogIyB3aGljaCBubyBvbmUgZWxzZSByZWxl
YXNlZC4gICBDYXRjaCB0aGF0IGhlcmUuCiBlY2hvICRhY19uICJjaGVja2luZyBDaGVja2luZyBm
b3IgYnVnZ3kgZ2NjIHZlcnNpb24gZnJvbSByZWRoYXQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAi
Y29uZmlndXJlOjY1NjA6IGNoZWNraW5nIENoZWNraW5nIGZvciBidWdneSBnY2MgdmVyc2lvbiBm
cm9tIHJlZGhhdCIgPiY1CitlY2hvICJjb25maWd1cmU6NjkzMjogY2hlY2tpbmcgQ2hlY2tpbmcg
Zm9yIGJ1Z2d5IGdjYyB2ZXJzaW9uIGZyb20gcmVkaGF0IiA+JjUKIGlmICAyPiYxICRDQyAtdiB8
IGZncmVwICJnY2MgdmVyc2lvbiAyLjk2IiA+IC9kZXYvbnVsbCAKICAgIHRoZW4gCiAgICAgICAg
IEJST0tFTl9PNF9PUFQ9MQpAQCAtNjU3Miw3ICs2OTQ0LDcgQEAKIAllY2hvICIkYWNfdCIibm8i
IDE+JjYKIGZpIAogCi1MSUJTPSIkTERGTEFHUyAkVExERkxBR1MgJExJQlMgJFRMSUJTIgorTElC
Uz0iYGVjaG8gJExERkxBR1MgfCBzZWQgJ3MsZ2NsLnNjcmlwdCwuLi91bml4cG9ydC9nY2wuc2Ny
aXB0LGcnYCAkVExERkxBR1MgJExJQlMgJFRMSUJTIgogCiBGSU5BTF9DRkxBR1M9IiRDRkxBR1Mg
JFRDRkxBR1MgJFBST0NFU1NPUl9GTEFHUyIKIApAQCAtNjc0MywxMSArNzExNSwxMSBAQAogcyVA
WF9FWFRSQV9MSUJTQCUkWF9FWFRSQV9MSUJTJWcKIHMlQEJVSUxEX0JGREAlJEJVSUxEX0JGRCVn
CiBzJUBMSVRUTEVfRU5EQCUkTElUVExFX0VORCVnCitzJUBQQUdFV0lEVEhAJSRQQUdFV0lEVEgl
ZwogcyVASEFWRV9MT05HX0xPTkdAJSRIQVZFX0xPTkdfTE9ORyVnCiBzJUBGTElTUEAlJEZMSVNQ
JWcKIHMlQFNZU1RFTUAlJFNZU1RFTSVnCiBzJUBDTFNUQU5EQVJEQCUkQ0xTVEFOREFSRCVnCi1z
JUBQQUdFV0lEVEhAJSRQQUdFV0lEVEglZwogcyVAUkxfT0JKU0AlJFJMX09CSlMlZwogcyVAUkxf
TElCQCUkUkxfTElCJWcKIHMlQE5PX1BST0ZJTEVAJSROT19QUk9GSUxFJWcKSW5kZXg6IGNvbmZp
Z3VyZS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2NvbmZpZ3VyZS5p
bix2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMTIuNC4xLjIuMi4yLjQ3LjIuMy4yLjEuNC4yLjQu
MgpkaWZmIC11IC1yMS4xMTIuNC4xLjIuMi4yLjQ3LjIuMy4yLjEuNC4yLjQuMiBjb25maWd1cmUu
aW4KLS0tIGNvbmZpZ3VyZS5pbgkxNSBKYW4gMjAwNSAxOToxNzoxNyAtMDAwMAkxLjExMi40LjEu
Mi4yLjIuNDcuMi4zLjIuMS40LjIuNC4yCisrKyBjb25maWd1cmUuaW4JMyBKdW4gMjAwNSAwNDow
NToyMiAtMDAwMApAQCAtMTEsMjcgKzExLDM4IEBACiAjCiAKIGhlbHA9Ii0tZW5hYmxlLW1heHBh
Z2U9WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSBwYWdlIHRhYmxlIG9mIHNpemUgWFhYIChkZWZhdWx0
ICR7ZGVmYXVsdF9tYXhwYWdlfSkiCi1BQ19BUkdfRU5BQkxFKG1heHBhZ2UsWyAtLWVuYWJsZS1t
YXhwYWdlPVhYWFggd2lsbCBjb21waWxlIGluIGEgcGFnZSB0YWJsZSBvZiBzaXplIFhYWCAoZWcg
Jy0tZW5hYmxlLW1heHBhZ2U9NjQqMTAyNCcgd291bGQgZ2l2ZSA2NEsgcGFnZXMgYWxsb3dpbmcg
MjU2IE1CIGlmIHBhZ2VzIGFyZSA0SyBlYWNoKV0gLAotW0FDX0RFRklORV9VTlFVT1RFRChNQVhQ
QUdFLCRlbmFibGVfbWF4cGFnZSldKQogCi1BQ19BUkdfRU5BQkxFKGhvbGVwYWdlLFsgLS1lbmFi
bGUtaG9sZXBhZ2U9WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSBYWFgtc2l6ZWQgaG9sZSBiZXR3ZWVu
IHRoZSBoZWFwIGFuZCByZWxvY2F0YWJsZSBtZW1vcnkgYXJlYSAoZWcgJy0tZW5hYmxlLWhvbGVw
YWdlPTY0KjEwMjQnIHdvdWxkIGdpdmUgNjRLIHBhZ2VzIGFsbG93aW5nIDI1NiBNQiBpZiBwYWdl
cyBhcmUgNEsgZWFjaCldICwKLVtBQ19ERUZJTkVfVU5RVU9URUQoSE9MRVBBR0UsJGVuYWJsZV9o
b2xlcGFnZSldKQogCi1BQ19BUkdfRU5BQkxFKHZzc2l6ZSxbIC0tZW5hYmxlLXZzc2l6ZT1YWFhY
IHdpbGwgY29tcGlsZSBpbiBhIHZhbHVlIHN0YWNrIG9mIHNpemUgWFhYXSAsCi1bQUNfREVGSU5F
X1VOUVVPVEVEKFZTU0laRSwkZW5hYmxlX3Zzc2l6ZSldKQorQUNfQVJHX0VOQUJMRShtYXhwYWdl
LFsgLS1lbmFibGUtbWF4cGFnZT1YWFhYIHdpbGwgY29tcGlsZSBpbiBhIHBhZ2UgdGFibGUgb2Yg
c2l6ZSBYWFggKGVnICctLWVuYWJsZS1tYXhwYWdlPTY0KjEwMjQnIHdvdWxkIGdpdmUgNjRLIHBh
Z2VzIGFsbG93aW5nIDI1NiBNQiBpZiBwYWdlcyBhcmUgNEsgZWFjaCldLCxlbmFibGVfbWF4cGFn
ZT0xMzEwNzIpCitBQ19ERUZJTkVfVU5RVU9URUQoTUFYUEFHRSwkZW5hYmxlX21heHBhZ2UpCiAK
LUFDX0FSR19FTkFCTEUoYmRzc2l6ZSxbIC0tZW5hYmxlLWJkc3NpemU9WFhYWCB3aWxsIGNvbXBp
bGUgaW4gYSBiaW5kaW5nIHN0YWNrIG9mIHNpemUgWFhYXSAsCi1bQUNfREVGSU5FX1VOUVVPVEVE
KEJEU1NJWkUsJGVuYWJsZV9iZHNzaXplKV0pCiAKLUFDX0FSR19FTkFCTEUoaWhzc2l6ZSxbIC0t
ZW5hYmxlLWloc3NpemU9WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSBpbnZvY2F0aW9uIGhpc3Rvcnkg
c3RhY2sgb2Ygc2l6ZSBYWFhdICwKLVtBQ19ERUZJTkVfVU5RVU9URUQoSUhTU0laRSwkZW5hYmxl
X2loc3NpemUpXSkKK0FDX0FSR19FTkFCTEUoaG9sZWRpdixbIC0tZW5hYmxlLWhvbGVkaXY9WFhY
WCB3aWxsIHNwZWNpZnkgdGhhdCAxL1hYWFggb2YgdGhlIGNvcmUgc2hvdWxkIGJlIHVzZWQgYXMg
dGhlIGhvbGUgYmV0d2VlbiB0aGUgaGVhcCBhbmQgcmVsb2NhdGFibGUgbWVtb3J5IGFyZWFdLCxl
bmFibGVfaG9sZWRpdj00KQorQUNfREVGSU5FX1VOUVVPVEVEKEhPTEVESVYsJGVuYWJsZV9ob2xl
ZGl2KQogCi1BQ19BUkdfRU5BQkxFKGZyc3NpemUsWyAtLWVuYWJsZS1mcnNzaXplPVhYWFggd2ls
bCBjb21waWxlIGluIGEgZnJhbWUgc3RhY2sgb2Ygc2l6ZSBYWFhdICwKLVtBQ19ERUZJTkVfVU5R
VU9URUQoRlJTU0laRSwkZW5hYmxlX2Zyc3NpemUpXSkKKworQUNfQVJHX0VOQUJMRSh2c3NpemUs
WyAtLWVuYWJsZS12c3NpemU9WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSB2YWx1ZSBzdGFjayBvZiBz
aXplIFhYWF0sLGVuYWJsZV92c3NpemU9MTMxMDcyKQorQUNfREVGSU5FX1VOUVVPVEVEKFZTU0la
RSwkZW5hYmxlX3Zzc2l6ZSkKKworCitBQ19BUkdfRU5BQkxFKGJkc3NpemUsWyAtLWVuYWJsZS1i
ZHNzaXplPVhYWFggd2lsbCBjb21waWxlIGluIGEgYmluZGluZyBzdGFjayBvZiBzaXplIFhYWF0s
LGVuYWJsZV9iZHNzaXplPTIwNDgpCitBQ19ERUZJTkVfVU5RVU9URUQoQkRTU0laRSwkZW5hYmxl
X2Jkc3NpemUpCisKKworQUNfQVJHX0VOQUJMRShpaHNzaXplLFsgLS1lbmFibGUtaWhzc2l6ZT1Y
WFhYIHdpbGwgY29tcGlsZSBpbiBhIGludm9jYXRpb24gaGlzdG9yeSBzdGFjayBvZiBzaXplIFhY
WF0sLGVuYWJsZV9paHNzaXplPTQwOTYpCitBQ19ERUZJTkVfVU5RVU9URUQoSUhTU0laRSwkZW5h
YmxlX2loc3NpemUpCisKK0FDX0FSR19FTkFCTEUoZnJzc2l6ZSxbIC0tZW5hYmxlLWZyc3NpemU9
WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSBmcmFtZSBzdGFjayBvZiBzaXplIFhYWF0sLGVuYWJsZV9m
cnNzaXplPTQwOTYpCitBQ19ERUZJTkVfVU5RVU9URUQoRlJTU0laRSwkZW5hYmxlX2Zyc3NpemUp
CisKK0FDX0FSR19FTkFCTEUoY3NzaXplLFsgLS1lbmFibGUtY3NzaXplPVhYWFggcHJvZHVjZXMg
ZXhlY3V0YWJsZXMgd2l0aCBhIEMgc3RhY2sgb2Ygc2l6ZSBYWFhdLCxlbmFibGVfY3NzaXplPTgz
ODg2MDgpCitBQ19ERUZJTkVfVU5RVU9URUQoQ1NTSVpFLCRlbmFibGVfY3NzaXplKQogCiBBQ19B
UkdfRU5BQkxFKG1hY2hpbmUsWyAtLWVuYWJsZS1tYWNoaW5lPVhYWFggd2lsbCBmb3JjZSB0aGUg
dXNlIG9mIG9uZSBvZiB0aGUgZGVmaW5pdGlvbnMgaW4gaC9YWFhYLmRlZnNdICwKIFtlbmFibGVf
bWFjaGluZT0kZW5hYmxldmFsXSxbZW5hYmxlX21hY2hpbmU9IiJdKQogCitBQ19BUkdfRU5BQkxF
KGltbWZpeCxbIC0tZW5hYmxlLWltbWZpeD1YWFhYIHdpbGwgZW5hYmxlIGFuIGltbWVkaWF0ZSBm
aXhudW0gdGFibGUgYWJvdmUgdGhlIEMgc3RhY2tdLCxlbmFibGVfaW1tZml4PXllcykKKwogI0FD
X0FSR19FTkFCTEUoZ21wLFsgLS1lbmFibGUtZ21wPW5vIHdpbGwgZGlzYWJsZSB1c2Ugb2YgR01Q
IGdudSBtdWx0aXByZWNpc2lvbiBhcml0aG1ldGljLCAoZGVmYXVsdCBpcyA9eWVzKV0gLAogI1t1
c2VfZ21wPSRlbmFibGV2YWxdLFt1c2VfZ21wPSJ5ZXMiXSkKIApAQCAtNDg2LDYgKzQ5NywxMCBA
QAogCWNhc2UgJHVzZSBpbgogIwkJYW1kNjQqKSAjIHN0YWNrLWJvdW5kYXJ5IG9wdGlvbiBkb2Vz
IG5vdCB3b3JrCiAjCQkJVENGTEFHUz0iJFRDRkxBR1MgLW02NCAtbXByZWZlcnJlZC1zdGFjay1i
b3VuZGFyeT04Ijs7ICAKKyMJCTM4NiopCisjCQkJVENGTEFHUz0iJFRDRkxBR1MgLW1wcmVmZXJy
ZWQtc3RhY2stYm91bmRhcnk9MiI7OyAgCisjCQlhbWQ2NCopCisjCQkJVENGTEFHUz0iJFRDRkxB
R1MgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyI7OyAgCiAJCWFscGhhKikKIAkJCVRDRkxB
R1M9IiRUQ0ZMQUdTIC1taWVlZSI7OwogIwkJbTY4ayopCkBAIC0xMDQwLDkgKzEwNTUsMzMgQEAK
IAlmaQogZmkKIAorQUNfTVNHX0NIRUNLSU5HKCJmaW5kaW5nIGRlZmF1bHQgbGlua2VyIHNjcmlw
dCIpCit0b3VjaCB1bml4cG9ydC9nY2wuc2NyaXB0CitlY2hvICJpbnQgbWFpbigpIHtyZXR1cm4g
MDt9IiA+Zm9vLmMKKyRDQyAtV2wsLS12ZXJib3NlIGZvby5jIC1vIGZvbyAyPiYxIHwgXAorICAg
IGF3ayAnLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
LyB7aT0xLWk7bmV4dH0ge2lmIChpKSBwcmludH0nID5nY2wuc2NyaXB0CitybSAtcmYgZm9vLmMg
Zm9vCitpZiB0ZXN0ICJgY2F0IGdjbC5zY3JpcHQgfCB3YyAtbGAiICE9ICIwIiA7IHRoZW4KKyAg
QUNfTVNHX1JFU1VMVChnb3QgaXQpCisgIEFDX01TR19DSEVDS0lORygidHJ5aW5nIHRvIGxvd2Vy
IGhlYXAgc3RhcnQiKQorICBjcCBnY2wuc2NyaXB0IGdjbC5zY3JpcHQuZGVmCisgIGNhdCBnY2wu
c2NyaXB0LmRlZiB8IGF3ayAnL19fZXhlY3V0YWJsZV9zdGFydC8ge2dzdWIoIjB4Li4uIiwiMHgw
MDAiLCQwKTt9IHtwcmludH0nID5nY2wuc2NyaXB0CisgIGlmIGRpZmYgZ2NsLnNjcmlwdC5kZWYg
Z2NsLnNjcmlwdCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisgICAgIEFDX01TR19SRVNVTFQoImNh
bm5vdCBvciBub3QgbmVlZGVkIikKKyAgICAgcm0gLWYgZ2NsLnNjcmlwdCBnY2wuc2NyaXB0LmRl
ZgorICBlbHNlCisgICAgIEFDX01TR19SRVNVTFQoImRvbmUiKQorICAgICBybSAtZiBnY2wuc2Ny
aXB0LmRlZgorICAgICBMREZMQUdTPSIkTERGTEFHUyAtV2wsLVQgZ2NsLnNjcmlwdCAiCisgICAg
IGNwIGdjbC5zY3JpcHQgdW5peHBvcnQKKyAgZmkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVCgibm9u
ZSIpCisgIHJtIC1mIGdjbC5zY3JpcHQKK2ZpCiAKIG9sZF9MREZMQUdTPSIkTERGTEFHUyIKLUxE
RkxBR1M9IiRUTERGTEFHUyIKK0xERkxBR1M9IiRMREZMQUdTICRUTERGTEFHUyIKIEFDX01TR19D
SEVDS0lORygiZmluZGluZyBEQkVHSU4iKQogQUNfVFJZX1JVTihbI2luY2x1ZGUgPHN0ZGlvLmg+
CiAgICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0xMDg2LDYgKzExMjUsNTAgQEAK
IEFDX01TR19SRVNVTFQoZ290ICRkYmVnaW4pCiBMREZMQUdTPSIkb2xkX0xERkxBR1MiCiAKK0FD
X01TR19DSEVDS0lORygiZm9yIGhlYXAgc2hhcmVkIGxpYnJhcnkgaGVhcCBjZWlsaW5nIikKK2Vj
aG8gImludCBtYWluKCkge3JldHVybiAwO30iID5mb28uYworJENDIGZvby5jIC1vIGZvbworaGVh
cF9jZWlsaW5nPWBsZGQgZm9vIHwgdGFpbCAtbiAxIHwgYXdrICd7cHJpbnQgJE5GfScgfCB0ciAt
ZCAnKCknYAorQUNfTVNHX1JFU1VMVCgiZ290ICRoZWFwX2NlaWxpbmciKQorQUNfREVGSU5FX1VO
UVVPVEVEKFNIQVJFRF9MSUJfSEVBUF9DRUlMSU5HLCRoZWFwX2NlaWxpbmcpCisKKyMgcGFnZXdp
ZHRoCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHBhZ2V3aWR0aCkKK0FDX1RSWV9SVU4oWyNpbmNsdWRl
IDxzdGRpby5oPgorICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgoraW50IG1haW4oKSB7
c2l6ZV90IGk9Z2V0cGFnZXNpemUoKSxqOyAKKwkgICAgRklMRSAqZnA9Zm9wZW4oImNvbmZ0ZXN0
MSIsInciKTsKKwkgICAgZm9yIChqPTA7aT4+PTE7aisrKTsKKwkgICAgZnByaW50ZihmcCwiJXUi
LGopOworCSAgICByZXR1cm4gMDt9XSxQQUdFV0lEVEg9YGNhdCBjb25mdGVzdDFgLFBBR0VXSURU
SD0wLFBBR0VXSURUSD0wKQorQUNfTVNHX1JFU1VMVCgkUEFHRVdJRFRIKQorQUNfREVGSU5FX1VO
UVVPVEVEKFBBR0VXSURUSCwkUEFHRVdJRFRIKQorQUNfU1VCU1QoUEFHRVdJRFRIKQorCitBQ19N
U0dfQ0hFQ0tJTkcoImZvciBtYXhwYWdlIHJldmlzaW9uIikKK0FDX1RSWV9SVU4oWyNpbmNsdWRl
IDxzdGRpby5oPgorbWFpbigpCit7CisgIGNoYXIgKmI7CisgIHVuc2lnbmVkIGxvbmcgaSxqOwor
ICBGSUxFICpmcCA9IGZvcGVuKCJjb25mdGVzdDEiLCJ3Iik7CisgIGo9JGVuYWJsZV9tYXhwYWdl
IDw8JFBBR0VXSURUSCArICRkYmVnaW47CisgIGo9aj4kaGVhcF9jZWlsaW5nID8gJGhlYXBfY2Vp
bGluZyA6IGo7CisgIGotPSRkYmVnaW47CisgIGo+Pj0kUEFHRVdJRFRIOworICBmb3IgKGk9MTtp
PD1qO2k8PD0xKTsKKyAgaWYgKGk+aikgaT4+PTE7CisgIGZwcmludGYoZnAsIiVsZCIsaSk7Cisg
IGZjbG9zZShmcCk7CisgIHJldHVybiAwOworfV0sdG1wX21heHBhZ2U9YGNhdCBjb25mdGVzdDFg
LHRtcF9tYXhwYWdlPTAsdG1wX21heHBhZ2U9MCkKK2lmIHRlc3QgIiR0bXBfbWF4cGFnZSIgIT0g
IiRlbmFibGVfbWF4cGFnZSIgOyB0aGVuCisgICBlbmFibGVfbWF4cGFnZT0kdG1wX21heHBhZ2UK
KyAgIEFDX01TR19SRVNVTFQoImdvdCAkZW5hYmxlX21heHBhZ2UiKQorICAgQUNfREVGSU5FX1VO
UVVPVEVEKE1BWFBBR0UsJGVuYWJsZV9tYXhwYWdlKQorZWxzZQorICAgQUNfTVNHX1JFU1VMVCgi
JGVuYWJsZV9tYXhwYWdlIGlzIE9LIikKK2ZpCiAKIEFDX01TR19DSEVDS0lORygiZmluZGluZyBD
U1RBQ0tfQUREUkVTUyIpCiBBQ19UUllfUlVOKFsjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTExMDEs
NiArMTE4NCwxMTkgQEAKICkKIEFDX01TR19SRVNVTFQoZ290ICRjc3RhY2tfYWRkcmVzcykKIAor
QUNfTVNHX0NIRUNLSU5HKCJmaW5kaW5nIENTVEFDS19BTElHTk1FTlQiKQorQUNfVFJZX1JVTihb
I2luY2x1ZGUgPHN0ZGlvLmg+CittYWluKCkKK3sKKyAgdm9pZCAqYiwqYzsKKyAgRklMRSAqZnAg
PSBmb3BlbigiY29uZnRlc3QxIiwidyIpOworICBsb25nIG47CisgIGI9YWxsb2NhKHNpemVvZihi
KSk7CisgIGM9YWxsb2NhKHNpemVvZihjKSk7CisgIG49Yj5jID8gYi1jIDogYy1iOworICBuPW4+
c2l6ZW9mKGMpID8gbiA6IDA7CisgIGZwcmludGYoZnAsIiVsZCIsbik7CisgIGZjbG9zZShmcCk7
CisgIHJldHVybiAwOworfV0sY3N0YWNrX2FsaWdubWVudD1gY2F0IGNvbmZ0ZXN0MWAsY3N0YWNr
X2FsaWdubWVudD0wLGNzdGFja19hbGlnbm1lbnQ9MCkKK0FDX0RFRklORV9VTlFVT1RFRChDU1RB
Q0tfQUxJR05NRU5ULCRjc3RhY2tfYWxpZ25tZW50IFwKKykKK0FDX01TR19SRVNVTFQoZ290ICRj
c3RhY2tfYWxpZ25tZW50KQorCitBQ19NU0dfQ0hFQ0tJTkcoImZpbmRpbmcgQ1NUQUNLX0RJUkVD
VElPTiIpCitBQ19UUllfUlVOKFsjaW5jbHVkZSA8c3RkaW8uaD4KK3ZvaWQgKgorZm9vKHZvaWQp
IHsKK2ludCBpOworcmV0dXJuICh2b2lkICopJmk7Cit9CisKK2ludAorbWFpbigpCit7CisgIGNo
YXIgKmI7CisgIEZJTEUgKmZwID0gZm9wZW4oImNvbmZ0ZXN0MSIsInciKTsKKyAgZnByaW50Zihm
cCwiJWxkIiwoKGxvbmcpICZiKSA+ICgobG9uZykgZm9vKCkpID8gLTEgOiAxKTsKKyAgZmNsb3Nl
KGZwKTsKKyAgcmV0dXJuIDA7Cit9XSxjc3RhY2tfZGlyZWN0aW9uPWBjYXQgY29uZnRlc3QxYCxj
c3RhY2tfZGlyZWN0aW9uPTAsY3N0YWNrX2RpcmVjdGlvbj0wKQorQUNfREVGSU5FX1VOUVVPVEVE
KENTVEFDS19ESVJFQ1RJT04sJGNzdGFja19kaXJlY3Rpb24gXAorKQorQUNfTVNHX1JFU1VMVChn
b3QgJGNzdGFja19kaXJlY3Rpb24pCisKK0FDX01TR19DSEVDS0lORygiZm9yIEMgc3RhY2sgc2l6
ZSBmbG9vciBmcm9tIGhlYXAgIikKK0FDX1RSWV9SVU4oWyNpbmNsdWRlIDxzdGRpby5oPgoraW50
CittYWluKCkKK3sKKyAgY2hhciAqYjsKKyAgRklMRSAqZnAgPSBmb3BlbigiY29uZnRlc3QxIiwi
dyIpOworICB1bnNpZ25lZCBsb25nIGosazsKKyAgCisgIGo9KCh1bnNpZ25lZCBsb25nKSZiKSAr
ICRjc3RhY2tfZGlyZWN0aW9uICogJGVuYWJsZV9jc3NpemU7CisgIGs9KCRkYmVnaW4gKyAkZW5h
YmxlX21heHBhZ2UgPDwgJFBBR0VXSURUSCk7CisgIGo9YWJzKGotKCh1bnNpZ25lZCBsb25nKSZi
KSkhPSRlbmFibGVfY3NzaXplIHx8IGo8ayA/IGsgOiBqOworICBqLT0oKHVuc2lnbmVkIGxvbmcp
JmIpOworICBqKj0kY3N0YWNrX2RpcmVjdGlvbjsKKyAgZnByaW50ZihmcCwiJWx1IixqKTsKKyAg
ZmNsb3NlKGZwKTsKKyAgcmV0dXJuIDA7Cit9XSx0bXBfY3NzaXplPWBjYXQgY29uZnRlc3QxYCx0
bXBfY3NzaXplPTAsdG1wX2Nzc2l6ZT0wKQoraWYgdGVzdCAiJHRtcF9jc3NpemUiICE9ICIkZW5h
YmxlX2Nzc2l6ZSIgOyB0aGVuCisgICBlbmFibGVfY3NzaXplPSR0bXBfY3NzaXplOworICAgQUNf
TVNHX1JFU1VMVCgiZ290ICRlbmFibGVfY3NzaXplIikKKyAgIEFDX0RFRklORV9VTlFVT1RFRChD
U1NJWkUsJGVuYWJsZV9jc3NpemUpCitlbHNlCisgICBBQ19NU0dfUkVTVUxUKCIkZW5hYmxlX2Nz
c2l6ZSBpcyBPSyIpCitmaQorCitjc3RhY2tfdG9wPTAKK2NzdGFja19yYW5nZT0wCitBQ19NU0df
Q0hFQ0tJTkcoImZpbmRpbmcgY3N0YWNrIHRvcCIpCitBQ19UUllfUlVOKFsjaW5jbHVkZSA8c3Rk
aW8uaD4KK2ludAorbWFpbigpCit7CisgIHZvaWQgKnY7CisgIHVuc2lnbmVkIGxvbmcgaSxqLGs7
CisgIEZJTEUgKmZwID0gZm9wZW4oImNvbmZ0ZXN0MSIsInciKTsKKworICBmb3IgKGk9MixrPTE7
aTtrPWksaTw8PTEpOworICBmb3IgKGk9aj1rO2ogJiYgaTwodW5zaWduZWQgbG9uZykmdiArICgk
Y3N0YWNrX2RpcmVjdGlvbj09MSA/ICRlbmFibGVfY3NzaXplIDogMCk7aj4+PTEsaXw9aik7Cisg
IGZwcmludGYoZnAsIjB4JWx4IixpJi0weDEwMDApOworICBmY2xvc2UoZnApOworICByZXR1cm4g
MDsKK31dLGNzdGFja190b3A9YGNhdCBjb25mdGVzdDFgLGNzdGFja190b3A9MCxjc3RhY2tfdG9w
PTApCitBQ19NU0dfUkVTVUxUKGdvdCAkY3N0YWNrX3RvcCkKK2lmIHRlc3QgIiRjc3RhY2tfdG9w
IiAhPSAiMCIgOyB0aGVuCisgICBBQ19NU0dfQ0hFQ0tJTkcoImZpbmRpbmcgb3ZlciBjc3RhY2sg
aGFsZiByYW5nZSIpCisgICBBQ19UUllfUlVOKFsjaW5jbHVkZSA8c3RkaW8uaD4KKyAgIGludAor
ICAgbWFpbigpCisgICB7CisgICAgIHVuc2lnbmVkIGxvbmcgajsKKyAgICAgRklMRSAqZnAgPSBm
b3BlbigiY29uZnRlc3QxIiwidyIpOworCisgICAgIGZvciAoaj0xO2ogJiYgIShqJiAkY3N0YWNr
X3RvcCk7ajw8PTEpOworICAgICBmcHJpbnRmKGZwLCIweCVseCIsaj4+MSk7CisgICAgIGZjbG9z
ZShmcCk7CisgICAgIHJldHVybiAwOworICAgfV0sY3N0YWNrX3JhbmdlPWBjYXQgY29uZnRlc3Qx
YCxjc3RhY2tfcmFuZ2U9MCxjc3RhY2tfcmFuZ2U9MCkKKyAgIEFDX01TR19SRVNVTFQoZ290ICRj
c3RhY2tfcmFuZ2UpCisgICBpZiB0ZXN0ICIkY3N0YWNrX3JhbmdlIiAhPSAiMCIgOyB0aGVuIAor
CUFDX0RFRklORV9VTlFVT1RFRChDU1RBQ0tfVE9QLCRjc3RhY2tfdG9wKQorICAgICAgQUNfREVG
SU5FX1VOUVVPVEVEKENTVEFDS19SQU5HRSwkY3N0YWNrX3JhbmdlKQorICAgZmkKK2ZpCisKK2lm
IHRlc3QgIiRlbmFibGVfaW1tZml4IiA9ICJ5ZXMiIDsgdGhlbgorICBpZiB0ZXN0ICIkY3N0YWNr
X3RvcCIgIT0gIjAiIDsgdGhlbgorICAgICBpZiB0ZXN0ICIkY3N0YWNrX3JhbmdlIiAhPSAiMCIg
OyB0aGVuIAorCUFDX0RFRklORV9VTlFVT1RFRChJTV9GSVhfQkFTRSwkY3N0YWNrX3RvcCkKKyAg
ICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKElNX0ZJWF9MSU0sJGNzdGFja19yYW5nZSkKKyAgICAg
ZmkKKyAgZmkKK2ZpCiAKIAogQUNfTVNHX0NIRUNLSU5HKCJzaXplb2YgbG9uZyBsb25nIGludCIp
CkBAIC0xMTQxLDE5ICsxMzM3LDYgQEAKIEFDX1NVQlNUKFNZU1RFTSkKIEFDX1NVQlNUKENMU1RB
TkRBUkQpCiAKLSMgcGFnZXdpZHRoCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIHBhZ2V3aWR0aCkKLUFD
X1RSWV9SVU4oWyNpbmNsdWRlIDxzdGRpby5oPgotICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0
ZC5oPgotaW50IG1haW4oKSB7c2l6ZV90IGk9Z2V0cGFnZXNpemUoKSxqOyAKLQkgICAgRklMRSAq
ZnA9Zm9wZW4oImNvbmZ0ZXN0MSIsInciKTsKLQkgICAgZm9yIChqPTA7aT4+PTE7aisrKTsKLQkg
ICAgZnByaW50ZihmcCwiJXUiLGopOwotCSAgICByZXR1cm4gMDt9XSxQQUdFV0lEVEg9YGNhdCBj
b25mdGVzdDFgLFBBR0VXSURUSD0wLFBBR0VXSURUSD0wKQotQUNfTVNHX1JFU1VMVCgkUEFHRVdJ
RFRIKQotQUNfREVGSU5FX1VOUVVPVEVEKFBBR0VXSURUSCwkUEFHRVdJRFRIKQotQUNfU1VCU1Qo
UEFHRVdJRFRIKQotCiAjIE1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAKIApAQCAtMTc5Nyw3ICsx
OTgwLDcgQEAKIAlBQ19NU0dfUkVTVUxUKFtub10pCiBmaSAKIAotTElCUz0iJExERkxBR1MgJFRM
REZMQUdTICRMSUJTICRUTElCUyIKK0xJQlM9ImBlY2hvICRMREZMQUdTIHwgc2VkICdzLGdjbC5z
Y3JpcHQsLi4vdW5peHBvcnQvZ2NsLnNjcmlwdCxnJ2AgJFRMREZMQUdTICRMSUJTICRUTElCUyIK
IEFDX1NVQlNUKExJQlMpCiBGSU5BTF9DRkxBR1M9IiRDRkxBR1MgJFRDRkxBR1MgJFBST0NFU1NP
Ul9GTEFHUyIKIEFDX1NVQlNUKEZJTkFMX0NGTEFHUykKSW5kZXg6IG1ha2VmaWxlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvbWFrZWZpbGUsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNzMuNC4yLjIuMjEuNi4xCmRpZmYgLXUgLXIxLjczLjQuMi4yLjIxLjYuMSBtYWtlZmls
ZQotLS0gbWFrZWZpbGUJNSBBdWcgMjAwNCAyMjo0OTozOSAtMDAwMAkxLjczLjQuMi4yLjIxLjYu
MQorKysgbWFrZWZpbGUJMyBKdW4gMjAwNSAwNDowNToyMiAtMDAwMApAQCAtMTI2LDcgKzEyNiw3
IEBACiBtZXJnZToKIAkkKENDKSAtbyBtZXJnZSBtZXJnZS5jCiAKLUxJU1BfTElCPWNtcG5ldy9n
Y2xfY29sbGVjdGZuLm8gY21wbmV3L2djbF9jb2xsZWN0Zm4ubHNwIGxzcC9nY2xfZ3Byb2YubHNw
IGxzcC9nY2xfaW5mby5vIGxzcC9nY2xfcHJvZmlsZS5sc3AgbHNwL2djbF9leHBvcnQubHNwIGxz
cC9nY2xfYXV0b2xvYWQubHNwIGNtcG5ldy9nY2xfY21wbWFpbi5sc3AgY21wbmV3L2djbF9jbXBv
cHQubHNwIGNtcG5ldy9nY2xfbGZ1bl9saXN0LmxzcCBsc3AvZ2NsX2F1dG9fbmV3LmxzcCBoL2Nt
cGluY2x1ZGUuaCB1bml4cG9ydC9pbml0XyQoU1lTVEVNKS5sc3AgdW5peHBvcnQvbGliJChTWVNU
RU0pLmEgdW5peHBvcnQvbGliZ2NscC5hIGdjbC10ay90ay1wYWNrYWdlLmxzcCAkKFRLX0xJU1Bf
TElCKSAkKFJMX0xJQikgJChGSVJTVF9GSUxFKSAkKExBU1RfRklMRSkgJChhZGRzdWZmaXggL3N5
cy1wcm9jbGFpbS5saXNwLGxzcCBjbXBuZXcgcGNsIGNsY3MpCitMSVNQX0xJQj1jbXBuZXcvZ2Ns
X2NvbGxlY3Rmbi5vIGNtcG5ldy9nY2xfY29sbGVjdGZuLmxzcCBsc3AvZ2NsX2dwcm9mLmxzcCBs
c3AvZ2NsX2luZm8ubyBsc3AvZ2NsX3Byb2ZpbGUubHNwIGxzcC9nY2xfZXhwb3J0LmxzcCBsc3Av
Z2NsX2F1dG9sb2FkLmxzcCBjbXBuZXcvZ2NsX2NtcG1haW4ubHNwIGNtcG5ldy9nY2xfY21wb3B0
LmxzcCBjbXBuZXcvZ2NsX2xmdW5fbGlzdC5sc3AgbHNwL2djbF9hdXRvX25ldy5sc3AgaC9jbXBp
bmNsdWRlLmggdW5peHBvcnQvaW5pdF8kKFNZU1RFTSkubHNwIHVuaXhwb3J0L2xpYiQoU1lTVEVN
KS5hIHVuaXhwb3J0L2xpYmdjbHAuYSBnY2wtdGsvdGstcGFja2FnZS5sc3AgJChUS19MSVNQX0xJ
QikgJChSTF9MSUIpICQoRklSU1RfRklMRSkgJChMQVNUX0ZJTEUpICQoYWRkc3VmZml4IC9zeXMt
cHJvY2xhaW0ubGlzcCxsc3AgY21wbmV3IHBjbCBjbGNzKSB1bml4cG9ydC9nY2wuc2NyaXB0CiAK
IGluc3RhbGwtY29tbWFuZDoKIAlybSAtZiAkKERFU1RESVIpJChwcmVmaXgpL2Jpbi9nY2wKQEAg
LTIxOCw3ICsyMTgsNyBAQAogCQl3aW5kb3dzL2luc3RhbGwubHNwIHdpbmRvd3Mvc3lzZGlyLmJh
dAogCXJtIC1yZiB3aW5kb3dzL091dHB1dAogCXJtIC1mIGFuc2ktdGVzdHMvdGVzdF9yZXN1bHRz
IGFuc2ktdGVzdHMvZ2F6b25rKmxzcAotCXJtIC1mIGNvbmZpZy5sb2cgY29uZmlnLmNhY2hlIGNv
bmZpZy5zdGF0dXMgdG1weCAkKFBPUlRESVIpL2dtb24ub3V0CisJcm0gLWYgY29uZmlnLmxvZyBj
b25maWcuY2FjaGUgY29uZmlnLnN0YXR1cyB0bXB4ICQoUE9SVERJUikvZ21vbi5vdXQgZ2NsLnNj
cmlwdAogCiBjbGVhbjogZ2NsY2xlYW4KIAktKGNkICQoR01QRElSKSA7ICQoTUFLRSkgZGlzdGNs
ZWFuKQpJbmRleDogYmluL2RwcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9n
Y2wvYmluL2RwcC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQuNi4xCmRpZmYgLXUgLXIxLjQu
Ni4xIGRwcC5jCi0tLSBiaW4vZHBwLmMJNiBOb3YgMjAwMyAxNjoxNjo0OCAtMDAwMAkxLjQuNi4x
CisrKyBiaW4vZHBwLmMJMyBKdW4gMjAwNSAwNDowNToyMiAtMDAwMApAQCAtNDMxLDcgKzQzMSw3
IEBACiAJaW50IGk7CiAKIAlmcHJpbnRmKG91dCwgIlx0aW50IG5hcmc7XG4iKTsKLQlmcHJpbnRm
KG91dCwgIlx0cmVnaXN0ZXIgb2JqZWN0ICpEUFBiYXNlPXZzX2Jhc2U7XG4iKTsKKwlmcHJpbnRm
KG91dCwgIlx0b2JqZWN0ICpEUFBiYXNlPXZzX2Jhc2U7XG4iKTsKIAkKIAlmb3IgKGkgPSAwOyAg
aSA8IG5vcHQ7ICBpKyspCiAJCWlmIChvcHRpb25hbFtpXS5vX3N2YXIgIT0gTlVMTCkKSW5kZXg6
IGNtcG5ldy9nY2xfY21wbGFtLmxzcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wv
Z2NsL2NtcG5ldy9nY2xfY21wbGFtLmxzcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMy40
LjEKZGlmZiAtdSAtcjEuMS4yLjMuNC4xIGdjbF9jbXBsYW0ubHNwCi0tLSBjbXBuZXcvZ2NsX2Nt
cGxhbS5sc3AJMTQgSnVsIDIwMDQgMTg6MzE6MzEgLTAwMDAJMS4xLjIuMy40LjEKKysrIGNtcG5l
dy9nY2xfY21wbGFtLmxzcAkzIEp1biAyMDA1IDA0OjA1OjI0IC0wMDAwCkBAIC05Nyw3ICs5Nyw3
IEBACiAoc2k6cHV0cHJvcCAnbWFrZS1kY2xvc3VyZSAnd3QtbWFrZS1kY2xvc3VyZSAnd3QtbG9j
KQogCiAoZGVmdW4gd3QtbWFrZS1kY2xvc3VyZSAoY2Z1biBjbGluayljbGluayAgOztEYmFzZT1i
YXNlMAotICAod3QtbmwgIihEb3duQ2xvc2UiY2Z1biIudD10X2RjbG9zdXJlLERvd25DbG9zZSIg
Y2Z1biAiLmRjX3NlbGY9TEMiIGNmdW4iLCIKKyAgKHd0LW5sICIoc2V0X3R5cGVfb2YoJkRvd25D
bG9zZSJjZnVuIix0X2RjbG9zdXJlKSxEb3duQ2xvc2UiIGNmdW4gIi5kY19zZWxmPUxDIiBjZnVu
IiwiCiAgICAgICJEb3duQ2xvc2UiIGNmdW4gIi5kY19lbnY9YmFzZTAsKG9iamVjdCkmRG93bkNs
b3NlIiBjZnVuICIpIikpCiAKIChkZWZ1biB3ZnMtZXJyb3IgKCkKSW5kZXg6IGgvYXR0X2V4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvaC9hdHRfZXh0LmgsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMjAuNi4xLjYuMQpkaWZmIC11IC1yMS4yMC42LjEuNi4xIGF0dF9l
eHQuaAotLS0gaC9hdHRfZXh0LmgJNSBBdWcgMjAwNCAyMjoyNjo0OCAtMDAwMAkxLjIwLjYuMS42
LjEKKysrIGgvYXR0X2V4dC5oCTMgSnVuIDIwMDUgMDQ6MDU6MjcgLTAwMDAKQEAgLTMxMyw3ICsz
MTMsOCBAQAogLyogIG51bWJlci5jICAqLwogRVhURVIgb2JqZWN0IHNob3J0ZmxvYXRfemVybzsK
IEVYVEVSIG9iamVjdCBsb25nZmxvYXRfemVybzsKLSNkZWZpbmUgbWFrZV9maXhudW0oYSkgKCgo
KEZJWHRlbXA9KGEpKStTTUFMTF9GSVhOVU1fTElNSVQpJigtMipTTUFMTF9GSVhOVU1fTElNSVQp
KT09MD9zbWFsbF9maXhudW0oRklYdGVtcCk6bWFrZV9maXhudW0xKEZJWHRlbXApKQorLyogI2Rl
ZmluZSBtYWtlX2ZpeG51bShhKSAoKCgoRklYdGVtcD0oYSkpK1NNQUxMX0ZJWE5VTV9MSU1JVCkm
KC0yKlNNQUxMX0ZJWE5VTV9MSU1JVCkpPT0wP3NtYWxsX2ZpeG51bShGSVh0ZW1wKTptYWtlX2Zp
eG51bTEoRklYdGVtcCkpICovCisvKiAjZGVmaW5lIG1ha2VfZml4bnVtKGFfKSAoe3JlZ2lzdGVy
IGZpeG51bSBfdD0oYV8pO2lzX2JpZ19maXgoX3QpID8gbWFrZV9maXhudW0xKF90KSA6IHNtYWxs
X2ZpeG51bShfdCk7fSkgKi8KIG9iamVjdCBtYWtlX2ZpeG51bTEobG9uZyk7CiBvYmplY3QgbWFr
ZV9yYXRpbygpOwogb2JqZWN0IG1ha2Vfc2hvcnRmbG9hdCgpOwpJbmRleDogaC9jbXBvbmx5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9oL2NtcG9ubHkuaCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS42LjYuMQpkaWZmIC11IC1yMS42LjYuMSBjbXBvbmx5LmgKLS0tIGgv
Y21wb25seS5oCTEgRGVjIDIwMDMgMTY6NTA6MDAgLTAwMDAJMS42LjYuMQorKysgaC9jbXBvbmx5
LmgJMyBKdW4gMjAwNSAwNDowNToyNyAtMDAwMApAQCAtMTgsMTEgKzE4LDExIEBACiAjZGVmaW5l
IFNFVFFfSUkodmFyLGFsbG9jLHZhbCkgXAogICBkb3tHRU4gX3h4ID0odmFsKSA7IFwKICAgaW50
IF9uID0gcmVwbGFjZV9jb3B5MShfeHgsdmFyKTsgXAotICBpZihfbikgdmFyID0gcmVwbGFjZV9j
b3B5MihfeHgsYWxsb2NhKF9uKSk7fXdoaWxlKDApCisgIGlmKF9uKSB2YXIgPSByZXBsYWNlX2Nv
cHkyKF94eCxaQUxMT0NBKF9uKSk7fXdoaWxlKDApCiAKICNkZWZpbmUgU0VUUV9JTyh2YXIsYWxs
b2MsdmFsKSB7b2JqZWN0IF94eCA9KHZhbCkgOyBcCiAJCQkgICAgICBpbnQgX24gPSBvYmpfcmVw
bGFjZV9jb3B5MShfeHgsdmFyKTsgXAotCQkJICAgIGlmKF9uKSB2YXIgPSBvYmpfcmVwbGFjZV9j
b3B5MihfeHgsYWxsb2NhKF9uKSk7fQorCQkJICAgIGlmKF9uKSB2YXIgPSBvYmpfcmVwbGFjZV9j
b3B5MihfeHgsWkFMTE9DQShfbikpO30KICNkZWZpbmUgSURFQ0woYSxiLGMpIG91cl91bG9uZyBi
WzRdO2EgPShiWzBdPTB4MTAxMDAwMCArNCxiKSA7IG9iamVjdCBjCiAjZWxzZQogR0VOIHNldHFf
aW8oKSxzZXRxX2lpKCk7CkBAIC01MCw3ICs1MCw3IEBACiAvKiBpbnNpZGUgc2V0am1wIGZyYW1l
cywgYW5kIGZhc3RlciBhbGxvY2EgYWxsb2NhdGlvbiBvdGhlcndpc2UuKi8KIC8qIEZJWE1FLCB2
ZXJpZnkgdGhhdCBJREVDTCBuZWVkIG5vdCBiZSBjaGFuZ2VkLCBpbXByb3ZlIGxvZ2ljIGJlaGlu
ZCBtYWxsb2MgKi8KIC8qIHNlbGVjdGlvbiwgZS5nLiBjbG9zdXJlIGJvdW5kYXJpZXMuICBDTSAy
MDAzMTIwMSovCi0jZGVmaW5lIElERUNMKGEsYixjKSBtcF9saW1iX3QgKmM9KG1wX2xpbWJfdCAq
KWFsbG9jYSgxKnNpemVvZihtcF9saW1iX3QpKTtNUF9JTlQgYj17MSwxLGN9OyBhID0gJmIgCisj
ZGVmaW5lIElERUNMKGEsYixjKSBtcF9saW1iX3QgKmM9KG1wX2xpbWJfdCAqKVpBTExPQ0EoMSpz
aXplb2YobXBfbGltYl90KSk7TVBfSU5UIGI9ezEsMSxjfTsgYSA9ICZiIAogI2RlZmluZSBTRVRR
X0lPKHZhcixhbGxvYyx2YWwsYWYpIHsgb2JqZWN0IF94eCA9ICh2YWwpOyBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX247IFwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgoX249b2JqX3RvX21weihfeHgsKHZhcikpKSkge1wKSW5kZXg6
IGgvY29tcGJhczIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2gvY29t
cGJhczIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43LjYuMS42LjEKZGlmZiAtdSAtcjEuNy42
LjEuNi4xIGNvbXBiYXMyLmgKLS0tIGgvY29tcGJhczIuaAk1IEF1ZyAyMDA0IDIyOjIzOjU0IC0w
MDAwCTEuNy42LjEuNi4xCisrKyBoL2NvbXBiYXMyLmgJMyBKdW4gMjAwNSAwNDowNToyNyAtMDAw
MApAQCAtMTYxLDExICsxNjEsMTUgQEAKIC8qICNlbmRpZiAqLwogI2luY2x1ZGUgPHN0ZGxpYi5o
PgogRVhURVIgY2hhciAqYWxsb2NhX3ZhbDsKLSNkZWZpbmUgT1VSX0FMTE9DQShuKSBhbGxvY2Eo
bikKKyNkZWZpbmUgT1VSX0FMTE9DQShuKSBaQUxMT0NBKG4pCiAjZGVmaW5lIEFMTE9DQV9GUkVF
KG4pIAogCi0jZGVmaW5lIEFMTE9DQV9DT05TKG4pIChhbGxvY2FfdmFsPWFsbG9jYSgobikqc2l6
ZW9mKHN0cnVjdCBjb25zKSkpIAotI2RlZmluZSBPTl9TVEFDS19DT05TKHgseSkgKGFsbG9jYV92
YWw9YWxsb2NhKHNpemVvZihzdHJ1Y3QgY29ucykpLCBvbl9zdGFja19jb25zKHgseSkpIAorI2Rl
ZmluZSBBTExPQ0FfQ09OU19BTElHTihuKSAoe2FsbG9jYV92YWw9WkFMTE9DQSgobikqc2l6ZW9m
KHN0cnVjdCBjb25zKStzaXplb2YoYWxsb2NhX3ZhbCkpO2lmICgoKHVuc2lnbmVkIGxvbmcpYWxs
b2NhX3ZhbCkmc2l6ZW9mKGFsbG9jYV92YWwpKSBhbGxvY2FfdmFsKz1zaXplb2YoYWxsb2NhX3Zh
bCk7YWxsb2NhX3ZhbDt9KQorCisjZGVmaW5lIEFMTE9DQV9DT05TKG4pIEFMTE9DQV9DT05TX0FM
SUdOKG4pCisjZGVmaW5lIE9OX1NUQUNLX0NPTlMoeCx5KSAoQUxMT0NBX0NPTlNfQUxJR04oMSks
IG9uX3N0YWNrX2NvbnMoeCx5KSkgCisvKiAjZGVmaW5lIEFMTE9DQV9DT05TKG4pIChhbGxvY2Ff
dmFsPWFsbG9jYSgobikqc2l6ZW9mKHN0cnVjdCBjb25zKStzaXplb2YobikpLGFsbG9jYV92YWwr
PSgodW5zaWduZWQgbG9uZylhbGxvY2FfdmFsJnNpemVvZihuKSkpICovCisvKiAjZGVmaW5lIE9O
X1NUQUNLX0NPTlMoeCx5KSAoYWxsb2NhX3ZhbD1hbGxvY2Eoc2l6ZW9mKHN0cnVjdCBjb25zKSks
IG9uX3N0YWNrX2NvbnMoeCx5KSkgICovCiAjZGVmaW5lIE9OX1NUQUNLX0xJU1Qgb25fc3RhY2tf
bGlzdAogI2RlZmluZSBPTl9TVEFDS19MSVNUX1ZFQ1RPUiBvbl9zdGFja19saXN0X3ZlY3Rvcgog
I2RlZmluZSBPTl9TVEFDS19MSVNUX1ZFQ1RPUl9ORVcgb25fc3RhY2tfbGlzdF92ZWN0b3JfbmV3
CkluZGV4OiBoL2V2YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2gv
ZXZhbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLXUgLXIxLjEuMS4xIGV2
YWwuaAotLS0gaC9ldmFsLmgJNiBEZWMgMTk5OSAyMjo0NDowMiAtMDAwMAkxLjEuMS4xCisrKyBo
L2V2YWwuaAkzIEp1biAyMDA1IDA0OjA1OjI3IC0wMDAwCkBAIC0yNiw5ICsyNiwxNSBAQAogCiAv
KiAgQyBjb250cm9sIHN0YWNrICAqLwogCi0jZGVmaW5lCUNTU0laRQkJMjAwMDAKLSNkZWZpbmUJ
Q1NHRVRBCQk0MDAwCisvKiAjZGVmaW5lCUNTU0laRQkJMjAwMDAgKi8KKy8qICNkZWZpbmUJQ1NH
RVRBCQk0MDAwICovCiAKKyNpZmRlZiBfX2lhNjRfXworRVhURVIgaW50ICpjc19iYXNlMjsKK0VY
VEVSIGludCAqY3Nfb3JnMjsKKyNlbmRpZgorCitFWFRFUiBpbnQgKmNzX2Jhc2U7CiBFWFRFUiBp
bnQgKmNzX29yZzsKIEVYVEVSIGludCAqY3NfbGltaXQ7CiAKQEAgLTM2LDkgKzQyLDExIEBACiAv
KiB3ZSBjYXRjaCB0aGUgc2VnbWVudGF0aW9uIGZhdWx0IGFuZCBjaGVjayB0byB3YXJuIG9mIGMg
c3RhY2sgb3ZlcmZsb3cgKi8KICNpZmRlZiBBVgogI2lmbmRlZiBjc19jaGVjawotI2RlZmluZQlj
c19jaGVjayhzb21ldGhpbmcpIFwKLQlpZiAoKGludCAqKSgmc29tZXRoaW5nKSA8IGNzX2xpbWl0
KSBcCi0JCWNzX292ZXJmbG93KCkKKyNpZiBDU1RBQ0tfRElSRUNUSU9OID09IC0xCisjZGVmaW5l
CWNzX2NoZWNrKHNvbWV0aGluZykgaWYgKChsb25nICopKCZzb21ldGhpbmcpIDwgY3NfbGltaXQp
IGNzX292ZXJmbG93KCkKKyNlbHNlCisjZGVmaW5lCWNzX2NoZWNrKHNvbWV0aGluZykgaWYgKChs
b25nICopKCZzb21ldGhpbmcpID4gY3NfbGltaXQpIGNzX292ZXJmbG93KCkKKyNlbmRpZgogI2Vu
ZGlmCiAjZW5kaWYKICNpZmRlZiBNVgpJbmRleDogaC9nY2xpbmNsLmguaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9oL2djbGluY2wuaC5pbix2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4yNy42LjEwLjguMS40LjEKZGlmZiAtdSAtcjEuMjcuNi4xMC44LjEuNC4xIGdjbGlu
Y2wuaC5pbgotLS0gaC9nY2xpbmNsLmguaW4JMTUgSmFuIDIwMDUgMTk6MTc6MTggLTAwMDAJMS4y
Ny42LjEwLjguMS40LjEKKysrIGgvZ2NsaW5jbC5oLmluCTMgSnVuIDIwMDUgMDQ6MDU6MjcgLTAw
MDAKQEAgLTExLDEzICsxMSwxNCBAQAogCiAjZGVmaW5lIERCRUdJTiAwCiAKLSNkZWZpbmUgTUFY
UEFHRSAxMjgqMTAyNAotI2RlZmluZSBWU1NJWkUgMTI4KjEwMjQKLSNkZWZpbmUgQkRTU0laRSAy
KjEwMjQKLSNkZWZpbmUgSUhTU0laRSA0KjEwMjQKLSNkZWZpbmUgRlJTU0laRSA0KjEwMjQKKyN1
bmRlZiBNQVhQQUdFCisjdW5kZWYgVlNTSVpFCisjdW5kZWYgQkRTU0laRQorI3VuZGVmIElIU1NJ
WkUKKyN1bmRlZiBGUlNTSVpFCisjdW5kZWYgQ1NTSVpFCiAKLSNkZWZpbmUgSE9MRVBBR0UgKE1B
WFBBR0UvMTApCisjdW5kZWYgSE9MRURJVgogCiAjdW5kZWYgTk9fR0VUVE9ECiAKQEAgLTYwLDYg
KzYxLDEzIEBACiAjdW5kZWYgSEFWRV9TVl9PTlNUQUNLIAogCiAjZGVmaW5lIENTVEFDS19BRERS
RVNTIDAKKyNkZWZpbmUgQ1NUQUNLX0RJUkVDVElPTiAwCisjZGVmaW5lIENTVEFDS19BTElHTk1F
TlQgMAorI2RlZmluZSBDU1RBQ0tfVE9QIDAKKyNkZWZpbmUgQ1NUQUNLX1JBTkdFIDAKKyNkZWZp
bmUgU0hBUkVEX0xJQl9IRUFQX0NFSUxJTkcgMAorI3VuZGVmIElNX0ZJWF9CQVNFCisjdW5kZWYg
SU1fRklYX0xJTQogCiAjdW5kZWYgSEFWRV9TSUdTWVMKIApJbmRleDogaC9nbXBfd3JhcHBlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2gvZ21wX3dyYXBwZXJzLmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4yLjIuNC4xCmRpZmYgLXUgLXIxLjEuMi4yLjQuMSBn
bXBfd3JhcHBlcnMuaAotLS0gaC9nbXBfd3JhcHBlcnMuaAkxNSBKYW4gMjAwNSAxNjoyNzo1NyAt
MDAwMAkxLjEuMi4yLjQuMQorKysgaC9nbXBfd3JhcHBlcnMuaAkzIEp1biAyMDA1IDA0OjA1OjI3
IC0wMDAwCkBAIC0xMDgsNiArMTA4LDEyIEBACiAgICAgICAgICAgIHJldHVybiBKb2luKFJSXyxy
dF8pO1wKICAgIH0KIAorTUVNX0dNUF9DQUxMKDMsdm9pZCxtcHpfdXJhbmRvbW0sMSxtcHpfdCxn
bXBfcmFuZHN0YXRlX3QsbXB6X3QpCitNRU1fR01QX0NBTEwoMix2b2lkLGdtcF9yYW5kc2VlZCwx
LGdtcF9yYW5kc3RhdGVfdCxtcHpfdCkKK01FTV9HTVBfQ0FMTCgyLHZvaWQsZ21wX3JhbmRzZWVk
X3VpLDEsZ21wX3JhbmRzdGF0ZV90LHVuc2lnbmVkIGxvbmcgaW50KQorTUVNX0dNUF9DQUxMKDEs
dm9pZCxnbXBfcmFuZGluaXRfZGVmYXVsdCwwLGdtcF9yYW5kc3RhdGVfdCkKKworCiBNRU1fR01Q
X0NBTEwoMyx2b2lkLG1wel9hZGQsMSxtcHpfdCxtcHpfdCxtcHpfdCkKIE1FTV9HTVBfQ0FMTCgz
LHZvaWQsbXB6X2FkZF91aSwxLG1wel90LG1wel90LHVuc2lnbmVkIGxvbmcgaW50KQogTUVNX0dN
UF9DQUxMKDMsdm9pZCxtcHpfc3ViLDEsbXB6X3QsbXB6X3QsbXB6X3QpCkBAIC0xMzksNiArMTQ1
LDExIEBACiAKICAgICAgLyogRklYTUU6IGZpbmQgYSB3YXkgdG8gaGF2ZSB0aGlzIGZvbGxvdyB0
aGUgY29udmVudGlvbiBpbiBnbXAuaCovCiAKKyNkZWZpbmUgX19nbXB6X3VyYW5kb21tIG1fX2dt
cHpfdXJhbmRvbW0KKyNkZWZpbmUgX19nbXBfcmFuZHNlZWQgbV9fZ21wX3JhbmRzZWVkIAorI2Rl
ZmluZSBfX2dtcF9yYW5kc2VlZF91aSBtX19nbXBfcmFuZHNlZWRfdWkKKyNkZWZpbmUgX19nbXBf
cmFuZGluaXRfZGVmYXVsdCBtX19nbXBfcmFuZGluaXRfZGVmYXVsdAorCiAjZGVmaW5lIF9fZ21w
el9hZGQgbV9fZ21wel9hZGQKICNkZWZpbmUgX19nbXB6X2FkZF91aSBtX19nbXB6X2FkZF91aQog
I2RlZmluZSBfX2dtcHpfc3ViIG1fX2dtcHpfc3ViCkluZGV4OiBoL2xpbnV4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9oL2xpbnV4LmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNy42LjQKZGlmZiAtdSAtcjEuNy42LjQgbGludXguaAotLS0gaC9saW51eC5oCTMgTWF5
IDIwMDQgMjE6MzU6NTggLTAwMDAJMS43LjYuNAorKysgaC9saW51eC5oCTMgSnVuIDIwMDUgMDQ6
MDU6MjcgLTAwMDAKQEAgLTQ3LDYgKzQ3LDggQEAKIAogI2VuZGlmCiAKKyN1bmRlZiBTRVRVUF9T
SUdfU1RBQ0sKKwogI2RlZmluZSBFTEZfVEVYVF9CQVNFICBEQkVHSU4KIAogI3VuZGVmIFNFVF9S
RUFMX01BWFBBR0UKQEAgLTgwLDcgKzgyLDYgQEAKICN1bmRlZiBIQVZFX1NJR1ZFQwogI2RlZmlu
ZSBIQVZFX1NJR0FDVElPTgogLyogbWFrZSB0aGlzIGEgbm9vcCAqLwotI2RlZmluZSBTRVRVUF9T
SUdfU1RBQ0sKICNpZm5kZWYgSEFWRV9TVl9PTlNUQUNLCiAjZGVmaW5lIFNWX09OU1RBQ0sgMAog
I2VuZGlmCkBAIC0xMjUsNyArMTI2LDcgQEAKIAogCiAjZGVmaW5lIElOU1RBTExfU0VHTUVOVEFU
SU9OX0NBVENIRVIgXAotICAJICh2b2lkKSBzaWduYWwoU0lHU0VHVixzZWdtZW50YXRpb25fY2F0
Y2hlcikKKyAgCSAodm9pZCkgZ2NsX3NpZ25hbChTSUdTRUdWLHNlZ21lbnRhdGlvbl9jYXRjaGVy
KQogCiAKIC8qIGdldCB0aGUgZmlsZW5vIG9mIGEgRklMRSogKi8KSW5kZXg6IGgvbWdtcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvaC9tZ21wLmgsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMQpkaWZmIC11IC1yMS4xIG1nbXAuaAotLS0gaC9tZ21wLmgJMzAgQXVnIDIw
MDIgMDI6MTE6MjMgLTAwMDAJMS4xCisrKyBoL21nbXAuaAkzIEp1biAyMDA1IDA0OjA1OjI3IC0w
MDAwCkBAIC0xLDMgKzEsNCBAQAorI2lmIDAKICNpZmRlZiBfX1NIT1JUX0xJTUIKIHR5cGVkZWYg
dW5zaWduZWQgaW50CQltcF9saW1iX3Q7CiAjZWxzZQpAQCAtMjIsMyArMjMsMzIgQEAKIAogdHlw
ZWRlZiBfX21wel9zdHJ1Y3QgTVBfSU5UOwogCisvKiBBdmFpbGFibGUgcmFuZG9tIG51bWJlciBn
ZW5lcmF0aW9uIGFsZ29yaXRobXMuICAqLwordHlwZWRlZiBlbnVtCit7CisgIEdNUF9SQU5EX0FM
R19ERUZBVUxUID0gMCwKKyAgR01QX1JBTkRfQUxHX0xDID0gR01QX1JBTkRfQUxHX0RFRkFVTFQg
LyogTGluZWFyIGNvbmdydWVudGlhbC4gICovCit9IGdtcF9yYW5kYWxnX3Q7CisKKy8qIExpbmVh
ciBjb25ncnVlbnRpYWwgZGF0YSBzdHJ1Y3QuICAqLwordHlwZWRlZiBzdHJ1Y3QgeworICBtcHpf
dCBfbXBfYTsJCQkvKiBNdWx0aXBsaWVyLiAqLworICB1bnNpZ25lZCBsb25nIGludCBfbXBfYzsJ
LyogQWRkZXIuICovCisgIG1wel90IF9tcF9tOwkJCS8qIE1vZHVsdXMgKHZhbGlkIG9ubHkgaWYg
bTJleHAgPT0gMCkuICAqLworICB1bnNpZ25lZCBsb25nIGludCBfbXBfbTJleHA7CS8qIElmICE9
IDAsIG1vZHVsdXMgaXMgMiBeIG0yZXhwLiAgKi8KK30gX19nbXBfcmFuZGF0YV9sYzsKKworLyog
UmFuZG9tIHN0YXRlIHN0cnVjdC4gICovCit0eXBlZGVmIHN0cnVjdAoreworICBtcHpfdCBfbXBf
c2VlZDsJCS8qIEN1cnJlbnQgc2VlZC4gICovCisgIGdtcF9yYW5kYWxnX3QgX21wX2FsZzsJLyog
QWxnb3JpdGhtIHVzZWQuICAqLworICB1bmlvbiB7CQkJLyogQWxnb3JpdGhtIHNwZWNpZmljIGRh
dGEuICAqLworICAgIF9fZ21wX3JhbmRhdGFfbGMgKl9tcF9sYzsJLyogTGluZWFyIGNvbmdydWVu
dGlhbC4gICovCisgIH0gX21wX2FsZ2RhdGE7Cit9IF9fZ21wX3JhbmRzdGF0ZV9zdHJ1Y3Q7Cit0
eXBlZGVmIF9fZ21wX3JhbmRzdGF0ZV9zdHJ1Y3QgZ21wX3JhbmRzdGF0ZV90WzFdOworCisjZWxz
ZQorI2luY2x1ZGUgPGdtcC5oPgorI2VuZGlmCkluZGV4OiBoL21wLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9oL21wLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNi42
LjEuMTIuMQpkaWZmIC11IC1yMS42LjYuMS4xMi4xIG1wLmgKLS0tIGgvbXAuaAkxNSBKYW4gMjAw
NSAxNjoyNzozNiAtMDAwMAkxLjYuNi4xLjEyLjEKKysrIGgvbXAuaAkzIEp1biAyMDA1IDA0OjA1
OjI3IC0wMDAwCkBAIC01NiwxMCArNTYsMTEgQEAKICAgICAgIH0gd2hpbGUoMCkKIAogCi0jZGVm
aW5lIE1ZbWFrZV9maXhudW0oYWN0aW9uLHgpIFwKLSAgZG97cmVnaXN0ZXIgaW50IENNUHQxOyBc
Ci0gICBhY3Rpb24gXAotICAgKCgoKENNUHQxPSh4KSkrMTAyNCkmLTIwNDgpPT0wP3NtYWxsX2Zp
eG51bShDTVB0MSk6bWFrZV9maXhudW0xKENNUHQxKSk7fXdoaWxlKDApCisvKiAjZGVmaW5lIE1Z
bWFrZV9maXhudW0oYWN0aW9uLHgpIFwgKi8KKy8qICAgZG97cmVnaXN0ZXIgaW50IENNUHQxOyBc
ICovCisvKiAgICBhY3Rpb24gXCAqLworLyogICAgKCgoKENNUHQxPSh4KSkrU01BTExfRklYTlVN
X0xJTUlUKSYoLTIqU01BTExfRklYTlVNX0xJTUlUKSk9PTA/c21hbGxfZml4bnVtKENNUHQxKTpt
YWtlX2ZpeG51bTEoQ01QdDEpKTt9d2hpbGUoMCkgKi8KKyNkZWZpbmUgTVltYWtlX2ZpeG51bShh
Y3Rpb24seCkgYWN0aW9uIG1ha2VfZml4bnVtKHgpCiAgICAgIAogI2RlZmluZSBpbmVnKGFfKSAo
c2l6ZW9mKGFfKT09c2l6ZW9mKHVuc2lnbmVkKSA/ICh1bnNpZ25lZCktKGFfKSA6ICh1bnNpZ25l
ZCBsb25nKS0oYV8pKQogCkluZGV4OiBoL25vdGNvbXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3Zzcm9vdC9nY2wvZ2NsL2gvbm90Y29tcC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE1LjYu
My44LjEKZGlmZiAtdSAtcjEuMTUuNi4zLjguMSBub3Rjb21wLmgKLS0tIGgvbm90Y29tcC5oCTEy
IEF1ZyAyMDA0IDE2OjI3OjQzIC0wMDAwCTEuMTUuNi4zLjguMQorKysgaC9ub3Rjb21wLmgJMyBK
dW4gMjAwNSAwNDowNToyNyAtMDAwMApAQCAtNiw2ICs2LDEyIEBACiAKIHZvaWQgZW50ZXJfbWFy
a19vcmlnaW4oKSA7CiAKKyNpZmRlZiBfX2lhNjRfXworRVhURVIgaW50ICpjc19iYXNlMjsKK0VY
VEVSIGludCAqY3Nfb3JnMjsKKyNlbmRpZgorCitFWFRFUiBpbnQgKmNzX2Jhc2U7ICAgICAKIEVY
VEVSIGludCAqY3Nfb3JnOyAgICAgCiBFWFRFUiBpbnQgR0JDX2VuYWJsZTsKIApJbmRleDogaC9v
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2gvb2JqZWN0Lmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTguNC4xLjIuMS4yLjUuNi4xCmRpZmYgLXUgLXIxLjE4
LjQuMS4yLjEuMi41LjYuMSBvYmplY3QuaAotLS0gaC9vYmplY3QuaAk1IEF1ZyAyMDA0IDIyOjMx
OjM5IC0wMDAwCTEuMTguNC4xLjIuMS4yLjUuNi4xCisrKyBoL29iamVjdC5oCTMgSnVuIDIwMDUg
MDQ6MDU6MjcgLTAwMDAKQEAgLTMwLDcgKzMwLDE5IEBACiAjZGVmaW5lCVRSVUUJCTEJLyogIGJv
b2xlYW4gdHJ1ZSB2YWx1ZSAgKi8KICNkZWZpbmUJRkFMU0UJCTAJLyogIGJvb2xlYW4gZmFsc2Ug
dmFsdWUgICovCiAKLSNkZWZpbmUgRklSU1RXT1JEIHVuc2lnbmVkIGNoYXIgIHQsZmxhZzsgY2hh
ciBzLG0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB3b3JkOworCisjaWZkZWYgTElUVExFX0VORAor
I2RlZmluZSBGSVJTVFdPUkQgd29yZCBlOjEsbToxLGY6MSxzOjEsejo0LHQ6OAorI2RlZmluZSBN
QVJLV09SRCAgd29yZCBlOjEsbWY6MixzOjEsejo0LHQ6OAorI2RlZmluZSBTR0NNV09SRCAgd29y
ZCBlOjEsbWZzOjMsejo0LHQ6OAorLyogI2RlZmluZSBGSVJTVFdPUkQgY2hhciBlOjEsbToxLGY6
MSx6OjU7dW5zaWduZWQgY2hhciAgdCxmbGFnOyBjaGFyIHMgKi8KKyNlbHNlCisjZGVmaW5lIEZJ
UlNUV09SRCB3b3JkIHQ6OCx6OjQsczoxLGY6MSxtOjEsZToxCisjZGVmaW5lIE1BUktXT1JEICB3
b3JkIHQ6OCx6OjQsczoxLG1mOjIsZToxCisjZGVmaW5lIFNHQ01XT1JEICB3b3JkIHQ6OCx6OjQs
bWZzOjMsZToxCisvKiAjZGVmaW5lIEZJUlNUV09SRCBjaGFyIHM7IHVuc2lnbmVkIGNoYXIgZmxh
Zyx0O2NoYXIgejo1LGY6MSxtOjEsZToxOyAqLworI2VuZGlmCiAKICNkZWZpbmUJTkJQUAkJNAkv
KiAgbnVtYmVyIG9mIGJ5dGVzIHBlciBwb2ludGVyICAqLwogCkBAIC0xMDUsMTYgKzExNyw1NSBA
QAogCQlGSVJTVFdPUkQ7CiAJZml4bnVtCUZJWFZBTDsJCS8qICBmaXhudW0gdmFsdWUgICovCiB9
OwotI2RlZmluZQlNZml4KG9iamUpCShvYmplKS0+RklYLkZJWFZBTAotI2RlZmluZSBmaXgoeCkg
TWZpeCh4KQorLyogI2RlZmluZQlNZml4KG9iamUpCShvYmplKS0+RklYLkZJWFZBTCAqLworLyog
I2RlZmluZSBmaXgoeCkgTWZpeCh4KSAqLworCisvKiAjZGVmaW5lCVNNQUxMX0ZJWE5VTV9MSU1J
VAkxMDI0ICovCisvKiAjZGVmaW5lCVNNQUxMX0ZJWE5VTV9MSU1JVAkxMDQ4NTc2ICovCiAKLSNk
ZWZpbmUJU01BTExfRklYTlVNX0xJTUlUCTEwMjQKKy8qIEVYVEVSICovCisvKiBzdHJ1Y3QgZml4
bnVtX3N0cnVjdCBzbWFsbF9maXhudW1fdGFibGVbMipTTUFMTF9GSVhOVU1fTElNSVRdOyAqLwog
Ci1FWFRFUgotc3RydWN0IGZpeG51bV9zdHJ1Y3Qgc21hbGxfZml4bnVtX3RhYmxlWzIqU01BTExf
RklYTlVNX0xJTUlUXTsKKy8qICNkZWZpbmUJc21hbGxfZml4bnVtKGkpICBcICovCisvKiAJKG9i
amVjdCkoc21hbGxfZml4bnVtX3RhYmxlK1NNQUxMX0ZJWE5VTV9MSU1JVCsoaSkpICovCisKKwor
I2lmIGRlZmluZWQgKElNX0ZJWF9CQVNFKSAmJiBkZWZpbmVkKElNX0ZJWF9MSU0pCisjZGVmaW5l
ICAgICAgbWFrZV9pbW1fZml4bnVtKGFfKSAgICAgICAgKChvYmplY3QpKChhXykrKElNX0ZJWF9C
QVNFKyhJTV9GSVhfTElNPj4xKSkpKQorI2RlZmluZSAgICAgICBmaXhfaW1tX2ZpeG51bShhXykg
ICAgICAgICgoKGZpeG51bSkoYV8pKS0oSU1fRklYX0JBU0UrKElNX0ZJWF9MSU0+PjEpKSkKKyNk
ZWZpbmUgICAgICBtYXJrX2ltbV9maXhudW0oYV8pICAgICAgICAoKGFfKT0oKG9iamVjdCkoKChm
aXhudW0pKGFfKSkgfCBJTV9GSVhfTElNKSkpCisjZGVmaW5lICAgIHVubWFya19pbW1fZml4bnVt
KGFfKSAgICAgICAgKChhXyk9KChvYmplY3QpKCgoZml4bnVtKShhXykpICZ+IElNX0ZJWF9MSU0p
KSkKKyNkZWZpbmUgICAgICAgIGlzX2ltbV9maXhudW0oYV8pICAgICAgICAoKCh1bnNpZ25lZCBs
b25nKShhXykpPj1JTV9GSVhfQkFTRSkKKyNkZWZpbmUgaXNfbWFya2VkX2ltbV9maXhudW0oYV8p
ICAgICAgICAoKChmaXhudW0pKGFfKSkmSU1fRklYX0xJTSkKKyNkZWZpbmUgICAgICAgICAgIGlz
X2ltbV9maXgoYV8pICAgICAgICAoISgoKGFfKSsoSU1fRklYX0xJTT4+MSkpJi1JTV9GSVhfTElN
KSkKKyNkZWZpbmUgICAgICAgIHVuX2ltbV9maXhudW0oYV8pICAgICAgICAoKGFfKT0oKG9iamVj
dCkoKChmaXhudW0pKGFfKSkmfihJTV9GSVhfQkFTRXxJTV9GSVhfTElNKSkpKQorI2Vsc2UKKyNk
ZWZpbmUgICAgICBtYWtlX2ltbV9maXhudW0oYV8pICAgICAgICBtYWtlX2ZpeG51bTEoYV8pCisj
ZGVmaW5lICAgICAgIGZpeF9pbW1fZml4bnVtKGFfKSAgICAgICAgbWFrZV9maXhudW0xKGFfKQor
I2RlZmluZSAgICAgIG1hcmtfaW1tX2ZpeG51bShhXykgICAgICAgIAorI2RlZmluZSAgICB1bm1h
cmtfaW1tX2ZpeG51bShhXykgICAgICAgIAorI2RlZmluZSAgICAgICAgaXNfaW1tX2ZpeG51bShh
XykgICAgICAgIDAKKyNkZWZpbmUgaXNfbWFya2VkX2ltbV9maXhudW0oYV8pICAgICAgICAwCisj
ZGVmaW5lICAgICAgICAgICBpc19pbW1fZml4KGFfKSAgICAgICAgMAorI2RlZmluZSAgICAgICAg
dW5faW1tX2ZpeG51bShhXykgICAgICAgIAorI2VuZGlmCiAKLSNkZWZpbmUJc21hbGxfZml4bnVt
KGkpICBcCi0JKG9iamVjdCkoc21hbGxfZml4bnVtX3RhYmxlK1NNQUxMX0ZJWE5VTV9MSU1JVCso
aSkpCisjZGVmaW5lIG1ha2VfZml4bnVtKGFfKSAgKHtyZWdpc3RlciBmaXhudW0gX3ExPShhXyk7
cmVnaXN0ZXIgb2JqZWN0IF9xMztfcTM9aXNfaW1tX2ZpeChfcTEpID8gbWFrZV9pbW1fZml4bnVt
KF9xMSkgOiBtYWtlX2ZpeG51bTEoX3ExKTtfcTM7fSkKKyNkZWZpbmUgZml4KGFfKSAgICAgICAg
ICAoe3JlZ2lzdGVyIG9iamVjdCBfcTI9KGFfKTtyZWdpc3RlciBmaXhudW0gX3E0O19xND1pc19p
bW1fZml4bnVtKF9xMikgPyBmaXhfaW1tX2ZpeG51bShfcTIpIDogIChfcTIpLT5GSVguRklYVkFM
O19xNDt9KQorI2RlZmluZSBNZml4KGFfKSAgICAgICAgIGZpeChhXykKKyNkZWZpbmUgc21hbGxf
Zml4bnVtKGFfKSBtYWtlX2ZpeG51bShhXykgLyptYWtlX2ltbV9maXhudW0oYV8pKi8KKyNkZWZp
bmUgc2V0X2ZpeChhXyxiXykgICAoKGFfKS0+RklYLkZJWFZBTD0oYl8pKQorCisjZGVmaW5lIFpj
ZHIoYV8pICAgICAgICAgICAgICAgICAoKihvYmplY3QgKikoYV8pKS8qICgoYV8pLT5jLmNfY2Ry
KSAqLyAvKkZJWE1FKi8KKyNkZWZpbmUgaXNfbWFya2VkKGFfKSAgICAgICAgICAgIChpc19pbW1f
Zml4bnVtKFpjZHIoYV8pKSA/IGlzX21hcmtlZF9pbW1fZml4bnVtKFpjZHIoYV8pKSA6IChhXykt
PmQubSkKKyNkZWZpbmUgaXNfbWFya2VkX29yX2ZyZWUoYV8pICAgIChpc19pbW1fZml4bnVtKFpj
ZHIoYV8pKSA/IGlzX21hcmtlZF9pbW1fZml4bnVtKFpjZHIoYV8pKSA6IChhXyktPm1kLm1mKQor
I2RlZmluZSBtYXJrKGFfKSAgICAgICAgICAgICAgICAgaWYgKGlzX2ltbV9maXhudW0oWmNkcihh
XykpKSBtYXJrX2ltbV9maXhudW0oWmNkcihhXykpOyBlbHNlIChhXyktPmQubT0xCisjZGVmaW5l
IHVubWFyayhhXykgICAgICAgICAgICAgICBpZiAoaXNfaW1tX2ZpeG51bShaY2RyKGFfKSkpIHVu
bWFya19pbW1fZml4bnVtKFpjZHIoYV8pKTsgZWxzZSAoYV8pLT5kLm09MAorI2RlZmluZSBpc19m
cmVlKGFfKSAgICAgICAgICAgICAgKCFpc19pbW1fZml4bnVtKGFfKSAmJiAhaXNfaW1tX2ZpeG51
bShaY2RyKGFfKSkgJiYgKGFfKS0+ZC5mKQorI2RlZmluZSBtYWtlX2ZyZWUoYV8pICAgICAgICAg
ICAge3VuX2ltbV9maXhudW0oWmNkcihhXykpOyhhXyktPmQuZj0xOyhhXyktPmQubT0wO30KKyNk
ZWZpbmUgbWFrZV91bmZyZWUoYV8pICAgICAgICAgIHt1bl9pbW1fZml4bnVtKFpjZHIoYV8pKTso
YV8pLT5kLmY9MDsoYV8pLT5kLm09MDt9CisKKyNkZWZpbmUgaXNfY29ucyhhXykgIChpc19pbW1f
Zml4bnVtKFpjZHIoYV8pKSB8fCAhKGFfKS0+ZC5lKQogCiBzdHJ1Y3Qgc2hvcnRmbG9hdF9zdHJ1
Y3QgewogCQkJRklSU1RXT1JEOwpAQCAtMTI2LDYgKzE3Nyw3IEBACiBzdHJ1Y3QgbG9uZ2Zsb2F0
X3N0cnVjdCB7CiAJCQlGSVJTVFdPUkQ7CiAJbG9uZ2Zsb2F0CUxGVkFMOwkvKiAgbG9uZ2Zsb2F0
IHZhbHVlICAqLworICAgICAgICBvYmplY3QgIHBhZDsKIH07CiAjZGVmaW5lCU1sZihvYmplKQko
b2JqZSktPkxGLkxGVkFMCiAjZGVmaW5lIGxmKHgpIE1sZih4KQpAQCAtMTYyLDYgKzIxNCw3IEBA
CiAJCQkJLyogIG11c3QgYmUgYW4gaW50ZWdlciAgKi8KIAlvYmplY3QJcmF0X251bTsJLyogIG51
bWVyYXRvciAgKi8KIAkJCQkvKiAgbXVzdCBiZSBhbiBpbnRlZ2VyICAqLworICAgICAgICBvYmpl
Y3QgIHBhZDsKIH07CiAKIHN0cnVjdCBjb21wbGV4IHsKQEAgLTE3MCw2ICsyMjMsNyBAQAogCQkJ
CS8qICBtdXN0IGJlIGEgbnVtYmVyICAqLwogCW9iamVjdAljbXBfaW1hZzsJLyogIGltYWdpbmFy
eSBwYXJ0ICAqLwogCQkJCS8qICBtdXN0IGJlIGEgbnVtYmVyICAqLworICAgICAgICBvYmplY3Qg
IHBhZDsKIH07CiAKIHN0cnVjdCBjaGFyYWN0ZXIgewpAQCAtMTk1LDEyICsyNDksMTIgQEAKICAg
ICAgICAgc3RwX3NwZWNpYWwJCS8qICBzcGVjaWFsICAqLwogfTsKIAotI2RlZmluZQlDbmlsCQkJ
KChvYmplY3QpJkNuaWxfYm9keSkKLSNkZWZpbmUJQ3QJCQkoKG9iamVjdCkmQ3RfYm9keSkKLSNk
ZWZpbmUgc0xuaWwgQ25pbAotI2RlZmluZSBzTHQgQ3QKKy8qICNkZWZpbmUJQ25pbAkJCSgob2Jq
ZWN0KSZDbmlsX2JvZHkpICovCisvKiAjZGVmaW5lCUN0CQkJKChvYmplY3QpJkN0X2JvZHkpICov
CisKKy8qICNkZWZpbmUJQ25pbAkJCSgob2JqZWN0KSYoQ25pbEN0KzEpKSAqLworLyogI2RlZmlu
ZQlDdAkJCSgob2JqZWN0KSYoQ25pbEN0KzErc2l6ZW9mKHN0cnVjdCBzeW1ib2wpKSkgKi8KIAot
I2RlZmluZQlOT1RfU1BFQ0lBTAkJKCh2b2lkICgqKSgpKUNuaWwpCiAjZGVmaW5lCXNfZmlsbHAJ
CXN0X2ZpbGxwCiAjZGVmaW5lCXNfc2VsZgkJc3Rfc2VsZgogCkBAIC0yMjQsOSArMjc4LDIwIEBA
CiAJc2hvcnQJc19zdHlwZTsJLyogIHN5bWJvbCB0eXBlICAqLwogCQkJCS8qICBvZiBlbnVtIHN0
eXBlICAqLwogCXNob3J0CXNfbWZsYWc7CS8qICBtYWNybyBmbGFnICAqLworICAgICAgICBmaXhu
dW0gIHNfaGFzaDsKIH07CiBFWFRFUiAKLXN0cnVjdCBzeW1ib2wgQ25pbF9ib2R5LCBDdF9ib2R5
OworLyogc3RydWN0IHN5bWJvbCBDbmlsX2JvZHksIEN0X2JvZHk7ICovCitjaGFyIENuaWxDdFsz
KnNpemVvZihzdHJ1Y3Qgc3ltYm9sKSsxXTsKKy8qRklYTUUgLS0gdGhlc2UgbmVlZCB0byBiZSBj
b25zdGFudCBpbml0aWFsaXplcnMsIGUuZy4gaW4gc19teV9kb3QqLworCisjZGVmaW5lIENuaWwg
ICAoKG9iamVjdCkoQ25pbEN0KSkKKyNkZWZpbmUgQ3QgICAgICgob2JqZWN0KShDbmlsQ3Qrc2l6
ZW9mKHN0cnVjdCBzeW1ib2wpKSkKKyNkZWZpbmUgRG90bmlsICgob2JqZWN0KShDbmlsQ3QrMipz
aXplb2Yoc3RydWN0IHN5bWJvbCkpKQorI2RlZmluZSBzTG5pbCBDbmlsCisjZGVmaW5lIHNMdCBD
dAorCisjZGVmaW5lCU5PVF9TUEVDSUFMCQkoKHZvaWQgKCopKCkpQ25pbCkKIAogc3RydWN0IHBh
Y2thZ2UgewogCQlGSVJTVFdPUkQ7CkBAIC0yNDUsNiArMzEwLDcgQEAKICAgICAgICAgaW50IHBf
ZXh0ZXJuYWxfZnA7ICAgIC8qIFtyb3VnaF0gIG51bWJlciBvZiBzeW1ib2xzICovCiAJc3RydWN0
IHBhY2thZ2UKIAkJKnBfbGluazsJLyogIHBhY2thZ2UgbGluayAgKi8KKyAgICAgICAgb2JqZWN0
ICBwYWQ7CiB9OwogCiAvKgpAQCAtMjYwLDggKzMyNiw5IEBACiAqLwogRVhURVIgc3RydWN0IHBh
Y2thZ2UgKnBhY2tfcG9pbnRlcjsJLyogIHBhY2thZ2UgcG9pbnRlciAgKi8KIAorI2RlZmluZSBT
Y2RyKGFfKSAoe29iamVjdCBfdD0oYV8pLT5jLmNfY2RyO21ha2VfdW5mcmVlKChvYmplY3QpJl90
KTtfdDt9KQogc3RydWN0IGNvbnMgewotCQlGSVJTVFdPUkQ7CisvKiAJCUZJUlNUV09SRDsgKi8K
IAlvYmplY3QJY19jZHI7CQkvKiAgY2RyICAqLwogCW9iamVjdAljX2NhcjsJCS8qICBjYXIgICov
CiB9OwpAQCAtMjg3LDYgKzM1NCw4IEBACiAJaW50CWh0X3NpemU7CS8qICBoYXNoIHRhYmxlIHNp
emUgICovCiAJc2hvcnQJaHRfdGVzdDsJLyogIGtleSB0ZXN0IGZ1bmN0aW9uICAqLwogCQkJCS8q
ICBvZiBlbnVtIGh0dGVzdCAgKi8KKyAgICAgICAgc2hvcnQgICBwYWQxOworICAgICAgICBvYmpl
Y3QgIHBhZDsKIH07CiAKIGVudW0gYWVsdHR5cGUgewkJCS8qICBhcnJheSBlbGVtZW50IHR5cGUg
ICovCkBAIC0zMTMsNiArMzgyLDcgQEAKIAlzaG9ydAlhX29mZnNldDsJLyogIGJpdHZlY3RvciBv
ZmZzZXQgICovCiAJaW50CWFfZGltOwkJLyogIGRpbWVuc2lvbiAgKi8KIAlpbnQJKmFfZGltczsJ
LyogIHRhYmxlIG9mIGRpbWVuc2lvbnMgICovCisgICAgICAgIG9iamVjdCAgcGFkOwogCiB9Owog
CkBAIC0zMzEsNiArNDAxLDcgQEAKIAlpbnQJdl9kaW07CQkvKiAgZGltZW5zaW9uICAqLwogCXNo
b3J0CXZfYWRqdXN0YWJsZTsJLyogIGFkanVzdGFibGUgZmxhZyAgKi8KIAlzaG9ydAl2X29mZnNl
dDsJLyogIG5vdCB1c2VkICAqLworICAgICAgICBvYmplY3QgIHBhZDsKIH07CiAKIHN0cnVjdCBz
dHJpbmcgewkJCS8qICBzdHJpbmcgaGVhZGVyICAqLwpAQCAtMzg3LDYgKzQ1OCw3IEBACiAJc2hv
cnQJYnZfb2Zmc2V0OwkvKiAgYml0dmVjdG9yIG9mZnNldCAgKi8KIAkJCQkvKiAgdGhlIHBvc2l0
aW9uIG9mIHRoZSBmaXJzdCBiaXQgICovCiAJCQkJLyogIGluIHRoZSBmaXJzdCBieXRlICAqLwor
ICAgICAgICBvYmplY3QgIHBhZDsKIH07CiAKIHN0cnVjdCBmaXhhcnJheSB7CQkvKiAgZml4bnVt
IGFycmF5IGhlYWRlciAgKi8KQEAgLTM5OSw2ICs0NzEsNyBAQAogCXNob3J0CWZpeGFfb2Zmc2V0
OwkvKiAgbm90IHVzZWQgICovCiAJaW50CWZpeGFfZGltOwkvKiAgZGltZW5zaW9uICAqLwogCWlu
dAkqZml4YV9kaW1zOwkvKiAgdGFibGUgb2YgZGltZW5zaW9ucyAgKi8KKyAgICAgICAgb2JqZWN0
ICBwYWQ7CiAKIH07CiAKQEAgLTQxNCw2ICs0ODcsNyBAQAogCWludAlzZmFfZGltOwkvKiAgZGlt
ZW5zaW9uICAqLwogCiAJaW50CSpzZmFfZGltczsJLyogIHRhYmxlIG9mIGRpbWVuc2lvbnMgICov
CisgICAgICAgIG9iamVjdCAgcGFkOwogCiAKIApAQCAtNDMwLDYgKzUwNCw3IEBACiAJc2hvcnQJ
bGZhX29mZnNldDsJLyogIG5vdCB1c2VkICAqLwogCWludAlsZmFfZGltOwkJLyogIGRpbWVuc2lv
biAgKi8KIAlpbnQJKmxmYV9kaW1zOwkvKiAgdGFibGUgb2YgZGltZW5zaW9ucyAgKi8KKyAgICAg
ICAgb2JqZWN0ICBwYWQ7CiAKIAogfTsKQEAgLTQzOCw2ICs1MTMsNyBAQAogCQlGSVJTVFdPUkQ7
CiAJb2JqZWN0CXN0cl9kZWY7CS8qICBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiAoYSBzdHJ1Y3R1cmUp
ICAqLwogCW9iamVjdAkqc3RyX3NlbGY7CS8qICBzdHJ1Y3R1cmUgc2VsZiAgKi8KKyAgICAgICAg
b2JqZWN0ICBwYWQ7CiB9OwogCiBzdHJ1Y3Qgc19kYXRhIHtvYmplY3QgbmFtZTsKQEAgLTU1NSw3
ICs2MzEsOCBAQAogCiBzdHJ1Y3QgcmFuZG9tIHsKIAkJCUZJUlNUV09SRDsKLQl1bnNpZ25lZAly
bmRfdmFsdWU7CS8qICByYW5kb20gc3RhdGUgdmFsdWUgICovCitfX2dtcF9yYW5kc3RhdGVfc3Ry
dWN0ICBybmRfc3RhdGU7CisvKiAJdW5zaWduZWQJcm5kX3ZhbHVlOyAqLwkvKiAgcmFuZG9tIHN0
YXRlIHZhbHVlICAqLwogfTsKIAogZW51bSBjaGF0dHJpYiB7CQkJLyogIGNoYXJhY3RlciBhdHRy
aWJ1dGUgICovCkBAIC01OTEsNiArNjY4LDcgQEAKIAlvYmplY3QJcG5fbmFtZTsJLyogIG5hbWUg
ICovCiAJb2JqZWN0CXBuX3R5cGU7CS8qICB0eXBlICAqLwogCW9iamVjdAlwbl92ZXJzaW9uOwkv
KiAgdmVyc2lvbiAgKi8KKyAgICAgICAgb2JqZWN0ICBwYWQ7CiB9OwogCiBzdHJ1Y3QgY2Z1biB7
CQkJLyogIGNvbXBpbGVkIGZ1bmN0aW9uIGhlYWRlciAgKi8KQEAgLTYxMCw2ICs2ODgsNyBAQAog
CQkJCS8qICBmb3IgR0JDICAqLwogCWludCBjY19lbnZkaW07CiAJb2JqZWN0CSpjY190dXJibzsJ
LyogIHR1cmJvIGNoYXJnZXIgKi8KKyAgICAgICAgb2JqZWN0ICBwYWQ7CiB9OwogCiBzdHJ1Y3Qg
Y2xvc3VyZSB7CkBAIC02MjgsNiArNzA3LDcgQEAKIAlvYmplY3QJKCpzZm5fc2VsZikoKTsgIC8q
IEMgc3RhcnQgYWRkcmVzcyBvZiBjb2RlICovCiAJb2JqZWN0CXNmbl9kYXRhOyAgICAgICAvKiBU
byBvYmplY3QgaG9sZGluZyBWViB2ZWN0b3IgKi8KIAlpbnQgc2ZuX2FyZ2Q7ICAgICAgICAgICAv
KiBkZXNjcmlwdGlvbiBvZiBhcmdzICsgbnVtYmVyICovCisgICAgICAgIG9iamVjdCAgcGFkOwog
CiAJICAgICAgfTsKIApAQCAtNjM4LDYgKzcxOCw3IEBACiAJb2JqZWN0CXZmbl9kYXRhOyAgICAg
ICAvKiBUbyBvYmplY3QgaG9sZGluZyBWViBkYXRhICovCiAJdW5zaWduZWQgc2hvcnQgdmZuX21p
bmFyZ3M7IC8qIE1pbiBhcmdzIGFuZCB3aGVyZSB2YXJhcmdzIHN0YXJ0ICovCiAJdW5zaWduZWQg
c2hvcnQgdmZuX21heGFyZ3M7ICAgIC8qIE1heCBudW1iZXIgb2YgYXJncyAqLworICAgICAgICBv
YmplY3QgIHBhZDsKIAkgICAgICB9Owogc3RydWN0IGNmZGF0YSB7CiAgICAgIEZJUlNUV09SRDsK
QEAgLTY0NSw2ICs3MjYsNyBAQAogICAgICBpbnQgY2ZkX3NpemU7ICAgICAgICAgICAgICAvKiBz
aXplIG9mIGNvbnRibG9jayAqLwogICAgICBpbnQgY2ZkX2ZpbGxwOyAgICAgICAgICAgICAvKiBz
aXplIG9mIHNlbGYgKi8KICAgICAgb2JqZWN0ICpjZmRfc2VsZjsgICAgICAgICAgLyogYm9keSAq
LworICAgICBvYmplY3QgIHBhZDsKICAgIH07CiAKIHN0cnVjdCBzcGljZSB7CkBAIC02NTUsOSAr
NzM3LDkgQEAKIC8qCiAJZHVtbXkgdHlwZQogKi8KLXN0cnVjdCBkdW1teSB7Ci0JRklSU1RXT1JE
OwotfTsKK3N0cnVjdCBkdW1teSAgICAgIHtGSVJTVFdPUkQ7fTsKK3N0cnVjdCBtYXJrICAgICAg
IHtNQVJLV09SRDt9Oworc3RydWN0IHNnY20gICAgICAge1NHQ01XT1JEO307CiAKIC8qCiAJRGVm
aW5pdGlvbiBvZiBsaXNwdW5pb24uCkBAIC03MDEsNiArNzgzLDggQEAKIAlzdHJ1Y3Qgc3BpY2UJ
c3BjOwkvKiAgc3BpY2UgICovCiAKIAlzdHJ1Y3QgZHVtbXkJZDsJLyogIGR1bW15ICAqLworCXN0
cnVjdCBtYXJrCW1kOwkvKiAgZHVtbXkgICovCisJc3RydWN0IHNnY20Jc21kOwkvKiAgZHVtbXkg
ICovCiAKIAlzdHJ1Y3QgZml4YXJyYXkJZml4YTsJLyogIGZpeG51bSBhcnJheSAgKi8KIAlzdHJ1
Y3Qgc2ZhcnJheQlzZmE7CS8qICBzaG9ydC1mbG9hdCBhcnJheSAgKi8KQEAgLTcyNSwxMyArODA5
LDE3IEBACiAjZGVmaW5lIFNFVF9MSU5LKHgsdmFsKSBGX0xJTksoeCkgPSAoYWRkcmVzc19pbnQp
ICh2YWwpCiAjZGVmaW5lIE9CSl9MSU5LKHgpICgob2JqZWN0KSBJTlRfVE9fQUREUkVTUyhGX0xJ
TksoeCkpKQogCi0jZGVmaW5lCUZSRUUJKC0xKQkJLyogIGZyZWUgb2JqZWN0ICAqLworLyogI2Rl
ZmluZQlGUkVFCSgtMSkgKi8JCS8qICBmcmVlIG9iamVjdCAgKi8KIAogLyoKIAlUeXBlX29mLgog
Ki8KLSNkZWZpbmUJdHlwZV9vZihvYmplKQkoKGVudW0gdHlwZSkoKChvYmplY3QpKG9iamUpKS0+
ZC50KSkKLQorI2RlZmluZQl0eXBlX29mKHgpCSAoe29iamVjdCBfej0ob2JqZWN0KSh4KTtcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbW1fZml4bnVtKF96KSA/IHRfZml4bnVtIDog
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfej09Q25pbCB8fCBfej09Q3QgfHwgX3o9
PURvdG5pbCA/IHRfc3ltYm9sIDogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzX2Nv
bnMoX3opID8gIHRfY29ucyAgOiBfei0+ZC50KSk7fSkKKyNkZWZpbmUgc2V0X3R5cGVfb2YoeCx5
KSAoe29iamVjdCBfeD0ob2JqZWN0KSh4KTtlbnVtIHR5cGUgX3k9KHkpO21ha2VfdW5mcmVlKF94
KTtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3khPXRfY29ucykge194LT5kLmU9
MTtfeC0+ZC50PV95O30gZWxzZSBfeC0+ZC5lPTA7fSkKIC8qCiAJU3RvcmFnZSBtYW5hZ2VyIGZv
ciBlYWNoIHR5cGUuCiAqLwpAQCAtODQ2LDE4ICs5MzQsMjEgQEAKIAogCiAvKiBGSVhNRSAgTWFr
ZSBhbGwgb3RoZXIgcGFnZSBjb25zdGFudHMgc2NhbGUgc2ltaWxhcmx5IGJ5IGRlZmF1bHQuICov
Ci0jaWZuZGVmIEhPTEVQQUdFCi0jZGVmaW5lCUhPTEVQQUdFCShNQVhQQUdFLzEwKQotI2VuZGlm
CisvKiAjaWZuZGVmIEhPTEVQQUdFICovCisvKiAjZGVmaW5lCUhPTEVQQUdFCShNQVhQQUdFLzEw
KSAqLworLyogI2VuZGlmICovCiAKIAogLyogI2RlZmluZQlJTklUX0hPTEVQQUdFCTE1MCAqLwog
LyogI2RlZmluZQlJTklUX05SQlBBR0UJNTAgKi8KIC8qICNkZWZpbmUJUkJfR0VUQQkJNTEyICov
CiAKLSNkZWZpbmUJSU5JVF9IT0xFUEFHRQkoNipIT0xFUEFHRS81KQotI2RlZmluZQlJTklUX05S
QlBBR0UJKElOSVRfSE9MRVBBR0UvMykKLSNkZWZpbmUJUkJfR0VUQQkJKDEwKklOSVRfTlJCUEFH
RSkKKyNkZWZpbmUJSU5JVF9IT0xFRElWCSg1KkhPTEVESVYvNikKKyNkZWZpbmUJSU5JVF9OUkJE
SVYJKElOSVRfSE9MRURJViozKQorI2RlZmluZQlSQl9HRVRESVYJMTAwCisKKyNkZWZpbmUgQ09S
RV9QQUdFUyAoKCh1bnNpZ25lZCBsb25nKWNvcmVfZW5kLURCRUdJTik+PlBBR0VXSURUSCkKKyNk
ZWZpbmUgUkJfR0VUQSAgICAoQ09SRV9QQUdFUy9SQl9HRVRESVYpCiAKIAogI2lmZGVmIEFWCkBA
IC05MjAsMTUgKzEwMTEsMzIgQEAKICAgIEluIHJlY2VudCB2ZXJzaW9ucyBvZiBnY2MsIGkgdGhp
bmsgdGhlIGJ1aWx0aW5fYWxpc3Qgc3R1ZmYgZG9lcyBub3QKICAgIGFsbG93IHNldHRpbmcgdGhp
cy4KICAqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZGVmaW5lIENTUCAoQ1NUQUNLX0FMSUdO
TUVOVC0xKQorI2lmIENTVEFDS19ESVJFQ1RJT04gPT0gLTEKKyNkZWZpbmUgWkFMTE9DQShuKSAo
e2xvbmcgX3g9MCxfeT0wLF9uPSgobikrQ1NQKSZ+Q1NQO3ZvaWQgKnY9TlVMTDt2PWFsbG9jYShf
bitfeCtfeSk7Ynplcm8odixfbitfeCtfeSk7IHY7fSkKKyNlbHNlCisjZGVmaW5lIFpBTExPQ0Eo
bikgKHtsb25nIF94PTAsX3k9MCxfbj0oKG4pK0NTUCkmfkNTUDt2b2lkICp2PU5VTEw7dj1hbGxv
Y2EoX24rX3grX3kpO2J6ZXJvKHYsX24rX3grX3kpOyB2O30pCisjZW5kaWYKKy8qICNkZWZpbmUg
WkFMTE9DQShuKSAoe2xvbmcgX3g9MCxfeT0wLF9uPSgobikrQ1NQKSZ+Q1NQO3ZvaWQgKnY9TlVM
TDt2PWFsbG9jYShfbitfeCtfeSk7d2lwZV9zdGFjayh2K19uKTsgdjt9KSAqLworLyogI2Vsc2Ug
Ki8KKy8qICNkZWZpbmUgWkFMTE9DQShuKSAoe2xvbmcgX3g9MCxfeT0wLF9uPSgobikrQ1NQKSZ+
Q1NQO3ZvaWQgKnY9TlVMTDt2PWFsbG9jYShfbitfeCtfeSk7d2lwZV9zdGFjayh2KTsgdjt9KSAq
LworLyogI2VuZGlmICovCisKKyNkZWZpbmUgWkFMTE9DQTEodixuKSAoKHYpPWFsbG9jYSgobikp
LF9fYnVpbHRpbl9iemVybygodiksKChuKSkpKQorCiAjaWZkZWYgRE9OVF9DT1BZX1ZBX0xJU1QK
ICNkZWZpbmUgQ09FUkNFX1ZBX0xJU1QobmV3LHZsLG4pIG5ldyA9IChvYmplY3QgKikgKHZsKQog
I2Vsc2UKICNkZWZpbmUgQ09FUkNFX1ZBX0xJU1QobmV3LHZsLG4pIFwKLSBvYmplY3QgWHh2bFs2
NV07IFwKLSB7aW50IGk7IFwKLSAgbmV3PVh4dmw7IFwKLSAgaWYgKG4gPj0gNjUpIEZFZXJyb3Io
IlRvbyBwbG9uZyB2bCIsMCk7IFwKLSAgZm9yIChpPTAgOyBpIDwgKG4pOyBpKyspIG5ld1tpXT12
YV9hcmcodmwsb2JqZWN0KTt9CisgaW50IGk7XAorIG9iamVjdCAqWHh2bDsgXAorIFh4dmw9WkFM
TE9DQSgobikqc2l6ZW9mKCpYeHZsKSk7XAorIG5ldz1YeHZsOyBcCisgaWYgKG4gPj0gNjUpIEZF
ZXJyb3IoIlRvbyBwbG9uZyB2bCIsMCk7IFwKKyBmb3IgKGk9MCA7IGkgPCAobik7IGkrKykgbmV3
W2ldPXZhX2FyZyh2bCxvYmplY3QpOworLyogIG1lbXNldChYeHZsK24sMCwoY2hhciAqKSZYeHZs
PihjaGFyICopWHh2bCtuID8gKGNoYXIgKikmWHh2bCAtIChjaGFyICopWHh2bCAtbipzaXplb2Yo
Klh4dmwpIDogbipzaXplb2YoKlh4dmwpKyAoY2hhciAqKVh4dmwgIC0gKGNoYXIgKikmWHh2bCk7
ICovCiAjZW5kaWYKIAogI2lmZGVmIERPTlRfQ09QWV9WQV9MSVNUCkBAIC0xMDI1LDExICsxMTMz
LDExIEBACiAKIEVYVEVSIHVuc2lnbmVkIHBsb25nIHNpZ25hbHNfYWxsb3dlZCwgc2lnbmFsc19w
ZW5kaW5nICA7CiAKLUVYVEVSIHN0cnVjdCBzeW1ib2wgRG90bmlsX2JvZHk7Ci0jZGVmaW5lIERv
dG5pbCAoKG9iamVjdCkmRG90bmlsX2JvZHkpCisvKiBFWFRFUiBzdHJ1Y3Qgc3ltYm9sIERvdG5p
bF9ib2R5OyAqLworLyogI2RlZmluZSBEb3RuaWwgKChvYmplY3QpJkRvdG5pbF9ib2R5KSAqLwog
CiAjZGVmaW5lCWVuZHAoeCkJKHtcCi0gICAgc3RhdGljIHN0cnVjdCBjb25zIHNfbXlfZG90PXt0
X2NvbnMsMCwwLDAsRG90bmlsLERvdG5pbH07XAorICAgIHN0YXRpYyBzdHJ1Y3QgY29ucyBzX215
X2RvdD17LyogdF9jb25zLDAsMCwwLDAsMCwgKi9Eb3RuaWwsRG90bmlsfTtcCiAgICAgb2JqZWN0
IF94PSh4KTtcCiAgICAgYm9vbCBfYj1GQUxTRTtcCiAgICAgXApJbmRleDogaC9wYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9oL3BhZ2UuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS40LjQuMi4yLjMuNC4xCmRpZmYgLXUgLXIxLjQuNC4yLjIuMy40LjEgcGFnZS5o
Ci0tLSBoL3BhZ2UuaAkxNCBKdWwgMjAwNCAyMDo0ODoyMyAtMDAwMAkxLjQuNC4yLjIuMy40LjEK
KysrIGgvcGFnZS5oCTMgSnVuIDIwMDUgMDQ6MDU6MjcgLTAwMDAKQEAgLTcwLDcgKzcwLDcgQEAK
IAkJCSAgICAgICAoc2djX3R5cGVfbWFwW3hTR10gJiBTR0NfV1JJVEFCTEUpKSBcCiAJCQkJIHtp
Zl9jb2RlO319IHdoaWxlKDApCiAKLSNkZWZpbmUgc2djX21hcmtfb2JqZWN0KHgpIElGX1dSSVRB
QkxFKHgsaWYoKHgpLT5kLm09PTApIHNnY19tYXJrX29iamVjdDEoeCkpCisjZGVmaW5lIHNnY19t
YXJrX29iamVjdCh4KSBJRl9XUklUQUJMRSh4LGlmKCFpc19tYXJrZWQoeCkpIHNnY19tYXJrX29i
amVjdDEoeCkpCiAvKgogI2RlZmluZSBzZ2NfbWFya19vYmplY3QoeCkgc2djX21hcmtfb2JqZWN0
MSh4KQogKi8KQEAgLTgyLDkgKzgyLDkgQEAKIAogCiAvKiBmb3IgdGhlIFMgZmllbGQgb2YgdGhl
IEZJUlNUV09SRCAqLwotZW51bSBzZ2NfdHlwZSB7IFNHQ19OT1JNQUwsICAgLyogbm90IGFsbG9j
YXRlZCBzaW5jZSB0aGUgbGFzdCBzZ2MgKi8KLSAgICAgICAgICAgICAgICBTR0NfUkVDRU5UICAg
IC8qIGFsbG9jYXRlZCBzaW5jZSBsYXN0IHNnYyAqLwotCQl9OworZW51bSBzZ2NfdHlwZSB7IFNH
Q19OT1JNQUwsICAgIC8qIG5vdCBhbGxvY2F0ZWQgc2luY2UgdGhlIGxhc3Qgc2djICovCisgICAg
ICAgICAgICAgICAgU0dDX1JFQ0VOVCAgICAgLyogYWxsb2NhdGVkIHNpbmNlIGxhc3Qgc2djICov
CisgCQl9OwogCiAKICNkZWZpbmUgVE1fQkFTRV9UWVBFX1AoaSkgKCgoaW50KSAodG1fdGFibGVb
aV0udG1fdHlwZSkpID09IGkpCkBAIC0xMDMsOSArMTAzLDEwIEBACiAvKiB0aGUgZm9sbG93aW5n
IGFzc3VtZXMgdGhhdCB0aGUgY2hhciBzLG0gZmllbGRzIG9mIGZpcnN0IHdvcmQKICAgIGhhdmUg
c2FtZSBsZW5ndGggYXMgYSBzaG9ydAogICAgKHgtPmQubSB8fCB4LT5kLnMpIHdvdWxkIGJlIGFu
IGVxdWl2YWxlbnQgZm9yIG91ciBwdXJwb3NlcyAqLwotc3RydWN0IHNnY19maXJzdHdvcmQge3No
b3J0IHQ7IHNob3J0IHNtO307Ci0jZGVmaW5lIFNHQ19PUl9NKHgpICAoKChzdHJ1Y3Qgc2djX2Zp
cnN0d29yZCAqKSh4KSktPnNtKSAKLQorLyogc3RydWN0IHNnY19maXJzdHdvcmQge3Nob3J0IHQ7
IHNob3J0IHNtO307ICovCisvKiAjZGVmaW5lIFNHQ19PUl9NKHgpICAoKChzdHJ1Y3Qgc2djX2Zp
cnN0d29yZCAqKSh4KSktPnNtKSAgKi8KKy8qICNkZWZpbmUgU0dDX09SX00oeCkgICgoKG9iamVj
dCl4KS0+ZC5tIHx8ICgob2JqZWN0KXgpLT5kLmYgfHwgKCEoKG9iamVjdCl4KS0+ZC5lICYmIE9O
X1NHQ19QQUdFKHgpKSB8fCAoKChvYmplY3QpeCktPmQuZSAmJiAoKG9iamVjdCl4KS0+ZC5zKSkg
Ki8KKyNkZWZpbmUgU0dDX09SX00oeCkgKGlzX21hcmtlZF9vcl9mcmVlKChvYmplY3QpeCkgfHwg
KGlzX2NvbnMoKG9iamVjdCl4KSA/IE9OX1NHQ19QQUdFKChvYmplY3QpeCkgOiAoKG9iamVjdCl4
KS0+ZC5zKSkKICNpZm5kZWYgU0lHUFJPVFYKICNkZWZpbmUgU0lHUFJPVFYgU0lHU0VHVgogI2Vu
ZGlmCkluZGV4OiBoL3Byb3RvaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2Ns
L2djbC9oL3Byb3RvaXplLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjYuNC4xLjIuMS4yLjEx
LjYuMS42LjEKZGlmZiAtdSAtcjEuMjYuNC4xLjIuMS4yLjExLjYuMS42LjEgcHJvdG9pemUuaAot
LS0gaC9wcm90b2l6ZS5oCTE2IEphbiAyMDA1IDAwOjM2OjIwIC0wMDAwCTEuMjYuNC4xLjIuMS4y
LjExLjYuMS42LjEKKysrIGgvcHJvdG9pemUuaAkzIEp1biAyMDA1IDA0OjA1OjI4IC0wMDAwCkBA
IC0xNzYyLDYgKzE3NjIsMTIgQEAKIGludCAKIGdjbF9pc25vcm1hbF9mbG9hdChmbG9hdCk7CiAK
K3ZvaWQgd2lwZV9zdGFjayAgIChWT0wgdm9pZCAqKSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUp
KTsKK3ZvaWQgY2xlYXJfY19zdGFjayhWT0wgdW5zaWduZWQpIF9fYXR0cmlidXRlX18gKChub2lu
bGluZSkpOworCitsb25nCitvcHRfbWF4cGFnZShzdHJ1Y3QgdHlwZW1hbmFnZXIgKik7CisKICNp
ZmRlZiBTR0MKIHZvaWQKIG1lbXByb3RlY3RfdGVzdF9yZXNldCh2b2lkKTsKQEAgLTE3ODgsMyAr
MTc5NCw3IEBACiB2b2lkCiBncHJvZl9jbGVhbnVwKHZvaWQpOwogI2VuZGlmCisKKwordW5zaWdu
ZWQgbG9uZworaWhhc2hfZXF1YWwxKG9iamVjdCxpbnQpOwpJbmRleDogbHNwL2djbF9hdXRvbG9h
ZC5sc3AKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9sc3AvZ2NsX2F1dG9s
b2FkLmxzcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuNC4xMi4yCmRpZmYgLXUgLXIxLjEu
Mi40LjEyLjIgZ2NsX2F1dG9sb2FkLmxzcAotLS0gbHNwL2djbF9hdXRvbG9hZC5sc3AJMTUgSmFu
IDIwMDUgMjE6MjQ6NTMgLTAwMDAJMS4xLjIuNC4xMi4yCisrKyBsc3AvZ2NsX2F1dG9sb2FkLmxz
cAkzIEp1biAyMDA1IDA0OjA1OjI4IC0wMDAwCkBAIC0yNDUsNiArMjQ1LDMwIEBACiAgICAgICAg
ICAgc3RydWN0dXJlIHN0cmVhbSByYW5kb20tc3RhdGUgcmVhZHRhYmxlIHBhdGhuYW1lCiAgICAg
ICAgICAgY2Z1biBjY2xvc3VyZSBzZnVuIGdmdW4gdmZ1biBhZnVuIGNsb3N1cmUgY2ZkYXRhIHNw
aWNlKSkKIAorKGRlZnVuIGhlYXByZXAgbmlsCisgIAorICAobGV0ICgoZiAobGlzdAorCSAgICAi
d29yZCBzaXplOiAgICAgICAgICAgIH5hIGJpdHN+JSIKKwkgICAgInBhZ2Ugc2l6ZTogICAgICAg
ICAgICB+YSBieXRlc34lIgorCSAgICAiaGVhcCBzdGFydDogICAgICAgICAgIDB4fnh+JSIKKwkg
ICAgImhlYXAgbWF4IDogICAgICAgICAgICAweH54fiUiCisJICAgICJzaGFyZWQgbGlicmFyeSBz
dGFydDogMHh+eH4lIgorCSAgICAiY3N0YWNrIHN0YXJ0OiAgICAgICAgIDB4fnh+JSIKKwkgICAg
ImNzdGFjayBtYXJrIG9mZnNldDogICB+YSBieXRlc34lIgorCSAgICAiY3N0YWNrIGRpcmVjdGlv
bjogICAgIH5bZG93bndhcmR+O3Vwd2FyZH47fl1+JSIKKwkgICAgImNzdGFjayBhbGlnbm1lbnQ6
ICAgICB+YSBieXRlc34lIgorCSAgICAiY3N0YWNrIG1heDogICAgICAgICAgIH5hIGJ5dGVzfiUi
CisJICAgICJpbW1maXggc3RhcnQ6ICAgICAgICAgMHh+eH4lIgorCSAgICAiaW1tZml4IHNpemU6
ICAgICAgICAgIH5hIGZpeG51bXN+JSIpKQorCSh2IChtdWx0aXBsZS12YWx1ZS1saXN0IChzaTo6
aGVhcC1yZXBvcnQpKSkpCisgICAgCisgICAgKGRvICgodiB2IChjZHIgdikpIChmIGYgKGNkciBm
KSkpICgobm90IChjYXIgdikpKQorCShmb3JtYXQgdCAoY2FyIGYpIAorCQkobGV0ICgoeCAoY2Fy
IHYpKSkgCisJCSAgKGNvbmQgKCg+PSB4IDApIHgpIAorCQkJKCg9IHggLTEpIDApIAorCQkJKCgr
IHggKCogMiAoMSsgbW9zdC1wb3NpdGl2ZS1maXhudW0pKSkpKSkpKSkpCisKIChkZWZ1biByb29t
ICgmb3B0aW9uYWwgeCkKICAgKGxldCAoKGwgKG11bHRpcGxlLXZhbHVlLWxpc3QgKHNpOnJvb20t
cmVwb3J0KSkpCiAgICAgICAgIG1heHBhZ2UgbGVmdHBhZ2UgbmNicGFnZSBtYXhjYnBhZ2UgbmNi
IGNiZ2JjY291bnQgbnBhZ2UKQEAgLTI1Nyw3ICsyODEsNyBAQAogICAgICAgICAgIHJidXNlZCAo
bnRoIDcgbCkgcmJmcmVlIChudGggOCBsKSBucmJwYWdlIChudGggOSBsKQogICAgICAgICAgIHJi
Z2JjY291bnQgKG50aCAxMCBsKQogICAgICAgICAgIGwgKG50aGNkciAxMSBsKSkKLSAgICAoZG8g
KChsIGwgKG50aGNkciA1IGwpKQorICAgIChkbyAoKGwgbCAobnRoY2RyIDYgbCkpCiAgICAgICAg
ICAodGwgKnR5cGUtbGlzdCogKGNkciB0bCkpCiAgICAgICAgICAoaSAwICgrIGkgKGlmIChudGgg
MiBsKSAobnRoIDIgbCkgMCkpKSkKICAgICAgICAgKChudWxsIGwpIChzZXRxIG5wYWdlIGkpKQpA
QCAtMjY2LDkgKzI5MCwxMCBAQAogICAgICAgICAgICAgKG5mcmVlIChudGggMSBsKSkKICAgICAg
ICAgICAgIChucGFnZSAobnRoIDIgbCkpCiAgICAgICAgICAgICAobWF4cGFnZSAobnRoIDMgbCkp
Ci0gICAgICAgICAgICAoZ2JjY291bnQgKG50aCA0IGwpKSkKKyAgICAgICAgICAgIChnYmNjb3Vu
dCAobnRoIDQgbCkpCisgICAgICAgICAgICAod3MgKG50aCA1IGwpKSkKICAgICAgICAgKGlmIG51
c2VkCi0gICAgICAgICAgICAocHVzaCAobGlzdCB0eXBlbmFtZSBucGFnZSBtYXhwYWdlCisgICAg
ICAgICAgICAocHVzaCAobGlzdCB0eXBlbmFtZSB3cyBucGFnZSBtYXhwYWdlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAoaWYgKHplcm9wICgrIG51c2VkIG5mcmVlKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC8gbnVzZWQgMC4w
MSAoKyBudXNlZCBuZnJlZSkpKQpAQCAtMjgwLDggKzMwNSw5IEBACiAgICAgICAgICAgICAgICAg
ICAgICAocHVzaCAobGlzdCAobnRoIG5mcmVlICp0eXBlLWxpc3QqKSB0eXBlbmFtZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmstYWxpc3QpKSkpKSkKICAgICAodGVycHJpKQorICAg
IChmb3JtYXQgdCAifkBbfjJBfl1+OEBBL35BfjE0VH42QEElfkBbfjhAQX5dfjMwVH57fkF+XiB+
fX4lfiUiICJXUyIgIlVQIiAiTVAiICJGSSIgIkdDIiAnKCJUWVBFUyIpKQogICAgIChkb2xpc3Qg
KGluZm8gKHJldmVyc2UgaW5mby1saXN0KSkKLSAgICAgIChhcHBseSAjJ2Zvcm1hdCB0ICJ+NkQv
fkR+MTJUfjYsMUYlfkBbfjhEfl1+MjhUfnt+QX5eIH59IgorICAgICAgKGFwcGx5ICMnZm9ybWF0
IHQgIn5AW34yRH5dfjhEL35EfjE0VH42LDFGJX5AW344RH5dfjMwVH57fkF+XiB+fSIKICAgICAg
ICAgICAgICAoYXBwZW5kIChjZHIgaW5mbykKICAgICAgICAgICAgICAgICAgICAgIChpZiAgKGFz
c29jIChjYXIgaW5mbykgbGluay1hbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxp
c3QgKGFzc29jIChjYXIgaW5mbykgbGluay1hbGlzdCkpCkBAIC0yODksMTAgKzMxNSwxMCBAQAog
ICAgICAgKHRlcnByaSkKICAgICAgICkKICAgICAodGVycHJpKQotICAgIChmb3JtYXQgdCAifjZE
L35EfjE5VH5AW344RH5dfjI4VGNvbnRpZ3VvdXMgKH5EIGJsb2Nrcyl+JSIKKyAgICAoZm9ybWF0
IHQgIn4xMEQvfkR+MTlUfkBbfjhEfl1+MzBUY29udGlndW91cyAofkQgYmxvY2tzKX4lIgogICAg
ICAgICAgICAgbmNicGFnZSBtYXhjYnBhZ2UgKGlmICh6ZXJvcCBjYmdiY2NvdW50KSBuaWwgY2Jn
YmNjb3VudCkgbmNiKQotICAgIChmb3JtYXQgdCAifjdUfkR+MjhUaG9sZX4lIiBob2xlcGFnZSkK
LSAgICAoZm9ybWF0IHQgIn43VH5EfjEyVH42LDFGJX5AW344RH5dfjI4VHJlbG9jYXRhYmxlfiV+
JSIKKyAgICAoZm9ybWF0IHQgIn4xMVR+RH4zMFRob2xlfiUiIGhvbGVwYWdlKQorICAgIChmb3Jt
YXQgdCAifjExVH5EfjE0VH42LDFGJX5AW344RH5dfjMwVHJlbG9jYXRhYmxlfiV+JSIKICAgICAg
ICAgICAgIG5yYnBhZ2UgKC8gcmJ1c2VkIDAuMDEgKCsgcmJ1c2VkIHJiZnJlZSkpCiAgICAgICAg
ICAgICAoaWYgKHplcm9wIHJiZ2JjY291bnQpIG5pbCByYmdiY2NvdW50KSkKICAgICAoZm9ybWF0
IHQgIn4xMEQgcGFnZXMgZm9yIGNlbGxzfiUiIG5wYWdlKQpAQCAtMzAyLDggKzMyOCwxMSBAQAog
CSAgICAoLSBtYXhwYWdlICgrIG5wYWdlIG5jYnBhZ2UgaG9sZXBhZ2UgbnJicGFnZSBsZWZ0cGFn
ZSkpKQogICAgIChmb3JtYXQgdCAifjEwRCBtYXhpbXVtIHBhZ2VzfiUiIG1heHBhZ2UpCiAgICAg
KHZhbHVlcykKLSAgICApKQotCisgICAgKQorICAoZm9ybWF0IHQgIn4lfiUiKQorICAoZm9ybWF0
IHQgIktleTp+JX4lV1M6IHdvcmRzIHBlciBzdHJ1Y3R+JVVQOiBhbGxvY2F0ZWQgcGFnZXN+JU1Q
OiBtYXhpbXVtIHBhZ2VzfiVGSTogZnJhY3Rpb24gb2YgY2VsbHMgaW4gdXNlIG9uIGFsbG9jYXRl
ZCBwYWdlc34lR0M6IG51bWJlciBvZiBnYyB0cmlnZ2VycyBhbGxvY2F0aW5nIHRoaXMgdHlwZX4l
fiUiKQorICAoaGVhcHJlcCkKKyAgKHZhbHVlcykpCiAKIDs7OyBDIEludGVyZmFjZS4KIApAQCAt
NDIxLDQgKzQ1MCw0IEBACiAKIChkZWZ2YXIgKmxpYi1kaXJlY3RvcnkqIChuYW1lc3RyaW5nIChw
cm9iZS1maWxlICIuLi8iKSkpCiAKLShpbXBvcnQgJygqbGliLWRpcmVjdG9yeSogKmxvYWQtcGF0
aCogKnN5c3RlbS1kaXJlY3RvcnkqKSAnc2k6OnVzZXIpIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKKyhpbXBvcnQgJygqbGliLWRpcmVjdG9yeSogKmxvYWQtcGF0aCogKnN5c3RlbS1kaXJl
Y3RvcnkqKSAnc2k6OnVzZXIpIApJbmRleDogbHNwL2djbF90b3AubHNwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnNyb290L2djbC9nY2wvbHNwL2djbF90b3AubHNwLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjEuMi4yCmRpZmYgLXUgLXIxLjEuMi4yIGdjbF90b3AubHNwCi0tLSBsc3AvZ2NsX3Rv
cC5sc3AJMTQgRmViIDIwMDQgMTc6Mzg6NDUgLTAwMDAJMS4xLjIuMgorKysgbHNwL2djbF90b3Au
bHNwCTMgSnVuIDIwMDUgMDQ6MDU6MzEgLTAwMDAKQEAgLTExMyw2ICsxMTMsNyBAQAogICAgICAg
ICAgICAgICAoc2V0cSAtIChsb2NhbGx5IChkZWNsYXJlIChub3RpbmxpbmUgcmVhZCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWQgKnN0YW5kYXJkLWlucHV0KiBuaWwgKnRv
cC1lb2YqKSkpCiAgICAgICAgICAgICAgICh3aGVuIChlcSAtICp0b3AtZW9mKikgKGJ5ZSkpCis7
ICAgICAgICAgICAgICAoc2k6OmNsZWFyLWMtc3RhY2sgNDA5NikKICAgICAgICAgICAgICAgKGxl
dCAoKHZhbHVlcyAobXVsdGlwbGUtdmFsdWUtbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAobG9jYWxseSAoZGVjbGFyZSAobm90aW5saW5lIGV2YWwpKSAoZXZhbCAtKSkpKSkKICAg
ICAgICAgICAgICAgICAoc2V0cSAvLy8gLy8gLy8gLyAvIHZhbHVlcyAqKiogKiogKiogKiAqIChj
YXIgLykpCkluZGV4OiBvL2FsbG9jLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2Ns
L2djbC9vL2FsbG9jLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTkuNC4xLjIuMTcuMi4xLjQu
MS4yLjIuNC4yCmRpZmYgLXUgLXIxLjE5LjQuMS4yLjE3LjIuMS40LjEuMi4yLjQuMiBhbGxvYy5j
Ci0tLSBvL2FsbG9jLmMJMTYgSmFuIDIwMDUgMDI6Mjk6MDkgLTAwMDAJMS4xOS40LjEuMi4xNy4y
LjEuNC4xLjIuMi40LjIKKysrIG8vYWxsb2MuYwkzIEp1biAyMDA1IDA0OjA1OjMxIC0wMDAwCkBA
IC04NCw2ICs4NCw3IEBACiBpbnQgcmVzZXJ2ZV9wYWdlc19mb3Jfc2lnbmFsX2hhbmRsZXIgPTMw
OwogaW50IGhvbGVfb3ZlcnJ1bj0wOwogCisKIC8qIElmICAobiA+PSAwICkgcmV0dXJuIHBvaW50
ZXIgdG8gbiBwYWdlcyBzdGFydGluZyBhdCBoZWFwIGVuZCwKICAgIFRoZXNlIG11c3QgY29tZSBm
cm9tIHRoZSBob2xlLCBzbyBpZiB0aGF0IGlzIGV4aGF1c3RlZCB5b3UgaGF2ZQogICAgdG8gZ2Mg
YW5kIG1vdmUgdGhlIGhvbGUuCkBAIC0xMTgsNyArMTE5LDkgQEAKIFRyeSB0byBhbGxvY2F0ZSBt
b3JlIHNwYWNlIHRvIHNhdmUgZm9yIGFsbG9jYXRpb24gZHVyaW5nIHNpZ25hbHM6IFwKIGVnIHRv
IGFkZCAyMCBtb3JlIGRvIChzaTo6c2V0LWhvbGUtc2l6ZSAlbGQgJWQpXG4uLi5zdGFydCBvdmVy
ICIsIG5ld19ob2xlcGFnZSwgMjArIHJlc2VydmVfcGFnZXNfZm9yX3NpZ25hbF9oYW5kbGVyKTsg
ZmZsdXNoKHN0ZGVycik7IGV4aXQoMSk7fQogCisJCQlob2xlX292ZXJydW49MTsKIAkJCUdCQyh0
X3JlbG9jYXRhYmxlKTsKKwkJCWhvbGVfb3ZlcnJ1bj0wOwogI2lmZGVmIFNHQwogCQkJaWYgKGlu
X3NnYykKIAkJCSAge2hvbGVfb3ZlcnJ1bj0xO3NnY19zdGFydCgpO2hvbGVfb3ZlcnJ1bj0wOwpA
QCAtMTM0LDYgKzEzNywxMSBAQAogCQkgIC8qIGNhbiBoYXBwZW4gd2hlbiBtYWxsb2NzIG9jY3Vy
IGJlZm9yZSByZWwgYmxvY2sgc2V0IHVwLi4qLwogCQkgIHsgc2JyayhQQUdFU0laRSpuKSA7CiAJ
CSAgICBjb3JlX2VuZCArPSBQQUdFU0laRSpuOworCQkgICAgeworCQkgICAgICB1bnNpZ25lZCBs
b25nIG9sZF9uZXdfaG9sZXBhZ2U9bmV3X2hvbGVwYWdlOworCQkgICAgICBuZXdfaG9sZXBhZ2U9
Q09SRV9QQUdFUy9IT0xFRElWOworCQkgICAgICBpZiAoYXZhaWxhYmxlX3BhZ2VzPDEpIG5ld19o
b2xlcGFnZT1vbGRfbmV3X2hvbGVwYWdlOworCQkgICAgfQogCQkgIH0KIAkJaGVhcF9lbmQgKz0g
UEFHRVNJWkUqbjsKIAkJcmV0dXJuKGUpOwpAQCAtMTU0LDEzICsxNjIsMTkgQEAKIAkgIG1ha2Vf
d3JpdGFibGUocGFnZShjb3JlX2VuZCkscGFnZShjb3JlX2VuZCkrbi1tKTsKICNlbmRpZgkKIAlj
b3JlX2VuZCArPSBQQUdFU0laRSoobiAtIG0pOworCXsKKwkgIHVuc2lnbmVkIGxvbmcgb2xkX25l
d19ob2xlcGFnZT1uZXdfaG9sZXBhZ2U7CisJICBuZXdfaG9sZXBhZ2U9Q09SRV9QQUdFUy9IT0xF
RElWOworCSAgaWYgKGF2YWlsYWJsZV9wYWdlczwxKSBuZXdfaG9sZXBhZ2U9b2xkX25ld19ob2xl
cGFnZTsKKwl9CiAJcmV0dXJuKGUpO30KIH0KIAogdm9pZAogYWRkX3BhZ2VfdG9fZnJlZWxpc3Qo
Y2hhciAqcCwgc3RydWN0IHR5cGVtYW5hZ2VyICp0bSkKIHtzaG9ydCB0LHNpemU7Ci0gbG9uZyBp
PXRtLT50bV9ucHBhZ2UsZnc7CisgbG9uZyBpPXRtLT50bV9ucHBhZ2U7Cisgd29yZCBmdzsKICB1
bnNpZ25lZCBsb25nIG5wPXBhZ2UocCk7CiAgb2JqZWN0IHgsZjsKICBpZiAobnA+PU1BWFBBR0Up
CkBAIC0xNzksMTMgKzE5MywxNCBAQAogIHNpemU9dG0tPnRtX3NpemU7CiAgZj10bS0+dG1fZnJl
ZTsKICB4PSAob2JqZWN0KXA7Ci0geC0+ZC50PXQ7Ci0geC0+ZC5tPUZSRUU7CisvKiAgeC0+ZC50
PXQ7ICovCisgc2V0X3R5cGVfb2YoeCx0KTsKKyBtYWtlX2ZyZWUoeCk7CiAjaWZkZWYgU0dDCiAg
aWYgKHNnY19lbmFibGVkICYmIHRtLT50bV9zZ2MpCi0gICB7eC0+ZC5zPVNHQ19SRUNFTlQ7Cisg
ICB7aWYgKHR5cGVfb2YoeCkhPXRfY29ucykgeC0+ZC5zPVNHQ19SRUNFTlQ7IC8qRklYTUUsIGNh
biBzZ2MgbWFyayBjb25zIG9uIDY0Yml0Ki8KICAgICBzZ2NfdHlwZV9tYXBbbnBdID0gKFNHQ19Q
QUdFX0ZMQUcgfCBTR0NfVEVNUF9XUklUQUJMRSk7fQotIGVsc2UgeC0+ZC5zID0gU0dDX05PUk1B
TDsKKyBlbHNlIHtpZiAodHlwZV9vZih4KSE9dF9jb25zKSB4LT5kLnMgPSBTR0NfTk9STUFMO30K
ICAKICAvKiBhcnJheSBoZWFkZXJzIG11c3QgYmUgYWx3YXlzIHdyaXRhYmxlLCBzaW5jZSBhIHdy
aXRlIHRvIHRoZQogICAgIGJvZHkgZG9lcyBub3QgdG91Y2ggdGhlIGhlYWRlci4gICBJdCBtYXkg
YmUgZGVzaXJhYmxlIGlmIHRoZXJlCkBAIC0xOTYsOSArMjExLDkgQEAKICAgIHNnY190eXBlX21h
cFtucF0gfD0gU0dDX1BFUk1fV1JJVEFCTEU7CiAgICAKICNlbmRpZiAKLSBmdz0gKihpbnQgKil4
OworIGZ3PSood29yZCAqKXg7CiAgd2hpbGUgKC0taSA+PSAwKQotICAgeyAqKGludCAqKXg9Znc7
CisgICB7ICood29yZCAqKXg9Znc7CiAgICAgIFNFVF9MSU5LKHgsZik7CiAgICAgIGY9eDsKICAg
ICAgeD0gKG9iamVjdCkgKChjaGFyICopeCArIHNpemUpOwpAQCAtMjgxLDcgKzI5Niw3IEBACiAj
ZGVmaW5lIE9QVElNSVpFX01BWF9QQUdFUyAoc1NBb3B0aW1pemVfbWF4aW11bV9wYWdlc0EgPT0w
IHx8IHNTQW9wdGltaXplX21heGltdW1fcGFnZXNBLT5zLnNfZGJpbmQgIT1zTG5pbCkgCiBERUZW
QVIoIipOT1RJRlktT1BUSU1JWkUtTUFYSU1VTS1QQUdFUyoiLHNTQW5vdGlmeV9vcHRpbWl6ZV9t
YXhpbXVtX3BhZ2VzQSxTSSxzTG5pbCwiIik7CiAjZGVmaW5lIE1NQVhfUEcoYV8pICgoYV8pLT50
bV90eXBlID09IHRfcmVsb2NhdGFibGUgPyAoYV8pLT50bV9ucGFnZSA6IChhXyktPnRtX21heHBh
Z2UpCi1zdGF0aWMgbG9uZworbG9uZwogb3B0X21heHBhZ2Uoc3RydWN0IHR5cGVtYW5hZ2VyICpt
eV90bSkgewogCiAgIGRvdWJsZSB4PTAuMCx5PTAuMCx6LHI7CkBAIC0zMTAsNiArMzI1LDEwIEBA
CiAgIGlmICh6PD1tbWF4X3BhZ2UpCiAgICAgcmV0dXJuIDA7CiAKKyAgLypGSVhNRTogY2VudHJh
bGl6ZSB3aXRoIGF2YWlsYWJsZSBwYWdlcyAqLworICBpZiAocmVhbF9tYXhwYWdlIC0geSAtICh6
K21yby1tbWF4X3BhZ2UpIC0gbmV3X2hvbGVwYWdlIC0gbnJicGFnZSAtIHJlYWxfbWF4cGFnZS8z
MiAtIHJlYWxfbWF4cGFnZS8xMDA8PTApCisgICAgcmV0dXJuIDA7CisKICAgcj0oKHgtbXlfdG0t
PnRtX2FkamdiY2NudCkrIG15X3RtLT50bV9hZGpnYmNjbnQqbW1heF9wYWdlL3opKih5LW1tYXhf
cGFnZSt6KTsKICAgci89eCp5OwogICBpZiAoc1NBbm90aWZ5X29wdGltaXplX21heGltdW1fcGFn
ZXNBLT5zLnNfZGJpbmQhPXNMbmlsKQpAQCAtMzM0LDYgKzM1Myw3IEBACiAJIHN0cnVjdCB0eXBl
bWFuYWdlciAqdG07CiAJIGNoYXIgKnA7CiAJIGludCBtdXN0X2hhdmVfbW9yZV9wYWdlczsKKwkg
dW5zaWduZWQgbG9uZyBpOwogCiBPTkNFX01PUkU6CiAJdG0gPSB0bV9vZih0KTsKQEAgLTM1OSw4
ICszNzksMTAgQEAKIAl0bS0+dG1fZnJlZSA9IE9CSl9MSU5LKG9iaik7CiAJLS0odG0tPnRtX25m
cmVlKTsKIAkodG0tPnRtX251c2VkKSsrOwotCW9iai0+ZC50ID0gKHNob3J0KXQ7Ci0Jb2JqLT5k
Lm0gPSBGQUxTRTsKKy8qIAlvYmotPmQudCA9IChzaG9ydCl0OyAqLworCXNldF90eXBlX29mKG9i
aix0KTsKKwltYWtlX3VuZnJlZShvYmopOworCWlmICgoKHVuc2lnbmVkIGxvbmcpb2JqKSYweDcp
IGVycm9yKCJmb29cbiIpOwogCXJldHVybihvYmopOwogI2lmZGVmIFNHQwogI2RlZmluZSBUT1RB
TF9USElTX1RZUEUodG0pIFwKQEAgLTM3MCwxMyArMzkyLDE1IEBACiAJKHRtLT50bV9ucHBhZ2Ug
KiB0bS0+dG1fbnBhZ2UpCiAjZW5kaWYKIENBTExfR0JDOgorCWk9dG0tPnRtX21heHBhZ2U7CiAJ
R0JDKHRtLT50bV90eXBlKTsKLQltdXN0X2hhdmVfbW9yZV9wYWdlcyA9ICh0bS0+dG1fbmZyZWUg
PT0gMCB8fAotCQkJICAoKGZsb2F0KXRtLT50bV9uZnJlZSkgIDwgICAoUEVSQ0VOVF9GUkVFKHRt
KSAqIFRPVEFMX1RISVNfVFlQRSh0bSkpKSA/IDEgOiAwOworCW11c3RfaGF2ZV9tb3JlX3BhZ2Vz
ID0gKGk9PXRtLT50bV9tYXhwYWdlICYmIAorCQkJCSh0bS0+dG1fbmZyZWUgPT0gMCB8fAorCQkJ
CSAoKGZsb2F0KXRtLT50bV9uZnJlZSkgIDwgICAoUEVSQ0VOVF9GUkVFKHRtKSAqIFRPVEFMX1RI
SVNfVFlQRSh0bSkpKSkgPyAxIDogMDsKIAlpZiAobXVzdF9oYXZlX21vcmVfcGFnZXMgJiYgIUlH
Tk9SRV9NQVhfUEFHRVMpCiAJICBnb3RvIEVYSEFVU1RFRDsKIAlpZiAoSUdOT1JFX01BWF9QQUdF
UykgewotCSAgaWYgKCghT1BUSU1JWkVfTUFYX1BBR0VTIHx8ICFvcHRfbWF4cGFnZSh0bSkpICYm
IG11c3RfaGF2ZV9tb3JlX3BhZ2VzKSB7CisJICBpZiAoLyogKCFPUFRJTUlaRV9NQVhfUEFHRVMg
fHwgIW9wdF9tYXhwYWdlKHRtKSkgJiYgICovbXVzdF9oYXZlX21vcmVfcGFnZXMpIHsKIAkgICAg
IGludCBqOwogCSAgICAgCiAJICAgICB0bS0+dG1fbWF4cGFnZT1ncm93X2xpbmVhcigoaj10bS0+
dG1fbWF4cGFnZSksdG0tPnRtX2dyb3d0aF9wZXJjZW50LApAQCAtNDEwLDYgKzQzNCw3IEBACiAJ
IGNoYXIgKnA7CiAJIHN0cnVjdCB0eXBlbWFuYWdlciAqdG09KCZ0bV90YWJsZVsoaW50KXRfY29u
c10pOwogCSBpbnQgbXVzdF9oYXZlX21vcmVfcGFnZXM7CisJIHVuc2lnbmVkIGxvbmcgaTsKIAog
T05DRV9NT1JFOgogICAgICAgICBDSEVDS19JTlRFUlJVUFQ7CkBAIC00MzIsMjAgKzQ1NywyNCBA
QAogCXRtLT50bV9mcmVlID0gT0JKX0xJTksob2JqKTsKIAktLSh0bS0+dG1fbmZyZWUpOwogCSh0
bS0+dG1fbnVzZWQpKys7Ci0Jb2JqLT5jLnQgPSAoc2hvcnQpdF9jb25zOwotCW9iai0+Yy5tID0g
RkFMU0U7CisvKiAJb2JqLT5jLnQgPSAoc2hvcnQpdF9jb25zOyAqLworCXNldF90eXBlX29mKG9i
aix0X2NvbnMpOworCW1ha2VfdW5mcmVlKG9iaik7CiAJb2JqLT5jLmNfY2FyID0gYTsKIAlvYmot
PmMuY19jZHIgPSBkOworCWlmICgoKHVuc2lnbmVkIGxvbmcpb2JqKSYweDcpIGVycm9yKCJmb29c
biIpOwogCXJldHVybihvYmopOwogCiBDQUxMX0dCQzoKKwlpPXRtLT50bV9tYXhwYWdlOwogCUdC
Qyh0X2NvbnMpOwotCW11c3RfaGF2ZV9tb3JlX3BhZ2VzPSh0bS0+dG1fbmZyZWUgPT0gMCB8fAot
CQkJICAgICAoZmxvYXQpdG0tPnRtX25mcmVlICAgPCAgUEVSQ0VOVF9GUkVFKHRtKSAqIFRPVEFM
X1RISVNfVFlQRSh0bSkpID8gMSA6IDA7CisJbXVzdF9oYXZlX21vcmVfcGFnZXM9KGk9PXRtLT50
bV9tYXhwYWdlICYmCisJCQkgICAgICAodG0tPnRtX25mcmVlID09IDAgfHwKKwkJCSAgICAgICAo
ZmxvYXQpdG0tPnRtX25mcmVlICAgPCAgUEVSQ0VOVF9GUkVFKHRtKSAqIFRPVEFMX1RISVNfVFlQ
RSh0bSkpKSA/IDEgOiAwOwogCWlmIChtdXN0X2hhdmVfbW9yZV9wYWdlcyAmJiAhSUdOT1JFX01B
WF9QQUdFUykKIAkgIGdvdG8gRVhIQVVTVEVEOwogCWlmIChJR05PUkVfTUFYX1BBR0VTKSB7Ci0J
ICBpZiAoKCFPUFRJTUlaRV9NQVhfUEFHRVMgfHwgIW9wdF9tYXhwYWdlKHRtKSkgJiYgbXVzdF9o
YXZlX21vcmVfcGFnZXMpIHsKKwkgIGlmICgvKiAoIU9QVElNSVpFX01BWF9QQUdFUyB8fCAhb3B0
X21heHBhZ2UodG0pKSAmJiAgKi9tdXN0X2hhdmVfbW9yZV9wYWdlcykgewogCSAgICAgaW50IGo7
CiAJICAgICAKIAkgICAgIHRtLT50bV9tYXhwYWdlPWdyb3dfbGluZWFyKChqPXRtLT50bV9tYXhw
YWdlKSx0bS0+dG1fZ3Jvd3RoX3BlcmNlbnQsCkBAIC00NzQsMTAgKzUwMywxMiBAQAogCiBvYmpl
Y3Qgb25fc3RhY2tfY29ucyhvYmplY3QgeCwgb2JqZWN0IHkpCiB7b2JqZWN0IHAgPSAob2JqZWN0
KSBhbGxvY2FfdmFsOwotIHAtPmMudD0gKHNob3J0KXRfY29uczsKLSBwLT5jLm09RkFMU0U7Cisv
KiAgcC0+Yy50PSAoc2hvcnQpdF9jb25zOyAqLworIHNldF90eXBlX29mKHAsdF9jb25zKTsKKyBt
YWtlX3VuZnJlZShwKTsKICBwLT5jLmNfY2FyPXg7CiAgcC0+Yy5jX2Nkcj15OworIGlmICgoKHVu
c2lnbmVkIGxvbmcpcCkmMHg3KSBlcnJvcigiZm9vXG4iKTsKICByZXR1cm4gcDsKIH0KIApAQCAt
NTc5LDcgKzYxMCw3IEBACiAJCSAgZ290byBFWEhBVVNURUQ7CiAJCWlmIChJR05PUkVfTUFYX1BB
R0VTKSB7CiAJCSAgc3RydWN0IHR5cGVtYW5hZ2VyICp0bSA9ICZ0bV90YWJsZVsoaW50KXRfY29u
dGlndW91c107Ci0JCSAgaWYgKCghT1BUSU1JWkVfTUFYX1BBR0VTIHx8ICFvcHRfbWF4cGFnZSh0
bSkpICYmIGcpIHsKKwkJICBpZiAoLyogKCFPUFRJTUlaRV9NQVhfUEFHRVMgfHwgIW9wdF9tYXhw
YWdlKHRtKSkgJiYgICovZyAmJiBqPT1tYXhjYnBhZ2UpIHsKIAkJICAgIG1heGNicGFnZT1ncm93
X2xpbmVhcihtYXhjYnBhZ2UsdG0tPnRtX2dyb3d0aF9wZXJjZW50LAogCQkJCQkgIHRtLT50bV9t
aW5fZ3JvdywgdG0tPnRtX21heF9ncm93KTsKIAkJICAgIHRtLT50bV9hZGpnYmNjbnQqPShkb3Vi
bGUpai9tYXhjYnBhZ2U7CkBAIC03MDgsNyArNzM5LDEwIEBACiBPTkNFX01PUkU6CiAgICAgICAg
IENIRUNLX0lOVEVSUlVQVDsKIAotCWlmIChyYl9saW1pdCAtIHJiX3BvaW50ZXIgPCBuKSB7CisJ
aWYgKHJiX2xpbWl0IC0gcmJfcG9pbnRlciA8IG4gfHwgCisJICAgIHJiX2xpbWl0IC0gcmJfcG9p
bnRlciAtIG4gPCByYl9wb2ludGVyICsgbiAtIHJiX3N0YXJ0IHx8IAorCSAgICAoIWcgJiYgam1w
X2dtcD4xKSkgeworCSAgaT1wYWdlKHJiX2VuZCktcGFnZShoZWFwX2VuZCktaG9sZXBhZ2U7CiAJ
ICBpZiAoIWcgJiYgaW5fc2lnbmFsX2hhbmRsZXIgPT0gMCkgewogCSAgICAvKkdNUF9XUkFQUEVS
UzogIFBsZWFzZSBzZWUgY29tbWVudHMgaW4gZ21wX3dyYXBwZXJzLmggMjAwNDA4MTUgQ00qLwog
CSAgICBzd2l0Y2ggKGptcF9nbXApIHsKQEAgLTcyNSwxNCArNzU5LDE0IEBACiAJICAgICAgYnJl
YWs7CiAJICAgIH0KIAkgIH0KLQkgIG11c3RfaGF2ZV9tb3JlX3BhZ2VzPSgoZmxvYXQpKHJiX2xp
bWl0IC0gcmJfcG9pbnRlcikgPCAKLQkJCQlQRVJDRU5UX0ZSRUUodG1fb2YodF9yZWxvY2F0YWJs
ZSkpICogKGZsb2F0KShyYl9saW1pdCAtIHJiX3N0YXJ0KSkgPyAxIDogMDsKKwkgIG11c3RfaGF2
ZV9tb3JlX3BhZ2VzPShpPT1ucmJwYWdlICYmCisJCQkJKChmbG9hdCkocmJfbGltaXQgLSByYl9w
b2ludGVyKSA8IAorCQkJCSBQRVJDRU5UX0ZSRUUodG1fb2YodF9yZWxvY2F0YWJsZSkpICogKGZs
b2F0KShyYl9saW1pdCAtIHJiX3N0YXJ0KSkpID8gMSA6IDA7CiAJICBpZiAoKG11c3RfaGF2ZV9t
b3JlX3BhZ2VzIHx8IGcpICYmICFJR05PUkVfTUFYX1BBR0VTKQogCSAgICBnb3RvIEVYSEFVU1RF
RDsKLQkgIGk9bnJicGFnZTsKIAkgIGlmIChJR05PUkVfTUFYX1BBR0VTKSB7CiAJICAgIHN0cnVj
dCB0eXBlbWFuYWdlciAqdG0gPSAmdG1fdGFibGVbKGludCl0X3JlbG9jYXRhYmxlXTsKLQkgICAg
aWYgKCghT1BUSU1JWkVfTUFYX1BBR0VTICB8fCAhb3B0X21heHBhZ2UodG0pKSAmJiAoZyB8fCBt
dXN0X2hhdmVfbW9yZV9wYWdlcykpIHsKKwkgICAgaWYgKC8qICghT1BUSU1JWkVfTUFYX1BBR0VT
ICB8fCAhb3B0X21heHBhZ2UodG0pKSAmJiAgKi8oZyB8fCBtdXN0X2hhdmVfbW9yZV9wYWdlcykp
IHsKIAkgICAgICBucmJwYWdlPWdyb3dfbGluZWFyKG5yYnBhZ2UsdG0tPnRtX2dyb3d0aF9wZXJj
ZW50LAogCQkJCSAgdG0tPnRtX21pbl9ncm93LCB0bS0+dG1fbWF4X2dyb3cpOwogCSAgICAgIHRt
LT50bV9hZGpnYmNjbnQqPShkb3VibGUpaS9ucmJwYWdlOwpAQCAtODk4LDE1ICs5MzIsNiBAQAog
ICB9CiAjZW5kaWYJCiAgIAotICBob2xlcGFnZSA9IElOSVRfSE9MRVBBR0U7Ci0jaWZkZWYgR0NM
X0dQUk9GCi0gIGlmIChob2xlcGFnZTx0ZXh0cGFnZSkKLSAgICAgaG9sZXBhZ2U9dGV4dHBhZ2U7
Ci0jZW5kaWYKLQotICBuZXdfaG9sZXBhZ2UgPSBIT0xFUEFHRTsKLSAgbnJicGFnZSA9IElOSVRf
TlJCUEFHRTsKLSAgCiAgIHNldF9tYXhwYWdlKCk7CiAgIAogI2lmZGVmIF9fbGludXhfXwpAQCAt
OTI5LDYgKzk1NCwxNSBAQAogICBJTklUX0FMTE9DOwogI2VuZGlmICAKICAgCisgIGhvbGVwYWdl
ID0gQ09SRV9QQUdFUy9JTklUX0hPTEVESVY7CisjaWZkZWYgR0NMX0dQUk9GCisgIGlmIChob2xl
cGFnZTx0ZXh0cGFnZSkKKyAgICAgaG9sZXBhZ2U9dGV4dHBhZ2U7CisjZW5kaWYKKworICBuZXdf
aG9sZXBhZ2UgPSBDT1JFX1BBR0VTL0hPTEVESVY7CisgIG5yYnBhZ2UgPSBDT1JFX1BBR0VTL0lO
SVRfTlJCRElWOworICAKICAgYWxsb2NfcGFnZSgtKGhvbGVwYWdlICsgbnJicGFnZSkpOwogICAK
ICAgcmJfc3RhcnQgPSByYl9wb2ludGVyID0gaGVhcF9lbmQgKyBQQUdFU0laRSpob2xlcGFnZTsK
QEAgLTk0Nyw5ICs5ODEsOSBAQAogICAgICBHYXZlIGVhY2ggcGFnZSB0eXBlIGF0IGxlYXN0IHNv
bWUgc2djIHBhZ2VzIGJ5IGRlZmF1bHQuICBPZgogICAgICBjb3Vyc2UgY2hhbmdlYWJsZSBieSBh
bGxvY2F0ZS1zZ2MuICBDTSAyMDAzMDgyNyAqLwogCisgIGluaXRfdG0odF9jb25zLCAiLkNPTlMi
LCBzaXplb2Yoc3RydWN0IGNvbnMpLCA2NTUzNiAsNTAsMCApOwogICBpbml0X3RtKHRfZml4bnVt
LCAiTkZJWE5VTSIsCiAJICBzaXplb2Yoc3RydWN0IGZpeG51bV9zdHJ1Y3QpLCA4MTkyLDIwLDAp
OwotICBpbml0X3RtKHRfY29ucywgIi5DT05TIiwgc2l6ZW9mKHN0cnVjdCBjb25zKSwgNjU1MzYg
LDUwLDAgKTsKICAgaW5pdF90bSh0X3N0cnVjdHVyZSwgIlNTVFJVQ1RVUkUiLCBzaXplb2Yoc3Ry
dWN0IHN0cnVjdHVyZSksIDU0NjEsMSwwICk7CiAgIGluaXRfdG0odF9jZnVuLCAiZkNGVU4iLCBz
aXplb2Yoc3RydWN0IGNmdW4pLCA0MDk2LDEsMCAgKTsKICAgaW5pdF90bSh0X3NmdW4sICJnU0ZV
TiIsIHNpemVvZihzdHJ1Y3Qgc2Z1biksNDA5LDEsMCApOwpAQCAtMTU0NywyNSArMTU4MSwyNiBA
QAogI2VuZGlmICAKICAgICAgIAogewotCW9iamVjdCAqcDsKKwlvYmplY3QgKnAscHA7CiAJaWYg
KHB0ciA9PSAwKQogCSAgcmV0dXJuOwogI2lmZGVmIEJBQllfTUFMTE9DX1NJWkUKIAlpZiAoKHZv
aWQgKilwdHIgPCAodm9pZCAqKSAmYmFieV9tYWxsb2NfZGF0YVtzaXplb2YoYmFieV9tYWxsb2Nf
ZGF0YSldKQogCSAgcmV0dXJuOwogI2VuZGlmCQotCWZvciAocCA9ICZtYWxsb2NfbGlzdDsgKnAg
JiYgIWVuZHAoKnApOyAgcCA9ICYoKCpwKS0+Yy5jX2NkcikpCi0JCWlmICgoKnApLT5jLmNfY2Fy
LT5zdC5zdF9zZWxmID09IHB0cikgeworLyogCWZvciAocCA9ICZtYWxsb2NfbGlzdCxwcD0qcCwo
KG9iamVjdCkmcHApLT5tZC5tZj0wOyAqcCAmJiAhZW5kcChwcCk7ICBwID0gJigocHApLT5jLmNf
Y2RyKSxwcD0qcCwoKG9iamVjdCkmcHApLT5tZC5tZj0wKSAqLworCWZvciAocD0mbWFsbG9jX2xp
c3QscHA9KnA7IHBwICYmICFlbmRwKHBwKTsgIHAgPSAmKChwcCktPmMuY19jZHIpLHBwPVNjZHIo
cHApKQorCQlpZiAoKHBwKS0+Yy5jX2Nhci0+c3Quc3Rfc2VsZiA9PSBwdHIpIHsKIC8qIFNHQyBj
b250YmxvY2sgcGFnZXM6IEl0cyBwb3NzaWJsZSB0aGlzIGlzIG9uIGFuIG9sZCBwYWdlIENNIDIw
MDMwODI3ICovCiAjaWZkZWYgU0dDCi0gCQkJaW5zZXJ0X21heWJlX3NnY19jb250YmxvY2soKCpw
KS0+Yy5jX2Nhci0+c3Quc3Rfc2VsZiwKLQkJCQkJCSAgICgqcCktPmMuY19jYXItPnN0LnN0X2Rp
bSk7CisgCQkJaW5zZXJ0X21heWJlX3NnY19jb250YmxvY2soKHBwKS0+Yy5jX2Nhci0+c3Quc3Rf
c2VsZiwKKwkJCQkJCSAgIChwcCktPmMuY19jYXItPnN0LnN0X2RpbSk7CiAjZWxzZQotIAkJCWlu
c2VydF9jb250YmxvY2soKCpwKS0+Yy5jX2Nhci0+c3Quc3Rfc2VsZiwKLQkJCQkJICgqcCktPmMu
Y19jYXItPnN0LnN0X2RpbSk7CisgCQkJaW5zZXJ0X2NvbnRibG9jaygocHApLT5jLmNfY2FyLT5z
dC5zdF9zZWxmLAorCQkJCQkgKHBwKS0+Yy5jX2Nhci0+c3Quc3RfZGltKTsKICNlbmRpZgotCQkJ
KCpwKS0+Yy5jX2Nhci0+c3Quc3Rfc2VsZiA9IE5VTEw7Ci0JCQkqcCA9ICgqcCktPmMuY19jZHI7
CisJCQkocHApLT5jLmNfY2FyLT5zdC5zdF9zZWxmID0gTlVMTDsKKwkJCSpwID0gU2NkcihwcCk7
CiAjaWZkZWYgR0NMX0dQUk9GCiAJCQlpZiAoaW5pdGlhbF9tb25zdGFydHVwX3BvaW50ZXI9PXB0
cikgewogCQkJICBpbml0aWFsX21vbnN0YXJ0dXBfcG9pbnRlcj1OVUxMOwpJbmRleDogby9hcnJh
eS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9hcnJheS5jLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjIwLjQuMS40LjQuMi4yCmRpZmYgLXUgLXIxLjIwLjQuMS40LjQu
Mi4yIGFycmF5LmMKLS0tIG8vYXJyYXkuYwk4IEp1biAyMDA0IDE5OjM0OjAzIC0wMDAwCTEuMjAu
NC4xLjQuNC4yLjIKKysrIG8vYXJyYXkuYwkzIEp1biAyMDA1IDA0OjA1OjMyIC0wMDAwCkBAIC03
NTQsMTIgKzc1NCwxMyBAQAogLyogYWRkIGRpZmYgdG8gYm9keSBvZiB4IGFuZCBhcnJheXMgZGlp
c3BsYWNlZCB0byBpdCAqLwogCiB2b2lkCi1hZGp1c3RfZGlzcGxhY2VkKG9iamVjdCB4LCBsb25n
IGRpZmYpCi17Ci0JaWYgKHgtPnVzdC51c3Rfc2VsZiAhPSBOVUxMKQotCQl4LT51c3QudXN0X3Nl
bGYgPSAoY2hhciAqKSgobG9uZykoeC0+YS5hX3NlbGYpICsgZGlmZik7Ci0JZm9yICh4ID0gTWNk
cih4LT51c3QudXN0X2Rpc3BsYWNlZCk7ICB4ICE9IENuaWw7ICB4ID0gTWNkcih4KSkKLQkJYWRq
dXN0X2Rpc3BsYWNlZChNY2FyKHgpLCBkaWZmKTsKK2FkanVzdF9kaXNwbGFjZWQob2JqZWN0IHgs
IGxvbmcgZGlmZikgeworCisgIGlmICh4LT51c3QudXN0X3NlbGYgIT0gTlVMTCkKKyAgICB4LT51
c3QudXN0X3NlbGYgPSAoY2hhciAqKSgobG9uZykoeC0+YS5hX3NlbGYpICsgZGlmZik7CisgIGZv
ciAoeCA9IFNjZHIoeC0+dXN0LnVzdF9kaXNwbGFjZWQpOyAgeCAhPSBDbmlsOyAgeCA9IFNjZHIo
eCkpIAorICAgIGFkanVzdF9kaXNwbGFjZWQoTWNhcih4KSwgZGlmZik7CisgIAogfQogCiAKSW5k
ZXg6IG8vY2Z1bi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9jZnVu
LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNS42LjIKZGlmZiAtdSAtcjEuNS42LjIgY2Z1bi5j
Ci0tLSBvL2NmdW4uYwk2IE5vdiAyMDAzIDE2OjE2OjUwIC0wMDAwCTEuNS42LjIKKysrIG8vY2Z1
bi5jCTMgSnVuIDIwMDUgMDQ6MDU6MzIgLTAwMDAKQEAgLTU2LDcgKzU2LDcgQEAKIHtvYmplY3Qg
c2ZuOwogICAgICAgIAogCXNmbiA9IGFsbG9jX29iamVjdCh0X3NmdW4pOwotICAgICAgICBpZihh
cmdkID4xNSkgc2ZuLT5kLnQgPSAoaW50KXRfZ2Z1bjsKKyAgICAgICAgaWYoYXJnZCA+MTUpIHtz
ZXRfdHlwZV9vZihzZm4sdF9nZnVuKTt9LyogIHNmbi0+ZC50ID0gKGludCl0X2dmdW47ICovCiAJ
c2ZuLT5zZm4uc2ZuX3NlbGYgPSBzZWxmOwogCXNmbi0+c2ZuLnNmbl9uYW1lID0gbmFtZTsKIAlz
Zm4tPnNmbi5zZm5fZGF0YSA9IGRhdGE7CkluZGV4OiBvL2NoYXJhY3Rlci5kCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9jaGFyYWN0ZXIuZCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS41LjQuMS40LjIKZGlmZiAtdSAtcjEuNS40LjEuNC4yIGNoYXJhY3Rlci5kCi0tLSBv
L2NoYXJhY3Rlci5kCTYgTm92IDIwMDMgMTY6MTY6NTAgLTAwMDAJMS41LjQuMS40LjIKKysrIG8v
Y2hhcmFjdGVyLmQJMyBKdW4gMjAwNSAwNDowNTozMiAtMDAwMApAQCAtNTgxLDE3ICs1ODEsMjQg
QEAKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7ICBpIDwgQ0hDT0RFTElNOyAgaSsrKSB7Ci0JCWNo
YXJhY3Rlcl90YWJsZVtpXS50ID0gKHNob3J0KXRfY2hhcmFjdGVyOwotCQljaGFyYWN0ZXJfdGFi
bGVbaV0uY2hfY29kZSA9IGk7Ci0JCWNoYXJhY3Rlcl90YWJsZVtpXS5jaF9mb250ID0gMDsKLQkJ
Y2hhcmFjdGVyX3RhYmxlW2ldLmNoX2JpdHMgPSAwOworCSAgb2JqZWN0IHg9KG9iamVjdCkoY2hh
cmFjdGVyX3RhYmxlK2kpOworCSAgc2V0X3R5cGVfb2YoeCx0X2NoYXJhY3Rlcik7CisvKiAJCWNo
YXJhY3Rlcl90YWJsZVtpXS50ID0gKHNob3J0KXRfY2hhcmFjdGVyOyAqLworCSAgeC0+Y2guY2hf
Y29kZSA9IGk7CisJICB4LT5jaC5jaF9mb250ID0gMDsKKwkgIHgtPmNoLmNoX2JpdHMgPSAwOwog
CX0KICNpZmRlZiBBVgogCWZvciAoaSA9IC0xMjg7ICBpIDwgMDsgIGkrKykgewotCQljaGFyYWN0
ZXJfdGFibGVbaV0udCA9IChzaG9ydCl0X2NoYXJhY3RlcjsKLQkJY2hhcmFjdGVyX3RhYmxlW2ld
LmNoX2NvZGUgPSBpK0NIQ09ERUxJTTsKLQkJY2hhcmFjdGVyX3RhYmxlW2ldLmNoX2ZvbnQgPSAw
OwotCQljaGFyYWN0ZXJfdGFibGVbaV0uY2hfYml0cyA9IDA7CisJICBvYmplY3QgeD0ob2JqZWN0
KShjaGFyYWN0ZXJfdGFibGUraSk7CisJICBzZXRfdHlwZV9vZih4LHRfY2hhcmFjdGVyKTsKKwkg
IHgtPmNoLmNoX2NvZGUgPSBpK0NIQ09ERUxJTTsKKwkgIHgtPmNoLmNoX2ZvbnQgPSAwOworCSAg
eC0+Y2guY2hfYml0cyA9IDA7CisvKiAJCWNoYXJhY3Rlcl90YWJsZVtpXS50ID0gKHNob3J0KXRf
Y2hhcmFjdGVyOyAqLworLyogCQljaGFyYWN0ZXJfdGFibGVbaV0uY2hfY29kZSA9IGkrQ0hDT0RF
TElNOyAqLworLyogCQljaGFyYWN0ZXJfdGFibGVbaV0uY2hfZm9udCA9IDA7ICovCisvKiAJCWNo
YXJhY3Rlcl90YWJsZVtpXS5jaF9iaXRzID0gMDsgKi8KIAl9CiAjZW5kaWYKIApJbmRleDogby9l
dmFsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL2V2YWwuYyx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4xMi42LjIuMi4xLjIuMQpkaWZmIC11IC1yMS4xMi42LjIuMi4x
LjIuMSBldmFsLmMKLS0tIG8vZXZhbC5jCTEzIEp1bCAyMDA0IDE0OjE3OjAxIC0wMDAwCTEuMTIu
Ni4yLjIuMS4yLjEKKysrIG8vZXZhbC5jCTMgSnVuIDIwMDUgMDQ6MDU6MzIgLTAwMDAKQEAgLTk1
LDggKzk1LDggQEAKIHsgREVCVUdfQVZNQQogICBpbnQgaT1mdW4tPnNmbi5zZm5fYXJnZCxuPVNG
VU5fTkFSR1MoaSk7CiAgIGVudW0gZnR5cGUgcmVzdHlwZTsKLSAgb2JqZWN0ICp4LHJlcywqYmFz
ZTsKLSAgb2JqZWN0ICp0ZW1wX2FyPWFsbG9jYShuKnNpemVvZihvYmplY3QpKTsKKyAgb2JqZWN0
ICp4LHJlcz1PQkpOVUxMLCpiYXNlOworICBvYmplY3QgKnRlbXBfYXI9WkFMTE9DQShuKnNpemVv
ZihvYmplY3QpKTsKIC8qICAgaT1mdW4tPnNmbi5zZm5fYXJnZDsgKi8KIC8qICAgbj1TRlVOX05B
UkdTKGkpOyAqLwogICBiYXNlID0gdnNfYmFzZTsKQEAgLTE1NywxMyArMTU3LDE2IEBACiB2b2lk
CiBmdW5jYWxsKG9iamVjdCBmdW4pCiB7IAotICAgICAgICBvYmplY3QgdGVtcG9yYXJ5OwotCW9i
amVjdCB4OwotCSBvYmplY3QgKiBWT0wgdG9wOwotCW9iamVjdCAqbGV4OwotCWJkc19wdHIgb2xk
X2Jkc190b3A7Ci0JVk9MIGJvb2wgYjsKLQlib29sIGM7CisvKiAgICAgICAgIG9iamVjdCBWT0wg
c2ZpcnN0PU5VTEw7ICovCisvKiAgICAgICAgIHdpcGVfc3RhY2soJnNmaXJzdCk7ICovCisJewor
ICAgICAgICBvYmplY3QgdGVtcG9yYXJ5PU9CSk5VTEw7CisJb2JqZWN0IHg9T0JKTlVMTDsKKwlv
YmplY3QgKiBWT0wgdG9wPU5VTEw7CisJb2JqZWN0ICpsZXg9TlVMTDsKKwliZHNfcHRyIG9sZF9i
ZHNfdG9wPU5VTEw7CisJVk9MIGJvb2wgYj0wOworCWJvb2wgYz0wOwogCURFQlVHX0FWTUEKICAg
ICAgIFRPUDoKIAlpZiAoZnVuID09IE9CSk5VTEwpCkBAIC0xODUsNyArMTg4LDcgQEAKIAkJcmV0
dXJuOwogICAgICAgICAgY2FzZSB0X2FmdW46CiAJIGNhc2UgdF9jbG9zdXJlOgotCSAgIHsgb2Jq
ZWN0IHJlcywqYiA9IHZzX2Jhc2U7CisJICAgeyBvYmplY3QgcmVzPU9CSk5VTEwsKmIgPSB2c19i
YXNlOwogCSAgICAgaW50IG4gPSB2c190b3AgLSBiOwogCSAgICAgcmVzID0gKG9iamVjdClJYXBw
bHlWZWN0b3IoZnVuLG4sYik7CiAJICAgICBuID0gZmNhbGwubnZhbHVlczsKQEAgLTE5Nyw3ICsy
MDAsNyBAQAogICAgICAgY2FzZSB0X2NjbG9zdXJlOgogCiAJewotCQlvYmplY3QgKnRvcCwgKmJh
c2UsIGw7CisJCW9iamVjdCAqdG9wPU5VTEwsICpiYXNlPU5VTEwsIGw9T0JKTlVMTDsKIAogCQlp
ZiAoZnVuLT5jYy5jY190dXJibyAhPSBOVUxMKSB7CiAJCQlNTWNjYWxsKGZ1biwgZnVuLT5jYy5j
Y190dXJibyk7CkBAIC0zMzgsNyArMzQxLDcgQEAKIAlsZXhfZW52ID0gbGV4OwogCWlmIChub3Rf
cHVzaGVkID09IDApIHtpaHNfcG9wKCk7fQogCUNIRUNLX0FWTUE7Ci19fQorfX19CiAKIHZvaWQK
IGZ1bmNhbGxfbm9fZXZlbnQob2JqZWN0IGZ1bikKQEAgLTM1Myw3ICszNTYsNyBAQAogCiAJY2Fz
ZSB0X2NjbG9zdXJlOgogCXsKLQkJb2JqZWN0ICp0b3AsICpiYXNlLCBsOworCQlvYmplY3QgKnRv
cD1OVUxMLCAqYmFzZT1OVUxMLCBsPU9CSk5VTEw7CiAKIAkJaWYgKGZ1bi0+Y2MuY2NfdHVyYm8g
IT0gTlVMTCkgewogCQkJKCpmdW4tPmNjLmNjX3NlbGYpKGZ1bi0+Y2MuY2NfdHVyYm8pOwpAQCAt
OTMzLDExICs5MzYsMTEgQEAKIHZvaWQKIGV2YWwob2JqZWN0IGZvcm0pCiB7IAotICAgICAgICBv
YmplY3QgdGVtcG9yYXJ5OworICAgICAgICBvYmplY3QgdGVtcG9yYXJ5PU9CSk5VTEw7CiAgICAg
ICAgIERFQlVHX0FWTUEKLQlvYmplY3QgZnVuLCB4OwotCW9iamVjdCAqdG9wOwotCW9iamVjdCAq
YmFzZTsKKwlvYmplY3QgZnVuPU9CSk5VTEwsIHg9T0JKTlVMTDsKKwlvYmplY3QgKnRvcD1OVUxM
OworCW9iamVjdCAqYmFzZT1OVUxMOwogCiAJY3NfY2hlY2soZm9ybSk7CiAKQEAgLTExMjksMTcg
KzExMzIsMjEgQEAKIAlzdXBlcl9mdW5jYWxsKGFoKTsKIH0KIAotCiBERUZVTk9fTkVXKCJGVU5D
QUxMIixvYmplY3QsZkxmdW5jYWxsLExJU1AKLSAgICAgICAsMSxNQVhfQVJHUyxOT05FLE9PLE9P
LE9PLE9PLHZvaWQsTGZ1bmNhbGwsKG9iamVjdCBmdW4sLi4uKSwiIikKLXsgdmFfbGlzdCBhcDsK
KyAgICAgICAsMSxNQVhfQVJHUyxOT05FLE9PLE9PLE9PLE9PLHZvaWQsTGZ1bmNhbGwsKG9iamVj
dCBmdW4sLi4uKSwiIikgeyAKKworICB2YV9saXN0IGFwOwogICBvYmplY3QgKm5ldzsKLSAgaW50
IG4gPSBWRlVOX05BUkdTOworICBpbnQgaSxuID0gVkZVTl9OQVJHUy0xOworCisgIGlmIChuPj02
NSkgRkVlcnJvcigiYXJnIGxpbWl0IGV4Y2VlZGVkIiwwKTsKKyAgbmV3PVpBTExPQ0EobipzaXpl
b2YoKm5ldykpOworLyogICB3aXBlX3N0YWNrKCZuKTsgKi8KICAgdmFfc3RhcnQoYXAsZnVuKTsK
LSAge0NPRVJDRV9WQV9MSVNUKG5ldyxhcCxuKTsKLSAgcmV0dXJuIElhcHBseVZlY3RvcihmdW4s
bi0xLG5ldyk7CisgIGZvciAoaT0wO2k8bjtpKyspCisgICAgbmV3W2ldPXZhX2FyZyhhcCxvYmpl
Y3QpOwogICB2YV9lbmQoYXApOwotIH0KKyAgcmV0dXJuIElhcHBseVZlY3RvcihmdW4sbixuZXcp
OwogfQogCiAKSW5kZXg6IG8vZmFzZHVtcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290
L2djbC9nY2wvby9mYXNkdW1wLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOS42LjIKZGlmZiAt
dSAtcjEuOS42LjIgZmFzZHVtcC5jCi0tLSBvL2Zhc2R1bXAuYwkxMiBGZWIgMjAwNCAwNToyMzox
MyAtMDAwMAkxLjkuNi4yCisrKyBvL2Zhc2R1bXAuYwkzIEp1biAyMDA1IDA0OjA1OjMyIC0wMDAw
CkBAIC0xNTIxLDcgKzE1MjEsNyBAQAogICB7IEJFR0lOX05PX0lOVEVSUlVQVDsKICNpZmRlZiBI
QVZFX0FMTE9DQQogICBjdXJyZW50X2Zhc2QudGFibGUtPnYudl9zZWxmCi0gICAgPSAob2JqZWN0
ICopYWxsb2NhKG4qc2l6ZW9mKG9iamVjdCkpOworICAgID0gKG9iamVjdCAqKVpBTExPQ0Eobipz
aXplb2Yob2JqZWN0KSk7CiAjZWxzZQogICBjdXJyZW50X2Zhc2QudGFibGUtPnYudl9zZWxmCiAg
ICAgPSAob2JqZWN0ICopYWxsb2NfcmVsYmxvY2sobipzaXplb2Yob2JqZWN0KSk7CkluZGV4OiBv
L2ZhdF9zdHJpbmcuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vZmF0
X3N0cmluZy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0LjQuMi4yLjMKZGlmZiAtdSAtcjEu
MTQuNC4yLjIuMyBmYXRfc3RyaW5nLmMKLS0tIG8vZmF0X3N0cmluZy5jCTQgTWFyIDIwMDQgMTk6
MzU6NTUgLTAwMDAJMS4xNC40LjIuMi4zCisrKyBvL2ZhdF9zdHJpbmcuYwkzIEp1biAyMDA1IDA0
OjA1OjMyIC0wMDAwCkBAIC0xOTQsNyArMTk0LDcgQEAKIAkgdHlwZV9vZih4KSE9dF92ZnVuICYm
CiAJIHR5cGVfb2YoeCkhPXRfZ2Z1bgogCSApIGNvbnRpbnVlOwotICAgICBpZiAoKHgtPmQubSA9
PSBGUkVFKSB8fCB4LT5jZi5jZl9zZWxmID09IE5VTEwpCisgICAgIGlmICh4LT5kLmYgfHwgeC0+
Y2YuY2Zfc2VsZiA9PSBOVUxMKQogICAgICAgIGNvbnRpbnVlOwogCS8qIHRoZSBjZGVmbiB0aGlu
Z3MgYXJlIHRoZSBwcm9jbGFpbWVkIGNhbGwgdHlwZXMuICovCiAgICAgIGNmX2FkZHI9KGNoYXIg
KiApICgodW5zaWduZWQgbG9uZykoeC0+Y2YuY2Zfc2VsZikpOwpJbmRleDogby9mdW5saW5rLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL2Z1bmxpbmsuYyx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4xNi42LjMKZGlmZiAtdSAtcjEuMTYuNi4zIGZ1bmxpbmsuYwotLS0g
by9mdW5saW5rLmMJMjAgTWFyIDIwMDQgMDI6MDM6NTkgLTAwMDAJMS4xNi42LjMKKysrIG8vZnVu
bGluay5jCTMgSnVuIDIwMDUgMDQ6MDU6MzMgLTAwMDAKQEAgLTI2MywyNjUgKzI2Myw2NjMgQEAK
ICNkZWZpbmUgTENBU1QoYSkgKCphKQogLyogICNlbmRpZiAqLwogCi1vYmplY3QKLWNfYXBwbHlf
bihvYmplY3QgKCpmbikoKSwgaW50IG4sIG9iamVjdCAqeCkKLXtvYmplY3QgcmVzPUNuaWw7Ci0g
c3dpdGNoKG4pewotICAgIGNhc2UgMDogIHJlcz1MQ0FTVChmbikoKTticmVhazsKLSAgICBjYXNl
IDE6ICByZXM9TENBU1QoZm4pKHhbMF0pO2JyZWFrOwotICAgIGNhc2UgMjogIHJlcz1MQ0FTVChm
bikoeFswXSx4WzFdKTticmVhazsKLSAgICBjYXNlIDM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsx
XSx4WzJdKTticmVhazsKLSAgICBjYXNlIDQ6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJd
LHhbM10pO2JyZWFrOwotICAgIGNhc2UgNTogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0s
eFszXSx4WzRdKTticmVhazsKLSAgICBjYXNlIDY6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4
WzJdLHhbM10seFs0XSx4WzVdKTticmVhazsKLSAgICBjYXNlIDc6ICByZXM9TENBU1QoZm4pKHhb
MF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0pO2JyZWFrOwotICAgIGNhc2UgODogIHJl
cz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddKTticmVh
azsKLSAgICBjYXNlIDk6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4
WzVdLHhbNl0seFs3XSwKLSAgICAgICAgIHhbOF0pO2JyZWFrOwotICAgIGNhc2UgMTA6ICByZXM9
TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKLSAgICAg
ICAgIHhbOF0seFs5XSk7YnJlYWs7Ci0gICAgY2FzZSAxMTogIHJlcz1MQ0FTVChmbikoeFswXSx4
WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAotICAgICAgICAgeFs4XSx4WzldLHhb
MTBdKTticmVhazsKLSAgICBjYXNlIDEyOiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4
WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCi0gICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0p
O2JyZWFrOwotICAgIGNhc2UgMTM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10s
eFs0XSx4WzVdLHhbNl0seFs3XSwKLSAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEy
XSk7YnJlYWs7Ci0gICAgY2FzZSAxNDogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFsz
XSx4WzRdLHhbNV0seFs2XSx4WzddLAotICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhb
MTJdLHhbMTNdKTticmVhazsKLSAgICBjYXNlIDE1OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0s
eFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCi0gICAgICAgICB4WzhdLHhbOV0seFsxMF0s
eFsxMV0seFsxMl0seFsxM10seFsxNF0pO2JyZWFrOwotICAgIGNhc2UgMTY6ICByZXM9TENBU1Qo
Zm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKK3N0YXRpYyBvYmpl
Y3QgY19hcHBseV9uMChvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRy
aWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X24wKG9iamVjdCAo
KmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworICByZXR1cm4gZm4oKTsKK30K
Kworc3RhdGljIG9iamVjdCBjX2FwcGx5X24xKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qs
b2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBw
bHlfbjEob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisgIHJl
dHVybiBmbih4WzBdKTsKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24yKG9iamVjdCAoKiko
KSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0
YXRpYyBvYmplY3QKK2NfYXBwbHlfbjIob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5
LG9iamVjdCB6KSB7CisgIHJldHVybiBmbih4WzBdLHhbMV0pOworfQorCitzdGF0aWMgb2JqZWN0
IGNfYXBwbHlfbjMob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmli
dXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uMyhvYmplY3QgKCpm
bikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKyAgcmV0dXJuIGZuKHhbMF0seFsx
XSx4WzJdKTsKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X240KG9iamVjdCAoKikoKSxvYmpl
Y3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBv
YmplY3QKK2NfYXBwbHlfbjQob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVj
dCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10pOworCit9CisKK3N0YXRp
YyBvYmplY3QgY19hcHBseV9uNShvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkg
X19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X241KG9i
amVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBm
bih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBs
eV9uNihvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAo
KG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X242KG9iamVjdCAoKmZuKSgpLG9i
amVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsy
XSx4WzNdLHhbNF0seFs1XSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X243KG9iamVj
dCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUp
KTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjcob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9i
amVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0
XSx4WzVdLHhbNl0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uOChvYmplY3QgKCop
KCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7Citz
dGF0aWMgb2JqZWN0CitjX2FwcGx5X244KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3Qg
eSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1
XSx4WzZdLHhbN10pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uOShvYmplY3QgKCop
KCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7Citz
dGF0aWMgb2JqZWN0CitjX2FwcGx5X245KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3Qg
eSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1
XSx4WzZdLHhbN10sCisgICAgICAgICB4WzhdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBw
bHlfbjEwKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9f
ICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjEwKG9iamVjdCAoKmZuKSgp
LG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0s
eFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4WzhdLHhbOV0pOworCit9
CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMTEob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVj
dCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19h
cHBseV9uMTEob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisK
KyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAg
ICAgICAgIHhbOF0seFs5XSx4WzEwXSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24x
MihvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5v
aW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X24xMihvYmplY3QgKCpmbikoKSxvYmpl
Y3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0s
eFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFd
KTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjEzKG9iamVjdCAoKikoKSxvYmplY3Qg
KixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmpl
Y3QKK2NfYXBwbHlfbjEzKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3Qg
eikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhb
N10sCisgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0pOworCit9CisKK3N0YXRp
YyBvYmplY3QgY19hcHBseV9uMTQob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3Qp
IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uMTQo
b2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJu
IGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhb
OF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSk7CisKK30KKworc3RhdGljIG9iamVjdCBj
X2FwcGx5X24xNShvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1
dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X24xNShvYmplY3QgKCpm
bikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4
WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFs4XSx4WzldLHhb
MTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBw
bHlfbjE2KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9f
ICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjE2KG9iamVjdCAoKmZuKSgp
LG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0s
eFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0s
eFsxMV0seFsxMl0seFsxM10seFsxNF0sCi0gICAgICAgICB4WzE1XSk7YnJlYWs7Ci0gICAgY2Fz
ZSAxNzogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4
WzddLAorICAgICAgICAgeFsxNV0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMTco
b2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lu
bGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uMTcob2JqZWN0ICgqZm4pKCksb2JqZWN0
ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhb
M10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4
WzEyXSx4WzEzXSx4WzE0XSwKLSAgICAgICAgIHhbMTVdLHhbMTZdKTticmVhazsKLSAgICBjYXNl
IDE4OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhb
N10sCisgICAgICAgICB4WzE1XSx4WzE2XSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5
X24xOChvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAo
KG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X24xOChvYmplY3QgKCpmbikoKSxv
YmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhb
Ml0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAogICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhb
MTFdLHhbMTJdLHhbMTNdLHhbMTRdLAotICAgICAgICAgeFsxNV0seFsxNl0seFsxN10pO2JyZWFr
OwotICAgIGNhc2UgMTk6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4
WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddKTsKKworfQorCitzdGF0
aWMgb2JqZWN0IGNfYXBwbHlfbjE5KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0
KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjE5
KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVy
biBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4
WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCi0gICAgICAgICB4WzE1XSx4
WzE2XSx4WzE3XSx4WzE4XSk7YnJlYWs7Ci0gICAgY2FzZSAyMDogIHJlcz1MQ0FTVChmbikoeFsw
XSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFsxNV0seFsx
Nl0seFsxN10seFsxOF0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMjAob2JqZWN0
ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkp
Oworc3RhdGljIG9iamVjdAorY19hcHBseV9uMjAob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9i
amVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0
XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4
WzEzXSx4WzE0XSwKLSAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldKTticmVh
azsKLSAgICBjYXNlIDIxOiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0s
eFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSk7
CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24yMShvYmplY3QgKCopKCksb2JqZWN0ICos
b2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0
CitjX2FwcGx5X24yMShvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHop
IHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4Wzdd
LAogICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAotICAg
ICAgICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0pO2JyZWFrOwotICAgIGNh
c2UgMjI6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0s
eFs3XSwKKyAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdKTsKKwor
fQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjIyKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmpl
Y3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2Nf
YXBwbHlfbjIyKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3Qgeikgewor
CisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAg
ICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCi0gICAgICAg
ICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSk7YnJlYWs7Ci0gICAg
Y2FzZSAyMzogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2
XSx4WzddLAorICAgICAgICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsy
MV0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMjMob2JqZWN0ICgqKSgpLG9iamVj
dCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9i
amVjdAorY19hcHBseV9uMjMob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVj
dCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0s
eFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwK
ICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAotICAg
ICAgICAgeFsyMl0pO2JyZWFrOwotICAgIGNhc2UgMjQ6ICByZXM9TENBU1QoZm4pKHhbMF0seFsx
XSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjJdKTsKKworfQor
CitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjI0KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qs
b2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBw
bHlfbjI0KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisg
IHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAg
ICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4
WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKLSAgICAgICAgIHhbMjJd
LHhbMjNdKTticmVhazsKLSAgICBjYXNlIDI1OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsy
XSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4WzIyXSx4WzIzXSk7CisKK30K
Kworc3RhdGljIG9iamVjdCBjX2FwcGx5X24yNShvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0
LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2Fw
cGx5X24yNShvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKwor
ICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAogICAg
ICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAogICAgICAgICAg
eFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCi0gICAgICAgICB4WzIy
XSx4WzIzXSx4WzI0XSk7YnJlYWs7Ci0gICAgY2FzZSAyNjogIHJlcz1MQ0FTVChmbikoeFswXSx4
WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFsyMl0seFsyM10s
eFsyNF0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMjYob2JqZWN0ICgqKSgpLG9i
amVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGlj
IG9iamVjdAorY19hcHBseV9uMjYob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9i
amVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhb
Nl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0
XSwKICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAot
ICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0pO2JyZWFrOwotICAgIGNhc2UgMjc6ICBy
ZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAg
ICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNf
YXBwbHlfbjI3KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0
ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjI3KG9iamVjdCAoKmZu
KSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhb
MV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsx
MF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4
WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKLSAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVd
LHhbMjZdKTticmVhazsKLSAgICBjYXNlIDI4OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsy
XSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4WzIyXSx4WzIzXSx4WzI0XSx4
WzI1XSx4WzI2XSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24yOChvYmplY3QgKCop
KCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7Citz
dGF0aWMgb2JqZWN0CitjX2FwcGx5X24yOChvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0
IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhb
NV0seFs2XSx4WzddLAogICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNd
LHhbMTRdLAogICAgICAgICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsy
MV0sCi0gICAgICAgICB4WzIyXSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSk7YnJlYWs7
Ci0gICAgY2FzZSAyOTogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhb
NV0seFs2XSx4WzddLAorICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0seFsyNl0seFsy
N10pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMjkob2JqZWN0ICgqKSgpLG9iamVj
dCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9i
amVjdAorY19hcHBseV9uMjkob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVj
dCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0s
eFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwK
ICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAotICAg
ICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0seFsyNl0seFsyN10seFsyOF0pO2JyZWFrOwot
ICAgIGNhc2UgMzA6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVd
LHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjdd
LHhbMjhdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjMwKG9iamVjdCAoKikoKSxv
YmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRp
YyBvYmplY3QKK2NfYXBwbHlfbjMwKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxv
YmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4
WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsx
NF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwK
ICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAg
ICAgICAgeFsyOV0pO2JyZWFrOwotICAgIGNhc2UgMzE6ICByZXM9TENBU1QoZm4pKHhbMF0seFsx
XSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjldKTsKKworfQor
CitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjMxKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qs
b2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBw
bHlfbjMxKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisg
IHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAg
ICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4
WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJd
LHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0seFsz
MF0pO2JyZWFrOwotICAgIGNhc2UgMzI6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhb
M10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjldLHhbMzBdKTsKKworfQorCitz
dGF0aWMgb2JqZWN0IGNfYXBwbHlfbjMyKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2Jq
ZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlf
bjMyKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJl
dHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAg
ICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1
XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhb
MjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0seFszMF0s
eFszMV0pO2JyZWFrOwotICAgIGNhc2UgMzM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJd
LHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjldLHhbMzBdLHhbMzFdKTsK
KworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjMzKG9iamVjdCAoKikoKSxvYmplY3QgKixv
YmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QK
K2NfYXBwbHlfbjMzKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3Qgeikg
eworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10s
CiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAg
ICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAg
IHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsy
OV0seFszMF0seFszMV0seFszMl0pO2JyZWFrOwotICAgIGNhc2UgMzQ6ICByZXM9TENBU1QoZm4p
KHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjld
LHhbMzBdLHhbMzFdLHhbMzJdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjM0KG9i
amVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxp
bmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjM0KG9iamVjdCAoKmZuKSgpLG9iamVjdCAq
eCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNd
LHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsx
Ml0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4
WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjdd
LHhbMjhdLAotICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10pO2JyZWFrOwot
ICAgIGNhc2UgMzU6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVd
LHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjldLHhbMzBdLHhbMzFdLHhbMzJdLHhbMzNdKTsKKwor
fQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjM1KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmpl
Y3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2Nf
YXBwbHlfbjM1KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3Qgeikgewor
CisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAg
ICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAg
ICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhb
MjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0s
eFszMF0seFszMV0seFszMl0seFszM10seFszNF0pO2JyZWFrOwotICAgIGNhc2UgMzY6ICByZXM9
TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAg
ICAgIHhbMjldLHhbMzBdLHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdKTsKKworfQorCitzdGF0aWMg
b2JqZWN0IGNfYXBwbHlfbjM2KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBf
X2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjM2KG9i
amVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBm
bih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4Wzhd
LHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2
XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhb
MjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0seFszMF0seFszMV0s
eFszMl0seFszM10seFszNF0seFszNV0pO2JyZWFrOwotICAgIGNhc2UgMzc6ICByZXM9TENBU1Qo
Zm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhb
MjldLHhbMzBdLHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdLHhbMzVdKTsKKworfQorCitzdGF0aWMg
b2JqZWN0IGNfYXBwbHlfbjM3KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBf
X2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjM3KG9i
amVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBm
bih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4Wzhd
LHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2
XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhb
MjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0s
eFszMl0seFszM10seFszNF0seFszNV0sCi0gICAgICAgICB4WzM2XSk7YnJlYWs7Ci0gICAgY2Fz
ZSAzODogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4
WzddLAorICAgICAgICAgeFszNl0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMzgo
b2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lu
bGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uMzgob2JqZWN0ICgqZm4pKCksb2JqZWN0
ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhb
M10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4
WzEyXSx4WzEzXSx4WzE0XSwKICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTld
LHhbMjBdLHhbMjFdLAogICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0seFsyNl0seFsy
N10seFsyOF0sCiAgICAgICAgICB4WzI5XSx4WzMwXSx4WzMxXSx4WzMyXSx4WzMzXSx4WzM0XSx4
WzM1XSwKLSAgICAgICAgIHhbMzZdLHhbMzddKTticmVhazsKLSAgICBjYXNlIDM5OiAgcmVzPUxD
QVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAg
ICB4WzM2XSx4WzM3XSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24zOShvYmplY3Qg
KCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7
CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X24zOShvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2Jq
ZWN0IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRd
LHhbNV0seFs2XSx4WzddLAogICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhb
MTNdLHhbMTRdLAogICAgICAgICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0s
eFsyMV0sCiAgICAgICAgICB4WzIyXSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSx4WzI4
XSwKICAgICAgICAgIHhbMjldLHhbMzBdLHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdLHhbMzVdLAot
ICAgICAgICAgeFszNl0seFszN10seFszOF0pO2JyZWFrOwotICAgIGNhc2UgNDA6ICByZXM9TENB
U1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAg
IHhbMzZdLHhbMzddLHhbMzhdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjQwKG9i
amVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxp
bmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjQwKG9iamVjdCAoKmZuKSgpLG9iamVjdCAq
eCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNd
LHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsx
Ml0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4
WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjdd
LHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0seFsz
NV0sCi0gICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSk7YnJlYWs7Ci0gICAgY2FzZSA0
MTogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4Wzdd
LAorICAgICAgICAgeFszNl0seFszN10seFszOF0seFszOV0pOworCit9CisKK3N0YXRpYyBvYmpl
Y3QgY19hcHBseV9uNDEob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0
cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uNDEob2JqZWN0
ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhb
MF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5
XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwKICAgICAgICAgIHhbMTVdLHhbMTZdLHhb
MTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAogICAgICAgICAgeFsyMl0seFsyM10seFsyNF0s
eFsyNV0seFsyNl0seFsyN10seFsyOF0sCiAgICAgICAgICB4WzI5XSx4WzMwXSx4WzMxXSx4WzMy
XSx4WzMzXSx4WzM0XSx4WzM1XSwKLSAgICAgICAgIHhbMzZdLHhbMzddLHhbMzhdLHhbMzldLHhb
NDBdKTticmVhazsKLSAgICBjYXNlIDQyOiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4
WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5
XSx4WzQwXSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X240MihvYmplY3QgKCopKCks
b2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0
aWMgb2JqZWN0CitjX2FwcGx5X240MihvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHks
b2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0s
eFs2XSx4WzddLAogICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhb
MTRdLAogICAgICAgICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0s
CiAgICAgICAgICB4WzIyXSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSx4WzI4XSwKICAg
ICAgICAgIHhbMjldLHhbMzBdLHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdLHhbMzVdLAotICAgICAg
ICAgeFszNl0seFszN10seFszOF0seFszOV0seFs0MF0seFs0MV0pO2JyZWFrOwotICAgIGNhc2Ug
NDM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3
XSwKKyAgICAgICAgIHhbMzZdLHhbMzddLHhbMzhdLHhbMzldLHhbNDBdLHhbNDFdKTsKKworfQor
CitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjQzKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qs
b2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBw
bHlfbjQzKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisg
IHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAg
ICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4
WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJd
LHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFsz
MF0seFszMV0seFszMl0seFszM10seFszNF0seFszNV0sCi0gICAgICAgICB4WzM2XSx4WzM3XSx4
WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSk7YnJlYWs7Ci0gICAgY2FzZSA0NDogIHJlcz1M
Q0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAg
ICAgeFszNl0seFszN10seFszOF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0pOworCit9CisKK3N0
YXRpYyBvYmplY3QgY19hcHBseV9uNDQob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmpl
Y3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9u
NDQob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0
dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAg
IHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwKICAgICAgICAgIHhbMTVd
LHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAogICAgICAgICAgeFsyMl0seFsy
M10seFsyNF0seFsyNV0seFsyNl0seFsyN10seFsyOF0sCiAgICAgICAgICB4WzI5XSx4WzMwXSx4
WzMxXSx4WzMyXSx4WzMzXSx4WzM0XSx4WzM1XSwKICAgICAgICAgIHhbMzZdLHhbMzddLHhbMzhd
LHhbMzldLHhbNDBdLHhbNDFdLHhbNDJdLAotICAgICAgICAgeFs0M10pO2JyZWFrOwotICAgIGNh
c2UgNDU6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0s
eFs3XSwKKyAgICAgICAgIHhbNDNdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjQ1
KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9p
bmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjQ1KG9iamVjdCAoKmZuKSgpLG9iamVj
dCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4
WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0s
eFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5
XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhb
MjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0s
eFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQy
XSwKLSAgICAgICAgIHhbNDNdLHhbNDRdKTticmVhazsKLSAgICBjYXNlIDQ2OiAgcmVzPUxDQVNU
KGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4
WzQzXSx4WzQ0XSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X240NihvYmplY3QgKCop
KCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7Citz
dGF0aWMgb2JqZWN0CitjX2FwcGx5X240NihvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0
IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhb
NV0seFs2XSx4WzddLAogICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNd
LHhbMTRdLAogICAgICAgICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsy
MV0sCiAgICAgICAgICB4WzIyXSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSx4WzI4XSwK
ICAgICAgICAgIHhbMjldLHhbMzBdLHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdLHhbMzVdLAogICAg
ICAgICAgeFszNl0seFszN10seFszOF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0sCi0gICAgICAg
ICB4WzQzXSx4WzQ0XSx4WzQ1XSk7YnJlYWs7Ci0gICAgY2FzZSA0NzogIHJlcz1MQ0FTVChmbiko
eFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFs0M10s
eFs0NF0seFs0NV0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uNDcob2JqZWN0ICgq
KSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOwor
c3RhdGljIG9iamVjdAorY19hcHBseV9uNDcob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVj
dCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4
WzVdLHhbNl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEz
XSx4WzE0XSwKICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhb
MjFdLAogICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0seFsyNl0seFsyN10seFsyOF0s
CiAgICAgICAgICB4WzI5XSx4WzMwXSx4WzMxXSx4WzMyXSx4WzMzXSx4WzM0XSx4WzM1XSwKICAg
ICAgICAgIHhbMzZdLHhbMzddLHhbMzhdLHhbMzldLHhbNDBdLHhbNDFdLHhbNDJdLAotICAgICAg
ICAgeFs0M10seFs0NF0seFs0NV0seFs0Nl0pO2JyZWFrOwotICAgIGNhc2UgNDg6ICByZXM9TENB
U1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAg
IHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlf
bjQ4KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgo
bm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjQ4KG9iamVjdCAoKmZuKSgpLG9i
amVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsy
XSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsx
MV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4
WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZd
LHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFsz
NF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4
WzQyXSwKLSAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddKTticmVhazsKLSAg
ICBjYXNlIDQ5OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4
WzZdLHhbN10sCisgICAgICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4WzQ2XSx4WzQ3XSk7CisKK30K
Kworc3RhdGljIG9iamVjdCBjX2FwcGx5X240OShvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0
LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2Fw
cGx5X240OShvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKwor
ICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAogICAg
ICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAogICAgICAgICAg
eFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCiAgICAgICAgICB4WzIy
XSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSx4WzI4XSwKICAgICAgICAgIHhbMjldLHhb
MzBdLHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdLHhbMzVdLAogICAgICAgICAgeFszNl0seFszN10s
eFszOF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0sCi0gICAgICAgICB4WzQzXSx4WzQ0XSx4WzQ1
XSx4WzQ2XSx4WzQ3XSx4WzQ4XSk7YnJlYWs7Ci0gICAgY2FzZSA1MDogIHJlcz1MQ0FTVChmbiko
eFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFs0M10s
eFs0NF0seFs0NV0seFs0Nl0seFs0N10seFs0OF0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19h
cHBseV9uNTAob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRl
X18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uNTAob2JqZWN0ICgqZm4p
KCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsx
XSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEw
XSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwKICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhb
MThdLHhbMTldLHhbMjBdLHhbMjFdLAogICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0s
eFsyNl0seFsyN10seFsyOF0sCiAgICAgICAgICB4WzI5XSx4WzMwXSx4WzMxXSx4WzMyXSx4WzMz
XSx4WzM0XSx4WzM1XSwKICAgICAgICAgIHhbMzZdLHhbMzddLHhbMzhdLHhbMzldLHhbNDBdLHhb
NDFdLHhbNDJdLAotICAgICAgICAgeFs0M10seFs0NF0seFs0NV0seFs0Nl0seFs0N10seFs0OF0s
eFs0OV0pO2JyZWFrOwotICAgIGNhc2UgNTE6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJd
LHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhb
NDZdLHhbNDddLHhbNDhdLHhbNDldKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjUx
KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9p
bmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjUxKG9iamVjdCAoKmZuKSgpLG9iamVj
dCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4
WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0s
eFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5
XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhb
MjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0s
eFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQy
XSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhdLHhbNDldLAot
ICAgICAgICAgeFs1MF0pO2JyZWFrOwotICAgIGNhc2UgNTI6ICByZXM9TENBU1QoZm4pKHhbMF0s
eFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTBdKTsKKwor
fQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjUyKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmpl
Y3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2Nf
YXBwbHlfbjUyKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3Qgeikgewor
CisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAg
ICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAg
ICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhb
MjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0s
eFszMF0seFszMV0seFszMl0seFszM10seFszNF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3
XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhb
NDVdLHhbNDZdLHhbNDddLHhbNDhdLHhbNDldLAotICAgICAgICAgeFs1MF0seFs1MV0pO2JyZWFr
OwotICAgIGNhc2UgNTM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4
WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTBdLHhbNTFdKTsKKworfQorCitzdGF0aWMgb2Jq
ZWN0IGNfYXBwbHlfbjUzKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0
dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjUzKG9iamVj
dCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4
WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhb
OV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4
WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRd
LHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFsz
Ml0seFszM10seFszNF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4
WzQwXSx4WzQxXSx4WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDdd
LHhbNDhdLHhbNDldLAotICAgICAgICAgeFs1MF0seFs1MV0seFs1Ml0pO2JyZWFrOwotICAgIGNh
c2UgNTQ6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0s
eFs3XSwKKyAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdKTsKKworfQorCitzdGF0aWMgb2JqZWN0
IGNfYXBwbHlfbjU0KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJp
YnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjU0KG9iamVjdCAo
KmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBd
LHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0s
eFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3
XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhb
MjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0s
eFszM10seFszNF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQw
XSx4WzQxXSx4WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhb
NDhdLHhbNDldLAotICAgICAgICAgeFs1MF0seFs1MV0seFs1Ml0seFs1M10pO2JyZWFrOwotICAg
IGNhc2UgNTU6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhb
Nl0seFs3XSwKKyAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdKTsKKworfQorCitzdGF0
aWMgb2JqZWN0IGNfYXBwbHlfbjU1KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0
KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjU1
KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVy
biBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4
WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4
WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNd
LHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFsz
MV0seFszMl0seFszM10seFszNF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4
WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZd
LHhbNDddLHhbNDhdLHhbNDldLAotICAgICAgICAgeFs1MF0seFs1MV0seFs1Ml0seFs1M10seFs1
NF0pO2JyZWFrOwotICAgIGNhc2UgNTY6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhb
M10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNd
LHhbNTRdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjU2KG9iamVjdCAoKikoKSxv
YmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRp
YyBvYmplY3QKK2NfYXBwbHlfbjU2KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxv
YmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4
WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsx
NF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwK
ICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAg
ICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0seFszNV0sCiAgICAgICAg
ICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSwKICAgICAgICAgIHhb
NDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhdLHhbNDldLAotICAgICAgICAgeFs1MF0s
eFs1MV0seFs1Ml0seFs1M10seFs1NF0seFs1NV0pO2JyZWFrOwotICAgIGNhc2UgNTc6ICByZXM9
TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAg
ICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdLHhbNTRdLHhbNTVdKTsKKworfQorCitzdGF0aWMg
b2JqZWN0IGNfYXBwbHlfbjU3KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBf
X2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjU3KG9i
amVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBm
bih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4Wzhd
LHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2
XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhb
MjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0s
eFszMl0seFszM10seFszNF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5
XSx4WzQwXSx4WzQxXSx4WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhb
NDddLHhbNDhdLHhbNDldLAotICAgICAgICAgeFs1MF0seFs1MV0seFs1Ml0seFs1M10seFs1NF0s
eFs1NV0seFs1Nl0pO2JyZWFrOwotICAgIGNhc2UgNTg6ICByZXM9TENBU1QoZm4pKHhbMF0seFsx
XSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTBdLHhbNTFdLHhb
NTJdLHhbNTNdLHhbNTRdLHhbNTVdLHhbNTZdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBw
bHlfbjU4KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9f
ICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjU4KG9iamVjdCAoKmZuKSgp
LG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0s
eFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0s
eFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4
XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhb
MjZdLHhbMjddLHhbMjhdLApAQCAtNTI5LDggKzkyNywxNSBAQAogICAgICAgICAgeFszNl0seFsz
N10seFszOF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0sCiAgICAgICAgICB4WzQzXSx4WzQ0XSx4
WzQ1XSx4WzQ2XSx4WzQ3XSx4WzQ4XSx4WzQ5XSwKICAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJd
LHhbNTNdLHhbNTRdLHhbNTVdLHhbNTZdLAotICAgICAgICAgeFs1N10pO2JyZWFrOwotICAgIGNh
c2UgNTk6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0s
eFs3XSwKKyAgICAgICAgIHhbNTddKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjU5
KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9p
bmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjU5KG9iamVjdCAoKmZuKSgpLG9iamVj
dCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4
WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0s
eFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5
XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhb
MjddLHhbMjhdLApAQCAtNTM4LDggKzk0MywxNSBAQAogICAgICAgICAgeFszNl0seFszN10seFsz
OF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0sCiAgICAgICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4
WzQ2XSx4WzQ3XSx4WzQ4XSx4WzQ5XSwKICAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNd
LHhbNTRdLHhbNTVdLHhbNTZdLAotICAgICAgICAgeFs1N10seFs1OF0pO2JyZWFrOwotICAgIGNh
c2UgNjA6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0s
eFs3XSwKKyAgICAgICAgIHhbNTddLHhbNThdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBw
bHlfbjYwKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9f
ICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjYwKG9iamVjdCAoKmZuKSgp
LG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0s
eFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0s
eFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4
XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhb
MjZdLHhbMjddLHhbMjhdLApAQCAtNTQ3LDggKzk1OSwxNSBAQAogICAgICAgICAgeFszNl0seFsz
N10seFszOF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0sCiAgICAgICAgICB4WzQzXSx4WzQ0XSx4
WzQ1XSx4WzQ2XSx4WzQ3XSx4WzQ4XSx4WzQ5XSwKICAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJd
LHhbNTNdLHhbNTRdLHhbNTVdLHhbNTZdLAotICAgICAgICAgeFs1N10seFs1OF0seFs1OV0pO2Jy
ZWFrOwotICAgIGNhc2UgNjE6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0
XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTddLHhbNThdLHhbNTldKTsKKworfQorCitz
dGF0aWMgb2JqZWN0IGNfYXBwbHlfbjYxKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2Jq
ZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlf
bjYxKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJl
dHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAg
ICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1
XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhb
MjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLApAQCAtNTU2LDggKzk3NSwxNSBAQAog
ICAgICAgICAgeFszNl0seFszN10seFszOF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0sCiAgICAg
ICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4WzQ2XSx4WzQ3XSx4WzQ4XSx4WzQ5XSwKICAgICAgICAg
IHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdLHhbNTRdLHhbNTVdLHhbNTZdLAotICAgICAgICAgeFs1
N10seFs1OF0seFs1OV0seFs2MF0pO2JyZWFrOwotICAgIGNhc2UgNjI6ICByZXM9TENBU1QoZm4p
KHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTdd
LHhbNThdLHhbNTldLHhbNjBdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjYyKG9i
amVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxp
bmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjYyKG9iamVjdCAoKmZuKSgpLG9iamVjdCAq
eCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNd
LHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsx
Ml0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4
WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjdd
LHhbMjhdLApAQCAtNTY1LDggKzk5MSwxNSBAQAogICAgICAgICAgeFszNl0seFszN10seFszOF0s
eFszOV0seFs0MF0seFs0MV0seFs0Ml0sCiAgICAgICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4WzQ2
XSx4WzQ3XSx4WzQ4XSx4WzQ5XSwKICAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdLHhb
NTRdLHhbNTVdLHhbNTZdLAotICAgICAgICAgeFs1N10seFs1OF0seFs1OV0seFs2MF0seFs2MV0p
O2JyZWFrOwotICAgIGNhc2UgNjM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10s
eFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTddLHhbNThdLHhbNTldLHhbNjBdLHhb
NjFdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjYzKG9iamVjdCAoKikoKSxvYmpl
Y3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBv
YmplY3QKK2NfYXBwbHlfbjYzKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmpl
Y3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZd
LHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0s
CiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAg
ICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLApAQCAtNTc0
LDggKzEwMDcsMTUgQEAKICAgICAgICAgIHhbMzZdLHhbMzddLHhbMzhdLHhbMzldLHhbNDBdLHhb
NDFdLHhbNDJdLAogICAgICAgICAgeFs0M10seFs0NF0seFs0NV0seFs0Nl0seFs0N10seFs0OF0s
eFs0OV0sCiAgICAgICAgICB4WzUwXSx4WzUxXSx4WzUyXSx4WzUzXSx4WzU0XSx4WzU1XSx4WzU2
XSwKLSAgICAgICAgIHhbNTddLHhbNThdLHhbNTldLHhbNjBdLHhbNjFdLHhbNjJdKTticmVhazsK
LSAgICBjYXNlIDY0OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1
XSx4WzZdLHhbN10sCisgICAgICAgICB4WzU3XSx4WzU4XSx4WzU5XSx4WzYwXSx4WzYxXSx4WzYy
XSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X242NChvYmplY3QgKCopKCksb2JqZWN0
ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2Jq
ZWN0CitjX2FwcGx5X242NChvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0
IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4
WzddLAogICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAog
ICAgICAgICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCiAgICAg
ICAgICB4WzIyXSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSx4WzI4XSwKQEAgLTU4Myw4
ICsxMDIzLDg2IEBACiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQx
XSx4WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhdLHhb
NDldLAogICAgICAgICAgeFs1MF0seFs1MV0seFs1Ml0seFs1M10seFs1NF0seFs1NV0seFs1Nl0s
Ci0gICAgICAgICB4WzU3XSx4WzU4XSx4WzU5XSx4WzYwXSx4WzYxXSx4WzYyXSx4WzYzXSk7YnJl
YWs7Ci0gIGRlZmF1bHQ6IEZFZXJyb3IoIkV4Y2VlZGVkIGNhbGwtYXJndW1lbnRzLWxpbWl0ICIs
MCk7CisgICAgICAgICB4WzU3XSx4WzU4XSx4WzU5XSx4WzYwXSx4WzYxXSx4WzYyXSx4WzYzXSk7
CisKK30KKworLyogI2RlZmluZSBtam9pbihhLGIpIGEgIyMgYiAqLworLyogI2RlZmluZSBNam9p
bihhLGIpIG1qb2luKGEsYikgKi8KKworI2RlZmluZSBDQVNFX04oYSxiLGMpIGNhc2UgYyA6IHJl
dHVybiBNam9pbihjX2FwcGx5X24sYykoYSxiLE9CSk5VTEwsT0JKTlVMTCk7YnJlYWsKKworb2Jq
ZWN0CitjX2FwcGx5X24ob2JqZWN0ICgqZm4pKCksIGludCBuLCBvYmplY3QgKngpCit7b2JqZWN0
IHJlcz1DbmlsOworLyogIGNsZWFyX2Nfc3RhY2soJnJlcy00KihuKzE2KSk7ICovCisgc3dpdGNo
KG4peworICAgIENBU0VfTihmbix4LDApOworICAgIENBU0VfTihmbix4LDEpOworICAgIENBU0Vf
Tihmbix4LDIpOworICAgIENBU0VfTihmbix4LDMpOworICAgIENBU0VfTihmbix4LDQpOworICAg
IENBU0VfTihmbix4LDUpOworICAgIENBU0VfTihmbix4LDYpOworICAgIENBU0VfTihmbix4LDcp
OworICAgIENBU0VfTihmbix4LDgpOworICAgIENBU0VfTihmbix4LDkpOworICAgIENBU0VfTihm
bix4LDEwKTsKKyAgICBDQVNFX04oZm4seCwxMSk7CisgICAgQ0FTRV9OKGZuLHgsMTIpOworICAg
IENBU0VfTihmbix4LDEzKTsKKyAgICBDQVNFX04oZm4seCwxNCk7CisgICAgQ0FTRV9OKGZuLHgs
MTUpOworICAgIENBU0VfTihmbix4LDE2KTsKKyAgICBDQVNFX04oZm4seCwxNyk7CisgICAgQ0FT
RV9OKGZuLHgsMTgpOworICAgIENBU0VfTihmbix4LDE5KTsKKyAgICBDQVNFX04oZm4seCwyMCk7
CisgICAgQ0FTRV9OKGZuLHgsMjEpOworICAgIENBU0VfTihmbix4LDIyKTsKKyAgICBDQVNFX04o
Zm4seCwyMyk7CisgICAgQ0FTRV9OKGZuLHgsMjQpOworICAgIENBU0VfTihmbix4LDI1KTsKKyAg
ICBDQVNFX04oZm4seCwyNik7CisgICAgQ0FTRV9OKGZuLHgsMjcpOworICAgIENBU0VfTihmbix4
LDI4KTsKKyAgICBDQVNFX04oZm4seCwyOSk7CisgICAgQ0FTRV9OKGZuLHgsMzApOworICAgIENB
U0VfTihmbix4LDMxKTsKKyAgICBDQVNFX04oZm4seCwzMik7CisgICAgQ0FTRV9OKGZuLHgsMzMp
OworICAgIENBU0VfTihmbix4LDM0KTsKKyAgICBDQVNFX04oZm4seCwzNSk7CisgICAgQ0FTRV9O
KGZuLHgsMzYpOworICAgIENBU0VfTihmbix4LDM3KTsKKyAgICBDQVNFX04oZm4seCwzOCk7Cisg
ICAgQ0FTRV9OKGZuLHgsMzkpOworICAgIENBU0VfTihmbix4LDQwKTsKKyAgICBDQVNFX04oZm4s
eCw0MSk7CisgICAgQ0FTRV9OKGZuLHgsNDIpOworICAgIENBU0VfTihmbix4LDQzKTsKKyAgICBD
QVNFX04oZm4seCw0NCk7CisgICAgQ0FTRV9OKGZuLHgsNDUpOworICAgIENBU0VfTihmbix4LDQ2
KTsKKyAgICBDQVNFX04oZm4seCw0Nyk7CisgICAgQ0FTRV9OKGZuLHgsNDgpOworICAgIENBU0Vf
Tihmbix4LDQ5KTsKKyAgICBDQVNFX04oZm4seCw1MCk7CisgICAgQ0FTRV9OKGZuLHgsNTEpOwor
ICAgIENBU0VfTihmbix4LDUyKTsKKyAgICBDQVNFX04oZm4seCw1Myk7CisgICAgQ0FTRV9OKGZu
LHgsNTQpOworICAgIENBU0VfTihmbix4LDU1KTsKKyAgICBDQVNFX04oZm4seCw1Nik7CisgICAg
Q0FTRV9OKGZuLHgsNTcpOworICAgIENBU0VfTihmbix4LDU4KTsKKyAgICBDQVNFX04oZm4seCw1
OSk7CisgICAgQ0FTRV9OKGZuLHgsNjApOworICAgIENBU0VfTihmbix4LDYxKTsKKyAgICBDQVNF
X04oZm4seCw2Mik7CisgICAgQ0FTRV9OKGZuLHgsNjMpOworICAgIENBU0VfTihmbix4LDY0KTsK
KyAgICBkZWZhdWx0OiBGRWVycm9yKCJFeGNlZWRlZCBjYWxsLWFyZ3VtZW50cy1saW1pdCAiLDAp
OwogICB9IAogCiAgcmV0dXJuIHJlczsKSW5kZXg6IG8vZ2JjLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2c3Jvb3QvZ2NsL2djbC9vL2diYy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEzLjQu
Mi4yLjExLjQuMS4yLjEKZGlmZiAtdSAtcjEuMTMuNC4yLjIuMTEuNC4xLjIuMSBnYmMuYwotLS0g
by9nYmMuYwk1IEF1ZyAyMDA0IDIyOjMxOjM5IC0wMDAwCTEuMTMuNC4yLjIuMTEuNC4xLjIuMQor
Kysgby9nYmMuYwkzIEp1biAyMDA1IDA0OjA1OjMzIC0wMDAwCkBAIC0xNjgsNyArMTY4LDcgQEAK
IAogI2VuZGlmCiAKLSNkZWZpbmUJc3ltYm9sX21hcmtlZCh4KQkoKHgpLT5kLm0pCisvKiAjZGVm
aW5lCXN5bWJvbF9tYXJrZWQoeCkJKCh4KS0+ZC5tKSAqLwogCiBvYmplY3QgKm1hcmtfb3JpZ2lu
W01BUktfT1JJR0lOX01BWF07CiBpbnQgbWFya19vcmlnaW5fbWF4OwpAQCAtMjA5LDMyICsyMDks
NDEgQEAKIC8qICAgbWFya19vcmlnaW5fYmxvY2tbbWFya19vcmlnaW5fYmxvY2tfbWF4KytdLm1v
Yl9zaXplID0gbjsgKi8KIC8qIH0gKi8KIAorc3RhdGljIHZvaWQgKm1jc2gsKm1jc2w7CisKIHN0
YXRpYyB2b2lkCiBtYXJrX2NvbnMob2JqZWN0IHgpIHsKICAgCiAgIGNzX2NoZWNrKHgpOwogICAK
KyNpZiBDU1RBQ0tfRElSRUNUSU9OID09IC0xCisgIGlmIChtY3NsPih2b2lkICopJngpCisjZWxz
ZQorICBpZiAobWNzbDwodm9pZCAqKSZ4KQorI2VuZGlmCisgICAgbWNzbD0meDsKKwogICAvKiAg
eCBpcyBhbHJlYWR5IG1hcmtlZC4gICovCiAgIAogIEJFR0lOOiAgCiAgIGlmIChOVUxMX09SX09O
X0NfU1RBQ0soeC0+Yy5jX2NhcikpIGdvdG8gTUFSS19DRFI7CiAgIGlmICh0eXBlX29mKHgtPmMu
Y19jYXIpID09IHRfY29ucykgewotICAgIGlmICh4LT5jLmNfY2FyLT5jLm0pCisgICAgaWYgKGlz
X21hcmtlZF9vcl9mcmVlKHgtPmMuY19jYXIpKQogICAgICAgOwogICAgIGVsc2UgewotICAgICAg
eC0+Yy5jX2Nhci0+Yy5tID0gVFJVRTsKKyAgICAgIG1hcmsoeC0+Yy5jX2Nhcik7CiAgICAgICBt
YXJrX2NvbnMoeC0+Yy5jX2Nhcik7CiAgICAgfQogICB9IGVsc2UKICAgICBtYXJrX29iamVjdCh4
LT5jLmNfY2FyKTsKICBNQVJLX0NEUjogIAotICB4ID0geC0+Yy5jX2NkcjsKLSAgaWYgKE5VTExf
T1JfT05fQ19TVEFDSyh4KSkKKyAgaWYgKE5VTExfT1JfT05fQ19TVEFDSyh4LT5jLmNfY2RyKSkK
ICAgICByZXR1cm47CisgIHggPSBTY2RyKHgpOwogICBpZiAodHlwZV9vZih4KSA9PSB0X2NvbnMp
IHsKLSAgICBpZiAoeC0+Yy5tKQorICAgIGlmIChpc19tYXJrZWRfb3JfZnJlZSh4KSkKICAgICAg
IHJldHVybjsKLSAgICB4LT5jLm0gPSBUUlVFOworICAgIG1hcmsoeCk7CiAgICAgZ290byBCRUdJ
TjsKICAgfQogICBpZiAoeCA9PSBDbmlsKQpAQCAtMjU1LDYgKzI2NCwxMyBAQAogICBjaGFyICpj
cDsKICAgCiAgIGNzX2NoZWNrKHgpOworI2lmIENTVEFDS19ESVJFQ1RJT04gPT0gLTEKKyAgaWYg
KG1jc2w+KHZvaWQgKikmY3ApCisjZWxzZQorICBpZiAobWNzbDwodm9pZCAqKSZjcCkKKyNlbmRp
ZgorICAgIG1jc2w9JmNwOworCiAgQkVHSU46CiAgIC8qIGlmIHRoZSBib2R5IG9mIHggaXMgaW4g
dGhlIGMgc3RhY2ssIGl0cyBlbGVtZW50cwogICAgICBhcmUgbWFya2VkIGFueXdheSBieSB0aGUg
YyBzdGFjayBtYXJrIGNhcmVmdWxseSwgYW5kCkBAIC0yNjQsOSArMjgwLDkgQEAKICAgCiAgIGlm
IChOVUxMX09SX09OX0NfU1RBQ0soeCkpCiAgICAgcmV0dXJuOwotICBpZiAoeC0+ZC5tKQorICBp
ZiAoaXNfbWFya2VkX29yX2ZyZWUoeCkpCiAgICAgcmV0dXJuOwotICB4LT5kLm0gPSBUUlVFOwor
ICBtYXJrKHgpOwogICBzd2l0Y2ggKHR5cGVfb2YoeCkpIHsKICAgY2FzZSB0X2ZpeG51bToKICAg
ICBicmVhazsKQEAgLTU4OCw4ICs2MDQsMjMgQEAKICAgICAgIGVycm9yKCJtYXJrIHN0cmVhbSBi
b3RjaCIpOwogICAgIH0KICAgICBicmVhazsKLSAgICAKKworI2RlZmluZSBNQVJLX0NQKGFfLGJf
KSB7aW50IF90PShiXyk7aWYgKGluaGVhcChhXykpIHtcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAod2hhdF90b19jb2xsZWN0ID09IHRfY29udGlndW91cykgbWFya19jb250YmxvY2so
KHZvaWQgKikoYV8pLF90KTtcCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgKGFfKT0o
dm9pZCAqKWNvcHlfcmVsYmxvY2soKHZvaWQgKikoYV8pLF90KTt9CisKKyNkZWZpbmUgTUFSS19N
UChhXykge2lmICgoYV8pLT5fbXBfZCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgTUFSS19D
UCgoYV8pLT5fbXBfZCwoYV8pLT5fbXBfYWxsb2MqTVBfTElNQl9TSVpFKTt9CisKICAgY2FzZSB0
X3JhbmRvbToKKyAgICBpZiAoKGludCl3aGF0X3RvX2NvbGxlY3QgPj0gKGludCl0X2NvbnRpZ3Vv
dXMpIHsKKyAgICAgIE1BUktfTVAoeC0+cm5kLnJuZF9zdGF0ZS5fbXBfc2VlZCk7CisgICAgICBp
ZiAoeC0+cm5kLnJuZF9zdGF0ZS5fbXBfYWxnZGF0YS5fbXBfbGMpIHsKKwlNQVJLX01QKHgtPnJu
ZC5ybmRfc3RhdGUuX21wX2FsZ2RhdGEuX21wX2xjLT5fbXBfYSk7CisJTUFSS19NUCh4LT5ybmQu
cm5kX3N0YXRlLl9tcF9hbGdkYXRhLl9tcF9sYy0+X21wX20pOworCU1BUktfQ1AoeC0+cm5kLnJu
ZF9zdGF0ZS5fbXBfYWxnZGF0YS5fbXBfbGMsc2l6ZW9mKCp4LT5ybmQucm5kX3N0YXRlLl9tcF9h
bGdkYXRhLl9tcF9sYykpOworICAgICAgfQorICAgIH0KICAgICBicmVhazsKICAgICAKICAgY2Fz
ZSB0X3JlYWR0YWJsZToKQEAgLTY1NSw2ICs2ODYsNyBAQAogICAgIG1hcmtfb2JqZWN0KHgtPmNj
LmNjX25hbWUpOwogICAgIG1hcmtfb2JqZWN0KHgtPmNjLmNjX2Vudik7CiAgICAgbWFya19vYmpl
Y3QoeC0+Y2MuY2NfZGF0YSk7CisgICAgaWYgKHgtPmNjLmNjX3R1cmJvIT1OVUxMKSBtYXJrX29i
amVjdCgqKHgtPmNjLmNjX3R1cmJvLTEpKTsKICAgICBpZiAod2hhdF90b19jb2xsZWN0ID09IHRf
Y29udGlndW91cykgewogICAgICAgaWYgKHgtPmNjLmNjX3R1cmJvICE9IE5VTEwpCiAJbWFya19j
b250YmxvY2soKGNoYXIgKikoeC0+Y2MuY2NfdHVyYm8tMSksCkBAIC02NzgsNyArNzEwLDcgQEAK
IHN0YXRpYyB2b2lkCiBtYXJrX3N0YWNrX2NhcmVmdWxseSh2b2lkICp0b3B2LCB2b2lkICpib3R0
b212LCBpbnQgb2Zmc2V0KSB7CiAKLSAgbG9uZyBtLHBhZ2VvZmZzZXQ7CisgIGxvbmcgcGFnZW9m
ZnNldDsKICAgdW5zaWduZWQgbG9uZyBwOwogICBvYmplY3QgeDsKICAgc3RydWN0IHR5cGVtYW5h
Z2VyICp0bTsKQEAgLTcwOCwxNCArNzQwLDE1IEBACiAJICgocGFnZW9mZnNldD0oKGNoYXIgKikq
aiAtIHBhZ2V0b2NoYXIocCkpKSAlCiAJICB0bS0+dG1fc2l6ZSkpOwogICAgICAgaWYgKChwYWdl
b2Zmc2V0IDwgICh0bS0+dG1fc2l6ZSAqIHRtLT50bV9ucHBhZ2UpKQotCSAgJiYgKG09eC0+ZC5t
KSAhPSBGUkVFKSB7Ci0JaWYgKG09PVRSVUUpIGNvbnRpbnVlOwotCWlmIChtIT0wKSB7Ci0JICBm
cHJpbnRmKHN0ZG91dCwKLQkJICAiKipiYWQgdmFsdWUgJWxkIG9mIGQubSBpbiBnYmMgcGFnZSAl
bGQgc2tpcHBpbmcgbWFyayoqIgotCQkgICxtLHApO2ZmbHVzaChzdGRvdXQpOwotCSAgY29udGlu
dWU7Ci0JfQorCSAgJiYgIWlzX21hcmtlZF9vcl9mcmVlKHgpKSB7CisvKiAJICAmJiAobT14LT5k
LmYpICE9IEZSRUUpIHsgKi8KKy8qIAlpZiAobSAmIFRSVUUpIGNvbnRpbnVlOyAqLworLyogCWlm
IChtIT0wKSB7ICovCisvKiAJICBmcHJpbnRmKHN0ZG91dCwgKi8KKy8qIAkJICAiKipiYWQgdmFs
dWUgJWxkIG9mIGQubSBpbiBnYmMgcGFnZSAlbGQgc2tpcHBpbmcgbWFyayoqIiAqLworLyogCQkg
ICxtLHApO2ZmbHVzaChzdGRvdXQpOyAqLworLyogCSAgY29udGludWU7ICovCisvKiAJfSAqLwog
CW1hcmtfb2JqZWN0KHgpOwogICAgICAgfQogICAgIH0KQEAgLTkwNCw3ICs5MzcsOCBAQAogICAg
IHsKICAgICAgICBleHRlcm4gdm9pZCAqIF9fbGliY19pYTY0X3JlZ2lzdGVyX2JhY2tpbmdfc3Rv
cmVfYmFzZTsKICAgICAgICB2b2lkICogYnN0PUdDX3NhdmVfcmVnc19pbl9zdGFjaygpOwotICAg
ICAgIHZvaWQgKiBic2I9X19saWJjX2lhNjRfcmVnaXN0ZXJfYmFja2luZ19zdG9yZV9iYXNlOwor
LyogICAgICAgIHZvaWQgKiBic2I9X19saWJjX2lhNjRfcmVnaXN0ZXJfYmFja2luZ19zdG9yZV9i
YXNlOyAqLworICAgICAgIHZvaWQgKiBic2I9Y3Nfb3JnMjsKIAogICAgICAgIGlmIChic2I+YnN0
KQogICAgICAgICAgICgqZm4pKGJzYixic3QsQ19HQ19PRkZTRVQpOwpAQCAtOTI1LDggKzk1OSw4
IEBACiAgIFNUQVRJQyBzdHJ1Y3QgdHlwZW1hbmFnZXIgKnRtOwogICBTVEFUSUMgb2JqZWN0IGY7
CiAgIAotICBDbmlsLT5zLm0gPSBGQUxTRTsKLSAgQ3QtPnMubSA9IEZBTFNFOworICB1bm1hcmso
Q25pbCk7CisgIHVubWFyayhDdCk7CiAgIAogI2lmZGVmIERFQlVHCiAgIGlmIChkZWJ1ZykKQEAg
LTk2NCwxMCArOTk4LDEwIEBACiAgICAgayA9IDA7CiAgICAgZm9yIChqID0gdG0tPnRtX25wcGFn
ZTsgaiA+IDA7IC0taiwgcCArPSB0bS0+dG1fc2l6ZSkgewogICAgICAgeCA9IChvYmplY3QpcDsK
LSAgICAgIGlmICh4LT5kLm0gPT0gRlJFRSkKKyAgICAgIGlmIChpc19mcmVlKHgpKQogCWNvbnRp
bnVlOwotICAgICAgZWxzZSBpZiAoeC0+ZC5tKSB7Ci0JeC0+ZC5tID0gRkFMU0U7CisgICAgICBl
bHNlIGlmIChpc19tYXJrZWQoeCkpIHsKKwl1bm1hcmsoeCk7CiAJY29udGludWU7CiAgICAgICB9
CiAgICAgICAvKiAgIFNpbmNlIHdlIG5vdyBtYXJrIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgb24g
ZGlzcGxhY2VkCkBAIC05ODUsMTIgKzEwMTksMTIgQEAKICAgICAgIC8qCQkJKChzdHJ1Y3QgZnJl
ZWxpc3QgKil4KS0+Zl9saW5rID0gZjsgKi8KICAgICAgIAogI2lmZGVmIEdNUF9VU0VfTUFMTE9D
Ci0gICAgICBpZiAoeC0+ZC50ID09IHRfYmlnbnVtKSB7CisgICAgICBpZiAodHlwZV9vZih4KSA9
PSB0X2JpZ251bS8qICB4LT5kLnQgPT0gdF9iaWdudW0gKi8pIHsKIAltcHpfY2xlYXIoTVAoeCkp
OwogICAgICAgfQogI2VuZGlmCiAgICAgICBTRVRfTElOSyh4LGYpOwotICAgICAgeC0+ZC5tID0g
RlJFRTsKKyAgICAgIG1ha2VfZnJlZSh4KTsKICAgICAgIGYgPSB4OwogICAgICAgaysrOwogICAg
IH0KQEAgLTEwNjMsNiArMTA5Nyw5IEBACiBpbnQgKCpHQkNfZXhpdF9ob29rKSgpID0gTlVMTDsK
IGNoYXIgKm9sZF9yYl9zdGFydDsKIAorI2RlZmluZSBPUFRJTUlaRV9NQVhfUEFHRVMgKHNTQW9w
dGltaXplX21heGltdW1fcGFnZXNBID09MCB8fCBzU0FvcHRpbWl6ZV9tYXhpbXVtX3BhZ2VzQS0+
cy5zX2RiaW5kICE9c0xuaWwpIAorI2RlZmluZSBJR05PUkVfTUFYX1BBR0VTIChzU0FpZ25vcmVf
bWF4aW11bV9wYWdlc0EgPT0wIHx8IHNTQWlnbm9yZV9tYXhpbXVtX3BhZ2VzQS0+cy5zX2RiaW5k
ICE9c0xuaWwpIAorCiB2b2lkCiBHQkMoZW51bSB0eXBlIHQpIHsKIApAQCAtMTA3NSw2ICsxMTEy
LDggQEAKICAgaW50IHRtPTA7CiAjZW5kaWYKICAgCisgIG1jc2w9bWNzaD0mdG07CisKICAgaWYg
KGluX3NpZ25hbF9oYW5kbGVyICYmIHQgPT0gdF9yZWxvY2F0YWJsZSkKICAgICBlcnJvcigiY2Fu
dCBnYyByZWxvY2F0YWJsZSBpbiBzaWduYWwgaGFuZGxlciIpOwogICAKQEAgLTEzNDIsNiArMTM4
MSwxMSBAQAogCWV4aXQoMSk7CiAgICAgICB9CiAgICAgY29yZV9lbmQgPSBoZWFwX2VuZCArIFBB
R0VTSVpFOworICAgIHsKKyAgICAgIHVuc2lnbmVkIGxvbmcgb2xkX25ld19ob2xlcGFnZT1uZXdf
aG9sZXBhZ2U7CisgICAgICBuZXdfaG9sZXBhZ2U9Q09SRV9QQUdFUy9IT0xFRElWOworICAgICAg
aWYgKGF2YWlsYWJsZV9wYWdlczwxKSBuZXdfaG9sZXBhZ2U9b2xkX25ld19ob2xlcGFnZTsKKyAg
ICB9CiAgICAgCiAvKiAgICAgZm9yIChpID0gMDsgIGkgPCBtYXhwYWdlOyAgaSsrKSAqLwogLyog
ICAgICAgaWYgKChlbnVtIHR5cGUpdHlwZV9tYXBbaV0gPT0gdF9jb250aWd1b3VzKSAqLwpAQCAt
MTM1OCw3ICsxNDAyLDcgQEAKICAgICBpZiAoc2djX2VuYWJsZWQ9PTApIAogI2VuZGlmCiAgICAg
ICB7aG9sZXBhZ2UgPSBuZXdfaG9sZXBhZ2U7Ci0gICAgICBucmJwYWdlID0gSU5JVF9OUkJQQUdF
O30KKyAgICAgIG5yYnBhZ2UgPSBDT1JFX1BBR0VTL0lOSVRfTlJCRElWO30KICAgICAKICAgICBp
ZiAobnJicGFnZSA8IDApCiAgICAgICBlcnJvcigibm8gcmVsb2NhdGFibGUgcGFnZXMgbGVmdCIp
OwpAQCAtMTM4NCwxMSArMTQyOCw1MiBAQAogCiAgIH0KICAgCisgIHsKKyAgICBleHRlcm4gaW50
IGhvbGVfb3ZlcnJ1bjsKKworICAgIGlmICghaG9sZV9vdmVycnVuICYmIElHTk9SRV9NQVhfUEFH
RVMgJiYgT1BUSU1JWkVfTUFYX1BBR0VTKQorICAgICAgb3B0X21heHBhZ2UodG1fdGFibGUrdCk7
CisKKyAgfQorCisgIFpBTExPQ0EoYWJzKG1jc2wtbWNzaCkpOwogICAKICAgQ0hFQ0tfSU5URVJS
VVBUOworCisKIH0KIAogc3RhdGljIHZvaWQKK0ZGTihzaUxoZWFwX3JlcG9ydCkodm9pZCkgewor
CisgIGludCBpOworICAKKyAgY2hlY2tfYXJnKDApOworICAKKyAgdnNfY2hlY2tfcHVzaChtYWtl
X2ZpeG51bShzaXplb2Yod29yZCkqOCkpOworICB2c19wdXNoKG1ha2VfZml4bnVtKFBBR0VTSVpF
KSk7CisgIHZzX3B1c2gobWFrZV9maXhudW0oREJFR0lOKSk7CisgIHZzX3B1c2gobWFrZV9maXhu
dW0oREJFR0lOKyhNQVhQQUdFPDxQQUdFV0lEVEgpKSk7CisgIHZzX3B1c2gobWFrZV9maXhudW0o
U0hBUkVEX0xJQl9IRUFQX0NFSUxJTkcpKTsKKyAgaT1zaXplb2Yod29yZCkqOC0yOworICBpPTE8
PGk7CisgIHZzX3B1c2gobWFrZV9maXhudW0oKCh1bnNpZ25lZCBsb25nKWNzX2Jhc2UraS0xKSYt
aSkpOworICB2c19wdXNoKG1ha2VfZml4bnVtKGFicyhjc19iYXNlLWNzX29yZykpKTsKKyAgdnNf
cHVzaChtYWtlX2ZpeG51bShDU1RBQ0tfRElSRUNUSU9OKSk7CisgIHZzX3B1c2gobWFrZV9maXhu
dW0oQ1NUQUNLX0FMSUdOTUVOVCkpOworICB2c19wdXNoKG1ha2VfZml4bnVtKENTU0laRSkpOwor
I2lmIGRlZmluZWQoSU1fRklYX0JBU0UpICYmIGRlZmluZWQoSU1fRklYX0xJTSkKKyAgdnNfcHVz
aChtYWtlX2ZpeG51bShJTV9GSVhfQkFTRSkpOworICB2c19wdXNoKG1ha2VfZml4bnVtKElNX0ZJ
WF9MSU0pKTsKKyNlbHNlICAKKyAgdnNfcHVzaChDbmlsKTsKKyAgdnNfcHVzaChDbmlsKTsKKyNl
bmRpZgorCit9ICAKKworCitzdGF0aWMgdm9pZAogRkZOKHNpTHJvb21fcmVwb3J0KSh2b2lkKSB7
CiAKICAgaW50IGk7CkBAIC0xNDE3LDEyICsxNTAyLDE0IEBACiAgICAgICB2c19wdXNoKG1ha2Vf
Zml4bnVtKHRtX3RhYmxlW2ldLnRtX25wYWdlKSk7CiAgICAgICB2c19wdXNoKG1ha2VfZml4bnVt
KHRtX3RhYmxlW2ldLnRtX21heHBhZ2UpKTsKICAgICAgIHZzX3B1c2gobWFrZV9maXhudW0odG1f
dGFibGVbaV0udG1fZ2JjY291bnQpKTsKKyAgICAgIHZzX3B1c2gobWFrZV9maXhudW0odG1fdGFi
bGVbaV0udG1fc2l6ZS9zaXplb2Yod29yZCkpKTsKICAgICB9IGVsc2UgewogICAgICAgdnNfY2hl
Y2tfcHVzaChDbmlsKTsKICAgICAgIHZzX3B1c2gobWFrZV9maXhudW0odG1fdGFibGVbaV0udG1f
dHlwZSkpOwogICAgICAgdnNfcHVzaChDbmlsKTsKICAgICAgIHZzX3B1c2goQ25pbCk7CiAgICAg
ICB2c19wdXNoKENuaWwpOworICAgICAgdnNfcHVzaChDbmlsKTsKICAgICB9CiAgIH0KIH0KQEAg
LTE1MTUsNiArMTYwMiw3IEBACiBnY2xfaW5pdF9HQkModm9pZCkgewogCiAgIG1ha2Vfc2lfZnVu
Y3Rpb24oIlJPT00tUkVQT1JUIiwgc2lMcm9vbV9yZXBvcnQpOworICBtYWtlX3NpX2Z1bmN0aW9u
KCJIRUFQLVJFUE9SVCIsIHNpTGhlYXBfcmVwb3J0KTsKICAgbWFrZV9zaV9mdW5jdGlvbigiUkVT
RVQtR0JDLUNPVU5UIiwgc2lMcmVzZXRfZ2JjX2NvdW50KTsKICAgbWFrZV9zaV9mdW5jdGlvbigi
R0JDLVRJTUUiLHNpTGdiY190aW1lKTsKICAgCkluZGV4OiBvL2djbF9yZWFkbGluZS5kCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9nY2xfcmVhZGxpbmUuZCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4xLjIuNgpkaWZmIC11IC1yMS4xLjIuNiBnY2xfcmVhZGxpbmUuZAot
LS0gby9nY2xfcmVhZGxpbmUuZAk5IE1hciAyMDA0IDAyOjE1OjQyIC0wMDAwCTEuMS4yLjYKKysr
IG8vZ2NsX3JlYWRsaW5lLmQJMyBKdW4gMjAwNSAwNDowNTozMyAtMDAwMApAQCAtMTQwLDcgKzE0
MCwxMSBAQAogICAgICAgaWYgKHRlbXA9PXRlbXAxKSAKIAlwYWNrYWdlPSh0ZW1wWzFdPT0nOicp
ID8gc0xBcGFja2FnZUEtPnMuc19kYmluZCA6IGtleXdvcmRfcGFja2FnZTsKICAgICAgIGVsc2Ug
ewotCXN0cnVjdCBzdHJpbmcgcz17dF9zdHJpbmcsMCwwLDAsT0JKTlVMTCwxLDAsKGNoYXIgKil0
ZW1wMSx0ZW1wLXRlbXAxfTsKKwlzdHJ1Y3Qgc3RyaW5nIHM7LyogPXt0X3N0cmluZywwLDAsMCwx
LDAsT0JKTlVMTCwxLDAsKGNoYXIgKil0ZW1wMSx0ZW1wLXRlbXAxfTsgKi8KKwlzZXRfdHlwZV9v
Zigmcyx0X3N0cmluZyk7CisJcy5zdF9zZWxmPShjaGFyICopdGVtcDE7CisJcy5zdF9maWxscD1z
LnN0X2RpbT10ZW1wLXRlbXAxOworCXMuc3RfaGFzZmlsbHA9MTsKIAlwYWNrYWdlPWZpbmRfcGFj
a2FnZSgob2JqZWN0KSZzKTsKICAgICAgIH0KICAgICB9CkluZGV4OiBvL2hhc2guZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vaGFzaC5kLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjkuNi4yCmRpZmYgLXUgLXIxLjkuNi4yIGhhc2guZAotLS0gby9oYXNoLmQJNiBOb3Yg
MjAwMyAxNjoxNjo1MCAtMDAwMAkxLjkuNi4yCisrKyBvL2hhc2guZAkzIEp1biAyMDA1IDA0OjA1
OjMzIC0wMDAwCkBAIC04NiwxMiArODYsMTQgQEAKIAl9CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBp
bnQKLWloYXNoX2VxdWFsKHgsZGVwdGgpCisjZGVmaW5lIGloYXNoX2VxdWFsKGFfLGJfKSAoKHR5
cGVfb2YoYV8pPT10X3N5bWJvbCAmJiAoYV8pLT5zLnNfaGFzaCkgPyAoYV8pLT5zLnNfaGFzaCA6
IGloYXNoX2VxdWFsMShhXyxiXykpCit1bnNpZ25lZCBsb25nCitpaGFzaF9lcXVhbDEoeCxkZXB0
aCkKIG9iamVjdCB4OwogaW50IGRlcHRoOwogewotCXVuc2lnbmVkIGludCBoID0gMDsKKyAgICAg
ICAgZW51bSB0eXBlIHR4OworCXVuc2lnbmVkIGxvbmcgaCA9IDA7CiAJaW50IGk7CiAJY2hhciAq
czsKIApAQCAtOTksMzAgKzEwMSwzMyBAQAogCiBCRUdJTjoKIAlpZiAoZGVwdGgrKyA+MykgcmV0
dXJuIGg7Ci0Jc3dpdGNoICh0eXBlX29mKHgpKSB7CisJc3dpdGNoICgodHg9dHlwZV9vZih4KSkp
IHsKIAljYXNlIHRfY29uczoKIAkJaCArPSBpaGFzaF9lcXVhbCh4LT5jLmNfY2FyLGRlcHRoKTsK
IAkJeCA9IHgtPmMuY19jZHI7CiAJCWdvdG8gQkVHSU47CiAKLQljYXNlIHRfc3RyaW5nOgotCQlm
b3IgKGkgPSB4LT5zdC5zdF9maWxscCwgcyA9IHgtPnN0LnN0X3NlbGY7ICBpID4gMDsgIC0taSwg
cysrKQotCQkJaCArPSAoKnMgJiAwMzc3KSoxMjM0NSArIDE7Ci0JCXJldHVybihoKTsKKy8qIAkJ
Zm9yIChpID0geC0+c3Quc3RfZmlsbHAsIHMgPSB4LT5zdC5zdF9zZWxmOyAgaSA+IDA7ICAtLWks
IHMrKykgKi8KKy8qIAkJCWggKz0gKCpzICYgMDM3NykqMTIzNDUgKyAxOyAqLworLyogCQlyZXR1
cm4oaCk7ICovCiAJY2FzZSB0X3N5bWJvbDoKKwljYXNlIHRfc3RyaW5nOgogCQkvKiBjYXNlIHRf
c3RyaW5nIGNvdWxkIHNoYXJlIHRoaXMgY29kZS0td2ZzICovCi0JCXtpbnQgbGVuPXgtPnN0LnN0
X2ZpbGxwOworCQl7bG9uZyBsZW49eC0+c3Quc3RfZmlsbHA7CiAJCSBzPXgtPnN0LnN0X3NlbGY7
Ci0JCSBzd2l0Y2gobGVuKSB7Ci0JCSBjYXNlIDA6IGJyZWFrOwotCQkgZGVmYXVsdDoKLQkJIGNh
c2UgNDogaCs9IHNbLS1sZW5dIDw8IDI0OwotCQkgY2FzZSAzOiBoKz0gc1stLWxlbl08PCAxNjsK
LQkJIGNhc2UgMjogaCs9IHNbMV0gPDwgODsKLQkJIGNhc2UgMTogaCs9IHNbMF0gOworCQkgbGVu
PWxlbj5zaXplb2YobGVuKSA/IHNpemVvZihsZW4pIDogbGVuOworCQkgZm9yIChzKz1sZW4tMTts
ZW4tLTtzLS0pCisJCSAgIGgrPSAqcyA8PCA4KmxlbjsKKy8qIAkJIHN3aXRjaChsZW4pIHsgKi8K
Ky8qIAkJIGNhc2UgMDogYnJlYWs7ICovCisvKiAJCSBkZWZhdWx0OiAqLworLyogCQkgY2FzZSA0
OiBoKz0gc1stLWxlbl0gPDwgMjQ7ICovCisvKiAJCSBjYXNlIDM6IGgrPSBzWy0tbGVuXTw8IDE2
OyAqLworLyogCQkgY2FzZSAyOiBoKz0gc1sxXSA8PCA4OyAqLworLyogCQkgY2FzZSAxOiBoKz0g
c1swXSA7ICovCiAJCSAgIAogCQkgICAKLQkJIH0KKy8qIAkJIH0gKi8KIAkJIHJldHVybihoKTsK
IAkgICAgICAgfQogCQkgICAKQEAgLTE5OCw3ICsyMDMsOCBAQAogCWludCBoc2l6ZTsKIAlzdHJ1
Y3QgaHRlbnQgKmU7CiAJb2JqZWN0IGhrZXk7Ci0JaW50IGk9MCwgaiA9IC0xLCBrOyAvKiBrIGFk
ZGVkIGJ5IGNob3UgKi8KKwlpbnQgaiA9IC0xLCBrOyAvKiBrIGFkZGVkIGJ5IGNob3UgKi8KKwl1
bnNpZ25lZCBsb25nIGk9MDsKIAlib29sIGI9RkFMU0U7CiAKIAlodGVzdCA9IChlbnVtIGh0dGVz
dCloYXNodGFibGUtPmh0Lmh0X3Rlc3Q7CkBAIC00NTgsNyArNDY0LDcgQEAKIHsKIAljaGVja19h
cmcoMSk7CiAKLQl2c19iYXNlWzBdID0gbWFrZV9maXhudW0oKGloYXNoX2VxdWFsKHZzX2Jhc2Vb
MF0sMCkgJiAweDdmZmZmZmZmKSk7CisJdnNfYmFzZVswXSA9IG1ha2VfZml4bnVtKChpaGFzaF9l
cXVhbCh2c19iYXNlWzBdLDApLyogICYgMHg3ZmZmZmZmZiAqLykpOwogfQogCiBMRkQoTG1hcGhh
c2gpKCkKSW5kZXg6IG8vbGlzdC5kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9n
Y2wvby9saXN0LmQsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTkuNC4xLjQuMgpkaWZmIC11IC1y
MS4xOS40LjEuNC4yIGxpc3QuZAotLS0gby9saXN0LmQJNiBOb3YgMjAwMyAxNjoxNjo1MCAtMDAw
MAkxLjE5LjQuMS40LjIKKysrIG8vbGlzdC5kCTMgSnVuIDIwMDUgMDQ6MDU6MzMgLTAwMDAKQEAg
LTI1MSw4ICsyNTEsOCBAQAogIHA9KHN0cnVjdCBjb25zICopIHJlczsKICBpZiAobjw9MCkgcmV0
dXJuIENuaWw7CiAgVE9QOgotIHAtPnQgPSAoaW50KXRfY29uczsKLSBwLT5tPUZBTFNFOworLyog
IHAtPnQgPSAoaW50KXRfY29uczsgKi8KKy8qICBwLT5tPUZBTFNFOyAqLwogIHAtPmNfY2FyPSBq
aiA/IHZhX2FyZyhhcCxvYmplY3QpIDogZmlyc3Q7CiAgamo9MTsKICBpZiAoLS1uID09IDApCkBA
IC0zMzMsMTUgKzMzMywxNSBAQAogICAgICAge2lmIChpIDwgbikKICAgICAgICB0YWlsLT5jLmNf
Y2RyPU9CSl9MSU5LKHRhaWwpOwogICAgICAgIGVsc2Uge3RtLT50bV9mcmVlPU9CSl9MSU5LKHRh
aWwpOwotCSAgICAgdGFpbC0+ZC50ID0gKGludCl0X2NvbnM7Ci0JICAgICB0YWlsLT5kLm0gPSBG
QUxTRTsKKwkgICAgIHNldF90eXBlX29mKHRhaWwsdF9jb25zKTsvKiAgdGFpbC0+ZC50ID0gKGlu
dCl0X2NvbnM7ICovCisJICAgICB0YWlsLT5kLmYgPSB0YWlsLT5kLm0gPSAwOwogCSAgICAgdGFp
bC0+Yy5jX2Nhcj12YV9hcmcoYXAsb2JqZWN0KTsgCiAJICAgICB0YWlsLT5jLmNfY2RyPUNuaWw7
CiAJICAgICBnb3RvIEVORF9JTlRFUiA7CiAJICAgfQogICAgICAgIC8qIHRoZXNlIGNvdWxkIGJl
IG9uZSBpbnN0cnVjdGlvbiovCi0gICAgICAgdGFpbC0+ZC50ID0gKGludCl0X2NvbnM7Ci0gICAg
ICAgdGFpbC0+ZC5tPUZBTFNFOworICAgICAgIHNldF90eXBlX29mKHRhaWwsdF9jb25zKTsvKiAg
dGFpbC0+ZC50ID0gKGludCl0X2NvbnM7ICovCisgICAgICAgdGFpbC0+ZC5mPXRhaWwtPmQubT0w
OwogICAgICAgIHRhaWwtPmMuY19jYXI9dmFfYXJnKGFwLG9iamVjdCk7CiAgICAgICAgdGFpbD10
YWlsLT5jLmNfY2RyOwogICAgICAgIGkrKzt9CkBAIC04NjUsOCArODY1LDggQEAKICBzdHJ1Y3Qg
Y29ucyAqcCA9IChzdHJ1Y3QgY29ucyAqKXJlczsKICBpZiAobjw9MCkgcmV0dXJuIENuaWw7CiAg
IFRPUDoKLSBwLT50ID0gKGludCl0X2NvbnM7Ci0gcC0+bT1GQUxTRTsKKy8qICBwLT50ID0gKGlu
dCl0X2NvbnM7ICovCisvKiAgcC0+bT1GQUxTRTsgKi8KICBwLT5jX2Nhcj1DbmlsOwogIGlmICgt
LW4gPT0gMCkKICAgIHtwLT5jX2NkciA9IENuaWw7CkBAIC04ODUsNyArODg1LDcgQEAKICByZXR1
cm4geDt9CiAKIEAoZGVmdW4gbWFrZV9saXN0IChzaXplICZrZXkgaW5pdGlhbF9lbGVtZW50ICZh
dXggeCkKLQlpbnQgaTsKKwlpbnQgaT0wOwogQAogCWNoZWNrX3R5cGVfbm9uX25lZ2F0aXZlX2lu
dGVnZXIoJnNpemUpOwogCWlmICh0eXBlX29mKHNpemUpICE9IHRfZml4bnVtKQpJbmRleDogby9t
YWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL21haW4uYyx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4yNi40LjEuMi4yMS42LjEKZGlmZiAtdSAtcjEuMjYuNC4xLjIu
MjEuNi4xIG1haW4uYwotLS0gby9tYWluLmMJNSBBdWcgMjAwNCAyMjoyNjo0OCAtMDAwMAkxLjI2
LjQuMS4yLjIxLjYuMQorKysgby9tYWluLmMJMyBKdW4gMjAwNSAwNDowNTozNCAtMDAwMApAQCAt
MTAxLDggKzEwMSw2IEBACiB1bnNpZ25lZCBpbnQgX3N0YWNrdG9wLCBfc3RhY2tib3R0b207CiAj
ZW5kaWYKIAotaW50IGNzc2l6ZTsKLQogI2lmZGVmIFNHQwogaW50IHNnY19lbmFibGVkOwogI2Vu
ZGlmCkBAIC0xMTEsMTEgKzEwOSwxMSBAQAogI2lmbmRlZiBTSUdfU1RBQ0tfU0laRQogI2RlZmlu
ZSBTSUdfU1RBQ0tfU0laRSAxMDAwCiAjZW5kaWYKLSNpZm5kZWYgU0VUVVBfU0lHX1NUQUNLCi0j
aWYgZGVmaW5lZChIQVZFX1NJR0FDVElPTikgfHwgZGVmaW5lZChIQVZFX1NJR1ZFQykKLSAgICAg
ICAgc3RydWN0IHNpZ3N0YWNrIGVzdGFjazsKLSNlbmRpZgotI2VuZGlmCisvKiAjaWZuZGVmIFNF
VFVQX1NJR19TVEFDSyAqLworLyogI2lmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pIHx8IGRlZmlu
ZWQoSEFWRV9TSUdWRUMpICovCisvKiBzdHJ1Y3Qgc2lnYWx0c3RhY2sgZXN0YWNrOyAqLworLyog
I2VuZGlmICovCisvKiAjZW5kaWYgKi8KIAogI2lmZGVmIE5FRURfTk9OUkFORE9NX1NCUksKICNp
bmNsdWRlIDxzeXNjYWxsLmg+CkBAIC0xMjMsNiArMTIxLDMyIEBACiAjaW5jbHVkZSA8dW5pc3Rk
Lmg+CiAjZW5kaWYKIAordm9pZCB3aXBlX3N0YWNrKFZPTCB2b2lkICopIF9fYXR0cmlidXRlX18g
KChub2lubGluZSkpOwordm9pZAord2lwZV9zdGFjayhWT0wgdm9pZCAqbCkgeworCisjaWYgQ1NU
QUNLX0RJUkVDVElPTiA9PSAtMQorICAgaWYgKGw+KHZvaWQgKikmbCkgYnplcm8oKHZvaWQgKikm
bCxsLSh2b2lkICopJmwpOworI2Vsc2UKKyAgbCs9c2l6ZW9mKGwpOworICBpZiAoKHZvaWQgKikm
bD5sKSBiemVybyhsLCh2b2lkICopJmwtbCk7CisjZW5kaWYKKworfQorCit2b2lkIGNsZWFyX2Nf
c3RhY2soVk9MIHVuc2lnbmVkKSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3ZvaWQKK2Ns
ZWFyX2Nfc3RhY2soVk9MIHVuc2lnbmVkIG4pIHsKKworICB2b2lkICp2PU9CSk5VTEw7CisgIGFs
bG9jYShuKTsKKyAgd2lwZV9zdGFjaygmdik7CisKK30KKworLypGSVhNRSB0aGlzIGlzIGp1c3Qg
aGVyZSBmb3IgcmVzZXQgY3N0YWNrIGxpbWl0LCB3aGljaCBuZWVkcyBhZGp1c3RpbmcuKi8KK3Vu
c2lnbmVkIGxvbmcgY3NzaXplPUNTU0laRTsKKwogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICoq
YXJndiwgY2hhciAqKmVudnApIHsKICNpZmRlZiBCU0QKQEAgLTIzMyw2ICsyNTcsNyBAQAogCX0K
IAogCUdCQ19lbmFibGUgPSBGQUxTRTsKKwlpbnN0YWxsX3NlZ21lbnRhdGlvbl9jYXRjaGVyKCk7
CiAKIAkvKiBpZiBzdGFja19zcGFjZSBub3QgemVybyB3ZSBoYXZlIGdyb3duIHRoZSBzdGFjayBz
cGFjZSAqLwogCWlmIChzdGFja19zcGFjZSA9PSAwKQpAQCAtMjU2LDM1ICsyODEsMzIgQEAKIAlp
aHNfdG9wID0gaWhzX29yZy0xOwogCWJkc190b3AgPSBiZHNfb3JnLTE7CiAJZnJzX3RvcCA9IGZy
c19vcmctMTsKLQljc19vcmcgPSAmYXJnYzsKLQotCWNzc2l6ZSA9IENTU0laRTsKLQlpbnN0YWxs
X3NlZ21lbnRhdGlvbl9jYXRjaGVyKCk7CisJY3Nfb3JnID0gY3NfYmFzZSA9ICZhcmdjOworI2lm
ZGVmIF9faWE2NF9fCisJY3Nfb3JnMj1jc19iYXNlMj1fX2xpYmNfaWE2NF9yZWdpc3Rlcl9iYWNr
aW5nX3N0b3JlX2Jhc2U7CisjZW5kaWYKIAogI2lmZGVmIEJTRAogI2lmZGVmIFJMSU1JVF9TVEFD
SwotCXsKLQkgIHVuc2lnbmVkIGxvbmcgbXNzOwotCSAgbXNzPTE2KnNpemVvZihzaG9ydCkqTUFY
UEFHRTsgLyogaS5lLiBzaG9ydCBmb29bTUFYUEFHRV0gb24gc3RhY2sgaW4gc2djX3N0YXJ0ICov
Ci0JICBpZiAoZ2V0cmxpbWl0KFJMSU1JVF9TVEFDSywgJnJsKSkKLQkgICAgZXJyb3IoIkNhbm5v
dCBnZXQgc3RhY2sgcmxpbWl0XG4iKTsKLQkgIGlmIChybC5ybGltX21heCAhPSBSTElNX0lORklO
SVRZICYmIHJsLnJsaW1fbWF4IDwgbXNzKQotCSAgICBtc3M9cmwucmxpbV9tYXg7Ci0JICBpZiAo
cmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSB8fCAKLQkgICAgICBybC5ybGltX2N1ciAhPSBt
c3MpIHsKLQkgICAgcmwucmxpbV9jdXI9bXNzOwotCSAgICBpZiAoc2V0cmxpbWl0KFJMSU1JVF9T
VEFDSywmcmwpKQotCSAgICAgIGVycm9yKCJDYW5ub3Qgc2V0IHN0YWNrIHJsaW1pdFxuIik7Ci0J
ICB9Ci0JICBjc3NpemUgPSBybC5ybGltX2N1ci9zaXplb2YoKmNzX29yZykgLSBzaXplb2YoKmNz
X29yZykqQ1NHRVRBOwotICAgICAgICB9Ci0KLQorCS8qIAkgIG1zcz0xNipzaXplb2Yoc2hvcnQp
Kk1BWFBBR0U7ICovIC8qIGkuZS4gc2hvcnQgZm9vW01BWFBBR0VdIG9uIHN0YWNrIGluIHNnY19z
dGFydCAqLworCWlmIChnZXRybGltaXQoUkxJTUlUX1NUQUNLLCAmcmwpKQorCSAgZXJyb3IoIkNh
bm5vdCBnZXQgc3RhY2sgcmxpbWl0XG4iKTsKKwlpZiAocmwucmxpbV9tYXggIT0gUkxJTV9JTkZJ
TklUWSAmJiBybC5ybGltX21heCA8IGNzc2l6ZSkKKwkgIGNzc2l6ZT1ybC5ybGltX21heDsKKwlp
ZiAocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSB8fCAKKwkgICAgcmwucmxpbV9jdXIgIT0g
Y3NzaXplKSB7CisJICBybC5ybGltX2N1cj1jc3NpemU7CisJICBpZiAoc2V0cmxpbWl0KFJMSU1J
VF9TVEFDSywmcmwpKQorCSAgICBlcnJvcigiQ2Fubm90IHNldCBzdGFjayBybGltaXRcbiIpOwor
CX0KKwljc3NpemUgPSBybC5ybGltX2N1cjsKKwkKKwkKIAkvKiBNYXliZSB0aGUgc29mdCBsaW1p
dCBmb3IgZGF0YSBzZWdtZW50IHNpemUgaXMgbG93ZXIgdGhhbiB0aGUKIAkgKiBoYXJkIGxpbWl0
LiAgSW4gdGhhdCBjYXNlLCB3ZSB3YW50IGFzIG11Y2ggYXMgcG9zc2libGUuCiAJICovCiAJaWYg
KGdldHJsaW1pdChSTElNSVRfREFUQSwgJnJsKSkKLQkgICAgZXJyb3IoIkNhbm5vdCBnZXQgZGF0
YSBybGltaXRcbiIpOworCSAgZXJyb3IoIkNhbm5vdCBnZXQgZGF0YSBybGltaXRcbiIpOwogCWlm
IChybC5ybGltX2N1ciAhPSBSTElNX0lORklOSVRZICYmCiAJICAgIChybC5ybGltX21heCA9PSBS
TElNX0lORklOSVRZIHx8CiAJICAgICBybC5ybGltX21heCA+IHJsLnJsaW1fY3VyKSkgewpAQCAt
MjkyLDE3ICszMTQsMTMgQEAKIAkgIGlmIChzZXRybGltaXQoUkxJTUlUX0RBVEEsICZybCkpCiAJ
ICAgIGVycm9yKCJDYW5ub3Qgc2V0IGRhdGEgcmxpbWl0XG4iKTsKIAl9Ci0KKwkKICNlbmRpZgkK
ICNlbmRpZgotCisJCiAjaWZkZWYgQVYKLQljc19saW1pdCA9IGNzX29yZyAtIGNzc2l6ZTsKKwlj
c19saW1pdCA9IGNzX2Jhc2UgKyBDU1RBQ0tfRElSRUNUSU9OICogY3NzaXplL3NpemVvZigqY3Nf
YmFzZSk7CiAjZW5kaWYKLSNpZmRlZiBNVgotCi0jZW5kaWYKLSAgICAgICAgCiAJc2V0X21heHBh
Z2UoKTsKICNpZmRlZiBTRVRVUF9TSUdfU1RBQ0sKIAlTRVRVUF9TSUdfU1RBQ0sKQEAgLTMxMCwx
NSArMzI4LDIwIEBACiAjaWYgZGVmaW5lZChIQVZFX1NJR0FDVElPTikgfHwgZGVmaW5lZChIQVZF
X1NJR1ZFQykKIAkgIHsKIAkgICAgLyogbWFrZSBzdXJlIHRoZSBzdGFjayBpcyA4IGJ5dGUgYWxp
Z25lZCAqLwotI2lmZGVmIFNFVEpNUF9PTkVfRElSRUNUSU9OCi0JICAgIHN0YXRpYwotI2VuZGlm
Ci0JICAgIGRvdWJsZSBlc3RhY2tfYnVmW1NJR19TVEFDS19TSVpFXTsKKy8qICNpZmRlZiBTRVRK
TVBfT05FX0RJUkVDVElPTiAqLworLyogCSAgICBzdGF0aWMgKi8KKy8qICNlbmRpZiAqLworCSAg
ICBzdGF0aWMgY2hhciBlc3RhY2tfYnVmWzMyKlNJR1NUS1NaXTsKKwkgICAgc3RhdGljIHN0cnVj
dCBzaWdhbHRzdGFjayBlc3RhY2s7CiAJICAgIAogCSAgICBiemVybyhlc3RhY2tfYnVmLHNpemVv
Zihlc3RhY2tfYnVmKSk7Ci0JICAgIGVzdGFjay5zc19zcCA9IChjaGFyICopICZlc3RhY2tfYnVm
W1NJR19TVEFDS19TSVpFLTFdOwotCSAgICBlc3RhY2suc3Nfb25zdGFjaz0wOwotCSAgICBzaWdz
dGFjaygmZXN0YWNrLDApOworCSAgICBlc3RhY2suc3Nfc3AgPSBlc3RhY2tfYnVmOworCSAgICBl
c3RhY2suc3NfZmxhZ3MgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJ
ICAgIGVzdGFjay5zc19zaXplID0gc2l6ZW9mKGVzdGFja19idWYpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCisJICAgIGlmIChzaWdhbHRzdGFjaygmZXN0YWNrLCAwKSA8IDApICAgICAg
ICAgICAgICAgICAgICAgICAKKwkgICAgICBwZXJyb3IoInNpZ2FsdHN0YWNrIik7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKKy8qIAkgICAgZXN0YWNrLnNzX29uc3RhY2s9MDsgKi8KKy8q
IAkgICAgc2lnc3RhY2soJmVzdGFjaywwKTsgKi8KIAkgIH0KICNlbmRpZgkKICNlbmRpZgkKQEAg
LTM2NSw2ICszODgsNyBAQAogI2lmZGVmIEhBVkVfUkVBRExJTkUKIAkJZ2NsX2luaXRfcmVhZGxp
bmVfZnVuY3Rpb24oKTsKICNlbmRpZgorLyogCQljbGVhcl9jX3N0YWNrKGFicyhjc19saW1pdC1j
c19vcmcpKTsgKi8KIAkgICAgICBhZ2FpbjoKIAkJc3VwZXJfZnVuY2FsbChzU3RvcF9sZXZlbCk7
CiAJCWlmICh0eXBlX29mKHNTQW11bHRpcGx5X3N0YWNrc0EtPnMuc19kYmluZCk9PXRfZml4bnVt
KSB7CkBAIC00NTksMzggKzQ4Myw0NyBAQAogCSAgfQogCWdjbF9pbml0X2FsbG9jKCk7CiAKLQlE
b3RuaWxfYm9keS50ID0gKHNob3J0KXRfc3ltYm9sOwotCURvdG5pbF9ib2R5LnNfZGJpbmQgPSBE
b3RuaWw7Ci0JRG90bmlsX2JvZHkuc19zZmRlZiA9IE5PVF9TUEVDSUFMOwotCURvdG5pbF9ib2R5
LnNfZmlsbHAgPSA2OwotCURvdG5pbF9ib2R5LnNfc2VsZiA9ICJET1ROSUwiOwotCURvdG5pbF9i
b2R5LnNfZ2ZkZWYgPSBPQkpOVUxMOwotCURvdG5pbF9ib2R5LnNfcGxpc3QgPSBDbmlsOwotCURv
dG5pbF9ib2R5LnNfaHBhY2sgPSBDbmlsOwotCURvdG5pbF9ib2R5LnNfc3R5cGUgPSAoc2hvcnQp
c3RwX2NvbnN0YW50OwotCURvdG5pbF9ib2R5LnNfbWZsYWcgPSBGQUxTRTsKKy8qIAlzZXRfdHlw
ZV9vZihEb3RuaWwsdF9zeW1ib2wpOyAqLworLyogCURvdG5pbF9ib2R5LnQgPSAoc2hvcnQpdF9z
eW1ib2w7ICovCisvKiAJRG90bmlsX2JvZHkuZSA9IDE7ICovCisJRG90bmlsLT5jLmNfY2RyPURv
dG5pbDsKKwlEb3RuaWwtPnMuc19kYmluZCA9IERvdG5pbDsKKwlEb3RuaWwtPnMuc19zZmRlZiA9
IE5PVF9TUEVDSUFMOworCURvdG5pbC0+cy5zX2ZpbGxwID0gNjsKKwlEb3RuaWwtPnMuc19zZWxm
ID0gIkRPVE5JTCI7CisJRG90bmlsLT5zLnNfZ2ZkZWYgPSBPQkpOVUxMOworCURvdG5pbC0+cy5z
X3BsaXN0ID0gQ25pbDsKKwlEb3RuaWwtPnMuc19ocGFjayA9IENuaWw7CisJRG90bmlsLT5zLnNf
c3R5cGUgPSAoc2hvcnQpc3RwX2NvbnN0YW50OworCURvdG5pbC0+cy5zX21mbGFnID0gRkFMU0U7
CiAJCi0JQ25pbF9ib2R5LnQgPSAoc2hvcnQpdF9zeW1ib2w7Ci0JQ25pbF9ib2R5LnNfZGJpbmQg
PSBDbmlsOwotCUNuaWxfYm9keS5zX3NmZGVmID0gTk9UX1NQRUNJQUw7Ci0JQ25pbF9ib2R5LnNf
ZmlsbHAgPSAzOwotCUNuaWxfYm9keS5zX3NlbGYgPSAiTklMIjsKLQlDbmlsX2JvZHkuc19nZmRl
ZiA9IE9CSk5VTEw7Ci0JQ25pbF9ib2R5LnNfcGxpc3QgPSBDbmlsOwotCUNuaWxfYm9keS5zX2hw
YWNrID0gQ25pbDsKLQlDbmlsX2JvZHkuc19zdHlwZSA9IChzaG9ydClzdHBfY29uc3RhbnQ7Ci0J
Q25pbF9ib2R5LnNfbWZsYWcgPSBGQUxTRTsKKy8qIAlzZXRfdHlwZV9vZihDbmlsLHRfc3ltYm9s
KTsgKi8KKy8qIAlDbmlsX2JvZHkudCA9IChzaG9ydCl0X3N5bWJvbDsgKi8KKy8qIAlDbmlsX2Jv
ZHkuZSA9IDE7ICovCisJQ25pbC0+Yy5jX2Nkcj1DbmlsOworCUNuaWwtPnMuc19kYmluZCA9IENu
aWw7CisJQ25pbC0+cy5zX3NmZGVmID0gTk9UX1NQRUNJQUw7CisJQ25pbC0+cy5zX2ZpbGxwID0g
MzsKKwlDbmlsLT5zLnNfc2VsZiA9ICJOSUwiOworCUNuaWwtPnMuc19nZmRlZiA9IE9CSk5VTEw7
CisJQ25pbC0+cy5zX3BsaXN0ID0gQ25pbDsKKwlDbmlsLT5zLnNfaHBhY2sgPSBDbmlsOworCUNu
aWwtPnMuc19zdHlwZSA9IChzaG9ydClzdHBfY29uc3RhbnQ7CisJQ25pbC0+cy5zX21mbGFnID0g
RkFMU0U7CiAJCi0JQ3RfYm9keS50ID0gKHNob3J0KXRfc3ltYm9sOwotCUN0X2JvZHkuc19kYmlu
ZCA9IEN0OwotCUN0X2JvZHkuc19zZmRlZiA9IE5PVF9TUEVDSUFMOwotCUN0X2JvZHkuc19maWxs
cCA9IDE7Ci0JQ3RfYm9keS5zX3NlbGYgPSAiVCI7Ci0JQ3RfYm9keS5zX2dmZGVmID0gT0JKTlVM
TDsKLQlDdF9ib2R5LnNfcGxpc3QgPSBDbmlsOwotCUN0X2JvZHkuc19ocGFjayA9IENuaWw7Ci0J
Q3RfYm9keS5zX3N0eXBlID0gKHNob3J0KXN0cF9jb25zdGFudDsKLQlDdF9ib2R5LnNfbWZsYWcg
PSBGQUxTRTsKKy8qIAlzZXRfdHlwZV9vZihDdCx0X3N5bWJvbCk7ICovCisvKiAJQ3RfYm9keS50
ID0gKHNob3J0KXRfc3ltYm9sOyAqLworLyogCUN0X2JvZHkuZSA9IDE7ICovCisJQ3QtPmMuY19j
ZHI9Q3Q7CisJQ3QtPnMuc19kYmluZCA9IEN0OworCUN0LT5zLnNfc2ZkZWYgPSBOT1RfU1BFQ0lB
TDsKKwlDdC0+cy5zX2ZpbGxwID0gMTsKKwlDdC0+cy5zX3NlbGYgPSAiVCI7CisJQ3QtPnMuc19n
ZmRlZiA9IE9CSk5VTEw7CisJQ3QtPnMuc19wbGlzdCA9IENuaWw7CisJQ3QtPnMuc19ocGFjayA9
IENuaWw7CisJQ3QtPnMuc19zdHlwZSA9IChzaG9ydClzdHBfY29uc3RhbnQ7CisJQ3QtPnMuc19t
ZmxhZyA9IEZBTFNFOwogCQogCWdjbF9pbml0X3N5bWJvbCgpOwogCkBAIC02MzksOSArNjcyLDE5
IEBACiAJRkVlcnJvcigiSW52b2NhdGlvbiBoaXN0b3J5IHN0YWNrIG92ZXJmbG93LiIsIDApOwog
fQogCitzdGF0aWMgdm9pZAorY3Nfb3ZlcmZsb3codm9pZCkgeworLyogI2lmZGVmIEFWICovCisv
KiAJaWYgKGNzX2xpbWl0IDwgY3Nfb3JnIC0gY3NzaXplKSAqLworLyogCQllcnJvcigiY29udHJv
bCBzdGFjayBvdmVyZmxvdyIpOyAqLworLyogCWNzX2xpbWl0IC09IENTR0VUQTsgKi8KKy8qICNl
bmRpZiAqLworCUZFZXJyb3IoIkNvbnRyb2wgc3RhY2sgb3ZlcmZsb3cuIiwwKTsKK30KKwogdm9p
ZAogc2VnbWVudGF0aW9uX2NhdGNoZXIoaW50IGkpIHsKLSNpZm5kZWYgU0lHX1NUQUNLX1NJWkUg
CisjaWZkZWYgU0lHX1NUQUNLX1NJWkUgCiAgIGludCB4OwogICBpZiAoJnggPCBjc19saW1pdCkK
ICAgICBjc19vdmVyZmxvdygpOwpAQCAtNjUyLDIxICs2OTUsNiBAQAogfQogCiAvKiBzdGF0aWMg
dm9pZCAqLwotLyogY3Nfb3ZlcmZsb3codm9pZCkgeyAqLwotLyogI2lmZGVmIEFWICovCi0vKiAJ
aWYgKGNzX2xpbWl0IDwgY3Nfb3JnIC0gY3NzaXplKSAqLwotLyogCQllcnJvcigiY29udHJvbCBz
dGFjayBvdmVyZmxvdyIpOyAqLwotLyogCWNzX2xpbWl0IC09IENTR0VUQTsgKi8KLS8qICNlbmRp
ZiAqLwotLyogI2lmZGVmIE1WICovCi0KLQotCi0vKiAjZW5kaWYgKi8KLS8qIAlGRWVycm9yKCJD
b250cm9sIHN0YWNrIG92ZXJmbG93LiIsIDApOyAqLwotLyogfSAqLwotCi0vKiBzdGF0aWMgdm9p
ZCAqLwogLyogZW5kX29mX2ZpbGUodm9pZCkgeyAqLwogLyogCWVycm9yKCJlbmQgb2YgZmlsZSIp
OyAqLwogLyogfSAqLwpAQCAtNzc2LDggKzgwNCwxMiBAQAogc3RhdGljIHZvaWQKIHJlc2V0X2Nz
dGFja19saW1pdChpbnQgYXJnKSB7CiAjaWZkZWYgQVYKLSAgaWYgKCZhcmcgPiBjc19vcmcgLSBj
c3NpemUgKyAxNikKLSAgICBjc19saW1pdCA9IGNzX29yZyAtIGNzc2l6ZTsKKyNpZiBDU1RBQ0tf
RElSRUNUSU9OPT0tMQorICBpZiAoJmFyZyA+IGNzX2Jhc2UgLSBjc3NpemUvc2l6ZW9mKCpjc19i
YXNlKSArIDE2KQorI2Vsc2UKKyAgaWYgKCZhcmcgPCBjc19iYXNlICsgY3NzaXplL3NpemVvZigq
Y3NfYmFzZSkgLSAxNikKKyNlbmRpZgorICAgIGNzX2xpbWl0ID0gY3NfYmFzZSArIENTVEFDS19E
SVJFQ1RJT04gKiBjc3NpemUvc2l6ZW9mKCpjc19iYXNlKTsKICAgZWxzZQogICAgIGVycm9yKCJj
YW4ndCByZXNldCBjc19saW1pdCIpOwogI2VuZGlmCkBAIC04MDgsNiArODQwLDE2IEBACiAgICAg
aWhzX2xpbWl0ID0gaWhzX29yZyArIHN0YWNrX211bHRpcGxlICogIElIU1NJWkU7CiAgIGVsc2UK
ICAgICBlcnJvcigiY2FuJ3QgcmVzZXQgaWhzX2xpbWl0Iik7CisgIGlmIChjc19iYXNlPT1jc19v
cmcpCisgICAgY3Nfb3JnPSh2b2lkICopJmk7CisjaWZkZWYgX19pYTY0X18KKyB7CisgICBleHRl
cm4gdm9pZCAqIEdDX3NhdmVfcmVnc19pbl9zdGFjaygpOworICAgaWYgKGNzX2Jhc2UyPT1jc19v
cmcyKQorICAgICBjc19vcmcyPUdDX3NhdmVfcmVnc19pbl9zdGFjaygpOworIH0KKyNlbmRpZgor
CiAgIHJlc2V0X2NzdGFja19saW1pdChpKTsKICAgdnNfYmFzZVswXSA9IENuaWw7CiB9CkBAIC05
MDgsNiArOTUwLDE2IEBACiAJUkVUVVJOMSgobWFrZV9zaW1wbGVfc3RyaW5nKExJU1BfSU1QTEVN
RU5UQVRJT05fVkVSU0lPTikpKTsKIH0KIAorc3RhdGljIHZvaWQKK0ZGTihzaUxjbGVhcl9jX3N0
YWNrKSh2b2lkKSB7CisKKyAgY2hlY2tfYXJnKDEpOworICBpZiAodHlwZV9vZih2c19iYXNlWzBd
KSE9dF9maXhudW0pCisgICAgRkVlcnJvcigibXVzdCBzdXBwbHkgbnVtYmVyIG9mIGJ5dGVzIHRv
IGNsZWFyIGFzIGEgZml4bnVtIiwwKTsKKyAgY2xlYXJfY19zdGFjayhmaXgodnNfYmFzZVswXSkp
OworICB2c19iYXNlWzBdPUNuaWw7CisKK30KIAogc3RhdGljIHZvaWQKIEZGTihzaUxzYXZlX3N5
c3RlbSkodm9pZCkgewpAQCAtMTA3Nyw2ICsxMTI5LDcgQEAKICAgbWFrZV9zcGVjaWFsKCIqRkVB
VFVSRVMqIixmZWF0dXJlcyk7fQogICAKICAgbWFrZV9zaV9mdW5jdGlvbigiU0FWRS1TWVNURU0i
LCBzaUxzYXZlX3N5c3RlbSk7CisgIG1ha2Vfc2lfZnVuY3Rpb24oIkNMRUFSLUMtU1RBQ0siLCBz
aUxjbGVhcl9jX3N0YWNrKTsKICAgbWFrZV9zaV9zZnVuKCJDQVRDSC1GQVRBTCIsc2lMY2F0Y2hf
ZmF0YWwsQVJHVFlQRTEoZl9maXhudW0pKTsKICAgbWFrZV9zaV9mdW5jdGlvbigiV0FSTi1WRVJT
SU9OIixMaWRlbnRpdHkpOwogICAKSW5kZXg6IG8vbmZ1bmxpbmsuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vbmZ1bmxpbmsuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS44CmRpZmYgLXUgLXIxLjggbmZ1bmxpbmsuYwotLS0gby9uZnVubGluay5jCTE1IEZlYiAyMDAz
IDAwOjM4OjI4IC0wMDAwCTEuOAorKysgby9uZnVubGluay5jCTMgSnVuIDIwMDUgMDQ6MDU6MzQg
LTAwMDAKQEAgLTE4MywxMCArMTgzLDEwIEBACiAgICBzdGFydGluZyBhdCBCQVNFLiAgVGhpcyBw
dXNoZXMgb24gdGhlIENhbGxIaXN0LCBhbmQgcHV0cyB0aGUgYXJncyBvbnRvCiAgICB0aGUgYXJn
IHN0YWNrLCBzbyB0aGF0IGRlYnVnZ2VycyBtYXkgZXhhbWluZSB0aGVtLiAgSXQgc2V0cwogICAg
ZmNhbGwubnZhbHVlcyBhcHByb3ByaWF0ZWx5LiAqLwoteyBvYmplY3QgcmVzLCphYmFzZTsKLSAg
aW50IGk7Cit7IG9iamVjdCByZXM9T0JKTlVMTCwqYWJhc2U9TlVMTDsKKyAgaW50IGk9MDsKICAg
b2JqZWN0ICpvbGR0b3AgPSB2c190b3A7Ci0gIHVuc2lnbmVkIGludCAgYXR5cGVzOworICB1bnNp
Z25lZCBpbnQgIGF0eXBlcz0wOwogICBpZiAob2xkdG9wID09IGJhc2UpIHZzX3RvcCArPSBuYXJn
czsKICAgZWxzZQogICAgIHsgb2JqZWN0ICpiID0gYmFzZTsKSW5kZXg6IG8vbnVtX2FyaXRoLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL251bV9hcml0aC5jLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjQuNi42LjEyLjEKZGlmZiAtdSAtcjEuNC42LjYuMTIuMSBudW1f
YXJpdGguYwotLS0gby9udW1fYXJpdGguYwkxNiBKYW4gMjAwNSAwMDozNjoyMCAtMDAwMAkxLjQu
Ni42LjEyLjEKKysrIG8vbnVtX2FyaXRoLmMJMyBKdW4gMjAwNSAwNDowNTozNCAtMDAwMApAQCAt
NjIsNiArNjIsMzIgQEAKICAgIH0KIH0KIAorb2JqZWN0IAorZml4bnVtX3RpbWVzKGZpeG51bSBp
LCBmaXhudW0gaikgeworCisgIGlmIChpPj0wKSB7CisgICAgaWYgKGo+PTApIHsKKyAgICAgIGlm
ICghaSB8fCBqPD0gKE1PU1RfUE9TSVRJVkVfRklYL2kpKQorCWdvdG8gRklYOworICAgIH0gZWxz
ZSB7CisgICAgICBpZiAoaj09LTEgfHwgaTw9IChNT1NUX05FR0FUSVZFX0ZJWC9qKSkKKwlnb3Rv
IEZJWDsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKGo+PTApIHsKKyAgICAgIGlmIChpPT0t
MSB8fCBqPD0gKE1PU1RfTkVHQVRJVkVfRklYL2kpKQorCWdvdG8gRklYOworICAgIH0gZWxzZSB7
CisgICAgICBpZiAoLWk8PSAoTU9TVF9QT1NJVElWRV9GSVgvLWopKQorCWdvdG8gRklYOworICAg
IH0KKyAgfQorICBNUE9QKHJldHVybixtdWxzcyxpLGopOworIEZJWDoKKyAgcmV0dXJuIG1ha2Vf
Zml4bnVtKGkqaik7Cit9CisKKy8qIHJldHVybiBpIC0gaiAqLwogLyogc3RhdGljIG9iamVjdCAq
LwogLyogZml4bnVtX3RpbWVzKGludCBpLCBpbnQgaikgKi8KIC8qIHsgKi8KQEAgLTUyMCw3ICs1
NDYsOCBAQAogCWNhc2UgdF9maXhudW06CiAJCXN3aXRjaCAodHlwZV9vZih5KSkgewogCQljYXNl
IHRfZml4bnVtOgotCQkgIE1QT1AocmV0dXJuLG11bHNzLGZpeCh4KSxmaXgoeSkpOworCQkgIHJl
dHVybiBmaXhudW1fdGltZXMoZml4KHgpLGZpeCh5KSk7CisvKiAJCSAgTVBPUChyZXR1cm4sbXVs
c3MsZml4KHgpLGZpeCh5KSk7ICovCiAJCWNhc2UgdF9iaWdudW06CiAJCSAgTVBPUChyZXR1cm4s
bXVsc2ksZml4KHgpLE1QKHkpKTsKIAkJY2FzZSB0X3JhdGlvOgpJbmRleDogby9udW1fbG9nLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL251bV9sb2cuYyx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS45LjQuMS40LjIKZGlmZiAtdSAtcjEuOS40LjEuNC4yIG51bV9sb2cu
YwotLS0gby9udW1fbG9nLmMJNiBOb3YgMjAwMyAxNjoxNjo1MiAtMDAwMAkxLjkuNC4xLjQuMgor
Kysgby9udW1fbG9nLmMJMyBKdW4gMjAwNSAwNDowNTozNCAtMDAwMApAQCAtNjMxLDE0ICs2MzEs
MTUgQEAKIAlMMjoKIAkJaWYgKHIgPT0gQ25pbCkgewogCQkgIG9iamVjdCBiOwotCQkgIHN0cnVj
dCBjb25zICpwPWFsbG9jYSh4LT5hLmFfcmFuaypzaXplb2Yoc3RydWN0IGNvbnMpKTsKKwkJICBz
dHJ1Y3QgY29ucyAqcD1aQUxMT0NBKCh4LT5hLmFfcmFuaysxKSpzaXplb2Yoc3RydWN0IGNvbnMp
KTsKKwkJICBwPSh2b2lkICopKCgodW5zaWduZWQgbG9uZykoKHZvaWQgKilwK3NpemVvZihzdHJ1
Y3QgY29ucyktMSkpJn4oc2l6ZW9mKHN0cnVjdCBjb25zKS0xKSk7CiAJCSAgaWYgKHgtPmEuYV9y
YW5rKSB7CiAJCSAgICBvYmplY3QgYjE7CiAKIAkJICAgIGI9KG9iamVjdClwOwogCQkgICAgZm9y
IChiMT1iLGk9MDtpPHgtPmEuYV9yYW5rO2krKyxiMT1iMS0+Yy5jX2NkcikgewotCQkgICAgICBi
MS0+ZC50PShpbnQpdF9jb25zOwotCQkgICAgICBiMS0+ZC5tPUZBTFNFOworCQkgICAgICBzZXRf
dHlwZV9vZihiMSx0X2NvbnMpOyAvKiBiMS0+ZC50PShpbnQpdF9jb25zOyAqLworCQkgICAgICBi
MS0+ZC5mPWIxLT5kLm09MDsKIAkJICAgICAgYjEtPmMuY19jYXI9LyogeC0+YS5hX2RpbXNbaV08
U01BTExfRklYTlVNX0xJTUlUID8gICovCiAJCQkvKiBzbWFsbF9maXhudW0oeC0+YS5hX2RpbXNb
aV0pIDogICovIAogCQkJLyogbm93IGRvbmUgaW4gYSBtYWNybyAqLwpJbmRleDogby9udW1fcmFu
ZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9udW1fcmFuZC5jLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjMuNi4yCmRpZmYgLXUgLXIxLjMuNi4yIG51bV9yYW5kLmMK
LS0tIG8vbnVtX3JhbmQuYwk2IE5vdiAyMDAzIDE2OjE2OjUyIC0wMDAwCTEuMy42LjIKKysrIG8v
bnVtX3JhbmQuYwkzIEp1biAyMDA1IDA0OjA1OjM0IC0wMDAwCkBAIC0zMywzNyArMzMsNzUgQEAK
ICNlbmRpZgogCiBzdGF0aWMgb2JqZWN0Ci1yYW5kbyhvYmplY3QgeCwgb2JqZWN0IHJzKQotewot
CWVudW0gdHlwZSB0eDsKLQlvYmplY3QgejsKLQlkb3VibGUgZDsKLQkKLQl0eCA9IHR5cGVfb2Yo
eCk7Ci0JaWYgKG51bWJlcl9jb21wYXJlKHgsIHNtYWxsX2ZpeG51bSgwKSkgIT0gMSkKLQkJRkV3
cm9uZ190eXBlX2FyZ3VtZW50KFRTcG9zaXRpdmVfbnVtYmVyLCB4KTsKLQlkID0gKGRvdWJsZSko
cnMtPnJuZC5ybmRfdmFsdWU+PjEpIC8gKDQyOTQ5NjcyOTYuMC8yLjApOwotCWQgPSBudW1iZXJf
dG9fZG91YmxlKHgpICogZDsKLQlpZiAodHggPT0gdF9maXhudW0pIHsKLQkJeiA9IG1ha2VfZml4
bnVtKChpbnQpZCk7Ci0JCXJldHVybih6KTsKLQl9IGVsc2UgaWYgKHR4ID09IHRfYmlnbnVtKSB7
Ci0JCXogPSBkb3VibGVfdG9faW50ZWdlcihkKTsKLQkJcmV0dXJuKHopOwotCX0gZWxzZSBpZiAo
dHggPT0gdF9zaG9ydGZsb2F0KSB7Ci0JCXogPSBhbGxvY19vYmplY3QodF9zaG9ydGZsb2F0KTsK
LQkJc2YoeikgPSAoZmxvYXQpZDsKLQkJcmV0dXJuKHopOwotCX0gZWxzZSBpZiAodHggPT0gdF9s
b25nZmxvYXQpIHsKLQkJeiA9IGFsbG9jX29iamVjdCh0X2xvbmdmbG9hdCk7Ci0JCWxmKHopID0g
ZDsKLQkJcmV0dXJuKHopOwotCX0gZWxzZSB7Ci0JCUZFZXJyb3IoIn5TIGlzIG5vdCBhbiBpbnRl
Z2VyIG5vciBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4iLAotCQkJMSwgeCk7Ci0JCXJldHVybihD
bmlsKTsKLQl9Ci19CityYW5kbyhvYmplY3QgeCwgb2JqZWN0IHJzKSB7CisKKyAgZW51bSB0eXBl
IHR4OworICBvYmplY3QgYmFzZSxvdXQsejsKKyAgZml4bnVtIGZiYXNlOworICBkb3VibGUgZDsK
KyAgCisgIHR4ID0gdHlwZV9vZih4KTsKKyAgaWYgKG51bWJlcl9jb21wYXJlKHgsIHNtYWxsX2Zp
eG51bSgwKSkgIT0gMSkKKyAgICBGRXdyb25nX3R5cGVfYXJndW1lbnQoVFNwb3NpdGl2ZV9udW1i
ZXIsIHgpOworICAKKyAgaWYgKHR4PT10X2JpZ251bSkgeworICAgIG91dD1uZXdfYmlnbnVtKCk7
CisgICAgYmFzZT14OworICAgIGZiYXNlPS0xOworICB9IGVsc2UgeworICAgIG91dD1iaWdfZml4
bnVtMTsKKyAgICAvKiAgICAgZmJhc2U9dHg9PXRfZml4bnVtID8gZml4KHgpIDogTU9TVF9QT1NJ
VElWRV9GSVg7ICovIC8qRklYTUUgR01QIGluZmluaXRlIGxvb3Agc21hbGwgYmFzZXMqLworICAg
IGZiYXNlPU1PU1RfUE9TSVRJVkVfRklYOworICAgIG1wel9zZXRfc2koTVAoYmlnX2ZpeG51bTIp
LGZiYXNlKTsKKyAgICBiYXNlPWJpZ19maXhudW0yOworICB9CisgIAorICBtcHpfdXJhbmRvbW0o
TVAob3V0KSwmcnMtPnJuZC5ybmRfc3RhdGUsTVAoYmFzZSkpOworICAKKyAgc3dpdGNoICh0eCkg
eworICAgIAorICBjYXNlIHRfZml4bnVtOgorLyogICAgIHJldHVybiBtYWtlX2ZpeG51bShtcHpf
Z2V0X3NpKE1QKG91dCkpKTsgKi8KKyAgICByZXR1cm4gbWFrZV9maXhudW0oZml4KHgpKihtcHpf
Z2V0X2QoTVAob3V0KSkvKChkb3VibGUpZmJhc2UpKSk7CisgIGNhc2UgdF9iaWdudW06CisgICAg
cmV0dXJuIG91dDsKKyAgY2FzZSB0X3Nob3J0ZmxvYXQ6IGNhc2UgdF9sb25nZmxvYXQ6CisgICAg
ZD1tcHpfZ2V0X2QoTVAob3V0KSk7CisgICAgZC89KGRvdWJsZSlmYmFzZTsKKyAgICB6PWFsbG9j
X29iamVjdCh0eCk7CisgICAgaWYgKHR4PT10X3Nob3J0ZmxvYXQpIHNmKHopPWQ7IGVsc2UgbGYo
eik9ZDsKKyAgICByZXR1cm4gejsKKyAgZGVmYXVsdDoKKyAgICBGRWVycm9yKCJ+UyBpcyBub3Qg
YW4gaW50ZWdlciBub3IgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuIiwgMSwgeCk7CisgICAgcmV0
dXJuKENuaWwpOworICB9Cit9CisKKy8qIAl0eCA9IHR5cGVfb2YoeCk7ICovCisvKiAJaWYgKG51
bWJlcl9jb21wYXJlKHgsIHNtYWxsX2ZpeG51bSgwKSkgIT0gMSkgKi8KKy8qIAkJRkV3cm9uZ190
eXBlX2FyZ3VtZW50KFRTcG9zaXRpdmVfbnVtYmVyLCB4KTsgKi8KKy8qIAlkID0gKGRvdWJsZSko
cnMtPnJuZC5ybmRfdmFsdWU+PjEpIC8gKDQyOTQ5NjcyOTYuMC8yLjApOyAqLworLyogCWQgPSBu
dW1iZXJfdG9fZG91YmxlKHgpICogZDsgKi8KKy8qIAlpZiAodHggPT0gdF9maXhudW0pIHsgKi8K
Ky8qIAkJeiA9IG1ha2VfZml4bnVtKChpbnQpZCk7ICovCisvKiAJCXJldHVybih6KTsgKi8KKy8q
IAl9IGVsc2UgaWYgKHR4ID09IHRfYmlnbnVtKSB7ICovCisvKiAJCXogPSBkb3VibGVfdG9faW50
ZWdlcihkKTsgKi8KKy8qIAkJcmV0dXJuKHopOyAqLworLyogCX0gZWxzZSBpZiAodHggPT0gdF9z
aG9ydGZsb2F0KSB7ICovCisvKiAJCXogPSBhbGxvY19vYmplY3QodF9zaG9ydGZsb2F0KTsgKi8K
Ky8qIAkJc2YoeikgPSAoZmxvYXQpZDsgKi8KKy8qIAkJcmV0dXJuKHopOyAqLworLyogCX0gZWxz
ZSBpZiAodHggPT0gdF9sb25nZmxvYXQpIHsgKi8KKy8qIAkJeiA9IGFsbG9jX29iamVjdCh0X2xv
bmdmbG9hdCk7ICovCisvKiAJCWxmKHopID0gZDsgKi8KKy8qIAkJcmV0dXJuKHopOyAqLworLyog
CX0gZWxzZSB7ICovCisvKiAJCUZFZXJyb3IoIn5TIGlzIG5vdCBhbiBpbnRlZ2VyIG5vciBhIGZs
b2F0aW5nLXBvaW50IG51bWJlci4iLCAqLworLyogCQkJMSwgeCk7ICovCisvKiAJCXJldHVybihD
bmlsKTsgKi8KKy8qIAl9ICovCisvKiB9ICovCiAKIHN0YXRpYyBvYmplY3QKIG1ha2VfcmFuZG9t
X3N0YXRlKG9iamVjdCBycykKQEAgLTc1LDEyICsxMTMsMTUgQEAKIAogCWlmIChycyA9PSBDbmls
KSB7CiAJCXogPSBhbGxvY19vYmplY3QodF9yYW5kb20pOwotCQl6LT5ybmQucm5kX3ZhbHVlID0g
c3ltYm9sX3ZhbHVlKFZyYW5kb21fc3RhdGUpLT5ybmQucm5kX3ZhbHVlOworCQl6LT5ybmQucm5k
X3N0YXRlID0gc3ltYm9sX3ZhbHVlKFZyYW5kb21fc3RhdGUpLT5ybmQucm5kX3N0YXRlOwogCQly
ZXR1cm4oeik7CiAJfSBlbHNlIGlmIChycyA9PSBDdCkgewogCQl6ID0gYWxsb2Nfb2JqZWN0KHRf
cmFuZG9tKTsKICNpZmRlZiBVTklYCi0JCXotPnJuZC5ybmRfdmFsdWUgPSB0aW1lKDApOworCQli
emVybygmei0+cm5kLnJuZF9zdGF0ZSxzaXplb2Yoei0+cm5kLnJuZF9zdGF0ZSkpOworCQlnbXBf
cmFuZGluaXRfZGVmYXVsdCgmei0+cm5kLnJuZF9zdGF0ZSk7CisJCWdtcF9yYW5kc2VlZF91aSgm
ei0+cm5kLnJuZF9zdGF0ZSx0aW1lKDApKTsKKy8qIAkJei0+cm5kLnJuZF92YWx1ZSA9IHRpbWUo
MCk7ICovCiAjZW5kaWYKICNpZmRlZiBBT1NWUwogCkBAIC05NCwyMCArMTM1LDIwIEBACiAJCXJl
dHVybihDbmlsKTsKIAl9IGVsc2UgewogCQl6ID1hbGxvY19vYmplY3QodF9yYW5kb20pOwotCQl6
LT5ybmQucm5kX3ZhbHVlID0gcnMtPnJuZC5ybmRfdmFsdWU7CisJCXotPnJuZC5ybmRfc3RhdGUg
PSBycy0+cm5kLnJuZF9zdGF0ZTsKIAkJcmV0dXJuKHopOwogCX0KIH0KIAotc3RhdGljIHZvaWQK
LWFkdmFuY2VfcmFuZG9tX3N0YXRlKG9iamVjdCBycykKLXsKLQlycy0+cm5kLnJuZF92YWx1ZQot
CT0gcnMtPnJuZC5ybmRfdmFsdWUKLQkrIChycy0+cm5kLnJuZF92YWx1ZTw8MikKLQkrIChycy0+
cm5kLnJuZF92YWx1ZTw8MTcpCi0JKyAocnMtPnJuZC5ybmRfdmFsdWU8PDI3KTsKLX0KKy8qIHN0
YXRpYyB2b2lkICovCisvKiBhZHZhbmNlX3JhbmRvbV9zdGF0ZShvYmplY3QgcnMpICovCisvKiB7
ICovCisvKiAJcnMtPnJuZC5ybmRfdmFsdWUgKi8KKy8qIAk9IHJzLT5ybmQucm5kX3ZhbHVlICov
CisvKiAJKyAocnMtPnJuZC5ybmRfdmFsdWU8PDIpICovCisvKiAJKyAocnMtPnJuZC5ybmRfdmFs
dWU8PDE3KSAqLworLyogCSsgKHJzLT5ybmQucm5kX3ZhbHVlPDwyNyk7ICovCisvKiB9ICovCiAK
IAogTEZEKExyYW5kb20pKHZvaWQpCkBAIC0xMjAsNyArMTYxLDcgQEAKIAkJdnNfcHVzaChzeW1i
b2xfdmFsdWUoVnJhbmRvbV9zdGF0ZSkpOwogCWNoZWNrX2FyZygyKTsKIAljaGVja190eXBlX3Jh
bmRvbV9zdGF0ZSgmdnNfYmFzZVsxXSk7Ci0JYWR2YW5jZV9yYW5kb21fc3RhdGUodnNfYmFzZVsx
XSk7CisvKiAJYWR2YW5jZV9yYW5kb21fc3RhdGUodnNfYmFzZVsxXSk7ICovCiAJeCA9IHJhbmRv
KHZzX2Jhc2VbMF0sIHZzX2Jhc2VbMV0pOwogCXZzX3RvcCA9IHZzX2Jhc2U7CiAJdnNfcHVzaCh4
KTsKSW5kZXg6IG8vbnVtX3NmdW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wv
Z2NsL28vbnVtX3NmdW4uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42LjYuMgpkaWZmIC11IC1y
MS42LjYuMiBudW1fc2Z1bi5jCi0tLSBvL251bV9zZnVuLmMJNiBOb3YgMjAwMyAxNjoxNjo1MiAt
MDAwMAkxLjYuNi4yCisrKyBvL251bV9zZnVuLmMJMyBKdW4gMjAwNSAwNDowNTozNCAtMDAwMApA
QCAtMTQ0LDYgKzE0NCwxNiBAQAogCQkJdnNfcmVzZXQ7CiAJCQlyZXR1cm4oeik7CiAJCX0KKwkJ
aWYgKHR4PT10X2ZpeG51bSAmJiBmaXgoeCk9PTIgJiYgdHk9PXRfZml4bnVtKSB7CisJCSAgb2Jq
ZWN0IHoxOworCQkgIGlmIChmaXgoeSk8OCpzaXplb2YoZml4bnVtKS0xKQorCQkgICAgcmV0dXJu
IG1ha2VfZml4bnVtKCgxPDxmaXgoeSkpKTsKKwkJICB6PW5ld19iaWdudW0oKTsKKwkJICB6MT1u
ZXdfYmlnbnVtKCk7CisJCSAgbXB6X3NldF91aShNUCh6KSwxKTsKKwkJICBtcHpfbXVsXzJleHAo
TVAoejEpLE1QKHopLGZpeCh5KSk7CisJCSAgcmV0dXJuIG5vcm1hbGl6ZV9iaWcoejEpOworCQl9
CiAJCXogPSBzbWFsbF9maXhudW0oMSk7CiAJCXZzX3B1c2goeik7CiAJCXZzX3B1c2goQ25pbCk7
CkluZGV4OiBvL251bWJlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wv
by9udW1iZXIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS45LjQuMS40LjEKZGlmZiAtdSAtcjEu
OS40LjEuNC4xIG51bWJlci5jCi0tLSBvL251bWJlci5jCTE0IFNlcCAyMDAzIDAyOjMwOjQ1IC0w
MDAwCTEuOS40LjEuNC4xCisrKyBvL251bWJlci5jCTMgSnVuIDIwMDUgMDQ6MDU6MzQgLTAwMDAK
QEAgLTY5LDggKzY5LDcgQEAKIAkJCQkgICAgICAgKG1heCAtIG1pbikpOwogICAKICAgZm9yIChq
PW1pbiA7IGogPCBtYXggOyBqPWorMSkKLSAgICB7IAkJYmlnZ2VyX2ZpeG51bV90YWJsZVtqIC0g
bWluXS50Ci0JCT0gKHNob3J0KXRfZml4bnVtOworICAgIHsgCQlzZXRfdHlwZV9vZihiaWdnZXJf
Zml4bnVtX3RhYmxlK2ogLSBtaW4sdF9maXhudW0pOwogCQliaWdnZXJfZml4bnVtX3RhYmxlW2og
LSBtaW5dLkZJWFZBTCA9IGo7CiAJICAgICAgfQogICBiaWdnZXJfZml4bnVtcy5taW49bWluOwpA
QCAtOTksNyArOTgsNyBAQAogI2VuZGlmCQogCSAgICAgIAogCXggPSBhbGxvY19vYmplY3QodF9m
aXhudW0pOwkgICAgCi0JZml4KHgpID0gaTsKKwlzZXRfZml4KHgsaSk7CiAJcmV0dXJuKHgpOwog
fQogCkBAIC0yODYsMTMgKzI4NSwxNiBAQAogdm9pZAogZ2NsX2luaXRfbnVtYmVyKHZvaWQpCiB7
Ci0JaW50IGk7CisvKiAJaW50IGk7ICovCiAKLQlmb3IgKGkgPSAtU01BTExfRklYTlVNX0xJTUlU
OyAgaSA8IFNNQUxMX0ZJWE5VTV9MSU1JVDsgIGkrKykgewotCQlzbWFsbF9maXhudW1fdGFibGVb
aSArIFNNQUxMX0ZJWE5VTV9MSU1JVF0udAotCQk9IChzaG9ydCl0X2ZpeG51bTsKLQkJc21hbGxf
Zml4bnVtX3RhYmxlW2kgKyBTTUFMTF9GSVhOVU1fTElNSVRdLkZJWFZBTCA9IGk7Ci0JfQorLyog
CWZvciAoaSA9IC1TTUFMTF9GSVhOVU1fTElNSVQ7ICBpIDwgU01BTExfRklYTlVNX0xJTUlUOyAg
aSsrKSB7ICovCisvKiAJICBvYmplY3QgeD0ob2JqZWN0KShzbWFsbF9maXhudW1fdGFibGUraStT
TUFMTF9GSVhOVU1fTElNSVQpOyAqLworLyogCSAgc2V0X3R5cGVfb2YoeCx0X2ZpeG51bSk7ICov
CisvKiAJICB4LT5GSVguRklYVkFMPWk7fSAqLworCisvKiAJCXNtYWxsX2ZpeG51bV90YWJsZVtp
ICsgU01BTExfRklYTlVNX0xJTUlUXS50ICovCisvKiAJCT0gKHNob3J0KXRfZml4bnVtOyAqLwor
LyogCQlzbWFsbF9maXhudW1fdGFibGVbaSArIFNNQUxMX0ZJWE5VTV9MSU1JVF0uRklYVkFMID0g
aTsgKi8KIAogCXNob3J0ZmxvYXRfemVybyA9IGFsbG9jX29iamVjdCh0X3Nob3J0ZmxvYXQpOwog
CXNmKHNob3J0ZmxvYXRfemVybykgPSAoc2hvcnRmbG9hdCkwLjA7CkluZGV4OiBvL3BsdC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9wbHQuYyx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4xLjIuOApkaWZmIC11IC1yMS4xLjIuOCBwbHQuYwotLS0gby9wbHQuYwkyMCBN
YXIgMjAwNCAwMjo0ODozMCAtMDAwMAkxLjEuMi44CisrKyBvL3BsdC5jCTMgSnVuIDIwMDUgMDQ6
MDU6MzQgLTAwMDAKQEAgLTE0MCw3ICsxNDAsNyBAQAogCiAgIGZvciAoO3A8cGU7cCsrKQogICAg
IGlmICgob3A9YnNlYXJjaChwLT5uLGFyLT52LnZfc2VsZixhci0+di52X2RpbSxzaXplb2YoKmFy
LT52LnZfc2VsZiksYXJzZWFyY2gpKSAmJgotCSgqb3ApLT5jLmNfY2RyLT5GSVguRklYVkFMICE9
IHAtPmFkKQorCWZpeCgoKm9wKS0+Yy5jX2NkcikgIT0gcC0+YWQpCiAgICAgICBGRWVycm9yKCJw
bHQvbGQgYWRkcmVzcyBtaXNtYXRjaCIsMCk7CiAKICAgc1NBcGx0X3RhYmxlQS0+cy5zX2RiaW5k
PWFyOwpAQCAtMTYyLDcgKzE2Miw3IEBACiAJCSBzU0FwbHRfdGFibGVBLT5zLnNfZGJpbmQtPnYu
dl9kaW0sCiAJCSBzaXplb2YoKnNTQXBsdF90YWJsZUEtPnMuc19kYmluZC0+di52X3NlbGYpLAog
CQkgYXJzZWFyY2gpKSkgewotICAgICp2PSgqb3ApLT5jLmNfY2RyLT5GSVguRklYVkFMOworICAg
ICp2PWZpeCgoKm9wKS0+Yy5jX2Nkcik7CiAgICAgcmV0dXJuIDA7CiAgIH0KICAgICAKSW5kZXg6
IG8vcHJpbnQuZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vcHJpbnQu
ZCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNS40LjEuMi4yLjEyLjEKZGlmZiAtdSAtcjEuMTUu
NC4xLjIuMi4xMi4xIHByaW50LmQKLS0tIG8vcHJpbnQuZAkxNSBKYW4gMjAwNSAyMDoyNzo0OSAt
MDAwMAkxLjE1LjQuMS4yLjIuMTIuMQorKysgby9wcmludC5kCTMgSnVuIDIwMDUgMDQ6MDU6MzQg
LTAwMDAKQEAgLTYwNSw3ICs2MDUsNyBAQAogCQl3cml0ZV9zdHIoIiM8T0JKTlVMTD4iKTsKIAkJ
cmV0dXJuOwogCX0KLQlpZiAoeC0+ZC5tID09IEZSRUUpIHsKKwlpZiAoaXNfZnJlZSh4KSkgewog
CQl3cml0ZV9zdHIoIiM8RlJFRSBPQkpFQ1QgIik7CiAJCXdyaXRlX2FkZHIoeCk7CiAJCXdyaXRl
X3N0cigiPiIpOwpAQCAtMTI5Myw3ICsxMjkzLDcgQEAKIAljYXNlIHRfcmFuZG9tOgogCQl3cml0
ZV9zdHIoIiMkIik7CiAJCXkgPSBhbGxvY19vYmplY3QodF9maXhudW0pOwotCQlmaXgoeSkgPSB4
LT5ybmQucm5kX3ZhbHVlOworCQlzZXRfZml4KHksbXB6X2dldF9zaSh4LT5ybmQucm5kX3N0YXRl
Ll9tcF9zZWVkKSk7CiAJCXZzX3B1c2goeSk7CiAJCXdyaXRlX29iamVjdCh5LCBsZXZlbCk7CiAJ
CXZzX3BvcHA7CkluZGV4OiBvL3JlYWQuZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9n
Y2wvZ2NsL28vcmVhZC5kLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0LjQuMS4yLjIuMi40LjYu
MS42LjEKZGlmZiAtdSAtcjEuMTQuNC4xLjIuMi4yLjQuNi4xLjYuMSByZWFkLmQKLS0tIG8vcmVh
ZC5kCTE1IEphbiAyMDA1IDE2OjI4OjUwIC0wMDAwCTEuMTQuNC4xLjIuMi4yLjQuNi4xLjYuMQor
Kysgby9yZWFkLmQJMyBKdW4gMjAwNSAwNDowNTozNSAtMDAwMApAQCAtMjQ1LDYgKzI0NSw3IEBA
CiAJdnNfcHVzaChvbGRfUkVBRHRhYmxlKTsKIAlmb3IgKGkgPSAwOyAgaSA8IHNoYXJwX2VxX2Nv
bnRleHRfbWF4OyAgaSsrKQogCQlvbGRfc2hhcnBfZXFfY29udGV4dFtpXSA9IHNoYXJwX2VxX2Nv
bnRleHRbaV07CisJbWVtc2V0KG9sZF9zaGFycF9lcV9jb250ZXh0K2ksMCxzaXplb2Yob2xkX3No
YXJwX2VxX2NvbnRleHQpLWkqc2l6ZW9mKCpvbGRfc2hhcnBfZXFfY29udGV4dCkpOwogCW9sZF9i
YWNrcV9sZXZlbCA9IGJhY2txX2xldmVsOwogCXNldHVwX1JFQUQoKTsKIApAQCAtMTkyNSw3ICsx
OTI2LDkgQEAKIAkJCTEsIHZzX2Jhc2VbMF0pOwogCWkgPSBmaXgodnNfYmFzZVswXSk7CiAJdnNf
YmFzZVswXSA9IGFsbG9jX29iamVjdCh0X3JhbmRvbSk7Ci0JdnNfYmFzZVswXS0+cm5kLnJuZF92
YWx1ZSA9IGk7CisJYnplcm8oJnZzX2Jhc2VbMF0tPnJuZC5ybmRfc3RhdGUsc2l6ZW9mKHZzX2Jh
c2VbMF0tPnJuZC5ybmRfc3RhdGUpKTsKKwlnbXBfcmFuZGluaXRfZGVmYXVsdCgmdnNfYmFzZVsw
XS0+cm5kLnJuZF9zdGF0ZSk7CisJZ21wX3JhbmRzZWVkX3VpKCZ2c19iYXNlWzBdLT5ybmQucm5k
X3N0YXRlLGkpOwogfQogCiAvKgpJbmRleDogby9yZWdleHByLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2c3Jvb3QvZ2NsL2djbC9vL3JlZ2V4cHIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42
LjYuMS40LjEuMi4xCmRpZmYgLXUgLXIxLjYuNi4xLjQuMS4yLjEgcmVnZXhwci5jCi0tLSBvL3Jl
Z2V4cHIuYwk1IEF1ZyAyMDA0IDIyOjIxOjExIC0wMDAwCTEuNi42LjEuNC4xLjIuMQorKysgby9y
ZWdleHByLmMJMyBKdW4gMjAwNSAwNDowNTozNSAtMDAwMApAQCAtMTE0LDcgKzExNCw3IEBACiAg
ICAgIGNhc2VfZm9sZF9zZWFyY2ggPSBzU0FjYXNlX2ZvbGRfc2VhcmNoQS0+cy5zX2RiaW5kICE9
IHNMbmlsID8gMSA6IDA7CiAgICAgIGlmIChjYXNlX2ZvbGQgIT0gY2FzZV9mb2xkX3NlYXJjaCB8
fCBsZW4gIT0gc3RybGVuKGJ1ZikgfHwJIG1lbWNtcChwYXR0ZXJuLT51c3QudXN0X3NlbGYsYnVm
LGxlbikpIHsKIAotICAgICAgIGNoYXIgKnRtcD1sZW4rMTxzaXplb2YoYnVmKSA/IGJ1ZiA6IChj
aGFyICopIGFsbG9jYShsZW4rMSk7CisgICAgICAgY2hhciAqdG1wPWxlbisxPHNpemVvZihidWYp
ID8gYnVmIDogKGNoYXIgKikgWkFMTE9DQShsZW4rMSk7CiAgICAgICAgaWYgKCF0bXApCiAJIEZF
ZXJyb3IoIkNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgb24gQyBzdGFjayIsMCk7CiAKQEAgLTEzOSw3
ICsxMzksNyBAQAogICAgICBpZiAobnA+PU1BWFBBR0UgfHwgKHR5cGVfbWFwW25wXSAhPSB0X2Nv
bnRpZ3VvdXMgJiYgdHlwZV9tYXBbbnBdICE9IHRfcmVsb2NhdGFibGUpIHx8CiAJIHN0citlbmQ9
PSh2b2lkICopY29yZV9lbmQgfHwgc3RyK2VuZD09KHZvaWQgKiljb21waWxlZF9yZWdleHApIHsK
IAotICAgICAgIGlmICghKHN0cj1hbGxvY2Eoc3RyaW5nLT5zdC5zdF9maWxscCsxKSkpCisgICAg
ICAgaWYgKCEoc3RyPVpBTExPQ0Eoc3RyaW5nLT5zdC5zdF9maWxscCsxKSkpCiAJIEZFZXJyb3Io
IkNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgb24gQyBzdGFjayIsMCk7CiAgICAgICAgbWVtY3B5KHN0
cixzdHJpbmctPnN0LnN0X3NlbGYsc3RyaW5nLT5zdC5zdF9maWxscCk7CiAKSW5kZXg6IG8vc2Vx
dWVuY2UuZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vc2VxdWVuY2Uu
ZCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zLjQuMS40LjIKZGlmZiAtdSAtcjEuMy40LjEuNC4y
IHNlcXVlbmNlLmQKLS0tIG8vc2VxdWVuY2UuZAk2IE5vdiAyMDAzIDE2OjE2OjUzIC0wMDAwCTEu
My40LjEuNC4yCisrKyBvL3NlcXVlbmNlLmQJMyBKdW4gMjAwNSAwNDowNTozNSAtMDAwMApAQCAt
MjgsNyArMjgsMTEgQEAKIAogI3VuZGVmIGVuZHAKIAotI2RlZmluZQllbmRwKG9iamUpCSgoZW51
bSB0eXBlKSgoZW5kcF90ZW1wID0gKG9iamUpKS0+ZC50KSA9PSB0X2NvbnMgPyBcCisvKiAjZGVm
aW5lCWVuZHAob2JqZSkJKChlbnVtIHR5cGUpKChlbmRwX3RlbXAgPSAob2JqZSkpLT5kLnQpID09
IHRfY29ucyA/IFwgKi8KKy8qIAkJCSBGQUxTRSA6IGVuZHBfdGVtcCA9PSBDbmlsID8gVFJVRSA6
IFwgKi8KKy8qIAkJCSAoRkV3cm9uZ190eXBlX2FyZ3VtZW50KHNMbGlzdCwgZW5kcF90ZW1wKSxG
QUxTRSkpICovCisKKyNkZWZpbmUJZW5kcChvYmplKQkoKGVudW0gdHlwZSkodHlwZV9vZihlbmRw
X3RlbXAgPSAob2JqZSkpKSA9PSB0X2NvbnMgPyBcCiAJCQkgRkFMU0UgOiBlbmRwX3RlbXAgPT0g
Q25pbCA/IFRSVUUgOiBcCiAJCQkgKEZFd3JvbmdfdHlwZV9hcmd1bWVudChzTGxpc3QsIGVuZHBf
dGVtcCksRkFMU0UpKQogCkluZGV4OiBvL3NmYXNsYmZkLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2c3Jvb3QvZ2NsL2djbC9vL3NmYXNsYmZkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTIu
NC4xLjIuNC4xMi4xCmRpZmYgLXUgLXIxLjEyLjQuMS4yLjQuMTIuMSBzZmFzbGJmZC5jCi0tLSBv
L3NmYXNsYmZkLmMJMTUgSmFuIDIwMDUgMTY6MjY6NDMgLTAwMDAJMS4xMi40LjEuMi40LjEyLjEK
KysrIG8vc2Zhc2xiZmQuYwkzIEp1biAyMDA1IDA0OjA1OjM1IC0wMDAwCkBAIC0yMTAsNyArMjEw
LDcgQEAKIAogICAgIG5iZmQ9MTsKIAotICAgIGR1bS5zbS50PXRfc3RyZWFtOworICAgIHNldF90
eXBlX29mKCZkdW0sdF9zdHJlYW0pOwogICAgIGR1bS5zbS5zbV9tb2RlPXNtbV9pbnB1dDsKICAg
ICBkdW0uc20uc21fb2JqZWN0MD1zTHN0cmluZ19jaGFyOwogCkBAIC0yOTQsNyArMjk0LDcgQEAK
IAogICBpZiAoKHU9YmZkX2dldF9zeW10YWJfdXBwZXJfYm91bmQoYikpPDApCiAgICAgRkVlcnJv
cigiQ2Fubm90IGdldCBzeW10YWIgdXBwb2VyIGJvdW5kIiwwKTsKLSAgcT0oYXN5bWJvbCAqKilh
bGxvY2EodSk7CisgIHE9KGFzeW1ib2wgKiopWkFMTE9DQSh1KTsKICAgaWYgKCh2PWJmZF9jYW5v
bmljYWxpemVfc3ltdGFiKGIscSkpPDApCiAgICAgRkVlcnJvcigiY2Fubm90IGNhbm9uaWNhbGl6
ZSBzeW10YWIiLDApOwogCkBAIC0zMzcsNyArMzM3LDcgQEAKICAgICAgd3JpdGUgcHJvdGVjdGlu
ZyB0aGUgcGFnZXMgb2YgbWVtb3J5LT5jZmQgYWdhaW4gYW5kIGNhdXNpbmcgYmZkIHJlYWRzIG9m
IAogICAgICB0aGUgc2VjdGlvbiBjb250ZW50cyB0byByZXR1cm4gYW4gZXJyb3IgY29kZSBhZnRl
ciBhICdzdHJhdGlmaWVkJyBzZWdmYXVsdCAqLwogIHsKLSAgIHZvaWQgKnY9YWxsb2NhKG1lbW9y
eS0+Y2ZkLmNmZF9zaXplKTsKKyAgIHZvaWQgKnY9WkFMTE9DQShtZW1vcnktPmNmZC5jZmRfc2l6
ZSk7CiAgICAKICAgIGlmICghdikKICAgICAgRkVlcnJvcigiQ2Fubm90IGFsbG9jYSBmb3IgYmZk
IiwwKTsKSW5kZXg6IG8vc2Zhc2xpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2Ns
L2djbC9vL3NmYXNsaS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwLjQuMi4yLjcuMTIuMQpk
aWZmIC11IC1yMS4xMC40LjIuMi43LjEyLjEgc2Zhc2xpLmMKLS0tIG8vc2Zhc2xpLmMJMTUgSmFu
IDIwMDUgMTY6MjY6NDMgLTAwMDAJMS4xMC40LjIuMi43LjEyLjEKKysrIG8vc2Zhc2xpLmMJMyBK
dW4gMjAwNSAwNDowNTozNSAtMDAwMApAQCAtNDgsNyArNDgsNyBAQAogICAgIEZFZXJyb3IoIkNh
bm5vdCBnZXQgc2VsZidzIHN5bXRhYiB1cHBlciBib3VuZCIsMCk7CiAKICNpZmRlZiBIQVZFX0FM
TE9DQQotICBxPShhc3ltYm9sICoqKWFsbG9jYSh1KTsKKyAgcT0oYXN5bWJvbCAqKilaQUxMT0NB
KHUpOwogI2Vsc2UKICAgcT0oYXN5bWJvbCAqKiltYWxsb2ModSk7CiAjZW5kaWYKSW5kZXg6IG8v
c2diYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9zZ2JjLmMsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuOS40LjEuMi4xMi42LjEuMi4xCmRpZmYgLXUgLXIxLjkuNC4x
LjIuMTIuNi4xLjIuMSBzZ2JjLmMKLS0tIG8vc2diYy5jCTEyIEF1ZyAyMDA0IDE2OjQyOjQ3IC0w
MDAwCTEuOS40LjEuMi4xMi42LjEuMi4xCisrKyBvL3NnYmMuYwkzIEp1biAyMDA1IDA0OjA1OjM1
IC0wMDAwCkBAIC01OSwxMSArNTksMTEgQEAKIAogCiAjZGVmaW5lIHNnY19tYXJrX3BhY2tfbGlz
dCh1KSAgICAgIFwKLWRvIHtyZWdpc3RlciBvYmplY3QgeHRtcCA9IHU7ICBcCitkbyB7b2JqZWN0
IHh0bXAgPSB1OyAgXAogIHdoaWxlICh4dG1wICE9IENuaWwpIFwKLSAgIHtpZiAoT05fV1JJVEFC
TEVfUEFHRSh4dG1wKSkgeHRtcC0+ZC5tID0gVFJVRTsgXAorICAge2lmIChPTl9XUklUQUJMRV9Q
QUdFKHh0bXApKSB7bWFyayh4dG1wKTt9IFwKICAgICAgc2djX21hcmtfb2JqZWN0KHh0bXAtPmMu
Y19jYXIpOyBcCi0gICAgeHRtcD14dG1wLT5jLmNfY2RyO319d2hpbGUoMCkgCisgICAgeHRtcD1T
Y2RyKHh0bXApO319d2hpbGUoMCkgCiAKIAogI2lmZGVmIFNERUJVRwpAQCAtNzIsMTEgKzcyLDIw
IEBACiBqb2UoKSB7O30gICAgIAogI2VuZGlmCiAKK3N0YXRpYyB2b2lkICptY3NoLCptY3NsOwor
CiBzdGF0aWMgdm9pZAogc2djX21hcmtfY29ucyhvYmplY3QgeCkgewogICAKICAgY3NfY2hlY2so
eCk7CiAgIAorI2lmIENTVEFDS19ESVJFQ1RJT04gPT0gLTEKKyAgaWYgKG1jc2w+KHZvaWQgKikm
eCkKKyNlbHNlCisgIGlmIChtY3NsPCh2b2lkICopJngpCisjZW5kaWYKKyAgICBtY3NsPSZ4Owor
CiAgIC8qICB4IGlzIGFscmVhZHkgbWFya2VkLiAgKi8KICAgCiAgQkVHSU46CkBAIC04OSwyMSAr
OTgsMjIgQEAKICAgZ290byBNQVJLX0NEUjsKICAgCiAgTUFSS19DQVI6Ci0gIGlmICh4LT5jLmNf
Y2FyLT5jLm0gPT0wKSB7CisgIGlmICghaXNfbWFya2VkX29yX2ZyZWUoeC0+Yy5jX2NhcikpIHsK
ICAgICBpZiAodHlwZV9vZih4LT5jLmNfY2FyKSA9PSB0X2NvbnMpIHsKLSAgICAgIHgtPmMuY19j
YXItPmMubSA9IFRSVUU7CisgICAgICBtYXJrKHgtPmMuY19jYXIpOwogICAgICAgc2djX21hcmtf
Y29ucyh4LT5jLmNfY2FyKTsKICAgICB9IGVsc2UKICAgICAgIHNnY19tYXJrX29iamVjdDEoeC0+
Yy5jX2Nhcik7fQogIE1BUktfQ0RSOiAgCiAjZW5kaWYKLSAgeCA9IHgtPmMuY19jZHI7CisgIGlm
IChpc19pbW1fZml4bnVtKHgtPmMuY19jZHIpKSByZXR1cm47CisgIHggPSBTY2RyKHgpOwogICBJ
Rl9XUklUQUJMRSh4LCBnb3RvIFdSSVRBQkxFX0NEUjspOwogICByZXR1cm47CiAgV1JJVEFCTEVf
Q0RSOgotICBpZiAoeC0+ZC5tKSByZXR1cm47CisgIGlmIChpc19tYXJrZWRfb3JfZnJlZSh4KSkg
cmV0dXJuOwogICBpZiAodHlwZV9vZih4KSA9PSB0X2NvbnMpIHsKLSAgICB4LT5jLm0gPSBUUlVF
OworICAgIG1hcmsoeCk7CiAgICAgZ290byBCRUdJTjsKICAgfQogICBzZ2NfbWFya19vYmplY3Qx
KHgpOwpAQCAtMTMxLDYgKzE0MSwxMyBAQAogICBjaGFyICpjcDsKICAgCiAgIGNzX2NoZWNrKHgp
OworI2lmIENTVEFDS19ESVJFQ1RJT04gPT0gLTEKKyAgaWYgKG1jc2w+KHZvaWQgKikmY3ApCisj
ZWxzZQorICBpZiAobWNzbDwodm9pZCAqKSZjcCkKKyNlbmRpZgorICAgIG1jc2w9JmNwOworCiAg
QkVHSU46CiAjaWZkZWYgU0RFQlVHCiAgIGlmICh4ID09IE9CSk5VTEwgfHwgIU9OX1dSSVRBQkxF
X1BBR0UoeCkpCkBAIC0xMzksNyArMTU2LDcgQEAKICAgam9lKCk7CiAgT0s6CiAjZW5kaWYgCi0g
IGlmICh4LT5kLm0pCisgIGlmIChpc19tYXJrZWRfb3JfZnJlZSh4KSkKICAgICByZXR1cm47CiAj
aWZkZWYgU0RFQlVHCiAgIGlmKHg9PXNkZWJ1Zykgam9lMSgpOwpAQCAtMTUxLDcgKzE2OCw3IEBA
CiAgICAgIGFsd2F5cyBmYWlsIG9uIHggdGhhdCBzYXRpc2Z5IChOVUxMX09SX09OX0NfU1RBQ0so
eCkpCiAgICovCiAgIAotICB4LT5kLm0gPSBUUlVFOworICBtYXJrKHgpOwogICBzd2l0Y2ggKHR5
cGVfb2YoeCkpIHsKICAgY2FzZSB0X2ZpeG51bToKICAgICBicmVhazsKQEAgLTE1OSw3ICsxNzYs
NyBAQAogICBjYXNlIHRfcmF0aW86CiAgICAgc2djX21hcmtfb2JqZWN0KHgtPnJhdC5yYXRfbnVt
KTsKICAgICB4ID0geC0+cmF0LnJhdF9kZW47Ci0gICAgSUZfV1JJVEFCTEUoeCxpZih4LT5kLm09
PTApIGdvdG8gQkVHSU4pOworICAgIElGX1dSSVRBQkxFKHgsaWYoIWlzX21hcmtlZF9vcl9mcmVl
KHgpKSBnb3RvIEJFR0lOKTsKICAgICAKICAgY2FzZSB0X3Nob3J0ZmxvYXQ6CiAgICAgYnJlYWs7
CkBAIC0xNzAsMTQgKzE4NywxNCBAQAogICBjYXNlIHRfY29tcGxleDoKICAgICBzZ2NfbWFya19v
YmplY3QoeC0+Y21wLmNtcF9pbWFnKTsKICAgICB4ID0geC0+Y21wLmNtcF9yZWFsOwotICAgIElG
X1dSSVRBQkxFKHgsaWYoeC0+ZC5tPT0wKSBnb3RvIEJFR0lOKTsKKyAgICBJRl9XUklUQUJMRSh4
LGlmKCFpc19tYXJrZWRfb3JfZnJlZSh4KSkgZ290byBCRUdJTik7CiAgICAgCiAgIGNhc2UgdF9j
aGFyYWN0ZXI6CiAgICAgYnJlYWs7CiAgICAgCiAgIGNhc2UgdF9zeW1ib2w6Ci0gICAgSUZfV1JJ
VEFCTEUoeC0+cy5zX3BsaXN0LGlmKHgtPnMuc19wbGlzdC0+ZC5tPT0wKQotICAgIHt4LT5zLnNf
cGxpc3QtPmQubT1UUlVFOworICAgIElGX1dSSVRBQkxFKHgtPnMuc19wbGlzdCxpZighaXNfbWFy
a2VkX29yX2ZyZWUoeC0+cy5zX3BsaXN0KSkKKyAgICB7bWFyayh4LT5zLnNfcGxpc3QpOwogICAg
IHNnY19tYXJrX2NvbnMoeC0+cy5zX3BsaXN0KTt9KTsKICAgICBzZ2NfbWFya19vYmplY3QoeC0+
cy5zX2dmZGVmKTsKICAgICBzZ2NfbWFya19vYmplY3QoeC0+cy5zX2RiaW5kKTsKQEAgLTUwOCw3
ICs1MjUsMjQgQEAKICAgICB9CiAgICAgYnJlYWs7CiAgICAgCisgICAgLypGSVhNRTogY2VudHJh
bGl6ZSB0aGlzKi8KKyAgICAvKkZJWE1FOiBTR0NfQ09OVEJMT0NLX1A/ICovCisjZGVmaW5lIFNH
Q19NQVJLX0NQKGFfLGJfKSB7aW50IF90PShiXyk7aWYgKGluaGVhcCgoYV8pKSkge1wKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aGF0X3RvX2NvbGxlY3QgPT0gdF9jb250aWd1
b3VzKSBtYXJrX2NvbnRibG9jaygodm9pZCAqKShhXyksX3QpO1wKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoU0dDX1JFTEJMT0NLX1AoKGFfKSkpIChhXyk9KHZvaWQgKilj
b3B5X3JlbGJsb2NrKCh2b2lkICopKGFfKSxfdCk7fQorCisjZGVmaW5lIFNHQ19NQVJLX01QKGFf
KSB7aWYgKChhXyktPl9tcF9kKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTR0NfTUFS
S19DUCgoYV8pLT5fbXBfZCwoYV8pLT5fbXBfYWxsb2MqTVBfTElNQl9TSVpFKTt9CisKICAgY2Fz
ZSB0X3JhbmRvbToKKyAgICBpZiAoKGludCl3aGF0X3RvX2NvbGxlY3QgPj0gKGludCl0X2NvbnRp
Z3VvdXMpIHsKKyAgICAgIFNHQ19NQVJLX01QKHgtPnJuZC5ybmRfc3RhdGUuX21wX3NlZWQpOwor
ICAgICAgaWYgKHgtPnJuZC5ybmRfc3RhdGUuX21wX2FsZ2RhdGEuX21wX2xjKSB7CisJU0dDX01B
UktfTVAoeC0+cm5kLnJuZF9zdGF0ZS5fbXBfYWxnZGF0YS5fbXBfbGMtPl9tcF9hKTsKKwlTR0Nf
TUFSS19NUCh4LT5ybmQucm5kX3N0YXRlLl9tcF9hbGdkYXRhLl9tcF9sYy0+X21wX20pOworCVNH
Q19NQVJLX0NQKHgtPnJuZC5ybmRfc3RhdGUuX21wX2FsZ2RhdGEuX21wX2xjLHNpemVvZigqeC0+
cm5kLnJuZF9zdGF0ZS5fbXBfYWxnZGF0YS5fbXBfbGMpKTsKKyAgICAgIH0KKyAgICB9CiAgICAg
YnJlYWs7CiAgICAgCiAgIGNhc2UgdF9yZWFkdGFibGU6CkBAIC01NzYsNiArNjEwLDcgQEAKICAg
ICBzZ2NfbWFya19vYmplY3QoeC0+Y2MuY2NfbmFtZSk7CiAgICAgc2djX21hcmtfb2JqZWN0KHgt
PmNjLmNjX2Vudik7CiAgICAgc2djX21hcmtfb2JqZWN0KHgtPmNjLmNjX2RhdGEpOworICAgIGlm
ICh4LT5jYy5jY190dXJibyE9TlVMTCkgc2djX21hcmtfb2JqZWN0KCooeC0+Y2MuY2NfdHVyYm8t
MSkpOwogICAgIGlmICh3aGF0X3RvX2NvbGxlY3QgPT0gdF9jb250aWd1b3VzKSB7CiAgICAgICBp
ZiAoeC0+Y2MuY2NfdHVyYm8gIT0gTlVMTCkKIAltYXJrX2NvbnRibG9jaygoY2hhciAqKSh4LT5j
Yy5jY190dXJiby0xKSwKQEAgLTU5OSw3ICs2MzQsNyBAQAogc3RhdGljIHZvaWQKIHNnY19tYXJr
X3N0YWNrX2NhcmVmdWxseSh2b2lkICp0b3B2LCB2b2lkICpib3R0b212LCBpbnQgb2Zmc2V0KSB7
CiAgIAotICBsb25nIG0scGFnZW9mZnNldDsKKyAgbG9uZyBwYWdlb2Zmc2V0OwogICB1bnNpZ25l
ZCBsb25nIHA7CiAgIG9iamVjdCB4OwogICBzdHJ1Y3QgdHlwZW1hbmFnZXIgKnRtOwpAQCAtNjI4
LDE0ICs2NjMsMTUgQEAKIAkgKChwYWdlb2Zmc2V0PSgoY2hhciAqKSpqIC0gcGFnZXRvY2hhcihw
KSkpICUKIAkgIHRtLT50bV9zaXplKSk7CiAgICAgICBpZiAoKHBhZ2VvZmZzZXQgPCAgKHRtLT50
bV9zaXplICogdG0tPnRtX25wcGFnZSkpCi0JICAmJiAobT14LT5kLm0pICE9IEZSRUUpIHsKLQlp
ZiAobT09VFJVRSkgY29udGludWU7Ci0JaWYgKG0hPTApIHsKLQkgIGZwcmludGYoc3Rkb3V0LAot
CQkgICIqKmJhZCB2YWx1ZSAlbGQgb2YgZC5tIGluIGdiYyBwYWdlICVsZCBza2lwcGluZyBtYXJr
KioiCi0JCSAgLG0scCk7ZmZsdXNoKHN0ZG91dCk7Ci0JICBjb250aW51ZTsKLQl9CisJICAmJiAh
aXNfbWFya2VkX29yX2ZyZWUoeCkpIHsKKy8qIAkgICYmIChtPXgtPmQubSkgIT0gRlJFRSkgeyAq
LworLyogCWlmIChtPT1UUlVFKSBjb250aW51ZTsgKi8KKy8qIAlpZiAobSE9MCkgeyAqLworLyog
CSAgZnByaW50ZihzdGRvdXQsICovCisvKiAJCSAgIioqYmFkIHZhbHVlICVsZCBvZiBkLm0gaW4g
Z2JjIHBhZ2UgJWxkIHNraXBwaW5nIG1hcmsqKiIgKi8KKy8qIAkJICAsbSxwKTtmZmx1c2goc3Rk
b3V0KTsgKi8KKy8qIAkgIGNvbnRpbnVlOyAqLworLyogCX0gKi8KIAlzZ2NfbWFya19vYmplY3Qo
eCk7CiAgICAgICB9CiAgICAgfQpAQCAtNjczLDggKzcwOSw4IEBACiAJICBvYmplY3QgeCA9IChv
YmplY3QpIHA7IAogCSAgaWYgKFNHQ19PUl9NKHgpKSAKIAkgICAgY29udGludWU7Ci0JICBpZiAo
eC0+ZC50PT10X2NvbnMpIHsKLQkgICAgeC0+ZC5tID0gVFJVRTsgCisJICBpZiAodHlwZV9vZih4
KT09dF9jb25zIC8qIHgtPmQudD09dF9jb25zICovKSB7CisJICAgIG1hcmsoeCk7IAogCSAgICBz
Z2NfbWFya19jb25zKHgpOwogCSAgfSBlbHNlCiAJICAgIHNnY19tYXJrX29iamVjdDEoeCk7CkBA
IC03NjQsOCArODAwLDggQEAKICAgU1RBVElDIG9iamVjdCBmOwogICBpbnQgc2l6ZTsKICAgCi0g
IENuaWwtPnMubSA9IEZBTFNFOwotICBDdC0+cy5tID0gRkFMU0U7CisgIHVubWFyayhDbmlsKTsK
KyAgdW5tYXJrKEN0KTsKICAgCiAjaWZkZWYgREVCVUcKICAgaWYgKGRlYnVnKQpAQCAtODA4LDIw
ICs4NDQsMjEgQEAKICAgICAgIGZvciAoaiA9IHRtLT50bV9ucHBhZ2U7IC0taiA+PSAwOyAgcCAr
PSBzaXplKSB7CiAJeCA9IChvYmplY3QpcDsKIAkKLQlpZiAoeC0+ZC5tID09IEZSRUUpCisJaWYg
KGlzX2ZyZWUoeCkpCiAJICBjb250aW51ZTsKLQllbHNlIGlmICh4LT5kLm0pIHsKLQkgIHgtPmQu
bSA9IEZBTFNFOworCWVsc2UgaWYgKGlzX21hcmtlZCh4KSkgeworCSAgdW5tYXJrKHgpOwogCSAg
Y29udGludWU7CiAJfQotCWlmKHgtPmQucyA9PSBTR0NfTk9STUFMKQorCWlmKCFpc19jb25zKHgp
ICYmIHgtPmQucyA9PSBTR0NfTk9STUFMKQogCSAgY29udGludWU7CiAJCiAJLyogaXQgaXMgb2sg
dG8gZnJlZSB4ICovCiAJCiAjaWZkZWYgT0xEX0RJU1BMQUNFCiAJLyogb2xkX2Rpc3BsYWNlOiBm
cm9tIG1pZ2h0IGJlIGZyZWUsIHRvIG5vdCAqLwotCWlmKHgtPmQudCA+PXRfYXJyYXkgJiYgeC0+
ZC50IDw9IHRfYml0dmVjdG9yKSB7CisvKiAJaWYoeC0+ZC50ID49dF9hcnJheSAmJiB4LT5kLnQg
PD0gdF9iaXR2ZWN0b3IpIHsgKi8KKwlpZih0eXBlX29mKHgpID49dF9hcnJheSAmJiB0eXBlX29m
KHgpIDw9IHRfYml0dmVjdG9yKSB7CiAJICAvKgkJCWNhc2UgdF9hcnJheToKIAkJCQljYXNlIHRf
dmVjdG9yOgogCQkJCWNhc2UgdF9zdHJpbmc6CkBAIC04NDEsMTMgKzg3OCwxMyBAQAogCX0KICNl
bmRpZiAvKiBPTERfRElTUExBQ0UgKi8KICNpZmRlZiBHTVBfVVNFX01BTExPQwkJCQotCWlmICh4
LT5kLnQgPT0gdF9iaWdudW0pIAorCWlmICh0eXBlX29mKHgpID09IHRfYmlnbnVtIC8qIHgtPmQu
dCA9PSB0X2JpZ251bSAqLykgCiAJICBtcHpfY2xlYXIoTVAoeCkpOwogI2VuZGlmCiAJCiAJU0VU
X0xJTksoeCxmKTsKLQl4LT5kLm0gPSBGUkVFOwotCXgtPmQucyA9IChpbnQpU0dDX1JFQ0VOVDsK
KwltYWtlX2ZyZWUoeCk7CisJaWYgKCFpc19jb25zKHgpKSB4LT5kLnMgPSAoaW50KVNHQ19SRUNF
TlQ7CiAJZiA9IHg7CiAJaysrOwogICAgICAgfQpAQCAtODU3LDcgKzg5NCw3IEBACiAgICAgZWxz
ZSAvKm5vbiBzZ2NfcGFnZSAqLwogICAgICAgZm9yIChqID0gdG0tPnRtX25wcGFnZTsgLS1qID49
IDA7ICBwICs9IHNpemUpIHsKIAl4ID0gKG9iamVjdClwOwotCWlmICh4LT5kLm0gPT0gVFJVRSkg
eC0+ZC5tPUZBTFNFOworCWlmIChpc19tYXJrZWQoeCkgJiYgIWlzX2ZyZWUoeCkpIHt1bm1hcmso
eCk7fQogICAgICAgfQogICAgIAogICB9CkBAIC0xMjAxLDcgKzEyMzgsNyBAQAogI2RlZmluZSBX
U0dDKHRtKSAoe2xvbmcgX3Q9TU1BWChNTUlOKHRtLT50bV9vcHRfbWF4cGFnZSx0bS0+dG1fbnBh
Z2UpLHRtLT50bV9zZ2MpO190O30pCiAvKiBJZiBvcHRfbWF4cGFnZSBpcyBzZXQsIGFkZCBmdWxs
IHBhZ2VzIHRvIHRoZSBzZ2Mgc2V0IGlmIG5lZWRlZAogICAgdG9vLiAyMDA0MDgwNCBDTSovCi0j
ZGVmaW5lIEZTR0ModG0pICh0bS0+dG1fb3B0X21heHBhZ2UgPyAwIDogdG0tPnRtX3NnY19taW5m
cmVlKQorI2RlZmluZSBGU0dDKHRtKSAodG0tPnRtX3R5cGU9PXRfY29ucyA/IHRtLT50bV9ucHBh
Z2UgOiAodG0tPnRtX29wdF9tYXhwYWdlID8gMCA6IHRtLT50bV9zZ2NfbWluZnJlZSkpCiAKIGlu
dAogc2djX3N0YXJ0KHZvaWQpIHsKQEAgLTE0NjMsMTcgKzE1MDAsMTcgQEAKICAgICAgIHdoaWxl
IChmIT0wKSB7CiAJbmV4dD1PQkpfTElOSyhmKTsKICNpZmRlZiBTREVCVUcJICAgICAKLQlpZiAo
Zi0+ZC5tIT1GUkVFKQorCWlmICghaXNfZnJlZShmKSkKIAkgIHByaW50ZigiTm90IEZSRUUgaW4g
ZnJlZWxpc3QgZj0lZCIsZik7CiAjZW5kaWYKIAlpZiAoT05fU0dDX1BBR0UoZikpIHsKIAkgIFNF
VF9MSU5LKGYseCk7Ci0JICBmLT5kLnMgPSBTR0NfUkVDRU5UOworIAkgIGlmICghaXNfY29ucyhm
KSkgZi0+ZC5zID0gU0dDX1JFQ0VOVDsKIAkgIHg9ZjsKIAkgIGNvdW50Kys7CiAJfSBlbHNlIHsK
IAkgIFNFVF9MSU5LKGYseSk7Ci0JICBmLT5kLnMgPSBTR0NfTk9STUFMOworIAkgIGlmICghaXNf
Y29ucyhmKSkgZi0+ZC5zID0gU0dDX05PUk1BTDsgCiAJICB5PWY7CiAJfQogCWY9bmV4dDsKQEAg
LTE1ODAsNyArMTYxNyw3IEBACiAJICAgIGlmICh0eXBlX21hcFtpXT09dCAmJiAoc2djX3R5cGVf
bWFwW2ldICYgU0dDX1BBR0VfRkxBRykpCiAJICAgICAgZm9yIChwPSBwYWdldG9jaGFyKGkpLGog
PSB0bS0+dG1fbnBwYWdlOwogCQkgICBqID4gMDsgLS1qLCBwICs9IHRtLT50bV9zaXplKQotCQko
KG9iamVjdCkgcCktPmQucyA9IFNHQ19OT1JNQUw7CisJCWlmICghaXNfY29ucygob2JqZWN0KXAp
KSAgKChvYmplY3QpIHApLT5kLnMgPSBTR0NfTk9STUFMOwogCX0KICAgICAgIH0KICAgICB9Cklu
ZGV4OiBvL3N5bWJvbC5kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9z
eW1ib2wuZCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44LjYuNApkaWZmIC11IC1yMS44LjYuNCBz
eW1ib2wuZAotLS0gby9zeW1ib2wuZAkyMCBNYXIgMjAwNCAwMjo0ODozMCAtMDAwMAkxLjguNi40
CisrKyBvL3N5bWJvbC5kCTMgSnVuIDIwMDUgMDQ6MDU6MzUgLTAwMDAKQEAgLTYzLDYgKzYzLDcg
QEAKIAkJZm9yIChpID0gMDsgIGkgPCB4LT5zLnNfZmlsbHA7ICBpKyspCiAJCQl4LT5zLnNfc2Vs
ZltpXSA9IHN0LT5zdC5zdF9zZWxmW2ldOwogCX0KKwl4LT5zLnNfaGFzaCA9IGloYXNoX2VxdWFs
MSh4LDApOwogCUVORF9OT19JTlRFUlJVUFQ7fQkKIAlyZXR1cm4odnNfcG9wKTsKIH0KQEAgLTUw
NSw3ICs1MDYsNyBAQAogCSAgYmlnPXRoaXNfZ2Vuc3ltX2NvdW50ZXI7CiAJICBzaWduPUJJR19T
SUdOKGJpZyk7CiAJICBzaXplID0gbXB6X3NpemVpbmJhc2UoTVAoYmlnKSwxMCkrMisoc2lnbjww
PyAxIDogMCk7Ci0JICBpZiAoIShwPWFsbG9jYShzaXplKSkpCisJICBpZiAoIShwPVpBTExPQ0Eo
c2l6ZSkpKQogCSAgICBGRWVycm9yKCJDYW5ub3QgYWxsb2NhIGdlbnN5bSBuYW1lIiwgMCk7CiAJ
ICBtcHpfZ2V0X3N0cihwLDEwLE1QKGJpZykpOwogCSAgaj1zaXplLTU7CkBAIC01MTQsOSArNTE1
LDkgQEAKIAkgIHE9cCtqOwogCSAgYnJlYWs7CiAJY2FzZSB0X2ZpeG51bToKLQkgIGZvciAoc2l6
ZT0xLGY9dGhpc19nZW5zeW1fY291bnRlci0+RklYLkZJWFZBTDtmO2YvPTEwLHNpemUrKyk7Ci0J
ICBxPXA9YWxsb2NhKHNpemUrNSk7Ci0JICBpZiAoKGo9c25wcmludGYocCxzaXplKzUsIiVkIiwo
aW50KXRoaXNfZ2Vuc3ltX2NvdW50ZXItPkZJWC5GSVhWQUwpKTw9MCkKKwkgIGZvciAoc2l6ZT0x
LGY9Zml4KHRoaXNfZ2Vuc3ltX2NvdW50ZXIpO2Y7Zi89MTAsc2l6ZSsrKTsKKwkgIHE9cD1aQUxM
T0NBKHNpemUrNSk7CisJICBpZiAoKGo9c25wcmludGYocCxzaXplKzUsIiVkIiwoaW50KWZpeCh0
aGlzX2dlbnN5bV9jb3VudGVyKSkpPD0wKQogCSAgICBGRWVycm9yKCJDYW5ub3Qgd3JpdGUgZ2Vu
c3ltIGNvdW50ZXIiLDApOwogCSAgcT1wK2o7CiAJICBicmVhazsKSW5kZXg6IG8vdXNpZy5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby91c2lnLmMsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMTAuNC4xLjQuMQpkaWZmIC11IC1yMS4xMC40LjEuNC4xIHVzaWcuYwotLS0g
by91c2lnLmMJMjUgSnVuIDIwMDQgMjI6NDQ6MTYgLTAwMDAJMS4xMC40LjEuNC4xCisrKyBvL3Vz
aWcuYwkzIEp1biAyMDA1IDA0OjA1OjM1IC0wMDAwCkBAIC02MSwxMyArNjEsMTMgQEAKICAgICBz
dHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKICAgICBhY3Rpb24uc2FfaGFuZGxlciA9IGhhbmRsZXI7
CiAvKiAgICBhY3Rpb24uc2FfZmxhZ3MgPSAgU0FfUkVTVEFSVCB8ICgoc2lnbm8gPT0gU0lHU0VH
ViB8fCBzaWdubyA9PSBTSUdCVVMpID8gU1ZfT05TVEFDSyA6IDApICovCi0gICBhY3Rpb24uc2Ff
ZmxhZ3MgPSBTQV9SRVNUQVJUIHwgKChzaWdubyA9PSBTSUdTRUdWIHx8IHNpZ25vID09IFNJR0JV
UykgPyBTVl9PTlNUQUNLIDogMCkgIAorICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVTVEFSVCB8
ICgoc2lnbm8gPT0gU0lHU0VHViB8fCBzaWdubyA9PSBTSUdCVVMpID8gU0FfT05TVEFDSyA6IDAp
ICAKICNpZmRlZiBTQV9TSUdJTkZPCiAgICAgfCBTQV9TSUdJTkZPCiAjZW5kaWYgICAgICAKICAg
ICAgIDsKICAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOwotICAgIHNpZ2FkZHNldCgm
YWN0aW9uLnNhX21hc2ssc2lnbm8pOworLyogICAgIHNpZ2FkZHNldCgmYWN0aW9uLnNhX21hc2ss
c2lnbm8pOyAqLwogICAgIHNpZ2FjdGlvbihzaWdubywmYWN0aW9uLDApOwogI2Vsc2UKICNpZmRl
ZiBIQVZFX1NJR1ZFQwpJbmRleDogby91c2lnMi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNy
b290L2djbC9nY2wvby91c2lnMi5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjExLjQuMS40LjIK
ZGlmZiAtdSAtcjEuMTEuNC4xLjQuMiB1c2lnMi5jCi0tLSBvL3VzaWcyLmMJMTQgU2VwIDIwMDMg
MDI6MzA6NDUgLTAwMDAJMS4xMS40LjEuNC4yCisrKyBvL3VzaWcyLmMJMyBKdW4gMjAwNSAwNDow
NTozNSAtMDAwMApAQCAtMjI5LDExICsyMjksMTEgQEAKIAkgICAgICBhZC0+dG1fbmZyZWUgLS07
CiAJICAgICAgYmNvcHkoYmVnICwmKHAtPmJ1ZltpXSksIGFtdCk7CiAJICAgICAgYnplcm8oYmVn
KzgsYW10LTgpOwotCSAgICAgIHgtPmQubSA9IDA7CisJICAgICAgeC0+ZC5mID0geC0+ZC5tID0g
MDsKIAkgICAgICBpZiAocC0+ZnJlZTJbaV0pCiAJCXsgeCA9IChvYmplY3QpIHAtPmZyZWUyW2ld
OwogCQkgIGJlZyA9IChjaGFyICopeDsKLQkJICB4LT5kLm0gPSAwOworCQkgIHgtPmQuZiA9IHgt
PmQubSA9IDA7CiAJCSAgYnplcm8oYmVnKzgsYW10LTgpOwogCQkgIFNTMShhZC0+dG1fZnJlZSxP
QkpfTElOSyhwLT5mcmVlMltpXSkpOwogCQkgIGFkLT50bV9uZnJlZSAtLTsKQEAgLTI4NSwxMiAr
Mjg1LDEyIEBACiAJICAgICAgb2JqZWN0IHggPSAob2JqZWN0KWJlZzsKIAkgICAgICBpbnQgYW10
ID0gYWQtPnRtX3NpemU7CiAJICAgICAgUlMxKHAtPmZyZWUyW2ldLChwLT5mcmVlMVtpXSkpOwot
CSAgICAgIGlmICh4LT5kLm0pIGVycm9yKCJzaG91bGQgbm90IGJlIGZyZWUiKTsKKwkgICAgICBp
ZiAoeC0+ZC5mIHx8IHgtPmQubSkgZXJyb3IoInNob3VsZCBub3QgYmUgZnJlZSIpOwogCSAgICAg
IGJjb3B5KCYocC0+YnVmW2ldKSxiZWcsIGFtdCk7CiAJICAgICAgaWYgKHAtPmZyZWUyW2ldKQog
CQl7IHggPSAob2JqZWN0KSBwLT5mcmVlMltpXTsKLQkJICBpZiAoeC0+ZC5tKSBlcnJvcigic2hv
dWxkIG5vdCBiZSBmcmVlIik7Ci0JCSAgeC0+ZC5tID0gRlJFRTsKKwkJICBpZiAoeC0+ZC5mIHx8
IHgtPmQubSkgZXJyb3IoInNob3VsZCBub3QgYmUgZnJlZSIpOworCQkgIHgtPmQuZiA9IDE7CiAJ
CSAgRl9MSU5LKEZfTElOSyhhZC0+dG1fZnJlZSkpID0gKGxvbmcgKWN1cnJlbnRfZmw7CiAJCSAg
YWQtPnRtX25mcmVlICs9IDI7CiAJCX0KSW5kZXg6IG8vdXRpbHMuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vdXRpbHMuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
MApkaWZmIC11IC1yMS4xMCB1dGlscy5jCi0tLSBvL3V0aWxzLmMJMTcgRmViIDIwMDMgMTY6NTA6
MjEgLTAwMDAJMS4xMAorKysgby91dGlscy5jCTMgSnVuIDIwMDUgMDQ6MDU6MzUgLTAwMDAKQEAg
LTE4NCw3ICsxODQsNyBAQAogCiBvYmplY3QKIEljaGVja19vbmVfdHlwZShvYmplY3QgeCwgZW51
bSB0eXBlIHQpCi17IGlmICh4LT5kLnQgIT0gdCkKK3sgaWYgKHR5cGVfb2YoeCkgIT0gdCkKICAg
ICB7IHJldHVybiBDRWVycm9yKCJFeHBlY3RlZCBhIH5hICIsIlN1cHBseSByaWdodCB0eXBlIiwx
LHR5cGVfbmFtZSh0KSxDbmlsLENuaWwsQ25pbCk7CiAgICAgfQogICByZXR1cm4geDsKSW5kZXg6
IG8veGRyZnVucy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby94ZHJm
dW5zLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNC4yLjEuNC4yCmRpZmYgLXUgLXIxLjQuMi4x
LjQuMiB4ZHJmdW5zLmMKLS0tIG8veGRyZnVucy5jCTYgTm92IDIwMDMgMTY6MTY6NTQgLTAwMDAJ
MS40LjIuMS40LjIKKysrIG8veGRyZnVucy5jCTMgSnVuIDIwMDUgMDQ6MDU6MzUgLTAwMDAKQEAg
LTQ3LDcgKzQ3LDggQEAKIAogICBzd2l0Y2ggKHR5cGVfb2YoZWx0KSkgewogICBjYXNlIHRfZml4
bnVtOgotICAgIGlmKCF4ZHJfbG9uZyh4ZHJwLCZmaXgoZWx0KSkpIGdvdG8gZXJyb3I7CisgICAg
e2ZpeG51bSBmPWZpeChlbHQpOworICAgIGlmKCF4ZHJfbG9uZyh4ZHJwLCZmKSkgZ290byBlcnJv
cjt9CiAgICAgYnJlYWs7CiAgIGNhc2UgdF9sb25nZmxvYXQ6CiAgICAgaWYoIXhkcl9kb3VibGUo
eGRycCwmbGYoZWx0KSkpIGdvdG8gZXJyb3I7CkluZGV4OiBwY2wvZGVmc3lzLmxpc3AKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9wY2wvZGVmc3lzLmxpc3AsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMwpkaWZmIC11IC1yMS4zIGRlZnN5cy5saXNwCi0tLSBwY2wvZGVmc3lz
Lmxpc3AJMjYgRmViIDIwMDMgMjI6MjE6MzggLTAwMDAJMS4zCisrKyBwY2wvZGVmc3lzLmxpc3AJ
MyBKdW4gMjAwNSAwNDowNTozNiAtMDAwMApAQCAtNTQ3LDcgKzU0Nyw3IEBACiAJCSAob3IgcHJp
bnQtb25seSAobG9hZCBwYXRobmFtZSkpKQkgICAgICAgCiAJICAgICAgIChsb2FkLW1vZHVsZSAo
bSkKIAkJIChsZXQqICgobmFtZSAobW9kdWxlLW5hbWUgbSkpCi0JCQkoKmxvYWQtdmVyYm9zZSog
bmlsKQorCQkJKCpsb2FkLXZlcmJvc2UqIHQpCiAJCQkoYmluYXJ5IChtYWtlLWJpbmFyeS1wYXRo
bmFtZSBtKSkpCiAJCSAgIChsb2FkLWJpbmFyeSBuYW1lIGJpbmFyeSkpKQogCSAgICAgICAoY29t
cGlsZS1tb2R1bGUgKG0pCkluZGV4OiB1bml4cG9ydC9tYWtlZmlsZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL3VuaXhwb3J0L21ha2VmaWxlLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjQyLjIuMS4yLjEuMi4xOS40LjEuOC4xCmRpZmYgLXUgLXIxLjQyLjIuMS4yLjEuMi4x
OS40LjEuOC4xIG1ha2VmaWxlCi0tLSB1bml4cG9ydC9tYWtlZmlsZQkxNSBKYW4gMjAwNSAxNjoz
NDo0NSAtMDAwMAkxLjQyLjIuMS4yLjEuMi4xOS40LjEuOC4xCisrKyB1bml4cG9ydC9tYWtlZmls
ZQkzIEp1biAyMDA1IDA0OjA1OjM2IC0wMDAwCkBAIC0xNzUsNyArMTc1LDcgQEAKIGNsZWFuOgog
CXJtIC1yZiAgc2F2ZWRfKiQoRVhFKSByYXdfKiQoRVhFKSAqLm8gY29yZSBhLm91dCAkKFJTWU0p
IFwKIAkJJChMU1BESVIpL2F1dG9fbmV3LmxzcCBmb28gKm1heGltYSogaW5pdF8qLmxzcCBsaWIq
LmEgZ21wKiBiZmQqICoubHNwLnRtcCBcCi0JCWdhem9uayoubHNwIHBsdCpoICpfbWFwIHNhdmVk
XyogbGliKiByYXdfKgorCQlnYXpvbmsqLmxzcCBwbHQqaCAqX21hcCBzYXZlZF8qIGxpYiogcmF3
XyogZ2NsLnNjcmlwdAogCiAuSU5URVJNRURJQVRFOiBpbml0X2Fuc2lfZ2NsLmxzcC50bXAgaW5p
dF9nY2wubHNwLnRtcCByYXdfZ2NsIHJhd19hbnNpX2djbAogLlBSRUNJT1VTOiBpbml0X2djbC5s
c3AgaW5pdF9hbnNpX2djbC5sc3AK
--[[application/octet-stream
Content-Disposition: attachment; filename="zzzz6.p"][base64]]
PyBnYXpvbmswLmRhdGEKPyBnYXpvbmswLmxzcAo/IGdhem9uazEuZGF0YQo/IGdhem9uazEubHNw
Cj8gZ2F6b25rMi5kYXRhCj8gZ2F6b25rMi5sc3AKPyB0ci5jCj8gYW5zaS10ZXN0cy90Y29tcAo/
IGFuc2ktdGVzdHMvdGVzdC1yZXN1bHRzMwo/IGFuc2ktdGVzdHMvdGVzdF9yZXN1bHRzMQo/IGFu
c2ktdGVzdHMvdGVzdF9yZXN1bHRzMgo/IGdjbC10ay9nY2wuc2NyaXB0Cj8gbHNwL2dhem9uazAu
bHNwCj8gbHNwL2dhem9uazEubHNwCj8gbHNwL2dhem9uazIubHNwCj8gbHNwL2dhem9uazMubHNw
Cj8gbHNwL2dhem9uazQubHNwCj8gbHNwL2dhem9uazUubHNwCj8gbHNwL2dhem9uazYubHNwCj8g
bHNwL2dhem9uazcubHNwCj8gbHNwL2dhem9uazgubHNwCj8gbHNwL2djbF9kZW1hY3JvLmxzcAo/
IG8vcGFja2FnZS5jCj8gby93Cj8gcGNsL2Zvbwo/IHVuaXhwb3J0L2dhem9uazAuYwo/IHVuaXhw
b3J0L2dhem9uazAuZGF0YQo/IHVuaXhwb3J0L2dhem9uazAuaAo/IHVuaXhwb3J0L2dhem9uazIu
Ywo/IHVuaXhwb3J0L2dhem9uazIuZGF0YQo/IHVuaXhwb3J0L2dhem9uazIuaApJbmRleDogYWNj
b25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2FjY29uZmlnLmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjIuNi45LjIuMS42LjEuNC4xCmRpZmYgLXUgLXIxLjIy
LjYuOS4yLjEuNi4xLjQuMSBhY2NvbmZpZy5oCi0tLSBhY2NvbmZpZy5oCTE1IEphbiAyMDA1IDE5
OjE3OjE3IC0wMDAwCTEuMjIuNi45LjIuMS42LjEuNC4xCisrKyBhY2NvbmZpZy5oCTYgSnVuIDIw
MDUgMjE6NDk6NDggLTAwMDAKQEAgLTEwLDEzICsxMCwxNCBAQAogcHJlYWxsb2NhdGVkIGluIGEg
dGFibGUgYXQgY29tcGlsZSB0aW1lLiAgdGhpcyBtdXN0IGJlIGEgcG93ZXIgb2YgMiBpZgogU0dD
IGlzIGVuYWJsZWQuICAqLwogCi0jZGVmaW5lIE1BWFBBR0UgMTI4KjEwMjQKLSNkZWZpbmUgVlNT
SVpFIDEyOCoxMDI0Ci0jZGVmaW5lIEJEU1NJWkUgMioxMDI0Ci0jZGVmaW5lIElIU1NJWkUgNCox
MDI0Ci0jZGVmaW5lIEZSU1NJWkUgNCoxMDI0CisjdW5kZWYgTUFYUEFHRQorI3VuZGVmIFZTU0la
RQorI3VuZGVmIEJEU1NJWkUKKyN1bmRlZiBJSFNTSVpFCisjdW5kZWYgRlJTU0laRQorI3VuZGVm
IENTU0laRQogCi0jZGVmaW5lIEhPTEVQQUdFIChNQVhQQUdFLzEwKQorI3VuZGVmIEhPTEVESVYK
IAogLyogY2hlY2sgdG8gc2VlIGlmIGdldGN3ZCBleGlzdHMKICovCkBAIC05NCw2ICs5NSwxMyBA
QAogKi8KIAogI2RlZmluZSBDU1RBQ0tfQUREUkVTUyAwCisjZGVmaW5lIENTVEFDS19ESVJFQ1RJ
T04gMAorI2RlZmluZSBDU1RBQ0tfQUxJR05NRU5UIDAKKyNkZWZpbmUgQ1NUQUNLX1RPUCAwCisj
ZGVmaW5lIENTVEFDS19SQU5HRSAwCisjZGVmaW5lIFNIQVJFRF9MSUJfSEVBUF9DRUlMSU5HIDAK
KyN1bmRlZiBJTV9GSVhfQkFTRQorI3VuZGVmIElNX0ZJWF9MSU0KIAogLyogZGVmaW5lIGlmIFNJ
R1NZUyBpcyBkZWZpbmVkIGluIHNpZ25hbC5oICovCiAKQEAgLTI1MSwzICsyNTksNCBAQAogI3Vu
ZGVmIEhPU1RfU1lTVEVNCiAjdW5kZWYgR0NMX0dQUk9GX1NUQVJUCiAjdW5kZWYgSFoKKwpJbmRl
eDogY29uZmlndXJlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvY29uZmln
dXJlLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwNy40LjEuMi4yLjIuNDguMi4zLjIuMS40LjIu
NC4yCmRpZmYgLXUgLXIxLjEwNy40LjEuMi4yLjIuNDguMi4zLjIuMS40LjIuNC4yIGNvbmZpZ3Vy
ZQotLS0gY29uZmlndXJlCTE1IEphbiAyMDA1IDE5OjE3OjE3IC0wMDAwCTEuMTA3LjQuMS4yLjIu
Mi40OC4yLjMuMi4xLjQuMi40LjIKKysrIGNvbmZpZ3VyZQk2IEp1biAyMDA1IDIxOjQ5OjQ5IC0w
MDAwCkBAIC0xMiwyMCArMTIsMjQgQEAKIGFjX2RlZmF1bHRfcHJlZml4PS91c3IvbG9jYWwKICMg
QW55IGFkZGl0aW9ucyBmcm9tIGNvbmZpZ3VyZS5pbjoKIGFjX2hlbHA9IiRhY19oZWxwCi0gLS1l
bmFibGUtbWF4cGFnZT1YWFhYIHdpbGwgY29tcGlsZSBpbiBhIHBhZ2UgdGFibGUgb2Ygc2l6ZSBY
WFggKGVnICctLWVuYWJsZS1tYXhwYWdlPTY0KjEwMjQnIHdvdWxkIGdpdmUgNjRLIHBhZ2VzIGFs
bG93aW5nIDI1NiBNQiBpZiBwYWdlcyBhcmUgNEsgZWFjaCkgIgorIC0tZW5hYmxlLW1heHBhZ2U9
WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSBwYWdlIHRhYmxlIG9mIHNpemUgWFhYIChlZyAnLS1lbmFi
bGUtbWF4cGFnZT02NCoxMDI0JyB3b3VsZCBnaXZlIDY0SyBwYWdlcyBhbGxvd2luZyAyNTYgTUIg
aWYgcGFnZXMgYXJlIDRLIGVhY2gpIgogYWNfaGVscD0iJGFjX2hlbHAKLSAtLWVuYWJsZS1ob2xl
cGFnZT1YWFhYIHdpbGwgY29tcGlsZSBpbiBhIFhYWC1zaXplZCBob2xlIGJldHdlZW4gdGhlIGhl
YXAgYW5kIHJlbG9jYXRhYmxlIG1lbW9yeSBhcmVhIChlZyAnLS1lbmFibGUtaG9sZXBhZ2U9NjQq
MTAyNCcgd291bGQgZ2l2ZSA2NEsgcGFnZXMgYWxsb3dpbmcgMjU2IE1CIGlmIHBhZ2VzIGFyZSA0
SyBlYWNoKSAiCisgLS1lbmFibGUtaG9sZWRpdj1YWFhYIHdpbGwgc3BlY2lmeSB0aGF0IDEvWFhY
WCBvZiB0aGUgY29yZSBzaG91bGQgYmUgdXNlZCBhcyB0aGUgaG9sZSBiZXR3ZWVuIHRoZSBoZWFw
IGFuZCByZWxvY2F0YWJsZSBtZW1vcnkgYXJlYSIKIGFjX2hlbHA9IiRhY19oZWxwCi0gLS1lbmFi
bGUtdnNzaXplPVhYWFggd2lsbCBjb21waWxlIGluIGEgdmFsdWUgc3RhY2sgb2Ygc2l6ZSBYWFgg
IgorIC0tZW5hYmxlLXZzc2l6ZT1YWFhYIHdpbGwgY29tcGlsZSBpbiBhIHZhbHVlIHN0YWNrIG9m
IHNpemUgWFhYIgogYWNfaGVscD0iJGFjX2hlbHAKLSAtLWVuYWJsZS1iZHNzaXplPVhYWFggd2ls
bCBjb21waWxlIGluIGEgYmluZGluZyBzdGFjayBvZiBzaXplIFhYWCAiCisgLS1lbmFibGUtYmRz
c2l6ZT1YWFhYIHdpbGwgY29tcGlsZSBpbiBhIGJpbmRpbmcgc3RhY2sgb2Ygc2l6ZSBYWFgiCiBh
Y19oZWxwPSIkYWNfaGVscAotIC0tZW5hYmxlLWloc3NpemU9WFhYWCB3aWxsIGNvbXBpbGUgaW4g
YSBpbnZvY2F0aW9uIGhpc3Rvcnkgc3RhY2sgb2Ygc2l6ZSBYWFggIgorIC0tZW5hYmxlLWloc3Np
emU9WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSBpbnZvY2F0aW9uIGhpc3Rvcnkgc3RhY2sgb2Ygc2l6
ZSBYWFgiCiBhY19oZWxwPSIkYWNfaGVscAotIC0tZW5hYmxlLWZyc3NpemU9WFhYWCB3aWxsIGNv
bXBpbGUgaW4gYSBmcmFtZSBzdGFjayBvZiBzaXplIFhYWCAiCisgLS1lbmFibGUtZnJzc2l6ZT1Y
WFhYIHdpbGwgY29tcGlsZSBpbiBhIGZyYW1lIHN0YWNrIG9mIHNpemUgWFhYIgorYWNfaGVscD0i
JGFjX2hlbHAKKyAtLWVuYWJsZS1jc3NpemU9WFhYWCBwcm9kdWNlcyBleGVjdXRhYmxlcyB3aXRo
IGEgQyBzdGFjayBvZiBzaXplIFhYWCIKIGFjX2hlbHA9IiRhY19oZWxwCiAgLS1lbmFibGUtbWFj
aGluZT1YWFhYIHdpbGwgZm9yY2UgdGhlIHVzZSBvZiBvbmUgb2YgdGhlIGRlZmluaXRpb25zIGlu
IGgvWFhYWC5kZWZzICIKIGFjX2hlbHA9IiRhY19oZWxwCisgLS1lbmFibGUtaW1tZml4PVhYWFgg
d2lsbCBlbmFibGUgYW4gaW1tZWRpYXRlIGZpeG51bSB0YWJsZSBhYm92ZSB0aGUgQyBzdGFjayIK
K2FjX2hlbHA9IiRhY19oZWxwCiAgLS1lbmFibGUtbm90aWZ5PW5vIHdpbGwgZGlzYWJsZSB0aGUg
YXV0b21hdGljIG5vdGlmaWNhdGlvbiBvZiBnY2wgbWFpbnRhaW5lcnMgb2Ygc3VjY2Vzc2Z1bCBi
dWlsZHMvcHJvYmxlbXMgIgogYWNfaGVscD0iJGFjX2hlbHAKICAtLWVuYWJsZS10a2NvbmZpZz1Y
WFhYIHdpbGwgZm9yY2UgdGhlIHVzZSBvZiBhIFRLX0NPTkZJR19QUkVGSVg9WFhYWFggYXMgcGxh
Y2UgdG8gbG9vayBmb3IgdGtDb25maWcuc2ggYW5kIHRjbENvbmZpZy5zaCAgIgpAQCAtNjAyLDY1
ICs2MDYsOTYgQEAKICMKIAogaGVscD0iLS1lbmFibGUtbWF4cGFnZT1YWFhYIHdpbGwgY29tcGls
ZSBpbiBhIHBhZ2UgdGFibGUgb2Ygc2l6ZSBYWFggKGRlZmF1bHQgJHtkZWZhdWx0X21heHBhZ2V9
KSIKKworCiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbWF4cGFnZSBvciAtLWRpc2FibGUtbWF4
cGFnZSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9tYXhwYWdlK3NldH0iID0gc2V0OyB0
aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9tYXhwYWdlIgotICBjYXQgPj4gY29uZmRlZnMuaCA8
PEVPRgotI2RlZmluZSBNQVhQQUdFICRlbmFibGVfbWF4cGFnZQotRU9GCi0KKyAgOgorZWxzZQor
ICBlbmFibGVfbWF4cGFnZT0yNjIxNDQKIGZpCiAKKyNBQ19ERUZJTkVfVU5RVU9URUQoTUFYUEFH
RSwkZW5hYmxlX21heHBhZ2UpCiAKLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ob2xlcGFnZSBv
ciAtLWRpc2FibGUtaG9sZXBhZ2Ugd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfaG9sZXBh
Z2Urc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX2hvbGVwYWdlIgotICBj
YXQgPj4gY29uZmRlZnMuaCA8PEVPRgotI2RlZmluZSBIT0xFUEFHRSAkZW5hYmxlX2hvbGVwYWdl
Ci1FT0YKIAorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWhvbGVkaXYgb3IgLS1kaXNhYmxlLWhv
bGVkaXYgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfaG9sZWRpditzZXR9IiA9IHNldDsg
dGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfaG9sZWRpdiIKKyAgOgorZWxzZQorICBlbmFibGVf
aG9sZWRpdj00CiBmaQogCitjYXQgPj4gY29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBIT0xFRElW
ICRlbmFibGVfaG9sZWRpdgorRU9GCisKKwogCiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdnNz
aXplIG9yIC0tZGlzYWJsZS12c3NpemUgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfdnNz
aXplK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV92c3NpemUiCi0gIGNh
dCA+PiBjb25mZGVmcy5oIDw8RU9GCisgIDoKK2Vsc2UKKyAgZW5hYmxlX3Zzc2l6ZT0xMzEwNzIK
K2ZpCisKK2NhdCA+PiBjb25mZGVmcy5oIDw8RU9GCiAjZGVmaW5lIFZTU0laRSAkZW5hYmxlX3Zz
c2l6ZQogRU9GCiAKLWZpCiAKIAogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWJkc3NpemUgb3Ig
LS1kaXNhYmxlLWJkc3NpemUgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfYmRzc2l6ZStz
ZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfYmRzc2l6ZSIKLSAgY2F0ID4+
IGNvbmZkZWZzLmggPDxFT0YKKyAgOgorZWxzZQorICBlbmFibGVfYmRzc2l6ZT0yMDQ4CitmaQor
CitjYXQgPj4gY29uZmRlZnMuaCA8PEVPRgogI2RlZmluZSBCRFNTSVpFICRlbmFibGVfYmRzc2l6
ZQogRU9GCiAKLWZpCiAKIAogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWloc3NpemUgb3IgLS1k
aXNhYmxlLWloc3NpemUgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfaWhzc2l6ZStzZXR9
IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfaWhzc2l6ZSIKLSAgY2F0ID4+IGNv
bmZkZWZzLmggPDxFT0YKKyAgOgorZWxzZQorICBlbmFibGVfaWhzc2l6ZT00MDk2CitmaQorCitj
YXQgPj4gY29uZmRlZnMuaCA8PEVPRgogI2RlZmluZSBJSFNTSVpFICRlbmFibGVfaWhzc2l6ZQog
RU9GCiAKLWZpCi0KIAogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWZyc3NpemUgb3IgLS1kaXNh
YmxlLWZyc3NpemUgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfZnJzc2l6ZStzZXR9IiA9
IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfZnJzc2l6ZSIKLSAgY2F0ID4+IGNvbmZk
ZWZzLmggPDxFT0YKKyAgOgorZWxzZQorICBlbmFibGVfZnJzc2l6ZT00MDk2CitmaQorCitjYXQg
Pj4gY29uZmRlZnMuaCA8PEVPRgogI2RlZmluZSBGUlNTSVpFICRlbmFibGVfZnJzc2l6ZQogRU9G
CiAKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWNzc2l6ZSBvciAtLWRpc2FibGUtY3NzaXpl
IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2Nzc2l6ZStzZXR9IiA9IHNldDsgdGhlbgor
ICBlbmFibGV2YWw9IiRlbmFibGVfY3NzaXplIgorICA6CitlbHNlCisgIGVuYWJsZV9jc3NpemU9
MTA3Mzc0MTgyNAogZmkKIAorI0FDX0RFRklORV9VTlFVT1RFRChDU1NJWkUsJGVuYWJsZV9jc3Np
emUpCiAKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tYWNoaW5lIG9yIC0tZGlzYWJsZS1tYWNo
aW5lIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX21hY2hpbmUrc2V0fSIgPSBzZXQ7IHRo
ZW4KQEAgLTY3MSw2ICs3MDYsMTUgQEAKIGZpCiAKIAorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxl
LWltbWZpeCBvciAtLWRpc2FibGUtaW1tZml4IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxl
X2ltbWZpeCtzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfaW1tZml4Igor
ICA6CitlbHNlCisgIGVuYWJsZV9pbW1maXg9eWVzCitmaQorCisKICNBQ19BUkdfRU5BQkxFKGdt
cCxbIC0tZW5hYmxlLWdtcD1ubyB3aWxsIGRpc2FibGUgdXNlIG9mIEdNUCBnbnUgbXVsdGlwcmVj
aXNpb24gYXJpdGhtZXRpYywgKGRlZmF1bHQgaXMgPXllcyldICwKICNbdXNlX2dtcD0kZW5hYmxl
dmFsXSxbdXNlX2dtcD0ieWVzIl0pCiAKQEAgLTc4Miw3ICs4MjYsNyBAQAogZmkKIAogZWNobyAk
YWNfbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJj
b25maWd1cmU6Nzg2OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKK2VjaG8gImNvbmZp
Z3VyZTo4MzA6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQogCiBob3N0X2FsaWFzPSRo
b3N0CiBjYXNlICIkaG9zdF9hbGlhcyIgaW4KQEAgLTExOTUsNyArMTIzOSw3IEBACiAjIEV4dHJh
Y3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3
aXRoIGFyZ3MuCiBzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2lu
ZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjExOTk6IGNo
ZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MTI0MzogY2hlY2tpbmcg
Zm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9n
X0NDJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2Mi
IDE+JjYKIGVsc2UKQEAgLTEyMjUsNyArMTI2OSw3IEBACiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qg
d29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0
IGR1bW15IGNjOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQi
Ii4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjEyMjk6IGNoZWNraW5nIGZvciAkYWNf
d29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MTI3MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+
JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9J2BcIiA9
IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAg
LTEyNzYsNyArMTMyMCw3IEBACiAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNs
Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBjbDsg
YWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2Mi
IDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMjgwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQor
ZWNobyAiY29uZmlndXJlOjEzMjQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFs
ICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVu
CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xMzA4LDcgKzEz
NTIsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxl
ciAoJENDICRDRkxBR1MgJExERkxBR1MpIHdvcmtzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNv
bmZpZ3VyZToxMzEyOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFH
UyAkTERGTEFHUykgd29ya3MiID4mNQorZWNobyAiY29uZmlndXJlOjEzNTY6IGNoZWNraW5nIHdo
ZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSB3b3JrcyIgPiY1CiAK
IGFjX2V4dD1jCiAjIENGTEFHUyBpcyBub3QgaW4gYWNfY3BwIGJlY2F1c2UgLWcsIC1PLCBldGMu
IGFyZSBub3QgdmFsaWQgY3BwIG9wdGlvbnMuCkBAIC0xMzE5LDEyICsxMzYzLDEyIEBACiAKIGNh
dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDwgRU9GCiAKLSNsaW5lIDEzMjMgImNvbmZpZ3VyZSIKKyNs
aW5lIDEzNjcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBtYWluKCl7cmV0
dXJuKDApO30KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMzI4OiBcIiRhY19saW5r
XCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2Fj
X2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTM3MjogXCIkYWNfbGlu
a1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHth
Y19leGVleHR9OyB0aGVuCiAgIGFjX2N2X3Byb2dfY2Nfd29ya3M9eWVzCiAgICMgSWYgd2UgY2Fu
J3QgcnVuIGEgdHJpdmlhbCBwcm9ncmFtLCB3ZSBhcmUgcHJvYmFibHkgdXNpbmcgYSBjcm9zcyBj
b21waWxlci4KICAgaWYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsOyB0aGVuCkBAIC0x
MzUwLDEyICsxMzk0LDEyIEBACiAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogaW5zdGFsbGF0
aW9uIG9yIGNvbmZpZ3VyYXRpb24gcHJvYmxlbTogQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4
ZWN1dGFibGVzLiIgMT4mMjsgZXhpdCAxOyB9CiBmaQogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hl
dGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIGlzIGEgY3Jvc3MtY29t
cGlsZXIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjEzNTQ6IGNoZWNraW5nIHdo
ZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNv
bXBpbGVyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxMzk4OiBjaGVja2luZyB3aGV0aGVyIHRoZSBD
IGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIgPiY1
CiBlY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfY2NfY3Jvc3MiIDE+JjYKIGNyb3NzX2NvbXBpbGlu
Zz0kYWNfY3ZfcHJvZ19jY19jcm9zcwogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHdl
IGFyZSB1c2luZyBHTlUgQyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTM1OTog
Y2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiID4mNQorZWNobyAiY29uZmlndXJl
OjE0MDM6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiA+JjUKIGlmIGV2YWwg
InRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX2djYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVu
CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xMzY0LDcgKzE0
MDgsNyBAQAogICB5ZXM7CiAjZW5kaWYKIEVPRgotaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1FIGNv
bmZ0ZXN0LmMnOyB7IChldmFsIGVjaG8gY29uZmlndXJlOjEzNjg6IFwiJGFjX3RyeVwiKSAxPiY1
OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4mMTsg
dGhlbgoraWYgeyBhY190cnk9JyR7Q0MtY2N9IC1FIGNvbmZ0ZXN0LmMnOyB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjE0MTI6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9
OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4mMTsgdGhlbgogICBhY19jdl9wcm9nX2djYz15
ZXMKIGVsc2UKICAgYWNfY3ZfcHJvZ19nY2M9bm8KQEAgLTEzODMsNyArMTQyNyw3IEBACiBhY19z
YXZlX0NGTEFHUz0iJENGTEFHUyIKIENGTEFHUz0KIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRo
ZXIgJHtDQy1jY30gYWNjZXB0cyAtZyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6
MTM4NzogY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiA+JjUKK2VjaG8gImNv
bmZpZ3VyZToxNDMxOiBjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciID4mNQog
aWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfY2NfZycrc2V0fSdgXCIgPSBz
ZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0x
NDE1LDcgKzE0NTksNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgaG93IHRvIHJ1biB0
aGUgQyBwcmVwcm9jZXNzb3IiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE0MTk6
IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKK2VjaG8gImNvbmZp
Z3VyZToxNDYzOiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIgPiY1CiAj
IE9uIFN1bnMsIHNvbWV0aW1lcyAkQ1BQIG5hbWVzIGEgZGlyZWN0b3J5LgogaWYgdGVzdCAtbiAi
JENQUCIgJiYgdGVzdCAtZCAiJENQUCI7IHRoZW4KICAgQ1BQPQpAQCAtMTQzMCwxMyArMTQ3NCwx
MyBAQAogICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNv
bXBpbGVyJ3MgcGFyc2VyLAogICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLgogICBjYXQgPiBjb25m
dGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAxNDM0ICJjb25maWd1cmUiCisjbGluZSAxNDc4ICJj
b25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxhc3NlcnQuaD4KIFN5
bnRheCBFcnJvcgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9u
dWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDQwOiBcIiRhY190
cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3Vy
ZToxNDg0OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJy
PWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19l
eHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgOgpAQCAtMTQ0NywxMyArMTQ5
MSwxMyBAQAogICBybSAtcmYgY29uZnRlc3QqCiAgIENQUD0iJHtDQy1jY30gLUUgLXRyYWRpdGlv
bmFsLWNwcCIKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMTQ1MSAiY29u
ZmlndXJlIgorI2xpbmUgMTQ5NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAj
aW5jbHVkZSA8YXNzZXJ0Lmg+CiBTeW50YXggRXJyb3IKIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNv
bmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBj
b25maWd1cmU6MTQ1NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0K
K3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTUwMTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRh
Y190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3Jl
cCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVu
CiAgIDoKQEAgLTE0NjQsMTMgKzE1MDgsMTMgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBDUFA9
IiR7Q0MtY2N9IC1ub2xvZ28gLUUiCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNs
aW5lIDE0NjggImNvbmZpZ3VyZSIKKyNsaW5lIDE1MTIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJj
b25mZGVmcy5oIgogI2luY2x1ZGUgPGFzc2VydC5oPgogU3ludGF4IEVycm9yCiBFT0YKIGFjX3Ry
eT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17
IChldmFsIGVjaG8gY29uZmlndXJlOjE0NzQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNf
dHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjE1MTg6IFwiJGFjX3RyeVwiKSAx
PiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0
ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIk
YWNfZXJyIjsgdGhlbgogICA6CkBAIC0xNTQzLDcgKzE1ODcsNyBAQAogIyBFeHRyYWN0IHRoZSBm
aXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRo
IGFyZ3MuCiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNr
aW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTU0Nzog
Y2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNTkxOiBjaGVja2lu
ZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3By
b2dfQVdLJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFj
X2MiIDE+JjYKIGVsc2UKQEAgLTE1ODMsNyArMTYyNyw3IEBACiBFT0YKIAogCWVjaG8gJGFjX24g
ImNoZWNraW5nIGZvciB0ZXh0IHN0YXJ0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3Vy
ZToxNTg3OiBjaGVja2luZyBmb3IgdGV4dCBzdGFydCIgPiY1CitlY2hvICJjb25maWd1cmU6MTYz
MTogY2hlY2tpbmcgZm9yIHRleHQgc3RhcnQiID4mNQogCWVjaG8gJ2ludCBtYWluICgpIHtyZXR1
cm4oMCk7fScgPmZvby5jCiAJJENDIGZvby5jIC1vIGZvbwogCUdDTF9HUFJPRl9TVEFSVD1gbm0g
Zm9vIHwgJEFXSyAgJy8gICpUICAqX18qc3RhcnQkLyB7cHJpbnQgJE5GfSdgCkBAIC0xNjI0LDYg
KzE2NjgsMTAgQEAKIAljYXNlICR1c2UgaW4KICMJCWFtZDY0KikgIyBzdGFjay1ib3VuZGFyeSBv
cHRpb24gZG9lcyBub3Qgd29yawogIwkJCVRDRkxBR1M9IiRUQ0ZMQUdTIC1tNjQgLW1wcmVmZXJy
ZWQtc3RhY2stYm91bmRhcnk9OCI7OyAgCisjCQkzODYqKQorIwkJCVRDRkxBR1M9IiRUQ0ZMQUdT
IC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTIiOzsgIAorIwkJYW1kNjQqKQorIwkJCVRDRkxB
R1M9IiRUQ0ZMQUdTIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMiOzsgIAogCQlhbHBoYSop
CiAJCQlUQ0ZMQUdTPSIkVENGTEFHUyAtbWllZWUiOzsKICMJCW02OGsqKQpAQCAtMTY1OSw3ICsx
NzA3LDcgQEAKICMgdGhlcmUgYXJlIGEgZmV3IHN5c3RlbXMsIGxpa2UgTmV4dCwgd2hlcmUgdGhp
cyBkb2Vzbid0IHdvcmsuCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHN5c3RlbSB2ZXJzaW9uIChm
b3IgZHluYW1pYyBsb2FkaW5nKSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTY2
MzogY2hlY2tpbmcgc3lzdGVtIHZlcnNpb24gKGZvciBkeW5hbWljIGxvYWRpbmcpIiA+JjUKK2Vj
aG8gImNvbmZpZ3VyZToxNzExOiBjaGVja2luZyBzeXN0ZW0gdmVyc2lvbiAoZm9yIGR5bmFtaWMg
bG9hZGluZykiID4mNQogaWYgbWFjaGluZT1gdW5hbWUgLW1gIDsgdGhlbiB0cnVlOyBlbHNlIG1h
Y2hpbmU9dW5rbm93biA7IGZpCiAKIGZvciBhY19wcm9nIGluIG1ha2VpbmZvCkBAIC0xNjY3LDcg
KzE3MTUsNyBAQAogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0
IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFj
X3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAx
PiY2Ci1lY2hvICJjb25maWd1cmU6MTY3MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2Vj
aG8gImNvbmZpZ3VyZToxNzE5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAi
dGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfTUFLRUlORk8nK3NldH0nYFwiID0gc2V0Ijsg
dGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTcyNCwx
NyArMTc3MiwxNyBAQAogCiBhY19zYWZlPWBlY2hvICJ1bmlzdGQuaCIgfCBzZWQgJ3klLi8rLSVf
X3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgdW5pc3RkLmgiIi4uLiAkYWNfYyIgMT4m
NgotZWNobyAiY29uZmlndXJlOjE3Mjg6IGNoZWNraW5nIGZvciB1bmlzdGQuaCIgPiY1CitlY2hv
ICJjb25maWd1cmU6MTc3NjogY2hlY2tpbmcgZm9yIHVuaXN0ZC5oIiA+JjUKIGlmIGV2YWwgInRl
c3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0Ijsg
dGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBj
b25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAxNzMzICJjb25maWd1cmUiCisjbGluZSAxNzgx
ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDx1bmlzdGQuaD4K
IEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0
ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MTczODogXCIkYWNfdHJ5XCIpIDE+JjU7
IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTc4NjogXCIk
YWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAn
XiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlm
IHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTE3NTEsNyAr
MTc5OSw3IEBACiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9oZWFkZXJfJyRhY19zYWZl
YFwiID0geWVzIjsgdGhlbgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiAgIGVjaG8gJGFjX24g
ImNoZWNraW5nIGZvciBzeXNjb25mIGluIC1sYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25m
aWd1cmU6MTc1NTogY2hlY2tpbmcgZm9yIHN5c2NvbmYgaW4gLWxjIiA+JjUKK2VjaG8gImNvbmZp
Z3VyZToxODAzOiBjaGVja2luZyBmb3Igc3lzY29uZiBpbiAtbGMiID4mNQogYWNfbGliX3Zhcj1g
ZWNobyBjJ18nc3lzY29uZiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJg
ZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgog
ICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMTc1OSw3ICsxODA3LDcgQEAK
ICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sYyAgJExJQlMiCiBjYXQgPiBjb25mdGVz
dC4kYWNfZXh0IDw8RU9GCi0jbGluZSAxNzYzICJjb25maWd1cmUiCisjbGluZSAxODExICJjb25m
aWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVy
bmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNh
dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0xNzcwLDcg
KzE4MTgsNyBAQAogc3lzY29uZigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNo
byBjb25maWd1cmU6MTc3NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4m
NTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVj
aG8gY29uZmlndXJlOjE4MjI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+
JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29u
ZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0xNzg2
LDEyICsxODM0LDEyIEBACiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9saWJfJyRhY19s
aWJfdmFyYFwiID0geWVzIjsgdGhlbgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiAgIGVjaG8g
JGFjX24gImNoZWNraW5nICJmb3IgX1NDX0NMS19UQ0siIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8g
ImNvbmZpZ3VyZToxNzkwOiBjaGVja2luZyAiZm9yIF9TQ19DTEtfVENLIiIgPiY1CitlY2hvICJj
b25maWd1cmU6MTgzODogY2hlY2tpbmcgImZvciBfU0NfQ0xLX1RDSyIiID4mNQogCQlpZiB0ZXN0
ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBoej0wCiBlbHNlCiAgIGNhdCA+IGNv
bmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDE3OTUgImNvbmZpZ3VyZSIKKyNsaW5lIDE4NDMg
ImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgog
CQkgICAgICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTE4MDMsNyArMTg1MSw3IEBACiAJ
CQkgICAgICAgIHJldHVybiAwOwogCQkJICAgIH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZp
Z3VyZToxODA3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYm
IHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rl
di9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE4NTU6IFwiJGFjX2xpbmtcIikgMT4m
NTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0
fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgaHo9YGNhdCBjb25m
dGVzdDFgCiAJCQkgICAgY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YKQEAgLTE4NDcsMTcgKzE4OTUs
MTcgQEAKICBpZiB0ZXN0ICIkZW5hYmxlX2R5bnN5c2dtcCIgPSAieWVzIiA7IHRoZW4KIAlhY19z
YWZlPWBlY2hvICJnbXAuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVj
a2luZyBmb3IgZ21wLmgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE4NTE6IGNo
ZWNraW5nIGZvciBnbXAuaCIgPiY1CitlY2hvICJjb25maWd1cmU6MTg5OTogY2hlY2tpbmcgZm9y
IGdtcC5oIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFj
X3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNf
YyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAxODU2
ICJjb25maWd1cmUiCisjbGluZSAxOTA0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMu
aCIKICNpbmNsdWRlIDxnbXAuaD4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19l
eHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MTg2
MTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNo
byBjb25maWd1cmU6MTkwOTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7
IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0
ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBj
b25mdGVzdCoKQEAgLTE4NzQsNyArMTkyMiw3IEBACiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRh
Y19jdl9oZWFkZXJfJyRhY19zYWZlYFwiID0geWVzIjsgdGhlbgogICBlY2hvICIkYWNfdCIieWVz
IiAxPiY2CiAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBfX2dtcHpfaW5pdCBpbiAtbGdtcCIi
Li4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTg3ODogY2hlY2tpbmcgZm9yIF9fZ21w
el9pbml0IGluIC1sZ21wIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxOTI2OiBjaGVja2luZyBmb3Ig
X19nbXB6X2luaXQgaW4gLWxnbXAiID4mNQogYWNfbGliX3Zhcj1gZWNobyBnbXAnXydfX2dtcHpf
aW5pdCB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydh
Y19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19u
ICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMTg4Miw3ICsxOTMwLDcgQEAKICAgYWNfc2F2ZV9M
SUJTPSIkTElCUyIKIExJQlM9Ii1sZ21wICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg
PDxFT0YKLSNsaW5lIDE4ODYgImNvbmZpZ3VyZSIKKyNsaW5lIDE5MzQgImNvbmZpZ3VyZSIKICNp
bmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90
eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1p
Z2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTE4OTMsNyArMTk0MSw3IEBA
CiBfX2dtcHpfaW5pdCgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25m
aWd1cmU6MTg5NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm
JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29u
ZmlndXJlOjE5NDU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0g
JiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3Qq
CiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0xOTA5LDEyICsx
OTU3LDEyIEBACiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9saWJfJyRhY19saWJfdmFy
YFwiID0geWVzIjsgdGhlbgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiAgIGVjaG8gJGFjX24g
ImNoZWNraW5nICJmb3IgZXh0ZXJuYWwgZ21wIHZlcnNpb24iIiIuLi4gJGFjX2MiIDE+JjYKLWVj
aG8gImNvbmZpZ3VyZToxOTEzOiBjaGVja2luZyAiZm9yIGV4dGVybmFsIGdtcCB2ZXJzaW9uIiIg
PiY1CitlY2hvICJjb25maWd1cmU6MTk2MTogY2hlY2tpbmcgImZvciBleHRlcm5hbCBnbXAgdmVy
c2lvbiIiID4mNQogCQkJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAg
ZWNobyAiQ2Fubm90IHVzZSBkeW5hbWljIGdtcCBsaWIiIAogZWxzZQogICBjYXQgPiBjb25mdGVz
dC4kYWNfZXh0IDw8RU9GCi0jbGluZSAxOTE4ICJjb25maWd1cmUiCisjbGluZSAxOTY2ICJjb25m
aWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxnbXAuaD4KIAkJCQkgICAg
aW50IG1haW4oKSB7CkBAIC0xOTI1LDcgKzE5NzMsNyBAQAogCQkJCSAgICAjZW5kaWYKIAkJCQkg
ICAgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE5Mjk6IFwiJGFjX2xpbmtcIikg
MT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhl
ZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBj
b25maWd1cmU6MTk3NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsg
fSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAy
Pi9kZXYvbnVsbAogdGhlbgogICAjCQkJCU1QRklMRVM9JEdNUERJUi9tcG4vbXVsX24ubwogIwkJ
CQlQQVRDSEVEX1NZTUJPTFM9X19nbXBuX3Rvb20zX211bF9uCkBAIC0xOTcyLDcgKzIwMjAsNyBA
QAogaWYgdGVzdCAiJE5FRURfTE9DQUxfR01QIiAhPSAiIiA7IHRoZW4JCQkKIAogCSBlY2hvICRh
Y19uICJjaGVja2luZyB1c2VfZ21wPXllcywgZG9pbmcgY29uZmlndXJlIGluIGdtcCBkaXJlY3Rv
cnkiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE5NzY6IGNoZWNraW5nIHVzZV9n
bXA9eWVzLCBkb2luZyBjb25maWd1cmUgaW4gZ21wIGRpcmVjdG9yeSIgPiY1CitlY2hvICJjb25m
aWd1cmU6MjAyNDogY2hlY2tpbmcgdXNlX2dtcD15ZXMsIGRvaW5nIGNvbmZpZ3VyZSBpbiBnbXAg
ZGlyZWN0b3J5IiA+JjUKIAkgZWNobwogCSBlY2hvICIjIgogCSBlY2hvICIjIgpAQCAtMjAwNCw3
ICsyMDUyLDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nICJmb3IgbGVhZGluZyB1bmRl
cnNjb3JlIGluIG9iamVjdCBzeW1ib2xzIiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1
cmU6MjAwODogY2hlY2tpbmcgImZvciBsZWFkaW5nIHVuZGVyc2NvcmUgaW4gb2JqZWN0IHN5bWJv
bHMiIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyMDU2OiBjaGVja2luZyAiZm9yIGxlYWRpbmcgdW5k
ZXJzY29yZSBpbiBvYmplY3Qgc3ltYm9scyIiID4mNQogY2F0PmZvby5jIDw8RU9GRgogI2luY2x1
ZGUgPG1hdGguaD4KIGludCBtYWluKCkge2RvdWJsZSBkPTAuMDtjb3MoZCk7cmV0dXJuIDA7fQpA
QCAtMjAxOCw3ICsyMDY2LDcgQEAKIAllY2hvICIkYWNfdCIiIm5vIiIgMT4mNgogZmkKIGVjaG8g
JGFjX24gImNoZWNraW5nICJmb3IgR05VIGxkIG9wdGlvbiAtTWFwIiIiLi4uICRhY19jIiAxPiY2
Ci1lY2hvICJjb25maWd1cmU6MjAyMjogY2hlY2tpbmcgImZvciBHTlUgbGQgb3B0aW9uIC1NYXAi
IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyMDcwOiBjaGVja2luZyAiZm9yIEdOVSBsZCBvcHRpb24g
LU1hcCIiID4mNQogdG91Y2ggbWFwCiAkQ0MgLW8gZm9vICAtV2wsLU1hcCAgbWFwIGZvby5vID4v
ZGV2L251bGwgMj4mMQogaWYgdGVzdCBgY2F0IG1hcCB8IHdjIC1sYCAhPSAiMCIgOyB0aGVuCkBA
IC0yMDM1LDEyICsyMDgzLDEyIEBACiBybSAtZiBmb28uYyBmb28ubyBmb28gbWFwCiAKICBlY2hv
ICRhY19uICJjaGVja2luZyAiZm9yIHNpemUgb2YgZ21wIGxpbWJzIiIiLi4uICRhY19jIiAxPiY2
Ci1lY2hvICJjb25maWd1cmU6MjAzOTogY2hlY2tpbmcgImZvciBzaXplIG9mIGdtcCBsaW1icyIi
ID4mNQorZWNobyAiY29uZmlndXJlOjIwODc6IGNoZWNraW5nICJmb3Igc2l6ZSBvZiBnbXAgbGlt
YnMiIiA+JjUKICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBtcHNp
emU9MAogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyMDQ0ICJj
b25maWd1cmUiCisjbGluZSAyMDkyICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIK
ICNpbmNsdWRlIDxzdGRpby5oPgogCSNpbmNsdWRlICIkTVBfSU5DTFVERSIKQEAgLTIwNTEsNyAr
MjA5OSw3IEBACiAJcmV0dXJuIDA7CiAJfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjIwNTU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVz
dCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251
bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjEwMzogXCIkYWNfbGlua1wiKSAxPiY1OyAo
ZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYm
ICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBtcHNpemU9YGNhdCBjb25m
dGVzdDFgCiBlbHNlCkBAIC0yMDc0LDEyICsyMTIyLDEyIEBACiAgZWNobyAiJGFjX3QiIiRtcHNp
emUiIDE+JjYgCiAKICBlY2hvICRhY19uICJjaGVja2luZyAiX1NIT1JUX0xJTUIiIiIuLi4gJGFj
X2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMDc4OiBjaGVja2luZyAiX1NIT1JUX0xJTUIiIiA+
JjUKK2VjaG8gImNvbmZpZ3VyZToyMTI2OiBjaGVja2luZyAiX1NIT1JUX0xJTUIiIiA+JjUKICBp
ZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBlY2hvICIkYWNfdCIibm8i
IDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjA4MyAi
Y29uZmlndXJlIgorI2xpbmUgMjEzMSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KIAkjaW5jbHVkZSAiJE1QX0lOQ0xVREUiCkBAIC0yMDkxLDcg
KzIxMzksNyBAQAogCSNlbmRpZgogCX0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToy
MDk1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3Qg
LXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxs
CitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIxNDM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2
YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAo
Li9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmgg
PDxcRU9GCiAjZGVmaW5lIF9fU0hPUlRfTElNQiAxCkBAIC0yMTA3LDEyICsyMTU1LDEyIEBACiBm
aQogCiAgZWNobyAkYWNfbiAiY2hlY2tpbmcgIl9MT05HX0xPTkdfTElNQiIiIi4uLiAkYWNfYyIg
MT4mNgotZWNobyAiY29uZmlndXJlOjIxMTE6IGNoZWNraW5nICJfTE9OR19MT05HX0xJTUIiIiA+
JjUKK2VjaG8gImNvbmZpZ3VyZToyMTU5OiBjaGVja2luZyAiX0xPTkdfTE9OR19MSU1CIiIgPiY1
CiAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgZWNobyAiJGFjX3Qi
Im5vIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDIx
MTYgImNvbmZpZ3VyZSIKKyNsaW5lIDIxNjQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVm
cy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAJI2luY2x1ZGUgIiRNUF9JTkNMVURFIgpAQCAtMjEy
NCw3ICsyMTcyLDcgQEAKIAkjZW5kaWYKIAl9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1
cmU6MjEyODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0
ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYv
bnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyMTc2OiBcIiRhY19saW5rXCIpIDE+JjU7
IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0g
JiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIGNhdCA+PiBjb25mZGVm
cy5oIDw8XEVPRgogI2RlZmluZSBfX0xPTkdfTE9OR19MSU1CIDEKQEAgLTIxNjMsNyArMjIxMSw3
IEBACiAjIFVzZXMgYWNfIHZhcnMgYXMgdGVtcHMgdG8gYWxsb3cgY29tbWFuZCBsaW5lIHRvIG92
ZXJyaWRlIGNhY2hlIGFuZCBjaGVja3MuCiAjIC0td2l0aG91dC14IG92ZXJyaWRlcyBldmVyeXRo
aW5nIGVsc2UsIGJ1dCBkb2VzIG5vdCB0b3VjaCB0aGUgY2FjaGUuCiBlY2hvICRhY19uICJjaGVj
a2luZyBmb3IgWCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjE2NzogY2hlY2tp
bmcgZm9yIFgiID4mNQorZWNobyAiY29uZmlndXJlOjIyMTU6IGNoZWNraW5nIGZvciBYIiA+JjUK
IAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC14IG9yIC0td2l0aG91dC14IHdhcyBnaXZlbi4KIGlm
IHRlc3QgIiR7d2l0aF94K3NldH0iID0gc2V0OyB0aGVuCkBAIC0yMjI1LDEyICsyMjczLDEyIEBA
CiAKICAgIyBGaXJzdCwgdHJ5IHVzaW5nIHRoYXQgZmlsZSB3aXRoIG5vIHNwZWNpYWwgZGlyZWN0
b3J5IHNwZWNpZmllZC4KIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDIyMjkg
ImNvbmZpZ3VyZSIKKyNsaW5lIDIyNzcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5o
IgogI2luY2x1ZGUgPCR4X2RpcmVjdF90ZXN0X2luY2x1ZGU+CiBFT0YKIGFjX3RyeT0iJGFjX2Nw
cCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVj
aG8gY29uZmlndXJlOjIyMzQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1
OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjIyODI6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZh
bCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8
IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsg
dGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC0yMjk5LDE0ICsyMzQ3LDE0IEBACiAgIGFjX3Nh
dmVfTElCUz0iJExJQlMiCiAgIExJQlM9Ii1sJHhfZGlyZWN0X3Rlc3RfbGlicmFyeSAkTElCUyIK
IGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDIzMDMgImNvbmZpZ3VyZSIKKyNs
aW5lIDIzNTEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigp
IHsKICR7eF9kaXJlY3RfdGVzdF9mdW5jdGlvbn0oKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjIzMTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYg
eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyMzU4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRh
Y19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAg
cm0gLXJmIGNvbmZ0ZXN0KgogICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgogIyBXZSBjYW4gbGluayBY
IHByb2dyYW1zIHdpdGggbm8gc3BlY2lhbCBsaWJyYXJ5IHBhdGguCkBAIC0yNDEyLDE3ICsyNDYw
LDE3IEBACiAgICAgY2FzZSAiYCh1bmFtZSAtc3IpIDI+L2Rldi9udWxsYCIgaW4KICAgICAiU3Vu
T1MgNSIqKQogICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAtUiBtdXN0IGJlIGZv
bGxvd2VkIGJ5IGEgc3BhY2UiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0MTY6
IGNoZWNraW5nIHdoZXRoZXIgLVIgbXVzdCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlIiA+JjUKK2Vj
aG8gImNvbmZpZ3VyZToyNDY0OiBjaGVja2luZyB3aGV0aGVyIC1SIG11c3QgYmUgZm9sbG93ZWQg
YnkgYSBzcGFjZSIgPiY1CiAgICAgICBhY194c2F2ZV9MSUJTPSIkTElCUyI7IExJQlM9IiRMSUJT
IC1SJHhfbGlicmFyaWVzIgogICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xp
bmUgMjQxOSAiY29uZmlndXJlIgorI2xpbmUgMjQ2NyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNv
bmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2
YWwgZWNobyBjb25maWd1cmU6MjQyNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGlu
aykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChl
dmFsIGVjaG8gY29uZmlndXJlOjI0NzQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xp
bmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAt
cmYgY29uZnRlc3QqCiAgIGFjX1Jfbm9zcGFjZT15ZXMKIGVsc2UKQEAgLTI0MzgsMTQgKzI0ODYs
MTQgQEAKICAgICAgIGVsc2UKIAlMSUJTPSIkYWNfeHNhdmVfTElCUyAtUiAkeF9saWJyYXJpZXMi
CiAJY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjQ0MiAiY29uZmlndXJlIgor
I2xpbmUgMjQ5MCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWlu
KCkgewogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjQ0
OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z
IGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI0
OTc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAt
cyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGFjX1Jf
c3BhY2U9eWVzCiBlbHNlCkBAIC0yNDc3LDcgKzI1MjUsNyBAQAogICAgICMgbGlicmFyaWVzIHdl
cmUgYnVpbHQgd2l0aCBERUNuZXQgc3VwcG9ydC4gIEFuZCBrYXJsQGNzLnVtYi5lZHUgc2F5cwog
ICAgICMgdGhlIEFscGhhIG5lZWRzIGRuZXRfc3R1YiAoZG5ldCBkb2VzIG5vdCBleGlzdCkuCiAg
ICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGRuZXRfbnRvYSBpbiAtbGRuZXQiIi4uLiAkYWNf
YyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0ODE6IGNoZWNraW5nIGZvciBkbmV0X250b2EgaW4g
LWxkbmV0IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNTI5OiBjaGVja2luZyBmb3IgZG5ldF9udG9h
IGluIC1sZG5ldCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIGRuZXQnXydkbmV0X250b2EgfCBzZWQg
J3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRh
Y19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkg
JGFjX2MiIDE+JjYKQEAgLTI0ODUsNyArMjUzMyw3IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMi
CiBMSUJTPSItbGRuZXQgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xp
bmUgMjQ4OSAiY29uZmlndXJlIgorI2xpbmUgMjUzNyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNv
bmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZv
aWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2gg
dGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMjQ5Niw3ICsyNTQ0LDcgQEAKIGRuZXRfbnRv
YSgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjUwMDog
XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNv
bmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI1NDg6
IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj
b25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFj
X2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0yNTE4LDcgKzI1NjYsNyBAQAogCiAg
ICAgaWYgdGVzdCAkYWNfY3ZfbGliX2RuZXRfZG5ldF9udG9hID0gbm87IHRoZW4KICAgICAgIGVj
aG8gJGFjX24gImNoZWNraW5nIGZvciBkbmV0X250b2EgaW4gLWxkbmV0X3N0dWIiIi4uLiAkYWNf
YyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI1MjI6IGNoZWNraW5nIGZvciBkbmV0X250b2EgaW4g
LWxkbmV0X3N0dWIiID4mNQorZWNobyAiY29uZmlndXJlOjI1NzA6IGNoZWNraW5nIGZvciBkbmV0
X250b2EgaW4gLWxkbmV0X3N0dWIiID4mNQogYWNfbGliX3Zhcj1gZWNobyBkbmV0X3N0dWInXydk
bmV0X250b2EgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQn
J3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAk
YWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTI1MjYsNyArMjU3NCw3IEBACiAgIGFjX3Nh
dmVfTElCUz0iJExJQlMiCiBMSUJTPSItbGRuZXRfc3R1YiAgJExJQlMiCiBjYXQgPiBjb25mdGVz
dC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyNTMwICJjb25maWd1cmUiCisjbGluZSAyNTc4ICJjb25m
aWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVy
bmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNh
dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0yNTM3LDcg
KzI1ODUsNyBAQAogZG5ldF9udG9hKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZToyNTQxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy
PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwg
ZWNobyBjb25maWd1cmU6MjU4OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykg
Mj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBj
b25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTI1
NjYsMTIgKzI2MTQsMTIgQEAKICAgICAjIFRoZSBuc2wgbGlicmFyeSBwcmV2ZW50cyBwcm9ncmFt
cyBmcm9tIG9wZW5pbmcgdGhlIFggZGlzcGxheQogICAgICMgb24gSXJpeCA1LjIsIGFjY29yZGlu
ZyB0byBkaWNrZXlAY2xhcmsubmV0LgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBnZXRo
b3N0YnluYW1lIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNTcwOiBjaGVja2lu
ZyBmb3IgZ2V0aG9zdGJ5bmFtZSIgPiY1CitlY2hvICJjb25maWd1cmU6MjYxODogY2hlY2tpbmcg
Zm9yIGdldGhvc3RieW5hbWUiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2
X2Z1bmNfZ2V0aG9zdGJ5bmFtZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24g
IihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxF
T0YKLSNsaW5lIDI1NzUgImNvbmZpZ3VyZSIKKyNsaW5lIDI2MjMgImNvbmZpZ3VyZSIKICNpbmNs
dWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3Jv
cyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3
aXRoIGNoYXIgZ2V0aG9zdGJ5bmFtZSgpOyBiZWxvdy4gICovCkBAIC0yNTk0LDcgKzI2NDIsNyBA
QAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjU5ODog
XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNv
bmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI2NDY6
IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj
b25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFj
X2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZT15ZXMiCiBlbHNlCkBAIC0yNjE1LDcgKzI2NjMsNyBAQAog
CiAgICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19nZXRob3N0YnluYW1lID0gbm87IHRoZW4KICAgICAg
IGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lIGluIC1sbnNsIiIuLi4gJGFj
X2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNjE5OiBjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFt
ZSBpbiAtbG5zbCIgPiY1CitlY2hvICJjb25maWd1cmU6MjY2NzogY2hlY2tpbmcgZm9yIGdldGhv
c3RieW5hbWUgaW4gLWxuc2wiID4mNQogYWNfbGliX3Zhcj1gZWNobyBuc2wnXydnZXRob3N0Ynlu
YW1lIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2Fj
X2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24g
IihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0yNjIzLDcgKzI2NzEsNyBAQAogICBhY19zYXZlX0xJ
QlM9IiRMSUJTIgogTElCUz0iLWxuc2wgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8
PEVPRgotI2xpbmUgMjYyNyAiY29uZmlndXJlIgorI2xpbmUgMjY3NSAiY29uZmlndXJlIgogI2lu
Y2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5
cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWln
aHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMjYzNCw3ICsyNjgyLDcgQEAK
IGdldGhvc3RieW5hbWUoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29u
ZmlndXJlOjI2Mzg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0g
JiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNv
bmZpZ3VyZToyNjg2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9
ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0
KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMjY2NCwxMiAr
MjcxMiwxMiBAQAogICAgICMgLWxzb2NrZXQgbXVzdCBiZSBnaXZlbiBiZWZvcmUgLWxuc2wgaWYg
Ym90aCBhcmUgbmVlZGVkLgogICAgICMgV2UgYXNzdW1lIHRoYXQgaWYgY29ubmVjdCBuZWVkcyAt
bG5zbCwgc28gZG9lcyBnZXRob3N0YnluYW1lLgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZv
ciBjb25uZWN0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNjY4OiBjaGVja2lu
ZyBmb3IgY29ubmVjdCIgPiY1CitlY2hvICJjb25maWd1cmU6MjcxNjogY2hlY2tpbmcgZm9yIGNv
bm5lY3QiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfY29ubmVj
dCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAx
PiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI2NzMgImNv
bmZpZ3VyZSIKKyNsaW5lIDI3MjEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgog
LyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZl
dyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY29ubmVjdCgp
OyBiZWxvdy4gICovCkBAIC0yNjkyLDcgKzI3NDAsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YK
LWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjY5NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZh
bCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVu
CitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI3NDQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2
YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhl
bgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfY29ubmVjdD15ZXMiCiBl
bHNlCkBAIC0yNzEzLDcgKzI3NjEsNyBAQAogCiAgICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19jb25u
ZWN0ID0gbm87IHRoZW4KICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBjb25uZWN0IGlu
IC1sc29ja2V0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNzE3OiBjaGVja2lu
ZyBmb3IgY29ubmVjdCBpbiAtbHNvY2tldCIgPiY1CitlY2hvICJjb25maWd1cmU6Mjc2NTogY2hl
Y2tpbmcgZm9yIGNvbm5lY3QgaW4gLWxzb2NrZXQiID4mNQogYWNfbGliX3Zhcj1gZWNobyBzb2Nr
ZXQnXydjb25uZWN0IHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hv
ICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVj
aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0yNzIxLDcgKzI3NjksNyBAQAogICBh
Y19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxzb2NrZXQgJFhfRVhUUkFfTElCUyAkTElCUyIK
IGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI3MjUgImNvbmZpZ3VyZSIKKyNs
aW5lIDI3NzMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUg
YW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdl
IHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdj
YzIKQEAgLTI3MzIsNyArMjc4MCw3IEBACiBjb25uZWN0KCkKIDsgcmV0dXJuIDA7IH0KIEVPRgot
aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNzM2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFs
ICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4K
K2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mjc4NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZh
bCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVu
CiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIK
IGVsc2UKQEAgLTI3NTYsMTIgKzI4MDQsMTIgQEAKIAogICAgICMgZ29tZXpAbWkudW5pLWVybGFu
Z2VuLmRlIHNheXMgLWxwb3NpeCBpcyBuZWNlc3Nhcnkgb24gQS9VWC4KICAgICBlY2hvICRhY19u
ICJjaGVja2luZyBmb3IgcmVtb3ZlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToy
NzYwOiBjaGVja2luZyBmb3IgcmVtb3ZlIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyODA4OiBjaGVj
a2luZyBmb3IgcmVtb3ZlIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9m
dW5jX3JlbW92ZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQp
ICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5l
IDI3NjUgImNvbmZpZ3VyZSIKKyNsaW5lIDI4MTMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25m
ZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9w
ZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIg
cmVtb3ZlKCk7IGJlbG93LiAgKi8KQEAgLTI3ODQsNyArMjgzMiw3IEBACiAKIDsgcmV0dXJuIDA7
IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNzg4OiBcIiRhY19saW5rXCIpIDE+
JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4
dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjgzNjogXCIkYWNfbGlua1wiKSAx
PiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVl
eHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY19yZW1vdmU9
eWVzIgogZWxzZQpAQCAtMjgwNSw3ICsyODUzLDcgQEAKIAogICAgIGlmIHRlc3QgJGFjX2N2X2Z1
bmNfcmVtb3ZlID0gbm87IHRoZW4KICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciByZW1v
dmUgaW4gLWxwb3NpeCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjgwOTogY2hl
Y2tpbmcgZm9yIHJlbW92ZSBpbiAtbHBvc2l4IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyODU3OiBj
aGVja2luZyBmb3IgcmVtb3ZlIGluIC1scG9zaXgiID4mNQogYWNfbGliX3Zhcj1gZWNobyBwb3Np
eCdfJ3JlbW92ZSB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAn
JCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hv
ICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMjgxMyw3ICsyODYxLDcgQEAKICAgYWNf
c2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1scG9zaXggICRMSUJTIgogY2F0ID4gY29uZnRlc3Qu
JGFjX2V4dCA8PEVPRgotI2xpbmUgMjgxNyAiY29uZmlndXJlIgorI2xpbmUgMjg2NSAiY29uZmln
dXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5h
bCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVz
ZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMjgyNCw3ICsy
ODcyLDcgQEAKIHJlbW92ZSgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBj
b25maWd1cmU6MjgyODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsg
fSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjI4NzY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7
IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRl
c3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0yODQ4LDEy
ICsyODk2LDEyIEBACiAKICAgICAjIEJTREkgQlNEL09TIDIuMSBuZWVkcyAtbGlwYyBmb3IgWE9w
ZW5EaXNwbGF5LgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzaG1hdCIiLi4uICRhY19j
IiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mjg1MjogY2hlY2tpbmcgZm9yIHNobWF0IiA+JjUKK2Vj
aG8gImNvbmZpZ3VyZToyOTAwOiBjaGVja2luZyBmb3Igc2htYXQiID4mNQogaWYgZXZhbCAidGVz
dCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfc2htYXQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgog
ICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVz
dC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyODU3ICJjb25maWd1cmUiCisjbGluZSAyOTA1ICJjb25m
aWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5l
IF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBj
YW4gY29uZmxpY3Qgd2l0aCBjaGFyIHNobWF0KCk7IGJlbG93LiAgKi8KQEAgLTI4NzYsNyArMjky
NCw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToy
ODgwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3Qg
LXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6
MjkyODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0
IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZh
bCAiYWNfY3ZfZnVuY19zaG1hdD15ZXMiCiBlbHNlCkBAIC0yODk3LDcgKzI5NDUsNyBAQAogCiAg
ICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19zaG1hdCA9IG5vOyB0aGVuCiAgICAgICBlY2hvICRhY19u
ICJjaGVja2luZyBmb3Igc2htYXQgaW4gLWxpcGMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29u
ZmlndXJlOjI5MDE6IGNoZWNraW5nIGZvciBzaG1hdCBpbiAtbGlwYyIgPiY1CitlY2hvICJjb25m
aWd1cmU6Mjk0OTogY2hlY2tpbmcgZm9yIHNobWF0IGluIC1saXBjIiA+JjUKIGFjX2xpYl92YXI9
YGVjaG8gaXBjJ18nc2htYXQgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwi
YGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4K
ICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTI5MDUsNyArMjk1Myw3IEBA
CiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbGlwYyAgJExJQlMiCiBjYXQgPiBjb25m
dGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyOTA5ICJjb25maWd1cmUiCisjbGluZSAyOTU3ICJj
b25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGlu
dGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBi
ZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0yOTE2
LDcgKzI5NjQsNyBAQAogc2htYXQoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVj
aG8gY29uZmlndXJlOjI5MjA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+
JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZToyOTY4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy
PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNv
bmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMjk0
OSw3ICsyOTk3LDcgQEAKICAgIyBsaWJyYXJpZXMgd2UgY2hlY2sgZm9yIGJlbG93LCBzbyB1c2Ug
YSBkaWZmZXJlbnQgdmFyaWFibGUuCiAgICMgIC0taW50ZXJyYW5AdWx1cnUuU3RhbmZvcmQuRURV
LCBrYkBjcy51bWIuZWR1LgogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgSWNlQ29ubmVjdGlv
bk51bWJlciBpbiAtbElDRSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mjk1Mzog
Y2hlY2tpbmcgZm9yIEljZUNvbm5lY3Rpb25OdW1iZXIgaW4gLWxJQ0UiID4mNQorZWNobyAiY29u
ZmlndXJlOjMwMDE6IGNoZWNraW5nIGZvciBJY2VDb25uZWN0aW9uTnVtYmVyIGluIC1sSUNFIiA+
JjUKIGFjX2xpYl92YXI9YGVjaG8gSUNFJ18nSWNlQ29ubmVjdGlvbk51bWJlciB8IHNlZCAneSUu
LystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xp
Yl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNf
YyIgMT4mNgpAQCAtMjk1Nyw3ICszMDA1LDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJ
QlM9Ii1sSUNFICRYX0VYVFJBX0xJQlMgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8
RU9GCi0jbGluZSAyOTYxICJjb25maWd1cmUiCisjbGluZSAzMDA5ICJjb25maWd1cmUiCiAjaW5j
bHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlw
ZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdo
dCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0yOTY4LDcgKzMwMTYsNyBAQAog
SWNlQ29ubmVjdGlvbk51bWJlcigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNo
byBjb25maWd1cmU6Mjk3MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4m
NTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVj
aG8gY29uZmlndXJlOjMwMjA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+
JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29u
ZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0yOTk5
LDcgKzMwNDcsNyBAQAogCiBtaXNzPTAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYWluIGlu
IC1sWG11IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMDAzOiBjaGVja2luZyBm
b3IgbWFpbiBpbiAtbFhtdSIgPiY1CitlY2hvICJjb25maWd1cmU6MzA1MTogY2hlY2tpbmcgZm9y
IG1haW4gaW4gLWxYbXUiID4mNQogYWNfbGliX3Zhcj1gZWNobyBYbXUnXydtYWluIHwgc2VkICd5
JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNf
bGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRh
Y19jIiAxPiY2CkBAIC0zMDA3LDE0ICszMDU1LDE0IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMi
CiBMSUJTPSItbFhtdSAkWF9MSUJTICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP
RgotI2xpbmUgMzAxMSAiY29uZmlndXJlIgorI2xpbmUgMzA1OSAiY29uZmlndXJlIgogI2luY2x1
ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogbWFpbigpCiA7IHJldHVybiAwOyB9CiBF
T0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzAxODogXCIkYWNfbGlua1wiKSAxPiY1OyAo
ZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0
aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMwNjY6IFwiJGFjX2xpbmtcIikgMT4mNTsg
KGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsg
dGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15
ZXMiCiBlbHNlCkBAIC0zMDM2LDcgKzMwODQsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tp
bmcgZm9yIG1haW4gaW4gLWxYdCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzA0
MDogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxYdCIgPiY1CitlY2hvICJjb25maWd1cmU6MzA4ODog
Y2hlY2tpbmcgZm9yIG1haW4gaW4gLWxYdCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIFh0J18nbWFp
biB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19j
dl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIo
Y2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMzA0NCwxNCArMzA5MiwxNCBAQAogICBhY19zYXZlX0xJ
QlM9IiRMSUJTIgogTElCUz0iLWxYdCAkWF9MSUJTICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFj
X2V4dCA8PEVPRgotI2xpbmUgMzA0OCAiY29uZmlndXJlIgorI2xpbmUgMzA5NiAiY29uZmlndXJl
IgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogbWFpbigpCiA7IHJldHVy
biAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzA1NTogXCIkYWNfbGlua1wi
KSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l
eGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMxMDM6IFwiJGFjX2xpbmtc
IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf
ZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNf
bGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0zMDczLDcgKzMxMjEsNyBAQAogZmkKIAogZWNobyAkYWNf
biAiY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxYZXh0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNv
bmZpZ3VyZTozMDc3OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbFhleHQiID4mNQorZWNobyAiY29u
ZmlndXJlOjMxMjU6IGNoZWNraW5nIGZvciBtYWluIGluIC1sWGV4dCIgPiY1CiBhY19saWJfdmFy
PWBlY2hvIFhleHQnXydtYWluIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBc
ImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVu
CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zMDgxLDE0ICszMTI5LDE0
IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbFhleHQgJFhfTElCUyAkTElCUyIK
IGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMwODUgImNvbmZpZ3VyZSIKKyNs
aW5lIDMxMzMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigp
IHsKIG1haW4oKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjMwOTI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVz
dCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy
ZTozMTQwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRl
c3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBl
dmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMzExMCw3ICszMTU4LDcg
QEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYWluIGluIC1sWGF3IiIuLi4gJGFj
X2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMTE0OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbFhh
dyIgPiY1CitlY2hvICJjb25maWd1cmU6MzE2MjogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxYYXci
ID4mNQogYWNfbGliX3Zhcj1gZWNobyBYYXcnXydtYWluIHwgc2VkICd5JS4vKy0lX19wXyUnYAog
aWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdg
XCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0z
MTE4LDE0ICszMTY2LDE0IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbFhhdyAk
WF9MSUJTICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzEyMiAi
Y29uZmlndXJlIgorI2xpbmUgMzE3MCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgi
CiAKIGludCBtYWluKCkgewogbWFpbigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwg
ZWNobyBjb25maWd1cmU6MzEyOTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykg
Mj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFs
IGVjaG8gY29uZmlndXJlOjMxNzc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmsp
IDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYg
Y29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0z
MTQ3LDcgKzMxOTUsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG1haW4gaW4g
LWxYMTEiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMxNTE6IGNoZWNraW5nIGZv
ciBtYWluIGluIC1sWDExIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMTk5OiBjaGVja2luZyBmb3Ig
bWFpbiBpbiAtbFgxMSIgPiY1CiBhY19saWJfdmFyPWBlY2hvIFgxMSdfJ21haW4gfCBzZWQgJ3kl
Li8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19s
aWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFj
X2MiIDE+JjYKQEAgLTMxNTUsMTQgKzMyMDMsMTQgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIK
IExJQlM9Ii1sWDExICRYX0xJQlMgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G
Ci0jbGluZSAzMTU5ICJjb25maWd1cmUiCisjbGluZSAzMjA3ICJjb25maWd1cmUiCiAjaW5jbHVk
ZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiBtYWluKCkKIDsgcmV0dXJuIDA7IH0KIEVP
RgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMTY2OiBcIiRhY19saW5rXCIpIDE+JjU7IChl
dmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRo
ZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzIxNDogXCIkYWNfbGlua1wiKSAxPiY1OyAo
ZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0
aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXll
cyIKIGVsc2UKQEAgLTMyMDEsNyArMzI0OSw3IEBACiBpZiB0ZXN0ICIkZW5hYmxlX2Rsb3BlbiIg
PSAieWVzIiA7IHRoZW4KIAogIAllY2hvICRhY19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1s
ZGwiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMyMDU6IGNoZWNraW5nIGZvciBk
bG9wZW4gaW4gLWxkbCIgPiY1CitlY2hvICJjb25maWd1cmU6MzI1MzogY2hlY2tpbmcgZm9yIGRs
b3BlbiBpbiAtbGRsIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gZGwnXydkbG9wZW4gfCBzZWQgJ3kl
Li8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19s
aWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFj
X2MiIDE+JjYKQEAgLTMyMDksNyArMzI1Nyw3IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBM
SUJTPSItbGRsICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMy
MTMgImNvbmZpZ3VyZSIKKyNsaW5lIDMyNjEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVm
cy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFu
IGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy
ZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTMyMjAsNyArMzI2OCw3IEBACiBkbG9wZW4oKQogOyBy
ZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMyMjQ6IFwiJGFjX2xp
bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7
YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMjcyOiBcIiRhY19s
aW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qk
e2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJf
JGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMzI1NiwxNyArMzMwNCwxNyBAQAogaWYgdGVzdCAi
JGVuYWJsZV9zdGF0c3lzYmZkIiA9ICJ5ZXMiIHx8IHRlc3QgIiRlbmFibGVfZHluc3lzYmZkIiA9
ICJ5ZXMiIDsgdGhlbgogCWFjX3NhZmU9YGVjaG8gImJmZC5oIiB8IHNlZCAneSUuLystJV9fcF8l
J2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBiZmQuaCIiLi4uICRhY19jIiAxPiY2Ci1lY2hv
ICJjb25maWd1cmU6MzI2MDogY2hlY2tpbmcgZm9yIGJmZC5oIiA+JjUKK2VjaG8gImNvbmZpZ3Vy
ZTozMzA4OiBjaGVja2luZyBmb3IgYmZkLmgiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICck
Jyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8g
JGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19l
eHQgPDxFT0YKLSNsaW5lIDMyNjUgImNvbmZpZ3VyZSIKKyNsaW5lIDMzMTMgImNvbmZpZ3VyZSIK
ICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGJmZC5oPgogRU9GCiBhY190cnk9IiRh
Y19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZh
bCBlY2hvIGNvbmZpZ3VyZTozMjcwOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkg
Mj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMzE4OiBcIiRhY190cnlcIikgMT4mNTsg
KGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5v
dXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2Vy
ciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtMzI4Myw3ICszMzMxLDcgQEAKIGlmIGV2
YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIgPSB5ZXMiOyB0aGVu
CiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGJm
ZF9pbml0IGluIC1sYmZkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMjg3OiBj
aGVja2luZyBmb3IgYmZkX2luaXQgaW4gLWxiZmQiID4mNQorZWNobyAiY29uZmlndXJlOjMzMzU6
IGNoZWNraW5nIGZvciBiZmRfaW5pdCBpbiAtbGJmZCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIGJm
ZCdfJ2JmZF9pbml0IHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hv
ICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVj
aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zMjkxLDcgKzMzMzksNyBAQAogICBh
Y19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxiZmQgLWxpYmVydHkgJExJQlMiCiBjYXQgPiBj
b25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMjk1ICJjb25maWd1cmUiCisjbGluZSAzMzQz
ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2My
IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hh
ciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0z
MzAyLDcgKzMzNTAsNyBAQAogYmZkX2luaXQoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChl
dmFsIGVjaG8gY29uZmlndXJlOjMzMDY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xp
bmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAo
ZXZhbCBlY2hvIGNvbmZpZ3VyZTozMzU0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19s
aW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0g
LXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpA
QCAtMzMyMSwxOCArMzM2OSwxOCBAQAogCQkjIE9sZCBiaW51dGlscyBhcHBlYXIgdG8gbmVlZCBD
T05TVCBkZWZpbmVkIHRvIGNvbnN0CiAJCSMKIAkJCWVjaG8gJGFjX24gImNoZWNraW5nIGlmIG5l
ZWQgdG8gZGVmaW5lIENPTlNUIGZvciBiZmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmln
dXJlOjMzMjU6IGNoZWNraW5nIGlmIG5lZWQgdG8gZGVmaW5lIENPTlNUIGZvciBiZmQiID4mNQor
ZWNobyAiY29uZmlndXJlOjMzNzM6IGNoZWNraW5nIGlmIG5lZWQgdG8gZGVmaW5lIENPTlNUIGZv
ciBiZmQiID4mNQogCQkJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAg
ZWNobyAiJGFjX3QiImNhbm5vdCB1c2UgYmZkIiAxPiY2IGV4aXQgMTsKIGVsc2UKICAgY2F0ID4g
Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzMzMCAiY29uZmlndXJlIgorI2xpbmUgMzM3
OCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjZGVmaW5lIElOX0dDQwogCQkJ
CSAgICAjaW5jbHVkZSA8YmZkLmg+CiAJCQkJICAgIGludCBtYWluKCkgeyBzeW1ib2xfaW5mbyB0
OyByZXR1cm4gMDt9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzMzNjogXCIkYWNf
bGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0
JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZh
bCBlY2hvIGNvbmZpZ3VyZTozMzg0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5r
KSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7
IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNgogZWxzZQpA
QCAtMzM0MywxNCArMzM5MSwxNCBAQAogICBlY2hvICIkYWNfdCIiY2Fubm90IHVzZSBiZmQiIDE+
JjYgZXhpdCAxOwogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAz
MzQ3ICJjb25maWd1cmUiCisjbGluZSAzMzk1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRl
ZnMuaCIKICNkZWZpbmUgQ09OU1QgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgI2RlZmluZSBJTl9HQ0MKIAkJCQkJICAgICNpbmNsdWRlIDxiZmQuaD4K
IAkJCQkJICAgIGludCBtYWluKCkge3N5bWJvbF9pbmZvIHQ7IHJldHVybiAwO30KIEVPRgotaWYg
eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMzU0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRh
Y19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29u
ZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM0MDI6
IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj
b25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRo
ZW4KICAgZWNobyAiJGFjX3QiInllcyIgMT4mNiAKIAkJCQkJY2F0ID4+IGNvbmZkZWZzLmggPDxc
RU9GCkBAIC0zMzkwLDE5ICszNDM4LDE5IEBACiAjCiAKIAllY2hvICRhY19uICJjaGVja2luZyBm
b3IgdXNlYWJsZSBiZmRfYm9vbGVhbiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6
MzM5NDogY2hlY2tpbmcgZm9yIHVzZWFibGUgYmZkX2Jvb2xlYW4iID4mNQorZWNobyAiY29uZmln
dXJlOjM0NDI6IGNoZWNraW5nIGZvciB1c2VhYmxlIGJmZF9ib29sZWFuIiA+JjUKIAlpZiB0ZXN0
ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBlY2hvICIkYWNfdCIibm8iIDE+JjYK
IGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzM5OSAiY29uZmln
dXJlIgorI2xpbmUgMzQ0NyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjZGVm
aW5lIElOX0dDQwogCQkgICAgI2luY2x1ZGUgPGJmZC5oPgogCQkgICAgYmZkX2Jvb2xlYW4gZm9v
KCkge3JldHVybiBGQUxTRTt9CiAJCSAgICBpbnQgbWFpbigpIHtyZXR1cm4gMDt9CiBFT0YKLWlm
IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzQwNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAk
YWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2Nv
bmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNDU0
OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMg
Y29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0
aGVuCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYgCiAJCWNhdCA+PiBjb25mZGVmcy5oIDw8XEVP
RgpAQCAtMzQ1MCwxNyArMzQ5OCwxNyBAQAogCSMgbmVlZCBHTlUgZ2V0dGV4dCBzZXBhcmF0ZWx5
LgogCWFjX3NhZmU9YGVjaG8gImxpYmludGwuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hv
ICRhY19uICJjaGVja2luZyBmb3IgbGliaW50bC5oIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNv
bmZpZ3VyZTozNDU0OiBjaGVja2luZyBmb3IgbGliaW50bC5oIiA+JjUKK2VjaG8gImNvbmZpZ3Vy
ZTozNTAyOiBjaGVja2luZyBmb3IgbGliaW50bC5oIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNo
byAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBl
Y2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4k
YWNfZXh0IDw8RU9GCi0jbGluZSAzNDU5ICJjb25maWd1cmUiCisjbGluZSAzNTA3ICJjb25maWd1
cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBFT0YKIGFj
X3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQi
Ci17IChldmFsIGVjaG8gY29uZmlndXJlOjM0NjQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAk
YWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjM1MTI6IFwiJGFjX3RyeVwi
KSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNv
bmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16
ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC0zNDg0LDE0ICszNTMyLDE0
IEBACiAKIAkKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgZGdl
dHRleHQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM0ODg6IGNoZWNraW5nIGZv
ciBsaWJyYXJ5IGNvbnRhaW5pbmcgZGdldHRleHQiID4mNQorZWNobyAiY29uZmlndXJlOjM1MzY6
IGNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgZGdldHRleHQiID4mNQogaWYgZXZhbCAi
dGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3NlYXJjaF9kZ2V0dGV4dCcrc2V0fSdgXCIgPSBzZXQi
OyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGFjX2Z1
bmNfc2VhcmNoX3NhdmVfTElCUz0iJExJQlMiCiBhY19jdl9zZWFyY2hfZGdldHRleHQ9Im5vIgog
Y2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzQ5NSAiY29uZmlndXJlIgorI2xp
bmUgMzU0MyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBh
bnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2Ug
dXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2Nj
MgpAQCAtMzUwMiw3ICszNTUwLDcgQEAKIGRnZXR0ZXh0KCkKIDsgcmV0dXJuIDA7IH0KIEVPRgot
aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNTA2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFs
ICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4K
K2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzU1NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZh
bCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVu
CiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3Zfc2VhcmNoX2RnZXR0ZXh0PSJub25lIHJlcXVp
cmVkIgogZWxzZQpAQCAtMzUxMyw3ICszNTYxLDcgQEAKIHRlc3QgIiRhY19jdl9zZWFyY2hfZGdl
dHRleHQiID0gIm5vIiAmJiBmb3IgaSBpbiBpbnRsOyBkbwogTElCUz0iLWwkaSAgJGFjX2Z1bmNf
c2VhcmNoX3NhdmVfTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM1
MTcgImNvbmZpZ3VyZSIKKyNsaW5lIDM1NjUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVm
cy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFu
IGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy
ZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTM1MjQsNyArMzU3Miw3IEBACiBkZ2V0dGV4dCgpCiA7
IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzUyODogXCIkYWNf
bGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0
JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM1NzY6IFwiJGFj
X2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVz
dCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGFjX2N2X3NlYXJjaF9k
Z2V0dGV4dD0iLWwkaSIKIGJyZWFrCkBAIC0zNTg5LDcgKzM2MzcsNyBAQAogIyBhZGRyZXNzZXMs
IGluIGNhbGN1bGF0aW5nIGEgcGFnZSBmb3IgYW4gYWRkcmVzcyBpbiB0aGUgaGVhcC4KIAogZWNo
byAkYWNfbiAiY2hlY2tpbmcgc2l6ZSBvZiBsb25nIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNv
bmZpZ3VyZTozNTkzOiBjaGVja2luZyBzaXplIG9mIGxvbmciID4mNQorZWNobyAiY29uZmlndXJl
OjM2NDE6IGNoZWNraW5nIHNpemUgb2YgbG9uZyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8g
JyQnJ3snYWNfY3Zfc2l6ZW9mX2xvbmcnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRh
Y19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMzU5Nyw3ICszNjQ1LDcgQEAKICAg
YWNfY3Zfc2l6ZW9mX2xvbmc9MAogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G
Ci0jbGluZSAzNjAxICJjb25maWd1cmUiCisjbGluZSAzNjQ5ICJjb25maWd1cmUiCiAjaW5jbHVk
ZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgpAQCAtMzYwOSw3ICszNjU3LDcgQEAKICAgZXhpdCgwKTsKIH0KIEVPRgotaWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZTozNjEzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy
PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4
aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM2NjE6IFwiJGFjX2xp
bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7
YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgYWNf
Y3Zfc2l6ZW9mX2xvbmc9YGNhdCBjb25mdGVzdHZhbGAKIGVsc2UKQEAgLTM2MjksNyArMzY3Nyw3
IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgc2l6ZW9mIHN0cnVjdCBjb250YmxvY2siIi4u
LiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM2MzM6IGNoZWNraW5nIHNpemVvZiBzdHJ1
Y3QgY29udGJsb2NrIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNjgxOiBjaGVja2luZyBzaXplb2Yg
c3RydWN0IGNvbnRibG9jayIgPiY1CiAKICMgd29yayBhcm91bmQgTVNZUyBwd2QgcmVzdWx0IGlu
Y29tcGF0aWJpbGl0eQogaWYgdGVzdCAiJHVzZSIgPSAibWluZ3ciIDsgdGhlbgpAQCAtMzYzNyw3
ICszNjg1LDcgQEAKICAgZWNobyBDYW5ub3QgZmluZCBzaXplb2Ygc3RydWN0IGNvbnRibG9jaztl
eGl0IDEKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzY0MSAi
Y29uZmlndXJlIgorI2xpbmUgMzY4OSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KIAkjZGVmaW5lIEVYVEVSCkBAIC0zNjUxLDcgKzM2OTksNyBA
QAogCXJldHVybiAwOwogCX0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNjU1OiBc
IiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29u
ZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjM3MDM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25m
dGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgc2l6ZW9mX2NvbnRibG9jaz1gY2F0IGNv
bmZ0ZXN0MWAKIGVsc2UKQEAgLTM2NjgsNyArMzcxNiw3IEBACiAgIGVjaG8gQ2Fubm90IGZpbmQg
c2l6ZW9mIHN0cnVjdCBjb250YmxvY2s7ZXhpdCAxCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRh
Y19leHQgPDxFT0YKLSNsaW5lIDM2NzIgImNvbmZpZ3VyZSIKKyNsaW5lIDM3MjAgImNvbmZpZ3Vy
ZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAJI2RlZmluZSBF
WFRFUgpAQCAtMzY4Miw3ICszNzMwLDcgQEAKIAlyZXR1cm4gMDsKIAl9CiBFT0YKLWlmIHsgKGV2
YWwgZWNobyBjb25maWd1cmU6MzY4NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGlu
aykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0
OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzM0OiBcIiRh
Y19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRl
c3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAg
IHNpemVvZl9jb250YmxvY2s9YGNhdCBjb25mdGVzdDFgCiBlbHNlCkBAIC0zNzA3LDE3ICszNzU1
LDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdg
CiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1lY2hv
ICJjb25maWd1cmU6MzcxMTogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQorZWNobyAiY29uZmln
dXJlOjM3NTk6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNo
byAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBl
Y2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4k
YWNfZXh0IDw8RU9GCi0jbGluZSAzNzE2ICJjb25maWd1cmUiCisjbGluZSAzNzY0ICJjb25maWd1
cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBhY190
cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0Igot
eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzIxOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFj
X3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzY5OiBcIiRhY190cnlcIikg
MT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25m
dGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAi
JGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtMzczOCwxOCArMzc4NiwxOCBA
QAogI2RlZmluZSAkYWNfdHJfaGRyIDEKIEVPRgogIGVjaG8gJGFjX24gImNoZWNraW5nICJlbmRp
YW5uZXNzIiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mzc0MjogY2hlY2tpbmcg
ImVuZGlhbm5lc3MiIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNzkwOiBjaGVja2luZyAiZW5kaWFu
bmVzcyIiID4mNQogCWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIGVj
aG8gIiRhY190IiJiaWciIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP
RgotI2xpbmUgMzc0NyAiY29uZmlndXJlIgorI2xpbmUgMzc5NSAiY29uZmlndXJlIgogI2luY2x1
ZGUgImNvbmZkZWZzLmgiCiAjZGVmaW5lIF9fQVJNRUJfXwogCQkjaW5jbHVkZSA8ZW5kaWFuLmg+
IAogCQlpbnQgbWFpbigpIHsgcmV0dXJuIEJZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOID8g
MCA6IDE7fQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM3NTM6IFwiJGFjX2xpbmtc
IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf
ZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNo
byBjb25maWd1cmU6MzgwMTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4m
NTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0
KSAyPi9kZXYvbnVsbAogdGhlbgogICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUg
TElUVExFX0VORCAxCkBAIC0zNzc2LDEzICszODI0LDEzIEBACiAjIHRoaXMgYW5kIHJlc3RvcmUg
dGhlIHRyYWRpdGlvbmFsIGJlaGF2aW9yIGhlcmUKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9y
IHNicmsiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM3ODA6IGNoZWNraW5nIGZv
ciBzYnJrIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozODI4OiBjaGVja2luZyBmb3Igc2JyayIgPiY1
CiBIQVZFX1NCUks9IiIKIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAg
IGVjaG8gIiRhY190IiJubzogV0FSTklORyB5b3UgbXVzdCBiZSBhYmxlIHRvIGVtdWxhdGUgc2Jy
azogYXMgb24gbWluZ3cgb3IgbWFjb3N4IiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRh
Y19leHQgPDxFT0YKLSNsaW5lIDM3ODYgImNvbmZpZ3VyZSIKKyNsaW5lIDM4MzQgImNvbmZpZ3Vy
ZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCSAgICAjaW5j
bHVkZSA8c3RkaW8uaD4KQEAgLTM3OTQsNyArMzg0Miw3IEBACiAJCXJldHVybiAwOwogCQl9CiBF
T0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzc5ODogXCIkYWNfbGlua1wiKSAxPiY1OyAo
ZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYm
ICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy
ZTozODQ2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRl
c3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9u
dWxsCiB0aGVuCiAgIEhBVkVfU0JSSz0xCiAJCWVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKQEAgLTM4
MTAsMTIgKzM4NTgsMTIgQEAKIAogaWYgdGVzdCAiJEhBVkVfU0JSSyIgPSAiMSIgOyB0aGVuCiAJ
ZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHJhbmRvbWl6ZWQgc2JyayIiLi4uICRhY19jIiAxPiY2
Ci1lY2hvICJjb25maWd1cmU6MzgxNDogY2hlY2tpbmcgZm9yIHJhbmRvbWl6ZWQgc2JyayIgPiY1
CitlY2hvICJjb25maWd1cmU6Mzg2MjogY2hlY2tpbmcgZm9yIHJhbmRvbWl6ZWQgc2JyayIgPiY1
CiAJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgU0JSSz0wCiBlbHNl
CiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM4MTkgImNvbmZpZ3VyZSIK
KyNsaW5lIDM4NjcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUg
PHVuaXN0ZC5oPgogCQkgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0zODI3LDcgKzM4NzUsNyBA
QAogCQkJcmV0dXJuIDA7CiAJCQl9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzgz
MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z
IGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAor
aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozODc5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFs
ICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4v
Y29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIFNCUks9YGNhdCBjb25mdGVzdDFg
CiBlbHNlCkBAIC0zODQ3LDcgKzM4OTUsNyBAQAogICBTQlJLMT0wCiBlbHNlCiAgIGNhdCA+IGNv
bmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM4NTEgImNvbmZpZ3VyZSIKKyNsaW5lIDM4OTkg
ImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgog
CQkgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0zODU5LDcgKzM5MDcsNyBAQAogCQkJcmV0dXJu
IDA7CiAJCQl9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzg2MzogXCIkYWNfbGlu
a1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHth
Y19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZTozOTExOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy
PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4
aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIFNCUksxPWBjYXQgY29uZnRlc3QxYAogZWxzZQpAQCAt
Mzg3OSwxMiArMzkyNywxMiBAQAogCWlmIHRlc3QgIiRTQlJLIiAhPSAiJFNCUksxIiA7IHRoZW4K
IAkJZWNobyAiJGFjX3QiInllcyIgMT4mNgogCQllY2hvICRhY19uICJjaGVja2luZyBmb3IgcmFu
ZG9taXplZCBicmsgcmVtZWR5IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozODgz
OiBjaGVja2luZyBmb3IgcmFuZG9taXplZCBicmsgcmVtZWR5IiA+JjUKK2VjaG8gImNvbmZpZ3Vy
ZTozOTMxOiBjaGVja2luZyBmb3IgcmFuZG9taXplZCBicmsgcmVtZWR5IiA+JjUKIAkJaWYgdGVz
dCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgU0JSSz0wCiBlbHNlCiAgIGNhdCA+
IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM4ODggImNvbmZpZ3VyZSIKKyNsaW5lIDM5
MzYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5c2NhbGwu
aD4KIAkJCSAgICAjaW5jbHVkZSA8bGludXgvcGVyc29uYWxpdHkuaD4KQEAgLTM5MDQsNyArMzk1
Miw3IEBACiAJCQkJcmV0dXJuIDA7CiAJCQkJfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmln
dXJlOjM5MDg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYg
dGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2
L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzk1NjogXCIkYWNfbGlua1wiKSAxPiY1
OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9
ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBTQlJLPWBjYXQgY29u
ZnRlc3QxYAogZWxzZQpAQCAtMzkyNCw3ICszOTcyLDcgQEAKICAgU0JSSzE9MAogZWxzZQogICBj
YXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzOTI4ICJjb25maWd1cmUiCisjbGlu
ZSAzOTc2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzeXNj
YWxsLmg+CiAJCQkgICAgI2luY2x1ZGUgPGxpbnV4L3BlcnNvbmFsaXR5Lmg+CkBAIC0zOTQ0LDcg
KzM5OTIsNyBAQAogCQkJCXJldHVybiAwOwogCQkJCX0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNv
bmZpZ3VyZTozOTQ4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9
ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+
L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM5OTY6IFwiJGFjX2xpbmtcIikg
MT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhl
ZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgU0JSSzE9YGNh
dCBjb25mdGVzdDFgCiBlbHNlCkBAIC0zOTc2LDE2ICs0MDI0LDQyIEBACiAJZmkKIGZpCiAKK2Vj
aG8gJGFjX24gImNoZWNraW5nICJmaW5kaW5nIGRlZmF1bHQgbGlua2VyIHNjcmlwdCIiIi4uLiAk
YWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJlOjQwMjk6IGNoZWNraW5nICJmaW5kaW5nIGRlZmF1
bHQgbGlua2VyIHNjcmlwdCIiID4mNQordG91Y2ggdW5peHBvcnQvZ2NsLnNjcmlwdAorZWNobyAi
aW50IG1haW4oKSB7cmV0dXJuIDA7fSIgPmZvby5jCiskQ0MgLVdsLC0tdmVyYm9zZSBmb28uYyAt
byBmb28gMj4mMSB8IFwKKyAgICBhd2sgJy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PS8ge2k9MS1pO25leHR9IHtpZiAoaSkgcHJpbnR9JyA+Z2NsLnNj
cmlwdAorcm0gLXJmIGZvby5jIGZvbworaWYgdGVzdCAiYGNhdCBnY2wuc2NyaXB0IHwgd2MgLWxg
IiAhPSAiMCIgOyB0aGVuCisgIGVjaG8gIiRhY190IiJnb3QgaXQiIDE+JjYKKyAgZWNobyAkYWNf
biAiY2hlY2tpbmcgInRyeWluZyB0byBsb3dlciBoZWFwIHN0YXJ0IiIiLi4uICRhY19jIiAxPiY2
CitlY2hvICJjb25maWd1cmU6NDAzODogY2hlY2tpbmcgInRyeWluZyB0byBsb3dlciBoZWFwIHN0
YXJ0IiIgPiY1CisgIGNwIGdjbC5zY3JpcHQgZ2NsLnNjcmlwdC5kZWYKKyAgY2F0IGdjbC5zY3Jp
cHQuZGVmIHwgYXdrICcvU0laRU9GX0hFQURFUlMvIHtnc3ViKCIweC4uLiIsIjB4MDAwIiwkMCk7
fSB7cHJpbnR9JyA+Z2NsLnNjcmlwdAorICBpZiBkaWZmIGdjbC5zY3JpcHQuZGVmIGdjbC5zY3Jp
cHQgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorICAgICBlY2hvICIkYWNfdCIiImNhbm5vdCBvciBu
b3QgbmVlZGVkIiIgMT4mNgorICAgICBybSAtZiBnY2wuc2NyaXB0IGdjbC5zY3JpcHQuZGVmCisg
IGVsc2UKKyAgICAgZWNobyAiJGFjX3QiIiJkb25lIiIgMT4mNgorICAgICBybSAtZiBnY2wuc2Ny
aXB0LmRlZgorICAgICBMREZMQUdTPSIkTERGTEFHUyAtV2wsLVQgZ2NsLnNjcmlwdCAiCisgICAg
IGNwIGdjbC5zY3JpcHQgdW5peHBvcnQKKyAgZmkKK2Vsc2UKKyAgZWNobyAiJGFjX3QiIiJub25l
IiIgMT4mNgorICBybSAtZiBnY2wuc2NyaXB0CitmaQogCiBvbGRfTERGTEFHUz0iJExERkxBR1Mi
Ci1MREZMQUdTPSIkVExERkxBR1MiCitMREZMQUdTPSIkTERGTEFHUyAkVExERkxBR1MiCiBlY2hv
ICRhY19uICJjaGVja2luZyAiZmluZGluZyBEQkVHSU4iIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8g
ImNvbmZpZ3VyZTozOTg0OiBjaGVja2luZyAiZmluZGluZyBEQkVHSU4iIiA+JjUKK2VjaG8gImNv
bmZpZ3VyZTo0MDU4OiBjaGVja2luZyAiZmluZGluZyBEQkVHSU4iIiA+JjUKIGlmIHRlc3QgIiRj
cm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIGRiZWdpbj0wCiBlbHNlCiAgIGNhdCA+IGNv
bmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM5ODkgImNvbmZpZ3VyZSIKKyNsaW5lIDQwNjMg
ImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAg
ICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC00MDI0LDcgKzQwOTgsNyBAQAogICBy
ZXR1cm4gMDsKIH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0MDI4OiBcIiRhY19s
aW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qk
e2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFs
IGVjaG8gY29uZmlndXJlOjQxMDI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmsp
IDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsg
ZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgZGJlZ2luPWBjYXQgY29uZnRlc3QxYAogZWxzZQpA
QCAtNDA0NSwxNCArNDExOSwxMDggQEAKIGVjaG8gIiRhY190IiJnb3QgJGRiZWdpbiIgMT4mNgog
TERGTEFHUz0iJG9sZF9MREZMQUdTIgogCitlY2hvICRhY19uICJjaGVja2luZyAiZm9yIGhlYXAg
c2hhcmVkIGxpYnJhcnkgaGVhcCBjZWlsaW5nIiIiLi4uICRhY19jIiAxPiY2CitlY2hvICJjb25m
aWd1cmU6NDEyNDogY2hlY2tpbmcgImZvciBoZWFwIHNoYXJlZCBsaWJyYXJ5IGhlYXAgY2VpbGlu
ZyIiID4mNQorZWNobyAiaW50IG1haW4oKSB7cmV0dXJuIDA7fSIgPmZvby5jCiskQ0MgZm9vLmMg
LW8gZm9vCitoZWFwX2NlaWxpbmc9YGxkZCBmb28gfCB0YWlsIC1uIDEgfCBhd2sgJ3twcmludCAk
TkZ9JyB8IHRyIC1kICcoKSdgCitlY2hvICIkYWNfdCIiImdvdCAkaGVhcF9jZWlsaW5nIiIgMT4m
NgorY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgU0hBUkVEX0xJQl9IRUFQX0NFSUxJ
TkcgJGhlYXBfY2VpbGluZworRU9GCisKKworIyBwYWdld2lkdGgKK2VjaG8gJGFjX24gImNoZWNr
aW5nIGZvciBwYWdld2lkdGgiIi4uLiAkYWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJlOjQxMzY6
IGNoZWNraW5nIGZvciBwYWdld2lkdGgiID4mNQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIg
PSB5ZXM7IHRoZW4KKyAgUEFHRVdJRFRIPTAKK2Vsc2UKKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4
dCA8PEVPRgorI2xpbmUgNDE0MSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisj
aW5jbHVkZSA8c3RkaW8uaD4KKyAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4KK2ludCBt
YWluKCkge3NpemVfdCBpPWdldHBhZ2VzaXplKCksajsgCisJICAgIEZJTEUgKmZwPWZvcGVuKCJj
b25mdGVzdDEiLCJ3Iik7CisJICAgIGZvciAoaj0wO2k+Pj0xO2orKyk7CisJICAgIGZwcmludGYo
ZnAsIiV1IixqKTsKKwkgICAgcmV0dXJuIDA7fQorRU9GCitpZiB7IChldmFsIGVjaG8gY29uZmln
dXJlOjQxNTE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYg
dGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2
L251bGwKK3RoZW4KKyAgUEFHRVdJRFRIPWBjYXQgY29uZnRlc3QxYAorZWxzZQorICBlY2hvICJj
b25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4
dCA+JjUKKyAgcm0gLWZyIGNvbmZ0ZXN0KgorICBQQUdFV0lEVEg9MAorZmkKK3JtIC1mciBjb25m
dGVzdCoKK2ZpCisKK2VjaG8gIiRhY190IiIkUEFHRVdJRFRIIiAxPiY2CitjYXQgPj4gY29uZmRl
ZnMuaCA8PEVPRgorI2RlZmluZSBQQUdFV0lEVEggJFBBR0VXSURUSAorRU9GCisKKworCitlY2hv
ICRhY19uICJjaGVja2luZyAiZm9yIG1heHBhZ2UgcmV2aXNpb24iIiIuLi4gJGFjX2MiIDE+JjYK
K2VjaG8gImNvbmZpZ3VyZTo0MTcxOiBjaGVja2luZyAiZm9yIG1heHBhZ2UgcmV2aXNpb24iIiA+
JjUKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIHRtcF9tYXhwYWdl
PTAKK2Vsc2UKKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgNDE3NiAiY29u
ZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK21haW4o
KQoreworICBjaGFyICpiOworICB1bnNpZ25lZCBsb25nIGksajsKKyAgRklMRSAqZnAgPSBmb3Bl
bigiY29uZnRlc3QxIiwidyIpOworICBqPSgkZW5hYmxlX21heHBhZ2UgPDwkUEFHRVdJRFRIKSAr
ICRkYmVnaW47CisgIGo9aj4kaGVhcF9jZWlsaW5nID8gJGhlYXBfY2VpbGluZyA6IGo7CisgIGot
PSRkYmVnaW47CisgIGZvciAoaT0xO2k8PWo7aTw8PTEpOworICBpZiAoaT5qKSBpPj49MTsKKyAg
ZnByaW50ZihmcCwiJWxkIixpPj4kUEFHRVdJRFRIKTsKKyAgZmNsb3NlKGZwKTsKKyAgcmV0dXJu
IDA7Cit9CitFT0YKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDE5NDogXCIkYWNfbGlua1wi
KSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l
eGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAordGhlbgorICB0bXBfbWF4
cGFnZT1gY2F0IGNvbmZ0ZXN0MWAKK2Vsc2UKKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJv
Z3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIHJtIC1mciBjb25m
dGVzdCoKKyAgdG1wX21heHBhZ2U9MAorZmkKK3JtIC1mciBjb25mdGVzdCoKK2ZpCisKK2lmIHRl
c3QgIiR0bXBfbWF4cGFnZSIgIT0gIiRlbmFibGVfbWF4cGFnZSIgOyB0aGVuCisgICBlbmFibGVf
bWF4cGFnZT0kdG1wX21heHBhZ2UKKyAgIGVjaG8gIiRhY190IiIiZ290ICRlbmFibGVfbWF4cGFn
ZSIiIDE+JjYKKyMgICBBQ19ERUZJTkVfVU5RVU9URUQoTUFYUEFHRSwkZW5hYmxlX21heHBhZ2Up
CitlbHNlCisgICBlY2hvICIkYWNfdCIiIiRlbmFibGVfbWF4cGFnZSBpcyBPSyIiIDE+JjYKK2Zp
CitjYXQgPj4gY29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBNQVhQQUdFICRlbmFibGVfbWF4cGFn
ZQorRU9GCisKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgImZpbmRpbmcgQ1NUQUNLX0FERFJFU1Mi
IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MDUxOiBjaGVja2luZyAiZmluZGlu
ZyBDU1RBQ0tfQUREUkVTUyIiID4mNQorZWNobyAiY29uZmlndXJlOjQyMTk6IGNoZWNraW5nICJm
aW5kaW5nIENTVEFDS19BRERSRVNTIiIgPiY1CiBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9
IHllczsgdGhlbgogICBjc3RhY2tfYWRkcmVzcz0wCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRh
Y19leHQgPDxFT0YKLSNsaW5lIDQwNTYgImNvbmZpZ3VyZSIKKyNsaW5lIDQyMjQgImNvbmZpZ3Vy
ZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiBtYWluKCkKQEAg
LTQwNjQsNyArNDIzMiw3IEBACiAgIHJldHVybiAwOwogfQogRU9GCi1pZiB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjQwNjg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7
IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkg
Mj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDIzNjogXCIkYWNfbGlua1wi
KSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l
eGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBjc3RhY2tf
YWRkcmVzcz1gY2F0IGNvbmZ0ZXN0MWAKIGVsc2UKQEAgLTQwODMsMTYgKzQyNTEsMjUxIEBACiAK
IGVjaG8gIiRhY190IiJnb3QgJGNzdGFja19hZGRyZXNzIiAxPiY2CiAKK2VjaG8gJGFjX24gImNo
ZWNraW5nICJmaW5kaW5nIENTVEFDS19BTElHTk1FTlQiIiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8g
ImNvbmZpZ3VyZTo0MjU2OiBjaGVja2luZyAiZmluZGluZyBDU1RBQ0tfQUxJR05NRU5UIiIgPiY1
CitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICBjc3RhY2tfYWxpZ25t
ZW50PTAKK2Vsc2UKKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgNDI2MSAi
Y29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK21h
aW4oKQoreworICB2b2lkICpiLCpjOworICBGSUxFICpmcCA9IGZvcGVuKCJjb25mdGVzdDEiLCJ3
Iik7CisgIGxvbmcgbjsKKyAgYj1hbGxvY2Eoc2l6ZW9mKGIpKTsKKyAgYz1hbGxvY2Eoc2l6ZW9m
KGMpKTsKKyAgbj1iPmMgPyBiLWMgOiBjLWI7CisgIG49bj5zaXplb2YoYykgPyBuIDogMDsKKyAg
ZnByaW50ZihmcCwiJWxkIixuKTsKKyAgZmNsb3NlKGZwKTsKKyAgcmV0dXJuIDA7Cit9CitFT0YK
K2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDI3ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZh
bCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICgu
L2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAordGhlbgorICBjc3RhY2tfYWxpZ25tZW50PWBj
YXQgY29uZnRlc3QxYAorZWxzZQorICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdh
czoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgcm0gLWZyIGNvbmZ0ZXN0Kgor
ICBjc3RhY2tfYWxpZ25tZW50PTAKK2ZpCitybSAtZnIgY29uZnRlc3QqCitmaQorCitjYXQgPj4g
Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBDU1RBQ0tfQUxJR05NRU5UICRjc3RhY2tfYWxpZ25t
ZW50IFwKKworRU9GCisKK2VjaG8gIiRhY190IiJnb3QgJGNzdGFja19hbGlnbm1lbnQiIDE+JjYK
KworZWNobyAkYWNfbiAiY2hlY2tpbmcgImZpbmRpbmcgQ1NUQUNLX0RJUkVDVElPTiIiIi4uLiAk
YWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJlOjQyOTg6IGNoZWNraW5nICJmaW5kaW5nIENTVEFD
S19ESVJFQ1RJT04iIiA+JjUKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVu
CisgIGNzdGFja19kaXJlY3Rpb249MAorZWxzZQorICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8
RU9GCisjbGluZSA0MzAzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNs
dWRlIDxzdGRpby5oPgordm9pZCAqCitmb28odm9pZCkgeworaW50IGk7CityZXR1cm4gKHZvaWQg
KikmaTsKK30KKworaW50CittYWluKCkKK3sKKyAgY2hhciAqYjsKKyAgRklMRSAqZnAgPSBmb3Bl
bigiY29uZnRlc3QxIiwidyIpOworICBmcHJpbnRmKGZwLCIlbGQiLCgobG9uZykgJmIpID4gKChs
b25nKSBmb28oKSkgPyAtMSA6IDEpOworICBmY2xvc2UoZnApOworICByZXR1cm4gMDsKK30KK0VP
RgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0MzIyOiBcIiRhY19saW5rXCIpIDE+JjU7IChl
dmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYg
KC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCit0aGVuCisgIGNzdGFja19kaXJlY3Rpb249
YGNhdCBjb25mdGVzdDFgCitlbHNlCisgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0g
d2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICBybSAtZnIgY29uZnRlc3Qq
CisgIGNzdGFja19kaXJlY3Rpb249MAorZmkKK3JtIC1mciBjb25mdGVzdCoKK2ZpCisKK2NhdCA+
PiBjb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIENTVEFDS19ESVJFQ1RJT04gJGNzdGFja19kaXJl
Y3Rpb24gXAorCitFT0YKKworZWNobyAiJGFjX3QiImdvdCAkY3N0YWNrX2RpcmVjdGlvbiIgMT4m
NgorCitlY2hvICRhY19uICJjaGVja2luZyAiZm9yIEMgc3RhY2sgc2l6ZSBmbG9vciBmcm9tIGhl
YXAgIiIiLi4uICRhY19jIiAxPiY2CitlY2hvICJjb25maWd1cmU6NDM0MjogY2hlY2tpbmcgImZv
ciBDIHN0YWNrIHNpemUgZmxvb3IgZnJvbSBoZWFwICIiID4mNQoraWYgdGVzdCAiJGNyb3NzX2Nv
bXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgdG1wX2Nzc2l6ZT0wCitlbHNlCisgIGNhdCA+IGNvbmZ0
ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIDQzNDcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25m
ZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4oKQoreworICBjaGFyICpiOwor
ICBGSUxFICpmcCA9IGZvcGVuKCJjb25mdGVzdDEiLCJ3Iik7CisgIHVuc2lnbmVkIGxvbmcgaixr
OworICAKKyAgaj0oKHVuc2lnbmVkIGxvbmcpJmIpICsgJGNzdGFja19kaXJlY3Rpb24gKiAkZW5h
YmxlX2Nzc2l6ZTsKKyAgaz0oJGRiZWdpbiArICgkZW5hYmxlX21heHBhZ2UgPDwgJFBBR0VXSURU
SCkpOworICBqPWFicyhqLSgodW5zaWduZWQgbG9uZykmYikpIT0kZW5hYmxlX2Nzc2l6ZSB8fCBq
PGsgPyBrIDogajsKKyAgai09KCh1bnNpZ25lZCBsb25nKSZiKTsKKyAgaio9JGNzdGFja19kaXJl
Y3Rpb247CisgIGZwcmludGYoZnAsIiVsdSIsaik7CisgIGZjbG9zZShmcCk7CisgIHJldHVybiAw
OworfQorRU9GCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQzNjc6IFwiJGFjX2xpbmtcIikg
MT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhl
ZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK3RoZW4KKyAgdG1wX2Nzc2l6
ZT1gY2F0IGNvbmZ0ZXN0MWAKK2Vsc2UKKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3Jh
bSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIHJtIC1mciBjb25mdGVz
dCoKKyAgdG1wX2Nzc2l6ZT0wCitmaQorcm0gLWZyIGNvbmZ0ZXN0KgorZmkKKworaWYgdGVzdCAi
JHRtcF9jc3NpemUiICE9ICIkZW5hYmxlX2Nzc2l6ZSIgOyB0aGVuCisgICBlbmFibGVfY3NzaXpl
PSR0bXBfY3NzaXplOworICAgZWNobyAiJGFjX3QiIiJnb3QgJGVuYWJsZV9jc3NpemUiIiAxPiY2
CisjICAgQUNfREVGSU5FX1VOUVVPVEVEKENTU0laRSwkZW5hYmxlX2Nzc2l6ZSkKK2Vsc2UKKyAg
IGVjaG8gIiRhY190IiIiJGVuYWJsZV9jc3NpemUgaXMgT0siIiAxPiY2CitmaQorY2F0ID4+IGNv
bmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgQ1NTSVpFICRlbmFibGVfY3NzaXplCitFT0YKKworCitj
c3RhY2tfdG9wPTAKK2NzdGFja19yYW5nZT0wCitlY2hvICRhY19uICJjaGVja2luZyAiZmluZGlu
ZyBjc3RhY2sgdG9wIiIiLi4uICRhY19jIiAxPiY2CitlY2hvICJjb25maWd1cmU6NDM5NDogY2hl
Y2tpbmcgImZpbmRpbmcgY3N0YWNrIHRvcCIiID4mNQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGlu
ZyIgPSB5ZXM7IHRoZW4KKyAgY3N0YWNrX3RvcD0wCitlbHNlCisgIGNhdCA+IGNvbmZ0ZXN0LiRh
Y19leHQgPDxFT0YKKyNsaW5lIDQzOTkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5o
IgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4oKQoreworICB2b2lkICp2OworICB1bnNp
Z25lZCBsb25nIGksaixrOworICBGSUxFICpmcCA9IGZvcGVuKCJjb25mdGVzdDEiLCJ3Iik7CisK
KyAgZm9yIChpPTIsaz0xO2k7az1pLGk8PD0xKTsKKyAgZm9yIChpPWo9aztqICYmIGk8KHVuc2ln
bmVkIGxvbmcpJnYgKyAoJGNzdGFja19kaXJlY3Rpb249PTEgPyAkZW5hYmxlX2Nzc2l6ZSA6IDAp
O2o+Pj0xLGl8PWopOworICBmcHJpbnRmKGZwLCIweCVseCIsaSYtMHgxMDAwKTsKKyAgZmNsb3Nl
KGZwKTsKKyAgcmV0dXJuIDA7Cit9CitFT0YKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDQx
NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z
IGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAor
dGhlbgorICBjc3RhY2tfdG9wPWBjYXQgY29uZnRlc3QxYAorZWxzZQorICBlY2hvICJjb25maWd1
cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUK
KyAgcm0gLWZyIGNvbmZ0ZXN0KgorICBjc3RhY2tfdG9wPTAKK2ZpCitybSAtZnIgY29uZnRlc3Qq
CitmaQorCitlY2hvICIkYWNfdCIiZ290ICRjc3RhY2tfdG9wIiAxPiY2CitpZiB0ZXN0ICIkY3N0
YWNrX3RvcCIgIT0gIjAiIDsgdGhlbgorICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgImZpbmRpbmcg
b3ZlciBjc3RhY2sgaGFsZiByYW5nZSIiIi4uLiAkYWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJl
OjQ0MzE6IGNoZWNraW5nICJmaW5kaW5nIG92ZXIgY3N0YWNrIGhhbGYgcmFuZ2UiIiA+JjUKKyAg
IGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIGNzdGFja19yYW5nZT0w
CitlbHNlCisgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIDQ0MzYgImNvbmZp
Z3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisgICBpbnQK
KyAgIG1haW4oKQorICAgeworICAgICB1bnNpZ25lZCBsb25nIGo7CisgICAgIEZJTEUgKmZwID0g
Zm9wZW4oImNvbmZ0ZXN0MSIsInciKTsKKworICAgICBmb3IgKGo9MTtqICYmICEoaiYgJGNzdGFj
a190b3ApO2o8PD0xKTsKKyAgICAgZnByaW50ZihmcCwiMHglbHgiLGo+PjEpOworICAgICBmY2xv
c2UoZnApOworICAgICByZXR1cm4gMDsKKyAgIH0KK0VPRgoraWYgeyAoZXZhbCBlY2hvIGNvbmZp
Z3VyZTo0NDUxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYm
IHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rl
di9udWxsCit0aGVuCisgIGNzdGFja19yYW5nZT1gY2F0IGNvbmZ0ZXN0MWAKK2Vsc2UKKyAgZWNo
byAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRh
Y19leHQgPiY1CisgIHJtIC1mciBjb25mdGVzdCoKKyAgY3N0YWNrX3JhbmdlPTAKK2ZpCitybSAt
ZnIgY29uZnRlc3QqCitmaQorCisgICBlY2hvICIkYWNfdCIiZ290ICRjc3RhY2tfcmFuZ2UiIDE+
JjYKKyAgIGlmIHRlc3QgIiRjc3RhY2tfcmFuZ2UiICE9ICIwIiA7IHRoZW4gCisJY2F0ID4+IGNv
bmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgQ1NUQUNLX1RPUCAkY3N0YWNrX3RvcAorRU9GCisKKyAg
ICAgIGNhdCA+PiBjb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIENTVEFDS19SQU5HRSAkY3N0YWNr
X3JhbmdlCitFT0YKKworICAgZmkKK2ZpCisKK2lmIHRlc3QgIiRlbmFibGVfaW1tZml4IiA9ICJ5
ZXMiIDsgdGhlbgorICBpZiB0ZXN0ICIkY3N0YWNrX3RvcCIgIT0gIjAiIDsgdGhlbgorICAgICBp
ZiB0ZXN0ICIkY3N0YWNrX3JhbmdlIiAhPSAiMCIgOyB0aGVuIAorCWNhdCA+PiBjb25mZGVmcy5o
IDw8RU9GCisjZGVmaW5lIElNX0ZJWF9CQVNFICRjc3RhY2tfdG9wCitFT0YKKworICAgICAgICBj
YXQgPj4gY29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBJTV9GSVhfTElNICRjc3RhY2tfcmFuZ2UK
K0VPRgorCisgICAgIGZpCisgIGZpCitmaQogCiAKIGVjaG8gJGFjX24gImNoZWNraW5nICJzaXpl
b2YgbG9uZyBsb25nIGludCIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQwOTA6
IGNoZWNraW5nICJzaXplb2YgbG9uZyBsb25nIGludCIiID4mNQorZWNobyAiY29uZmlndXJlOjQ0
OTM6IGNoZWNraW5nICJzaXplb2YgbG9uZyBsb25nIGludCIiID4mNQogaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CiAKIGVsc2UK
ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDA5NiAiY29uZmlndXJlIgor
I2xpbmUgNDQ5OSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8
c3RkaW8uaD4KIG1haW4oKQpAQCAtNDEwMiw3ICs0NTA1LDcgQEAKIH0KIAogRU9GCi1pZiB7IChl
dmFsIGVjaG8gY29uZmlndXJlOjQxMDY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xp
bmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVz
dDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDUwOTogXCIk
YWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0
ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgog
ICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9MT05HX0xPTkcgMQpAQCAt
NDE1OCw0MiArNDU2MSw2IEBACiAKIAogCi0jIHBhZ2V3aWR0aAotZWNobyAkYWNfbiAiY2hlY2tp
bmcgZm9yIHBhZ2V3aWR0aCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDE2NDog
Y2hlY2tpbmcgZm9yIHBhZ2V3aWR0aCIgPiY1Ci1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9
IHllczsgdGhlbgotICBQQUdFV0lEVEg9MAotZWxzZQotICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0
IDw8RU9GCi0jbGluZSA0MTY5ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNp
bmNsdWRlIDxzdGRpby5oPgotICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgotaW50IG1h
aW4oKSB7c2l6ZV90IGk9Z2V0cGFnZXNpemUoKSxqOyAKLQkgICAgRklMRSAqZnA9Zm9wZW4oImNv
bmZ0ZXN0MSIsInciKTsKLQkgICAgZm9yIChqPTA7aT4+PTE7aisrKTsKLQkgICAgZnByaW50Zihm
cCwiJXUiLGopOwotCSAgICByZXR1cm4gMDt9Ci1FT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1
cmU6NDE3OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0
ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYv
bnVsbAotdGhlbgotICBQQUdFV0lEVEg9YGNhdCBjb25mdGVzdDFgCi1lbHNlCi0gIGVjaG8gImNv
bmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0gIGNhdCBjb25mdGVzdC4kYWNfZXh0
ID4mNQotICBybSAtZnIgY29uZnRlc3QqCi0gIFBBR0VXSURUSD0wCi1maQotcm0gLWZyIGNvbmZ0
ZXN0KgotZmkKLQotZWNobyAiJGFjX3QiIiRQQUdFV0lEVEgiIDE+JjYKLWNhdCA+PiBjb25mZGVm
cy5oIDw8RU9GCi0jZGVmaW5lIFBBR0VXSURUSCAkUEFHRVdJRFRICi1FT0YKLQotCi0KICMgTWF4
aW11bSBudW1iZXIgb2YgcGFnZXMKIAogCkBAIC00MjAyLDEyICs0NTY5LDEyIEBACiBmb3IgYWNf
ZnVuYyBpbiBnZXRjd2QKIGRvCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4u
LiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQyMDY6IGNoZWNraW5nIGZvciAkYWNfZnVu
YyIgPiY1CitlY2hvICJjb25maWd1cmU6NDU3MzogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUK
IGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jXyRhY19mdW5jJytzZXR9J2Bc
IiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UK
ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDIxMSAiY29uZmlndXJlIgor
I2xpbmUgNDU3OCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0g
aGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlw
ZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4g
ICovCkBAIC00MjMwLDcgKzQ1OTcsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2
YWwgZWNobyBjb25maWd1cmU6NDIzNDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGlu
aykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChl
dmFsIGVjaG8gY29uZmlndXJlOjQ2MDE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xp
bmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAt
cmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIgogZWxzZQpAQCAt
NDI1NywxMiArNDYyNCwxMiBAQAogZm9yIGFjX2Z1bmMgaW4gZ2V0d2QKIGRvCiBlY2hvICRhY19u
ICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJl
OjQyNjE6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICJjb25maWd1cmU6NDYyODog
Y2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydh
Y19jdl9mdW5jXyRhY19mdW5jJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAi
KGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP
RgotI2xpbmUgNDI2NiAiY29uZmlndXJlIgorI2xpbmUgNDYzMyAiY29uZmlndXJlIgogI2luY2x1
ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9z
IGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdp
dGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovCkBAIC00Mjg1LDcgKzQ2NTIsNyBAQAogCiA7
IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDI4OTogXCIkYWNf
bGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0
JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ2NTY6IFwiJGFj
X2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVz
dCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1
bmNfJGFjX2Z1bmM9eWVzIgogZWxzZQpAQCAtNDMxMCwxMiArNDY3NywxMiBAQAogZG9uZQogCiBl
Y2hvICRhY19uICJjaGVja2luZyBmb3IgdW5hbWUiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29u
ZmlndXJlOjQzMTQ6IGNoZWNraW5nIGZvciB1bmFtZSIgPiY1CitlY2hvICJjb25maWd1cmU6NDY4
MTogY2hlY2tpbmcgZm9yIHVuYW1lIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydh
Y19jdl9mdW5jX3VuYW1lJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNh
Y2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgot
I2xpbmUgNDMxOSAiY29uZmlndXJlIgorI2xpbmUgNDY4NiAiY29uZmlndXJlIgogI2luY2x1ZGUg
ImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFu
ZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGgg
Y2hhciB1bmFtZSgpOyBiZWxvdy4gICovCkBAIC00MzM4LDcgKzQ3MDUsNyBAQAogCiA7IHJldHVy
biAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDM0MjogXCIkYWNfbGlua1wi
KSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l
eGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ3MDk6IFwiJGFjX2xpbmtc
IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf
ZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfdW5h
bWU9eWVzIgogZWxzZQpAQCAtNDM2MiwxMiArNDcyOSwxMiBAQAogZmkKIAogZWNobyAkYWNfbiAi
Y2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1
cmU6NDM2NjogY2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSIgPiY1CitlY2hvICJjb25maWd1cmU6
NDczMzogY2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVj
aG8gJyQnJ3snYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXknK3NldH0nYFwiID0gc2V0IjsgdGhlbgog
ICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVz
dC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0MzcxICJjb25maWd1cmUiCisjbGluZSA0NzM4ICJjb25m
aWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5l
IF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBj
YW4gY29uZmxpY3Qgd2l0aCBjaGFyIGdldHRpbWVvZmRheSgpOyBiZWxvdy4gICovCkBAIC00Mzkw
LDcgKzQ3NTcsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25m
aWd1cmU6NDM5NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm
JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29u
ZmlndXJlOjQ3NjE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0g
JiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3Qq
CiAgIGV2YWwgImFjX2N2X2Z1bmNfZ2V0dGltZW9mZGF5PXllcyIKIGVsc2UKQEAgLTQ0MTksMTcg
KzQ3ODYsMTcgQEAKIGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9f
cF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYK
LWVjaG8gImNvbmZpZ3VyZTo0NDIzOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJj
b25maWd1cmU6NDc5MDogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBc
ImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVu
CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0
ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQ0MjggImNvbmZpZ3VyZSIKKyNsaW5lIDQ3OTUgImNv
bmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YK
IGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5v
dXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjQ0MzM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZh
bCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjQ4MDA6IFwiJGFjX3Ry
eVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisn
IGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0
IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC00NDYxLDE3ICs0ODI4
LDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdg
CiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1lY2hv
ICJjb25maWd1cmU6NDQ2NTogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQorZWNobyAiY29uZmln
dXJlOjQ4MzI6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNo
byAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBl
Y2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4k
YWNfZXh0IDw8RU9GCi0jbGluZSA0NDcwICJjb25maWd1cmUiCisjbGluZSA0ODM3ICJjb25maWd1
cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBhY190
cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0Igot
eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NDc1OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFj
X3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0ODQyOiBcIiRhY190cnlcIikg
MT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25m
dGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAi
JGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtNDUxMSwxMiArNDg3OCwxMiBA
QAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBCU0RnZXR0aW1lb2Zk
YXkiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ1MTU6IGNoZWNraW5nIGZvciBC
U0RnZXR0aW1lb2ZkYXkiID4mNQorZWNobyAiY29uZmlndXJlOjQ4ODI6IGNoZWNraW5nIGZvciBC
U0RnZXR0aW1lb2ZkYXkiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1
bmNfQlNEZ2V0dGltZW9mZGF5JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAi
KGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP
RgotI2xpbmUgNDUyMCAiY29uZmlndXJlIgorI2xpbmUgNDg4NyAiY29uZmlndXJlIgogI2luY2x1
ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9z
IGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdp
dGggY2hhciBCU0RnZXR0aW1lb2ZkYXkoKTsgYmVsb3cuICAqLwpAQCAtNDUzOSw3ICs0OTA2LDcg
QEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ1NDM6
IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj
b25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0OTEw
OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMg
Y29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJh
Y19jdl9mdW5jX0JTRGdldHRpbWVvZmRheT15ZXMiCiBlbHNlCkBAIC00NTYwLDEyICs0OTI3LDEy
IEBACiBlbHNlCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNgogZWNobyAkYWNfbiAiY2hlY2tpbmcg
Zm9yIGdldHRpbWVvZmRheSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDU2NDog
Y2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSIgPiY1CitlY2hvICJjb25maWd1cmU6NDkzMTogY2hl
Y2tpbmcgZm9yIGdldHRpbWVvZmRheSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sn
YWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXknK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRh
Y19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0
IDw8RU9GCi0jbGluZSA0NTY5ICJjb25maWd1cmUiCisjbGluZSA0OTM2ICJjb25maWd1cmUiCiAj
aW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBt
YWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxp
Y3Qgd2l0aCBjaGFyIGdldHRpbWVvZmRheSgpOyBiZWxvdy4gICovCkBAIC00NTg4LDcgKzQ5NTUs
NyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDU5
MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z
IGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ5
NTk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAt
cyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwg
ImFjX2N2X2Z1bmNfZ2V0dGltZW9mZGF5PXllcyIKIGVsc2UKQEAgLTQ2MTUsMTAgKzQ5ODIsMTAg
QEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZ2V0dGltZW9mZGF5IGRlY2xhcmF0aW9u
IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0NjE5OiBjaGVja2luZyBmb3IgZ2V0
dGltZW9mZGF5IGRlY2xhcmF0aW9uIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0OTg2OiBjaGVja2lu
ZyBmb3IgZ2V0dGltZW9mZGF5IGRlY2xhcmF0aW9uIiA+JjUKIAogY2F0ID4gY29uZnRlc3QuJGFj
X2V4dCA8PEVPRgotI2xpbmUgNDYyMiAiY29uZmlndXJlIgorI2xpbmUgNDk4OSAiY29uZmlndXJl
IgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KIEVPRgpAQCAt
NDYzOSw3ICs1MDA2LDcgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc2luIGluIC1s
bSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDY0MzogY2hlY2tpbmcgZm9yIHNp
biBpbiAtbG0iID4mNQorZWNobyAiY29uZmlndXJlOjUwMTA6IGNoZWNraW5nIGZvciBzaW4gaW4g
LWxtIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gbSdfJ3NpbiB8IHNlZCAneSUuLystJV9fcF8lJ2AK
IGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0n
YFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAt
NDY0Nyw3ICs1MDE0LDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sbSAgJExJ
QlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0NjUxICJjb25maWd1cmUi
CisjbGluZSA1MDE4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJy
aWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAv
KiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2Yg
YSBnY2MyCkBAIC00NjU4LDcgKzUwMjUsNyBAQAogc2luKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgot
aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NjYyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFs
ICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4K
K2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTAyOTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZh
bCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVu
CiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIK
IGVsc2UKQEAgLTQ2ODAsNyArNTA0Nyw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBm
b3IgbWFpbiBpbiAtbG1pbmd3ZXgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ2
ODQ6IGNoZWNraW5nIGZvciBtYWluIGluIC1sbWluZ3dleCIgPiY1CitlY2hvICJjb25maWd1cmU6
NTA1MTogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxtaW5nd2V4IiA+JjUKIGFjX2xpYl92YXI9YGVj
aG8gbWluZ3dleCdfJ21haW4gfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwi
YGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4K
ICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTQ2ODgsMTQgKzUwNTUsMTQg
QEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sbWluZ3dleCAgJExJQlMiCiBjYXQg
PiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0NjkyICJjb25maWd1cmUiCisjbGluZSA1
MDU5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiBt
YWluKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0Njk5
OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMg
Y29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTA2
NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z
IGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAi
YWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTQ3MjMsMTcgKzUwOTAsMTcgQEAK
IGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8g
JGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZp
Z3VyZTo0NzI3OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6NTA5
NDogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7
J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFj
X24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg
PDxFT0YKLSNsaW5lIDQ3MzIgImNvbmZpZ3VyZSIKKyNsaW5lIDUwOTkgImNvbmZpZ3VyZSIKICNp
bmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFj
X2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFs
IGVjaG8gY29uZmlndXJlOjQ3Mzc6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAy
PiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjUxMDQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAo
ZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91
dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJy
IjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC00NzcxLDE3ICs1MTM4LDE3IEBACiBkbwog
YWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19u
ICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6
NDc3NTogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQorZWNobyAiY29uZmlndXJlOjUxNDI6IGNo
ZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19j
dl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIo
Y2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G
Ci0jbGluZSA0NzgwICJjb25maWd1cmUiCisjbGluZSA1MTQ3ICJjb25maWd1cmUiCiAjaW5jbHVk
ZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBhY190cnk9IiRhY19jcHAg
Y29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hv
IGNvbmZpZ3VyZTo0Nzg1OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsg
fQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MTUyOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwg
JGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBn
cmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRo
ZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtNDgxOCwxNyArNTE4NSwxNyBAQAogZG8KIGFjX3Nh
ZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hl
Y2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ4MjI6
IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1MTg5OiBjaGVja2lu
ZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVh
ZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hl
ZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xp
bmUgNDgyNyAiY29uZmlndXJlIgorI2xpbmUgNTE5NCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNv
bmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0
ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25m
aWd1cmU6NDgzMjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sg
KGV2YWwgZWNobyBjb25maWd1cmU6NTE5OTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190
cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAt
diAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAg
IHJtIC1yZiBjb25mdGVzdCoKQEAgLTQ4NjgsMTcgKzUyMzUsMTcgQEAKIGRvCiBhY19zYWZlPWBl
Y2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5n
IGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0ODcyOiBjaGVj
a2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6NTIzOTogY2hlY2tpbmcgZm9y
ICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8k
YWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRh
Y19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQ4
NzcgImNvbmZpZ3VyZSIKKyNsaW5lIDUyNDQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVm
cy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4k
YWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJl
OjQ4ODI6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFs
IGVjaG8gY29uZmlndXJlOjUyNDk6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAy
PiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5j
b25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAt
cmYgY29uZnRlc3QqCkBAIC00OTE1LDE3ICs1MjgyLDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAi
JGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Ig
JGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDkxOTogY2hlY2tpbmcg
Zm9yICRhY19oZHIiID4mNQorZWNobyAiY29uZmlndXJlOjUyODY6IGNoZWNraW5nIGZvciAkYWNf
aGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3Nh
ZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIg
MT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0OTI0ICJj
b25maWd1cmUiCisjbGluZSA1MjkxICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIK
ICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4
dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0OTI5
OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hv
IGNvbmZpZ3VyZTo1Mjk2OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsg
fQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRl
c3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNv
bmZ0ZXN0KgpAQCAtNDk2MiwxNyArNTMyOSwxNyBAQAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19o
ZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19o
ZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ5NjY6IGNoZWNraW5nIGZvciAk
YWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1MzMzOiBjaGVja2luZyBmb3IgJGFjX2hkciIg
PiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytz
ZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYK
IGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDk3MSAiY29uZmln
dXJlIgorI2xpbmUgNTMzOCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5j
bHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9k
ZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6NDk3NjogXCIk
YWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25m
aWd1cmU6NTM0MzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFj
X2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7
YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVz
dCoKQEAgLTUwMDgsMTIgKzUzNzUsMTIgQEAKICMgdGVzdCBtYWtlcyBzZW5zZS4gIENNCiAjCiBl
Y2hvICRhY19uICJjaGVja2luZyBmb3IgaXNub3JtYWwiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAi
Y29uZmlndXJlOjUwMTI6IGNoZWNraW5nIGZvciBpc25vcm1hbCIgPiY1CitlY2hvICJjb25maWd1
cmU6NTM3OTogY2hlY2tpbmcgZm9yIGlzbm9ybWFsIiA+JjUKIGlmIHRlc3QgIiRjcm9zc19jb21w
aWxpbmciID0geWVzOyB0aGVuCiAgIEhBVkVfSVNOT1JNQUw9MCBlY2hvICIkYWNfdCIibm8iIDE+
JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTAxNyAiY29u
ZmlndXJlIgorI2xpbmUgNTM4NCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAj
ZGVmaW5lIF9HTlVfU09VUkNFCiAJICAgICNpbmNsdWRlIDxtYXRoLmg+CkBAIC01MDIyLDcgKzUz
ODksNyBAQAogCQlyZXR1cm4gaXNub3JtYWwoZikgfHwgIWlzbm9ybWFsKGYpID8gMCA6IDE7CiAJ
CX0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MDI2OiBcIiRhY19saW5rXCIpIDE+
JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4
dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29u
ZmlndXJlOjUzOTM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0g
JiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4v
ZGV2L251bGwKIHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVf
SVNOT1JNQUwgMQpAQCAtNTAzMywxMiArNTQwMCwxMiBAQAogICBjYXQgY29uZnRlc3QuJGFjX2V4
dCA+JjUKICAgcm0gLWZyIGNvbmZ0ZXN0KgogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZnBj
bGFzcyBpbiBpZWVlZnAuaCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTAzNzog
Y2hlY2tpbmcgZm9yIGZwY2xhc3MgaW4gaWVlZWZwLmgiID4mNQorZWNobyAiY29uZmlndXJlOjU0
MDQ6IGNoZWNraW5nIGZvciBmcGNsYXNzIGluIGllZWVmcC5oIiA+JjUKIAkJaWYgdGVzdCAiJGNy
b3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgSEFWRV9JRUVFRlA9MCBlY2hvICIkYWNfdCIi
bm8iIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTA0
MiAiY29uZmlndXJlIgorI2xpbmUgNTQwOSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZz
LmgiCiAjaW5jbHVkZSA8aWVlZWZwLmg+CiAJCQkgICAgaW50IG1haW4oKSB7CkBAIC01MDQ2LDcg
KzU0MTMsNyBAQAogCQkJCXJldHVybiBmcGNsYXNzKGYpPj1GUF9OWkVSTyB8fCBmcGNsYXNzKGYp
PEZQX05aRVJPID8gMCA6IDE7CiAJCQkJfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjUwNTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVz
dCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251
bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTQxNzogXCIkYWNfbGlua1wiKSAxPiY1OyAo
ZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYm
ICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBjYXQgPj4gY29uZmRlZnMu
aCA8PFxFT0YKICNkZWZpbmUgSEFWRV9JRUVFRlAgMQpAQCAtNTA2OCwxMiArNTQzNSwxMiBAQAog
CiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBpc2Zpbml0ZSIiLi4uICRhY19jIiAxPiY2Ci1l
Y2hvICJjb25maWd1cmU6NTA3MjogY2hlY2tpbmcgZm9yIGlzZmluaXRlIiA+JjUKK2VjaG8gImNv
bmZpZ3VyZTo1NDM5OiBjaGVja2luZyBmb3IgaXNmaW5pdGUiID4mNQogaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgSEFWRV9JU0ZJTklURT0wIGVjaG8gIiRhY190IiJu
byIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1MDc3
ICJjb25maWd1cmUiCisjbGluZSA1NDQ0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMu
aCIKICNkZWZpbmUgX0dOVV9TT1VSQ0UKIAkgICAgI2luY2x1ZGUgPG1hdGguaD4KQEAgLTUwODIs
NyArNTQ0OSw3IEBACiAJCXJldHVybiBpc2Zpbml0ZShmKSB8fCAhaXNmaW5pdGUoZikgPyAwIDog
MTsKIAkJfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUwODY6IFwiJGFjX2xpbmtc
IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf
ZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNo
byBjb25maWd1cmU6NTQ1MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4m
NTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0
KSAyPi9kZXYvbnVsbAogdGhlbgogICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUg
SEFWRV9JU0ZJTklURSAxCkBAIC01MDkzLDEyICs1NDYwLDEyIEBACiAgIGNhdCBjb25mdGVzdC4k
YWNfZXh0ID4mNQogICBybSAtZnIgY29uZnRlc3QqCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZv
ciBmaW5pdGUoKSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTA5NzogY2hlY2tp
bmcgZm9yIGZpbml0ZSgpIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NDY0OiBjaGVja2luZyBmb3Ig
ZmluaXRlKCkiID4mNQogCQlpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgog
ICBIQVZFX0ZJTklURT0wIGVjaG8gIiRhY190IiJubyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25m
dGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1MTAyICJjb25maWd1cmUiCisjbGluZSA1NDY5ICJj
b25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAJICAg
ICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8aWVlZWZwLmg+CkBAIC01MTA3LDcgKzU0NzQsNyBA
QAogCQkJCXJldHVybiBmaW5pdGUoZikgfHwgIWZpbml0ZShmKSA/IDAgOiAxOwogCQkJCX0KIEVP
RgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MTExOiBcIiRhY19saW5rXCIpIDE+JjU7IChl
dmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYg
KC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjU0Nzg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVz
dCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251
bGwKIHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfRklOSVRF
IDEKQEAgLTUxNDgsMTUgKzU1MTUsMTUgQEAKICMJICAgaWYgLWxzb2NrZXQgZG9lc24ndCB3b3Jr
IGJ5IGl0c2VsZi4KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHNvY2tl
dHMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjUxNTI6IGNoZWNraW5nIGZvciBz
b2NrZXRzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NTE5OiBjaGVja2luZyBmb3Igc29ja2V0cyIg
PiY1CiB0Y2xfY2hlY2tCb3RoPTAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBjb25uZWN0IiIu
Li4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1MTU1OiBjaGVja2luZyBmb3IgY29ubmVj
dCIgPiY1CitlY2hvICJjb25maWd1cmU6NTUyMjogY2hlY2tpbmcgZm9yIGNvbm5lY3QiID4mNQog
aWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfY29ubmVjdCcrc2V0fSdgXCIg
PSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAg
IGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDUxNjAgImNvbmZpZ3VyZSIKKyNs
aW5lIDU1MjcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhl
YWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVz
LAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY29ubmVjdCgpOyBiZWxvdy4gICov
CkBAIC01MTc5LDcgKzU1NDYsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwg
ZWNobyBjb25maWd1cmU6NTE4MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykg
Mj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFs
IGVjaG8gY29uZmlndXJlOjU1NTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmsp
IDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYg
Y29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfY29ubmVjdD15ZXMiCiBlbHNlCkBAIC01MjAx
LDcgKzU1NjgsNyBAQAogCiBpZiB0ZXN0ICIkdGNsX2NoZWNrU29ja2V0IiA9IDE7IHRoZW4KICAg
ICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgbWFpbiBpbiAtbHNvY2tldCIiLi4uICRhY19jIiAx
PiY2Ci1lY2hvICJjb25maWd1cmU6NTIwNTogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxzb2NrZXQi
ID4mNQorZWNobyAiY29uZmlndXJlOjU1NzI6IGNoZWNraW5nIGZvciBtYWluIGluIC1sc29ja2V0
IiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gc29ja2V0J18nbWFpbiB8IHNlZCAneSUuLystJV9fcF8l
J2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3Nl
dH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpA
QCAtNTIwOSwxNCArNTU3NiwxNCBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxz
b2NrZXQgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTIxMyAi
Y29uZmlndXJlIgorI2xpbmUgNTU4MCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgi
CiAKIGludCBtYWluKCkgewogbWFpbigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwg
ZWNobyBjb25maWd1cmU6NTIyMDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykg
Mj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFs
IGVjaG8gY29uZmlndXJlOjU1ODc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmsp
IDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYg
Y29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC01
MjQ0LDEyICs1NjExLDEyIEBACiAgICAgdGtfb2xkTGlicz0kVExJQlMKICAgICBUTElCUz0iJFRM
SUJTIC1sc29ja2V0IC1sbnNsIgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBhY2NlcHQi
Ii4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjUyNDg6IGNoZWNraW5nIGZvciBhY2Nl
cHQiID4mNQorZWNobyAiY29uZmlndXJlOjU2MTU6IGNoZWNraW5nIGZvciBhY2NlcHQiID4mNQog
aWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfYWNjZXB0JytzZXR9J2BcIiA9
IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAg
Y2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTI1MyAiY29uZmlndXJlIgorI2xp
bmUgNTYyMCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVh
ZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMs
CiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBhY2NlcHQoKTsgYmVsb3cuICAqLwpA
QCAtNTI3Miw3ICs1NjM5LDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVj
aG8gY29uZmlndXJlOjUyNzY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+
JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZTo1NjQzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy
PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNv
bmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jX2FjY2VwdD15ZXMiCiBlbHNlCkBAIC01Mjk0LDEy
ICs1NjYxLDEyIEBACiAKIGZpCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFt
ZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTI5ODogY2hlY2tpbmcgZm9yIGdl
dGhvc3RieW5hbWUiID4mNQorZWNobyAiY29uZmlndXJlOjU2NjU6IGNoZWNraW5nIGZvciBnZXRo
b3N0YnluYW1lIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX2dl
dGhvc3RieW5hbWUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVk
KSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGlu
ZSA1MzAzICJjb25maWd1cmUiCisjbGluZSA1NjcwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29u
ZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhv
cGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFy
IGdldGhvc3RieW5hbWUoKTsgYmVsb3cuICAqLwpAQCAtNTMyMiw3ICs1Njg5LDcgQEAKIAogOyBy
ZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUzMjY6IFwiJGFjX2xp
bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7
YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NjkzOiBcIiRhY19s
aW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qk
e2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5j
X2dldGhvc3RieW5hbWU9eWVzIgogZWxzZQpAQCAtNTM0MCw3ICs1NzA3LDcgQEAKIGVsc2UKICAg
ZWNobyAiJGFjX3QiIm5vIiAxPiY2CiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgbWFpbiBpbiAt
bG5zbCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTM0NDogY2hlY2tpbmcgZm9y
IG1haW4gaW4gLWxuc2wiID4mNQorZWNobyAiY29uZmlndXJlOjU3MTE6IGNoZWNraW5nIGZvciBt
YWluIGluIC1sbnNsIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gbnNsJ18nbWFpbiB8IHNlZCAneSUu
LystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xp
Yl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNf
YyIgMT4mNgpAQCAtNTM0OCwxNCArNTcxNSwxNCBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgog
TElCUz0iLWxuc2wgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUg
NTM1MiAiY29uZmlndXJlIgorI2xpbmUgNTcxOSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZk
ZWZzLmgiCiAKIGludCBtYWluKCkgewogbWFpbigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsg
KGV2YWwgZWNobyBjb25maWd1cmU6NTM1OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNf
bGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjU3MjY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBy
bSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNl
CkBAIC01Mzg1LDE3ICs1NzUyLDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBz
ZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4u
ICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTM4OTogY2hlY2tpbmcgZm9yICRhY19oZHIi
ID4mNQorZWNobyAiY29uZmlndXJlOjU3NTY6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlm
IGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwi
ID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQog
ICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1Mzk0ICJjb25maWd1cmUiCisj
bGluZSA1NzYxICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwk
YWNfaGRyPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxs
IDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1Mzk5OiBcIiRhY190cnlc
IikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1
NzY2OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBn
cmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9
XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAt
NTQxNiw3ICs1NzgzLDcgQEAKICNkZWZpbmUgJGFjX3RyX2hkciAxCiBFT0YKICBlY2hvICRhY19u
ICJjaGVja2luZyBmb3IgbWFpbiBpbiAtbHJlYWRsaW5lIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8g
ImNvbmZpZ3VyZTo1NDIwOiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbHJlYWRsaW5lIiA+JjUKK2Vj
aG8gImNvbmZpZ3VyZTo1Nzg3OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbHJlYWRsaW5lIiA+JjUK
IGFjX2xpYl92YXI9YGVjaG8gcmVhZGxpbmUnXydtYWluIHwgc2VkICd5JS4vKy0lX19wXyUnYAog
aWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdg
XCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC01
NDI0LDE0ICs1NzkxLDE0IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbHJlYWRs
aW5lIC1sbmN1cnNlcyAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5l
IDU0MjggImNvbmZpZ3VyZSIKKyNsaW5lIDU3OTUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25m
ZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIG1haW4oKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7
IChldmFsIGVjaG8gY29uZmlndXJlOjU0MzU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj
X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYg
eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1ODAyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRh
Y19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAg
cm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxz
ZQpAQCAtNTQ2OCw3ICs1ODM1LDcgQEAKIAogIyBUaGVzZSB0ZXN0cyBkaXNjb3ZlciBkaWZmZXJl
bmNlcyBiZXR3ZWVuIHJlYWRsaW5lIDQuMSBhbmQgNC4zCiAJZWNobyAkYWNfbiAiY2hlY2tpbmcg
Zm9yIHJsX2NvbXBsZXRpb25fbWF0Y2hlcyBpbiAtbHJlYWRsaW5lIiIuLi4gJGFjX2MiIDE+JjYK
LWVjaG8gImNvbmZpZ3VyZTo1NDcyOiBjaGVja2luZyBmb3IgcmxfY29tcGxldGlvbl9tYXRjaGVz
IGluIC1scmVhZGxpbmUiID4mNQorZWNobyAiY29uZmlndXJlOjU4Mzk6IGNoZWNraW5nIGZvciBy
bF9jb21wbGV0aW9uX21hdGNoZXMgaW4gLWxyZWFkbGluZSIgPiY1CiBhY19saWJfdmFyPWBlY2hv
IHJlYWRsaW5lJ18ncmxfY29tcGxldGlvbl9tYXRjaGVzIHwgc2VkICd5JS4vKy0lX19wXyUnYAog
aWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdg
XCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC01
NDc2LDcgKzU4NDMsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxyZWFkbGlu
ZSAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1NDgwICJjb25m
aWd1cmUiCisjbGluZSA1ODQ3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8q
IE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4g
ICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5
cGUgb2YgYSBnY2MyCkBAIC01NDg3LDcgKzU4NTQsNyBAQAogcmxfY29tcGxldGlvbl9tYXRjaGVz
KCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NDkxOiBc
IiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29u
ZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTg1ODog
XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNv
bmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNf
Y3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTU1MjAsOSArNTg4Nyw5IEBACiAKIAog
ZWNobyAkYWNfbiAiY2hlY2tpbmcgRm9yIG5ldHdvcmsgY29kZSBmb3IgbnNvY2tldC5jIiIuLi4g
JGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1NTI0OiBjaGVja2luZyBGb3IgbmV0d29yayBj
b2RlIGZvciBuc29ja2V0LmMiID4mNQorZWNobyAiY29uZmlndXJlOjU4OTE6IGNoZWNraW5nIEZv
ciBuZXR3b3JrIGNvZGUgZm9yIG5zb2NrZXQuYyIgPiY1CiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0
IDw8RU9GCi0jbGluZSA1NTI2ICJjb25maWd1cmUiCisjbGluZSA1ODkzICJjb25maWd1cmUiCiAj
aW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CkBAIC01NTQ5LDcg
KzU5MTYsNyBAQAogCQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmln
dXJlOjU1NTM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYg
dGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZp
Z3VyZTo1OTIwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYm
IHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0Kgog
ICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9OU09DS0VUIDEKQEAgLTU1
NjYsOSArNTkzMyw5IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgY2hlY2sgZm9yIGxpc3Rl
biB1c2luZyBmY250bCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTU3MDogY2hl
Y2tpbmcgY2hlY2sgZm9yIGxpc3RlbiB1c2luZyBmY250bCIgPiY1CitlY2hvICJjb25maWd1cmU6
NTkzNzogY2hlY2tpbmcgY2hlY2sgZm9yIGxpc3RlbiB1c2luZyBmY250bCIgPiY1CiBjYXQgPiBj
b25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1NTcyICJjb25maWd1cmUiCisjbGluZSA1OTM5
ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgog
I2luY2x1ZGUgPGZjbnRsLmg+CkBAIC01NTgxLDcgKzU5NDgsNyBAQAogCiA7IHJldHVybiAwOyB9
CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTU4NTogXCIkYWNfY29tcGlsZVwiKSAx
PiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNv
bmZpZ3VyZTo1OTUyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAy
PiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgY2F0ID4+IGNvbmZkZWZzLmggPDxc
RU9GCiAjZGVmaW5lIExJU1RFTl9VU0VfRkNOVEwgMQpAQCAtNTYwMCwxMiArNTk2NywxMiBAQAog
CiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBwcm9maWwiIi4uLiAkYWNfYyIgMT4mNgotZWNo
byAiY29uZmlndXJlOjU2MDQ6IGNoZWNraW5nIGZvciBwcm9maWwiID4mNQorZWNobyAiY29uZmln
dXJlOjU5NzE6IGNoZWNraW5nIGZvciBwcm9maWwiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hv
ICckJyd7J2FjX2N2X2Z1bmNfcHJvZmlsJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAk
YWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4
dCA8PEVPRgotI2xpbmUgNTYwOSAiY29uZmlndXJlIgorI2xpbmUgNTk3NiAiY29uZmlndXJlIgog
I2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIg
bWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZs
aWN0IHdpdGggY2hhciBwcm9maWwoKTsgYmVsb3cuICAqLwpAQCAtNTYyOCw3ICs1OTk1LDcgQEAK
IAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU2MzI6IFwi
JGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25m
dGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1OTk5OiBc
IiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29u
ZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19j
dl9mdW5jX3Byb2ZpbD15ZXMiCiBlbHNlCkBAIC01NjUzLDEyICs2MDIwLDEyIEBACiAKIAogZWNo
byAkYWNfbiAiY2hlY2tpbmcgZm9yIHNldGVudiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25m
aWd1cmU6NTY1NzogY2hlY2tpbmcgZm9yIHNldGVudiIgPiY1CitlY2hvICJjb25maWd1cmU6NjAy
NDogY2hlY2tpbmcgZm9yIHNldGVudiIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sn
YWNfY3ZfZnVuY19zZXRlbnYnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIo
Y2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G
Ci0jbGluZSA1NjYyICJjb25maWd1cmUiCisjbGluZSA2MDI5ICJjb25maWd1cmUiCiAjaW5jbHVk
ZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3Mg
YW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0
aCBjaGFyIHNldGVudigpOyBiZWxvdy4gICovCkBAIC01NjgxLDcgKzYwNDgsNyBAQAogCiA7IHJl
dHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTY4NTogXCIkYWNfbGlu
a1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHth
Y19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjYwNTI6IFwiJGFjX2xp
bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7
YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNf
c2V0ZW52PXllcyIKIGVsc2UKQEAgLTU3MDcsMTIgKzYwNzQsMTIgQEAKIAogaWYgdGVzdCAiJG5v
X3NldGVudiIgPSAiMSIgOyB0aGVuCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcHV0ZW52IiIu
Li4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1NzExOiBjaGVja2luZyBmb3IgcHV0ZW52
IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2MDc4OiBjaGVja2luZyBmb3IgcHV0ZW52IiA+JjUKIGlm
IGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX3B1dGVudicrc2V0fSdgXCIgPSBz
ZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNh
dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU3MTYgImNvbmZpZ3VyZSIKKyNsaW5l
IDYwODMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRl
ciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAog
ICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgcHV0ZW52KCk7IGJlbG93LiAgKi8KQEAg
LTU3MzUsNyArNjEwMiw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hv
IGNvbmZpZ3VyZTo1NzM5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1
OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNo
byBjb25maWd1cmU6NjEwNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4m
NTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25m
dGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY19wdXRlbnY9eWVzIgogZWxzZQpAQCAtNTc2MSwxMiAr
NjEyOCwxMiBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIF9jbGVhbnVwIiIuLi4g
JGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1NzY1OiBjaGVja2luZyBmb3IgX2NsZWFudXAi
ID4mNQorZWNobyAiY29uZmlndXJlOjYxMzI6IGNoZWNraW5nIGZvciBfY2xlYW51cCIgPiY1CiBp
ZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY19fY2xlYW51cCcrc2V0fSdgXCIg
PSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAg
IGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU3NzAgImNvbmZpZ3VyZSIKKyNs
aW5lIDYxMzcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhl
YWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVz
LAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX2NsZWFudXAoKTsgYmVsb3cuICAq
LwpAQCAtNTc4OSw3ICs2MTU2LDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFs
IGVjaG8gY29uZmlndXJlOjU3OTM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmsp
IDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZh
bCBlY2hvIGNvbmZpZ3VyZTo2MTYwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5r
KSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJm
IGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jX19jbGVhbnVwPXllcyIKIGVsc2UKQEAgLTU4
MTUsNyArNjE4Miw3IEBACiBnY2xfb2s9bm8KIAogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP
RgotI2xpbmUgNTgxOSAiY29uZmlndXJlIgorI2xpbmUgNjE4NiAiY29uZmlndXJlIgogI2luY2x1
ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIEVPRgpAQCAtNTg0Myw3ICs2MjEw
LDcgQEAKIAogIyBpZiB0ZXN0ICJ4JGVuYWJsZV9tYWNoaW5lIiA9ICJ4IiA7IHRoZW4KIGVjaG8g
JGFjX24gImNoZWNraW5nIEZJT05CSU8gdnMuIE9fTk9OQkxPQ0sgZm9yIG5vbmJsb2NraW5nIEkv
TyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTg0NzogY2hlY2tpbmcgRklPTkJJ
TyB2cy4gT19OT05CTE9DSyBmb3Igbm9uYmxvY2tpbmcgSS9PIiA+JjUKK2VjaG8gImNvbmZpZ3Vy
ZTo2MjE0OiBjaGVja2luZyBGSU9OQklPIHZzLiBPX05PTkJMT0NLIGZvciBub25ibG9ja2luZyBJ
L08iID4mNQogCiBjYXNlICRzeXN0ZW0gaW4KICAgICAgICBPU0YqKQpAQCAtNTg3NCw5ICs2MjQx
LDkgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBjaGVjayBmb3IgU1ZfT05TVEFDSyIiLi4u
ICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTg3ODogY2hlY2tpbmcgY2hlY2sgZm9yIFNW
X09OU1RBQ0siID4mNQorZWNobyAiY29uZmlndXJlOjYyNDU6IGNoZWNraW5nIGNoZWNrIGZvciBT
Vl9PTlNUQUNLIiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU4ODAg
ImNvbmZpZ3VyZSIKKyNsaW5lIDYyNDcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5o
IgogI2luY2x1ZGUgPHNpZ25hbC5oPgogaW50IGpvZT1TVl9PTlNUQUNLOwpAQCAtNTg4NSw3ICs2
MjUyLDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjU4ODk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07
IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjI1NjogXCIkYWNfY29tcGlsZVwiKSAx
PiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3Qq
CiAgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX1NWX09OU1RBQ0sgMQpA
QCAtNTkwMiw5ICs2MjY5LDkgQEAKIHJtIC1mIGNvbmZ0ZXN0KgogCiBlY2hvICRhY19uICJjaGVj
a2luZyBjaGVjayBmb3IgU0lHU1lTIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1
OTA2OiBjaGVja2luZyBjaGVjayBmb3IgU0lHU1lTIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2Mjcz
OiBjaGVja2luZyBjaGVjayBmb3IgU0lHU1lTIiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg
PDxFT0YKLSNsaW5lIDU5MDggImNvbmZpZ3VyZSIKKyNsaW5lIDYyNzUgImNvbmZpZ3VyZSIKICNp
bmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHNpZ25hbC5oPgogaW50IGpvZT1TSUdTWVM7
CkBAIC01OTEzLDcgKzYyODAsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwg
ZWNobyBjb25maWd1cmU6NTkxNzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29t
cGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2Mjg0OiBcIiRh
Y19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJt
IC1yZiBjb25mdGVzdCoKICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVf
U0lHU1lTIDEKQEAgLTU5MzEsOSArNjI5OCw5IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcg
Y2hlY2sgZm9yIFNJR0VNVCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTkzNTog
Y2hlY2tpbmcgY2hlY2sgZm9yIFNJR0VNVCIgPiY1CitlY2hvICJjb25maWd1cmU6NjMwMjogY2hl
Y2tpbmcgY2hlY2sgZm9yIFNJR0VNVCIgPiY1CiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G
Ci0jbGluZSA1OTM3ICJjb25maWd1cmUiCisjbGluZSA2MzA0ICJjb25maWd1cmUiCiAjaW5jbHVk
ZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzaWduYWwuaD4KIGludCBqb2U9U0lHRU1UOwpAQCAt
NTk0Miw3ICs2MzA5LDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjU5NDY6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUp
IDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjMxMzogXCIkYWNfY29t
cGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYg
Y29uZnRlc3QqCiAgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX1NJR0VN
VCAxCkBAIC01OTY2LDE3ICs2MzMzLDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIg
fCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIi
Li4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTk3MDogY2hlY2tpbmcgZm9yICRhY19o
ZHIiID4mNQorZWNobyAiY29uZmlndXJlOjYzMzc6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUK
IGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0n
YFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxz
ZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1OTc1ICJjb25maWd1cmUi
CisjbGluZSA2MzQyICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRl
IDwkYWNfaGRyPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9u
dWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1OTgwOiBcIiRhY190
cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3Vy
ZTo2MzQ3OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJy
PWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19l
eHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpA
QCAtNjAwNiwxNyArNjM3MywxNyBAQAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2Vk
ICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAk
YWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjYwMTA6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+
JjUKK2VjaG8gImNvbmZpZ3VyZTo2Mzc3OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBl
dmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9
IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAg
Y2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjAxNSAiY29uZmlndXJlIgorI2xp
bmUgNjM4MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFj
X2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAy
PmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6NjAyMDogXCIkYWNfdHJ5XCIp
IDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6NjM4
NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3Jl
cCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwk
ImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTYw
NDMsOSArNjQxMCw5IEBACiBkb25lCiAKIAllY2hvICRhY19uICJjaGVja2luZyBmb3Igc2lnY29u
dGV4dC4uLiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjA0NzogY2hlY2tpbmcg
Zm9yIHNpZ2NvbnRleHQuLi4iID4mNQorZWNobyAiY29uZmlndXJlOjY0MTQ6IGNoZWNraW5nIGZv
ciBzaWdjb250ZXh0Li4uIiA+JjUKICAgICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP
RgotI2xpbmUgNjA0OSAiY29uZmlndXJlIgorI2xpbmUgNjQxNiAiY29uZmlndXJlIgogI2luY2x1
ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAgICAgICAgCkBAIC02MDU1LDcg
KzY0MjIsNyBAQAogICAgICAgIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8g
Y29uZmlndXJlOjYwNTk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUp
IDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjQyNjogXCIkYWNfY29t
cGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYg
Y29uZnRlc3QqCiAgIAogICAgICAgICBzaWdjb250ZXh0X3dvcmtzPTE7CkBAIC02MDc2LDkgKzY0
NDMsOSBAQAogcm0gLWYgY29uZnRlc3QqCiAgICAgICAgaWYgdGVzdCAiJHNpZ2NvbnRleHRfd29y
a3MiID0gMCA7IHRoZW4KICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc2lnY29udGV4
dC4uLiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjA4MDogY2hlY2tpbmcgZm9y
IHNpZ2NvbnRleHQuLi4iID4mNQorZWNobyAiY29uZmlndXJlOjY0NDc6IGNoZWNraW5nIGZvciBz
aWdjb250ZXh0Li4uIiA+JjUKICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0j
bGluZSA2MDgyICJjb25maWd1cmUiCisjbGluZSA2NDQ5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAi
Y29uZmRlZnMuaCIKICNpbmNsdWRlIDxzaWduYWwuaD4KICAgICAgICAgICAgICAjaWZkZWYgSEFW
RV9BU01fU0lHQ09OVEVYVF9IICAgICAKQEAgLTYwOTQsNyArNjQ2MSw3IEBACiAgICAgICAgIAog
OyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjYwOTg6IFwiJGFj
X2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsg
KGV2YWwgZWNobyBjb25maWd1cmU6NjQ2NTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAk
YWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIAogICAgICAg
ICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKQEAgLTYxMzYsNyArNjUwMyw3IEBACiAjIEV4dHJh
Y3QgdGhlIGZpcnN0IHdvcmQgb2YgImVtYWNzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1l
IHdpdGggYXJncy4KIHNldCBkdW1teSBlbWFjczsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hl
Y2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2MTQw
OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjY1MDc6IGNoZWNr
aW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zf
cGF0aF9FTUFDUycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQp
ICRhY19jIiAxPiY2CiBlbHNlCkBAIC02MTg0LDcgKzY1NTEsNyBAQAogRU9GCiAKIGVjaG8gJGFj
X24gImNoZWNraW5nIGVtYWNzIHNpdGUgbGlzcCBkaXJlY3RvcnkiIi4uLiAkYWNfYyIgMT4mNgot
ZWNobyAiY29uZmlndXJlOjYxODg6IGNoZWNraW5nIGVtYWNzIHNpdGUgbGlzcCBkaXJlY3Rvcnki
ID4mNQorZWNobyAiY29uZmlndXJlOjY1NTU6IGNoZWNraW5nIGVtYWNzIHNpdGUgbGlzcCBkaXJl
Y3RvcnkiID4mNQogaWYgWyAiJEVNQUNTX1NJVEVfTElTUCIgPSAidW5rbm93biIgXSA7IHRoZW4K
IAlpZiBbICIkRU1BQ1MiICE9ICIiIF0gOyB0aGVuCiAJCUVNQUNTX1NJVEVfTElTUD1gJEVNQUNT
IC1xIC1iYXRjaCAtLW5vLXNpdGUtZmlsZSAtbCBjb25mdGVzdC5lbCAyPiYxIHwgc2VkIC1lIC9M
b2FkaW5nL2QgfCBzZWQgLWUgL2xvYWQvZCBgCkBAIC02MjA4LDcgKzY1NzUsNyBAQAogRU9GCiAK
IGVjaG8gJGFjX24gImNoZWNraW5nIGVtYWNzIGRlZmF1bHQuZWwiIi4uLiAkYWNfYyIgMT4mNgot
ZWNobyAiY29uZmlndXJlOjYyMTI6IGNoZWNraW5nIGVtYWNzIGRlZmF1bHQuZWwiID4mNQorZWNo
byAiY29uZmlndXJlOjY1Nzk6IGNoZWNraW5nIGVtYWNzIGRlZmF1bHQuZWwiID4mNQogaWYgWyAi
JEVNQUNTIiAhPSAiIiBdIDsgdGhlbgogCUVNQUNTX0RFRkFVTFRfRUw9YCRFTUFDUyAtcSAtYmF0
Y2ggLS1uby1zaXRlLWZpbGUgLWwgY29uZnRlc3QuZWwgMj4mMSB8IHNlZCAtZSAvTG9hZGluZy9k
IHwgc2VkIC1lIC9sb2FkL2QgYAogZWxzZQpAQCAtNjIzNyw3ICs2NjA0LDcgQEAKIEVPRgogCiBl
Y2hvICRhY19uICJjaGVja2luZyBlbWFjcyBpbmZvL2RpciIiLi4uICRhY19jIiAxPiY2Ci1lY2hv
ICJjb25maWd1cmU6NjI0MTogY2hlY2tpbmcgZW1hY3MgaW5mby9kaXIiID4mNQorZWNobyAiY29u
ZmlndXJlOjY2MDg6IGNoZWNraW5nIGVtYWNzIGluZm8vZGlyIiA+JjUKIGlmIHRlc3QgIiR1c2Ui
ID0gIm1pbmd3IiA7IHRoZW4KICAgICBJTkZPX0RJUj1cJFwocHJlZml4XCkvbGliL2djbC0kVkVS
U0lPTi9pbmZvLwogZWxzZQpAQCAtNjI1NSw3ICs2NjIyLDcgQEAKIAogCiBlY2hvICRhY19uICJj
aGVja2luZyBmb3IgdGNsL3RrIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2MjU5
OiBjaGVja2luZyBmb3IgdGNsL3RrIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NjI2OiBjaGVja2lu
ZyBmb3IgdGNsL3RrIiA+JjUKIAogCiBpZiB0ZXN0IC1kICIke1RDTF9DT05GSUdfUFJFRklYfSIg
IDsgdGhlbiB0cnVlIDsgZWxzZQpAQCAtNjI3OCw3ICs2NjQ1LDcgQEAKICMgRXh0cmFjdCB0aGUg
Zmlyc3Qgd29yZCBvZiAidGNsc2giLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBh
cmdzLgogc2V0IGR1bW15IHRjbHNoOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBm
b3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjYyODI6IGNoZWNr
aW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6NjY0OTogY2hlY2tpbmcgZm9y
ICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX1RD
TFNIJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2Mi
IDE+JjYKIGVsc2UKQEAgLTYzNzgsNyArNjc0NSw3IEBACiAgIGZpCiBmaQogZWNobyAkYWNfbiAi
Y2hlY2tpbmcgZm9yIG1haW4gaW4gLWxsaWVlZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25m
aWd1cmU6NjM4MjogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxsaWVlZSIgPiY1CitlY2hvICJjb25m
aWd1cmU6Njc0OTogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxsaWVlZSIgPiY1CiBhY19saWJfdmFy
PWBlY2hvIGxpZWVlJ18nbWFpbiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3Qg
XCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhl
bgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNjM4NiwxNCArNjc1Mywx
NCBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxsaWVlZSAgJExJQlMiCiBjYXQg
PiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2MzkwICJjb25maWd1cmUiCisjbGluZSA2
NzU3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiBt
YWluKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2Mzk3
OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMg
Y29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njc2
NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z
IGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAi
YWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTY0NTgsMTYgKzY4MjUsMTYgQEAK
ICMgdGhlIHRpbWUgaGFuZGxpbmcgZm9yIHVuaXh0aW1lLCBhZGQgdGltZXpvbmUKIAogZWNobyAk
YWNfbiAiY2hlY2tpbmcgYWxsb2NhIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2
NDYyOiBjaGVja2luZyBhbGxvY2EiID4mNQorZWNobyAiY29uZmlndXJlOjY4Mjk6IGNoZWNraW5n
IGFsbG9jYSIgPiY1CiBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICBn
Y2xfb2s9bm8KIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjQ2
NyAiY29uZmlndXJlIgorI2xpbmUgNjgzNCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZz
LmgiCiBpbnQgbWFpbigpIHsgZXhpdChhbGxvY2EoNTAwKSAhPSBOVUxMID8gMCA6IDEpO30KIEVP
RgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NDcxOiBcIiRhY19saW5rXCIpIDE+JjU7IChl
dmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYg
KC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJl
OjY4Mzg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVz
dCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251
bGwKIHRoZW4KICAgOgogZWxzZQpAQCAtNjQ5MCwxMiArNjg1NywxMiBAQAogICBnY2xfb2s9bm8K
IGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjQ5NCAiY29uZmln
dXJlIgorI2xpbmUgNjg2MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5j
bHVkZSA8YWxsb2NhLmg+CiAgIGludCBtYWluKCkgeyBleGl0KGFsbG9jYSg1MDApICE9IE5VTEwg
PyAwIDogMSl9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjQ5OTogXCIkYWNfbGlu
a1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHth
Y19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBl
Y2hvIGNvbmZpZ3VyZTo2ODY2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy
PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4
aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIDoKIGVsc2UKQEAgLTY1NTYsNyArNjkyMyw3IEBACiAj
IHJlZGhhdC9jeWdudXMgcmVsZWFzZWQgZm9yIHNvbWUgcmVhc29uIGEgYnVnZ3kgdmVyc2lvbiBv
ZiBnY2MsCiAjIHdoaWNoIG5vIG9uZSBlbHNlIHJlbGVhc2VkLiAgIENhdGNoIHRoYXQgaGVyZS4K
IGVjaG8gJGFjX24gImNoZWNraW5nIENoZWNraW5nIGZvciBidWdneSBnY2MgdmVyc2lvbiBmcm9t
IHJlZGhhdCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjU2MDogY2hlY2tpbmcg
Q2hlY2tpbmcgZm9yIGJ1Z2d5IGdjYyB2ZXJzaW9uIGZyb20gcmVkaGF0IiA+JjUKK2VjaG8gImNv
bmZpZ3VyZTo2OTI3OiBjaGVja2luZyBDaGVja2luZyBmb3IgYnVnZ3kgZ2NjIHZlcnNpb24gZnJv
bSByZWRoYXQiID4mNQogaWYgIDI+JjEgJENDIC12IHwgZmdyZXAgImdjYyB2ZXJzaW9uIDIuOTYi
ID4gL2Rldi9udWxsIAogICAgdGhlbiAKICAgICAgICAgQlJPS0VOX080X09QVD0xCkBAIC02NTcy
LDcgKzY5MzksNyBAQAogCWVjaG8gIiRhY190IiJubyIgMT4mNgogZmkgCiAKLUxJQlM9IiRMREZM
QUdTICRUTERGTEFHUyAkTElCUyAkVExJQlMiCitMSUJTPSJgZWNobyAkTERGTEFHUyB8IHNlZCAn
cyxnY2wuc2NyaXB0LC4uL3VuaXhwb3J0L2djbC5zY3JpcHQsZydgICRUTERGTEFHUyAkTElCUyAk
VExJQlMiCiAKIEZJTkFMX0NGTEFHUz0iJENGTEFHUyAkVENGTEFHUyAkUFJPQ0VTU09SX0ZMQUdT
IgogCkBAIC02NzQzLDExICs3MTEwLDExIEBACiBzJUBYX0VYVFJBX0xJQlNAJSRYX0VYVFJBX0xJ
QlMlZwogcyVAQlVJTERfQkZEQCUkQlVJTERfQkZEJWcKIHMlQExJVFRMRV9FTkRAJSRMSVRUTEVf
RU5EJWcKK3MlQFBBR0VXSURUSEAlJFBBR0VXSURUSCVnCiBzJUBIQVZFX0xPTkdfTE9OR0AlJEhB
VkVfTE9OR19MT05HJWcKIHMlQEZMSVNQQCUkRkxJU1AlZwogcyVAU1lTVEVNQCUkU1lTVEVNJWcK
IHMlQENMU1RBTkRBUkRAJSRDTFNUQU5EQVJEJWcKLXMlQFBBR0VXSURUSEAlJFBBR0VXSURUSCVn
CiBzJUBSTF9PQkpTQCUkUkxfT0JKUyVnCiBzJUBSTF9MSUJAJSRSTF9MSUIlZwogcyVATk9fUFJP
RklMRUAlJE5PX1BST0ZJTEUlZwpJbmRleDogY29uZmlndXJlLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnNyb290L2djbC9nY2wvY29uZmlndXJlLmluLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjExMi40LjEuMi4yLjIuNDcuMi4zLjIuMS40LjIuNC4yCmRpZmYgLXUgLXIxLjExMi40LjEuMi4y
LjIuNDcuMi4zLjIuMS40LjIuNC4yIGNvbmZpZ3VyZS5pbgotLS0gY29uZmlndXJlLmluCTE1IEph
biAyMDA1IDE5OjE3OjE3IC0wMDAwCTEuMTEyLjQuMS4yLjIuMi40Ny4yLjMuMi4xLjQuMi40LjIK
KysrIGNvbmZpZ3VyZS5pbgk2IEp1biAyMDA1IDIxOjQ5OjQ5IC0wMDAwCkBAIC0xMSwyNyArMTEs
MzggQEAKICMKIAogaGVscD0iLS1lbmFibGUtbWF4cGFnZT1YWFhYIHdpbGwgY29tcGlsZSBpbiBh
IHBhZ2UgdGFibGUgb2Ygc2l6ZSBYWFggKGRlZmF1bHQgJHtkZWZhdWx0X21heHBhZ2V9KSIKLUFD
X0FSR19FTkFCTEUobWF4cGFnZSxbIC0tZW5hYmxlLW1heHBhZ2U9WFhYWCB3aWxsIGNvbXBpbGUg
aW4gYSBwYWdlIHRhYmxlIG9mIHNpemUgWFhYIChlZyAnLS1lbmFibGUtbWF4cGFnZT02NCoxMDI0
JyB3b3VsZCBnaXZlIDY0SyBwYWdlcyBhbGxvd2luZyAyNTYgTUIgaWYgcGFnZXMgYXJlIDRLIGVh
Y2gpXSAsCi1bQUNfREVGSU5FX1VOUVVPVEVEKE1BWFBBR0UsJGVuYWJsZV9tYXhwYWdlKV0pCiAK
LUFDX0FSR19FTkFCTEUoaG9sZXBhZ2UsWyAtLWVuYWJsZS1ob2xlcGFnZT1YWFhYIHdpbGwgY29t
cGlsZSBpbiBhIFhYWC1zaXplZCBob2xlIGJldHdlZW4gdGhlIGhlYXAgYW5kIHJlbG9jYXRhYmxl
IG1lbW9yeSBhcmVhIChlZyAnLS1lbmFibGUtaG9sZXBhZ2U9NjQqMTAyNCcgd291bGQgZ2l2ZSA2
NEsgcGFnZXMgYWxsb3dpbmcgMjU2IE1CIGlmIHBhZ2VzIGFyZSA0SyBlYWNoKV0gLAotW0FDX0RF
RklORV9VTlFVT1RFRChIT0xFUEFHRSwkZW5hYmxlX2hvbGVwYWdlKV0pCiAKLUFDX0FSR19FTkFC
TEUodnNzaXplLFsgLS1lbmFibGUtdnNzaXplPVhYWFggd2lsbCBjb21waWxlIGluIGEgdmFsdWUg
c3RhY2sgb2Ygc2l6ZSBYWFhdICwKLVtBQ19ERUZJTkVfVU5RVU9URUQoVlNTSVpFLCRlbmFibGVf
dnNzaXplKV0pCitBQ19BUkdfRU5BQkxFKG1heHBhZ2UsWyAtLWVuYWJsZS1tYXhwYWdlPVhYWFgg
d2lsbCBjb21waWxlIGluIGEgcGFnZSB0YWJsZSBvZiBzaXplIFhYWCAoZWcgJy0tZW5hYmxlLW1h
eHBhZ2U9NjQqMTAyNCcgd291bGQgZ2l2ZSA2NEsgcGFnZXMgYWxsb3dpbmcgMjU2IE1CIGlmIHBh
Z2VzIGFyZSA0SyBlYWNoKV0sLGVuYWJsZV9tYXhwYWdlPTI2MjE0NCkKKyNBQ19ERUZJTkVfVU5R
VU9URUQoTUFYUEFHRSwkZW5hYmxlX21heHBhZ2UpCiAKLUFDX0FSR19FTkFCTEUoYmRzc2l6ZSxb
IC0tZW5hYmxlLWJkc3NpemU9WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSBiaW5kaW5nIHN0YWNrIG9m
IHNpemUgWFhYXSAsCi1bQUNfREVGSU5FX1VOUVVPVEVEKEJEU1NJWkUsJGVuYWJsZV9iZHNzaXpl
KV0pCiAKLUFDX0FSR19FTkFCTEUoaWhzc2l6ZSxbIC0tZW5hYmxlLWloc3NpemU9WFhYWCB3aWxs
IGNvbXBpbGUgaW4gYSBpbnZvY2F0aW9uIGhpc3Rvcnkgc3RhY2sgb2Ygc2l6ZSBYWFhdICwKLVtB
Q19ERUZJTkVfVU5RVU9URUQoSUhTU0laRSwkZW5hYmxlX2loc3NpemUpXSkKK0FDX0FSR19FTkFC
TEUoaG9sZWRpdixbIC0tZW5hYmxlLWhvbGVkaXY9WFhYWCB3aWxsIHNwZWNpZnkgdGhhdCAxL1hY
WFggb2YgdGhlIGNvcmUgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGhvbGUgYmV0d2VlbiB0aGUgaGVh
cCBhbmQgcmVsb2NhdGFibGUgbWVtb3J5IGFyZWFdLCxlbmFibGVfaG9sZWRpdj00KQorQUNfREVG
SU5FX1VOUVVPVEVEKEhPTEVESVYsJGVuYWJsZV9ob2xlZGl2KQogCi1BQ19BUkdfRU5BQkxFKGZy
c3NpemUsWyAtLWVuYWJsZS1mcnNzaXplPVhYWFggd2lsbCBjb21waWxlIGluIGEgZnJhbWUgc3Rh
Y2sgb2Ygc2l6ZSBYWFhdICwKLVtBQ19ERUZJTkVfVU5RVU9URUQoRlJTU0laRSwkZW5hYmxlX2Zy
c3NpemUpXSkKKworQUNfQVJHX0VOQUJMRSh2c3NpemUsWyAtLWVuYWJsZS12c3NpemU9WFhYWCB3
aWxsIGNvbXBpbGUgaW4gYSB2YWx1ZSBzdGFjayBvZiBzaXplIFhYWF0sLGVuYWJsZV92c3NpemU9
MTMxMDcyKQorQUNfREVGSU5FX1VOUVVPVEVEKFZTU0laRSwkZW5hYmxlX3Zzc2l6ZSkKKworCitB
Q19BUkdfRU5BQkxFKGJkc3NpemUsWyAtLWVuYWJsZS1iZHNzaXplPVhYWFggd2lsbCBjb21waWxl
IGluIGEgYmluZGluZyBzdGFjayBvZiBzaXplIFhYWF0sLGVuYWJsZV9iZHNzaXplPTIwNDgpCitB
Q19ERUZJTkVfVU5RVU9URUQoQkRTU0laRSwkZW5hYmxlX2Jkc3NpemUpCisKKworQUNfQVJHX0VO
QUJMRShpaHNzaXplLFsgLS1lbmFibGUtaWhzc2l6ZT1YWFhYIHdpbGwgY29tcGlsZSBpbiBhIGlu
dm9jYXRpb24gaGlzdG9yeSBzdGFjayBvZiBzaXplIFhYWF0sLGVuYWJsZV9paHNzaXplPTQwOTYp
CitBQ19ERUZJTkVfVU5RVU9URUQoSUhTU0laRSwkZW5hYmxlX2loc3NpemUpCisKK0FDX0FSR19F
TkFCTEUoZnJzc2l6ZSxbIC0tZW5hYmxlLWZyc3NpemU9WFhYWCB3aWxsIGNvbXBpbGUgaW4gYSBm
cmFtZSBzdGFjayBvZiBzaXplIFhYWF0sLGVuYWJsZV9mcnNzaXplPTQwOTYpCitBQ19ERUZJTkVf
VU5RVU9URUQoRlJTU0laRSwkZW5hYmxlX2Zyc3NpemUpCisKK0FDX0FSR19FTkFCTEUoY3NzaXpl
LFsgLS1lbmFibGUtY3NzaXplPVhYWFggcHJvZHVjZXMgZXhlY3V0YWJsZXMgd2l0aCBhIEMgc3Rh
Y2sgb2Ygc2l6ZSBYWFhdLCxlbmFibGVfY3NzaXplPTEwNzM3NDE4MjQpCisjQUNfREVGSU5FX1VO
UVVPVEVEKENTU0laRSwkZW5hYmxlX2Nzc2l6ZSkKIAogQUNfQVJHX0VOQUJMRShtYWNoaW5lLFsg
LS1lbmFibGUtbWFjaGluZT1YWFhYIHdpbGwgZm9yY2UgdGhlIHVzZSBvZiBvbmUgb2YgdGhlIGRl
ZmluaXRpb25zIGluIGgvWFhYWC5kZWZzXSAsCiBbZW5hYmxlX21hY2hpbmU9JGVuYWJsZXZhbF0s
W2VuYWJsZV9tYWNoaW5lPSIiXSkKIAorQUNfQVJHX0VOQUJMRShpbW1maXgsWyAtLWVuYWJsZS1p
bW1maXg9WFhYWCB3aWxsIGVuYWJsZSBhbiBpbW1lZGlhdGUgZml4bnVtIHRhYmxlIGFib3ZlIHRo
ZSBDIHN0YWNrXSwsZW5hYmxlX2ltbWZpeD15ZXMpCisKICNBQ19BUkdfRU5BQkxFKGdtcCxbIC0t
ZW5hYmxlLWdtcD1ubyB3aWxsIGRpc2FibGUgdXNlIG9mIEdNUCBnbnUgbXVsdGlwcmVjaXNpb24g
YXJpdGhtZXRpYywgKGRlZmF1bHQgaXMgPXllcyldICwKICNbdXNlX2dtcD0kZW5hYmxldmFsXSxb
dXNlX2dtcD0ieWVzIl0pCiAKQEAgLTQ4Niw2ICs0OTcsMTAgQEAKIAljYXNlICR1c2UgaW4KICMJ
CWFtZDY0KikgIyBzdGFjay1ib3VuZGFyeSBvcHRpb24gZG9lcyBub3Qgd29yawogIwkJCVRDRkxB
R1M9IiRUQ0ZMQUdTIC1tNjQgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9OCI7OyAgCisjCQkz
ODYqKQorIwkJCVRDRkxBR1M9IiRUQ0ZMQUdTIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTIi
OzsgIAorIwkJYW1kNjQqKQorIwkJCVRDRkxBR1M9IiRUQ0ZMQUdTIC1tcHJlZmVycmVkLXN0YWNr
LWJvdW5kYXJ5PTMiOzsgIAogCQlhbHBoYSopCiAJCQlUQ0ZMQUdTPSIkVENGTEFHUyAtbWllZWUi
OzsKICMJCW02OGsqKQpAQCAtMTA0MCw5ICsxMDU1LDMzIEBACiAJZmkKIGZpCiAKK0FDX01TR19D
SEVDS0lORygiZmluZGluZyBkZWZhdWx0IGxpbmtlciBzY3JpcHQiKQordG91Y2ggdW5peHBvcnQv
Z2NsLnNjcmlwdAorZWNobyAiaW50IG1haW4oKSB7cmV0dXJuIDA7fSIgPmZvby5jCiskQ0MgLVds
LC0tdmVyYm9zZSBmb28uYyAtbyBmb28gMj4mMSB8IFwKKyAgICBhd2sgJy89PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8ge2k9MS1pO25leHR9IHtpZiAo
aSkgcHJpbnR9JyA+Z2NsLnNjcmlwdAorcm0gLXJmIGZvby5jIGZvbworaWYgdGVzdCAiYGNhdCBn
Y2wuc2NyaXB0IHwgd2MgLWxgIiAhPSAiMCIgOyB0aGVuCisgIEFDX01TR19SRVNVTFQoZ290IGl0
KQorICBBQ19NU0dfQ0hFQ0tJTkcoInRyeWluZyB0byBsb3dlciBoZWFwIHN0YXJ0IikKKyAgY3Ag
Z2NsLnNjcmlwdCBnY2wuc2NyaXB0LmRlZgorICBjYXQgZ2NsLnNjcmlwdC5kZWYgfCBhd2sgJy9T
SVpFT0ZfSEVBREVSUy8ge2dzdWIoIjB4Li4uIiwiMHgwMDAiLCQwKTt9IHtwcmludH0nID5nY2wu
c2NyaXB0CisgIGlmIGRpZmYgZ2NsLnNjcmlwdC5kZWYgZ2NsLnNjcmlwdCA+L2Rldi9udWxsIDI+
JjEgOyB0aGVuCisgICAgIEFDX01TR19SRVNVTFQoImNhbm5vdCBvciBub3QgbmVlZGVkIikKKyAg
ICAgcm0gLWYgZ2NsLnNjcmlwdCBnY2wuc2NyaXB0LmRlZgorICBlbHNlCisgICAgIEFDX01TR19S
RVNVTFQoImRvbmUiKQorICAgICBybSAtZiBnY2wuc2NyaXB0LmRlZgorICAgICBMREZMQUdTPSIk
TERGTEFHUyAtV2wsLVQgZ2NsLnNjcmlwdCAiCisgICAgIGNwIGdjbC5zY3JpcHQgdW5peHBvcnQK
KyAgZmkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVCgibm9uZSIpCisgIHJtIC1mIGdjbC5zY3JpcHQK
K2ZpCiAKIG9sZF9MREZMQUdTPSIkTERGTEFHUyIKLUxERkxBR1M9IiRUTERGTEFHUyIKK0xERkxB
R1M9IiRMREZMQUdTICRUTERGTEFHUyIKIEFDX01TR19DSEVDS0lORygiZmluZGluZyBEQkVHSU4i
KQogQUNfVFJZX1JVTihbI2luY2x1ZGUgPHN0ZGlvLmg+CiAgICAgICAgICAgICAjaW5jbHVkZSA8
c3RkbGliLmg+CkBAIC0xMDg2LDYgKzExMjUsNTAgQEAKIEFDX01TR19SRVNVTFQoZ290ICRkYmVn
aW4pCiBMREZMQUdTPSIkb2xkX0xERkxBR1MiCiAKK0FDX01TR19DSEVDS0lORygiZm9yIGhlYXAg
c2hhcmVkIGxpYnJhcnkgaGVhcCBjZWlsaW5nIikKK2VjaG8gImludCBtYWluKCkge3JldHVybiAw
O30iID5mb28uYworJENDIGZvby5jIC1vIGZvbworaGVhcF9jZWlsaW5nPWBsZGQgZm9vIHwgdGFp
bCAtbiAxIHwgYXdrICd7cHJpbnQgJE5GfScgfCB0ciAtZCAnKCknYAorQUNfTVNHX1JFU1VMVCgi
Z290ICRoZWFwX2NlaWxpbmciKQorQUNfREVGSU5FX1VOUVVPVEVEKFNIQVJFRF9MSUJfSEVBUF9D
RUlMSU5HLCRoZWFwX2NlaWxpbmcpCisKKyMgcGFnZXdpZHRoCitBQ19NU0dfQ0hFQ0tJTkcoZm9y
IHBhZ2V3aWR0aCkKK0FDX1RSWV9SVU4oWyNpbmNsdWRlIDxzdGRpby5oPgorICAgICAgICAgICAg
I2luY2x1ZGUgPHVuaXN0ZC5oPgoraW50IG1haW4oKSB7c2l6ZV90IGk9Z2V0cGFnZXNpemUoKSxq
OyAKKwkgICAgRklMRSAqZnA9Zm9wZW4oImNvbmZ0ZXN0MSIsInciKTsKKwkgICAgZm9yIChqPTA7
aT4+PTE7aisrKTsKKwkgICAgZnByaW50ZihmcCwiJXUiLGopOworCSAgICByZXR1cm4gMDt9XSxQ
QUdFV0lEVEg9YGNhdCBjb25mdGVzdDFgLFBBR0VXSURUSD0wLFBBR0VXSURUSD0wKQorQUNfTVNH
X1JFU1VMVCgkUEFHRVdJRFRIKQorQUNfREVGSU5FX1VOUVVPVEVEKFBBR0VXSURUSCwkUEFHRVdJ
RFRIKQorQUNfU1VCU1QoUEFHRVdJRFRIKQorCitBQ19NU0dfQ0hFQ0tJTkcoImZvciBtYXhwYWdl
IHJldmlzaW9uIikKK0FDX1RSWV9SVU4oWyNpbmNsdWRlIDxzdGRpby5oPgorbWFpbigpCit7Cisg
IGNoYXIgKmI7CisgIHVuc2lnbmVkIGxvbmcgaSxqOworICBGSUxFICpmcCA9IGZvcGVuKCJjb25m
dGVzdDEiLCJ3Iik7CisgIGo9KCRlbmFibGVfbWF4cGFnZSA8PCRQQUdFV0lEVEgpICsgJGRiZWdp
bjsKKyAgaj1qPiRoZWFwX2NlaWxpbmcgPyAkaGVhcF9jZWlsaW5nIDogajsKKyAgai09JGRiZWdp
bjsKKyAgZm9yIChpPTE7aTw9ajtpPDw9MSk7CisgIGlmIChpPmopIGk+Pj0xOworICBmcHJpbnRm
KGZwLCIlbGQiLGk+PiRQQUdFV0lEVEgpOworICBmY2xvc2UoZnApOworICByZXR1cm4gMDsKK31d
LHRtcF9tYXhwYWdlPWBjYXQgY29uZnRlc3QxYCx0bXBfbWF4cGFnZT0wLHRtcF9tYXhwYWdlPTAp
CitpZiB0ZXN0ICIkdG1wX21heHBhZ2UiICE9ICIkZW5hYmxlX21heHBhZ2UiIDsgdGhlbgorICAg
ZW5hYmxlX21heHBhZ2U9JHRtcF9tYXhwYWdlCisgICBBQ19NU0dfUkVTVUxUKCJnb3QgJGVuYWJs
ZV9tYXhwYWdlIikKKyMgICBBQ19ERUZJTkVfVU5RVU9URUQoTUFYUEFHRSwkZW5hYmxlX21heHBh
Z2UpCitlbHNlCisgICBBQ19NU0dfUkVTVUxUKCIkZW5hYmxlX21heHBhZ2UgaXMgT0siKQorZmkK
K0FDX0RFRklORV9VTlFVT1RFRChNQVhQQUdFLCRlbmFibGVfbWF4cGFnZSkKIAogQUNfTVNHX0NI
RUNLSU5HKCJmaW5kaW5nIENTVEFDS19BRERSRVNTIikKIEFDX1RSWV9SVU4oWyNpbmNsdWRlIDxz
dGRpby5oPgpAQCAtMTEwMSw2ICsxMTg0LDEyMCBAQAogKQogQUNfTVNHX1JFU1VMVChnb3QgJGNz
dGFja19hZGRyZXNzKQogCitBQ19NU0dfQ0hFQ0tJTkcoImZpbmRpbmcgQ1NUQUNLX0FMSUdOTUVO
VCIpCitBQ19UUllfUlVOKFsjaW5jbHVkZSA8c3RkaW8uaD4KK21haW4oKQoreworICB2b2lkICpi
LCpjOworICBGSUxFICpmcCA9IGZvcGVuKCJjb25mdGVzdDEiLCJ3Iik7CisgIGxvbmcgbjsKKyAg
Yj1hbGxvY2Eoc2l6ZW9mKGIpKTsKKyAgYz1hbGxvY2Eoc2l6ZW9mKGMpKTsKKyAgbj1iPmMgPyBi
LWMgOiBjLWI7CisgIG49bj5zaXplb2YoYykgPyBuIDogMDsKKyAgZnByaW50ZihmcCwiJWxkIixu
KTsKKyAgZmNsb3NlKGZwKTsKKyAgcmV0dXJuIDA7Cit9XSxjc3RhY2tfYWxpZ25tZW50PWBjYXQg
Y29uZnRlc3QxYCxjc3RhY2tfYWxpZ25tZW50PTAsY3N0YWNrX2FsaWdubWVudD0wKQorQUNfREVG
SU5FX1VOUVVPVEVEKENTVEFDS19BTElHTk1FTlQsJGNzdGFja19hbGlnbm1lbnQgXAorKQorQUNf
TVNHX1JFU1VMVChnb3QgJGNzdGFja19hbGlnbm1lbnQpCisKK0FDX01TR19DSEVDS0lORygiZmlu
ZGluZyBDU1RBQ0tfRElSRUNUSU9OIikKK0FDX1RSWV9SVU4oWyNpbmNsdWRlIDxzdGRpby5oPgor
dm9pZCAqCitmb28odm9pZCkgeworaW50IGk7CityZXR1cm4gKHZvaWQgKikmaTsKK30KKworaW50
CittYWluKCkKK3sKKyAgY2hhciAqYjsKKyAgRklMRSAqZnAgPSBmb3BlbigiY29uZnRlc3QxIiwi
dyIpOworICBmcHJpbnRmKGZwLCIlbGQiLCgobG9uZykgJmIpID4gKChsb25nKSBmb28oKSkgPyAt
MSA6IDEpOworICBmY2xvc2UoZnApOworICByZXR1cm4gMDsKK31dLGNzdGFja19kaXJlY3Rpb249
YGNhdCBjb25mdGVzdDFgLGNzdGFja19kaXJlY3Rpb249MCxjc3RhY2tfZGlyZWN0aW9uPTApCitB
Q19ERUZJTkVfVU5RVU9URUQoQ1NUQUNLX0RJUkVDVElPTiwkY3N0YWNrX2RpcmVjdGlvbiBcCisp
CitBQ19NU0dfUkVTVUxUKGdvdCAkY3N0YWNrX2RpcmVjdGlvbikKKworQUNfTVNHX0NIRUNLSU5H
KCJmb3IgQyBzdGFjayBzaXplIGZsb29yIGZyb20gaGVhcCAiKQorQUNfVFJZX1JVTihbI2luY2x1
ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4oKQoreworICBjaGFyICpiOworICBGSUxFICpmcCA9IGZv
cGVuKCJjb25mdGVzdDEiLCJ3Iik7CisgIHVuc2lnbmVkIGxvbmcgaixrOworICAKKyAgaj0oKHVu
c2lnbmVkIGxvbmcpJmIpICsgJGNzdGFja19kaXJlY3Rpb24gKiAkZW5hYmxlX2Nzc2l6ZTsKKyAg
az0oJGRiZWdpbiArICgkZW5hYmxlX21heHBhZ2UgPDwgJFBBR0VXSURUSCkpOworICBqPWFicyhq
LSgodW5zaWduZWQgbG9uZykmYikpIT0kZW5hYmxlX2Nzc2l6ZSB8fCBqPGsgPyBrIDogajsKKyAg
ai09KCh1bnNpZ25lZCBsb25nKSZiKTsKKyAgaio9JGNzdGFja19kaXJlY3Rpb247CisgIGZwcmlu
dGYoZnAsIiVsdSIsaik7CisgIGZjbG9zZShmcCk7CisgIHJldHVybiAwOworfV0sdG1wX2Nzc2l6
ZT1gY2F0IGNvbmZ0ZXN0MWAsdG1wX2Nzc2l6ZT0wLHRtcF9jc3NpemU9MCkKK2lmIHRlc3QgIiR0
bXBfY3NzaXplIiAhPSAiJGVuYWJsZV9jc3NpemUiIDsgdGhlbgorICAgZW5hYmxlX2Nzc2l6ZT0k
dG1wX2Nzc2l6ZTsKKyAgIEFDX01TR19SRVNVTFQoImdvdCAkZW5hYmxlX2Nzc2l6ZSIpCisjICAg
QUNfREVGSU5FX1VOUVVPVEVEKENTU0laRSwkZW5hYmxlX2Nzc2l6ZSkKK2Vsc2UKKyAgIEFDX01T
R19SRVNVTFQoIiRlbmFibGVfY3NzaXplIGlzIE9LIikKK2ZpCitBQ19ERUZJTkVfVU5RVU9URUQo
Q1NTSVpFLCRlbmFibGVfY3NzaXplKQorCitjc3RhY2tfdG9wPTAKK2NzdGFja19yYW5nZT0wCitB
Q19NU0dfQ0hFQ0tJTkcoImZpbmRpbmcgY3N0YWNrIHRvcCIpCitBQ19UUllfUlVOKFsjaW5jbHVk
ZSA8c3RkaW8uaD4KK2ludAorbWFpbigpCit7CisgIHZvaWQgKnY7CisgIHVuc2lnbmVkIGxvbmcg
aSxqLGs7CisgIEZJTEUgKmZwID0gZm9wZW4oImNvbmZ0ZXN0MSIsInciKTsKKworICBmb3IgKGk9
MixrPTE7aTtrPWksaTw8PTEpOworICBmb3IgKGk9aj1rO2ogJiYgaTwodW5zaWduZWQgbG9uZykm
diArICgkY3N0YWNrX2RpcmVjdGlvbj09MSA/ICRlbmFibGVfY3NzaXplIDogMCk7aj4+PTEsaXw9
aik7CisgIGZwcmludGYoZnAsIjB4JWx4IixpJi0weDEwMDApOworICBmY2xvc2UoZnApOworICBy
ZXR1cm4gMDsKK31dLGNzdGFja190b3A9YGNhdCBjb25mdGVzdDFgLGNzdGFja190b3A9MCxjc3Rh
Y2tfdG9wPTApCitBQ19NU0dfUkVTVUxUKGdvdCAkY3N0YWNrX3RvcCkKK2lmIHRlc3QgIiRjc3Rh
Y2tfdG9wIiAhPSAiMCIgOyB0aGVuCisgICBBQ19NU0dfQ0hFQ0tJTkcoImZpbmRpbmcgb3ZlciBj
c3RhY2sgaGFsZiByYW5nZSIpCisgICBBQ19UUllfUlVOKFsjaW5jbHVkZSA8c3RkaW8uaD4KKyAg
IGludAorICAgbWFpbigpCisgICB7CisgICAgIHVuc2lnbmVkIGxvbmcgajsKKyAgICAgRklMRSAq
ZnAgPSBmb3BlbigiY29uZnRlc3QxIiwidyIpOworCisgICAgIGZvciAoaj0xO2ogJiYgIShqJiAk
Y3N0YWNrX3RvcCk7ajw8PTEpOworICAgICBmcHJpbnRmKGZwLCIweCVseCIsaj4+MSk7CisgICAg
IGZjbG9zZShmcCk7CisgICAgIHJldHVybiAwOworICAgfV0sY3N0YWNrX3JhbmdlPWBjYXQgY29u
ZnRlc3QxYCxjc3RhY2tfcmFuZ2U9MCxjc3RhY2tfcmFuZ2U9MCkKKyAgIEFDX01TR19SRVNVTFQo
Z290ICRjc3RhY2tfcmFuZ2UpCisgICBpZiB0ZXN0ICIkY3N0YWNrX3JhbmdlIiAhPSAiMCIgOyB0
aGVuIAorCUFDX0RFRklORV9VTlFVT1RFRChDU1RBQ0tfVE9QLCRjc3RhY2tfdG9wKQorICAgICAg
QUNfREVGSU5FX1VOUVVPVEVEKENTVEFDS19SQU5HRSwkY3N0YWNrX3JhbmdlKQorICAgZmkKK2Zp
CisKK2lmIHRlc3QgIiRlbmFibGVfaW1tZml4IiA9ICJ5ZXMiIDsgdGhlbgorICBpZiB0ZXN0ICIk
Y3N0YWNrX3RvcCIgIT0gIjAiIDsgdGhlbgorICAgICBpZiB0ZXN0ICIkY3N0YWNrX3JhbmdlIiAh
PSAiMCIgOyB0aGVuIAorCUFDX0RFRklORV9VTlFVT1RFRChJTV9GSVhfQkFTRSwkY3N0YWNrX3Rv
cCkKKyAgICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKElNX0ZJWF9MSU0sJGNzdGFja19yYW5nZSkK
KyAgICAgZmkKKyAgZmkKK2ZpCiAKIAogQUNfTVNHX0NIRUNLSU5HKCJzaXplb2YgbG9uZyBsb25n
IGludCIpCkBAIC0xMTQxLDE5ICsxMzM4LDYgQEAKIEFDX1NVQlNUKFNZU1RFTSkKIEFDX1NVQlNU
KENMU1RBTkRBUkQpCiAKLSMgcGFnZXdpZHRoCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIHBhZ2V3aWR0
aCkKLUFDX1RSWV9SVU4oWyNpbmNsdWRlIDxzdGRpby5oPgotICAgICAgICAgICAgI2luY2x1ZGUg
PHVuaXN0ZC5oPgotaW50IG1haW4oKSB7c2l6ZV90IGk9Z2V0cGFnZXNpemUoKSxqOyAKLQkgICAg
RklMRSAqZnA9Zm9wZW4oImNvbmZ0ZXN0MSIsInciKTsKLQkgICAgZm9yIChqPTA7aT4+PTE7aisr
KTsKLQkgICAgZnByaW50ZihmcCwiJXUiLGopOwotCSAgICByZXR1cm4gMDt9XSxQQUdFV0lEVEg9
YGNhdCBjb25mdGVzdDFgLFBBR0VXSURUSD0wLFBBR0VXSURUSD0wKQotQUNfTVNHX1JFU1VMVCgk
UEFHRVdJRFRIKQotQUNfREVGSU5FX1VOUVVPVEVEKFBBR0VXSURUSCwkUEFHRVdJRFRIKQotQUNf
U1VCU1QoUEFHRVdJRFRIKQotCiAjIE1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAKIApAQCAtMTc5
Nyw3ICsxOTgxLDcgQEAKIAlBQ19NU0dfUkVTVUxUKFtub10pCiBmaSAKIAotTElCUz0iJExERkxB
R1MgJFRMREZMQUdTICRMSUJTICRUTElCUyIKK0xJQlM9ImBlY2hvICRMREZMQUdTIHwgc2VkICdz
LGdjbC5zY3JpcHQsLi4vdW5peHBvcnQvZ2NsLnNjcmlwdCxnJ2AgJFRMREZMQUdTICRMSUJTICRU
TElCUyIKIEFDX1NVQlNUKExJQlMpCiBGSU5BTF9DRkxBR1M9IiRDRkxBR1MgJFRDRkxBR1MgJFBS
T0NFU1NPUl9GTEFHUyIKIEFDX1NVQlNUKEZJTkFMX0NGTEFHUykKSW5kZXg6IG1ha2VmaWxlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvbWFrZWZpbGUsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNzMuNC4yLjIuMjEuNi4xCmRpZmYgLXUgLXIxLjczLjQuMi4yLjIxLjYuMSBt
YWtlZmlsZQotLS0gbWFrZWZpbGUJNSBBdWcgMjAwNCAyMjo0OTozOSAtMDAwMAkxLjczLjQuMi4y
LjIxLjYuMQorKysgbWFrZWZpbGUJNiBKdW4gMjAwNSAyMTo0OTo1MCAtMDAwMApAQCAtMTI2LDcg
KzEyNiw3IEBACiBtZXJnZToKIAkkKENDKSAtbyBtZXJnZSBtZXJnZS5jCiAKLUxJU1BfTElCPWNt
cG5ldy9nY2xfY29sbGVjdGZuLm8gY21wbmV3L2djbF9jb2xsZWN0Zm4ubHNwIGxzcC9nY2xfZ3By
b2YubHNwIGxzcC9nY2xfaW5mby5vIGxzcC9nY2xfcHJvZmlsZS5sc3AgbHNwL2djbF9leHBvcnQu
bHNwIGxzcC9nY2xfYXV0b2xvYWQubHNwIGNtcG5ldy9nY2xfY21wbWFpbi5sc3AgY21wbmV3L2dj
bF9jbXBvcHQubHNwIGNtcG5ldy9nY2xfbGZ1bl9saXN0LmxzcCBsc3AvZ2NsX2F1dG9fbmV3Lmxz
cCBoL2NtcGluY2x1ZGUuaCB1bml4cG9ydC9pbml0XyQoU1lTVEVNKS5sc3AgdW5peHBvcnQvbGli
JChTWVNURU0pLmEgdW5peHBvcnQvbGliZ2NscC5hIGdjbC10ay90ay1wYWNrYWdlLmxzcCAkKFRL
X0xJU1BfTElCKSAkKFJMX0xJQikgJChGSVJTVF9GSUxFKSAkKExBU1RfRklMRSkgJChhZGRzdWZm
aXggL3N5cy1wcm9jbGFpbS5saXNwLGxzcCBjbXBuZXcgcGNsIGNsY3MpCitMSVNQX0xJQj1jbXBu
ZXcvZ2NsX2NvbGxlY3Rmbi5vIGNtcG5ldy9nY2xfY29sbGVjdGZuLmxzcCBsc3AvZ2NsX2dwcm9m
LmxzcCBsc3AvZ2NsX2luZm8ubyBsc3AvZ2NsX3Byb2ZpbGUubHNwIGxzcC9nY2xfZXhwb3J0Lmxz
cCBsc3AvZ2NsX2F1dG9sb2FkLmxzcCBjbXBuZXcvZ2NsX2NtcG1haW4ubHNwIGNtcG5ldy9nY2xf
Y21wb3B0LmxzcCBjbXBuZXcvZ2NsX2xmdW5fbGlzdC5sc3AgbHNwL2djbF9hdXRvX25ldy5sc3Ag
aC9jbXBpbmNsdWRlLmggdW5peHBvcnQvaW5pdF8kKFNZU1RFTSkubHNwIHVuaXhwb3J0L2xpYiQo
U1lTVEVNKS5hIHVuaXhwb3J0L2xpYmdjbHAuYSBnY2wtdGsvdGstcGFja2FnZS5sc3AgJChUS19M
SVNQX0xJQikgJChSTF9MSUIpICQoRklSU1RfRklMRSkgJChMQVNUX0ZJTEUpICQoYWRkc3VmZml4
IC9zeXMtcHJvY2xhaW0ubGlzcCxsc3AgY21wbmV3IHBjbCBjbGNzKSB1bml4cG9ydC9nY2wuc2Ny
aXB0CiAKIGluc3RhbGwtY29tbWFuZDoKIAlybSAtZiAkKERFU1RESVIpJChwcmVmaXgpL2Jpbi9n
Y2wKQEAgLTIxOCw3ICsyMTgsNyBAQAogCQl3aW5kb3dzL2luc3RhbGwubHNwIHdpbmRvd3Mvc3lz
ZGlyLmJhdAogCXJtIC1yZiB3aW5kb3dzL091dHB1dAogCXJtIC1mIGFuc2ktdGVzdHMvdGVzdF9y
ZXN1bHRzIGFuc2ktdGVzdHMvZ2F6b25rKmxzcAotCXJtIC1mIGNvbmZpZy5sb2cgY29uZmlnLmNh
Y2hlIGNvbmZpZy5zdGF0dXMgdG1weCAkKFBPUlRESVIpL2dtb24ub3V0CisJcm0gLWYgY29uZmln
LmxvZyBjb25maWcuY2FjaGUgY29uZmlnLnN0YXR1cyB0bXB4ICQoUE9SVERJUikvZ21vbi5vdXQg
Z2NsLnNjcmlwdAogCiBjbGVhbjogZ2NsY2xlYW4KIAktKGNkICQoR01QRElSKSA7ICQoTUFLRSkg
ZGlzdGNsZWFuKQpJbmRleDogYmluL2RwcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290
L2djbC9nY2wvYmluL2RwcC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQuNi4xCmRpZmYgLXUg
LXIxLjQuNi4xIGRwcC5jCi0tLSBiaW4vZHBwLmMJNiBOb3YgMjAwMyAxNjoxNjo0OCAtMDAwMAkx
LjQuNi4xCisrKyBiaW4vZHBwLmMJNiBKdW4gMjAwNSAyMTo0OTo1MSAtMDAwMApAQCAtNDMxLDcg
KzQzMSw3IEBACiAJaW50IGk7CiAKIAlmcHJpbnRmKG91dCwgIlx0aW50IG5hcmc7XG4iKTsKLQlm
cHJpbnRmKG91dCwgIlx0cmVnaXN0ZXIgb2JqZWN0ICpEUFBiYXNlPXZzX2Jhc2U7XG4iKTsKKwlm
cHJpbnRmKG91dCwgIlx0b2JqZWN0ICpEUFBiYXNlPXZzX2Jhc2U7XG4iKTsKIAkKIAlmb3IgKGkg
PSAwOyAgaSA8IG5vcHQ7ICBpKyspCiAJCWlmIChvcHRpb25hbFtpXS5vX3N2YXIgIT0gTlVMTCkK
SW5kZXg6IGNtcG5ldy9nY2xfY21wbGFtLmxzcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9v
dC9nY2wvZ2NsL2NtcG5ldy9nY2xfY21wbGFtLmxzcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
LjIuMy40LjEKZGlmZiAtdSAtcjEuMS4yLjMuNC4xIGdjbF9jbXBsYW0ubHNwCi0tLSBjbXBuZXcv
Z2NsX2NtcGxhbS5sc3AJMTQgSnVsIDIwMDQgMTg6MzE6MzEgLTAwMDAJMS4xLjIuMy40LjEKKysr
IGNtcG5ldy9nY2xfY21wbGFtLmxzcAk2IEp1biAyMDA1IDIxOjQ5OjUyIC0wMDAwCkBAIC05Nyw3
ICs5Nyw3IEBACiAoc2k6cHV0cHJvcCAnbWFrZS1kY2xvc3VyZSAnd3QtbWFrZS1kY2xvc3VyZSAn
d3QtbG9jKQogCiAoZGVmdW4gd3QtbWFrZS1kY2xvc3VyZSAoY2Z1biBjbGluayljbGluayAgOztE
YmFzZT1iYXNlMAotICAod3QtbmwgIihEb3duQ2xvc2UiY2Z1biIudD10X2RjbG9zdXJlLERvd25D
bG9zZSIgY2Z1biAiLmRjX3NlbGY9TEMiIGNmdW4iLCIKKyAgKHd0LW5sICIoc2V0X3R5cGVfb2Yo
JkRvd25DbG9zZSJjZnVuIix0X2RjbG9zdXJlKSxEb3duQ2xvc2UiIGNmdW4gIi5kY19zZWxmPUxD
IiBjZnVuIiwiCiAgICAgICJEb3duQ2xvc2UiIGNmdW4gIi5kY19lbnY9YmFzZTAsKG9iamVjdCkm
RG93bkNsb3NlIiBjZnVuICIpIikpCiAKIChkZWZ1biB3ZnMtZXJyb3IgKCkKSW5kZXg6IGgvYXR0
X2V4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvaC9hdHRfZXh0Lmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjAuNi4xLjYuMQpkaWZmIC11IC1yMS4yMC42LjEuNi4x
IGF0dF9leHQuaAotLS0gaC9hdHRfZXh0LmgJNSBBdWcgMjAwNCAyMjoyNjo0OCAtMDAwMAkxLjIw
LjYuMS42LjEKKysrIGgvYXR0X2V4dC5oCTYgSnVuIDIwMDUgMjE6NDk6NTQgLTAwMDAKQEAgLTMx
Myw3ICszMTMsOCBAQAogLyogIG51bWJlci5jICAqLwogRVhURVIgb2JqZWN0IHNob3J0ZmxvYXRf
emVybzsKIEVYVEVSIG9iamVjdCBsb25nZmxvYXRfemVybzsKLSNkZWZpbmUgbWFrZV9maXhudW0o
YSkgKCgoKEZJWHRlbXA9KGEpKStTTUFMTF9GSVhOVU1fTElNSVQpJigtMipTTUFMTF9GSVhOVU1f
TElNSVQpKT09MD9zbWFsbF9maXhudW0oRklYdGVtcCk6bWFrZV9maXhudW0xKEZJWHRlbXApKQor
LyogI2RlZmluZSBtYWtlX2ZpeG51bShhKSAoKCgoRklYdGVtcD0oYSkpK1NNQUxMX0ZJWE5VTV9M
SU1JVCkmKC0yKlNNQUxMX0ZJWE5VTV9MSU1JVCkpPT0wP3NtYWxsX2ZpeG51bShGSVh0ZW1wKTpt
YWtlX2ZpeG51bTEoRklYdGVtcCkpICovCisvKiAjZGVmaW5lIG1ha2VfZml4bnVtKGFfKSAoe3Jl
Z2lzdGVyIGZpeG51bSBfdD0oYV8pO2lzX2JpZ19maXgoX3QpID8gbWFrZV9maXhudW0xKF90KSA6
IHNtYWxsX2ZpeG51bShfdCk7fSkgKi8KIG9iamVjdCBtYWtlX2ZpeG51bTEobG9uZyk7CiBvYmpl
Y3QgbWFrZV9yYXRpbygpOwogb2JqZWN0IG1ha2Vfc2hvcnRmbG9hdCgpOwpJbmRleDogaC9ic2Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2gvYnNkLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNC42LjEKZGlmZiAtdSAtcjEuNC42LjEgYnNkLmgKLS0tIGgvYnNkLmgJ
MyBNYXkgMjAwNCAyMTozNTo1OCAtMDAwMAkxLjQuNi4xCisrKyBoL2JzZC5oCTYgSnVuIDIwMDUg
MjE6NDk6NTQgLTAwMDAKQEAgLTYzLDkgKzYzLDEwIEBACiAgICAgIAloZWFwX2VuZCA9IHNicmso
MCk7IFJPVU5EX1VQX1NCUksoaGVhcF9lbmQpO1wKIAloZWFwX2VuZCA9IGNvcmVfZW5kID0gc2Jy
aygwKTsKIAorI2RlZmluZSBNQVhDT1JFICgoY2hhciAqKSgodW5zaWduZWQgbG9uZylEQkVHSU4r
KHVuc2lnbmVkIGxvbmcpKE1BWFBBR0UtMSkqUEFHRVNJWkUpKQogI2RlZmluZSBJRl9BTExPQ0FU
RV9FUlIgXAogICAgICAgICBGSVhfUkFORE9NX1NCUks7IFwKLQlpZiAoY29yZV9lbmQgIT0gc2Jy
ayhQQUdFU0laRSoobiAtIG0pKSkKKwlpZiAoY29yZV9lbmQrUEFHRVNJWkUqKG4gLSBtKT5NQVhD
T1JFIHx8IGNvcmVfZW5kICE9IHNicmsoUEFHRVNJWkUqKG4gLSBtKSkpCiAKICNkZWZpbmUgU1lN
X0VYVEVSTkFMX1Aoc3ltKSAoKHN5bSktPm5fdHlwZSAmIE5fRVhUKQogICAgICAKSW5kZXg6IGgv
Y21wb25seS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvaC9jbXBvbmx5
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNi42LjEKZGlmZiAtdSAtcjEuNi42LjEgY21wb25s
eS5oCi0tLSBoL2NtcG9ubHkuaAkxIERlYyAyMDAzIDE2OjUwOjAwIC0wMDAwCTEuNi42LjEKKysr
IGgvY21wb25seS5oCTYgSnVuIDIwMDUgMjE6NDk6NTQgLTAwMDAKQEAgLTE4LDExICsxOCwxMSBA
QAogI2RlZmluZSBTRVRRX0lJKHZhcixhbGxvYyx2YWwpIFwKICAgZG97R0VOIF94eCA9KHZhbCkg
OyBcCiAgIGludCBfbiA9IHJlcGxhY2VfY29weTEoX3h4LHZhcik7IFwKLSAgaWYoX24pIHZhciA9
IHJlcGxhY2VfY29weTIoX3h4LGFsbG9jYShfbikpO313aGlsZSgwKQorICBpZihfbikgdmFyID0g
cmVwbGFjZV9jb3B5MihfeHgsWkFMTE9DQShfbikpO313aGlsZSgwKQogCiAjZGVmaW5lIFNFVFFf
SU8odmFyLGFsbG9jLHZhbCkge29iamVjdCBfeHggPSh2YWwpIDsgXAogCQkJICAgICAgaW50IF9u
ID0gb2JqX3JlcGxhY2VfY29weTEoX3h4LHZhcik7IFwKLQkJCSAgICBpZihfbikgdmFyID0gb2Jq
X3JlcGxhY2VfY29weTIoX3h4LGFsbG9jYShfbikpO30KKwkJCSAgICBpZihfbikgdmFyID0gb2Jq
X3JlcGxhY2VfY29weTIoX3h4LFpBTExPQ0EoX24pKTt9CiAjZGVmaW5lIElERUNMKGEsYixjKSBv
dXJfdWxvbmcgYls0XTthID0oYlswXT0weDEwMTAwMDAgKzQsYikgOyBvYmplY3QgYwogI2Vsc2UK
IEdFTiBzZXRxX2lvKCksc2V0cV9paSgpOwpAQCAtNTAsNyArNTAsNyBAQAogLyogaW5zaWRlIHNl
dGptcCBmcmFtZXMsIGFuZCBmYXN0ZXIgYWxsb2NhIGFsbG9jYXRpb24gb3RoZXJ3aXNlLiovCiAv
KiBGSVhNRSwgdmVyaWZ5IHRoYXQgSURFQ0wgbmVlZCBub3QgYmUgY2hhbmdlZCwgaW1wcm92ZSBs
b2dpYyBiZWhpbmQgbWFsbG9jICovCiAvKiBzZWxlY3Rpb24sIGUuZy4gY2xvc3VyZSBib3VuZGFy
aWVzLiAgQ00gMjAwMzEyMDEqLwotI2RlZmluZSBJREVDTChhLGIsYykgbXBfbGltYl90ICpjPSht
cF9saW1iX3QgKilhbGxvY2EoMSpzaXplb2YobXBfbGltYl90KSk7TVBfSU5UIGI9ezEsMSxjfTsg
YSA9ICZiIAorI2RlZmluZSBJREVDTChhLGIsYykgbXBfbGltYl90ICpjPShtcF9saW1iX3QgKila
QUxMT0NBKDEqc2l6ZW9mKG1wX2xpbWJfdCkpO01QX0lOVCBiPXsxLDEsY307IGEgPSAmYiAKICNk
ZWZpbmUgU0VUUV9JTyh2YXIsYWxsb2MsdmFsLGFmKSB7IG9iamVjdCBfeHggPSAodmFsKTsgXAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9uOyBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKF9uPW9ial90b19tcHooX3h4LCh2YXIpKSkp
IHtcCkluZGV4OiBoL2NvbXBiYXMyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2Ns
L2djbC9oL2NvbXBiYXMyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNy42LjEuNi4xCmRpZmYg
LXUgLXIxLjcuNi4xLjYuMSBjb21wYmFzMi5oCi0tLSBoL2NvbXBiYXMyLmgJNSBBdWcgMjAwNCAy
MjoyMzo1NCAtMDAwMAkxLjcuNi4xLjYuMQorKysgaC9jb21wYmFzMi5oCTYgSnVuIDIwMDUgMjE6
NDk6NTQgLTAwMDAKQEAgLTE2MSwxMSArMTYxLDE1IEBACiAvKiAjZW5kaWYgKi8KICNpbmNsdWRl
IDxzdGRsaWIuaD4KIEVYVEVSIGNoYXIgKmFsbG9jYV92YWw7Ci0jZGVmaW5lIE9VUl9BTExPQ0Eo
bikgYWxsb2NhKG4pCisjZGVmaW5lIE9VUl9BTExPQ0EobikgWkFMTE9DQShuKQogI2RlZmluZSBB
TExPQ0FfRlJFRShuKSAKIAotI2RlZmluZSBBTExPQ0FfQ09OUyhuKSAoYWxsb2NhX3ZhbD1hbGxv
Y2EoKG4pKnNpemVvZihzdHJ1Y3QgY29ucykpKSAKLSNkZWZpbmUgT05fU1RBQ0tfQ09OUyh4LHkp
IChhbGxvY2FfdmFsPWFsbG9jYShzaXplb2Yoc3RydWN0IGNvbnMpKSwgb25fc3RhY2tfY29ucyh4
LHkpKSAKKyNkZWZpbmUgQUxMT0NBX0NPTlNfQUxJR04obikgKHthbGxvY2FfdmFsPVpBTExPQ0Eo
KG4pKnNpemVvZihzdHJ1Y3QgY29ucykrc2l6ZW9mKGFsbG9jYV92YWwpKTtpZiAoKCh1bnNpZ25l
ZCBsb25nKWFsbG9jYV92YWwpJnNpemVvZihhbGxvY2FfdmFsKSkgYWxsb2NhX3ZhbCs9c2l6ZW9m
KGFsbG9jYV92YWwpO2FsbG9jYV92YWw7fSkKKworI2RlZmluZSBBTExPQ0FfQ09OUyhuKSBBTExP
Q0FfQ09OU19BTElHTihuKQorI2RlZmluZSBPTl9TVEFDS19DT05TKHgseSkgKEFMTE9DQV9DT05T
X0FMSUdOKDEpLCBvbl9zdGFja19jb25zKHgseSkpIAorLyogI2RlZmluZSBBTExPQ0FfQ09OUyhu
KSAoYWxsb2NhX3ZhbD1hbGxvY2EoKG4pKnNpemVvZihzdHJ1Y3QgY29ucykrc2l6ZW9mKG4pKSxh
bGxvY2FfdmFsKz0oKHVuc2lnbmVkIGxvbmcpYWxsb2NhX3ZhbCZzaXplb2YobikpKSAqLworLyog
I2RlZmluZSBPTl9TVEFDS19DT05TKHgseSkgKGFsbG9jYV92YWw9YWxsb2NhKHNpemVvZihzdHJ1
Y3QgY29ucykpLCBvbl9zdGFja19jb25zKHgseSkpICAqLwogI2RlZmluZSBPTl9TVEFDS19MSVNU
IG9uX3N0YWNrX2xpc3QKICNkZWZpbmUgT05fU1RBQ0tfTElTVF9WRUNUT1Igb25fc3RhY2tfbGlz
dF92ZWN0b3IKICNkZWZpbmUgT05fU1RBQ0tfTElTVF9WRUNUT1JfTkVXIG9uX3N0YWNrX2xpc3Rf
dmVjdG9yX25ldwpJbmRleDogaC9ldmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qv
Z2NsL2djbC9oL2V2YWwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC11IC1y
MS4xLjEuMSBldmFsLmgKLS0tIGgvZXZhbC5oCTYgRGVjIDE5OTkgMjI6NDQ6MDIgLTAwMDAJMS4x
LjEuMQorKysgaC9ldmFsLmgJNiBKdW4gMjAwNSAyMTo0OTo1NSAtMDAwMApAQCAtMjYsOSArMjYs
MTUgQEAKIAogLyogIEMgY29udHJvbCBzdGFjayAgKi8KIAotI2RlZmluZQlDU1NJWkUJCTIwMDAw
Ci0jZGVmaW5lCUNTR0VUQQkJNDAwMAorLyogI2RlZmluZQlDU1NJWkUJCTIwMDAwICovCisvKiAj
ZGVmaW5lCUNTR0VUQQkJNDAwMCAqLwogCisjaWZkZWYgX19pYTY0X18KK0VYVEVSIGludCAqY3Nf
YmFzZTI7CitFWFRFUiBpbnQgKmNzX29yZzI7CisjZW5kaWYKKworRVhURVIgaW50ICpjc19iYXNl
OwogRVhURVIgaW50ICpjc19vcmc7CiBFWFRFUiBpbnQgKmNzX2xpbWl0OwogCkBAIC0zNiw5ICs0
MiwxMSBAQAogLyogd2UgY2F0Y2ggdGhlIHNlZ21lbnRhdGlvbiBmYXVsdCBhbmQgY2hlY2sgdG8g
d2FybiBvZiBjIHN0YWNrIG92ZXJmbG93ICovCiAjaWZkZWYgQVYKICNpZm5kZWYgY3NfY2hlY2sK
LSNkZWZpbmUJY3NfY2hlY2soc29tZXRoaW5nKSBcCi0JaWYgKChpbnQgKikoJnNvbWV0aGluZykg
PCBjc19saW1pdCkgXAotCQljc19vdmVyZmxvdygpCisjaWYgQ1NUQUNLX0RJUkVDVElPTiA9PSAt
MQorI2RlZmluZQljc19jaGVjayhzb21ldGhpbmcpIGlmICgobG9uZyAqKSgmc29tZXRoaW5nKSA8
IGNzX2xpbWl0KSBjc19vdmVyZmxvdygpCisjZWxzZQorI2RlZmluZQljc19jaGVjayhzb21ldGhp
bmcpIGlmICgobG9uZyAqKSgmc29tZXRoaW5nKSA+IGNzX2xpbWl0KSBjc19vdmVyZmxvdygpCisj
ZW5kaWYKICNlbmRpZgogI2VuZGlmCiAjaWZkZWYgTVYKSW5kZXg6IGgvZ2NsaW5jbC5oLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvaC9nY2xpbmNsLmguaW4sdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMjcuNi4xMC44LjEuNC4xCmRpZmYgLXUgLXIxLjI3LjYuMTAuOC4x
LjQuMSBnY2xpbmNsLmguaW4KLS0tIGgvZ2NsaW5jbC5oLmluCTE1IEphbiAyMDA1IDE5OjE3OjE4
IC0wMDAwCTEuMjcuNi4xMC44LjEuNC4xCisrKyBoL2djbGluY2wuaC5pbgk2IEp1biAyMDA1IDIx
OjQ5OjU1IC0wMDAwCkBAIC0xMSwxMyArMTEsMTQgQEAKIAogI2RlZmluZSBEQkVHSU4gMAogCi0j
ZGVmaW5lIE1BWFBBR0UgMTI4KjEwMjQKLSNkZWZpbmUgVlNTSVpFIDEyOCoxMDI0Ci0jZGVmaW5l
IEJEU1NJWkUgMioxMDI0Ci0jZGVmaW5lIElIU1NJWkUgNCoxMDI0Ci0jZGVmaW5lIEZSU1NJWkUg
NCoxMDI0CisjdW5kZWYgTUFYUEFHRQorI3VuZGVmIFZTU0laRQorI3VuZGVmIEJEU1NJWkUKKyN1
bmRlZiBJSFNTSVpFCisjdW5kZWYgRlJTU0laRQorI3VuZGVmIENTU0laRQogCi0jZGVmaW5lIEhP
TEVQQUdFIChNQVhQQUdFLzEwKQorI3VuZGVmIEhPTEVESVYKIAogI3VuZGVmIE5PX0dFVFRPRAog
CkBAIC02MCw2ICs2MSwxMyBAQAogI3VuZGVmIEhBVkVfU1ZfT05TVEFDSyAKIAogI2RlZmluZSBD
U1RBQ0tfQUREUkVTUyAwCisjZGVmaW5lIENTVEFDS19ESVJFQ1RJT04gMAorI2RlZmluZSBDU1RB
Q0tfQUxJR05NRU5UIDAKKyNkZWZpbmUgQ1NUQUNLX1RPUCAwCisjZGVmaW5lIENTVEFDS19SQU5H
RSAwCisjZGVmaW5lIFNIQVJFRF9MSUJfSEVBUF9DRUlMSU5HIDAKKyN1bmRlZiBJTV9GSVhfQkFT
RQorI3VuZGVmIElNX0ZJWF9MSU0KIAogI3VuZGVmIEhBVkVfU0lHU1lTCiAKSW5kZXg6IGgvZ21w
X3dyYXBwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9oL2dtcF93
cmFwcGVycy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMi4yLjQuMQpkaWZmIC11IC1yMS4x
LjIuMi40LjEgZ21wX3dyYXBwZXJzLmgKLS0tIGgvZ21wX3dyYXBwZXJzLmgJMTUgSmFuIDIwMDUg
MTY6Mjc6NTcgLTAwMDAJMS4xLjIuMi40LjEKKysrIGgvZ21wX3dyYXBwZXJzLmgJNiBKdW4gMjAw
NSAyMTo0OTo1NSAtMDAwMApAQCAtMTA4LDYgKzEwOCwxMiBAQAogICAgICAgICAgICByZXR1cm4g
Sm9pbihSUl8scnRfKTtcCiAgICB9CiAKK01FTV9HTVBfQ0FMTCgzLHZvaWQsbXB6X3VyYW5kb21t
LDEsbXB6X3QsZ21wX3JhbmRzdGF0ZV90LG1wel90KQorTUVNX0dNUF9DQUxMKDIsdm9pZCxnbXBf
cmFuZHNlZWQsMSxnbXBfcmFuZHN0YXRlX3QsbXB6X3QpCitNRU1fR01QX0NBTEwoMix2b2lkLGdt
cF9yYW5kc2VlZF91aSwxLGdtcF9yYW5kc3RhdGVfdCx1bnNpZ25lZCBsb25nIGludCkKK01FTV9H
TVBfQ0FMTCgxLHZvaWQsZ21wX3JhbmRpbml0X2RlZmF1bHQsMCxnbXBfcmFuZHN0YXRlX3QpCisK
KwogTUVNX0dNUF9DQUxMKDMsdm9pZCxtcHpfYWRkLDEsbXB6X3QsbXB6X3QsbXB6X3QpCiBNRU1f
R01QX0NBTEwoMyx2b2lkLG1wel9hZGRfdWksMSxtcHpfdCxtcHpfdCx1bnNpZ25lZCBsb25nIGlu
dCkKIE1FTV9HTVBfQ0FMTCgzLHZvaWQsbXB6X3N1YiwxLG1wel90LG1wel90LG1wel90KQpAQCAt
MTM5LDYgKzE0NSwxMSBAQAogCiAgICAgIC8qIEZJWE1FOiBmaW5kIGEgd2F5IHRvIGhhdmUgdGhp
cyBmb2xsb3cgdGhlIGNvbnZlbnRpb24gaW4gZ21wLmgqLwogCisjZGVmaW5lIF9fZ21wel91cmFu
ZG9tbSBtX19nbXB6X3VyYW5kb21tCisjZGVmaW5lIF9fZ21wX3JhbmRzZWVkIG1fX2dtcF9yYW5k
c2VlZCAKKyNkZWZpbmUgX19nbXBfcmFuZHNlZWRfdWkgbV9fZ21wX3JhbmRzZWVkX3VpCisjZGVm
aW5lIF9fZ21wX3JhbmRpbml0X2RlZmF1bHQgbV9fZ21wX3JhbmRpbml0X2RlZmF1bHQKKwogI2Rl
ZmluZSBfX2dtcHpfYWRkIG1fX2dtcHpfYWRkCiAjZGVmaW5lIF9fZ21wel9hZGRfdWkgbV9fZ21w
el9hZGRfdWkKICNkZWZpbmUgX19nbXB6X3N1YiBtX19nbXB6X3N1YgpJbmRleDogaC9saW51eC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvaC9saW51eC5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjcuNi40CmRpZmYgLXUgLXIxLjcuNi40IGxpbnV4LmgKLS0tIGgvbGlu
dXguaAkzIE1heSAyMDA0IDIxOjM1OjU4IC0wMDAwCTEuNy42LjQKKysrIGgvbGludXguaAk2IEp1
biAyMDA1IDIxOjQ5OjU1IC0wMDAwCkBAIC00Nyw2ICs0Nyw4IEBACiAKICNlbmRpZgogCisjdW5k
ZWYgU0VUVVBfU0lHX1NUQUNLCisKICNkZWZpbmUgRUxGX1RFWFRfQkFTRSAgREJFR0lOCiAKICN1
bmRlZiBTRVRfUkVBTF9NQVhQQUdFCkBAIC04MCw3ICs4Miw2IEBACiAjdW5kZWYgSEFWRV9TSUdW
RUMKICNkZWZpbmUgSEFWRV9TSUdBQ1RJT04KIC8qIG1ha2UgdGhpcyBhIG5vb3AgKi8KLSNkZWZp
bmUgU0VUVVBfU0lHX1NUQUNLCiAjaWZuZGVmIEhBVkVfU1ZfT05TVEFDSwogI2RlZmluZSBTVl9P
TlNUQUNLIDAKICNlbmRpZgpAQCAtMTI1LDcgKzEyNiw3IEBACiAKIAogI2RlZmluZSBJTlNUQUxM
X1NFR01FTlRBVElPTl9DQVRDSEVSIFwKLSAgCSAodm9pZCkgc2lnbmFsKFNJR1NFR1Ysc2VnbWVu
dGF0aW9uX2NhdGNoZXIpCisgIAkgKHZvaWQpIGdjbF9zaWduYWwoU0lHU0VHVixzZWdtZW50YXRp
b25fY2F0Y2hlcikKIAogCiAvKiBnZXQgdGhlIGZpbGVubyBvZiBhIEZJTEUqICovCkluZGV4OiBo
L21nbXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2gvbWdtcC5oLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcjEuMSBtZ21wLmgKLS0tIGgvbWdtcC5o
CTMwIEF1ZyAyMDAyIDAyOjExOjIzIC0wMDAwCTEuMQorKysgaC9tZ21wLmgJNiBKdW4gMjAwNSAy
MTo0OTo1NSAtMDAwMApAQCAtMSwzICsxLDQgQEAKKyNpZiAxCiAjaWZkZWYgX19TSE9SVF9MSU1C
CiB0eXBlZGVmIHVuc2lnbmVkIGludAkJbXBfbGltYl90OwogI2Vsc2UKQEAgLTIxLDQgKzIyLDM0
IEBACiB9IF9fbXB6X3N0cnVjdDsKIAogdHlwZWRlZiBfX21wel9zdHJ1Y3QgTVBfSU5UOwordHlw
ZWRlZiBfX21wel9zdHJ1Y3QgKiBtcHpfdDsKIAorLyogQXZhaWxhYmxlIHJhbmRvbSBudW1iZXIg
Z2VuZXJhdGlvbiBhbGdvcml0aG1zLiAgKi8KK3R5cGVkZWYgZW51bQoreworICBHTVBfUkFORF9B
TEdfREVGQVVMVCA9IDAsCisgIEdNUF9SQU5EX0FMR19MQyA9IEdNUF9SQU5EX0FMR19ERUZBVUxU
IC8qIExpbmVhciBjb25ncnVlbnRpYWwuICAqLworfSBnbXBfcmFuZGFsZ190OworCisvKiBMaW5l
YXIgY29uZ3J1ZW50aWFsIGRhdGEgc3RydWN0LiAgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgbXB6
X3QgX21wX2E7CQkJLyogTXVsdGlwbGllci4gKi8KKyAgdW5zaWduZWQgbG9uZyBpbnQgX21wX2M7
CS8qIEFkZGVyLiAqLworICBtcHpfdCBfbXBfbTsJCQkvKiBNb2R1bHVzICh2YWxpZCBvbmx5IGlm
IG0yZXhwID09IDApLiAgKi8KKyAgdW5zaWduZWQgbG9uZyBpbnQgX21wX20yZXhwOwkvKiBJZiAh
PSAwLCBtb2R1bHVzIGlzIDIgXiBtMmV4cC4gICovCit9IF9fZ21wX3JhbmRhdGFfbGM7CisKKy8q
IFJhbmRvbSBzdGF0ZSBzdHJ1Y3QuICAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgbXB6X3QgX21w
X3NlZWQ7CQkvKiBDdXJyZW50IHNlZWQuICAqLworICBnbXBfcmFuZGFsZ190IF9tcF9hbGc7CS8q
IEFsZ29yaXRobSB1c2VkLiAgKi8KKyAgdW5pb24gewkJCS8qIEFsZ29yaXRobSBzcGVjaWZpYyBk
YXRhLiAgKi8KKyAgICBfX2dtcF9yYW5kYXRhX2xjICpfbXBfbGM7CS8qIExpbmVhciBjb25ncnVl
bnRpYWwuICAqLworICB9IF9tcF9hbGdkYXRhOworfSBfX2dtcF9yYW5kc3RhdGVfc3RydWN0Owor
dHlwZWRlZiBfX2dtcF9yYW5kc3RhdGVfc3RydWN0IGdtcF9yYW5kc3RhdGVfdFsxXTsKKworI2Vs
c2UKKyNpbmNsdWRlIDxnbXAuaD4KKyNlbmRpZgpJbmRleDogaC9tcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnNyb290L2djbC9nY2wvaC9tcC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYu
Ni4xLjEyLjEKZGlmZiAtdSAtcjEuNi42LjEuMTIuMSBtcC5oCi0tLSBoL21wLmgJMTUgSmFuIDIw
MDUgMTY6Mjc6MzYgLTAwMDAJMS42LjYuMS4xMi4xCisrKyBoL21wLmgJNiBKdW4gMjAwNSAyMTo0
OTo1NSAtMDAwMApAQCAtNTYsMTAgKzU2LDExIEBACiAgICAgICB9IHdoaWxlKDApCiAKIAotI2Rl
ZmluZSBNWW1ha2VfZml4bnVtKGFjdGlvbix4KSBcCi0gIGRve3JlZ2lzdGVyIGludCBDTVB0MTsg
XAotICAgYWN0aW9uIFwKLSAgICgoKChDTVB0MT0oeCkpKzEwMjQpJi0yMDQ4KT09MD9zbWFsbF9m
aXhudW0oQ01QdDEpOm1ha2VfZml4bnVtMShDTVB0MSkpO313aGlsZSgwKQorLyogI2RlZmluZSBN
WW1ha2VfZml4bnVtKGFjdGlvbix4KSBcICovCisvKiAgIGRve3JlZ2lzdGVyIGludCBDTVB0MTsg
XCAqLworLyogICAgYWN0aW9uIFwgKi8KKy8qICAgICgoKChDTVB0MT0oeCkpK1NNQUxMX0ZJWE5V
TV9MSU1JVCkmKC0yKlNNQUxMX0ZJWE5VTV9MSU1JVCkpPT0wP3NtYWxsX2ZpeG51bShDTVB0MSk6
bWFrZV9maXhudW0xKENNUHQxKSk7fXdoaWxlKDApICovCisjZGVmaW5lIE1ZbWFrZV9maXhudW0o
YWN0aW9uLHgpIGFjdGlvbiBtYWtlX2ZpeG51bSh4KQogICAgICAKICNkZWZpbmUgaW5lZyhhXykg
KHNpemVvZihhXyk9PXNpemVvZih1bnNpZ25lZCkgPyAodW5zaWduZWQpLShhXykgOiAodW5zaWdu
ZWQgbG9uZyktKGFfKSkKIApJbmRleDogaC9ub3Rjb21wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2c3Jvb3QvZ2NsL2djbC9oL25vdGNvbXAuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNS42
LjMuOC4xCmRpZmYgLXUgLXIxLjE1LjYuMy44LjEgbm90Y29tcC5oCi0tLSBoL25vdGNvbXAuaAkx
MiBBdWcgMjAwNCAxNjoyNzo0MyAtMDAwMAkxLjE1LjYuMy44LjEKKysrIGgvbm90Y29tcC5oCTYg
SnVuIDIwMDUgMjE6NDk6NTUgLTAwMDAKQEAgLTYsNiArNiwxMiBAQAogCiB2b2lkIGVudGVyX21h
cmtfb3JpZ2luKCkgOwogCisjaWZkZWYgX19pYTY0X18KK0VYVEVSIGludCAqY3NfYmFzZTI7CitF
WFRFUiBpbnQgKmNzX29yZzI7CisjZW5kaWYKKworRVhURVIgaW50ICpjc19iYXNlOyAgICAgCiBF
WFRFUiBpbnQgKmNzX29yZzsgICAgIAogRVhURVIgaW50IEdCQ19lbmFibGU7CiAKSW5kZXg6IGgv
b2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9oL29iamVjdC5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE4LjQuMS4yLjEuMi41LjYuMQpkaWZmIC11IC1yMS4x
OC40LjEuMi4xLjIuNS42LjEgb2JqZWN0LmgKLS0tIGgvb2JqZWN0LmgJNSBBdWcgMjAwNCAyMjoz
MTozOSAtMDAwMAkxLjE4LjQuMS4yLjEuMi41LjYuMQorKysgaC9vYmplY3QuaAk2IEp1biAyMDA1
IDIxOjQ5OjU1IC0wMDAwCkBAIC0zMCw3ICszMCwxOSBAQAogI2RlZmluZQlUUlVFCQkxCS8qICBi
b29sZWFuIHRydWUgdmFsdWUgICovCiAjZGVmaW5lCUZBTFNFCQkwCS8qICBib29sZWFuIGZhbHNl
IHZhbHVlICAqLwogCi0jZGVmaW5lIEZJUlNUV09SRCB1bnNpZ25lZCBjaGFyICB0LGZsYWc7IGNo
YXIgcyxtCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgd29yZDsKKworI2lmZGVmIExJVFRMRV9FTkQK
KyNkZWZpbmUgRklSU1RXT1JEIHdvcmQgZToxLG06MSxmOjEsczoxLHo6NCx0OjgKKyNkZWZpbmUg
TUFSS1dPUkQgIHdvcmQgZToxLG1mOjIsczoxLHo6NCx0OjgKKyNkZWZpbmUgU0dDTVdPUkQgIHdv
cmQgZToxLG1mczozLHo6NCx0OjgKKy8qICNkZWZpbmUgRklSU1RXT1JEIGNoYXIgZToxLG06MSxm
OjEsejo1O3Vuc2lnbmVkIGNoYXIgIHQsZmxhZzsgY2hhciBzICovCisjZWxzZQorI2RlZmluZSBG
SVJTVFdPUkQgd29yZCB0Ojgsejo0LHM6MSxmOjEsbToxLGU6MQorI2RlZmluZSBNQVJLV09SRCAg
d29yZCB0Ojgsejo0LHM6MSxtZjoyLGU6MQorI2RlZmluZSBTR0NNV09SRCAgd29yZCB0Ojgsejo0
LG1mczozLGU6MQorLyogI2RlZmluZSBGSVJTVFdPUkQgY2hhciBzOyB1bnNpZ25lZCBjaGFyIGZs
YWcsdDtjaGFyIHo6NSxmOjEsbToxLGU6MTsgKi8KKyNlbmRpZgogCiAjZGVmaW5lCU5CUFAJCTQJ
LyogIG51bWJlciBvZiBieXRlcyBwZXIgcG9pbnRlciAgKi8KIApAQCAtMTA1LDE2ICsxMTcsNTUg
QEAKIAkJRklSU1RXT1JEOwogCWZpeG51bQlGSVhWQUw7CQkvKiAgZml4bnVtIHZhbHVlICAqLwog
fTsKLSNkZWZpbmUJTWZpeChvYmplKQkob2JqZSktPkZJWC5GSVhWQUwKLSNkZWZpbmUgZml4KHgp
IE1maXgoeCkKKy8qICNkZWZpbmUJTWZpeChvYmplKQkob2JqZSktPkZJWC5GSVhWQUwgKi8KKy8q
ICNkZWZpbmUgZml4KHgpIE1maXgoeCkgKi8KKworLyogI2RlZmluZQlTTUFMTF9GSVhOVU1fTElN
SVQJMTAyNCAqLworLyogI2RlZmluZQlTTUFMTF9GSVhOVU1fTElNSVQJMTA0ODU3NiAqLwogCi0j
ZGVmaW5lCVNNQUxMX0ZJWE5VTV9MSU1JVAkxMDI0CisvKiBFWFRFUiAqLworLyogc3RydWN0IGZp
eG51bV9zdHJ1Y3Qgc21hbGxfZml4bnVtX3RhYmxlWzIqU01BTExfRklYTlVNX0xJTUlUXTsgKi8K
IAotRVhURVIKLXN0cnVjdCBmaXhudW1fc3RydWN0IHNtYWxsX2ZpeG51bV90YWJsZVsyKlNNQUxM
X0ZJWE5VTV9MSU1JVF07CisvKiAjZGVmaW5lCXNtYWxsX2ZpeG51bShpKSAgXCAqLworLyogCShv
YmplY3QpKHNtYWxsX2ZpeG51bV90YWJsZStTTUFMTF9GSVhOVU1fTElNSVQrKGkpKSAqLworCisK
KyNpZiBkZWZpbmVkIChJTV9GSVhfQkFTRSkgJiYgZGVmaW5lZChJTV9GSVhfTElNKQorI2RlZmlu
ZSAgICAgIG1ha2VfaW1tX2ZpeG51bShhXykgICAgICAgICgob2JqZWN0KSgoYV8pKyhJTV9GSVhf
QkFTRSsoSU1fRklYX0xJTT4+MSkpKSkKKyNkZWZpbmUgICAgICAgZml4X2ltbV9maXhudW0oYV8p
ICAgICAgICAoKChmaXhudW0pKGFfKSktKElNX0ZJWF9CQVNFKyhJTV9GSVhfTElNPj4xKSkpCisj
ZGVmaW5lICAgICAgbWFya19pbW1fZml4bnVtKGFfKSAgICAgICAgKChhXyk9KChvYmplY3QpKCgo
Zml4bnVtKShhXykpIHwgSU1fRklYX0xJTSkpKQorI2RlZmluZSAgICB1bm1hcmtfaW1tX2ZpeG51
bShhXykgICAgICAgICgoYV8pPSgob2JqZWN0KSgoKGZpeG51bSkoYV8pKSAmfiBJTV9GSVhfTElN
KSkpCisjZGVmaW5lICAgICAgICBpc19pbW1fZml4bnVtKGFfKSAgICAgICAgKCgodW5zaWduZWQg
bG9uZykoYV8pKT49SU1fRklYX0JBU0UpCisjZGVmaW5lIGlzX21hcmtlZF9pbW1fZml4bnVtKGFf
KSAgICAgICAgKCgoZml4bnVtKShhXykpJklNX0ZJWF9MSU0pCisjZGVmaW5lICAgICAgICAgICBp
c19pbW1fZml4KGFfKSAgICAgICAgKCEoKChhXykrKElNX0ZJWF9MSU0+PjEpKSYtSU1fRklYX0xJ
TSkpCisjZGVmaW5lICAgICAgICB1bl9pbW1fZml4bnVtKGFfKSAgICAgICAgKChhXyk9KChvYmpl
Y3QpKCgoZml4bnVtKShhXykpJn4oSU1fRklYX0JBU0V8SU1fRklYX0xJTSkpKSkKKyNlbHNlCisj
ZGVmaW5lICAgICAgbWFrZV9pbW1fZml4bnVtKGFfKSAgICAgICAgbWFrZV9maXhudW0xKGFfKQor
I2RlZmluZSAgICAgICBmaXhfaW1tX2ZpeG51bShhXykgICAgICAgIG1ha2VfZml4bnVtMShhXykK
KyNkZWZpbmUgICAgICBtYXJrX2ltbV9maXhudW0oYV8pICAgICAgICAKKyNkZWZpbmUgICAgdW5t
YXJrX2ltbV9maXhudW0oYV8pICAgICAgICAKKyNkZWZpbmUgICAgICAgIGlzX2ltbV9maXhudW0o
YV8pICAgICAgICAwCisjZGVmaW5lIGlzX21hcmtlZF9pbW1fZml4bnVtKGFfKSAgICAgICAgMAor
I2RlZmluZSAgICAgICAgICAgaXNfaW1tX2ZpeChhXykgICAgICAgIDAKKyNkZWZpbmUgICAgICAg
IHVuX2ltbV9maXhudW0oYV8pICAgICAgICAKKyNlbmRpZgogCi0jZGVmaW5lCXNtYWxsX2ZpeG51
bShpKSAgXAotCShvYmplY3QpKHNtYWxsX2ZpeG51bV90YWJsZStTTUFMTF9GSVhOVU1fTElNSVQr
KGkpKQorI2RlZmluZSBtYWtlX2ZpeG51bShhXykgICh7cmVnaXN0ZXIgZml4bnVtIF9xMT0oYV8p
O3JlZ2lzdGVyIG9iamVjdCBfcTM7X3EzPWlzX2ltbV9maXgoX3ExKSA/IG1ha2VfaW1tX2ZpeG51
bShfcTEpIDogbWFrZV9maXhudW0xKF9xMSk7X3EzO30pCisjZGVmaW5lIGZpeChhXykgICAgICAg
ICAgKHtyZWdpc3RlciBvYmplY3QgX3EyPShhXyk7cmVnaXN0ZXIgZml4bnVtIF9xNDtfcTQ9aXNf
aW1tX2ZpeG51bShfcTIpID8gZml4X2ltbV9maXhudW0oX3EyKSA6ICAoX3EyKS0+RklYLkZJWFZB
TDtfcTQ7fSkKKyNkZWZpbmUgTWZpeChhXykgICAgICAgICBmaXgoYV8pCisjZGVmaW5lIHNtYWxs
X2ZpeG51bShhXykgbWFrZV9maXhudW0oYV8pIC8qbWFrZV9pbW1fZml4bnVtKGFfKSovCisjZGVm
aW5lIHNldF9maXgoYV8sYl8pICAgKChhXyktPkZJWC5GSVhWQUw9KGJfKSkKKworI2RlZmluZSBa
Y2RyKGFfKSAgICAgICAgICAgICAgICAgKCoob2JqZWN0ICopKGFfKSkvKiAoKGFfKS0+Yy5jX2Nk
cikgKi8gLypGSVhNRSovCisjZGVmaW5lIGlzX21hcmtlZChhXykgICAgICAgICAgICAoaXNfaW1t
X2ZpeG51bShaY2RyKGFfKSkgPyBpc19tYXJrZWRfaW1tX2ZpeG51bShaY2RyKGFfKSkgOiAoYV8p
LT5kLm0pCisjZGVmaW5lIGlzX21hcmtlZF9vcl9mcmVlKGFfKSAgICAoaXNfaW1tX2ZpeG51bSha
Y2RyKGFfKSkgPyBpc19tYXJrZWRfaW1tX2ZpeG51bShaY2RyKGFfKSkgOiAoYV8pLT5tZC5tZikK
KyNkZWZpbmUgbWFyayhhXykgICAgICAgICAgICAgICAgIGlmIChpc19pbW1fZml4bnVtKFpjZHIo
YV8pKSkgbWFya19pbW1fZml4bnVtKFpjZHIoYV8pKTsgZWxzZSAoYV8pLT5kLm09MQorI2RlZmlu
ZSB1bm1hcmsoYV8pICAgICAgICAgICAgICAgaWYgKGlzX2ltbV9maXhudW0oWmNkcihhXykpKSB1
bm1hcmtfaW1tX2ZpeG51bShaY2RyKGFfKSk7IGVsc2UgKGFfKS0+ZC5tPTAKKyNkZWZpbmUgaXNf
ZnJlZShhXykgICAgICAgICAgICAgICghaXNfaW1tX2ZpeG51bShhXykgJiYgIWlzX2ltbV9maXhu
dW0oWmNkcihhXykpICYmIChhXyktPmQuZikKKyNkZWZpbmUgbWFrZV9mcmVlKGFfKSAgICAgICAg
ICAgIHt1bl9pbW1fZml4bnVtKFpjZHIoYV8pKTsoYV8pLT5kLmY9MTsoYV8pLT5kLm09MDt9Cisj
ZGVmaW5lIG1ha2VfdW5mcmVlKGFfKSAgICAgICAgICB7dW5faW1tX2ZpeG51bShaY2RyKGFfKSk7
KGFfKS0+ZC5mPTA7KGFfKS0+ZC5tPTA7fQorCisjZGVmaW5lIGlzX2NvbnMoYV8pICAoaXNfaW1t
X2ZpeG51bShaY2RyKGFfKSkgfHwgIShhXyktPmQuZSkKIAogc3RydWN0IHNob3J0ZmxvYXRfc3Ry
dWN0IHsKIAkJCUZJUlNUV09SRDsKQEAgLTEyNiw2ICsxNzcsNyBAQAogc3RydWN0IGxvbmdmbG9h
dF9zdHJ1Y3QgewogCQkJRklSU1RXT1JEOwogCWxvbmdmbG9hdAlMRlZBTDsJLyogIGxvbmdmbG9h
dCB2YWx1ZSAgKi8KKyAgICAgICAgb2JqZWN0ICBwYWQ7CiB9OwogI2RlZmluZQlNbGYob2JqZSkJ
KG9iamUpLT5MRi5MRlZBTAogI2RlZmluZSBsZih4KSBNbGYoeCkKQEAgLTE2Miw2ICsyMTQsNyBA
QAogCQkJCS8qICBtdXN0IGJlIGFuIGludGVnZXIgICovCiAJb2JqZWN0CXJhdF9udW07CS8qICBu
dW1lcmF0b3IgICovCiAJCQkJLyogIG11c3QgYmUgYW4gaW50ZWdlciAgKi8KKyAgICAgICAgb2Jq
ZWN0ICBwYWQ7CiB9OwogCiBzdHJ1Y3QgY29tcGxleCB7CkBAIC0xNzAsNiArMjIzLDcgQEAKIAkJ
CQkvKiAgbXVzdCBiZSBhIG51bWJlciAgKi8KIAlvYmplY3QJY21wX2ltYWc7CS8qICBpbWFnaW5h
cnkgcGFydCAgKi8KIAkJCQkvKiAgbXVzdCBiZSBhIG51bWJlciAgKi8KKyAgICAgICAgb2JqZWN0
ICBwYWQ7CiB9OwogCiBzdHJ1Y3QgY2hhcmFjdGVyIHsKQEAgLTE5NSwxMiArMjQ5LDEyIEBACiAg
ICAgICAgIHN0cF9zcGVjaWFsCQkvKiAgc3BlY2lhbCAgKi8KIH07CiAKLSNkZWZpbmUJQ25pbAkJ
CSgob2JqZWN0KSZDbmlsX2JvZHkpCi0jZGVmaW5lCUN0CQkJKChvYmplY3QpJkN0X2JvZHkpCi0j
ZGVmaW5lIHNMbmlsIENuaWwKLSNkZWZpbmUgc0x0IEN0CisvKiAjZGVmaW5lCUNuaWwJCQkoKG9i
amVjdCkmQ25pbF9ib2R5KSAqLworLyogI2RlZmluZQlDdAkJCSgob2JqZWN0KSZDdF9ib2R5KSAq
LworCisvKiAjZGVmaW5lCUNuaWwJCQkoKG9iamVjdCkmKENuaWxDdCsxKSkgKi8KKy8qICNkZWZp
bmUJQ3QJCQkoKG9iamVjdCkmKENuaWxDdCsxK3NpemVvZihzdHJ1Y3Qgc3ltYm9sKSkpICovCiAK
LSNkZWZpbmUJTk9UX1NQRUNJQUwJCSgodm9pZCAoKikoKSlDbmlsKQogI2RlZmluZQlzX2ZpbGxw
CQlzdF9maWxscAogI2RlZmluZQlzX3NlbGYJCXN0X3NlbGYKIApAQCAtMjI0LDkgKzI3OCwyMCBA
QAogCXNob3J0CXNfc3R5cGU7CS8qICBzeW1ib2wgdHlwZSAgKi8KIAkJCQkvKiAgb2YgZW51bSBz
dHlwZSAgKi8KIAlzaG9ydAlzX21mbGFnOwkvKiAgbWFjcm8gZmxhZyAgKi8KKyAgICAgICAgZml4
bnVtICBzX2hhc2g7CiB9OwogRVhURVIgCi1zdHJ1Y3Qgc3ltYm9sIENuaWxfYm9keSwgQ3RfYm9k
eTsKKy8qIHN0cnVjdCBzeW1ib2wgQ25pbF9ib2R5LCBDdF9ib2R5OyAqLworY2hhciBDbmlsQ3Rb
MypzaXplb2Yoc3RydWN0IHN5bWJvbCkrMV07CisvKkZJWE1FIC0tIHRoZXNlIG5lZWQgdG8gYmUg
Y29uc3RhbnQgaW5pdGlhbGl6ZXJzLCBlLmcuIGluIHNfbXlfZG90Ki8KKworI2RlZmluZSBDbmls
ICAgKChvYmplY3QpKENuaWxDdCkpCisjZGVmaW5lIEN0ICAgICAoKG9iamVjdCkoQ25pbEN0K3Np
emVvZihzdHJ1Y3Qgc3ltYm9sKSkpCisjZGVmaW5lIERvdG5pbCAoKG9iamVjdCkoQ25pbEN0KzIq
c2l6ZW9mKHN0cnVjdCBzeW1ib2wpKSkKKyNkZWZpbmUgc0xuaWwgQ25pbAorI2RlZmluZSBzTHQg
Q3QKKworI2RlZmluZQlOT1RfU1BFQ0lBTAkJKCh2b2lkICgqKSgpKUNuaWwpCiAKIHN0cnVjdCBw
YWNrYWdlIHsKIAkJRklSU1RXT1JEOwpAQCAtMjQ1LDYgKzMxMCw3IEBACiAgICAgICAgIGludCBw
X2V4dGVybmFsX2ZwOyAgICAvKiBbcm91Z2hdICBudW1iZXIgb2Ygc3ltYm9scyAqLwogCXN0cnVj
dCBwYWNrYWdlCiAJCSpwX2xpbms7CS8qICBwYWNrYWdlIGxpbmsgICovCisgICAgICAgIG9iamVj
dCAgcGFkOwogfTsKIAogLyoKQEAgLTI2MCw4ICszMjYsOSBAQAogKi8KIEVYVEVSIHN0cnVjdCBw
YWNrYWdlICpwYWNrX3BvaW50ZXI7CS8qICBwYWNrYWdlIHBvaW50ZXIgICovCiAKKyNkZWZpbmUg
U2NkcihhXykgKHtvYmplY3QgX3Q9KGFfKS0+Yy5jX2NkcjttYWtlX3VuZnJlZSgob2JqZWN0KSZf
dCk7X3Q7fSkKIHN0cnVjdCBjb25zIHsKLQkJRklSU1RXT1JEOworLyogCQlGSVJTVFdPUkQ7ICov
CiAJb2JqZWN0CWNfY2RyOwkJLyogIGNkciAgKi8KIAlvYmplY3QJY19jYXI7CQkvKiAgY2FyICAq
LwogfTsKQEAgLTI4Nyw2ICszNTQsOCBAQAogCWludAlodF9zaXplOwkvKiAgaGFzaCB0YWJsZSBz
aXplICAqLwogCXNob3J0CWh0X3Rlc3Q7CS8qICBrZXkgdGVzdCBmdW5jdGlvbiAgKi8KIAkJCQkv
KiAgb2YgZW51bSBodHRlc3QgICovCisgICAgICAgIHNob3J0ICAgcGFkMTsKKyAgICAgICAgb2Jq
ZWN0ICBwYWQ7CiB9OwogCiBlbnVtIGFlbHR0eXBlIHsJCQkvKiAgYXJyYXkgZWxlbWVudCB0eXBl
ICAqLwpAQCAtMzEzLDYgKzM4Miw3IEBACiAJc2hvcnQJYV9vZmZzZXQ7CS8qICBiaXR2ZWN0b3Ig
b2Zmc2V0ICAqLwogCWludAlhX2RpbTsJCS8qICBkaW1lbnNpb24gICovCiAJaW50CSphX2RpbXM7
CS8qICB0YWJsZSBvZiBkaW1lbnNpb25zICAqLworICAgICAgICBvYmplY3QgIHBhZDsKIAogfTsK
IApAQCAtMzMxLDYgKzQwMSw3IEBACiAJaW50CXZfZGltOwkJLyogIGRpbWVuc2lvbiAgKi8KIAlz
aG9ydAl2X2FkanVzdGFibGU7CS8qICBhZGp1c3RhYmxlIGZsYWcgICovCiAJc2hvcnQJdl9vZmZz
ZXQ7CS8qICBub3QgdXNlZCAgKi8KKyAgICAgICAgb2JqZWN0ICBwYWQ7CiB9OwogCiBzdHJ1Y3Qg
c3RyaW5nIHsJCQkvKiAgc3RyaW5nIGhlYWRlciAgKi8KQEAgLTM4Nyw2ICs0NTgsNyBAQAogCXNo
b3J0CWJ2X29mZnNldDsJLyogIGJpdHZlY3RvciBvZmZzZXQgICovCiAJCQkJLyogIHRoZSBwb3Np
dGlvbiBvZiB0aGUgZmlyc3QgYml0ICAqLwogCQkJCS8qICBpbiB0aGUgZmlyc3QgYnl0ZSAgKi8K
KyAgICAgICAgb2JqZWN0ICBwYWQ7CiB9OwogCiBzdHJ1Y3QgZml4YXJyYXkgewkJLyogIGZpeG51
bSBhcnJheSBoZWFkZXIgICovCkBAIC0zOTksNiArNDcxLDcgQEAKIAlzaG9ydAlmaXhhX29mZnNl
dDsJLyogIG5vdCB1c2VkICAqLwogCWludAlmaXhhX2RpbTsJLyogIGRpbWVuc2lvbiAgKi8KIAlp
bnQJKmZpeGFfZGltczsJLyogIHRhYmxlIG9mIGRpbWVuc2lvbnMgICovCisgICAgICAgIG9iamVj
dCAgcGFkOwogCiB9OwogCkBAIC00MTQsNiArNDg3LDcgQEAKIAlpbnQJc2ZhX2RpbTsJLyogIGRp
bWVuc2lvbiAgKi8KIAogCWludAkqc2ZhX2RpbXM7CS8qICB0YWJsZSBvZiBkaW1lbnNpb25zICAq
LworICAgICAgICBvYmplY3QgIHBhZDsKIAogCiAKQEAgLTQzMCw2ICs1MDQsNyBAQAogCXNob3J0
CWxmYV9vZmZzZXQ7CS8qICBub3QgdXNlZCAgKi8KIAlpbnQJbGZhX2RpbTsJCS8qICBkaW1lbnNp
b24gICovCiAJaW50CSpsZmFfZGltczsJLyogIHRhYmxlIG9mIGRpbWVuc2lvbnMgICovCisgICAg
ICAgIG9iamVjdCAgcGFkOwogCiAKIH07CkBAIC00MzgsNiArNTEzLDcgQEAKIAkJRklSU1RXT1JE
OwogCW9iamVjdAlzdHJfZGVmOwkvKiAgc3RydWN0dXJlIGRlZmluaXRpb24gKGEgc3RydWN0dXJl
KSAgKi8KIAlvYmplY3QJKnN0cl9zZWxmOwkvKiAgc3RydWN0dXJlIHNlbGYgICovCisgICAgICAg
IG9iamVjdCAgcGFkOwogfTsKIAogc3RydWN0IHNfZGF0YSB7b2JqZWN0IG5hbWU7CkBAIC01NTUs
NyArNjMxLDggQEAKIAogc3RydWN0IHJhbmRvbSB7CiAJCQlGSVJTVFdPUkQ7Ci0JdW5zaWduZWQJ
cm5kX3ZhbHVlOwkvKiAgcmFuZG9tIHN0YXRlIHZhbHVlICAqLworX19nbXBfcmFuZHN0YXRlX3N0
cnVjdCAgcm5kX3N0YXRlOworLyogCXVuc2lnbmVkCXJuZF92YWx1ZTsgKi8JLyogIHJhbmRvbSBz
dGF0ZSB2YWx1ZSAgKi8KIH07CiAKIGVudW0gY2hhdHRyaWIgewkJCS8qICBjaGFyYWN0ZXIgYXR0
cmlidXRlICAqLwpAQCAtNTkxLDYgKzY2OCw3IEBACiAJb2JqZWN0CXBuX25hbWU7CS8qICBuYW1l
ICAqLwogCW9iamVjdAlwbl90eXBlOwkvKiAgdHlwZSAgKi8KIAlvYmplY3QJcG5fdmVyc2lvbjsJ
LyogIHZlcnNpb24gICovCisgICAgICAgIG9iamVjdCAgcGFkOwogfTsKIAogc3RydWN0IGNmdW4g
ewkJCS8qICBjb21waWxlZCBmdW5jdGlvbiBoZWFkZXIgICovCkBAIC02MTAsNiArNjg4LDcgQEAK
IAkJCQkvKiAgZm9yIEdCQyAgKi8KIAlpbnQgY2NfZW52ZGltOwogCW9iamVjdAkqY2NfdHVyYm87
CS8qICB0dXJibyBjaGFyZ2VyICovCisgICAgICAgIG9iamVjdCAgcGFkOwogfTsKIAogc3RydWN0
IGNsb3N1cmUgewpAQCAtNjI4LDYgKzcwNyw3IEBACiAJb2JqZWN0CSgqc2ZuX3NlbGYpKCk7ICAv
KiBDIHN0YXJ0IGFkZHJlc3Mgb2YgY29kZSAqLwogCW9iamVjdAlzZm5fZGF0YTsgICAgICAgLyog
VG8gb2JqZWN0IGhvbGRpbmcgVlYgdmVjdG9yICovCiAJaW50IHNmbl9hcmdkOyAgICAgICAgICAg
LyogZGVzY3JpcHRpb24gb2YgYXJncyArIG51bWJlciAqLworICAgICAgICBvYmplY3QgIHBhZDsK
IAogCSAgICAgIH07CiAKQEAgLTYzOCw2ICs3MTgsNyBAQAogCW9iamVjdAl2Zm5fZGF0YTsgICAg
ICAgLyogVG8gb2JqZWN0IGhvbGRpbmcgVlYgZGF0YSAqLwogCXVuc2lnbmVkIHNob3J0IHZmbl9t
aW5hcmdzOyAvKiBNaW4gYXJncyBhbmQgd2hlcmUgdmFyYXJncyBzdGFydCAqLwogCXVuc2lnbmVk
IHNob3J0IHZmbl9tYXhhcmdzOyAgICAvKiBNYXggbnVtYmVyIG9mIGFyZ3MgKi8KKyAgICAgICAg
b2JqZWN0ICBwYWQ7CiAJICAgICAgfTsKIHN0cnVjdCBjZmRhdGEgewogICAgICBGSVJTVFdPUkQ7
CkBAIC02NDUsNiArNzI2LDcgQEAKICAgICAgaW50IGNmZF9zaXplOyAgICAgICAgICAgICAgLyog
c2l6ZSBvZiBjb250YmxvY2sgKi8KICAgICAgaW50IGNmZF9maWxscDsgICAgICAgICAgICAgLyog
c2l6ZSBvZiBzZWxmICovCiAgICAgIG9iamVjdCAqY2ZkX3NlbGY7ICAgICAgICAgIC8qIGJvZHkg
Ki8KKyAgICAgb2JqZWN0ICBwYWQ7CiAgICB9OwogCiBzdHJ1Y3Qgc3BpY2UgewpAQCAtNjU1LDkg
KzczNyw5IEBACiAvKgogCWR1bW15IHR5cGUKICovCi1zdHJ1Y3QgZHVtbXkgewotCUZJUlNUV09S
RDsKLX07CitzdHJ1Y3QgZHVtbXkgICAgICB7RklSU1RXT1JEO307CitzdHJ1Y3QgbWFyayAgICAg
ICB7TUFSS1dPUkQ7fTsKK3N0cnVjdCBzZ2NtICAgICAgIHtTR0NNV09SRDt9OwogCiAvKgogCURl
ZmluaXRpb24gb2YgbGlzcHVuaW9uLgpAQCAtNzAxLDYgKzc4Myw4IEBACiAJc3RydWN0IHNwaWNl
CXNwYzsJLyogIHNwaWNlICAqLwogCiAJc3RydWN0IGR1bW15CWQ7CS8qICBkdW1teSAgKi8KKwlz
dHJ1Y3QgbWFyawltZDsJLyogIGR1bW15ICAqLworCXN0cnVjdCBzZ2NtCXNtZDsJLyogIGR1bW15
ICAqLwogCiAJc3RydWN0IGZpeGFycmF5CWZpeGE7CS8qICBmaXhudW0gYXJyYXkgICovCiAJc3Ry
dWN0IHNmYXJyYXkJc2ZhOwkvKiAgc2hvcnQtZmxvYXQgYXJyYXkgICovCkBAIC03MjUsMTMgKzgw
OSwxNyBAQAogI2RlZmluZSBTRVRfTElOSyh4LHZhbCkgRl9MSU5LKHgpID0gKGFkZHJlc3NfaW50
KSAodmFsKQogI2RlZmluZSBPQkpfTElOSyh4KSAoKG9iamVjdCkgSU5UX1RPX0FERFJFU1MoRl9M
SU5LKHgpKSkKIAotI2RlZmluZQlGUkVFCSgtMSkJCS8qICBmcmVlIG9iamVjdCAgKi8KKy8qICNk
ZWZpbmUJRlJFRQkoLTEpICovCQkvKiAgZnJlZSBvYmplY3QgICovCiAKIC8qCiAJVHlwZV9vZi4K
ICovCi0jZGVmaW5lCXR5cGVfb2Yob2JqZSkJKChlbnVtIHR5cGUpKCgob2JqZWN0KShvYmplKSkt
PmQudCkpCi0KKyNkZWZpbmUJdHlwZV9vZih4KQkgKHtvYmplY3QgX3o9KG9iamVjdCkoeCk7XAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW1tX2ZpeG51bShfeikgPyB0X2ZpeG51bSA6
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX3o9PUNuaWwgfHwgX3o9PUN0IHx8IF96
PT1Eb3RuaWwgPyB0X3N5bWJvbCA6IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc19j
b25zKF96KSA/ICB0X2NvbnMgIDogX3otPmQudCkpO30pCisjZGVmaW5lIHNldF90eXBlX29mKHgs
eSkgKHtvYmplY3QgX3g9KG9iamVjdCkoeCk7ZW51bSB0eXBlIF95PSh5KTttYWtlX3VuZnJlZShf
eCk7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF95IT10X2NvbnMpIHtfeC0+ZC5l
PTE7X3gtPmQudD1feTt9IGVsc2UgX3gtPmQuZT0wO30pCiAvKgogCVN0b3JhZ2UgbWFuYWdlciBm
b3IgZWFjaCB0eXBlLgogKi8KQEAgLTg0NiwxOCArOTM0LDIxIEBACiAKIAogLyogRklYTUUgIE1h
a2UgYWxsIG90aGVyIHBhZ2UgY29uc3RhbnRzIHNjYWxlIHNpbWlsYXJseSBieSBkZWZhdWx0LiAq
LwotI2lmbmRlZiBIT0xFUEFHRQotI2RlZmluZQlIT0xFUEFHRQkoTUFYUEFHRS8xMCkKLSNlbmRp
ZgorLyogI2lmbmRlZiBIT0xFUEFHRSAqLworLyogI2RlZmluZQlIT0xFUEFHRQkoTUFYUEFHRS8x
MCkgKi8KKy8qICNlbmRpZiAqLwogCiAKIC8qICNkZWZpbmUJSU5JVF9IT0xFUEFHRQkxNTAgKi8K
IC8qICNkZWZpbmUJSU5JVF9OUkJQQUdFCTUwICovCiAvKiAjZGVmaW5lCVJCX0dFVEEJCTUxMiAq
LwogCi0jZGVmaW5lCUlOSVRfSE9MRVBBR0UJKDYqSE9MRVBBR0UvNSkKLSNkZWZpbmUJSU5JVF9O
UkJQQUdFCShJTklUX0hPTEVQQUdFLzMpCi0jZGVmaW5lCVJCX0dFVEEJCSgxMCpJTklUX05SQlBB
R0UpCisjZGVmaW5lCUlOSVRfSE9MRURJVgkoNSpIT0xFRElWLzYpCisjZGVmaW5lCUlOSVRfTlJC
RElWCShJTklUX0hPTEVESVYqMykKKyNkZWZpbmUJUkJfR0VURElWCTEwMAorCisjZGVmaW5lIENP
UkVfUEFHRVMgKCgodW5zaWduZWQgbG9uZyljb3JlX2VuZC1EQkVHSU4pPj5QQUdFV0lEVEgpCisj
ZGVmaW5lIFJCX0dFVEEgICAgKENPUkVfUEFHRVMvUkJfR0VURElWKQogCiAKICNpZmRlZiBBVgpA
QCAtOTIwLDE1ICsxMDExLDMyIEBACiAgICBJbiByZWNlbnQgdmVyc2lvbnMgb2YgZ2NjLCBpIHRo
aW5rIHRoZSBidWlsdGluX2FsaXN0IHN0dWZmIGRvZXMgbm90CiAgICBhbGxvdyBzZXR0aW5nIHRo
aXMuCiAgKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2RlZmluZSBDU1AgKENTVEFDS19BTElH
Tk1FTlQtMSkKKyNpZiBDU1RBQ0tfRElSRUNUSU9OID09IC0xCisjZGVmaW5lIFpBTExPQ0Eobikg
KHtsb25nIF94PTAsX3k9MCxfbj0oKG4pK0NTUCkmfkNTUDt2b2lkICp2PU5VTEw7dj1hbGxvY2Eo
X24rX3grX3kpO2J6ZXJvKHYsX24rX3grX3kpOyB2O30pCisjZWxzZQorI2RlZmluZSBaQUxMT0NB
KG4pICh7bG9uZyBfeD0wLF95PTAsX249KChuKStDU1ApJn5DU1A7dm9pZCAqdj1OVUxMO3Y9YWxs
b2NhKF9uK194K195KTtiemVybyh2LF9uK194K195KTsgdjt9KQorI2VuZGlmCisvKiAjZGVmaW5l
IFpBTExPQ0EobikgKHtsb25nIF94PTAsX3k9MCxfbj0oKG4pK0NTUCkmfkNTUDt2b2lkICp2PU5V
TEw7dj1hbGxvY2EoX24rX3grX3kpO3dpcGVfc3RhY2soditfbik7IHY7fSkgKi8KKy8qICNlbHNl
ICovCisvKiAjZGVmaW5lIFpBTExPQ0EobikgKHtsb25nIF94PTAsX3k9MCxfbj0oKG4pK0NTUCkm
fkNTUDt2b2lkICp2PU5VTEw7dj1hbGxvY2EoX24rX3grX3kpO3dpcGVfc3RhY2sodik7IHY7fSkg
Ki8KKy8qICNlbmRpZiAqLworCisjZGVmaW5lIFpBTExPQ0ExKHYsbikgKCh2KT1hbGxvY2EoKG4p
KSxfX2J1aWx0aW5fYnplcm8oKHYpLCgobikpKSkKKwogI2lmZGVmIERPTlRfQ09QWV9WQV9MSVNU
CiAjZGVmaW5lIENPRVJDRV9WQV9MSVNUKG5ldyx2bCxuKSBuZXcgPSAob2JqZWN0ICopICh2bCkK
ICNlbHNlCiAjZGVmaW5lIENPRVJDRV9WQV9MSVNUKG5ldyx2bCxuKSBcCi0gb2JqZWN0IFh4dmxb
NjVdOyBcCi0ge2ludCBpOyBcCi0gIG5ldz1YeHZsOyBcCi0gIGlmIChuID49IDY1KSBGRWVycm9y
KCJUb28gcGxvbmcgdmwiLDApOyBcCi0gIGZvciAoaT0wIDsgaSA8IChuKTsgaSsrKSBuZXdbaV09
dmFfYXJnKHZsLG9iamVjdCk7fQorIGludCBpO1wKKyBvYmplY3QgKlh4dmw7IFwKKyBYeHZsPVpB
TExPQ0EoKG4pKnNpemVvZigqWHh2bCkpO1wKKyBuZXc9WHh2bDsgXAorIGlmIChuID49IDY1KSBG
RWVycm9yKCJUb28gcGxvbmcgdmwiLDApOyBcCisgZm9yIChpPTAgOyBpIDwgKG4pOyBpKyspIG5l
d1tpXT12YV9hcmcodmwsb2JqZWN0KTsKKy8qICBtZW1zZXQoWHh2bCtuLDAsKGNoYXIgKikmWHh2
bD4oY2hhciAqKVh4dmwrbiA/IChjaGFyICopJlh4dmwgLSAoY2hhciAqKVh4dmwgLW4qc2l6ZW9m
KCpYeHZsKSA6IG4qc2l6ZW9mKCpYeHZsKSsgKGNoYXIgKilYeHZsICAtIChjaGFyICopJlh4dmwp
OyAqLwogI2VuZGlmCiAKICNpZmRlZiBET05UX0NPUFlfVkFfTElTVApAQCAtMTAyNSwxMSArMTEz
MywxMSBAQAogCiBFWFRFUiB1bnNpZ25lZCBwbG9uZyBzaWduYWxzX2FsbG93ZWQsIHNpZ25hbHNf
cGVuZGluZyAgOwogCi1FWFRFUiBzdHJ1Y3Qgc3ltYm9sIERvdG5pbF9ib2R5OwotI2RlZmluZSBE
b3RuaWwgKChvYmplY3QpJkRvdG5pbF9ib2R5KQorLyogRVhURVIgc3RydWN0IHN5bWJvbCBEb3Ru
aWxfYm9keTsgKi8KKy8qICNkZWZpbmUgRG90bmlsICgob2JqZWN0KSZEb3RuaWxfYm9keSkgKi8K
IAogI2RlZmluZQllbmRwKHgpCSh7XAotICAgIHN0YXRpYyBzdHJ1Y3QgY29ucyBzX215X2RvdD17
dF9jb25zLDAsMCwwLERvdG5pbCxEb3RuaWx9O1wKKyAgICBzdGF0aWMgc3RydWN0IGNvbnMgc19t
eV9kb3Q9ey8qIHRfY29ucywwLDAsMCwwLDAsICovRG90bmlsLERvdG5pbH07XAogICAgIG9iamVj
dCBfeD0oeCk7XAogICAgIGJvb2wgX2I9RkFMU0U7XAogICAgIFwKSW5kZXg6IGgvcGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvaC9wYWdlLmgsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNC40LjIuMi4zLjQuMQpkaWZmIC11IC1yMS40LjQuMi4yLjMuNC4xIHBhZ2Uu
aAotLS0gaC9wYWdlLmgJMTQgSnVsIDIwMDQgMjA6NDg6MjMgLTAwMDAJMS40LjQuMi4yLjMuNC4x
CisrKyBoL3BhZ2UuaAk2IEp1biAyMDA1IDIxOjQ5OjU1IC0wMDAwCkBAIC03MCw3ICs3MCw3IEBA
CiAJCQkgICAgICAgKHNnY190eXBlX21hcFt4U0ddICYgU0dDX1dSSVRBQkxFKSkgXAogCQkJCSB7
aWZfY29kZTt9fSB3aGlsZSgwKQogCi0jZGVmaW5lIHNnY19tYXJrX29iamVjdCh4KSBJRl9XUklU
QUJMRSh4LGlmKCh4KS0+ZC5tPT0wKSBzZ2NfbWFya19vYmplY3QxKHgpKQorI2RlZmluZSBzZ2Nf
bWFya19vYmplY3QoeCkgSUZfV1JJVEFCTEUoeCxpZighaXNfbWFya2VkKHgpKSBzZ2NfbWFya19v
YmplY3QxKHgpKQogLyoKICNkZWZpbmUgc2djX21hcmtfb2JqZWN0KHgpIHNnY19tYXJrX29iamVj
dDEoeCkKICovCkBAIC04Miw5ICs4Miw5IEBACiAKIAogLyogZm9yIHRoZSBTIGZpZWxkIG9mIHRo
ZSBGSVJTVFdPUkQgKi8KLWVudW0gc2djX3R5cGUgeyBTR0NfTk9STUFMLCAgIC8qIG5vdCBhbGxv
Y2F0ZWQgc2luY2UgdGhlIGxhc3Qgc2djICovCi0gICAgICAgICAgICAgICAgU0dDX1JFQ0VOVCAg
ICAvKiBhbGxvY2F0ZWQgc2luY2UgbGFzdCBzZ2MgKi8KLQkJfTsKK2VudW0gc2djX3R5cGUgeyBT
R0NfTk9STUFMLCAgICAvKiBub3QgYWxsb2NhdGVkIHNpbmNlIHRoZSBsYXN0IHNnYyAqLworICAg
ICAgICAgICAgICAgIFNHQ19SRUNFTlQgICAgIC8qIGFsbG9jYXRlZCBzaW5jZSBsYXN0IHNnYyAq
LworIAkJfTsKIAogCiAjZGVmaW5lIFRNX0JBU0VfVFlQRV9QKGkpICgoKGludCkgKHRtX3RhYmxl
W2ldLnRtX3R5cGUpKSA9PSBpKQpAQCAtMTAzLDkgKzEwMywxMCBAQAogLyogdGhlIGZvbGxvd2lu
ZyBhc3N1bWVzIHRoYXQgdGhlIGNoYXIgcyxtIGZpZWxkcyBvZiBmaXJzdCB3b3JkCiAgICBoYXZl
IHNhbWUgbGVuZ3RoIGFzIGEgc2hvcnQKICAgICh4LT5kLm0gfHwgeC0+ZC5zKSB3b3VsZCBiZSBh
biBlcXVpdmFsZW50IGZvciBvdXIgcHVycG9zZXMgKi8KLXN0cnVjdCBzZ2NfZmlyc3R3b3JkIHtz
aG9ydCB0OyBzaG9ydCBzbTt9OwotI2RlZmluZSBTR0NfT1JfTSh4KSAgKCgoc3RydWN0IHNnY19m
aXJzdHdvcmQgKikoeCkpLT5zbSkgCi0KKy8qIHN0cnVjdCBzZ2NfZmlyc3R3b3JkIHtzaG9ydCB0
OyBzaG9ydCBzbTt9OyAqLworLyogI2RlZmluZSBTR0NfT1JfTSh4KSAgKCgoc3RydWN0IHNnY19m
aXJzdHdvcmQgKikoeCkpLT5zbSkgICovCisvKiAjZGVmaW5lIFNHQ19PUl9NKHgpICAoKChvYmpl
Y3QpeCktPmQubSB8fCAoKG9iamVjdCl4KS0+ZC5mIHx8ICghKChvYmplY3QpeCktPmQuZSAmJiBP
Tl9TR0NfUEFHRSh4KSkgfHwgKCgob2JqZWN0KXgpLT5kLmUgJiYgKChvYmplY3QpeCktPmQucykp
ICovCisjZGVmaW5lIFNHQ19PUl9NKHgpIChpc19tYXJrZWRfb3JfZnJlZSgob2JqZWN0KXgpIHx8
IChpc19jb25zKChvYmplY3QpeCkgPyBPTl9TR0NfUEFHRSgob2JqZWN0KXgpIDogKChvYmplY3Qp
eCktPmQucykpCiAjaWZuZGVmIFNJR1BST1RWCiAjZGVmaW5lIFNJR1BST1RWIFNJR1NFR1YKICNl
bmRpZgpAQCAtMTQxLDMgKzE0Miw1IEBACiAqLwogY2hhciB0eXBlX21hcFtNQVhQQUdFXTsKIAor
I2RlZmluZQlhdmFpbGFibGVfcGFnZXMJXAorCSgobG9uZykoKHJlYWxfbWF4cGFnZS1wYWdlKGhl
YXBfZW5kKS1uZXdfaG9sZXBhZ2UtbnJicGFnZS1yZWFsX21heHBhZ2UvMzIpKSkKSW5kZXg6IGgv
cHJvdG9pemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2gvcHJvdG9p
emUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNi40LjEuMi4xLjIuMTEuNi4xLjYuMQpkaWZm
IC11IC1yMS4yNi40LjEuMi4xLjIuMTEuNi4xLjYuMSBwcm90b2l6ZS5oCi0tLSBoL3Byb3RvaXpl
LmgJMTYgSmFuIDIwMDUgMDA6MzY6MjAgLTAwMDAJMS4yNi40LjEuMi4xLjIuMTEuNi4xLjYuMQor
KysgaC9wcm90b2l6ZS5oCTYgSnVuIDIwMDUgMjE6NDk6NTUgLTAwMDAKQEAgLTI5Niw3ICsyOTYs
NyBAQAogLyogbWFpbi5jOjUyODpPRiAqLyBleHRlcm4gdm9pZCBiZHNfb3ZlcmZsb3cgKHZvaWQp
OyAvKiAoKSAqLwogLyogbWFpbi5jOjUzNzpPRiAqLyBleHRlcm4gdm9pZCBmcnNfb3ZlcmZsb3cg
KHZvaWQpOyAvKiAoKSAqLwogLyogbWFpbi5jOjU0NjpPRiAqLyBleHRlcm4gdm9pZCBpaHNfb3Zl
cmZsb3cgKHZvaWQpOyAvKiAoKSAqLwotLyogbWFpbi5jOjU1NjpPRiAqLyBleHRlcm4gdm9pZCBz
ZWdtZW50YXRpb25fY2F0Y2hlciAoaW50KTsgLyogKCkgKi8KKy8qIG1haW4uYzo1NTY6T0YgKi8g
ZXh0ZXJuIHZvaWQgc2VnbWVudGF0aW9uX2NhdGNoZXIgKGludCxsb25nLHZvaWQgKixjaGFyICop
OyAvKiAoKSAqLwogLyogbWFpbi5jOjU4NzpPRiAqLyBleHRlcm4gdm9pZCBMYnkgKHZvaWQpOyAv
KiAoKSAqLwogLyogbWFpbi5jOjYwNzpPRiAqLyBleHRlcm4gdm9pZCBMcXVpdCh2b2lkKTsgLyog
KCkgKi8KIC8qIG1haW4uYzo2MTI6T0YgKi8gZXh0ZXJuIHZvaWQgTGV4aXQodm9pZCk7IC8qICgp
ICovCkBAIC0xNzYyLDYgKzE3NjIsMTIgQEAKIGludCAKIGdjbF9pc25vcm1hbF9mbG9hdChmbG9h
dCk7CiAKK3ZvaWQgd2lwZV9zdGFjayAgIChWT0wgdm9pZCAqKTsKK3ZvaWQgY2xlYXJfY19zdGFj
ayhWT0wgdW5zaWduZWQpOworCitsb25nCitvcHRfbWF4cGFnZShzdHJ1Y3QgdHlwZW1hbmFnZXIg
Kik7CisKICNpZmRlZiBTR0MKIHZvaWQKIG1lbXByb3RlY3RfdGVzdF9yZXNldCh2b2lkKTsKQEAg
LTE3ODgsMyArMTc5NCw3IEBACiB2b2lkCiBncHJvZl9jbGVhbnVwKHZvaWQpOwogI2VuZGlmCisK
KwordW5zaWduZWQgbG9uZworaWhhc2hfZXF1YWwxKG9iamVjdCxpbnQpOwpJbmRleDogbHNwL2dj
bF9hdXRvbG9hZC5sc3AKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9sc3Av
Z2NsX2F1dG9sb2FkLmxzcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuNC4xMi4yCmRpZmYg
LXUgLXIxLjEuMi40LjEyLjIgZ2NsX2F1dG9sb2FkLmxzcAotLS0gbHNwL2djbF9hdXRvbG9hZC5s
c3AJMTUgSmFuIDIwMDUgMjE6MjQ6NTMgLTAwMDAJMS4xLjIuNC4xMi4yCisrKyBsc3AvZ2NsX2F1
dG9sb2FkLmxzcAk2IEp1biAyMDA1IDIxOjQ5OjU1IC0wMDAwCkBAIC0yNDUsNiArMjQ1LDMwIEBA
CiAgICAgICAgICAgc3RydWN0dXJlIHN0cmVhbSByYW5kb20tc3RhdGUgcmVhZHRhYmxlIHBhdGhu
YW1lCiAgICAgICAgICAgY2Z1biBjY2xvc3VyZSBzZnVuIGdmdW4gdmZ1biBhZnVuIGNsb3N1cmUg
Y2ZkYXRhIHNwaWNlKSkKIAorKGRlZnVuIGhlYXByZXAgbmlsCisgIAorICAobGV0ICgoZiAobGlz
dAorCSAgICAid29yZCBzaXplOiAgICAgICAgICAgIH5hIGJpdHN+JSIKKwkgICAgInBhZ2Ugc2l6
ZTogICAgICAgICAgICB+YSBieXRlc34lIgorCSAgICAiaGVhcCBzdGFydDogICAgICAgICAgIDB4
fnh+JSIKKwkgICAgImhlYXAgbWF4IDogICAgICAgICAgICAweH54fiUiCisJICAgICJzaGFyZWQg
bGlicmFyeSBzdGFydDogMHh+eH4lIgorCSAgICAiY3N0YWNrIHN0YXJ0OiAgICAgICAgIDB4fnh+
JSIKKwkgICAgImNzdGFjayBtYXJrIG9mZnNldDogICB+YSBieXRlc34lIgorCSAgICAiY3N0YWNr
IGRpcmVjdGlvbjogICAgIH5bZG93bndhcmR+O3Vwd2FyZH47fl1+JSIKKwkgICAgImNzdGFjayBh
bGlnbm1lbnQ6ICAgICB+YSBieXRlc34lIgorCSAgICAiY3N0YWNrIG1heDogICAgICAgICAgIH5h
IGJ5dGVzfiUiCisJICAgICJpbW1maXggc3RhcnQ6ICAgICAgICAgMHh+eH4lIgorCSAgICAiaW1t
Zml4IHNpemU6ICAgICAgICAgIH5hIGZpeG51bXN+JSIpKQorCSh2IChtdWx0aXBsZS12YWx1ZS1s
aXN0IChzaTo6aGVhcC1yZXBvcnQpKSkpCisgICAgCisgICAgKGRvICgodiB2IChjZHIgdikpIChm
IGYgKGNkciBmKSkpICgobm90IChjYXIgdikpKQorCShmb3JtYXQgdCAoY2FyIGYpIAorCQkobGV0
ICgoeCAoY2FyIHYpKSkgCisJCSAgKGNvbmQgKCg+PSB4IDApIHgpIAorCQkJKCg9IHggLTEpIDAp
IAorCQkJKCgrIHggKCogMiAoMSsgbW9zdC1wb3NpdGl2ZS1maXhudW0pKSkpKSkpKSkpCisKIChk
ZWZ1biByb29tICgmb3B0aW9uYWwgeCkKICAgKGxldCAoKGwgKG11bHRpcGxlLXZhbHVlLWxpc3Qg
KHNpOnJvb20tcmVwb3J0KSkpCiAgICAgICAgIG1heHBhZ2UgbGVmdHBhZ2UgbmNicGFnZSBtYXhj
YnBhZ2UgbmNiIGNiZ2JjY291bnQgbnBhZ2UKQEAgLTI1Nyw3ICsyODEsNyBAQAogICAgICAgICAg
IHJidXNlZCAobnRoIDcgbCkgcmJmcmVlIChudGggOCBsKSBucmJwYWdlIChudGggOSBsKQogICAg
ICAgICAgIHJiZ2JjY291bnQgKG50aCAxMCBsKQogICAgICAgICAgIGwgKG50aGNkciAxMSBsKSkK
LSAgICAoZG8gKChsIGwgKG50aGNkciA1IGwpKQorICAgIChkbyAoKGwgbCAobnRoY2RyIDYgbCkp
CiAgICAgICAgICAodGwgKnR5cGUtbGlzdCogKGNkciB0bCkpCiAgICAgICAgICAoaSAwICgrIGkg
KGlmIChudGggMiBsKSAobnRoIDIgbCkgMCkpKSkKICAgICAgICAgKChudWxsIGwpIChzZXRxIG5w
YWdlIGkpKQpAQCAtMjY2LDkgKzI5MCwxMCBAQAogICAgICAgICAgICAgKG5mcmVlIChudGggMSBs
KSkKICAgICAgICAgICAgIChucGFnZSAobnRoIDIgbCkpCiAgICAgICAgICAgICAobWF4cGFnZSAo
bnRoIDMgbCkpCi0gICAgICAgICAgICAoZ2JjY291bnQgKG50aCA0IGwpKSkKKyAgICAgICAgICAg
IChnYmNjb3VudCAobnRoIDQgbCkpCisgICAgICAgICAgICAod3MgKG50aCA1IGwpKSkKICAgICAg
ICAgKGlmIG51c2VkCi0gICAgICAgICAgICAocHVzaCAobGlzdCB0eXBlbmFtZSBucGFnZSBtYXhw
YWdlCisgICAgICAgICAgICAocHVzaCAobGlzdCB0eXBlbmFtZSB3cyBucGFnZSBtYXhwYWdlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHplcm9wICgrIG51c2VkIG5mcmVlKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC8g
bnVzZWQgMC4wMSAoKyBudXNlZCBuZnJlZSkpKQpAQCAtMjgwLDggKzMwNSw5IEBACiAgICAgICAg
ICAgICAgICAgICAgICAocHVzaCAobGlzdCAobnRoIG5mcmVlICp0eXBlLWxpc3QqKSB0eXBlbmFt
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmstYWxpc3QpKSkpKSkKICAgICAodGVy
cHJpKQorICAgIChmb3JtYXQgdCAifkBbfjJBfl1+OEBBL35BfjE0VH42QEElfkBbfjhAQX5dfjMw
VH57fkF+XiB+fX4lfiUiICJXUyIgIlVQIiAiTVAiICJGSSIgIkdDIiAnKCJUWVBFUyIpKQogICAg
IChkb2xpc3QgKGluZm8gKHJldmVyc2UgaW5mby1saXN0KSkKLSAgICAgIChhcHBseSAjJ2Zvcm1h
dCB0ICJ+NkQvfkR+MTJUfjYsMUYlfkBbfjhEfl1+MjhUfnt+QX5eIH59IgorICAgICAgKGFwcGx5
ICMnZm9ybWF0IHQgIn5AW34yRH5dfjhEL35EfjE0VH42LDFGJX5AW344RH5dfjMwVH57fkF+XiB+
fSIKICAgICAgICAgICAgICAoYXBwZW5kIChjZHIgaW5mbykKICAgICAgICAgICAgICAgICAgICAg
IChpZiAgKGFzc29jIChjYXIgaW5mbykgbGluay1hbGlzdCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGxpc3QgKGFzc29jIChjYXIgaW5mbykgbGluay1hbGlzdCkpCkBAIC0yODksMTAgKzMx
NSwxMCBAQAogICAgICAgKHRlcnByaSkKICAgICAgICkKICAgICAodGVycHJpKQotICAgIChmb3Jt
YXQgdCAifjZEL35EfjE5VH5AW344RH5dfjI4VGNvbnRpZ3VvdXMgKH5EIGJsb2Nrcyl+JSIKKyAg
ICAoZm9ybWF0IHQgIn4xMEQvfkR+MTlUfkBbfjhEfl1+MzBUY29udGlndW91cyAofkQgYmxvY2tz
KX4lIgogICAgICAgICAgICAgbmNicGFnZSBtYXhjYnBhZ2UgKGlmICh6ZXJvcCBjYmdiY2NvdW50
KSBuaWwgY2JnYmNjb3VudCkgbmNiKQotICAgIChmb3JtYXQgdCAifjdUfkR+MjhUaG9sZX4lIiBo
b2xlcGFnZSkKLSAgICAoZm9ybWF0IHQgIn43VH5EfjEyVH42LDFGJX5AW344RH5dfjI4VHJlbG9j
YXRhYmxlfiV+JSIKKyAgICAoZm9ybWF0IHQgIn4xMVR+RH4zMFRob2xlfiUiIGhvbGVwYWdlKQor
ICAgIChmb3JtYXQgdCAifjExVH5EfjE0VH42LDFGJX5AW344RH5dfjMwVHJlbG9jYXRhYmxlfiV+
JSIKICAgICAgICAgICAgIG5yYnBhZ2UgKC8gcmJ1c2VkIDAuMDEgKCsgcmJ1c2VkIHJiZnJlZSkp
CiAgICAgICAgICAgICAoaWYgKHplcm9wIHJiZ2JjY291bnQpIG5pbCByYmdiY2NvdW50KSkKICAg
ICAoZm9ybWF0IHQgIn4xMEQgcGFnZXMgZm9yIGNlbGxzfiUiIG5wYWdlKQpAQCAtMzAyLDggKzMy
OCwxMSBAQAogCSAgICAoLSBtYXhwYWdlICgrIG5wYWdlIG5jYnBhZ2UgaG9sZXBhZ2UgbnJicGFn
ZSBsZWZ0cGFnZSkpKQogICAgIChmb3JtYXQgdCAifjEwRCBtYXhpbXVtIHBhZ2VzfiUiIG1heHBh
Z2UpCiAgICAgKHZhbHVlcykKLSAgICApKQotCisgICAgKQorICAoZm9ybWF0IHQgIn4lfiUiKQor
ICAoZm9ybWF0IHQgIktleTp+JX4lV1M6IHdvcmRzIHBlciBzdHJ1Y3R+JVVQOiBhbGxvY2F0ZWQg
cGFnZXN+JU1QOiBtYXhpbXVtIHBhZ2VzfiVGSTogZnJhY3Rpb24gb2YgY2VsbHMgaW4gdXNlIG9u
IGFsbG9jYXRlZCBwYWdlc34lR0M6IG51bWJlciBvZiBnYyB0cmlnZ2VycyBhbGxvY2F0aW5nIHRo
aXMgdHlwZX4lfiUiKQorICAoaGVhcHJlcCkKKyAgKHZhbHVlcykpCiAKIDs7OyBDIEludGVyZmFj
ZS4KIApAQCAtNDIxLDQgKzQ1MCw0IEBACiAKIChkZWZ2YXIgKmxpYi1kaXJlY3RvcnkqIChuYW1l
c3RyaW5nIChwcm9iZS1maWxlICIuLi8iKSkpCiAKLShpbXBvcnQgJygqbGliLWRpcmVjdG9yeSog
KmxvYWQtcGF0aCogKnN5c3RlbS1kaXJlY3RvcnkqKSAnc2k6OnVzZXIpIApcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKKyhpbXBvcnQgJygqbGliLWRpcmVjdG9yeSogKmxvYWQtcGF0aCogKnN5
c3RlbS1kaXJlY3RvcnkqKSAnc2k6OnVzZXIpIApJbmRleDogbHNwL2djbF9zZXJyb3IubHNwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvbHNwL2djbF9zZXJyb3IubHNwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjEuMi4yCmRpZmYgLXUgLXIxLjEuMi4yIGdjbF9zZXJyb3Iu
bHNwCi0tLSBsc3AvZ2NsX3NlcnJvci5sc3AJOCBKYW4gMjAwNCAyMzoyNDoxNSAtMDAwMAkxLjEu
Mi4yCisrKyBsc3AvZ2NsX3NlcnJvci5sc3AJNiBKdW4gMjAwNSAyMTo0OTo1OCAtMDAwMApAQCAt
MTQ4LDYgKzE0OCw3IEBACiAKIChkZWZ1biAjLiAoaWYgKGJvdW5kcCAnKmVycm9yLWhhbmRsZXIt
ZnVuY3Rpb24qKSAqZXJyb3ItaGFuZGxlci1mdW5jdGlvbiogJ2pvZSkKICAgKCZyZXN0IGVycm9y
LWhhbmRsZXItYXJncykKKyAgKGRlY2xhcmUgKDpkeW5hbWljLWV4dGVudCBlcnJvci1oYW5kbGVy
LWFyZ3MpKQogICAod2hlbiAoZXF1YWwgZXJyb3ItaGFuZGxlci1hcmdzICplcnJvci1oYW5kbGVy
LWFyZ3MqKQogICAgIChmb3JtYXQgdCAiRXJyb3IgaGFuZGxlciBjYWxsZWQgcmVjdXJzaXZlbHkg
flN+JSIKIAkgICAgZXJyb3ItaGFuZGxlci1hcmdzKQpAQCAtMTYxLDkgKzE2Miw5IEBACiAJCTpz
dHJpbmcgKGZpZnRoIGVycm9yLWhhbmRsZXItYXJncykKIAkJOmZ1bmN0aW9uICh0aGlyZCBlcnJv
ci1oYW5kbGVyLWFyZ3MpCiAJCTpjb250aW51ZS1zdHJpbmcgKGZvdXJ0aCBlcnJvci1oYW5kbGVy
LWFyZ3MpCi0JCTpmb3JtYXQtYXJncwotCQkoY29weS1saXN0IChudGhjZHIgNSBlcnJvci1oYW5k
bGVyLWFyZ3MpKQotCQk6ZXJyb3ItaGFuZGxlci1hcmdzIChjb3B5LWxpc3QgZXJyb3ItaGFuZGxl
ci1hcmdzKSkpKQorCQk6Zm9ybWF0LWFyZ3MgKG50aGNkciA1IGVycm9yLWhhbmRsZXItYXJncyk7
KGNvcHktbGlzdCAobnRoY2RyIDUgZXJyb3ItaGFuZGxlci1hcmdzKSkKKwkJOmVycm9yLWhhbmRs
ZXItYXJncyBlcnJvci1oYW5kbGVyLWFyZ3MgOyhjb3B5LWxpc3QgZXJyb3ItaGFuZGxlci1hcmdz
KQorCQkpKSkKICAgICAgIChjb25kICgqY2F0Y2gtZXJyb3IqICh0aHJvdyA6YW55LWVycm9yIGVy
cikpCiAJICAgICgobGV0IChmbGFnKSAoZG8gKChpIDAgKHRoZSBmaXhudW0gKDErIGkpKSkKIAkJ
CSAgICAgIChlbmQgKHRoZSBmaXhudW0oZmlsbC1wb2ludGVyICh0aGUgYXJyYXkKSW5kZXg6IGxz
cC9nY2xfdG9wLmxzcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL2xzcC9n
Y2xfdG9wLmxzcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMgpkaWZmIC11IC1yMS4xLjIu
MiBnY2xfdG9wLmxzcAotLS0gbHNwL2djbF90b3AubHNwCTE0IEZlYiAyMDA0IDE3OjM4OjQ1IC0w
MDAwCTEuMS4yLjIKKysrIGxzcC9nY2xfdG9wLmxzcAk2IEp1biAyMDA1IDIxOjQ5OjU4IC0wMDAw
CkBAIC0xMTMsNiArMTEzLDcgQEAKICAgICAgICAgICAgICAgKHNldHEgLSAobG9jYWxseSAoZGVj
bGFyZSAobm90aW5saW5lIHJlYWQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChy
ZWFkICpzdGFuZGFyZC1pbnB1dCogbmlsICp0b3AtZW9mKikpKQogICAgICAgICAgICAgICAod2hl
biAoZXEgLSAqdG9wLWVvZiopIChieWUpKQorOyAgICAgICAgICAgICAgKHNpOjpjbGVhci1jLXN0
YWNrIDQwOTYpCiAgICAgICAgICAgICAgIChsZXQgKCh2YWx1ZXMgKG11bHRpcGxlLXZhbHVlLWxp
c3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsbHkgKGRlY2xhcmUgKG5vdGlu
bGluZSBldmFsKSkgKGV2YWwgLSkpKSkpCiAgICAgICAgICAgICAgICAgKHNldHEgLy8vIC8vIC8v
IC8gLyB2YWx1ZXMgKioqICoqICoqICogKiAoY2FyIC8pKQpAQCAtMTUxLDIxICsxNTIsMjYgQEAK
IAkgKChlcSBjaCBlb2YtdmFsdWUpIChyZXR1cm4tZnJvbSBkYmwtcmVhZCBlb2YtdmFsdWUpKSkK
ICAgICh1bnJlYWQtY2hhciBjaCBzdHJlYW0pKQogCi0gIChjb25kICgoZXFsICNcOiBjaCkKLQkg
KHNldHEgdGVtCi0JICAgICAgIChzdHJpbmctY29uY2F0ZW5hdGUKLQkJIigiCi0JCShyZWFkLWxp
bmUgc3RyZWFtIGVvZi1lcnJvci1wIGVvZi12YWx1ZSkiKSIpKQotCSAocmVhZCAgKG1ha2Utc3Ry
aW5nLWlucHV0LXN0cmVhbSB0ZW0pCi0JCQkJCSBlb2YtZXJyb3ItcCBlb2YtdmFsdWUpKQorICAo
Y29uZCAKKzsgICAoKGVxbCAjXDogY2gpCis7ICAgIChzZXRxIHRlbQorOwkgIChzdHJpbmctY29u
Y2F0ZW5hdGUKKzsJICAgIigiCis7CSAgIChyZWFkLWxpbmUgc3RyZWFtIGVvZi1lcnJvci1wIGVv
Zi12YWx1ZSkiKSIpKQorOyAgICAocmVhZCAgKG1ha2Utc3RyaW5nLWlucHV0LXN0cmVhbSB0ZW0p
Cis7CSAgIGVvZi1lcnJvci1wIGVvZi12YWx1ZSkpCiAJKHQgKHJlYWQgc3RyZWFtIGVvZi1lcnJv
ci1wIGVvZi12YWx1ZSkpKSkKIAogCiAoZGVmdW4gYnJlYWstbGV2ZWwgKGF0ICZvcHRpb25hbCBl
bnYpCiAgIChsZXQqICgoKmJyZWFrLW1lc3NhZ2UqIChpZiAoc3RyaW5ncCBhdCkgYXQgKmJyZWFr
LW1lc3NhZ2UqKSkKLQkgKCpxdWl0LXRhZ3MqIChjb25zIChjb25zICpicmVhay1sZXZlbCogKnF1
aXQtdGFnKikgKnF1aXQtdGFncyopKQotICAgICAgICAgKCpxdWl0LXRhZyogKGNvbnMgbmlsIG5p
bCkpCi0gICAgICAgICAoKmJyZWFrLWxldmVsKiAoaWYgKG5vdCBhdCkgKmJyZWFrLWxldmVsKiAo
Y29ucyB0ICpicmVhay1sZXZlbCopKSkKKwkgKHF1aXQtdGFnczEgKGNvbnMgKmJyZWFrLWxldmVs
KiAqcXVpdC10YWcqKSkKKwkgKHF1aXQtdGFncyAoY29ucyBxdWl0LXRhZ3MxICpxdWl0LXRhZ3Mq
KSkKKwkgKCpxdWl0LXRhZ3MqIHF1aXQtdGFncykKKyAgICAgICAgIChxdWl0LXRhZyAoY29ucyBu
aWwgbmlsKSkKKyAgICAgICAgICgqcXVpdC10YWcqIHF1aXQtdGFnKQorICAgICAgICAgKGJyZWFr
LWxldmVsIChjb25zIHQgKmJyZWFrLWxldmVsKikpCisgICAgICAgICAoKmJyZWFrLWxldmVsKiAo
aWYgKG5vdCBhdCkgKmJyZWFrLWxldmVsKiBicmVhay1sZXZlbCkpCiAgICAgICAgICAoKmlocy1i
YXNlKiAoMSsgKmlocy10b3AqKSkKICAgICAgICAgICgqaWhzLXRvcCogKDEtIChpaHMtdG9wKSkp
CiAgICAgICAgICAoKmN1cnJlbnQtaWhzKiAqaWhzLXRvcCopCkBAIC0xODQsNiArMTkwLDcgQEAK
ICAgICAgICAgICgqICopICgqKiAqKikgKCoqKiAqKiopCiAgICAgICAgICAoLyAvKSAoLy8gLy8p
ICgvLy8gLy8vKQogICAgICAgICAgKQorICAgIChkZWNsYXJlICg6ZHluYW1pYy1leHRlbnQgcXVp
dC10YWdzIHF1aXQtdGFnczEgcXVpdC10YWcgYnJlYWstbGV2ZWwpKQogCQkJCQk7ICh0ZXJwcmkg
KmVycm9yLW91dHB1dCopCiAgICAgKHVubGVzcyAob3IgYmUgKG5vdCAoc3RyaW5ncCBhdCkpKQog
ICAgICAgKHNpbXBsZS1iYWNrdHJhY2UpCkBAIC0yMTAsMTUgKzIxNywxOSBAQAogICAgICAgICAg
IChzZXRxIC0gKGxvY2FsbHkgKGRlY2xhcmUgKG5vdGlubGluZSByZWFkKSkKIAkJCSAgIChkYmwt
cmVhZCAqZGVidWctaW8qIG5pbCAqdG9wLWVvZiopKSkKICAgICAgICAgICAod2hlbiAoZXEgLSAq
dG9wLWVvZiopIChieWUgLTEpKQotICAgICAgICAgIChsZXQqICggYnJlYWstY29tbWFuZAorICAg
ICAgICAgIChsZXQqIChicmVhay1jb21tYW5kCiAJCSAodmFsdWVzCiAJCSAgKG11bHRpcGxlLXZh
bHVlLWxpc3QKIAkJICAoTE9DQUxMWSAoZGVjbGFyZSAobm90aW5saW5lIGJyZWFrLWNhbGwgZXZh
bGhvb2spKQotCQkJICAgKGlmIChrZXl3b3JkcCAtKShzZXRxIC0gKGNvbnMgLSBuaWwpKSkKLQkJ
CSAgIChjb25kICgoYW5kIChjb25zcCAtKSAoa2V5d29yZHAgKGNhciAtKSkpCi0JCQkJICAoc2V0
cSBicmVhay1jb21tYW5kIHQpCi0JCQkJICAoYnJlYWstY2FsbCAoY2FyIC0pIChjZHIgLSkgJ3Np
OjpicmVhay1jb21tYW5kKSkKLQkJCQkgKHQgKGV2YWxob29rIC0gbmlsIG5pbCAqYnJlYWstZW52
KikpKSkpKSkKKzsJCQkgICAoaWYgKGtleXdvcmRwIC0pKHNldHEgLSAoY29ucyAtIG5pbCkpKQor
CQkJICAgKGNvbmQgCisJCQkgICAgKChrZXl3b3JkcCAtKQorCQkJICAgICAoc2V0cSBicmVhay1j
b21tYW5kIHQpCisJCQkgICAgIChicmVhay1jYWxsIC0gbmlsICdzaTo6YnJlYWstY29tbWFuZCkp
CisJCQkgICAgKChhbmQgKGNvbnNwIC0pIChrZXl3b3JkcCAoY2FyIC0pKSkKKwkJCSAgICAgKHNl
dHEgYnJlYWstY29tbWFuZCB0KQorCQkJICAgICAoYnJlYWstY2FsbCAoY2FyIC0pIChjZHIgLSkg
J3NpOjpicmVhay1jb21tYW5kKSkKKwkJCSAgICAodCAoZXZhbGhvb2sgLSBuaWwgbmlsICpicmVh
ay1lbnYqKSkpKSkpKQogCSAgICAoYW5kIGJyZWFrLWNvbW1hbmQgKGVxIChjYXIgdmFsdWVzKSA6
cmVzdW1lICkocmV0dXJuKSkKICAgICAgICAgICAgIChzZXRxIC8vLyAvLyAvLyAvIC8gdmFsdWVz
ICoqKiAqKiAqKiAqICogKGNhciAvKSkKICAgICAgICAgICAgIChmcmVzaC1saW5lICpkZWJ1Zy1p
byopCkBAIC0yNDYsNyArMjU3LDcgQEAKICAgKGVycm9yLW5hbWUgY29ycmVjdGFibGUgZnVuY3Rp
b24tbmFtZQogICAgY29udGludWUtZm9ybWF0LXN0cmluZyBlcnJvci1mb3JtYXQtc3RyaW5nCiAg
ICAmcmVzdCBhcmdzICZhdXggbWVzc2FnZSkKLSAgKGRlY2xhcmUgKGlnbm9yZSBlcnJvci1uYW1l
KSkKKyAgKGRlY2xhcmUgKGlnbm9yZSBlcnJvci1uYW1lKSAoOmR5bmFtaWMtZXh0ZW50IGFyZ3Mp
KQogICAobGV0ICgoKnByaW50LXByZXR0eSogbmlsKQogICAgICAgICAoKnByaW50LWxldmVsKiAq
ZGVidWctcHJpbnQtbGV2ZWwqKQogICAgICAgICAoKnByaW50LWxlbmd0aCogKmRlYnVnLXByaW50
LWxldmVsKikKSW5kZXg6IG8vYWxsb2MuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9n
Y2wvZ2NsL28vYWxsb2MuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xOS40LjEuMi4xNy4yLjEu
NC4xLjIuMi40LjIKZGlmZiAtdSAtcjEuMTkuNC4xLjIuMTcuMi4xLjQuMS4yLjIuNC4yIGFsbG9j
LmMKLS0tIG8vYWxsb2MuYwkxNiBKYW4gMjAwNSAwMjoyOTowOSAtMDAwMAkxLjE5LjQuMS4yLjE3
LjIuMS40LjEuMi4yLjQuMgorKysgby9hbGxvYy5jCTYgSnVuIDIwMDUgMjE6NDk6NTkgLTAwMDAK
QEAgLTY0LDggKzY0LDEwIEBACiBsb25nIHJlYWxfbWF4cGFnZSA9IE1BWFBBR0U7CiBsb25nIG5l
d19ob2xlcGFnZTsKIAotI2RlZmluZQlhdmFpbGFibGVfcGFnZXMJXAotCShyZWFsX21heHBhZ2Ut
cGFnZShoZWFwX2VuZCktbmV3X2hvbGVwYWdlLTIqbnJicGFnZS1yZWFsX21heHBhZ2UvMzIpCisv
KiAjZGVmaW5lCWF2YWlsYWJsZV9wYWdlcwlcICovCisvKiAJKChsb25nKSgocmVhbF9tYXhwYWdl
LXBhZ2UoaGVhcF9lbmQpLW5ld19ob2xlcGFnZS1ucmJwYWdlLXJlYWxfbWF4cGFnZS8zMikpKSAq
LworLyogI2RlZmluZQlhdmFpbGFibGVfcGFnZXMJXCAqLworLyogCSgobG9uZykoKHJlYWxfbWF4
cGFnZS1wYWdlKGhlYXBfZW5kKS1uZXdfaG9sZXBhZ2UtMipucmJwYWdlLXJlYWxfbWF4cGFnZS8z
MikpKSAqLwogCiAKIC8qICAjaWZkZWYgVU5JWCAqLwpAQCAtODQsNiArODYsNyBAQAogaW50IHJl
c2VydmVfcGFnZXNfZm9yX3NpZ25hbF9oYW5kbGVyID0zMDsKIGludCBob2xlX292ZXJydW49MDsK
IAorCiAvKiBJZiAgKG4gPj0gMCApIHJldHVybiBwb2ludGVyIHRvIG4gcGFnZXMgc3RhcnRpbmcg
YXQgaGVhcCBlbmQsCiAgICBUaGVzZSBtdXN0IGNvbWUgZnJvbSB0aGUgaG9sZSwgc28gaWYgdGhh
dCBpcyBleGhhdXN0ZWQgeW91IGhhdmUKICAgIHRvIGdjIGFuZCBtb3ZlIHRoZSBob2xlLgpAQCAt
MTE4LDcgKzEyMSw5IEBACiBUcnkgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSB0byBzYXZlIGZvciBh
bGxvY2F0aW9uIGR1cmluZyBzaWduYWxzOiBcCiBlZyB0byBhZGQgMjAgbW9yZSBkbyAoc2k6OnNl
dC1ob2xlLXNpemUgJWxkICVkKVxuLi4uc3RhcnQgb3ZlciAiLCBuZXdfaG9sZXBhZ2UsIDIwKyBy
ZXNlcnZlX3BhZ2VzX2Zvcl9zaWduYWxfaGFuZGxlcik7IGZmbHVzaChzdGRlcnIpOyBleGl0KDEp
O30KIAorCQkJaG9sZV9vdmVycnVuPTE7CiAJCQlHQkModF9yZWxvY2F0YWJsZSk7CisJCQlob2xl
X292ZXJydW49MDsKICNpZmRlZiBTR0MKIAkJCWlmIChpbl9zZ2MpCiAJCQkgIHtob2xlX292ZXJy
dW49MTtzZ2Nfc3RhcnQoKTtob2xlX292ZXJydW49MDsKQEAgLTEzNCw2ICsxMzksMTEgQEAKIAkJ
ICAvKiBjYW4gaGFwcGVuIHdoZW4gbWFsbG9jcyBvY2N1ciBiZWZvcmUgcmVsIGJsb2NrIHNldCB1
cC4uKi8KIAkJICB7IHNicmsoUEFHRVNJWkUqbikgOwogCQkgICAgY29yZV9lbmQgKz0gUEFHRVNJ
WkUqbjsKKwkJICAgIHsKKwkJICAgICAgdW5zaWduZWQgbG9uZyBvbGRfbmV3X2hvbGVwYWdlPW5l
d19ob2xlcGFnZTsKKwkJICAgICAgbmV3X2hvbGVwYWdlPUNPUkVfUEFHRVMvSE9MRURJVjsKKwkJ
ICAgICAgaWYgKGF2YWlsYWJsZV9wYWdlczwxKSBuZXdfaG9sZXBhZ2U9b2xkX25ld19ob2xlcGFn
ZTsKKwkJICAgIH0KIAkJICB9CiAJCWhlYXBfZW5kICs9IFBBR0VTSVpFKm47CiAJCXJldHVybihl
KTsKQEAgLTE1NCwxMyArMTY0LDE5IEBACiAJICBtYWtlX3dyaXRhYmxlKHBhZ2UoY29yZV9lbmQp
LHBhZ2UoY29yZV9lbmQpK24tbSk7CiAjZW5kaWYJCiAJY29yZV9lbmQgKz0gUEFHRVNJWkUqKG4g
LSBtKTsKKwl7CisJICB1bnNpZ25lZCBsb25nIG9sZF9uZXdfaG9sZXBhZ2U9bmV3X2hvbGVwYWdl
OworCSAgbmV3X2hvbGVwYWdlPUNPUkVfUEFHRVMvSE9MRURJVjsKKwkgIGlmIChhdmFpbGFibGVf
cGFnZXM8MSkgbmV3X2hvbGVwYWdlPW9sZF9uZXdfaG9sZXBhZ2U7CisJfQogCXJldHVybihlKTt9
CiB9CiAKIHZvaWQKIGFkZF9wYWdlX3RvX2ZyZWVsaXN0KGNoYXIgKnAsIHN0cnVjdCB0eXBlbWFu
YWdlciAqdG0pCiB7c2hvcnQgdCxzaXplOwotIGxvbmcgaT10bS0+dG1fbnBwYWdlLGZ3OworIGxv
bmcgaT10bS0+dG1fbnBwYWdlOworIHdvcmQgZnc7CiAgdW5zaWduZWQgbG9uZyBucD1wYWdlKHAp
OwogIG9iamVjdCB4LGY7CiAgaWYgKG5wPj1NQVhQQUdFKQpAQCAtMTc5LDEzICsxOTUsMTQgQEAK
ICBzaXplPXRtLT50bV9zaXplOwogIGY9dG0tPnRtX2ZyZWU7CiAgeD0gKG9iamVjdClwOwotIHgt
PmQudD10OwotIHgtPmQubT1GUkVFOworLyogIHgtPmQudD10OyAqLworIHNldF90eXBlX29mKHgs
dCk7CisgbWFrZV9mcmVlKHgpOwogI2lmZGVmIFNHQwogIGlmIChzZ2NfZW5hYmxlZCAmJiB0bS0+
dG1fc2djKQotICAge3gtPmQucz1TR0NfUkVDRU5UOworICAge2lmICh0eXBlX29mKHgpIT10X2Nv
bnMpIHgtPmQucz1TR0NfUkVDRU5UOyAvKkZJWE1FLCBjYW4gc2djIG1hcmsgY29ucyBvbiA2NGJp
dCovCiAgICAgc2djX3R5cGVfbWFwW25wXSA9IChTR0NfUEFHRV9GTEFHIHwgU0dDX1RFTVBfV1JJ
VEFCTEUpO30KLSBlbHNlIHgtPmQucyA9IFNHQ19OT1JNQUw7CisgZWxzZSB7aWYgKHR5cGVfb2Yo
eCkhPXRfY29ucykgeC0+ZC5zID0gU0dDX05PUk1BTDt9CiAgCiAgLyogYXJyYXkgaGVhZGVycyBt
dXN0IGJlIGFsd2F5cyB3cml0YWJsZSwgc2luY2UgYSB3cml0ZSB0byB0aGUKICAgICBib2R5IGRv
ZXMgbm90IHRvdWNoIHRoZSBoZWFkZXIuICAgSXQgbWF5IGJlIGRlc2lyYWJsZSBpZiB0aGVyZQpA
QCAtMTk2LDkgKzIxMyw5IEBACiAgICBzZ2NfdHlwZV9tYXBbbnBdIHw9IFNHQ19QRVJNX1dSSVRB
QkxFOwogICAgCiAjZW5kaWYgCi0gZnc9ICooaW50ICopeDsKKyBmdz0qKHdvcmQgKil4OwogIHdo
aWxlICgtLWkgPj0gMCkKLSAgIHsgKihpbnQgKil4PWZ3OworICAgeyAqKHdvcmQgKil4PWZ3Owog
ICAgICBTRVRfTElOSyh4LGYpOwogICAgICBmPXg7CiAgICAgIHg9IChvYmplY3QpICgoY2hhciAq
KXggKyBzaXplKTsKQEAgLTI4MSw3ICsyOTgsNyBAQAogI2RlZmluZSBPUFRJTUlaRV9NQVhfUEFH
RVMgKHNTQW9wdGltaXplX21heGltdW1fcGFnZXNBID09MCB8fCBzU0FvcHRpbWl6ZV9tYXhpbXVt
X3BhZ2VzQS0+cy5zX2RiaW5kICE9c0xuaWwpIAogREVGVkFSKCIqTk9USUZZLU9QVElNSVpFLU1B
WElNVU0tUEFHRVMqIixzU0Fub3RpZnlfb3B0aW1pemVfbWF4aW11bV9wYWdlc0EsU0ksc0xuaWws
IiIpOwogI2RlZmluZSBNTUFYX1BHKGFfKSAoKGFfKS0+dG1fdHlwZSA9PSB0X3JlbG9jYXRhYmxl
ID8gKGFfKS0+dG1fbnBhZ2UgOiAoYV8pLT50bV9tYXhwYWdlKQotc3RhdGljIGxvbmcKK2xvbmcK
IG9wdF9tYXhwYWdlKHN0cnVjdCB0eXBlbWFuYWdlciAqbXlfdG0pIHsKIAogICBkb3VibGUgeD0w
LjAseT0wLjAseixyOwpAQCAtMzEwLDYgKzMyNywxMCBAQAogICBpZiAoejw9bW1heF9wYWdlKQog
ICAgIHJldHVybiAwOwogCisgIC8qRklYTUU6IGNlbnRyYWxpemUgd2l0aCBhdmFpbGFibGUgcGFn
ZXMgKi8KKyAgaWYgKHJlYWxfbWF4cGFnZSAtIHkgLSAoeittcm8tbW1heF9wYWdlKSAtIG5ld19o
b2xlcGFnZSAtIG5yYnBhZ2UgLSByZWFsX21heHBhZ2UvMzIgLSByZWFsX21heHBhZ2UvMTAwPD0w
KQorICAgIHJldHVybiAwOworCiAgIHI9KCh4LW15X3RtLT50bV9hZGpnYmNjbnQpKyBteV90bS0+
dG1fYWRqZ2JjY250Km1tYXhfcGFnZS96KSooeS1tbWF4X3BhZ2Ureik7CiAgIHIvPXgqeTsKICAg
aWYgKHNTQW5vdGlmeV9vcHRpbWl6ZV9tYXhpbXVtX3BhZ2VzQS0+cy5zX2RiaW5kIT1zTG5pbCkK
QEAgLTMzNCw2ICszNTUsNyBAQAogCSBzdHJ1Y3QgdHlwZW1hbmFnZXIgKnRtOwogCSBjaGFyICpw
OwogCSBpbnQgbXVzdF9oYXZlX21vcmVfcGFnZXM7CisJIHVuc2lnbmVkIGxvbmcgaTsKIAogT05D
RV9NT1JFOgogCXRtID0gdG1fb2YodCk7CkBAIC0zNTksOCArMzgxLDEwIEBACiAJdG0tPnRtX2Zy
ZWUgPSBPQkpfTElOSyhvYmopOwogCS0tKHRtLT50bV9uZnJlZSk7CiAJKHRtLT50bV9udXNlZCkr
KzsKLQlvYmotPmQudCA9IChzaG9ydCl0OwotCW9iai0+ZC5tID0gRkFMU0U7CisvKiAJb2JqLT5k
LnQgPSAoc2hvcnQpdDsgKi8KKwlzZXRfdHlwZV9vZihvYmosdCk7CisJbWFrZV91bmZyZWUob2Jq
KTsKKwlpZiAoKCh1bnNpZ25lZCBsb25nKW9iaikmMHg3KSBlcnJvcigiZm9vXG4iKTsKIAlyZXR1
cm4ob2JqKTsKICNpZmRlZiBTR0MKICNkZWZpbmUgVE9UQUxfVEhJU19UWVBFKHRtKSBcCkBAIC0z
NzAsMTMgKzM5NCwxNSBAQAogCSh0bS0+dG1fbnBwYWdlICogdG0tPnRtX25wYWdlKQogI2VuZGlm
CiBDQUxMX0dCQzoKKwlpPXRtLT50bV9tYXhwYWdlOwogCUdCQyh0bS0+dG1fdHlwZSk7Ci0JbXVz
dF9oYXZlX21vcmVfcGFnZXMgPSAodG0tPnRtX25mcmVlID09IDAgfHwKLQkJCSAgKChmbG9hdCl0
bS0+dG1fbmZyZWUpICA8ICAgKFBFUkNFTlRfRlJFRSh0bSkgKiBUT1RBTF9USElTX1RZUEUodG0p
KSkgPyAxIDogMDsKKwltdXN0X2hhdmVfbW9yZV9wYWdlcyA9IChpPT10bS0+dG1fbWF4cGFnZSAm
JiAKKwkJCQkodG0tPnRtX25mcmVlID09IDAgfHwKKwkJCQkgKChmbG9hdCl0bS0+dG1fbmZyZWUp
ICA8ICAgKFBFUkNFTlRfRlJFRSh0bSkgKiBUT1RBTF9USElTX1RZUEUodG0pKSkpID8gMSA6IDA7
CiAJaWYgKG11c3RfaGF2ZV9tb3JlX3BhZ2VzICYmICFJR05PUkVfTUFYX1BBR0VTKQogCSAgZ290
byBFWEhBVVNURUQ7CiAJaWYgKElHTk9SRV9NQVhfUEFHRVMpIHsKLQkgIGlmICgoIU9QVElNSVpF
X01BWF9QQUdFUyB8fCAhb3B0X21heHBhZ2UodG0pKSAmJiBtdXN0X2hhdmVfbW9yZV9wYWdlcykg
eworCSAgaWYgKC8qICghT1BUSU1JWkVfTUFYX1BBR0VTIHx8ICFvcHRfbWF4cGFnZSh0bSkpICYm
ICAqL211c3RfaGF2ZV9tb3JlX3BhZ2VzKSB7CiAJICAgICBpbnQgajsKIAkgICAgIAogCSAgICAg
dG0tPnRtX21heHBhZ2U9Z3Jvd19saW5lYXIoKGo9dG0tPnRtX21heHBhZ2UpLHRtLT50bV9ncm93
dGhfcGVyY2VudCwKQEAgLTQxMCw2ICs0MzYsNyBAQAogCSBjaGFyICpwOwogCSBzdHJ1Y3QgdHlw
ZW1hbmFnZXIgKnRtPSgmdG1fdGFibGVbKGludCl0X2NvbnNdKTsKIAkgaW50IG11c3RfaGF2ZV9t
b3JlX3BhZ2VzOworCSB1bnNpZ25lZCBsb25nIGk7CiAKIE9OQ0VfTU9SRToKICAgICAgICAgQ0hF
Q0tfSU5URVJSVVBUOwpAQCAtNDMyLDIwICs0NTksMjQgQEAKIAl0bS0+dG1fZnJlZSA9IE9CSl9M
SU5LKG9iaik7CiAJLS0odG0tPnRtX25mcmVlKTsKIAkodG0tPnRtX251c2VkKSsrOwotCW9iai0+
Yy50ID0gKHNob3J0KXRfY29uczsKLQlvYmotPmMubSA9IEZBTFNFOworLyogCW9iai0+Yy50ID0g
KHNob3J0KXRfY29uczsgKi8KKwlzZXRfdHlwZV9vZihvYmosdF9jb25zKTsKKwltYWtlX3VuZnJl
ZShvYmopOwogCW9iai0+Yy5jX2NhciA9IGE7CiAJb2JqLT5jLmNfY2RyID0gZDsKKwlpZiAoKCh1
bnNpZ25lZCBsb25nKW9iaikmMHg3KSBlcnJvcigiZm9vXG4iKTsKIAlyZXR1cm4ob2JqKTsKIAog
Q0FMTF9HQkM6CisJaT10bS0+dG1fbWF4cGFnZTsKIAlHQkModF9jb25zKTsKLQltdXN0X2hhdmVf
bW9yZV9wYWdlcz0odG0tPnRtX25mcmVlID09IDAgfHwKLQkJCSAgICAgKGZsb2F0KXRtLT50bV9u
ZnJlZSAgIDwgIFBFUkNFTlRfRlJFRSh0bSkgKiBUT1RBTF9USElTX1RZUEUodG0pKSA/IDEgOiAw
OworCW11c3RfaGF2ZV9tb3JlX3BhZ2VzPShpPT10bS0+dG1fbWF4cGFnZSAmJgorCQkJICAgICAg
KHRtLT50bV9uZnJlZSA9PSAwIHx8CisJCQkgICAgICAgKGZsb2F0KXRtLT50bV9uZnJlZSAgIDwg
IFBFUkNFTlRfRlJFRSh0bSkgKiBUT1RBTF9USElTX1RZUEUodG0pKSkgPyAxIDogMDsKIAlpZiAo
bXVzdF9oYXZlX21vcmVfcGFnZXMgJiYgIUlHTk9SRV9NQVhfUEFHRVMpCiAJICBnb3RvIEVYSEFV
U1RFRDsKIAlpZiAoSUdOT1JFX01BWF9QQUdFUykgewotCSAgaWYgKCghT1BUSU1JWkVfTUFYX1BB
R0VTIHx8ICFvcHRfbWF4cGFnZSh0bSkpICYmIG11c3RfaGF2ZV9tb3JlX3BhZ2VzKSB7CisJICBp
ZiAoLyogKCFPUFRJTUlaRV9NQVhfUEFHRVMgfHwgIW9wdF9tYXhwYWdlKHRtKSkgJiYgICovbXVz
dF9oYXZlX21vcmVfcGFnZXMpIHsKIAkgICAgIGludCBqOwogCSAgICAgCiAJICAgICB0bS0+dG1f
bWF4cGFnZT1ncm93X2xpbmVhcigoaj10bS0+dG1fbWF4cGFnZSksdG0tPnRtX2dyb3d0aF9wZXJj
ZW50LApAQCAtNDc0LDEwICs1MDUsMTIgQEAKIAogb2JqZWN0IG9uX3N0YWNrX2NvbnMob2JqZWN0
IHgsIG9iamVjdCB5KQoge29iamVjdCBwID0gKG9iamVjdCkgYWxsb2NhX3ZhbDsKLSBwLT5jLnQ9
IChzaG9ydCl0X2NvbnM7Ci0gcC0+Yy5tPUZBTFNFOworLyogIHAtPmMudD0gKHNob3J0KXRfY29u
czsgKi8KKyBzZXRfdHlwZV9vZihwLHRfY29ucyk7CisgbWFrZV91bmZyZWUocCk7CiAgcC0+Yy5j
X2Nhcj14OwogIHAtPmMuY19jZHI9eTsKKyBpZiAoKCh1bnNpZ25lZCBsb25nKXApJjB4NykgZXJy
b3IoImZvb1xuIik7CiAgcmV0dXJuIHA7CiB9CiAKQEAgLTU3OSw3ICs2MTIsNyBAQAogCQkgIGdv
dG8gRVhIQVVTVEVEOwogCQlpZiAoSUdOT1JFX01BWF9QQUdFUykgewogCQkgIHN0cnVjdCB0eXBl
bWFuYWdlciAqdG0gPSAmdG1fdGFibGVbKGludCl0X2NvbnRpZ3VvdXNdOwotCQkgIGlmICgoIU9Q
VElNSVpFX01BWF9QQUdFUyB8fCAhb3B0X21heHBhZ2UodG0pKSAmJiBnKSB7CisJCSAgaWYgKC8q
ICghT1BUSU1JWkVfTUFYX1BBR0VTIHx8ICFvcHRfbWF4cGFnZSh0bSkpICYmICAqL2cgJiYgaj09
bWF4Y2JwYWdlKSB7CiAJCSAgICBtYXhjYnBhZ2U9Z3Jvd19saW5lYXIobWF4Y2JwYWdlLHRtLT50
bV9ncm93dGhfcGVyY2VudCwKIAkJCQkJICB0bS0+dG1fbWluX2dyb3csIHRtLT50bV9tYXhfZ3Jv
dyk7CiAJCSAgICB0bS0+dG1fYWRqZ2JjY250Kj0oZG91YmxlKWovbWF4Y2JwYWdlOwpAQCAtNzA4
LDcgKzc0MSw5IEBACiBPTkNFX01PUkU6CiAgICAgICAgIENIRUNLX0lOVEVSUlVQVDsKIAotCWlm
IChyYl9saW1pdCAtIHJiX3BvaW50ZXIgPCBuKSB7CisJaT1wYWdlKHJiX2VuZCktcGFnZShoZWFw
X2VuZCktaG9sZXBhZ2U7CisJaWYgKHJiX2xpbWl0IC0gcmJfcG9pbnRlciA8IG4gfHwgCisJICAg
IGkhPW5yYnBhZ2UpIHsKIAkgIGlmICghZyAmJiBpbl9zaWduYWxfaGFuZGxlciA9PSAwKSB7CiAJ
ICAgIC8qR01QX1dSQVBQRVJTOiAgUGxlYXNlIHNlZSBjb21tZW50cyBpbiBnbXBfd3JhcHBlcnMu
aCAyMDA0MDgxNSBDTSovCiAJICAgIHN3aXRjaCAoam1wX2dtcCkgewpAQCAtNzI1LDIxICs3NjAs
MjQgQEAKIAkgICAgICBicmVhazsKIAkgICAgfQogCSAgfQotCSAgbXVzdF9oYXZlX21vcmVfcGFn
ZXM9KChmbG9hdCkocmJfbGltaXQgLSByYl9wb2ludGVyKSA8IAotCQkJCVBFUkNFTlRfRlJFRSh0
bV9vZih0X3JlbG9jYXRhYmxlKSkgKiAoZmxvYXQpKHJiX2xpbWl0IC0gcmJfc3RhcnQpKSA/IDEg
OiAwOworCSAgbXVzdF9oYXZlX21vcmVfcGFnZXM9KGk9PW5yYnBhZ2UgJiYKKwkJCQkoKGZsb2F0
KShyYl9saW1pdCAtIHJiX3BvaW50ZXIpIDwgCisJCQkJIFBFUkNFTlRfRlJFRSh0bV9vZih0X3Jl
bG9jYXRhYmxlKSkgKiAoZmxvYXQpKHJiX2xpbWl0IC0gcmJfc3RhcnQpKSkgPyAxIDogMDsKIAkg
IGlmICgobXVzdF9oYXZlX21vcmVfcGFnZXMgfHwgZykgJiYgIUlHTk9SRV9NQVhfUEFHRVMpCiAJ
ICAgIGdvdG8gRVhIQVVTVEVEOwotCSAgaT1ucmJwYWdlOwogCSAgaWYgKElHTk9SRV9NQVhfUEFH
RVMpIHsKIAkgICAgc3RydWN0IHR5cGVtYW5hZ2VyICp0bSA9ICZ0bV90YWJsZVsoaW50KXRfcmVs
b2NhdGFibGVdOwotCSAgICBpZiAoKCFPUFRJTUlaRV9NQVhfUEFHRVMgIHx8ICFvcHRfbWF4cGFn
ZSh0bSkpICYmIChnIHx8IG11c3RfaGF2ZV9tb3JlX3BhZ2VzKSkgeworCSAgICBpZiAoLyogKCFP
UFRJTUlaRV9NQVhfUEFHRVMgIHx8ICFvcHRfbWF4cGFnZSh0bSkpICYmICAqLyhnIHx8IG11c3Rf
aGF2ZV9tb3JlX3BhZ2VzKSkgewogCSAgICAgIG5yYnBhZ2U9Z3Jvd19saW5lYXIobnJicGFnZSx0
bS0+dG1fZ3Jvd3RoX3BlcmNlbnQsCiAJCQkJICB0bS0+dG1fbWluX2dyb3csIHRtLT50bV9tYXhf
Z3Jvdyk7CiAJICAgICAgdG0tPnRtX2FkamdiY2NudCo9KGRvdWJsZSlpL25yYnBhZ2U7CiAJICAg
IH0KIAkgICAgaWYgKGF2YWlsYWJsZV9wYWdlcyA8IDApIHsKLQkgICAgICBucmJwYWdlID0gaTsK
LQkgICAgICBnb3RvIEVYSEFVU1RFRDsKKwkgICAgICBucmJwYWdlICs9IGF2YWlsYWJsZV9wYWdl
czsKKwkgICAgICBpZiAobnJicGFnZTw9aSkgeworCQlucmJwYWdlID0gaTsKKwkJZ290byBFWEhB
VVNURUQ7CisJICAgICAgfQogCSAgICB9IGVsc2UgaWYgKG5yYnBhZ2UgIT0gaSkgewogCSAgICAg
IHJiX2VuZCArPSAgKFBBR0VTSVpFKiAobnJicGFnZSAtaSkpOwogCSAgICAgIHJiX2xpbWl0ID0g
cmJfZW5kIC0gMipSQl9HRVRBOwpAQCAtODk4LDE1ICs5MzYsNiBAQAogICB9CiAjZW5kaWYJCiAg
IAotICBob2xlcGFnZSA9IElOSVRfSE9MRVBBR0U7Ci0jaWZkZWYgR0NMX0dQUk9GCi0gIGlmICho
b2xlcGFnZTx0ZXh0cGFnZSkKLSAgICAgaG9sZXBhZ2U9dGV4dHBhZ2U7Ci0jZW5kaWYKLQotICBu
ZXdfaG9sZXBhZ2UgPSBIT0xFUEFHRTsKLSAgbnJicGFnZSA9IElOSVRfTlJCUEFHRTsKLSAgCiAg
IHNldF9tYXhwYWdlKCk7CiAgIAogI2lmZGVmIF9fbGludXhfXwpAQCAtOTI5LDYgKzk1OCwxNSBA
QAogICBJTklUX0FMTE9DOwogI2VuZGlmICAKICAgCisgIGhvbGVwYWdlID0gQ09SRV9QQUdFUy9J
TklUX0hPTEVESVY7CisjaWZkZWYgR0NMX0dQUk9GCisgIGlmIChob2xlcGFnZTx0ZXh0cGFnZSkK
KyAgICAgaG9sZXBhZ2U9dGV4dHBhZ2U7CisjZW5kaWYKKworICBuZXdfaG9sZXBhZ2UgPSBDT1JF
X1BBR0VTL0hPTEVESVY7CisgIG5yYnBhZ2UgPSBDT1JFX1BBR0VTL0lOSVRfTlJCRElWOworICAK
ICAgYWxsb2NfcGFnZSgtKGhvbGVwYWdlICsgbnJicGFnZSkpOwogICAKICAgcmJfc3RhcnQgPSBy
Yl9wb2ludGVyID0gaGVhcF9lbmQgKyBQQUdFU0laRSpob2xlcGFnZTsKQEAgLTk0Nyw5ICs5ODUs
OSBAQAogICAgICBHYXZlIGVhY2ggcGFnZSB0eXBlIGF0IGxlYXN0IHNvbWUgc2djIHBhZ2VzIGJ5
IGRlZmF1bHQuICBPZgogICAgICBjb3Vyc2UgY2hhbmdlYWJsZSBieSBhbGxvY2F0ZS1zZ2MuICBD
TSAyMDAzMDgyNyAqLwogCisgIGluaXRfdG0odF9jb25zLCAiLkNPTlMiLCBzaXplb2Yoc3RydWN0
IGNvbnMpLCA2NTUzNiAsNTAsMCApOwogICBpbml0X3RtKHRfZml4bnVtLCAiTkZJWE5VTSIsCiAJ
ICBzaXplb2Yoc3RydWN0IGZpeG51bV9zdHJ1Y3QpLCA4MTkyLDIwLDApOwotICBpbml0X3RtKHRf
Y29ucywgIi5DT05TIiwgc2l6ZW9mKHN0cnVjdCBjb25zKSwgNjU1MzYgLDUwLDAgKTsKICAgaW5p
dF90bSh0X3N0cnVjdHVyZSwgIlNTVFJVQ1RVUkUiLCBzaXplb2Yoc3RydWN0IHN0cnVjdHVyZSks
IDU0NjEsMSwwICk7CiAgIGluaXRfdG0odF9jZnVuLCAiZkNGVU4iLCBzaXplb2Yoc3RydWN0IGNm
dW4pLCA0MDk2LDEsMCAgKTsKICAgaW5pdF90bSh0X3NmdW4sICJnU0ZVTiIsIHNpemVvZihzdHJ1
Y3Qgc2Z1biksNDA5LDEsMCApOwpAQCAtMTU0NywyNSArMTU4NSwyNiBAQAogI2VuZGlmICAKICAg
ICAgIAogewotCW9iamVjdCAqcDsKKwlvYmplY3QgKnAscHA7CiAJaWYgKHB0ciA9PSAwKQogCSAg
cmV0dXJuOwogI2lmZGVmIEJBQllfTUFMTE9DX1NJWkUKIAlpZiAoKHZvaWQgKilwdHIgPCAodm9p
ZCAqKSAmYmFieV9tYWxsb2NfZGF0YVtzaXplb2YoYmFieV9tYWxsb2NfZGF0YSldKQogCSAgcmV0
dXJuOwogI2VuZGlmCQotCWZvciAocCA9ICZtYWxsb2NfbGlzdDsgKnAgJiYgIWVuZHAoKnApOyAg
cCA9ICYoKCpwKS0+Yy5jX2NkcikpCi0JCWlmICgoKnApLT5jLmNfY2FyLT5zdC5zdF9zZWxmID09
IHB0cikgeworLyogCWZvciAocCA9ICZtYWxsb2NfbGlzdCxwcD0qcCwoKG9iamVjdCkmcHApLT5t
ZC5tZj0wOyAqcCAmJiAhZW5kcChwcCk7ICBwID0gJigocHApLT5jLmNfY2RyKSxwcD0qcCwoKG9i
amVjdCkmcHApLT5tZC5tZj0wKSAqLworCWZvciAocD0mbWFsbG9jX2xpc3QscHA9KnA7IHBwICYm
ICFlbmRwKHBwKTsgIHAgPSAmKChwcCktPmMuY19jZHIpLHBwPVNjZHIocHApKQorCQlpZiAoKHBw
KS0+Yy5jX2Nhci0+c3Quc3Rfc2VsZiA9PSBwdHIpIHsKIC8qIFNHQyBjb250YmxvY2sgcGFnZXM6
IEl0cyBwb3NzaWJsZSB0aGlzIGlzIG9uIGFuIG9sZCBwYWdlIENNIDIwMDMwODI3ICovCiAjaWZk
ZWYgU0dDCi0gCQkJaW5zZXJ0X21heWJlX3NnY19jb250YmxvY2soKCpwKS0+Yy5jX2Nhci0+c3Qu
c3Rfc2VsZiwKLQkJCQkJCSAgICgqcCktPmMuY19jYXItPnN0LnN0X2RpbSk7CisgCQkJaW5zZXJ0
X21heWJlX3NnY19jb250YmxvY2soKHBwKS0+Yy5jX2Nhci0+c3Quc3Rfc2VsZiwKKwkJCQkJCSAg
IChwcCktPmMuY19jYXItPnN0LnN0X2RpbSk7CiAjZWxzZQotIAkJCWluc2VydF9jb250YmxvY2so
KCpwKS0+Yy5jX2Nhci0+c3Quc3Rfc2VsZiwKLQkJCQkJICgqcCktPmMuY19jYXItPnN0LnN0X2Rp
bSk7CisgCQkJaW5zZXJ0X2NvbnRibG9jaygocHApLT5jLmNfY2FyLT5zdC5zdF9zZWxmLAorCQkJ
CQkgKHBwKS0+Yy5jX2Nhci0+c3Quc3RfZGltKTsKICNlbmRpZgotCQkJKCpwKS0+Yy5jX2Nhci0+
c3Quc3Rfc2VsZiA9IE5VTEw7Ci0JCQkqcCA9ICgqcCktPmMuY19jZHI7CisJCQkocHApLT5jLmNf
Y2FyLT5zdC5zdF9zZWxmID0gTlVMTDsKKwkJCSpwID0gU2NkcihwcCk7CiAjaWZkZWYgR0NMX0dQ
Uk9GCiAJCQlpZiAoaW5pdGlhbF9tb25zdGFydHVwX3BvaW50ZXI9PXB0cikgewogCQkJICBpbml0
aWFsX21vbnN0YXJ0dXBfcG9pbnRlcj1OVUxMOwpJbmRleDogby9hcnJheS5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9hcnJheS5jLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjIwLjQuMS40LjQuMi4yCmRpZmYgLXUgLXIxLjIwLjQuMS40LjQuMi4yIGFycmF5LmMKLS0t
IG8vYXJyYXkuYwk4IEp1biAyMDA0IDE5OjM0OjAzIC0wMDAwCTEuMjAuNC4xLjQuNC4yLjIKKysr
IG8vYXJyYXkuYwk2IEp1biAyMDA1IDIxOjQ5OjU5IC0wMDAwCkBAIC03NTQsMTIgKzc1NCwxMyBA
QAogLyogYWRkIGRpZmYgdG8gYm9keSBvZiB4IGFuZCBhcnJheXMgZGlpc3BsYWNlZCB0byBpdCAq
LwogCiB2b2lkCi1hZGp1c3RfZGlzcGxhY2VkKG9iamVjdCB4LCBsb25nIGRpZmYpCi17Ci0JaWYg
KHgtPnVzdC51c3Rfc2VsZiAhPSBOVUxMKQotCQl4LT51c3QudXN0X3NlbGYgPSAoY2hhciAqKSgo
bG9uZykoeC0+YS5hX3NlbGYpICsgZGlmZik7Ci0JZm9yICh4ID0gTWNkcih4LT51c3QudXN0X2Rp
c3BsYWNlZCk7ICB4ICE9IENuaWw7ICB4ID0gTWNkcih4KSkKLQkJYWRqdXN0X2Rpc3BsYWNlZChN
Y2FyKHgpLCBkaWZmKTsKK2FkanVzdF9kaXNwbGFjZWQob2JqZWN0IHgsIGxvbmcgZGlmZikgewor
CisgIGlmICh4LT51c3QudXN0X3NlbGYgIT0gTlVMTCkKKyAgICB4LT51c3QudXN0X3NlbGYgPSAo
Y2hhciAqKSgobG9uZykoeC0+YS5hX3NlbGYpICsgZGlmZik7CisgIGZvciAoeCA9IFNjZHIoeC0+
dXN0LnVzdF9kaXNwbGFjZWQpOyAgeCAhPSBDbmlsOyAgeCA9IFNjZHIoeCkpIAorICAgIGFkanVz
dF9kaXNwbGFjZWQoTWNhcih4KSwgZGlmZik7CisgIAogfQogCiAKSW5kZXg6IG8vY2Z1bi5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9jZnVuLmMsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNS42LjIKZGlmZiAtdSAtcjEuNS42LjIgY2Z1bi5jCi0tLSBvL2NmdW4uYwk2
IE5vdiAyMDAzIDE2OjE2OjUwIC0wMDAwCTEuNS42LjIKKysrIG8vY2Z1bi5jCTYgSnVuIDIwMDUg
MjE6NDk6NTkgLTAwMDAKQEAgLTU2LDcgKzU2LDcgQEAKIHtvYmplY3Qgc2ZuOwogICAgICAgIAog
CXNmbiA9IGFsbG9jX29iamVjdCh0X3NmdW4pOwotICAgICAgICBpZihhcmdkID4xNSkgc2ZuLT5k
LnQgPSAoaW50KXRfZ2Z1bjsKKyAgICAgICAgaWYoYXJnZCA+MTUpIHtzZXRfdHlwZV9vZihzZm4s
dF9nZnVuKTt9LyogIHNmbi0+ZC50ID0gKGludCl0X2dmdW47ICovCiAJc2ZuLT5zZm4uc2ZuX3Nl
bGYgPSBzZWxmOwogCXNmbi0+c2ZuLnNmbl9uYW1lID0gbmFtZTsKIAlzZm4tPnNmbi5zZm5fZGF0
YSA9IGRhdGE7CkluZGV4OiBvL2NoYXJhY3Rlci5kCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNy
b290L2djbC9nY2wvby9jaGFyYWN0ZXIuZCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41LjQuMS40
LjIKZGlmZiAtdSAtcjEuNS40LjEuNC4yIGNoYXJhY3Rlci5kCi0tLSBvL2NoYXJhY3Rlci5kCTYg
Tm92IDIwMDMgMTY6MTY6NTAgLTAwMDAJMS41LjQuMS40LjIKKysrIG8vY2hhcmFjdGVyLmQJNiBK
dW4gMjAwNSAyMTo0OTo1OSAtMDAwMApAQCAtNTgxLDE3ICs1ODEsMjQgQEAKIAlpbnQgaTsKIAog
CWZvciAoaSA9IDA7ICBpIDwgQ0hDT0RFTElNOyAgaSsrKSB7Ci0JCWNoYXJhY3Rlcl90YWJsZVtp
XS50ID0gKHNob3J0KXRfY2hhcmFjdGVyOwotCQljaGFyYWN0ZXJfdGFibGVbaV0uY2hfY29kZSA9
IGk7Ci0JCWNoYXJhY3Rlcl90YWJsZVtpXS5jaF9mb250ID0gMDsKLQkJY2hhcmFjdGVyX3RhYmxl
W2ldLmNoX2JpdHMgPSAwOworCSAgb2JqZWN0IHg9KG9iamVjdCkoY2hhcmFjdGVyX3RhYmxlK2kp
OworCSAgc2V0X3R5cGVfb2YoeCx0X2NoYXJhY3Rlcik7CisvKiAJCWNoYXJhY3Rlcl90YWJsZVtp
XS50ID0gKHNob3J0KXRfY2hhcmFjdGVyOyAqLworCSAgeC0+Y2guY2hfY29kZSA9IGk7CisJICB4
LT5jaC5jaF9mb250ID0gMDsKKwkgIHgtPmNoLmNoX2JpdHMgPSAwOwogCX0KICNpZmRlZiBBVgog
CWZvciAoaSA9IC0xMjg7ICBpIDwgMDsgIGkrKykgewotCQljaGFyYWN0ZXJfdGFibGVbaV0udCA9
IChzaG9ydCl0X2NoYXJhY3RlcjsKLQkJY2hhcmFjdGVyX3RhYmxlW2ldLmNoX2NvZGUgPSBpK0NI
Q09ERUxJTTsKLQkJY2hhcmFjdGVyX3RhYmxlW2ldLmNoX2ZvbnQgPSAwOwotCQljaGFyYWN0ZXJf
dGFibGVbaV0uY2hfYml0cyA9IDA7CisJICBvYmplY3QgeD0ob2JqZWN0KShjaGFyYWN0ZXJfdGFi
bGUraSk7CisJICBzZXRfdHlwZV9vZih4LHRfY2hhcmFjdGVyKTsKKwkgIHgtPmNoLmNoX2NvZGUg
PSBpK0NIQ09ERUxJTTsKKwkgIHgtPmNoLmNoX2ZvbnQgPSAwOworCSAgeC0+Y2guY2hfYml0cyA9
IDA7CisvKiAJCWNoYXJhY3Rlcl90YWJsZVtpXS50ID0gKHNob3J0KXRfY2hhcmFjdGVyOyAqLwor
LyogCQljaGFyYWN0ZXJfdGFibGVbaV0uY2hfY29kZSA9IGkrQ0hDT0RFTElNOyAqLworLyogCQlj
aGFyYWN0ZXJfdGFibGVbaV0uY2hfZm9udCA9IDA7ICovCisvKiAJCWNoYXJhY3Rlcl90YWJsZVtp
XS5jaF9iaXRzID0gMDsgKi8KIAl9CiAjZW5kaWYKIApJbmRleDogby9ldmFsLmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL2V2YWwuYyx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4xMi42LjIuMi4xLjIuMQpkaWZmIC11IC1yMS4xMi42LjIuMi4xLjIuMSBldmFsLmMKLS0t
IG8vZXZhbC5jCTEzIEp1bCAyMDA0IDE0OjE3OjAxIC0wMDAwCTEuMTIuNi4yLjIuMS4yLjEKKysr
IG8vZXZhbC5jCTYgSnVuIDIwMDUgMjE6NDk6NTkgLTAwMDAKQEAgLTk1LDggKzk1LDggQEAKIHsg
REVCVUdfQVZNQQogICBpbnQgaT1mdW4tPnNmbi5zZm5fYXJnZCxuPVNGVU5fTkFSR1MoaSk7CiAg
IGVudW0gZnR5cGUgcmVzdHlwZTsKLSAgb2JqZWN0ICp4LHJlcywqYmFzZTsKLSAgb2JqZWN0ICp0
ZW1wX2FyPWFsbG9jYShuKnNpemVvZihvYmplY3QpKTsKKyAgb2JqZWN0ICp4LHJlcz1PQkpOVUxM
LCpiYXNlOworICBvYmplY3QgKnRlbXBfYXI9WkFMTE9DQShuKnNpemVvZihvYmplY3QpKTsKIC8q
ICAgaT1mdW4tPnNmbi5zZm5fYXJnZDsgKi8KIC8qICAgbj1TRlVOX05BUkdTKGkpOyAqLwogICBi
YXNlID0gdnNfYmFzZTsKQEAgLTE1NywxMyArMTU3LDE2IEBACiB2b2lkCiBmdW5jYWxsKG9iamVj
dCBmdW4pCiB7IAotICAgICAgICBvYmplY3QgdGVtcG9yYXJ5OwotCW9iamVjdCB4OwotCSBvYmpl
Y3QgKiBWT0wgdG9wOwotCW9iamVjdCAqbGV4OwotCWJkc19wdHIgb2xkX2Jkc190b3A7Ci0JVk9M
IGJvb2wgYjsKLQlib29sIGM7CisvKiAgICAgICAgIG9iamVjdCBWT0wgc2ZpcnN0PU5VTEw7ICov
CisvKiAgICAgICAgIHdpcGVfc3RhY2soJnNmaXJzdCk7ICovCisJeworICAgICAgICBvYmplY3Qg
dGVtcG9yYXJ5PU9CSk5VTEw7CisJb2JqZWN0IHg9T0JKTlVMTDsKKwlvYmplY3QgKiBWT0wgdG9w
PU5VTEw7CisJb2JqZWN0ICpsZXg9TlVMTDsKKwliZHNfcHRyIG9sZF9iZHNfdG9wPU5VTEw7CisJ
Vk9MIGJvb2wgYj0wOworCWJvb2wgYz0wOwogCURFQlVHX0FWTUEKICAgICAgIFRPUDoKIAlpZiAo
ZnVuID09IE9CSk5VTEwpCkBAIC0xODUsNyArMTg4LDcgQEAKIAkJcmV0dXJuOwogICAgICAgICAg
Y2FzZSB0X2FmdW46CiAJIGNhc2UgdF9jbG9zdXJlOgotCSAgIHsgb2JqZWN0IHJlcywqYiA9IHZz
X2Jhc2U7CisJICAgeyBvYmplY3QgcmVzPU9CSk5VTEwsKmIgPSB2c19iYXNlOwogCSAgICAgaW50
IG4gPSB2c190b3AgLSBiOwogCSAgICAgcmVzID0gKG9iamVjdClJYXBwbHlWZWN0b3IoZnVuLG4s
Yik7CiAJICAgICBuID0gZmNhbGwubnZhbHVlczsKQEAgLTE5Nyw3ICsyMDAsNyBAQAogICAgICAg
Y2FzZSB0X2NjbG9zdXJlOgogCiAJewotCQlvYmplY3QgKnRvcCwgKmJhc2UsIGw7CisJCW9iamVj
dCAqdG9wPU5VTEwsICpiYXNlPU5VTEwsIGw9T0JKTlVMTDsKIAogCQlpZiAoZnVuLT5jYy5jY190
dXJibyAhPSBOVUxMKSB7CiAJCQlNTWNjYWxsKGZ1biwgZnVuLT5jYy5jY190dXJibyk7CkBAIC0z
MzgsNyArMzQxLDcgQEAKIAlsZXhfZW52ID0gbGV4OwogCWlmIChub3RfcHVzaGVkID09IDApIHtp
aHNfcG9wKCk7fQogCUNIRUNLX0FWTUE7Ci19fQorfX19CiAKIHZvaWQKIGZ1bmNhbGxfbm9fZXZl
bnQob2JqZWN0IGZ1bikKQEAgLTM1Myw3ICszNTYsNyBAQAogCiAJY2FzZSB0X2NjbG9zdXJlOgog
CXsKLQkJb2JqZWN0ICp0b3AsICpiYXNlLCBsOworCQlvYmplY3QgKnRvcD1OVUxMLCAqYmFzZT1O
VUxMLCBsPU9CSk5VTEw7CiAKIAkJaWYgKGZ1bi0+Y2MuY2NfdHVyYm8gIT0gTlVMTCkgewogCQkJ
KCpmdW4tPmNjLmNjX3NlbGYpKGZ1bi0+Y2MuY2NfdHVyYm8pOwpAQCAtOTMzLDExICs5MzYsMTEg
QEAKIHZvaWQKIGV2YWwob2JqZWN0IGZvcm0pCiB7IAotICAgICAgICBvYmplY3QgdGVtcG9yYXJ5
OworICAgICAgICBvYmplY3QgdGVtcG9yYXJ5PU9CSk5VTEw7CiAgICAgICAgIERFQlVHX0FWTUEK
LQlvYmplY3QgZnVuLCB4OwotCW9iamVjdCAqdG9wOwotCW9iamVjdCAqYmFzZTsKKwlvYmplY3Qg
ZnVuPU9CSk5VTEwsIHg9T0JKTlVMTDsKKwlvYmplY3QgKnRvcD1OVUxMOworCW9iamVjdCAqYmFz
ZT1OVUxMOwogCiAJY3NfY2hlY2soZm9ybSk7CiAKQEAgLTExMjksMTcgKzExMzIsMjEgQEAKIAlz
dXBlcl9mdW5jYWxsKGFoKTsKIH0KIAotCiBERUZVTk9fTkVXKCJGVU5DQUxMIixvYmplY3QsZkxm
dW5jYWxsLExJU1AKLSAgICAgICAsMSxNQVhfQVJHUyxOT05FLE9PLE9PLE9PLE9PLHZvaWQsTGZ1
bmNhbGwsKG9iamVjdCBmdW4sLi4uKSwiIikKLXsgdmFfbGlzdCBhcDsKKyAgICAgICAsMSxNQVhf
QVJHUyxOT05FLE9PLE9PLE9PLE9PLHZvaWQsTGZ1bmNhbGwsKG9iamVjdCBmdW4sLi4uKSwiIikg
eyAKKworICB2YV9saXN0IGFwOwogICBvYmplY3QgKm5ldzsKLSAgaW50IG4gPSBWRlVOX05BUkdT
OworICBpbnQgaSxuID0gVkZVTl9OQVJHUy0xOworCisgIGlmIChuPj02NSkgRkVlcnJvcigiYXJn
IGxpbWl0IGV4Y2VlZGVkIiwwKTsKKyAgbmV3PVpBTExPQ0EobipzaXplb2YoKm5ldykpOworLyog
ICB3aXBlX3N0YWNrKCZuKTsgKi8KICAgdmFfc3RhcnQoYXAsZnVuKTsKLSAge0NPRVJDRV9WQV9M
SVNUKG5ldyxhcCxuKTsKLSAgcmV0dXJuIElhcHBseVZlY3RvcihmdW4sbi0xLG5ldyk7CisgIGZv
ciAoaT0wO2k8bjtpKyspCisgICAgbmV3W2ldPXZhX2FyZyhhcCxvYmplY3QpOwogICB2YV9lbmQo
YXApOwotIH0KKyAgcmV0dXJuIElhcHBseVZlY3RvcihmdW4sbixuZXcpOwogfQogCiAKSW5kZXg6
IG8vZmFzZHVtcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9mYXNk
dW1wLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOS42LjIKZGlmZiAtdSAtcjEuOS42LjIgZmFz
ZHVtcC5jCi0tLSBvL2Zhc2R1bXAuYwkxMiBGZWIgMjAwNCAwNToyMzoxMyAtMDAwMAkxLjkuNi4y
CisrKyBvL2Zhc2R1bXAuYwk2IEp1biAyMDA1IDIxOjUwOjAwIC0wMDAwCkBAIC0xNTIxLDcgKzE1
MjEsNyBAQAogICB7IEJFR0lOX05PX0lOVEVSUlVQVDsKICNpZmRlZiBIQVZFX0FMTE9DQQogICBj
dXJyZW50X2Zhc2QudGFibGUtPnYudl9zZWxmCi0gICAgPSAob2JqZWN0ICopYWxsb2NhKG4qc2l6
ZW9mKG9iamVjdCkpOworICAgID0gKG9iamVjdCAqKVpBTExPQ0EobipzaXplb2Yob2JqZWN0KSk7
CiAjZWxzZQogICBjdXJyZW50X2Zhc2QudGFibGUtPnYudl9zZWxmCiAgICAgPSAob2JqZWN0ICop
YWxsb2NfcmVsYmxvY2sobipzaXplb2Yob2JqZWN0KSk7CkluZGV4OiBvL2ZhdF9zdHJpbmcuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vZmF0X3N0cmluZy5jLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjE0LjQuMi4yLjMKZGlmZiAtdSAtcjEuMTQuNC4yLjIuMyBmYXRf
c3RyaW5nLmMKLS0tIG8vZmF0X3N0cmluZy5jCTQgTWFyIDIwMDQgMTk6MzU6NTUgLTAwMDAJMS4x
NC40LjIuMi4zCisrKyBvL2ZhdF9zdHJpbmcuYwk2IEp1biAyMDA1IDIxOjUwOjAwIC0wMDAwCkBA
IC0xOTQsNyArMTk0LDcgQEAKIAkgdHlwZV9vZih4KSE9dF92ZnVuICYmCiAJIHR5cGVfb2YoeCkh
PXRfZ2Z1bgogCSApIGNvbnRpbnVlOwotICAgICBpZiAoKHgtPmQubSA9PSBGUkVFKSB8fCB4LT5j
Zi5jZl9zZWxmID09IE5VTEwpCisgICAgIGlmICh4LT5kLmYgfHwgeC0+Y2YuY2Zfc2VsZiA9PSBO
VUxMKQogICAgICAgIGNvbnRpbnVlOwogCS8qIHRoZSBjZGVmbiB0aGluZ3MgYXJlIHRoZSBwcm9j
bGFpbWVkIGNhbGwgdHlwZXMuICovCiAgICAgIGNmX2FkZHI9KGNoYXIgKiApICgodW5zaWduZWQg
bG9uZykoeC0+Y2YuY2Zfc2VsZikpOwpJbmRleDogby9mdW5saW5rLmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL2Z1bmxpbmsuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4xNi42LjMKZGlmZiAtdSAtcjEuMTYuNi4zIGZ1bmxpbmsuYwotLS0gby9mdW5saW5rLmMJMjAg
TWFyIDIwMDQgMDI6MDM6NTkgLTAwMDAJMS4xNi42LjMKKysrIG8vZnVubGluay5jCTYgSnVuIDIw
MDUgMjE6NTA6MDMgLTAwMDAKQEAgLTI2MywyNjUgKzI2Myw2NjMgQEAKICNkZWZpbmUgTENBU1Qo
YSkgKCphKQogLyogICNlbmRpZiAqLwogCi1vYmplY3QKLWNfYXBwbHlfbihvYmplY3QgKCpmbiko
KSwgaW50IG4sIG9iamVjdCAqeCkKLXtvYmplY3QgcmVzPUNuaWw7Ci0gc3dpdGNoKG4pewotICAg
IGNhc2UgMDogIHJlcz1MQ0FTVChmbikoKTticmVhazsKLSAgICBjYXNlIDE6ICByZXM9TENBU1Qo
Zm4pKHhbMF0pO2JyZWFrOwotICAgIGNhc2UgMjogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdKTti
cmVhazsKLSAgICBjYXNlIDM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdKTticmVhazsK
LSAgICBjYXNlIDQ6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10pO2JyZWFrOwot
ICAgIGNhc2UgNTogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdKTticmVh
azsKLSAgICBjYXNlIDY6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4
WzVdKTticmVhazsKLSAgICBjYXNlIDc6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhb
M10seFs0XSx4WzVdLHhbNl0pO2JyZWFrOwotICAgIGNhc2UgODogIHJlcz1MQ0FTVChmbikoeFsw
XSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddKTticmVhazsKLSAgICBjYXNlIDk6
ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwK
LSAgICAgICAgIHhbOF0pO2JyZWFrOwotICAgIGNhc2UgMTA6ICByZXM9TENBU1QoZm4pKHhbMF0s
eFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKLSAgICAgICAgIHhbOF0seFs5XSk7
YnJlYWs7Ci0gICAgY2FzZSAxMTogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4
WzRdLHhbNV0seFs2XSx4WzddLAotICAgICAgICAgeFs4XSx4WzldLHhbMTBdKTticmVhazsKLSAg
ICBjYXNlIDEyOiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4
WzZdLHhbN10sCi0gICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0pO2JyZWFrOwotICAgIGNh
c2UgMTM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0s
eFs3XSwKLSAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSk7YnJlYWs7Ci0gICAg
Y2FzZSAxNDogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2
XSx4WzddLAotICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdKTticmVh
azsKLSAgICBjYXNlIDE1OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0s
eFs1XSx4WzZdLHhbN10sCi0gICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsx
M10seFsxNF0pO2JyZWFrOwotICAgIGNhc2UgMTY6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4
WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMChv
YmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5s
aW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X24wKG9iamVjdCAoKmZuKSgpLG9iamVjdCAq
eCxvYmplY3QgeSxvYmplY3QgeikgeworICByZXR1cm4gZm4oKTsKK30KKworc3RhdGljIG9iamVj
dCBjX2FwcGx5X24xKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJp
YnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjEob2JqZWN0ICgq
Zm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisgIHJldHVybiBmbih4WzBdKTsK
K30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24yKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmpl
Y3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2Nf
YXBwbHlfbjIob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7Cisg
IHJldHVybiBmbih4WzBdLHhbMV0pOworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjMob2Jq
ZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGlu
ZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uMyhvYmplY3QgKCpmbikoKSxvYmplY3QgKngs
b2JqZWN0IHksb2JqZWN0IHopIHsKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdKTsKK30KKwor
c3RhdGljIG9iamVjdCBjX2FwcGx5X240KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2Jq
ZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlf
bjQob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0
dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBs
eV9uNShvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAo
KG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X241KG9iamVjdCAoKmZuKSgpLG9i
amVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsy
XSx4WzNdLHhbNF0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uNihvYmplY3QgKCop
KCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7Citz
dGF0aWMgb2JqZWN0CitjX2FwcGx5X242KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3Qg
eSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1
XSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X243KG9iamVjdCAoKikoKSxvYmplY3Qg
KixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmpl
Y3QKK2NfYXBwbHlfbjcob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6
KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0pOwor
Cit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uOChvYmplY3QgKCopKCksb2JqZWN0ICosb2Jq
ZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0Citj
X2FwcGx5X244KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3Qgeikgewor
CisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10pOwor
Cit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uOShvYmplY3QgKCopKCksb2JqZWN0ICosb2Jq
ZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0Citj
X2FwcGx5X245KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3Qgeikgewor
CisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisg
ICAgICAgICB4WzhdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjEwKG9iamVjdCAo
KikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsK
K3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjEwKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmpl
Y3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0s
eFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4WzhdLHhbOV0pOworCit9CisKK3N0YXRpYyBvYmpl
Y3QgY19hcHBseV9uMTEob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0
cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uMTEob2JqZWN0
ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhb
MF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbOF0seFs5
XSx4WzEwXSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24xMihvYmplY3QgKCopKCks
b2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0
aWMgb2JqZWN0CitjX2FwcGx5X24xMihvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHks
b2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0s
eFs2XSx4WzddLAorICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdKTsKKworfQorCitzdGF0
aWMgb2JqZWN0IGNfYXBwbHlfbjEzKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0
KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjEz
KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVy
biBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4
WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBs
eV9uMTQob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18g
KChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uMTQob2JqZWN0ICgqZm4pKCks
b2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4
WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4
WzExXSx4WzEyXSx4WzEzXSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24xNShvYmpl
Y3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5l
KSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X24xNShvYmplY3QgKCpmbikoKSxvYmplY3QgKngs
b2JqZWN0IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4
WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJd
LHhbMTNdLHhbMTRdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjE2KG9iamVjdCAo
KikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsK
K3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjE2KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmpl
Y3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0s
eFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsx
M10seFsxNF0sCi0gICAgICAgICB4WzE1XSk7YnJlYWs7Ci0gICAgY2FzZSAxNzogIHJlcz1MQ0FT
VChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAg
eFsxNV0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMTcob2JqZWN0ICgqKSgpLG9i
amVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGlj
IG9iamVjdAorY19hcHBseV9uMTcob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9i
amVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhb
Nl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0
XSwKLSAgICAgICAgIHhbMTVdLHhbMTZdKTticmVhazsKLSAgICBjYXNlIDE4OiAgcmVzPUxDQVNU
KGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4
WzE1XSx4WzE2XSk7CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24xOChvYmplY3QgKCop
KCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7Citz
dGF0aWMgb2JqZWN0CitjX2FwcGx5X24xOChvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0
IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhb
NV0seFs2XSx4WzddLAogICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNd
LHhbMTRdLAotICAgICAgICAgeFsxNV0seFsxNl0seFsxN10pO2JyZWFrOwotICAgIGNhc2UgMTk6
ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwK
KyAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBw
bHlfbjE5KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9f
ICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjE5KG9iamVjdCAoKmZuKSgp
LG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0s
eFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0s
eFsxMV0seFsxMl0seFsxM10seFsxNF0sCi0gICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4
XSk7YnJlYWs7Ci0gICAgY2FzZSAyMDogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFsz
XSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0p
OworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMjAob2JqZWN0ICgqKSgpLG9iamVjdCAq
LG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVj
dAorY19hcHBseV9uMjAob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6
KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3
XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwKLSAg
ICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldKTticmVhazsKLSAgICBjYXNlIDIx
OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10s
CisgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSk7CisKK30KKworc3RhdGlj
IG9iamVjdCBjX2FwcGx5X24yMShvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkg
X19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X24yMShv
YmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKworICByZXR1cm4g
Zm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAogICAgICAgICAgeFs4
XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAotICAgICAgICAgeFsxNV0seFsx
Nl0seFsxN10seFsxOF0seFsxOV0seFsyMF0pO2JyZWFrOwotICAgIGNhc2UgMjI6ICByZXM9TENB
U1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAg
IHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdKTsKKworfQorCitzdGF0aWMgb2Jq
ZWN0IGNfYXBwbHlfbjIyKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0
dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjIyKG9iamVj
dCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4
WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhb
OV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCi0gICAgICAgICB4WzE1XSx4WzE2XSx4
WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSk7YnJlYWs7Ci0gICAgY2FzZSAyMzogIHJlcz1M
Q0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAg
ICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0pOworCit9CisKK3N0
YXRpYyBvYmplY3QgY19hcHBseV9uMjMob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmpl
Y3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9u
MjMob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0
dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAg
IHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwKICAgICAgICAgIHhbMTVd
LHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAotICAgICAgICAgeFsyMl0pO2Jy
ZWFrOwotICAgIGNhc2UgMjQ6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0
XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjJdKTsKKworfQorCitzdGF0aWMgb2JqZWN0
IGNfYXBwbHlfbjI0KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJp
YnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjI0KG9iamVjdCAo
KmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBd
LHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0s
eFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3
XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKLSAgICAgICAgIHhbMjJdLHhbMjNdKTticmVhazsK
LSAgICBjYXNlIDI1OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1
XSx4WzZdLHhbN10sCisgICAgICAgICB4WzIyXSx4WzIzXSk7CisKK30KKworc3RhdGljIG9iamVj
dCBjX2FwcGx5X24yNShvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRy
aWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X24yNShvYmplY3Qg
KCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFsw
XSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAogICAgICAgICAgeFs4XSx4Wzld
LHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAogICAgICAgICAgeFsxNV0seFsxNl0seFsx
N10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCi0gICAgICAgICB4WzIyXSx4WzIzXSx4WzI0XSk7
YnJlYWs7Ci0gICAgY2FzZSAyNjogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4
WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFsyMl0seFsyM10seFsyNF0pOworCit9CisK
K3N0YXRpYyBvYmplY3QgY19hcHBseV9uMjYob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxv
YmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBs
eV9uMjYob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAg
cmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAg
ICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwKICAgICAgICAgIHhb
MTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAotICAgICAgICAgeFsyMl0s
eFsyM10seFsyNF0seFsyNV0pO2JyZWFrOwotICAgIGNhc2UgMjc6ICByZXM9TENBU1QoZm4pKHhb
MF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjJdLHhb
MjNdLHhbMjRdLHhbMjVdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjI3KG9iamVj
dCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUp
KTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjI3KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxv
YmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhb
NF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0s
eFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIw
XSx4WzIxXSwKLSAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdKTticmVhazsK
LSAgICBjYXNlIDI4OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1
XSx4WzZdLHhbN10sCisgICAgICAgICB4WzIyXSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSk7CisK
K30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24yOChvYmplY3QgKCopKCksb2JqZWN0ICosb2Jq
ZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0Citj
X2FwcGx5X24yOChvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsK
KworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAog
ICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAogICAgICAg
ICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCi0gICAgICAgICB4
WzIyXSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSk7YnJlYWs7Ci0gICAgY2FzZSAyOTog
IHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAor
ICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0seFsyNl0seFsyN10pOworCit9CisKK3N0
YXRpYyBvYmplY3QgY19hcHBseV9uMjkob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmpl
Y3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9u
Mjkob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0
dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAg
IHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwKICAgICAgICAgIHhbMTVd
LHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAotICAgICAgICAgeFsyMl0seFsy
M10seFsyNF0seFsyNV0seFsyNl0seFsyN10seFsyOF0pO2JyZWFrOwotICAgIGNhc2UgMzA6ICBy
ZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAg
ICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdKTsKKworfQor
CitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjMwKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qs
b2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBw
bHlfbjMwKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisg
IHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAg
ICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4
WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJd
LHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0pO2Jy
ZWFrOwotICAgIGNhc2UgMzE6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0
XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjldKTsKKworfQorCitzdGF0aWMgb2JqZWN0
IGNfYXBwbHlfbjMxKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJp
YnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjMxKG9iamVjdCAo
KmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBd
LHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0s
eFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3
XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhb
MjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0seFszMF0pO2JyZWFrOwotICAg
IGNhc2UgMzI6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhb
Nl0seFs3XSwKKyAgICAgICAgIHhbMjldLHhbMzBdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNf
YXBwbHlfbjMyKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0
ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjMyKG9iamVjdCAoKmZu
KSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhb
MV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsx
MF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4
WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVd
LHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0seFszMF0seFszMV0pO2JyZWFrOwot
ICAgIGNhc2UgMzM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVd
LHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjldLHhbMzBdLHhbMzFdKTsKKworfQorCitzdGF0aWMg
b2JqZWN0IGNfYXBwbHlfbjMzKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBf
X2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjMzKG9i
amVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBm
bih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4Wzhd
LHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2
XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhb
MjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0seFszMF0seFszMV0s
eFszMl0pO2JyZWFrOwotICAgIGNhc2UgMzQ6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJd
LHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjldLHhbMzBdLHhbMzFdLHhb
MzJdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjM0KG9iamVjdCAoKikoKSxvYmpl
Y3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBv
YmplY3QKK2NfYXBwbHlfbjM0KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmpl
Y3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZd
LHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0s
CiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAg
ICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAg
ICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10pO2JyZWFrOwotICAgIGNhc2UgMzU6ICBy
ZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAg
ICAgICAgIHhbMjldLHhbMzBdLHhbMzFdLHhbMzJdLHhbMzNdKTsKKworfQorCitzdGF0aWMgb2Jq
ZWN0IGNfYXBwbHlfbjM1KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0
dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjM1KG9iamVj
dCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4
WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhb
OV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4
WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRd
LHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFsz
Ml0seFszM10seFszNF0pO2JyZWFrOwotICAgIGNhc2UgMzY6ICByZXM9TENBU1QoZm4pKHhbMF0s
eFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjldLHhbMzBd
LHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlf
bjM2KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgo
bm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjM2KG9iamVjdCAoKmZuKSgpLG9i
amVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsy
XSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsx
MV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4
WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZd
LHhbMjddLHhbMjhdLAotICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFsz
NF0seFszNV0pO2JyZWFrOwotICAgIGNhc2UgMzc6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4
WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMjldLHhbMzBdLHhbMzFd
LHhbMzJdLHhbMzNdLHhbMzRdLHhbMzVdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlf
bjM3KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgo
bm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjM3KG9iamVjdCAoKmZuKSgpLG9i
amVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsy
XSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsx
MV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4
WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZd
LHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFsz
NF0seFszNV0sCi0gICAgICAgICB4WzM2XSk7YnJlYWs7Ci0gICAgY2FzZSAzODogIHJlcz1MQ0FT
VChmbikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAg
eFszNl0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uMzgob2JqZWN0ICgqKSgpLG9i
amVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGlj
IG9iamVjdAorY19hcHBseV9uMzgob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9i
amVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhb
Nl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0
XSwKICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAog
ICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0seFsyNl0seFsyN10seFsyOF0sCiAgICAg
ICAgICB4WzI5XSx4WzMwXSx4WzMxXSx4WzMyXSx4WzMzXSx4WzM0XSx4WzM1XSwKLSAgICAgICAg
IHhbMzZdLHhbMzddKTticmVhazsKLSAgICBjYXNlIDM5OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhb
MV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4WzM2XSx4WzM3XSk7
CisKK30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X24zOShvYmplY3QgKCopKCksb2JqZWN0ICos
b2JqZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0
CitjX2FwcGx5X24zOShvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHop
IHsKKworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4Wzdd
LAogICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAogICAg
ICAgICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCiAgICAgICAg
ICB4WzIyXSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSx4WzI4XSwKICAgICAgICAgIHhb
MjldLHhbMzBdLHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdLHhbMzVdLAotICAgICAgICAgeFszNl0s
eFszN10seFszOF0pO2JyZWFrOwotICAgIGNhc2UgNDA6ICByZXM9TENBU1QoZm4pKHhbMF0seFsx
XSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbMzZdLHhbMzddLHhb
MzhdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjQwKG9iamVjdCAoKikoKSxvYmpl
Y3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBv
YmplY3QKK2NfYXBwbHlfbjQwKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmpl
Y3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZd
LHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0s
CiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAg
ICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAg
ICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0seFszNV0sCi0gICAgICAgICB4
WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSk7YnJlYWs7Ci0gICAgY2FzZSA0MTogIHJlcz1MQ0FTVChm
bikoeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFsz
Nl0seFszN10seFszOF0seFszOV0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uNDEo
b2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lu
bGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uNDEob2JqZWN0ICgqZm4pKCksb2JqZWN0
ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhb
M10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4
WzEyXSx4WzEzXSx4WzE0XSwKICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTld
LHhbMjBdLHhbMjFdLAogICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0seFsyNl0seFsy
N10seFsyOF0sCiAgICAgICAgICB4WzI5XSx4WzMwXSx4WzMxXSx4WzMyXSx4WzMzXSx4WzM0XSx4
WzM1XSwKLSAgICAgICAgIHhbMzZdLHhbMzddLHhbMzhdLHhbMzldLHhbNDBdKTticmVhazsKLSAg
ICBjYXNlIDQyOiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4
WzZdLHhbN10sCisgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSk7CisKK30K
Kworc3RhdGljIG9iamVjdCBjX2FwcGx5X240MihvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0
LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2Fw
cGx5X240MihvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKwor
ICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAogICAg
ICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAogICAgICAgICAg
eFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCiAgICAgICAgICB4WzIy
XSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSx4WzI4XSwKICAgICAgICAgIHhbMjldLHhb
MzBdLHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdLHhbMzVdLAotICAgICAgICAgeFszNl0seFszN10s
eFszOF0seFszOV0seFs0MF0seFs0MV0pO2JyZWFrOwotICAgIGNhc2UgNDM6ICByZXM9TENBU1Qo
Zm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhb
MzZdLHhbMzddLHhbMzhdLHhbMzldLHhbNDBdLHhbNDFdKTsKKworfQorCitzdGF0aWMgb2JqZWN0
IGNfYXBwbHlfbjQzKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJp
YnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjQzKG9iamVjdCAo
KmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBd
LHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0s
eFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3
XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhb
MjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0s
eFszM10seFszNF0seFszNV0sCi0gICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQw
XSx4WzQxXSx4WzQyXSk7YnJlYWs7Ci0gICAgY2FzZSA0NDogIHJlcz1MQ0FTVChmbikoeFswXSx4
WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFszNl0seFszN10s
eFszOF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19h
cHBseV9uNDQob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRl
X18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAorY19hcHBseV9uNDQob2JqZWN0ICgqZm4p
KCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsx
XSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEw
XSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwKICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhb
MThdLHhbMTldLHhbMjBdLHhbMjFdLAogICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0s
eFsyNl0seFsyN10seFsyOF0sCiAgICAgICAgICB4WzI5XSx4WzMwXSx4WzMxXSx4WzMyXSx4WzMz
XSx4WzM0XSx4WzM1XSwKICAgICAgICAgIHhbMzZdLHhbMzddLHhbMzhdLHhbMzldLHhbNDBdLHhb
NDFdLHhbNDJdLAotICAgICAgICAgeFs0M10pO2JyZWFrOwotICAgIGNhc2UgNDU6ICByZXM9TENB
U1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAg
IHhbNDNdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjQ1KG9iamVjdCAoKikoKSxv
YmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRp
YyBvYmplY3QKK2NfYXBwbHlfbjQ1KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxv
YmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4
WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsx
NF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwK
ICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAg
ICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0seFszNV0sCiAgICAgICAg
ICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSwKLSAgICAgICAgIHhb
NDNdLHhbNDRdKTticmVhazsKLSAgICBjYXNlIDQ2OiAgcmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0s
eFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAgICAgICB4WzQzXSx4WzQ0XSk7CisK
K30KKworc3RhdGljIG9iamVjdCBjX2FwcGx5X240NihvYmplY3QgKCopKCksb2JqZWN0ICosb2Jq
ZWN0LG9iamVjdCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0Citj
X2FwcGx5X240NihvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsK
KworICByZXR1cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAog
ICAgICAgICAgeFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAogICAgICAg
ICAgeFsxNV0seFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCiAgICAgICAgICB4
WzIyXSx4WzIzXSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSx4WzI4XSwKICAgICAgICAgIHhbMjld
LHhbMzBdLHhbMzFdLHhbMzJdLHhbMzNdLHhbMzRdLHhbMzVdLAogICAgICAgICAgeFszNl0seFsz
N10seFszOF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0sCi0gICAgICAgICB4WzQzXSx4WzQ0XSx4
WzQ1XSk7YnJlYWs7Ci0gICAgY2FzZSA0NzogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0s
eFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFs0M10seFs0NF0seFs0NV0pOwor
Cit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uNDcob2JqZWN0ICgqKSgpLG9iamVjdCAqLG9i
amVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpOworc3RhdGljIG9iamVjdAor
Y19hcHBseV9uNDcob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9iamVjdCB5LG9iamVjdCB6KSB7
CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwK
ICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4WzEzXSx4WzE0XSwKICAgICAg
ICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBdLHhbMjFdLAogICAgICAgICAg
eFsyMl0seFsyM10seFsyNF0seFsyNV0seFsyNl0seFsyN10seFsyOF0sCiAgICAgICAgICB4WzI5
XSx4WzMwXSx4WzMxXSx4WzMyXSx4WzMzXSx4WzM0XSx4WzM1XSwKICAgICAgICAgIHhbMzZdLHhb
MzddLHhbMzhdLHhbMzldLHhbNDBdLHhbNDFdLHhbNDJdLAotICAgICAgICAgeFs0M10seFs0NF0s
eFs0NV0seFs0Nl0pO2JyZWFrOwotICAgIGNhc2UgNDg6ICByZXM9TENBU1QoZm4pKHhbMF0seFsx
XSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNDNdLHhbNDRdLHhb
NDVdLHhbNDZdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjQ4KG9iamVjdCAoKiko
KSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0
YXRpYyBvYmplY3QKK2NfYXBwbHlfbjQ4KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3Qg
eSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1
XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10s
eFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIx
XSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAog
ICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0seFszNV0sCiAgICAg
ICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSwKLSAgICAgICAg
IHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddKTticmVhazsKLSAgICBjYXNlIDQ5OiAgcmVz
PUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisgICAg
ICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4WzQ2XSx4WzQ3XSk7CisKK30KKworc3RhdGljIG9iamVj
dCBjX2FwcGx5X240OShvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVjdCkgX19hdHRy
aWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X240OShvYmplY3Qg
KCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKworICByZXR1cm4gZm4oeFsw
XSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAogICAgICAgICAgeFs4XSx4Wzld
LHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAogICAgICAgICAgeFsxNV0seFsxNl0seFsx
N10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCiAgICAgICAgICB4WzIyXSx4WzIzXSx4WzI0XSx4
WzI1XSx4WzI2XSx4WzI3XSx4WzI4XSwKICAgICAgICAgIHhbMjldLHhbMzBdLHhbMzFdLHhbMzJd
LHhbMzNdLHhbMzRdLHhbMzVdLAogICAgICAgICAgeFszNl0seFszN10seFszOF0seFszOV0seFs0
MF0seFs0MV0seFs0Ml0sCi0gICAgICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4WzQ2XSx4WzQ3XSx4
WzQ4XSk7YnJlYWs7Ci0gICAgY2FzZSA1MDogIHJlcz1MQ0FTVChmbikoeFswXSx4WzFdLHhbMl0s
eFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAorICAgICAgICAgeFs0M10seFs0NF0seFs0NV0seFs0
Nl0seFs0N10seFs0OF0pOworCit9CisKK3N0YXRpYyBvYmplY3QgY19hcHBseV9uNTAob2JqZWN0
ICgqKSgpLG9iamVjdCAqLG9iamVjdCxvYmplY3QpIF9fYXR0cmlidXRlX18gKChub2lubGluZSkp
Oworc3RhdGljIG9iamVjdAorY19hcHBseV9uNTAob2JqZWN0ICgqZm4pKCksb2JqZWN0ICp4LG9i
amVjdCB5LG9iamVjdCB6KSB7CisKKyAgcmV0dXJuIGZuKHhbMF0seFsxXSx4WzJdLHhbM10seFs0
XSx4WzVdLHhbNl0seFs3XSwKICAgICAgICAgIHhbOF0seFs5XSx4WzEwXSx4WzExXSx4WzEyXSx4
WzEzXSx4WzE0XSwKICAgICAgICAgIHhbMTVdLHhbMTZdLHhbMTddLHhbMThdLHhbMTldLHhbMjBd
LHhbMjFdLAogICAgICAgICAgeFsyMl0seFsyM10seFsyNF0seFsyNV0seFsyNl0seFsyN10seFsy
OF0sCiAgICAgICAgICB4WzI5XSx4WzMwXSx4WzMxXSx4WzMyXSx4WzMzXSx4WzM0XSx4WzM1XSwK
ICAgICAgICAgIHhbMzZdLHhbMzddLHhbMzhdLHhbMzldLHhbNDBdLHhbNDFdLHhbNDJdLAotICAg
ICAgICAgeFs0M10seFs0NF0seFs0NV0seFs0Nl0seFs0N10seFs0OF0seFs0OV0pO2JyZWFrOwot
ICAgIGNhc2UgNTE6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVd
LHhbNl0seFs3XSwKKyAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhd
LHhbNDldKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjUxKG9iamVjdCAoKikoKSxv
YmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRp
YyBvYmplY3QKK2NfYXBwbHlfbjUxKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxv
YmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4
WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsx
NF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwK
ICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAg
ICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0seFszNV0sCiAgICAgICAg
ICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSwKICAgICAgICAgIHhb
NDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhdLHhbNDldLAotICAgICAgICAgeFs1MF0p
O2JyZWFrOwotICAgIGNhc2UgNTI6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10s
eFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTBdKTsKKworfQorCitzdGF0aWMgb2Jq
ZWN0IGNfYXBwbHlfbjUyKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0
dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjUyKG9iamVj
dCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4
WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhb
OV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4
WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRd
LHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFsz
Ml0seFszM10seFszNF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4
WzQwXSx4WzQxXSx4WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDdd
LHhbNDhdLHhbNDldLAotICAgICAgICAgeFs1MF0seFs1MV0pO2JyZWFrOwotICAgIGNhc2UgNTM6
ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwK
KyAgICAgICAgIHhbNTBdLHhbNTFdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjUz
KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9p
bmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjUzKG9iamVjdCAoKmZuKSgpLG9iamVj
dCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4
WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0s
eFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5
XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhb
MjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0s
eFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQy
XSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhdLHhbNDldLAot
ICAgICAgICAgeFs1MF0seFs1MV0seFs1Ml0pO2JyZWFrOwotICAgIGNhc2UgNTQ6ICByZXM9TENB
U1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAg
IHhbNTBdLHhbNTFdLHhbNTJdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjU0KG9i
amVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxp
bmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjU0KG9iamVjdCAoKmZuKSgpLG9iamVjdCAq
eCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNd
LHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsx
Ml0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4
WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjdd
LHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFszNF0seFsz
NV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSwK
ICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhdLHhbNDldLAotICAg
ICAgICAgeFs1MF0seFs1MV0seFs1Ml0seFs1M10pO2JyZWFrOwotICAgIGNhc2UgNTU6ICByZXM9
TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAg
ICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBw
bHlfbjU1KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9f
ICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjU1KG9iamVjdCAoKmZuKSgp
LG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0s
eFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0s
eFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4
XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhb
MjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10s
eFszNF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQx
XSx4WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhdLHhb
NDldLAotICAgICAgICAgeFs1MF0seFs1MV0seFs1Ml0seFs1M10seFs1NF0pO2JyZWFrOwotICAg
IGNhc2UgNTY6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhb
Nl0seFs3XSwKKyAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdLHhbNTRdKTsKKworfQor
CitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjU2KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qs
b2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBw
bHlfbjU2KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisg
IHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAg
ICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4
WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJd
LHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFsz
MF0seFszMV0seFszMl0seFszM10seFszNF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4
WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVd
LHhbNDZdLHhbNDddLHhbNDhdLHhbNDldLAotICAgICAgICAgeFs1MF0seFs1MV0seFs1Ml0seFs1
M10seFs1NF0seFs1NV0pO2JyZWFrOwotICAgIGNhc2UgNTc6ICByZXM9TENBU1QoZm4pKHhbMF0s
eFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTBdLHhbNTFd
LHhbNTJdLHhbNTNdLHhbNTRdLHhbNTVdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlf
bjU3KG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgo
bm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjU3KG9iamVjdCAoKmZuKSgpLG9i
amVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsy
XSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsx
MV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4
WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZd
LHhbMjddLHhbMjhdLAogICAgICAgICAgeFsyOV0seFszMF0seFszMV0seFszMl0seFszM10seFsz
NF0seFszNV0sCiAgICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4
WzQyXSwKICAgICAgICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhdLHhbNDld
LAotICAgICAgICAgeFs1MF0seFs1MV0seFs1Ml0seFs1M10seFs1NF0seFs1NV0seFs1Nl0pO2Jy
ZWFrOwotICAgIGNhc2UgNTg6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0
XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdLHhbNTRd
LHhbNTVdLHhbNTZdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjU4KG9iamVjdCAo
KikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsK
K3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjU4KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmpl
Y3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0s
eFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsx
M10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4
WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhd
LApAQCAtNTI5LDggKzkyNywxNSBAQAogICAgICAgICAgeFszNl0seFszN10seFszOF0seFszOV0s
eFs0MF0seFs0MV0seFs0Ml0sCiAgICAgICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4WzQ2XSx4WzQ3
XSx4WzQ4XSx4WzQ5XSwKICAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdLHhbNTRdLHhb
NTVdLHhbNTZdLAotICAgICAgICAgeFs1N10pO2JyZWFrOwotICAgIGNhc2UgNTk6ICByZXM9TENB
U1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAg
IHhbNTddKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjU5KG9iamVjdCAoKikoKSxv
YmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRp
YyBvYmplY3QKK2NfYXBwbHlfbjU5KG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxv
YmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4
WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsx
NF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwK
ICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLApAQCAt
NTM4LDggKzk0MywxNSBAQAogICAgICAgICAgeFszNl0seFszN10seFszOF0seFszOV0seFs0MF0s
eFs0MV0seFs0Ml0sCiAgICAgICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4WzQ2XSx4WzQ3XSx4WzQ4
XSx4WzQ5XSwKICAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdLHhbNTRdLHhbNTVdLHhb
NTZdLAotICAgICAgICAgeFs1N10seFs1OF0pO2JyZWFrOwotICAgIGNhc2UgNjA6ICByZXM9TENB
U1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAg
IHhbNTddLHhbNThdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjYwKG9iamVjdCAo
KikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsK
K3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjYwKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmpl
Y3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0s
eFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsx
M10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4
WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhd
LApAQCAtNTQ3LDggKzk1OSwxNSBAQAogICAgICAgICAgeFszNl0seFszN10seFszOF0seFszOV0s
eFs0MF0seFs0MV0seFs0Ml0sCiAgICAgICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4WzQ2XSx4WzQ3
XSx4WzQ4XSx4WzQ5XSwKICAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdLHhbNTRdLHhb
NTVdLHhbNTZdLAotICAgICAgICAgeFs1N10seFs1OF0seFs1OV0pO2JyZWFrOwotICAgIGNhc2Ug
NjE6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0seFs3
XSwKKyAgICAgICAgIHhbNTddLHhbNThdLHhbNTldKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNf
YXBwbHlfbjYxKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0
ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlfbjYxKG9iamVjdCAoKmZu
KSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhb
MV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsx
MF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4
WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVd
LHhbMjZdLHhbMjddLHhbMjhdLApAQCAtNTU2LDggKzk3NSwxNSBAQAogICAgICAgICAgeFszNl0s
eFszN10seFszOF0seFszOV0seFs0MF0seFs0MV0seFs0Ml0sCiAgICAgICAgICB4WzQzXSx4WzQ0
XSx4WzQ1XSx4WzQ2XSx4WzQ3XSx4WzQ4XSx4WzQ5XSwKICAgICAgICAgIHhbNTBdLHhbNTFdLHhb
NTJdLHhbNTNdLHhbNTRdLHhbNTVdLHhbNTZdLAotICAgICAgICAgeFs1N10seFs1OF0seFs1OV0s
eFs2MF0pO2JyZWFrOwotICAgIGNhc2UgNjI6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJd
LHhbM10seFs0XSx4WzVdLHhbNl0seFs3XSwKKyAgICAgICAgIHhbNTddLHhbNThdLHhbNTldLHhb
NjBdKTsKKworfQorCitzdGF0aWMgb2JqZWN0IGNfYXBwbHlfbjYyKG9iamVjdCAoKikoKSxvYmpl
Y3QgKixvYmplY3Qsb2JqZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBv
YmplY3QKK2NfYXBwbHlfbjYyKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmpl
Y3QgeikgeworCisgIHJldHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZd
LHhbN10sCiAgICAgICAgICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0s
CiAgICAgICAgICB4WzE1XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAg
ICAgICAgIHhbMjJdLHhbMjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLApAQCAtNTY1
LDggKzk5MSwxNSBAQAogICAgICAgICAgeFszNl0seFszN10seFszOF0seFszOV0seFs0MF0seFs0
MV0seFs0Ml0sCiAgICAgICAgICB4WzQzXSx4WzQ0XSx4WzQ1XSx4WzQ2XSx4WzQ3XSx4WzQ4XSx4
WzQ5XSwKICAgICAgICAgIHhbNTBdLHhbNTFdLHhbNTJdLHhbNTNdLHhbNTRdLHhbNTVdLHhbNTZd
LAotICAgICAgICAgeFs1N10seFs1OF0seFs1OV0seFs2MF0seFs2MV0pO2JyZWFrOwotICAgIGNh
c2UgNjM6ICByZXM9TENBU1QoZm4pKHhbMF0seFsxXSx4WzJdLHhbM10seFs0XSx4WzVdLHhbNl0s
eFs3XSwKKyAgICAgICAgIHhbNTddLHhbNThdLHhbNTldLHhbNjBdLHhbNjFdKTsKKworfQorCitz
dGF0aWMgb2JqZWN0IGNfYXBwbHlfbjYzKG9iamVjdCAoKikoKSxvYmplY3QgKixvYmplY3Qsb2Jq
ZWN0KSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKK3N0YXRpYyBvYmplY3QKK2NfYXBwbHlf
bjYzKG9iamVjdCAoKmZuKSgpLG9iamVjdCAqeCxvYmplY3QgeSxvYmplY3QgeikgeworCisgIHJl
dHVybiBmbih4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCiAgICAgICAg
ICB4WzhdLHhbOV0seFsxMF0seFsxMV0seFsxMl0seFsxM10seFsxNF0sCiAgICAgICAgICB4WzE1
XSx4WzE2XSx4WzE3XSx4WzE4XSx4WzE5XSx4WzIwXSx4WzIxXSwKICAgICAgICAgIHhbMjJdLHhb
MjNdLHhbMjRdLHhbMjVdLHhbMjZdLHhbMjddLHhbMjhdLApAQCAtNTc0LDggKzEwMDcsMTUgQEAK
ICAgICAgICAgIHhbMzZdLHhbMzddLHhbMzhdLHhbMzldLHhbNDBdLHhbNDFdLHhbNDJdLAogICAg
ICAgICAgeFs0M10seFs0NF0seFs0NV0seFs0Nl0seFs0N10seFs0OF0seFs0OV0sCiAgICAgICAg
ICB4WzUwXSx4WzUxXSx4WzUyXSx4WzUzXSx4WzU0XSx4WzU1XSx4WzU2XSwKLSAgICAgICAgIHhb
NTddLHhbNThdLHhbNTldLHhbNjBdLHhbNjFdLHhbNjJdKTticmVhazsKLSAgICBjYXNlIDY0OiAg
cmVzPUxDQVNUKGZuKSh4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0seFs1XSx4WzZdLHhbN10sCisg
ICAgICAgICB4WzU3XSx4WzU4XSx4WzU5XSx4WzYwXSx4WzYxXSx4WzYyXSk7CisKK30KKworc3Rh
dGljIG9iamVjdCBjX2FwcGx5X242NChvYmplY3QgKCopKCksb2JqZWN0ICosb2JqZWN0LG9iamVj
dCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CitzdGF0aWMgb2JqZWN0CitjX2FwcGx5X242
NChvYmplY3QgKCpmbikoKSxvYmplY3QgKngsb2JqZWN0IHksb2JqZWN0IHopIHsKKworICByZXR1
cm4gZm4oeFswXSx4WzFdLHhbMl0seFszXSx4WzRdLHhbNV0seFs2XSx4WzddLAogICAgICAgICAg
eFs4XSx4WzldLHhbMTBdLHhbMTFdLHhbMTJdLHhbMTNdLHhbMTRdLAogICAgICAgICAgeFsxNV0s
eFsxNl0seFsxN10seFsxOF0seFsxOV0seFsyMF0seFsyMV0sCiAgICAgICAgICB4WzIyXSx4WzIz
XSx4WzI0XSx4WzI1XSx4WzI2XSx4WzI3XSx4WzI4XSwKQEAgLTU4Myw4ICsxMDIzLDg2IEBACiAg
ICAgICAgICB4WzM2XSx4WzM3XSx4WzM4XSx4WzM5XSx4WzQwXSx4WzQxXSx4WzQyXSwKICAgICAg
ICAgIHhbNDNdLHhbNDRdLHhbNDVdLHhbNDZdLHhbNDddLHhbNDhdLHhbNDldLAogICAgICAgICAg
eFs1MF0seFs1MV0seFs1Ml0seFs1M10seFs1NF0seFs1NV0seFs1Nl0sCi0gICAgICAgICB4WzU3
XSx4WzU4XSx4WzU5XSx4WzYwXSx4WzYxXSx4WzYyXSx4WzYzXSk7YnJlYWs7Ci0gIGRlZmF1bHQ6
IEZFZXJyb3IoIkV4Y2VlZGVkIGNhbGwtYXJndW1lbnRzLWxpbWl0ICIsMCk7CisgICAgICAgICB4
WzU3XSx4WzU4XSx4WzU5XSx4WzYwXSx4WzYxXSx4WzYyXSx4WzYzXSk7CisKK30KKworLyogI2Rl
ZmluZSBtam9pbihhLGIpIGEgIyMgYiAqLworLyogI2RlZmluZSBNam9pbihhLGIpIG1qb2luKGEs
YikgKi8KKworI2RlZmluZSBDQVNFX04oYSxiLGMpIGNhc2UgYyA6IHJldHVybiBNam9pbihjX2Fw
cGx5X24sYykoYSxiLE9CSk5VTEwsT0JKTlVMTCk7YnJlYWsKKworb2JqZWN0CitjX2FwcGx5X24o
b2JqZWN0ICgqZm4pKCksIGludCBuLCBvYmplY3QgKngpCit7b2JqZWN0IHJlcz1DbmlsOworLyog
IGNsZWFyX2Nfc3RhY2soJnJlcy00KihuKzE2KSk7ICovCisgc3dpdGNoKG4peworICAgIENBU0Vf
Tihmbix4LDApOworICAgIENBU0VfTihmbix4LDEpOworICAgIENBU0VfTihmbix4LDIpOworICAg
IENBU0VfTihmbix4LDMpOworICAgIENBU0VfTihmbix4LDQpOworICAgIENBU0VfTihmbix4LDUp
OworICAgIENBU0VfTihmbix4LDYpOworICAgIENBU0VfTihmbix4LDcpOworICAgIENBU0VfTihm
bix4LDgpOworICAgIENBU0VfTihmbix4LDkpOworICAgIENBU0VfTihmbix4LDEwKTsKKyAgICBD
QVNFX04oZm4seCwxMSk7CisgICAgQ0FTRV9OKGZuLHgsMTIpOworICAgIENBU0VfTihmbix4LDEz
KTsKKyAgICBDQVNFX04oZm4seCwxNCk7CisgICAgQ0FTRV9OKGZuLHgsMTUpOworICAgIENBU0Vf
Tihmbix4LDE2KTsKKyAgICBDQVNFX04oZm4seCwxNyk7CisgICAgQ0FTRV9OKGZuLHgsMTgpOwor
ICAgIENBU0VfTihmbix4LDE5KTsKKyAgICBDQVNFX04oZm4seCwyMCk7CisgICAgQ0FTRV9OKGZu
LHgsMjEpOworICAgIENBU0VfTihmbix4LDIyKTsKKyAgICBDQVNFX04oZm4seCwyMyk7CisgICAg
Q0FTRV9OKGZuLHgsMjQpOworICAgIENBU0VfTihmbix4LDI1KTsKKyAgICBDQVNFX04oZm4seCwy
Nik7CisgICAgQ0FTRV9OKGZuLHgsMjcpOworICAgIENBU0VfTihmbix4LDI4KTsKKyAgICBDQVNF
X04oZm4seCwyOSk7CisgICAgQ0FTRV9OKGZuLHgsMzApOworICAgIENBU0VfTihmbix4LDMxKTsK
KyAgICBDQVNFX04oZm4seCwzMik7CisgICAgQ0FTRV9OKGZuLHgsMzMpOworICAgIENBU0VfTihm
bix4LDM0KTsKKyAgICBDQVNFX04oZm4seCwzNSk7CisgICAgQ0FTRV9OKGZuLHgsMzYpOworICAg
IENBU0VfTihmbix4LDM3KTsKKyAgICBDQVNFX04oZm4seCwzOCk7CisgICAgQ0FTRV9OKGZuLHgs
MzkpOworICAgIENBU0VfTihmbix4LDQwKTsKKyAgICBDQVNFX04oZm4seCw0MSk7CisgICAgQ0FT
RV9OKGZuLHgsNDIpOworICAgIENBU0VfTihmbix4LDQzKTsKKyAgICBDQVNFX04oZm4seCw0NCk7
CisgICAgQ0FTRV9OKGZuLHgsNDUpOworICAgIENBU0VfTihmbix4LDQ2KTsKKyAgICBDQVNFX04o
Zm4seCw0Nyk7CisgICAgQ0FTRV9OKGZuLHgsNDgpOworICAgIENBU0VfTihmbix4LDQ5KTsKKyAg
ICBDQVNFX04oZm4seCw1MCk7CisgICAgQ0FTRV9OKGZuLHgsNTEpOworICAgIENBU0VfTihmbix4
LDUyKTsKKyAgICBDQVNFX04oZm4seCw1Myk7CisgICAgQ0FTRV9OKGZuLHgsNTQpOworICAgIENB
U0VfTihmbix4LDU1KTsKKyAgICBDQVNFX04oZm4seCw1Nik7CisgICAgQ0FTRV9OKGZuLHgsNTcp
OworICAgIENBU0VfTihmbix4LDU4KTsKKyAgICBDQVNFX04oZm4seCw1OSk7CisgICAgQ0FTRV9O
KGZuLHgsNjApOworICAgIENBU0VfTihmbix4LDYxKTsKKyAgICBDQVNFX04oZm4seCw2Mik7Cisg
ICAgQ0FTRV9OKGZuLHgsNjMpOworICAgIENBU0VfTihmbix4LDY0KTsKKyAgICBkZWZhdWx0OiBG
RWVycm9yKCJFeGNlZWRlZCBjYWxsLWFyZ3VtZW50cy1saW1pdCAiLDApOwogICB9IAogCiAgcmV0
dXJuIHJlczsKSW5kZXg6IG8vZ2JjLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2Ns
L2djbC9vL2diYy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEzLjQuMi4yLjExLjQuMS4yLjEK
ZGlmZiAtdSAtcjEuMTMuNC4yLjIuMTEuNC4xLjIuMSBnYmMuYwotLS0gby9nYmMuYwk1IEF1ZyAy
MDA0IDIyOjMxOjM5IC0wMDAwCTEuMTMuNC4yLjIuMTEuNC4xLjIuMQorKysgby9nYmMuYwk2IEp1
biAyMDA1IDIxOjUwOjAzIC0wMDAwCkBAIC0xMjcsOCArMTI3LDggQEAKIGxvbmcgcmVhbF9tYXhw
YWdlOwogbG9uZyBuZXdfaG9sZXBhZ2U7CiAKLSNkZWZpbmUJYXZhaWxhYmxlX3BhZ2VzCVwKLQko
cmVhbF9tYXhwYWdlLXBhZ2UoaGVhcF9lbmQpLShuZXdfaG9sZXBhZ2U+PWhvbGVwYWdlID8gbmV3
X2hvbGVwYWdlIDogaG9sZXBhZ2UpLTIqbnJicGFnZS1yZWFsX21heHBhZ2UvMzIpCisvKiAjZGVm
aW5lCWF2YWlsYWJsZV9wYWdlcwlcICovCisvKiAJKHJlYWxfbWF4cGFnZS1wYWdlKGhlYXBfZW5k
KS0obmV3X2hvbGVwYWdlPj1ob2xlcGFnZSA/IG5ld19ob2xlcGFnZSA6IGhvbGVwYWdlKS0yKm5y
YnBhZ2UtcmVhbF9tYXhwYWdlLzMyKSAqLwogCiBzdHJ1Y3QgYXBhZ2UgewogICBjaGFyIGFwYWdl
X3NlbGZbUEFHRVNJWkVdOwpAQCAtMTY4LDcgKzE2OCw3IEBACiAKICNlbmRpZgogCi0jZGVmaW5l
CXN5bWJvbF9tYXJrZWQoeCkJKCh4KS0+ZC5tKQorLyogI2RlZmluZQlzeW1ib2xfbWFya2VkKHgp
CSgoeCktPmQubSkgKi8KIAogb2JqZWN0ICptYXJrX29yaWdpbltNQVJLX09SSUdJTl9NQVhdOwog
aW50IG1hcmtfb3JpZ2luX21heDsKQEAgLTIwOSwzMiArMjA5LDQxIEBACiAvKiAgIG1hcmtfb3Jp
Z2luX2Jsb2NrW21hcmtfb3JpZ2luX2Jsb2NrX21heCsrXS5tb2Jfc2l6ZSA9IG47ICovCiAvKiB9
ICovCiAKK3N0YXRpYyB2b2lkICptY3NoLCptY3NsOworCiBzdGF0aWMgdm9pZAogbWFya19jb25z
KG9iamVjdCB4KSB7CiAgIAogICBjc19jaGVjayh4KTsKICAgCisjaWYgQ1NUQUNLX0RJUkVDVElP
TiA9PSAtMQorICBpZiAobWNzbD4odm9pZCAqKSZ4KQorI2Vsc2UKKyAgaWYgKG1jc2w8KHZvaWQg
KikmeCkKKyNlbmRpZgorICAgIG1jc2w9Jng7CisKICAgLyogIHggaXMgYWxyZWFkeSBtYXJrZWQu
ICAqLwogICAKICBCRUdJTjogIAogICBpZiAoTlVMTF9PUl9PTl9DX1NUQUNLKHgtPmMuY19jYXIp
KSBnb3RvIE1BUktfQ0RSOwogICBpZiAodHlwZV9vZih4LT5jLmNfY2FyKSA9PSB0X2NvbnMpIHsK
LSAgICBpZiAoeC0+Yy5jX2Nhci0+Yy5tKQorICAgIGlmIChpc19tYXJrZWRfb3JfZnJlZSh4LT5j
LmNfY2FyKSkKICAgICAgIDsKICAgICBlbHNlIHsKLSAgICAgIHgtPmMuY19jYXItPmMubSA9IFRS
VUU7CisgICAgICBtYXJrKHgtPmMuY19jYXIpOwogICAgICAgbWFya19jb25zKHgtPmMuY19jYXIp
OwogICAgIH0KICAgfSBlbHNlCiAgICAgbWFya19vYmplY3QoeC0+Yy5jX2Nhcik7CiAgTUFSS19D
RFI6ICAKLSAgeCA9IHgtPmMuY19jZHI7Ci0gIGlmIChOVUxMX09SX09OX0NfU1RBQ0soeCkpCisg
IGlmIChOVUxMX09SX09OX0NfU1RBQ0soeC0+Yy5jX2NkcikpCiAgICAgcmV0dXJuOworICB4ID0g
U2Nkcih4KTsKICAgaWYgKHR5cGVfb2YoeCkgPT0gdF9jb25zKSB7Ci0gICAgaWYgKHgtPmMubSkK
KyAgICBpZiAoaXNfbWFya2VkX29yX2ZyZWUoeCkpCiAgICAgICByZXR1cm47Ci0gICAgeC0+Yy5t
ID0gVFJVRTsKKyAgICBtYXJrKHgpOwogICAgIGdvdG8gQkVHSU47CiAgIH0KICAgaWYgKHggPT0g
Q25pbCkKQEAgLTI1NSw2ICsyNjQsMTMgQEAKICAgY2hhciAqY3A7CiAgIAogICBjc19jaGVjayh4
KTsKKyNpZiBDU1RBQ0tfRElSRUNUSU9OID09IC0xCisgIGlmIChtY3NsPih2b2lkICopJmNwKQor
I2Vsc2UKKyAgaWYgKG1jc2w8KHZvaWQgKikmY3ApCisjZW5kaWYKKyAgICBtY3NsPSZjcDsKKwog
IEJFR0lOOgogICAvKiBpZiB0aGUgYm9keSBvZiB4IGlzIGluIHRoZSBjIHN0YWNrLCBpdHMgZWxl
bWVudHMKICAgICAgYXJlIG1hcmtlZCBhbnl3YXkgYnkgdGhlIGMgc3RhY2sgbWFyayBjYXJlZnVs
bHksIGFuZApAQCAtMjY0LDkgKzI4MCw5IEBACiAgIAogICBpZiAoTlVMTF9PUl9PTl9DX1NUQUNL
KHgpKQogICAgIHJldHVybjsKLSAgaWYgKHgtPmQubSkKKyAgaWYgKGlzX21hcmtlZF9vcl9mcmVl
KHgpKQogICAgIHJldHVybjsKLSAgeC0+ZC5tID0gVFJVRTsKKyAgbWFyayh4KTsKICAgc3dpdGNo
ICh0eXBlX29mKHgpKSB7CiAgIGNhc2UgdF9maXhudW06CiAgICAgYnJlYWs7CkBAIC01ODgsOCAr
NjA0LDIzIEBACiAgICAgICBlcnJvcigibWFyayBzdHJlYW0gYm90Y2giKTsKICAgICB9CiAgICAg
YnJlYWs7Ci0gICAgCisKKyNkZWZpbmUgTUFSS19DUChhXyxiXykge2ludCBfdD0oYl8pO2lmIChp
bmhlYXAoYV8pKSB7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdoYXRfdG9fY29s
bGVjdCA9PSB0X2NvbnRpZ3VvdXMpIG1hcmtfY29udGJsb2NrKCh2b2lkICopKGFfKSxfdCk7XAor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIChhXyk9KHZvaWQgKiljb3B5X3JlbGJsb2Nr
KCh2b2lkICopKGFfKSxfdCk7fQorCisjZGVmaW5lIE1BUktfTVAoYV8pIHtpZiAoKGFfKS0+X21w
X2QpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1BUktfQ1AoKGFfKS0+X21wX2QsKGFfKS0+
X21wX2FsbG9jKk1QX0xJTUJfU0laRSk7fQorCiAgIGNhc2UgdF9yYW5kb206CisgICAgaWYgKChp
bnQpd2hhdF90b19jb2xsZWN0ID49IChpbnQpdF9jb250aWd1b3VzKSB7CisgICAgICBNQVJLX01Q
KHgtPnJuZC5ybmRfc3RhdGUuX21wX3NlZWQpOworICAgICAgaWYgKHgtPnJuZC5ybmRfc3RhdGUu
X21wX2FsZ2RhdGEuX21wX2xjKSB7CisJTUFSS19NUCh4LT5ybmQucm5kX3N0YXRlLl9tcF9hbGdk
YXRhLl9tcF9sYy0+X21wX2EpOworCU1BUktfTVAoeC0+cm5kLnJuZF9zdGF0ZS5fbXBfYWxnZGF0
YS5fbXBfbGMtPl9tcF9tKTsKKwlNQVJLX0NQKHgtPnJuZC5ybmRfc3RhdGUuX21wX2FsZ2RhdGEu
X21wX2xjLHNpemVvZigqeC0+cm5kLnJuZF9zdGF0ZS5fbXBfYWxnZGF0YS5fbXBfbGMpKTsKKyAg
ICAgIH0KKyAgICB9CiAgICAgYnJlYWs7CiAgICAgCiAgIGNhc2UgdF9yZWFkdGFibGU6CkBAIC02
NTUsNiArNjg2LDcgQEAKICAgICBtYXJrX29iamVjdCh4LT5jYy5jY19uYW1lKTsKICAgICBtYXJr
X29iamVjdCh4LT5jYy5jY19lbnYpOwogICAgIG1hcmtfb2JqZWN0KHgtPmNjLmNjX2RhdGEpOwor
ICAgIGlmICh4LT5jYy5jY190dXJibyE9TlVMTCkgbWFya19vYmplY3QoKih4LT5jYy5jY190dXJi
by0xKSk7CiAgICAgaWYgKHdoYXRfdG9fY29sbGVjdCA9PSB0X2NvbnRpZ3VvdXMpIHsKICAgICAg
IGlmICh4LT5jYy5jY190dXJibyAhPSBOVUxMKQogCW1hcmtfY29udGJsb2NrKChjaGFyICopKHgt
PmNjLmNjX3R1cmJvLTEpLApAQCAtNjc4LDcgKzcxMCw3IEBACiBzdGF0aWMgdm9pZAogbWFya19z
dGFja19jYXJlZnVsbHkodm9pZCAqdG9wdiwgdm9pZCAqYm90dG9tdiwgaW50IG9mZnNldCkgewog
Ci0gIGxvbmcgbSxwYWdlb2Zmc2V0OworICBsb25nIHBhZ2VvZmZzZXQ7CiAgIHVuc2lnbmVkIGxv
bmcgcDsKICAgb2JqZWN0IHg7CiAgIHN0cnVjdCB0eXBlbWFuYWdlciAqdG07CkBAIC03MDgsMTQg
Kzc0MCwxNSBAQAogCSAoKHBhZ2VvZmZzZXQ9KChjaGFyICopKmogLSBwYWdldG9jaGFyKHApKSkg
JQogCSAgdG0tPnRtX3NpemUpKTsKICAgICAgIGlmICgocGFnZW9mZnNldCA8ICAodG0tPnRtX3Np
emUgKiB0bS0+dG1fbnBwYWdlKSkKLQkgICYmIChtPXgtPmQubSkgIT0gRlJFRSkgewotCWlmICht
PT1UUlVFKSBjb250aW51ZTsKLQlpZiAobSE9MCkgewotCSAgZnByaW50ZihzdGRvdXQsCi0JCSAg
IioqYmFkIHZhbHVlICVsZCBvZiBkLm0gaW4gZ2JjIHBhZ2UgJWxkIHNraXBwaW5nIG1hcmsqKiIK
LQkJICAsbSxwKTtmZmx1c2goc3Rkb3V0KTsKLQkgIGNvbnRpbnVlOwotCX0KKwkgICYmICFpc19t
YXJrZWRfb3JfZnJlZSh4KSkgeworLyogCSAgJiYgKG09eC0+ZC5mKSAhPSBGUkVFKSB7ICovCisv
KiAJaWYgKG0gJiBUUlVFKSBjb250aW51ZTsgKi8KKy8qIAlpZiAobSE9MCkgeyAqLworLyogCSAg
ZnByaW50ZihzdGRvdXQsICovCisvKiAJCSAgIioqYmFkIHZhbHVlICVsZCBvZiBkLm0gaW4gZ2Jj
IHBhZ2UgJWxkIHNraXBwaW5nIG1hcmsqKiIgKi8KKy8qIAkJICAsbSxwKTtmZmx1c2goc3Rkb3V0
KTsgKi8KKy8qIAkgIGNvbnRpbnVlOyAqLworLyogCX0gKi8KIAltYXJrX29iamVjdCh4KTsKICAg
ICAgIH0KICAgICB9CkBAIC05MDQsNyArOTM3LDggQEAKICAgICB7CiAgICAgICAgZXh0ZXJuIHZv
aWQgKiBfX2xpYmNfaWE2NF9yZWdpc3Rlcl9iYWNraW5nX3N0b3JlX2Jhc2U7CiAgICAgICAgdm9p
ZCAqIGJzdD1HQ19zYXZlX3JlZ3NfaW5fc3RhY2soKTsKLSAgICAgICB2b2lkICogYnNiPV9fbGli
Y19pYTY0X3JlZ2lzdGVyX2JhY2tpbmdfc3RvcmVfYmFzZTsKKy8qICAgICAgICB2b2lkICogYnNi
PV9fbGliY19pYTY0X3JlZ2lzdGVyX2JhY2tpbmdfc3RvcmVfYmFzZTsgKi8KKyAgICAgICB2b2lk
ICogYnNiPWNzX29yZzI7CiAKICAgICAgICBpZiAoYnNiPmJzdCkKICAgICAgICAgICAoKmZuKShi
c2IsYnN0LENfR0NfT0ZGU0VUKTsKQEAgLTkyNSw4ICs5NTksOCBAQAogICBTVEFUSUMgc3RydWN0
IHR5cGVtYW5hZ2VyICp0bTsKICAgU1RBVElDIG9iamVjdCBmOwogICAKLSAgQ25pbC0+cy5tID0g
RkFMU0U7Ci0gIEN0LT5zLm0gPSBGQUxTRTsKKyAgdW5tYXJrKENuaWwpOworICB1bm1hcmsoQ3Qp
OwogICAKICNpZmRlZiBERUJVRwogICBpZiAoZGVidWcpCkBAIC05NjQsMTAgKzk5OCwxMCBAQAog
ICAgIGsgPSAwOwogICAgIGZvciAoaiA9IHRtLT50bV9ucHBhZ2U7IGogPiAwOyAtLWosIHAgKz0g
dG0tPnRtX3NpemUpIHsKICAgICAgIHggPSAob2JqZWN0KXA7Ci0gICAgICBpZiAoeC0+ZC5tID09
IEZSRUUpCisgICAgICBpZiAoaXNfZnJlZSh4KSkKIAljb250aW51ZTsKLSAgICAgIGVsc2UgaWYg
KHgtPmQubSkgewotCXgtPmQubSA9IEZBTFNFOworICAgICAgZWxzZSBpZiAoaXNfbWFya2VkKHgp
KSB7CisJdW5tYXJrKHgpOwogCWNvbnRpbnVlOwogICAgICAgfQogICAgICAgLyogICBTaW5jZSB3
ZSBub3cgbWFyayBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIG9uIGRpc3BsYWNlZApAQCAtOTg1LDEy
ICsxMDE5LDEyIEBACiAgICAgICAvKgkJCSgoc3RydWN0IGZyZWVsaXN0ICopeCktPmZfbGluayA9
IGY7ICovCiAgICAgICAKICNpZmRlZiBHTVBfVVNFX01BTExPQwotICAgICAgaWYgKHgtPmQudCA9
PSB0X2JpZ251bSkgeworICAgICAgaWYgKHR5cGVfb2YoeCkgPT0gdF9iaWdudW0vKiAgeC0+ZC50
ID09IHRfYmlnbnVtICovKSB7CiAJbXB6X2NsZWFyKE1QKHgpKTsKICAgICAgIH0KICNlbmRpZgog
ICAgICAgU0VUX0xJTksoeCxmKTsKLSAgICAgIHgtPmQubSA9IEZSRUU7CisgICAgICBtYWtlX2Zy
ZWUoeCk7CiAgICAgICBmID0geDsKICAgICAgIGsrKzsKICAgICB9CkBAIC0xMDYzLDYgKzEwOTcs
OSBAQAogaW50ICgqR0JDX2V4aXRfaG9vaykoKSA9IE5VTEw7CiBjaGFyICpvbGRfcmJfc3RhcnQ7
CiAKKyNkZWZpbmUgT1BUSU1JWkVfTUFYX1BBR0VTIChzU0FvcHRpbWl6ZV9tYXhpbXVtX3BhZ2Vz
QSA9PTAgfHwgc1NBb3B0aW1pemVfbWF4aW11bV9wYWdlc0EtPnMuc19kYmluZCAhPXNMbmlsKSAK
KyNkZWZpbmUgSUdOT1JFX01BWF9QQUdFUyAoc1NBaWdub3JlX21heGltdW1fcGFnZXNBID09MCB8
fCBzU0FpZ25vcmVfbWF4aW11bV9wYWdlc0EtPnMuc19kYmluZCAhPXNMbmlsKSAKKwogdm9pZAog
R0JDKGVudW0gdHlwZSB0KSB7CiAKQEAgLTEwNzUsNiArMTExMiw4IEBACiAgIGludCB0bT0wOwog
I2VuZGlmCiAgIAorICBtY3NsPW1jc2g9JnRtOworCiAgIGlmIChpbl9zaWduYWxfaGFuZGxlciAm
JiB0ID09IHRfcmVsb2NhdGFibGUpCiAgICAgZXJyb3IoImNhbnQgZ2MgcmVsb2NhdGFibGUgaW4g
c2lnbmFsIGhhbmRsZXIiKTsKICAgCkBAIC0xMTk2LDYgKzEyMzUsMTEgQEAKICAgICAgIGkgPSAo
Y2hhciAqKSZtYXJrX3RhYmxlW2pdIC0gaGVhcF9lbmQ7CiAgICAgZWxzZQogICAgICAgaSA9IHJi
X2VuZCAtIGhlYXBfZW5kOworCisgICAgaWYgKGkraGVhcF9lbmQ+TUFYQ09SRSAmJiAhaikgewor
ICAgICAgaT1NQVhDT1JFLWhlYXBfZW5kOworICAgICAgcHJpbnRmKCJXYXJuaW5nOiBhdHRlbXB0
aW5nIHRpZ2h0IHJlbG9jYXRhYmxlIEdDXG4iKTsKKyAgICB9CiAgICAgYWxsb2NfcGFnZSgtKGkg
KyBQQUdFU0laRSAtIDEpL1BBR0VTSVpFKTsKICAgICAKICAgICBmb3IgKGkgPSAwOyAgaSA8IGo7
IGkrKykKQEAgLTEzNDIsNiArMTM4NiwxMSBAQAogCWV4aXQoMSk7CiAgICAgICB9CiAgICAgY29y
ZV9lbmQgPSBoZWFwX2VuZCArIFBBR0VTSVpFOworICAgIHsKKyAgICAgIHVuc2lnbmVkIGxvbmcg
b2xkX25ld19ob2xlcGFnZT1uZXdfaG9sZXBhZ2U7CisgICAgICBuZXdfaG9sZXBhZ2U9Q09SRV9Q
QUdFUy9IT0xFRElWOworICAgICAgaWYgKGF2YWlsYWJsZV9wYWdlczwxKSBuZXdfaG9sZXBhZ2U9
b2xkX25ld19ob2xlcGFnZTsKKyAgICB9CiAgICAgCiAvKiAgICAgZm9yIChpID0gMDsgIGkgPCBt
YXhwYWdlOyAgaSsrKSAqLwogLyogICAgICAgaWYgKChlbnVtIHR5cGUpdHlwZV9tYXBbaV0gPT0g
dF9jb250aWd1b3VzKSAqLwpAQCAtMTM1OCw3ICsxNDA3LDcgQEAKICAgICBpZiAoc2djX2VuYWJs
ZWQ9PTApIAogI2VuZGlmCiAgICAgICB7aG9sZXBhZ2UgPSBuZXdfaG9sZXBhZ2U7Ci0gICAgICBu
cmJwYWdlID0gSU5JVF9OUkJQQUdFO30KKyAgICAgIG5yYnBhZ2UgPSBDT1JFX1BBR0VTL0lOSVRf
TlJCRElWO30KICAgICAKICAgICBpZiAobnJicGFnZSA8IDApCiAgICAgICBlcnJvcigibm8gcmVs
b2NhdGFibGUgcGFnZXMgbGVmdCIpOwpAQCAtMTM4NCwxMSArMTQzMyw1MiBAQAogCiAgIH0KICAg
CisgIHsKKyAgICBleHRlcm4gaW50IGhvbGVfb3ZlcnJ1bjsKKworICAgIGlmICghaG9sZV9vdmVy
cnVuICYmIElHTk9SRV9NQVhfUEFHRVMgJiYgT1BUSU1JWkVfTUFYX1BBR0VTKQorICAgICAgb3B0
X21heHBhZ2UodG1fdGFibGUrdCk7CisKKyAgfQorCisgIFpBTExPQ0EoYWJzKG1jc2wtbWNzaCkp
OwogICAKICAgQ0hFQ0tfSU5URVJSVVBUOworCisKIH0KIAogc3RhdGljIHZvaWQKK0ZGTihzaUxo
ZWFwX3JlcG9ydCkodm9pZCkgeworCisgIGludCBpOworICAKKyAgY2hlY2tfYXJnKDApOworICAK
KyAgdnNfY2hlY2tfcHVzaChtYWtlX2ZpeG51bShzaXplb2Yod29yZCkqOCkpOworICB2c19wdXNo
KG1ha2VfZml4bnVtKFBBR0VTSVpFKSk7CisgIHZzX3B1c2gobWFrZV9maXhudW0oREJFR0lOKSk7
CisgIHZzX3B1c2gobWFrZV9maXhudW0oREJFR0lOKyhNQVhQQUdFPDxQQUdFV0lEVEgpKSk7Cisg
IHZzX3B1c2gobWFrZV9maXhudW0oU0hBUkVEX0xJQl9IRUFQX0NFSUxJTkcpKTsKKyAgaT1zaXpl
b2Yod29yZCkqOC0yOworICBpPTE8PGk7CisgIHZzX3B1c2gobWFrZV9maXhudW0oKCh1bnNpZ25l
ZCBsb25nKWNzX2Jhc2UraS0xKSYtaSkpOworICB2c19wdXNoKG1ha2VfZml4bnVtKGFicyhjc19i
YXNlLWNzX29yZykpKTsKKyAgdnNfcHVzaChtYWtlX2ZpeG51bShDU1RBQ0tfRElSRUNUSU9OKSk7
CisgIHZzX3B1c2gobWFrZV9maXhudW0oQ1NUQUNLX0FMSUdOTUVOVCkpOworICB2c19wdXNoKG1h
a2VfZml4bnVtKENTU0laRSkpOworI2lmIGRlZmluZWQoSU1fRklYX0JBU0UpICYmIGRlZmluZWQo
SU1fRklYX0xJTSkKKyAgdnNfcHVzaChtYWtlX2ZpeG51bShJTV9GSVhfQkFTRSkpOworICB2c19w
dXNoKG1ha2VfZml4bnVtKElNX0ZJWF9MSU0pKTsKKyNlbHNlICAKKyAgdnNfcHVzaChDbmlsKTsK
KyAgdnNfcHVzaChDbmlsKTsKKyNlbmRpZgorCit9ICAKKworCitzdGF0aWMgdm9pZAogRkZOKHNp
THJvb21fcmVwb3J0KSh2b2lkKSB7CiAKICAgaW50IGk7CkBAIC0xNDE3LDEyICsxNTA3LDE0IEBA
CiAgICAgICB2c19wdXNoKG1ha2VfZml4bnVtKHRtX3RhYmxlW2ldLnRtX25wYWdlKSk7CiAgICAg
ICB2c19wdXNoKG1ha2VfZml4bnVtKHRtX3RhYmxlW2ldLnRtX21heHBhZ2UpKTsKICAgICAgIHZz
X3B1c2gobWFrZV9maXhudW0odG1fdGFibGVbaV0udG1fZ2JjY291bnQpKTsKKyAgICAgIHZzX3B1
c2gobWFrZV9maXhudW0odG1fdGFibGVbaV0udG1fc2l6ZS9zaXplb2Yod29yZCkpKTsKICAgICB9
IGVsc2UgewogICAgICAgdnNfY2hlY2tfcHVzaChDbmlsKTsKICAgICAgIHZzX3B1c2gobWFrZV9m
aXhudW0odG1fdGFibGVbaV0udG1fdHlwZSkpOwogICAgICAgdnNfcHVzaChDbmlsKTsKICAgICAg
IHZzX3B1c2goQ25pbCk7CiAgICAgICB2c19wdXNoKENuaWwpOworICAgICAgdnNfcHVzaChDbmls
KTsKICAgICB9CiAgIH0KIH0KQEAgLTE0NTEsNiArMTU0Myw4IEBACiAgcyA9IFJPVU5EX1VQX1BU
UihzKTsKICByYl9wb2ludGVyICs9IHM7CiAgcmJfcG9pbnRlcjEgKz0gczsKKyBpZiAocmJfcG9p
bnRlcjE+Y29yZV9lbmQpCisgICBlcnJvcigibm90IGVub3VnaCByb29tIHRvIGdjIHJlbGJsb2Nr
Iik7CiAgCiAgd2hpbGUgKC0tcyA+PSAwKQogICAgeyAqcSsrID0gKnArKzt9CkBAIC0xNTE1LDYg
KzE2MDksNyBAQAogZ2NsX2luaXRfR0JDKHZvaWQpIHsKIAogICBtYWtlX3NpX2Z1bmN0aW9uKCJS
T09NLVJFUE9SVCIsIHNpTHJvb21fcmVwb3J0KTsKKyAgbWFrZV9zaV9mdW5jdGlvbigiSEVBUC1S
RVBPUlQiLCBzaUxoZWFwX3JlcG9ydCk7CiAgIG1ha2Vfc2lfZnVuY3Rpb24oIlJFU0VULUdCQy1D
T1VOVCIsIHNpTHJlc2V0X2diY19jb3VudCk7CiAgIG1ha2Vfc2lfZnVuY3Rpb24oIkdCQy1USU1F
IixzaUxnYmNfdGltZSk7CiAgIApJbmRleDogby9nY2xfcmVhZGxpbmUuZAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vZ2NsX3JlYWRsaW5lLmQsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMS4yLjYKZGlmZiAtdSAtcjEuMS4yLjYgZ2NsX3JlYWRsaW5lLmQKLS0tIG8vZ2Ns
X3JlYWRsaW5lLmQJOSBNYXIgMjAwNCAwMjoxNTo0MiAtMDAwMAkxLjEuMi42CisrKyBvL2djbF9y
ZWFkbGluZS5kCTYgSnVuIDIwMDUgMjE6NTA6MDMgLTAwMDAKQEAgLTE0MCw3ICsxNDAsMTEgQEAK
ICAgICAgIGlmICh0ZW1wPT10ZW1wMSkgCiAJcGFja2FnZT0odGVtcFsxXT09JzonKSA/IHNMQXBh
Y2thZ2VBLT5zLnNfZGJpbmQgOiBrZXl3b3JkX3BhY2thZ2U7CiAgICAgICBlbHNlIHsKLQlzdHJ1
Y3Qgc3RyaW5nIHM9e3Rfc3RyaW5nLDAsMCwwLE9CSk5VTEwsMSwwLChjaGFyICopdGVtcDEsdGVt
cC10ZW1wMX07CisJc3RydWN0IHN0cmluZyBzOy8qID17dF9zdHJpbmcsMCwwLDAsMSwwLE9CSk5V
TEwsMSwwLChjaGFyICopdGVtcDEsdGVtcC10ZW1wMX07ICovCisJc2V0X3R5cGVfb2YoJnMsdF9z
dHJpbmcpOworCXMuc3Rfc2VsZj0oY2hhciAqKXRlbXAxOworCXMuc3RfZmlsbHA9cy5zdF9kaW09
dGVtcC10ZW1wMTsKKwlzLnN0X2hhc2ZpbGxwPTE7CiAJcGFja2FnZT1maW5kX3BhY2thZ2UoKG9i
amVjdCkmcyk7CiAgICAgICB9CiAgICAgfQpAQCAtMjI3LDcgKzIzMSw3IEBACiAJc3RhdGljIGlu
dCBjdXJyZW50X2xlbmd0aCA9IDA7CiAJdW5zaWduZWQgY2hhciAqb2xkX2xpbmU7CiAKLQlpZiAo
ZiE9c3Rkb3V0IHx8ICFpc2F0dHkoZmlsZW5vKGYpKSApIGdvdG8gdGFpbDsKKwlpZiAoZiE9c3Rk
b3V0IHx8ICFpc2F0dHkoZmlsZW5vKGYpKSB8fCAhcmVhZGxpbmVfb24pIGdvdG8gdGFpbDsKIAog
CWlmIChjPT0nXHInIHx8IGM9PSdcbicpIHsKIAkJY3VycmVudF9sZW5ndGggPSAwOwpAQCAtMjU5
LDcgKzI2Myw3IEBACiAJc3RhdGljIGludCBsaW5lcG9zID0gMDsKIAlpbnQgcjsKIAkKLQlpZiAo
ZiE9c3RkaW4gfHwgIWlzYXR0eShmaWxlbm8oZikpICkgcmV0dXJuIGdldGMoZik7CisJaWYgKGYh
PXN0ZGluIHx8ICFpc2F0dHkoZmlsZW5vKGYpKSkgcmV0dXJuIGdldGMoZik7CiAJCiAJaWYgKHJs
X3VuZ2V0Y19lbV9jaGFyIT0tMSkgewogCQlyID0gcmxfdW5nZXRjX2VtX2NoYXI7CkluZGV4OiBv
L2dtcF9iaWcuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vZ21wX2Jp
Zy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYuNi4yCmRpZmYgLXUgLXIxLjYuNi4yIGdtcF9i
aWcuYwotLS0gby9nbXBfYmlnLmMJMjYgU2VwIDIwMDMgMTM6Mjk6MDQgLTAwMDAJMS42LjYuMgor
Kysgby9nbXBfYmlnLmMJNiBKdW4gMjAwNSAyMTo1MDowMyAtMDAwMApAQCAtMTE4LDExICsxMTgs
MTEgQEAKICAgIGl0LCBhbmQgdGhlbiB3ZSBjYW4gY29weSBpdCBiYWNrCiAqLyAgIAogI2RlZmlu
ZSBHQ1BST1RFQ1QodSkgXAotIE1QX0lOVCAqIF9fdSA9IE1QKGJpZ19nY3Byb3RlY3QpOyBcCisg
TVBfSU5UICogX191ID0gKHU9PU1QKGJpZ19maXhudW0xKSB8fCB1PT1NUChiaWdfZml4bnVtMikp
ID8gdSA6IE1QKGJpZ19nY3Byb3RlY3QpOyBcCiAgKF9fdSktPl9tcF9kID0gICAodSktPl9tcF9k
OyBcCiAgKF9fdSktPl9tcF9hbGxvYyA9ICh1KS0+X21wX2FsbG9jIAogI2RlZmluZSBHQ19QUk9U
RUNURURfU0VMRiAoX191KS0+X21wX2QKLSNkZWZpbmUgRU5EX0dDUFJPVEVDVCAoX191KS0+X21w
X2QgPSAwCisjZGVmaW5lIEVORF9HQ1BST1RFQ1QgaWYgKF9fdT09TVAoYmlnX2djcHJvdGVjdCkp
IChfX3UpLT5fbXBfZCA9IDAKICAKIAogCkluZGV4OiBvL2hhc2guZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vaGFzaC5kLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjku
Ni4yCmRpZmYgLXUgLXIxLjkuNi4yIGhhc2guZAotLS0gby9oYXNoLmQJNiBOb3YgMjAwMyAxNjox
Njo1MCAtMDAwMAkxLjkuNi4yCisrKyBvL2hhc2guZAk2IEp1biAyMDA1IDIxOjUwOjAzIC0wMDAw
CkBAIC04NiwxMiArODYsMTQgQEAKIAl9CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQKLWloYXNo
X2VxdWFsKHgsZGVwdGgpCisjZGVmaW5lIGloYXNoX2VxdWFsKGFfLGJfKSAoKHR5cGVfb2YoYV8p
PT10X3N5bWJvbCAmJiAoYV8pLT5zLnNfaGFzaCkgPyAoYV8pLT5zLnNfaGFzaCA6IGloYXNoX2Vx
dWFsMShhXyxiXykpCit1bnNpZ25lZCBsb25nCitpaGFzaF9lcXVhbDEoeCxkZXB0aCkKIG9iamVj
dCB4OwogaW50IGRlcHRoOwogewotCXVuc2lnbmVkIGludCBoID0gMDsKKyAgICAgICAgZW51bSB0
eXBlIHR4OworCXVuc2lnbmVkIGxvbmcgaCA9IDA7CiAJaW50IGk7CiAJY2hhciAqczsKIApAQCAt
OTksMzAgKzEwMSwzMyBAQAogCiBCRUdJTjoKIAlpZiAoZGVwdGgrKyA+MykgcmV0dXJuIGg7Ci0J
c3dpdGNoICh0eXBlX29mKHgpKSB7CisJc3dpdGNoICgodHg9dHlwZV9vZih4KSkpIHsKIAljYXNl
IHRfY29uczoKIAkJaCArPSBpaGFzaF9lcXVhbCh4LT5jLmNfY2FyLGRlcHRoKTsKIAkJeCA9IHgt
PmMuY19jZHI7CiAJCWdvdG8gQkVHSU47CiAKLQljYXNlIHRfc3RyaW5nOgotCQlmb3IgKGkgPSB4
LT5zdC5zdF9maWxscCwgcyA9IHgtPnN0LnN0X3NlbGY7ICBpID4gMDsgIC0taSwgcysrKQotCQkJ
aCArPSAoKnMgJiAwMzc3KSoxMjM0NSArIDE7Ci0JCXJldHVybihoKTsKKy8qIAkJZm9yIChpID0g
eC0+c3Quc3RfZmlsbHAsIHMgPSB4LT5zdC5zdF9zZWxmOyAgaSA+IDA7ICAtLWksIHMrKykgKi8K
Ky8qIAkJCWggKz0gKCpzICYgMDM3NykqMTIzNDUgKyAxOyAqLworLyogCQlyZXR1cm4oaCk7ICov
CiAJY2FzZSB0X3N5bWJvbDoKKwljYXNlIHRfc3RyaW5nOgogCQkvKiBjYXNlIHRfc3RyaW5nIGNv
dWxkIHNoYXJlIHRoaXMgY29kZS0td2ZzICovCi0JCXtpbnQgbGVuPXgtPnN0LnN0X2ZpbGxwOwor
CQl7bG9uZyBsZW49eC0+c3Quc3RfZmlsbHA7CiAJCSBzPXgtPnN0LnN0X3NlbGY7Ci0JCSBzd2l0
Y2gobGVuKSB7Ci0JCSBjYXNlIDA6IGJyZWFrOwotCQkgZGVmYXVsdDoKLQkJIGNhc2UgNDogaCs9
IHNbLS1sZW5dIDw8IDI0OwotCQkgY2FzZSAzOiBoKz0gc1stLWxlbl08PCAxNjsKLQkJIGNhc2Ug
MjogaCs9IHNbMV0gPDwgODsKLQkJIGNhc2UgMTogaCs9IHNbMF0gOworCQkgbGVuPWxlbj5zaXpl
b2YobGVuKSA/IHNpemVvZihsZW4pIDogbGVuOworCQkgZm9yIChzKz1sZW4tMTtsZW4tLTtzLS0p
CisJCSAgIGgrPSAqcyA8PCA4KmxlbjsKKy8qIAkJIHN3aXRjaChsZW4pIHsgKi8KKy8qIAkJIGNh
c2UgMDogYnJlYWs7ICovCisvKiAJCSBkZWZhdWx0OiAqLworLyogCQkgY2FzZSA0OiBoKz0gc1st
LWxlbl0gPDwgMjQ7ICovCisvKiAJCSBjYXNlIDM6IGgrPSBzWy0tbGVuXTw8IDE2OyAqLworLyog
CQkgY2FzZSAyOiBoKz0gc1sxXSA8PCA4OyAqLworLyogCQkgY2FzZSAxOiBoKz0gc1swXSA7ICov
CiAJCSAgIAogCQkgICAKLQkJIH0KKy8qIAkJIH0gKi8KIAkJIHJldHVybihoKTsKIAkgICAgICAg
fQogCQkgICAKQEAgLTE5OCw3ICsyMDMsOCBAQAogCWludCBoc2l6ZTsKIAlzdHJ1Y3QgaHRlbnQg
KmU7CiAJb2JqZWN0IGhrZXk7Ci0JaW50IGk9MCwgaiA9IC0xLCBrOyAvKiBrIGFkZGVkIGJ5IGNo
b3UgKi8KKwlpbnQgaiA9IC0xLCBrOyAvKiBrIGFkZGVkIGJ5IGNob3UgKi8KKwl1bnNpZ25lZCBs
b25nIGk9MDsKIAlib29sIGI9RkFMU0U7CiAKIAlodGVzdCA9IChlbnVtIGh0dGVzdCloYXNodGFi
bGUtPmh0Lmh0X3Rlc3Q7CkBAIC00NTgsNyArNDY0LDcgQEAKIHsKIAljaGVja19hcmcoMSk7CiAK
LQl2c19iYXNlWzBdID0gbWFrZV9maXhudW0oKGloYXNoX2VxdWFsKHZzX2Jhc2VbMF0sMCkgJiAw
eDdmZmZmZmZmKSk7CisJdnNfYmFzZVswXSA9IG1ha2VfZml4bnVtKChpaGFzaF9lcXVhbCh2c19i
YXNlWzBdLDApLyogICYgMHg3ZmZmZmZmZiAqLykpOwogfQogCiBMRkQoTG1hcGhhc2gpKCkKSW5k
ZXg6IG8vbGlzdC5kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9saXN0
LmQsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTkuNC4xLjQuMgpkaWZmIC11IC1yMS4xOS40LjEu
NC4yIGxpc3QuZAotLS0gby9saXN0LmQJNiBOb3YgMjAwMyAxNjoxNjo1MCAtMDAwMAkxLjE5LjQu
MS40LjIKKysrIG8vbGlzdC5kCTYgSnVuIDIwMDUgMjE6NTA6MDMgLTAwMDAKQEAgLTI1MSw4ICsy
NTEsOCBAQAogIHA9KHN0cnVjdCBjb25zICopIHJlczsKICBpZiAobjw9MCkgcmV0dXJuIENuaWw7
CiAgVE9QOgotIHAtPnQgPSAoaW50KXRfY29uczsKLSBwLT5tPUZBTFNFOworLyogIHAtPnQgPSAo
aW50KXRfY29uczsgKi8KKy8qICBwLT5tPUZBTFNFOyAqLwogIHAtPmNfY2FyPSBqaiA/IHZhX2Fy
ZyhhcCxvYmplY3QpIDogZmlyc3Q7CiAgamo9MTsKICBpZiAoLS1uID09IDApCkBAIC0zMzMsMTUg
KzMzMywxNSBAQAogICAgICAge2lmIChpIDwgbikKICAgICAgICB0YWlsLT5jLmNfY2RyPU9CSl9M
SU5LKHRhaWwpOwogICAgICAgIGVsc2Uge3RtLT50bV9mcmVlPU9CSl9MSU5LKHRhaWwpOwotCSAg
ICAgdGFpbC0+ZC50ID0gKGludCl0X2NvbnM7Ci0JICAgICB0YWlsLT5kLm0gPSBGQUxTRTsKKwkg
ICAgIHNldF90eXBlX29mKHRhaWwsdF9jb25zKTsvKiAgdGFpbC0+ZC50ID0gKGludCl0X2NvbnM7
ICovCisJICAgICB0YWlsLT5kLmYgPSB0YWlsLT5kLm0gPSAwOwogCSAgICAgdGFpbC0+Yy5jX2Nh
cj12YV9hcmcoYXAsb2JqZWN0KTsgCiAJICAgICB0YWlsLT5jLmNfY2RyPUNuaWw7CiAJICAgICBn
b3RvIEVORF9JTlRFUiA7CiAJICAgfQogICAgICAgIC8qIHRoZXNlIGNvdWxkIGJlIG9uZSBpbnN0
cnVjdGlvbiovCi0gICAgICAgdGFpbC0+ZC50ID0gKGludCl0X2NvbnM7Ci0gICAgICAgdGFpbC0+
ZC5tPUZBTFNFOworICAgICAgIHNldF90eXBlX29mKHRhaWwsdF9jb25zKTsvKiAgdGFpbC0+ZC50
ID0gKGludCl0X2NvbnM7ICovCisgICAgICAgdGFpbC0+ZC5mPXRhaWwtPmQubT0wOwogICAgICAg
IHRhaWwtPmMuY19jYXI9dmFfYXJnKGFwLG9iamVjdCk7CiAgICAgICAgdGFpbD10YWlsLT5jLmNf
Y2RyOwogICAgICAgIGkrKzt9CkBAIC04NjUsOCArODY1LDggQEAKICBzdHJ1Y3QgY29ucyAqcCA9
IChzdHJ1Y3QgY29ucyAqKXJlczsKICBpZiAobjw9MCkgcmV0dXJuIENuaWw7CiAgIFRPUDoKLSBw
LT50ID0gKGludCl0X2NvbnM7Ci0gcC0+bT1GQUxTRTsKKy8qICBwLT50ID0gKGludCl0X2NvbnM7
ICovCisvKiAgcC0+bT1GQUxTRTsgKi8KICBwLT5jX2Nhcj1DbmlsOwogIGlmICgtLW4gPT0gMCkK
ICAgIHtwLT5jX2NkciA9IENuaWw7CkBAIC04ODUsNyArODg1LDcgQEAKICByZXR1cm4geDt9CiAK
IEAoZGVmdW4gbWFrZV9saXN0IChzaXplICZrZXkgaW5pdGlhbF9lbGVtZW50ICZhdXggeCkKLQlp
bnQgaTsKKwlpbnQgaT0wOwogQAogCWNoZWNrX3R5cGVfbm9uX25lZ2F0aXZlX2ludGVnZXIoJnNp
emUpOwogCWlmICh0eXBlX29mKHNpemUpICE9IHRfZml4bnVtKQpJbmRleDogby9tYWluLmMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL21haW4uYyx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4yNi40LjEuMi4yMS42LjEKZGlmZiAtdSAtcjEuMjYuNC4xLjIuMjEuNi4xIG1h
aW4uYwotLS0gby9tYWluLmMJNSBBdWcgMjAwNCAyMjoyNjo0OCAtMDAwMAkxLjI2LjQuMS4yLjIx
LjYuMQorKysgby9tYWluLmMJNiBKdW4gMjAwNSAyMTo1MDowMyAtMDAwMApAQCAtMTAxLDggKzEw
MSw2IEBACiB1bnNpZ25lZCBpbnQgX3N0YWNrdG9wLCBfc3RhY2tib3R0b207CiAjZW5kaWYKIAot
aW50IGNzc2l6ZTsKLQogI2lmZGVmIFNHQwogaW50IHNnY19lbmFibGVkOwogI2VuZGlmCkBAIC0x
MTEsMTEgKzEwOSwxMSBAQAogI2lmbmRlZiBTSUdfU1RBQ0tfU0laRQogI2RlZmluZSBTSUdfU1RB
Q0tfU0laRSAxMDAwCiAjZW5kaWYKLSNpZm5kZWYgU0VUVVBfU0lHX1NUQUNLCi0jaWYgZGVmaW5l
ZChIQVZFX1NJR0FDVElPTikgfHwgZGVmaW5lZChIQVZFX1NJR1ZFQykKLSAgICAgICAgc3RydWN0
IHNpZ3N0YWNrIGVzdGFjazsKLSNlbmRpZgotI2VuZGlmCisvKiAjaWZuZGVmIFNFVFVQX1NJR19T
VEFDSyAqLworLyogI2lmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pIHx8IGRlZmluZWQoSEFWRV9T
SUdWRUMpICovCisvKiBzdHJ1Y3Qgc2lnYWx0c3RhY2sgZXN0YWNrOyAqLworLyogI2VuZGlmICov
CisvKiAjZW5kaWYgKi8KIAogI2lmZGVmIE5FRURfTk9OUkFORE9NX1NCUksKICNpbmNsdWRlIDxz
eXNjYWxsLmg+CkBAIC0xMjMsNiArMTIxLDMyIEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5k
aWYKIAorLyogdm9pZCB3aXBlX3N0YWNrKFZPTCB2b2lkICopIF9fYXR0cmlidXRlX18gKChub2lu
bGluZSkpOyAqLwordm9pZAord2lwZV9zdGFjayhWT0wgdm9pZCAqbCkgeworCisjaWYgQ1NUQUNL
X0RJUkVDVElPTiA9PSAtMQorICAgaWYgKGw+KHZvaWQgKikmbCkgYnplcm8oKHZvaWQgKikmbCxs
LSh2b2lkICopJmwpOworI2Vsc2UKKyAgbCs9c2l6ZW9mKGwpOworICBpZiAoKHZvaWQgKikmbD5s
KSBiemVybyhsLCh2b2lkICopJmwtbCk7CisjZW5kaWYKKworfQorCisvKiB2b2lkIGNsZWFyX2Nf
c3RhY2soVk9MIHVuc2lnbmVkKSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsgKi8KK3ZvaWQK
K2NsZWFyX2Nfc3RhY2soVk9MIHVuc2lnbmVkIG4pIHsKKworICB2b2lkICp2PU9CSk5VTEw7Cisg
IGFsbG9jYShuKTsKKyAgd2lwZV9zdGFjaygmdik7CisKK30KKworLypGSVhNRSB0aGlzIGlzIGp1
c3QgaGVyZSBmb3IgcmVzZXQgY3N0YWNrIGxpbWl0LCB3aGljaCBuZWVkcyBhZGp1c3RpbmcuKi8K
K3Vuc2lnbmVkIGxvbmcgY3NzaXplPUNTU0laRTsKKwogaW50CiBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndiwgY2hhciAqKmVudnApIHsKICNpZmRlZiBCU0QKQEAgLTIzMyw2ICsyNTcsNyBAQAog
CX0KIAogCUdCQ19lbmFibGUgPSBGQUxTRTsKKwlpbnN0YWxsX3NlZ21lbnRhdGlvbl9jYXRjaGVy
KCk7CiAKIAkvKiBpZiBzdGFja19zcGFjZSBub3QgemVybyB3ZSBoYXZlIGdyb3duIHRoZSBzdGFj
ayBzcGFjZSAqLwogCWlmIChzdGFja19zcGFjZSA9PSAwKQpAQCAtMjU2LDM1ICsyODEsMzIgQEAK
IAlpaHNfdG9wID0gaWhzX29yZy0xOwogCWJkc190b3AgPSBiZHNfb3JnLTE7CiAJZnJzX3RvcCA9
IGZyc19vcmctMTsKLQljc19vcmcgPSAmYXJnYzsKLQotCWNzc2l6ZSA9IENTU0laRTsKLQlpbnN0
YWxsX3NlZ21lbnRhdGlvbl9jYXRjaGVyKCk7CisJY3Nfb3JnID0gY3NfYmFzZSA9ICZhcmdjOwor
I2lmZGVmIF9faWE2NF9fCisJY3Nfb3JnMj1jc19iYXNlMj1fX2xpYmNfaWE2NF9yZWdpc3Rlcl9i
YWNraW5nX3N0b3JlX2Jhc2U7CisjZW5kaWYKIAogI2lmZGVmIEJTRAogI2lmZGVmIFJMSU1JVF9T
VEFDSwotCXsKLQkgIHVuc2lnbmVkIGxvbmcgbXNzOwotCSAgbXNzPTE2KnNpemVvZihzaG9ydCkq
TUFYUEFHRTsgLyogaS5lLiBzaG9ydCBmb29bTUFYUEFHRV0gb24gc3RhY2sgaW4gc2djX3N0YXJ0
ICovCi0JICBpZiAoZ2V0cmxpbWl0KFJMSU1JVF9TVEFDSywgJnJsKSkKLQkgICAgZXJyb3IoIkNh
bm5vdCBnZXQgc3RhY2sgcmxpbWl0XG4iKTsKLQkgIGlmIChybC5ybGltX21heCAhPSBSTElNX0lO
RklOSVRZICYmIHJsLnJsaW1fbWF4IDwgbXNzKQotCSAgICBtc3M9cmwucmxpbV9tYXg7Ci0JICBp
ZiAocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSB8fCAKLQkgICAgICBybC5ybGltX2N1ciAh
PSBtc3MpIHsKLQkgICAgcmwucmxpbV9jdXI9bXNzOwotCSAgICBpZiAoc2V0cmxpbWl0KFJMSU1J
VF9TVEFDSywmcmwpKQotCSAgICAgIGVycm9yKCJDYW5ub3Qgc2V0IHN0YWNrIHJsaW1pdFxuIik7
Ci0JICB9Ci0JICBjc3NpemUgPSBybC5ybGltX2N1ci9zaXplb2YoKmNzX29yZykgLSBzaXplb2Yo
KmNzX29yZykqQ1NHRVRBOwotICAgICAgICB9Ci0KLQorCS8qIAkgIG1zcz0xNipzaXplb2Yoc2hv
cnQpKk1BWFBBR0U7ICovIC8qIGkuZS4gc2hvcnQgZm9vW01BWFBBR0VdIG9uIHN0YWNrIGluIHNn
Y19zdGFydCAqLworCWlmIChnZXRybGltaXQoUkxJTUlUX1NUQUNLLCAmcmwpKQorCSAgZXJyb3Io
IkNhbm5vdCBnZXQgc3RhY2sgcmxpbWl0XG4iKTsKKwlpZiAocmwucmxpbV9tYXggIT0gUkxJTV9J
TkZJTklUWSAmJiBybC5ybGltX21heCA8IGNzc2l6ZSkKKwkgIGNzc2l6ZT1ybC5ybGltX21heDsK
KwlpZiAocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSB8fCAKKwkgICAgcmwucmxpbV9jdXIg
IT0gY3NzaXplKSB7CisJICBybC5ybGltX2N1cj1jc3NpemU7CisJICBpZiAoc2V0cmxpbWl0KFJM
SU1JVF9TVEFDSywmcmwpKQorCSAgICBlcnJvcigiQ2Fubm90IHNldCBzdGFjayBybGltaXRcbiIp
OworCX0KKwljc3NpemUgPSBybC5ybGltX2N1cjsKKwkKKwkKIAkvKiBNYXliZSB0aGUgc29mdCBs
aW1pdCBmb3IgZGF0YSBzZWdtZW50IHNpemUgaXMgbG93ZXIgdGhhbiB0aGUKIAkgKiBoYXJkIGxp
bWl0LiAgSW4gdGhhdCBjYXNlLCB3ZSB3YW50IGFzIG11Y2ggYXMgcG9zc2libGUuCiAJICovCiAJ
aWYgKGdldHJsaW1pdChSTElNSVRfREFUQSwgJnJsKSkKLQkgICAgZXJyb3IoIkNhbm5vdCBnZXQg
ZGF0YSBybGltaXRcbiIpOworCSAgZXJyb3IoIkNhbm5vdCBnZXQgZGF0YSBybGltaXRcbiIpOwog
CWlmIChybC5ybGltX2N1ciAhPSBSTElNX0lORklOSVRZICYmCiAJICAgIChybC5ybGltX21heCA9
PSBSTElNX0lORklOSVRZIHx8CiAJICAgICBybC5ybGltX21heCA+IHJsLnJsaW1fY3VyKSkgewpA
QCAtMjkyLDE3ICszMTQsMTMgQEAKIAkgIGlmIChzZXRybGltaXQoUkxJTUlUX0RBVEEsICZybCkp
CiAJICAgIGVycm9yKCJDYW5ub3Qgc2V0IGRhdGEgcmxpbWl0XG4iKTsKIAl9Ci0KKwkKICNlbmRp
ZgkKICNlbmRpZgotCisJCiAjaWZkZWYgQVYKLQljc19saW1pdCA9IGNzX29yZyAtIGNzc2l6ZTsK
LSNlbmRpZgotI2lmZGVmIE1WCi0KKwljc19saW1pdCA9IGNzX2Jhc2UgKyBDU1RBQ0tfRElSRUNU
SU9OICogY3NzaXplL3NpemVvZigqY3NfYmFzZSk7CiAjZW5kaWYKLSAgICAgICAgCiAJc2V0X21h
eHBhZ2UoKTsKICNpZmRlZiBTRVRVUF9TSUdfU1RBQ0sKIAlTRVRVUF9TSUdfU1RBQ0sKQEAgLTMx
MCwxNSArMzI4LDIwIEBACiAjaWYgZGVmaW5lZChIQVZFX1NJR0FDVElPTikgfHwgZGVmaW5lZChI
QVZFX1NJR1ZFQykKIAkgIHsKIAkgICAgLyogbWFrZSBzdXJlIHRoZSBzdGFjayBpcyA4IGJ5dGUg
YWxpZ25lZCAqLwotI2lmZGVmIFNFVEpNUF9PTkVfRElSRUNUSU9OCi0JICAgIHN0YXRpYwotI2Vu
ZGlmCi0JICAgIGRvdWJsZSBlc3RhY2tfYnVmW1NJR19TVEFDS19TSVpFXTsKKy8qICNpZmRlZiBT
RVRKTVBfT05FX0RJUkVDVElPTiAqLworLyogCSAgICBzdGF0aWMgKi8KKy8qICNlbmRpZiAqLwor
CSAgICBzdGF0aWMgY2hhciBlc3RhY2tfYnVmWzMyKlNJR1NUS1NaXTsKKwkgICAgc3RhdGljIHN0
cnVjdCBzaWdhbHRzdGFjayBlc3RhY2s7CiAJICAgIAogCSAgICBiemVybyhlc3RhY2tfYnVmLHNp
emVvZihlc3RhY2tfYnVmKSk7Ci0JICAgIGVzdGFjay5zc19zcCA9IChjaGFyICopICZlc3RhY2tf
YnVmW1NJR19TVEFDS19TSVpFLTFdOwotCSAgICBlc3RhY2suc3Nfb25zdGFjaz0wOwotCSAgICBz
aWdzdGFjaygmZXN0YWNrLDApOworCSAgICBlc3RhY2suc3Nfc3AgPSBlc3RhY2tfYnVmOworCSAg
ICBlc3RhY2suc3NfZmxhZ3MgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CisJICAgIGVzdGFjay5zc19zaXplID0gc2l6ZW9mKGVzdGFja19idWYpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCisJICAgIGlmIChzaWdhbHRzdGFjaygmZXN0YWNrLCAwKSA8IDApICAg
ICAgICAgICAgICAgICAgICAgICAKKwkgICAgICBwZXJyb3IoInNpZ2FsdHN0YWNrIik7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKKy8qIAkgICAgZXN0YWNrLnNzX29uc3RhY2s9MDsgKi8K
Ky8qIAkgICAgc2lnc3RhY2soJmVzdGFjaywwKTsgKi8KIAkgIH0KICNlbmRpZgkKICNlbmRpZgkK
QEAgLTM2NSw2ICszODgsNyBAQAogI2lmZGVmIEhBVkVfUkVBRExJTkUKIAkJZ2NsX2luaXRfcmVh
ZGxpbmVfZnVuY3Rpb24oKTsKICNlbmRpZgorLyogCQljbGVhcl9jX3N0YWNrKGFicyhjc19saW1p
dC1jc19vcmcpKTsgKi8KIAkgICAgICBhZ2FpbjoKIAkJc3VwZXJfZnVuY2FsbChzU3RvcF9sZXZl
bCk7CiAJCWlmICh0eXBlX29mKHNTQW11bHRpcGx5X3N0YWNrc0EtPnMuc19kYmluZCk9PXRfZml4
bnVtKSB7CkBAIC00MjcsMjEgKzQ1MSwyOSBAQAogCiBpbnQgY2F0Y2hfZmF0YWw9MTsKIHZvaWQK
LWVycm9yKGNoYXIgKnMpCi17Ci0gICAgICAgIGlmIChjYXRjaF9mYXRhbD4wICYmIGludGVycnVw
dF9lbmFibGUgKQotICAgICAgICAgICAge2NhdGNoX2ZhdGFsID0gLTE7CitlcnJvcihjaGFyICpz
KSB7CisKKyAgaWYgKGNhdGNoX2ZhdGFsPjAgJiYgaW50ZXJydXB0X2VuYWJsZSkgeworCisgICAg
Y2F0Y2hfZmF0YWwgPSAtMTsKICNpZmRlZiBTR0MKLQkgICBpZiAoc2djX2VuYWJsZWQpCi0JICAg
ICB7IHNnY19xdWl0KCk7fQotCSAgIGlmIChzZ2NfZW5hYmxlZD09MCkKLSNlbmRpZgotCSAgICAg
eyBpbnN0YWxsX3NlZ21lbnRhdGlvbl9jYXRjaGVyKCkgO30KLQkgICBGRWVycm9yKCJDYXVnaHQg
ZmF0YWwgZXJyb3IgW21lbW9yeSBtYXkgYmUgZGFtYWdlZF0iLDApOyB9Ci0JcHJpbnRmKCJcblVu
cmVjb3ZlcmFibGUgZXJyb3I6ICVzLlxuIiwgcyk7Ci0JZmZsdXNoKHN0ZG91dCk7CisgICAgaWYg
KHNnY19lbmFibGVkKQorICAgICAgc2djX3F1aXQoKTsKKyAgICBpZiAoc2djX2VuYWJsZWQ9PTAp
CisjZW5kaWYKKyAgICAgIGluc3RhbGxfc2VnbWVudGF0aW9uX2NhdGNoZXIoKTsKKyAgICB7Cisg
ICAgICBzdHJ1Y3Qgc3RyaW5nIHN0OworICAgICAgc2V0X3R5cGVfb2YoJnN0LHRfc3RyaW5nKTsK
KyAgICAgIHN0LnN0X2RpbT1zdC5zdF9maWxscD1zID8gc3RybGVuKHMpIDogMDsKKyAgICAgIHN0
LnN0X3NlbGY9czsKKyAgICAgIEZFZXJyb3IoIkNhdWdodCBmYXRhbCBlcnJvciBbbWVtb3J5IG1h
eSBiZSBkYW1hZ2VkXTogfmEiLDEsJnN0KTsKKyAgICB9CisgIH0KKyAgcHJpbnRmKCJcblVucmVj
b3ZlcmFibGUgZXJyb3I6XG4iKTsKKyAgZmZsdXNoKHN0ZG91dCk7CiAjaWZkZWYgVU5JWAotCWFi
b3J0KCk7CisgIGFib3J0KCk7CiAjZW5kaWYKIH0KIApAQCAtNDU5LDM4ICs0OTEsNDcgQEAKIAkg
IH0KIAlnY2xfaW5pdF9hbGxvYygpOwogCi0JRG90bmlsX2JvZHkudCA9IChzaG9ydCl0X3N5bWJv
bDsKLQlEb3RuaWxfYm9keS5zX2RiaW5kID0gRG90bmlsOwotCURvdG5pbF9ib2R5LnNfc2ZkZWYg
PSBOT1RfU1BFQ0lBTDsKLQlEb3RuaWxfYm9keS5zX2ZpbGxwID0gNjsKLQlEb3RuaWxfYm9keS5z
X3NlbGYgPSAiRE9UTklMIjsKLQlEb3RuaWxfYm9keS5zX2dmZGVmID0gT0JKTlVMTDsKLQlEb3Ru
aWxfYm9keS5zX3BsaXN0ID0gQ25pbDsKLQlEb3RuaWxfYm9keS5zX2hwYWNrID0gQ25pbDsKLQlE
b3RuaWxfYm9keS5zX3N0eXBlID0gKHNob3J0KXN0cF9jb25zdGFudDsKLQlEb3RuaWxfYm9keS5z
X21mbGFnID0gRkFMU0U7CisvKiAJc2V0X3R5cGVfb2YoRG90bmlsLHRfc3ltYm9sKTsgKi8KKy8q
IAlEb3RuaWxfYm9keS50ID0gKHNob3J0KXRfc3ltYm9sOyAqLworLyogCURvdG5pbF9ib2R5LmUg
PSAxOyAqLworCURvdG5pbC0+Yy5jX2Nkcj1Eb3RuaWw7CisJRG90bmlsLT5zLnNfZGJpbmQgPSBE
b3RuaWw7CisJRG90bmlsLT5zLnNfc2ZkZWYgPSBOT1RfU1BFQ0lBTDsKKwlEb3RuaWwtPnMuc19m
aWxscCA9IDY7CisJRG90bmlsLT5zLnNfc2VsZiA9ICJET1ROSUwiOworCURvdG5pbC0+cy5zX2dm
ZGVmID0gT0JKTlVMTDsKKwlEb3RuaWwtPnMuc19wbGlzdCA9IENuaWw7CisJRG90bmlsLT5zLnNf
aHBhY2sgPSBDbmlsOworCURvdG5pbC0+cy5zX3N0eXBlID0gKHNob3J0KXN0cF9jb25zdGFudDsK
KwlEb3RuaWwtPnMuc19tZmxhZyA9IEZBTFNFOwogCQotCUNuaWxfYm9keS50ID0gKHNob3J0KXRf
c3ltYm9sOwotCUNuaWxfYm9keS5zX2RiaW5kID0gQ25pbDsKLQlDbmlsX2JvZHkuc19zZmRlZiA9
IE5PVF9TUEVDSUFMOwotCUNuaWxfYm9keS5zX2ZpbGxwID0gMzsKLQlDbmlsX2JvZHkuc19zZWxm
ID0gIk5JTCI7Ci0JQ25pbF9ib2R5LnNfZ2ZkZWYgPSBPQkpOVUxMOwotCUNuaWxfYm9keS5zX3Bs
aXN0ID0gQ25pbDsKLQlDbmlsX2JvZHkuc19ocGFjayA9IENuaWw7Ci0JQ25pbF9ib2R5LnNfc3R5
cGUgPSAoc2hvcnQpc3RwX2NvbnN0YW50OwotCUNuaWxfYm9keS5zX21mbGFnID0gRkFMU0U7Cisv
KiAJc2V0X3R5cGVfb2YoQ25pbCx0X3N5bWJvbCk7ICovCisvKiAJQ25pbF9ib2R5LnQgPSAoc2hv
cnQpdF9zeW1ib2w7ICovCisvKiAJQ25pbF9ib2R5LmUgPSAxOyAqLworCUNuaWwtPmMuY19jZHI9
Q25pbDsKKwlDbmlsLT5zLnNfZGJpbmQgPSBDbmlsOworCUNuaWwtPnMuc19zZmRlZiA9IE5PVF9T
UEVDSUFMOworCUNuaWwtPnMuc19maWxscCA9IDM7CisJQ25pbC0+cy5zX3NlbGYgPSAiTklMIjsK
KwlDbmlsLT5zLnNfZ2ZkZWYgPSBPQkpOVUxMOworCUNuaWwtPnMuc19wbGlzdCA9IENuaWw7CisJ
Q25pbC0+cy5zX2hwYWNrID0gQ25pbDsKKwlDbmlsLT5zLnNfc3R5cGUgPSAoc2hvcnQpc3RwX2Nv
bnN0YW50OworCUNuaWwtPnMuc19tZmxhZyA9IEZBTFNFOwogCQotCUN0X2JvZHkudCA9IChzaG9y
dCl0X3N5bWJvbDsKLQlDdF9ib2R5LnNfZGJpbmQgPSBDdDsKLQlDdF9ib2R5LnNfc2ZkZWYgPSBO
T1RfU1BFQ0lBTDsKLQlDdF9ib2R5LnNfZmlsbHAgPSAxOwotCUN0X2JvZHkuc19zZWxmID0gIlQi
OwotCUN0X2JvZHkuc19nZmRlZiA9IE9CSk5VTEw7Ci0JQ3RfYm9keS5zX3BsaXN0ID0gQ25pbDsK
LQlDdF9ib2R5LnNfaHBhY2sgPSBDbmlsOwotCUN0X2JvZHkuc19zdHlwZSA9IChzaG9ydClzdHBf
Y29uc3RhbnQ7Ci0JQ3RfYm9keS5zX21mbGFnID0gRkFMU0U7CisvKiAJc2V0X3R5cGVfb2YoQ3Qs
dF9zeW1ib2wpOyAqLworLyogCUN0X2JvZHkudCA9IChzaG9ydCl0X3N5bWJvbDsgKi8KKy8qIAlD
dF9ib2R5LmUgPSAxOyAqLworCUN0LT5jLmNfY2RyPUN0OworCUN0LT5zLnNfZGJpbmQgPSBDdDsK
KwlDdC0+cy5zX3NmZGVmID0gTk9UX1NQRUNJQUw7CisJQ3QtPnMuc19maWxscCA9IDE7CisJQ3Qt
PnMuc19zZWxmID0gIlQiOworCUN0LT5zLnNfZ2ZkZWYgPSBPQkpOVUxMOworCUN0LT5zLnNfcGxp
c3QgPSBDbmlsOworCUN0LT5zLnNfaHBhY2sgPSBDbmlsOworCUN0LT5zLnNfc3R5cGUgPSAoc2hv
cnQpc3RwX2NvbnN0YW50OworCUN0LT5zLnNfbWZsYWcgPSBGQUxTRTsKIAkKIAlnY2xfaW5pdF9z
eW1ib2woKTsKIApAQCAtNjM5LDExICs2ODAsMjkgQEAKIAlGRWVycm9yKCJJbnZvY2F0aW9uIGhp
c3Rvcnkgc3RhY2sgb3ZlcmZsb3cuIiwgMCk7CiB9CiAKK3N0YXRpYyB2b2lkCitjc19vdmVyZmxv
dyh2b2lkKSB7CisvKiAjaWZkZWYgQVYgKi8KKy8qIAlpZiAoY3NfbGltaXQgPCBjc19vcmcgLSBj
c3NpemUpICovCisvKiAJCWVycm9yKCJjb250cm9sIHN0YWNrIG92ZXJmbG93Iik7ICovCisvKiAJ
Y3NfbGltaXQgLT0gQ1NHRVRBOyAqLworLyogI2VuZGlmICovCisJRkVlcnJvcigiQ29udHJvbCBz
dGFjayBvdmVyZmxvdy4iLDApOworfQorCisjZGVmaW5lIEdFVF9GQVVMVF9BRERSKHNpZyxjb2Rl
LHN2LGEpIFwKKyAoKHNpZ2luZm9fdCAqKWNvZGUpLT5zaV9hZGRyCiB2b2lkCi1zZWdtZW50YXRp
b25fY2F0Y2hlcihpbnQgaSkgewotI2lmbmRlZiBTSUdfU1RBQ0tfU0laRSAKLSAgaW50IHg7Ci0g
IGlmICgmeCA8IGNzX2xpbWl0KQorc2VnbWVudGF0aW9uX2NhdGNoZXIoaW50IGksIGxvbmcgY29k
ZSwgdm9pZCAqc2NwLCBjaGFyICphZGRyKSB7CisgIHZvaWQgKmZhZGRyOworICBmYWRkcj1HRVRf
RkFVTFRfQUREUihzaWcsY29kZSxzY3AsYWRkcik7IAorCisjaWZkZWYgU0lHX1NUQUNLX1NJWkUg
CisjaWYgQ1NUQUNLX0RJUkVDVElPTiA9PSAtMQorICBpZiAoZmFkZHIgPCAodm9pZCAqKWNzX2xp
bWl0KQorI2Vsc2UKKyAgaWYgKGZhZGRyID4gKHZvaWQgKiljc19saW1pdCkKKyNlbmRpZgogICAg
IGNzX292ZXJmbG93KCk7CiAgIGVsc2UgCiAgICAgcHJpbnRmKCJTZWdtZW50YXRpb24gdmlvbGF0
aW9uOiBjIHN0YWNrIG9rOnNpZ25hbGxpbmcgZXJyb3IiKTsKQEAgLTY1MiwyMSArNzExLDYgQEAK
IH0KIAogLyogc3RhdGljIHZvaWQgKi8KLS8qIGNzX292ZXJmbG93KHZvaWQpIHsgKi8KLS8qICNp
ZmRlZiBBViAqLwotLyogCWlmIChjc19saW1pdCA8IGNzX29yZyAtIGNzc2l6ZSkgKi8KLS8qIAkJ
ZXJyb3IoImNvbnRyb2wgc3RhY2sgb3ZlcmZsb3ciKTsgKi8KLS8qIAljc19saW1pdCAtPSBDU0dF
VEE7ICovCi0vKiAjZW5kaWYgKi8KLS8qICNpZmRlZiBNViAqLwotCi0KLQotLyogI2VuZGlmICov
Ci0vKiAJRkVlcnJvcigiQ29udHJvbCBzdGFjayBvdmVyZmxvdy4iLCAwKTsgKi8KLS8qIH0gKi8K
LQotLyogc3RhdGljIHZvaWQgKi8KIC8qIGVuZF9vZl9maWxlKHZvaWQpIHsgKi8KIC8qIAllcnJv
cigiZW5kIG9mIGZpbGUiKTsgKi8KIC8qIH0gKi8KQEAgLTc3Niw4ICs4MjAsMTIgQEAKIHN0YXRp
YyB2b2lkCiByZXNldF9jc3RhY2tfbGltaXQoaW50IGFyZykgewogI2lmZGVmIEFWCi0gIGlmICgm
YXJnID4gY3Nfb3JnIC0gY3NzaXplICsgMTYpCi0gICAgY3NfbGltaXQgPSBjc19vcmcgLSBjc3Np
emU7CisjaWYgQ1NUQUNLX0RJUkVDVElPTj09LTEKKyAgaWYgKCZhcmcgPiBjc19iYXNlIC0gY3Nz
aXplL3NpemVvZigqY3NfYmFzZSkgKyAxNikKKyNlbHNlCisgIGlmICgmYXJnIDwgY3NfYmFzZSAr
IGNzc2l6ZS9zaXplb2YoKmNzX2Jhc2UpIC0gMTYpCisjZW5kaWYKKyAgICBjc19saW1pdCA9IGNz
X2Jhc2UgKyBDU1RBQ0tfRElSRUNUSU9OICogY3NzaXplL3NpemVvZigqY3NfYmFzZSk7CiAgIGVs
c2UKICAgICBlcnJvcigiY2FuJ3QgcmVzZXQgY3NfbGltaXQiKTsKICNlbmRpZgpAQCAtODA4LDYg
Kzg1NiwxNiBAQAogICAgIGloc19saW1pdCA9IGloc19vcmcgKyBzdGFja19tdWx0aXBsZSAqICBJ
SFNTSVpFOwogICBlbHNlCiAgICAgZXJyb3IoImNhbid0IHJlc2V0IGloc19saW1pdCIpOworICBp
ZiAoY3NfYmFzZT09Y3Nfb3JnKQorICAgIGNzX29yZz0odm9pZCAqKSZpOworI2lmZGVmIF9faWE2
NF9fCisgeworICAgZXh0ZXJuIHZvaWQgKiBHQ19zYXZlX3JlZ3NfaW5fc3RhY2soKTsKKyAgIGlm
IChjc19iYXNlMj09Y3Nfb3JnMikKKyAgICAgY3Nfb3JnMj1HQ19zYXZlX3JlZ3NfaW5fc3RhY2so
KTsKKyB9CisjZW5kaWYKKwogICByZXNldF9jc3RhY2tfbGltaXQoaSk7CiAgIHZzX2Jhc2VbMF0g
PSBDbmlsOwogfQpAQCAtOTA4LDYgKzk2NiwxNiBAQAogCVJFVFVSTjEoKG1ha2Vfc2ltcGxlX3N0
cmluZyhMSVNQX0lNUExFTUVOVEFUSU9OX1ZFUlNJT04pKSk7CiB9CiAKK3N0YXRpYyB2b2lkCitG
Rk4oc2lMY2xlYXJfY19zdGFjaykodm9pZCkgeworCisgIGNoZWNrX2FyZygxKTsKKyAgaWYgKHR5
cGVfb2YodnNfYmFzZVswXSkhPXRfZml4bnVtKQorICAgIEZFZXJyb3IoIm11c3Qgc3VwcGx5IG51
bWJlciBvZiBieXRlcyB0byBjbGVhciBhcyBhIGZpeG51bSIsMCk7CisgIGNsZWFyX2Nfc3RhY2so
Zml4KHZzX2Jhc2VbMF0pKTsKKyAgdnNfYmFzZVswXT1DbmlsOworCit9CiAKIHN0YXRpYyB2b2lk
CiBGRk4oc2lMc2F2ZV9zeXN0ZW0pKHZvaWQpIHsKQEAgLTEwNzcsNiArMTE0NSw3IEBACiAgIG1h
a2Vfc3BlY2lhbCgiKkZFQVRVUkVTKiIsZmVhdHVyZXMpO30KICAgCiAgIG1ha2Vfc2lfZnVuY3Rp
b24oIlNBVkUtU1lTVEVNIiwgc2lMc2F2ZV9zeXN0ZW0pOworICBtYWtlX3NpX2Z1bmN0aW9uKCJD
TEVBUi1DLVNUQUNLIiwgc2lMY2xlYXJfY19zdGFjayk7CiAgIG1ha2Vfc2lfc2Z1bigiQ0FUQ0gt
RkFUQUwiLHNpTGNhdGNoX2ZhdGFsLEFSR1RZUEUxKGZfZml4bnVtKSk7CiAgIG1ha2Vfc2lfZnVu
Y3Rpb24oIldBUk4tVkVSU0lPTiIsTGlkZW50aXR5KTsKICAgCkluZGV4OiBvL25mdW5saW5rLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL25mdW5saW5rLmMsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuOApkaWZmIC11IC1yMS44IG5mdW5saW5rLmMKLS0tIG8vbmZ1bmxp
bmsuYwkxNSBGZWIgMjAwMyAwMDozODoyOCAtMDAwMAkxLjgKKysrIG8vbmZ1bmxpbmsuYwk2IEp1
biAyMDA1IDIxOjUwOjAzIC0wMDAwCkBAIC0xODMsMTAgKzE4MywxMCBAQAogICAgc3RhcnRpbmcg
YXQgQkFTRS4gIFRoaXMgcHVzaGVzIG9uIHRoZSBDYWxsSGlzdCwgYW5kIHB1dHMgdGhlIGFyZ3Mg
b250bwogICAgdGhlIGFyZyBzdGFjaywgc28gdGhhdCBkZWJ1Z2dlcnMgbWF5IGV4YW1pbmUgdGhl
bS4gIEl0IHNldHMKICAgIGZjYWxsLm52YWx1ZXMgYXBwcm9wcmlhdGVseS4gKi8KLXsgb2JqZWN0
IHJlcywqYWJhc2U7Ci0gIGludCBpOworeyBvYmplY3QgcmVzPU9CSk5VTEwsKmFiYXNlPU5VTEw7
CisgIGludCBpPTA7CiAgIG9iamVjdCAqb2xkdG9wID0gdnNfdG9wOwotICB1bnNpZ25lZCBpbnQg
IGF0eXBlczsKKyAgdW5zaWduZWQgaW50ICBhdHlwZXM9MDsKICAgaWYgKG9sZHRvcCA9PSBiYXNl
KSB2c190b3AgKz0gbmFyZ3M7CiAgIGVsc2UKICAgICB7IG9iamVjdCAqYiA9IGJhc2U7CkluZGV4
OiBvL251bV9hcml0aC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9u
dW1fYXJpdGguYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40LjYuNi4xMi4xCmRpZmYgLXUgLXIx
LjQuNi42LjEyLjEgbnVtX2FyaXRoLmMKLS0tIG8vbnVtX2FyaXRoLmMJMTYgSmFuIDIwMDUgMDA6
MzY6MjAgLTAwMDAJMS40LjYuNi4xMi4xCisrKyBvL251bV9hcml0aC5jCTYgSnVuIDIwMDUgMjE6
NTA6MDMgLTAwMDAKQEAgLTYyLDYgKzYyLDMyIEBACiAgICB9CiB9CiAKK29iamVjdCAKK2ZpeG51
bV90aW1lcyhmaXhudW0gaSwgZml4bnVtIGopIHsKKworICBpZiAoaT49MCkgeworICAgIGlmIChq
Pj0wKSB7CisgICAgICBpZiAoIWkgfHwgajw9IChNT1NUX1BPU0lUSVZFX0ZJWC9pKSkKKwlnb3Rv
IEZJWDsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKGo9PS0xIHx8IGk8PSAoTU9TVF9ORUdBVElW
RV9GSVgvaikpCisJZ290byBGSVg7CisgICAgfQorICB9IGVsc2UgeworICAgIGlmIChqPj0wKSB7
CisgICAgICBpZiAoaT09LTEgfHwgajw9IChNT1NUX05FR0FUSVZFX0ZJWC9pKSkKKwlnb3RvIEZJ
WDsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKC1pPD0gKE1PU1RfUE9TSVRJVkVfRklYLy1qKSkK
Kwlnb3RvIEZJWDsKKyAgICB9CisgIH0KKyAgTVBPUChyZXR1cm4sbXVsc3MsaSxqKTsKKyBGSVg6
CisgIHJldHVybiBtYWtlX2ZpeG51bShpKmopOworfQorCisvKiByZXR1cm4gaSAtIGogKi8KIC8q
IHN0YXRpYyBvYmplY3QgKi8KIC8qIGZpeG51bV90aW1lcyhpbnQgaSwgaW50IGopICovCiAvKiB7
ICovCkBAIC01MjAsNyArNTQ2LDggQEAKIAljYXNlIHRfZml4bnVtOgogCQlzd2l0Y2ggKHR5cGVf
b2YoeSkpIHsKIAkJY2FzZSB0X2ZpeG51bToKLQkJICBNUE9QKHJldHVybixtdWxzcyxmaXgoeCks
Zml4KHkpKTsKKwkJICByZXR1cm4gZml4bnVtX3RpbWVzKGZpeCh4KSxmaXgoeSkpOworLyogCQkg
IE1QT1AocmV0dXJuLG11bHNzLGZpeCh4KSxmaXgoeSkpOyAqLwogCQljYXNlIHRfYmlnbnVtOgog
CQkgIE1QT1AocmV0dXJuLG11bHNpLGZpeCh4KSxNUCh5KSk7CiAJCWNhc2UgdF9yYXRpbzoKSW5k
ZXg6IG8vbnVtX2xvZy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9u
dW1fbG9nLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOS40LjEuNC4yCmRpZmYgLXUgLXIxLjku
NC4xLjQuMiBudW1fbG9nLmMKLS0tIG8vbnVtX2xvZy5jCTYgTm92IDIwMDMgMTY6MTY6NTIgLTAw
MDAJMS45LjQuMS40LjIKKysrIG8vbnVtX2xvZy5jCTYgSnVuIDIwMDUgMjE6NTA6MDMgLTAwMDAK
QEAgLTYzMSwxNCArNjMxLDE1IEBACiAJTDI6CiAJCWlmIChyID09IENuaWwpIHsKIAkJICBvYmpl
Y3QgYjsKLQkJICBzdHJ1Y3QgY29ucyAqcD1hbGxvY2EoeC0+YS5hX3Jhbmsqc2l6ZW9mKHN0cnVj
dCBjb25zKSk7CisJCSAgc3RydWN0IGNvbnMgKnA9WkFMTE9DQSgoeC0+YS5hX3JhbmsrMSkqc2l6
ZW9mKHN0cnVjdCBjb25zKSk7CisJCSAgcD0odm9pZCAqKSgoKHVuc2lnbmVkIGxvbmcpKCh2b2lk
ICopcCtzaXplb2Yoc3RydWN0IGNvbnMpLTEpKSZ+KHNpemVvZihzdHJ1Y3QgY29ucyktMSkpOwog
CQkgIGlmICh4LT5hLmFfcmFuaykgewogCQkgICAgb2JqZWN0IGIxOwogCiAJCSAgICBiPShvYmpl
Y3QpcDsKIAkJICAgIGZvciAoYjE9YixpPTA7aTx4LT5hLmFfcmFuaztpKyssYjE9YjEtPmMuY19j
ZHIpIHsKLQkJICAgICAgYjEtPmQudD0oaW50KXRfY29uczsKLQkJICAgICAgYjEtPmQubT1GQUxT
RTsKKwkJICAgICAgc2V0X3R5cGVfb2YoYjEsdF9jb25zKTsgLyogYjEtPmQudD0oaW50KXRfY29u
czsgKi8KKwkJICAgICAgYjEtPmQuZj1iMS0+ZC5tPTA7CiAJCSAgICAgIGIxLT5jLmNfY2FyPS8q
IHgtPmEuYV9kaW1zW2ldPFNNQUxMX0ZJWE5VTV9MSU1JVCA/ICAqLwogCQkJLyogc21hbGxfZml4
bnVtKHgtPmEuYV9kaW1zW2ldKSA6ICAqLyAKIAkJCS8qIG5vdyBkb25lIGluIGEgbWFjcm8gKi8K
SW5kZXg6IG8vbnVtX3JhbmQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2Ns
L28vbnVtX3JhbmQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zLjYuMgpkaWZmIC11IC1yMS4z
LjYuMiBudW1fcmFuZC5jCi0tLSBvL251bV9yYW5kLmMJNiBOb3YgMjAwMyAxNjoxNjo1MiAtMDAw
MAkxLjMuNi4yCisrKyBvL251bV9yYW5kLmMJNiBKdW4gMjAwNSAyMTo1MDowMyAtMDAwMApAQCAt
MzMsMzcgKzMzLDc1IEBACiAjZW5kaWYKIAogc3RhdGljIG9iamVjdAotcmFuZG8ob2JqZWN0IHgs
IG9iamVjdCBycykKLXsKLQllbnVtIHR5cGUgdHg7Ci0Jb2JqZWN0IHo7Ci0JZG91YmxlIGQ7Ci0J
Ci0JdHggPSB0eXBlX29mKHgpOwotCWlmIChudW1iZXJfY29tcGFyZSh4LCBzbWFsbF9maXhudW0o
MCkpICE9IDEpCi0JCUZFd3JvbmdfdHlwZV9hcmd1bWVudChUU3Bvc2l0aXZlX251bWJlciwgeCk7
Ci0JZCA9IChkb3VibGUpKHJzLT5ybmQucm5kX3ZhbHVlPj4xKSAvICg0Mjk0OTY3Mjk2LjAvMi4w
KTsKLQlkID0gbnVtYmVyX3RvX2RvdWJsZSh4KSAqIGQ7Ci0JaWYgKHR4ID09IHRfZml4bnVtKSB7
Ci0JCXogPSBtYWtlX2ZpeG51bSgoaW50KWQpOwotCQlyZXR1cm4oeik7Ci0JfSBlbHNlIGlmICh0
eCA9PSB0X2JpZ251bSkgewotCQl6ID0gZG91YmxlX3RvX2ludGVnZXIoZCk7Ci0JCXJldHVybih6
KTsKLQl9IGVsc2UgaWYgKHR4ID09IHRfc2hvcnRmbG9hdCkgewotCQl6ID0gYWxsb2Nfb2JqZWN0
KHRfc2hvcnRmbG9hdCk7Ci0JCXNmKHopID0gKGZsb2F0KWQ7Ci0JCXJldHVybih6KTsKLQl9IGVs
c2UgaWYgKHR4ID09IHRfbG9uZ2Zsb2F0KSB7Ci0JCXogPSBhbGxvY19vYmplY3QodF9sb25nZmxv
YXQpOwotCQlsZih6KSA9IGQ7Ci0JCXJldHVybih6KTsKLQl9IGVsc2UgewotCQlGRWVycm9yKCJ+
UyBpcyBub3QgYW4gaW50ZWdlciBub3IgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuIiwKLQkJCTEs
IHgpOwotCQlyZXR1cm4oQ25pbCk7Ci0JfQotfQorcmFuZG8ob2JqZWN0IHgsIG9iamVjdCBycykg
eworCisgIGVudW0gdHlwZSB0eDsKKyAgb2JqZWN0IGJhc2Usb3V0LHo7CisgIGZpeG51bSBmYmFz
ZTsKKyAgZG91YmxlIGQ7CisgIAorICB0eCA9IHR5cGVfb2YoeCk7CisgIGlmIChudW1iZXJfY29t
cGFyZSh4LCBzbWFsbF9maXhudW0oMCkpICE9IDEpCisgICAgRkV3cm9uZ190eXBlX2FyZ3VtZW50
KFRTcG9zaXRpdmVfbnVtYmVyLCB4KTsKKyAgCisgIGlmICh0eD09dF9iaWdudW0pIHsKKyAgICBv
dXQ9bmV3X2JpZ251bSgpOworICAgIGJhc2U9eDsKKyAgICBmYmFzZT0tMTsKKyAgfSBlbHNlIHsK
KyAgICBvdXQ9YmlnX2ZpeG51bTE7CisgICAgZmJhc2U9dHg9PXRfZml4bnVtID8gZml4KHgpIDog
TU9TVF9QT1NJVElWRV9GSVg7LypGSVhNRSBHTVAgaW5maW5pdGUgbG9vcCBzbWFsbCBiYXNlcyov
CisvKiAgICAgZmJhc2U9TU9TVF9QT1NJVElWRV9GSVg7ICovCisgICAgbXB6X3NldF9zaShNUChi
aWdfZml4bnVtMiksZmJhc2UpOworICAgIGJhc2U9YmlnX2ZpeG51bTI7CisgIH0KKyAgCisgIG1w
el91cmFuZG9tbShNUChvdXQpLCZycy0+cm5kLnJuZF9zdGF0ZSxNUChiYXNlKSk7CisgIAorICBz
d2l0Y2ggKHR4KSB7CisgICAgCisgIGNhc2UgdF9maXhudW06CisgICAgcmV0dXJuIG1ha2VfZml4
bnVtKG1wel9nZXRfc2koTVAob3V0KSkpOworLyogICAgIHJldHVybiBtYWtlX2ZpeG51bShmaXgo
eCkqKG1wel9nZXRfZChNUChvdXQpKS8oKGRvdWJsZSlmYmFzZSkpKTsgKi8KKyAgY2FzZSB0X2Jp
Z251bToKKyAgICByZXR1cm4gbm9ybWFsaXplX2JpZyhvdXQpOworICBjYXNlIHRfc2hvcnRmbG9h
dDogY2FzZSB0X2xvbmdmbG9hdDoKKyAgICBkPW1wel9nZXRfZChNUChvdXQpKTsKKyAgICBkLz0o
ZG91YmxlKWZiYXNlOworICAgIHo9YWxsb2Nfb2JqZWN0KHR4KTsKKyAgICBpZiAodHg9PXRfc2hv
cnRmbG9hdCkgc2Yoeik9ZDsgZWxzZSBsZih6KT1kOworICAgIHJldHVybiB6OworICBkZWZhdWx0
OgorICAgIEZFZXJyb3IoIn5TIGlzIG5vdCBhbiBpbnRlZ2VyIG5vciBhIGZsb2F0aW5nLXBvaW50
IG51bWJlci4iLCAxLCB4KTsKKyAgICByZXR1cm4oQ25pbCk7CisgIH0KK30KKworLyogCXR4ID0g
dHlwZV9vZih4KTsgKi8KKy8qIAlpZiAobnVtYmVyX2NvbXBhcmUoeCwgc21hbGxfZml4bnVtKDAp
KSAhPSAxKSAqLworLyogCQlGRXdyb25nX3R5cGVfYXJndW1lbnQoVFNwb3NpdGl2ZV9udW1iZXIs
IHgpOyAqLworLyogCWQgPSAoZG91YmxlKShycy0+cm5kLnJuZF92YWx1ZT4+MSkgLyAoNDI5NDk2
NzI5Ni4wLzIuMCk7ICovCisvKiAJZCA9IG51bWJlcl90b19kb3VibGUoeCkgKiBkOyAqLworLyog
CWlmICh0eCA9PSB0X2ZpeG51bSkgeyAqLworLyogCQl6ID0gbWFrZV9maXhudW0oKGludClkKTsg
Ki8KKy8qIAkJcmV0dXJuKHopOyAqLworLyogCX0gZWxzZSBpZiAodHggPT0gdF9iaWdudW0pIHsg
Ki8KKy8qIAkJeiA9IGRvdWJsZV90b19pbnRlZ2VyKGQpOyAqLworLyogCQlyZXR1cm4oeik7ICov
CisvKiAJfSBlbHNlIGlmICh0eCA9PSB0X3Nob3J0ZmxvYXQpIHsgKi8KKy8qIAkJeiA9IGFsbG9j
X29iamVjdCh0X3Nob3J0ZmxvYXQpOyAqLworLyogCQlzZih6KSA9IChmbG9hdClkOyAqLworLyog
CQlyZXR1cm4oeik7ICovCisvKiAJfSBlbHNlIGlmICh0eCA9PSB0X2xvbmdmbG9hdCkgeyAqLwor
LyogCQl6ID0gYWxsb2Nfb2JqZWN0KHRfbG9uZ2Zsb2F0KTsgKi8KKy8qIAkJbGYoeikgPSBkOyAq
LworLyogCQlyZXR1cm4oeik7ICovCisvKiAJfSBlbHNlIHsgKi8KKy8qIAkJRkVlcnJvcigiflMg
aXMgbm90IGFuIGludGVnZXIgbm9yIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLiIsICovCisvKiAJ
CQkxLCB4KTsgKi8KKy8qIAkJcmV0dXJuKENuaWwpOyAqLworLyogCX0gKi8KKy8qIH0gKi8KIAog
c3RhdGljIG9iamVjdAogbWFrZV9yYW5kb21fc3RhdGUob2JqZWN0IHJzKQpAQCAtNzUsMTIgKzEx
MywxNSBAQAogCiAJaWYgKHJzID09IENuaWwpIHsKIAkJeiA9IGFsbG9jX29iamVjdCh0X3JhbmRv
bSk7Ci0JCXotPnJuZC5ybmRfdmFsdWUgPSBzeW1ib2xfdmFsdWUoVnJhbmRvbV9zdGF0ZSktPnJu
ZC5ybmRfdmFsdWU7CisJCXotPnJuZC5ybmRfc3RhdGUgPSBzeW1ib2xfdmFsdWUoVnJhbmRvbV9z
dGF0ZSktPnJuZC5ybmRfc3RhdGU7CiAJCXJldHVybih6KTsKIAl9IGVsc2UgaWYgKHJzID09IEN0
KSB7CiAJCXogPSBhbGxvY19vYmplY3QodF9yYW5kb20pOwogI2lmZGVmIFVOSVgKLQkJei0+cm5k
LnJuZF92YWx1ZSA9IHRpbWUoMCk7CisJCWJ6ZXJvKCZ6LT5ybmQucm5kX3N0YXRlLHNpemVvZih6
LT5ybmQucm5kX3N0YXRlKSk7CisJCWdtcF9yYW5kaW5pdF9kZWZhdWx0KCZ6LT5ybmQucm5kX3N0
YXRlKTsKKwkJZ21wX3JhbmRzZWVkX3VpKCZ6LT5ybmQucm5kX3N0YXRlLHRpbWUoMCkpOworLyog
CQl6LT5ybmQucm5kX3ZhbHVlID0gdGltZSgwKTsgKi8KICNlbmRpZgogI2lmZGVmIEFPU1ZTCiAK
QEAgLTk0LDIwICsxMzUsMjAgQEAKIAkJcmV0dXJuKENuaWwpOwogCX0gZWxzZSB7CiAJCXogPWFs
bG9jX29iamVjdCh0X3JhbmRvbSk7Ci0JCXotPnJuZC5ybmRfdmFsdWUgPSBycy0+cm5kLnJuZF92
YWx1ZTsKKwkJei0+cm5kLnJuZF9zdGF0ZSA9IHJzLT5ybmQucm5kX3N0YXRlOwogCQlyZXR1cm4o
eik7CiAJfQogfQogCi1zdGF0aWMgdm9pZAotYWR2YW5jZV9yYW5kb21fc3RhdGUob2JqZWN0IHJz
KQotewotCXJzLT5ybmQucm5kX3ZhbHVlCi0JPSBycy0+cm5kLnJuZF92YWx1ZQotCSsgKHJzLT5y
bmQucm5kX3ZhbHVlPDwyKQotCSsgKHJzLT5ybmQucm5kX3ZhbHVlPDwxNykKLQkrIChycy0+cm5k
LnJuZF92YWx1ZTw8MjcpOwotfQorLyogc3RhdGljIHZvaWQgKi8KKy8qIGFkdmFuY2VfcmFuZG9t
X3N0YXRlKG9iamVjdCBycykgKi8KKy8qIHsgKi8KKy8qIAlycy0+cm5kLnJuZF92YWx1ZSAqLwor
LyogCT0gcnMtPnJuZC5ybmRfdmFsdWUgKi8KKy8qIAkrIChycy0+cm5kLnJuZF92YWx1ZTw8Mikg
Ki8KKy8qIAkrIChycy0+cm5kLnJuZF92YWx1ZTw8MTcpICovCisvKiAJKyAocnMtPnJuZC5ybmRf
dmFsdWU8PDI3KTsgKi8KKy8qIH0gKi8KIAogCiBMRkQoTHJhbmRvbSkodm9pZCkKQEAgLTEyMCw3
ICsxNjEsNyBAQAogCQl2c19wdXNoKHN5bWJvbF92YWx1ZShWcmFuZG9tX3N0YXRlKSk7CiAJY2hl
Y2tfYXJnKDIpOwogCWNoZWNrX3R5cGVfcmFuZG9tX3N0YXRlKCZ2c19iYXNlWzFdKTsKLQlhZHZh
bmNlX3JhbmRvbV9zdGF0ZSh2c19iYXNlWzFdKTsKKy8qIAlhZHZhbmNlX3JhbmRvbV9zdGF0ZSh2
c19iYXNlWzFdKTsgKi8KIAl4ID0gcmFuZG8odnNfYmFzZVswXSwgdnNfYmFzZVsxXSk7CiAJdnNf
dG9wID0gdnNfYmFzZTsKIAl2c19wdXNoKHgpOwpJbmRleDogby9udW1fc2Z1bi5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9udW1fc2Z1bi5jLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjYuNi4yCmRpZmYgLXUgLXIxLjYuNi4yIG51bV9zZnVuLmMKLS0tIG8vbnVtX3Nm
dW4uYwk2IE5vdiAyMDAzIDE2OjE2OjUyIC0wMDAwCTEuNi42LjIKKysrIG8vbnVtX3NmdW4uYwk2
IEp1biAyMDA1IDIxOjUwOjAzIC0wMDAwCkBAIC0xNDQsNiArMTQ0LDE2IEBACiAJCQl2c19yZXNl
dDsKIAkJCXJldHVybih6KTsKIAkJfQorCQlpZiAodHg9PXRfZml4bnVtICYmIGZpeCh4KT09MiAm
JiB0eT09dF9maXhudW0pIHsKKwkJICBvYmplY3QgejE7CisJCSAgaWYgKGZpeCh5KTw4KnNpemVv
ZihmaXhudW0pLTEpCisJCSAgICByZXR1cm4gbWFrZV9maXhudW0oKDE8PGZpeCh5KSkpOworCQkg
IHo9bmV3X2JpZ251bSgpOworCQkgIHoxPW5ld19iaWdudW0oKTsKKwkJICBtcHpfc2V0X3VpKE1Q
KHopLDEpOworCQkgIG1wel9tdWxfMmV4cChNUCh6MSksTVAoeiksZml4KHkpKTsKKwkJICByZXR1
cm4gbm9ybWFsaXplX2JpZyh6MSk7CisJCX0KIAkJeiA9IHNtYWxsX2ZpeG51bSgxKTsKIAkJdnNf
cHVzaCh6KTsKIAkJdnNfcHVzaChDbmlsKTsKSW5kZXg6IG8vbnVtYmVyLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2c3Jvb3QvZ2NsL2djbC9vL251bWJlci5jLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjkuNC4xLjQuMQpkaWZmIC11IC1yMS45LjQuMS40LjEgbnVtYmVyLmMKLS0tIG8vbnVtYmVy
LmMJMTQgU2VwIDIwMDMgMDI6MzA6NDUgLTAwMDAJMS45LjQuMS40LjEKKysrIG8vbnVtYmVyLmMJ
NiBKdW4gMjAwNSAyMTo1MDowMyAtMDAwMApAQCAtNjksOCArNjksNyBAQAogCQkJCSAgICAgICAo
bWF4IC0gbWluKSk7CiAgIAogICBmb3IgKGo9bWluIDsgaiA8IG1heCA7IGo9aisxKQotICAgIHsg
CQliaWdnZXJfZml4bnVtX3RhYmxlW2ogLSBtaW5dLnQKLQkJPSAoc2hvcnQpdF9maXhudW07Cisg
ICAgeyAJCXNldF90eXBlX29mKGJpZ2dlcl9maXhudW1fdGFibGUraiAtIG1pbix0X2ZpeG51bSk7
CiAJCWJpZ2dlcl9maXhudW1fdGFibGVbaiAtIG1pbl0uRklYVkFMID0gajsKIAkgICAgICB9CiAg
IGJpZ2dlcl9maXhudW1zLm1pbj1taW47CkBAIC05OSw3ICs5OCw3IEBACiAjZW5kaWYJCiAJICAg
ICAgCiAJeCA9IGFsbG9jX29iamVjdCh0X2ZpeG51bSk7CSAgICAKLQlmaXgoeCkgPSBpOworCXNl
dF9maXgoeCxpKTsKIAlyZXR1cm4oeCk7CiB9CiAKQEAgLTI4NiwxMyArMjg1LDE2IEBACiB2b2lk
CiBnY2xfaW5pdF9udW1iZXIodm9pZCkKIHsKLQlpbnQgaTsKKy8qIAlpbnQgaTsgKi8KIAotCWZv
ciAoaSA9IC1TTUFMTF9GSVhOVU1fTElNSVQ7ICBpIDwgU01BTExfRklYTlVNX0xJTUlUOyAgaSsr
KSB7Ci0JCXNtYWxsX2ZpeG51bV90YWJsZVtpICsgU01BTExfRklYTlVNX0xJTUlUXS50Ci0JCT0g
KHNob3J0KXRfZml4bnVtOwotCQlzbWFsbF9maXhudW1fdGFibGVbaSArIFNNQUxMX0ZJWE5VTV9M
SU1JVF0uRklYVkFMID0gaTsKLQl9CisvKiAJZm9yIChpID0gLVNNQUxMX0ZJWE5VTV9MSU1JVDsg
IGkgPCBTTUFMTF9GSVhOVU1fTElNSVQ7ICBpKyspIHsgKi8KKy8qIAkgIG9iamVjdCB4PShvYmpl
Y3QpKHNtYWxsX2ZpeG51bV90YWJsZStpK1NNQUxMX0ZJWE5VTV9MSU1JVCk7ICovCisvKiAJICBz
ZXRfdHlwZV9vZih4LHRfZml4bnVtKTsgKi8KKy8qIAkgIHgtPkZJWC5GSVhWQUw9aTt9ICovCisK
Ky8qIAkJc21hbGxfZml4bnVtX3RhYmxlW2kgKyBTTUFMTF9GSVhOVU1fTElNSVRdLnQgKi8KKy8q
IAkJPSAoc2hvcnQpdF9maXhudW07ICovCisvKiAJCXNtYWxsX2ZpeG51bV90YWJsZVtpICsgU01B
TExfRklYTlVNX0xJTUlUXS5GSVhWQUwgPSBpOyAqLwogCiAJc2hvcnRmbG9hdF96ZXJvID0gYWxs
b2Nfb2JqZWN0KHRfc2hvcnRmbG9hdCk7CiAJc2Yoc2hvcnRmbG9hdF96ZXJvKSA9IChzaG9ydGZs
b2F0KTAuMDsKSW5kZXg6IG8vcGx0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2Ns
L2djbC9vL3BsdC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMi44CmRpZmYgLXUgLXIxLjEu
Mi44IHBsdC5jCi0tLSBvL3BsdC5jCTIwIE1hciAyMDA0IDAyOjQ4OjMwIC0wMDAwCTEuMS4yLjgK
KysrIG8vcGx0LmMJNiBKdW4gMjAwNSAyMTo1MDowMyAtMDAwMApAQCAtMTQwLDcgKzE0MCw3IEBA
CiAKICAgZm9yICg7cDxwZTtwKyspCiAgICAgaWYgKChvcD1ic2VhcmNoKHAtPm4sYXItPnYudl9z
ZWxmLGFyLT52LnZfZGltLHNpemVvZigqYXItPnYudl9zZWxmKSxhcnNlYXJjaCkpICYmCi0JKCpv
cCktPmMuY19jZHItPkZJWC5GSVhWQUwgIT0gcC0+YWQpCisJZml4KCgqb3ApLT5jLmNfY2RyKSAh
PSBwLT5hZCkKICAgICAgIEZFZXJyb3IoInBsdC9sZCBhZGRyZXNzIG1pc21hdGNoIiwwKTsKIAog
ICBzU0FwbHRfdGFibGVBLT5zLnNfZGJpbmQ9YXI7CkBAIC0xNjIsNyArMTYyLDcgQEAKIAkJIHNT
QXBsdF90YWJsZUEtPnMuc19kYmluZC0+di52X2RpbSwKIAkJIHNpemVvZigqc1NBcGx0X3RhYmxl
QS0+cy5zX2RiaW5kLT52LnZfc2VsZiksCiAJCSBhcnNlYXJjaCkpKSB7Ci0gICAgKnY9KCpvcCkt
PmMuY19jZHItPkZJWC5GSVhWQUw7CisgICAgKnY9Zml4KCgqb3ApLT5jLmNfY2RyKTsKICAgICBy
ZXR1cm4gMDsKICAgfQogICAgIApJbmRleDogby9wcmludC5kCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnNyb290L2djbC9nY2wvby9wcmludC5kLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE1LjQu
MS4yLjIuMTIuMQpkaWZmIC11IC1yMS4xNS40LjEuMi4yLjEyLjEgcHJpbnQuZAotLS0gby9wcmlu
dC5kCTE1IEphbiAyMDA1IDIwOjI3OjQ5IC0wMDAwCTEuMTUuNC4xLjIuMi4xMi4xCisrKyBvL3By
aW50LmQJNiBKdW4gMjAwNSAyMTo1MDowMyAtMDAwMApAQCAtNjA1LDcgKzYwNSw3IEBACiAJCXdy
aXRlX3N0cigiIzxPQkpOVUxMPiIpOwogCQlyZXR1cm47CiAJfQotCWlmICh4LT5kLm0gPT0gRlJF
RSkgeworCWlmIChpc19mcmVlKHgpKSB7CiAJCXdyaXRlX3N0cigiIzxGUkVFIE9CSkVDVCAiKTsK
IAkJd3JpdGVfYWRkcih4KTsKIAkJd3JpdGVfc3RyKCI+Iik7CkBAIC0xMjkzLDcgKzEyOTMsNyBA
QAogCWNhc2UgdF9yYW5kb206CiAJCXdyaXRlX3N0cigiIyQiKTsKIAkJeSA9IGFsbG9jX29iamVj
dCh0X2ZpeG51bSk7Ci0JCWZpeCh5KSA9IHgtPnJuZC5ybmRfdmFsdWU7CisJCXNldF9maXgoeSxt
cHpfZ2V0X3NpKHgtPnJuZC5ybmRfc3RhdGUuX21wX3NlZWQpKTsKIAkJdnNfcHVzaCh5KTsKIAkJ
d3JpdGVfb2JqZWN0KHksIGxldmVsKTsKIAkJdnNfcG9wcDsKSW5kZXg6IG8vcmVhZC5kCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvby9yZWFkLmQsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMTQuNC4xLjIuMi4yLjQuNi4xLjYuMQpkaWZmIC11IC1yMS4xNC40LjEuMi4yLjIu
NC42LjEuNi4xIHJlYWQuZAotLS0gby9yZWFkLmQJMTUgSmFuIDIwMDUgMTY6Mjg6NTAgLTAwMDAJ
MS4xNC40LjEuMi4yLjIuNC42LjEuNi4xCisrKyBvL3JlYWQuZAk2IEp1biAyMDA1IDIxOjUwOjAz
IC0wMDAwCkBAIC0yNDUsNiArMjQ1LDcgQEAKIAl2c19wdXNoKG9sZF9SRUFEdGFibGUpOwogCWZv
ciAoaSA9IDA7ICBpIDwgc2hhcnBfZXFfY29udGV4dF9tYXg7ICBpKyspCiAJCW9sZF9zaGFycF9l
cV9jb250ZXh0W2ldID0gc2hhcnBfZXFfY29udGV4dFtpXTsKKwltZW1zZXQob2xkX3NoYXJwX2Vx
X2NvbnRleHQraSwwLHNpemVvZihvbGRfc2hhcnBfZXFfY29udGV4dCktaSpzaXplb2YoKm9sZF9z
aGFycF9lcV9jb250ZXh0KSk7CiAJb2xkX2JhY2txX2xldmVsID0gYmFja3FfbGV2ZWw7CiAJc2V0
dXBfUkVBRCgpOwogCkBAIC0xOTI1LDcgKzE5MjYsOSBAQAogCQkJMSwgdnNfYmFzZVswXSk7CiAJ
aSA9IGZpeCh2c19iYXNlWzBdKTsKIAl2c19iYXNlWzBdID0gYWxsb2Nfb2JqZWN0KHRfcmFuZG9t
KTsKLQl2c19iYXNlWzBdLT5ybmQucm5kX3ZhbHVlID0gaTsKKwliemVybygmdnNfYmFzZVswXS0+
cm5kLnJuZF9zdGF0ZSxzaXplb2YodnNfYmFzZVswXS0+cm5kLnJuZF9zdGF0ZSkpOworCWdtcF9y
YW5kaW5pdF9kZWZhdWx0KCZ2c19iYXNlWzBdLT5ybmQucm5kX3N0YXRlKTsKKwlnbXBfcmFuZHNl
ZWRfdWkoJnZzX2Jhc2VbMF0tPnJuZC5ybmRfc3RhdGUsaSk7CiB9CiAKIC8qCkluZGV4OiBvL3Jl
Z2V4cHIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vcmVnZXhwci5j
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYuNi4xLjQuMS4yLjEKZGlmZiAtdSAtcjEuNi42LjEu
NC4xLjIuMSByZWdleHByLmMKLS0tIG8vcmVnZXhwci5jCTUgQXVnIDIwMDQgMjI6MjE6MTEgLTAw
MDAJMS42LjYuMS40LjEuMi4xCisrKyBvL3JlZ2V4cHIuYwk2IEp1biAyMDA1IDIxOjUwOjAzIC0w
MDAwCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAgY2FzZV9mb2xkX3NlYXJjaCA9IHNTQWNhc2Vf
Zm9sZF9zZWFyY2hBLT5zLnNfZGJpbmQgIT0gc0xuaWwgPyAxIDogMDsKICAgICAgaWYgKGNhc2Vf
Zm9sZCAhPSBjYXNlX2ZvbGRfc2VhcmNoIHx8IGxlbiAhPSBzdHJsZW4oYnVmKSB8fAkgbWVtY21w
KHBhdHRlcm4tPnVzdC51c3Rfc2VsZixidWYsbGVuKSkgewogCi0gICAgICAgY2hhciAqdG1wPWxl
bisxPHNpemVvZihidWYpID8gYnVmIDogKGNoYXIgKikgYWxsb2NhKGxlbisxKTsKKyAgICAgICBj
aGFyICp0bXA9bGVuKzE8c2l6ZW9mKGJ1ZikgPyBidWYgOiAoY2hhciAqKSBaQUxMT0NBKGxlbisx
KTsKICAgICAgICBpZiAoIXRtcCkKIAkgRkVlcnJvcigiQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBv
biBDIHN0YWNrIiwwKTsKIApAQCAtMTM5LDcgKzEzOSw3IEBACiAgICAgIGlmIChucD49TUFYUEFH
RSB8fCAodHlwZV9tYXBbbnBdICE9IHRfY29udGlndW91cyAmJiB0eXBlX21hcFtucF0gIT0gdF9y
ZWxvY2F0YWJsZSkgfHwKIAkgc3RyK2VuZD09KHZvaWQgKiljb3JlX2VuZCB8fCBzdHIrZW5kPT0o
dm9pZCAqKWNvbXBpbGVkX3JlZ2V4cCkgewogCi0gICAgICAgaWYgKCEoc3RyPWFsbG9jYShzdHJp
bmctPnN0LnN0X2ZpbGxwKzEpKSkKKyAgICAgICBpZiAoIShzdHI9WkFMTE9DQShzdHJpbmctPnN0
LnN0X2ZpbGxwKzEpKSkKIAkgRkVlcnJvcigiQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBvbiBDIHN0
YWNrIiwwKTsKICAgICAgICBtZW1jcHkoc3RyLHN0cmluZy0+c3Quc3Rfc2VsZixzdHJpbmctPnN0
LnN0X2ZpbGxwKTsKIApJbmRleDogby9zZXF1ZW5jZS5kCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnNyb290L2djbC9nY2wvby9zZXF1ZW5jZS5kLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMuNC4x
LjQuMgpkaWZmIC11IC1yMS4zLjQuMS40LjIgc2VxdWVuY2UuZAotLS0gby9zZXF1ZW5jZS5kCTYg
Tm92IDIwMDMgMTY6MTY6NTMgLTAwMDAJMS4zLjQuMS40LjIKKysrIG8vc2VxdWVuY2UuZAk2IEp1
biAyMDA1IDIxOjUwOjAzIC0wMDAwCkBAIC0yOCw3ICsyOCwxMSBAQAogCiAjdW5kZWYgZW5kcAog
Ci0jZGVmaW5lCWVuZHAob2JqZSkJKChlbnVtIHR5cGUpKChlbmRwX3RlbXAgPSAob2JqZSkpLT5k
LnQpID09IHRfY29ucyA/IFwKKy8qICNkZWZpbmUJZW5kcChvYmplKQkoKGVudW0gdHlwZSkoKGVu
ZHBfdGVtcCA9IChvYmplKSktPmQudCkgPT0gdF9jb25zID8gXCAqLworLyogCQkJIEZBTFNFIDog
ZW5kcF90ZW1wID09IENuaWwgPyBUUlVFIDogXCAqLworLyogCQkJIChGRXdyb25nX3R5cGVfYXJn
dW1lbnQoc0xsaXN0LCBlbmRwX3RlbXApLEZBTFNFKSkgKi8KKworI2RlZmluZQllbmRwKG9iamUp
CSgoZW51bSB0eXBlKSh0eXBlX29mKGVuZHBfdGVtcCA9IChvYmplKSkpID09IHRfY29ucyA/IFwK
IAkJCSBGQUxTRSA6IGVuZHBfdGVtcCA9PSBDbmlsID8gVFJVRSA6IFwKIAkJCSAoRkV3cm9uZ190
eXBlX2FyZ3VtZW50KHNMbGlzdCwgZW5kcF90ZW1wKSxGQUxTRSkpCiAKSW5kZXg6IG8vc2Zhc2xi
ZmQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vc2Zhc2xiZmQuYyx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMi40LjEuMi40LjEyLjEKZGlmZiAtdSAtcjEuMTIuNC4x
LjIuNC4xMi4xIHNmYXNsYmZkLmMKLS0tIG8vc2Zhc2xiZmQuYwkxNSBKYW4gMjAwNSAxNjoyNjo0
MyAtMDAwMAkxLjEyLjQuMS4yLjQuMTIuMQorKysgby9zZmFzbGJmZC5jCTYgSnVuIDIwMDUgMjE6
NTA6MDMgLTAwMDAKQEAgLTIxMCw3ICsyMTAsNyBAQAogCiAgICAgbmJmZD0xOwogCi0gICAgZHVt
LnNtLnQ9dF9zdHJlYW07CisgICAgc2V0X3R5cGVfb2YoJmR1bSx0X3N0cmVhbSk7CiAgICAgZHVt
LnNtLnNtX21vZGU9c21tX2lucHV0OwogICAgIGR1bS5zbS5zbV9vYmplY3QwPXNMc3RyaW5nX2No
YXI7CiAKQEAgLTI5NCw3ICsyOTQsNyBAQAogCiAgIGlmICgodT1iZmRfZ2V0X3N5bXRhYl91cHBl
cl9ib3VuZChiKSk8MCkKICAgICBGRWVycm9yKCJDYW5ub3QgZ2V0IHN5bXRhYiB1cHBvZXIgYm91
bmQiLDApOwotICBxPShhc3ltYm9sICoqKWFsbG9jYSh1KTsKKyAgcT0oYXN5bWJvbCAqKilaQUxM
T0NBKHUpOwogICBpZiAoKHY9YmZkX2Nhbm9uaWNhbGl6ZV9zeW10YWIoYixxKSk8MCkKICAgICBG
RWVycm9yKCJjYW5ub3QgY2Fub25pY2FsaXplIHN5bXRhYiIsMCk7CiAKQEAgLTMzNyw3ICszMzcs
NyBAQAogICAgICB3cml0ZSBwcm90ZWN0aW5nIHRoZSBwYWdlcyBvZiBtZW1vcnktPmNmZCBhZ2Fp
biBhbmQgY2F1c2luZyBiZmQgcmVhZHMgb2YgCiAgICAgIHRoZSBzZWN0aW9uIGNvbnRlbnRzIHRv
IHJldHVybiBhbiBlcnJvciBjb2RlIGFmdGVyIGEgJ3N0cmF0aWZpZWQnIHNlZ2ZhdWx0ICovCiAg
ewotICAgdm9pZCAqdj1hbGxvY2EobWVtb3J5LT5jZmQuY2ZkX3NpemUpOworICAgdm9pZCAqdj1a
QUxMT0NBKG1lbW9yeS0+Y2ZkLmNmZF9zaXplKTsKICAgIAogICAgaWYgKCF2KQogICAgICBGRWVy
cm9yKCJDYW5ub3QgYWxsb2NhIGZvciBiZmQiLDApOwpJbmRleDogby9zZmFzbGkuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vc2Zhc2xpLmMsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMTAuNC4yLjIuNy4xMi4xCmRpZmYgLXUgLXIxLjEwLjQuMi4yLjcuMTIuMSBzZmFz
bGkuYwotLS0gby9zZmFzbGkuYwkxNSBKYW4gMjAwNSAxNjoyNjo0MyAtMDAwMAkxLjEwLjQuMi4y
LjcuMTIuMQorKysgby9zZmFzbGkuYwk2IEp1biAyMDA1IDIxOjUwOjAzIC0wMDAwCkBAIC00OCw3
ICs0OCw3IEBACiAgICAgRkVlcnJvcigiQ2Fubm90IGdldCBzZWxmJ3Mgc3ltdGFiIHVwcGVyIGJv
dW5kIiwwKTsKIAogI2lmZGVmIEhBVkVfQUxMT0NBCi0gIHE9KGFzeW1ib2wgKiopYWxsb2NhKHUp
OworICBxPShhc3ltYm9sICoqKVpBTExPQ0EodSk7CiAjZWxzZQogICBxPShhc3ltYm9sICoqKW1h
bGxvYyh1KTsKICNlbmRpZgpJbmRleDogby9zZ2JjLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
c3Jvb3QvZ2NsL2djbC9vL3NnYmMuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS45LjQuMS4yLjEy
LjYuMS4yLjEKZGlmZiAtdSAtcjEuOS40LjEuMi4xMi42LjEuMi4xIHNnYmMuYwotLS0gby9zZ2Jj
LmMJMTIgQXVnIDIwMDQgMTY6NDI6NDcgLTAwMDAJMS45LjQuMS4yLjEyLjYuMS4yLjEKKysrIG8v
c2diYy5jCTYgSnVuIDIwMDUgMjE6NTA6MDMgLTAwMDAKQEAgLTU5LDExICs1OSwxMSBAQAogCiAK
ICNkZWZpbmUgc2djX21hcmtfcGFja19saXN0KHUpICAgICAgXAotZG8ge3JlZ2lzdGVyIG9iamVj
dCB4dG1wID0gdTsgIFwKK2RvIHtvYmplY3QgeHRtcCA9IHU7ICBcCiAgd2hpbGUgKHh0bXAgIT0g
Q25pbCkgXAotICAge2lmIChPTl9XUklUQUJMRV9QQUdFKHh0bXApKSB4dG1wLT5kLm0gPSBUUlVF
OyBcCisgICB7aWYgKE9OX1dSSVRBQkxFX1BBR0UoeHRtcCkpIHttYXJrKHh0bXApO30gXAogICAg
ICBzZ2NfbWFya19vYmplY3QoeHRtcC0+Yy5jX2Nhcik7IFwKLSAgICB4dG1wPXh0bXAtPmMuY19j
ZHI7fX13aGlsZSgwKSAKKyAgICB4dG1wPVNjZHIoeHRtcCk7fX13aGlsZSgwKSAKIAogCiAjaWZk
ZWYgU0RFQlVHCkBAIC03MiwxMSArNzIsMjAgQEAKIGpvZSgpIHs7fSAgICAgCiAjZW5kaWYKIAor
c3RhdGljIHZvaWQgKm1jc2gsKm1jc2w7CisKIHN0YXRpYyB2b2lkCiBzZ2NfbWFya19jb25zKG9i
amVjdCB4KSB7CiAgIAogICBjc19jaGVjayh4KTsKICAgCisjaWYgQ1NUQUNLX0RJUkVDVElPTiA9
PSAtMQorICBpZiAobWNzbD4odm9pZCAqKSZ4KQorI2Vsc2UKKyAgaWYgKG1jc2w8KHZvaWQgKikm
eCkKKyNlbmRpZgorICAgIG1jc2w9Jng7CisKICAgLyogIHggaXMgYWxyZWFkeSBtYXJrZWQuICAq
LwogICAKICBCRUdJTjoKQEAgLTg5LDIxICs5OCwyMiBAQAogICBnb3RvIE1BUktfQ0RSOwogICAK
ICBNQVJLX0NBUjoKLSAgaWYgKHgtPmMuY19jYXItPmMubSA9PTApIHsKKyAgaWYgKCFpc19tYXJr
ZWRfb3JfZnJlZSh4LT5jLmNfY2FyKSkgewogICAgIGlmICh0eXBlX29mKHgtPmMuY19jYXIpID09
IHRfY29ucykgewotICAgICAgeC0+Yy5jX2Nhci0+Yy5tID0gVFJVRTsKKyAgICAgIG1hcmsoeC0+
Yy5jX2Nhcik7CiAgICAgICBzZ2NfbWFya19jb25zKHgtPmMuY19jYXIpOwogICAgIH0gZWxzZQog
ICAgICAgc2djX21hcmtfb2JqZWN0MSh4LT5jLmNfY2FyKTt9CiAgTUFSS19DRFI6ICAKICNlbmRp
ZgotICB4ID0geC0+Yy5jX2NkcjsKKyAgaWYgKGlzX2ltbV9maXhudW0oeC0+Yy5jX2NkcikpIHJl
dHVybjsKKyAgeCA9IFNjZHIoeCk7CiAgIElGX1dSSVRBQkxFKHgsIGdvdG8gV1JJVEFCTEVfQ0RS
Oyk7CiAgIHJldHVybjsKICBXUklUQUJMRV9DRFI6Ci0gIGlmICh4LT5kLm0pIHJldHVybjsKKyAg
aWYgKGlzX21hcmtlZF9vcl9mcmVlKHgpKSByZXR1cm47CiAgIGlmICh0eXBlX29mKHgpID09IHRf
Y29ucykgewotICAgIHgtPmMubSA9IFRSVUU7CisgICAgbWFyayh4KTsKICAgICBnb3RvIEJFR0lO
OwogICB9CiAgIHNnY19tYXJrX29iamVjdDEoeCk7CkBAIC0xMzEsNiArMTQxLDEzIEBACiAgIGNo
YXIgKmNwOwogICAKICAgY3NfY2hlY2soeCk7CisjaWYgQ1NUQUNLX0RJUkVDVElPTiA9PSAtMQor
ICBpZiAobWNzbD4odm9pZCAqKSZjcCkKKyNlbHNlCisgIGlmIChtY3NsPCh2b2lkICopJmNwKQor
I2VuZGlmCisgICAgbWNzbD0mY3A7CisKICBCRUdJTjoKICNpZmRlZiBTREVCVUcKICAgaWYgKHgg
PT0gT0JKTlVMTCB8fCAhT05fV1JJVEFCTEVfUEFHRSh4KSkKQEAgLTEzOSw3ICsxNTYsNyBAQAog
ICBqb2UoKTsKICBPSzoKICNlbmRpZiAKLSAgaWYgKHgtPmQubSkKKyAgaWYgKGlzX21hcmtlZF9v
cl9mcmVlKHgpKQogICAgIHJldHVybjsKICNpZmRlZiBTREVCVUcKICAgaWYoeD09c2RlYnVnKSBq
b2UxKCk7CkBAIC0xNTEsNyArMTY4LDcgQEAKICAgICAgYWx3YXlzIGZhaWwgb24geCB0aGF0IHNh
dGlzZnkgKE5VTExfT1JfT05fQ19TVEFDSyh4KSkKICAgKi8KICAgCi0gIHgtPmQubSA9IFRSVUU7
CisgIG1hcmsoeCk7CiAgIHN3aXRjaCAodHlwZV9vZih4KSkgewogICBjYXNlIHRfZml4bnVtOgog
ICAgIGJyZWFrOwpAQCAtMTU5LDcgKzE3Niw3IEBACiAgIGNhc2UgdF9yYXRpbzoKICAgICBzZ2Nf
bWFya19vYmplY3QoeC0+cmF0LnJhdF9udW0pOwogICAgIHggPSB4LT5yYXQucmF0X2RlbjsKLSAg
ICBJRl9XUklUQUJMRSh4LGlmKHgtPmQubT09MCkgZ290byBCRUdJTik7CisgICAgSUZfV1JJVEFC
TEUoeCxpZighaXNfbWFya2VkX29yX2ZyZWUoeCkpIGdvdG8gQkVHSU4pOwogICAgIAogICBjYXNl
IHRfc2hvcnRmbG9hdDoKICAgICBicmVhazsKQEAgLTE3MCwxNCArMTg3LDE0IEBACiAgIGNhc2Ug
dF9jb21wbGV4OgogICAgIHNnY19tYXJrX29iamVjdCh4LT5jbXAuY21wX2ltYWcpOwogICAgIHgg
PSB4LT5jbXAuY21wX3JlYWw7Ci0gICAgSUZfV1JJVEFCTEUoeCxpZih4LT5kLm09PTApIGdvdG8g
QkVHSU4pOworICAgIElGX1dSSVRBQkxFKHgsaWYoIWlzX21hcmtlZF9vcl9mcmVlKHgpKSBnb3Rv
IEJFR0lOKTsKICAgICAKICAgY2FzZSB0X2NoYXJhY3RlcjoKICAgICBicmVhazsKICAgICAKICAg
Y2FzZSB0X3N5bWJvbDoKLSAgICBJRl9XUklUQUJMRSh4LT5zLnNfcGxpc3QsaWYoeC0+cy5zX3Bs
aXN0LT5kLm09PTApCi0gICAge3gtPnMuc19wbGlzdC0+ZC5tPVRSVUU7CisgICAgSUZfV1JJVEFC
TEUoeC0+cy5zX3BsaXN0LGlmKCFpc19tYXJrZWRfb3JfZnJlZSh4LT5zLnNfcGxpc3QpKQorICAg
IHttYXJrKHgtPnMuc19wbGlzdCk7CiAgICAgc2djX21hcmtfY29ucyh4LT5zLnNfcGxpc3QpO30p
OwogICAgIHNnY19tYXJrX29iamVjdCh4LT5zLnNfZ2ZkZWYpOwogICAgIHNnY19tYXJrX29iamVj
dCh4LT5zLnNfZGJpbmQpOwpAQCAtNTA4LDcgKzUyNSwyNCBAQAogICAgIH0KICAgICBicmVhazsK
ICAgICAKKyAgICAvKkZJWE1FOiBjZW50cmFsaXplIHRoaXMqLworICAgIC8qRklYTUU6IFNHQ19D
T05UQkxPQ0tfUD8gKi8KKyNkZWZpbmUgU0dDX01BUktfQ1AoYV8sYl8pIHtpbnQgX3Q9KGJfKTtp
ZiAoaW5oZWFwKChhXykpKSB7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdo
YXRfdG9fY29sbGVjdCA9PSB0X2NvbnRpZ3VvdXMpIG1hcmtfY29udGJsb2NrKCh2b2lkICopKGFf
KSxfdCk7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChTR0NfUkVMQkxP
Q0tfUCgoYV8pKSkgKGFfKT0odm9pZCAqKWNvcHlfcmVsYmxvY2soKHZvaWQgKikoYV8pLF90KTt9
CisKKyNkZWZpbmUgU0dDX01BUktfTVAoYV8pIHtpZiAoKGFfKS0+X21wX2QpIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNHQ19NQVJLX0NQKChhXyktPl9tcF9kLChhXyktPl9tcF9hbGxv
YypNUF9MSU1CX1NJWkUpO30KKwogICBjYXNlIHRfcmFuZG9tOgorICAgIGlmICgoaW50KXdoYXRf
dG9fY29sbGVjdCA+PSAoaW50KXRfY29udGlndW91cykgeworICAgICAgU0dDX01BUktfTVAoeC0+
cm5kLnJuZF9zdGF0ZS5fbXBfc2VlZCk7CisgICAgICBpZiAoeC0+cm5kLnJuZF9zdGF0ZS5fbXBf
YWxnZGF0YS5fbXBfbGMpIHsKKwlTR0NfTUFSS19NUCh4LT5ybmQucm5kX3N0YXRlLl9tcF9hbGdk
YXRhLl9tcF9sYy0+X21wX2EpOworCVNHQ19NQVJLX01QKHgtPnJuZC5ybmRfc3RhdGUuX21wX2Fs
Z2RhdGEuX21wX2xjLT5fbXBfbSk7CisJU0dDX01BUktfQ1AoeC0+cm5kLnJuZF9zdGF0ZS5fbXBf
YWxnZGF0YS5fbXBfbGMsc2l6ZW9mKCp4LT5ybmQucm5kX3N0YXRlLl9tcF9hbGdkYXRhLl9tcF9s
YykpOworICAgICAgfQorICAgIH0KICAgICBicmVhazsKICAgICAKICAgY2FzZSB0X3JlYWR0YWJs
ZToKQEAgLTU3Niw2ICs2MTAsNyBAQAogICAgIHNnY19tYXJrX29iamVjdCh4LT5jYy5jY19uYW1l
KTsKICAgICBzZ2NfbWFya19vYmplY3QoeC0+Y2MuY2NfZW52KTsKICAgICBzZ2NfbWFya19vYmpl
Y3QoeC0+Y2MuY2NfZGF0YSk7CisgICAgaWYgKHgtPmNjLmNjX3R1cmJvIT1OVUxMKSBzZ2NfbWFy
a19vYmplY3QoKih4LT5jYy5jY190dXJiby0xKSk7CiAgICAgaWYgKHdoYXRfdG9fY29sbGVjdCA9
PSB0X2NvbnRpZ3VvdXMpIHsKICAgICAgIGlmICh4LT5jYy5jY190dXJibyAhPSBOVUxMKQogCW1h
cmtfY29udGJsb2NrKChjaGFyICopKHgtPmNjLmNjX3R1cmJvLTEpLApAQCAtNTk5LDcgKzYzNCw3
IEBACiBzdGF0aWMgdm9pZAogc2djX21hcmtfc3RhY2tfY2FyZWZ1bGx5KHZvaWQgKnRvcHYsIHZv
aWQgKmJvdHRvbXYsIGludCBvZmZzZXQpIHsKICAgCi0gIGxvbmcgbSxwYWdlb2Zmc2V0OworICBs
b25nIHBhZ2VvZmZzZXQ7CiAgIHVuc2lnbmVkIGxvbmcgcDsKICAgb2JqZWN0IHg7CiAgIHN0cnVj
dCB0eXBlbWFuYWdlciAqdG07CkBAIC02MjgsMTQgKzY2MywxNSBAQAogCSAoKHBhZ2VvZmZzZXQ9
KChjaGFyICopKmogLSBwYWdldG9jaGFyKHApKSkgJQogCSAgdG0tPnRtX3NpemUpKTsKICAgICAg
IGlmICgocGFnZW9mZnNldCA8ICAodG0tPnRtX3NpemUgKiB0bS0+dG1fbnBwYWdlKSkKLQkgICYm
IChtPXgtPmQubSkgIT0gRlJFRSkgewotCWlmIChtPT1UUlVFKSBjb250aW51ZTsKLQlpZiAobSE9
MCkgewotCSAgZnByaW50ZihzdGRvdXQsCi0JCSAgIioqYmFkIHZhbHVlICVsZCBvZiBkLm0gaW4g
Z2JjIHBhZ2UgJWxkIHNraXBwaW5nIG1hcmsqKiIKLQkJICAsbSxwKTtmZmx1c2goc3Rkb3V0KTsK
LQkgIGNvbnRpbnVlOwotCX0KKwkgICYmICFpc19tYXJrZWRfb3JfZnJlZSh4KSkgeworLyogCSAg
JiYgKG09eC0+ZC5tKSAhPSBGUkVFKSB7ICovCisvKiAJaWYgKG09PVRSVUUpIGNvbnRpbnVlOyAq
LworLyogCWlmIChtIT0wKSB7ICovCisvKiAJICBmcHJpbnRmKHN0ZG91dCwgKi8KKy8qIAkJICAi
KipiYWQgdmFsdWUgJWxkIG9mIGQubSBpbiBnYmMgcGFnZSAlbGQgc2tpcHBpbmcgbWFyayoqIiAq
LworLyogCQkgICxtLHApO2ZmbHVzaChzdGRvdXQpOyAqLworLyogCSAgY29udGludWU7ICovCisv
KiAJfSAqLwogCXNnY19tYXJrX29iamVjdCh4KTsKICAgICAgIH0KICAgICB9CkBAIC02NzMsOCAr
NzA5LDggQEAKIAkgIG9iamVjdCB4ID0gKG9iamVjdCkgcDsgCiAJICBpZiAoU0dDX09SX00oeCkp
IAogCSAgICBjb250aW51ZTsKLQkgIGlmICh4LT5kLnQ9PXRfY29ucykgewotCSAgICB4LT5kLm0g
PSBUUlVFOyAKKwkgIGlmICh0eXBlX29mKHgpPT10X2NvbnMgLyogeC0+ZC50PT10X2NvbnMgKi8p
IHsKKwkgICAgbWFyayh4KTsgCiAJICAgIHNnY19tYXJrX2NvbnMoeCk7CiAJICB9IGVsc2UKIAkg
ICAgc2djX21hcmtfb2JqZWN0MSh4KTsKQEAgLTc2NCw4ICs4MDAsOCBAQAogICBTVEFUSUMgb2Jq
ZWN0IGY7CiAgIGludCBzaXplOwogICAKLSAgQ25pbC0+cy5tID0gRkFMU0U7Ci0gIEN0LT5zLm0g
PSBGQUxTRTsKKyAgdW5tYXJrKENuaWwpOworICB1bm1hcmsoQ3QpOwogICAKICNpZmRlZiBERUJV
RwogICBpZiAoZGVidWcpCkBAIC04MDgsMjAgKzg0NCwyMSBAQAogICAgICAgZm9yIChqID0gdG0t
PnRtX25wcGFnZTsgLS1qID49IDA7ICBwICs9IHNpemUpIHsKIAl4ID0gKG9iamVjdClwOwogCQot
CWlmICh4LT5kLm0gPT0gRlJFRSkKKwlpZiAoaXNfZnJlZSh4KSkKIAkgIGNvbnRpbnVlOwotCWVs
c2UgaWYgKHgtPmQubSkgewotCSAgeC0+ZC5tID0gRkFMU0U7CisJZWxzZSBpZiAoaXNfbWFya2Vk
KHgpKSB7CisJICB1bm1hcmsoeCk7CiAJICBjb250aW51ZTsKIAl9Ci0JaWYoeC0+ZC5zID09IFNH
Q19OT1JNQUwpCisJaWYoIWlzX2NvbnMoeCkgJiYgeC0+ZC5zID09IFNHQ19OT1JNQUwpCiAJICBj
b250aW51ZTsKIAkKIAkvKiBpdCBpcyBvayB0byBmcmVlIHggKi8KIAkKICNpZmRlZiBPTERfRElT
UExBQ0UKIAkvKiBvbGRfZGlzcGxhY2U6IGZyb20gbWlnaHQgYmUgZnJlZSwgdG8gbm90ICovCi0J
aWYoeC0+ZC50ID49dF9hcnJheSAmJiB4LT5kLnQgPD0gdF9iaXR2ZWN0b3IpIHsKKy8qIAlpZih4
LT5kLnQgPj10X2FycmF5ICYmIHgtPmQudCA8PSB0X2JpdHZlY3RvcikgeyAqLworCWlmKHR5cGVf
b2YoeCkgPj10X2FycmF5ICYmIHR5cGVfb2YoeCkgPD0gdF9iaXR2ZWN0b3IpIHsKIAkgIC8qCQkJ
Y2FzZSB0X2FycmF5OgogCQkJCWNhc2UgdF92ZWN0b3I6CiAJCQkJY2FzZSB0X3N0cmluZzoKQEAg
LTg0MSwxMyArODc4LDEzIEBACiAJfQogI2VuZGlmIC8qIE9MRF9ESVNQTEFDRSAqLwogI2lmZGVm
IEdNUF9VU0VfTUFMTE9DCQkJCi0JaWYgKHgtPmQudCA9PSB0X2JpZ251bSkgCisJaWYgKHR5cGVf
b2YoeCkgPT0gdF9iaWdudW0gLyogeC0+ZC50ID09IHRfYmlnbnVtICovKSAKIAkgIG1wel9jbGVh
cihNUCh4KSk7CiAjZW5kaWYKIAkKIAlTRVRfTElOSyh4LGYpOwotCXgtPmQubSA9IEZSRUU7Ci0J
eC0+ZC5zID0gKGludClTR0NfUkVDRU5UOworCW1ha2VfZnJlZSh4KTsKKwlpZiAoIWlzX2NvbnMo
eCkpIHgtPmQucyA9IChpbnQpU0dDX1JFQ0VOVDsKIAlmID0geDsKIAlrKys7CiAgICAgICB9CkBA
IC04NTcsNyArODk0LDcgQEAKICAgICBlbHNlIC8qbm9uIHNnY19wYWdlICovCiAgICAgICBmb3Ig
KGogPSB0bS0+dG1fbnBwYWdlOyAtLWogPj0gMDsgIHAgKz0gc2l6ZSkgewogCXggPSAob2JqZWN0
KXA7Ci0JaWYgKHgtPmQubSA9PSBUUlVFKSB4LT5kLm09RkFMU0U7CisJaWYgKGlzX21hcmtlZCh4
KSAmJiAhaXNfZnJlZSh4KSkge3VubWFyayh4KTt9CiAgICAgICB9CiAgICAgCiAgIH0KQEAgLTEy
MDEsNyArMTIzOCw3IEBACiAjZGVmaW5lIFdTR0ModG0pICh7bG9uZyBfdD1NTUFYKE1NSU4odG0t
PnRtX29wdF9tYXhwYWdlLHRtLT50bV9ucGFnZSksdG0tPnRtX3NnYyk7X3Q7fSkKIC8qIElmIG9w
dF9tYXhwYWdlIGlzIHNldCwgYWRkIGZ1bGwgcGFnZXMgdG8gdGhlIHNnYyBzZXQgaWYgbmVlZGVk
CiAgICB0b28uIDIwMDQwODA0IENNKi8KLSNkZWZpbmUgRlNHQyh0bSkgKHRtLT50bV9vcHRfbWF4
cGFnZSA/IDAgOiB0bS0+dG1fc2djX21pbmZyZWUpCisjZGVmaW5lIEZTR0ModG0pICh0bS0+dG1f
dHlwZT09dF9jb25zID8gdG0tPnRtX25wcGFnZSA6ICh0bS0+dG1fb3B0X21heHBhZ2UgPyAwIDog
dG0tPnRtX3NnY19taW5mcmVlKSkKIAogaW50CiBzZ2Nfc3RhcnQodm9pZCkgewpAQCAtMTQ2Mywx
NyArMTUwMCwxNyBAQAogICAgICAgd2hpbGUgKGYhPTApIHsKIAluZXh0PU9CSl9MSU5LKGYpOwog
I2lmZGVmIFNERUJVRwkgICAgIAotCWlmIChmLT5kLm0hPUZSRUUpCisJaWYgKCFpc19mcmVlKGYp
KQogCSAgcHJpbnRmKCJOb3QgRlJFRSBpbiBmcmVlbGlzdCBmPSVkIixmKTsKICNlbmRpZgogCWlm
IChPTl9TR0NfUEFHRShmKSkgewogCSAgU0VUX0xJTksoZix4KTsKLQkgIGYtPmQucyA9IFNHQ19S
RUNFTlQ7CisgCSAgaWYgKCFpc19jb25zKGYpKSBmLT5kLnMgPSBTR0NfUkVDRU5UOwogCSAgeD1m
OwogCSAgY291bnQrKzsKIAl9IGVsc2UgewogCSAgU0VUX0xJTksoZix5KTsKLQkgIGYtPmQucyA9
IFNHQ19OT1JNQUw7CisgCSAgaWYgKCFpc19jb25zKGYpKSBmLT5kLnMgPSBTR0NfTk9STUFMOyAK
IAkgIHk9ZjsKIAl9CiAJZj1uZXh0OwpAQCAtMTU4MCw3ICsxNjE3LDcgQEAKIAkgICAgaWYgKHR5
cGVfbWFwW2ldPT10ICYmIChzZ2NfdHlwZV9tYXBbaV0gJiBTR0NfUEFHRV9GTEFHKSkKIAkgICAg
ICBmb3IgKHA9IHBhZ2V0b2NoYXIoaSksaiA9IHRtLT50bV9ucHBhZ2U7CiAJCSAgIGogPiAwOyAt
LWosIHAgKz0gdG0tPnRtX3NpemUpCi0JCSgob2JqZWN0KSBwKS0+ZC5zID0gU0dDX05PUk1BTDsK
KwkJaWYgKCFpc19jb25zKChvYmplY3QpcCkpICAoKG9iamVjdCkgcCktPmQucyA9IFNHQ19OT1JN
QUw7CiAJfQogICAgICAgfQogICAgIH0KQEAgLTE2NTksNyArMTY5Niw3IEBACiAgIElOU1RBTExf
TVBST1RFQ1RfSEFORExFUjsKICNlbmRpZgogCi0gIHNlZ21lbnRhdGlvbl9jYXRjaGVyKDApOwor
ICBzZWdtZW50YXRpb25fY2F0Y2hlcihzaWcsY29kZSxzY3AsYWRkcik7CiAKIH0KIApJbmRleDog
by9zeW1ib2wuZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vc3ltYm9s
LmQsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOC42LjQKZGlmZiAtdSAtcjEuOC42LjQgc3ltYm9s
LmQKLS0tIG8vc3ltYm9sLmQJMjAgTWFyIDIwMDQgMDI6NDg6MzAgLTAwMDAJMS44LjYuNAorKysg
by9zeW1ib2wuZAk2IEp1biAyMDA1IDIxOjUwOjAzIC0wMDAwCkBAIC02Myw2ICs2Myw3IEBACiAJ
CWZvciAoaSA9IDA7ICBpIDwgeC0+cy5zX2ZpbGxwOyAgaSsrKQogCQkJeC0+cy5zX3NlbGZbaV0g
PSBzdC0+c3Quc3Rfc2VsZltpXTsKIAl9CisJeC0+cy5zX2hhc2ggPSBpaGFzaF9lcXVhbDEoeCww
KTsKIAlFTkRfTk9fSU5URVJSVVBUO30JCiAJcmV0dXJuKHZzX3BvcCk7CiB9CkBAIC01MDUsNyAr
NTA2LDcgQEAKIAkgIGJpZz10aGlzX2dlbnN5bV9jb3VudGVyOwogCSAgc2lnbj1CSUdfU0lHTihi
aWcpOwogCSAgc2l6ZSA9IG1wel9zaXplaW5iYXNlKE1QKGJpZyksMTApKzIrKHNpZ248MD8gMSA6
IDApOwotCSAgaWYgKCEocD1hbGxvY2Eoc2l6ZSkpKQorCSAgaWYgKCEocD1aQUxMT0NBKHNpemUp
KSkKIAkgICAgRkVlcnJvcigiQ2Fubm90IGFsbG9jYSBnZW5zeW0gbmFtZSIsIDApOwogCSAgbXB6
X2dldF9zdHIocCwxMCxNUChiaWcpKTsKIAkgIGo9c2l6ZS01OwpAQCAtNTE0LDkgKzUxNSw5IEBA
CiAJICBxPXArajsKIAkgIGJyZWFrOwogCWNhc2UgdF9maXhudW06Ci0JICBmb3IgKHNpemU9MSxm
PXRoaXNfZ2Vuc3ltX2NvdW50ZXItPkZJWC5GSVhWQUw7ZjtmLz0xMCxzaXplKyspOwotCSAgcT1w
PWFsbG9jYShzaXplKzUpOwotCSAgaWYgKChqPXNucHJpbnRmKHAsc2l6ZSs1LCIlZCIsKGludCl0
aGlzX2dlbnN5bV9jb3VudGVyLT5GSVguRklYVkFMKSk8PTApCisJICBmb3IgKHNpemU9MSxmPWZp
eCh0aGlzX2dlbnN5bV9jb3VudGVyKTtmO2YvPTEwLHNpemUrKyk7CisJICBxPXA9WkFMTE9DQShz
aXplKzUpOworCSAgaWYgKChqPXNucHJpbnRmKHAsc2l6ZSs1LCIlZCIsKGludClmaXgodGhpc19n
ZW5zeW1fY291bnRlcikpKTw9MCkKIAkgICAgRkVlcnJvcigiQ2Fubm90IHdyaXRlIGdlbnN5bSBj
b3VudGVyIiwwKTsKIAkgIHE9cCtqOwogCSAgYnJlYWs7CkluZGV4OiBvL3VzaWcuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28vdXNpZy5jLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjEwLjQuMS40LjEKZGlmZiAtdSAtcjEuMTAuNC4xLjQuMSB1c2lnLmMKLS0tIG8vdXNp
Zy5jCTI1IEp1biAyMDA0IDIyOjQ0OjE2IC0wMDAwCTEuMTAuNC4xLjQuMQorKysgby91c2lnLmMJ
NiBKdW4gMjAwNSAyMTo1MDowMyAtMDAwMApAQCAtNjEsMTMgKzYxLDEzIEBACiAgICAgc3RydWN0
IHNpZ2FjdGlvbiBhY3Rpb247CiAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBoYW5kbGVyOwogLyog
ICAgYWN0aW9uLnNhX2ZsYWdzID0gIFNBX1JFU1RBUlQgfCAoKHNpZ25vID09IFNJR1NFR1YgfHwg
c2lnbm8gPT0gU0lHQlVTKSA/IFNWX09OU1RBQ0sgOiAwKSAqLwotICAgYWN0aW9uLnNhX2ZsYWdz
ID0gU0FfUkVTVEFSVCB8ICgoc2lnbm8gPT0gU0lHU0VHViB8fCBzaWdubyA9PSBTSUdCVVMpID8g
U1ZfT05TVEFDSyA6IDApICAKKyAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQgfCAoKHNp
Z25vID09IFNJR1NFR1YgfHwgc2lnbm8gPT0gU0lHQlVTKSA/IFNBX09OU1RBQ0sgOiAwKSAgCiAj
aWZkZWYgU0FfU0lHSU5GTwogICAgIHwgU0FfU0lHSU5GTwogI2VuZGlmICAgICAgCiAgICAgICA7
CiAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKLSAgICBzaWdhZGRzZXQoJmFjdGlv
bi5zYV9tYXNrLHNpZ25vKTsKKy8qICAgICBzaWdhZGRzZXQoJmFjdGlvbi5zYV9tYXNrLHNpZ25v
KTsgKi8KICAgICBzaWdhY3Rpb24oc2lnbm8sJmFjdGlvbiwwKTsKICNlbHNlCiAjaWZkZWYgSEFW
RV9TSUdWRUMKSW5kZXg6IG8vdXNpZzIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9n
Y2wvZ2NsL28vdXNpZzIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMS40LjEuNC4yCmRpZmYg
LXUgLXIxLjExLjQuMS40LjIgdXNpZzIuYwotLS0gby91c2lnMi5jCTE0IFNlcCAyMDAzIDAyOjMw
OjQ1IC0wMDAwCTEuMTEuNC4xLjQuMgorKysgby91c2lnMi5jCTYgSnVuIDIwMDUgMjE6NTA6MDMg
LTAwMDAKQEAgLTIyOSwxMSArMjI5LDExIEBACiAJICAgICAgYWQtPnRtX25mcmVlIC0tOwogCSAg
ICAgIGJjb3B5KGJlZyAsJihwLT5idWZbaV0pLCBhbXQpOwogCSAgICAgIGJ6ZXJvKGJlZys4LGFt
dC04KTsKLQkgICAgICB4LT5kLm0gPSAwOworCSAgICAgIHgtPmQuZiA9IHgtPmQubSA9IDA7CiAJ
ICAgICAgaWYgKHAtPmZyZWUyW2ldKQogCQl7IHggPSAob2JqZWN0KSBwLT5mcmVlMltpXTsKIAkJ
ICBiZWcgPSAoY2hhciAqKXg7Ci0JCSAgeC0+ZC5tID0gMDsKKwkJICB4LT5kLmYgPSB4LT5kLm0g
PSAwOwogCQkgIGJ6ZXJvKGJlZys4LGFtdC04KTsKIAkJICBTUzEoYWQtPnRtX2ZyZWUsT0JKX0xJ
TksocC0+ZnJlZTJbaV0pKTsKIAkJICBhZC0+dG1fbmZyZWUgLS07CkBAIC0yODUsMTIgKzI4NSwx
MiBAQAogCSAgICAgIG9iamVjdCB4ID0gKG9iamVjdCliZWc7CiAJICAgICAgaW50IGFtdCA9IGFk
LT50bV9zaXplOwogCSAgICAgIFJTMShwLT5mcmVlMltpXSwocC0+ZnJlZTFbaV0pKTsKLQkgICAg
ICBpZiAoeC0+ZC5tKSBlcnJvcigic2hvdWxkIG5vdCBiZSBmcmVlIik7CisJICAgICAgaWYgKHgt
PmQuZiB8fCB4LT5kLm0pIGVycm9yKCJzaG91bGQgbm90IGJlIGZyZWUiKTsKIAkgICAgICBiY29w
eSgmKHAtPmJ1ZltpXSksYmVnLCBhbXQpOwogCSAgICAgIGlmIChwLT5mcmVlMltpXSkKIAkJeyB4
ID0gKG9iamVjdCkgcC0+ZnJlZTJbaV07Ci0JCSAgaWYgKHgtPmQubSkgZXJyb3IoInNob3VsZCBu
b3QgYmUgZnJlZSIpOwotCQkgIHgtPmQubSA9IEZSRUU7CisJCSAgaWYgKHgtPmQuZiB8fCB4LT5k
Lm0pIGVycm9yKCJzaG91bGQgbm90IGJlIGZyZWUiKTsKKwkJICB4LT5kLmYgPSAxOwogCQkgIEZf
TElOSyhGX0xJTksoYWQtPnRtX2ZyZWUpKSA9IChsb25nICljdXJyZW50X2ZsOwogCQkgIGFkLT50
bV9uZnJlZSArPSAyOwogCQl9CkluZGV4OiBvL3V0aWxzLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2c3Jvb3QvZ2NsL2djbC9vL3V0aWxzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTAKZGlm
ZiAtdSAtcjEuMTAgdXRpbHMuYwotLS0gby91dGlscy5jCTE3IEZlYiAyMDAzIDE2OjUwOjIxIC0w
MDAwCTEuMTAKKysrIG8vdXRpbHMuYwk2IEp1biAyMDA1IDIxOjUwOjAzIC0wMDAwCkBAIC0xODQs
NyArMTg0LDcgQEAKIAogb2JqZWN0CiBJY2hlY2tfb25lX3R5cGUob2JqZWN0IHgsIGVudW0gdHlw
ZSB0KQoteyBpZiAoeC0+ZC50ICE9IHQpCit7IGlmICh0eXBlX29mKHgpICE9IHQpCiAgICAgeyBy
ZXR1cm4gQ0VlcnJvcigiRXhwZWN0ZWQgYSB+YSAiLCJTdXBwbHkgcmlnaHQgdHlwZSIsMSx0eXBl
X25hbWUodCksQ25pbCxDbmlsLENuaWwpOwogICAgIH0KICAgcmV0dXJuIHg7CkluZGV4OiBvL3hk
cmZ1bnMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2wvZ2NsL28veGRyZnVucy5j
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQuMi4xLjQuMgpkaWZmIC11IC1yMS40LjIuMS40LjIg
eGRyZnVucy5jCi0tLSBvL3hkcmZ1bnMuYwk2IE5vdiAyMDAzIDE2OjE2OjU0IC0wMDAwCTEuNC4y
LjEuNC4yCisrKyBvL3hkcmZ1bnMuYwk2IEp1biAyMDA1IDIxOjUwOjAzIC0wMDAwCkBAIC00Nyw3
ICs0Nyw4IEBACiAKICAgc3dpdGNoICh0eXBlX29mKGVsdCkpIHsKICAgY2FzZSB0X2ZpeG51bToK
LSAgICBpZigheGRyX2xvbmcoeGRycCwmZml4KGVsdCkpKSBnb3RvIGVycm9yOworICAgIHtmaXhu
dW0gZj1maXgoZWx0KTsKKyAgICBpZigheGRyX2xvbmcoeGRycCwmZikpIGdvdG8gZXJyb3I7fQog
ICAgIGJyZWFrOwogICBjYXNlIHRfbG9uZ2Zsb2F0OgogICAgIGlmKCF4ZHJfZG91YmxlKHhkcnAs
JmxmKGVsdCkpKSBnb3RvIGVycm9yOwpJbmRleDogcGNsL2RlZnN5cy5saXNwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnNyb290L2djbC9nY2wvcGNsL2RlZnN5cy5saXNwLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjMKZGlmZiAtdSAtcjEuMyBkZWZzeXMubGlzcAotLS0gcGNsL2RlZnN5cy5saXNw
CTI2IEZlYiAyMDAzIDIyOjIxOjM4IC0wMDAwCTEuMworKysgcGNsL2RlZnN5cy5saXNwCTYgSnVu
IDIwMDUgMjE6NTA6MDMgLTAwMDAKQEAgLTU0Nyw3ICs1NDcsNyBAQAogCQkgKG9yIHByaW50LW9u
bHkgKGxvYWQgcGF0aG5hbWUpKSkJICAgICAgIAogCSAgICAgICAobG9hZC1tb2R1bGUgKG0pCiAJ
CSAobGV0KiAoKG5hbWUgKG1vZHVsZS1uYW1lIG0pKQotCQkJKCpsb2FkLXZlcmJvc2UqIG5pbCkK
KwkJCSgqbG9hZC12ZXJib3NlKiB0KQogCQkJKGJpbmFyeSAobWFrZS1iaW5hcnktcGF0aG5hbWUg
bSkpKQogCQkgICAobG9hZC1iaW5hcnkgbmFtZSBiaW5hcnkpKSkKIAkgICAgICAgKGNvbXBpbGUt
bW9kdWxlIChtKQpJbmRleDogdW5peHBvcnQvbWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2c3Jvb3QvZ2NsL2djbC91bml4cG9ydC9tYWtlZmlsZSx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS40Mi4yLjEuMi4xLjIuMTkuNC4xLjguMQpkaWZmIC11IC1yMS40Mi4yLjEuMi4xLjIuMTkuNC4x
LjguMSBtYWtlZmlsZQotLS0gdW5peHBvcnQvbWFrZWZpbGUJMTUgSmFuIDIwMDUgMTY6MzQ6NDUg
LTAwMDAJMS40Mi4yLjEuMi4xLjIuMTkuNC4xLjguMQorKysgdW5peHBvcnQvbWFrZWZpbGUJNiBK
dW4gMjAwNSAyMTo1MDowMyAtMDAwMApAQCAtMTc1LDcgKzE3NSw3IEBACiBjbGVhbjoKIAlybSAt
cmYgIHNhdmVkXyokKEVYRSkgcmF3XyokKEVYRSkgKi5vIGNvcmUgYS5vdXQgJChSU1lNKSBcCiAJ
CSQoTFNQRElSKS9hdXRvX25ldy5sc3AgZm9vICptYXhpbWEqIGluaXRfKi5sc3AgbGliKi5hIGdt
cCogYmZkKiAqLmxzcC50bXAgXAotCQlnYXpvbmsqLmxzcCBwbHQqaCAqX21hcCBzYXZlZF8qIGxp
YiogcmF3XyoKKwkJZ2F6b25rKi5sc3AgcGx0KmggKl9tYXAgc2F2ZWRfKiBsaWIqIHJhd18qIGdj
bC5zY3JpcHQKIAogLklOVEVSTUVESUFURTogaW5pdF9hbnNpX2djbC5sc3AudG1wIGluaXRfZ2Ns
LmxzcC50bXAgcmF3X2djbCByYXdfYW5zaV9nY2wKIC5QUkVDSU9VUzogaW5pdF9nY2wubHNwIGlu
aXRfYW5zaV9nY2wubHNwCg==


<address@hidden> writes:

> Camm,
> Did you send me the GCL 2.6.6 twc+ sources?  We occasionally find that emails 
> with large attachments get quarantined
> indefinitely.  If you've sent it already, my apologies, and would you try 
> resending, and Cc:-ing
> address@hidden  
> Thanks,
> David Hardin
> P.S.  I saw your note to Boyer regarding 2.7.0 and ACL2...any chance that the 
> compiler problem in 2.7.0 HEAD will be
> fixed in the near term so as to  support ACL2?

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]