GCC segfault on i686

Till Hofmann <[email protected]> Thu, 18 Aug 2016 12:10:49 +0200
Newsgroups gmane.comp.gnu.prolog.bugs
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------75FEE9681F67D3318494118F
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi all,

I'm currently trying to debug a GCC segfault that occurs when compiling
EnginePl/machine.c on i686 machines:

> make[1]: Entering directory '/home/till/rpmbuild/SOURCES/gprolog-1.4.4/=
src/EnginePl'
> gplc -c -C '-O3 -fomit-frame-pointer' machine.c
> machine.c: In function =E2=80=98Pl_M_Randomize=E2=80=99:
> machine.c:386:1: internal compiler error: Segmentation fault

It looks like this is related to using the ebx register; if I remove
'-ffixed-ebx' from the call to cc1, the segfault disappears.

Looking at the Changelog, it looks like there was a fix for some issue
related to using ebx in 1.3.1, but the error still occurs on i686.

To reproduce, you need to build gprolog on i686 with GCC 6.1. I could
reproduce this on multiple machines.

Some additional info:
gprolog version: 1.4.4
OS: Fedora 24 (also occurs on Fedora 25 and Fedora Rawhide)
$ gcc --version
gcc (GCC) 6.1.1 20160621 (Red Hat 6.1.1-3)
$ uname -a
Linux nc10 4.6.5-300.fc24.i686+PAE #1 SMP Thu Jul 28 01:34:46 UTC 2016
i686 i686 i386 GNU/Linux

I build with "./configure --with-c-flags=3D'-v -save-temps'", I've
attached the full output from make. I've also attached machine.i.

With older GCC versions (<6), the bug does not occur, so this might well
be a bug in GCC6.


Kind regards
Till

--------------75FEE9681F67D3318494118F
Content-Type: text/plain; charset=UTF-8;
 name="make.log"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="make.log"

Y2QgRW5naW5lUGw7IG1ha2UgY29uZmlnCm1ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSAn
L2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZVBs
JwpnY2MgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtdiAt
c2F2ZS10ZW1wcyAgLW8gcGxfY29uZmlnIHBsX2NvbmZpZy5jClVzaW5nIGJ1aWx0LWluIHNw
ZWNzLgpDT0xMRUNUX0dDQz1nY2MKQ09MTEVDVF9MVE9fV1JBUFBFUj0vdXNyL2xpYmV4ZWMv
Z2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2x0by13cmFwcGVyClRhcmdldDogaTY4Ni1y
ZWRoYXQtbGludXgKQ29uZmlndXJlZCB3aXRoOiAuLi9jb25maWd1cmUgLS1lbmFibGUtYm9v
dHN0cmFwIC0tZW5hYmxlLWxhbmd1YWdlcz1jLGMrKyxvYmpjLG9iai1jKyssZm9ydHJhbixh
ZGEsZ28sbHRvIC0tcHJlZml4PS91c3IgLS1tYW5kaXI9L3Vzci9zaGFyZS9tYW4gLS1pbmZv
ZGlyPS91c3Ivc2hhcmUvaW5mbyAtLXdpdGgtYnVndXJsPWh0dHA6Ly9idWd6aWxsYS5yZWRo
YXQuY29tL2J1Z3ppbGxhIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS10aHJlYWRzPXBvc2l4
IC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgLS1lbmFibGUtbXVsdGlsaWIgLS13aXRoLXN5
c3RlbS16bGliIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCAtLWRpc2FibGUtbGlidW53aW5kLWV4
Y2VwdGlvbnMgLS1lbmFibGUtZ251LXVuaXF1ZS1vYmplY3QgLS1lbmFibGUtbGlua2VyLWJ1
aWxkLWlkIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT1nbnUgLS1lbmFibGUtcGx1Z2luIC0t
ZW5hYmxlLWluaXRmaW5pLWFycmF5IC0tZGlzYWJsZS1saWJnY2ogLS13aXRoLWlzbCAtLWVu
YWJsZS1saWJtcHggLS1lbmFibGUtZ251LWluZGlyZWN0LWZ1bmN0aW9uIC0td2l0aC10dW5l
PWdlbmVyaWMgLS13aXRoLWFyY2g9aTY4NiAtLWJ1aWxkPWk2ODYtcmVkaGF0LWxpbnV4ClRo
cmVhZCBtb2RlbDogcG9zaXgKZ2NjIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQg
Ni4xLjEtMykgKEdDQykgCkNPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJv
JyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1v
JyAncGxfY29uZmlnJwogL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEu
MS9jYzEgLUUgLXF1aWV0IC12IHBsX2NvbmZpZy5jIC1tYXJjaD1wZW50aXVtcHJvIC1tMzIg
LWZuby1zdHJpY3QtYWxpYXNpbmcgLWZwY2gtcHJlcHJvY2VzcyAtbyBwbF9jb25maWcuaQpp
Z25vcmluZyBub25leGlzdGVudCBkaXJlY3RvcnkgIi91c3IvbGliL2djYy9pNjg2LXJlZGhh
dC1saW51eC82LjEuMS9pbmNsdWRlLWZpeGVkIgppZ25vcmluZyBub25leGlzdGVudCBkaXJl
Y3RvcnkgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8uLi8u
Li9pNjg2LXJlZGhhdC1saW51eC9pbmNsdWRlIgojaW5jbHVkZSAiLi4uIiBzZWFyY2ggc3Rh
cnRzIGhlcmU6CiNpbmNsdWRlIDwuLi4+IHNlYXJjaCBzdGFydHMgaGVyZToKIC91c3IvbGli
L2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlCiAvdXNyL2xvY2FsL2luY2x1
ZGUKIC91c3IvaW5jbHVkZQpFbmQgb2Ygc2VhcmNoIGxpc3QuCkNPTExFQ1RfR0NDX09QVElP
TlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAn
LXYnICctc2F2ZS10ZW1wcycgJy1vJyAncGxfY29uZmlnJwogL3Vzci9saWJleGVjL2djYy9p
Njg2LXJlZGhhdC1saW51eC82LjEuMS9jYzEgLWZwcmVwcm9jZXNzZWQgcGxfY29uZmlnLmkg
LXF1aWV0IC1kdW1wYmFzZSBwbF9jb25maWcuYyAtbWFyY2g9cGVudGl1bXBybyAtbTMyIC1h
dXhiYXNlIHBsX2NvbmZpZyAtdmVyc2lvbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtbyBwbF9j
b25maWcucwpHTlUgQzExIChHQ0MpIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQg
Ni4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4KQoJY29tcGlsZWQgYnkgR05VIEMgdmVyc2lv
biA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01QIHZlcnNpb24gNi4xLjAs
IE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlzbCB2ZXJzaW9uIDAu
MTQgb3IgMC4xMwp3YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24gNi4xLjAgZGlmZmVycyBm
cm9tIGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KR0dDIGhldXJpc3RpY3M6IC0tcGFyYW0gZ2dj
LW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIKR05VIEMx
MSAoR0NDKSB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChpNjg2
LXJlZGhhdC1saW51eCkKCWNvbXBpbGVkIGJ5IEdOVSBDIHZlcnNpb24gNi4xLjEgMjAxNjA2
MjEgKFJlZCBIYXQgNi4xLjEtMyksIEdNUCB2ZXJzaW9uIDYuMS4wLCBNUEZSIHZlcnNpb24g
My4xLjQsIE1QQyB2ZXJzaW9uIDEuMC4yLCBpc2wgdmVyc2lvbiAwLjE0IG9yIDAuMTMKd2Fy
bmluZzogR01QIGhlYWRlciB2ZXJzaW9uIDYuMS4wIGRpZmZlcnMgZnJvbSBsaWJyYXJ5IHZl
cnNpb24gNi4xLjEuCkdHQyBoZXVyaXN0aWNzOiAtLXBhcmFtIGdnYy1taW4tZXhwYW5kPTEw
MCAtLXBhcmFtIGdnYy1taW4taGVhcHNpemU9MTMxMDcyCkNvbXBpbGVyIGV4ZWN1dGFibGUg
Y2hlY2tzdW06IGFiY2ViMTM4YWY0M2E3OGMzNmMxYWFhMjI4ZjVmOTJhCkNPTExFQ1RfR0ND
X09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFz
aW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAncGxfY29uZmlnJwogYXMgLXYgLS0zMiAt
byBwbF9jb25maWcubyBwbF9jb25maWcucwpHTlUgYXNzZW1ibGVyIHZlcnNpb24gMi4yNi4x
IChpNjg2LXJlZGhhdC1saW51eCkgdXNpbmcgQkZEIHZlcnNpb24gdmVyc2lvbiAyLjI2LjEt
MS5mYzI0CkNPTVBJTEVSX1BBVEg9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51
eC82LjEuMS86L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vz
ci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC86L3Vzci9saWIvZ2NjL2k2ODYtcmVk
aGF0LWxpbnV4LzYuMS4xLzovdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvCkxJQlJB
UllfUEFUSD0vdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvOi91c3IvbGli
L2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8uLi86L2xpYi86L3Vzci9saWIv
CkNPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8t
c3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAncGxfY29uZmlnJwog
L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jb2xsZWN0MiAtcGx1
Z2luIC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvbGlibHRvX3Bs
dWdpbi5zbyAtcGx1Z2luLW9wdD0vdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4
LzYuMS4xL2x0by13cmFwcGVyIC1wbHVnaW4tb3B0PS1mcmVzb2x1dGlvbj1wbF9jb25maWcu
cmVzIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBhc3Mt
dGhyb3VnaD0tbGdjY19zIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxjIC1wbHVnaW4t
b3B0PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBhc3MtdGhyb3VnaD0tbGdj
Y19zIC0tYnVpbGQtaWQgLS1uby1hZGQtbmVlZGVkIC0tZWgtZnJhbWUtaGRyIC0taGFzaC1z
dHlsZT1nbnUgLW0gZWxmX2kzODYgLWR5bmFtaWMtbGlua2VyIC9saWIvbGQtbGludXguc28u
MiAtbyBwbF9jb25maWcgL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4u
Ly4uLy4uL2NydDEubyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4v
Li4vLi4vY3J0aS5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jcnRi
ZWdpbi5vIC1ML3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xIC1ML3Vzci9s
aWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uIHBsX2NvbmZpZy5vIC1s
Z2NjIC0tYXMtbmVlZGVkIC1sZ2NjX3MgLS1uby1hcy1uZWVkZWQgLWxjIC1sZ2NjIC0tYXMt
bmVlZGVkIC1sZ2NjX3MgLS1uby1hcy1uZWVkZWQgL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0
LWxpbnV4LzYuMS4xL2NydGVuZC5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82
LjEuMS8uLi8uLi8uLi9jcnRuLm8KQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRp
dW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBz
JyAnLW8nICdwbF9jb25maWcnCi4vcGxfY29uZmlnCgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQoJLS0tIEdOVSBQUk9MT0cgSU5TVEFMTEFUSU9OIC0tLQoJLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKR05VIFByb2xvZyB2ZXJzaW9uOiAxLjQuNCAoQXVn
IDE4IDIwMTYpCk9wZXJhdGluZyBzeXN0ZW0gIDogbGludXgtZ251ClByb2Nlc3NvciAgICAg
ICAgIDogaTY4NgpTaXplIG9mIGEgV0FNIHdvcmQ6IDMyIGJpdHMKQyBjb21waWxlciAgICAg
ICAgOiBnY2MKQyBmbGFncyAgICAgICAgICAgOiAtdiAtc2F2ZS10ZW1wcwpDIGZsYWdzIG1h
Y2hpbmUgICA6IC1tYXJjaD1wZW50aXVtcHJvIC1tMzIgLWZuby1zdHJpY3QtYWxpYXNpbmcK
QXNzZW1ibGVyICAgICAgICAgOiBhcwpBc3NlbWJsZXIgZmxhZ3MgICA6IC0tMzIKTG9hZGVy
IGZsYWdzICAgICAgOiAKTG9hZGVyIGxpYnJhcmllcyAgOiAtbG0KVXNlIGxpbmUgZWRpdG9y
ICAgOiBZZXMKVXNlIHBpcGVkIGNvbnN1bHQgOiBZZXMKVXNlIHNvY2tldHMgICAgICAgOiBZ
ZXMKVXNlIEZEIHNvbHZlciAgICAgOiBZZXMKVXNlIGZhc3QgY2FsbCAgICAgOiBZZXMKVXNl
IG1hY2hpbmUgcmVncy4gOiBZZXMKVXNlZCByZWdpc3RlcihzKSAgOiBlYnggKFRSKSAgCgoJ
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgooY2QgLi4vVG9wQ29tcDsgbWFrZSBn
cGxjKQptYWtlWzJdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVpbGQv
U09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9Ub3BDb21wJwpnY2MgLW1hcmNoPXBlbnRpdW1w
cm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtdiAtc2F2ZS10ZW1wcyAtbyBncGxjIHRv
cF9jb21wLmMgLWxtClVzaW5nIGJ1aWx0LWluIHNwZWNzLgpDT0xMRUNUX0dDQz1nY2MKQ09M
TEVDVF9MVE9fV1JBUFBFUj0vdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYu
MS4xL2x0by13cmFwcGVyClRhcmdldDogaTY4Ni1yZWRoYXQtbGludXgKQ29uZmlndXJlZCB3
aXRoOiAuLi9jb25maWd1cmUgLS1lbmFibGUtYm9vdHN0cmFwIC0tZW5hYmxlLWxhbmd1YWdl
cz1jLGMrKyxvYmpjLG9iai1jKyssZm9ydHJhbixhZGEsZ28sbHRvIC0tcHJlZml4PS91c3Ig
LS1tYW5kaXI9L3Vzci9zaGFyZS9tYW4gLS1pbmZvZGlyPS91c3Ivc2hhcmUvaW5mbyAtLXdp
dGgtYnVndXJsPWh0dHA6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhIC0tZW5hYmxl
LXNoYXJlZCAtLWVuYWJsZS10aHJlYWRzPXBvc2l4IC0tZW5hYmxlLWNoZWNraW5nPXJlbGVh
c2UgLS1lbmFibGUtbXVsdGlsaWIgLS13aXRoLXN5c3RlbS16bGliIC0tZW5hYmxlLV9fY3hh
X2F0ZXhpdCAtLWRpc2FibGUtbGlidW53aW5kLWV4Y2VwdGlvbnMgLS1lbmFibGUtZ251LXVu
aXF1ZS1vYmplY3QgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIC0td2l0aC1saW5rZXItaGFz
aC1zdHlsZT1nbnUgLS1lbmFibGUtcGx1Z2luIC0tZW5hYmxlLWluaXRmaW5pLWFycmF5IC0t
ZGlzYWJsZS1saWJnY2ogLS13aXRoLWlzbCAtLWVuYWJsZS1saWJtcHggLS1lbmFibGUtZ251
LWluZGlyZWN0LWZ1bmN0aW9uIC0td2l0aC10dW5lPWdlbmVyaWMgLS13aXRoLWFyY2g9aTY4
NiAtLWJ1aWxkPWk2ODYtcmVkaGF0LWxpbnV4ClRocmVhZCBtb2RlbDogcG9zaXgKZ2NjIHZl
cnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgKEdDQykgCkNPTExFQ1Rf
R0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFs
aWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAnZ3BsYycKIC91c3IvbGliZXhlYy9n
Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY2MxIC1FIC1xdWlldCAtdiB0b3BfY29tcC5j
IC1tYXJjaD1wZW50aXVtcHJvIC1tMzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZwY2gtcHJl
cHJvY2VzcyAtbyB0b3BfY29tcC5pCmlnbm9yaW5nIG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAi
L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUtZml4ZWQiCmln
bm9yaW5nIG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0
LWxpbnV4LzYuMS4xLy4uLy4uLy4uLy4uL2k2ODYtcmVkaGF0LWxpbnV4L2luY2x1ZGUiCiNp
bmNsdWRlICIuLi4iIHNlYXJjaCBzdGFydHMgaGVyZToKI2luY2x1ZGUgPC4uLj4gc2VhcmNo
IHN0YXJ0cyBoZXJlOgogL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2lu
Y2x1ZGUKIC91c3IvbG9jYWwvaW5jbHVkZQogL3Vzci9pbmNsdWRlCkVuZCBvZiBzZWFyY2gg
bGlzdC4KQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAn
LWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdncGxjJwog
L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jYzEgLWZwcmVwcm9j
ZXNzZWQgdG9wX2NvbXAuaSAtcXVpZXQgLWR1bXBiYXNlIHRvcF9jb21wLmMgLW1hcmNoPXBl
bnRpdW1wcm8gLW0zMiAtYXV4YmFzZSB0b3BfY29tcCAtdmVyc2lvbiAtZm5vLXN0cmljdC1h
bGlhc2luZyAtbyB0b3BfY29tcC5zCkdOVSBDMTEgKEdDQykgdmVyc2lvbiA2LjEuMSAyMDE2
MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRoYXQtbGludXgpCgljb21waWxlZCBi
eSBHTlUgQyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpLCBHTVAg
dmVyc2lvbiA2LjEuMCwgTVBGUiB2ZXJzaW9uIDMuMS40LCBNUEMgdmVyc2lvbiAxLjAuMiwg
aXNsIHZlcnNpb24gMC4xNCBvciAwLjEzCndhcm5pbmc6IEdNUCBoZWFkZXIgdmVyc2lvbiA2
LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4xLgpHR0MgaGV1cmlzdGlj
czogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJhbSBnZ2MtbWluLWhlYXBzaXpl
PTEzMTA3MgpHTlUgQzExIChHQ0MpIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQg
Ni4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4KQoJY29tcGlsZWQgYnkgR05VIEMgdmVyc2lv
biA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01QIHZlcnNpb24gNi4xLjAs
IE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlzbCB2ZXJzaW9uIDAu
MTQgb3IgMC4xMwp3YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24gNi4xLjAgZGlmZmVycyBm
cm9tIGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KR0dDIGhldXJpc3RpY3M6IC0tcGFyYW0gZ2dj
LW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIKQ29tcGls
ZXIgZXhlY3V0YWJsZSBjaGVja3N1bTogYWJjZWIxMzhhZjQzYTc4YzM2YzFhYWEyMjhmNWY5
MmEKQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZu
by1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdncGxjJwogYXMg
LXYgLS0zMiAtbyB0b3BfY29tcC5vIHRvcF9jb21wLnMKR05VIGFzc2VtYmxlciB2ZXJzaW9u
IDIuMjYuMSAoaTY4Ni1yZWRoYXQtbGludXgpIHVzaW5nIEJGRCB2ZXJzaW9uIHZlcnNpb24g
Mi4yNi4xLTEuZmMyNApDT01QSUxFUl9QQVRIPS91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRo
YXQtbGludXgvNi4xLjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4x
LjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvOi91c3IvbGliL2djYy9p
Njg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4
LwpMSUJSQVJZX1BBVEg9L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLzov
dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vOi9saWIvOi91
c3IvbGliLwpDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1tMzIn
ICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ2dwbGMn
CiAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NvbGxlY3QyIC1w
bHVnaW4gL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9saWJsdG9f
cGx1Z2luLnNvIC1wbHVnaW4tb3B0PS91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGlu
dXgvNi4xLjEvbHRvLXdyYXBwZXIgLXBsdWdpbi1vcHQ9LWZyZXNvbHV0aW9uPXRvcF9jb21w
LnJlcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNz
LXRocm91Z2g9LWxnY2NfcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sYyAtcGx1Z2lu
LW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxn
Y2NfcyAtLWJ1aWxkLWlkIC0tbm8tYWRkLW5lZWRlZCAtLWVoLWZyYW1lLWhkciAtLWhhc2gt
c3R5bGU9Z251IC1tIGVsZl9pMzg2IC1keW5hbWljLWxpbmtlciAvbGliL2xkLWxpbnV4LnNv
LjIgLW8gZ3BsYyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4v
Li4vY3J0MS5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8u
Li9jcnRpLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NydGJlZ2lu
Lm8gLUwvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEgLUwvdXNyL2xpYi9n
Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4gdG9wX2NvbXAubyAtbG0gLWxn
Y2MgLS1hcy1uZWVkZWQgLWxnY2NfcyAtLW5vLWFzLW5lZWRlZCAtbGMgLWxnY2MgLS1hcy1u
ZWVkZWQgLWxnY2NfcyAtLW5vLWFzLW5lZWRlZCAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt
bGludXgvNi4xLjEvY3J0ZW5kLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYu
MS4xLy4uLy4uLy4uL2NydG4ubwpDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1
bXBybycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMn
ICctbycgJ2dwbGMnCm1ha2VbMl06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS90aWxsL3Jw
bWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvVG9wQ29tcCcKbWFrZVsxXTogTGVh
dmluZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEu
NC40L3NyYy9FbmdpbmVQbCcKLiAuL1NFVFZBUlM7Zm9yIGkgaW4gRW5naW5lUGwgVG9wQ29t
cCBXYW0yTWEgTWEyQXNtIExpbmVkaXQgQmlwc1BsIFBsMldhbSBGZDJDIEVuZ2luZUZEIEJp
cHNGRDtkbyAoY2QgJGk7IG1ha2UpIHx8IGV4aXQgMTsgZG9uZTtcCihjZCBUb3BDb21wOyBt
YWtlIHRvcC1sZXZlbCkgfHwgZXhpdCAxO1wKKGNkIFBsMldhbTsgbWFrZSBzdGFnZTIpCm1h
a2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VT
L2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZVBsJwpnY2MgLW1hcmNoPXBlbnRpdW1wcm8gLW0z
MiAtZm5vLXN0cmljdC1hbGlhc2luZyAtdiAtc2F2ZS10ZW1wcyAgLW8gY3BwX2hlYWRlcnMg
Y3BwX2hlYWRlcnMuYwpVc2luZyBidWlsdC1pbiBzcGVjcy4KQ09MTEVDVF9HQ0M9Z2NjCkNP
TExFQ1RfTFRPX1dSQVBQRVI9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82
LjEuMS9sdG8td3JhcHBlcgpUYXJnZXQ6IGk2ODYtcmVkaGF0LWxpbnV4CkNvbmZpZ3VyZWQg
d2l0aDogLi4vY29uZmlndXJlIC0tZW5hYmxlLWJvb3RzdHJhcCAtLWVuYWJsZS1sYW5ndWFn
ZXM9YyxjKyssb2JqYyxvYmotYysrLGZvcnRyYW4sYWRhLGdvLGx0byAtLXByZWZpeD0vdXNy
IC0tbWFuZGlyPS91c3Ivc2hhcmUvbWFuIC0taW5mb2Rpcj0vdXNyL3NoYXJlL2luZm8gLS13
aXRoLWJ1Z3VybD1odHRwOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYSAtLWVuYWJs
ZS1zaGFyZWQgLS1lbmFibGUtdGhyZWFkcz1wb3NpeCAtLWVuYWJsZS1jaGVja2luZz1yZWxl
YXNlIC0tZW5hYmxlLW11bHRpbGliIC0td2l0aC1zeXN0ZW0temxpYiAtLWVuYWJsZS1fX2N4
YV9hdGV4aXQgLS1kaXNhYmxlLWxpYnVud2luZC1leGNlcHRpb25zIC0tZW5hYmxlLWdudS11
bmlxdWUtb2JqZWN0IC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCAtLXdpdGgtbGlua2VyLWhh
c2gtc3R5bGU9Z251IC0tZW5hYmxlLXBsdWdpbiAtLWVuYWJsZS1pbml0ZmluaS1hcnJheSAt
LWRpc2FibGUtbGliZ2NqIC0td2l0aC1pc2wgLS1lbmFibGUtbGlibXB4IC0tZW5hYmxlLWdu
dS1pbmRpcmVjdC1mdW5jdGlvbiAtLXdpdGgtdHVuZT1nZW5lcmljIC0td2l0aC1hcmNoPWk2
ODYgLS1idWlsZD1pNjg2LXJlZGhhdC1saW51eApUaHJlYWQgbW9kZWw6IHBvc2l4CmdjYyB2
ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChHQ0MpIApDT0xMRUNU
X0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1tMzInICctZm5vLXN0cmljdC1h
bGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ2NwcF9oZWFkZXJzJwogL3Vzci9s
aWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jYzEgLUUgLXF1aWV0IC12IGNw
cF9oZWFkZXJzLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2lu
ZyAtZnBjaC1wcmVwcm9jZXNzIC1vIGNwcF9oZWFkZXJzLmkKaWdub3Jpbmcgbm9uZXhpc3Rl
bnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5j
bHVkZS1maXhlZCIKaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9n
Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vLi4vaTY4Ni1yZWRoYXQtbGlu
dXgvaW5jbHVkZSIKI2luY2x1ZGUgIi4uLiIgc2VhcmNoIHN0YXJ0cyBoZXJlOgojaW5jbHVk
ZSA8Li4uPiBzZWFyY2ggc3RhcnRzIGhlcmU6CiAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt
bGludXgvNi4xLjEvaW5jbHVkZQogL3Vzci9sb2NhbC9pbmNsdWRlCiAvdXNyL2luY2x1ZGUK
RW5kIG9mIHNlYXJjaCBsaXN0LgpDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1
bXBybycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMn
ICctbycgJ2NwcF9oZWFkZXJzJwogL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51
eC82LjEuMS9jYzEgLWZwcmVwcm9jZXNzZWQgY3BwX2hlYWRlcnMuaSAtcXVpZXQgLWR1bXBi
YXNlIGNwcF9oZWFkZXJzLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtYXV4YmFzZSBjcHBf
aGVhZGVycyAtdmVyc2lvbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtbyBjcHBfaGVhZGVycy5z
CkdOVSBDMTEgKEdDQykgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0z
KSAoaTY4Ni1yZWRoYXQtbGludXgpCgljb21waWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYuMS4x
IDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpLCBHTVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2
ZXJzaW9uIDMuMS40LCBNUEMgdmVyc2lvbiAxLjAuMiwgaXNsIHZlcnNpb24gMC4xNCBvciAw
LjEzCndhcm5pbmc6IEdNUCBoZWFkZXIgdmVyc2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGli
cmFyeSB2ZXJzaW9uIDYuMS4xLgpHR0MgaGV1cmlzdGljczogLS1wYXJhbSBnZ2MtbWluLWV4
cGFuZD0xMDAgLS1wYXJhbSBnZ2MtbWluLWhlYXBzaXplPTEzMTA3MgpHTlUgQzExIChHQ0Mp
IHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0
LWxpbnV4KQoJY29tcGlsZWQgYnkgR05VIEMgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVk
IEhhdCA2LjEuMS0zKSwgR01QIHZlcnNpb24gNi4xLjAsIE1QRlIgdmVyc2lvbiAzLjEuNCwg
TVBDIHZlcnNpb24gMS4wLjIsIGlzbCB2ZXJzaW9uIDAuMTQgb3IgMC4xMwp3YXJuaW5nOiBH
TVAgaGVhZGVyIHZlcnNpb24gNi4xLjAgZGlmZmVycyBmcm9tIGxpYnJhcnkgdmVyc2lvbiA2
LjEuMS4KR0dDIGhldXJpc3RpY3M6IC0tcGFyYW0gZ2djLW1pbi1leHBhbmQ9MTAwIC0tcGFy
YW0gZ2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIKQ29tcGlsZXIgZXhlY3V0YWJsZSBjaGVja3N1
bTogYWJjZWIxMzhhZjQzYTc4YzM2YzFhYWEyMjhmNWY5MmEKQ09MTEVDVF9HQ0NfT1BUSU9O
Uz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICct
dicgJy1zYXZlLXRlbXBzJyAnLW8nICdjcHBfaGVhZGVycycKIGFzIC12IC0tMzIgLW8gY3Bw
X2hlYWRlcnMubyBjcHBfaGVhZGVycy5zCkdOVSBhc3NlbWJsZXIgdmVyc2lvbiAyLjI2LjEg
KGk2ODYtcmVkaGF0LWxpbnV4KSB1c2luZyBCRkQgdmVyc2lvbiB2ZXJzaW9uIDIuMjYuMS0x
LmZjMjQKQ09NUElMRVJfUEFUSD0vdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4
LzYuMS4xLzovdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLzovdXNy
L2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzovdXNyL2xpYi9nY2MvaTY4Ni1yZWRo
YXQtbGludXgvNi4xLjEvOi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC8KTElCUkFS
WV9QQVRIPS91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWIv
Z2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uLzovbGliLzovdXNyL2xpYi8K
Q09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1z
dHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdjcHBfaGVhZGVycycK
IC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY29sbGVjdDIgLXBs
dWdpbiAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2xpYmx0b19w
bHVnaW4uc28gLXBsdWdpbi1vcHQ9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51
eC82LjEuMS9sdG8td3JhcHBlciAtcGx1Z2luLW9wdD0tZnJlc29sdXRpb249Y3BwX2hlYWRl
cnMucmVzIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBh
c3MtdGhyb3VnaD0tbGdjY19zIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxjIC1wbHVn
aW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBhc3MtdGhyb3VnaD0t
bGdjY19zIC0tYnVpbGQtaWQgLS1uby1hZGQtbmVlZGVkIC0tZWgtZnJhbWUtaGRyIC0taGFz
aC1zdHlsZT1nbnUgLW0gZWxmX2kzODYgLWR5bmFtaWMtbGlua2VyIC9saWIvbGQtbGludXgu
c28uMiAtbyBjcHBfaGVhZGVycyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4x
LjEvLi4vLi4vLi4vY3J0MS5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEu
MS8uLi8uLi8uLi9jcnRpLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4x
L2NydGJlZ2luLm8gLUwvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEgLUwv
dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4gY3BwX2hlYWRl
cnMubyAtbGdjYyAtLWFzLW5lZWRlZCAtbGdjY19zIC0tbm8tYXMtbmVlZGVkIC1sYyAtbGdj
YyAtLWFzLW5lZWRlZCAtbGdjY19zIC0tbm8tYXMtbmVlZGVkIC91c3IvbGliL2djYy9pNjg2
LXJlZGhhdC1saW51eC82LjEuMS9jcnRlbmQubyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt
bGludXgvNi4xLjEvLi4vLi4vLi4vY3J0bi5vCkNPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJj
aD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2
ZS10ZW1wcycgJy1vJyAnY3BwX2hlYWRlcnMnCmdwbGMgLWMgLUMgJy12IC1zYXZlLXRlbXBz
JyBtYWNoaW5lLmMKVXNpbmcgYnVpbHQtaW4gc3BlY3MuCkNPTExFQ1RfR0NDPWdjYwpUYXJn
ZXQ6IGk2ODYtcmVkaGF0LWxpbnV4CkNvbmZpZ3VyZWQgd2l0aDogLi4vY29uZmlndXJlIC0t
ZW5hYmxlLWJvb3RzdHJhcCAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKyssb2JqYyxvYmotYysr
LGZvcnRyYW4sYWRhLGdvLGx0byAtLXByZWZpeD0vdXNyIC0tbWFuZGlyPS91c3Ivc2hhcmUv
bWFuIC0taW5mb2Rpcj0vdXNyL3NoYXJlL2luZm8gLS13aXRoLWJ1Z3VybD1odHRwOi8vYnVn
emlsbGEucmVkaGF0LmNvbS9idWd6aWxsYSAtLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtdGhy
ZWFkcz1wb3NpeCAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIC0tZW5hYmxlLW11bHRpbGli
IC0td2l0aC1zeXN0ZW0temxpYiAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgLS1kaXNhYmxlLWxp
YnVud2luZC1leGNlcHRpb25zIC0tZW5hYmxlLWdudS11bmlxdWUtb2JqZWN0IC0tZW5hYmxl
LWxpbmtlci1idWlsZC1pZCAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9Z251IC0tZW5hYmxl
LXBsdWdpbiAtLWVuYWJsZS1pbml0ZmluaS1hcnJheSAtLWRpc2FibGUtbGliZ2NqIC0td2l0
aC1pc2wgLS1lbmFibGUtbGlibXB4IC0tZW5hYmxlLWdudS1pbmRpcmVjdC1mdW5jdGlvbiAt
LXdpdGgtdHVuZT1nZW5lcmljIC0td2l0aC1hcmNoPWk2ODYgLS1idWlsZD1pNjg2LXJlZGhh
dC1saW51eApUaHJlYWQgbW9kZWw6IHBvc2l4CmdjYyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIx
IChSZWQgSGF0IDYuMS4xLTMpIChHQ0MpIApDT0xMRUNUX0dDQ19PUFRJT05TPSctdicgJy1z
YXZlLXRlbXBzJyAnLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxp
YXNpbmcnICctZmZpeGVkLWVieCcgJy1jJyAnLUknICcvaG9tZS90aWxsL3JwbWJ1aWxkL1NP
VVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwnICctSScgJy9ob21lL3RpbGwvcnBt
YnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwnICctSScgJy9ob21lL3Rp
bGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9FbmdpbmVGRCcgJy1JJyAn
L2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNGRCcg
Jy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xp
bmVkaXQnICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40
L3NyYy9XMzJHVUlDb25zJyAnLW8nICdtYWNoaW5lLm8nCiAvdXNyL2xpYmV4ZWMvZ2NjL2k2
ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NjMSAtRSAtcXVpZXQgLXYgLUkgL2hvbWUvdGlsbC9y
cG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZVBsIC1JIC9ob21lL3Rp
bGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwgLUkgL2hvbWUv
dGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZUZEIC1JIC9o
b21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzRkQgLUkg
L2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xpbmVkaXQg
LUkgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL1czMkdV
SUNvbnMgbWFjaGluZS5jIC1tYXJjaD1wZW50aXVtcHJvIC1tMzIgLWZuby1zdHJpY3QtYWxp
YXNpbmcgLWZmaXhlZC1lYnggLWZwY2gtcHJlcHJvY2VzcyAtbyBtYWNoaW5lLmkKaWdub3Jp
bmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGlu
dXgvNi4xLjEvaW5jbHVkZS1maXhlZCIKaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5
ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vLi4vaTY4
Ni1yZWRoYXQtbGludXgvaW5jbHVkZSIKI2luY2x1ZGUgIi4uLiIgc2VhcmNoIHN0YXJ0cyBo
ZXJlOgojaW5jbHVkZSA8Li4uPiBzZWFyY2ggc3RhcnRzIGhlcmU6CiAvaG9tZS90aWxsL3Jw
bWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwKIC9ob21lL3RpbGwv
cnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwKIC9ob21lL3RpbGwv
cnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9FbmdpbmVGRAogL2hvbWUvdGls
bC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNGRAogL2hvbWUvdGls
bC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xpbmVkaXQKIC9ob21lL3Rp
bGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9XMzJHVUlDb25zCiAvdXNy
L2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZQogL3Vzci9sb2NhbC9p
bmNsdWRlCiAvdXNyL2luY2x1ZGUKRW5kIG9mIHNlYXJjaCBsaXN0LgpDT0xMRUNUX0dDQ19P
UFRJT05TPSctdicgJy1zYXZlLXRlbXBzJyAnLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAn
LWZuby1zdHJpY3QtYWxpYXNpbmcnICctZmZpeGVkLWVieCcgJy1jJyAnLUknICcvaG9tZS90
aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwnICctSScg
Jy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwn
ICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9F
bmdpbmVGRCcgJy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40
LjQvc3JjL0JpcHNGRCcgJy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9s
b2ctMS40LjQvc3JjL0xpbmVkaXQnICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNF
Uy9ncHJvbG9nLTEuNC40L3NyYy9XMzJHVUlDb25zJyAnLW8nICdtYWNoaW5lLm8nCiAvdXNy
L2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NjMSAtZnByZXByb2Nlc3Nl
ZCBtYWNoaW5lLmkgLXF1aWV0IC1kdW1wYmFzZSBtYWNoaW5lLmMgLW1hcmNoPXBlbnRpdW1w
cm8gLW0zMiAtYXV4YmFzZS1zdHJpcCBtYWNoaW5lLm8gLXZlcnNpb24gLWZuby1zdHJpY3Qt
YWxpYXNpbmcgLWZmaXhlZC1lYnggLW8gbWFjaGluZS5zCkdOVSBDMTEgKEdDQykgdmVyc2lv
biA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRoYXQtbGludXgp
Cgljb21waWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYu
MS4xLTMpLCBHTVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2ZXJzaW9uIDMuMS40LCBNUEMgdmVy
c2lvbiAxLjAuMiwgaXNsIHZlcnNpb24gMC4xNCBvciAwLjEzCndhcm5pbmc6IEdNUCBoZWFk
ZXIgdmVyc2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4xLgpH
R0MgaGV1cmlzdGljczogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJhbSBnZ2Mt
bWluLWhlYXBzaXplPTEzMTA3MgpHTlUgQzExIChHQ0MpIHZlcnNpb24gNi4xLjEgMjAxNjA2
MjEgKFJlZCBIYXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4KQoJY29tcGlsZWQgYnkg
R05VIEMgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01QIHZl
cnNpb24gNi4xLjAsIE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlz
bCB2ZXJzaW9uIDAuMTQgb3IgMC4xMwp3YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24gNi4x
LjAgZGlmZmVycyBmcm9tIGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KR0dDIGhldXJpc3RpY3M6
IC0tcGFyYW0gZ2djLW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1oZWFwc2l6ZT0x
MzEwNzIKQ29tcGlsZXIgZXhlY3V0YWJsZSBjaGVja3N1bTogYWJjZWIxMzhhZjQzYTc4YzM2
YzFhYWEyMjhmNWY5MmEKbWFjaGluZS5jOiBJbiBmdW5jdGlvbiDigJhQbF9NX1JhbmRvbWl6
ZeKAmToKbWFjaGluZS5jOjM4NjoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogU2VnbWVu
dGF0aW9uIGZhdWx0CiB9CiBeClBsZWFzZSBzdWJtaXQgYSBmdWxsIGJ1ZyByZXBvcnQsCndp
dGggcHJlcHJvY2Vzc2VkIHNvdXJjZSBpZiBhcHByb3ByaWF0ZS4KU2VlIDxodHRwOi8vYnVn
emlsbGEucmVkaGF0LmNvbS9idWd6aWxsYT4gZm9yIGluc3RydWN0aW9ucy4KUHJlcHJvY2Vz
c2VkIHNvdXJjZSBzdG9yZWQgaW50byAvdG1wL2NjY1hDQVdNLm91dCBmaWxlLCBwbGVhc2Ug
YXR0YWNoIHRoaXMgdG8geW91ciBidWdyZXBvcnQuCmNvbXBpbGF0aW9uIGZhaWxlZApNYWtl
ZmlsZTozMDogcmVjaXBlIGZvciB0YXJnZXQgJ21hY2hpbmUubycgZmFpbGVkCm1ha2VbMV06
ICoqKiBbbWFjaGluZS5vXSBFcnJvciAxCm1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcv
aG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwn
Ck1ha2VmaWxlOjQ1OiByZWNpcGUgZm9yIHRhcmdldCAnYWxsJyBmYWlsZWQKbWFrZTogKioq
IFthbGxdIEVycm9yIDEK
--------------75FEE9681F67D3318494118F
Content-Type: text/plain; charset=UTF-8;
 name="machine.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="machine.i"

IyAxICJtYWNoaW5lLmMiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZC1saW5lPiIK
IyAzMSAiPGNvbW1hbmQtbGluZT4iCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGMtcHJlZGVmLmgi
IDEgMyA0CiMgMzIgIjxjb21tYW5kLWxpbmU+IiAyCiMgMSAibWFjaGluZS5jIgojIDM5ICJt
YWNoaW5lLmMiCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMyA0CiMgMjcgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAz
IDQKIyAzNjggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL2NkZWZzLmgiIDEgMyA0CiMgNDEwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgi
IDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgNDExICIv
dXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIgMyA0CiMgMzY5ICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMiAzIDQKIyAzOTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKIyAx
ICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMyA0CgoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2dudS9zdHVicy0zMi5oIiAxIDMgNAojIDggIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMu
aCIgMiAzIDQKIyAzOTMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDI4ICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKCgojIDEgIi91c3IvbGliL2djYy9pNjg2
LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDIxNiAiL3Vz
ci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMg
NAoKIyAyMTYgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRl
L3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDM0ICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu
aCIgMSAzIDQKIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMiAzIDQKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5
cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3VfbG9uZzsKCgp0eXBl
ZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50
OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2ln
bmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKCgoKX19leHRlbnNpb25fXyB0
eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCgoKCgoKCl9fZXh0
ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwojIDEyMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXNpemVzLmgiIDEgMyA0CiMgMTIyICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMg
NAoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7Cl9fZXh0ZW5z
aW9uX18gdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aWRfdDsKX19leHRlbnNpb25fXyB0eXBl
ZGVmIHVuc2lnbmVkIGludCBfX2dpZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBpbnQgX19pbm9fdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3Qg
X19pbm82NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fbW9kZV90
OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fbmxpbmtfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRl
ZiBfX3F1YWRfdCBfX29mZjY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19waWRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdCB7IGludCBfX3ZhbFsyXTsgfSBfX2Zz
aWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fcmxpbV90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVk
ZWYgdW5zaWduZWQgaW50IF9faWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50
IF9fdGltZV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29u
ZHNfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7Cgpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fZGFkZHJfdDsKX19leHRlbnNpb25fXyB0eXBl
ZGVmIGludCBfX2tleV90OwoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19jbG9ja2lk
X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHZvaWQgKiBfX3RpbWVyX3Q7CgoKX19leHRl
bnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKX19leHRlbnNpb25f
XyB0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBf
X3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IF9fZnNibGtjbnRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFk
X3QgX19mc2Jsa2NudDY0X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgaW50IF9fZnNmaWxjbnRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3Qg
X19mc2ZpbGNudDY0X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX2Zzd29yZF90
OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX3NzaXplX3Q7CgoKX19leHRlbnNpb25f
XyB0eXBlZGVmIGxvbmcgaW50IF9fc3lzY2FsbF9zbG9uZ190OwoKX19leHRlbnNpb25fXyB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fc3lzY2FsbF91bG9uZ190OwoKCgp0eXBlZGVm
IF9fb2ZmNjRfdCBfX2xvZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90Owp0eXBl
ZGVmIGNoYXIgKl9fY2FkZHJfdDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9faW50
cHRyX3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5f
dDsKIyAzNiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgNDQgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAzIDQKc3RydWN0IF9JT19GSUxFOwoKCgp0eXBlZGVmIHN0cnVjdCBfSU9f
RklMRSBGSUxFOwoKCgoKCiMgNjQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRl
ZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOwojIDc0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMyA0CiMg
MTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMyA0CiMgMSAiL3Vzci9saWIvZ2NjL2k2
ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTYgIi91
c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3dj
aGFyLmgiIDEgMyA0CiMgODIgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKdHlwZWRlZiBz
dHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewoKICAgIHVuc2lnbmVkIGludCBf
X3djaDsKCgoKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsKfSBfX21ic3RhdGVf
dDsKIyAyMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMgNAp0eXBlZGVmIHN0cnVj
dAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3Nf
dDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBf
X3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDMyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAz
IDQKIyA0OSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAojIDEgIi91c3IvbGliL2djYy9p
Njg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQwICIv
dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRhcmcuaCIg
MyA0CnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgNTAgIi91
c3IvaW5jbHVkZS9saWJpby5oIiAyIDMgNAojIDE0NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMgNApzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwoKCgoKCnR5cGVkZWYg
dm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lP
X21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3Bv
czsKIyAxNzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKfTsKCgplbnVtIF9fY29kZWN2
dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2Nv
ZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwojIDI0MSAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMgNApzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNo
YXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3Jl
YWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRy
OwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNlOwogIGNoYXIq
IF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNr
dXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFya2VyICpf
bWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwoK
CgogIGludCBfZmxhZ3MyOwoKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVk
IHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNo
YXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDI4OSAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMgNAogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCgoKICB2b2lk
ICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwogIHZvaWQgKl9fcGFkMzsKICB2b2lkICpfX3Bh
ZDQ7CgogIHNpemVfdCBfX3BhZDU7CiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1
ICogc2l6ZW9mIChpbnQpIC0gNCAqIHNpemVvZiAodm9pZCAqKSAtIHNpemVvZiAoc2l6ZV90
KV07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBf
SU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rk
aW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRl
cm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDMzMyAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMgNAp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZv
aWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5
cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBjb25zdCBj
aGFyICpfX2J1ZiwKICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9f
c2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoK
CnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKIyAzODUgIi91
c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJ
TEUgKik7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKik7CmV4dGVybiBpbnQgX19v
dmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KTsKIyA0MjkgIi91c3IvaW5jbHVkZS9saWJpby5o
IiAzIDQKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApOwpleHRlcm4gaW50
IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCk7CmV4dGVybiBpbnQgX0lPX2Zl
b2YgKF9JT19GSUxFICpfX2ZwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKZXh0ZXJuIGludCBfSU9fcGVl
a2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2Nr
ZmlsZSAoX0lPX0ZJTEUgKikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm
X18pKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50IF9JT19mdHJ5
bG9ja2ZpbGUgKF9JT19GSUxFICopIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f
bGVhZl9fKSk7CiMgNDU5ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CmV4dGVybiBpbnQg
X0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVz
dHJpY3QsCiAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpOwpleHRlcm4gaW50
IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVz
dHJpY3QsCiAgICBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4g
KF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KTsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4g
KF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90KTsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3Nl
ZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpOwpleHRlcm4gX19vZmY2
NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCk7CgpleHRlcm4g
dm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyA3NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDIgMyA0CgoKCgp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgOTAgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBfX29mZl90IG9mZl90OwojIDEwMiAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoKCgoK
CgoKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKIyAxNjQgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzIDQK
IyAxNjUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKCgpleHRlcm4gc3RydWN0IF9J
T19GSUxFICpzdGRpbjsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3Rkb3V0OwpleHRlcm4g
c3RydWN0IF9JT19GSUxFICpzdGRlcnI7CgoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoY29u
c3QgY2hhciAqX19maWxlbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s
ZWFmX18pKTsKCmV4dGVybiBpbnQgcmVuYW1lIChjb25zdCBjaGFyICpfX29sZCwgY29uc3Qg
Y2hhciAqX19uZXcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7
CgoKCgpleHRlcm4gaW50IHJlbmFtZWF0IChpbnQgX19vbGRmZCwgY29uc3QgY2hhciAqX19v
bGQsIGludCBfX25ld2ZkLAogICAgICAgY29uc3QgY2hhciAqX19uZXcpIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCgoKZXh0ZXJuIEZJTEUgKnRt
cGZpbGUgKHZvaWQpIDsKIyAyMDkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJu
IGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpIDsKCgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CiMgMjI3ICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBjaGFyICp0ZW1wbmFtIChjb25zdCBjaGFy
ICpfX2RpciwgY29uc3QgY2hhciAqX19wZngpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsKCgoK
CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pOwoKCgoKZXh0ZXJuIGlu
dCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKTsKCiMgMjUyICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMyA0CmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CiMg
MjY2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCgoKCmV4dGVybiBGSUxFICpmb3Bl
biAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICBjb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKCgoKCmV4dGVybiBGSUxFICpmcmVvcGVuIChjb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX21vZGVzLAogICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK
IyAyOTUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCiMgMzA2ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMyA0CmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBjb25zdCBjaGFy
ICpfX21vZGVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK
IyAzMTkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKmZtZW1vcGVu
ICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgY29uc3QgY2hhciAqX19tb2RlcykKICBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKCmV4dGVybiBGSUxF
ICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fYnVmbG9jLCBzaXplX3QgKl9fc2l6ZWxvYykg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKCmV4dGVy
biB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK
CgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgX19h
dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gdm9p
ZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJp
Y3QgX19idWYsCiAgICAgICAgIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAq
X19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK
CgoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAog
ICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKCgoKZXh0ZXJu
IGludCBwcmludGYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLik7Cgpl
eHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBjb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXykpOwoKCgoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19z
LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xp
c3QgX19hcmcpOwoKCgoKZXh0ZXJuIGludCB2cHJpbnRmIChjb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZyk7CgpleHRlcm4gaW50IHZzcHJp
bnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwKICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsKCgoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2Zvcm1hdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGlu
dCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAg
ICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3Qg
X19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgojIDQxMiAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IHZkcHJpbnRmIChpbnQgX19mZCwgY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2ZtdCwKICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpl
eHRlcm4gaW50IGRwcmludGYgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18s
IDIsIDMpKSk7CgoKCgoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0sCiAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7
CgoKCgpleHRlcm4gaW50IHNjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pIDsKCmV4dGVybiBpbnQgc3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgNDQzICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXNtX18gKCIi
ICJfX2lzb2M5OV9mc2NhbmYiKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
ZXh0ZXJuIGludCBzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KSBfX2FzbV9fICgiIiAiX19pc29jOTlfc2NhbmYiKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CmV4dGVybiBpbnQgc3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSBfX2FzbV9fICgiIiAi
X19pc29jOTlfc3NjYW5mIikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm
X18pKQoKICAgICAgICAgICAgICAgICAgICAgIDsKIyA0NjMgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAzIDQKCgoKCgoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3Qg
X19zLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICBfX2dudWNfdmFf
bGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9f
LCAyLCAwKSkpIDsKCgoKCgpleHRlcm4gaW50IHZzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKSA7CgoKZXh0ZXJuIGludCB2c3Nj
YW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwojIDQ5NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDMgNApleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgX19hc21f
XyAoIiIgIl9faXNvYzk5X3Zmc2NhbmYiKQoKCgogICAgIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSkgOwpleHRlcm4gaW50IHZzY2FuZiAoY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fYXNt
X18gKCIiICJfX2lzb2M5OV92c2NhbmYiKQoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpIDsKZXh0ZXJuIGludCB2c3NjYW5mIChjb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
X19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fYXNtX18gKCIiICJfX2lzb2M5OV92c3NjYW5mIikg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQoKCgogICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CiMgNTIyICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCgoKCgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUg
Kl9fc3RyZWFtKTsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0
ZXJuIGludCBnZXRjaGFyICh2b2lkKTsKCiMgNTUwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4g
aW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpOwojIDU2MSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMgNApleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CgoK
CgoKCgoKCgoKZXh0ZXJuIGludCBmcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwpl
eHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgpleHRlcm4g
aW50IHB1dGNoYXIgKGludCBfX2MpOwoKIyA1OTQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAz
IDQKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0p
OwoKCgoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSk7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYyk7CgoKCgoKCmV4
dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50
IF9fdywgRklMRSAqX19zdHJlYW0pOwoKCgoKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p
CiAgICAgOwojIDY0MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKIyA2NjUgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFy
ICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3Qg
X19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSA7CmV4dGVybiBfX3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9f
bGluZXB0ciwKICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0
ZXIsCiAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKCgoKZXh0ZXJu
IF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAg
ICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLAogICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgOwoKCgoKCgoKCmV4dGVybiBpbnQgZnB1dHMgKGNvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCgoKCgpleHRlcm4gaW50IHB1
dHMgKGNvbnN0IGNoYXIgKl9fcyk7CgoKCgoKCmV4dGVybiBpbnQgdW5nZXRjIChpbnQgX19j
LCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKCmV4dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9f
cmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICBzaXplX3QgX19uLCBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICBzaXpl
X3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7CgojIDczNyAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMgNApleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3Ry
aWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBzaXplX3QgZndyaXRlX3VubG9ja2VkIChj
b25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAg
c2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgoKCgoKZXh0ZXJu
IGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVu
Y2UpOwoKCgoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgOwoKCgoK
ZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSk7CgojIDc3MyAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9f
b2ZmX3QgX19vZmYsIGludCBfX3doZW5jZSk7CgoKCgpleHRlcm4gX19vZmZfdCBmdGVsbG8g
KEZJTEUgKl9fc3RyZWFtKSA7CiMgNzkyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoK
CgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBv
c190ICpfX3Jlc3RyaWN0IF9fcG9zKTsKCgoKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAq
X19zdHJlYW0sIGNvbnN0IGZwb3NfdCAqX19wb3MpOwojIDgxNSAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMgNAoKIyA4MjQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgpleHRlcm4g
dm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXyAsIF9fbGVhZl9fKSk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCmV4dGVybiBpbnQg
ZmVycm9yIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg
X19sZWFmX18pKSA7CgoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4
dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSkgOwoKCgoKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoY29uc3QgY2hhciAqX19zKTsK
CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAxIDMgNAojIDI2
ICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAzIDQKZXh0ZXJuIGludCBzeXNf
bmVycjsKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19lcnJsaXN0W107CiMgODU0ICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKCmV4dGVybiBpbnQgZmlsZW5vIChGSUxF
ICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7
CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwojIDg3MiAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gRklMRSAqcG9wZW4gKGNvbnN0IGNoYXIgKl9fY29t
bWFuZCwgY29uc3QgY2hhciAqX19tb2RlcykgOwoKCgoKCmV4dGVybiBpbnQgcGNsb3NlIChG
SUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyA5MTIgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0
cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0
ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAo
RklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f
KSk7CiMgOTQyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgojIDQwICJtYWNoaW5lLmMi
IDIKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgMzIgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMyA0CiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYu
MS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzI4ICIvdXNyL2xpYi9nY2MvaTY4Ni1y
ZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgbG9uZyBp
bnQgd2NoYXJfdDsKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCgoKCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2FpdGZsYWdzLmgiIDEgMyA0CiMgNDIgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3Rh
dHVzLmgiIDEgMyA0CiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMyA0
CiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMgNAojIDM2ICIvdXNyL2luY2x1ZGUv
ZW5kaWFuLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIiAxIDMgNAoj
IDM3ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMyA0CiMgNjAgIi91c3IvaW5jbHVkZS9l
bmRpYW4uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMSAzIDQK
IyAyOCAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAyOSAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0
ZXN3YXAuaCIgMiAzIDQKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC0x
Ni5oIiAxIDMgNAojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAyIDMgNAoj
IDQ0ICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAzIDQKc3RhdGljIF9faW5saW5l
IHVuc2lnbmVkIGludApfX2Jzd2FwXzMyICh1bnNpZ25lZCBpbnQgX19ic3gpCnsKICByZXR1
cm4gX19idWlsdGluX2Jzd2FwMzIgKF9fYnN4KTsKfQojIDEwOCAiL3Vzci9pbmNsdWRlL2Jp
dHMvYnl0ZXN3YXAuaCIgMyA0CnN0YXRpYyBfX2lubGluZSBfX3VpbnQ2NF90Cl9fYnN3YXBf
NjQgKF9fdWludDY0X3QgX19ic3gpCnsKICByZXR1cm4gX19idWlsdGluX2Jzd2FwNjQgKF9f
YnN4KTsKfQojIDYxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMyA0CiMgNjUgIi91c3Iv
aW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMiAzIDQKCnVuaW9uIHdhaXQKICB7CiAgICBp
bnQgd19zdGF0dXM7CiAgICBzdHJ1Y3QKICAgICAgewoKIHVuc2lnbmVkIGludCBfX3dfdGVy
bXNpZzo3OwogdW5zaWduZWQgaW50IF9fd19jb3JlZHVtcDoxOwogdW5zaWduZWQgaW50IF9f
d19yZXRjb2RlOjg7CiB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90
ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiB1bnNpZ25lZCBpbnQgX193X3N0b3B2
YWw6ODsKIHVuc2lnbmVkIGludCBfX3dfc3RvcHNpZzo4OwogdW5zaWduZWQgaW50OjE2OwoK
CgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDMgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMiAzIDQKIyA2NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdHlwZWRl
ZiB1bmlvbgogIHsKICAgIHVuaW9uIHdhaXQgKl9fdXB0cjsKICAgIGludCAqX19pcHRyOwog
IH0gX19XQUlUX1NUQVRVUyBfX2F0dHJpYnV0ZV9fICgoX190cmFuc3BhcmVudF91bmlvbl9f
KSk7CiMgOTUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKdHlwZWRlZiBzdHJ1Y3QK
ICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBz
dHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRp
dl90OwoKCgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcg
bG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsKCgoj
IDEzOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIHNpemVfdCBfX2N0eXBl
X2dldF9tYl9jdXJfbWF4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpIDsKCgoKCmV4dGVybiBkb3VibGUgYXRvZiAoY29uc3QgY2hhciAqX19ucHRy
KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp
IDsKCmV4dGVybiBpbnQgYXRvaSAoY29uc3QgY2hhciAqX19ucHRyKQogICAgIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCmV4dGVybiBsb25n
IGludCBhdG9sIChjb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKCl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwgKGNvbnN0IGNoYXIgKl9fbnB0cikKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgoKZXh0
ZXJuIGRvdWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQogICAgIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwoKCgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxKSkpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGQgKGNvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0
ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAo
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs
IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcg
bG9uZyBpbnQgc3RydG9xIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSkpKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgc3RydG91cSAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDEpKSk7CgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGlu
dCBzdHJ0b2xsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDEpKSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50
IHN0cnRvdWxsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSkpKTsKCiMgMzA1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gY2hhciAq
bDY0YSAobG9uZyBpbnQgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoY29uc3QgY2hhciAqX19zKQogICAg
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMgNAojIDI3ICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDMgNAoKCgoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlw
ZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVm
IF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191
X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKCgp0eXBlZGVm
IF9fbG9mZl90IGxvZmZfdDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwojIDYwICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0
eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoK
CnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7
CiMgOTggIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgX19waWRfdCBw
aWRfdDsKCgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwojIDExNSAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2Nh
ZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEg
MyA0CiMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCnR5cGVkZWYgX19jbG9ja190
IGNsb2NrX3Q7CgoKCiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCnR5cGVkZWYg
X190aW1lX3QgdGltZV90OwoKCgojIDkxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKdHlw
ZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7CiMgMTAzICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzIDQKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKIyAxMzMgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzIDQKIyAxNDYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0
CiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMyA0CiMgMTQ3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoK
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxOTQgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVmIHVuc2lnbmVk
IGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
X19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJl
Z2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMTkg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9z
ZWxlY3QuaCIgMSAzIDQKIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMyA0CiMgMjIgIi91c3IvaW5jbHVk
ZS9iaXRzL3NlbGVjdC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5o
IiAxIDMgNAojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMiAzIDQKIyAzMSAi
L3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3NpZ3NldC5oIiAxIDMgNAojIDIyICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIg
MyA0CnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7
CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNp
Z25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM0ICIvdXNyL2luY2x1ZGUv
c3lzL3NlbGVjdC5oIiAyIDMgNAoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoK
CgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAojIDEyMCAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIF9fdGltZV90IHR2X3NlYzsK
ICAgIF9fc3lzY2FsbF9zbG9uZ190IHR2X25zZWM7CiAgfTsKIyA0NCAiL3Vzci9pbmNsdWRl
L3N5cy9zZWxlY3QuaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAx
IDMgNAojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXZh
bAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsK
ICB9OwojIDQ2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAoKCnR5cGVkZWYg
X19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fZmRf
bWFzazsKIyA2NCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgc3Ry
dWN0CiAgewoKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAvICg4ICogKGlu
dCkgc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBf
X2ZkX21hc2sgZmRfbWFzazsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0
CgojIDEwNiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiBpbnQgc2Vs
ZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgIGZk
X3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgIGZkX3NldCAqX19yZXN0cmljdCBf
X2V4Y2VwdGZkcywKICAgICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQp
OwojIDExOCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiBpbnQgcHNl
bGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAg
ZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgIGZkX3NldCAqX19yZXN0cmlj
dCBfX2V4Y2VwdGZkcywKICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0
IF9fdGltZW91dCwKICAgICAgY29uc3QgX19zaWdzZXRfdCAqX19yZXN0cmljdCBfX3NpZ21h
c2spOwojIDEzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CgojIDIyMCAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9z
eXNtYWNyb3MuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIg
MyA0CgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgaW50IGdudV9kZXZfbWFqb3Ig
KHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19kZXYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cl9f
ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGludCBnbnVfZGV2X21pbm9yICh1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IF9fZGV2KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpfX2V4dGVuc2lv
bl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGdudV9kZXZfbWFrZWRldiAodW5z
aWduZWQgaW50IF9fbWFqb3IsCiAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX21pbm9yKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwojIDU4ICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5o
IiAzIDQKCiMgMjIzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCgoKdHlw
ZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CgoKCgoKCnR5cGVkZWYgX19ibGtjbnRfdCBi
bGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRl
ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNzAgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMyA0
CiMgMjEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzIDQKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMgNAojIDIyICIvdXNyL2luY2x1ZGUvYml0
cy9wdGhyZWFkdHlwZXMuaCIgMiAzIDQKIyA2MCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVh
ZHR5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCgp1
bmlvbiBwdGhyZWFkX2F0dHJfdAp7CiAgY2hhciBfX3NpemVbMzZdOwogIGxvbmcgaW50IF9f
YWxpZ247Cn07Cgp0eXBlZGVmIHVuaW9uIHB0aHJlYWRfYXR0cl90IHB0aHJlYWRfYXR0cl90
OwojIDgxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMyA0CnR5cGVkZWYg
c3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9zbGlzdAp7CiAgc3RydWN0IF9fcHRocmVhZF9p
bnRlcm5hbF9zbGlzdCAqX19uZXh0Owp9IF9fcHRocmVhZF9zbGlzdF90OwoKCgoKCnR5cGVk
ZWYgdW5pb24KewogIHN0cnVjdCBfX3B0aHJlYWRfbXV0ZXhfcwogIHsKICAgIGludCBfX2xv
Y2s7CiAgICB1bnNpZ25lZCBpbnQgX19jb3VudDsKICAgIGludCBfX293bmVyOwoKCgoKCiAg
ICBpbnQgX19raW5kOwojIDExMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi
IDMgNAogICAgdW5zaWduZWQgaW50IF9fbnVzZXJzOwogICAgX19leHRlbnNpb25fXyB1bmlv
bgogICAgewogICAgICBzdHJ1Y3QKICAgICAgewogc2hvcnQgX19lc3BpbnM7CiBzaG9ydCBf
X2VsaXNpb247CgoKCiAgICAgIH0gX19lbGlzaW9uX2RhdGE7CiAgICAgIF9fcHRocmVhZF9z
bGlzdF90IF9fbGlzdDsKICAgIH07CgogIH0gX19kYXRhOwogIGNoYXIgX19zaXplWzI0XTsK
ICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRfbXV0ZXhfdDsKCnR5cGVkZWYgdW5pb24K
ewogIGNoYXIgX19zaXplWzRdOwogIGludCBfX2FsaWduOwp9IHB0aHJlYWRfbXV0ZXhhdHRy
X3Q7CgoKCgp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QKICB7CiAgICBpbnQgX19sb2NrOwog
ICAgdW5zaWduZWQgaW50IF9fZnV0ZXg7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgX190b3RhbF9zZXE7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgX193YWtldXBfc2VxOwogICAgX19leHRlbnNpb25fXyB1bnNpZ25lZCBs
b25nIGxvbmcgaW50IF9fd29rZW5fc2VxOwogICAgdm9pZCAqX19tdXRleDsKICAgIHVuc2ln
bmVkIGludCBfX253YWl0ZXJzOwogICAgdW5zaWduZWQgaW50IF9fYnJvYWRjYXN0X3NlcTsK
ICB9IF9fZGF0YTsKICBjaGFyIF9fc2l6ZVs0OF07CiAgX19leHRlbnNpb25fXyBsb25nIGxv
bmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9jb25kX3Q7Cgp0eXBlZGVmIHVuaW9uCnsKICBj
aGFyIF9fc2l6ZVs0XTsKICBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoK
CnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCnR5cGVkZWYgaW50IHB0
aHJlYWRfb25jZV90OwoKCgoKCnR5cGVkZWYgdW5pb24KewojIDIwMiAiL3Vzci9pbmNsdWRl
L2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAogIHN0cnVjdAogIHsKICAgIGludCBfX2xvY2s7
CiAgICB1bnNpZ25lZCBpbnQgX19ucl9yZWFkZXJzOwogICAgdW5zaWduZWQgaW50IF9fcmVh
ZGVyc193YWtldXA7CiAgICB1bnNpZ25lZCBpbnQgX193cml0ZXJfd2FrZXVwOwogICAgdW5z
aWduZWQgaW50IF9fbnJfcmVhZGVyc19xdWV1ZWQ7CiAgICB1bnNpZ25lZCBpbnQgX19ucl93
cml0ZXJzX3F1ZXVlZDsKCgogICAgdW5zaWduZWQgY2hhciBfX2ZsYWdzOwogICAgdW5zaWdu
ZWQgY2hhciBfX3NoYXJlZDsKICAgIHNpZ25lZCBjaGFyIF9fcndlbGlzaW9uOwoKICAgIHVu
c2lnbmVkIGNoYXIgX19wYWQyOwogICAgaW50IF9fd3JpdGVyOwogIH0gX19kYXRhOwoKICBj
aGFyIF9fc2l6ZVszMl07CiAgbG9uZyBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX3J3bG9ja190
OwoKdHlwZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbOF07CiAgbG9uZyBpbnQgX19hbGln
bjsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBw
dGhyZWFkX3NwaW5sb2NrX3Q7CgoKCgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6ZVsy
MF07CiAgbG9uZyBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX2JhcnJpZXJfdDsKCnR5cGVkZWYg
dW5pb24KewogIGNoYXIgX19zaXplWzRdOwogIGludCBfX2FsaWduOwp9IHB0aHJlYWRfYmFy
cmllcmF0dHJfdDsKIyAyNzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgoK
IyAzMTUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgoKCgoKZXh0ZXJuIGxvbmcg
aW50IHJhbmRvbSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm
X18pKTsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBjaGFy
ICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAg
IHNpemVfdCBfX3N0YXRlbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKZXh0ZXJuIGNo
YXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsK
CgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CiAgICBp
bnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7CiAgICBpbnQgcmFuZF90eXBlOwog
ICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwogICAgaW50MzJfdCAqZW5kX3B0
cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmLAogICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQg
aW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMikpKTsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3Nl
ZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgc2l6ZV90IF9fc3RhdGVsZW4s
CiAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMiwgNCkpKTsKCmV4dGVybiBpbnQgc2V0c3RhdGVfciAoY2hhciAqX19yZXN0
cmljdCBfX3N0YXRlYnVmLAogICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp
Y3QgX19idWYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKCmV4dGVybiBp
bnQgcmFuZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KTsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19zZWVkKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCByYW5kX3Ig
KHVuc2lnbmVkIGludCAqX19zZWVkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gZG91YmxlIGVyYW5k
NDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp
KTsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2ln
bmVkIHNob3J0IGludCBfX3hzdWJpWzNdKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoK
CmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0
ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpz
ZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEpKSk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBf
X3BhcmFtWzddKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9k
YXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNo
b3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVu
c2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgX19hOwoKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGRvdWJsZSAqX19y
ZXN0cmljdCBfX3Jlc3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm
X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQg
ZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1
Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGRvdWJsZSAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s
ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJu
IGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9y
dCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3Ry
aWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgbXJhbmQ0OF9yIChz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcg
aW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp
OwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s
CiAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAg
ICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFs
LCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MikpKTsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQx
NnZbM10sCiAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEsIDIpKSk7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9fcGFyYW1bN10sCiAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKCgoKCmV4dGVybiB2b2lkICpt
YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f
bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7CgpleHRlcm4gdm9pZCAq
Y2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSkgOwoKCgoKCgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBz
aXplX3QgX19zaXplKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKCmV4dGVy
biB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgojIDEgIi91c3IvaW5j
bHVkZS9hbGxvY2EuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAzIDQK
IyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzIDQKIyAyNSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMgNAoKCgoKCgoK
ZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKIyA0OTMgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzIDQKCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSkgOwoKCgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbiAodm9pZCAq
Kl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEpKSkgOwoKCgoKZXh0ZXJuIHZvaWQgKmFsaWduZWRfYWxsb2MgKHNp
emVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgyKSkpIDsKCgoKCmV4dGVybiB2b2lk
IGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp
IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQg
KHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg
X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpl
eHRlcm4gaW50IGF0X3F1aWNrX2V4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDEpKSk7CgoKCgoKCgpleHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1
bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEpKSk7CgoKCgoKCmV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1
cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgcXVpY2tfZXhpdCAoaW50
IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f
YXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgoKCmV4dGVybiB2b2lkIF9FeGl0
IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f
KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgpleHRlcm4gY2hhciAq
Z2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCiMg
NTc4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gaW50IHB1dGVudiAoY2hh
ciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgc2V0
ZW52IChjb25zdCBjaGFyICpfX25hbWUsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3Jl
cGxhY2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKZXh0ZXJuIGludCB1bnNldGVu
diAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0
ZXJuIGludCBjbGVhcmVudiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg
X19sZWFmX18pKTsKIyA2MDYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBj
aGFyICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoj
IDYxOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0ZW1wIChj
aGFyICpfX3RlbXBsYXRlKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoj
IDY0MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0ZW1wcyAo
Y2hhciAqX190ZW1wbGF0ZSwgaW50IF9fc3VmZml4bGVuKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDEpKSkgOwojIDY2MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0
ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpIDsKIyA3MTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKCgoKZXh0ZXJuIGlu
dCBzeXN0ZW0gKGNvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwoKIyA3MzMgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25hbWUsCiAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKCnR5cGVk
ZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsK
IyA3NTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKCmV4dGVybiB2b2lkICpic2Vh
cmNoIChjb25zdCB2b2lkICpfX2tleSwgY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgIHNp
emVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgNSkpKSA7CgoKCgoKCgpl
eHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90
IF9fc2l6ZSwKICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEsIDQpKSk7CiMgNzc0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMg
NApleHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwpleHRlcm4gbG9u
ZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CgoKCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpIDsKCgoKCgoKCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251
bWVyLCBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CmV4dGVybiBsZGl2X3Qg
bGRpdiAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKSA7CgoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2IChsb25n
IGxvbmcgaW50IF9fbnVtZXIsCiAgICAgICAgbG9uZyBsb25nIGludCBfX2Rlbm9tKQogICAg
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpIDsKCiMgODExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApl
eHRlcm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpf
X3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDMsIDQpKSkgOwoKCgoKZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAq
X19yZXN0cmljdCBfX3NpZ24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKCgoKCmV4dGVy
biBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1
ZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0
cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKSA7CgoKCgpleHRlcm4gY2hhciAqcWVjdnQg
KGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDMsIDQpKSkgOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19y
ZXN0cmljdCBfX3NpZ24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s
ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkgOwpleHRlcm4g
Y2hhciAqcWdjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAq
X19idWYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSkgOwoKCgoKZXh0ZXJuIGludCBlY3Z0
X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19i
dWYsCiAgICAgc2l6ZV90IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwgNSkpKTsKZXh0
ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9f
cmVzdHJpY3QgX19idWYsCiAgICAgc2l6ZV90IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywg
NCwgNSkpKTsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50
IF9fbmRpZ2l0LAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fc2lnbiwKICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVu
KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0LCA1KSkpOwpleHRlcm4gaW50IHFmY3Z0X3Ig
KGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwg
NSkpKTsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoY29uc3QgY2hhciAqX19zLCBzaXplX3Qg
X19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVy
biBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgIGNvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdj
aGFyX3QgX193Y2hhcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3
Y3MsCiAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKZXh0ZXJuIHNpemVfdCB3Y3N0
b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgIGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJp
Y3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSk7CgoKCgoKCgoKZXh0ZXJuIGludCBycG1hdGNoIChjb25zdCBjaGFy
ICpfX3Jlc3BvbnNlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgODk4ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gaW50IGdldHN1Ym9wdCAoY2hhciAqKl9fcmVzdHJp
Y3QgX19vcHRpb25wLAogICAgICAgIGNoYXIgKmNvbnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5z
LAogICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKQogICAgIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxLCAyLCAzKSkpIDsKIyA5NTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4
dGVybiBpbnQgZ2V0bG9hZGF2ZyAoZG91YmxlIF9fbG9hZGF2Z1tdLCBpbnQgX19uZWxlbSkK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0
ZGxpYi1mbG9hdC5oIiAxIDMgNAojIDk1NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMg
NAojIDk2NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKCiMgNDEgIm1hY2hpbmUuYyIg
MgojIDEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMSAzIDQKIyAzMCAiL3Vzci9pbmNsdWRl
L3NpZ25hbC5oIiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMg
NAojIDEwMiAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMgNApleHRlcm4gaW50IF9f
c2lnaXNtZW1iZXIgKGNvbnN0IF9fc2lnc2V0X3QgKiwgaW50KTsKZXh0ZXJuIGludCBfX3Np
Z2FkZHNldCAoX19zaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4gaW50IF9fc2lnZGVsc2V0IChf
X3NpZ3NldF90ICosIGludCk7CiMgMzMgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQK
CgoKCgoKCnR5cGVkZWYgX19zaWdfYXRvbWljX3Qgc2lnX2F0b21pY190OwoKIyA1NyAiL3Vz
ci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdudW0u
aCIgMSAzIDQKIyA1OCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAojIDc1ICIvdXNy
L2luY2x1ZGUvc2lnbmFsLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0
CiMgNzYgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc2lnaW5mby5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdp
bmZvLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMg
MjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMiAzIDQKCgoKCgoKCnR5cGVkZWYg
dW5pb24gc2lndmFsCiAgewogICAgaW50IHNpdmFsX2ludDsKICAgIHZvaWQgKnNpdmFsX3B0
cjsKICB9IHNpZ3ZhbF90OwojIDU4ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMg
NAp0eXBlZGVmIF9fY2xvY2tfdCBfX3NpZ2NobGRfY2xvY2tfdDsKCgoKdHlwZWRlZiBzdHJ1
Y3QKICB7CiAgICBpbnQgc2lfc2lnbm87CiAgICBpbnQgc2lfZXJybm87CgogICAgaW50IHNp
X2NvZGU7CgogICAgdW5pb24KICAgICAgewogaW50IF9wYWRbKCgxMjggLyBzaXplb2YgKGlu
dCkpIC0gMyldOwoKCiBzdHJ1Y3QKICAgewogICAgIF9fcGlkX3Qgc2lfcGlkOwogICAgIF9f
dWlkX3Qgc2lfdWlkOwogICB9IF9raWxsOwoKCiBzdHJ1Y3QKICAgewogICAgIGludCBzaV90
aWQ7CiAgICAgaW50IHNpX292ZXJydW47CiAgICAgc2lndmFsX3Qgc2lfc2lndmFsOwogICB9
IF90aW1lcjsKCgogc3RydWN0CiAgIHsKICAgICBfX3BpZF90IHNpX3BpZDsKICAgICBfX3Vp
ZF90IHNpX3VpZDsKICAgICBzaWd2YWxfdCBzaV9zaWd2YWw7CiAgIH0gX3J0OwoKCiBzdHJ1
Y3QKICAgewogICAgIF9fcGlkX3Qgc2lfcGlkOwogICAgIF9fdWlkX3Qgc2lfdWlkOwogICAg
IGludCBzaV9zdGF0dXM7CiAgICAgX19zaWdjaGxkX2Nsb2NrX3Qgc2lfdXRpbWU7CiAgICAg
X19zaWdjaGxkX2Nsb2NrX3Qgc2lfc3RpbWU7CiAgIH0gX3NpZ2NobGQ7CgoKIHN0cnVjdAog
ICB7CiAgICAgdm9pZCAqc2lfYWRkcjsKICAgICBzaG9ydCBpbnQgc2lfYWRkcl9sc2I7CiAg
ICAgc3RydWN0CiAgICAgICB7CiAgdm9pZCAqX2xvd2VyOwogIHZvaWQgKl91cHBlcjsKICAg
ICAgIH0gc2lfYWRkcl9ibmQ7CiAgIH0gX3NpZ2ZhdWx0OwoKCiBzdHJ1Y3QKICAgewogICAg
IGxvbmcgaW50IHNpX2JhbmQ7CiAgICAgaW50IHNpX2ZkOwogICB9IF9zaWdwb2xsOwoKCiBz
dHJ1Y3QKICAgewogICAgIHZvaWQgKl9jYWxsX2FkZHI7CiAgICAgaW50IF9zeXNjYWxsOwog
ICAgIHVuc2lnbmVkIGludCBfYXJjaDsKICAgfSBfc2lnc3lzOwogICAgICB9IF9zaWZpZWxk
czsKICB9IHNpZ2luZm9fdCA7CiMgMTYwICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgi
IDMgNAplbnVtCnsKICBTSV9BU1lOQ05MID0gLTYwLAoKICBTSV9US0lMTCA9IC02LAoKICBT
SV9TSUdJTywKCiAgU0lfQVNZTkNJTywKCiAgU0lfTUVTR1EsCgogIFNJX1RJTUVSLAoKICBT
SV9RVUVVRSwKCiAgU0lfVVNFUiwKCiAgU0lfS0VSTkVMID0gMHg4MAoKfTsKCgoKCmVudW0K
ewogIElMTF9JTExPUEMgPSAxLAoKICBJTExfSUxMT1BOLAoKICBJTExfSUxMQURSLAoKICBJ
TExfSUxMVFJQLAoKICBJTExfUFJWT1BDLAoKICBJTExfUFJWUkVHLAoKICBJTExfQ09QUk9D
LAoKICBJTExfQkFEU1RLCgp9OwoKCmVudW0KewogIEZQRV9JTlRESVYgPSAxLAoKICBGUEVf
SU5UT1ZGLAoKICBGUEVfRkxURElWLAoKICBGUEVfRkxUT1ZGLAoKICBGUEVfRkxUVU5ELAoK
ICBGUEVfRkxUUkVTLAoKICBGUEVfRkxUSU5WLAoKICBGUEVfRkxUU1VCCgp9OwoKCmVudW0K
ewogIFNFR1ZfTUFQRVJSID0gMSwKCiAgU0VHVl9BQ0NFUlIKCn07CgoKZW51bQp7CiAgQlVT
X0FEUkFMTiA9IDEsCgogIEJVU19BRFJFUlIsCgogIEJVU19PQkpFUlIsCgogIEJVU19NQ0VF
UlJfQVIsCgogIEJVU19NQ0VFUlJfQU8KCn07CiMgMjY0ICIvdXNyL2luY2x1ZGUvYml0cy9z
aWdpbmZvLmgiIDMgNAplbnVtCnsKICBDTERfRVhJVEVEID0gMSwKCiAgQ0xEX0tJTExFRCwK
CiAgQ0xEX0RVTVBFRCwKCiAgQ0xEX1RSQVBQRUQsCgogIENMRF9TVE9QUEVELAoKICBDTERf
Q09OVElOVUVECgp9OwoKCmVudW0KewogIFBPTExfSU4gPSAxLAoKICBQT0xMX09VVCwKCiAg
UE9MTF9NU0csCgogIFBPTExfRVJSLAoKICBQT0xMX1BSSSwKCiAgUE9MTF9IVVAKCn07CiMg
MzIwICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBz
aWdldmVudAogIHsKICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVlOwogICAgaW50IHNpZ2V2X3Np
Z25vOwogICAgaW50IHNpZ2V2X25vdGlmeTsKCiAgICB1bmlvbgogICAgICB7CiBpbnQgX3Bh
ZFsoKDY0IC8gc2l6ZW9mIChpbnQpKSAtIDMpXTsKCgoKIF9fcGlkX3QgX3RpZDsKCiBzdHJ1
Y3QKICAgewogICAgIHZvaWQgKCpfZnVuY3Rpb24pIChzaWd2YWxfdCk7CiAgICAgcHRocmVh
ZF9hdHRyX3QgKl9hdHRyaWJ1dGU7CiAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAgfSBfc2ln
ZXZfdW47CiAgfSBzaWdldmVudF90OwoKCgoKCgplbnVtCnsKICBTSUdFVl9TSUdOQUwgPSAw
LAoKICBTSUdFVl9OT05FLAoKICBTSUdFVl9USFJFQUQsCgoKICBTSUdFVl9USFJFQURfSUQg
PSA0Cgp9OwojIDgxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgoKCgp0eXBlZGVm
IHZvaWQgKCpfX3NpZ2hhbmRsZXJfdCkgKGludCk7CgoKCgpleHRlcm4gX19zaWdoYW5kbGVy
X3QgX19zeXN2X3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAxMDAg
Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CgoKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IHNp
Z25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAxMTQgIi91c3IvaW5jbHVk
ZS9zaWduYWwuaCIgMyA0CgojIDEyNyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKZXh0
ZXJuIGludCBraWxsIChfX3BpZF90IF9fcGlkLCBpbnQgX19zaWcpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQga2lsbHBnIChf
X3BpZF90IF9fcGdycCwgaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCByYWlzZSAoaW50IF9fc2lnKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIF9fc2lnaGFu
ZGxlcl90IHNzaWduYWwgKGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiBp
bnQgZ3NpZ25hbCAoaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpOwoKCgoKZXh0ZXJuIHZvaWQgcHNpZ25hbCAoaW50IF9fc2lnLCBjb25zdCBj
aGFyICpfX3MpOwoKCmV4dGVybiB2b2lkIHBzaWdpbmZvIChjb25zdCBzaWdpbmZvX3QgKl9f
cGluZm8sIGNvbnN0IGNoYXIgKl9fcyk7CiMgMTg3ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgi
IDMgNApleHRlcm4gaW50IHNpZ2Jsb2NrIChpbnQgX19tYXNrKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRf
XykpOwoKCmV4dGVybiBpbnQgc2lnc2V0bWFzayAoaW50IF9fbWFzaykgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNh
dGVkX18pKTsKCgpleHRlcm4gaW50IHNpZ2dldG1hc2sgKHZvaWQpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRl
ZF9fKSk7CiMgMjA3ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMgNAp0eXBlZGVmIF9fc2ln
aGFuZGxlcl90IHNpZ190OwoKCgoKCmV4dGVybiBpbnQgc2lnZW1wdHlzZXQgKHNpZ3NldF90
ICpfX3NldCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBzaWdmaWxsc2V0
IChzaWdzZXRfdCAqX19zZXQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQg
c2lnYWRkc2V0IChzaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZ25vKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKTsKCgpleHRlcm4gaW50IHNpZ2RlbHNldCAoc2lnc2V0X3QgKl9fc2V0LCBpbnQg
X19zaWdubykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBzaWdpc21lbWJl
ciAoY29uc3Qgc2lnc2V0X3QgKl9fc2V0LCBpbnQgX19zaWdubykKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMSkpKTsKIyAyNDMgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvc2lnYWN0aW9uLmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9i
aXRzL3NpZ2FjdGlvbi5oIiAzIDQKc3RydWN0IHNpZ2FjdGlvbgogIHsKCgogICAgdW5pb24K
ICAgICAgewoKIF9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7Cgogdm9pZCAoKnNhX3NpZ2Fj
dGlvbikgKGludCwgc2lnaW5mb190ICosIHZvaWQgKik7CiAgICAgIH0KICAgIF9fc2lnYWN0
aW9uX2hhbmRsZXI7CgoKCgoKCgogICAgX19zaWdzZXRfdCBzYV9tYXNrOwoKCiAgICBpbnQg
c2FfZmxhZ3M7CgoKICAgIHZvaWQgKCpzYV9yZXN0b3JlcikgKHZvaWQpOwogIH07CiMgMjQ0
ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgoKZXh0ZXJuIGludCBzaWdwcm9jbWFz
ayAoaW50IF9faG93LCBjb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgc2ln
c2V0X3QgKl9fcmVzdHJpY3QgX19vc2V0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gaW50IHNpZ3N1c3BlbmQgKGNvbnN0IHNpZ3Nl
dF90ICpfX3NldCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVy
biBpbnQgc2lnYWN0aW9uIChpbnQgX19zaWcsIGNvbnN0IHN0cnVjdCBzaWdhY3Rpb24gKl9f
cmVzdHJpY3QgX19hY3QsCiAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiAqX19yZXN0cmljdCBf
X29hY3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0
ZXJuIGludCBzaWdwZW5kaW5nIChzaWdzZXRfdCAqX19zZXQpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwoKCgoKCgpleHRlcm4gaW50IHNpZ3dhaXQgKGNvbnN0IHNpZ3NldF90ICpfX3Jlc3Ry
aWN0IF9fc2V0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWcpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCgpleHRlcm4gaW50IHNpZ3dhaXRpbmZvIChj
b25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgc2lnaW5mb190ICpfX3Jlc3Ry
aWN0IF9faW5mbykgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpl
eHRlcm4gaW50IHNpZ3RpbWVkd2FpdCAoY29uc3Qgc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19z
ZXQsCiAgICBzaWdpbmZvX3QgKl9fcmVzdHJpY3QgX19pbmZvLAogICAgY29uc3Qgc3RydWN0
IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBpbnQgc2lncXVldWUgKF9fcGlkX3QgX19w
aWQsIGludCBfX3NpZywgY29uc3QgdW5pb24gc2lndmFsIF9fdmFsKQogICAgIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMzAxICIvdXNyL2luY2x1ZGUv
c2lnbmFsLmgiIDMgNApleHRlcm4gY29uc3QgY2hhciAqY29uc3QgX3N5c19zaWdsaXN0WzY1
XTsKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19zaWdsaXN0WzY1XTsKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDEgMyA0CiMgMjkgIi91c3IvaW5jbHVk
ZS9iaXRzL3NpZ2NvbnRleHQuaCIgMyA0CnN0cnVjdCBfZnB4X3N3X2J5dGVzCnsKICBfX3Vp
bnQzMl90IG1hZ2ljMTsKICBfX3VpbnQzMl90IGV4dGVuZGVkX3NpemU7CiAgX191aW50NjRf
dCB4c3RhdGVfYnY7CiAgX191aW50MzJfdCB4c3RhdGVfc2l6ZTsKICBfX3VpbnQzMl90IHBh
ZGRpbmdbN107Cn07CgpzdHJ1Y3QgX2ZwcmVnCnsKICB1bnNpZ25lZCBzaG9ydCBzaWduaWZp
Y2FuZFs0XTsKICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4cmVn
CnsKICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICB1bnNpZ25lZCBzaG9ydCBl
eHBvbmVudDsKICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9OwoKc3RydWN0IF94bW1y
ZWcKewogIF9fdWludDMyX3QgZWxlbWVudFs0XTsKfTsKCgoKCgpzdHJ1Y3QgX2Zwc3RhdGUK
ewoKICBfX3VpbnQzMl90IGN3OwogIF9fdWludDMyX3Qgc3c7CiAgX191aW50MzJfdCB0YWc7
CiAgX191aW50MzJfdCBpcG9mZjsKICBfX3VpbnQzMl90IGNzc2VsOwogIF9fdWludDMyX3Qg
ZGF0YW9mZjsKICBfX3VpbnQzMl90IGRhdGFzZWw7CiAgc3RydWN0IF9mcHJlZyBfc3RbOF07
CiAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwogIHVuc2lnbmVkIHNob3J0IG1hZ2ljOwoKCiAg
X191aW50MzJfdCBfZnhzcl9lbnZbNl07CiAgX191aW50MzJfdCBteGNzcjsKICBfX3VpbnQz
Ml90IHJlc2VydmVkOwogIHN0cnVjdCBfZnB4cmVnIF9meHNyX3N0WzhdOwogIHN0cnVjdCBf
eG1tcmVnIF94bW1bOF07CiAgX191aW50MzJfdCBwYWRkaW5nWzU2XTsKfTsKIyA5MyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc2lnY29udGV4dC5oIiAzIDQKc3RydWN0IHNpZ2NvbnRleHQKewog
IHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7
CiAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogIHVuc2lnbmVkIHNob3J0IGRzLCBfX2Rz
aDsKICB1bnNpZ25lZCBsb25nIGVkaTsKICB1bnNpZ25lZCBsb25nIGVzaTsKICB1bnNpZ25l
ZCBsb25nIGVicDsKICB1bnNpZ25lZCBsb25nIGVzcDsKICB1bnNpZ25lZCBsb25nIGVieDsK
ICB1bnNpZ25lZCBsb25nIGVkeDsKICB1bnNpZ25lZCBsb25nIGVjeDsKICB1bnNpZ25lZCBs
b25nIGVheDsKICB1bnNpZ25lZCBsb25nIHRyYXBubzsKICB1bnNpZ25lZCBsb25nIGVycjsK
ICB1bnNpZ25lZCBsb25nIGVpcDsKICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgdW5z
aWduZWQgbG9uZyBlZmxhZ3M7CiAgdW5zaWduZWQgbG9uZyBlc3BfYXRfc2lnbmFsOwogIHVu
c2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKICBzdHJ1Y3QgX2Zwc3RhdGUgKiBmcHN0YXRlOwog
IHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKICB1bnNpZ25lZCBsb25nIGNyMjsKfTsKIyAxNzUg
Ii91c3IvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQuaCIgMyA0CnN0cnVjdCBfeHNhdmVfaGRy
CnsKICBfX3VpbnQ2NF90IHhzdGF0ZV9idjsKICBfX3VpbnQ2NF90IHJlc2VydmVkMVsyXTsK
ICBfX3VpbnQ2NF90IHJlc2VydmVkMls1XTsKfTsKCnN0cnVjdCBfeW1taF9zdGF0ZQp7CiAg
X191aW50MzJfdCB5bW1oX3NwYWNlWzY0XTsKfTsKCnN0cnVjdCBfeHN0YXRlCnsKICBzdHJ1
Y3QgX2Zwc3RhdGUgZnBzdGF0ZTsKICBzdHJ1Y3QgX3hzYXZlX2hkciB4c3RhdGVfaGRyOwog
IHN0cnVjdCBfeW1taF9zdGF0ZSB5bW1oOwp9OwojIDMwNyAiL3Vzci9pbmNsdWRlL3NpZ25h
bC5oIiAyIDMgNAoKCmV4dGVybiBpbnQgc2lncmV0dXJuIChzdHJ1Y3Qgc2lnY29udGV4dCAq
X19zY3ApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoK
CiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMyA0CiMgMzE3ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgoKCgpl
eHRlcm4gaW50IHNpZ2ludGVycnVwdCAoaW50IF9fc2lnLCBpbnQgX19pbnRlcnJ1cHQpIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NpZ3N0YWNrLmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL3Np
Z3N0YWNrLmgiIDMgNApzdHJ1Y3Qgc2lnc3RhY2sKICB7CiAgICB2b2lkICpzc19zcDsKICAg
IGludCBzc19vbnN0YWNrOwogIH07CgoKCmVudW0KewogIFNTX09OU1RBQ0sgPSAxLAoKICBT
U19ESVNBQkxFCgp9OwojIDQ5ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzdGFjay5oIiAzIDQK
dHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sKICB7CiAgICB2b2lkICpzc19zcDsKICAgIGlu
dCBzc19mbGFnczsKICAgIHNpemVfdCBzc19zaXplOwogIH0gc3RhY2tfdDsKIyAzMjQgIi91
c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWNv
bnRleHQuaCIgMSAzIDQKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzIDQK
IyAxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS9z
eXMvdWNvbnRleHQuaCIgMiAzIDQKIyAxNDYgIi91c3IvaW5jbHVkZS9zeXMvdWNvbnRleHQu
aCIgMyA0CnR5cGVkZWYgaW50IGdyZWdfdDsKCgoKCgp0eXBlZGVmIGdyZWdfdCBncmVnc2V0
X3RbMTldOwojIDIwMCAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzIDQKc3RydWN0
IF9saWJjX2ZwcmVnCnsKICB1bnNpZ25lZCBzaG9ydCBpbnQgc2lnbmlmaWNhbmRbNF07CiAg
dW5zaWduZWQgc2hvcnQgaW50IGV4cG9uZW50Owp9OwoKc3RydWN0IF9saWJjX2Zwc3RhdGUK
ewogIHVuc2lnbmVkIGxvbmcgaW50IGN3OwogIHVuc2lnbmVkIGxvbmcgaW50IHN3OwogIHVu
c2lnbmVkIGxvbmcgaW50IHRhZzsKICB1bnNpZ25lZCBsb25nIGludCBpcG9mZjsKICB1bnNp
Z25lZCBsb25nIGludCBjc3NlbDsKICB1bnNpZ25lZCBsb25nIGludCBkYXRhb2ZmOwogIHVu
c2lnbmVkIGxvbmcgaW50IGRhdGFzZWw7CiAgc3RydWN0IF9saWJjX2ZwcmVnIF9zdFs4XTsK
ICB1bnNpZ25lZCBsb25nIGludCBzdGF0dXM7Cn07CgoKdHlwZWRlZiBzdHJ1Y3QgX2xpYmNf
ZnBzdGF0ZSAqZnByZWdzZXRfdDsKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGdyZWdzZXRf
dCBncmVnczsKCgogICAgZnByZWdzZXRfdCBmcHJlZ3M7CiAgICB1bnNpZ25lZCBsb25nIGlu
dCBvbGRtYXNrOwogICAgdW5zaWduZWQgbG9uZyBpbnQgY3IyOwogIH0gbWNvbnRleHRfdDsK
Cgp0eXBlZGVmIHN0cnVjdCB1Y29udGV4dAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHVj
X2ZsYWdzOwogICAgc3RydWN0IHVjb250ZXh0ICp1Y19saW5rOwogICAgc3RhY2tfdCB1Y19z
dGFjazsKICAgIG1jb250ZXh0X3QgdWNfbWNvbnRleHQ7CiAgICBfX3NpZ3NldF90IHVjX3Np
Z21hc2s7CiAgICBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSBfX2ZwcmVnc19tZW07CiAgfSB1Y29u
dGV4dF90OwojIDMyNyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAoKCgoKCmV4dGVy
biBpbnQgc2lnc3RhY2sgKHN0cnVjdCBzaWdzdGFjayAqX19zcywgc3RydWN0IHNpZ3N0YWNr
ICpfX29zcykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp
IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKCgpleHRlcm4gaW50IHNpZ2Fs
dHN0YWNrIChjb25zdCBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKl9fcmVzdHJpY3QgX19zcywKICAg
c3RydWN0IHNpZ2FsdHN0YWNrICpfX3Jlc3RyaWN0IF9fb3NzKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDM2MiAiL3Vzci9pbmNsdWRlL3NpZ25hbC5o
IiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWd0aHJlYWQuaCIgMSAzIDQKIyAzMCAi
L3Vzci9pbmNsdWRlL2JpdHMvc2lndGhyZWFkLmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRf
c2lnbWFzayAoaW50IF9faG93LAogICAgICAgY29uc3QgX19zaWdzZXRfdCAqX19yZXN0cmlj
dCBfX25ld21hc2ssCiAgICAgICBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fb2xkbWFzaylf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQg
cHRocmVhZF9raWxsIChwdGhyZWFkX3QgX190aHJlYWRpZCwgaW50IF9fc2lnbm8pIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMzYzICIvdXNyL2luY2x1
ZGUvc2lnbmFsLmgiIDIgMyA0CgoKCgoKCmV4dGVybiBpbnQgX19saWJjX2N1cnJlbnRfc2ln
cnRtaW4gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7
CgpleHRlcm4gaW50IF9fbGliY19jdXJyZW50X3NpZ3J0bWF4ICh2b2lkKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKIyA0MiAibWFjaGluZS5jIiAy
CiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVkZS9l
cnJuby5oIiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMSAzIDQK
IyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl
L2xpbnV4L2Vycm5vLmgiIDEgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIiAx
IDMgNAojIDEgIi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIiAxIDMgNAoKCgoj
IDEgIi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmgiIDEgMyA0CiMgNSAi
L3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL2FzbS9lcnJuby5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAyIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAyIDMgNAojIDUwICIv
dXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzIDQKZXh0ZXJuIGludCAqX19lcnJub19sb2Nh
dGlvbiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMzYgIi91c3IvaW5jbHVkZS9lcnJuby5o
IiAyIDMgNAojIDU4ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CgojIDQzICJtYWNoaW5l
LmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNs
dWRlL2ZjbnRsLmgiIDMgNAoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5o
IiAxIDMgNAojIDM1ICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAzIDQKc3RydWN0IGZs
b2NrCiAgewogICAgc2hvcnQgaW50IGxfdHlwZTsKICAgIHNob3J0IGludCBsX3doZW5jZTsK
CiAgICBfX29mZl90IGxfc3RhcnQ7CiAgICBfX29mZl90IGxfbGVuOwoKCgoKICAgIF9fcGlk
X3QgbF9waWQ7CiAgfTsKIyA2MSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMyA0CiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwtbGludXguaCIgMSAzIDQKIyAzNDUgIi91c3Iv
aW5jbHVkZS9iaXRzL2ZjbnRsLWxpbnV4LmgiIDMgNAoKIyA0MTkgIi91c3IvaW5jbHVkZS9i
aXRzL2ZjbnRsLWxpbnV4LmgiIDMgNAoKIyA2MSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwu
aCIgMiAzIDQKIyAzNiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIgMyA0CiMgNzYgIi91c3Iv
aW5jbHVkZS9mY250bC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAoj
IDc3ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9zdGF0LmgiIDEgMyA0CiMgNDYgIi91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMyA0CnN0
cnVjdCBzdGF0CiAgewogICAgX19kZXZfdCBzdF9kZXY7CgogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9fcGFkMTsKCgogICAgX19pbm9fdCBzdF9pbm87CgoKCgogICAgX19tb2RlX3Qgc3Rf
bW9kZTsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKCgoKCiAgICBfX3VpZF90IHN0X3VpZDsK
ICAgIF9fZ2lkX3Qgc3RfZ2lkOwoKCgogICAgX19kZXZfdCBzdF9yZGV2OwoKICAgIHVuc2ln
bmVkIHNob3J0IGludCBfX3BhZDI7CgoKICAgIF9fb2ZmX3Qgc3Rfc2l6ZTsKCgoKICAgIF9f
Ymxrc2l6ZV90IHN0X2Jsa3NpemU7CgogICAgX19ibGtjbnRfdCBzdF9ibG9ja3M7CiMgOTEg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMyA0CiAgICBzdHJ1Y3QgdGltZXNwZWMgc3Rf
YXRpbTsKICAgIHN0cnVjdCB0aW1lc3BlYyBzdF9tdGltOwogICAgc3RydWN0IHRpbWVzcGVj
IHN0X2N0aW07CiMgMTA5ICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDMgNAogICAgdW5z
aWduZWQgbG9uZyBpbnQgX19nbGliY19yZXNlcnZlZDQ7CiAgICB1bnNpZ25lZCBsb25nIGlu
dCBfX2dsaWJjX3Jlc2VydmVkNTsKCgoKCiAgfTsKIyA3OCAiL3Vzci9pbmNsdWRlL2ZjbnRs
LmgiIDIgMyA0CiMgMTY5ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQg
ZmNudGwgKGludCBfX2ZkLCBpbnQgX19jbWQsIC4uLik7CiMgMTc5ICIvdXNyL2luY2x1ZGUv
ZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgb3BlbiAoY29uc3QgY2hhciAqX19maWxlLCBpbnQg
X19vZmxhZywgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMjAz
ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgb3BlbmF0IChpbnQgX19m
ZCwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19vZmxhZywgLi4uKQogICAgIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKIyAyMjUgIi91c3IvaW5jbHVkZS9mY250bC5o
IiAzIDQKZXh0ZXJuIGludCBjcmVhdCAoY29uc3QgY2hhciAqX19maWxlLCBtb2RlX3QgX19t
b2RlKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMjU0ICIvdXNyL2lu
Y2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19j
bWQsIG9mZl90IF9fbGVuKTsKIyAyNzEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKZXh0
ZXJuIGludCBwb3NpeF9mYWR2aXNlIChpbnQgX19mZCwgb2ZmX3QgX19vZmZzZXQsIG9mZl90
IF9fbGVuLAogICAgIGludCBfX2FkdmlzZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
ICwgX19sZWFmX18pKTsKIyAyOTMgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKZXh0ZXJu
IGludCBwb3NpeF9mYWxsb2NhdGUgKGludCBfX2ZkLCBvZmZfdCBfX29mZnNldCwgb2ZmX3Qg
X19sZW4pOwojIDMxNSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNAoKIyA0NCAibWFjaGlu
ZS5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMyA0CiMgMjggIi91c3IvaW5j
bHVkZS9jdHlwZS5oIiAzIDQKCiMgNDYgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKZW51
bQp7CiAgX0lTdXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgxIDw8
ICgwKSkgPj4gOCkpLAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8PCA4
KSA6ICgoMSA8PCAoMSkpID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8
ICgyKSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwg
OCA/ICgoMSA8PCAoMykpIDw8IDgpIDogKCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdp
dCA9ICgoNCkgPCA4ID8gKCgxIDw8ICg0KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSks
CiAgX0lTc3BhY2UgPSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1
KSkgPj4gOCkpLAogIF9JU3ByaW50ID0gKCg2KSA8IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6
ICgoMSA8PCAoNikpID4+IDgpKSwKICBfSVNncmFwaCA9ICgoNykgPCA4ID8gKCgxIDw8ICg3
KSkgPDwgOCkgOiAoKDEgPDwgKDcpKSA+PiA4KSksCiAgX0lTYmxhbmsgPSAoKDgpIDwgOCA/
ICgoMSA8PCAoOCkpIDw8IDgpIDogKCgxIDw8ICg4KSkgPj4gOCkpLAogIF9JU2NudHJsID0g
KCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8PCA4KSA6ICgoMSA8PCAoOSkpID4+IDgpKSwKICBf
SVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8PCAoMTApKSA8PCA4KSA6ICgoMSA8PCAoMTAp
KSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8IDggPyAoKDEgPDwgKDExKSkgPDwgOCkg
OiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgNzkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAz
IDQKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqKl9fY3R5cGVfYl9sb2MgKHZv
aWQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBjb25zdCBfX2ludDMyX3QgKipfX2N0
eXBlX3RvbG93ZXJfbG9jICh2b2lkKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gY29u
c3QgX19pbnQzMl90ICoqX19jdHlwZV90b3VwcGVyX2xvYyAodm9pZCkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKIyAxMDQgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKCgoKCgoKZXh0ZXJu
IGludCBpc2FsbnVtIChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSk7CmV4dGVybiBpbnQgaXNhbHBoYSAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc2RpZ2l0IChp
bnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiBp
bnQgaXNsb3dlciAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf
XykpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc3ByaW50IChpbnQpIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiBpbnQgaXNwdW5jdCAoaW50
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50
IGlzc3BhY2UgKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KTsKZXh0ZXJuIGludCBpc3VwcGVyIChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSk7CmV4dGVybiBpbnQgaXN4ZGlnaXQgKGludCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGludCB0b2xvd2VyIChp
bnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4
dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
ICwgX19sZWFmX18pKTsKCgoKCgoKCgpleHRlcm4gaW50IGlzYmxhbmsgKGludCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgojIDE1MCAiL3Vzci9pbmNs
dWRlL2N0eXBlLmgiIDMgNApleHRlcm4gaW50IGlzYXNjaWkgKGludCBfX2MpIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBpbnQgdG9hc2Np
aSAoaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK
CgoKZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50IF90b2xvd2VyIChpbnQpIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMjU3ICIvdXNyL2luY2x1ZGUvY3R5
cGUuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzIDQKIyAyNyAiL3Vz
ci9pbmNsdWRlL3hsb2NhbGUuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVj
dAp7CgogIHN0cnVjdCBfX2xvY2FsZV9kYXRhICpfX2xvY2FsZXNbMTNdOwoKCiAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CiAgY29uc3QgaW50ICpfX2N0eXBlX3Rv
bG93ZXI7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvdXBwZXI7CgoKICBjb25zdCBjaGFyICpf
X25hbWVzWzEzXTsKfSAqX19sb2NhbGVfdDsKCgp0eXBlZGVmIF9fbG9jYWxlX3QgbG9jYWxl
X3Q7CiMgMjU4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzIDQKIyAyNzEgIi91c3IvaW5j
bHVkZS9jdHlwZS5oIiAzIDQKZXh0ZXJuIGludCBpc2FsbnVtX2wgKGludCwgX19sb2NhbGVf
dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu
dCBpc2FscGhhX2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc2NudHJsX2wgKGludCwgX19sb2NhbGVf
dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu
dCBpc2RpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc2xvd2VyX2wgKGludCwgX19sb2NhbGVf
dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu
dCBpc2dyYXBoX2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc3ByaW50X2wgKGludCwgX19sb2NhbGVf
dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu
dCBpc3B1bmN0X2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc3NwYWNlX2wgKGludCwgX19sb2NhbGVf
dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu
dCBpc3VwcGVyX2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc3hkaWdpdF9sIChpbnQsIF9fbG9jYWxl
X3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgpleHRlcm4g
aW50IGlzYmxhbmtfbCAoaW50LCBfX2xvY2FsZV90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gaW50IF9fdG9sb3dlcl9sIChpbnQgX19j
LCBfX2xvY2FsZV90IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm
X18pKTsKZXh0ZXJuIGludCB0b2xvd2VyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQg
X190b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50IHRvdXBwZXJfbCAoaW50IF9f
YywgX19sb2NhbGVfdCBfX2wpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSk7CiMgMzQ3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CgojIDQ1ICJtYWNoaW5l
LmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgMjcgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMyA0CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt
bGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNsdWRl
L3N0cmluZy5oIiAyIDMgNAoKCgoKCgoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpf
X3Jlc3RyaWN0IF9fZGVzdCwgY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAg
IHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiB2b2lkICpt
ZW1tb3ZlICh2b2lkICpfX2Rlc3QsIGNvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2Nw
eSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19z
cmMsCiAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSwgMikpKTsKCgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2Ms
IHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgbWVtY21w
IChjb25zdCB2b2lkICpfX3MxLCBjb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAg
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoj
IDkyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gdm9pZCAqbWVtY2hyIChj
b25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCiMgMTIzICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDMgNAoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LAogICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNp
emVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGNoYXIg
KnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zcmMpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gY2hhciAq
c3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zcmMsCiAgICAgICAgc2l6ZV90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7
CgoKZXh0ZXJuIGludCBzdHJjbXAgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9f
czIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs
IDIpKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNo
YXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChjb25zdCBj
aGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJt
IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3NyYywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCiMg
MTYyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gaW50IHN0cmNvbGxfbCAo
Y29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDMp
KSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBjb25zdCBjaGFy
ICpfX3NyYywgc2l6ZV90IF9fbiwKICAgIF9fbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMiwgNCkpKTsKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKGNvbnN0IGNoYXIgKl9fcykK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli
dXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp
OwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoY29uc3QgY2hhciAqX19zdHJpbmcsIHNp
emVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMSkpKTsKIyAyMDYgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CgojIDIzMSAi
L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cmNociAoY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19jKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs
IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxKSkpOwojIDI1OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQK
ZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgojIDI3
NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKCgoKZXh0ZXJuIHNpemVfdCBzdHJjc3Bu
IChjb25zdCBjaGFyICpfX3MsIGNvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBz
aXplX3Qgc3Ryc3BuIChjb25zdCBjaGFyICpfX3MsIGNvbnN0IGNoYXIgKl9fYWNjZXB0KQog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp
OwojIDMxMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cnBi
cmsgKGNvbnN0IGNoYXIgKl9fcywgY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgMzM3ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gY2hhciAqc3Ryc3RyIChjb25zdCBj
aGFyICpfX2hheXN0YWNrLCBjb25zdCBjaGFyICpfX25lZWRsZSkKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCmV4dGVybiBj
aGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVsaW0pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm
X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCgpleHRlcm4gY2hh
ciAqX19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICBjb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZGVsaW0sCiAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChj
aGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAog
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKQogICAgIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgyLCAzKSkpOwojIDM5MiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKCgpleHRl
cm4gc2l6ZV90IHN0cmxlbiAoY29uc3QgY2hhciAqX19zKQogICAgIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBzaXplX3Qg
c3RybmxlbiAoY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpl
eHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fICwgX19sZWFmX18pKTsKCiMgNDIyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDMgNApleHRlcm4gaW50IHN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYs
IHNpemVfdCBfX2J1ZmxlbikgX19hc21fXyAoIiIgIl9feHBnX3N0cmVycm9yX3IiKSBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCgogICAgICAgICAgICAgICAg
ICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CiMgNDQwICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gY2hhciAqc3RyZXJyb3JfbCAoaW50IF9f
ZXJybnVtLCBfX2xvY2FsZV90IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg
X19sZWFmX18pKTsKCgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVf
dCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gdm9pZCBiY29weSAoY29u
c3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXpl
X3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0
cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IGJjbXAgKGNvbnN0
IHZvaWQgKl9fczEsIGNvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgNDg0ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gY2hhciAqaW5kZXggKGNvbnN0IGNo
YXIgKl9fcywgaW50IF9fYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKTsKIyA1MTIgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4
dGVybiBjaGFyICpyaW5kZXggKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCmV4dGVy
biBpbnQgZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyA1MjkgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMyA0CmV4dGVybiBpbnQgc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqX19z
MSwgY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wIChjb25z
dCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDU1MiAi
L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAq
Kl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGNoYXIg
KnN0cnNpZ25hbCAoaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBf
X2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDEsIDIpKSk7CmV4dGVybiBjaGFyICpzdHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19k
ZXN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxLCAyKSkpOwoKCgpleHRlcm4gY2hhciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwKICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zcmMsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg
X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgNjU4
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAoKIyA0NiAibWFjaGluZS5jIiAyCiMgMSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzIDQKIyAyOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MyA0CgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzOCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAz
IDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMyA0CiMgNDIgIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDIgMyA0CiMgMTMxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQK
CgpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91
cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwogIGludCB0bV95ZWFyOwogIGludCB0
bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2RzdDsKCgogIGxvbmcgaW50IHRt
X2dtdG9mZjsKICBjb25zdCBjaGFyICp0bV96b25lOwoKCgoKfTsKCgoKCgoKCgpzdHJ1Y3Qg
aXRpbWVyc3BlYwogIHsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAgIHN0
cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKICB9OwoKCnN0cnVjdCBzaWdldmVudDsKIyAxODYg
Ii91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCgpleHRlcm4gY2xvY2tfdCBjbG9jayAodm9p
ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4g
dGltZV90IHRpbWUgKHRpbWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QgX190
aW1lMSwgdGltZV90IF9fdGltZTApCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIHRp
bWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwKICAgY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgojIDIyMyAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBzaXplX3Qgc3RyZnRpbWVfbCAoY2hhciAqX19y
ZXN0cmljdCBfX3MsIHNpemVfdCBfX21heHNpemUsCiAgICAgY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwKICAgICBjb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCwK
ICAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpOwojIDIzNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CgoKCmV4dGVybiBz
dHJ1Y3QgdG0gKmdtdGltZSAoY29uc3QgdGltZV90ICpfX3RpbWVyKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2Nh
bHRpbWUgKGNvbnN0IHRpbWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnbXRpbWVfciAoY29u
c3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICBzdHJ1Y3QgdG0gKl9fcmVz
dHJpY3QgX190cCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK
CgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IgKGNvbnN0IHRpbWVfdCAqX19yZXN0
cmljdCBfX3RpbWVyLAogICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKZXh0ZXJuIGNo
YXIgKmFzY3RpbWUgKGNvbnN0IHN0cnVjdCB0bSAqX190cCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gY2hhciAqY3RpbWUgKGNvbnN0IHRp
bWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KTsKCgoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lX3IgKGNvbnN0IHN0cnVjdCB0bSAqX19y
ZXN0cmljdCBfX3RwLAogICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBjaGFyICpjdGltZV9yIChj
b25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoK
CgoKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwpleHRlcm4gaW50IF9fZGF5bGlnaHQ7CmV4
dGVybiBsb25nIGludCBfX3RpbWV6b25lOwoKCgoKZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsK
CgoKZXh0ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVybiBsb25nIGlu
dCB0aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0aW1lIChjb25zdCB0aW1lX3QgKl9fd2hl
bikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAzMTkgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gdGltZV90IHRpbWVnbSAoc3RydWN0IHRt
ICpfX3RwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4
dGVybiB0aW1lX3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKl9fdHApIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGludCBkeXNpemUgKGludCBf
X3llYXIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDMzNCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0
CmV4dGVybiBpbnQgbmFub3NsZWVwIChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVz
dGVkX3RpbWUsCiAgICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbWFpbmluZyk7CgoKCmV4
dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRp
bWVzcGVjICpfX3JlcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KTsKCgpleHRlcm4gaW50IGNsb2NrX2dldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBz
dHJ1Y3QgdGltZXNwZWMgKl9fdHApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f
bGVhZl9fKSk7CgoKZXh0ZXJuIGludCBjbG9ja19zZXR0aW1lIChjbG9ja2lkX3QgX19jbG9j
a19pZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAgIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgY2xvY2tfbmFu
b3NsZWVwIChjbG9ja2lkX3QgX19jbG9ja19pZCwgaW50IF9fZmxhZ3MsCiAgICAgICBjb25z
dCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxLAogICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3Jl
bSk7CgoKZXh0ZXJuIGludCBjbG9ja19nZXRjcHVjbG9ja2lkIChwaWRfdCBfX3BpZCwgY2xv
Y2tpZF90ICpfX2Nsb2NrX2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpOwoKCgoKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUgKGNsb2NraWRfdCBfX2Nsb2Nr
X2lkLAogICAgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fZXZwLAogICAgdGltZXJf
dCAqX19yZXN0cmljdCBfX3RpbWVyaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs
IF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUgKHRpbWVyX3QgX190aW1l
cmlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVy
biBpbnQgdGltZXJfc2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIGludCBfX2ZsYWdzLAog
ICAgIGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fdmFsdWUsCiAgICAg
c3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX19vdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1l
ICh0aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gaW50
IHRpbWVyX2dldG92ZXJydW4gKHRpbWVyX3QgX190aW1lcmlkKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBpbnQgdGltZXNwZWNfZ2V0
IChzdHJ1Y3QgdGltZXNwZWMgKl9fdHMsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDEpKSk7CiMgNDMwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKCiMgNDcgIm1hY2hp
bmUuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzIDQKIyAxMDIgIi91
c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0
YXQuaCIgMSAzIDQKIyAxMDUgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMgNAojIDIw
OCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IHN0YXQgKGNvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBf
X2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBpbnQgZnN0YXQgKGlu
dCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwojIDIz
NyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IGZzdGF0YXQgKGlu
dCBfX2ZkLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgc3RydWN0IHN0
YXQgKl9fcmVzdHJpY3QgX19idWYsIGludCBfX2ZsYWcpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDIsIDMpKSk7CiMgMjYyICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CmV4dGVybiBp
bnQgbHN0YXQgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgc3RydWN0IHN0
YXQgKl9fcmVzdHJpY3QgX19idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f
bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDI4MyAi
L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IGNobW9kIChjb25zdCBj
aGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp
KTsKCgoKCgpleHRlcm4gaW50IGxjaG1vZCAoY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVf
dCBfX21vZGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4gaW50IGZj
aG1vZCAoaW50IF9fZmQsIF9fbW9kZV90IF9fbW9kZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IGZjaG1vZGF0IChpbnQgX19m
ZCwgY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUsCiAgICAgICBpbnQgX19m
bGFnKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpIDsKCgoKCgoKZXh0ZXJuIF9fbW9kZV90
IHVtYXNrIChfX21vZGVfdCBfX21hc2spIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs
IF9fbGVhZl9fKSk7CiMgMzIwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CmV4dGVy
biBpbnQgbWtkaXIgKGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKQogICAg
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgbWtkaXJhdCAoaW50IF9f
ZmQsIGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKQogICAgIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgyKSkpOwoKCgoKCgpleHRlcm4gaW50IG1rbm9kIChjb25zdCBjaGFyICpfX3Bh
dGgsIF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCBfX2RldikKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IG1rbm9kYXQgKGludCBfX2ZkLCBjb25zdCBjaGFy
ICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgX19kZXZfdCBfX2RldikgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDIpKSk7CgoKCgoKZXh0ZXJuIGludCBta2ZpZm8gKGNvbnN0IGNoYXIgKl9f
cGF0aCwgX19tb2RlX3QgX19tb2RlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoK
CmV4dGVybiBpbnQgbWtmaWZvYXQgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3BhdGgsIF9f
bW9kZV90IF9fbW9kZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKCgpleHRlcm4g
aW50IHV0aW1lbnNhdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICBj
b25zdCBzdHJ1Y3QgdGltZXNwZWMgX190aW1lc1syXSwKICAgICAgICBpbnQgX19mbGFncykK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKCmV4dGVybiBpbnQgZnV0aW1lbnMgKGlu
dCBfX2ZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgX190aW1lc1syXSkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAzOTggIi91c3IvaW5jbHVkZS9zeXMv
c3RhdC5oIiAzIDQKZXh0ZXJuIGludCBfX2Z4c3RhdCAoaW50IF9fdmVyLCBpbnQgX19maWxk
ZXMsIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkp
OwpleHRlcm4gaW50IF9feHN0YXQgKGludCBfX3ZlciwgY29uc3QgY2hhciAqX19maWxlbmFt
ZSwKICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAz
KSkpOwpleHRlcm4gaW50IF9fbHhzdGF0IChpbnQgX192ZXIsIGNvbnN0IGNoYXIgKl9fZmls
ZW5hbWUsCiAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDIsIDMpKSk7CmV4dGVybiBpbnQgX19meHN0YXRhdCAoaW50IF9fdmVyLCBpbnQgX19maWxk
ZXMsIGNvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0
YXRfYnVmLCBpbnQgX19mbGFnKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs
IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpOwojIDQ0
MSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IF9feG1rbm9kIChp
bnQgX192ZXIsIGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAogICAgICAg
X19kZXZfdCAqX19kZXYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f
KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpOwoKZXh0ZXJuIGludCBf
X3hta25vZGF0IChpbnQgX192ZXIsIGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3BhdGgsCiAg
ICAgICAgIF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCAqX19kZXYpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDMsIDUpKSk7CiMgNTMzICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cgoj
IDQ5ICJtYWNoaW5lLmMiIDIKCiMgMSAiZ3BfY29uZmlnLmgiIDEKIyAzMjcgImdwX2NvbmZp
Zy5oIgojIDEgImFyY2hfZGVwLmgiIDEKIyAzMjggImdwX2NvbmZpZy5oIiAyCiMgMSAicGxf
bG9uZy5oIiAxCiMgNDEgInBsX2xvbmcuaCIKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRo
YXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRpbnQuaCIgMSAzIDQKIyA5ICIvdXNyL2xpYi9n
Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRpbnQuaCIgMyA0CiMgMSAi
L3Vzci9pbmNsdWRlL3N0ZGludC5oIiAxIDMgNAojIDI2ICIvdXNyL2luY2x1ZGUvc3RkaW50
LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMyA0CiMgMjcgIi91
c3IvaW5jbHVkZS9zdGRpbnQuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jk
c2l6ZS5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDIgMyA0CiMgNDgg
Ii91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50
OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50MTZfdDsKCnR5cGVkZWYgdW5z
aWduZWQgaW50IHVpbnQzMl90OwoKCgoKCl9fZXh0ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IHVpbnQ2NF90OwoKCgoKCgp0eXBlZGVmIHNpZ25lZCBjaGFyIGlu
dF9sZWFzdDhfdDsKdHlwZWRlZiBzaG9ydCBpbnQgaW50X2xlYXN0MTZfdDsKdHlwZWRlZiBp
bnQgaW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBp
bnQgaW50X2xlYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfbGVhc3Q4
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVm
IHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWludF9sZWFzdDY0X3Q7CgoKCgoKCnR5cGVkZWYg
c2lnbmVkIGNoYXIgaW50X2Zhc3Q4X3Q7CgoKCgoKdHlwZWRlZiBpbnQgaW50X2Zhc3QxNl90
Owp0eXBlZGVmIGludCBpbnRfZmFzdDMyX3Q7Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiBsb25n
IGxvbmcgaW50IGludF9mYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRf
ZmFzdDhfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3QxNl90Owp0eXBl
ZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3QzMl90OwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50X2Zhc3Q2NF90OwojIDEyNSAiL3Vzci9pbmNs
dWRlL3N0ZGludC5oIiAzIDQKdHlwZWRlZiBpbnQgaW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgdWludHB0cl90OwojIDEzNyAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzIDQK
X19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50bWF4X3Q7Cl9fZXh0ZW5z
aW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRtYXhfdDsKIyAxMCAi
L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkaW50Lmgi
IDIgMyA0CiMgNDIgInBsX2xvbmcuaCIgMgoKIyAxICJncF9jb25maWcuaCIgMQojIDQ0ICJw
bF9sb25nLmgiIDIKCgoKCiMgNDcgInBsX2xvbmcuaCIKdHlwZWRlZiBpbnRwdHJfdCBQbExv
bmc7CnR5cGVkZWYgdWludHB0cl90IFBsVUxvbmc7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2lu
dHR5cGVzLmgiIDEgMyA0CiMgMzQgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKCiMg
MzQgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIGludCBfX2d3
Y2hhcl90OwojIDI2NiAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMgNAoKIyAyODAgIi91
c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBfX2V4
dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQgcXVvdDsKICAgIF9fZXh0ZW5zaW9uX18gbG9uZyBs
b25nIGludCByZW07CiAgfSBpbWF4ZGl2X3Q7CgoKCgoKZXh0ZXJuIGludG1heF90IGltYXhh
YnMgKGludG1heF90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm
X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGltYXhkaXZfdCBp
bWF4ZGl2IChpbnRtYXhfdCBfX251bWVyLCBpbnRtYXhfdCBfX2Rlbm9tKQogICAgICBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gaW50bWF4X3Qgc3RydG9pbWF4IChjb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK
ZXh0ZXJuIHVpbnRtYXhfdCBzdHJ0b3VtYXggKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgY2hhciAqKiBfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnRt
YXhfdCB3Y3N0b2ltYXggKGNvbnN0IF9fZ3djaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICBfX2d3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiB1
aW50bWF4X3Qgd2NzdG91bWF4IChjb25zdCBfX2d3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgIF9fZ3djaGFyX3QgKiogX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz
ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDQz
MiAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMgNAoKIyA1MyAicGxfbG9uZy5oIiAyCiMg
MzI5ICJncF9jb25maWcuaCIgMgojIDUxICJtYWNoaW5lLmMiIDIKCgoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvcHdkLmgiIDEgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS9wd2QuaCIgMyA0CgoK
CgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAyIDMgNAojIDQ5ICIv
dXNyL2luY2x1ZGUvcHdkLmgiIDMgNApzdHJ1Y3QgcGFzc3dkCnsKICBjaGFyICpwd19uYW1l
OwogIGNoYXIgKnB3X3Bhc3N3ZDsKICBfX3VpZF90IHB3X3VpZDsKICBfX2dpZF90IHB3X2dp
ZDsKICBjaGFyICpwd19nZWNvczsKICBjaGFyICpwd19kaXI7CiAgY2hhciAqcHdfc2hlbGw7
Cn07CiMgNzIgIi91c3IvaW5jbHVkZS9wd2QuaCIgMyA0CmV4dGVybiB2b2lkIHNldHB3ZW50
ICh2b2lkKTsKCgoKCgpleHRlcm4gdm9pZCBlbmRwd2VudCAodm9pZCk7CgoKCgoKZXh0ZXJu
IHN0cnVjdCBwYXNzd2QgKmdldHB3ZW50ICh2b2lkKTsKIyA5NCAiL3Vzci9pbmNsdWRlL3B3
ZC5oIiAzIDQKZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmZnZXRwd2VudCAoRklMRSAqX19zdHJl
YW0pIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKCmV4dGVybiBp
bnQgcHV0cHdlbnQgKGNvbnN0IHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19wLAogICAg
ICAgRklMRSAqX19yZXN0cmljdCBfX2YpOwoKCgoKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAq
Z2V0cHd1aWQgKF9fdWlkX3QgX191aWQpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgcGFzc3dkICpn
ZXRwd25hbSAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDEpKSk7CiMgMTM5ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDMgNApleHRlcm4gaW50IGdl
dHB3ZW50X3IgKHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCiAgICAg
ICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAg
ICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpCiAgICAgICAgIF9fYXR0
cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgNCkpKTsKCgpleHRlcm4gaW50IGdldHB3
dWlkX3IgKF9fdWlkX3QgX191aWQsCiAgICAgICAgIHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJp
Y3QgX19yZXN1bHRidWYsCiAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNp
emVfdCBfX2J1ZmxlbiwKICAgICAgICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19y
ZXN1bHQpCiAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMywgNSkp
KTsKCmV4dGVybiBpbnQgZ2V0cHduYW1fciAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25h
bWUsCiAgICAgICAgIHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCiAg
ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAg
ICAgICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpCiAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgMywgNSkpKTsKIyAxNjYgIi91c3Iv
aW5jbHVkZS9wd2QuaCIgMyA0CmV4dGVybiBpbnQgZmdldHB3ZW50X3IgKEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0sCiAgIHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRi
dWYsCiAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAg
c3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpCiAgIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSwgMiwgMywgNSkpKTsKIyAxODcgIi91c3IvaW5jbHVkZS9wd2Qu
aCIgMyA0CgojIDU4ICJtYWNoaW5lLmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDEgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CgojIDIwNSAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeF9vcHQu
aCIgMSAzIDQKIyAyMDYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMSAzIDQKIyAyMiAiL3Vzci9pbmNs
dWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dv
cmRzaXplLmgiIDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5o
IiAyIDMgNAojIDIxMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAojIDIyOSAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt
bGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyMzAgIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMiAzIDQKIyAyNTggIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CnR5
cGVkZWYgX191c2Vjb25kc190IHVzZWNvbmRzX3Q7CiMgMjc3ICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDMgNAp0eXBlZGVmIF9fc29ja2xlbl90IHNvY2tsZW5fdDsKIyAyOTAgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgYWNjZXNzIChjb25zdCBjaGFyICpf
X25hbWUsIGludCBfX3R5cGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDMwNyAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBmYWNjZXNzYXQgKGludCBfX2ZkLCBj
b25zdCBjaGFyICpfX2ZpbGUsIGludCBfX3R5cGUsIGludCBfX2ZsYWcpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDIpKSkgOwojIDMzNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0
ZXJuIF9fb2ZmX3QgbHNlZWsgKGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193
aGVuY2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMzU2
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IGNsb3NlIChpbnQgX19m
ZCk7CgoKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwg
c2l6ZV90IF9fbmJ5dGVzKSA7CgoKCgoKZXh0ZXJuIHNzaXplX3Qgd3JpdGUgKGludCBfX2Zk
LCBjb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbikgOwojIDM3OSAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHNzaXplX3QgcHJlYWQgKGludCBfX2ZkLCB2b2lkICpf
X2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLAogICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKCgoK
CgoKZXh0ZXJuIHNzaXplX3QgcHdyaXRlIChpbnQgX19mZCwgY29uc3Qgdm9pZCAqX19idWYs
IHNpemVfdCBfX24sCiAgICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKIyA0MjAgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgcGlwZSAoaW50IF9fcGlwZWRlc1sy
XSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CiMgNDM1ICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gdW5zaWduZWQgaW50IGFsYXJtICh1
bnNpZ25lZCBpbnQgX19zZWNvbmRzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpOwojIDQ0NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHVu
c2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50IF9fc2Vjb25kcyk7CgoKCgoKCgpleHRl
cm4gX191c2Vjb25kc190IHVhbGFybSAoX191c2Vjb25kc190IF9fdmFsdWUsIF9fdXNlY29u
ZHNfdCBfX2ludGVydmFsKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f
bGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgdXNsZWVwIChfX3VzZWNvbmRzX3QgX191c2Vj
b25kcyk7CiMgNDcyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IHBh
dXNlICh2b2lkKTsKCgoKZXh0ZXJuIGludCBjaG93biAoY29uc3QgY2hhciAqX19maWxlLCBf
X3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSkpKSA7CgoKCmV4dGVybiBpbnQgZmNob3duIChpbnQgX19mZCwgX191aWRfdCBfX293bmVy
LCBfX2dpZF90IF9fZ3JvdXApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSkgOwoKCgoKZXh0ZXJuIGludCBsY2hvd24gKGNvbnN0IGNoYXIgKl9fZmlsZSwgX191
aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp
KSkgOwoKCgoKCgpleHRlcm4gaW50IGZjaG93bmF0IChpbnQgX19mZCwgY29uc3QgY2hhciAq
X19maWxlLCBfX3VpZF90IF9fb3duZXIsCiAgICAgICBfX2dpZF90IF9fZ3JvdXAsIGludCBf
X2ZsYWcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSkgOwoKCgpleHRlcm4gaW50IGNoZGly
IChjb25zdCBjaGFyICpfX3BhdGgpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f
bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKZXh0ZXJu
IGludCBmY2hkaXIgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf
X2xlYWZfXykpIDsKIyA1MTQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBj
aGFyICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKIyA1MjggIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMyA0CmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgOwoKCgoK
ZXh0ZXJuIGludCBkdXAgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpIDsKCgpleHRlcm4gaW50IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIp
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgNTQ2ICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gY2hhciAqKl9fZW52aXJvbjsKCgoKCgoK
CmV4dGVybiBpbnQgZXhlY3ZlIChjb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKmNvbnN0IF9f
YXJndltdLAogICAgIGNoYXIgKmNvbnN0IF9fZW52cFtdKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg
MikpKTsKCgoKCmV4dGVybiBpbnQgZmV4ZWN2ZSAoaW50IF9fZmQsIGNoYXIgKmNvbnN0IF9f
YXJndltdLCBjaGFyICpjb25zdCBfX2VudnBbXSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikp
KTsKCgoKCmV4dGVybiBpbnQgZXhlY3YgKGNvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqY29u
c3QgX19hcmd2W10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm
X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBp
bnQgZXhlY2xlIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKl9fYXJnLCAuLi4p
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBpbnQgZXhlY2wgKGNv
bnN0IGNoYXIgKl9fcGF0aCwgY29uc3QgY2hhciAqX19hcmcsIC4uLikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSwgMikpKTsKCgoKZXh0ZXJuIGludCBleGVjdnAgKGNvbnN0IGNoYXIgKl9f
ZmlsZSwgY2hhciAqY29uc3QgX19hcmd2W10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp
KSk7CgoKCgpleHRlcm4gaW50IGV4ZWNscCAoY29uc3QgY2hhciAqX19maWxlLCBjb25zdCBj
aGFyICpfX2FyZywgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f
bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDYwMSAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMp
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJu
IHZvaWQgX2V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMSAzIDQKIyAy
NCAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMyA0CmVudW0KICB7CiAgICBfUENf
TElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAg
IF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoK
ICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENf
VkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9Q
Q19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRT
LAoKICAgIF9QQ19SRUNfSU5DUl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9T
SVpFLAoKICAgIF9QQ19SRUNfTUlOX1hGRVJfU0laRSwKCiAgICBfUENfUkVDX1hGRVJfQUxJ
R04sCgogICAgX1BDX0FMTE9DX1NJWkVfTUlOLAoKICAgIF9QQ19TWU1MSU5LX01BWCwKCiAg
ICBfUENfMl9TWU1MSU5LUwoKICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAg
ICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01B
WCwKCiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1Ra
TkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgog
ICAgX1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcs
CgogICAgX1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19Q
UklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lO
QywKCiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19N
RU1MT0NLX1JBTkdFLAoKICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVT
U0FHRV9QQVNTSU5HLAoKICAgIF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVN
T1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFY
LAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJfTUFY
LAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1ND
X1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFYLAoKICAg
IF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9TQ19T
SUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgoKCiAgICBfU0NfQkNfQkFTRV9N
QVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1NDQUxFX01BWCwKCiAgICBf
U0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKCiAgICBfU0Nf
RVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAgIF9TQ19MSU5F
X01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFY
LAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0NfMl9D
X0RFViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBf
U0NfMl9TV19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAg
IF9TQ19QSUlfWFRJLAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJO
RVQsCgogICAgX1NDX1BJSV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwK
CiAgICBfU0NfVUlPX01BWElPViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9W
LAoKICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRf
REdSQU0sCgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoK
ICAgIF9TQ19QSUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJF
QURTLAoKICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1Jf
U0laRV9NQVgsCgogICAgX1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05B
TUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVD
VE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhS
RUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19U
SFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwK
CiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RIUkVBRF9Q
UklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QsCgogICAgX1NDX1RI
UkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCgogICAg
X1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAgX1NDX0FW
UEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgsCgoK
ICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAg
ICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVO
X0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwK
CiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5f
WFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAg
X1NDX0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgog
ICAgX1NDX0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoK
ICAgIF9TQ19XT1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8s
CgogICAgX1NDX1NTSVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hB
Ul9NSU4sCgogICAgX1NDX1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0Nf
VUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAg
IF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdN
QVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxf
U0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYz
MiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1hCUzVfTFA2NF9PRkY2
NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19YT1BFTl9MRUdBQ1ks
CgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJF
QURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklFUlMsCgogICAg
X1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xBTkdfU1VQ
UE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUsCgog
ICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RF
VklDRV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZE
X01HTVQsCgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRU
UklCVVRFUywKCiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwK
CiAgICBfU0NfTU9OT1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAg
IF9TQ19TSU5HTEVfUFJPQ0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVB
REVSX1dSSVRFUl9MT0NLUywKCiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQ
LAoKICAgIF9TQ19SRUdFWF9WRVJTSU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lH
TkFMUywKCiAgICBfU0NfU1BBV04sCgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBf
U0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoK
ICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAgICBfU0NfVElNRU9VVFMsCgogICAgX1ND
X1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19VU0VSX0dST1VQUywKCiAgICBfU0Nf
VVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9QQlMsCgogICAgX1NDXzJfUEJTX0FDQ09VTlRJ
TkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAgICBfU0NfMl9QQlNfTUVTU0FHRSwKCiAg
ICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxPT1BfTUFYLAoKICAgIF9TQ19TVFJF
QU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAgICBfU0NfVjZfSUxQMzJfT0ZG
MzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0NfVjZfTFA2NF9PRkY2NCwK
CiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9OQU1FX01BWCwKCiAg
ICBfU0NfVFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAgICBfU0NfVFJB
Q0VfSU5IRVJJVCwKCiAgICBfU0NfVFJBQ0VfTE9HLAoKCiAgICBfU0NfTEVWRUwxX0lDQUNI
RV9TSVpFLAoKICAgIF9TQ19MRVZFTDFfSUNBQ0hFX0FTU09DLAoKICAgIF9TQ19MRVZFTDFf
SUNBQ0hFX0xJTkVTSVpFLAoKICAgIF9TQ19MRVZFTDFfRENBQ0hFX1NJWkUsCgogICAgX1ND
X0xFVkVMMV9EQ0FDSEVfQVNTT0MsCgogICAgX1NDX0xFVkVMMV9EQ0FDSEVfTElORVNJWkUs
CgogICAgX1NDX0xFVkVMMl9DQUNIRV9TSVpFLAoKICAgIF9TQ19MRVZFTDJfQ0FDSEVfQVNT
T0MsCgogICAgX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRSwKCiAgICBfU0NfTEVWRUwzX0NB
Q0hFX1NJWkUsCgogICAgX1NDX0xFVkVMM19DQUNIRV9BU1NPQywKCiAgICBfU0NfTEVWRUwz
X0NBQ0hFX0xJTkVTSVpFLAoKICAgIF9TQ19MRVZFTDRfQ0FDSEVfU0laRSwKCiAgICBfU0Nf
TEVWRUw0X0NBQ0hFX0FTU09DLAoKICAgIF9TQ19MRVZFTDRfQ0FDSEVfTElORVNJWkUsCgoK
CiAgICBfU0NfSVBWNiA9IF9TQ19MRVZFTDFfSUNBQ0hFX1NJWkUgKyA1MCwKCiAgICBfU0Nf
UkFXX1NPQ0tFVFMsCgoKICAgIF9TQ19WN19JTFAzMl9PRkYzMiwKCiAgICBfU0NfVjdfSUxQ
MzJfT0ZGQklHLAoKICAgIF9TQ19WN19MUDY0X09GRjY0LAoKICAgIF9TQ19WN19MUEJJR19P
RkZCSUcsCgoKICAgIF9TQ19TU19SRVBMX01BWCwKCgogICAgX1NDX1RSQUNFX0VWRU5UX05B
TUVfTUFYLAoKICAgIF9TQ19UUkFDRV9OQU1FX01BWCwKCiAgICBfU0NfVFJBQ0VfU1lTX01B
WCwKCiAgICBfU0NfVFJBQ0VfVVNFUl9FVkVOVF9NQVgsCgoKICAgIF9TQ19YT1BFTl9TVFJF
QU1TLAoKCiAgICBfU0NfVEhSRUFEX1JPQlVTVF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RI
UkVBRF9ST0JVU1RfUFJJT19QUk9URUNUCgogIH07CgoKZW51bQogIHsKICAgIF9DU19QQVRI
LAoKCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTLAoKCgogICAgX0NTX0dOVV9M
SUJDX1ZFUlNJT04sCgogICAgX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04sCgoKICAgIF9D
U19WNV9XSURUSF9SRVNUUklDVEVEX0VOVlMsCgoKCiAgICBfQ1NfVjdfV0lEVEhfUkVTVFJJ
Q1RFRF9FTlZTLAoKCgogICAgX0NTX0xGU19DRkxBR1MgPSAxMDAwLAoKICAgIF9DU19MRlNf
TERGTEFHUywKCiAgICBfQ1NfTEZTX0xJQlMsCgogICAgX0NTX0xGU19MSU5URkxBR1MsCgog
ICAgX0NTX0xGUzY0X0NGTEFHUywKCiAgICBfQ1NfTEZTNjRfTERGTEFHUywKCiAgICBfQ1Nf
TEZTNjRfTElCUywKCiAgICBfQ1NfTEZTNjRfTElOVEZMQUdTLAoKCiAgICBfQ1NfWEJTNV9J
TFAzMl9PRkYzMl9DRkxBR1MgPSAxMTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xE
RkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9J
TFAzMl9PRkYzMl9MSU5URkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFH
UywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9J
TFAzMl9PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdT
LAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRf
T0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xJQlMsCgogICAgX0NT
X1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklH
X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUywKCiAgICBfQ1Nf
WEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElO
VEZMQUdTLAoKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfQ0ZMQUdTLAoKICAgIF9D
U19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAz
Ml9PRkYzMl9MSUJTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MSU5URkxBR1Ms
CgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1BPU0lY
X1Y2X0lMUDMyX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZC
SUdfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAg
ICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQ
NjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSUJTLAoK
ICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhf
VjZfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklH
X0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSUJTLAoKICAgIF9D
U19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElOVEZMQUdTLAoKCiAgICBfQ1NfUE9TSVhfVjdf
SUxQMzJfT0ZGMzJfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MREZM
QUdTLAoKICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MSUJTLAoKICAgIF9DU19QT1NJ
WF9WN19JTFAzMl9PRkYzMl9MSU5URkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09G
RkJJR19DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19MREZMQUdTLAoK
ICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdfTElCUywKCiAgICBfQ1NfUE9TSVhfVjdf
SUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9D
RkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1Nf
UE9TSVhfVjdfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19QT1NJWF9WN19MUDY0X09GRjY0
X0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAg
ICBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3
X0xQQklHX09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTElO
VEZMQUdTLAoKCiAgICBfQ1NfVjZfRU5WLAoKICAgIF9DU19WN19FTlYKCiAgfTsKIyA2MTMg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgpleHRlcm4gbG9uZyBpbnQgcGF0aGNv
bmYgKGNvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKTsKCgpleHRlcm4gbG9uZyBpbnQgZnBhdGhjb25mIChpbnQgX19mZCwgaW50IF9f
bmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRl
cm4gbG9uZyBpbnQgc3lzY29uZiAoaW50IF9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19u
YW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBfX3Bp
ZF90IGdldHBwaWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSk7CgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gX19waWRfdCBfX2dldHBnaWQg
KF9fcGlkX3QgX19waWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f
KSk7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90IF9fcGlkKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gaW50IHNldHBn
aWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18gLCBfX2xlYWZfXykpOwojIDY2MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
IDQKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBfX3Bp
ZF90IGdldHNpZCAoX19waWRfdCBfX3BpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
ICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIF9fdWlkX3QgZ2V0dWlkICh2b2lkKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBfX3VpZF90IGdl
dGV1aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7
CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBfX2dpZF90IGdldGVnaWQgKHZvaWQpIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gaW50
IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CiMgNzAzICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDMgNApleHRlcm4gaW50IHNldHVpZCAoX191aWRfdCBfX3VpZCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgpleHRlcm4gaW50IHNldHJl
dWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJuIGludCBzZXRldWlkIChfX3Vp
ZF90IF9fdWlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK
CgoKCgoKZXh0ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19naWQpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJuIGludCBzZXRyZWdpZCAo
X19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZWdpZCAoX19naWRfdCBf
X2dpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CiMgNzU5
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gX19waWRfdCBmb3JrICh2b2lk
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoKCmV4dGVybiBfX3BpZF90
IHZmb3JrICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp
OwoKCgoKCmV4dGVybiBjaGFyICp0dHluYW1lIChpbnQgX19mZCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGlu
dCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKQogICAgIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgyKSkpIDsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBfX2ZkKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBpbnQgdHR5c2xv
dCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoK
CmV4dGVybiBpbnQgbGluayAoY29uc3QgY2hhciAqX19mcm9tLCBjb25zdCBjaGFyICpfX3Rv
KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpIDsKCgoKCmV4dGVybiBpbnQgbGlua2F0
IChpbnQgX19mcm9tZmQsIGNvbnN0IGNoYXIgKl9fZnJvbSwgaW50IF9fdG9mZCwKICAgICBj
b25zdCBjaGFyICpfX3RvLCBpbnQgX19mbGFncykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwg
NCkpKSA7CgoKCgpleHRlcm4gaW50IHN5bWxpbmsgKGNvbnN0IGNoYXIgKl9fZnJvbSwgY29u
c3QgY2hhciAqX190bykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKSA7CgoKCgpleHRl
cm4gc3NpemVfdCByZWFkbGluayAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgsCiAg
ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEsIDIpKSkgOwoKCgoKZXh0ZXJuIGludCBzeW1saW5rYXQgKGNvbnN0IGNoYXIg
Kl9fZnJvbSwgaW50IF9fdG9mZCwKICAgICAgICBjb25zdCBjaGFyICpfX3RvKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSwgMykpKSA7CgoKZXh0ZXJuIHNzaXplX3QgcmVhZGxpbmthdCAoaW50IF9f
ZmQsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wYXRoLAogICAgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fYnVmLCBzaXplX3QgX19sZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDMpKSkg
OwoKCgpleHRlcm4gaW50IHVubGluayAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCB1bmxpbmthdCAoaW50IF9fZmQsIGNvbnN0IGNo
YXIgKl9fbmFtZSwgaW50IF9fZmxhZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoK
ZXh0ZXJuIGludCBybWRpciAoY29uc3QgY2hhciAqX19wYXRoKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSkpKTsKCgoKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwIChpbnQgX19mZCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gaW50IHRjc2V0cGdy
cCAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQp
OwoKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVfdCBf
X25hbWVfbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRl
cm4gaW50IHNldGxvZ2luIChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwojIDg3NCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvdXNyL2luY2x1
ZGUvZ2V0b3B0LmgiIDEgMyA0CiMgNTcgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMyA0CmV4
dGVybiBjaGFyICpvcHRhcmc7CiMgNzEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMyA0CmV4
dGVybiBpbnQgb3B0aW5kOwoKCgoKZXh0ZXJuIGludCBvcHRlcnI7CgoKCmV4dGVybiBpbnQg
b3B0b3B0OwojIDE1MCAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzIDQKZXh0ZXJuIGludCBn
ZXRvcHQgKGludCBfX19hcmdjLCBjaGFyICpjb25zdCAqX19fYXJndiwgY29uc3QgY2hhciAq
X19zaG9ydG9wdHMpCiAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpOwojIDg3NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAoKCgoKCgoKZXh0
ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChjb25zdCBj
aGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7
CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlkIChsb25nIGludCBfX2lkKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKCgpleHRlcm4gaW50IGdldGRvbWFp
bm5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKQogICAgIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxKSkpIDsKZXh0ZXJuIGludCBzZXRkb21haW5uYW1lIChjb25zdCBjaGFyICpfX25hbWUs
IHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgoKZXh0ZXJu
IGludCB2aGFuZ3VwICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpOwoKCmV4dGVybiBpbnQgcmV2b2tlIChjb25zdCBjaGFyICpfX2ZpbGUpIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxKSkpIDsKCgoKCgoKCmV4dGVybiBpbnQgcHJvZmlsICh1bnNpZ25lZCBz
aG9ydCBpbnQgKl9fc2FtcGxlX2J1ZmZlciwgc2l6ZV90IF9fc2l6ZSwKICAgICBzaXplX3Qg
X19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKQogICAgIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwoKCgoKCmV4dGVybiBpbnQgYWNjdCAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gY2hhciAqZ2V0
dXNlcnNoZWxsICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf
XykpOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZvaWQpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiB2b2lkIHNldHVzZXJzaGVsbCAodm9p
ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRl
cm4gaW50IGRhZW1vbiAoaW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKCmV4dGVybiBpbnQgY2hy
b290IChjb25zdCBjaGFyICpfX3BhdGgpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs
IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKZXh0
ZXJuIGNoYXIgKmdldHBhc3MgKGNvbnN0IGNoYXIgKl9fcHJvbXB0KSBfX2F0dHJpYnV0ZV9f
ICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpleHRlcm4gaW50IGZzeW5jIChpbnQgX19m
ZCk7CiMgOTcyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gbG9uZyBpbnQg
Z2V0aG9zdGlkICh2b2lkKTsKCgpleHRlcm4gdm9pZCBzeW5jICh2b2lkKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBpbnQgZ2V0cGFn
ZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBnZXRkdGFibGVz
aXplICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoj
IDk5NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCB0cnVuY2F0ZSAo
Y29uc3QgY2hhciAqX19maWxlLCBfX29mZl90IF9fbGVuZ3RoKQogICAgIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxKSkpIDsKIyAxMDE5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4g
aW50IGZ0cnVuY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwojIDEwNDAgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgYnJrICh2b2lkICpfX2FkZHIpIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKCmV4dGVybiB2b2lkICpzYnJr
IChpbnRwdHJfdCBfX2RlbHRhKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpOwojIDEwNjEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBsb25n
IGludCBzeXNjYWxsIChsb25nIGludCBfX3N5c25vLCAuLi4pIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMTExNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzIDQKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGludCBfX2ZpbGRlcyk7CiMgMTE1NCAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKCiMgNTkgIm1hY2hpbmUuYyIgMgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvcGFyYW0uaCIgMSAzIDQKIyAyMyAiL3Vzci9pbmNsdWRlL3N5cy9wYXJh
bS5oIiAzIDQKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAy
IDMgNAoKCiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1
ZGUvbGltaXRzLmgiIDEgMyA0CiMgMzQgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51
eC82LjEuMS9pbmNsdWRlL2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1y
ZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzIDQKCgoKCgoKIyAx
ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9saW1pdHMu
aCIgMSAzIDQKIyAxNjggIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9p
bmNsdWRlL2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0
CiMgMTQzICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3Bvc2l4MV9saW0uaCIgMSAzIDQKIyAxNjAgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4
MV9saW0uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDEgMyA0
CiMgMzggIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMyA0CiMgMzkgIi91c3IvaW5jbHVkZS9iaXRzL2xv
Y2FsX2xpbS5oIiAyIDMgNAojIDE2MSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5o
IiAyIDMgNAojIDE0NCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAoKCgojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzIDQKIyAxNDggIi91c3IvaW5jbHVk
ZS9saW1pdHMuaCIgMiAzIDQKIyAxNjkgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51
eC82LjEuMS9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAojIDggIi91c3IvbGliL2djYy9pNjg2
LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMgNAojIDM1ICIv
dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9saW1pdHMuaCIg
MiAzIDQKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAyIDMgNAoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9wYXJhbS5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvYml0
cy9wYXJhbS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMSAzIDQK
CgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL2FzbS1nZW5lcmljL3BhcmFtLmgiIDEgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9w
YXJhbS5oIiAyIDMgNAojIDUgIi91c3IvaW5jbHVkZS9saW51eC9wYXJhbS5oIiAyIDMgNAoj
IDI5ICIvdXNyL2luY2x1ZGUvYml0cy9wYXJhbS5oIiAyIDMgNAojIDMyICIvdXNyL2luY2x1
ZGUvc3lzL3BhcmFtLmgiIDIgMyA0CiMgNjAgIm1hY2hpbmUuYyIgMgojIDEgIi91c3IvaW5j
bHVkZS9zeXMvdGltZS5oIiAxIDMgNAojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMgNAojIDI4ICIvdXNyL2lu
Y2x1ZGUvc3lzL3RpbWUuaCIgMiAzIDQKIyAzNyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgi
IDMgNAoKIyA1NSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXpv
bmUKICB7CiAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICBpbnQgdHpfZHN0dGltZTsKICB9
OwoKdHlwZWRlZiBzdHJ1Y3QgdGltZXpvbmUgKl9fcmVzdHJpY3QgX190aW1lem9uZV9wdHJf
dDsKIyA3MSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApleHRlcm4gaW50IGdldHRp
bWVvZmRheSAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190diwKICAgIF9fdGltZXpv
bmVfcHRyX3QgX190eikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4gaW50IHNl
dHRpbWVvZmRheSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fdHYsCiAgICBjb25zdCBzdHJ1
Y3QgdGltZXpvbmUgKl9fdHopCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg
X19sZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IGFkanRpbWUgKGNvbnN0IHN0cnVjdCB0aW1l
dmFsICpfX2RlbHRhLAogICAgICBzdHJ1Y3QgdGltZXZhbCAqX19vbGRkZWx0YSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCmVudW0gX19pdGltZXJf
d2hpY2gKICB7CgogICAgSVRJTUVSX1JFQUwgPSAwLAoKCiAgICBJVElNRVJfVklSVFVBTCA9
IDEsCgoKCiAgICBJVElNRVJfUFJPRiA9IDIKCiAgfTsKCgoKc3RydWN0IGl0aW1lcnZhbAog
IHsKCiAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKCiAgICBzdHJ1Y3QgdGltZXZh
bCBpdF92YWx1ZTsKICB9OwoKCgoKCgp0eXBlZGVmIGludCBfX2l0aW1lcl93aGljaF90OwoK
CgoKZXh0ZXJuIGludCBnZXRpdGltZXIgKF9faXRpbWVyX3doaWNoX3QgX193aGljaCwKICAg
ICAgICBzdHJ1Y3QgaXRpbWVydmFsICpfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCBzZXRpdGltZXIgKF9faXRpbWVy
X3doaWNoX3QgX193aGljaCwKICAgICAgICBjb25zdCBzdHJ1Y3QgaXRpbWVydmFsICpfX3Jl
c3RyaWN0IF9fbmV3LAogICAgICAgIHN0cnVjdCBpdGltZXJ2YWwgKl9fcmVzdHJpY3QgX19v
bGQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRl
cm4gaW50IHV0aW1lcyAoY29uc3QgY2hhciAqX19maWxlLCBjb25zdCBzdHJ1Y3QgdGltZXZh
bCBfX3R2cFsyXSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf
XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBs
dXRpbWVzIChjb25zdCBjaGFyICpfX2ZpbGUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZw
WzJdKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgZnV0aW1lcyAo
aW50IF9fZmQsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZwWzJdKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDE4OSAiL3Vzci9pbmNsdWRlL3N5cy90
aW1lLmgiIDMgNAoKIyA2MSAibWFjaGluZS5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90
aW1lcy5oIiAxIDMgNAojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDMgNAoKCgpz
dHJ1Y3QgdG1zCiAgewogICAgY2xvY2tfdCB0bXNfdXRpbWU7CiAgICBjbG9ja190IHRtc19z
dGltZTsKCiAgICBjbG9ja190IHRtc19jdXRpbWU7CiAgICBjbG9ja190IHRtc19jc3RpbWU7
CiAgfTsKCgoKCgoKZXh0ZXJuIGNsb2NrX3QgdGltZXMgKHN0cnVjdCB0bXMgKl9fYnVmZmVy
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCiMgNjIgIm1h
Y2hpbmUuYyIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzIDQKIyAy
NCAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9yZXNvdXJjZS5oIiAxIDMgNAojIDMxICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJj
ZS5oIiAzIDQKZW51bSBfX3JsaW1pdF9yZXNvdXJjZQp7CgogIFJMSU1JVF9DUFUgPSAwLAoK
CgogIFJMSU1JVF9GU0laRSA9IDEsCgoKCiAgUkxJTUlUX0RBVEEgPSAyLAoKCgogIFJMSU1J
VF9TVEFDSyA9IDMsCgoKCiAgUkxJTUlUX0NPUkUgPSA0LAoKCgoKCgogIF9fUkxJTUlUX1JT
UyA9IDUsCgoKCiAgUkxJTUlUX05PRklMRSA9IDcsCiAgX19STElNSVRfT0ZJTEUgPSBSTElN
SVRfTk9GSUxFLAoKCgoKICBSTElNSVRfQVMgPSA5LAoKCgogIF9fUkxJTUlUX05QUk9DID0g
NiwKCgoKICBfX1JMSU1JVF9NRU1MT0NLID0gOCwKCgoKICBfX1JMSU1JVF9MT0NLUyA9IDEw
LAoKCgogIF9fUkxJTUlUX1NJR1BFTkRJTkcgPSAxMSwKCgoKICBfX1JMSU1JVF9NU0dRVUVV
RSA9IDEyLAoKCgoKCiAgX19STElNSVRfTklDRSA9IDEzLAoKCgoKICBfX1JMSU1JVF9SVFBS
SU8gPSAxNCwKCgoKCgogIF9fUkxJTUlUX1JUVElNRSA9IDE1LAoKCiAgX19STElNSVRfTkxJ
TUlUUyA9IDE2LAogIF9fUkxJTV9OTElNSVRTID0gX19STElNSVRfTkxJTUlUUwoKCn07CiMg
MTMxICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAzIDQKdHlwZWRlZiBfX3JsaW1f
dCBybGltX3Q7CgoKCgoKCgpzdHJ1Y3QgcmxpbWl0CiAgewoKICAgIHJsaW1fdCBybGltX2N1
cjsKCiAgICBybGltX3QgcmxpbV9tYXg7CiAgfTsKIyAxNTggIi91c3IvaW5jbHVkZS9iaXRz
L3Jlc291cmNlLmgiIDMgNAplbnVtIF9fcnVzYWdlX3dobwp7CgogIFJVU0FHRV9TRUxGID0g
MCwKCgoKICBSVVNBR0VfQ0hJTERSRU4gPSAtMQojIDE3NiAiL3Vzci9pbmNsdWRlL2JpdHMv
cmVzb3VyY2UuaCIgMyA0Cn07CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEg
MyA0CiMgMTgwICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAyIDMgNAoKCgoKCgoK
c3RydWN0IHJ1c2FnZQogIHsKCiAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKCiAgICBz
dHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKCiAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCiAgICAg
IHsKIGxvbmcgaW50IHJ1X21heHJzczsKIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbWF4cnNz
X3dvcmQ7CiAgICAgIH07CgoKCiAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCiAgICAgIHsKIGxv
bmcgaW50IHJ1X2l4cnNzOwogX19zeXNjYWxsX3Nsb25nX3QgX19ydV9peHJzc193b3JkOwog
ICAgICB9OwoKICAgIF9fZXh0ZW5zaW9uX18gdW5pb24KICAgICAgewogbG9uZyBpbnQgcnVf
aWRyc3M7CiBfX3N5c2NhbGxfc2xvbmdfdCBfX3J1X2lkcnNzX3dvcmQ7CiAgICAgIH07Cgog
ICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgICB7CiBsb25nIGludCBydV9pc3JzczsKICBf
X3N5c2NhbGxfc2xvbmdfdCBfX3J1X2lzcnNzX3dvcmQ7CiAgICAgIH07CgoKICAgIF9fZXh0
ZW5zaW9uX18gdW5pb24KICAgICAgewogbG9uZyBpbnQgcnVfbWluZmx0OwogX19zeXNjYWxs
X3Nsb25nX3QgX19ydV9taW5mbHRfd29yZDsKICAgICAgfTsKCiAgICBfX2V4dGVuc2lvbl9f
IHVuaW9uCiAgICAgIHsKIGxvbmcgaW50IHJ1X21hamZsdDsKIF9fc3lzY2FsbF9zbG9uZ190
IF9fcnVfbWFqZmx0X3dvcmQ7CiAgICAgIH07CgogICAgX19leHRlbnNpb25fXyB1bmlvbgog
ICAgICB7CiBsb25nIGludCBydV9uc3dhcDsKIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbnN3
YXBfd29yZDsKICAgICAgfTsKCgogICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgICB7CiBs
b25nIGludCBydV9pbmJsb2NrOwogX19zeXNjYWxsX3Nsb25nX3QgX19ydV9pbmJsb2NrX3dv
cmQ7CiAgICAgIH07CgogICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgICB7CiBsb25nIGlu
dCBydV9vdWJsb2NrOwogX19zeXNjYWxsX3Nsb25nX3QgX19ydV9vdWJsb2NrX3dvcmQ7CiAg
ICAgIH07CgogICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgICB7CiBsb25nIGludCBydV9t
c2dzbmQ7CiBfX3N5c2NhbGxfc2xvbmdfdCBfX3J1X21zZ3NuZF93b3JkOwogICAgICB9OwoK
ICAgIF9fZXh0ZW5zaW9uX18gdW5pb24KICAgICAgewogbG9uZyBpbnQgcnVfbXNncmN2Owog
X19zeXNjYWxsX3Nsb25nX3QgX19ydV9tc2dyY3Zfd29yZDsKICAgICAgfTsKCiAgICBfX2V4
dGVuc2lvbl9fIHVuaW9uCiAgICAgIHsKIGxvbmcgaW50IHJ1X25zaWduYWxzOwogX19zeXNj
YWxsX3Nsb25nX3QgX19ydV9uc2lnbmFsc193b3JkOwogICAgICB9OwoKCgogICAgX19leHRl
bnNpb25fXyB1bmlvbgogICAgICB7CiBsb25nIGludCBydV9udmNzdzsKIF9fc3lzY2FsbF9z
bG9uZ190IF9fcnVfbnZjc3dfd29yZDsKICAgICAgfTsKCgogICAgX19leHRlbnNpb25fXyB1
bmlvbgogICAgICB7CiBsb25nIGludCBydV9uaXZjc3c7CiBfX3N5c2NhbGxfc2xvbmdfdCBf
X3J1X25pdmNzd193b3JkOwogICAgICB9OwogIH07CgoKCgoKCgplbnVtIF9fcHJpb3JpdHlf
d2hpY2gKewogIFBSSU9fUFJPQ0VTUyA9IDAsCgogIFBSSU9fUEdSUCA9IDEsCgogIFBSSU9f
VVNFUiA9IDIKCn07CgoKCiMgMzI4ICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAz
IDQKCiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMiAzIDQKCgoKCgoKCiMg
NDIgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CnR5cGVkZWYgaW50IF9fcmxp
bWl0X3Jlc291cmNlX3Q7CnR5cGVkZWYgaW50IF9fcnVzYWdlX3dob190Owp0eXBlZGVmIGlu
dCBfX3ByaW9yaXR5X3doaWNoX3Q7CgoKCgoKZXh0ZXJuIGludCBnZXRybGltaXQgKF9fcmxp
bWl0X3Jlc291cmNlX3QgX19yZXNvdXJjZSwKICAgICAgICBzdHJ1Y3QgcmxpbWl0ICpfX3Js
aW1pdHMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgNjkg
Ii91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CmV4dGVybiBpbnQgc2V0cmxpbWl0
IChfX3JsaW1pdF9yZXNvdXJjZV90IF9fcmVzb3VyY2UsCiAgICAgICAgY29uc3Qgc3RydWN0
IHJsaW1pdCAqX19ybGltaXRzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpOwojIDg3ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNApleHRlcm4g
aW50IGdldHJ1c2FnZSAoX19ydXNhZ2Vfd2hvX3QgX193aG8sIHN0cnVjdCBydXNhZ2UgKl9f
dXNhZ2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoK
ZXh0ZXJuIGludCBnZXRwcmlvcml0eSAoX19wcmlvcml0eV93aGljaF90IF9fd2hpY2gsIGlk
X3QgX193aG8pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK
CmV4dGVybiBpbnQgc2V0cHJpb3JpdHkgKF9fcHJpb3JpdHlfd2hpY2hfdCBfX3doaWNoLCBp
ZF90IF9fd2hvLCBpbnQgX19wcmlvKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSk7CgoKIyA2MyAibWFjaGluZS5jIiAyCiMgNzEgIm1hY2hpbmUuYyIK
IyAxICJlbmdpbmVfcGwuaCIgMQojIDQwICJlbmdpbmVfcGwuaCIKIyAxICJwbF9wYXJhbXMu
aCIgMQojIDQxICJlbmdpbmVfcGwuaCIgMgojIDEgImhhc2hfZmN0LmgiIDEKIyA1MyAiaGFz
aF9mY3QuaCIKCiMgNTMgImhhc2hfZmN0LmgiCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgbGVu
OwogIHVpbnQzMl90IGhhc2g7Cn0gSGFzaEluY3JJbmZvOwoKCgoKCgoKdWludDMyX3QgUGxf
SGFzaF9CdWZmZXIoY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbik7Cgp2b2lkIFBsX0hhc2hf
SW5jcl9Jbml0KEhhc2hJbmNySW5mbyAqaGkpOwoKdm9pZCBQbF9IYXNoX0luY3JfQnVmZmVy
KEhhc2hJbmNySW5mbyAqaGksIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pOwoKdm9pZCBQ
bF9IYXNoX0luY3JfSW50MzIoSGFzaEluY3JJbmZvICpoaSwgdWludDMyX3QgeCk7Cgp2b2lk
IFBsX0hhc2hfSW5jcl9JbnQ2NChIYXNoSW5jckluZm8gKmhpLCB1aW50NjRfdCB4KTsKCnZv
aWQgUGxfSGFzaF9JbmNyX0RvdWJsZShIYXNoSW5jckluZm8gKmhpLCBkb3VibGUgeCk7Cgp1
aW50MzJfdCBQbF9IYXNoX0luY3JfVGVybShIYXNoSW5jckluZm8gKmhpKTsKIyA0MiAiZW5n
aW5lX3BsLmgiIDIKIyAxICJoYXNoLmgiIDEKIyA0OCAiaGFzaC5oIgp0eXBlZGVmIHN0cnVj
dAp7CiAgY2hhciAqZW5kdDsKICBjaGFyICpjdXJfdDsKICBjaGFyICpjdXJfcDsKfQpIYXNo
U2NhbjsKIyA2NyAiaGFzaC5oIgpjaGFyICpQbF9IYXNoX0FsbG9jX1RhYmxlKGludCB0Ymxf
c2l6ZSwgaW50IGVsZW1fc2l6ZSk7Cgp2b2lkIFBsX0hhc2hfRnJlZV9UYWJsZShjaGFyICp0
YmwpOwoKY2hhciAqUGxfSGFzaF9SZWFsbG9jX1RhYmxlKGNoYXIgKnRibCwgaW50IG5ld190
Ymxfc2l6ZSk7Cgp2b2lkIFBsX0hhc2hfRGVsZXRlX0FsbChjaGFyICp0YmwpOwoKY2hhciAq
UGxfSGFzaF9JbnNlcnQoY2hhciAqdGJsLCBjaGFyICplbGVtLCBpbnQgcmVwbGFjZSk7Cgpj
aGFyICpQbF9IYXNoX0ZpbmQoY2hhciAqdGJsLCBQbExvbmcga2V5KTsKCmNoYXIgKlBsX0hh
c2hfRGVsZXRlKGNoYXIgKnRibCwgUGxMb25nIGtleSk7CgpjaGFyICpQbF9IYXNoX0ZpcnN0
KGNoYXIgKnRibCwgSGFzaFNjYW4gKnNjYW4pOwoKY2hhciAqUGxfSGFzaF9OZXh0KEhhc2hT
Y2FuICpzY2FuKTsKCmludCBQbF9IYXNoX1RhYmxlX1NpemUoY2hhciAqdGJsKTsKCmludCBQ
bF9IYXNoX05iX0VsZW1lbnRzKGNoYXIgKnRibCk7CiMgNDMgImVuZ2luZV9wbC5oIiAyCiMg
MSAiYm9vbC5oIiAxCiMgNjUgImJvb2wuaCIKdHlwZWRlZiBpbnQgQm9vbDsKIyA0NCAiZW5n
aW5lX3BsLmgiIDIKIyAxICJ3YW1fcmVncy5oIiAxCiMgNDUgImVuZ2luZV9wbC5oIiAyCiMg
MSAid2FtX2FyY2hpLmgiIDEKIyA0NCAid2FtX2FyY2hpLmgiCnR5cGVkZWYgaW50cHRyX3Qg
V2FtV29yZDsKCnR5cGVkZWYgdm9pZCAoKkNvZGVQdHIpICgpOwoKdHlwZWRlZiBDb2RlUHRy
IFdhbUNvbnQ7CgoKCgoKCnR5cGVkZWYgV2FtV29yZCAqV2FtV29yZFA7CgoKCgoKCnJlZ2lz
dGVyIFdhbVdvcmRQIFRSIGFzbSAoImVieCIpOwojIDk2ICJ3YW1fYXJjaGkuaCIKZXh0ZXJu
IFdhbVdvcmQgcGxfcmVnX2JhbmtbXTsKZXh0ZXJuIFdhbVdvcmQgcGxfYnVmZl9zaWduYWxf
cmVnW107CgpleHRlcm4gY2hhciAqcGxfcmVnX3RibFtdOwojIDI3MCAid2FtX2FyY2hpLmgi
CnR5cGVkZWYgZW51bQp7CiAgTE9OR19JTlQsCiAgU0hPUlRfVU5TLAogIEFERFJFU1MKfVR5
cFRhZzsKCnR5cGVkZWYgc3RydWN0CnsKICBjaGFyICpuYW1lOwogIFR5cFRhZyB0eXBlOwog
IGludCB2YWx1ZTsKICBQbExvbmcgdGFnX21hc2s7Cn1JbmZUYWc7CiMgMzAxICJ3YW1fYXJj
aGkuaCIKZXh0ZXJuIEluZlRhZyBwbF90YWdfdGJsW107CiMgMzI4ICJ3YW1fYXJjaGkuaCIK
IyAxICJ3YW1fc3RhY2tzLmgiIDEKIyAyNyAid2FtX3N0YWNrcy5oIgp0eXBlZGVmIHN0cnVj
dAp7CiAgY2hhciAqbmFtZTsKICBjaGFyICpkZXNjOwogIGNoYXIgKmVudl92YXJfbmFtZTsK
ICBQbExvbmcgKnBfZGVmX3NpemU7CiAgaW50IGRlZmF1bHRfc2l6ZTsKICBpbnQgc2l6ZTsK
ICBXYW1Xb3JkICpzdGFjazsKfUluZlN0YWNrOwojIDU4ICJ3YW1fc3RhY2tzLmgiCmV4dGVy
biBQbExvbmcgcGxfZGVmX3RyYWlsX3NpemU7CmV4dGVybiBQbExvbmcgcGxfZGVmX2NzdHJf
c2l6ZTsKZXh0ZXJuIFBsTG9uZyBwbF9kZWZfZ2xvYmFsX3NpemU7CmV4dGVybiBQbExvbmcg
cGxfZGVmX2xvY2FsX3NpemU7CmV4dGVybiBQbExvbmcgcGxfZml4ZWRfc2l6ZXM7CgoKZXh0
ZXJuIEluZlN0YWNrIHBsX3N0a190YmxbXTsKIyAzMjkgIndhbV9hcmNoaS5oIiAyCiMgNDYg
ImVuZ2luZV9wbC5oIiAyCiMgMSAiZW5naW5lLmgiIDEKIyA4NyAiZW5naW5lLmgiCmV4dGVy
biBpbnQgcGxfb3NfYXJnYzsKZXh0ZXJuIGNoYXIgKipwbF9vc19hcmd2OwoKZXh0ZXJuIGNo
YXIgKnBsX2hvbWU7CmV4dGVybiBpbnQgcGxfZGV2ZWxfbW9kZTsKCmV4dGVybiBjaGFyIHBs
X2dsb2JfYnVmZltdOwoKZXh0ZXJuIFBsTG9uZyAqcGxfYmFzZV9mbDsKZXh0ZXJuIGRvdWJs
ZSAqcGxfYmFzZV9mZDsKCmV4dGVybiBpbnQgcGxfbGVfbW9kZTsKIyAxMDggImVuZ2luZS5o
IgppbnQgUGxfU3RhcnRfUHJvbG9nKGludCBhcmdjLCBjaGFyICphcmd2W10pOwoKdm9pZCBQ
bF9TdG9wX1Byb2xvZyh2b2lkKTsKCnZvaWQgUGxfUmVzZXRfUHJvbG9nKHZvaWQpOwoKdm9p
ZCBQbF9SZXNldF9Qcm9sb2dfSW5fU2lnbmFsKHZvaWQpOwoKdm9pZCBQbF9TZXRfSGVhcF9B
Y3R1YWxfU3RhcnQoV2FtV29yZCAqaGVhcF9hY3R1YWxfc3RhcnQpOwoKCgp2b2lkIFBsX0V4
ZWN1dGVfRGlyZWN0aXZlKGludCBwbF9maWxlLCBpbnQgcGxfbGluZSwgQm9vbCBpc19zeXN0
ZW0sCiAgICAgQ29kZVB0ciBwcm9jKTsKCkJvb2wgUGxfVHJ5X0V4ZWN1dGVfVG9wX0xldmVs
KHZvaWQpOwoKQm9vbCBQbF9DYWxsX1Byb2xvZyhDb2RlUHRyIGNvZGVwKTsKCkJvb2wgUGxf
Q2FsbF9Qcm9sb2dfTmV4dF9Tb2woV2FtV29yZCAqcXVlcnlfYik7Cgp2b2lkIFBsX0tlZXBf
UmVzdF9Gb3JfUHJvbG9nKFdhbVdvcmQgKnF1ZXJ5X2IpOwoKdm9pZCBQbF9FeGl0X1dpdGhf
RXhjZXB0aW9uKHZvaWQpOwoKdm9pZCBQbF9FeGVjdXRlX0FfQ29udGludWF0aW9uKENvZGVQ
dHIgY29kZXApOwojIDQ3ICJlbmdpbmVfcGwuaCIgMgojIDEgImF0b20uaCIgMQojIDk3ICJh
dG9tLmgiCnR5cGVkZWYgc3RydWN0CnsKICB1bnNpZ25lZCBsZW5ndGg6MTY7CiAgdW5zaWdu
ZWQgb3BfbWFzazo0OwogIHVuc2lnbmVkIHR5cGU6MjsKICB1bnNpZ25lZCBuZWVkc19xdW90
ZToxOwogIHVuc2lnbmVkIG5lZWRzX3NjYW46MTsKfQpBdG9tUHJvcDsKCgoKCnR5cGVkZWYg
c3RydWN0CnsKICBjaGFyICpuYW1lOwogIHVuc2lnbmVkIGhhc2g7CiAgQXRvbVByb3AgcHJv
cDsKICB2b2lkICppbmZvOwp9CkF0b21JbmY7CiMgMTUzICJhdG9tLmgiCmV4dGVybiBBdG9t
SW5mICpwbF9hdG9tX3RibDsKZXh0ZXJuIGludCBwbF9tYXhfYXRvbTsKZXh0ZXJuIGludCBw
bF9uYl9hdG9tOwoKZXh0ZXJuIGludCBwbF9hdG9tX3ZvaWQ7CmV4dGVybiBpbnQgcGxfYXRv
bV9jdXJseV9icmFja2V0czsKCmV4dGVybiBpbnQgcGxfYXRvbV9mYWxzZTsKZXh0ZXJuIGlu
dCBwbF9hdG9tX3RydWU7CgpleHRlcm4gaW50IHBsX2F0b21fZW5kX29mX2ZpbGU7CgoKCgoK
ZXh0ZXJuIGNoYXIgcGxfY2hhcl9jb252W107CmV4dGVybiBpbnQgcGxfY2hhcl90eXBlW107
CgpleHRlcm4gY2hhciBwbF9lc2NhcGVfc3ltYm9sW107CmV4dGVybiBjaGFyIHBsX2VzY2Fw
ZV9jaGFyW107CgoKClBsTG9uZyBwbF9kZWZfbWF4X2F0b207CgoKCgoKCgp2b2lkIFBsX0lu
aXRfQXRvbSh2b2lkKTsKCmludCBQbF9DcmVhdGVfQWxsb2NhdGVfQXRvbShjaGFyICpuYW1l
KTsKCmludCBQbF9DcmVhdGVfQXRvbShjaGFyICpuYW1lKTsKCldhbVdvcmQgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpIFBsX0NyZWF0ZV9BdG9tX1RhZ2dlZChjaGFyICpuYW1lKTsK
CmludCBQbF9GaW5kX0F0b20oY2hhciAqbmFtZSk7CgppbnQgUGxfR2VuX05ld19BdG9tKGNo
YXIgKnByZWZpeCk7CgppbnQgUGxfRmluZF9OZXh0X0F0b20oaW50IGxhc3RfYXRvbSk7CiMg
NDggImVuZ2luZV9wbC5oIiAyCiMgMSAicHJlZC5oIiAxCiMgNjIgInByZWQuaCIKdHlwZWRl
ZiBzdHJ1Y3QKewogIFBsTG9uZyBmX247CiAgaW50IHBsX2ZpbGU7CiAgaW50IHBsX2xpbmU7
CiAgaW50IHByb3A7CiAgUGxMb25nICpjb2RlcDsKICBQbExvbmcgKmR5bjsKfQpQcmVkSW5m
OwojIDg2ICJwcmVkLmgiCmV4dGVybiBjaGFyICpwbF9wcmVkX3RibDsKIyA5NyAicHJlZC5o
Igp2b2lkIFBsX0luaXRfUHJlZCh2b2lkKTsKClByZWRJbmYgKiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX1ByZWQoaW50IGZ1bmMsIGludCBhcml0eSwgaW50IHBs
X2ZpbGUsIGludCBwbF9saW5lLAogICAgICAgaW50IHByb3AsIFBsTG9uZyAqY29kZXApOwoK
UHJlZEluZiAqIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Mb29rdXBfUHJlZChp
bnQgZnVuYywgaW50IGFyaXR5KTsKCnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
IFBsX0RlbGV0ZV9QcmVkKGludCBmdW5jLCBpbnQgYXJpdHkpOwojIDQ5ICJlbmdpbmVfcGwu
aCIgMgojIDEgIm1pc2MuaCIgMQojIDU3ICJtaXNjLmgiCmNoYXIgKlBsX01hbGxvY19DaGVj
ayh1bnNpZ25lZCBzaXplLCBjaGFyICpzcmNfZmlsZSwgaW50IHNyY19saW5lKTsKCmNoYXIg
KlBsX0NhbGxvY19DaGVjayh1bnNpZ25lZCBuYiwgdW5zaWduZWQgc2l6ZSwgY2hhciAqc3Jj
X2ZpbGUsCiAgICAgaW50IHNyY19saW5lKTsKCmNoYXIgKlBsX1JlYWxsb2NfQ2hlY2soY2hh
ciAqcHRyLCB1bnNpZ25lZCBzaXplLCBjaGFyICpzcmNfZmlsZSwgaW50IHNyY19saW5lKTsK
CmNoYXIgKlBsX1N0cmR1cF9DaGVjayhjaGFyICpzdHIsIGNoYXIgKnNyY19maWxlLCBpbnQg
c3JjX2xpbmUpOwojIDc2ICJtaXNjLmgiCnZvaWQgUGxfRXh0ZW5kX1RhYmxlX0lmX05lZWRl
ZChjaGFyICoqaGFzaF90YmwpOwoKdm9pZCBQbF9FeHRlbmRfQXJyYXkoY2hhciAqKnB0Ymws
IGludCAqbmJfZWxlbSwgaW50IGVsZW1fc2l6ZSwgQm9vbCBiemVybyk7Cgp2b2lkIFBsX0V4
aXRfV2l0aF9WYWx1ZShpbnQgcmV0X3ZhbCk7Cgp2b2lkIFBsX0ZhdGFsX0Vycm9yKGNoYXIg
KmZvcm1hdCwgLi4uKTsKIyAxMTQgIm1pc2MuaCIKdm9pZCAqUGxfRHVtbXlfUHRyKHZvaWQg
KnApOwojIDUwICJlbmdpbmVfcGwuaCIgMgojIDEgIm9wZXIuaCIgMQojIDcyICJvcGVyLmgi
CnR5cGVkZWYgc3RydWN0CnsKICBQbExvbmcgYV90OwogIGludCBwcmVjOwogIGludCBsZWZ0
OwogIGludCByaWdodDsKfQpPcGVySW5mOwojIDk0ICJvcGVyLmgiCmV4dGVybiBjaGFyICpw
bF9vcGVyX3RibDsKIyAxMDMgIm9wZXIuaCIKdm9pZCBQbF9Jbml0X09wZXIodm9pZCk7CgpP
cGVySW5mICpQbF9DcmVhdGVfT3BlcihpbnQgYXRvbV9vcCwgaW50IHR5cGUsIGludCBwcmVj
LCBpbnQgbGVmdCwgaW50IHJpZ2h0KTsKCk9wZXJJbmYgKlBsX0xvb2t1cF9PcGVyKGludCBh
dG9tX29wLCBpbnQgdHlwZSk7CgpPcGVySW5mICpQbF9Mb29rdXBfT3Blcl9BbnlfVHlwZShp
bnQgYXRvbV9vcCk7CgpPcGVySW5mICpQbF9EZWxldGVfT3BlcihpbnQgYXRvbV9vcCwgaW50
IHR5cGUpOwojIDUxICJlbmdpbmVfcGwuaCIgMgojIDEgIm1hY2hpbmUxLmgiIDEKIyA3MCAi
bWFjaGluZTEuaCIKZXh0ZXJuIGludCBwbF9tX29zX3R5cGU7CmV4dGVybiBjaGFyIHBsX21f
YXJjaGl0ZWN0dXJlW107CmV4dGVybiBjaGFyIHBsX21fb3NfdmVyc2lvbltdOwojIDgzICJt
YWNoaW5lMS5oIgp2b2lkIFBsX0luaXRfTWFjaGluZTEodm9pZCk7CgpjaGFyICoqUGxfTV9D
cmVhdGVfU2hlbGxfQ29tbWFuZChjaGFyICpjbWQpOwoKY2hhciAqKlBsX01fQ21kX0xpbmVf
VG9fQXJndihjaGFyICpjbWQsIGludCAqYXJnYyk7CgppbnQgUGxfTV9TaGVsbChjaGFyICpj
bWQpOwoKaW50IFBsX01fU3Bhd24oY2hhciAqYXJnW10pOwoKaW50IFBsX01fU3Bhd25fUmVk
aXJlY3QoY2hhciAqYXJnW10sIGludCBkZXRhY2gsCiAgICAgICBGSUxFICoqZl9pbiwgRklM
RSAqKmZfb3V0LCBGSUxFICoqZl9lcnIpOwoKaW50IFBsX01fR2V0X1N0YXR1cyhpbnQgcGlk
KTsKCgoKY2hhciAqUGxfTV9Na3RlbXAoY2hhciAqdG1wX3RlbXBsYXRlKTsKCmNoYXIgKlBs
X01fVGVtcG5hbShjaGFyICpkaXIsIGNoYXIgKnBmeCk7CiMgNTIgImVuZ2luZV9wbC5oIiAy
CiMgMSAibWFjaGluZS5oIiAxCiMgNjEgIm1hY2hpbmUuaCIKdm9pZCBQbF9Jbml0X01hY2hp
bmUodm9pZCk7CgpjaGFyICpQbF9NX1N5c19FcnJfU3RyaW5nKGludCByZXRfdmFsKTsKClBs
TG9uZyBQbF9NX1VzZXJfVGltZSh2b2lkKTsKClBsTG9uZyBQbF9NX1N5c3RlbV9UaW1lKHZv
aWQpOwoKUGxMb25nIFBsX01fUmVhbF9UaW1lKHZvaWQpOwoKdm9pZCBQbF9NX1JhbmRvbWl6
ZSh2b2lkKTsKCnZvaWQgUGxfTV9TZXRfU2VlZChpbnQgbik7CgppbnQgUGxfTV9HZXRfU2Vl
ZCh2b2lkKTsKCmludCBQbF9NX1JhbmRvbV9JbnRlZ2VyKGludCBuKTsKCmRvdWJsZSBQbF9N
X1JhbmRvbV9GbG9hdChkb3VibGUgbik7CgoKCmNoYXIgKlBsX01fSG9zdF9OYW1lX0Zyb21f
TmFtZShjaGFyICpob3N0X25hbWUpOwoKY2hhciAqUGxfTV9Ib3N0X05hbWVfRnJvbV9BZHIo
Y2hhciAqaG9zdF9hZGRyZXNzKTsKCmNoYXIgKlBsX01fR2V0X1dvcmtpbmdfRGlyKHZvaWQp
OwoKQm9vbCBQbF9NX1NldF9Xb3JraW5nX0RpcihjaGFyICpwYXRoKTsKCmNoYXIgKlBsX01f
QWJzb2x1dGVfUGF0aF9OYW1lKGNoYXIgKnNyYyk7CgpCb29sIFBsX01fSXNfQWJzb2x1dGVf
RmlsZV9OYW1lKGNoYXIgKnBhdGgpOwoKY2hhciAqUGxfTV9EZWNvbXBvc2VfRmlsZV9OYW1l
KGNoYXIgKnBhdGgsIEJvb2wgZGVsX3RyYWlsX3NsYXNoZXMsCiAgICAgICAgICBjaGFyICoq
YmFzZSwgY2hhciAqKnN1ZmZpeCk7CgoKCgoKCgp2b2lkIE1fQ2hlY2tfTWFnaWNfV29yZHMo
dm9pZCk7CiMgNTMgImVuZ2luZV9wbC5oIiAyCiMgMSAic3RhY2tzX3NpZ3NlZ3YuaCIgMQoj
IDUwICJzdGFja3Nfc2lnc2Vndi5oIgp0eXBlZGVmIGludCAoKlNlZ3ZIZGxyKSh2b2lkICpi
YWRfYWRkcik7CiMgNjAgInN0YWNrc19zaWdzZWd2LmgiCnZvaWQgUGxfQWxsb2NhdGVfU3Rh
Y2tzKHZvaWQpOwoKdm9pZCBQbF9QdXNoX1NJR1NFR1ZfSGFuZGxlcihTZWd2SGRsciBoYW5k
bGVyKTsKCnZvaWQgUGxfUG9wX1NJR1NFR1ZfSGFuZGxlcih2b2lkKTsKIyA1NCAiZW5naW5l
X3BsLmgiIDIKIyAxICJvYmpfY2hhaW4uaCIgMQojIDU4ICJvYmpfY2hhaW4uaCIKdm9pZCBQ
bF9GaW5kX0xpbmtlZF9PYmplY3RzKHZvaWQpOwoKdm9pZCBQbF9OZXdfT2JqZWN0KHZvaWQg
KCpmY3Rfb2JqX2luaXQpKCksIHZvaWQgKCpmY3RfZXhlY19zeXN0ZW0pICgpLCB2b2lkICgq
ZmN0X2V4ZWNfdXNlcikgKCkpOwojIDU1ICJlbmdpbmVfcGwuaCIgMgojIDEgIndhbV9pbnN0
LmgiIDEKIyAyNDkgIndhbV9pbnN0LmgiCnR5cGVkZWYgc3RydWN0CnsKICBQbExvbmcga2V5
OwogIENvZGVQdHIgY29kZXA7Cn0KU3d0SW5mOwoKdHlwZWRlZiBTd3RJbmYgKlN3dFRibDsK
IyAyNjkgIndhbV9pbnN0LmgiCldhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
IFBsX0NyZWF0ZV9GdW5jdG9yX0FyaXR5X1RhZ2dlZChjaGFyICpmdW5jX3N0ciwgaW50IGFy
aXR5KTsKClN3dFRibCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX1N3
dF9UYWJsZShpbnQgc2l6ZSk7Cgp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQ
bF9DcmVhdGVfU3d0X0F0bV9FbGVtZW50KFN3dFRibCB0LCBpbnQgc2l6ZSwgaW50IGF0b20s
IENvZGVQdHIgY29kZXApOwoKdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxf
Q3JlYXRlX1N3dF9TdGNfRWxlbWVudChTd3RUYmwgdCwgaW50IHNpemUsIGludCBmdW5jLCBp
bnQgYXJpdHksCiAgICAgICBDb2RlUHRyIGNvZGVwKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpIFBsX0dldF9BdG9tX1RhZ2dlZChXYW1Xb3JkIHcsIFdhbVdvcmQgc3Rh
cnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9HZXRfQXRv
bShpbnQgYXRvbSwgV2FtV29yZCBzdGFydF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpIFBsX0dldF9JbnRlZ2VyX1RhZ2dlZChXYW1Xb3JkIHcsIFdhbVdvcmQg
c3RhcnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9HZXRf
SW50ZWdlcihQbExvbmcgbiwgV2FtV29yZCBzdGFydF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpIFBsX0dldF9GbG9hdChkb3VibGUgbiwgV2FtV29yZCBzdGFy
dF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0dldF9OaWwo
V2FtV29yZCBzdGFydF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
IFBsX0dldF9MaXN0KFdhbVdvcmQgc3RhcnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKSBQbF9HZXRfU3RydWN0dXJlX1RhZ2dlZChXYW1Xb3JkIHcsIFdhbVdv
cmQgc3RhcnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9H
ZXRfU3RydWN0dXJlKGludCBmdW5jLCBpbnQgYXJpdHksIFdhbVdvcmQgc3RhcnRfd29yZCk7
CgpXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfWF9WYXJpYWJs
ZSh2b2lkKTsKCldhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9Z
X1ZhcmlhYmxlKFdhbVdvcmQgKnlfYWRyKTsKCldhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpIFBsX1B1dF9VbnNhZmVfVmFsdWUoV2FtV29yZCBzdGFydF93b3JkKTsKCldh
bVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9BdG9tX1RhZ2dlZChX
YW1Xb3JkIHcpOwoKV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0
X0F0b20oaW50IGF0b20pOwoKV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkg
UGxfUHV0X0ludGVnZXJfVGFnZ2VkKFdhbVdvcmQgdyk7CgpXYW1Xb3JkIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfSW50ZWdlcihQbExvbmcgbik7CgpXYW1Xb3JkIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfRmxvYXQoZG91YmxlIG4pOwoKV2Ft
V29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0X05pbCh2b2lkKTsKCldh
bVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9MaXN0KHZvaWQpOwoK
V2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0X1N0cnVjdHVyZV9U
YWdnZWQoV2FtV29yZCB3KTsKCldhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
IFBsX1B1dF9TdHJ1Y3R1cmUoaW50IGZ1bmMsIGludCBhcml0eSk7CgpXYW1Xb3JkIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9WYXJpYWJsZSh2b2lkKTsKCnZvaWQg
X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5X1ZvaWQoaW50IG4pOwoKQm9v
bCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfVmFsdWUoV2FtV29yZCBz
dGFydF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5
X0xvY2FsX1ZhbHVlKFdhbVdvcmQgc3RhcnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9BdG9tX1RhZ2dlZChXYW1Xb3JkIHcpOwoKQm9vbCBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfQXRvbShpbnQgYXRvbSk7CgpC
b29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9JbnRlZ2VyX1RhZ2dl
ZChXYW1Xb3JkIHcpOwoKQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5p
ZnlfSW50ZWdlcihQbExvbmcgbik7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp
KSBQbF9VbmlmeV9OaWwodm9pZCk7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp
KSBQbF9VbmlmeV9MaXN0KHZvaWQpOwoKQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSkgUGxfVW5pZnlfU3RydWN0dXJlX1RhZ2dlZChXYW1Xb3JkIHcpOwoKQm9vbCBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfU3RydWN0dXJlKGludCBmdW5jLCBpbnQg
YXJpdHkpOwoKV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2xvYmFs
aXplX0lmX0luX0xvY2FsKFdhbVdvcmQgc3RhcnRfd29yZCk7Cgp2b2lkIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKSBQbF9BbGxvY2F0ZShpbnQgbik7Cgp2b2lkIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKSBQbF9EZWFsbG9jYXRlKHZvaWQpOwoKQ29kZVB0ciBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfU3dpdGNoX09uX1Rlcm0oQ29kZVB0ciBjX3Zhciwg
Q29kZVB0ciBjX2F0bSwgQ29kZVB0ciBjX2ludCwKICAgICAgICAgICAgQ29kZVB0ciBjX2xz
dCwgQ29kZVB0ciBjX3N0Yyk7CkNvZGVQdHIgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
IFBsX1N3aXRjaF9Pbl9UZXJtX1Zhcl9BdG0oQ29kZVB0ciBjX3ZhciwgQ29kZVB0ciBjX2F0
bSk7CkNvZGVQdHIgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1N3aXRjaF9Pbl9U
ZXJtX1Zhcl9TdGMoQ29kZVB0ciBjX3ZhciwgQ29kZVB0ciBjX3N0Yyk7CkNvZGVQdHIgX19h
dHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1N3aXRjaF9Pbl9UZXJtX1Zhcl9BdG1fTHN0
KENvZGVQdHIgY192YXIsIENvZGVQdHIgY19hdG0sCiAgICAgICAgICBDb2RlUHRyIGNfbHN0
KTsKQ29kZVB0ciBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfU3dpdGNoX09uX1Rl
cm1fVmFyX0F0bV9TdGMoQ29kZVB0ciBjX3ZhciwgQ29kZVB0ciBjX2F0bSwKICAgICAgICAg
IENvZGVQdHIgY19zdGMpOwoKQ29kZVB0ciBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkg
UGxfU3dpdGNoX09uX0F0b20oU3d0VGJsIHQsIGludCBzaXplKTsKClBsTG9uZyBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfU3dpdGNoX09uX0ludGVnZXIodm9pZCk7CgpDb2Rl
UHRyIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Td2l0Y2hfT25fU3RydWN0dXJl
KFN3dFRibCB0LCBpbnQgc2l6ZSk7CgpXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKSBQbF9HZXRfQ3VycmVudF9DaG9pY2Uodm9pZCk7Cgp2b2lkIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKSBQbF9DdXQoV2FtV29yZCBiX3dvcmQpOwoKdm9pZCBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDMpKSkgUGxfU29mdF9DdXQoV2FtV29yZCBiX3dvcmQpOwoKdm9pZCBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2xvYmFsX1B1c2hfRmxvYXQoZG91Ymxl
IG4pOwoKZG91YmxlIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9PYnRhaW5fRmxv
YXQoV2FtV29yZCAqYWRyKTsKCgp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQ
bF9DcmVhdGVfQ2hvaWNlX1BvaW50KENvZGVQdHIgY29kZXBfYWx0LCBpbnQgYXJpdHkpOwp2
b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9DcmVhdGVfQ2hvaWNlX1BvaW50
MChDb2RlUHRyIGNvZGVwX2FsdCk7CnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
IFBsX0NyZWF0ZV9DaG9pY2VfUG9pbnQxKENvZGVQdHIgY29kZXBfYWx0KTsKdm9pZCBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX0Nob2ljZV9Qb2ludDIoQ29kZVB0
ciBjb2RlcF9hbHQpOwp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9DcmVh
dGVfQ2hvaWNlX1BvaW50MyhDb2RlUHRyIGNvZGVwX2FsdCk7CnZvaWQgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpIFBsX0NyZWF0ZV9DaG9pY2VfUG9pbnQ0KENvZGVQdHIgY29kZXBf
YWx0KTsKCgp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VcGRhdGVfQ2hv
aWNlX1BvaW50KENvZGVQdHIgY29kZXBfYWx0LCBpbnQgYXJpdHkpOwp2b2lkIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VcGRhdGVfQ2hvaWNlX1BvaW50MChDb2RlUHRyIGNv
ZGVwX2FsdCk7CnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VwZGF0ZV9D
aG9pY2VfUG9pbnQxKENvZGVQdHIgY29kZXBfYWx0KTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSkgUGxfVXBkYXRlX0Nob2ljZV9Qb2ludDIoQ29kZVB0ciBjb2RlcF9hbHQp
Owp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VcGRhdGVfQ2hvaWNlX1Bv
aW50MyhDb2RlUHRyIGNvZGVwX2FsdCk7CnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpIFBsX1VwZGF0ZV9DaG9pY2VfUG9pbnQ0KENvZGVQdHIgY29kZXBfYWx0KTsKCnZvaWQg
X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0RlbGV0ZV9DaG9pY2VfUG9pbnQoaW50
IGFyaXR5KTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfRGVsZXRlX0No
b2ljZV9Qb2ludDAodm9pZCk7CnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBs
X0RlbGV0ZV9DaG9pY2VfUG9pbnQxKHZvaWQpOwp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKSBQbF9EZWxldGVfQ2hvaWNlX1BvaW50Mih2b2lkKTsKdm9pZCBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDMpKSkgUGxfRGVsZXRlX0Nob2ljZV9Qb2ludDModm9pZCk7CnZvaWQg
X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0RlbGV0ZV9DaG9pY2VfUG9pbnQ0KHZv
aWQpOwoKCnZvaWQgUGxfRGVmZWFzaWJsZV9PcGVuKCk7CnZvaWQgUGxfRGVmZWFzaWJsZV9V
bmRvKCk7CnZvaWQgUGxfRGVmZWFzaWJsZV9DbG9zZShCb29sIHVuZG9fYmVmb3JlKTsKCgoK
dm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW50cmFpbChXYW1Xb3JkICps
b3dfYWRyKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5KFdh
bVdvcmQgc3RhcnRfdV93b3JkLCBXYW1Xb3JkIHN0YXJ0X3Zfd29yZCk7CgpCb29sIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9PY2N1cnNfQ2hlY2soV2FtV29yZCBz
dGFydF91X3dvcmQsIFdhbVdvcmQgc3RhcnRfdl93b3JkKTsKIyA1NiAiZW5naW5lX3BsLmgi
IDIKIyAxICJpZl9ub19mZC5oIiAxCiMgNjUgImlmX25vX2ZkLmgiCmV4dGVybiB2b2lkICgq
cGxfZmRfaW5pdF9zb2x2ZXIpICgpOwpleHRlcm4gdm9pZCAoKnBsX2ZkX3Jlc2V0X3NvbHZl
cikgKCk7CmV4dGVybiBCb29sICgqcGxfZmRfdW5pZnlfd2l0aF9pbnRlZ2VyKSAoKTsKZXh0
ZXJuIEJvb2wgKCpwbF9mZF91bmlmeV93aXRoX2ZkX3ZhcikgKCk7CmV4dGVybiBpbnQgKCpw
bF9mZF92YXJpYWJsZV9zaXplKSAoKTsKZXh0ZXJuIGludCAoKnBsX2ZkX2NvcHlfdmFyaWFi
bGUpICgpOwpleHRlcm4gY2hhciAqKCpwbF9mZF92YXJpYWJsZV90b19zdHJpbmcpICgpOwoj
IDgyICJpZl9ub19mZC5oIgp2b2lkIFBsX0ZkX0luaXRfU29sdmVyKHZvaWQpOwoKdm9pZCBQ
bF9GZF9SZXNldF9Tb2x2ZXIodm9pZCk7CiMgNTYgImVuZ2luZV9wbC5oIiAyCiMgNzIgIm1h
Y2hpbmUuYyIgMgoKCgojIDEgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIgMSAzIDQKIyAyMyAi
L3Vzci9pbmNsdWRlL21hbGxvYy5oIiAzIDQKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRo
YXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAxNDkgIi91c3IvbGli
L2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKCiMg
MTQ5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRk
ZWYuaCIgMyA0CnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyA0MjYgIi91c3IvbGliL2djYy9p
Njg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBz
dHJ1Y3QgewogIGxvbmcgbG9uZyBfX21heF9hbGlnbl9sbCBfX2F0dHJpYnV0ZV9fKChfX2Fs
aWduZWRfXyhfX2FsaWdub2ZfXyhsb25nIGxvbmcpKSkpOwogIGxvbmcgZG91YmxlIF9fbWF4
X2FsaWduX2xkIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKF9fYWxpZ25vZl9fKGxvbmcg
ZG91YmxlKSkpKTsKfSBtYXhfYWxpZ25fdDsKIyAyNCAiL3Vzci9pbmNsdWRlL21hbGxvYy5o
IiAyIDMgNAojIDM1ICIvdXNyL2luY2x1ZGUvbWFsbG9jLmgiIDMgNAoKCgpleHRlcm4gdm9p
ZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgOwoKCmV4dGVybiB2
b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQpfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSkgOwoKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVf
dCBfX3NpemUpCl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h
dHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKCgpleHRlcm4gdm9pZCBm
cmVlICh2b2lkICpfX3B0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm
X18pKTsKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWFsaWduIChz
aXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCl9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7CgoK
ZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsK
CgoKZXh0ZXJuIHZvaWQgKnB2YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18p
KSA7CgoKCmV4dGVybiB2b2lkICooKl9fbW9yZWNvcmUpIChwdHJkaWZmX3QgX19zaXplKTsK
CgpleHRlcm4gdm9pZCAqX19kZWZhdWx0X21vcmVjb3JlIChwdHJkaWZmX3QgX19zaXplKQpf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSk7CgoKCnN0cnVjdCBtYWxsaW5mbwp7CiAgaW50IGFyZW5hOwogIGlu
dCBvcmRibGtzOwogIGludCBzbWJsa3M7CiAgaW50IGhibGtzOwogIGludCBoYmxraGQ7CiAg
aW50IHVzbWJsa3M7CiAgaW50IGZzbWJsa3M7CiAgaW50IHVvcmRibGtzOwogIGludCBmb3Jk
YmxrczsKICBpbnQga2VlcGNvc3Q7Cn07CgoKZXh0ZXJuIHN0cnVjdCBtYWxsaW5mbyBtYWxs
aW5mbyAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK
IyAxMjEgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIgMyA0CmV4dGVybiBpbnQgbWFsbG9wdCAo
aW50IF9fcGFyYW0sIGludCBfX3ZhbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg
X19sZWFmX18pKTsKCgoKZXh0ZXJuIGludCBtYWxsb2NfdHJpbSAoc2l6ZV90IF9fcGFkKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gc2l6
ZV90IG1hbGxvY191c2FibGVfc2l6ZSAodm9pZCAqX19wdHIpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgbWFsbG9jX3N0YXRzICh2
b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVy
biBpbnQgbWFsbG9jX2luZm8gKGludCBfX29wdGlvbnMsIEZJTEUgKl9fZnApIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1hbGxv
Y19nZXRfc3RhdGUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSk7CgoKCmV4dGVybiBpbnQgbWFsbG9jX3NldF9zdGF0ZSAodm9pZCAqX19wdHIpIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gdm9p
ZCAoKnZvbGF0aWxlIF9fbWFsbG9jX2luaXRpYWxpemVfaG9vaykgKHZvaWQpCl9fYXR0cmli
dXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKZXh0ZXJuIHZvaWQgKCp2b2xhdGlsZSBfX2Zy
ZWVfaG9vaykgKHZvaWQgKl9fcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICopCl9fYXR0cmlidXRlX18gKChfX2Rl
cHJlY2F0ZWRfXykpOwpleHRlcm4gdm9pZCAqKCp2b2xhdGlsZSBfX21hbGxvY19ob29rKShz
aXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKikKX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRl
ZF9fKSk7CmV4dGVybiB2b2lkICooKnZvbGF0aWxlIF9fcmVhbGxvY19ob29rKSh2b2lkICpf
X3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqKQpfX2F0dHJpYnV0ZV9fICgoX19k
ZXByZWNhdGVkX18pKTsKZXh0ZXJuIHZvaWQgKigqdm9sYXRpbGUgX19tZW1hbGlnbl9ob29r
KShzaXplX3QgX19hbGlnbm1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqKQpf
X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKTsKZXh0ZXJuIHZvaWQgKCp2b2xhdGls
ZSBfX2FmdGVyX21vcmVjb3JlX2hvb2spICh2b2lkKTsKCgpleHRlcm4gdm9pZCBfX21hbGxv
Y19jaGVja19pbml0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl
YWZfXykpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKCgojIDc2ICJtYWNo
aW5lLmMiIDIKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDEgMyA0CiMgMjcgIi91
c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5o
IiAxIDMgNAojIDIzICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzIDQKIyAxICIvdXNy
L2luY2x1ZGUvc3lzL3NvY2tldC5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvc3lzL3Nv
Y2tldC5oIiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWlvLmgiIDEgMyA0CiMgMjUg
Ii91c3IvaW5jbHVkZS9zeXMvdWlvLmgiIDMgNAoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3Vpby5oIiAxIDMgNAojIDQzICIvdXNyL2luY2x1ZGUvYml0cy91aW8uaCIgMyA0CnN0cnVj
dCBpb3ZlYwogIHsKICAgIHZvaWQgKmlvdl9iYXNlOwogICAgc2l6ZV90IGlvdl9sZW47CiAg
fTsKIyAyOSAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIgMiAzIDQKIyAzOSAiL3Vzci9pbmNs
dWRlL3N5cy91aW8uaCIgMyA0CmV4dGVybiBzc2l6ZV90IHJlYWR2IChpbnQgX19mZCwgY29u
c3Qgc3RydWN0IGlvdmVjICpfX2lvdmVjLCBpbnQgX19jb3VudCkKICA7CiMgNTAgIi91c3Iv
aW5jbHVkZS9zeXMvdWlvLmgiIDMgNApleHRlcm4gc3NpemVfdCB3cml0ZXYgKGludCBfX2Zk
LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKl9faW92ZWMsIGludCBfX2NvdW50KQogIDsKIyA2NSAi
L3Vzci9pbmNsdWRlL3N5cy91aW8uaCIgMyA0CmV4dGVybiBzc2l6ZV90IHByZWFkdiAoaW50
IF9fZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqX19pb3ZlYywgaW50IF9fY291bnQsCiAgICAg
ICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKIyA3NyAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIg
MyA0CmV4dGVybiBzc2l6ZV90IHB3cml0ZXYgKGludCBfX2ZkLCBjb25zdCBzdHJ1Y3QgaW92
ZWMgKl9faW92ZWMsIGludCBfX2NvdW50LAogICBfX29mZl90IF9fb2Zmc2V0KSA7CiMgMTIw
ICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAzIDQKCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMv
c29ja2V0LmgiIDIgMyA0CgojIDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82
LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3Nv
Y2tldC5oIiAyIDMgNAojIDM4ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzIDQKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMSAzIDQKIyAyNyAiL3Vzci9pbmNsdWRl
L2JpdHMvc29ja2V0LmgiIDMgNAojIDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51
eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvYml0
cy9zb2NrZXQuaCIgMiAzIDQKIyAzOCAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMg
NAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldF90eXBlLmgiIDEgMyA0CiMgMjQgIi91
c3IvaW5jbHVkZS9iaXRzL3NvY2tldF90eXBlLmgiIDMgNAplbnVtIF9fc29ja2V0X3R5cGUK
ewogIFNPQ0tfU1RSRUFNID0gMSwKCgogIFNPQ0tfREdSQU0gPSAyLAoKCiAgU09DS19SQVcg
PSAzLAoKICBTT0NLX1JETSA9IDQsCgogIFNPQ0tfU0VRUEFDS0VUID0gNSwKCgogIFNPQ0tf
RENDUCA9IDYsCgogIFNPQ0tfUEFDS0VUID0gMTAsCgoKCgoKCgogIFNPQ0tfQ0xPRVhFQyA9
IDAyMDAwMDAwLAoKCiAgU09DS19OT05CTE9DSyA9IDAwMDA0MDAwCgoKfTsKIyAzOSAiL3Vz
ci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDIgMyA0CiMgMTUwICIvdXNyL2luY2x1ZGUvYml0
cy9zb2NrZXQuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2FkZHIuaCIgMSAz
IDQKIyAyOCAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2FkZHIuaCIgMyA0CnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgaW50IHNhX2ZhbWlseV90OwojIDE1MSAiL3Vzci9pbmNsdWRlL2JpdHMv
c29ja2V0LmgiIDIgMyA0CgoKc3RydWN0IHNvY2thZGRyCiAgewogICAgc2FfZmFtaWx5X3Qg
c2FfZmFtaWx5OwogICAgY2hhciBzYV9kYXRhWzE0XTsKICB9OwojIDE2NiAiL3Vzci9pbmNs
dWRlL2JpdHMvc29ja2V0LmgiIDMgNApzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZQogIHsKICAg
IHNhX2ZhbWlseV90IHNzX2ZhbWlseTsKICAgIGNoYXIgX19zc19wYWRkaW5nWygxMjggLSAo
c2l6ZW9mICh1bnNpZ25lZCBzaG9ydCBpbnQpKSAtIHNpemVvZiAodW5zaWduZWQgbG9uZyBp
bnQpKV07CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3NzX2FsaWduOwogIH07CgoKCmVudW0K
ICB7CiAgICBNU0dfT09CID0gMHgwMSwKCiAgICBNU0dfUEVFSyA9IDB4MDIsCgogICAgTVNH
X0RPTlRST1VURSA9IDB4MDQsCgoKCgoKCiAgICBNU0dfQ1RSVU5DID0gMHgwOCwKCiAgICBN
U0dfUFJPWFkgPSAweDEwLAoKICAgIE1TR19UUlVOQyA9IDB4MjAsCgogICAgTVNHX0RPTlRX
QUlUID0gMHg0MCwKCiAgICBNU0dfRU9SID0gMHg4MCwKCiAgICBNU0dfV0FJVEFMTCA9IDB4
MTAwLAoKICAgIE1TR19GSU4gPSAweDIwMCwKCiAgICBNU0dfU1lOID0gMHg0MDAsCgogICAg
TVNHX0NPTkZJUk0gPSAweDgwMCwKCiAgICBNU0dfUlNUID0gMHgxMDAwLAoKICAgIE1TR19F
UlJRVUVVRSA9IDB4MjAwMCwKCiAgICBNU0dfTk9TSUdOQUwgPSAweDQwMDAsCgogICAgTVNH
X01PUkUgPSAweDgwMDAsCgogICAgTVNHX1dBSVRGT1JPTkUgPSAweDEwMDAwLAoKICAgIE1T
R19GQVNUT1BFTiA9IDB4MjAwMDAwMDAsCgoKICAgIE1TR19DTVNHX0NMT0VYRUMgPSAweDQw
MDAwMDAwCgoKCiAgfTsKCgoKCnN0cnVjdCBtc2doZHIKICB7CiAgICB2b2lkICptc2dfbmFt
ZTsKICAgIHNvY2tsZW5fdCBtc2dfbmFtZWxlbjsKCiAgICBzdHJ1Y3QgaW92ZWMgKm1zZ19p
b3Y7CiAgICBzaXplX3QgbXNnX2lvdmxlbjsKCiAgICB2b2lkICptc2dfY29udHJvbDsKICAg
IHNpemVfdCBtc2dfY29udHJvbGxlbjsKCgoKCiAgICBpbnQgbXNnX2ZsYWdzOwogIH07CgoK
c3RydWN0IGNtc2doZHIKICB7CiAgICBzaXplX3QgY21zZ19sZW47CgoKCgogICAgaW50IGNt
c2dfbGV2ZWw7CiAgICBpbnQgY21zZ190eXBlOwoKICAgIF9fZXh0ZW5zaW9uX18gdW5zaWdu
ZWQgY2hhciBfX2Ntc2dfZGF0YSBbXTsKCiAgfTsKIyAyNzYgIi91c3IvaW5jbHVkZS9iaXRz
L3NvY2tldC5oIiAzIDQKZXh0ZXJuIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2dfbnh0aGRyIChz
dHJ1Y3QgbXNnaGRyICpfX21oZHIsCiAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNn
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDMwMyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMgNAplbnVtCiAgewogICAgU0NNX1JJR0hUUyA9
IDB4MDEKCgoKCgogIH07CiMgMzQ5ICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMyA0
CiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMSAzIDQKIyAxICIvdXNyL2luY2x1
ZGUvYXNtLWdlbmVyaWMvc29ja2V0LmgiIDEgMyA0CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Fz
bS9zb2NraW9zLmgiIDEgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NvY2tp
b3MuaCIgMSAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMiAzIDQKIyA1
ICIvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc29ja2V0LmgiIDIgMyA0CiMgMSAiL3Vzci9p
bmNsdWRlL2FzbS9zb2NrZXQuaCIgMiAzIDQKIyAzNTAgIi91c3IvaW5jbHVkZS9iaXRzL3Nv
Y2tldC5oIiAyIDMgNAojIDM4MyAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMgNApz
dHJ1Y3QgbGluZ2VyCiAgewogICAgaW50IGxfb25vZmY7CiAgICBpbnQgbF9saW5nZXI7CiAg
fTsKIyAzOSAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzIDQKCgoKCnN0cnVjdCBv
c29ja2FkZHIKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5OwogICAgdW5z
aWduZWQgY2hhciBzYV9kYXRhWzE0XTsKICB9OwoKCgoKZW51bQp7CiAgU0hVVF9SRCA9IDAs
CgogIFNIVVRfV1IsCgogIFNIVVRfUkRXUgoKfTsKIyAxMTMgIi91c3IvaW5jbHVkZS9zeXMv
c29ja2V0LmgiIDMgNApleHRlcm4gaW50IHNvY2tldCAoaW50IF9fZG9tYWluLCBpbnQgX190
eXBlLCBpbnQgX19wcm90b2NvbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s
ZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IHNvY2tldHBhaXIgKGludCBfX2RvbWFpbiwgaW50
IF9fdHlwZSwgaW50IF9fcHJvdG9jb2wsCiAgICAgICAgIGludCBfX2Zkc1syXSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gaW50IGJpbmQg
KGludCBfX2ZkLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiBfX2FkZHIsIHNvY2tsZW5fdCBf
X2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoK
CmV4dGVybiBpbnQgZ2V0c29ja25hbWUgKGludCBfX2ZkLCBzdHJ1Y3Qgc29ja2FkZHIgKl9f
cmVzdHJpY3QgX19hZGRyLAogICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19sZW4pIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMTM3ICIvdXNyL2luY2x1
ZGUvc3lzL3NvY2tldC5oIiAzIDQKZXh0ZXJuIGludCBjb25uZWN0IChpbnQgX19mZCwgY29u
c3Qgc3RydWN0IHNvY2thZGRyICogX19hZGRyLCBzb2NrbGVuX3QgX19sZW4pOwoKCgpleHRl
cm4gaW50IGdldHBlZXJuYW1lIChpbnQgX19mZCwgc3RydWN0IHNvY2thZGRyICpfX3Jlc3Ry
aWN0IF9fYWRkciwKICAgc29ja2xlbl90ICpfX3Jlc3RyaWN0IF9fbGVuKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gc3NpemVfdCBz
ZW5kIChpbnQgX19mZCwgY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sIGludCBfX2Zs
YWdzKTsKCgoKCgoKZXh0ZXJuIHNzaXplX3QgcmVjdiAoaW50IF9fZmQsIHZvaWQgKl9fYnVm
LCBzaXplX3QgX19uLCBpbnQgX19mbGFncyk7CgoKCgoKCmV4dGVybiBzc2l6ZV90IHNlbmR0
byAoaW50IF9fZmQsIGNvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgICAgICBp
bnQgX19mbGFncywgY29uc3Qgc3RydWN0IHNvY2thZGRyICogX19hZGRyLAogICAgICAgICBz
b2NrbGVuX3QgX19hZGRyX2xlbik7CiMgMTc0ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5o
IiAzIDQKZXh0ZXJuIHNzaXplX3QgcmVjdmZyb20gKGludCBfX2ZkLCB2b2lkICpfX3Jlc3Ry
aWN0IF9fYnVmLCBzaXplX3QgX19uLAogICAgaW50IF9fZmxhZ3MsIHN0cnVjdCBzb2NrYWRk
ciAqX19yZXN0cmljdCBfX2FkZHIsCiAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19hZGRy
X2xlbik7CgoKCgoKCgpleHRlcm4gc3NpemVfdCBzZW5kbXNnIChpbnQgX19mZCwgY29uc3Qg
c3RydWN0IG1zZ2hkciAqX19tZXNzYWdlLAogICBpbnQgX19mbGFncyk7CiMgMjAyICIvdXNy
L2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzIDQKZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAoaW50
IF9fZmQsIHN0cnVjdCBtc2doZHIgKl9fbWVzc2FnZSwgaW50IF9fZmxhZ3MpOwojIDIxOSAi
L3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0CmV4dGVybiBpbnQgZ2V0c29ja29wdCAo
aW50IF9fZmQsIGludCBfX2xldmVsLCBpbnQgX19vcHRuYW1lLAogICAgICAgICB2b2lkICpf
X3Jlc3RyaWN0IF9fb3B0dmFsLAogICAgICAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19v
cHRsZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpl
eHRlcm4gaW50IHNldHNvY2tvcHQgKGludCBfX2ZkLCBpbnQgX19sZXZlbCwgaW50IF9fb3B0
bmFtZSwKICAgICAgICAgY29uc3Qgdm9pZCAqX19vcHR2YWwsIHNvY2tsZW5fdCBfX29wdGxl
bikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRl
cm4gaW50IGxpc3RlbiAoaW50IF9fZmQsIGludCBfX24pIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMjQzICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5o
IiAzIDQKZXh0ZXJuIGludCBhY2NlcHQgKGludCBfX2ZkLCBzdHJ1Y3Qgc29ja2FkZHIgKl9f
cmVzdHJpY3QgX19hZGRyLAogICAgIHNvY2tsZW5fdCAqX19yZXN0cmljdCBfX2FkZHJfbGVu
KTsKIyAyNjEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDMgNApleHRlcm4gaW50IHNo
dXRkb3duIChpbnQgX19mZCwgaW50IF9faG93KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCBzb2NrYXRtYXJrIChpbnQgX19mZCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKCmV4dGVy
biBpbnQgaXNmZHR5cGUgKGludCBfX2ZkLCBpbnQgX19mZHR5cGUpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMjgzICIvdXNyL2luY2x1ZGUvc3lzL3Nv
Y2tldC5oIiAzIDQKCiMgMjQgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMyA0CgoK
CgoKCnR5cGVkZWYgdWludDMyX3QgaW5fYWRkcl90OwpzdHJ1Y3QgaW5fYWRkcgogIHsKICAg
IGluX2FkZHJfdCBzX2FkZHI7CiAgfTsKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2luLmgi
IDEgMyA0CiMgMTMzICIvdXNyL2luY2x1ZGUvYml0cy9pbi5oIiAzIDQKc3RydWN0IGlwX29w
dHMKICB7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcF9kc3Q7CiAgICBjaGFyIGlwX29wdHNbNDBd
OwogIH07CgoKc3RydWN0IGlwX21yZXFuCiAgewogICAgc3RydWN0IGluX2FkZHIgaW1yX211
bHRpYWRkcjsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNzOwogICAgaW50IGltcl9p
ZmluZGV4OwogIH07CgoKc3RydWN0IGluX3BrdGluZm8KICB7CiAgICBpbnQgaXBpX2lmaW5k
ZXg7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcGlfc3BlY19kc3Q7CiAgICBzdHJ1Y3QgaW5fYWRk
ciBpcGlfYWRkcjsKICB9OwojIDM4ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMg
NAoKCmVudW0KICB7CiAgICBJUFBST1RPX0lQID0gMCwKCiAgICBJUFBST1RPX0lDTVAgPSAx
LAoKICAgIElQUFJPVE9fSUdNUCA9IDIsCgogICAgSVBQUk9UT19JUElQID0gNCwKCiAgICBJ
UFBST1RPX1RDUCA9IDYsCgogICAgSVBQUk9UT19FR1AgPSA4LAoKICAgIElQUFJPVE9fUFVQ
ID0gMTIsCgogICAgSVBQUk9UT19VRFAgPSAxNywKCiAgICBJUFBST1RPX0lEUCA9IDIyLAoK
ICAgIElQUFJPVE9fVFAgPSAyOSwKCiAgICBJUFBST1RPX0RDQ1AgPSAzMywKCiAgICBJUFBS
T1RPX0lQVjYgPSA0MSwKCiAgICBJUFBST1RPX1JTVlAgPSA0NiwKCiAgICBJUFBST1RPX0dS
RSA9IDQ3LAoKICAgIElQUFJPVE9fRVNQID0gNTAsCgogICAgSVBQUk9UT19BSCA9IDUxLAoK
ICAgIElQUFJPVE9fTVRQID0gOTIsCgogICAgSVBQUk9UT19CRUVUUEggPSA5NCwKCiAgICBJ
UFBST1RPX0VOQ0FQID0gOTgsCgogICAgSVBQUk9UT19QSU0gPSAxMDMsCgogICAgSVBQUk9U
T19DT01QID0gMTA4LAoKICAgIElQUFJPVE9fU0NUUCA9IDEzMiwKCiAgICBJUFBST1RPX1VE
UExJVEUgPSAxMzYsCgogICAgSVBQUk9UT19NUExTID0gMTM3LAoKICAgIElQUFJPVE9fUkFX
ID0gMjU1LAoKICAgIElQUFJPVE9fTUFYCiAgfTsKCgoKCgplbnVtCiAgewogICAgSVBQUk9U
T19IT1BPUFRTID0gMCwKCiAgICBJUFBST1RPX1JPVVRJTkcgPSA0MywKCiAgICBJUFBST1RP
X0ZSQUdNRU5UID0gNDQsCgogICAgSVBQUk9UT19JQ01QVjYgPSA1OCwKCiAgICBJUFBST1RP
X05PTkUgPSA1OSwKCiAgICBJUFBST1RPX0RTVE9QVFMgPSA2MCwKCiAgICBJUFBST1RPX01I
ID0gMTM1CgogIH07CgoKCnR5cGVkZWYgdWludDE2X3QgaW5fcG9ydF90OwoKCmVudW0KICB7
CiAgICBJUFBPUlRfRUNITyA9IDcsCiAgICBJUFBPUlRfRElTQ0FSRCA9IDksCiAgICBJUFBP
UlRfU1lTVEFUID0gMTEsCiAgICBJUFBPUlRfREFZVElNRSA9IDEzLAogICAgSVBQT1JUX05F
VFNUQVQgPSAxNSwKICAgIElQUE9SVF9GVFAgPSAyMSwKICAgIElQUE9SVF9URUxORVQgPSAy
MywKICAgIElQUE9SVF9TTVRQID0gMjUsCiAgICBJUFBPUlRfVElNRVNFUlZFUiA9IDM3LAog
ICAgSVBQT1JUX05BTUVTRVJWRVIgPSA0MiwKICAgIElQUE9SVF9XSE9JUyA9IDQzLAogICAg
SVBQT1JUX01UUCA9IDU3LAoKICAgIElQUE9SVF9URlRQID0gNjksCiAgICBJUFBPUlRfUkpF
ID0gNzcsCiAgICBJUFBPUlRfRklOR0VSID0gNzksCiAgICBJUFBPUlRfVFRZTElOSyA9IDg3
LAogICAgSVBQT1JUX1NVUERVUCA9IDk1LAoKCiAgICBJUFBPUlRfRVhFQ1NFUlZFUiA9IDUx
MiwKICAgIElQUE9SVF9MT0dJTlNFUlZFUiA9IDUxMywKICAgIElQUE9SVF9DTURTRVJWRVIg
PSA1MTQsCiAgICBJUFBPUlRfRUZTU0VSVkVSID0gNTIwLAoKCiAgICBJUFBPUlRfQklGRlVE
UCA9IDUxMiwKICAgIElQUE9SVF9XSE9TRVJWRVIgPSA1MTMsCiAgICBJUFBPUlRfUk9VVEVT
RVJWRVIgPSA1MjAsCgoKICAgIElQUE9SVF9SRVNFUlZFRCA9IDEwMjQsCgoKICAgIElQUE9S
VF9VU0VSUkVTRVJWRUQgPSA1MDAwCiAgfTsKIyAyMTEgIi91c3IvaW5jbHVkZS9uZXRpbmV0
L2luLmgiIDMgNApzdHJ1Y3QgaW42X2FkZHIKICB7CiAgICB1bmlvbgogICAgICB7CiB1aW50
OF90IF9fdTZfYWRkcjhbMTZdOwoKIHVpbnQxNl90IF9fdTZfYWRkcjE2WzhdOwogdWludDMy
X3QgX191Nl9hZGRyMzJbNF07CgogICAgICB9IF9faW42X3U7CgoKCgoKICB9OwoKCmV4dGVy
biBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgaW42YWRkcl9hbnk7CmV4dGVybiBjb25zdCBzdHJ1
Y3QgaW42X2FkZHIgaW42YWRkcl9sb29wYmFjazsKIyAyMzkgIi91c3IvaW5jbHVkZS9uZXRp
bmV0L2luLmgiIDMgNApzdHJ1Y3Qgc29ja2FkZHJfaW4KICB7CiAgICBzYV9mYW1pbHlfdCBz
aW5fZmFtaWx5OwogICAgaW5fcG9ydF90IHNpbl9wb3J0OwogICAgc3RydWN0IGluX2FkZHIg
c2luX2FkZHI7CgoKICAgIHVuc2lnbmVkIGNoYXIgc2luX3plcm9bc2l6ZW9mIChzdHJ1Y3Qg
c29ja2FkZHIpIC0KICAgICAgKHNpemVvZiAodW5zaWduZWQgc2hvcnQgaW50KSkgLQogICAg
ICBzaXplb2YgKGluX3BvcnRfdCkgLQogICAgICBzaXplb2YgKHN0cnVjdCBpbl9hZGRyKV07
CiAgfTsKCgoKc3RydWN0IHNvY2thZGRyX2luNgogIHsKICAgIHNhX2ZhbWlseV90IHNpbjZf
ZmFtaWx5OwogICAgaW5fcG9ydF90IHNpbjZfcG9ydDsKICAgIHVpbnQzMl90IHNpbjZfZmxv
d2luZm87CiAgICBzdHJ1Y3QgaW42X2FkZHIgc2luNl9hZGRyOwogICAgdWludDMyX3Qgc2lu
Nl9zY29wZV9pZDsKICB9OwoKCgoKc3RydWN0IGlwX21yZXEKICB7CgogICAgc3RydWN0IGlu
X2FkZHIgaW1yX211bHRpYWRkcjsKCgogICAgc3RydWN0IGluX2FkZHIgaW1yX2ludGVyZmFj
ZTsKICB9OwoKc3RydWN0IGlwX21yZXFfc291cmNlCiAgewoKICAgIHN0cnVjdCBpbl9hZGRy
IGltcl9tdWx0aWFkZHI7CgoKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9pbnRlcmZhY2U7CgoK
ICAgIHN0cnVjdCBpbl9hZGRyIGltcl9zb3VyY2VhZGRyOwogIH07CgoKCgpzdHJ1Y3QgaXB2
Nl9tcmVxCiAgewoKICAgIHN0cnVjdCBpbjZfYWRkciBpcHY2bXJfbXVsdGlhZGRyOwoKCiAg
ICB1bnNpZ25lZCBpbnQgaXB2Nm1yX2ludGVyZmFjZTsKICB9OwoKCgoKc3RydWN0IGdyb3Vw
X3JlcQogIHsKCiAgICB1aW50MzJfdCBncl9pbnRlcmZhY2U7CgoKICAgIHN0cnVjdCBzb2Nr
YWRkcl9zdG9yYWdlIGdyX2dyb3VwOwogIH07CgpzdHJ1Y3QgZ3JvdXBfc291cmNlX3JlcQog
IHsKCiAgICB1aW50MzJfdCBnc3JfaW50ZXJmYWNlOwoKCiAgICBzdHJ1Y3Qgc29ja2FkZHJf
c3RvcmFnZSBnc3JfZ3JvdXA7CgoKICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGdzcl9z
b3VyY2U7CiAgfTsKCgoKc3RydWN0IGlwX21zZmlsdGVyCiAgewoKICAgIHN0cnVjdCBpbl9h
ZGRyIGltc2ZfbXVsdGlhZGRyOwoKCiAgICBzdHJ1Y3QgaW5fYWRkciBpbXNmX2ludGVyZmFj
ZTsKCgogICAgdWludDMyX3QgaW1zZl9mbW9kZTsKCgogICAgdWludDMyX3QgaW1zZl9udW1z
cmM7CgogICAgc3RydWN0IGluX2FkZHIgaW1zZl9zbGlzdFsxXTsKICB9OwoKCgoKCnN0cnVj
dCBncm91cF9maWx0ZXIKICB7CgogICAgdWludDMyX3QgZ2ZfaW50ZXJmYWNlOwoKCiAgICBz
dHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBnZl9ncm91cDsKCgogICAgdWludDMyX3QgZ2ZfZm1v
ZGU7CgoKICAgIHVpbnQzMl90IGdmX251bXNyYzsKCiAgICBzdHJ1Y3Qgc29ja2FkZHJfc3Rv
cmFnZSBnZl9zbGlzdFsxXTsKfTsKIyAzNzYgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgi
IDMgNApleHRlcm4gdWludDMyX3QgbnRvaGwgKHVpbnQzMl90IF9fbmV0bG9uZykgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CmV4dGVybiB1aW50MTZfdCBudG9ocyAodWludDE2X3QgX19uZXRzaG9ydCkK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIHVpbnQzMl90IGh0b25sICh1aW50MzJfdCBf
X2hvc3Rsb25nKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f
KSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gdWludDE2X3QgaHRvbnMg
KHVpbnQxNl90IF9faG9zdHNob3J0KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAxIDMgNAojIDM4OCAiL3Vzci9pbmNsdWRl
L25ldGluZXQvaW4uaCIgMiAzIDQKIyA1MDMgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgi
IDMgNApleHRlcm4gaW50IGJpbmRyZXN2cG9ydCAoaW50IF9fc29ja2ZkLCBzdHJ1Y3Qgc29j
a2FkZHJfaW4gKl9fc29ja19pbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s
ZWFmX18pKTsKCgpleHRlcm4gaW50IGJpbmRyZXN2cG9ydDYgKGludCBfX3NvY2tmZCwgc3Ry
dWN0IHNvY2thZGRyX2luNiAqX19zb2NrX2luKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgNjMxICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5o
IiAzIDQKCiMgMjggIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAyIDMgNAoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvcnBjL25ldGRiLmgiIDEgMyA0CiMgNDIgIi91c3IvaW5jbHVkZS9ycGMvbmV0
ZGIuaCIgMyA0CiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgNDMgIi91c3IvaW5jbHVkZS9ycGMvbmV0ZGIuaCIg
MiAzIDQKCgoKc3RydWN0IHJwY2VudAp7CiAgY2hhciAqcl9uYW1lOwogIGNoYXIgKipyX2Fs
aWFzZXM7CiAgaW50IHJfbnVtYmVyOwp9OwoKZXh0ZXJuIHZvaWQgc2V0cnBjZW50IChpbnQg
X19zdGF5b3BlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK
ZXh0ZXJuIHZvaWQgZW5kcnBjZW50ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18gLCBfX2xlYWZfXykpOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnluYW1lIChj
b25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSk7CmV4dGVybiBzdHJ1Y3QgcnBjZW50ICpnZXRycGNieW51bWJlciAoaW50IF9fbnVt
YmVyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4g
c3RydWN0IHJwY2VudCAqZ2V0cnBjZW50ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQgZ2V0cnBjYnluYW1lX3IgKGNvbnN0
IGNoYXIgKl9fbmFtZSwgc3RydWN0IHJwY2VudCAqX19yZXN1bHRfYnVmLAogICAgICBjaGFy
ICpfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICBzdHJ1Y3QgcnBjZW50ICoqX19y
ZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgpleHRl
cm4gaW50IGdldHJwY2J5bnVtYmVyX3IgKGludCBfX251bWJlciwgc3RydWN0IHJwY2VudCAq
X19yZXN1bHRfYnVmLAogICAgICAgIGNoYXIgKl9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4s
CiAgICAgICAgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18gLCBfX2xlYWZfXykpOwoKZXh0ZXJuIGludCBnZXRycGNlbnRfciAoc3RydWN0
IHJwY2VudCAqX19yZXN1bHRfYnVmLCBjaGFyICpfX2J1ZmZlciwKICAgc2l6ZV90IF9fYnVm
bGVuLCBzdHJ1Y3QgcnBjZW50ICoqX19yZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXyAsIF9fbGVhZl9fKSk7CgoKCiMgMzMgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAyIDMg
NAojIDQyICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvbmV0ZGIuaCIgMSAzIDQKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvbmV0ZGIuaCIgMyA0
CnN0cnVjdCBuZXRlbnQKewogIGNoYXIgKm5fbmFtZTsKICBjaGFyICoqbl9hbGlhc2VzOwog
IGludCBuX2FkZHJ0eXBlOwogIHVpbnQzMl90IG5fbmV0Owp9OwojIDQzICIvdXNyL2luY2x1
ZGUvbmV0ZGIuaCIgMiAzIDQKIyA1MyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAoKCgoK
CgoKCmV4dGVybiBpbnQgKl9faF9lcnJub19sb2NhdGlvbiAodm9pZCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CiMgOTIgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIHZvaWQgaGVycm9y
IChjb25zdCBjaGFyICpfX3N0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s
ZWFmX18pKTsKCgpleHRlcm4gY29uc3QgY2hhciAqaHN0cmVycm9yIChpbnQgX19lcnJfbnVt
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKc3RydWN0
IGhvc3RlbnQKewogIGNoYXIgKmhfbmFtZTsKICBjaGFyICoqaF9hbGlhc2VzOwogIGludCBo
X2FkZHJ0eXBlOwogIGludCBoX2xlbmd0aDsKICBjaGFyICoqaF9hZGRyX2xpc3Q7CgoKCn07
CgoKCgoKCmV4dGVybiB2b2lkIHNldGhvc3RlbnQgKGludCBfX3N0YXlfb3Blbik7CgoKCgoK
ZXh0ZXJuIHZvaWQgZW5kaG9zdGVudCAodm9pZCk7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgaG9z
dGVudCAqZ2V0aG9zdGVudCAodm9pZCk7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAq
Z2V0aG9zdGJ5YWRkciAoY29uc3Qgdm9pZCAqX19hZGRyLCBfX3NvY2tsZW5fdCBfX2xlbiwK
ICAgICAgICAgIGludCBfX3R5cGUpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0
aG9zdGJ5bmFtZSAoY29uc3QgY2hhciAqX19uYW1lKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9u
ZXRkYi5oIiAzIDQKZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpnZXRob3N0YnluYW1lMiAoY29u
c3QgY2hhciAqX19uYW1lLCBpbnQgX19hZik7CiMgMTY3ICIvdXNyL2luY2x1ZGUvbmV0ZGIu
aCIgMyA0CmV4dGVybiBpbnQgZ2V0aG9zdGVudF9yIChzdHJ1Y3QgaG9zdGVudCAqX19yZXN0
cmljdCBfX3Jlc3VsdF9idWYsCiAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3Qg
X19idWZsZW4sCiAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCiAg
ICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCk7CgpleHRlcm4gaW50IGdldGhvc3RieWFk
ZHJfciAoY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2FkZHIsIF9fc29ja2xlbl90IF9fbGVu
LAogICAgICAgaW50IF9fdHlwZSwKICAgICAgIHN0cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0
IF9fcmVzdWx0X2J1ZiwKICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBf
X2J1ZmxlbiwKICAgICAgIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwK
ICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsKCmV4dGVybiBpbnQgZ2V0aG9z
dGJ5bmFtZV9yIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgIHN0cnVj
dCBob3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgIHN0cnVjdCBob3N0ZW50ICoq
X19yZXN0cmljdCBfX3Jlc3VsdCwKICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9w
KTsKCmV4dGVybiBpbnQgZ2V0aG9zdGJ5bmFtZTJfciAoY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25hbWUsIGludCBfX2FmLAogICAgICAgIHN0cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0
IF9fcmVzdWx0X2J1ZiwKICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3Qg
X19idWZsZW4sCiAgICAgICAgc3RydWN0IGhvc3RlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0
LAogICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsKIyAxOTggIi91c3IvaW5j
bHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIHZvaWQgc2V0bmV0ZW50IChpbnQgX19zdGF5X29w
ZW4pOwoKCgoKCmV4dGVybiB2b2lkIGVuZG5ldGVudCAodm9pZCk7CgoKCgoKCmV4dGVybiBz
dHJ1Y3QgbmV0ZW50ICpnZXRuZXRlbnQgKHZvaWQpOwoKCgoKCgpleHRlcm4gc3RydWN0IG5l
dGVudCAqZ2V0bmV0YnlhZGRyICh1aW50MzJfdCBfX25ldCwgaW50IF9fdHlwZSk7CgoKCgoK
ZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdldG5ldGJ5bmFtZSAoY29uc3QgY2hhciAqX19uYW1l
KTsKIyAyMzcgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIGludCBnZXRuZXRl
bnRfciAoc3RydWN0IG5ldGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgIGNoYXIg
Kl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgc3RydWN0IG5ldGVudCAq
Kl9fcmVzdHJpY3QgX19yZXN1bHQsCiAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsK
CmV4dGVybiBpbnQgZ2V0bmV0YnlhZGRyX3IgKHVpbnQzMl90IF9fbmV0LCBpbnQgX190eXBl
LAogICAgICBzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAg
Y2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICBzdHJ1Y3Qg
bmV0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
aF9lcnJub3ApOwoKZXh0ZXJuIGludCBnZXRuZXRieW5hbWVfciAoY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25hbWUsCiAgICAgIHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1
bHRfYnVmLAogICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4s
CiAgICAgIHN0cnVjdCBuZXRlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAogICAgICBpbnQg
Kl9fcmVzdHJpY3QgX19oX2Vycm5vcCk7CgoKCgpzdHJ1Y3Qgc2VydmVudAp7CiAgY2hhciAq
c19uYW1lOwogIGNoYXIgKipzX2FsaWFzZXM7CiAgaW50IHNfcG9ydDsKICBjaGFyICpzX3By
b3RvOwp9OwoKCgoKCgpleHRlcm4gdm9pZCBzZXRzZXJ2ZW50IChpbnQgX19zdGF5X29wZW4p
OwoKCgoKCmV4dGVybiB2b2lkIGVuZHNlcnZlbnQgKHZvaWQpOwoKCgoKCgpleHRlcm4gc3Ry
dWN0IHNlcnZlbnQgKmdldHNlcnZlbnQgKHZvaWQpOwoKCgoKCgpleHRlcm4gc3RydWN0IHNl
cnZlbnQgKmdldHNlcnZieW5hbWUgKGNvbnN0IGNoYXIgKl9fbmFtZSwgY29uc3QgY2hhciAq
X19wcm90byk7CgoKCgoKCmV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5cG9ydCAo
aW50IF9fcG9ydCwgY29uc3QgY2hhciAqX19wcm90byk7CiMgMzA4ICIvdXNyL2luY2x1ZGUv
bmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQgZ2V0c2VydmVudF9yIChzdHJ1Y3Qgc2VydmVudCAq
X19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBz
aXplX3QgX19idWZsZW4sCiAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1
bHQpOwoKZXh0ZXJuIGludCBnZXRzZXJ2YnluYW1lX3IgKGNvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19uYW1lLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Byb3RvLAogICAg
ICAgc3RydWN0IHNlcnZlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgY2hh
ciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgc3RydWN0IHNl
cnZlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKCmV4dGVybiBpbnQgZ2V0c2VydmJ5cG9y
dF9yIChpbnQgX19wb3J0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcHJvdG8sCiAgICAg
ICBzdHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICBzdHJ1Y3Qgc2Vy
dmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpOwoKCgoKc3RydWN0IHByb3RvZW50CnsKICBj
aGFyICpwX25hbWU7CiAgY2hhciAqKnBfYWxpYXNlczsKICBpbnQgcF9wcm90bzsKfTsKCgoK
CgoKZXh0ZXJuIHZvaWQgc2V0cHJvdG9lbnQgKGludCBfX3N0YXlfb3Blbik7CgoKCgoKZXh0
ZXJuIHZvaWQgZW5kcHJvdG9lbnQgKHZvaWQpOwoKCgoKCgpleHRlcm4gc3RydWN0IHByb3Rv
ZW50ICpnZXRwcm90b2VudCAodm9pZCk7CgoKCgoKZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAq
Z2V0cHJvdG9ieW5hbWUgKGNvbnN0IGNoYXIgKl9fbmFtZSk7CgoKCgoKZXh0ZXJuIHN0cnVj
dCBwcm90b2VudCAqZ2V0cHJvdG9ieW51bWJlciAoaW50IF9fcHJvdG8pOwojIDM3NCAiL3Vz
ci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4gaW50IGdldHByb3RvZW50X3IgKHN0cnVj
dCBwcm90b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgY2hhciAqX19yZXN0
cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgIHN0cnVjdCBwcm90b2VudCAqKl9f
cmVzdHJpY3QgX19yZXN1bHQpOwoKZXh0ZXJuIGludCBnZXRwcm90b2J5bmFtZV9yIChjb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKl9f
cmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs
IHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0
IF9fcmVzdWx0KTsKCmV4dGVybiBpbnQgZ2V0cHJvdG9ieW51bWJlcl9yIChpbnQgX19wcm90
bywKICAgICAgICAgIHN0cnVjdCBwcm90b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYs
CiAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAg
ICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKIyAzOTUg
Ii91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIGludCBzZXRuZXRncmVudCAoY29u
c3QgY2hhciAqX19uZXRncm91cCk7CgoKCgoKCgpleHRlcm4gdm9pZCBlbmRuZXRncmVudCAo
dm9pZCk7CiMgNDEyICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQgZ2V0
bmV0Z3JlbnQgKGNoYXIgKipfX3Jlc3RyaWN0IF9faG9zdHAsCiAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fdXNlcnAsCiAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZG9tYWlucCk7CiMgNDIzICIv
dXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQgaW5uZXRnciAoY29uc3QgY2hh
ciAqX19uZXRncm91cCwgY29uc3QgY2hhciAqX19ob3N0LAogICAgICBjb25zdCBjaGFyICpf
X3VzZXIsIGNvbnN0IGNoYXIgKl9fZG9tYWluKTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0bmV0
Z3JlbnRfciAoY2hhciAqKl9fcmVzdHJpY3QgX19ob3N0cCwKICAgICBjaGFyICoqX19yZXN0
cmljdCBfX3VzZXJwLAogICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZG9tYWlucCwKICAgICBj
aGFyICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4pOwojIDQ1MSAiL3Vz
ci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4gaW50IHJjbWQgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fYWhvc3QsIHVuc2lnbmVkIHNob3J0IGludCBfX3Jwb3J0LAogICBjb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbG9jdXNlciwKICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Jl
bXVzZXIsCiAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19jbWQsIGludCAqX19yZXN0cmlj
dCBfX2ZkMnApOwojIDQ2MyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4gaW50
IHJjbWRfYWYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYWhvc3QsIHVuc2lnbmVkIHNob3J0IGlu
dCBfX3Jwb3J0LAogICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbG9jdXNlciwKICAg
ICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3JlbXVzZXIsCiAgICAgIGNvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19jbWQsIGludCAqX19yZXN0cmljdCBfX2ZkMnAsCiAgICAgIHNhX2Zh
bWlseV90IF9fYWYpOwojIDQ3OSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4g
aW50IHJleGVjIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCBpbnQgX19ycG9ydCwKICAg
IGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3Bhc3MsCiAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9f
cmVzdHJpY3QgX19mZDJwKTsKIyA0OTEgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0
ZXJuIGludCByZXhlY19hZiAoY2hhciAqKl9fcmVzdHJpY3QgX19haG9zdCwgaW50IF9fcnBv
cnQsCiAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgIGNvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19wYXNzLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2NtZCwgaW50ICpfX3Jlc3RyaWN0IF9fZmQycCwKICAgICAgIHNhX2ZhbWlseV90IF9f
YWYpOwojIDUwNSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4gaW50IHJ1c2Vy
b2sgKGNvbnN0IGNoYXIgKl9fcmhvc3QsIGludCBfX3N1c2VyLAogICAgICBjb25zdCBjaGFy
ICpfX3JlbXVzZXIsIGNvbnN0IGNoYXIgKl9fbG9jdXNlcik7CiMgNTE1ICIvdXNyL2luY2x1
ZGUvbmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQgcnVzZXJva19hZiAoY29uc3QgY2hhciAqX19y
aG9zdCwgaW50IF9fc3VzZXIsCiAgICAgICAgIGNvbnN0IGNoYXIgKl9fcmVtdXNlciwgY29u
c3QgY2hhciAqX19sb2N1c2VyLAogICAgICAgICBzYV9mYW1pbHlfdCBfX2FmKTsKIyA1Mjgg
Ii91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIGludCBpcnVzZXJvayAodWludDMy
X3QgX19yYWRkciwgaW50IF9fc3VzZXIsCiAgICAgICBjb25zdCBjaGFyICpfX3JlbXVzZXIs
IGNvbnN0IGNoYXIgKl9fbG9jdXNlcik7CiMgNTM5ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIg
MyA0CmV4dGVybiBpbnQgaXJ1c2Vyb2tfYWYgKGNvbnN0IHZvaWQgKl9fcmFkZHIsIGludCBf
X3N1c2VyLAogICBjb25zdCBjaGFyICpfX3JlbXVzZXIsIGNvbnN0IGNoYXIgKl9fbG9jdXNl
ciwKICAgc2FfZmFtaWx5X3QgX19hZik7CiMgNTUxICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIg
MyA0CmV4dGVybiBpbnQgcnJlc3Zwb3J0IChpbnQgKl9fYWxwb3J0KTsKIyA1NjAgIi91c3Iv
aW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIGludCBycmVzdnBvcnRfYWYgKGludCAqX19h
bHBvcnQsIHNhX2ZhbWlseV90IF9fYWYpOwoKCgoKCgpzdHJ1Y3QgYWRkcmluZm8KewogIGlu
dCBhaV9mbGFnczsKICBpbnQgYWlfZmFtaWx5OwogIGludCBhaV9zb2NrdHlwZTsKICBpbnQg
YWlfcHJvdG9jb2w7CiAgc29ja2xlbl90IGFpX2FkZHJsZW47CiAgc3RydWN0IHNvY2thZGRy
ICphaV9hZGRyOwogIGNoYXIgKmFpX2Nhbm9ubmFtZTsKICBzdHJ1Y3QgYWRkcmluZm8gKmFp
X25leHQ7Cn07CiMgNjYyICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQg
Z2V0YWRkcmluZm8gKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICBjb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc2VydmljZSwKICAgY29uc3Qgc3RydWN0IGFkZHJpbmZvICpf
X3Jlc3RyaWN0IF9fcmVxLAogICBzdHJ1Y3QgYWRkcmluZm8gKipfX3Jlc3RyaWN0IF9fcGFp
KTsKCgpleHRlcm4gdm9pZCBmcmVlYWRkcmluZm8gKHN0cnVjdCBhZGRyaW5mbyAqX19haSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gY29u
c3QgY2hhciAqZ2FpX3N0cmVycm9yIChpbnQgX19lY29kZSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IGdldG5hbWVpbmZvIChj
b25zdCBzdHJ1Y3Qgc29ja2FkZHIgKl9fcmVzdHJpY3QgX19zYSwKICAgc29ja2xlbl90IF9f
c2FsZW4sIGNoYXIgKl9fcmVzdHJpY3QgX19ob3N0LAogICBzb2NrbGVuX3QgX19ob3N0bGVu
LCBjaGFyICpfX3Jlc3RyaWN0IF9fc2VydiwKICAgc29ja2xlbl90IF9fc2VydmxlbiwgaW50
IF9fZmxhZ3MpOwojIDcxMyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAoKIyA4MSAibWFj
aGluZS5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9hcnBhL2luZXQuaCIgMSAzIDQKIyAzMCAi
L3Vzci9pbmNsdWRlL2FycGEvaW5ldC5oIiAzIDQKCgoKCmV4dGVybiBpbl9hZGRyX3QgaW5l
dF9hZGRyIChjb25zdCBjaGFyICpfX2NwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9sbmFvZiAoc3RydWN0IGlu
X2FkZHIgX19pbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK
CgoKZXh0ZXJuIHN0cnVjdCBpbl9hZGRyIGluZXRfbWFrZWFkZHIgKGluX2FkZHJfdCBfX25l
dCwgaW5fYWRkcl90IF9faG9zdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g
LCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9uZXRvZiAoc3RydWN0IGlu
X2FkZHIgX19pbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK
CgoKZXh0ZXJuIGluX2FkZHJfdCBpbmV0X25ldHdvcmsgKGNvbnN0IGNoYXIgKl9fY3ApIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBjaGFy
ICppbmV0X250b2EgKHN0cnVjdCBpbl9hZGRyIF9faW4pIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gaW50IGluZXRfcHRvbiAoaW50IF9f
YWYsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19jcCwKICAgICAgICB2b2lkICpfX3Jlc3Ry
aWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoK
CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKmluZXRfbnRvcCAoaW50IF9fYWYsIGNvbnN0IHZvaWQg
Kl9fcmVzdHJpY3QgX19jcCwKICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc29j
a2xlbl90IF9fbGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh
Zl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgaW5ldF9hdG9uIChjb25zdCBjaGFyICpfX2NwLCBz
dHJ1Y3QgaW5fYWRkciAqX19pbnApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f
bGVhZl9fKSk7CgoKCmV4dGVybiBjaGFyICppbmV0X25ldGEgKGluX2FkZHJfdCBfX25ldCwg
Y2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
ICwgX19sZWFmX18pKTsKCgoKCmV4dGVybiBjaGFyICppbmV0X25ldF9udG9wIChpbnQgX19h
ZiwgY29uc3Qgdm9pZCAqX19jcCwgaW50IF9fYml0cywKICAgICAgIGNoYXIgKl9fYnVmLCBz
aXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7
CgoKCgpleHRlcm4gaW50IGluZXRfbmV0X3B0b24gKGludCBfX2FmLCBjb25zdCBjaGFyICpf
X2NwLAogICAgIHZvaWQgKl9fYnVmLCBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gdW5zaWduZWQgaW50IGluZXRf
bnNhcF9hZGRyIChjb25zdCBjaGFyICpfX2NwLAogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9f
YnVmLCBpbnQgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f
KSk7CgoKCmV4dGVybiBjaGFyICppbmV0X25zYXBfbnRvYSAoaW50IF9fbGVuLCBjb25zdCB1
bnNpZ25lZCBjaGFyICpfX2NwLAogICAgICAgIGNoYXIgKl9fYnVmKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgojIDgzICJtYWNoaW5lLmMiIDIKIyAx
MzUgIm1hY2hpbmUuYyIKCiMgMTM1ICJtYWNoaW5lLmMiCnN0YXRpYyBQbExvbmcgc3RhcnRf
dXNlcl90aW1lID0gMDsKc3RhdGljIFBsTG9uZyBzdGFydF9zeXN0ZW1fdGltZSA9IDA7CnN0
YXRpYyBQbExvbmcgc3RhcnRfcmVhbF90aW1lID0gMDsKCnN0YXRpYyBpbnQgY3VyX3NlZWQg
PSAxOwojIDE1MCAibWFjaGluZS5jIgpzdGF0aWMgY2hhciAqSG9zdF9OYW1lX0Zyb21fQWxp
YXMoc3RydWN0IGhvc3RlbnQgKmhvc3RfZW50cnkpOwojIDE2NyAibWFjaGluZS5jIgp2b2lk
ClBsX0luaXRfTWFjaGluZSh2b2lkKQp7CiAgdHpzZXQoKTsKCiAgc3RhcnRfdXNlcl90aW1l
ID0gUGxfTV9Vc2VyX1RpbWUoKTsKICBzdGFydF9zeXN0ZW1fdGltZSA9IFBsX01fU3lzdGVt
X1RpbWUoKTsKICBzdGFydF9yZWFsX3RpbWUgPSBQbF9NX1JlYWxfVGltZSgpOwoKCiAgbWFs
bG9wdCgKIyAxNzcgIm1hY2hpbmUuYyIgMyA0CiAgICAgICAgIC00CiMgMTc3ICJtYWNoaW5l
LmMiCiAgICAgICAgICAgICAgICAgICAsIDApOwoKCiAgUGxfSW5pdF9NYWNoaW5lMSgpOwp9
CiMgMTkwICJtYWNoaW5lLmMiCmNoYXIgKgpQbF9NX1N5c19FcnJfU3RyaW5nKGludCByZXRf
dmFsKQp7CgoKCgoKICBjaGFyICpzdHI7CiAgc3RhdGljIGNoYXIgYnVmZls2NF07CiMgMjI2
ICJtYWNoaW5lLmMiCiAgc3RyID0gc3RyZXJyb3IoCiMgMjI2ICJtYWNoaW5lLmMiIDMgNAog
ICAgICAgICAgICAgICAgKCpfX2Vycm5vX2xvY2F0aW9uICgpKQojIDIyNiAibWFjaGluZS5j
IgogICAgICAgICAgICAgICAgICAgICApOwoKCiAgaWYgKHN0cikKICAgIHJldHVybiBzdHI7
CgogIHNwcmludGYoYnVmZiwgIlVua25vd24gZXJyb3IgKCVkKSIsIAojIDIzMiAibWFjaGlu
ZS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqX19lcnJub19s
b2NhdGlvbiAoKSkKIyAyMzIgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKICByZXR1cm4gYnVmZjsKfQojIDI0NCAibWFjaGluZS5jIgpQ
bExvbmcKUGxfTV9Vc2VyX1RpbWUodm9pZCkKewogIFBsTG9uZyB1c2VyX3RpbWU7CgoKICBz
dHJ1Y3QgcnVzYWdlIHJzcl91c2FnZTsKCiAgZ2V0cnVzYWdlKAojIDI1MiAibWFjaGluZS5j
IiAzIDQKICAgICAgICAgICBSVVNBR0VfU0VMRgojIDI1MiAibWFjaGluZS5jIgogICAgICAg
ICAgICAgICAgICAgICAgLCAmcnNyX3VzYWdlKTsKCiAgdXNlcl90aW1lID0gKHJzcl91c2Fn
ZS5ydV91dGltZS50dl9zZWMgKiAxMDAwKSArCiAgICAocnNyX3VzYWdlLnJ1X3V0aW1lLnR2
X3VzZWMgLyAxMDAwKTsKIyAyNzUgIm1hY2hpbmUuYyIKICByZXR1cm4gdXNlcl90aW1lIC0g
c3RhcnRfdXNlcl90aW1lOwp9CiMgMjg2ICJtYWNoaW5lLmMiClBsTG9uZwpQbF9NX1N5c3Rl
bV9UaW1lKHZvaWQpCnsKICBQbExvbmcgc3lzdGVtX3RpbWU7CgoKICBzdHJ1Y3QgcnVzYWdl
IHJzcl91c2FnZTsKCiAgZ2V0cnVzYWdlKAojIDI5NCAibWFjaGluZS5jIiAzIDQKICAgICAg
ICAgICBSVVNBR0VfU0VMRgojIDI5NCAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAg
ICAgLCAmcnNyX3VzYWdlKTsKCiAgc3lzdGVtX3RpbWUgPSAocnNyX3VzYWdlLnJ1X3N0aW1l
LnR2X3NlYyAqIDEwMDApICsKICAgIChyc3JfdXNhZ2UucnVfc3RpbWUudHZfdXNlYyAvIDEw
MDApOwojIDMxNyAibWFjaGluZS5jIgogIHJldHVybiBzeXN0ZW1fdGltZSAtIHN0YXJ0X3N5
c3RlbV90aW1lOwp9CiMgMzI4ICJtYWNoaW5lLmMiClBsTG9uZwpQbF9NX1JlYWxfVGltZSh2
b2lkKQp7CiAgUGxMb25nIHJlYWxfdGltZTsKCgogIHN0cnVjdCB0aW1ldmFsIHR2OwoKICBn
ZXR0aW1lb2ZkYXkoJnR2LCAKIyAzMzYgIm1hY2hpbmUuYyIgMyA0CiAgICAgICAgICAgICAg
ICAgICAoKHZvaWQgKikwKQojIDMzNiAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAg
ICAgICk7CiAgcmVhbF90aW1lID0gKHR2LnR2X3NlYyAqIDEwMDApICsgKHR2LnR2X3VzZWMg
LyAxMDAwKTsKIyAzNTAgIm1hY2hpbmUuYyIKICByZXR1cm4gcmVhbF90aW1lIC0gc3RhcnRf
cmVhbF90aW1lOwp9CiMgMzY3ICJtYWNoaW5lLmMiCnZvaWQKUGxfTV9SYW5kb21pemUodm9p
ZCkKewogIHN0YXRpYyBpbnQgY291bnQgPSAwOwoKCgogIHN0cnVjdCB0aW1ldmFsIHR2Owog
IGludCBzZWVkOwoKICBnZXR0aW1lb2ZkYXkoJnR2LCAKIyAzNzcgIm1hY2hpbmUuYyIgMyA0
CiAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQojIDM3NyAibWFjaGluZS5jIgogICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgc2VlZCA9ICh0di50dl9zZWMgKiAxMDAwKSArICh0
di50dl91c2VjIC8gMTAwMCk7CgogIGNvdW50ID0gKGNvdW50ICsgcmFuZCgpKSAlIDB4RkZG
RjsKICBzZWVkID0gc2VlZCBeIChnZXRwaWQoKSA8PCAoc2VlZCAmIDB4RkYpKTsKICBzZWVk
ICo9IGNvdW50OwogIHNlZWQgPSBzZWVkICYgMHhGRkZGRkY7CgogIFBsX01fU2V0X1NlZWQo
c2VlZCk7Cn0KIyAzOTUgIm1hY2hpbmUuYyIKdm9pZApQbF9NX1NldF9TZWVkKGludCBuKQp7
CiAgY3VyX3NlZWQgPSBuOwogIHNyYW5kKGN1cl9zZWVkKTsKfQojIDQwOSAibWFjaGluZS5j
IgppbnQKUGxfTV9HZXRfU2VlZCh2b2lkKQp7CiAgcmV0dXJuIGN1cl9zZWVkOwp9CiMgNDIz
ICJtYWNoaW5lLmMiCmludApQbF9NX1JhbmRvbV9JbnRlZ2VyKGludCBuKQp7CiAgcmV0dXJu
IChpbnQpICgoZG91YmxlKSBuICogcmFuZCgpIC8gKAojIDQyNiAibWFjaGluZS5jIiAzIDQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTQ3NDgzNjQ3IAojIDQy
NiAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgMS4wKSk7Cn0KIyA0MzcgIm1hY2hpbmUuYyIKZG91YmxlClBsX01fUmFuZG9t
X0Zsb2F0KGRvdWJsZSBuKQp7CiAgcmV0dXJuIG4gKiByYW5kKCkgLyAoCiMgNDQwICJtYWNo
aW5lLmMiIDMgNAogICAgICAgICAgICAgICAgICAgICAgMjE0NzQ4MzY0NyAKIyA0NDAgIm1h
Y2hpbmUuYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMS4wKTsKfQojIDQ1
MSAibWFjaGluZS5jIgpjaGFyICoKUGxfTV9Ib3N0X05hbWVfRnJvbV9OYW1lKGNoYXIgKmhv
c3RfbmFtZSkKewogIHN0YXRpYyBjaGFyIGJ1ZmZbNDA5Nl07CgoKICBzdHJ1Y3QgaG9zdGVu
dCAqaG9zdF9lbnRyeTsKCgogIGlmIChob3N0X25hbWUgPT0gCiMgNDYwICJtYWNoaW5lLmMi
IDMgNAogICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQojIDQ2MCAibWFjaGluZS5jIgog
ICAgICAgICAgICAgICAgICAgICAgKQogICAgewogICAgICBQbExvbmcgbGVuZ3RoID0gc2l6
ZW9mKGJ1ZmYpOwogICAgICBob3N0X25hbWUgPSBidWZmOwoKCgogICAgICBpZiAoZ2V0aG9z
dG5hbWUoYnVmZiwgbGVuZ3RoKSkKCiAgICAgICAgewogICAgICAgICAgc3RyY3B5KGJ1ZmYs
ICJ1bmtub3duIGhvc3QgbmFtZSIpOwogICAgICAgICAgZ290byBmaW5pc2g7CiAgICAgICAg
fQogICAgfQoKICBpZiAoc3RyY2hyKGhvc3RfbmFtZSwgJy4nKSAhPSAKIyA0NzUgIm1hY2hp
bmUuYyIgMyA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQoj
IDQ3NSAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK
ICAgIGdvdG8gZmluaXNoOwoKCgogIGhvc3RfZW50cnkgPSBnZXRob3N0YnluYW1lKGhvc3Rf
bmFtZSk7CiAgaWYgKGhvc3RfZW50cnkgPT0gCiMgNDgxICJtYWNoaW5lLmMiIDMgNAogICAg
ICAgICAgICAgICAgICAgKCh2b2lkICopMCkKIyA0ODEgIm1hY2hpbmUuYyIKICAgICAgICAg
ICAgICAgICAgICAgICApCiAgICBnb3RvIGZpbmlzaDsKCiAgaG9zdF9uYW1lID0gSG9zdF9O
YW1lX0Zyb21fQWxpYXMoaG9zdF9lbnRyeSk7CgoKCmZpbmlzaDoKICByZXR1cm4gaG9zdF9u
YW1lOwp9CiMgNDk5ICJtYWNoaW5lLmMiCmNoYXIgKgpQbF9NX0hvc3RfTmFtZV9Gcm9tX0Fk
cihjaGFyICpob3N0X2FkZHJlc3MpCnsKCiAgc3RydWN0IGhvc3RlbnQgKmhvc3RfZW50cnk7
CiAgc3RydWN0IGluX2FkZHIgaWFkcjsKCgoKCgoKICBpZiAoaW5ldF9hdG9uKGhvc3RfYWRk
cmVzcywgJmlhZHIpID09IDApCgogICAgcmV0dXJuIDA7CgogIGhvc3RfZW50cnkgPSBnZXRo
b3N0YnlhZGRyKChjaGFyICopICZpYWRyLCBzaXplb2YoaWFkciksIAojIDUxNSAibWFjaGlu
ZS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIKIyA1MTUgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogIGlmICho
b3N0X2VudHJ5ID09IAojIDUxNiAibWFjaGluZS5jIiAzIDQKICAgICAgICAgICAgICAgICAg
ICgodm9pZCAqKTApCiMgNTE2ICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgICAgICAg
KQogICAgcmV0dXJuIAojIDUxNyAibWFjaGluZS5jIiAzIDQKICAgICAgICAgICgodm9pZCAq
KTApCiMgNTE3ICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgOwoKICByZXR1cm4gSG9zdF9O
YW1lX0Zyb21fQWxpYXMoaG9zdF9lbnRyeSk7CgoKCn0KIyA1MzQgIm1hY2hpbmUuYyIKc3Rh
dGljIGNoYXIgKgpIb3N0X05hbWVfRnJvbV9BbGlhcyhzdHJ1Y3QgaG9zdGVudCAqaG9zdF9l
bnRyeSkKewogIGNoYXIgKm5hbWU7CiAgY2hhciAqKmFsaWFzOwogIGNoYXIgKnA7CgogIG5h
bWUgPSAoY2hhciAqKSBob3N0X2VudHJ5LT5oX25hbWU7CiAgYWxpYXMgPSBob3N0X2VudHJ5
LT5oX2FsaWFzZXM7CiAgd2hpbGUgKChwID0gc3RyY2hyKG5hbWUsICcuJykpID09IAojIDU0
MyAibWFjaGluZS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
KHZvaWQgKikwKSAKIyA1NDMgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmICphbGlhcykKICAgIG5hbWUgPSAqYWxpYXMrKzsKCiAgaWYg
KHApCiAgICByZXR1cm4gbmFtZTsKCiAgcmV0dXJuIChjaGFyICopIGhvc3RfZW50cnktPmhf
bmFtZTsKfQojIDU2MSAibWFjaGluZS5jIgpCb29sClBsX01fU2V0X1dvcmtpbmdfRGlyKGNo
YXIgKnBhdGgpCnsKICBjaGFyICpuZXdfcGF0aCA9IFBsX01fQWJzb2x1dGVfUGF0aF9OYW1l
KHBhdGgpOwoKICByZXR1cm4gKG5ld19wYXRoICE9IAojIDU2NiAibWFjaGluZS5jIiAzIDQK
ICAgICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkgCiMgNTY2ICJtYWNoaW5lLmMiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2hkaXIobmV3X3BhdGgpID09IDApOwp9CiMg
NTc2ICJtYWNoaW5lLmMiCmNoYXIgKgpQbF9NX0dldF9Xb3JraW5nX0Rpcih2b2lkKQp7CiAg
c3RhdGljIGNoYXIgY3VyX3dvcmtfZGlyWwojIDU3OSAibWFjaGluZS5jIiAzIDQKICAgICAg
ICAgICAgICAgICAgICAgICAgICA0MDk2CiMgNTc5ICJtYWNoaW5lLmMiCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF07CgogIGlmIChnZXRjd2QoY3VyX3dvcmtfZGly
LCBzaXplb2YoY3VyX3dvcmtfZGlyKSAtIDEpID09IAojIDU4MSAibWFjaGluZS5jIiAzIDQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgodm9pZCAqKTApCiMgNTgxICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgc3RyY3B5KGN1cl93
b3JrX2RpciwgIi4iKTsKICByZXR1cm4gY3VyX3dvcmtfZGlyOwp9CiMgNTk0ICJtYWNoaW5l
LmMiCmNoYXIgKgpQbF9NX0Fic29sdXRlX1BhdGhfTmFtZShjaGFyICpzcmMpCnsKICBzdGF0
aWMgY2hhciBidWZmWzJdWwojIDU5NyAibWFjaGluZS5jIiAzIDQKICAgICAgICAgICAgICAg
ICAgICAgNDA5NgojIDU5NyAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXTsKICBpbnQgcmVzID0gMDsKICBjaGFyICpkc3Q7CiAgY2hhciAqcCwgKnE7CiAg
Y2hhciBjOwoKICBkc3QgPSBidWZmW3Jlc107CiAgd2hpbGUgKCgqZHN0KysgPSAqc3JjKSkK
ICAgIHsKICAgICAgYyA9ICpzcmMrKzsKICAgICAgaWYgKGMgPT0gJyQnCgoKCiAgICAgICAg
KQogICAgICAgIHsKICAgICAgICAgIHAgPSBkc3Q7CiAgICAgICAgICB3aGlsZSAoCiMgNjE0
ICJtYWNoaW5lLmMiIDMgNAogICAgICAgICAgICAgICAgKCgqX19jdHlwZV9iX2xvYyAoKSlb
KGludCkgKCgKIyA2MTQgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgICpzcmMKIyA2MTQg
Im1hY2hpbmUuYyIgMyA0CiAgICAgICAgICAgICAgICApKV0gJiAodW5zaWduZWQgc2hvcnQg
aW50KSBfSVNhbG51bSkgCiMgNjE0ICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHx8ICpzcmMgPT0gJ18nKQogICAgICAgICAgICAqZHN0KysgPSAqc3JjKys7
CgoKCgogICAgICAgICAgKmRzdCA9ICdcMCc7CiAgICAgICAgICBxID0gZ2V0ZW52KHApOwog
ICAgICAgICAgaWYgKHEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwLS07CiAgICAg
ICAgICAgICAgc3RyY3B5KHAsIHEpOwogICAgICAgICAgICAgIGRzdCA9IHAgKyBzdHJsZW4o
cCk7CgoKCgogICAgICAgICAgICB9CgoKCgogICAgICAgIH0KICAgIH0KICAqZHN0ID0gJ1ww
JzsKCiAgaWYgKGJ1ZmZbcmVzXVswXSA9PSAnficpCiAgICB7CiAgICAgIGlmICgoKGJ1ZmZb
cmVzXVsxXSkgPT0gJy8nIHx8IChidWZmW3Jlc11bMV0pID09ICcvJykgfHwgYnVmZltyZXNd
WzFdID09ICdcMCcpCiAgICAgICAgewogICBxID0gCiMgNjQ0ICJtYWNoaW5lLmMiIDMgNAog
ICAgICAoKHZvaWQgKikwKQojIDY0NCAibWFjaGluZS5jIgogICAgICAgICAgOzsKICAgICAg
ICAgIGlmICgocCA9IGdldGVudigiSE9NRSIpKSA9PSAKIyA2NDUgIm1hY2hpbmUuYyIgMyA0
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQojIDY0
NSAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICkKICAgICB7CgoKCgoKICAgICAgIHJldHVybiAKIyA2NTIgIm1hY2hpbmUuYyIgMyA0CiAg
ICAgICAgICAgICAoKHZvaWQgKikwKQojIDY1MiAibWFjaGluZS5jIgogICAgICAgICAgICAg
ICAgIDsKCiAgICAgfQogICBpZiAocSA9PSAKIyA2NTUgIm1hY2hpbmUuYyIgMyA0CiAgICAg
ICAgICAgKCh2b2lkICopMCkKIyA2NTUgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgKQog
ICAgIHEgPSAiIjsKICAgICAgICAgIHNwcmludGYoYnVmZlsxIC0gcmVzXSwgIiVzJXMvJXMi
LCBxLCBwLCBidWZmW3Jlc10gKyAxKTsKICAgICAgICAgIHJlcyA9IDEgLSByZXM7CiAgICAg
ICAgfQoKICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKnB3
OwoKICAgICAgICAgIHAgPSBidWZmW3Jlc10gKyAxOwogICAgICAgICAgd2hpbGUgKCpwICYm
ICEoKCpwKSA9PSAnLycgfHwgKCpwKSA9PSAnLycpKQogICAgICAgICAgICBwKys7CgogICAg
ICAgICAgYnVmZltyZXNdWzBdID0gKnA7CiAgICAgICAgICAqcCA9ICdcMCc7CiAgICAgICAg
ICBpZiAoKHB3ID0gZ2V0cHduYW0oYnVmZltyZXNdICsgMSkpID09IAojIDY3MSAibWFjaGlu
ZS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoKHZvaWQgKikwKQojIDY3MSAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHJldHVybiAKIyA2
NzIgIm1hY2hpbmUuYyIgMyA0CiAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCiMgNjcy
ICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgKnAgPSBi
dWZmW3Jlc11bMF07CgogICAgICAgICAgc3ByaW50ZihidWZmWzEgLSByZXNdLCAiJXMvJXMi
LCBwdy0+cHdfZGlyLCBwKTsKICAgICAgICAgIHJlcyA9IDEgLSByZXM7CiAgICAgICAgfQoK
ICAgIH0KCiAgaWYgKHN0cmNtcChidWZmW3Jlc10sICJ1c2VyIikgPT0gMCkKICAgIHJldHVy
biBidWZmW3Jlc107CiMgNzA2ICJtYWNoaW5lLmMiCiAgaWYgKGJ1ZmZbcmVzXVswXSAhPSAn
LycpCiAgICB7CiAgICAgIHNwcmludGYoYnVmZlsxIC0gcmVzXSwgIiVzLyVzIiwgUGxfTV9H
ZXRfV29ya2luZ19EaXIoKSwgYnVmZltyZXNdKTsKICAgICAgcmVzID0gMSAtIHJlczsKICAg
IH0KCiAgc3JjID0gYnVmZltyZXNdOwogIHJlcyA9IDEgLSByZXM7CiAgZHN0ID0gYnVmZlty
ZXNdOwoKICB3aGlsZSAoKCpkc3QrKyA9ICpzcmMpKQogICAgewogICAgICBpZiAoKnNyYysr
ICE9ICcvJykKICAgICAgICBjb250aW51ZTsKCiAgICBjb2xsYXBzZToKICAgICAgd2hpbGUg
KCpzcmMgPT0gJy8nKQogICAgICAgIHNyYysrOwoKICAgICAgaWYgKCpzcmMgIT0gJy4nKQog
ICAgICAgIGNvbnRpbnVlOwoKICAgICAgaWYgKHNyY1sxXSA9PSAnLycgfHwgc3JjWzFdID09
ICdcMCcpCiAgICAgICAgewogICAgICAgICAgc3JjKys7CiAgICAgICAgICBnb3RvIGNvbGxh
cHNlOwogICAgICAgIH0KCiAgICAgIGlmIChzcmNbMV0gIT0gJy4nIHx8IChzcmNbMl0gIT0g
Jy8nICYmIHNyY1syXSAhPSAnXDAnKSkKICAgICAgICBjb250aW51ZTsKCiAgICAgIHNyYyAr
PSAyOwogICAgICBwID0gZHN0IC0gMjsKICAgICAgd2hpbGUgKHAgPj0gYnVmZltyZXNdICYm
ICpwICE9ICcvJykKICAgICAgICBwLS07CgogICAgICBpZiAocCA8IGJ1ZmZbcmVzXSkKICAg
ICAgICByZXR1cm4gCiMgNzQzICJtYWNoaW5lLmMiIDMgNAogICAgICAgICAgICAgICgodm9p
ZCAqKTApCiMgNzQzICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgIDsKCiAgICAgIGRz
dCA9IHA7CiAgICB9CgogIGRzdC0tOwojIDc1OSAibWFjaGluZS5jIgogIGlmIChkc3QgLSBi
dWZmW3Jlc10gPiAxICYmICgoZHN0Wy0xXSkgPT0gJy8nIHx8IChkc3RbLTFdKSA9PSAnLycp
KQogICAgZHN0Wy0xXSA9ICdcMCc7CgogIHJldHVybiBidWZmW3Jlc107Cn0KIyA3NzMgIm1h
Y2hpbmUuYyIKQm9vbApQbF9NX0lzX0Fic29sdXRlX0ZpbGVfTmFtZShjaGFyICpwYXRoKQp7
CiAgaWYgKCgoKnBhdGgpID09ICcvJyB8fCAoKnBhdGgpID09ICcvJykpCiAgICByZXR1cm4g
MTsKIyA3OTUgIm1hY2hpbmUuYyIKICByZXR1cm4gMDsKfQojIDgyOSAibWFjaGluZS5jIgpj
aGFyICoKUGxfTV9EZWNvbXBvc2VfRmlsZV9OYW1lKGNoYXIgKnBhdGgsIEJvb2wgZGVsX3Ry
YWlsX3NsYXNoZXMsIGNoYXIgKipiYXNlLCBjaGFyICoqc3VmZml4KQp7CiAgc3RhdGljIGNo
YXIgYnVmZl9kaXJbCiMgODMyICJtYWNoaW5lLmMiIDMgNAogICAgICAgICAgICAgICAgICAg
ICAgNDA5NgojIDgzMiAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF07CiAgc3RhdGljIGNoYXIgYnVmZl9iYXNlWwojIDgzMyAibWFjaGluZS5jIiAzIDQK
ICAgICAgICAgICAgICAgICAgICAgICA0MDk2CiMgODMzICJtYWNoaW5lLmMiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgaW50IGRpcl9zdGFydF9wb3MgPSAwOwoj
IDg1MiAibWFjaGluZS5jIgogIGNoYXIgKnA7CgogIHN0cmNweShidWZmX2RpciwgcGF0aCk7
CgoKCgoKICBkbyB7IGNoYXIgKl9wdHI7IGZvcigocCkgPSAKIyA4NjAgIm1hY2hpbmUuYyIg
MyA0CiAoKHZvaWQgKikwKQojIDg2MCAibWFjaGluZS5jIgogLCBfcHRyID0gKGJ1ZmZfZGly
KTsgKl9wdHI7IF9wdHIrKykgaWYgKCgoKl9wdHIpID09ICcvJyB8fCAoKl9wdHIpID09ICcv
JykpIChwKSA9IF9wdHI7IH0gd2hpbGUoMCk7CgogIHAgPSAocCA9PSAKIyA4NjIgIm1hY2hp
bmUuYyIgMyA0CiAgICAgICAgICAgKCh2b2lkICopMCkKIyA4NjIgIm1hY2hpbmUuYyIKICAg
ICAgICAgICAgICAgKSA/IGJ1ZmZfZGlyICsgZGlyX3N0YXJ0X3BvcyA6IHAgKyAxOwoKICBz
dHJjcHkoYnVmZl9iYXNlLCBwKTsKICAqcCA9ICdcMCc7CgogIGlmICgocCA9IHN0cnJjaHIo
YnVmZl9iYXNlLCAnLicpKSAhPSAKIyA4NjcgIm1hY2hpbmUuYyIgMyA0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkKIyA4NjcgIm1hY2hpbmUu
YyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgKnN1
ZmZpeCA9IHA7CiAgZWxzZQogICAgKnN1ZmZpeCA9IGJ1ZmZfYmFzZSArIHN0cmxlbihidWZm
X2Jhc2UpOwoKCgogIGlmIChkZWxfdHJhaWxfc2xhc2hlcykKICAgIHsKICAgICAgaWYgKGJ1
ZmZfZGlyW2Rpcl9zdGFydF9wb3NdID09ICdcMCcpCiBzdHJjYXQoYnVmZl9kaXIsICIuIik7
CiAgICAgIGVsc2UKIHsKICAgaW50IGxlbiA9IHN0cmxlbihidWZmX2Rpcik7CiAgIHdoaWxl
KC0tbGVuID49IGRpcl9zdGFydF9wb3MgJiYgKChidWZmX2RpcltsZW5dKSA9PSAnLycgfHwg
KGJ1ZmZfZGlyW2xlbl0pID09ICcvJykpCiAgICAgOwoKICAgaWYgKGxlbiA8IGRpcl9zdGFy
dF9wb3MpCiAgICAgbGVuID0gZGlyX3N0YXJ0X3BvczsKICAgYnVmZl9kaXJbbGVuICsgMV0g
PSAnXDAnOwogfQogICAgfQoKCgoKCgogICpiYXNlID0gYnVmZl9iYXNlOwoKICByZXR1cm4g
YnVmZl9kaXI7Cn0K
--------------75FEE9681F67D3318494118F
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Bug-prolog mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-prolog

--------------75FEE9681F67D3318494118F--