Re: GCC segfault on i686
Till Hofmann <[email protected]> Thu, 25 Aug 2016 19:49:12 +0200
| Newsgroups | gmane.comp.gnu.prolog.bugs |
|---|---|
| Message-ID | <[email protected]> |
SGkgYWxsLAoKZG8geW91IGhhdmUgYSBzdWdnZXN0aW9uIG9uIGhvdyB0byBwcm9jZWVkIHdpdGgg dGhpcyBidWc/IENhbiB0aGlzIGJlCmZpeGVkIG9uIHRoZSBQcm9sb2cgc2lkZT8gU2hvdWxkIHRo aXMgYmUgcmVwb3J0ZWQgYXMgR0NDIGJ1Zz8KCktpbmQgcmVnYXJkcywKVGlsbAoKT24gMDgvMTkv MjAxNiAwODo1NiBBTSwgVGlsbCBIb2ZtYW5uIHdyb3RlOgo+IE9uIDA4LzE5LzIwMTYgMDI6NDAg QU0sIE1hdHRoZXcgQ2FydGVyIHdyb3RlOgo+PiBJIGNhbiBjb25maXJtIGZhaWx1cmUgdG8gYnVp bGQgd2l0aCBnY2MgNi4xKyBvbiBpNjg2ICh1c2luZyBBcmNoIExpbnV4Cj4+IG15c2VsZikuCj4+ Cj4+IEkgY291bGRuJ3QgZ2V0IGl0IHRvIGJ1aWxkIHdpdGggeW91ciBjb25maWd1cmUgb3B0aW9u cyBob3dldmVyIChpdCBzdGlsbAo+PiBmYWlsZWQgd2l0aCBzZWdmYXVsdCBpbiB0aGUgc2FtZSBw bGFjZSkuCj4gCj4gVGhlIGNvbmZpZ3VyZSBvcHRpb25zIHdlcmUgb25seSB0byBwcm9kdWNlIHRo ZSBtb3JlIHZlcmJvc2UgbWFrZSBvdXRwdXQKPiBhbmQgdGhlIC5pIGZpbGVzLiBUaGUgYnVpbGQg c3RpbGwgZmFpbHMuIFNvcnJ5IGlmIHRoaXMgd2Fzbid0IGNsZWFyLgo+IAo+IEtpbmQgcmVnYXJk cywKPiBUaWxsCj4gCj4+Cj4+IC1NYXR0Cj4+Cj4+IE9uIFRodSwgQXVnIDE4LCAyMDE2IGF0IDEy OjEwOjQ5UE0gKzAyMDAsIFRpbGwgSG9mbWFubiB3cm90ZToKPj4+IEhpIGFsbCwKPj4+Cj4+PiBJ J20gY3VycmVudGx5IHRyeWluZyB0byBkZWJ1ZyBhIEdDQyBzZWdmYXVsdCB0aGF0IG9jY3VycyB3 aGVuIGNvbXBpbGluZwo+Pj4gRW5naW5lUGwvbWFjaGluZS5jIG9uIGk2ODYgbWFjaGluZXM6Cj4+ Pgo+Pj4+IG1ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSAnL2hvbWUvdGlsbC9ycG1idWlsZC9T T1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZVBsJwo+Pj4+IGdwbGMgLWMgLUMgJy1PMyAt Zm9taXQtZnJhbWUtcG9pbnRlcicgbWFjaGluZS5jCj4+Pj4gbWFjaGluZS5jOiBJbiBmdW5jdGlv biDigJhQbF9NX1JhbmRvbWl6ZeKAmToKPj4+PiBtYWNoaW5lLmM6Mzg2OjE6IGludGVybmFsIGNv bXBpbGVyIGVycm9yOiBTZWdtZW50YXRpb24gZmF1bHQKPj4+Cj4+PiBJdCBsb29rcyBsaWtlIHRo aXMgaXMgcmVsYXRlZCB0byB1c2luZyB0aGUgZWJ4IHJlZ2lzdGVyOyBpZiBJIHJlbW92ZQo+Pj4g Jy1mZml4ZWQtZWJ4JyBmcm9tIHRoZSBjYWxsIHRvIGNjMSwgdGhlIHNlZ2ZhdWx0IGRpc2FwcGVh cnMuCj4+Pgo+Pj4gTG9va2luZyBhdCB0aGUgQ2hhbmdlbG9nLCBpdCBsb29rcyBsaWtlIHRoZXJl IHdhcyBhIGZpeCBmb3Igc29tZSBpc3N1ZQo+Pj4gcmVsYXRlZCB0byB1c2luZyBlYnggaW4gMS4z LjEsIGJ1dCB0aGUgZXJyb3Igc3RpbGwgb2NjdXJzIG9uIGk2ODYuCj4+Pgo+Pj4gVG8gcmVwcm9k dWNlLCB5b3UgbmVlZCB0byBidWlsZCBncHJvbG9nIG9uIGk2ODYgd2l0aCBHQ0MgNi4xLiBJIGNv dWxkCj4+PiByZXByb2R1Y2UgdGhpcyBvbiBtdWx0aXBsZSBtYWNoaW5lcy4KPj4+Cj4+PiBTb21l IGFkZGl0aW9uYWwgaW5mbzoKPj4+IGdwcm9sb2cgdmVyc2lvbjogMS40LjQKPj4+IE9TOiBGZWRv cmEgMjQgKGFsc28gb2NjdXJzIG9uIEZlZG9yYSAyNSBhbmQgRmVkb3JhIFJhd2hpZGUpCj4+PiAk IGdjYyAtLXZlcnNpb24KPj4+IGdjYyAoR0NDKSA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEu MS0zKQo+Pj4gJCB1bmFtZSAtYQo+Pj4gTGludXggbmMxMCA0LjYuNS0zMDAuZmMyNC5pNjg2K1BB RSAjMSBTTVAgVGh1IEp1bCAyOCAwMTozNDo0NiBVVEMgMjAxNgo+Pj4gaTY4NiBpNjg2IGkzODYg R05VL0xpbnV4Cj4+Pgo+Pj4gSSBidWlsZCB3aXRoICIuL2NvbmZpZ3VyZSAtLXdpdGgtYy1mbGFn cz0nLXYgLXNhdmUtdGVtcHMnIiwgSSd2ZQo+Pj4gYXR0YWNoZWQgdGhlIGZ1bGwgb3V0cHV0IGZy b20gbWFrZS4gSSd2ZSBhbHNvIGF0dGFjaGVkIG1hY2hpbmUuaS4KPj4+Cj4+PiBXaXRoIG9sZGVy IEdDQyB2ZXJzaW9ucyAoPDYpLCB0aGUgYnVnIGRvZXMgbm90IG9jY3VyLCBzbyB0aGlzIG1pZ2h0 IHdlbGwKPj4+IGJlIGEgYnVnIGluIEdDQzYuCj4+Pgo+Pj4KPj4+IEtpbmQgcmVnYXJkcwo+Pj4g VGlsbAo+Pgo+Pj4gY2QgRW5naW5lUGw7IG1ha2UgY29uZmlnCj4+PiBtYWtlWzFdOiBFbnRlcmlu ZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3Ny Yy9FbmdpbmVQbCcKPj4+IGdjYyAtbWFyY2g9cGVudGl1bXBybyAtbTMyIC1mbm8tc3RyaWN0LWFs aWFzaW5nIC12IC1zYXZlLXRlbXBzICAtbyBwbF9jb25maWcgcGxfY29uZmlnLmMKPj4+IFVzaW5n IGJ1aWx0LWluIHNwZWNzLgo+Pj4gQ09MTEVDVF9HQ0M9Z2NjCj4+PiBDT0xMRUNUX0xUT19XUkFQ UEVSPS91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvbHRvLXdyYXBwZXIK Pj4+IFRhcmdldDogaTY4Ni1yZWRoYXQtbGludXgKPj4+IENvbmZpZ3VyZWQgd2l0aDogLi4vY29u ZmlndXJlIC0tZW5hYmxlLWJvb3RzdHJhcCAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKyssb2JqYyxv YmotYysrLGZvcnRyYW4sYWRhLGdvLGx0byAtLXByZWZpeD0vdXNyIC0tbWFuZGlyPS91c3Ivc2hh cmUvbWFuIC0taW5mb2Rpcj0vdXNyL3NoYXJlL2luZm8gLS13aXRoLWJ1Z3VybD1odHRwOi8vYnVn emlsbGEucmVkaGF0LmNvbS9idWd6aWxsYSAtLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtdGhyZWFk cz1wb3NpeCAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIC0tZW5hYmxlLW11bHRpbGliIC0td2l0 aC1zeXN0ZW0temxpYiAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgLS1kaXNhYmxlLWxpYnVud2luZC1l eGNlcHRpb25zIC0tZW5hYmxlLWdudS11bmlxdWUtb2JqZWN0IC0tZW5hYmxlLWxpbmtlci1idWls ZC1pZCAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9Z251IC0tZW5hYmxlLXBsdWdpbiAtLWVuYWJs ZS1pbml0ZmluaS1hcnJheSAtLWRpc2FibGUtbGliZ2NqIC0td2l0aC1pc2wgLS1lbmFibGUtbGli bXB4IC0tZW5hYmxlLWdudS1pbmRpcmVjdC1mdW5jdGlvbiAtLXdpdGgtdHVuZT1nZW5lcmljIC0t d2l0aC1hcmNoPWk2ODYgLS1idWlsZD1pNjg2LXJlZGhhdC1saW51eAo+Pj4gVGhyZWFkIG1vZGVs OiBwb3NpeAo+Pj4gZ2NjIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykg KEdDQykgCj4+PiBDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1tMzIn ICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ3BsX2NvbmZp ZycKPj4+ICAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NjMSAtRSAt cXVpZXQgLXYgcGxfY29uZmlnLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtZm5vLXN0cmljdC1h bGlhc2luZyAtZnBjaC1wcmVwcm9jZXNzIC1vIHBsX2NvbmZpZy5pCj4+PiBpZ25vcmluZyBub25l eGlzdGVudCBkaXJlY3RvcnkgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9p bmNsdWRlLWZpeGVkIgo+Pj4gaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xp Yi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vLi4vaTY4Ni1yZWRoYXQtbGlu dXgvaW5jbHVkZSIKPj4+ICNpbmNsdWRlICIuLi4iIHNlYXJjaCBzdGFydHMgaGVyZToKPj4+ICNp bmNsdWRlIDwuLi4+IHNlYXJjaCBzdGFydHMgaGVyZToKPj4+ICAvdXNyL2xpYi9nY2MvaTY4Ni1y ZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZQo+Pj4gIC91c3IvbG9jYWwvaW5jbHVkZQo+Pj4gIC91 c3IvaW5jbHVkZQo+Pj4gRW5kIG9mIHNlYXJjaCBsaXN0Lgo+Pj4gQ09MTEVDVF9HQ0NfT1BUSU9O Uz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicg Jy1zYXZlLXRlbXBzJyAnLW8nICdwbF9jb25maWcnCj4+PiAgL3Vzci9saWJleGVjL2djYy9pNjg2 LXJlZGhhdC1saW51eC82LjEuMS9jYzEgLWZwcmVwcm9jZXNzZWQgcGxfY29uZmlnLmkgLXF1aWV0 IC1kdW1wYmFzZSBwbF9jb25maWcuYyAtbWFyY2g9cGVudGl1bXBybyAtbTMyIC1hdXhiYXNlIHBs X2NvbmZpZyAtdmVyc2lvbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtbyBwbF9jb25maWcucwo+Pj4g R05VIEMxMSAoR0NDKSB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChp Njg2LXJlZGhhdC1saW51eCkKPj4+IAljb21waWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYuMS4xIDIw MTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpLCBHTVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2ZXJzaW9u IDMuMS40LCBNUEMgdmVyc2lvbiAxLjAuMiwgaXNsIHZlcnNpb24gMC4xNCBvciAwLjEzCj4+PiB3 YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24gNi4xLjAgZGlmZmVycyBmcm9tIGxpYnJhcnkgdmVy c2lvbiA2LjEuMS4KPj4+IEdHQyBoZXVyaXN0aWNzOiAtLXBhcmFtIGdnYy1taW4tZXhwYW5kPTEw MCAtLXBhcmFtIGdnYy1taW4taGVhcHNpemU9MTMxMDcyCj4+PiBHTlUgQzExIChHQ0MpIHZlcnNp b24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4KQo+ Pj4gCWNvbXBpbGVkIGJ5IEdOVSBDIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4x LjEtMyksIEdNUCB2ZXJzaW9uIDYuMS4wLCBNUEZSIHZlcnNpb24gMy4xLjQsIE1QQyB2ZXJzaW9u IDEuMC4yLCBpc2wgdmVyc2lvbiAwLjE0IG9yIDAuMTMKPj4+IHdhcm5pbmc6IEdNUCBoZWFkZXIg dmVyc2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4xLgo+Pj4gR0dD IGhldXJpc3RpY3M6IC0tcGFyYW0gZ2djLW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1o ZWFwc2l6ZT0xMzEwNzIKPj4+IENvbXBpbGVyIGV4ZWN1dGFibGUgY2hlY2tzdW06IGFiY2ViMTM4 YWY0M2E3OGMzNmMxYWFhMjI4ZjVmOTJhCj4+PiBDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9 cGVudGl1bXBybycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVt cHMnICctbycgJ3BsX2NvbmZpZycKPj4+ICBhcyAtdiAtLTMyIC1vIHBsX2NvbmZpZy5vIHBsX2Nv bmZpZy5zCj4+PiBHTlUgYXNzZW1ibGVyIHZlcnNpb24gMi4yNi4xIChpNjg2LXJlZGhhdC1saW51 eCkgdXNpbmcgQkZEIHZlcnNpb24gdmVyc2lvbiAyLjI2LjEtMS5mYzI0Cj4+PiBDT01QSUxFUl9Q QVRIPS91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvOi91c3IvbGliZXhl Yy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRo YXQtbGludXgvOi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWIv Z2NjL2k2ODYtcmVkaGF0LWxpbnV4Lwo+Pj4gTElCUkFSWV9QQVRIPS91c3IvbGliL2djYy9pNjg2 LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4x Ly4uLy4uLy4uLzovbGliLzovdXNyL2xpYi8KPj4+IENPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJj aD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10 ZW1wcycgJy1vJyAncGxfY29uZmlnJwo+Pj4gIC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQt bGludXgvNi4xLjEvY29sbGVjdDIgLXBsdWdpbiAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0 LWxpbnV4LzYuMS4xL2xpYmx0b19wbHVnaW4uc28gLXBsdWdpbi1vcHQ9L3Vzci9saWJleGVjL2dj Yy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9sdG8td3JhcHBlciAtcGx1Z2luLW9wdD0tZnJlc29s dXRpb249cGxfY29uZmlnLnJlcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVn aW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2NfcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1s YyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91 Z2g9LWxnY2NfcyAtLWJ1aWxkLWlkIC0tbm8tYWRkLW5lZWRlZCAtLWVoLWZyYW1lLWhkciAtLWhh c2gtc3R5bGU9Z251IC1tIGVsZl9pMzg2IC1keW5hbWljLWxpbmtlciAvbGliL2xkLWxpbnV4LnNv LjIgLW8gcGxfY29uZmlnIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8u Li8uLi9jcnQxLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4u L2NydGkubyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY3J0YmVnaW4ubyAt TC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMSAtTC91c3IvbGliL2djYy9pNjg2 LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8uLiBwbF9jb25maWcubyAtbGdjYyAtLWFzLW5lZWRl ZCAtbGdjY19zIC0tbm8tYXMtbmVlZGVkIC1sYyAtbGdjYyAtLWFzLW5lZWRlZCAtbGdjY19zIC0t bm8tYXMtbmVlZGVkIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jcnRlbmQu byAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vY3J0bi5vCj4+ PiBDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1tMzInICctZm5vLXN0 cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ3BsX2NvbmZpZycKPj4+IC4v cGxfY29uZmlnCj4+Pgo+Pj4gCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+IAkt LS0gR05VIFBST0xPRyBJTlNUQUxMQVRJT04gLS0tCj4+PiAJLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+Pj4KPj4+IEdOVSBQcm9sb2cgdmVyc2lvbjogMS40LjQgKEF1ZyAxOCAyMDE2 KQo+Pj4gT3BlcmF0aW5nIHN5c3RlbSAgOiBsaW51eC1nbnUKPj4+IFByb2Nlc3NvciAgICAgICAg IDogaTY4Ngo+Pj4gU2l6ZSBvZiBhIFdBTSB3b3JkOiAzMiBiaXRzCj4+PiBDIGNvbXBpbGVyICAg ICAgICA6IGdjYwo+Pj4gQyBmbGFncyAgICAgICAgICAgOiAtdiAtc2F2ZS10ZW1wcwo+Pj4gQyBm bGFncyBtYWNoaW5lICAgOiAtbWFyY2g9cGVudGl1bXBybyAtbTMyIC1mbm8tc3RyaWN0LWFsaWFz aW5nCj4+PiBBc3NlbWJsZXIgICAgICAgICA6IGFzCj4+PiBBc3NlbWJsZXIgZmxhZ3MgICA6IC0t MzIKPj4+IExvYWRlciBmbGFncyAgICAgIDogCj4+PiBMb2FkZXIgbGlicmFyaWVzICA6IC1sbQo+ Pj4gVXNlIGxpbmUgZWRpdG9yICAgOiBZZXMKPj4+IFVzZSBwaXBlZCBjb25zdWx0IDogWWVzCj4+ PiBVc2Ugc29ja2V0cyAgICAgICA6IFllcwo+Pj4gVXNlIEZEIHNvbHZlciAgICAgOiBZZXMKPj4+ IFVzZSBmYXN0IGNhbGwgICAgIDogWWVzCj4+PiBVc2UgbWFjaGluZSByZWdzLiA6IFllcwo+Pj4g VXNlZCByZWdpc3RlcihzKSAgOiBlYnggKFRSKSAgCj4+Pgo+Pj4gCS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+Pj4KPj4+IChjZCAuLi9Ub3BDb21wOyBtYWtlIGdwbGMpCj4+PiBtYWtl WzJdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJv bG9nLTEuNC40L3NyYy9Ub3BDb21wJwo+Pj4gZ2NjIC1tYXJjaD1wZW50aXVtcHJvIC1tMzIgLWZu by1zdHJpY3QtYWxpYXNpbmcgLXYgLXNhdmUtdGVtcHMgLW8gZ3BsYyB0b3BfY29tcC5jIC1sbQo+ Pj4gVXNpbmcgYnVpbHQtaW4gc3BlY3MuCj4+PiBDT0xMRUNUX0dDQz1nY2MKPj4+IENPTExFQ1Rf TFRPX1dSQVBQRVI9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9sdG8t d3JhcHBlcgo+Pj4gVGFyZ2V0OiBpNjg2LXJlZGhhdC1saW51eAo+Pj4gQ29uZmlndXJlZCB3aXRo OiAuLi9jb25maWd1cmUgLS1lbmFibGUtYm9vdHN0cmFwIC0tZW5hYmxlLWxhbmd1YWdlcz1jLGMr KyxvYmpjLG9iai1jKyssZm9ydHJhbixhZGEsZ28sbHRvIC0tcHJlZml4PS91c3IgLS1tYW5kaXI9 L3Vzci9zaGFyZS9tYW4gLS1pbmZvZGlyPS91c3Ivc2hhcmUvaW5mbyAtLXdpdGgtYnVndXJsPWh0 dHA6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJs ZS10aHJlYWRzPXBvc2l4IC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgLS1lbmFibGUtbXVsdGls aWIgLS13aXRoLXN5c3RlbS16bGliIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCAtLWRpc2FibGUtbGli dW53aW5kLWV4Y2VwdGlvbnMgLS1lbmFibGUtZ251LXVuaXF1ZS1vYmplY3QgLS1lbmFibGUtbGlu a2VyLWJ1aWxkLWlkIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT1nbnUgLS1lbmFibGUtcGx1Z2lu IC0tZW5hYmxlLWluaXRmaW5pLWFycmF5IC0tZGlzYWJsZS1saWJnY2ogLS13aXRoLWlzbCAtLWVu YWJsZS1saWJtcHggLS1lbmFibGUtZ251LWluZGlyZWN0LWZ1bmN0aW9uIC0td2l0aC10dW5lPWdl bmVyaWMgLS13aXRoLWFyY2g9aTY4NiAtLWJ1aWxkPWk2ODYtcmVkaGF0LWxpbnV4Cj4+PiBUaHJl YWQgbW9kZWw6IHBvc2l4Cj4+PiBnY2MgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2 LjEuMS0zKSAoR0NDKSAKPj4+IENPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJv JyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAn Z3BsYycKPj4+ICAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NjMSAt RSAtcXVpZXQgLXYgdG9wX2NvbXAuYyAtbWFyY2g9cGVudGl1bXBybyAtbTMyIC1mbm8tc3RyaWN0 LWFsaWFzaW5nIC1mcGNoLXByZXByb2Nlc3MgLW8gdG9wX2NvbXAuaQo+Pj4gaWdub3Jpbmcgbm9u ZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEv aW5jbHVkZS1maXhlZCIKPj4+IGlnbm9yaW5nIG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAiL3Vzci9s aWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uLy4uL2k2ODYtcmVkaGF0LWxp bnV4L2luY2x1ZGUiCj4+PiAjaW5jbHVkZSAiLi4uIiBzZWFyY2ggc3RhcnRzIGhlcmU6Cj4+PiAj aW5jbHVkZSA8Li4uPiBzZWFyY2ggc3RhcnRzIGhlcmU6Cj4+PiAgL3Vzci9saWIvZ2NjL2k2ODYt cmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUKPj4+ICAvdXNyL2xvY2FsL2luY2x1ZGUKPj4+ICAv dXNyL2luY2x1ZGUKPj4+IEVuZCBvZiBzZWFyY2ggbGlzdC4KPj4+IENPTExFQ1RfR0NDX09QVElP TlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYn ICctc2F2ZS10ZW1wcycgJy1vJyAnZ3BsYycKPj4+ICAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVk aGF0LWxpbnV4LzYuMS4xL2NjMSAtZnByZXByb2Nlc3NlZCB0b3BfY29tcC5pIC1xdWlldCAtZHVt cGJhc2UgdG9wX2NvbXAuYyAtbWFyY2g9cGVudGl1bXBybyAtbTMyIC1hdXhiYXNlIHRvcF9jb21w IC12ZXJzaW9uIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1vIHRvcF9jb21wLnMKPj4+IEdOVSBDMTEg KEdDQykgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRo YXQtbGludXgpCj4+PiAJY29tcGlsZWQgYnkgR05VIEMgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAo UmVkIEhhdCA2LjEuMS0zKSwgR01QIHZlcnNpb24gNi4xLjAsIE1QRlIgdmVyc2lvbiAzLjEuNCwg TVBDIHZlcnNpb24gMS4wLjIsIGlzbCB2ZXJzaW9uIDAuMTQgb3IgMC4xMwo+Pj4gd2FybmluZzog R01QIGhlYWRlciB2ZXJzaW9uIDYuMS4wIGRpZmZlcnMgZnJvbSBsaWJyYXJ5IHZlcnNpb24gNi4x LjEuCj4+PiBHR0MgaGV1cmlzdGljczogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJh bSBnZ2MtbWluLWhlYXBzaXplPTEzMTA3Mgo+Pj4gR05VIEMxMSAoR0NDKSB2ZXJzaW9uIDYuMS4x IDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChpNjg2LXJlZGhhdC1saW51eCkKPj4+IAljb21w aWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpLCBH TVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2ZXJzaW9uIDMuMS40LCBNUEMgdmVyc2lvbiAxLjAuMiwg aXNsIHZlcnNpb24gMC4xNCBvciAwLjEzCj4+PiB3YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24g Ni4xLjAgZGlmZmVycyBmcm9tIGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KPj4+IEdHQyBoZXVyaXN0 aWNzOiAtLXBhcmFtIGdnYy1taW4tZXhwYW5kPTEwMCAtLXBhcmFtIGdnYy1taW4taGVhcHNpemU9 MTMxMDcyCj4+PiBDb21waWxlciBleGVjdXRhYmxlIGNoZWNrc3VtOiBhYmNlYjEzOGFmNDNhNzhj MzZjMWFhYTIyOGY1ZjkyYQo+Pj4gQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1w cm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8n ICdncGxjJwo+Pj4gIGFzIC12IC0tMzIgLW8gdG9wX2NvbXAubyB0b3BfY29tcC5zCj4+PiBHTlUg YXNzZW1ibGVyIHZlcnNpb24gMi4yNi4xIChpNjg2LXJlZGhhdC1saW51eCkgdXNpbmcgQkZEIHZl cnNpb24gdmVyc2lvbiAyLjI2LjEtMS5mYzI0Cj4+PiBDT01QSUxFUl9QQVRIPS91c3IvbGliZXhl Yy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRo YXQtbGludXgvNi4xLjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvOi91c3Iv bGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0 LWxpbnV4Lwo+Pj4gTElCUkFSWV9QQVRIPS91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82 LjEuMS86L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uLzovbGli LzovdXNyL2xpYi8KPj4+IENPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAn LW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAnZ3Bs YycKPj4+ICAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NvbGxlY3Qy IC1wbHVnaW4gL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9saWJsdG9f cGx1Z2luLnNvIC1wbHVnaW4tb3B0PS91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgv Ni4xLjEvbHRvLXdyYXBwZXIgLXBsdWdpbi1vcHQ9LWZyZXNvbHV0aW9uPXRvcF9jb21wLnJlcyAt cGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9 LWxnY2NfcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sYyAtcGx1Z2luLW9wdD0tcGFzcy10 aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2NfcyAtLWJ1aWxkLWlk IC0tbm8tYWRkLW5lZWRlZCAtLWVoLWZyYW1lLWhkciAtLWhhc2gtc3R5bGU9Z251IC1tIGVsZl9p Mzg2IC1keW5hbWljLWxpbmtlciAvbGliL2xkLWxpbnV4LnNvLjIgLW8gZ3BsYyAvdXNyL2xpYi9n Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vY3J0MS5vIC91c3IvbGliL2djYy9p Njg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8uLi9jcnRpLm8gL3Vzci9saWIvZ2NjL2k2ODYt cmVkaGF0LWxpbnV4LzYuMS4xL2NydGJlZ2luLm8gLUwvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt bGludXgvNi4xLjEgLUwvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4v Li4gdG9wX2NvbXAubyAtbG0gLWxnY2MgLS1hcy1uZWVkZWQgLWxnY2NfcyAtLW5vLWFzLW5lZWRl ZCAtbGMgLWxnY2MgLS1hcy1uZWVkZWQgLWxnY2NfcyAtLW5vLWFzLW5lZWRlZCAvdXNyL2xpYi9n Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY3J0ZW5kLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVk aGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uL2NydG4ubwo+Pj4gQ09MTEVDVF9HQ0NfT1BUSU9OUz0n LW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1z YXZlLXRlbXBzJyAnLW8nICdncGxjJwo+Pj4gbWFrZVsyXTogTGVhdmluZyBkaXJlY3RvcnkgJy9o b21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9Ub3BDb21wJwo+Pj4g bWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9n cHJvbG9nLTEuNC40L3NyYy9FbmdpbmVQbCcKPj4+IC4gLi9TRVRWQVJTO2ZvciBpIGluIEVuZ2lu ZVBsIFRvcENvbXAgV2FtMk1hIE1hMkFzbSBMaW5lZGl0IEJpcHNQbCBQbDJXYW0gRmQyQyBFbmdp bmVGRCBCaXBzRkQ7ZG8gKGNkICRpOyBtYWtlKSB8fCBleGl0IDE7IGRvbmU7XAo+Pj4gKGNkIFRv cENvbXA7IG1ha2UgdG9wLWxldmVsKSB8fCBleGl0IDE7XAo+Pj4gKGNkIFBsMldhbTsgbWFrZSBz dGFnZTIpCj4+PiBtYWtlWzFdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVp bGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9FbmdpbmVQbCcKPj4+IGdjYyAtbWFyY2g9cGVu dGl1bXBybyAtbTMyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC12IC1zYXZlLXRlbXBzICAtbyBjcHBf aGVhZGVycyBjcHBfaGVhZGVycy5jCj4+PiBVc2luZyBidWlsdC1pbiBzcGVjcy4KPj4+IENPTExF Q1RfR0NDPWdjYwo+Pj4gQ09MTEVDVF9MVE9fV1JBUFBFUj0vdXNyL2xpYmV4ZWMvZ2NjL2k2ODYt cmVkaGF0LWxpbnV4LzYuMS4xL2x0by13cmFwcGVyCj4+PiBUYXJnZXQ6IGk2ODYtcmVkaGF0LWxp bnV4Cj4+PiBDb25maWd1cmVkIHdpdGg6IC4uL2NvbmZpZ3VyZSAtLWVuYWJsZS1ib290c3RyYXAg LS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrLG9iamMsb2JqLWMrKyxmb3J0cmFuLGFkYSxnbyxsdG8g LS1wcmVmaXg9L3VzciAtLW1hbmRpcj0vdXNyL3NoYXJlL21hbiAtLWluZm9kaXI9L3Vzci9zaGFy ZS9pbmZvIC0td2l0aC1idWd1cmw9aHR0cDovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEg LS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXRocmVhZHM9cG9zaXggLS1lbmFibGUtY2hlY2tpbmc9 cmVsZWFzZSAtLWVuYWJsZS1tdWx0aWxpYiAtLXdpdGgtc3lzdGVtLXpsaWIgLS1lbmFibGUtX19j eGFfYXRleGl0IC0tZGlzYWJsZS1saWJ1bndpbmQtZXhjZXB0aW9ucyAtLWVuYWJsZS1nbnUtdW5p cXVlLW9iamVjdCAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgLS13aXRoLWxpbmtlci1oYXNoLXN0 eWxlPWdudSAtLWVuYWJsZS1wbHVnaW4gLS1lbmFibGUtaW5pdGZpbmktYXJyYXkgLS1kaXNhYmxl LWxpYmdjaiAtLXdpdGgtaXNsIC0tZW5hYmxlLWxpYm1weCAtLWVuYWJsZS1nbnUtaW5kaXJlY3Qt ZnVuY3Rpb24gLS13aXRoLXR1bmU9Z2VuZXJpYyAtLXdpdGgtYXJjaD1pNjg2IC0tYnVpbGQ9aTY4 Ni1yZWRoYXQtbGludXgKPj4+IFRocmVhZCBtb2RlbDogcG9zaXgKPj4+IGdjYyB2ZXJzaW9uIDYu MS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChHQ0MpIAo+Pj4gQ09MTEVDVF9HQ0NfT1BU SU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICct dicgJy1zYXZlLXRlbXBzJyAnLW8nICdjcHBfaGVhZGVycycKPj4+ICAvdXNyL2xpYmV4ZWMvZ2Nj L2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NjMSAtRSAtcXVpZXQgLXYgY3BwX2hlYWRlcnMuYyAt bWFyY2g9cGVudGl1bXBybyAtbTMyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mcGNoLXByZXByb2Nl c3MgLW8gY3BwX2hlYWRlcnMuaQo+Pj4gaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIv dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS1maXhlZCIKPj4+IGln bm9yaW5nIG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxp bnV4LzYuMS4xLy4uLy4uLy4uLy4uL2k2ODYtcmVkaGF0LWxpbnV4L2luY2x1ZGUiCj4+PiAjaW5j bHVkZSAiLi4uIiBzZWFyY2ggc3RhcnRzIGhlcmU6Cj4+PiAjaW5jbHVkZSA8Li4uPiBzZWFyY2gg c3RhcnRzIGhlcmU6Cj4+PiAgL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2lu Y2x1ZGUKPj4+ICAvdXNyL2xvY2FsL2luY2x1ZGUKPj4+ICAvdXNyL2luY2x1ZGUKPj4+IEVuZCBv ZiBzZWFyY2ggbGlzdC4KPj4+IENPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJv JyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAn Y3BwX2hlYWRlcnMnCj4+PiAgL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEu MS9jYzEgLWZwcmVwcm9jZXNzZWQgY3BwX2hlYWRlcnMuaSAtcXVpZXQgLWR1bXBiYXNlIGNwcF9o ZWFkZXJzLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtYXV4YmFzZSBjcHBfaGVhZGVycyAtdmVy c2lvbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtbyBjcHBfaGVhZGVycy5zCj4+PiBHTlUgQzExIChH Q0MpIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0 LWxpbnV4KQo+Pj4gCWNvbXBpbGVkIGJ5IEdOVSBDIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJl ZCBIYXQgNi4xLjEtMyksIEdNUCB2ZXJzaW9uIDYuMS4wLCBNUEZSIHZlcnNpb24gMy4xLjQsIE1Q QyB2ZXJzaW9uIDEuMC4yLCBpc2wgdmVyc2lvbiAwLjE0IG9yIDAuMTMKPj4+IHdhcm5pbmc6IEdN UCBoZWFkZXIgdmVyc2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4x Lgo+Pj4gR0dDIGhldXJpc3RpY3M6IC0tcGFyYW0gZ2djLW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0g Z2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIKPj4+IEdOVSBDMTEgKEdDQykgdmVyc2lvbiA2LjEuMSAy MDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRoYXQtbGludXgpCj4+PiAJY29tcGls ZWQgYnkgR05VIEMgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01Q IHZlcnNpb24gNi4xLjAsIE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlz bCB2ZXJzaW9uIDAuMTQgb3IgMC4xMwo+Pj4gd2FybmluZzogR01QIGhlYWRlciB2ZXJzaW9uIDYu MS4wIGRpZmZlcnMgZnJvbSBsaWJyYXJ5IHZlcnNpb24gNi4xLjEuCj4+PiBHR0MgaGV1cmlzdGlj czogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJhbSBnZ2MtbWluLWhlYXBzaXplPTEz MTA3Mgo+Pj4gQ29tcGlsZXIgZXhlY3V0YWJsZSBjaGVja3N1bTogYWJjZWIxMzhhZjQzYTc4YzM2 YzFhYWEyMjhmNWY5MmEKPj4+IENPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJv JyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAn Y3BwX2hlYWRlcnMnCj4+PiAgYXMgLXYgLS0zMiAtbyBjcHBfaGVhZGVycy5vIGNwcF9oZWFkZXJz LnMKPj4+IEdOVSBhc3NlbWJsZXIgdmVyc2lvbiAyLjI2LjEgKGk2ODYtcmVkaGF0LWxpbnV4KSB1 c2luZyBCRkQgdmVyc2lvbiB2ZXJzaW9uIDIuMjYuMS0xLmZjMjQKPj4+IENPTVBJTEVSX1BBVEg9 L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWJleGVjL2dj Yy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1s aW51eC86L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLzovdXNyL2xpYi9nY2Mv aTY4Ni1yZWRoYXQtbGludXgvCj4+PiBMSUJSQVJZX1BBVEg9L3Vzci9saWIvZ2NjL2k2ODYtcmVk aGF0LWxpbnV4LzYuMS4xLzovdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4v Li4vLi4vOi9saWIvOi91c3IvbGliLwo+Pj4gQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBl bnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBz JyAnLW8nICdjcHBfaGVhZGVycycKPj4+ICAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxp bnV4LzYuMS4xL2NvbGxlY3QyIC1wbHVnaW4gL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1s aW51eC82LjEuMS9saWJsdG9fcGx1Z2luLnNvIC1wbHVnaW4tb3B0PS91c3IvbGliZXhlYy9nY2Mv aTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvbHRvLXdyYXBwZXIgLXBsdWdpbi1vcHQ9LWZyZXNvbHV0 aW9uPWNwcF9oZWFkZXJzLnJlcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVn aW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2NfcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1s YyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91 Z2g9LWxnY2NfcyAtLWJ1aWxkLWlkIC0tbm8tYWRkLW5lZWRlZCAtLWVoLWZyYW1lLWhkciAtLWhh c2gtc3R5bGU9Z251IC1tIGVsZl9pMzg2IC1keW5hbWljLWxpbmtlciAvbGliL2xkLWxpbnV4LnNv LjIgLW8gY3BwX2hlYWRlcnMgL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4u Ly4uLy4uL2NydDEubyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4v Li4vY3J0aS5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jcnRiZWdpbi5v IC1ML3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xIC1ML3Vzci9saWIvZ2NjL2k2 ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uIGNwcF9oZWFkZXJzLm8gLWxnY2MgLS1hcy1u ZWVkZWQgLWxnY2NfcyAtLW5vLWFzLW5lZWRlZCAtbGMgLWxnY2MgLS1hcy1uZWVkZWQgLWxnY2Nf cyAtLW5vLWFzLW5lZWRlZCAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY3J0 ZW5kLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uL2NydG4u bwo+Pj4gQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZu by1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdjcHBfaGVhZGVycycK Pj4+IGdwbGMgLWMgLUMgJy12IC1zYXZlLXRlbXBzJyBtYWNoaW5lLmMKPj4+IFVzaW5nIGJ1aWx0 LWluIHNwZWNzLgo+Pj4gQ09MTEVDVF9HQ0M9Z2NjCj4+PiBUYXJnZXQ6IGk2ODYtcmVkaGF0LWxp bnV4Cj4+PiBDb25maWd1cmVkIHdpdGg6IC4uL2NvbmZpZ3VyZSAtLWVuYWJsZS1ib290c3RyYXAg LS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrLG9iamMsb2JqLWMrKyxmb3J0cmFuLGFkYSxnbyxsdG8g LS1wcmVmaXg9L3VzciAtLW1hbmRpcj0vdXNyL3NoYXJlL21hbiAtLWluZm9kaXI9L3Vzci9zaGFy ZS9pbmZvIC0td2l0aC1idWd1cmw9aHR0cDovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEg LS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXRocmVhZHM9cG9zaXggLS1lbmFibGUtY2hlY2tpbmc9 cmVsZWFzZSAtLWVuYWJsZS1tdWx0aWxpYiAtLXdpdGgtc3lzdGVtLXpsaWIgLS1lbmFibGUtX19j eGFfYXRleGl0IC0tZGlzYWJsZS1saWJ1bndpbmQtZXhjZXB0aW9ucyAtLWVuYWJsZS1nbnUtdW5p cXVlLW9iamVjdCAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgLS13aXRoLWxpbmtlci1oYXNoLXN0 eWxlPWdudSAtLWVuYWJsZS1wbHVnaW4gLS1lbmFibGUtaW5pdGZpbmktYXJyYXkgLS1kaXNhYmxl LWxpYmdjaiAtLXdpdGgtaXNsIC0tZW5hYmxlLWxpYm1weCAtLWVuYWJsZS1nbnUtaW5kaXJlY3Qt ZnVuY3Rpb24gLS13aXRoLXR1bmU9Z2VuZXJpYyAtLXdpdGgtYXJjaD1pNjg2IC0tYnVpbGQ9aTY4 Ni1yZWRoYXQtbGludXgKPj4+IFRocmVhZCBtb2RlbDogcG9zaXgKPj4+IGdjYyB2ZXJzaW9uIDYu MS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChHQ0MpIAo+Pj4gQ09MTEVDVF9HQ0NfT1BU SU9OUz0nLXYnICctc2F2ZS10ZW1wcycgJy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8t c3RyaWN0LWFsaWFzaW5nJyAnLWZmaXhlZC1lYngnICctYycgJy1JJyAnL2hvbWUvdGlsbC9ycG1i dWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZVBsJyAnLUknICcvaG9tZS90aWxs L3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvQmlwc1BsJyAnLUknICcvaG9tZS90 aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lRkQnICctSScgJy9o b21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzRkQnICctSScg Jy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9MaW5lZGl0JyAn LUknICcvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvVzMyR1VJ Q29ucycgJy1vJyAnbWFjaGluZS5vJwo+Pj4gIC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQt bGludXgvNi4xLjEvY2MxIC1FIC1xdWlldCAtdiAtSSAvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJD RVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwgLUkgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VS Q0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNQbCAtSSAvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJD RVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lRkQgLUkgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VS Q0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNGRCAtSSAvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJD RVMvZ3Byb2xvZy0xLjQuNC9zcmMvTGluZWRpdCAtSSAvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJD RVMvZ3Byb2xvZy0xLjQuNC9zcmMvVzMyR1VJQ29ucyBtYWNoaW5lLmMgLW1hcmNoPXBlbnRpdW1w cm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtZmZpeGVkLWVieCAtZnBjaC1wcmVwcm9jZXNz IC1vIG1hY2hpbmUuaQo+Pj4gaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xp Yi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS1maXhlZCIKPj4+IGlnbm9yaW5n IG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYu MS4xLy4uLy4uLy4uLy4uL2k2ODYtcmVkaGF0LWxpbnV4L2luY2x1ZGUiCj4+PiAjaW5jbHVkZSAi Li4uIiBzZWFyY2ggc3RhcnRzIGhlcmU6Cj4+PiAjaW5jbHVkZSA8Li4uPiBzZWFyY2ggc3RhcnRz IGhlcmU6Cj4+PiAgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3Jj L0VuZ2luZVBsCj4+PiAgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQv c3JjL0JpcHNQbAo+Pj4gIC9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40 L3NyYy9FbmdpbmVGRAo+Pj4gIC9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEu NC40L3NyYy9CaXBzRkQKPj4+ICAvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0x LjQuNC9zcmMvTGluZWRpdAo+Pj4gIC9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9n LTEuNC40L3NyYy9XMzJHVUlDb25zCj4+PiAgL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4 LzYuMS4xL2luY2x1ZGUKPj4+ICAvdXNyL2xvY2FsL2luY2x1ZGUKPj4+ICAvdXNyL2luY2x1ZGUK Pj4+IEVuZCBvZiBzZWFyY2ggbGlzdC4KPj4+IENPTExFQ1RfR0NDX09QVElPTlM9Jy12JyAnLXNh dmUtdGVtcHMnICctbWFyY2g9cGVudGl1bXBybycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2lu ZycgJy1mZml4ZWQtZWJ4JyAnLWMnICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9n cHJvbG9nLTEuNC40L3NyYy9FbmdpbmVQbCcgJy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VS Q0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNQbCcgJy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9T T1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZUZEJyAnLUknICcvaG9tZS90aWxsL3JwbWJ1 aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvQmlwc0ZEJyAnLUknICcvaG9tZS90aWxsL3Jw bWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvTGluZWRpdCcgJy1JJyAnL2hvbWUvdGls bC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL1czMkdVSUNvbnMnICctbycgJ21h Y2hpbmUubycKPj4+ICAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2Nj MSAtZnByZXByb2Nlc3NlZCBtYWNoaW5lLmkgLXF1aWV0IC1kdW1wYmFzZSBtYWNoaW5lLmMgLW1h cmNoPXBlbnRpdW1wcm8gLW0zMiAtYXV4YmFzZS1zdHJpcCBtYWNoaW5lLm8gLXZlcnNpb24gLWZu by1zdHJpY3QtYWxpYXNpbmcgLWZmaXhlZC1lYnggLW8gbWFjaGluZS5zCj4+PiBHTlUgQzExIChH Q0MpIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0 LWxpbnV4KQo+Pj4gCWNvbXBpbGVkIGJ5IEdOVSBDIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJl ZCBIYXQgNi4xLjEtMyksIEdNUCB2ZXJzaW9uIDYuMS4wLCBNUEZSIHZlcnNpb24gMy4xLjQsIE1Q QyB2ZXJzaW9uIDEuMC4yLCBpc2wgdmVyc2lvbiAwLjE0IG9yIDAuMTMKPj4+IHdhcm5pbmc6IEdN UCBoZWFkZXIgdmVyc2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4x Lgo+Pj4gR0dDIGhldXJpc3RpY3M6IC0tcGFyYW0gZ2djLW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0g Z2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIKPj4+IEdOVSBDMTEgKEdDQykgdmVyc2lvbiA2LjEuMSAy MDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRoYXQtbGludXgpCj4+PiAJY29tcGls ZWQgYnkgR05VIEMgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01Q IHZlcnNpb24gNi4xLjAsIE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlz bCB2ZXJzaW9uIDAuMTQgb3IgMC4xMwo+Pj4gd2FybmluZzogR01QIGhlYWRlciB2ZXJzaW9uIDYu MS4wIGRpZmZlcnMgZnJvbSBsaWJyYXJ5IHZlcnNpb24gNi4xLjEuCj4+PiBHR0MgaGV1cmlzdGlj czogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJhbSBnZ2MtbWluLWhlYXBzaXplPTEz MTA3Mgo+Pj4gQ29tcGlsZXIgZXhlY3V0YWJsZSBjaGVja3N1bTogYWJjZWIxMzhhZjQzYTc4YzM2 YzFhYWEyMjhmNWY5MmEKPj4+IG1hY2hpbmUuYzogSW4gZnVuY3Rpb24g4oCYUGxfTV9SYW5kb21p emXigJk6Cj4+PiBtYWNoaW5lLmM6Mzg2OjE6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBTZWdt ZW50YXRpb24gZmF1bHQKPj4+ICB9Cj4+PiAgXgo+Pj4gUGxlYXNlIHN1Ym1pdCBhIGZ1bGwgYnVn IHJlcG9ydCwKPj4+IHdpdGggcHJlcHJvY2Vzc2VkIHNvdXJjZSBpZiBhcHByb3ByaWF0ZS4KPj4+ IFNlZSA8aHR0cDovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGE+IGZvciBpbnN0cnVjdGlv bnMuCj4+PiBQcmVwcm9jZXNzZWQgc291cmNlIHN0b3JlZCBpbnRvIC90bXAvY2NjWENBV00ub3V0 IGZpbGUsIHBsZWFzZSBhdHRhY2ggdGhpcyB0byB5b3VyIGJ1Z3JlcG9ydC4KPj4+IGNvbXBpbGF0 aW9uIGZhaWxlZAo+Pj4gTWFrZWZpbGU6MzA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdtYWNoaW5lLm8n IGZhaWxlZAo+Pj4gbWFrZVsxXTogKioqIFttYWNoaW5lLm9dIEVycm9yIDEKPj4+IG1ha2VbMV06 IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0x LjQuNC9zcmMvRW5naW5lUGwnCj4+PiBNYWtlZmlsZTo0NTogcmVjaXBlIGZvciB0YXJnZXQgJ2Fs bCcgZmFpbGVkCj4+PiBtYWtlOiAqKiogW2FsbF0gRXJyb3IgMQo+Pgo+Pj4gIyAxICJtYWNoaW5l LmMiCj4+PiAjIDEgIjxidWlsdC1pbj4iCj4+PiAjIDEgIjxjb21tYW5kLWxpbmU+Igo+Pj4gIyAz MSAiPGNvbW1hbmQtbGluZT4iCj4+PiAjIDEgIi91c3IvaW5jbHVkZS9zdGRjLXByZWRlZi5oIiAx IDMgNAo+Pj4gIyAzMiAiPGNvbW1hbmQtbGluZT4iIDIKPj4+ICMgMSAibWFjaGluZS5jIgo+Pj4g IyAzOSAibWFjaGluZS5jIgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQKPj4+ ICMgMjcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2Zl YXR1cmVzLmgiIDEgMyA0Cj4+PiAjIDM2OCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAo+ Pj4gIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMyA0Cj4+PiAjIDQxMCAiL3Vzci9p bmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNp emUuaCIgMSAzIDQKPj4+ICMgNDExICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIgMyA0Cj4+ PiAjIDM2OSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMyA0Cj4+PiAjIDM5MiAiL3Vzci9p bmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgi IDEgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9nbnUv c3R1YnMtMzIuaCIgMSAzIDQKPj4+ICMgOCAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAyIDMg NAo+Pj4gIyAzOTMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAo+Pj4gIyAyOCAiL3Vz ci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ICMgMSAiL3Vz ci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0 Cj4+PiAjIDIxNiAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUv c3RkZGVmLmgiIDMgNAo+Pj4KPj4+ICMgMjE2ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGlu dXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0Cj4+PiB0eXBlZGVmIHVuc2lnbmVkIGludCBz aXplX3Q7Cj4+PiAjIDM0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKPj4+Cj4+PiAjIDEg Ii91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMyA0Cj4+PiAjIDI3ICIvdXNyL2luY2x1ZGUv Yml0cy90eXBlcy5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIg MSAzIDQKPj4+ICMgMjggIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMyA0Cj4+Pgo+Pj4K Pj4+IHR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsKPj4+IHR5cGVkZWYgdW5zaWduZWQg c2hvcnQgaW50IF9fdV9zaG9ydDsKPj4+IHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7Cj4+ PiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdV9sb25nOwo+Pj4KPj4+Cj4+PiB0eXBlZGVm IHNpZ25lZCBjaGFyIF9faW50OF90Owo+Pj4gdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhf dDsKPj4+IHR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7Cj4+PiB0eXBlZGVmIHVu c2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owo+Pj4gdHlwZWRlZiBzaWduZWQgaW50IF9faW50 MzJfdDsKPj4+IHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRf dDsKPj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWlu dDY0X3Q7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gX19leHRlbnNpb25fXyB0eXBl ZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5z aWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90Owo+Pj4gIyAxMjEgIi91c3IvaW5jbHVkZS9i aXRzL3R5cGVzLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlc2l6ZXMuaCIg MSAzIDQKPj4+ICMgMTIyICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMgNAo+Pj4KPj4+ Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owo+Pj4gX19leHRl bnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpZF90Owo+Pj4gX19leHRlbnNpb25fXyB0 eXBlZGVmIHVuc2lnbmVkIGludCBfX2dpZF90Owo+Pj4gX19leHRlbnNpb25fXyB0eXBlZGVmIHVu c2lnbmVkIGxvbmcgaW50IF9faW5vX3Q7Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX191X3F1 YWRfdCBfX2lubzY0X3Q7Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9f bW9kZV90Owo+Pj4gX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX25saW5rX3Q7 Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKPj4+IF9fZXh0ZW5z aW9uX18gdHlwZWRlZiBfX3F1YWRfdCBfX29mZjY0X3Q7Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVk ZWYgaW50IF9fcGlkX3Q7Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0IHsgaW50IF9f dmFsWzJdOyB9IF9fZnNpZF90Owo+Pj4gX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9f Y2xvY2tfdDsKPj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3Js aW1fdDsKPj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7Cj4+ PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9faWRfdDsKPj4+IF9fZXh0ZW5z aW9uX18gdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKPj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRl ZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190Owo+Pj4gX19leHRlbnNpb25fXyB0eXBlZGVmIGxv bmcgaW50IF9fc3VzZWNvbmRzX3Q7Cj4+Pgo+Pj4gX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBf X2RhZGRyX3Q7Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fa2V5X3Q7Cj4+Pgo+Pj4K Pj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7Cj4+Pgo+Pj4KPj4+IF9f ZXh0ZW5zaW9uX18gdHlwZWRlZiB2b2lkICogX190aW1lcl90Owo+Pj4KPj4+Cj4+PiBfX2V4dGVu c2lvbl9fIHR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4g X19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7Cj4+PiBfX2V4dGVuc2lv bl9fIHR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90Owo+Pj4KPj4+Cj4+PiBfX2V4dGVuc2lv bl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2Jsa2NudF90Owo+Pj4gX19leHRlbnNp b25fXyB0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7Cj4+Pgo+Pj4KPj4+IF9fZXh0 ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZzZmlsY250X3Q7Cj4+PiBfX2V4 dGVuc2lvbl9fIHR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKPj4+Cj4+Pgo+Pj4g X19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX2Zzd29yZF90Owo+Pj4KPj4+IF9fZXh0ZW5zaW9u X18gdHlwZWRlZiBpbnQgX19zc2l6ZV90Owo+Pj4KPj4+Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVk ZWYgbG9uZyBpbnQgX19zeXNjYWxsX3Nsb25nX3Q7Cj4+Pgo+Pj4gX19leHRlbnNpb25fXyB0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fc3lzY2FsbF91bG9uZ190Owo+Pj4KPj4+Cj4+Pgo+Pj4g dHlwZWRlZiBfX29mZjY0X3QgX19sb2ZmX3Q7Cj4+PiB0eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRy X3Q7Cj4+PiB0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKPj4+Cj4+Pgo+Pj4gX19leHRlbnNpb25f XyB0eXBlZGVmIGludCBfX2ludHB0cl90Owo+Pj4KPj4+Cj4+PiBfX2V4dGVuc2lvbl9fIHR5cGVk ZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90Owo+Pj4gIyAzNiAiL3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDIgMyA0Cj4+PiAjIDQ0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+PiBzdHJ1Y3Qg X0lPX0ZJTEU7Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAjIDY0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+ PiB0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7Cj4+PiAjIDc0ICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMgNAo+Pj4gIyAz MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvX0dfY29u ZmlnLmgiIDEgMyA0Cj4+PiAjIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMgNAo+Pj4g IyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYu aCIgMSAzIDQKPj4+ICMgMTYgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzIDQKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMgNAo+Pj4gIyA4MiAi L3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNAo+Pj4gdHlwZWRlZiBzdHJ1Y3QKPj4+IHsKPj4+ICAg aW50IF9fY291bnQ7Cj4+PiAgIHVuaW9uCj4+PiAgIHsKPj4+Cj4+PiAgICAgdW5zaWduZWQgaW50 IF9fd2NoOwo+Pj4KPj4+Cj4+Pgo+Pj4gICAgIGNoYXIgX193Y2hiWzRdOwo+Pj4gICB9IF9fdmFs dWU7Cj4+PiB9IF9fbWJzdGF0ZV90Owo+Pj4gIyAyMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5o IiAyIDMgNAo+Pj4gdHlwZWRlZiBzdHJ1Y3QKPj4+IHsKPj4+ICAgX19vZmZfdCBfX3BvczsKPj4+ ICAgX19tYnN0YXRlX3QgX19zdGF0ZTsKPj4+IH0gX0dfZnBvc190Owo+Pj4gdHlwZWRlZiBzdHJ1 Y3QKPj4+IHsKPj4+ICAgX19vZmY2NF90IF9fcG9zOwo+Pj4gICBfX21ic3RhdGVfdCBfX3N0YXRl Owo+Pj4gfSBfR19mcG9zNjRfdDsKPj4+ICMgMzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMg NAo+Pj4gIyA0OSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2xpYi9n Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzIDQKPj4+ICMg NDAgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGFyZy5o IiAzIDQKPj4+IHR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7Cj4+PiAj IDUwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzIDQKPj4+ICMgMTQ0ICIvdXNyL2luY2x1ZGUv bGliaW8uaCIgMyA0Cj4+PiBzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4gc3RydWN0IF9JT19tYXJrZXIgewo+Pj4gICBzdHJ1Y3QgX0lPX21hcmtlciAq X25leHQ7Cj4+PiAgIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7Cj4+Pgo+Pj4KPj4+Cj4+PiAgIGlu dCBfcG9zOwo+Pj4gIyAxNzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKPj4+IH07Cj4+Pgo+ Pj4KPj4+IGVudW0gX19jb2RlY3Z0X3Jlc3VsdAo+Pj4gewo+Pj4gICBfX2NvZGVjdnRfb2ssCj4+ PiAgIF9fY29kZWN2dF9wYXJ0aWFsLAo+Pj4gICBfX2NvZGVjdnRfZXJyb3IsCj4+PiAgIF9fY29k ZWN2dF9ub2NvbnYKPj4+IH07Cj4+PiAjIDI0MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAo+ Pj4gc3RydWN0IF9JT19GSUxFIHsKPj4+ICAgaW50IF9mbGFnczsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+ PiAgIGNoYXIqIF9JT19yZWFkX3B0cjsKPj4+ICAgY2hhciogX0lPX3JlYWRfZW5kOwo+Pj4gICBj aGFyKiBfSU9fcmVhZF9iYXNlOwo+Pj4gICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKPj4+ICAgY2hh ciogX0lPX3dyaXRlX3B0cjsKPj4+ICAgY2hhciogX0lPX3dyaXRlX2VuZDsKPj4+ICAgY2hhciog X0lPX2J1Zl9iYXNlOwo+Pj4gICBjaGFyKiBfSU9fYnVmX2VuZDsKPj4+Cj4+PiAgIGNoYXIgKl9J T19zYXZlX2Jhc2U7Cj4+PiAgIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKPj4+ICAgY2hhciAqX0lP X3NhdmVfZW5kOwo+Pj4KPj4+ICAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwo+Pj4KPj4+ ICAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47Cj4+Pgo+Pj4gICBpbnQgX2ZpbGVubzsKPj4+Cj4+ Pgo+Pj4KPj4+ICAgaW50IF9mbGFnczI7Cj4+Pgo+Pj4gICBfX29mZl90IF9vbGRfb2Zmc2V0Owo+ Pj4KPj4+Cj4+Pgo+Pj4gICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKPj4+ICAgc2lnbmVk IGNoYXIgX3Z0YWJsZV9vZmZzZXQ7Cj4+PiAgIGNoYXIgX3Nob3J0YnVmWzFdOwo+Pj4KPj4+Cj4+ Pgo+Pj4gICBfSU9fbG9ja190ICpfbG9jazsKPj4+ICMgMjg5ICIvdXNyL2luY2x1ZGUvbGliaW8u aCIgMyA0Cj4+PiAgIF9fb2ZmNjRfdCBfb2Zmc2V0Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+ICAgdm9pZCAqX19wYWQxOwo+Pj4gICB2b2lkICpfX3BhZDI7Cj4+PiAgIHZvaWQgKl9f cGFkMzsKPj4+ICAgdm9pZCAqX19wYWQ0Owo+Pj4KPj4+ICAgc2l6ZV90IF9fcGFkNTsKPj4+ICAg aW50IF9tb2RlOwo+Pj4KPj4+ICAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAoaW50KSAtIDQg KiBzaXplb2YgKHZvaWQgKikgLSBzaXplb2YgKHNpemVfdCldOwo+Pj4KPj4+IH07Cj4+Pgo+Pj4K Pj4+IHR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwo+Pj4KPj4+Cj4+PiBzdHJ1Y3Qg X0lPX0ZJTEVfcGx1czsKPj4+Cj4+PiBleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJf MV9zdGRpbl87Cj4+PiBleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRf Owo+Pj4gZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKPj4+ICMg MzMzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0Cj4+PiB0eXBlZGVmIF9fc3NpemVfdCBfX2lv X3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsK Pj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dy aXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgY29uc3QgY2hhciAqX19idWYsCj4+PiAgICAgIHNpemVf dCBfX24pOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgaW50IF9faW9f c2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwo+Pj4K Pj4+Cj4+PiB0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7Cj4+PiAj IDM4NSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBfX3VuZGVyZmxv dyAoX0lPX0ZJTEUgKik7Cj4+PiBleHRlcm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICopOwo+Pj4g ZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpOwo+Pj4gIyA0MjkgIi91c3Iv aW5jbHVkZS9saWJpby5oIiAzIDQKPj4+IGV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpf X2ZwKTsKPj4+IGV4dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKTsK Pj4+IGV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9f RklMRSAqX19mcCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ Cj4+PiBleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKTsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+IGV4dGVybiB2b2lk IF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKPj4+IGV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUg KikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgNDU5ICIv dXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0Cj4+PiBleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9f RklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAo+Pj4gICAgX19nbnVj X3ZhX2xpc3QsIGludCAqX19yZXN0cmljdCk7Cj4+PiBleHRlcm4gaW50IF9JT192ZnByaW50ZiAo X0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCj4+PiAgICAgX19n bnVjX3ZhX2xpc3QpOwo+Pj4gZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwg aW50LCBfX3NzaXplX3QpOwo+Pj4gZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICos IHZvaWQgKiwgc2l6ZV90KTsKPj4+Cj4+PiBleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChf SU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KTsKPj4+IGV4dGVybiBfX29mZjY0X3QgX0lP X3NlZWtwb3MgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KTsKPj4+Cj4+PiBleHRlcm4gdm9p ZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgNzUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMg NAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKPj4+ ICMgOTAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4+IHR5cGVkZWYgX19vZmZfdCBvZmZf dDsKPj4+ICMgMTAyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+PiB0eXBlZGVmIF9fc3Np emVfdCBzc2l6ZV90Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgX0df ZnBvc190IGZwb3NfdDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAjIDE2NCAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzIDQK Pj4+ICMgMTY1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+IGV4 dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGluOwo+Pj4gZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAq c3Rkb3V0Owo+Pj4gZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3RkZXJyOwo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgcmVtb3ZlIChjb25zdCBjaGFyICpfX2ZpbGVu YW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+IGV4 dGVybiBpbnQgcmVuYW1lIChjb25zdCBjaGFyICpfX29sZCwgY29uc3QgY2hhciAqX19uZXcpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIGludCByZW5hbWVhdCAoaW50IF9fb2xkZmQsIGNvbnN0IGNoYXIgKl9fb2xkLCBp bnQgX19uZXdmZCwKPj4+ICAgICAgICBjb25zdCBjaGFyICpfX25ldykgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpIDsKPj4+ICMgMjA5ICIvdXNyL2luY2x1 ZGUvc3RkaW8uaCIgMyA0Cj4+PiBleHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+PiAjIDIyNyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi IDMgNAo+Pj4gZXh0ZXJuIGNoYXIgKnRlbXBuYW0gKGNvbnN0IGNoYXIgKl9fZGlyLCBjb25zdCBj aGFyICpfX3BmeCkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKTsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0pOwo+Pj4KPj4+ ICMgMjUyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+PiBleHRlcm4gaW50IGZmbHVzaF91 bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwo+Pj4gIyAyNjYgIi91c3IvaW5jbHVkZS9zdGRpby5o IiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBGSUxFICpmb3BlbiAoY29u c3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAo+Pj4gICAgICAgY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX21vZGVzKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIEZJTEUgKmZyZW9w ZW4gKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKPj4+ICAgICAgICAgY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX21vZGVzLAo+Pj4gICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9f c3RyZWFtKSA7Cj4+PiAjIDI5NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAo+Pj4KPj4+ICMg MzA2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+PiBleHRlcm4gRklMRSAqZmRvcGVuIChp bnQgX19mZCwgY29uc3QgY2hhciAqX19tb2RlcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSA7Cj4+PiAjIDMxOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAo+Pj4g ZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgY29uc3QgY2hh ciAqX19tb2RlcykKPj4+ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFy ICoqX19idWZsb2MsIHNpemVfdCAqX19zaXplbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lk IHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1 ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4K Pj4+IGV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAq X19yZXN0cmljdCBfX2J1ZiwKPj4+ICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNo YXIgKl9fcmVzdHJpY3QgX19idWYsCj4+PiAgICAgICAgICBzaXplX3QgX19zaXplKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9p ZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJu IGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAo+Pj4gICAgICAgY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRl cm4gaW50IHByaW50ZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKPj4+ Cj4+PiBleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAo+Pj4gICAgICAg Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCB2ZnByaW50ZiAo RklMRSAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCj4+ PiAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVy biBpbnQgdnByaW50ZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3Zh X2xpc3QgX19hcmcpOwo+Pj4KPj4+IGV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJp Y3QgX19zLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAo+Pj4gICAgICAgIF9fZ251 Y192YV9saXN0IF9fYXJnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKPj4+Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3Ms IHNpemVfdCBfX21heGxlbiwKPj4+ICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y bWF0LCAuLi4pCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmli dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwo+Pj4KPj4+IGV4dGVybiBp bnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAo+Pj4g ICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBf X2FyZykKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7Cj4+Pgo+Pj4gIyA0MTIgIi91c3Iv aW5jbHVkZS9zdGRpby5oIiAzIDQKPj4+IGV4dGVybiBpbnQgdmRwcmludGYgKGludCBfX2ZkLCBj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAo+Pj4gICAgICAgIF9fZ251Y192YV9saXN0IF9f YXJnKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwg MCkpKTsKPj4+IGV4dGVybiBpbnQgZHByaW50ZiAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19mbXQsIC4uLikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f cHJpbnRmX18sIDIsIDMpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4 dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAo+Pj4gICAgICBjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBl eHRlcm4gaW50IHNjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsK Pj4+Cj4+PiBleHRlcm4gaW50IHNzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCj4+ PiAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgNDQzICIvdXNyL2luY2x1ZGUvc3Rk aW8uaCIgMyA0Cj4+PiBleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh bSwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSBfX2FzbV9fICgiIiAiX19p c29jOTlfZnNjYW5mIikKPj4+Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwo+ Pj4gZXh0ZXJuIGludCBzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u KSBfX2FzbV9fICgiIiAiX19pc29jOTlfc2NhbmYiKQo+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOwo+Pj4gZXh0ZXJuIGludCBzc2NhbmYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19zLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXNtX18gKCIiICJf X2lzb2M5OV9zc2NhbmYiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp Cj4+Pgo+Pj4gICAgICAgICAgICAgICAgICAgICAgIDsKPj4+ICMgNDYzICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBp bnQgdmZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19mb3JtYXQsCj4+PiAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKPj4+ICAgICAgX19hdHRy aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKSA7Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+IGV4dGVybiBpbnQgdnNjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y bWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y bWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKSA7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgdnNzY2Fu ZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCj4+PiAgICAgICBjb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKPj4+ICAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRf XyAoX19zY2FuZl9fLCAyLCAwKSkpOwo+Pj4gIyA0OTQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAz IDQKPj4+IGV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSBfX2FzbV9fICgi IiAiX19pc29jOTlfdmZzY2FuZiIpCj4+Pgo+Pj4KPj4+Cj4+PiAgICAgIF9fYXR0cmlidXRlX18g KChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSkgOwo+Pj4gZXh0ZXJuIGludCB2c2NhbmYg KGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSBf X2FzbV9fICgiIiAiX19pc29jOTlfdnNjYW5mIikKPj4+Cj4+PiAgICAgIF9fYXR0cmlidXRlX18g KChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDEsIDApKSkgOwo+Pj4gZXh0ZXJuIGludCB2c3NjYW5m IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv cm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fYXNtX18gKCIiICJfX2lzb2M5OV92c3NjYW5m IikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQo+Pj4KPj4+Cj4+Pgo+ Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwo+ Pj4gIyA1MjIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3RyZWFtKTsKPj4+ IGV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ PiBleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpOwo+Pj4KPj4+ICMgNTUwICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMyA0Cj4+PiBleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt KTsKPj4+IGV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCk7Cj4+PiAjIDU2MSAiL3Vz ci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklM RSAqX19zdHJlYW0pOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7Cj4+PiBleHRl cm4gaW50IHB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKTsKPj4+Cj4+PiAjIDU5NCAiL3Vzci9p bmNsdWRlL3N0ZGlvLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9f YywgRklMRSAqX19zdHJlYW0pOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVy biBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwo+Pj4gZXh0ZXJu IGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+IGV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pOwo+Pj4KPj4+Cj4+PiBleHRlcm4g aW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywg aW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKPj4+ICAgICAgOwo+Pj4gIyA2NDAg Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4+Cj4+PiAjIDY2NSAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMgNAo+Pj4gZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0 cmljdCBfX2xpbmVwdHIsCj4+PiAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50 IF9fZGVsaW1pdGVyLAo+Pj4gICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK Pj4+IGV4dGVybiBfX3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0 ciwKPj4+ICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAo+ Pj4gICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0cmlj dCBfX2xpbmVwdHIsCj4+PiAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwKPj4+ICAgICAg ICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+IGV4dGVybiBpbnQgZnB1dHMgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBG SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJu IGludCBwdXRzIChjb25zdCBjaGFyICpfX3MpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4g ZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19w dHIsIHNpemVfdCBfX3NpemUsCj4+PiAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmlj dCBfX3N0cmVhbSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzaXplX3QgZndyaXRlIChj b25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAo+Pj4gICAgICAgICBz aXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7Cj4+Pgo+Pj4gIyA3MzcgIi91c3IvaW5j bHVkZS9zdGRpby5oIiAzIDQKPj4+IGV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQg Kl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCj4+PiAgICAgICAgICBzaXplX3QgX19u LCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7Cj4+PiBleHRlcm4gc2l6ZV90IGZ3cml0ZV91 bmxvY2tlZCAoY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKPj4+ ICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19z dHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ IGV4dGVybiBsb25nIGludCBmdGVsbCAoRklMRSAqX19zdHJlYW0pIDsKPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKTsKPj4+Cj4+PiAjIDc3MyAi L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBmc2Vla28gKEZJTEUgKl9f c3RyZWFtLCBfX29mZl90IF9fb2ZmLCBpbnQgX193aGVuY2UpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ IGV4dGVybiBfX29mZl90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0pIDsKPj4+ICMgNzkyICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4g aW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmlj dCBfX3Bvcyk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpf X3N0cmVhbSwgY29uc3QgZnBvc190ICpfX3Bvcyk7Cj4+PiAjIDgxNSAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMgNAo+Pj4KPj4+ICMgODI0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+Pgo+ Pj4KPj4+IGV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+PiBleHRlcm4gaW50IGZlb2YgKEZJ TEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK Pj4+Cj4+PiBleHRlcm4gaW50IGZlcnJvciAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2 b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+IGV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklM RSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+ Pj4gZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgcGVycm9yIChjb25zdCBjaGFyICpfX3MpOwo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5o IiAxIDMgNAo+Pj4gIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvc3lzX2Vycmxpc3QuaCIgMyA0Cj4+ PiBleHRlcm4gaW50IHN5c19uZXJyOwo+Pj4gZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19l cnJsaXN0W107Cj4+PiAjIDg1NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRl cm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pj4gIyA4NzIgIi91c3IvaW5jbHVkZS9zdGRpby5o IiAzIDQKPj4+IGV4dGVybiBGSUxFICpwb3BlbiAoY29uc3QgY2hhciAqX19jb21tYW5kLCBjb25z dCBjaGFyICpfX21vZGVzKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgcGNs b3NlIChGSUxFICpfX3N0cmVhbSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBjaGFy ICpjdGVybWlkIChjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7Cj4+PiAjIDkxMiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAo+Pj4gZXh0ZXJuIHZv aWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChG SUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7 Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgOTQyICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMyA0Cj4+Pgo+Pj4gIyA0MCAibWFjaGluZS5jIiAyCj4+PiAjIDEgIi91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzIDQKPj4+ICMgMzIgIi91c3IvaW5jbHVkZS9zdGRsaWIu aCIgMyA0Cj4+PiAjIDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNs dWRlL3N0ZGRlZi5oIiAxIDMgNAo+Pj4gIyAzMjggIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1s aW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKPj4+IHR5cGVkZWYgbG9uZyBpbnQgd2No YXJfdDsKPj4+ICMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0ZmxhZ3Mu aCIgMSAzIDQKPj4+ICMgNDIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKPj4+ICMgMSAi L3Vzci9pbmNsdWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAxIDMgNAo+Pj4gIyA2NCAiL3Vzci9pbmNs dWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5o IiAxIDMgNAo+Pj4gIyAzNiAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzIDQKPj4+ICMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMyA0Cj4+PiAjIDM3ICIvdXNyL2luY2x1ZGUvZW5k aWFuLmgiIDIgMyA0Cj4+PiAjIDYwICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMgNAo+Pj4gIyAx ICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAxIDMgNAo+Pj4gIyAyOCAiL3Vzci9pbmNs dWRlL2JpdHMvYnl0ZXN3YXAuaCIgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRz aXplLmgiIDEgMyA0Cj4+PiAjIDI5ICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAyIDMg NAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9ieXRl c3dhcC0xNi5oIiAxIDMgNAo+Pj4gIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIg MiAzIDQKPj4+ICMgNDQgIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgiIDMgNAo+Pj4gc3Rh dGljIF9faW5saW5lIHVuc2lnbmVkIGludAo+Pj4gX19ic3dhcF8zMiAodW5zaWduZWQgaW50IF9f YnN4KQo+Pj4gewo+Pj4gICByZXR1cm4gX19idWlsdGluX2Jzd2FwMzIgKF9fYnN4KTsKPj4+IH0K Pj4+ICMgMTA4ICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAzIDQKPj4+IHN0YXRpYyBf X2lubGluZSBfX3VpbnQ2NF90Cj4+PiBfX2Jzd2FwXzY0IChfX3VpbnQ2NF90IF9fYnN4KQo+Pj4g ewo+Pj4gICByZXR1cm4gX19idWlsdGluX2Jzd2FwNjQgKF9fYnN4KTsKPj4+IH0KPj4+ICMgNjEg Ii91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzIDQKPj4+ICMgNjUgIi91c3IvaW5jbHVkZS9iaXRz L3dhaXRzdGF0dXMuaCIgMiAzIDQKPj4+Cj4+PiB1bmlvbiB3YWl0Cj4+PiAgIHsKPj4+ICAgICBp bnQgd19zdGF0dXM7Cj4+PiAgICAgc3RydWN0Cj4+PiAgICAgICB7Cj4+Pgo+Pj4gIHVuc2lnbmVk IGludCBfX3dfdGVybXNpZzo3Owo+Pj4gIHVuc2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsKPj4+ ICB1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6ODsKPj4+ICB1bnNpZ25lZCBpbnQ6MTY7Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gICAgICAgfSBfX3dhaXRfdGVybWluYXRlZDsKPj4+ ICAgICBzdHJ1Y3QKPj4+ICAgICAgIHsKPj4+Cj4+PiAgdW5zaWduZWQgaW50IF9fd19zdG9wdmFs Ojg7Cj4+PiAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7Cj4+PiAgdW5zaWduZWQgaW50OjE2 Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gICAgICAgfSBfX3dhaXRfc3RvcHBlZDsKPj4+ ICAgfTsKPj4+ICMgNDMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKPj4+ICMgNjcgIi91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0Cj4+PiB0eXBlZGVmIHVuaW9uCj4+PiAgIHsKPj4+ICAg ICB1bmlvbiB3YWl0ICpfX3VwdHI7Cj4+PiAgICAgaW50ICpfX2lwdHI7Cj4+PiAgIH0gX19XQUlU X1NUQVRVUyBfX2F0dHJpYnV0ZV9fICgoX190cmFuc3BhcmVudF91bmlvbl9fKSk7Cj4+PiAjIDk1 ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAo+Pj4KPj4+Cj4+PiB0eXBlZGVmIHN0cnVjdAo+ Pj4gICB7Cj4+PiAgICAgaW50IHF1b3Q7Cj4+PiAgICAgaW50IHJlbTsKPj4+ICAgfSBkaXZfdDsK Pj4+Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgc3RydWN0Cj4+PiAgIHsKPj4+ICAgICBsb25nIGludCBx dW90Owo+Pj4gICAgIGxvbmcgaW50IHJlbTsKPj4+ICAgfSBsZGl2X3Q7Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4gX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAo+Pj4gICB7Cj4+ PiAgICAgbG9uZyBsb25nIGludCBxdW90Owo+Pj4gICAgIGxvbmcgbG9uZyBpbnQgcmVtOwo+Pj4g ICB9IGxsZGl2X3Q7Cj4+Pgo+Pj4KPj4+ICMgMTM5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMg NAo+Pj4gZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBl eHRlcm4gZG91YmxlIGF0b2YgKGNvbnN0IGNoYXIgKl9fbnB0cikKPj4+ICAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwo+Pj4KPj4+IGV4dGVybiBpbnQg YXRvaSAoY29uc3QgY2hhciAqX19ucHRyKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKSA7Cj4+Pgo+Pj4gZXh0ZXJuIGxvbmcgaW50IGF0b2wgKGNv bnN0IGNoYXIgKl9fbnB0cikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBfX2V4dGVuc2lvbl9fIGV4 dGVybiBsb25nIGxvbmcgaW50IGF0b2xsIChjb25zdCBjaGFyICpfX25wdHIpCj4+PiAgICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f cHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4gZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19ucHRyLAo+Pj4gICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKPj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBmbG9hdCBz dHJ0b2YgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+Pj4gICAgICAgIGNoYXIgKipf X3Jlc3RyaWN0IF9fZW5kcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+PiBleHRlcm4gbG9u ZyBkb3VibGUgc3RydG9sZCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCj4+PiAgICAg ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gbG9uZyBpbnQgc3RydG9sIChjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKPj4+ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy LCBpbnQgX19iYXNlKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+PiBleHRlcm4g dW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs Cj4+PiAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKPj4+ICAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gX19leHRlbnNpb25fXwo+ Pj4gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9xIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f bnB0ciwKPj4+ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Up Cj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4KPj4+IF9fZXh0ZW5zaW9uX18KPj4+IGV4 dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19ucHRyLAo+Pj4gICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50 IF9fYmFzZSkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+IF9fZXh0ZW5zaW9uX18KPj4+IGV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+Pj4gICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg X19lbmRwdHIsIGludCBfX2Jhc2UpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4KPj4+ IF9fZXh0ZW5zaW9uX18KPj4+IGV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxs IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKPj4+ICAgICAgY2hhciAqKl9fcmVzdHJp Y3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4K Pj4+ICMgMzA1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAo+Pj4gZXh0ZXJuIGNoYXIgKmw2 NGEgKGxvbmcgaW50IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSA7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBsb25nIGludCBhNjRsIChjb25zdCBjaGFyICpfX3MpCj4+ PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4+ Cj4+Pgo+Pj4KPj4+Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKPj4+ ICMgMjcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+Cj4+PiB0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKPj4+IHR5cGVkZWYgX191X3Nob3J0IHVf c2hvcnQ7Cj4+PiB0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7Cj4+PiB0eXBlZGVmIF9fdV9sb25nIHVf bG9uZzsKPj4+IHR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owo+Pj4gdHlwZWRlZiBfX3VfcXVhZF90 IHVfcXVhZF90Owo+Pj4gdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIF9faW5v X3QgaW5vX3Q7Cj4+PiAjIDYwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAo+Pj4gdHlw ZWRlZiBfX2Rldl90IGRldl90Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgX19naWRfdCBn aWRfdDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIF9fbmxpbmtfdCBubGlua190Owo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+IHR5cGVkZWYgX191aWRfdCB1aWRfdDsKPj4+ICMgOTggIi91c3IvaW5jbHVkZS9zeXMvdHlw ZXMuaCIgMyA0Cj4+PiB0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+IHR5cGVkZWYgX19pZF90IGlkX3Q7Cj4+PiAjIDExNSAiL3Vzci9pbmNsdWRlL3N5cy90eXBl cy5oIiAzIDQKPj4+IHR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7Cj4+PiB0eXBlZGVmIF9fY2Fk ZHJfdCBjYWRkcl90Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIF9fa2V5X3Qga2V5 X3Q7Cj4+PiAjIDEzMiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKPj4+ICMgMSAiL3Vz ci9pbmNsdWRlL3RpbWUuaCIgMSAzIDQKPj4+ICMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMg NAo+Pj4KPj4+Cj4+PiB0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190Owo+Pj4KPj4+Cj4+Pgo+Pj4g IyA3MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgX190aW1l X3QgdGltZV90Owo+Pj4KPj4+Cj4+Pgo+Pj4gIyA5MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0 Cj4+PiB0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKPj4+ICMgMTAzICIvdXNyL2luY2x1 ZGUvdGltZS5oIiAzIDQKPj4+IHR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7Cj4+PiAjIDEzMyAi L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAo+Pj4gIyAxNDYgIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMyA0Cj4+PiAjIDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82 LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAo+Pj4gIyAxNDcgIi91c3IvaW5jbHVkZS9zeXMv dHlwZXMuaCIgMiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg dWxvbmc7Cj4+PiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7Cj4+PiB0eXBlZGVm IHVuc2lnbmVkIGludCB1aW50Owo+Pj4gIyAxOTQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg MyA0Cj4+PiB0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJ X18pKSk7Cj4+PiB0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo X19ISV9fKSkpOwo+Pj4gdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl X18gKF9fU0lfXykpKTsKPj4+IHR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9f bW9kZV9fIChfX0RJX18pKSk7Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50 OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwo+Pj4gdHlwZWRlZiB1bnNp Z25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwo+ Pj4gdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVf XyAoX19TSV9fKSkpOwo+Pj4gdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmli dXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwo+Pj4KPj4+IHR5cGVkZWYgaW50IHJlZ2lzdGVy X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKPj4+ICMgMjE5ICIvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj dC5oIiAxIDMgNAo+Pj4gIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0Cj4+PiAj IDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMgNAo+Pj4gIyAyMiAiL3Vzci9pbmNs dWRlL2JpdHMvc2VsZWN0LmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6 ZS5oIiAxIDMgNAo+Pj4gIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDIgMyA0Cj4+ PiAjIDMxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAo+Pj4KPj4+Cj4+PiAjIDEg Ii91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMgNAo+Pj4gIyAyMiAiL3Vzci9pbmNsdWRl L2JpdHMvc2lnc2V0LmgiIDMgNAo+Pj4gdHlwZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4gdHlwZWRlZiBzdHJ1Y3QKPj4+ICAgewo+Pj4gICAgIHVuc2lnbmVkIGxv bmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsK Pj4+ICAgfSBfX3NpZ3NldF90Owo+Pj4gIyAzNCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg MiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAo+Pj4gIyAx MjAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAo+Pj4gc3RydWN0IHRpbWVzcGVjCj4+PiAgIHsK Pj4+ICAgICBfX3RpbWVfdCB0dl9zZWM7Cj4+PiAgICAgX19zeXNjYWxsX3Nsb25nX3QgdHZfbnNl YzsKPj4+ICAgfTsKPj4+ICMgNDQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMyA0Cj4+ Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMyA0Cj4+PiAjIDMwICIvdXNy L2luY2x1ZGUvYml0cy90aW1lLmgiIDMgNAo+Pj4gc3RydWN0IHRpbWV2YWwKPj4+ICAgewo+Pj4g ICAgIF9fdGltZV90IHR2X3NlYzsKPj4+ICAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7Cj4+PiAg IH07Cj4+PiAjIDQ2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAo+Pj4KPj4+Cj4+ PiB0eXBlZGVmIF9fc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+IHR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwo+Pj4gIyA2NCAiL3Vzci9pbmNsdWRlL3N5 cy9zZWxlY3QuaCIgMyA0Cj4+PiB0eXBlZGVmIHN0cnVjdAo+Pj4gICB7Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiAgICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAvICg4ICogKGludCkg c2l6ZW9mIChfX2ZkX21hc2spKV07Cj4+Pgo+Pj4KPj4+ICAgfSBmZF9zZXQ7Cj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwo+Pj4gIyA5NiAiL3Vz ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0Cj4+Pgo+Pj4gIyAxMDYgIi91c3IvaW5jbHVkZS9z eXMvc2VsZWN0LmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3Nl dCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCj4+PiAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dy aXRlZmRzLAo+Pj4gICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCj4+PiAgICAg IHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCk7Cj4+PiAjIDExOCAiL3Vzci9p bmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0Cj4+PiBleHRlcm4gaW50IHBzZWxlY3QgKGludCBfX25m ZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCj4+PiAgICAgICBmZF9zZXQgKl9fcmVz dHJpY3QgX193cml0ZWZkcywKPj4+ICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZk cywKPj4+ICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBfX3RpbWVvdXQs Cj4+PiAgICAgICBjb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2lnbWFzayk7Cj4+PiAj IDEzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0Cj4+Pgo+Pj4gIyAyMjAgIi91c3Iv aW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUv c3lzL3N5c21hY3Jvcy5oIiAxIDMgNAo+Pj4gIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNy b3MuaCIgMyA0Cj4+Pgo+Pj4KPj4+IF9fZXh0ZW5zaW9uX18KPj4+IGV4dGVybiB1bnNpZ25lZCBp bnQgZ251X2Rldl9tYWpvciAodW5zaWduZWQgbG9uZyBsb25nIGludCBfX2RldikKPj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7Cj4+PiBfX2V4dGVuc2lvbl9fCj4+PiBleHRlcm4gdW5zaWduZWQgaW50IGdu dV9kZXZfbWlub3IgKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19kZXYpCj4+PiAgICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwo+Pj4gX19leHRlbnNpb25fXwo+Pj4gZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBp bnQgZ251X2Rldl9tYWtlZGV2ICh1bnNpZ25lZCBpbnQgX19tYWpvciwKPj4+ICAgICAgICAgICAg IHVuc2lnbmVkIGludCBfX21pbm9yKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4+ICMgNTggIi91 c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMgNAo+Pj4KPj4+ICMgMjIzICIvdXNyL2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgX19i bGtzaXplX3QgYmxrc2l6ZV90Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gdHlwZWRlZiBf X2Jsa2NudF90IGJsa2NudF90Owo+Pj4KPj4+Cj4+Pgo+Pj4gdHlwZWRlZiBfX2ZzYmxrY250X3Qg ZnNibGtjbnRfdDsKPj4+Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250 X3Q7Cj4+PiAjIDI3MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKPj4+ICMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMyA0Cj4+PiAjIDIxICIvdXNyL2luY2x1 ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dv cmRzaXplLmgiIDEgMyA0Cj4+PiAjIDIyICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu aCIgMiAzIDQKPj4+ICMgNjAgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzIDQK Pj4+IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90Owo+Pj4KPj4+Cj4+PiB1bmlv biBwdGhyZWFkX2F0dHJfdAo+Pj4gewo+Pj4gICBjaGFyIF9fc2l6ZVszNl07Cj4+PiAgIGxvbmcg aW50IF9fYWxpZ247Cj4+PiB9Owo+Pj4KPj4+IHR5cGVkZWYgdW5pb24gcHRocmVhZF9hdHRyX3Qg cHRocmVhZF9hdHRyX3Q7Cj4+PiAjIDgxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu aCIgMyA0Cj4+PiB0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfaW50ZXJuYWxfc2xpc3QKPj4+IHsK Pj4+ICAgc3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9zbGlzdCAqX19uZXh0Owo+Pj4gfSBfX3B0 aHJlYWRfc2xpc3RfdDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gdHlwZWRlZiB1bmlvbgo+Pj4g ewo+Pj4gICBzdHJ1Y3QgX19wdGhyZWFkX211dGV4X3MKPj4+ICAgewo+Pj4gICAgIGludCBfX2xv Y2s7Cj4+PiAgICAgdW5zaWduZWQgaW50IF9fY291bnQ7Cj4+PiAgICAgaW50IF9fb3duZXI7Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ICAgICBpbnQgX19raW5kOwo+Pj4gIyAxMTEgIi91c3IvaW5j bHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzIDQKPj4+ICAgICB1bnNpZ25lZCBpbnQgX19udXNl cnM7Cj4+PiAgICAgX19leHRlbnNpb25fXyB1bmlvbgo+Pj4gICAgIHsKPj4+ICAgICAgIHN0cnVj dAo+Pj4gICAgICAgewo+Pj4gIHNob3J0IF9fZXNwaW5zOwo+Pj4gIHNob3J0IF9fZWxpc2lvbjsK Pj4+Cj4+Pgo+Pj4KPj4+ICAgICAgIH0gX19lbGlzaW9uX2RhdGE7Cj4+PiAgICAgICBfX3B0aHJl YWRfc2xpc3RfdCBfX2xpc3Q7Cj4+PiAgICAgfTsKPj4+Cj4+PiAgIH0gX19kYXRhOwo+Pj4gICBj aGFyIF9fc2l6ZVsyNF07Cj4+PiAgIGxvbmcgaW50IF9fYWxpZ247Cj4+PiB9IHB0aHJlYWRfbXV0 ZXhfdDsKPj4+Cj4+PiB0eXBlZGVmIHVuaW9uCj4+PiB7Cj4+PiAgIGNoYXIgX19zaXplWzRdOwo+ Pj4gICBpbnQgX19hbGlnbjsKPj4+IH0gcHRocmVhZF9tdXRleGF0dHJfdDsKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+PiB0eXBlZGVmIHVuaW9uCj4+PiB7Cj4+PiAgIHN0cnVjdAo+Pj4gICB7Cj4+PiAgICAg aW50IF9fbG9jazsKPj4+ICAgICB1bnNpZ25lZCBpbnQgX19mdXRleDsKPj4+ICAgICBfX2V4dGVu c2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX190b3RhbF9zZXE7Cj4+PiAgICAgX19leHRl bnNpb25fXyB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fd2FrZXVwX3NlcTsKPj4+ICAgICBfX2V4 dGVuc2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX193b2tlbl9zZXE7Cj4+PiAgICAgdm9p ZCAqX19tdXRleDsKPj4+ICAgICB1bnNpZ25lZCBpbnQgX19ud2FpdGVyczsKPj4+ICAgICB1bnNp Z25lZCBpbnQgX19icm9hZGNhc3Rfc2VxOwo+Pj4gICB9IF9fZGF0YTsKPj4+ICAgY2hhciBfX3Np emVbNDhdOwo+Pj4gICBfX2V4dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQgX19hbGlnbjsKPj4+IH0g cHRocmVhZF9jb25kX3Q7Cj4+Pgo+Pj4gdHlwZWRlZiB1bmlvbgo+Pj4gewo+Pj4gICBjaGFyIF9f c2l6ZVs0XTsKPj4+ICAgaW50IF9fYWxpZ247Cj4+PiB9IHB0aHJlYWRfY29uZGF0dHJfdDsKPj4+ Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7Cj4+Pgo+Pj4K Pj4+Cj4+PiB0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gdHlwZWRlZiB1bmlvbgo+Pj4gewo+Pj4gIyAyMDIgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJl YWR0eXBlcy5oIiAzIDQKPj4+ICAgc3RydWN0Cj4+PiAgIHsKPj4+ICAgICBpbnQgX19sb2NrOwo+ Pj4gICAgIHVuc2lnbmVkIGludCBfX25yX3JlYWRlcnM7Cj4+PiAgICAgdW5zaWduZWQgaW50IF9f cmVhZGVyc193YWtldXA7Cj4+PiAgICAgdW5zaWduZWQgaW50IF9fd3JpdGVyX3dha2V1cDsKPj4+ ICAgICB1bnNpZ25lZCBpbnQgX19ucl9yZWFkZXJzX3F1ZXVlZDsKPj4+ICAgICB1bnNpZ25lZCBp bnQgX19ucl93cml0ZXJzX3F1ZXVlZDsKPj4+Cj4+Pgo+Pj4gICAgIHVuc2lnbmVkIGNoYXIgX19m bGFnczsKPj4+ICAgICB1bnNpZ25lZCBjaGFyIF9fc2hhcmVkOwo+Pj4gICAgIHNpZ25lZCBjaGFy IF9fcndlbGlzaW9uOwo+Pj4KPj4+ICAgICB1bnNpZ25lZCBjaGFyIF9fcGFkMjsKPj4+ICAgICBp bnQgX193cml0ZXI7Cj4+PiAgIH0gX19kYXRhOwo+Pj4KPj4+ICAgY2hhciBfX3NpemVbMzJdOwo+ Pj4gICBsb25nIGludCBfX2FsaWduOwo+Pj4gfSBwdGhyZWFkX3J3bG9ja190Owo+Pj4KPj4+IHR5 cGVkZWYgdW5pb24KPj4+IHsKPj4+ICAgY2hhciBfX3NpemVbOF07Cj4+PiAgIGxvbmcgaW50IF9f YWxpZ247Cj4+PiB9IHB0aHJlYWRfcndsb2NrYXR0cl90Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ PiB0eXBlZGVmIHZvbGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2NrX3Q7Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gdHlwZWRlZiB1bmlvbgo+Pj4gewo+Pj4gICBjaGFyIF9fc2l6ZVsyMF07Cj4+PiAgIGxv bmcgaW50IF9fYWxpZ247Cj4+PiB9IHB0aHJlYWRfYmFycmllcl90Owo+Pj4KPj4+IHR5cGVkZWYg dW5pb24KPj4+IHsKPj4+ICAgY2hhciBfX3NpemVbNF07Cj4+PiAgIGludCBfX2FsaWduOwo+Pj4g fSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7Cj4+PiAjIDI3MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBl cy5oIiAyIDMgNAo+Pj4KPj4+Cj4+Pgo+Pj4gIyAzMTUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg MiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBsb25nIGludCByYW5kb20g KHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4K Pj4+IGV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4 dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVi dWYsCj4+PiAgICBzaXplX3QgX19zdGF0ZWxlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7Cj4+Pgo+Pj4K Pj4+Cj4+PiBleHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHN0cnVjdCByYW5kb21f ZGF0YQo+Pj4gICB7Cj4+PiAgICAgaW50MzJfdCAqZnB0cjsKPj4+ICAgICBpbnQzMl90ICpycHRy Owo+Pj4gICAgIGludDMyX3QgKnN0YXRlOwo+Pj4gICAgIGludCByYW5kX3R5cGU7Cj4+PiAgICAg aW50IHJhbmRfZGVnOwo+Pj4gICAgIGludCByYW5kX3NlcDsKPj4+ICAgICBpbnQzMl90ICplbmRf cHRyOwo+Pj4gICB9Owo+Pj4KPj4+IGV4dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21f ZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKPj4+ICAgICAgICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9f cmVzdWx0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4+Cj4+PiBleHRlcm4gaW50IHNyYW5kb21f ciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikKPj4+ICAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDIpKSk7Cj4+Pgo+Pj4gZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5z aWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAo+Pj4gICAgc2l6 ZV90IF9fc3RhdGVsZW4sCj4+PiAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19i dWYpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpOwo+Pj4KPj4+IGV4dGVybiBpbnQgc2V0 c3RhdGVfciAoY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAo+Pj4gICAgICAgICAgc3RydWN0 IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg MikpKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgcmFuZCAodm9pZCkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+PiBleHRlcm4g dm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHJhbmRfciAo dW5zaWduZWQgaW50ICpfX3NlZWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGRvdWJsZSBkcmFu ZDQ4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4g ZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lk KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gZXh0ZXJuIGxv bmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKQo+Pj4gICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZv aWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiBleHRlcm4g bG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pCj4+PiAgICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBzcmFuZDQ4IChsb25n IGludCBfX3NlZWR2YWwpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 Cj4+PiBleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGlu dCBfX3NlZWQxNnZbM10pCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4gZXh0ZXJuIHZv aWQgbGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBzdHJ1Y3QgZHJhbmQ0OF9kYXRhCj4+PiAgIHsK Pj4+ICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwo+Pj4gICAgIHVuc2lnbmVkIHNob3J0 IGludCBfX29sZF94WzNdOwo+Pj4gICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2M7Cj4+PiAgICAg dW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKPj4+ICAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVk IGxvbmcgbG9uZyBpbnQgX19hOwo+Pj4KPj4+ICAgfTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBk cmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCj4+PiAg ICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7 Cj4+PiBleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s Cj4+PiAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCj4+ PiAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRh ICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAo+Pj4gICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBf X3Jlc3VsdCkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+PiBleHRlcm4gaW50IG5y YW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCj4+PiAgICAgICAgIHN0cnVj dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCj4+PiAgICAgICAgIGxvbmcgaW50 ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4+ Cj4+Pgo+Pj4gZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz dHJpY3QgX19idWZmZXIsCj4+PiAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0 KQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4+IGV4dGVybiBpbnQganJhbmQ0OF9y ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKPj4+ICAgICAgICAgc3RydWN0IGRyYW5k NDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKPj4+ICAgICAgICAgbG9uZyBpbnQgKl9fcmVz dHJpY3QgX19yZXN1bHQpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+Cj4+ PiBleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0 OF9kYXRhICpfX2J1ZmZlcikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7Cj4+Pgo+Pj4gZXh0 ZXJuIGludCBzZWVkNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKPj4+ICAg ICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7 Cj4+Pgo+Pj4gZXh0ZXJuIGludCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFt WzddLAo+Pj4gICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKPj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEsIDIpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgOwo+ Pj4KPj4+IGV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXpl KQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX21hbGxvY19fKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkICpyZWFsbG9jICh2b2lkICpfX3B0ciwgc2l6ZV90IF9f c2l6ZSkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOwo+Pj4KPj4+IGV4dGVybiB2 b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0 cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4K Pj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMgNAo+Pj4gIyAyNCAiL3Vzci9pbmNs dWRlL2FsbG9jYS5oIiAzIDQKPj4+ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4 LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0Cj4+PiAjIDI1ICIvdXNyL2luY2x1ZGUvYWxs b2NhLmgiIDIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQg KmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ICMgNDkzICIvdXNyL2luY2x1ZGUv c3RkbGliLmgiIDIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkICp2YWxs b2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0 ZXJuIGludCBwb3NpeF9tZW1hbGlnbiAodm9pZCAqKl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1l bnQsIHNpemVfdCBfX3NpemUpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4+Cj4+Pgo+ Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCAqYWxpZ25lZF9hbGxvYyAoc2l6ZV90IF9fYWxpZ25tZW50 LCBzaXplX3QgX19zaXplKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9f YWxsb2Nfc2l6ZV9fICgyKSkpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBhYm9y dCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGF0ZXhp dCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGF0X3F1aWNrX2V4aXQgKHZvaWQgKCpfX2Z1 bmMpICh2b2lkKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2 b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1cykg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub3JldHVybl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkIHF1aWNr X2V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f KSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqZ2V0ZW52IChjb25z dCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4+Cj4+PiAjIDU3OCAiL3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAzIDQKPj4+IGV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmlu ZykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQg c2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3Jl cGxhY2UpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50 IHVuc2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgNjA2ICIvdXNyL2luY2x1ZGUv c3RkbGliLmgiIDMgNAo+Pj4gZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7Cj4+PiAjIDYxOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQK Pj4+IGV4dGVybiBpbnQgbWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpIDsKPj4+ICMgNjQxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMg NAo+Pj4gZXh0ZXJuIGludCBta3N0ZW1wcyAoY2hhciAqX190ZW1wbGF0ZSwgaW50IF9fc3VmZml4 bGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwo+Pj4gIyA2NjIgIi91c3Iv aW5jbHVkZS9zdGRsaWIuaCIgMyA0Cj4+PiBleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190 ZW1wbGF0ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwo+Pj4gIyA3MTEgIi91c3IvaW5jbHVkZS9zdGRs aWIuaCIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgc3lzdGVtIChjb25z dCBjaGFyICpfX2NvbW1hbmQpIDsKPj4+Cj4+PiAjIDczMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o IiAzIDQKPj4+IGV4dGVybiBjaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25hbWUsCj4+PiAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoY29uc3Qgdm9pZCAqLCBjb25zdCB2 b2lkICopOwo+Pj4gIyA3NTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gdm9pZCAqYnNlYXJjaCAoY29uc3Qgdm9pZCAqX19rZXksIGNvbnN0IHZvaWQg Kl9fYmFzZSwKPj4+ICAgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29t cGFyX2ZuX3QgX19jb21wYXIpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSwgMiwgNSkpKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQg cXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCj4+PiAg ICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSwgNCkpKTsKPj4+ICMgNzc0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAo+Pj4gZXh0ZXJu IGludCBhYnMgKGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKPj4+IGV4dGVybiBsb25nIGludCBsYWJz IChsb25nIGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKPj4+Cj4+Pgo+Pj4KPj4+IF9fZXh0ZW5zaW9u X18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQo+Pj4gICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGRp dl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7 Cj4+PiBleHRlcm4gbGRpdl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVu b20pCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBfX2V4dGVuc2lv bl9fIGV4dGVybiBsbGRpdl90IGxsZGl2IChsb25nIGxvbmcgaW50IF9fbnVtZXIsCj4+PiAgICAg ICAgIGxvbmcgbG9uZyBpbnQgX19kZW5vbSkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwo+Pj4KPj4+ ICMgODExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAo+Pj4gZXh0ZXJuIGNoYXIgKmVjdnQg KGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAo+ Pj4gICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCkpKSA7Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQg X19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAo+Pj4gICAgICBpbnQgKl9fcmVzdHJp Y3QgX19zaWduKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCkpKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0 ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVm KQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJu IGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCj4+PiAgICAg ICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikKPj4+ICAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDMsIDQpKSkgOwo+Pj4gZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRv dWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCj4+PiAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19k ZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQp KSkgOwo+Pj4gZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u ZGlnaXQsIGNoYXIgKl9fYnVmKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKSA7Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGln aXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAo+Pj4gICAgICBpbnQgKl9fcmVzdHJpY3QgX19z aWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAo+Pj4gICAgICBzaXplX3QgX19sZW4pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgzLCA0LCA1KSkpOwo+Pj4gZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVl LCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAo+Pj4gICAgICBpbnQgKl9f cmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAo+Pj4gICAgICBzaXplX3Qg X19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0LCA1KSkpOwo+Pj4KPj4+IGV4dGVybiBpbnQgcWVjdnRf ciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAo+Pj4gICAgICAgaW50ICpfX3Jl c3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCj4+PiAgICAgICBjaGFyICpf X3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0 LCA1KSkpOwo+Pj4gZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQg X19uZGlnaXQsCj4+PiAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3Ry aWN0IF9fc2lnbiwKPj4+ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xl bikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQsIDUpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+Cj4+PiBleHRlcm4gaW50IG1ibGVuIChjb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVy biBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAo+Pj4gICAgICBjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9f cywgd2NoYXJfdCBfX3djaGFyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19y ZXN0cmljdCBfX3B3Y3MsCj4+PiAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90 IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+PiBl eHRlcm4gc2l6ZV90IHdjc3RvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKPj4+ICAgIGNvbnN0 IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKQo+Pj4gICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHJwbWF0Y2ggKGNvbnN0IGNoYXIgKl9fcmVzcG9uc2Up IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpIDsKPj4+ICMgODk4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMg NAo+Pj4gZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0IF9fb3B0aW9ucCwK Pj4+ICAgICAgICAgY2hhciAqY29uc3QgKl9fcmVzdHJpY3QgX190b2tlbnMsCj4+PiAgICAgICAg IGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwg MykpKSA7Cj4+PiAjIDk1MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKPj4+IGV4dGVybiBp bnQgZ2V0bG9hZGF2ZyAoZG91YmxlIF9fbG9hZGF2Z1tdLCBpbnQgX19uZWxlbSkKPj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3Rk bGliLWZsb2F0LmgiIDEgMyA0Cj4+PiAjIDk1NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMg NAo+Pj4gIyA5NjcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0Cj4+Pgo+Pj4gIyA0MSAibWFj aGluZS5jIiAyCj4+PiAjIDEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMSAzIDQKPj4+ICMgMzAg Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0Cj4+Pgo+Pj4KPj4+ICMgMSAiL3Vzci9pbmNsdWRl L2JpdHMvc2lnc2V0LmgiIDEgMyA0Cj4+PiAjIDEwMiAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0 LmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBfX3NpZ2lzbWVtYmVyIChjb25zdCBfX3NpZ3NldF90ICos IGludCk7Cj4+PiBleHRlcm4gaW50IF9fc2lnYWRkc2V0IChfX3NpZ3NldF90ICosIGludCk7Cj4+ PiBleHRlcm4gaW50IF9fc2lnZGVsc2V0IChfX3NpZ3NldF90ICosIGludCk7Cj4+PiAjIDMzICIv dXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gdHlwZWRlZiBfX3NpZ19hdG9taWNfdCBzaWdfYXRvbWljX3Q7Cj4+Pgo+Pj4gIyA1NyAiL3Vz ci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnbnVt LmgiIDEgMyA0Cj4+PiAjIDU4ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0Cj4+PiAjIDc1 ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvdGltZS5o IiAxIDMgNAo+Pj4gIyA3NiAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnaW5mby5oIiAxIDMgNAo+Pj4gIyAy NCAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnaW5mby5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRl L2JpdHMvd29yZHNpemUuaCIgMSAzIDQKPj4+ICMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2lu Zm8uaCIgMiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIHVuaW9u IHNpZ3ZhbAo+Pj4gICB7Cj4+PiAgICAgaW50IHNpdmFsX2ludDsKPj4+ICAgICB2b2lkICpzaXZh bF9wdHI7Cj4+PiAgIH0gc2lndmFsX3Q7Cj4+PiAjIDU4ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdp bmZvLmgiIDMgNAo+Pj4gdHlwZWRlZiBfX2Nsb2NrX3QgX19zaWdjaGxkX2Nsb2NrX3Q7Cj4+Pgo+ Pj4KPj4+Cj4+PiB0eXBlZGVmIHN0cnVjdAo+Pj4gICB7Cj4+PiAgICAgaW50IHNpX3NpZ25vOwo+ Pj4gICAgIGludCBzaV9lcnJubzsKPj4+Cj4+PiAgICAgaW50IHNpX2NvZGU7Cj4+Pgo+Pj4gICAg IHVuaW9uCj4+PiAgICAgICB7Cj4+PiAgaW50IF9wYWRbKCgxMjggLyBzaXplb2YgKGludCkpIC0g MyldOwo+Pj4KPj4+Cj4+PiAgc3RydWN0Cj4+PiAgICB7Cj4+PiAgICAgIF9fcGlkX3Qgc2lfcGlk Owo+Pj4gICAgICBfX3VpZF90IHNpX3VpZDsKPj4+ICAgIH0gX2tpbGw7Cj4+Pgo+Pj4KPj4+ICBz dHJ1Y3QKPj4+ICAgIHsKPj4+ICAgICAgaW50IHNpX3RpZDsKPj4+ICAgICAgaW50IHNpX292ZXJy dW47Cj4+PiAgICAgIHNpZ3ZhbF90IHNpX3NpZ3ZhbDsKPj4+ICAgIH0gX3RpbWVyOwo+Pj4KPj4+ Cj4+PiAgc3RydWN0Cj4+PiAgICB7Cj4+PiAgICAgIF9fcGlkX3Qgc2lfcGlkOwo+Pj4gICAgICBf X3VpZF90IHNpX3VpZDsKPj4+ICAgICAgc2lndmFsX3Qgc2lfc2lndmFsOwo+Pj4gICAgfSBfcnQ7 Cj4+Pgo+Pj4KPj4+ICBzdHJ1Y3QKPj4+ICAgIHsKPj4+ICAgICAgX19waWRfdCBzaV9waWQ7Cj4+ PiAgICAgIF9fdWlkX3Qgc2lfdWlkOwo+Pj4gICAgICBpbnQgc2lfc3RhdHVzOwo+Pj4gICAgICBf X3NpZ2NobGRfY2xvY2tfdCBzaV91dGltZTsKPj4+ICAgICAgX19zaWdjaGxkX2Nsb2NrX3Qgc2lf c3RpbWU7Cj4+PiAgICB9IF9zaWdjaGxkOwo+Pj4KPj4+Cj4+PiAgc3RydWN0Cj4+PiAgICB7Cj4+ PiAgICAgIHZvaWQgKnNpX2FkZHI7Cj4+PiAgICAgIHNob3J0IGludCBzaV9hZGRyX2xzYjsKPj4+ ICAgICAgc3RydWN0Cj4+PiAgICAgICAgewo+Pj4gICB2b2lkICpfbG93ZXI7Cj4+PiAgIHZvaWQg Kl91cHBlcjsKPj4+ICAgICAgICB9IHNpX2FkZHJfYm5kOwo+Pj4gICAgfSBfc2lnZmF1bHQ7Cj4+ Pgo+Pj4KPj4+ICBzdHJ1Y3QKPj4+ICAgIHsKPj4+ICAgICAgbG9uZyBpbnQgc2lfYmFuZDsKPj4+ ICAgICAgaW50IHNpX2ZkOwo+Pj4gICAgfSBfc2lncG9sbDsKPj4+Cj4+Pgo+Pj4gIHN0cnVjdAo+ Pj4gICAgewo+Pj4gICAgICB2b2lkICpfY2FsbF9hZGRyOwo+Pj4gICAgICBpbnQgX3N5c2NhbGw7 Cj4+PiAgICAgIHVuc2lnbmVkIGludCBfYXJjaDsKPj4+ICAgIH0gX3NpZ3N5czsKPj4+ICAgICAg IH0gX3NpZmllbGRzOwo+Pj4gICB9IHNpZ2luZm9fdCA7Cj4+PiAjIDE2MCAiL3Vzci9pbmNsdWRl L2JpdHMvc2lnaW5mby5oIiAzIDQKPj4+IGVudW0KPj4+IHsKPj4+ICAgU0lfQVNZTkNOTCA9IC02 MCwKPj4+Cj4+PiAgIFNJX1RLSUxMID0gLTYsCj4+Pgo+Pj4gICBTSV9TSUdJTywKPj4+Cj4+PiAg IFNJX0FTWU5DSU8sCj4+Pgo+Pj4gICBTSV9NRVNHUSwKPj4+Cj4+PiAgIFNJX1RJTUVSLAo+Pj4K Pj4+ICAgU0lfUVVFVUUsCj4+Pgo+Pj4gICBTSV9VU0VSLAo+Pj4KPj4+ICAgU0lfS0VSTkVMID0g MHg4MAo+Pj4KPj4+IH07Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZW51bQo+Pj4gewo+Pj4gICBJTExf SUxMT1BDID0gMSwKPj4+Cj4+PiAgIElMTF9JTExPUE4sCj4+Pgo+Pj4gICBJTExfSUxMQURSLAo+ Pj4KPj4+ICAgSUxMX0lMTFRSUCwKPj4+Cj4+PiAgIElMTF9QUlZPUEMsCj4+Pgo+Pj4gICBJTExf UFJWUkVHLAo+Pj4KPj4+ICAgSUxMX0NPUFJPQywKPj4+Cj4+PiAgIElMTF9CQURTVEsKPj4+Cj4+ PiB9Owo+Pj4KPj4+Cj4+PiBlbnVtCj4+PiB7Cj4+PiAgIEZQRV9JTlRESVYgPSAxLAo+Pj4KPj4+ ICAgRlBFX0lOVE9WRiwKPj4+Cj4+PiAgIEZQRV9GTFRESVYsCj4+Pgo+Pj4gICBGUEVfRkxUT1ZG LAo+Pj4KPj4+ICAgRlBFX0ZMVFVORCwKPj4+Cj4+PiAgIEZQRV9GTFRSRVMsCj4+Pgo+Pj4gICBG UEVfRkxUSU5WLAo+Pj4KPj4+ICAgRlBFX0ZMVFNVQgo+Pj4KPj4+IH07Cj4+Pgo+Pj4KPj4+IGVu dW0KPj4+IHsKPj4+ICAgU0VHVl9NQVBFUlIgPSAxLAo+Pj4KPj4+ICAgU0VHVl9BQ0NFUlIKPj4+ Cj4+PiB9Owo+Pj4KPj4+Cj4+PiBlbnVtCj4+PiB7Cj4+PiAgIEJVU19BRFJBTE4gPSAxLAo+Pj4K Pj4+ICAgQlVTX0FEUkVSUiwKPj4+Cj4+PiAgIEJVU19PQkpFUlIsCj4+Pgo+Pj4gICBCVVNfTUNF RVJSX0FSLAo+Pj4KPj4+ICAgQlVTX01DRUVSUl9BTwo+Pj4KPj4+IH07Cj4+PiAjIDI2NCAiL3Vz ci9pbmNsdWRlL2JpdHMvc2lnaW5mby5oIiAzIDQKPj4+IGVudW0KPj4+IHsKPj4+ICAgQ0xEX0VY SVRFRCA9IDEsCj4+Pgo+Pj4gICBDTERfS0lMTEVELAo+Pj4KPj4+ICAgQ0xEX0RVTVBFRCwKPj4+ Cj4+PiAgIENMRF9UUkFQUEVELAo+Pj4KPj4+ICAgQ0xEX1NUT1BQRUQsCj4+Pgo+Pj4gICBDTERf Q09OVElOVUVECj4+Pgo+Pj4gfTsKPj4+Cj4+Pgo+Pj4gZW51bQo+Pj4gewo+Pj4gICBQT0xMX0lO ID0gMSwKPj4+Cj4+PiAgIFBPTExfT1VULAo+Pj4KPj4+ICAgUE9MTF9NU0csCj4+Pgo+Pj4gICBQ T0xMX0VSUiwKPj4+Cj4+PiAgIFBPTExfUFJJLAo+Pj4KPj4+ICAgUE9MTF9IVVAKPj4+Cj4+PiB9 Owo+Pj4gIyAzMjAgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMyA0Cj4+PiB0eXBlZGVm IHN0cnVjdCBzaWdldmVudAo+Pj4gICB7Cj4+PiAgICAgc2lndmFsX3Qgc2lnZXZfdmFsdWU7Cj4+ PiAgICAgaW50IHNpZ2V2X3NpZ25vOwo+Pj4gICAgIGludCBzaWdldl9ub3RpZnk7Cj4+Pgo+Pj4g ICAgIHVuaW9uCj4+PiAgICAgICB7Cj4+PiAgaW50IF9wYWRbKCg2NCAvIHNpemVvZiAoaW50KSkg LSAzKV07Cj4+Pgo+Pj4KPj4+Cj4+PiAgX19waWRfdCBfdGlkOwo+Pj4KPj4+ICBzdHJ1Y3QKPj4+ ICAgIHsKPj4+ICAgICAgdm9pZCAoKl9mdW5jdGlvbikgKHNpZ3ZhbF90KTsKPj4+ICAgICAgcHRo cmVhZF9hdHRyX3QgKl9hdHRyaWJ1dGU7Cj4+PiAgICB9IF9zaWdldl90aHJlYWQ7Cj4+PiAgICAg ICB9IF9zaWdldl91bjsKPj4+ICAgfSBzaWdldmVudF90Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZW51bQo+Pj4gewo+Pj4gICBTSUdFVl9TSUdOQUwgPSAwLAo+Pj4KPj4+ICAgU0lHRVZf Tk9ORSwKPj4+Cj4+PiAgIFNJR0VWX1RIUkVBRCwKPj4+Cj4+Pgo+Pj4gICBTSUdFVl9USFJFQURf SUQgPSA0Cj4+Pgo+Pj4gfTsKPj4+ICMgODEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQK Pj4+Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIHZvaWQgKCpfX3NpZ2hhbmRsZXJfdCkgKGludCk7 Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIF9fc2lnaGFuZGxlcl90IF9fc3lzdl9zaWduYWwg KGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQo+Pj4gICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gIyAxMDAgIi91c3IvaW5jbHVkZS9z aWduYWwuaCIgMyA0Cj4+Pgo+Pj4KPj4+IGV4dGVybiBfX3NpZ2hhbmRsZXJfdCBzaWduYWwgKGlu dCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gIyAxMTQgIi91c3IvaW5jbHVkZS9zaWdu YWwuaCIgMyA0Cj4+Pgo+Pj4gIyAxMjcgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0Cj4+PiBl eHRlcm4gaW50IGtpbGwgKF9fcGlkX3QgX19waWQsIGludCBfX3NpZykgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4 dGVybiBpbnQga2lsbHBnIChfX3BpZF90IF9fcGdycCwgaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBp bnQgcmFpc2UgKGludCBfX3NpZykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gX19zaWdoYW5kbGVyX3Qgc3NpZ25hbCAo aW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIpCj4+PiAgICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiBleHRlcm4gaW50IGdzaWduYWwgKGlu dCBfX3NpZykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBwc2lnbmFsIChpbnQgX19zaWcsIGNvbnN0IGNoYXIg Kl9fcyk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkIHBzaWdpbmZvIChjb25zdCBzaWdpbmZvX3Qg Kl9fcGluZm8sIGNvbnN0IGNoYXIgKl9fcyk7Cj4+PiAjIDE4NyAiL3Vzci9pbmNsdWRlL3NpZ25h bC5oIiAzIDQKPj4+IGV4dGVybiBpbnQgc2lnYmxvY2sgKGludCBfX21hc2spIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRl ZF9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgc2lnc2V0bWFzayAoaW50IF9fbWFzaykgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19k ZXByZWNhdGVkX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzaWdnZXRtYXNrICh2b2lkKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X2RlcHJlY2F0ZWRfXykpOwo+Pj4gIyAyMDcgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0Cj4+ PiB0eXBlZGVmIF9fc2lnaGFuZGxlcl90IHNpZ190Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBl eHRlcm4gaW50IHNpZ2VtcHR5c2V0IChzaWdzZXRfdCAqX19zZXQpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp Owo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNpZ2ZpbGxzZXQgKHNpZ3NldF90ICpfX3NldCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgc2lnYWRkc2V0IChzaWdzZXRf dCAqX19zZXQsIGludCBfX3NpZ25vKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4gZXh0 ZXJuIGludCBzaWdkZWxzZXQgKHNpZ3NldF90ICpfX3NldCwgaW50IF9fc2lnbm8pIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNpZ2lzbWVtYmVyIChjb25zdCBzaWdz ZXRfdCAqX19zZXQsIGludCBfX3NpZ25vKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+ ICMgMjQzICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUv Yml0cy9zaWdhY3Rpb24uaCIgMSAzIDQKPj4+ICMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2Fj dGlvbi5oIiAzIDQKPj4+IHN0cnVjdCBzaWdhY3Rpb24KPj4+ICAgewo+Pj4KPj4+Cj4+PiAgICAg dW5pb24KPj4+ICAgICAgIHsKPj4+Cj4+PiAgX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsKPj4+ Cj4+PiAgdm9pZCAoKnNhX3NpZ2FjdGlvbikgKGludCwgc2lnaW5mb190ICosIHZvaWQgKik7Cj4+ PiAgICAgICB9Cj4+PiAgICAgX19zaWdhY3Rpb25faGFuZGxlcjsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiAgICAgX19zaWdzZXRfdCBzYV9tYXNrOwo+Pj4KPj4+Cj4+PiAgICAgaW50 IHNhX2ZsYWdzOwo+Pj4KPj4+Cj4+PiAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSAodm9pZCk7Cj4+ PiAgIH07Cj4+PiAjIDI0NCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAo+Pj4KPj4+Cj4+ PiBleHRlcm4gaW50IHNpZ3Byb2NtYXNrIChpbnQgX19ob3csIGNvbnN0IHNpZ3NldF90ICpfX3Jl c3RyaWN0IF9fc2V0LAo+Pj4gICAgc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19vc2V0KSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIGludCBzaWdzdXNwZW5kIChjb25zdCBzaWdzZXRfdCAqX19zZXQpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzaWdh Y3Rpb24gKGludCBfX3NpZywgY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqX19yZXN0cmljdCBfX2Fj dCwKPj4+ICAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiAqX19yZXN0cmljdCBfX29hY3QpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBp bnQgc2lncGVuZGluZyAoc2lnc2V0X3QgKl9fc2V0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgc2lnd2FpdCAoY29uc3Qgc2lnc2V0X3Qg Kl9fcmVzdHJpY3QgX19zZXQsIGludCAqX19yZXN0cmljdCBfX3NpZykKPj4+ICAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIGludCBzaWd3YWl0aW5mbyAoY29uc3Qgc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19z ZXQsCj4+PiAgICBzaWdpbmZvX3QgKl9fcmVzdHJpY3QgX19pbmZvKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50 IHNpZ3RpbWVkd2FpdCAoY29uc3Qgc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zZXQsCj4+PiAgICAg c2lnaW5mb190ICpfX3Jlc3RyaWN0IF9faW5mbywKPj4+ICAgICBjb25zdCBzdHJ1Y3QgdGltZXNw ZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0KQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNpZ3F1ZXVlIChfX3BpZF90 IF9fcGlkLCBpbnQgX19zaWcsIGNvbnN0IHVuaW9uIHNpZ3ZhbCBfX3ZhbCkKPj4+ICAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgMzAxICIvdXNyL2lu Y2x1ZGUvc2lnbmFsLmgiIDMgNAo+Pj4gZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IF9zeXNfc2ln bGlzdFs2NV07Cj4+PiBleHRlcm4gY29uc3QgY2hhciAqY29uc3Qgc3lzX3NpZ2xpc3RbNjVdOwo+ Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDEgMyA0 Cj4+PiAjIDI5ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDMgNAo+Pj4gc3RydWN0 IF9mcHhfc3dfYnl0ZXMKPj4+IHsKPj4+ICAgX191aW50MzJfdCBtYWdpYzE7Cj4+PiAgIF9fdWlu dDMyX3QgZXh0ZW5kZWRfc2l6ZTsKPj4+ICAgX191aW50NjRfdCB4c3RhdGVfYnY7Cj4+PiAgIF9f dWludDMyX3QgeHN0YXRlX3NpemU7Cj4+PiAgIF9fdWludDMyX3QgcGFkZGluZ1s3XTsKPj4+IH07 Cj4+Pgo+Pj4gc3RydWN0IF9mcHJlZwo+Pj4gewo+Pj4gICB1bnNpZ25lZCBzaG9ydCBzaWduaWZp Y2FuZFs0XTsKPj4+ICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7Cj4+PiB9Owo+Pj4KPj4+IHN0 cnVjdCBfZnB4cmVnCj4+PiB7Cj4+PiAgIHVuc2lnbmVkIHNob3J0IHNpZ25pZmljYW5kWzRdOwo+ Pj4gICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKPj4+ICAgdW5zaWduZWQgc2hvcnQgcGFkZGlu Z1szXTsKPj4+IH07Cj4+Pgo+Pj4gc3RydWN0IF94bW1yZWcKPj4+IHsKPj4+ICAgX191aW50MzJf dCBlbGVtZW50WzRdOwo+Pj4gfTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gc3RydWN0IF9mcHN0 YXRlCj4+PiB7Cj4+Pgo+Pj4gICBfX3VpbnQzMl90IGN3Owo+Pj4gICBfX3VpbnQzMl90IHN3Owo+ Pj4gICBfX3VpbnQzMl90IHRhZzsKPj4+ICAgX191aW50MzJfdCBpcG9mZjsKPj4+ICAgX191aW50 MzJfdCBjc3NlbDsKPj4+ICAgX191aW50MzJfdCBkYXRhb2ZmOwo+Pj4gICBfX3VpbnQzMl90IGRh dGFzZWw7Cj4+PiAgIHN0cnVjdCBfZnByZWcgX3N0WzhdOwo+Pj4gICB1bnNpZ25lZCBzaG9ydCBz dGF0dXM7Cj4+PiAgIHVuc2lnbmVkIHNob3J0IG1hZ2ljOwo+Pj4KPj4+Cj4+PiAgIF9fdWludDMy X3QgX2Z4c3JfZW52WzZdOwo+Pj4gICBfX3VpbnQzMl90IG14Y3NyOwo+Pj4gICBfX3VpbnQzMl90 IHJlc2VydmVkOwo+Pj4gICBzdHJ1Y3QgX2ZweHJlZyBfZnhzcl9zdFs4XTsKPj4+ICAgc3RydWN0 IF94bW1yZWcgX3htbVs4XTsKPj4+ICAgX191aW50MzJfdCBwYWRkaW5nWzU2XTsKPj4+IH07Cj4+ PiAjIDkzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDMgNAo+Pj4gc3RydWN0IHNp Z2NvbnRleHQKPj4+IHsKPj4+ICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwo+Pj4gICB1bnNp Z25lZCBzaG9ydCBmcywgX19mc2g7Cj4+PiAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKPj4+ ICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwo+Pj4gICB1bnNpZ25lZCBsb25nIGVkaTsKPj4+ ICAgdW5zaWduZWQgbG9uZyBlc2k7Cj4+PiAgIHVuc2lnbmVkIGxvbmcgZWJwOwo+Pj4gICB1bnNp Z25lZCBsb25nIGVzcDsKPj4+ICAgdW5zaWduZWQgbG9uZyBlYng7Cj4+PiAgIHVuc2lnbmVkIGxv bmcgZWR4Owo+Pj4gICB1bnNpZ25lZCBsb25nIGVjeDsKPj4+ICAgdW5zaWduZWQgbG9uZyBlYXg7 Cj4+PiAgIHVuc2lnbmVkIGxvbmcgdHJhcG5vOwo+Pj4gICB1bnNpZ25lZCBsb25nIGVycjsKPj4+ ICAgdW5zaWduZWQgbG9uZyBlaXA7Cj4+PiAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKPj4+ ICAgdW5zaWduZWQgbG9uZyBlZmxhZ3M7Cj4+PiAgIHVuc2lnbmVkIGxvbmcgZXNwX2F0X3NpZ25h bDsKPj4+ICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwo+Pj4gICBzdHJ1Y3QgX2Zwc3RhdGUg KiBmcHN0YXRlOwo+Pj4gICB1bnNpZ25lZCBsb25nIG9sZG1hc2s7Cj4+PiAgIHVuc2lnbmVkIGxv bmcgY3IyOwo+Pj4gfTsKPj4+ICMgMTc1ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0Lmgi IDMgNAo+Pj4gc3RydWN0IF94c2F2ZV9oZHIKPj4+IHsKPj4+ICAgX191aW50NjRfdCB4c3RhdGVf YnY7Cj4+PiAgIF9fdWludDY0X3QgcmVzZXJ2ZWQxWzJdOwo+Pj4gICBfX3VpbnQ2NF90IHJlc2Vy dmVkMls1XTsKPj4+IH07Cj4+Pgo+Pj4gc3RydWN0IF95bW1oX3N0YXRlCj4+PiB7Cj4+PiAgIF9f dWludDMyX3QgeW1taF9zcGFjZVs2NF07Cj4+PiB9Owo+Pj4KPj4+IHN0cnVjdCBfeHN0YXRlCj4+ PiB7Cj4+PiAgIHN0cnVjdCBfZnBzdGF0ZSBmcHN0YXRlOwo+Pj4gICBzdHJ1Y3QgX3hzYXZlX2hk ciB4c3RhdGVfaGRyOwo+Pj4gICBzdHJ1Y3QgX3ltbWhfc3RhdGUgeW1taDsKPj4+IH07Cj4+PiAj IDMwNyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50 IHNpZ3JldHVybiAoc3RydWN0IHNpZ2NvbnRleHQgKl9fc2NwKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIv dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAz IDQKPj4+ICMgMzE3ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIGludCBzaWdpbnRlcnJ1cHQgKGludCBfX3NpZywgaW50IF9faW50ZXJydXB0 KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+ICMgMSAi L3Vzci9pbmNsdWRlL2JpdHMvc2lnc3RhY2suaCIgMSAzIDQKPj4+ICMgMjUgIi91c3IvaW5jbHVk ZS9iaXRzL3NpZ3N0YWNrLmgiIDMgNAo+Pj4gc3RydWN0IHNpZ3N0YWNrCj4+PiAgIHsKPj4+ICAg ICB2b2lkICpzc19zcDsKPj4+ICAgICBpbnQgc3Nfb25zdGFjazsKPj4+ICAgfTsKPj4+Cj4+Pgo+ Pj4KPj4+IGVudW0KPj4+IHsKPj4+ICAgU1NfT05TVEFDSyA9IDEsCj4+Pgo+Pj4gICBTU19ESVNB QkxFCj4+Pgo+Pj4gfTsKPj4+ICMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3N0YWNrLmgiIDMg NAo+Pj4gdHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sKPj4+ICAgewo+Pj4gICAgIHZvaWQgKnNz X3NwOwo+Pj4gICAgIGludCBzc19mbGFnczsKPj4+ICAgICBzaXplX3Qgc3Nfc2l6ZTsKPj4+ICAg fSBzdGFja190Owo+Pj4gIyAzMjQgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQKPj4+Cj4+ Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Vjb250ZXh0LmgiIDEgMyA0Cj4+PiAjIDIyICIv dXNyL2luY2x1ZGUvc3lzL3Vjb250ZXh0LmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvc2ln bmFsLmgiIDEgMyA0Cj4+PiAjIDIzICIvdXNyL2luY2x1ZGUvc3lzL3Vjb250ZXh0LmgiIDIgMyA0 Cj4+PiAjIDE0NiAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzIDQKPj4+IHR5cGVkZWYg aW50IGdyZWdfdDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gdHlwZWRlZiBncmVnX3QgZ3JlZ3Nl dF90WzE5XTsKPj4+ICMgMjAwICIvdXNyL2luY2x1ZGUvc3lzL3Vjb250ZXh0LmgiIDMgNAo+Pj4g c3RydWN0IF9saWJjX2ZwcmVnCj4+PiB7Cj4+PiAgIHVuc2lnbmVkIHNob3J0IGludCBzaWduaWZp Y2FuZFs0XTsKPj4+ICAgdW5zaWduZWQgc2hvcnQgaW50IGV4cG9uZW50Owo+Pj4gfTsKPj4+Cj4+ PiBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZQo+Pj4gewo+Pj4gICB1bnNpZ25lZCBsb25nIGludCBjdzsK Pj4+ICAgdW5zaWduZWQgbG9uZyBpbnQgc3c7Cj4+PiAgIHVuc2lnbmVkIGxvbmcgaW50IHRhZzsK Pj4+ICAgdW5zaWduZWQgbG9uZyBpbnQgaXBvZmY7Cj4+PiAgIHVuc2lnbmVkIGxvbmcgaW50IGNz c2VsOwo+Pj4gICB1bnNpZ25lZCBsb25nIGludCBkYXRhb2ZmOwo+Pj4gICB1bnNpZ25lZCBsb25n IGludCBkYXRhc2VsOwo+Pj4gICBzdHJ1Y3QgX2xpYmNfZnByZWcgX3N0WzhdOwo+Pj4gICB1bnNp Z25lZCBsb25nIGludCBzdGF0dXM7Cj4+PiB9Owo+Pj4KPj4+Cj4+PiB0eXBlZGVmIHN0cnVjdCBf bGliY19mcHN0YXRlICpmcHJlZ3NldF90Owo+Pj4KPj4+Cj4+PiB0eXBlZGVmIHN0cnVjdAo+Pj4g ICB7Cj4+PiAgICAgZ3JlZ3NldF90IGdyZWdzOwo+Pj4KPj4+Cj4+PiAgICAgZnByZWdzZXRfdCBm cHJlZ3M7Cj4+PiAgICAgdW5zaWduZWQgbG9uZyBpbnQgb2xkbWFzazsKPj4+ICAgICB1bnNpZ25l ZCBsb25nIGludCBjcjI7Cj4+PiAgIH0gbWNvbnRleHRfdDsKPj4+Cj4+Pgo+Pj4gdHlwZWRlZiBz dHJ1Y3QgdWNvbnRleHQKPj4+ICAgewo+Pj4gICAgIHVuc2lnbmVkIGxvbmcgaW50IHVjX2ZsYWdz Owo+Pj4gICAgIHN0cnVjdCB1Y29udGV4dCAqdWNfbGluazsKPj4+ICAgICBzdGFja190IHVjX3N0 YWNrOwo+Pj4gICAgIG1jb250ZXh0X3QgdWNfbWNvbnRleHQ7Cj4+PiAgICAgX19zaWdzZXRfdCB1 Y19zaWdtYXNrOwo+Pj4gICAgIHN0cnVjdCBfbGliY19mcHN0YXRlIF9fZnByZWdzX21lbTsKPj4+ ICAgfSB1Y29udGV4dF90Owo+Pj4gIyAzMjcgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQK Pj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzaWdzdGFjayAoc3RydWN0IHNpZ3N0 YWNrICpfX3NzLCBzdHJ1Y3Qgc2lnc3RhY2sgKl9fb3NzKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRf XykpOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzaWdhbHRzdGFjayAoY29uc3Qgc3RydWN0 IHNpZ2FsdHN0YWNrICpfX3Jlc3RyaWN0IF9fc3MsCj4+PiAgICBzdHJ1Y3Qgc2lnYWx0c3RhY2sg Kl9fcmVzdHJpY3QgX19vc3MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+PiAjIDM2MiAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKPj4+ICMgMSAiL3Vzci9p bmNsdWRlL2JpdHMvc2lndGhyZWFkLmgiIDEgMyA0Cj4+PiAjIDMwICIvdXNyL2luY2x1ZGUvYml0 cy9zaWd0aHJlYWQuaCIgMyA0Cj4+PiBleHRlcm4gaW50IHB0aHJlYWRfc2lnbWFzayAoaW50IF9f aG93LAo+Pj4gICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19uZXdtYXNrLAo+ Pj4gICAgICAgIF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19vbGRtYXNrKV9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgcHRocmVh ZF9raWxsIChwdGhyZWFkX3QgX190aHJlYWRpZCwgaW50IF9fc2lnbm8pIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiAjIDM2MyAiL3Vzci9pbmNsdWRlL3NpZ25h bC5oIiAyIDMgNAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBfX2xpYmNf Y3VycmVudF9zaWdydG1pbiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4+Cj4+PiBleHRlcm4gaW50IF9fbGliY19jdXJyZW50X3NpZ3J0bWF4ICh2b2lk KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+ICMgNDIgIm1hY2hpbmUuYyIgMgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIg MSAzIDQKPj4+ICMgMzEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDEgMyA0Cj4+PiAjIDI0ICIvdXNy L2luY2x1ZGUvYml0cy9lcnJuby5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vy cm5vLmgiIDEgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMSAzIDQKPj4+ ICMgMSAiL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmgiIDEgMyA0Cj4+Pgo+Pj4KPj4+ Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmgiIDEgMyA0Cj4+ PiAjIDUgIi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIiAyIDMgNAo+Pj4gIyAxICIv dXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDIgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9saW51 eC9lcnJuby5oIiAyIDMgNAo+Pj4gIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAz IDQKPj4+ICMgNTAgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMgNAo+Pj4gZXh0ZXJuIGlu dCAqX19lcnJub19sb2NhdGlvbiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cj4+PiAjIDM2ICIvdXNyL2lu Y2x1ZGUvZXJybm8uaCIgMiAzIDQKPj4+ICMgNTggIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzIDQK Pj4+Cj4+PiAjIDQzICJtYWNoaW5lLmMiIDIKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgi IDEgMyA0Cj4+PiAjIDI4ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAxIDMgNAo+ Pj4gIyAzNSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMyA0Cj4+PiBzdHJ1Y3QgZmxvY2sK Pj4+ICAgewo+Pj4gICAgIHNob3J0IGludCBsX3R5cGU7Cj4+PiAgICAgc2hvcnQgaW50IGxfd2hl bmNlOwo+Pj4KPj4+ICAgICBfX29mZl90IGxfc3RhcnQ7Cj4+PiAgICAgX19vZmZfdCBsX2xlbjsK Pj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAgICAgX19waWRfdCBsX3BpZDsKPj4+ICAgfTsKPj4+ICMgNjEg Ii91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0 cy9mY250bC1saW51eC5oIiAxIDMgNAo+Pj4gIyAzNDUgIi91c3IvaW5jbHVkZS9iaXRzL2ZjbnRs LWxpbnV4LmgiIDMgNAo+Pj4KPj4+ICMgNDE5ICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC1saW51 eC5oIiAzIDQKPj4+Cj4+PiAjIDYxICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAyIDMgNAo+ Pj4gIyAzNiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIgMyA0Cj4+PiAjIDc2ICIvdXNyL2luY2x1 ZGUvZmNudGwuaCIgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0Cj4+PiAj IDc3ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2Jp dHMvc3RhdC5oIiAxIDMgNAo+Pj4gIyA0NiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAzIDQK Pj4+IHN0cnVjdCBzdGF0Cj4+PiAgIHsKPj4+ICAgICBfX2Rldl90IHN0X2RldjsKPj4+Cj4+PiAg ICAgdW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMTsKPj4+Cj4+Pgo+Pj4gICAgIF9faW5vX3Qgc3Rf aW5vOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ICAgICBfX21vZGVfdCBzdF9tb2RlOwo+Pj4gICAgIF9f bmxpbmtfdCBzdF9ubGluazsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAgICAgX191aWRfdCBzdF91aWQ7 Cj4+PiAgICAgX19naWRfdCBzdF9naWQ7Cj4+Pgo+Pj4KPj4+Cj4+PiAgICAgX19kZXZfdCBzdF9y ZGV2Owo+Pj4KPj4+ICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwo+Pj4KPj4+Cj4+PiAg ICAgX19vZmZfdCBzdF9zaXplOwo+Pj4KPj4+Cj4+Pgo+Pj4gICAgIF9fYmxrc2l6ZV90IHN0X2Js a3NpemU7Cj4+Pgo+Pj4gICAgIF9fYmxrY250X3Qgc3RfYmxvY2tzOwo+Pj4gIyA5MSAiL3Vzci9p bmNsdWRlL2JpdHMvc3RhdC5oIiAzIDQKPj4+ICAgICBzdHJ1Y3QgdGltZXNwZWMgc3RfYXRpbTsK Pj4+ICAgICBzdHJ1Y3QgdGltZXNwZWMgc3RfbXRpbTsKPj4+ICAgICBzdHJ1Y3QgdGltZXNwZWMg c3RfY3RpbTsKPj4+ICMgMTA5ICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDMgNAo+Pj4gICAg IHVuc2lnbmVkIGxvbmcgaW50IF9fZ2xpYmNfcmVzZXJ2ZWQ0Owo+Pj4gICAgIHVuc2lnbmVkIGxv bmcgaW50IF9fZ2xpYmNfcmVzZXJ2ZWQ1Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ICAgfTsKPj4+ICMg NzggIi91c3IvaW5jbHVkZS9mY250bC5oIiAyIDMgNAo+Pj4gIyAxNjkgIi91c3IvaW5jbHVkZS9m Y250bC5oIiAzIDQKPj4+IGV4dGVybiBpbnQgZmNudGwgKGludCBfX2ZkLCBpbnQgX19jbWQsIC4u Lik7Cj4+PiAjIDE3OSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBv cGVuIChjb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKTsKPj4+ICMgMjAzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0 Cj4+PiBleHRlcm4gaW50IG9wZW5hdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fZmlsZSwgaW50 IF9fb2ZsYWcsIC4uLikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkp Owo+Pj4gIyAyMjUgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKPj4+IGV4dGVybiBpbnQgY3Jl YXQgKGNvbnN0IGNoYXIgKl9fZmlsZSwgbW9kZV90IF9fbW9kZSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpOwo+Pj4gIyAyNTQgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKPj4+ IGV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIG9mZl90IF9fbGVuKTsKPj4+ ICMgMjcxICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0Cj4+PiBleHRlcm4gaW50IHBvc2l4X2Zh ZHZpc2UgKGludCBfX2ZkLCBvZmZfdCBfX29mZnNldCwgb2ZmX3QgX19sZW4sCj4+PiAgICAgIGlu dCBfX2FkdmlzZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ ICMgMjkzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0Cj4+PiBleHRlcm4gaW50IHBvc2l4X2Zh bGxvY2F0ZSAoaW50IF9fZmQsIG9mZl90IF9fb2Zmc2V0LCBvZmZfdCBfX2xlbik7Cj4+PiAjIDMx NSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNAo+Pj4KPj4+ICMgNDQgIm1hY2hpbmUuYyIgMgo+ Pj4gIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMSAzIDQKPj4+ICMgMjggIi91c3IvaW5jbHVk ZS9jdHlwZS5oIiAzIDQKPj4+Cj4+PiAjIDQ2ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0Cj4+ PiBlbnVtCj4+PiB7Cj4+PiAgIF9JU3VwcGVyID0gKCgwKSA8IDggPyAoKDEgPDwgKDApKSA8PCA4 KSA6ICgoMSA8PCAoMCkpID4+IDgpKSwKPj4+ICAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/ICgoMSA8 PCAoMSkpIDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAo+Pj4gICBfSVNhbHBoYSA9ICgoMikg PCA4ID8gKCgxIDw8ICgyKSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSksCj4+PiAgIF9JU2Rp Z2l0ID0gKCgzKSA8IDggPyAoKDEgPDwgKDMpKSA8PCA4KSA6ICgoMSA8PCAoMykpID4+IDgpKSwK Pj4+ICAgX0lTeGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAo NCkpID4+IDgpKSwKPj4+ICAgX0lTc3BhY2UgPSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgp IDogKCgxIDw8ICg1KSkgPj4gOCkpLAo+Pj4gICBfSVNwcmludCA9ICgoNikgPCA4ID8gKCgxIDw8 ICg2KSkgPDwgOCkgOiAoKDEgPDwgKDYpKSA+PiA4KSksCj4+PiAgIF9JU2dyYXBoID0gKCg3KSA8 IDggPyAoKDEgPDwgKDcpKSA8PCA4KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKPj4+ICAgX0lTYmxh bmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8IDgpIDogKCgxIDw8ICg4KSkgPj4gOCkpLAo+ Pj4gICBfSVNjbnRybCA9ICgoOSkgPCA4ID8gKCgxIDw8ICg5KSkgPDwgOCkgOiAoKDEgPDwgKDkp KSA+PiA4KSksCj4+PiAgIF9JU3B1bmN0ID0gKCgxMCkgPCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgp IDogKCgxIDw8ICgxMCkpID4+IDgpKSwKPj4+ICAgX0lTYWxudW0gPSAoKDExKSA8IDggPyAoKDEg PDwgKDExKSkgPDwgOCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCj4+PiB9Owo+Pj4gIyA3OSAiL3Vz ci9pbmNsdWRlL2N0eXBlLmgiIDMgNAo+Pj4gZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGlu dCAqKl9fY3R5cGVfYl9sb2MgKHZvaWQpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwo+Pj4gZXh0ZXJu IGNvbnN0IF9faW50MzJfdCAqKl9fY3R5cGVfdG9sb3dlcl9sb2MgKHZvaWQpCj4+PiAgICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwo+Pj4gZXh0ZXJuIGNvbnN0IF9faW50MzJfdCAqKl9fY3R5cGVfdG91cHBlcl9s b2MgKHZvaWQpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwo+Pj4gIyAxMDQgIi91c3IvaW5jbHVkZS9j dHlwZS5oIiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgaXNhbG51 bSAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gZXh0 ZXJuIGludCBpc2FscGhhIChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7Cj4+PiBleHRlcm4gaW50IGlzY250cmwgKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4+IGV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gZXh0ZXJuIGludCBpc2xvd2Vy IChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiBleHRl cm4gaW50IGlzZ3JhcGggKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKPj4+IGV4dGVybiBpbnQgaXNwcmludCAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwo+Pj4gZXh0ZXJuIGludCBpc3B1bmN0IChpbnQpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiBleHRlcm4gaW50IGlzc3BhY2Ug KGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+IGV4dGVy biBpbnQgaXN1cHBlciAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwo+Pj4gZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCB0b2xvd2VyIChp bnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+ Cj4+PiBleHRlcm4gaW50IHRvdXBwZXIgKGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4 dGVybiBpbnQgaXNibGFuayAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pj4KPj4+Cj4+PiAjIDE1MCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNAo+Pj4g ZXh0ZXJuIGludCBpc2FzY2lpIChpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCB0b2FzY2lpIChpbnQgX19j KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwo+Pj4gZXh0ZXJuIGludCBfdG9sb3dlciAoaW50KSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gIyAyNTcgIi91c3IvaW5jbHVkZS9jdHlw ZS5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzIDQKPj4+ICMgMjcg Ii91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDMgNAo+Pj4gdHlwZWRlZiBzdHJ1Y3QgX19sb2NhbGVf c3RydWN0Cj4+PiB7Cj4+Pgo+Pj4gICBzdHJ1Y3QgX19sb2NhbGVfZGF0YSAqX19sb2NhbGVzWzEz XTsKPj4+Cj4+Pgo+Pj4gICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKPj4+ ICAgY29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7Cj4+PiAgIGNvbnN0IGludCAqX19jdHlwZV90 b3VwcGVyOwo+Pj4KPj4+Cj4+PiAgIGNvbnN0IGNoYXIgKl9fbmFtZXNbMTNdOwo+Pj4gfSAqX19s b2NhbGVfdDsKPj4+Cj4+Pgo+Pj4gdHlwZWRlZiBfX2xvY2FsZV90IGxvY2FsZV90Owo+Pj4gIyAy NTggIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMgNAo+Pj4gIyAyNzEgIi91c3IvaW5jbHVkZS9j dHlwZS5oIiAzIDQKPj4+IGV4dGVybiBpbnQgaXNhbG51bV9sIChpbnQsIF9fbG9jYWxlX3QpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiBleHRlcm4gaW50IGlz YWxwaGFfbCAoaW50LCBfX2xvY2FsZV90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pj4gZXh0ZXJuIGludCBpc2NudHJsX2wgKGludCwgX19sb2NhbGVfdCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+IGV4dGVybiBpbnQgaXNk aWdpdF9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7Cj4+PiBleHRlcm4gaW50IGlzbG93ZXJfbCAoaW50LCBfX2xvY2FsZV90KSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gZXh0ZXJuIGludCBpc2dy YXBoX2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4+IGV4dGVybiBpbnQgaXNwcmludF9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiBleHRlcm4gaW50IGlzcHVu Y3RfbCAoaW50LCBfX2xvY2FsZV90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pj4gZXh0ZXJuIGludCBpc3NwYWNlX2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+IGV4dGVybiBpbnQgaXN1cHBl cl9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7Cj4+PiBleHRlcm4gaW50IGlzeGRpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+PiBleHRlcm4gaW50IGlz YmxhbmtfbCAoaW50LCBfX2xvY2FsZV90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9f YywgX19sb2NhbGVfdCBfX2wpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+PiBleHRlcm4gaW50IHRvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVy biBpbnQgX190b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gZXh0ZXJuIGludCB0b3VwcGVyX2wgKGlu dCBfX2MsIF9fbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pj4gIyAzNDcgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKPj4+Cj4+PiAjIDQ1 ICJtYWNoaW5lLmMiIDIKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMgNAo+Pj4g IyAyNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4g IyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYu aCIgMSAzIDQKPj4+ICMgMzMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKPj4+Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQg Kl9fcmVzdHJpY3QgX19kZXN0LCBjb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAo+Pj4gICAg ICAgIHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+Cj4+PiBleHRlcm4g dm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBjb25zdCB2b2lkICpfX3NyYywgc2l6ZV90IF9f bikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0 IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCj4+PiAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24p Cj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBl eHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IG1lbWNtcCAoY29uc3Qgdm9pZCAq X19zMSwgY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKPj4+ICAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+PiAjIDkyICIvdXNyL2luY2x1 ZGUvc3RyaW5nLmgiIDMgNAo+Pj4gZXh0ZXJuIHZvaWQgKm1lbWNociAoY29uc3Qgdm9pZCAqX19z LCBpbnQgX19jLCBzaXplX3QgX19uKQo+Pj4gICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+ICMgMTIzICIvdXNyL2luY2x1ZGUvc3Ry aW5nLmgiIDMgNAo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3Ry aWN0IF9fZGVzdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKPj4+ICAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEsIDIpKSk7Cj4+Pgo+Pj4gZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVz dHJpY3QgX19kZXN0LAo+Pj4gICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBz aXplX3QgX19uKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4+Cj4+Pgo+Pj4gZXh0 ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19zcmMpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+IGV4 dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgY29uc3QgY2hhciAq X19yZXN0cmljdCBfX3NyYywKPj4+ICAgICAgICAgc2l6ZV90IF9fbikgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDIpKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgc3RyY21wIChjb25zdCBjaGFyICpfX3MxLCBj b25zdCBjaGFyICpfX3MyKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKPj4+Cj4+PiBleHRlcm4gaW50IHN0cm5jbXAgKGNvbnN0IGNoYXIg Kl9fczEsIGNvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCj4+PiAgICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+Cj4+PiBleHRlcm4g aW50IHN0cmNvbGwgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9fczIpCj4+PiAgICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+ IGV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCj4+PiAgICAg ICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQo+Pj4gICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMikpKTsKPj4+Cj4+PiAjIDE2MiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAz IDQKPj4+IGV4dGVybiBpbnQgc3RyY29sbF9sIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFy ICpfX3MyLCBfX2xvY2FsZV90IF9fbCkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDIsIDMpKSk7Cj4+Pgo+Pj4gZXh0ZXJuIHNpemVfdCBzdHJ4ZnJt X2wgKGNoYXIgKl9fZGVzdCwgY29uc3QgY2hhciAqX19zcmMsIHNpemVfdCBfX24sCj4+PiAgICAg X19sb2NhbGVfdCBfX2wpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ IGV4dGVybiBjaGFyICpzdHJkdXAgKGNvbnN0IGNoYXIgKl9fcykKPj4+ICAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2Nf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+IGV4dGVybiBjaGFyICpzdHJuZHVwIChjb25zdCBjaGFyICpfX3N0cmluZywgc2l6 ZV90IF9fbikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKTsKPj4+ICMgMjA2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAo+Pj4KPj4+ICMg MjMxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAo+Pj4gZXh0ZXJuIGNoYXIgKnN0cmNociAo Y29uc3QgY2hhciAqX19zLCBpbnQgX19jKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+ICMgMjU4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi IDMgNAo+Pj4gZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykK Pj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+ Pgo+Pj4KPj4+ICMgMjc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAo+Pj4KPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChjb25zdCBjaGFyICpfX3MsIGNvbnN0IGNoYXIgKl9f cmVqZWN0KQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSwgMikpKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHNpemVfdCBzdHJzcG4gKGNvbnN0IGNoYXIgKl9f cywgY29uc3QgY2hhciAqX19hY2NlcHQpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4gIyAzMTAgIi91c3IvaW5jbHVkZS9zdHJpbmcu aCIgMyA0Cj4+PiBleHRlcm4gY2hhciAqc3RycGJyayAoY29uc3QgY2hhciAqX19zLCBjb25zdCBj aGFyICpfX2FjY2VwdCkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEsIDIpKSk7Cj4+PiAjIDMzNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKPj4+ IGV4dGVybiBjaGFyICpzdHJzdHIgKGNvbnN0IGNoYXIgKl9faGF5c3RhY2ssIGNvbnN0IGNoYXIg Kl9fbmVlZGxlKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSwgMikpKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqc3RydG9rIChjaGFy ICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQo+Pj4gICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMikpKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqX19z dHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCj4+PiAgICAgY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2RlbGltLAo+Pj4gICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpCj4+PiAg ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpOwo+Pj4KPj4+IGV4dGVybiBjaGFyICpzdHJ0b2tfciAo Y2hhciAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKPj4+ ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpCj4+PiAgICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgyLCAzKSkpOwo+Pj4gIyAzOTIgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0Cj4+Pgo+ Pj4KPj4+IGV4dGVybiBzaXplX3Qgc3RybGVuIChjb25zdCBjaGFyICpfX3MpCj4+PiAgICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f cHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+Cj4+PiBleHRlcm4gc2l6ZV90IHN0cm5sZW4gKGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBz aXplX3QgX19tYXhsZW4pCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqc3RyZXJy b3IgKGludCBfX2Vycm51bSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKPj4+Cj4+PiAjIDQyMiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKPj4+IGV4dGVybiBp bnQgc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu KSBfX2FzbV9fICgiIiAiX194cGdfc3RyZXJyb3JfciIpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkKPj4+Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7Cj4+PiAjIDQ0MCAiL3Vzci9pbmNsdWRlL3N0cmlu Zy5oIiAzIDQKPj4+IGV4dGVybiBjaGFyICpzdHJlcnJvcl9sIChpbnQgX19lcnJudW0sIF9fbG9j YWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVf dCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgYmNv cHkgKGNvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pCj4+PiAgICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBiemVybyAodm9p ZCAqX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJu IGludCBiY21wIChjb25zdCB2b2lkICpfX3MxLCBjb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19u KQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikp KTsKPj4+ICMgNDg0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAo+Pj4gZXh0ZXJuIGNoYXIg KmluZGV4IChjb25zdCBjaGFyICpfX3MsIGludCBfX2MpCj4+PiAgICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4gIyA1MTIgIi91c3IvaW5jbHVkZS9z dHJpbmcuaCIgMyA0Cj4+PiBleHRlcm4gY2hhciAqcmluZGV4IChjb25zdCBjaGFyICpfX3MsIGlu dCBfX2MpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgZmZzIChpbnQgX19pKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsKPj4+ICMgNTI5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAo+Pj4gZXh0ZXJuIGlu dCBzdHJjYXNlY21wIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQo+Pj4gICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAoY29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hh ciAqX19zMiwgc2l6ZV90IF9fbikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEsIDIpKSk7Cj4+PiAjIDU1MiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAz IDQKPj4+IGV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwK Pj4+ICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCj4+PiAgICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBjaGFyICpzdHJzaWdu YWwgKGludCBfX3NpZykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK Pj4+Cj4+Pgo+Pj4gZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz dCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDIpKSk7Cj4+PiBleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwg Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3Ry aWN0IF9fZGVzdCwKPj4+ICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf X24pCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4gZXh0ZXJuIGNoYXIgKnN0cG5j cHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAo+Pj4gICAgICAgICBjb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK Pj4+ICMgNjU4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAo+Pj4KPj4+ICMgNDYgIm1hY2hp bmUuYyIgMgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAo+Pj4gIyAyOSAiL3Vz ci9pbmNsdWRlL3RpbWUuaCIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVm LmgiIDEgMyA0Cj4+PiAjIDM4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAo+Pj4KPj4+Cj4+ Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMyA0Cj4+PiAjIDQyICIvdXNy L2luY2x1ZGUvdGltZS5oIiAyIDMgNAo+Pj4gIyAxMzEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMg NAo+Pj4KPj4+Cj4+PiBzdHJ1Y3QgdG0KPj4+IHsKPj4+ICAgaW50IHRtX3NlYzsKPj4+ICAgaW50 IHRtX21pbjsKPj4+ICAgaW50IHRtX2hvdXI7Cj4+PiAgIGludCB0bV9tZGF5Owo+Pj4gICBpbnQg dG1fbW9uOwo+Pj4gICBpbnQgdG1feWVhcjsKPj4+ICAgaW50IHRtX3dkYXk7Cj4+PiAgIGludCB0 bV95ZGF5Owo+Pj4gICBpbnQgdG1faXNkc3Q7Cj4+Pgo+Pj4KPj4+ICAgbG9uZyBpbnQgdG1fZ210 b2ZmOwo+Pj4gICBjb25zdCBjaGFyICp0bV96b25lOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IH07Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHN0cnVjdCBpdGltZXJzcGVjCj4+PiAg IHsKPj4+ICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7Cj4+PiAgICAgc3RydWN0IHRp bWVzcGVjIGl0X3ZhbHVlOwo+Pj4gICB9Owo+Pj4KPj4+Cj4+PiBzdHJ1Y3Qgc2lnZXZlbnQ7Cj4+ PiAjIDE4NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4g Y2xvY2tfdCBjbG9jayAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3QgKl9fdGltZXIpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVy biBkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCBfX3RpbWUxLCB0aW1lX3QgX190aW1lMCkKPj4+ICAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiB0aW1lX3QgbWt0aW1lIChzdHJ1Y3Qg dG0gKl9fdHApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzaXplX3Qgc3RyZnRpbWUgKGNoYXIgKl9fcmVzdHJp Y3QgX19zLCBzaXplX3QgX19tYXhzaXplLAo+Pj4gICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBf X2Zvcm1hdCwKPj4+ICAgIGNvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+ICMgMjIzICIvdXNyL2lu Y2x1ZGUvdGltZS5oIiAzIDQKPj4+IGV4dGVybiBzaXplX3Qgc3RyZnRpbWVfbCAoY2hhciAqX19y ZXN0cmljdCBfX3MsIHNpemVfdCBfX21heHNpemUsCj4+PiAgICAgIGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19mb3JtYXQsCj4+PiAgICAgIGNvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Rw LAo+Pj4gICAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwo+Pj4gIyAyMzYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAo+Pj4KPj4+ Cj4+Pgo+Pj4gZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lIChjb25zdCB0aW1lX3QgKl9fdGltZXIp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+ PiBleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWUgKGNvbnN0IHRpbWVfdCAqX190aW1lcikgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgKGNvbnN0IHRpbWVfdCAqX19yZXN0cmlj dCBfX3RpbWVyLAo+Pj4gICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJu IHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IgKGNvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVy LAo+Pj4gICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRl cm4gY2hhciAqYXNjdGltZSAoY29uc3Qgc3RydWN0IHRtICpfX3RwKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqY3RpbWUg KGNvbnN0IHRpbWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqYXNj dGltZV9yIChjb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCwKPj4+ICAgIGNoYXIgKl9f cmVzdHJpY3QgX19idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 Cj4+Pgo+Pj4KPj4+IGV4dGVybiBjaGFyICpjdGltZV9yIChjb25zdCB0aW1lX3QgKl9fcmVzdHJp Y3QgX190aW1lciwKPj4+ICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRl cm4gY2hhciAqX190em5hbWVbMl07Cj4+PiBleHRlcm4gaW50IF9fZGF5bGlnaHQ7Cj4+PiBleHRl cm4gbG9uZyBpbnQgX190aW1lem9uZTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAq dHpuYW1lWzJdOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRl cm4gaW50IGRheWxpZ2h0Owo+Pj4gZXh0ZXJuIGxvbmcgaW50IHRpbWV6b25lOwo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHN0aW1lIChjb25zdCB0aW1lX3QgKl9fd2hlbikgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgMzE5ICIvdXNyL2lu Y2x1ZGUvdGltZS5oIiAzIDQKPj4+IGV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9f dHApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+ IGV4dGVybiB0aW1lX3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKl9fdHApIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgZHlzaXpl IChpbnQgX195ZWFyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4+ICMgMzM0ICIvdXNyL2luY2x1ZGUvdGltZS5o IiAzIDQKPj4+IGV4dGVybiBpbnQgbmFub3NsZWVwIChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9f cmVxdWVzdGVkX3RpbWUsCj4+PiAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW1haW5pbmcp Owo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBjbG9ja19nZXRyZXMgKGNsb2NraWRfdCBfX2Ns b2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGNsb2NrX2dldHRpbWUgKGNs b2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdHApIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgY2xvY2tf c2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX190 cCkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgY2xvY2tfbmFub3NsZWVwIChjbG9j a2lkX3QgX19jbG9ja19pZCwgaW50IF9fZmxhZ3MsCj4+PiAgICAgICAgY29uc3Qgc3RydWN0IHRp bWVzcGVjICpfX3JlcSwKPj4+ICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtKTsKPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIGludCBjbG9ja19nZXRjcHVjbG9ja2lkIChwaWRfdCBfX3BpZCwgY2xvY2tp ZF90ICpfX2Nsb2NrX2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3Qg X19jbG9ja19pZCwKPj4+ICAgICBzdHJ1Y3Qgc2lnZXZlbnQgKl9fcmVzdHJpY3QgX19ldnAsCj4+ PiAgICAgdGltZXJfdCAqX19yZXN0cmljdCBfX3RpbWVyaWQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgdGltZXJfZGVsZXRl ICh0aW1lcl90IF9fdGltZXJpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lICh0aW1lcl90IF9fdGlt ZXJpZCwgaW50IF9fZmxhZ3MsCj4+PiAgICAgIGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpfX3Jl c3RyaWN0IF9fdmFsdWUsCj4+PiAgICAgIHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9f b3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+ Cj4+PiBleHRlcm4gaW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3QgX190aW1lcmlkLCBzdHJ1Y3Qg aXRpbWVyc3BlYyAqX192YWx1ZSkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCB0aW1lcl9nZXRvdmVycnVuICh0 aW1lcl90IF9fdGltZXJpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCB0aW1lc3BlY19nZXQgKHN0cnVj dCB0aW1lc3BlYyAqX190cywgaW50IF9fYmFzZSkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 Cj4+PiAjIDQzMCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0Cj4+Pgo+Pj4gIyA0NyAibWFjaGlu ZS5jIiAyCj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzIDQKPj4+ICMg MTAyICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+Pgo+Pj4KPj4+ICMgMSAiL3Vzci9p bmNsdWRlL2JpdHMvc3RhdC5oIiAxIDMgNAo+Pj4gIyAxMDUgIi91c3IvaW5jbHVkZS9zeXMvc3Rh dC5oIiAyIDMgNAo+Pj4gIyAyMDggIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKPj4+IGV4 dGVybiBpbnQgc3RhdCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCj4+PiAgICBzdHJ1 Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+Pgo+Pj4K Pj4+Cj4+PiBleHRlcm4gaW50IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMikpKTsKPj4+ICMgMjM3ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0 Cj4+PiBleHRlcm4gaW50IGZzdGF0YXQgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fZmlsZSwKPj4+ICAgICAgIHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0IF9fYnVmLCBpbnQgX19m bGFnKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsKPj4+ICMgMjYyICIvdXNyL2luY2x1 ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+PiBleHRlcm4gaW50IGxzdGF0IChjb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fZmlsZSwKPj4+ICAgICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1ZikgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEsIDIpKSk7Cj4+PiAjIDI4MyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMg NAo+Pj4gZXh0ZXJuIGludCBjaG1vZCAoY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21v ZGUpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBl eHRlcm4gaW50IGxjaG1vZCAoY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpCj4+ PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQg ZmNobW9kIChpbnQgX19mZCwgX19tb2RlX3QgX19tb2RlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGZj aG1vZGF0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUsCj4+ PiAgICAgICAgaW50IF9fZmxhZykKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSkgOwo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIF9fbW9kZV90IHVtYXNrIChfX21vZGVfdCBfX21h c2spIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiAjIDMyMCAi L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBta2RpciAoY29uc3Qg Y2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IG1rZGlyYXQgKGludCBfX2ZkLCBj b25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkKPj4+ICAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDIpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IG1rbm9kIChjb25z dCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCBfX2RldikKPj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgbWtu b2RhdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAo+Pj4g ICAgICAgX19kZXZfdCBfX2RldikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+IGV4dGVybiBpbnQgbWtmaWZvIChjb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9f bW9kZSkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ IGV4dGVybiBpbnQgbWtmaWZvYXQgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3BhdGgsIF9fbW9k ZV90IF9fbW9kZSkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+IGV4dGVybiBpbnQgdXRpbWVuc2F0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19wYXRo LAo+Pj4gICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgX190aW1lc1syXSwKPj4+ICAgICAg ICAgaW50IF9fZmxhZ3MpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+IGV4dGVybiBpbnQgZnV0aW1lbnMgKGludCBfX2ZkLCBjb25zdCBzdHJ1Y3QgdGltZXNw ZWMgX190aW1lc1syXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK Pj4+ICMgMzk4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+PiBleHRlcm4gaW50IF9f ZnhzdGF0IChpbnQgX192ZXIsIGludCBfX2ZpbGRlcywgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYp Cj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwo+Pj4gZXh0ZXJuIGludCBfX3hzdGF0IChpbnQg X192ZXIsIGNvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCj4+PiAgICAgICBzdHJ1Y3Qgc3RhdCAqX19z dGF0X2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDIsIDMpKSk7Cj4+PiBleHRlcm4gaW50IF9fbHhzdGF0IChp bnQgX192ZXIsIGNvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCj4+PiAgICAgICAgc3RydWN0IHN0YXQg Kl9fc3RhdF9idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpOwo+Pj4gZXh0ZXJuIGludCBfX2Z4c3Rh dGF0IChpbnQgX192ZXIsIGludCBfX2ZpbGRlcywgY29uc3QgY2hhciAqX19maWxlbmFtZSwKPj4+ ICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmLCBpbnQgX19mbGFnKQo+Pj4gICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMywgNCkpKTsKPj4+ICMgNDQxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIg MyA0Cj4+PiBleHRlcm4gaW50IF9feG1rbm9kIChpbnQgX192ZXIsIGNvbnN0IGNoYXIgKl9fcGF0 aCwgX19tb2RlX3QgX19tb2RlLAo+Pj4gICAgICAgIF9fZGV2X3QgKl9fZGV2KSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMiwgNCkpKTsKPj4+Cj4+PiBleHRlcm4gaW50IF9feG1rbm9kYXQgKGludCBfX3ZlciwgaW50 IF9fZmQsIGNvbnN0IGNoYXIgKl9fcGF0aCwKPj4+ICAgICAgICAgIF9fbW9kZV90IF9fbW9kZSwg X19kZXZfdCAqX19kZXYpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA1KSkpOwo+Pj4gIyA1MzMg Ii91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKPj4+Cj4+PiAjIDQ5ICJtYWNoaW5lLmMiIDIK Pj4+Cj4+PiAjIDEgImdwX2NvbmZpZy5oIiAxCj4+PiAjIDMyNyAiZ3BfY29uZmlnLmgiCj4+PiAj IDEgImFyY2hfZGVwLmgiIDEKPj4+ICMgMzI4ICJncF9jb25maWcuaCIgMgo+Pj4gIyAxICJwbF9s b25nLmgiIDEKPj4+ICMgNDEgInBsX2xvbmcuaCIKPj4+ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYt cmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkaW50LmgiIDEgMyA0Cj4+PiAjIDkgIi91c3Iv bGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGludC5oIiAzIDQKPj4+ ICMgMSAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAxIDMgNAo+Pj4gIyAyNiAiL3Vzci9pbmNsdWRl L3N0ZGludC5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzIDQK Pj4+ICMgMjcgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNs dWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKPj4+ICMgMjggIi91c3IvaW5jbHVkZS9zdGRpbnQu aCIgMiAzIDQKPj4+ICMgNDggIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMyA0Cj4+PiB0eXBlZGVm IHVuc2lnbmVkIGNoYXIgdWludDhfdDsKPj4+IHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVp bnQxNl90Owo+Pj4KPj4+IHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90Owo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiBfX2V4dGVuc2lvbl9fCj4+PiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u ZyBpbnQgdWludDY0X3Q7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiB0eXBlZGVmIHNpZ25l ZCBjaGFyIGludF9sZWFzdDhfdDsKPj4+IHR5cGVkZWYgc2hvcnQgaW50IGludF9sZWFzdDE2X3Q7 Cj4+PiB0eXBlZGVmIGludCBpbnRfbGVhc3QzMl90Owo+Pj4KPj4+Cj4+Pgo+Pj4gX19leHRlbnNp b25fXwo+Pj4gdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9sZWFzdDY0X3Q7Cj4+Pgo+Pj4KPj4+ Cj4+PiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9sZWFzdDhfdDsKPj4+IHR5cGVkZWYgdW5z aWduZWQgc2hvcnQgaW50IHVpbnRfbGVhc3QxNl90Owo+Pj4gdHlwZWRlZiB1bnNpZ25lZCBpbnQg dWludF9sZWFzdDMyX3Q7Cj4+Pgo+Pj4KPj4+Cj4+PiBfX2V4dGVuc2lvbl9fCj4+PiB0eXBlZGVm IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWludF9sZWFzdDY0X3Q7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+Cj4+PiB0eXBlZGVmIHNpZ25lZCBjaGFyIGludF9mYXN0OF90Owo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+Cj4+PiB0eXBlZGVmIGludCBpbnRfZmFzdDE2X3Q7Cj4+PiB0eXBlZGVmIGludCBpbnRf ZmFzdDMyX3Q7Cj4+PiBfX2V4dGVuc2lvbl9fCj4+PiB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50 X2Zhc3Q2NF90Owo+Pj4KPj4+Cj4+Pgo+Pj4gdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfZmFz dDhfdDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9m YXN0MTZfdDsKPj4+IHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfZmFzdDMyX3Q7Cj4+PiBfX2V4 dGVuc2lvbl9fCj4+PiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWludF9mYXN0NjRf dDsKPj4+ICMgMTI1ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMgNAo+Pj4gdHlwZWRlZiBpbnQg aW50cHRyX3Q7Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRwdHJfdDsKPj4+ ICMgMTM3ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMgNAo+Pj4gX19leHRlbnNpb25fXwo+Pj4g dHlwZWRlZiBsb25nIGxvbmcgaW50IGludG1heF90Owo+Pj4gX19leHRlbnNpb25fXwo+Pj4gdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRtYXhfdDsKPj4+ICMgMTAgIi91c3IvbGli L2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGludC5oIiAyIDMgNAo+Pj4g IyA0MiAicGxfbG9uZy5oIiAyCj4+Pgo+Pj4gIyAxICJncF9jb25maWcuaCIgMQo+Pj4gIyA0NCAi cGxfbG9uZy5oIiAyCj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyA0NyAicGxfbG9uZy5oIgo+Pj4gdHlw ZWRlZiBpbnRwdHJfdCBQbExvbmc7Cj4+PiB0eXBlZGVmIHVpbnRwdHJfdCBQbFVMb25nOwo+Pj4K Pj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMSAzIDQKPj4+ICMgMzQg Ii91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKPj4+Cj4+PiAjIDM0ICIvdXNyL2luY2x1ZGUv aW50dHlwZXMuaCIgMyA0Cj4+PiB0eXBlZGVmIGxvbmcgaW50IF9fZ3djaGFyX3Q7Cj4+PiAjIDI2 NiAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMgNAo+Pj4KPj4+ICMgMjgwICIvdXNyL2luY2x1 ZGUvaW50dHlwZXMuaCIgMyA0Cj4+PiB0eXBlZGVmIHN0cnVjdAo+Pj4gICB7Cj4+PiAgICAgX19l eHRlbnNpb25fXyBsb25nIGxvbmcgaW50IHF1b3Q7Cj4+PiAgICAgX19leHRlbnNpb25fXyBsb25n IGxvbmcgaW50IHJlbTsKPj4+ICAgfSBpbWF4ZGl2X3Q7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ IGV4dGVybiBpbnRtYXhfdCBpbWF4YWJzIChpbnRtYXhfdCBfX24pIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwo+Pj4K Pj4+Cj4+PiBleHRlcm4gaW1heGRpdl90IGltYXhkaXYgKGludG1heF90IF9fbnVtZXIsIGludG1h eF90IF9fZGVub20pCj4+PiAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGlu dG1heF90IHN0cnRvaW1heCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCj4+PiAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHVpbnRtYXhfdCBz dHJ0b3VtYXggKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+Pj4gICAgICAgIGNoYXIg KiogX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludG1heF90IHdjc3RvaW1h eCAoY29uc3QgX19nd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCj4+PiAgICAgICBfX2d3Y2hh cl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKPj4+ICAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHVpbnRt YXhfdCB3Y3N0b3VtYXggKGNvbnN0IF9fZ3djaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAo+Pj4g ICAgICAgIF9fZ3djaGFyX3QgKiogX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKPj4+ ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgNDMy ICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMyA0Cj4+Pgo+Pj4gIyA1MyAicGxfbG9uZy5oIiAy Cj4+PiAjIDMyOSAiZ3BfY29uZmlnLmgiIDIKPj4+ICMgNTEgIm1hY2hpbmUuYyIgMgo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvcHdkLmgiIDEgMyA0Cj4+PiAj IDI3ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDMgNAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAjIDEg Ii91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAx IDMgNAo+Pj4gIyAzMyAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAyIDMgNAo+Pj4gIyA0OSAiL3Vzci9p bmNsdWRlL3B3ZC5oIiAzIDQKPj4+IHN0cnVjdCBwYXNzd2QKPj4+IHsKPj4+ICAgY2hhciAqcHdf bmFtZTsKPj4+ICAgY2hhciAqcHdfcGFzc3dkOwo+Pj4gICBfX3VpZF90IHB3X3VpZDsKPj4+ICAg X19naWRfdCBwd19naWQ7Cj4+PiAgIGNoYXIgKnB3X2dlY29zOwo+Pj4gICBjaGFyICpwd19kaXI7 Cj4+PiAgIGNoYXIgKnB3X3NoZWxsOwo+Pj4gfTsKPj4+ICMgNzIgIi91c3IvaW5jbHVkZS9wd2Qu aCIgMyA0Cj4+PiBleHRlcm4gdm9pZCBzZXRwd2VudCAodm9pZCk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+IGV4dGVybiB2b2lkIGVuZHB3ZW50ICh2b2lkKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmdldHB3ZW50ICh2b2lkKTsKPj4+ICMgOTQgIi91c3Iv aW5jbHVkZS9wd2QuaCIgMyA0Cj4+PiBleHRlcm4gc3RydWN0IHBhc3N3ZCAqZmdldHB3ZW50IChG SUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgcHV0cHdlbnQgKGNvbnN0IHN0cnVj dCBwYXNzd2QgKl9fcmVzdHJpY3QgX19wLAo+Pj4gICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19m KTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzdHJ1Y3QgcGFzc3dkICpnZXRw d3VpZCAoX191aWRfdCBfX3VpZCk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzdHJ1 Y3QgcGFzc3dkICpnZXRwd25hbSAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7Cj4+PiAjIDEzOSAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzIDQKPj4+ IGV4dGVybiBpbnQgZ2V0cHdlbnRfciAoc3RydWN0IHBhc3N3ZCAqX19yZXN0cmljdCBfX3Jlc3Vs dGJ1ZiwKPj4+ICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1 ZmxlbiwKPj4+ICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KQo+ Pj4gICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCA0KSkpOwo+Pj4K Pj4+Cj4+PiBleHRlcm4gaW50IGdldHB3dWlkX3IgKF9fdWlkX3QgX191aWQsCj4+PiAgICAgICAg ICBzdHJ1Y3QgcGFzc3dkICpfX3Jlc3RyaWN0IF9fcmVzdWx0YnVmLAo+Pj4gICAgICAgICAgY2hh ciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAo+Pj4gICAgICAgICAgc3Ry dWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpCj4+PiAgICAgICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDIsIDMsIDUpKSk7Cj4+Pgo+Pj4gZXh0ZXJuIGludCBnZXRwd25h bV9yIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4+ICAgICAgICAgIHN0cnVjdCBw YXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCj4+PiAgICAgICAgICBjaGFyICpfX3Jlc3Ry aWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCj4+PiAgICAgICAgICBzdHJ1Y3QgcGFzc3dk ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkKPj4+ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMiwgMywgNSkpKTsKPj4+ICMgMTY2ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDMg NAo+Pj4gZXh0ZXJuIGludCBmZ2V0cHdlbnRfciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwK Pj4+ICAgIHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCj4+PiAgICBjaGFy ICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCj4+PiAgICBzdHJ1Y3QgcGFz c3dkICoqX19yZXN0cmljdCBfX3Jlc3VsdCkKPj4+ICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSwgMiwgMywgNSkpKTsKPj4+ICMgMTg3ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDMgNAo+ Pj4KPj4+ICMgNTggIm1hY2hpbmUuYyIgMgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDEgMyA0Cj4+PiAjIDI3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+Pj4KPj4+ICMgMjA1 ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9w b3NpeF9vcHQuaCIgMSAzIDQKPj4+ICMgMjA2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMyA0 Cj4+Pgo+Pj4KPj4+Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAx IDMgNAo+Pj4gIyAyMiAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDMgNAo+Pj4g IyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMgNAo+Pj4gIyAyMyAiL3Vzci9p bmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDIgMyA0Cj4+PiAjIDIxMCAiL3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAyIDMgNAo+Pj4gIyAyMjkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+ PiAjIDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRl Zi5oIiAxIDMgNAo+Pj4gIyAyMzAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKPj4+ICMg MjU4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+Pj4gdHlwZWRlZiBfX3VzZWNvbmRzX3Qg dXNlY29uZHNfdDsKPj4+ICMgMjc3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+Pj4gdHlw ZWRlZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7Cj4+PiAjIDI5MCAiL3Vzci9pbmNsdWRlL3VuaXN0 ZC5oIiAzIDQKPj4+IGV4dGVybiBpbnQgYWNjZXNzIChjb25zdCBjaGFyICpfX25hbWUsIGludCBf X3R5cGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4gIyAzMDcgIi91c3IvaW5jbHVkZS91bmlzdGQu aCIgMyA0Cj4+PiBleHRlcm4gaW50IGZhY2Nlc3NhdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9f ZmlsZSwgaW50IF9fdHlwZSwgaW50IF9fZmxhZykKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSkg Owo+Pj4gIyAzMzcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+PiBleHRlcm4gX19vZmZf dCBsc2VlayAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgMzU2ICIvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQpOwo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50IF9fZmQsIHZvaWQg Kl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJu IHNzaXplX3Qgd3JpdGUgKGludCBfX2ZkLCBjb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbikg Owo+Pj4gIyAzNzkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+PiBleHRlcm4gc3NpemVf dCBwcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCj4+PiAgICAg ICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVy biBzc2l6ZV90IHB3cml0ZSAoaW50IF9fZmQsIGNvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19u LAo+Pj4gICAgICAgICAgX19vZmZfdCBfX29mZnNldCkgOwo+Pj4gIyA0MjAgIi91c3IvaW5jbHVk ZS91bmlzdGQuaCIgMyA0Cj4+PiBleHRlcm4gaW50IHBpcGUgKGludCBfX3BpcGVkZXNbMl0pIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pj4gIyA0MzUgIi91c3Iv aW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+PiBleHRlcm4gdW5zaWduZWQgaW50IGFsYXJtICh1bnNp Z25lZCBpbnQgX19zZWNvbmRzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwo+Pj4gIyA0NDcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+PiBleHRlcm4gdW5z aWduZWQgaW50IHNsZWVwICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKTsKPj4+Cj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gX191c2Vjb25kc190IHVhbGFybSAoX191c2Vjb25kc190 IF9fdmFsdWUsIF9fdXNlY29uZHNfdCBfX2ludGVydmFsKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4g ZXh0ZXJuIGludCB1c2xlZXAgKF9fdXNlY29uZHNfdCBfX3VzZWNvbmRzKTsKPj4+ICMgNDcyICIv dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBwYXVzZSAodm9pZCk7Cj4+ Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGNob3duIChjb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlk X3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7 Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGZjaG93biAoaW50IF9fZmQsIF9fdWlkX3QgX19v d25lciwgX19naWRfdCBfX2dyb3VwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGxjaG93biAoY29uc3QgY2hh ciAqX19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKPj4+ICAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBm Y2hvd25hdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLAo+ Pj4gICAgICAgIF9fZ2lkX3QgX19ncm91cCwgaW50IF9fZmxhZykKPj4+ICAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDIpKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBjaGRpciAoY29uc3QgY2hhciAq X19wYXRoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGZj aGRpciAoaW50IF9fZmQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg Owo+Pj4gIyA1MTQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+PiBleHRlcm4gY2hhciAq Z2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSA7Cj4+PiAjIDUyOCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz IDQKPj4+IGV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpCj4+PiAgICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIDsKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+PiBleHRlcm4gaW50IGR1cCAoaW50IF9fZmQpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgOwo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGR1cDIgKGludCBfX2Zk LCBpbnQgX19mZDIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ PiAjIDU0NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKPj4+IGV4dGVybiBjaGFyICoqX19l bnZpcm9uOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgZXhlY3Zl IChjb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKmNvbnN0IF9fYXJndltdLAo+Pj4gICAgICBjaGFy ICpjb25zdCBfX2VudnBbXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIGludCBmZXhlY3ZlIChpbnQgX19mZCwgY2hhciAqY29uc3QgX19hcmd2W10sIGNo YXIgKmNvbnN0IF9fZW52cFtdKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKPj4+Cj4+Pgo+ Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGV4ZWN2IChjb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKmNv bnN0IF9fYXJndltdKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4+Cj4+Pgo+Pj4K Pj4+IGV4dGVybiBpbnQgZXhlY2xlIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKl9f YXJnLCAuLi4pCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pj4KPj4+Cj4+Pgo+Pj4g ZXh0ZXJuIGludCBleGVjbCAoY29uc3QgY2hhciAqX19wYXRoLCBjb25zdCBjaGFyICpfX2FyZywg Li4uKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVy biBpbnQgZXhlY3ZwIChjb25zdCBjaGFyICpfX2ZpbGUsIGNoYXIgKmNvbnN0IF9fYXJndltdKQo+ Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4g aW50IGV4ZWNscCAoY29uc3QgY2hhciAqX19maWxlLCBjb25zdCBjaGFyICpfX2FyZywgLi4uKQo+ Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4+ICMgNjAxICIvdXNyL2luY2x1ZGUvdW5p c3RkLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2 b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK Pj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5o IiAxIDMgNAo+Pj4gIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMyA0Cj4+PiBl bnVtCj4+PiAgIHsKPj4+ICAgICBfUENfTElOS19NQVgsCj4+Pgo+Pj4gICAgIF9QQ19NQVhfQ0FO T04sCj4+Pgo+Pj4gICAgIF9QQ19NQVhfSU5QVVQsCj4+Pgo+Pj4gICAgIF9QQ19OQU1FX01BWCwK Pj4+Cj4+PiAgICAgX1BDX1BBVEhfTUFYLAo+Pj4KPj4+ICAgICBfUENfUElQRV9CVUYsCj4+Pgo+ Pj4gICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAo+Pj4KPj4+ICAgICBfUENfTk9fVFJVTkMsCj4+ Pgo+Pj4gICAgIF9QQ19WRElTQUJMRSwKPj4+Cj4+PiAgICAgX1BDX1NZTkNfSU8sCj4+Pgo+Pj4g ICAgIF9QQ19BU1lOQ19JTywKPj4+Cj4+PiAgICAgX1BDX1BSSU9fSU8sCj4+Pgo+Pj4gICAgIF9Q Q19TT0NLX01BWEJVRiwKPj4+Cj4+PiAgICAgX1BDX0ZJTEVTSVpFQklUUywKPj4+Cj4+PiAgICAg X1BDX1JFQ19JTkNSX1hGRVJfU0laRSwKPj4+Cj4+PiAgICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpF LAo+Pj4KPj4+ICAgICBfUENfUkVDX01JTl9YRkVSX1NJWkUsCj4+Pgo+Pj4gICAgIF9QQ19SRUNf WEZFUl9BTElHTiwKPj4+Cj4+PiAgICAgX1BDX0FMTE9DX1NJWkVfTUlOLAo+Pj4KPj4+ICAgICBf UENfU1lNTElOS19NQVgsCj4+Pgo+Pj4gICAgIF9QQ18yX1NZTUxJTktTCj4+Pgo+Pj4gICB9Owo+ Pj4KPj4+Cj4+PiBlbnVtCj4+PiAgIHsKPj4+ICAgICBfU0NfQVJHX01BWCwKPj4+Cj4+PiAgICAg X1NDX0NISUxEX01BWCwKPj4+Cj4+PiAgICAgX1NDX0NMS19UQ0ssCj4+Pgo+Pj4gICAgIF9TQ19O R1JPVVBTX01BWCwKPj4+Cj4+PiAgICAgX1NDX09QRU5fTUFYLAo+Pj4KPj4+ICAgICBfU0NfU1RS RUFNX01BWCwKPj4+Cj4+PiAgICAgX1NDX1RaTkFNRV9NQVgsCj4+Pgo+Pj4gICAgIF9TQ19KT0Jf Q09OVFJPTCwKPj4+Cj4+PiAgICAgX1NDX1NBVkVEX0lEUywKPj4+Cj4+PiAgICAgX1NDX1JFQUxU SU1FX1NJR05BTFMsCj4+Pgo+Pj4gICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAo+Pj4KPj4+ ICAgICBfU0NfVElNRVJTLAo+Pj4KPj4+ICAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAo+Pj4KPj4+ ICAgICBfU0NfUFJJT1JJVElaRURfSU8sCj4+Pgo+Pj4gICAgIF9TQ19TWU5DSFJPTklaRURfSU8s Cj4+Pgo+Pj4gICAgIF9TQ19GU1lOQywKPj4+Cj4+PiAgICAgX1NDX01BUFBFRF9GSUxFUywKPj4+ Cj4+PiAgICAgX1NDX01FTUxPQ0ssCj4+Pgo+Pj4gICAgIF9TQ19NRU1MT0NLX1JBTkdFLAo+Pj4K Pj4+ICAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sCj4+Pgo+Pj4gICAgIF9TQ19NRVNTQUdFX1BB U1NJTkcsCj4+Pgo+Pj4gICAgIF9TQ19TRU1BUEhPUkVTLAo+Pj4KPj4+ICAgICBfU0NfU0hBUkVE X01FTU9SWV9PQkpFQ1RTLAo+Pj4KPj4+ICAgICBfU0NfQUlPX0xJU1RJT19NQVgsCj4+Pgo+Pj4g ICAgIF9TQ19BSU9fTUFYLAo+Pj4KPj4+ICAgICBfU0NfQUlPX1BSSU9fREVMVEFfTUFYLAo+Pj4K Pj4+ICAgICBfU0NfREVMQVlUSU1FUl9NQVgsCj4+Pgo+Pj4gICAgIF9TQ19NUV9PUEVOX01BWCwK Pj4+Cj4+PiAgICAgX1NDX01RX1BSSU9fTUFYLAo+Pj4KPj4+ICAgICBfU0NfVkVSU0lPTiwKPj4+ Cj4+PiAgICAgX1NDX1BBR0VTSVpFLAo+Pj4KPj4+Cj4+PiAgICAgX1NDX1JUU0lHX01BWCwKPj4+ Cj4+PiAgICAgX1NDX1NFTV9OU0VNU19NQVgsCj4+Pgo+Pj4gICAgIF9TQ19TRU1fVkFMVUVfTUFY LAo+Pj4KPj4+ICAgICBfU0NfU0lHUVVFVUVfTUFYLAo+Pj4KPj4+ICAgICBfU0NfVElNRVJfTUFY LAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ICAgICBfU0NfQkNfQkFTRV9NQVgsCj4+Pgo+Pj4gICAgIF9T Q19CQ19ESU1fTUFYLAo+Pj4KPj4+ICAgICBfU0NfQkNfU0NBTEVfTUFYLAo+Pj4KPj4+ICAgICBf U0NfQkNfU1RSSU5HX01BWCwKPj4+Cj4+PiAgICAgX1NDX0NPTExfV0VJR0hUU19NQVgsCj4+Pgo+ Pj4gICAgIF9TQ19FUVVJVl9DTEFTU19NQVgsCj4+Pgo+Pj4gICAgIF9TQ19FWFBSX05FU1RfTUFY LAo+Pj4KPj4+ICAgICBfU0NfTElORV9NQVgsCj4+Pgo+Pj4gICAgIF9TQ19SRV9EVVBfTUFYLAo+ Pj4KPj4+ICAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYLAo+Pj4KPj4+Cj4+PiAgICAgX1NDXzJf VkVSU0lPTiwKPj4+Cj4+PiAgICAgX1NDXzJfQ19CSU5ELAo+Pj4KPj4+ICAgICBfU0NfMl9DX0RF ViwKPj4+Cj4+PiAgICAgX1NDXzJfRk9SVF9ERVYsCj4+Pgo+Pj4gICAgIF9TQ18yX0ZPUlRfUlVO LAo+Pj4KPj4+ICAgICBfU0NfMl9TV19ERVYsCj4+Pgo+Pj4gICAgIF9TQ18yX0xPQ0FMRURFRiwK Pj4+Cj4+Pgo+Pj4gICAgIF9TQ19QSUksCj4+Pgo+Pj4gICAgIF9TQ19QSUlfWFRJLAo+Pj4KPj4+ ICAgICBfU0NfUElJX1NPQ0tFVCwKPj4+Cj4+PiAgICAgX1NDX1BJSV9JTlRFUk5FVCwKPj4+Cj4+ PiAgICAgX1NDX1BJSV9PU0ksCj4+Pgo+Pj4gICAgIF9TQ19QT0xMLAo+Pj4KPj4+ICAgICBfU0Nf U0VMRUNULAo+Pj4KPj4+ICAgICBfU0NfVUlPX01BWElPViwKPj4+Cj4+PiAgICAgX1NDX0lPVl9N QVggPSBfU0NfVUlPX01BWElPViwKPj4+Cj4+PiAgICAgX1NDX1BJSV9JTlRFUk5FVF9TVFJFQU0s Cj4+Pgo+Pj4gICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCj4+Pgo+Pj4gICAgIF9TQ19QSUlf T1NJX0NPVFMsCj4+Pgo+Pj4gICAgIF9TQ19QSUlfT1NJX0NMVFMsCj4+Pgo+Pj4gICAgIF9TQ19Q SUlfT1NJX00sCj4+Pgo+Pj4gICAgIF9TQ19UX0lPVl9NQVgsCj4+Pgo+Pj4KPj4+Cj4+PiAgICAg X1NDX1RIUkVBRFMsCj4+Pgo+Pj4gICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCj4+Pgo+ Pj4gICAgIF9TQ19HRVRHUl9SX1NJWkVfTUFYLAo+Pj4KPj4+ICAgICBfU0NfR0VUUFdfUl9TSVpF X01BWCwKPj4+Cj4+PiAgICAgX1NDX0xPR0lOX05BTUVfTUFYLAo+Pj4KPj4+ICAgICBfU0NfVFRZ X05BTUVfTUFYLAo+Pj4KPj4+ICAgICBfU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUywK Pj4+Cj4+PiAgICAgX1NDX1RIUkVBRF9LRVlTX01BWCwKPj4+Cj4+PiAgICAgX1NDX1RIUkVBRF9T VEFDS19NSU4sCj4+Pgo+Pj4gICAgIF9TQ19USFJFQURfVEhSRUFEU19NQVgsCj4+Pgo+Pj4gICAg IF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCj4+Pgo+Pj4gICAgIF9TQ19USFJFQURfQVRUUl9T VEFDS1NJWkUsCj4+Pgo+Pj4gICAgIF9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORywKPj4+ Cj4+PiAgICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCj4+Pgo+Pj4gICAgIF9TQ19USFJFQURf UFJJT19QUk9URUNULAo+Pj4KPj4+ICAgICBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVELAo+Pj4K Pj4+Cj4+PiAgICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCj4+Pgo+Pj4gICAgIF9TQ19OUFJPQ0VT U09SU19PTkxOLAo+Pj4KPj4+ICAgICBfU0NfUEhZU19QQUdFUywKPj4+Cj4+PiAgICAgX1NDX0FW UEhZU19QQUdFUywKPj4+Cj4+PiAgICAgX1NDX0FURVhJVF9NQVgsCj4+Pgo+Pj4gICAgIF9TQ19Q QVNTX01BWCwKPj4+Cj4+Pgo+Pj4gICAgIF9TQ19YT1BFTl9WRVJTSU9OLAo+Pj4KPj4+ICAgICBf U0NfWE9QRU5fWENVX1ZFUlNJT04sCj4+Pgo+Pj4gICAgIF9TQ19YT1BFTl9VTklYLAo+Pj4KPj4+ ICAgICBfU0NfWE9QRU5fQ1JZUFQsCj4+Pgo+Pj4gICAgIF9TQ19YT1BFTl9FTkhfSTE4TiwKPj4+ Cj4+PiAgICAgX1NDX1hPUEVOX1NITSwKPj4+Cj4+Pgo+Pj4gICAgIF9TQ18yX0NIQVJfVEVSTSwK Pj4+Cj4+PiAgICAgX1NDXzJfQ19WRVJTSU9OLAo+Pj4KPj4+ICAgICBfU0NfMl9VUEUsCj4+Pgo+ Pj4KPj4+ICAgICBfU0NfWE9QRU5fWFBHMiwKPj4+Cj4+PiAgICAgX1NDX1hPUEVOX1hQRzMsCj4+ Pgo+Pj4gICAgIF9TQ19YT1BFTl9YUEc0LAo+Pj4KPj4+Cj4+PiAgICAgX1NDX0NIQVJfQklULAo+ Pj4KPj4+ICAgICBfU0NfQ0hBUl9NQVgsCj4+Pgo+Pj4gICAgIF9TQ19DSEFSX01JTiwKPj4+Cj4+ PiAgICAgX1NDX0lOVF9NQVgsCj4+Pgo+Pj4gICAgIF9TQ19JTlRfTUlOLAo+Pj4KPj4+ICAgICBf U0NfTE9OR19CSVQsCj4+Pgo+Pj4gICAgIF9TQ19XT1JEX0JJVCwKPj4+Cj4+PiAgICAgX1NDX01C X0xFTl9NQVgsCj4+Pgo+Pj4gICAgIF9TQ19OWkVSTywKPj4+Cj4+PiAgICAgX1NDX1NTSVpFX01B WCwKPj4+Cj4+PiAgICAgX1NDX1NDSEFSX01BWCwKPj4+Cj4+PiAgICAgX1NDX1NDSEFSX01JTiwK Pj4+Cj4+PiAgICAgX1NDX1NIUlRfTUFYLAo+Pj4KPj4+ICAgICBfU0NfU0hSVF9NSU4sCj4+Pgo+ Pj4gICAgIF9TQ19VQ0hBUl9NQVgsCj4+Pgo+Pj4gICAgIF9TQ19VSU5UX01BWCwKPj4+Cj4+PiAg ICAgX1NDX1VMT05HX01BWCwKPj4+Cj4+PiAgICAgX1NDX1VTSFJUX01BWCwKPj4+Cj4+Pgo+Pj4g ICAgIF9TQ19OTF9BUkdNQVgsCj4+Pgo+Pj4gICAgIF9TQ19OTF9MQU5HTUFYLAo+Pj4KPj4+ICAg ICBfU0NfTkxfTVNHTUFYLAo+Pj4KPj4+ICAgICBfU0NfTkxfTk1BWCwKPj4+Cj4+PiAgICAgX1ND X05MX1NFVE1BWCwKPj4+Cj4+PiAgICAgX1NDX05MX1RFWFRNQVgsCj4+Pgo+Pj4KPj4+ICAgICBf U0NfWEJTNV9JTFAzMl9PRkYzMiwKPj4+Cj4+PiAgICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAo+ Pj4KPj4+ICAgICBfU0NfWEJTNV9MUDY0X09GRjY0LAo+Pj4KPj4+ICAgICBfU0NfWEJTNV9MUEJJ R19PRkZCSUcsCj4+Pgo+Pj4KPj4+ICAgICBfU0NfWE9QRU5fTEVHQUNZLAo+Pj4KPj4+ICAgICBf U0NfWE9QRU5fUkVBTFRJTUUsCj4+Pgo+Pj4gICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURT LAo+Pj4KPj4+Cj4+PiAgICAgX1NDX0FEVklTT1JZX0lORk8sCj4+Pgo+Pj4gICAgIF9TQ19CQVJS SUVSUywKPj4+Cj4+PiAgICAgX1NDX0JBU0UsCj4+Pgo+Pj4gICAgIF9TQ19DX0xBTkdfU1VQUE9S VCwKPj4+Cj4+PiAgICAgX1NDX0NfTEFOR19TVVBQT1JUX1IsCj4+Pgo+Pj4gICAgIF9TQ19DTE9D S19TRUxFQ1RJT04sCj4+Pgo+Pj4gICAgIF9TQ19DUFVUSU1FLAo+Pj4KPj4+ICAgICBfU0NfVEhS RUFEX0NQVVRJTUUsCj4+Pgo+Pj4gICAgIF9TQ19ERVZJQ0VfSU8sCj4+Pgo+Pj4gICAgIF9TQ19E RVZJQ0VfU1BFQ0lGSUMsCj4+Pgo+Pj4gICAgIF9TQ19ERVZJQ0VfU1BFQ0lGSUNfUiwKPj4+Cj4+ PiAgICAgX1NDX0ZEX01HTVQsCj4+Pgo+Pj4gICAgIF9TQ19GSUZPLAo+Pj4KPj4+ICAgICBfU0Nf UElQRSwKPj4+Cj4+PiAgICAgX1NDX0ZJTEVfQVRUUklCVVRFUywKPj4+Cj4+PiAgICAgX1NDX0ZJ TEVfTE9DS0lORywKPj4+Cj4+PiAgICAgX1NDX0ZJTEVfU1lTVEVNLAo+Pj4KPj4+ICAgICBfU0Nf TU9OT1RPTklDX0NMT0NLLAo+Pj4KPj4+ICAgICBfU0NfTVVMVElfUFJPQ0VTUywKPj4+Cj4+PiAg ICAgX1NDX1NJTkdMRV9QUk9DRVNTLAo+Pj4KPj4+ICAgICBfU0NfTkVUV09SS0lORywKPj4+Cj4+ PiAgICAgX1NDX1JFQURFUl9XUklURVJfTE9DS1MsCj4+Pgo+Pj4gICAgIF9TQ19TUElOX0xPQ0tT LAo+Pj4KPj4+ICAgICBfU0NfUkVHRVhQLAo+Pj4KPj4+ICAgICBfU0NfUkVHRVhfVkVSU0lPTiwK Pj4+Cj4+PiAgICAgX1NDX1NIRUxMLAo+Pj4KPj4+ICAgICBfU0NfU0lHTkFMUywKPj4+Cj4+PiAg ICAgX1NDX1NQQVdOLAo+Pj4KPj4+ICAgICBfU0NfU1BPUkFESUNfU0VSVkVSLAo+Pj4KPj4+ICAg ICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwKPj4+Cj4+PiAgICAgX1NDX1NZU1RFTV9EQVRB QkFTRSwKPj4+Cj4+PiAgICAgX1NDX1NZU1RFTV9EQVRBQkFTRV9SLAo+Pj4KPj4+ICAgICBfU0Nf VElNRU9VVFMsCj4+Pgo+Pj4gICAgIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNUUywKPj4+Cj4+PiAg ICAgX1NDX1VTRVJfR1JPVVBTLAo+Pj4KPj4+ICAgICBfU0NfVVNFUl9HUk9VUFNfUiwKPj4+Cj4+ PiAgICAgX1NDXzJfUEJTLAo+Pj4KPj4+ICAgICBfU0NfMl9QQlNfQUNDT1VOVElORywKPj4+Cj4+ PiAgICAgX1NDXzJfUEJTX0xPQ0FURSwKPj4+Cj4+PiAgICAgX1NDXzJfUEJTX01FU1NBR0UsCj4+ Pgo+Pj4gICAgIF9TQ18yX1BCU19UUkFDSywKPj4+Cj4+PiAgICAgX1NDX1NZTUxPT1BfTUFYLAo+ Pj4KPj4+ICAgICBfU0NfU1RSRUFNUywKPj4+Cj4+PiAgICAgX1NDXzJfUEJTX0NIRUNLUE9JTlQs Cj4+Pgo+Pj4KPj4+ICAgICBfU0NfVjZfSUxQMzJfT0ZGMzIsCj4+Pgo+Pj4gICAgIF9TQ19WNl9J TFAzMl9PRkZCSUcsCj4+Pgo+Pj4gICAgIF9TQ19WNl9MUDY0X09GRjY0LAo+Pj4KPj4+ICAgICBf U0NfVjZfTFBCSUdfT0ZGQklHLAo+Pj4KPj4+Cj4+PiAgICAgX1NDX0hPU1RfTkFNRV9NQVgsCj4+ Pgo+Pj4gICAgIF9TQ19UUkFDRSwKPj4+Cj4+PiAgICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwK Pj4+Cj4+PiAgICAgX1NDX1RSQUNFX0lOSEVSSVQsCj4+Pgo+Pj4gICAgIF9TQ19UUkFDRV9MT0cs Cj4+Pgo+Pj4KPj4+ICAgICBfU0NfTEVWRUwxX0lDQUNIRV9TSVpFLAo+Pj4KPj4+ICAgICBfU0Nf TEVWRUwxX0lDQUNIRV9BU1NPQywKPj4+Cj4+PiAgICAgX1NDX0xFVkVMMV9JQ0FDSEVfTElORVNJ WkUsCj4+Pgo+Pj4gICAgIF9TQ19MRVZFTDFfRENBQ0hFX1NJWkUsCj4+Pgo+Pj4gICAgIF9TQ19M RVZFTDFfRENBQ0hFX0FTU09DLAo+Pj4KPj4+ICAgICBfU0NfTEVWRUwxX0RDQUNIRV9MSU5FU0la RSwKPj4+Cj4+PiAgICAgX1NDX0xFVkVMMl9DQUNIRV9TSVpFLAo+Pj4KPj4+ICAgICBfU0NfTEVW RUwyX0NBQ0hFX0FTU09DLAo+Pj4KPj4+ICAgICBfU0NfTEVWRUwyX0NBQ0hFX0xJTkVTSVpFLAo+ Pj4KPj4+ICAgICBfU0NfTEVWRUwzX0NBQ0hFX1NJWkUsCj4+Pgo+Pj4gICAgIF9TQ19MRVZFTDNf Q0FDSEVfQVNTT0MsCj4+Pgo+Pj4gICAgIF9TQ19MRVZFTDNfQ0FDSEVfTElORVNJWkUsCj4+Pgo+ Pj4gICAgIF9TQ19MRVZFTDRfQ0FDSEVfU0laRSwKPj4+Cj4+PiAgICAgX1NDX0xFVkVMNF9DQUNI RV9BU1NPQywKPj4+Cj4+PiAgICAgX1NDX0xFVkVMNF9DQUNIRV9MSU5FU0laRSwKPj4+Cj4+Pgo+ Pj4KPj4+ICAgICBfU0NfSVBWNiA9IF9TQ19MRVZFTDFfSUNBQ0hFX1NJWkUgKyA1MCwKPj4+Cj4+ PiAgICAgX1NDX1JBV19TT0NLRVRTLAo+Pj4KPj4+Cj4+PiAgICAgX1NDX1Y3X0lMUDMyX09GRjMy LAo+Pj4KPj4+ICAgICBfU0NfVjdfSUxQMzJfT0ZGQklHLAo+Pj4KPj4+ICAgICBfU0NfVjdfTFA2 NF9PRkY2NCwKPj4+Cj4+PiAgICAgX1NDX1Y3X0xQQklHX09GRkJJRywKPj4+Cj4+Pgo+Pj4gICAg IF9TQ19TU19SRVBMX01BWCwKPj4+Cj4+Pgo+Pj4gICAgIF9TQ19UUkFDRV9FVkVOVF9OQU1FX01B WCwKPj4+Cj4+PiAgICAgX1NDX1RSQUNFX05BTUVfTUFYLAo+Pj4KPj4+ICAgICBfU0NfVFJBQ0Vf U1lTX01BWCwKPj4+Cj4+PiAgICAgX1NDX1RSQUNFX1VTRVJfRVZFTlRfTUFYLAo+Pj4KPj4+Cj4+ PiAgICAgX1NDX1hPUEVOX1NUUkVBTVMsCj4+Pgo+Pj4KPj4+ICAgICBfU0NfVEhSRUFEX1JPQlVT VF9QUklPX0lOSEVSSVQsCj4+Pgo+Pj4gICAgIF9TQ19USFJFQURfUk9CVVNUX1BSSU9fUFJPVEVD VAo+Pj4KPj4+ICAgfTsKPj4+Cj4+Pgo+Pj4gZW51bQo+Pj4gICB7Cj4+PiAgICAgX0NTX1BBVEgs Cj4+Pgo+Pj4KPj4+ICAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTLAo+Pj4KPj4+Cj4+ Pgo+Pj4gICAgIF9DU19HTlVfTElCQ19WRVJTSU9OLAo+Pj4KPj4+ICAgICBfQ1NfR05VX0xJQlBU SFJFQURfVkVSU0lPTiwKPj4+Cj4+Pgo+Pj4gICAgIF9DU19WNV9XSURUSF9SRVNUUklDVEVEX0VO VlMsCj4+Pgo+Pj4KPj4+Cj4+PiAgICAgX0NTX1Y3X1dJRFRIX1JFU1RSSUNURURfRU5WUywKPj4+ Cj4+Pgo+Pj4KPj4+ICAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCj4+Pgo+Pj4gICAgIF9DU19M RlNfTERGTEFHUywKPj4+Cj4+PiAgICAgX0NTX0xGU19MSUJTLAo+Pj4KPj4+ICAgICBfQ1NfTEZT X0xJTlRGTEFHUywKPj4+Cj4+PiAgICAgX0NTX0xGUzY0X0NGTEFHUywKPj4+Cj4+PiAgICAgX0NT X0xGUzY0X0xERkxBR1MsCj4+Pgo+Pj4gICAgIF9DU19MRlM2NF9MSUJTLAo+Pj4KPj4+ICAgICBf Q1NfTEZTNjRfTElOVEZMQUdTLAo+Pj4KPj4+Cj4+PiAgICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJf Q0ZMQUdTID0gMTEwMCwKPj4+Cj4+PiAgICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTERGTEFHUywK Pj4+Cj4+PiAgICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKPj4+Cj4+PiAgICAgX0NTX1hC UzVfSUxQMzJfT0ZGMzJfTElOVEZMQUdTLAo+Pj4KPj4+ICAgICBfQ1NfWEJTNV9JTFAzMl9PRkZC SUdfQ0ZMQUdTLAo+Pj4KPj4+ICAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUywKPj4+ Cj4+PiAgICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMsCj4+Pgo+Pj4gICAgIF9DU19YQlM1 X0lMUDMyX09GRkJJR19MSU5URkxBR1MsCj4+Pgo+Pj4gICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRf Q0ZMQUdTLAo+Pj4KPj4+ICAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MsCj4+Pgo+Pj4g ICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElCUywKPj4+Cj4+PiAgICAgX0NTX1hCUzVfTFA2NF9P RkY2NF9MSU5URkxBR1MsCj4+Pgo+Pj4gICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1Ms Cj4+Pgo+Pj4gICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MREZMQUdTLAo+Pj4KPj4+ICAgICBf Q1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKPj4+Cj4+PiAgICAgX0NTX1hCUzVfTFBCSUdfT0ZG QklHX0xJTlRGTEFHUywKPj4+Cj4+Pgo+Pj4gICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9D RkxBR1MsCj4+Pgo+Pj4gICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MREZMQUdTLAo+Pj4K Pj4+ICAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElCUywKPj4+Cj4+PiAgICAgX0NTX1BP U0lYX1Y2X0lMUDMyX09GRjMyX0xJTlRGTEFHUywKPj4+Cj4+PiAgICAgX0NTX1BPU0lYX1Y2X0lM UDMyX09GRkJJR19DRkxBR1MsCj4+Pgo+Pj4gICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdf TERGTEFHUywKPj4+Cj4+PiAgICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSUJTLAo+Pj4K Pj4+ICAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKPj4+Cj4+PiAgICAg X0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAo+Pj4KPj4+ICAgICBfQ1NfUE9TSVhfVjZf TFA2NF9PRkY2NF9MREZMQUdTLAo+Pj4KPj4+ICAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9M SUJTLAo+Pj4KPj4+ICAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSU5URkxBR1MsCj4+Pgo+ Pj4gICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfQ0ZMQUdTLAo+Pj4KPj4+ICAgICBfQ1Nf UE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xERkxBR1MsCj4+Pgo+Pj4gICAgIF9DU19QT1NJWF9WNl9M UEJJR19PRkZCSUdfTElCUywKPj4+Cj4+PiAgICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19M SU5URkxBR1MsCj4+Pgo+Pj4KPj4+ICAgICBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGMzJfQ0ZMQUdT LAo+Pj4KPj4+ICAgICBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGMzJfTERGTEFHUywKPj4+Cj4+PiAg ICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0xJQlMsCj4+Pgo+Pj4gICAgIF9DU19QT1NJWF9W N19JTFAzMl9PRkYzMl9MSU5URkxBR1MsCj4+Pgo+Pj4gICAgIF9DU19QT1NJWF9WN19JTFAzMl9P RkZCSUdfQ0ZMQUdTLAo+Pj4KPj4+ICAgICBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklHX0xERkxB R1MsCj4+Pgo+Pj4gICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdfTElCUywKPj4+Cj4+PiAg ICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19MSU5URkxBR1MsCj4+Pgo+Pj4gICAgIF9DU19Q T1NJWF9WN19MUDY0X09GRjY0X0NGTEFHUywKPj4+Cj4+PiAgICAgX0NTX1BPU0lYX1Y3X0xQNjRf T0ZGNjRfTERGTEFHUywKPj4+Cj4+PiAgICAgX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRfTElCUywK Pj4+Cj4+PiAgICAgX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAo+Pj4KPj4+ICAg ICBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0NGTEFHUywKPj4+Cj4+PiAgICAgX0NTX1BPU0lY X1Y3X0xQQklHX09GRkJJR19MREZMQUdTLAo+Pj4KPj4+ICAgICBfQ1NfUE9TSVhfVjdfTFBCSUdf T0ZGQklHX0xJQlMsCj4+Pgo+Pj4gICAgIF9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTElOVEZM QUdTLAo+Pj4KPj4+Cj4+PiAgICAgX0NTX1Y2X0VOViwKPj4+Cj4+PiAgICAgX0NTX1Y3X0VOVgo+ Pj4KPj4+ICAgfTsKPj4+ICMgNjEzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMyA0Cj4+Pgo+ Pj4KPj4+IGV4dGVybiBsb25nIGludCBwYXRoY29uZiAoY29uc3QgY2hhciAqX19wYXRoLCBpbnQg X19uYW1lKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGxv bmcgaW50IGZwYXRoY29uZiAoaW50IF9fZmQsIGludCBfX25hbWUpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBsb25nIGludCBzeXNj b25mIChpbnQgX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp Owo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19uYW1lLCBjaGFy ICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBfX3BpZF90IGdldHBpZCAodm9pZCkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0 ZXJuIF9fcGlkX3QgZ2V0cHBpZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJu IF9fcGlkX3QgX19nZXRwZ2lkIChfX3BpZF90IF9fcGlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+IGV4dGVybiBfX3BpZF90IGdldHBnaWQgKF9fcGlk X3QgX19waWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQs IF9fcGlkX3QgX19wZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp Owo+Pj4gIyA2NjMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+PiBleHRlcm4gaW50IHNl dHBncnAgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBl eHRlcm4gX19waWRfdCBnZXRzaWQgKF9fcGlkX3QgX19waWQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gX191aWRfdCBnZXR1 aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+ Pj4KPj4+IGV4dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBfX2dpZF90IGdldGdpZCAo dm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGdldGdyb3Vw cyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSA7Cj4+PiAjIDcwMyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQK Pj4+IGV4dGVybiBpbnQgc2V0dWlkIChfX3VpZF90IF9fdWlkKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNl dHJldWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQg c2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNldGdpZCAo X19naWRfdCBfX2dpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7 Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzZXRyZWdpZCAoX19naWRfdCBfX3JnaWQs IF9fZ2lkX3QgX19lZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNldGVnaWQgKF9fZ2lkX3QgX19naWQp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pj4gIyA3NTkgIi91 c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+PiBleHRlcm4gX19waWRfdCBmb3JrICh2b2lkKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gX19waWRfdCB2Zm9yayAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGNoYXIgKnR0 eW5hbWUgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp Owo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpf X2J1Ziwgc2l6ZV90IF9fYnVmbGVuKQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKSA7Cj4+Pgo+ Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGlzYXR0eSAoaW50IF9fZmQpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBp bnQgdHR5c2xvdCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGxpbmsgKGNvbnN0IGNoYXIgKl9fZnJv bSwgY29uc3QgY2hhciAqX190bykKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSkgOwo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgbGlua2F0IChpbnQgX19mcm9tZmQsIGNvbnN0IGNo YXIgKl9fZnJvbSwgaW50IF9fdG9mZCwKPj4+ICAgICAgY29uc3QgY2hhciAqX190bywgaW50IF9f ZmxhZ3MpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+ PiBleHRlcm4gaW50IHN5bWxpbmsgKGNvbnN0IGNoYXIgKl9fZnJvbSwgY29uc3QgY2hhciAqX190 bykKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4 dGVybiBzc2l6ZV90IHJlYWRsaW5rIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwKPj4+ ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pCj4+PiAgICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxLCAyKSkpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHN5bWxpbmth dCAoY29uc3QgY2hhciAqX19mcm9tLCBpbnQgX190b2ZkLAo+Pj4gICAgICAgICBjb25zdCBjaGFy ICpfX3RvKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMykpKSA7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzc2l6ZV90 IHJlYWRsaW5rYXQgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwKPj4+ ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikKPj4+ICAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDIsIDMpKSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCB1bmxpbmsgKGNv bnN0IGNoYXIgKl9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRl cm4gaW50IHVubGlua2F0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX19mbGFn KQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQg cm1kaXIgKGNvbnN0IGNoYXIgKl9fcGF0aCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gX19waWRfdCB0Y2dldHBncnAgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHRjc2V0cGdy cCAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGNoYXIg KmdldGxvZ2luICh2b2lkKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4g aW50IGdldGxvZ2luX3IgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbmFtZV9sZW4pIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50 IHNldGxvZ2luIChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pj4gIyA4 NzQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9nZXRv cHQuaCIgMSAzIDQKPj4+ICMgNTcgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMyA0Cj4+PiBleHRl cm4gY2hhciAqb3B0YXJnOwo+Pj4gIyA3MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzIDQKPj4+ IGV4dGVybiBpbnQgb3B0aW5kOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgb3B0ZXJy Owo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBvcHRvcHQ7Cj4+PiAjIDE1MCAiL3Vzci9pbmNs dWRlL2dldG9wdC5oIiAzIDQKPj4+IGV4dGVybiBpbnQgZ2V0b3B0IChpbnQgX19fYXJnYywgY2hh ciAqY29uc3QgKl9fX2FyZ3YsIGNvbnN0IGNoYXIgKl9fc2hvcnRvcHRzKQo+Pj4gICAgICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiAjIDg3NSAiL3Vzci9p bmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4 dGVybiBpbnQgZ2V0aG9zdG5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgc2V0aG9z dG5hbWUgKGNvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKQo+Pj4gICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKSA7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNldGhvc3RpZCAobG9uZyBp bnQgX19pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19uYW1l LCBzaXplX3QgX19sZW4pCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4+IGV4dGVybiBp bnQgc2V0ZG9tYWlubmFtZSAoY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pCj4+PiAg ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGlu dCB2aGFuZ3VwICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp Owo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHJldm9rZSAoY29uc3QgY2hhciAqX19maWxlKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGlu dCBwcm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19z aXplLAo+Pj4gICAgICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKQo+Pj4g ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGlu dCBhY2N0IChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICh2 b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4gZXh0ZXJu IHZvaWQgZW5kdXNlcnNoZWxsICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pj4gZXh0ZXJuIHZvaWQgc2V0dXNlcnNoZWxsICh2b2lkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBl eHRlcm4gaW50IGRhZW1vbiAoaW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gaW50IGNocm9vdCAoY29uc3QgY2hhciAqX19wYXRoKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKSA7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciAqZ2V0cGFzcyAoY29uc3QgY2hhciAq X19wcm9tcHQpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGZzeW5jIChpbnQgX19mZCk7Cj4+PiAjIDk3 MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKPj4+IGV4dGVybiBsb25nIGludCBnZXRob3N0 aWQgKHZvaWQpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBzeW5jICh2b2lkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBl eHRlcm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiBleHRlcm4gaW50IGdldGR0YWJsZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiAjIDk5NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz IDQKPj4+IGV4dGVybiBpbnQgdHJ1bmNhdGUgKGNvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmZfdCBf X2xlbmd0aCkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwo+Pj4gIyAxMDE5ICIvdXNyL2lu Y2x1ZGUvdW5pc3RkLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGludCBfX2ZkLCBf X29mZl90IF9fbGVuZ3RoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IDsKPj4+ICMgMTA0MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKPj4+IGV4dGVybiBpbnQg YnJrICh2b2lkICpfX2FkZHIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCAqc2JyayAoaW50cHRyX3Qg X19kZWx0YSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMg MTA2MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKPj4+IGV4dGVybiBsb25nIGludCBzeXNj YWxsIChsb25nIGludCBfX3N5c25vLCAuLi4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7Cj4+PiAjIDExMTUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+PiBl eHRlcm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKTsKPj4+ICMgMTE1NCAiL3Vzci9pbmNs dWRlL3VuaXN0ZC5oIiAzIDQKPj4+Cj4+PiAjIDU5ICJtYWNoaW5lLmMiIDIKPj4+ICMgMSAiL3Vz ci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAxIDMgNAo+Pj4gIyAyMyAiL3Vzci9pbmNsdWRlL3N5cy9w YXJhbS5oIiAzIDQKPj4+ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4x L2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0Cj4+PiAjIDI0ICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFt LmgiIDIgMyA0Cj4+Pgo+Pj4KPj4+ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4 LzYuMS4xL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0Cj4+PiAjIDM0ICIvdXNyL2xpYi9nY2MvaTY4 Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9saW1pdHMuaCIgMyA0Cj4+PiAjIDEgIi91c3Iv bGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N5c2xpbWl0cy5oIiAxIDMg NAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRo YXQtbGludXgvNi4xLjEvaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKPj4+ICMgMTY4ICIvdXNyL2xp Yi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9saW1pdHMuaCIgMyA0Cj4+PiAj IDEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKPj4+ICMgMTQzICIvdXNyL2luY2x1ZGUv bGltaXRzLmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEg MyA0Cj4+PiAjIDE2MCAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAzIDQKPj4+ICMg MSAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDEgMyA0Cj4+PiAjIDM4ICIvdXNyL2lu Y2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9saW51eC9s aW1pdHMuaCIgMSAzIDQKPj4+ICMgMzkgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAy IDMgNAo+Pj4gIyAxNjEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAzIDQKPj4+ ICMgMTQ0ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+PiAjIDEg Ii91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzIDQKPj4+ICMgMTQ4ICIvdXNyL2lu Y2x1ZGUvbGltaXRzLmgiIDIgMyA0Cj4+PiAjIDE2OSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0 LWxpbnV4LzYuMS4xL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0Cj4+PiAjIDggIi91c3IvbGliL2dj Yy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMgNAo+Pj4g IyAzNSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvbGltaXRz LmgiIDIgMyA0Cj4+PiAjIDI3ICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDIgMyA0Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wYXJhbS5oIiAxIDMgNAo+Pj4g IyAyOCAiL3Vzci9pbmNsdWRlL2JpdHMvcGFyYW0uaCIgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVk ZS9saW51eC9wYXJhbS5oIiAxIDMgNAo+Pj4KPj4+Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUv YXNtL3BhcmFtLmgiIDEgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9wYXJh bS5oIiAxIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYXNtL3BhcmFtLmgiIDIgMyA0Cj4+PiAj IDUgIi91c3IvaW5jbHVkZS9saW51eC9wYXJhbS5oIiAyIDMgNAo+Pj4gIyAyOSAiL3Vzci9pbmNs dWRlL2JpdHMvcGFyYW0uaCIgMiAzIDQKPj4+ICMgMzIgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0u aCIgMiAzIDQKPj4+ICMgNjAgIm1hY2hpbmUuYyIgMgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvc3lz L3RpbWUuaCIgMSAzIDQKPj4+ICMgMjcgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKPj4+ ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMgNAo+Pj4gIyAyOCAiL3Vzci9pbmNs dWRlL3N5cy90aW1lLmgiIDIgMyA0Cj4+PiAjIDM3ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg MyA0Cj4+Pgo+Pj4gIyA1NSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAo+Pj4gc3RydWN0 IHRpbWV6b25lCj4+PiAgIHsKPj4+ICAgICBpbnQgdHpfbWludXRlc3dlc3Q7Cj4+PiAgICAgaW50 IHR6X2RzdHRpbWU7Cj4+PiAgIH07Cj4+Pgo+Pj4gdHlwZWRlZiBzdHJ1Y3QgdGltZXpvbmUgKl9f cmVzdHJpY3QgX190aW1lem9uZV9wdHJfdDsKPj4+ICMgNzEgIi91c3IvaW5jbHVkZS9zeXMvdGlt ZS5oIiAzIDQKPj4+IGV4dGVybiBpbnQgZ2V0dGltZW9mZGF5IChzdHJ1Y3QgdGltZXZhbCAqX19y ZXN0cmljdCBfX3R2LAo+Pj4gICAgIF9fdGltZXpvbmVfcHRyX3QgX190eikgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzZXR0aW1lb2ZkYXkgKGNvbnN0 IHN0cnVjdCB0aW1ldmFsICpfX3R2LAo+Pj4gICAgIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAqX190 eikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBhZGp0aW1lIChjb25zdCBzdHJ1Y3QgdGlt ZXZhbCAqX19kZWx0YSwKPj4+ICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX29sZGRlbHRhKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ IGVudW0gX19pdGltZXJfd2hpY2gKPj4+ICAgewo+Pj4KPj4+ICAgICBJVElNRVJfUkVBTCA9IDAs Cj4+Pgo+Pj4KPj4+ICAgICBJVElNRVJfVklSVFVBTCA9IDEsCj4+Pgo+Pj4KPj4+Cj4+PiAgICAg SVRJTUVSX1BST0YgPSAyCj4+Pgo+Pj4gICB9Owo+Pj4KPj4+Cj4+Pgo+Pj4gc3RydWN0IGl0aW1l cnZhbAo+Pj4gICB7Cj4+Pgo+Pj4gICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwo+Pj4K Pj4+ICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKPj4+ICAgfTsKPj4+Cj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+IHR5cGVkZWYgaW50IF9faXRpbWVyX3doaWNoX3Q7Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIGludCBnZXRpdGltZXIgKF9faXRpbWVyX3doaWNoX3QgX193aGljaCwKPj4+ ICAgICAgICAgc3RydWN0IGl0aW1lcnZhbCAqX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNldGl0 aW1lciAoX19pdGltZXJfd2hpY2hfdCBfX3doaWNoLAo+Pj4gICAgICAgICBjb25zdCBzdHJ1Y3Qg aXRpbWVydmFsICpfX3Jlc3RyaWN0IF9fbmV3LAo+Pj4gICAgICAgICBzdHJ1Y3QgaXRpbWVydmFs ICpfX3Jlc3RyaWN0IF9fb2xkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgdXRpbWVzIChjb25zdCBjaGFyICpf X2ZpbGUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZwWzJdKQo+Pj4gICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKTsKPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgbHV0aW1lcyAoY29uc3QgY2hhciAq X19maWxlLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCBfX3R2cFsyXSkKPj4+ICAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgZnV0aW1lcyAoaW50IF9fZmQsIGNvbnN0 IHN0cnVjdCB0aW1ldmFsIF9fdHZwWzJdKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pj4gIyAxODkgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKPj4+Cj4+ PiAjIDYxICJtYWNoaW5lLmMiIDIKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lcy5oIiAx IDMgNAo+Pj4gIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lcy5oIiAzIDQKPj4+Cj4+Pgo+Pj4K Pj4+IHN0cnVjdCB0bXMKPj4+ICAgewo+Pj4gICAgIGNsb2NrX3QgdG1zX3V0aW1lOwo+Pj4gICAg IGNsb2NrX3QgdG1zX3N0aW1lOwo+Pj4KPj4+ICAgICBjbG9ja190IHRtc19jdXRpbWU7Cj4+PiAg ICAgY2xvY2tfdCB0bXNfY3N0aW1lOwo+Pj4gICB9Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIGNsb2NrX3QgdGltZXMgKHN0cnVjdCB0bXMgKl9fYnVmZmVyKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+PiAjIDYyICJtYWNoaW5l LmMiIDIKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAxIDMgNAo+Pj4gIyAy NCAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRl L2JpdHMvcmVzb3VyY2UuaCIgMSAzIDQKPj4+ICMgMzEgIi91c3IvaW5jbHVkZS9iaXRzL3Jlc291 cmNlLmgiIDMgNAo+Pj4gZW51bSBfX3JsaW1pdF9yZXNvdXJjZQo+Pj4gewo+Pj4KPj4+ICAgUkxJ TUlUX0NQVSA9IDAsCj4+Pgo+Pj4KPj4+Cj4+PiAgIFJMSU1JVF9GU0laRSA9IDEsCj4+Pgo+Pj4K Pj4+Cj4+PiAgIFJMSU1JVF9EQVRBID0gMiwKPj4+Cj4+Pgo+Pj4KPj4+ICAgUkxJTUlUX1NUQUNL ID0gMywKPj4+Cj4+Pgo+Pj4KPj4+ICAgUkxJTUlUX0NPUkUgPSA0LAo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4gICBfX1JMSU1JVF9SU1MgPSA1LAo+Pj4KPj4+Cj4+Pgo+Pj4gICBSTElNSVRf Tk9GSUxFID0gNywKPj4+ICAgX19STElNSVRfT0ZJTEUgPSBSTElNSVRfTk9GSUxFLAo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+ICAgUkxJTUlUX0FTID0gOSwKPj4+Cj4+Pgo+Pj4KPj4+ICAgX19STElNSVRf TlBST0MgPSA2LAo+Pj4KPj4+Cj4+Pgo+Pj4gICBfX1JMSU1JVF9NRU1MT0NLID0gOCwKPj4+Cj4+ Pgo+Pj4KPj4+ICAgX19STElNSVRfTE9DS1MgPSAxMCwKPj4+Cj4+Pgo+Pj4KPj4+ICAgX19STElN SVRfU0lHUEVORElORyA9IDExLAo+Pj4KPj4+Cj4+Pgo+Pj4gICBfX1JMSU1JVF9NU0dRVUVVRSA9 IDEyLAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAgIF9fUkxJTUlUX05JQ0UgPSAxMywKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiAgIF9fUkxJTUlUX1JUUFJJTyA9IDE0LAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiAgIF9fUkxJTUlUX1JUVElNRSA9IDE1LAo+Pj4KPj4+Cj4+PiAgIF9fUkxJTUlUX05MSU1J VFMgPSAxNiwKPj4+ICAgX19STElNX05MSU1JVFMgPSBfX1JMSU1JVF9OTElNSVRTCj4+Pgo+Pj4K Pj4+IH07Cj4+PiAjIDEzMSAiL3Vzci9pbmNsdWRlL2JpdHMvcmVzb3VyY2UuaCIgMyA0Cj4+PiB0 eXBlZGVmIF9fcmxpbV90IHJsaW1fdDsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBz dHJ1Y3QgcmxpbWl0Cj4+PiAgIHsKPj4+Cj4+PiAgICAgcmxpbV90IHJsaW1fY3VyOwo+Pj4KPj4+ ICAgICBybGltX3QgcmxpbV9tYXg7Cj4+PiAgIH07Cj4+PiAjIDE1OCAiL3Vzci9pbmNsdWRlL2Jp dHMvcmVzb3VyY2UuaCIgMyA0Cj4+PiBlbnVtIF9fcnVzYWdlX3dobwo+Pj4gewo+Pj4KPj4+ICAg UlVTQUdFX1NFTEYgPSAwLAo+Pj4KPj4+Cj4+Pgo+Pj4gICBSVVNBR0VfQ0hJTERSRU4gPSAtMQo+ Pj4gIyAxNzYgIi91c3IvaW5jbHVkZS9iaXRzL3Jlc291cmNlLmgiIDMgNAo+Pj4gfTsKPj4+Cj4+ Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMyA0Cj4+PiAjIDE4MCAiL3Vz ci9pbmNsdWRlL2JpdHMvcmVzb3VyY2UuaCIgMiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+Cj4+PiBzdHJ1Y3QgcnVzYWdlCj4+PiAgIHsKPj4+Cj4+PiAgICAgc3RydWN0IHRpbWV2YWwg cnVfdXRpbWU7Cj4+Pgo+Pj4gICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwo+Pj4KPj4+ICAg ICBfX2V4dGVuc2lvbl9fIHVuaW9uCj4+PiAgICAgICB7Cj4+PiAgbG9uZyBpbnQgcnVfbWF4cnNz Owo+Pj4gIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbWF4cnNzX3dvcmQ7Cj4+PiAgICAgICB9Owo+ Pj4KPj4+Cj4+Pgo+Pj4gICAgIF9fZXh0ZW5zaW9uX18gdW5pb24KPj4+ICAgICAgIHsKPj4+ICBs b25nIGludCBydV9peHJzczsKPj4+ICBfX3N5c2NhbGxfc2xvbmdfdCBfX3J1X2l4cnNzX3dvcmQ7 Cj4+PiAgICAgICB9Owo+Pj4KPj4+ICAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCj4+PiAgICAgICB7 Cj4+PiAgbG9uZyBpbnQgcnVfaWRyc3M7Cj4+PiAgX19zeXNjYWxsX3Nsb25nX3QgX19ydV9pZHJz c193b3JkOwo+Pj4gICAgICAgfTsKPj4+Cj4+PiAgICAgX19leHRlbnNpb25fXyB1bmlvbgo+Pj4g ICAgICAgewo+Pj4gIGxvbmcgaW50IHJ1X2lzcnNzOwo+Pj4gICBfX3N5c2NhbGxfc2xvbmdfdCBf X3J1X2lzcnNzX3dvcmQ7Cj4+PiAgICAgICB9Owo+Pj4KPj4+Cj4+PiAgICAgX19leHRlbnNpb25f XyB1bmlvbgo+Pj4gICAgICAgewo+Pj4gIGxvbmcgaW50IHJ1X21pbmZsdDsKPj4+ICBfX3N5c2Nh bGxfc2xvbmdfdCBfX3J1X21pbmZsdF93b3JkOwo+Pj4gICAgICAgfTsKPj4+Cj4+PiAgICAgX19l eHRlbnNpb25fXyB1bmlvbgo+Pj4gICAgICAgewo+Pj4gIGxvbmcgaW50IHJ1X21hamZsdDsKPj4+ ICBfX3N5c2NhbGxfc2xvbmdfdCBfX3J1X21hamZsdF93b3JkOwo+Pj4gICAgICAgfTsKPj4+Cj4+ PiAgICAgX19leHRlbnNpb25fXyB1bmlvbgo+Pj4gICAgICAgewo+Pj4gIGxvbmcgaW50IHJ1X25z d2FwOwo+Pj4gIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbnN3YXBfd29yZDsKPj4+ICAgICAgIH07 Cj4+Pgo+Pj4KPj4+ICAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCj4+PiAgICAgICB7Cj4+PiAgbG9u ZyBpbnQgcnVfaW5ibG9jazsKPj4+ICBfX3N5c2NhbGxfc2xvbmdfdCBfX3J1X2luYmxvY2tfd29y ZDsKPj4+ICAgICAgIH07Cj4+Pgo+Pj4gICAgIF9fZXh0ZW5zaW9uX18gdW5pb24KPj4+ICAgICAg IHsKPj4+ICBsb25nIGludCBydV9vdWJsb2NrOwo+Pj4gIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVf b3VibG9ja193b3JkOwo+Pj4gICAgICAgfTsKPj4+Cj4+PiAgICAgX19leHRlbnNpb25fXyB1bmlv bgo+Pj4gICAgICAgewo+Pj4gIGxvbmcgaW50IHJ1X21zZ3NuZDsKPj4+ICBfX3N5c2NhbGxfc2xv bmdfdCBfX3J1X21zZ3NuZF93b3JkOwo+Pj4gICAgICAgfTsKPj4+Cj4+PiAgICAgX19leHRlbnNp b25fXyB1bmlvbgo+Pj4gICAgICAgewo+Pj4gIGxvbmcgaW50IHJ1X21zZ3JjdjsKPj4+ICBfX3N5 c2NhbGxfc2xvbmdfdCBfX3J1X21zZ3Jjdl93b3JkOwo+Pj4gICAgICAgfTsKPj4+Cj4+PiAgICAg X19leHRlbnNpb25fXyB1bmlvbgo+Pj4gICAgICAgewo+Pj4gIGxvbmcgaW50IHJ1X25zaWduYWxz Owo+Pj4gIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbnNpZ25hbHNfd29yZDsKPj4+ICAgICAgIH07 Cj4+Pgo+Pj4KPj4+Cj4+PiAgICAgX19leHRlbnNpb25fXyB1bmlvbgo+Pj4gICAgICAgewo+Pj4g IGxvbmcgaW50IHJ1X252Y3N3Owo+Pj4gIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbnZjc3dfd29y ZDsKPj4+ICAgICAgIH07Cj4+Pgo+Pj4KPj4+ICAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCj4+PiAg ICAgICB7Cj4+PiAgbG9uZyBpbnQgcnVfbml2Y3N3Owo+Pj4gIF9fc3lzY2FsbF9zbG9uZ190IF9f cnVfbml2Y3N3X3dvcmQ7Cj4+PiAgICAgICB9Owo+Pj4gICB9Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+IGVudW0gX19wcmlvcml0eV93aGljaAo+Pj4gewo+Pj4gICBQUklPX1BST0NF U1MgPSAwLAo+Pj4KPj4+ICAgUFJJT19QR1JQID0gMSwKPj4+Cj4+PiAgIFBSSU9fVVNFUiA9IDIK Pj4+Cj4+PiB9Owo+Pj4KPj4+Cj4+Pgo+Pj4gIyAzMjggIi91c3IvaW5jbHVkZS9iaXRzL3Jlc291 cmNlLmgiIDMgNAo+Pj4KPj4+ICMgMjUgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMiAz IDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAjIDQyICIvdXNyL2luY2x1ZGUvc3lz L3Jlc291cmNlLmgiIDMgNAo+Pj4gdHlwZWRlZiBpbnQgX19ybGltaXRfcmVzb3VyY2VfdDsKPj4+ IHR5cGVkZWYgaW50IF9fcnVzYWdlX3dob190Owo+Pj4gdHlwZWRlZiBpbnQgX19wcmlvcml0eV93 aGljaF90Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGdldHJsaW1pdCAoX19y bGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAo+Pj4gICAgICAgICBzdHJ1Y3QgcmxpbWl0ICpf X3JsaW1pdHMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiAj IDY5ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBzZXRy bGltaXQgKF9fcmxpbWl0X3Jlc291cmNlX3QgX19yZXNvdXJjZSwKPj4+ICAgICAgICAgY29uc3Qg c3RydWN0IHJsaW1pdCAqX19ybGltaXRzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pj4gIyA4NyAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKPj4+ IGV4dGVybiBpbnQgZ2V0cnVzYWdlIChfX3J1c2FnZV93aG9fdCBfX3dobywgc3RydWN0IHJ1c2Fn ZSAqX191c2FnZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBnZXRwcmlvcml0eSAoX19wcmlvcml0eV93 aGljaF90IF9fd2hpY2gsIGlkX3QgX193aG8pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IHNldHByaW9yaXR5IChfX3By aW9yaXR5X3doaWNoX3QgX193aGljaCwgaWRfdCBfX3dobywgaW50IF9fcHJpbykKPj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gIyA2 MyAibWFjaGluZS5jIiAyCj4+PiAjIDcxICJtYWNoaW5lLmMiCj4+PiAjIDEgImVuZ2luZV9wbC5o IiAxCj4+PiAjIDQwICJlbmdpbmVfcGwuaCIKPj4+ICMgMSAicGxfcGFyYW1zLmgiIDEKPj4+ICMg NDEgImVuZ2luZV9wbC5oIiAyCj4+PiAjIDEgImhhc2hfZmN0LmgiIDEKPj4+ICMgNTMgImhhc2hf ZmN0LmgiCj4+Pgo+Pj4gIyA1MyAiaGFzaF9mY3QuaCIKPj4+IHR5cGVkZWYgc3RydWN0Cj4+PiB7 Cj4+PiAgIGludCBsZW47Cj4+PiAgIHVpbnQzMl90IGhhc2g7Cj4+PiB9IEhhc2hJbmNySW5mbzsK Pj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiB1aW50MzJfdCBQbF9IYXNoX0J1ZmZlcihj b25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKTsKPj4+Cj4+PiB2b2lkIFBsX0hhc2hfSW5jcl9Jbml0 KEhhc2hJbmNySW5mbyAqaGkpOwo+Pj4KPj4+IHZvaWQgUGxfSGFzaF9JbmNyX0J1ZmZlcihIYXNo SW5jckluZm8gKmhpLCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKTsKPj4+Cj4+PiB2b2lkIFBs X0hhc2hfSW5jcl9JbnQzMihIYXNoSW5jckluZm8gKmhpLCB1aW50MzJfdCB4KTsKPj4+Cj4+PiB2 b2lkIFBsX0hhc2hfSW5jcl9JbnQ2NChIYXNoSW5jckluZm8gKmhpLCB1aW50NjRfdCB4KTsKPj4+ Cj4+PiB2b2lkIFBsX0hhc2hfSW5jcl9Eb3VibGUoSGFzaEluY3JJbmZvICpoaSwgZG91YmxlIHgp Owo+Pj4KPj4+IHVpbnQzMl90IFBsX0hhc2hfSW5jcl9UZXJtKEhhc2hJbmNySW5mbyAqaGkpOwo+ Pj4gIyA0MiAiZW5naW5lX3BsLmgiIDIKPj4+ICMgMSAiaGFzaC5oIiAxCj4+PiAjIDQ4ICJoYXNo LmgiCj4+PiB0eXBlZGVmIHN0cnVjdAo+Pj4gewo+Pj4gICBjaGFyICplbmR0Owo+Pj4gICBjaGFy ICpjdXJfdDsKPj4+ICAgY2hhciAqY3VyX3A7Cj4+PiB9Cj4+PiBIYXNoU2NhbjsKPj4+ICMgNjcg Imhhc2guaCIKPj4+IGNoYXIgKlBsX0hhc2hfQWxsb2NfVGFibGUoaW50IHRibF9zaXplLCBpbnQg ZWxlbV9zaXplKTsKPj4+Cj4+PiB2b2lkIFBsX0hhc2hfRnJlZV9UYWJsZShjaGFyICp0YmwpOwo+ Pj4KPj4+IGNoYXIgKlBsX0hhc2hfUmVhbGxvY19UYWJsZShjaGFyICp0YmwsIGludCBuZXdfdGJs X3NpemUpOwo+Pj4KPj4+IHZvaWQgUGxfSGFzaF9EZWxldGVfQWxsKGNoYXIgKnRibCk7Cj4+Pgo+ Pj4gY2hhciAqUGxfSGFzaF9JbnNlcnQoY2hhciAqdGJsLCBjaGFyICplbGVtLCBpbnQgcmVwbGFj ZSk7Cj4+Pgo+Pj4gY2hhciAqUGxfSGFzaF9GaW5kKGNoYXIgKnRibCwgUGxMb25nIGtleSk7Cj4+ Pgo+Pj4gY2hhciAqUGxfSGFzaF9EZWxldGUoY2hhciAqdGJsLCBQbExvbmcga2V5KTsKPj4+Cj4+ PiBjaGFyICpQbF9IYXNoX0ZpcnN0KGNoYXIgKnRibCwgSGFzaFNjYW4gKnNjYW4pOwo+Pj4KPj4+ IGNoYXIgKlBsX0hhc2hfTmV4dChIYXNoU2NhbiAqc2Nhbik7Cj4+Pgo+Pj4gaW50IFBsX0hhc2hf VGFibGVfU2l6ZShjaGFyICp0YmwpOwo+Pj4KPj4+IGludCBQbF9IYXNoX05iX0VsZW1lbnRzKGNo YXIgKnRibCk7Cj4+PiAjIDQzICJlbmdpbmVfcGwuaCIgMgo+Pj4gIyAxICJib29sLmgiIDEKPj4+ ICMgNjUgImJvb2wuaCIKPj4+IHR5cGVkZWYgaW50IEJvb2w7Cj4+PiAjIDQ0ICJlbmdpbmVfcGwu aCIgMgo+Pj4gIyAxICJ3YW1fcmVncy5oIiAxCj4+PiAjIDQ1ICJlbmdpbmVfcGwuaCIgMgo+Pj4g IyAxICJ3YW1fYXJjaGkuaCIgMQo+Pj4gIyA0NCAid2FtX2FyY2hpLmgiCj4+PiB0eXBlZGVmIGlu dHB0cl90IFdhbVdvcmQ7Cj4+Pgo+Pj4gdHlwZWRlZiB2b2lkICgqQ29kZVB0cikgKCk7Cj4+Pgo+ Pj4gdHlwZWRlZiBDb2RlUHRyIFdhbUNvbnQ7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiB0 eXBlZGVmIFdhbVdvcmQgKldhbVdvcmRQOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gcmVn aXN0ZXIgV2FtV29yZFAgVFIgYXNtICgiZWJ4Iik7Cj4+PiAjIDk2ICJ3YW1fYXJjaGkuaCIKPj4+ IGV4dGVybiBXYW1Xb3JkIHBsX3JlZ19iYW5rW107Cj4+PiBleHRlcm4gV2FtV29yZCBwbF9idWZm X3NpZ25hbF9yZWdbXTsKPj4+Cj4+PiBleHRlcm4gY2hhciAqcGxfcmVnX3RibFtdOwo+Pj4gIyAy NzAgIndhbV9hcmNoaS5oIgo+Pj4gdHlwZWRlZiBlbnVtCj4+PiB7Cj4+PiAgIExPTkdfSU5ULAo+ Pj4gICBTSE9SVF9VTlMsCj4+PiAgIEFERFJFU1MKPj4+IH1UeXBUYWc7Cj4+Pgo+Pj4gdHlwZWRl ZiBzdHJ1Y3QKPj4+IHsKPj4+ICAgY2hhciAqbmFtZTsKPj4+ICAgVHlwVGFnIHR5cGU7Cj4+PiAg IGludCB2YWx1ZTsKPj4+ICAgUGxMb25nIHRhZ19tYXNrOwo+Pj4gfUluZlRhZzsKPj4+ICMgMzAx ICJ3YW1fYXJjaGkuaCIKPj4+IGV4dGVybiBJbmZUYWcgcGxfdGFnX3RibFtdOwo+Pj4gIyAzMjgg IndhbV9hcmNoaS5oIgo+Pj4gIyAxICJ3YW1fc3RhY2tzLmgiIDEKPj4+ICMgMjcgIndhbV9zdGFj a3MuaCIKPj4+IHR5cGVkZWYgc3RydWN0Cj4+PiB7Cj4+PiAgIGNoYXIgKm5hbWU7Cj4+PiAgIGNo YXIgKmRlc2M7Cj4+PiAgIGNoYXIgKmVudl92YXJfbmFtZTsKPj4+ICAgUGxMb25nICpwX2RlZl9z aXplOwo+Pj4gICBpbnQgZGVmYXVsdF9zaXplOwo+Pj4gICBpbnQgc2l6ZTsKPj4+ICAgV2FtV29y ZCAqc3RhY2s7Cj4+PiB9SW5mU3RhY2s7Cj4+PiAjIDU4ICJ3YW1fc3RhY2tzLmgiCj4+PiBleHRl cm4gUGxMb25nIHBsX2RlZl90cmFpbF9zaXplOwo+Pj4gZXh0ZXJuIFBsTG9uZyBwbF9kZWZfY3N0 cl9zaXplOwo+Pj4gZXh0ZXJuIFBsTG9uZyBwbF9kZWZfZ2xvYmFsX3NpemU7Cj4+PiBleHRlcm4g UGxMb25nIHBsX2RlZl9sb2NhbF9zaXplOwo+Pj4gZXh0ZXJuIFBsTG9uZyBwbF9maXhlZF9zaXpl czsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIEluZlN0YWNrIHBsX3N0a190YmxbXTsKPj4+ICMgMzI5ICJ3 YW1fYXJjaGkuaCIgMgo+Pj4gIyA0NiAiZW5naW5lX3BsLmgiIDIKPj4+ICMgMSAiZW5naW5lLmgi IDEKPj4+ICMgODcgImVuZ2luZS5oIgo+Pj4gZXh0ZXJuIGludCBwbF9vc19hcmdjOwo+Pj4gZXh0 ZXJuIGNoYXIgKipwbF9vc19hcmd2Owo+Pj4KPj4+IGV4dGVybiBjaGFyICpwbF9ob21lOwo+Pj4g ZXh0ZXJuIGludCBwbF9kZXZlbF9tb2RlOwo+Pj4KPj4+IGV4dGVybiBjaGFyIHBsX2dsb2JfYnVm ZltdOwo+Pj4KPj4+IGV4dGVybiBQbExvbmcgKnBsX2Jhc2VfZmw7Cj4+PiBleHRlcm4gZG91Ymxl ICpwbF9iYXNlX2ZkOwo+Pj4KPj4+IGV4dGVybiBpbnQgcGxfbGVfbW9kZTsKPj4+ICMgMTA4ICJl bmdpbmUuaCIKPj4+IGludCBQbF9TdGFydF9Qcm9sb2coaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7 Cj4+Pgo+Pj4gdm9pZCBQbF9TdG9wX1Byb2xvZyh2b2lkKTsKPj4+Cj4+PiB2b2lkIFBsX1Jlc2V0 X1Byb2xvZyh2b2lkKTsKPj4+Cj4+PiB2b2lkIFBsX1Jlc2V0X1Byb2xvZ19Jbl9TaWduYWwodm9p ZCk7Cj4+Pgo+Pj4gdm9pZCBQbF9TZXRfSGVhcF9BY3R1YWxfU3RhcnQoV2FtV29yZCAqaGVhcF9h Y3R1YWxfc3RhcnQpOwo+Pj4KPj4+Cj4+Pgo+Pj4gdm9pZCBQbF9FeGVjdXRlX0RpcmVjdGl2ZShp bnQgcGxfZmlsZSwgaW50IHBsX2xpbmUsIEJvb2wgaXNfc3lzdGVtLAo+Pj4gICAgICBDb2RlUHRy IHByb2MpOwo+Pj4KPj4+IEJvb2wgUGxfVHJ5X0V4ZWN1dGVfVG9wX0xldmVsKHZvaWQpOwo+Pj4K Pj4+IEJvb2wgUGxfQ2FsbF9Qcm9sb2coQ29kZVB0ciBjb2RlcCk7Cj4+Pgo+Pj4gQm9vbCBQbF9D YWxsX1Byb2xvZ19OZXh0X1NvbChXYW1Xb3JkICpxdWVyeV9iKTsKPj4+Cj4+PiB2b2lkIFBsX0tl ZXBfUmVzdF9Gb3JfUHJvbG9nKFdhbVdvcmQgKnF1ZXJ5X2IpOwo+Pj4KPj4+IHZvaWQgUGxfRXhp dF9XaXRoX0V4Y2VwdGlvbih2b2lkKTsKPj4+Cj4+PiB2b2lkIFBsX0V4ZWN1dGVfQV9Db250aW51 YXRpb24oQ29kZVB0ciBjb2RlcCk7Cj4+PiAjIDQ3ICJlbmdpbmVfcGwuaCIgMgo+Pj4gIyAxICJh dG9tLmgiIDEKPj4+ICMgOTcgImF0b20uaCIKPj4+IHR5cGVkZWYgc3RydWN0Cj4+PiB7Cj4+PiAg IHVuc2lnbmVkIGxlbmd0aDoxNjsKPj4+ICAgdW5zaWduZWQgb3BfbWFzazo0Owo+Pj4gICB1bnNp Z25lZCB0eXBlOjI7Cj4+PiAgIHVuc2lnbmVkIG5lZWRzX3F1b3RlOjE7Cj4+PiAgIHVuc2lnbmVk IG5lZWRzX3NjYW46MTsKPj4+IH0KPj4+IEF0b21Qcm9wOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHR5 cGVkZWYgc3RydWN0Cj4+PiB7Cj4+PiAgIGNoYXIgKm5hbWU7Cj4+PiAgIHVuc2lnbmVkIGhhc2g7 Cj4+PiAgIEF0b21Qcm9wIHByb3A7Cj4+PiAgIHZvaWQgKmluZm87Cj4+PiB9Cj4+PiBBdG9tSW5m Owo+Pj4gIyAxNTMgImF0b20uaCIKPj4+IGV4dGVybiBBdG9tSW5mICpwbF9hdG9tX3RibDsKPj4+ IGV4dGVybiBpbnQgcGxfbWF4X2F0b207Cj4+PiBleHRlcm4gaW50IHBsX25iX2F0b207Cj4+Pgo+ Pj4gZXh0ZXJuIGludCBwbF9hdG9tX3ZvaWQ7Cj4+PiBleHRlcm4gaW50IHBsX2F0b21fY3VybHlf YnJhY2tldHM7Cj4+Pgo+Pj4gZXh0ZXJuIGludCBwbF9hdG9tX2ZhbHNlOwo+Pj4gZXh0ZXJuIGlu dCBwbF9hdG9tX3RydWU7Cj4+Pgo+Pj4gZXh0ZXJuIGludCBwbF9hdG9tX2VuZF9vZl9maWxlOwo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hhciBwbF9jaGFyX2NvbnZbXTsKPj4+IGV4 dGVybiBpbnQgcGxfY2hhcl90eXBlW107Cj4+Pgo+Pj4gZXh0ZXJuIGNoYXIgcGxfZXNjYXBlX3N5 bWJvbFtdOwo+Pj4gZXh0ZXJuIGNoYXIgcGxfZXNjYXBlX2NoYXJbXTsKPj4+Cj4+Pgo+Pj4KPj4+ IFBsTG9uZyBwbF9kZWZfbWF4X2F0b207Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4g dm9pZCBQbF9Jbml0X0F0b20odm9pZCk7Cj4+Pgo+Pj4gaW50IFBsX0NyZWF0ZV9BbGxvY2F0ZV9B dG9tKGNoYXIgKm5hbWUpOwo+Pj4KPj4+IGludCBQbF9DcmVhdGVfQXRvbShjaGFyICpuYW1lKTsK Pj4+Cj4+PiBXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9DcmVhdGVfQXRv bV9UYWdnZWQoY2hhciAqbmFtZSk7Cj4+Pgo+Pj4gaW50IFBsX0ZpbmRfQXRvbShjaGFyICpuYW1l KTsKPj4+Cj4+PiBpbnQgUGxfR2VuX05ld19BdG9tKGNoYXIgKnByZWZpeCk7Cj4+Pgo+Pj4gaW50 IFBsX0ZpbmRfTmV4dF9BdG9tKGludCBsYXN0X2F0b20pOwo+Pj4gIyA0OCAiZW5naW5lX3BsLmgi IDIKPj4+ICMgMSAicHJlZC5oIiAxCj4+PiAjIDYyICJwcmVkLmgiCj4+PiB0eXBlZGVmIHN0cnVj dAo+Pj4gewo+Pj4gICBQbExvbmcgZl9uOwo+Pj4gICBpbnQgcGxfZmlsZTsKPj4+ICAgaW50IHBs X2xpbmU7Cj4+PiAgIGludCBwcm9wOwo+Pj4gICBQbExvbmcgKmNvZGVwOwo+Pj4gICBQbExvbmcg KmR5bjsKPj4+IH0KPj4+IFByZWRJbmY7Cj4+PiAjIDg2ICJwcmVkLmgiCj4+PiBleHRlcm4gY2hh ciAqcGxfcHJlZF90Ymw7Cj4+PiAjIDk3ICJwcmVkLmgiCj4+PiB2b2lkIFBsX0luaXRfUHJlZCh2 b2lkKTsKPj4+Cj4+PiBQcmVkSW5mICogX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0Ny ZWF0ZV9QcmVkKGludCBmdW5jLCBpbnQgYXJpdHksIGludCBwbF9maWxlLCBpbnQgcGxfbGluZSwK Pj4+ICAgICAgICBpbnQgcHJvcCwgUGxMb25nICpjb2RlcCk7Cj4+Pgo+Pj4gUHJlZEluZiAqIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Mb29rdXBfUHJlZChpbnQgZnVuYywgaW50IGFy aXR5KTsKPj4+Cj4+PiB2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9EZWxldGVf UHJlZChpbnQgZnVuYywgaW50IGFyaXR5KTsKPj4+ICMgNDkgImVuZ2luZV9wbC5oIiAyCj4+PiAj IDEgIm1pc2MuaCIgMQo+Pj4gIyA1NyAibWlzYy5oIgo+Pj4gY2hhciAqUGxfTWFsbG9jX0NoZWNr KHVuc2lnbmVkIHNpemUsIGNoYXIgKnNyY19maWxlLCBpbnQgc3JjX2xpbmUpOwo+Pj4KPj4+IGNo YXIgKlBsX0NhbGxvY19DaGVjayh1bnNpZ25lZCBuYiwgdW5zaWduZWQgc2l6ZSwgY2hhciAqc3Jj X2ZpbGUsCj4+PiAgICAgIGludCBzcmNfbGluZSk7Cj4+Pgo+Pj4gY2hhciAqUGxfUmVhbGxvY19D aGVjayhjaGFyICpwdHIsIHVuc2lnbmVkIHNpemUsIGNoYXIgKnNyY19maWxlLCBpbnQgc3JjX2xp bmUpOwo+Pj4KPj4+IGNoYXIgKlBsX1N0cmR1cF9DaGVjayhjaGFyICpzdHIsIGNoYXIgKnNyY19m aWxlLCBpbnQgc3JjX2xpbmUpOwo+Pj4gIyA3NiAibWlzYy5oIgo+Pj4gdm9pZCBQbF9FeHRlbmRf VGFibGVfSWZfTmVlZGVkKGNoYXIgKipoYXNoX3RibCk7Cj4+Pgo+Pj4gdm9pZCBQbF9FeHRlbmRf QXJyYXkoY2hhciAqKnB0YmwsIGludCAqbmJfZWxlbSwgaW50IGVsZW1fc2l6ZSwgQm9vbCBiemVy byk7Cj4+Pgo+Pj4gdm9pZCBQbF9FeGl0X1dpdGhfVmFsdWUoaW50IHJldF92YWwpOwo+Pj4KPj4+ IHZvaWQgUGxfRmF0YWxfRXJyb3IoY2hhciAqZm9ybWF0LCAuLi4pOwo+Pj4gIyAxMTQgIm1pc2Mu aCIKPj4+IHZvaWQgKlBsX0R1bW15X1B0cih2b2lkICpwKTsKPj4+ICMgNTAgImVuZ2luZV9wbC5o IiAyCj4+PiAjIDEgIm9wZXIuaCIgMQo+Pj4gIyA3MiAib3Blci5oIgo+Pj4gdHlwZWRlZiBzdHJ1 Y3QKPj4+IHsKPj4+ICAgUGxMb25nIGFfdDsKPj4+ICAgaW50IHByZWM7Cj4+PiAgIGludCBsZWZ0 Owo+Pj4gICBpbnQgcmlnaHQ7Cj4+PiB9Cj4+PiBPcGVySW5mOwo+Pj4gIyA5NCAib3Blci5oIgo+ Pj4gZXh0ZXJuIGNoYXIgKnBsX29wZXJfdGJsOwo+Pj4gIyAxMDMgIm9wZXIuaCIKPj4+IHZvaWQg UGxfSW5pdF9PcGVyKHZvaWQpOwo+Pj4KPj4+IE9wZXJJbmYgKlBsX0NyZWF0ZV9PcGVyKGludCBh dG9tX29wLCBpbnQgdHlwZSwgaW50IHByZWMsIGludCBsZWZ0LCBpbnQgcmlnaHQpOwo+Pj4KPj4+ IE9wZXJJbmYgKlBsX0xvb2t1cF9PcGVyKGludCBhdG9tX29wLCBpbnQgdHlwZSk7Cj4+Pgo+Pj4g T3BlckluZiAqUGxfTG9va3VwX09wZXJfQW55X1R5cGUoaW50IGF0b21fb3ApOwo+Pj4KPj4+IE9w ZXJJbmYgKlBsX0RlbGV0ZV9PcGVyKGludCBhdG9tX29wLCBpbnQgdHlwZSk7Cj4+PiAjIDUxICJl bmdpbmVfcGwuaCIgMgo+Pj4gIyAxICJtYWNoaW5lMS5oIiAxCj4+PiAjIDcwICJtYWNoaW5lMS5o Igo+Pj4gZXh0ZXJuIGludCBwbF9tX29zX3R5cGU7Cj4+PiBleHRlcm4gY2hhciBwbF9tX2FyY2hp dGVjdHVyZVtdOwo+Pj4gZXh0ZXJuIGNoYXIgcGxfbV9vc192ZXJzaW9uW107Cj4+PiAjIDgzICJt YWNoaW5lMS5oIgo+Pj4gdm9pZCBQbF9Jbml0X01hY2hpbmUxKHZvaWQpOwo+Pj4KPj4+IGNoYXIg KipQbF9NX0NyZWF0ZV9TaGVsbF9Db21tYW5kKGNoYXIgKmNtZCk7Cj4+Pgo+Pj4gY2hhciAqKlBs X01fQ21kX0xpbmVfVG9fQXJndihjaGFyICpjbWQsIGludCAqYXJnYyk7Cj4+Pgo+Pj4gaW50IFBs X01fU2hlbGwoY2hhciAqY21kKTsKPj4+Cj4+PiBpbnQgUGxfTV9TcGF3bihjaGFyICphcmdbXSk7 Cj4+Pgo+Pj4gaW50IFBsX01fU3Bhd25fUmVkaXJlY3QoY2hhciAqYXJnW10sIGludCBkZXRhY2gs Cj4+PiAgICAgICAgRklMRSAqKmZfaW4sIEZJTEUgKipmX291dCwgRklMRSAqKmZfZXJyKTsKPj4+ Cj4+PiBpbnQgUGxfTV9HZXRfU3RhdHVzKGludCBwaWQpOwo+Pj4KPj4+Cj4+Pgo+Pj4gY2hhciAq UGxfTV9Na3RlbXAoY2hhciAqdG1wX3RlbXBsYXRlKTsKPj4+Cj4+PiBjaGFyICpQbF9NX1RlbXBu YW0oY2hhciAqZGlyLCBjaGFyICpwZngpOwo+Pj4gIyA1MiAiZW5naW5lX3BsLmgiIDIKPj4+ICMg MSAibWFjaGluZS5oIiAxCj4+PiAjIDYxICJtYWNoaW5lLmgiCj4+PiB2b2lkIFBsX0luaXRfTWFj aGluZSh2b2lkKTsKPj4+Cj4+PiBjaGFyICpQbF9NX1N5c19FcnJfU3RyaW5nKGludCByZXRfdmFs KTsKPj4+Cj4+PiBQbExvbmcgUGxfTV9Vc2VyX1RpbWUodm9pZCk7Cj4+Pgo+Pj4gUGxMb25nIFBs X01fU3lzdGVtX1RpbWUodm9pZCk7Cj4+Pgo+Pj4gUGxMb25nIFBsX01fUmVhbF9UaW1lKHZvaWQp Owo+Pj4KPj4+IHZvaWQgUGxfTV9SYW5kb21pemUodm9pZCk7Cj4+Pgo+Pj4gdm9pZCBQbF9NX1Nl dF9TZWVkKGludCBuKTsKPj4+Cj4+PiBpbnQgUGxfTV9HZXRfU2VlZCh2b2lkKTsKPj4+Cj4+PiBp bnQgUGxfTV9SYW5kb21fSW50ZWdlcihpbnQgbik7Cj4+Pgo+Pj4gZG91YmxlIFBsX01fUmFuZG9t X0Zsb2F0KGRvdWJsZSBuKTsKPj4+Cj4+Pgo+Pj4KPj4+IGNoYXIgKlBsX01fSG9zdF9OYW1lX0Zy b21fTmFtZShjaGFyICpob3N0X25hbWUpOwo+Pj4KPj4+IGNoYXIgKlBsX01fSG9zdF9OYW1lX0Zy b21fQWRyKGNoYXIgKmhvc3RfYWRkcmVzcyk7Cj4+Pgo+Pj4gY2hhciAqUGxfTV9HZXRfV29ya2lu Z19EaXIodm9pZCk7Cj4+Pgo+Pj4gQm9vbCBQbF9NX1NldF9Xb3JraW5nX0RpcihjaGFyICpwYXRo KTsKPj4+Cj4+PiBjaGFyICpQbF9NX0Fic29sdXRlX1BhdGhfTmFtZShjaGFyICpzcmMpOwo+Pj4K Pj4+IEJvb2wgUGxfTV9Jc19BYnNvbHV0ZV9GaWxlX05hbWUoY2hhciAqcGF0aCk7Cj4+Pgo+Pj4g Y2hhciAqUGxfTV9EZWNvbXBvc2VfRmlsZV9OYW1lKGNoYXIgKnBhdGgsIEJvb2wgZGVsX3RyYWls X3NsYXNoZXMsCj4+PiAgICAgICAgICAgY2hhciAqKmJhc2UsIGNoYXIgKipzdWZmaXgpOwo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHZvaWQgTV9DaGVja19NYWdpY19Xb3Jkcyh2b2lk KTsKPj4+ICMgNTMgImVuZ2luZV9wbC5oIiAyCj4+PiAjIDEgInN0YWNrc19zaWdzZWd2LmgiIDEK Pj4+ICMgNTAgInN0YWNrc19zaWdzZWd2LmgiCj4+PiB0eXBlZGVmIGludCAoKlNlZ3ZIZGxyKSh2 b2lkICpiYWRfYWRkcik7Cj4+PiAjIDYwICJzdGFja3Nfc2lnc2Vndi5oIgo+Pj4gdm9pZCBQbF9B bGxvY2F0ZV9TdGFja3Modm9pZCk7Cj4+Pgo+Pj4gdm9pZCBQbF9QdXNoX1NJR1NFR1ZfSGFuZGxl cihTZWd2SGRsciBoYW5kbGVyKTsKPj4+Cj4+PiB2b2lkIFBsX1BvcF9TSUdTRUdWX0hhbmRsZXIo dm9pZCk7Cj4+PiAjIDU0ICJlbmdpbmVfcGwuaCIgMgo+Pj4gIyAxICJvYmpfY2hhaW4uaCIgMQo+ Pj4gIyA1OCAib2JqX2NoYWluLmgiCj4+PiB2b2lkIFBsX0ZpbmRfTGlua2VkX09iamVjdHModm9p ZCk7Cj4+Pgo+Pj4gdm9pZCBQbF9OZXdfT2JqZWN0KHZvaWQgKCpmY3Rfb2JqX2luaXQpKCksIHZv aWQgKCpmY3RfZXhlY19zeXN0ZW0pICgpLCB2b2lkICgqZmN0X2V4ZWNfdXNlcikgKCkpOwo+Pj4g IyA1NSAiZW5naW5lX3BsLmgiIDIKPj4+ICMgMSAid2FtX2luc3QuaCIgMQo+Pj4gIyAyNDkgIndh bV9pbnN0LmgiCj4+PiB0eXBlZGVmIHN0cnVjdAo+Pj4gewo+Pj4gICBQbExvbmcga2V5Owo+Pj4g ICBDb2RlUHRyIGNvZGVwOwo+Pj4gfQo+Pj4gU3d0SW5mOwo+Pj4KPj4+IHR5cGVkZWYgU3d0SW5m ICpTd3RUYmw7Cj4+PiAjIDI2OSAid2FtX2luc3QuaCIKPj4+IFdhbVdvcmQgX19hdHRyaWJ1dGVf XygocmVncGFybSgzKSkpIFBsX0NyZWF0ZV9GdW5jdG9yX0FyaXR5X1RhZ2dlZChjaGFyICpmdW5j X3N0ciwgaW50IGFyaXR5KTsKPj4+Cj4+PiBTd3RUYmwgX19hdHRyaWJ1dGVfXygocmVncGFybSgz KSkpIFBsX0NyZWF0ZV9Td3RfVGFibGUoaW50IHNpemUpOwo+Pj4KPj4+IHZvaWQgX19hdHRyaWJ1 dGVfXygocmVncGFybSgzKSkpIFBsX0NyZWF0ZV9Td3RfQXRtX0VsZW1lbnQoU3d0VGJsIHQsIGlu dCBzaXplLCBpbnQgYXRvbSwgQ29kZVB0ciBjb2RlcCk7Cj4+Pgo+Pj4gdm9pZCBfX2F0dHJpYnV0 ZV9fKChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX1N3dF9TdGNfRWxlbWVudChTd3RUYmwgdCwgaW50 IHNpemUsIGludCBmdW5jLCBpbnQgYXJpdHksCj4+PiAgICAgICAgQ29kZVB0ciBjb2RlcCk7Cj4+ Pgo+Pj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2V0X0F0b21fVGFnZ2Vk KFdhbVdvcmQgdywgV2FtV29yZCBzdGFydF93b3JkKTsKPj4+Cj4+PiBCb29sIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMykpKSBQbF9HZXRfQXRvbShpbnQgYXRvbSwgV2FtV29yZCBzdGFydF93b3Jk KTsKPj4+Cj4+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9HZXRfSW50ZWdl cl9UYWdnZWQoV2FtV29yZCB3LCBXYW1Xb3JkIHN0YXJ0X3dvcmQpOwo+Pj4KPj4+IEJvb2wgX19h dHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0dldF9JbnRlZ2VyKFBsTG9uZyBuLCBXYW1Xb3Jk IHN0YXJ0X3dvcmQpOwo+Pj4KPj4+IEJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBs X0dldF9GbG9hdChkb3VibGUgbiwgV2FtV29yZCBzdGFydF93b3JkKTsKPj4+Cj4+PiBCb29sIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9HZXRfTmlsKFdhbVdvcmQgc3RhcnRfd29yZCk7 Cj4+Pgo+Pj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2V0X0xpc3QoV2Ft V29yZCBzdGFydF93b3JkKTsKPj4+Cj4+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp KSBQbF9HZXRfU3RydWN0dXJlX1RhZ2dlZChXYW1Xb3JkIHcsIFdhbVdvcmQgc3RhcnRfd29yZCk7 Cj4+Pgo+Pj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2V0X1N0cnVjdHVy ZShpbnQgZnVuYywgaW50IGFyaXR5LCBXYW1Xb3JkIHN0YXJ0X3dvcmQpOwo+Pj4KPj4+IFdhbVdv cmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9YX1ZhcmlhYmxlKHZvaWQpOwo+ Pj4KPj4+IFdhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9ZX1Zhcmlh YmxlKFdhbVdvcmQgKnlfYWRyKTsKPj4+Cj4+PiBXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMykpKSBQbF9QdXRfVW5zYWZlX1ZhbHVlKFdhbVdvcmQgc3RhcnRfd29yZCk7Cj4+Pgo+Pj4g V2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0X0F0b21fVGFnZ2VkKFdh bVdvcmQgdyk7Cj4+Pgo+Pj4gV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxf UHV0X0F0b20oaW50IGF0b20pOwo+Pj4KPj4+IFdhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFy bSgzKSkpIFBsX1B1dF9JbnRlZ2VyX1RhZ2dlZChXYW1Xb3JkIHcpOwo+Pj4KPj4+IFdhbVdvcmQg X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9JbnRlZ2VyKFBsTG9uZyBuKTsKPj4+ Cj4+PiBXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfRmxvYXQoZG91 YmxlIG4pOwo+Pj4KPj4+IFdhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1 dF9OaWwodm9pZCk7Cj4+Pgo+Pj4gV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkg UGxfUHV0X0xpc3Qodm9pZCk7Cj4+Pgo+Pj4gV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDMpKSkgUGxfUHV0X1N0cnVjdHVyZV9UYWdnZWQoV2FtV29yZCB3KTsKPj4+Cj4+PiBXYW1Xb3Jk IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfU3RydWN0dXJlKGludCBmdW5jLCBp bnQgYXJpdHkpOwo+Pj4KPj4+IFdhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBs X1VuaWZ5X1ZhcmlhYmxlKHZvaWQpOwo+Pj4KPj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFy bSgzKSkpIFBsX1VuaWZ5X1ZvaWQoaW50IG4pOwo+Pj4KPj4+IEJvb2wgX19hdHRyaWJ1dGVfXygo cmVncGFybSgzKSkpIFBsX1VuaWZ5X1ZhbHVlKFdhbVdvcmQgc3RhcnRfd29yZCk7Cj4+Pgo+Pj4g Qm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfTG9jYWxfVmFsdWUoV2Ft V29yZCBzdGFydF93b3JkKTsKPj4+Cj4+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp KSBQbF9VbmlmeV9BdG9tX1RhZ2dlZChXYW1Xb3JkIHcpOwo+Pj4KPj4+IEJvb2wgX19hdHRyaWJ1 dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5X0F0b20oaW50IGF0b20pOwo+Pj4KPj4+IEJvb2wg X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5X0ludGVnZXJfVGFnZ2VkKFdhbVdv cmQgdyk7Cj4+Pgo+Pj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlf SW50ZWdlcihQbExvbmcgbik7Cj4+Pgo+Pj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp KSkgUGxfVW5pZnlfTmlsKHZvaWQpOwo+Pj4KPj4+IEJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFy bSgzKSkpIFBsX1VuaWZ5X0xpc3Qodm9pZCk7Cj4+Pgo+Pj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDMpKSkgUGxfVW5pZnlfU3RydWN0dXJlX1RhZ2dlZChXYW1Xb3JkIHcpOwo+Pj4KPj4+ IEJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5X1N0cnVjdHVyZShpbnQg ZnVuYywgaW50IGFyaXR5KTsKPj4+Cj4+PiBXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o MykpKSBQbF9HbG9iYWxpemVfSWZfSW5fTG9jYWwoV2FtV29yZCBzdGFydF93b3JkKTsKPj4+Cj4+ PiB2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9BbGxvY2F0ZShpbnQgbik7Cj4+ Pgo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfRGVhbGxvY2F0ZSh2b2lk KTsKPj4+Cj4+PiBDb2RlUHRyIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Td2l0Y2hf T25fVGVybShDb2RlUHRyIGNfdmFyLCBDb2RlUHRyIGNfYXRtLCBDb2RlUHRyIGNfaW50LAo+Pj4g ICAgICAgICAgICAgQ29kZVB0ciBjX2xzdCwgQ29kZVB0ciBjX3N0Yyk7Cj4+PiBDb2RlUHRyIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Td2l0Y2hfT25fVGVybV9WYXJfQXRtKENvZGVQ dHIgY192YXIsIENvZGVQdHIgY19hdG0pOwo+Pj4gQ29kZVB0ciBfX2F0dHJpYnV0ZV9fKChyZWdw YXJtKDMpKSkgUGxfU3dpdGNoX09uX1Rlcm1fVmFyX1N0YyhDb2RlUHRyIGNfdmFyLCBDb2RlUHRy IGNfc3RjKTsKPj4+IENvZGVQdHIgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1N3aXRj aF9Pbl9UZXJtX1Zhcl9BdG1fTHN0KENvZGVQdHIgY192YXIsIENvZGVQdHIgY19hdG0sCj4+PiAg ICAgICAgICAgQ29kZVB0ciBjX2xzdCk7Cj4+PiBDb2RlUHRyIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMykpKSBQbF9Td2l0Y2hfT25fVGVybV9WYXJfQXRtX1N0YyhDb2RlUHRyIGNfdmFyLCBDb2Rl UHRyIGNfYXRtLAo+Pj4gICAgICAgICAgIENvZGVQdHIgY19zdGMpOwo+Pj4KPj4+IENvZGVQdHIg X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1N3aXRjaF9Pbl9BdG9tKFN3dFRibCB0LCBp bnQgc2l6ZSk7Cj4+Pgo+Pj4gUGxMb25nIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9T d2l0Y2hfT25fSW50ZWdlcih2b2lkKTsKPj4+Cj4+PiBDb2RlUHRyIF9fYXR0cmlidXRlX18oKHJl Z3Bhcm0oMykpKSBQbF9Td2l0Y2hfT25fU3RydWN0dXJlKFN3dFRibCB0LCBpbnQgc2l6ZSk7Cj4+ Pgo+Pj4gV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2V0X0N1cnJlbnRf Q2hvaWNlKHZvaWQpOwo+Pj4KPj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBs X0N1dChXYW1Xb3JkIGJfd29yZCk7Cj4+Pgo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDMpKSkgUGxfU29mdF9DdXQoV2FtV29yZCBiX3dvcmQpOwo+Pj4KPj4+IHZvaWQgX19hdHRyaWJ1 dGVfXygocmVncGFybSgzKSkpIFBsX0dsb2JhbF9QdXNoX0Zsb2F0KGRvdWJsZSBuKTsKPj4+Cj4+ PiBkb3VibGUgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX09idGFpbl9GbG9hdChXYW1X b3JkICphZHIpOwo+Pj4KPj4+Cj4+PiB2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQ bF9DcmVhdGVfQ2hvaWNlX1BvaW50KENvZGVQdHIgY29kZXBfYWx0LCBpbnQgYXJpdHkpOwo+Pj4g dm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX0Nob2ljZV9Qb2ludDAo Q29kZVB0ciBjb2RlcF9hbHQpOwo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkg UGxfQ3JlYXRlX0Nob2ljZV9Qb2ludDEoQ29kZVB0ciBjb2RlcF9hbHQpOwo+Pj4gdm9pZCBfX2F0 dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX0Nob2ljZV9Qb2ludDIoQ29kZVB0ciBj b2RlcF9hbHQpOwo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRl X0Nob2ljZV9Qb2ludDMoQ29kZVB0ciBjb2RlcF9hbHQpOwo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9f KChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX0Nob2ljZV9Qb2ludDQoQ29kZVB0ciBjb2RlcF9hbHQp Owo+Pj4KPj4+Cj4+PiB2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VcGRhdGVf Q2hvaWNlX1BvaW50KENvZGVQdHIgY29kZXBfYWx0LCBpbnQgYXJpdHkpOwo+Pj4gdm9pZCBfX2F0 dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVXBkYXRlX0Nob2ljZV9Qb2ludDAoQ29kZVB0ciBj b2RlcF9hbHQpOwo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVXBkYXRl X0Nob2ljZV9Qb2ludDEoQ29kZVB0ciBjb2RlcF9hbHQpOwo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9f KChyZWdwYXJtKDMpKSkgUGxfVXBkYXRlX0Nob2ljZV9Qb2ludDIoQ29kZVB0ciBjb2RlcF9hbHQp Owo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVXBkYXRlX0Nob2ljZV9Q b2ludDMoQ29kZVB0ciBjb2RlcF9hbHQpOwo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDMpKSkgUGxfVXBkYXRlX0Nob2ljZV9Qb2ludDQoQ29kZVB0ciBjb2RlcF9hbHQpOwo+Pj4KPj4+ IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0RlbGV0ZV9DaG9pY2VfUG9pbnQo aW50IGFyaXR5KTsKPj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0RlbGV0 ZV9DaG9pY2VfUG9pbnQwKHZvaWQpOwo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp KSkgUGxfRGVsZXRlX0Nob2ljZV9Qb2ludDEodm9pZCk7Cj4+PiB2b2lkIF9fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMykpKSBQbF9EZWxldGVfQ2hvaWNlX1BvaW50Mih2b2lkKTsKPj4+IHZvaWQgX19h dHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0RlbGV0ZV9DaG9pY2VfUG9pbnQzKHZvaWQpOwo+ Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfRGVsZXRlX0Nob2ljZV9Qb2lu dDQodm9pZCk7Cj4+Pgo+Pj4KPj4+IHZvaWQgUGxfRGVmZWFzaWJsZV9PcGVuKCk7Cj4+PiB2b2lk IFBsX0RlZmVhc2libGVfVW5kbygpOwo+Pj4gdm9pZCBQbF9EZWZlYXNpYmxlX0Nsb3NlKEJvb2wg dW5kb19iZWZvcmUpOwo+Pj4KPj4+Cj4+Pgo+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDMpKSkgUGxfVW50cmFpbChXYW1Xb3JkICpsb3dfYWRyKTsKPj4+Cj4+PiBCb29sIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeShXYW1Xb3JkIHN0YXJ0X3Vfd29yZCwgV2FtV29y ZCBzdGFydF92X3dvcmQpOwo+Pj4KPj4+IEJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp IFBsX1VuaWZ5X09jY3Vyc19DaGVjayhXYW1Xb3JkIHN0YXJ0X3Vfd29yZCwgV2FtV29yZCBzdGFy dF92X3dvcmQpOwo+Pj4gIyA1NiAiZW5naW5lX3BsLmgiIDIKPj4+ICMgMSAiaWZfbm9fZmQuaCIg MQo+Pj4gIyA2NSAiaWZfbm9fZmQuaCIKPj4+IGV4dGVybiB2b2lkICgqcGxfZmRfaW5pdF9zb2x2 ZXIpICgpOwo+Pj4gZXh0ZXJuIHZvaWQgKCpwbF9mZF9yZXNldF9zb2x2ZXIpICgpOwo+Pj4gZXh0 ZXJuIEJvb2wgKCpwbF9mZF91bmlmeV93aXRoX2ludGVnZXIpICgpOwo+Pj4gZXh0ZXJuIEJvb2wg KCpwbF9mZF91bmlmeV93aXRoX2ZkX3ZhcikgKCk7Cj4+PiBleHRlcm4gaW50ICgqcGxfZmRfdmFy aWFibGVfc2l6ZSkgKCk7Cj4+PiBleHRlcm4gaW50ICgqcGxfZmRfY29weV92YXJpYWJsZSkgKCk7 Cj4+PiBleHRlcm4gY2hhciAqKCpwbF9mZF92YXJpYWJsZV90b19zdHJpbmcpICgpOwo+Pj4gIyA4 MiAiaWZfbm9fZmQuaCIKPj4+IHZvaWQgUGxfRmRfSW5pdF9Tb2x2ZXIodm9pZCk7Cj4+Pgo+Pj4g dm9pZCBQbF9GZF9SZXNldF9Tb2x2ZXIodm9pZCk7Cj4+PiAjIDU2ICJlbmdpbmVfcGwuaCIgMgo+ Pj4gIyA3MiAibWFjaGluZS5jIiAyCj4+Pgo+Pj4KPj4+Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9t YWxsb2MuaCIgMSAzIDQKPj4+ICMgMjMgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIgMyA0Cj4+PiAj IDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5o IiAxIDMgNAo+Pj4gIyAxNDkgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9p bmNsdWRlL3N0ZGRlZi5oIiAzIDQKPj4+Cj4+PiAjIDE0OSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVk aGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAo+Pj4gdHlwZWRlZiBpbnQgcHRy ZGlmZl90Owo+Pj4gIyA0MjYgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9p bmNsdWRlL3N0ZGRlZi5oIiAzIDQKPj4+IHR5cGVkZWYgc3RydWN0IHsKPj4+ICAgbG9uZyBsb25n IF9fbWF4X2FsaWduX2xsIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKF9fYWxpZ25vZl9fKGxv bmcgbG9uZykpKSk7Cj4+PiAgIGxvbmcgZG91YmxlIF9fbWF4X2FsaWduX2xkIF9fYXR0cmlidXRl X18oKF9fYWxpZ25lZF9fKF9fYWxpZ25vZl9fKGxvbmcgZG91YmxlKSkpKTsKPj4+IH0gbWF4X2Fs aWduX3Q7Cj4+PiAjIDI0ICIvdXNyL2luY2x1ZGUvbWFsbG9jLmgiIDIgMyA0Cj4+PiAjIDM1ICIv dXNyL2luY2x1ZGUvbWFsbG9jLmgiIDMgNAo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgKm1h bGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZv aWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCj4+PiBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f KSkgOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZv aWQgKl9fcHRyLCBzaXplX3QgX19zaXplKQo+Pj4gX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOwo+ Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgY2ZyZWUg KHZvaWQgKl9fcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+ Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCAqbWVtYWxpZ24gKHNpemVfdCBfX2FsaWdubWVudCwgc2l6 ZV90IF9fc2l6ZSkKPj4+IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkICp2 YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRl cm4gdm9pZCAqcHZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsKPj4+Cj4+Pgo+ Pj4KPj4+IGV4dGVybiB2b2lkICooKl9fbW9yZWNvcmUpIChwdHJkaWZmX3QgX19zaXplKTsKPj4+ Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgKl9fZGVmYXVsdF9tb3JlY29yZSAocHRyZGlmZl90IF9fc2l6 ZSkKPj4+IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbWFsbG9jX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+IHN0cnVjdCBtYWxsaW5mbwo+Pj4g ewo+Pj4gICBpbnQgYXJlbmE7Cj4+PiAgIGludCBvcmRibGtzOwo+Pj4gICBpbnQgc21ibGtzOwo+ Pj4gICBpbnQgaGJsa3M7Cj4+PiAgIGludCBoYmxraGQ7Cj4+PiAgIGludCB1c21ibGtzOwo+Pj4g ICBpbnQgZnNtYmxrczsKPj4+ICAgaW50IHVvcmRibGtzOwo+Pj4gICBpbnQgZm9yZGJsa3M7Cj4+ PiAgIGludCBrZWVwY29zdDsKPj4+IH07Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzdHJ1Y3QgbWFsbGlu Zm8gbWFsbGluZm8gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+PiAjIDEyMSAiL3Vzci9pbmNsdWRlL21hbGxvYy5oIiAzIDQKPj4+IGV4dGVybiBpbnQg bWFsbG9wdCAoaW50IF9fcGFyYW0sIGludCBfX3ZhbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgbWFsbG9jX3RyaW0g KHNpemVfdCBfX3BhZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK Pj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzaXplX3QgbWFsbG9jX3VzYWJsZV9zaXplICh2b2lkICpf X3B0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIHZvaWQgbWFsbG9jX3N0YXRzICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IG1hbGxvY19pbmZvIChp bnQgX19vcHRpb25zLCBGSUxFICpfX2ZwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCAqbWFsbG9jX2dldF9zdGF0ZSAodm9p ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4K Pj4+IGV4dGVybiBpbnQgbWFsbG9jX3NldF9zdGF0ZSAodm9pZCAqX19wdHIpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJu IHZvaWQgKCp2b2xhdGlsZSBfX21hbGxvY19pbml0aWFsaXplX2hvb2spICh2b2lkKQo+Pj4gX19h dHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSk7Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgKCp2b2xh dGlsZSBfX2ZyZWVfaG9vaykgKHZvaWQgKl9fcHRyLAo+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqKQo+Pj4gX19hdHRyaWJ1 dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSk7Cj4+PiBleHRlcm4gdm9pZCAqKCp2b2xhdGlsZSBfX21h bGxvY19ob29rKShzaXplX3QgX19zaXplLAo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICopCj4+PiBfX2F0dHJpYnV0ZV9f ICgoX19kZXByZWNhdGVkX18pKTsKPj4+IGV4dGVybiB2b2lkICooKnZvbGF0aWxlIF9fcmVhbGxv Y19ob29rKSh2b2lkICpfX3B0ciwKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUsCj4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICopCj4+PiBf X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKTsKPj4+IGV4dGVybiB2b2lkICooKnZvbGF0 aWxlIF9fbWVtYWxpZ25faG9vaykoc2l6ZV90IF9fYWxpZ25tZW50LAo+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUs Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgdm9pZCAqKQo+Pj4gX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSk7Cj4+ PiBleHRlcm4gdm9pZCAoKnZvbGF0aWxlIF9fYWZ0ZXJfbW9yZWNvcmVfaG9vaykgKHZvaWQpOwo+ Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBfX21hbGxvY19jaGVja19pbml0ICh2b2lkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2RlcHJl Y2F0ZWRfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4gIyA3NiAibWFjaGluZS5jIiAyCj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMSAzIDQKPj4+ICMgMjcgIi91c3Iv aW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIg MSAzIDQKPj4+ICMgMjMgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMgNAo+Pj4gIyAxICIv dXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAxIDMgNAo+Pj4gIyAyNCAiL3Vzci9pbmNsdWRlL3N5 cy9zb2NrZXQuaCIgMyA0Cj4+Pgo+Pj4KPj4+ICMgMSAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIg MSAzIDQKPj4+ICMgMjUgIi91c3IvaW5jbHVkZS9zeXMvdWlvLmgiIDMgNAo+Pj4KPj4+Cj4+Pgo+ Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy91aW8uaCIgMSAzIDQKPj4+ICMgNDMgIi91c3IvaW5j bHVkZS9iaXRzL3Vpby5oIiAzIDQKPj4+IHN0cnVjdCBpb3ZlYwo+Pj4gICB7Cj4+PiAgICAgdm9p ZCAqaW92X2Jhc2U7Cj4+PiAgICAgc2l6ZV90IGlvdl9sZW47Cj4+PiAgIH07Cj4+PiAjIDI5ICIv dXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAyIDMgNAo+Pj4gIyAzOSAiL3Vzci9pbmNsdWRlL3N5cy91 aW8uaCIgMyA0Cj4+PiBleHRlcm4gc3NpemVfdCByZWFkdiAoaW50IF9fZmQsIGNvbnN0IHN0cnVj dCBpb3ZlYyAqX19pb3ZlYywgaW50IF9fY291bnQpCj4+PiAgIDsKPj4+ICMgNTAgIi91c3IvaW5j bHVkZS9zeXMvdWlvLmgiIDMgNAo+Pj4gZXh0ZXJuIHNzaXplX3Qgd3JpdGV2IChpbnQgX19mZCwg Y29uc3Qgc3RydWN0IGlvdmVjICpfX2lvdmVjLCBpbnQgX19jb3VudCkKPj4+ICAgOwo+Pj4gIyA2 NSAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIgMyA0Cj4+PiBleHRlcm4gc3NpemVfdCBwcmVhZHYg KGludCBfX2ZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKl9faW92ZWMsIGludCBfX2NvdW50LAo+Pj4g ICAgICAgICAgX19vZmZfdCBfX29mZnNldCkgOwo+Pj4gIyA3NyAiL3Vzci9pbmNsdWRlL3N5cy91 aW8uaCIgMyA0Cj4+PiBleHRlcm4gc3NpemVfdCBwd3JpdGV2IChpbnQgX19mZCwgY29uc3Qgc3Ry dWN0IGlvdmVjICpfX2lvdmVjLCBpbnQgX19jb3VudCwKPj4+ICAgIF9fb2ZmX3QgX19vZmZzZXQp IDsKPj4+ICMgMTIwICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAzIDQKPj4+Cj4+PiAjIDI3ICIv dXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAyIDMgNAo+Pj4KPj4+ICMgMSAiL3Vzci9saWIvZ2Nj L2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0Cj4+PiAjIDI5 ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAyIDMgNAo+Pj4gIyAzOCAiL3Vzci9pbmNsdWRl L3N5cy9zb2NrZXQuaCIgMyA0Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAx IDMgNAo+Pj4gIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMgNAo+Pj4gIyAxICIv dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAz IDQKPj4+ICMgMjggIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAyIDMgNAo+Pj4gIyAzOCAi L3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0 cy9zb2NrZXRfdHlwZS5oIiAxIDMgNAo+Pj4gIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0 X3R5cGUuaCIgMyA0Cj4+PiBlbnVtIF9fc29ja2V0X3R5cGUKPj4+IHsKPj4+ICAgU09DS19TVFJF QU0gPSAxLAo+Pj4KPj4+Cj4+PiAgIFNPQ0tfREdSQU0gPSAyLAo+Pj4KPj4+Cj4+PiAgIFNPQ0tf UkFXID0gMywKPj4+Cj4+PiAgIFNPQ0tfUkRNID0gNCwKPj4+Cj4+PiAgIFNPQ0tfU0VRUEFDS0VU ID0gNSwKPj4+Cj4+Pgo+Pj4gICBTT0NLX0RDQ1AgPSA2LAo+Pj4KPj4+ICAgU09DS19QQUNLRVQg PSAxMCwKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAgIFNPQ0tfQ0xPRVhFQyA9IDAy MDAwMDAwLAo+Pj4KPj4+Cj4+PiAgIFNPQ0tfTk9OQkxPQ0sgPSAwMDAwNDAwMAo+Pj4KPj4+Cj4+ PiB9Owo+Pj4gIyAzOSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDIgMyA0Cj4+PiAjIDE1 MCAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMgNAo+Pj4gIyAxICIvdXNyL2luY2x1ZGUv Yml0cy9zb2NrYWRkci5oIiAxIDMgNAo+Pj4gIyAyOCAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2Fk ZHIuaCIgMyA0Cj4+PiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBzYV9mYW1pbHlfdDsKPj4+ ICMgMTUxICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzIDQKPj4+Cj4+Pgo+Pj4gc3Ry dWN0IHNvY2thZGRyCj4+PiAgIHsKPj4+ICAgICBzYV9mYW1pbHlfdCBzYV9mYW1pbHk7Cj4+PiAg ICAgY2hhciBzYV9kYXRhWzE0XTsKPj4+ICAgfTsKPj4+ICMgMTY2ICIvdXNyL2luY2x1ZGUvYml0 cy9zb2NrZXQuaCIgMyA0Cj4+PiBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZQo+Pj4gICB7Cj4+PiAg ICAgc2FfZmFtaWx5X3Qgc3NfZmFtaWx5Owo+Pj4gICAgIGNoYXIgX19zc19wYWRkaW5nWygxMjgg LSAoc2l6ZW9mICh1bnNpZ25lZCBzaG9ydCBpbnQpKSAtIHNpemVvZiAodW5zaWduZWQgbG9uZyBp bnQpKV07Cj4+PiAgICAgdW5zaWduZWQgbG9uZyBpbnQgX19zc19hbGlnbjsKPj4+ICAgfTsKPj4+ Cj4+Pgo+Pj4KPj4+IGVudW0KPj4+ICAgewo+Pj4gICAgIE1TR19PT0IgPSAweDAxLAo+Pj4KPj4+ ICAgICBNU0dfUEVFSyA9IDB4MDIsCj4+Pgo+Pj4gICAgIE1TR19ET05UUk9VVEUgPSAweDA0LAo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gICAgIE1TR19DVFJVTkMgPSAweDA4LAo+Pj4KPj4+ ICAgICBNU0dfUFJPWFkgPSAweDEwLAo+Pj4KPj4+ICAgICBNU0dfVFJVTkMgPSAweDIwLAo+Pj4K Pj4+ICAgICBNU0dfRE9OVFdBSVQgPSAweDQwLAo+Pj4KPj4+ICAgICBNU0dfRU9SID0gMHg4MCwK Pj4+Cj4+PiAgICAgTVNHX1dBSVRBTEwgPSAweDEwMCwKPj4+Cj4+PiAgICAgTVNHX0ZJTiA9IDB4 MjAwLAo+Pj4KPj4+ICAgICBNU0dfU1lOID0gMHg0MDAsCj4+Pgo+Pj4gICAgIE1TR19DT05GSVJN ID0gMHg4MDAsCj4+Pgo+Pj4gICAgIE1TR19SU1QgPSAweDEwMDAsCj4+Pgo+Pj4gICAgIE1TR19F UlJRVUVVRSA9IDB4MjAwMCwKPj4+Cj4+PiAgICAgTVNHX05PU0lHTkFMID0gMHg0MDAwLAo+Pj4K Pj4+ICAgICBNU0dfTU9SRSA9IDB4ODAwMCwKPj4+Cj4+PiAgICAgTVNHX1dBSVRGT1JPTkUgPSAw eDEwMDAwLAo+Pj4KPj4+ICAgICBNU0dfRkFTVE9QRU4gPSAweDIwMDAwMDAwLAo+Pj4KPj4+Cj4+ PiAgICAgTVNHX0NNU0dfQ0xPRVhFQyA9IDB4NDAwMDAwMDAKPj4+Cj4+Pgo+Pj4KPj4+ICAgfTsK Pj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBzdHJ1Y3QgbXNnaGRyCj4+PiAgIHsKPj4+ICAgICB2b2lkICpt c2dfbmFtZTsKPj4+ICAgICBzb2NrbGVuX3QgbXNnX25hbWVsZW47Cj4+Pgo+Pj4gICAgIHN0cnVj dCBpb3ZlYyAqbXNnX2lvdjsKPj4+ICAgICBzaXplX3QgbXNnX2lvdmxlbjsKPj4+Cj4+PiAgICAg dm9pZCAqbXNnX2NvbnRyb2w7Cj4+PiAgICAgc2l6ZV90IG1zZ19jb250cm9sbGVuOwo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+ICAgICBpbnQgbXNnX2ZsYWdzOwo+Pj4gICB9Owo+Pj4KPj4+Cj4+PiBzdHJ1 Y3QgY21zZ2hkcgo+Pj4gICB7Cj4+PiAgICAgc2l6ZV90IGNtc2dfbGVuOwo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+ICAgICBpbnQgY21zZ19sZXZlbDsKPj4+ICAgICBpbnQgY21zZ190eXBlOwo+Pj4KPj4+ ICAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGNoYXIgX19jbXNnX2RhdGEgW107Cj4+Pgo+Pj4g ICB9Owo+Pj4gIyAyNzYgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzIDQKPj4+IGV4dGVy biBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnX254dGhkciAoc3RydWN0IG1zZ2hkciAqX19taGRyLAo+ Pj4gICAgICAgICAgIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2cpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+PiAjIDMwMyAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0 LmgiIDMgNAo+Pj4gZW51bQo+Pj4gICB7Cj4+PiAgICAgU0NNX1JJR0hUUyA9IDB4MDEKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4gICB9Owo+Pj4gIyAzNDkgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tl dC5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMSAzIDQKPj4+ICMg MSAiL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NvY2tldC5oIiAxIDMgNAo+Pj4KPj4+Cj4+Pgo+ Pj4gIyAxICIvdXNyL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMSAzIDQKPj4+ICMgMSAiL3Vzci9p bmNsdWRlL2FzbS1nZW5lcmljL3NvY2tpb3MuaCIgMSAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRl L2FzbS9zb2NraW9zLmgiIDIgMyA0Cj4+PiAjIDUgIi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9z b2NrZXQuaCIgMiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMiAzIDQK Pj4+ICMgMzUwICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzIDQKPj4+ICMgMzgzICIv dXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMyA0Cj4+PiBzdHJ1Y3QgbGluZ2VyCj4+PiAgIHsK Pj4+ICAgICBpbnQgbF9vbm9mZjsKPj4+ICAgICBpbnQgbF9saW5nZXI7Cj4+PiAgIH07Cj4+PiAj IDM5ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAyIDMgNAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ IHN0cnVjdCBvc29ja2FkZHIKPj4+ICAgewo+Pj4gICAgIHVuc2lnbmVkIHNob3J0IGludCBzYV9m YW1pbHk7Cj4+PiAgICAgdW5zaWduZWQgY2hhciBzYV9kYXRhWzE0XTsKPj4+ICAgfTsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiBlbnVtCj4+PiB7Cj4+PiAgIFNIVVRfUkQgPSAwLAo+Pj4KPj4+ICAgU0hV VF9XUiwKPj4+Cj4+PiAgIFNIVVRfUkRXUgo+Pj4KPj4+IH07Cj4+PiAjIDExMyAiL3Vzci9pbmNs dWRlL3N5cy9zb2NrZXQuaCIgMyA0Cj4+PiBleHRlcm4gaW50IHNvY2tldCAoaW50IF9fZG9tYWlu LCBpbnQgX190eXBlLCBpbnQgX19wcm90b2NvbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzb2NrZXRw YWlyIChpbnQgX19kb21haW4sIGludCBfX3R5cGUsIGludCBfX3Byb3RvY29sLAo+Pj4gICAgICAg ICAgaW50IF9fZmRzWzJdKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp Owo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGJpbmQgKGludCBfX2ZkLCBjb25zdCBzdHJ1Y3Qgc29j a2FkZHIgKiBfX2FkZHIsIHNvY2tsZW5fdCBfX2xlbikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBnZXRzb2Nr bmFtZSAoaW50IF9fZmQsIHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmljdCBfX2FkZHIsCj4+PiAg ICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7Cj4+PiAjIDEzNyAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0 Cj4+PiBleHRlcm4gaW50IGNvbm5lY3QgKGludCBfX2ZkLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIg KiBfX2FkZHIsIHNvY2tsZW5fdCBfX2xlbik7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGdl dHBlZXJuYW1lIChpbnQgX19mZCwgc3RydWN0IHNvY2thZGRyICpfX3Jlc3RyaWN0IF9fYWRkciwK Pj4+ICAgIHNvY2tsZW5fdCAqX19yZXN0cmljdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBz c2l6ZV90IHNlbmQgKGludCBfX2ZkLCBjb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwgaW50 IF9fZmxhZ3MpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHNzaXplX3QgcmVj diAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLCBpbnQgX19mbGFncyk7Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gc3NpemVfdCBzZW5kdG8gKGludCBfX2ZkLCBj b25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKPj4+ICAgICAgICAgIGludCBfX2ZsYWdzLCBj b25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiBfX2FkZHIsCj4+PiAgICAgICAgICBzb2NrbGVuX3QgX19h ZGRyX2xlbik7Cj4+PiAjIDE3NCAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0Cj4+PiBl eHRlcm4gc3NpemVfdCByZWN2ZnJvbSAoaW50IF9fZmQsIHZvaWQgKl9fcmVzdHJpY3QgX19idWYs IHNpemVfdCBfX24sCj4+PiAgICAgaW50IF9fZmxhZ3MsIHN0cnVjdCBzb2NrYWRkciAqX19yZXN0 cmljdCBfX2FkZHIsCj4+PiAgICAgc29ja2xlbl90ICpfX3Jlc3RyaWN0IF9fYWRkcl9sZW4pOwo+ Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzc2l6ZV90IHNlbmRtc2cgKGlu dCBfX2ZkLCBjb25zdCBzdHJ1Y3QgbXNnaGRyICpfX21lc3NhZ2UsCj4+PiAgICBpbnQgX19mbGFn cyk7Cj4+PiAjIDIwMiAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0Cj4+PiBleHRlcm4g c3NpemVfdCByZWN2bXNnIChpbnQgX19mZCwgc3RydWN0IG1zZ2hkciAqX19tZXNzYWdlLCBpbnQg X19mbGFncyk7Cj4+PiAjIDIxOSAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0Cj4+PiBl eHRlcm4gaW50IGdldHNvY2tvcHQgKGludCBfX2ZkLCBpbnQgX19sZXZlbCwgaW50IF9fb3B0bmFt ZSwKPj4+ICAgICAgICAgIHZvaWQgKl9fcmVzdHJpY3QgX19vcHR2YWwsCj4+PiAgICAgICAgICBz b2NrbGVuX3QgKl9fcmVzdHJpY3QgX19vcHRsZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzZXRzb2Nrb3B0 IChpbnQgX19mZCwgaW50IF9fbGV2ZWwsIGludCBfX29wdG5hbWUsCj4+PiAgICAgICAgICBjb25z dCB2b2lkICpfX29wdHZhbCwgc29ja2xlbl90IF9fb3B0bGVuKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50 IGxpc3RlbiAoaW50IF9fZmQsIGludCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7Cj4+PiAjIDI0MyAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0Cj4+ PiBleHRlcm4gaW50IGFjY2VwdCAoaW50IF9fZmQsIHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmlj dCBfX2FkZHIsCj4+PiAgICAgIHNvY2tsZW5fdCAqX19yZXN0cmljdCBfX2FkZHJfbGVuKTsKPj4+ ICMgMjYxICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzIDQKPj4+IGV4dGVybiBpbnQgc2h1 dGRvd24gKGludCBfX2ZkLCBpbnQgX19ob3cpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBzb2NrYXRtYXJrIChp bnQgX19mZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW50IGlzZmR0eXBlIChpbnQgX19mZCwg aW50IF9fZmR0eXBlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+ Pj4gIyAyODMgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDMgNAo+Pj4KPj4+ICMgMjQgIi91 c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMyA0Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ PiB0eXBlZGVmIHVpbnQzMl90IGluX2FkZHJfdDsKPj4+IHN0cnVjdCBpbl9hZGRyCj4+PiAgIHsK Pj4+ICAgICBpbl9hZGRyX3Qgc19hZGRyOwo+Pj4gICB9Owo+Pj4KPj4+Cj4+PiAjIDEgIi91c3Iv aW5jbHVkZS9iaXRzL2luLmgiIDEgMyA0Cj4+PiAjIDEzMyAiL3Vzci9pbmNsdWRlL2JpdHMvaW4u aCIgMyA0Cj4+PiBzdHJ1Y3QgaXBfb3B0cwo+Pj4gICB7Cj4+PiAgICAgc3RydWN0IGluX2FkZHIg aXBfZHN0Owo+Pj4gICAgIGNoYXIgaXBfb3B0c1s0MF07Cj4+PiAgIH07Cj4+Pgo+Pj4KPj4+IHN0 cnVjdCBpcF9tcmVxbgo+Pj4gICB7Cj4+PiAgICAgc3RydWN0IGluX2FkZHIgaW1yX211bHRpYWRk cjsKPj4+ICAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfYWRkcmVzczsKPj4+ICAgICBpbnQgaW1yX2lm aW5kZXg7Cj4+PiAgIH07Cj4+Pgo+Pj4KPj4+IHN0cnVjdCBpbl9wa3RpbmZvCj4+PiAgIHsKPj4+ ICAgICBpbnQgaXBpX2lmaW5kZXg7Cj4+PiAgICAgc3RydWN0IGluX2FkZHIgaXBpX3NwZWNfZHN0 Owo+Pj4gICAgIHN0cnVjdCBpbl9hZGRyIGlwaV9hZGRyOwo+Pj4gICB9Owo+Pj4gIyAzOCAiL3Vz ci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMiAzIDQKPj4+Cj4+Pgo+Pj4gZW51bQo+Pj4gICB7Cj4+ PiAgICAgSVBQUk9UT19JUCA9IDAsCj4+Pgo+Pj4gICAgIElQUFJPVE9fSUNNUCA9IDEsCj4+Pgo+ Pj4gICAgIElQUFJPVE9fSUdNUCA9IDIsCj4+Pgo+Pj4gICAgIElQUFJPVE9fSVBJUCA9IDQsCj4+ Pgo+Pj4gICAgIElQUFJPVE9fVENQID0gNiwKPj4+Cj4+PiAgICAgSVBQUk9UT19FR1AgPSA4LAo+ Pj4KPj4+ICAgICBJUFBST1RPX1BVUCA9IDEyLAo+Pj4KPj4+ICAgICBJUFBST1RPX1VEUCA9IDE3 LAo+Pj4KPj4+ICAgICBJUFBST1RPX0lEUCA9IDIyLAo+Pj4KPj4+ICAgICBJUFBST1RPX1RQID0g MjksCj4+Pgo+Pj4gICAgIElQUFJPVE9fRENDUCA9IDMzLAo+Pj4KPj4+ICAgICBJUFBST1RPX0lQ VjYgPSA0MSwKPj4+Cj4+PiAgICAgSVBQUk9UT19SU1ZQID0gNDYsCj4+Pgo+Pj4gICAgIElQUFJP VE9fR1JFID0gNDcsCj4+Pgo+Pj4gICAgIElQUFJPVE9fRVNQID0gNTAsCj4+Pgo+Pj4gICAgIElQ UFJPVE9fQUggPSA1MSwKPj4+Cj4+PiAgICAgSVBQUk9UT19NVFAgPSA5MiwKPj4+Cj4+PiAgICAg SVBQUk9UT19CRUVUUEggPSA5NCwKPj4+Cj4+PiAgICAgSVBQUk9UT19FTkNBUCA9IDk4LAo+Pj4K Pj4+ICAgICBJUFBST1RPX1BJTSA9IDEwMywKPj4+Cj4+PiAgICAgSVBQUk9UT19DT01QID0gMTA4 LAo+Pj4KPj4+ICAgICBJUFBST1RPX1NDVFAgPSAxMzIsCj4+Pgo+Pj4gICAgIElQUFJPVE9fVURQ TElURSA9IDEzNiwKPj4+Cj4+PiAgICAgSVBQUk9UT19NUExTID0gMTM3LAo+Pj4KPj4+ICAgICBJ UFBST1RPX1JBVyA9IDI1NSwKPj4+Cj4+PiAgICAgSVBQUk9UT19NQVgKPj4+ICAgfTsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZW51bQo+Pj4gICB7Cj4+PiAgICAgSVBQUk9UT19IT1BPUFRTID0g MCwKPj4+Cj4+PiAgICAgSVBQUk9UT19ST1VUSU5HID0gNDMsCj4+Pgo+Pj4gICAgIElQUFJPVE9f RlJBR01FTlQgPSA0NCwKPj4+Cj4+PiAgICAgSVBQUk9UT19JQ01QVjYgPSA1OCwKPj4+Cj4+PiAg ICAgSVBQUk9UT19OT05FID0gNTksCj4+Pgo+Pj4gICAgIElQUFJPVE9fRFNUT1BUUyA9IDYwLAo+ Pj4KPj4+ICAgICBJUFBST1RPX01IID0gMTM1Cj4+Pgo+Pj4gICB9Owo+Pj4KPj4+Cj4+Pgo+Pj4g dHlwZWRlZiB1aW50MTZfdCBpbl9wb3J0X3Q7Cj4+Pgo+Pj4KPj4+IGVudW0KPj4+ICAgewo+Pj4g ICAgIElQUE9SVF9FQ0hPID0gNywKPj4+ICAgICBJUFBPUlRfRElTQ0FSRCA9IDksCj4+PiAgICAg SVBQT1JUX1NZU1RBVCA9IDExLAo+Pj4gICAgIElQUE9SVF9EQVlUSU1FID0gMTMsCj4+PiAgICAg SVBQT1JUX05FVFNUQVQgPSAxNSwKPj4+ICAgICBJUFBPUlRfRlRQID0gMjEsCj4+PiAgICAgSVBQ T1JUX1RFTE5FVCA9IDIzLAo+Pj4gICAgIElQUE9SVF9TTVRQID0gMjUsCj4+PiAgICAgSVBQT1JU X1RJTUVTRVJWRVIgPSAzNywKPj4+ICAgICBJUFBPUlRfTkFNRVNFUlZFUiA9IDQyLAo+Pj4gICAg IElQUE9SVF9XSE9JUyA9IDQzLAo+Pj4gICAgIElQUE9SVF9NVFAgPSA1NywKPj4+Cj4+PiAgICAg SVBQT1JUX1RGVFAgPSA2OSwKPj4+ICAgICBJUFBPUlRfUkpFID0gNzcsCj4+PiAgICAgSVBQT1JU X0ZJTkdFUiA9IDc5LAo+Pj4gICAgIElQUE9SVF9UVFlMSU5LID0gODcsCj4+PiAgICAgSVBQT1JU X1NVUERVUCA9IDk1LAo+Pj4KPj4+Cj4+PiAgICAgSVBQT1JUX0VYRUNTRVJWRVIgPSA1MTIsCj4+ PiAgICAgSVBQT1JUX0xPR0lOU0VSVkVSID0gNTEzLAo+Pj4gICAgIElQUE9SVF9DTURTRVJWRVIg PSA1MTQsCj4+PiAgICAgSVBQT1JUX0VGU1NFUlZFUiA9IDUyMCwKPj4+Cj4+Pgo+Pj4gICAgIElQ UE9SVF9CSUZGVURQID0gNTEyLAo+Pj4gICAgIElQUE9SVF9XSE9TRVJWRVIgPSA1MTMsCj4+PiAg ICAgSVBQT1JUX1JPVVRFU0VSVkVSID0gNTIwLAo+Pj4KPj4+Cj4+PiAgICAgSVBQT1JUX1JFU0VS VkVEID0gMTAyNCwKPj4+Cj4+Pgo+Pj4gICAgIElQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCj4+ PiAgIH07Cj4+PiAjIDIxMSAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMyA0Cj4+PiBzdHJ1 Y3QgaW42X2FkZHIKPj4+ICAgewo+Pj4gICAgIHVuaW9uCj4+PiAgICAgICB7Cj4+PiAgdWludDhf dCBfX3U2X2FkZHI4WzE2XTsKPj4+Cj4+PiAgdWludDE2X3QgX191Nl9hZGRyMTZbOF07Cj4+PiAg dWludDMyX3QgX191Nl9hZGRyMzJbNF07Cj4+Pgo+Pj4gICAgICAgfSBfX2luNl91Owo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+PiAgIH07Cj4+Pgo+Pj4KPj4+IGV4dGVybiBjb25zdCBzdHJ1Y3QgaW42 X2FkZHIgaW42YWRkcl9hbnk7Cj4+PiBleHRlcm4gY29uc3Qgc3RydWN0IGluNl9hZGRyIGluNmFk ZHJfbG9vcGJhY2s7Cj4+PiAjIDIzOSAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMyA0Cj4+ PiBzdHJ1Y3Qgc29ja2FkZHJfaW4KPj4+ICAgewo+Pj4gICAgIHNhX2ZhbWlseV90IHNpbl9mYW1p bHk7Cj4+PiAgICAgaW5fcG9ydF90IHNpbl9wb3J0Owo+Pj4gICAgIHN0cnVjdCBpbl9hZGRyIHNp bl9hZGRyOwo+Pj4KPj4+Cj4+PiAgICAgdW5zaWduZWQgY2hhciBzaW5femVyb1tzaXplb2YgKHN0 cnVjdCBzb2NrYWRkcikgLQo+Pj4gICAgICAgKHNpemVvZiAodW5zaWduZWQgc2hvcnQgaW50KSkg LQo+Pj4gICAgICAgc2l6ZW9mIChpbl9wb3J0X3QpIC0KPj4+ICAgICAgIHNpemVvZiAoc3RydWN0 IGluX2FkZHIpXTsKPj4+ICAgfTsKPj4+Cj4+Pgo+Pj4KPj4+IHN0cnVjdCBzb2NrYWRkcl9pbjYK Pj4+ICAgewo+Pj4gICAgIHNhX2ZhbWlseV90IHNpbjZfZmFtaWx5Owo+Pj4gICAgIGluX3BvcnRf dCBzaW42X3BvcnQ7Cj4+PiAgICAgdWludDMyX3Qgc2luNl9mbG93aW5mbzsKPj4+ICAgICBzdHJ1 Y3QgaW42X2FkZHIgc2luNl9hZGRyOwo+Pj4gICAgIHVpbnQzMl90IHNpbjZfc2NvcGVfaWQ7Cj4+ PiAgIH07Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gc3RydWN0IGlwX21yZXEKPj4+ICAgewo+Pj4KPj4+ ICAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfbXVsdGlhZGRyOwo+Pj4KPj4+Cj4+PiAgICAgc3RydWN0 IGluX2FkZHIgaW1yX2ludGVyZmFjZTsKPj4+ICAgfTsKPj4+Cj4+PiBzdHJ1Y3QgaXBfbXJlcV9z b3VyY2UKPj4+ICAgewo+Pj4KPj4+ICAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfbXVsdGlhZGRyOwo+ Pj4KPj4+Cj4+PiAgICAgc3RydWN0IGluX2FkZHIgaW1yX2ludGVyZmFjZTsKPj4+Cj4+Pgo+Pj4g ICAgIHN0cnVjdCBpbl9hZGRyIGltcl9zb3VyY2VhZGRyOwo+Pj4gICB9Owo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+IHN0cnVjdCBpcHY2X21yZXEKPj4+ICAgewo+Pj4KPj4+ICAgICBzdHJ1Y3QgaW42X2Fk ZHIgaXB2Nm1yX211bHRpYWRkcjsKPj4+Cj4+Pgo+Pj4gICAgIHVuc2lnbmVkIGludCBpcHY2bXJf aW50ZXJmYWNlOwo+Pj4gICB9Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IHN0cnVjdCBncm91cF9yZXEK Pj4+ICAgewo+Pj4KPj4+ICAgICB1aW50MzJfdCBncl9pbnRlcmZhY2U7Cj4+Pgo+Pj4KPj4+ICAg ICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBncl9ncm91cDsKPj4+ICAgfTsKPj4+Cj4+PiBzdHJ1 Y3QgZ3JvdXBfc291cmNlX3JlcQo+Pj4gICB7Cj4+Pgo+Pj4gICAgIHVpbnQzMl90IGdzcl9pbnRl cmZhY2U7Cj4+Pgo+Pj4KPj4+ICAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBnc3JfZ3JvdXA7 Cj4+Pgo+Pj4KPj4+ICAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBnc3Jfc291cmNlOwo+Pj4g ICB9Owo+Pj4KPj4+Cj4+Pgo+Pj4gc3RydWN0IGlwX21zZmlsdGVyCj4+PiAgIHsKPj4+Cj4+PiAg ICAgc3RydWN0IGluX2FkZHIgaW1zZl9tdWx0aWFkZHI7Cj4+Pgo+Pj4KPj4+ICAgICBzdHJ1Y3Qg aW5fYWRkciBpbXNmX2ludGVyZmFjZTsKPj4+Cj4+Pgo+Pj4gICAgIHVpbnQzMl90IGltc2ZfZm1v ZGU7Cj4+Pgo+Pj4KPj4+ICAgICB1aW50MzJfdCBpbXNmX251bXNyYzsKPj4+Cj4+PiAgICAgc3Ry dWN0IGluX2FkZHIgaW1zZl9zbGlzdFsxXTsKPj4+ICAgfTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gc3RydWN0IGdyb3VwX2ZpbHRlcgo+Pj4gICB7Cj4+Pgo+Pj4gICAgIHVpbnQzMl90IGdmX2lu dGVyZmFjZTsKPj4+Cj4+Pgo+Pj4gICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGdmX2dyb3Vw Owo+Pj4KPj4+Cj4+PiAgICAgdWludDMyX3QgZ2ZfZm1vZGU7Cj4+Pgo+Pj4KPj4+ICAgICB1aW50 MzJfdCBnZl9udW1zcmM7Cj4+Pgo+Pj4gICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGdmX3Ns aXN0WzFdOwo+Pj4gfTsKPj4+ICMgMzc2ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzIDQK Pj4+IGV4dGVybiB1aW50MzJfdCBudG9obCAodWludDMyX3QgX19uZXRsb25nKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKPj4+IGV4dGVybiB1aW50MTZfdCBudG9ocyAodWludDE2X3QgX19uZXRzaG9ydCkKPj4+ICAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7Cj4+PiBleHRlcm4gdWludDMyX3QgaHRvbmwgKHVpbnQzMl90IF9faG9z dGxvbmcpCj4+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwo+Pj4gZXh0ZXJuIHVpbnQxNl90IGh0b25zICh1 aW50MTZfdCBfX2hvc3RzaG9ydCkKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAxIDMgNAo+Pj4gIyAzODgg Ii91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMyA0Cj4+PiAjIDUwMyAiL3Vzci9pbmNsdWRl L25ldGluZXQvaW4uaCIgMyA0Cj4+PiBleHRlcm4gaW50IGJpbmRyZXN2cG9ydCAoaW50IF9fc29j a2ZkLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKl9fc29ja19pbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBiaW5kcmVzdnBvcnQ2 IChpbnQgX19zb2NrZmQsIHN0cnVjdCBzb2NrYWRkcl9pbjYgKl9fc29ja19pbikKPj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+ICMgNjMxICIvdXNy L2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzIDQKPj4+Cj4+PiAjIDI4ICIvdXNyL2luY2x1ZGUvbmV0 ZGIuaCIgMiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAjIDEgIi91c3IvaW5jbHVkZS9ycGMvbmV0 ZGIuaCIgMSAzIDQKPj4+ICMgNDIgIi91c3IvaW5jbHVkZS9ycGMvbmV0ZGIuaCIgMyA0Cj4+PiAj IDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5o IiAxIDMgNAo+Pj4gIyA0MyAiL3Vzci9pbmNsdWRlL3JwYy9uZXRkYi5oIiAyIDMgNAo+Pj4KPj4+ Cj4+Pgo+Pj4gc3RydWN0IHJwY2VudAo+Pj4gewo+Pj4gICBjaGFyICpyX25hbWU7Cj4+PiAgIGNo YXIgKipyX2FsaWFzZXM7Cj4+PiAgIGludCByX251bWJlcjsKPj4+IH07Cj4+Pgo+Pj4gZXh0ZXJu IHZvaWQgc2V0cnBjZW50IChpbnQgX19zdGF5b3BlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4+IGV4dGVybiB2b2lkIGVuZHJwY2VudCAodm9pZCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+IGV4dGVybiBzdHJ1Y3QgcnBj ZW50ICpnZXRycGNieW5hbWUgKGNvbnN0IGNoYXIgKl9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+IGV4dGVybiBzdHJ1Y3QgcnBjZW50ICpnZXRycGNi eW51bWJlciAoaW50IF9fbnVtYmVyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pj4gZXh0ZXJuIHN0cnVjdCBycGNlbnQgKmdldHJwY2VudCAodm9pZCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGlu dCBnZXRycGNieW5hbWVfciAoY29uc3QgY2hhciAqX19uYW1lLCBzdHJ1Y3QgcnBjZW50ICpfX3Jl c3VsdF9idWYsCj4+PiAgICAgICBjaGFyICpfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAo+Pj4g ICAgICAgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+IGV4dGVybiBpbnQgZ2V0cnBjYnludW1iZXJfciAoaW50 IF9fbnVtYmVyLCBzdHJ1Y3QgcnBjZW50ICpfX3Jlc3VsdF9idWYsCj4+PiAgICAgICAgIGNoYXIg Kl9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCj4+PiAgICAgICAgIHN0cnVjdCBycGNlbnQgKipf X3Jlc3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+ PiBleHRlcm4gaW50IGdldHJwY2VudF9yIChzdHJ1Y3QgcnBjZW50ICpfX3Jlc3VsdF9idWYsIGNo YXIgKl9fYnVmZmVyLAo+Pj4gICAgc2l6ZV90IF9fYnVmbGVuLCBzdHJ1Y3QgcnBjZW50ICoqX19y ZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4K Pj4+Cj4+PiAjIDMzICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMiAzIDQKPj4+ICMgNDIgIi91c3Iv aW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbmV0ZGIuaCIg MSAzIDQKPj4+ICMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL25ldGRiLmgiIDMgNAo+Pj4gc3RydWN0 IG5ldGVudAo+Pj4gewo+Pj4gICBjaGFyICpuX25hbWU7Cj4+PiAgIGNoYXIgKipuX2FsaWFzZXM7 Cj4+PiAgIGludCBuX2FkZHJ0eXBlOwo+Pj4gICB1aW50MzJfdCBuX25ldDsKPj4+IH07Cj4+PiAj IDQzICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMiAzIDQKPj4+ICMgNTMgIi91c3IvaW5jbHVkZS9u ZXRkYi5oIiAzIDQKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGlu dCAqX19oX2Vycm5vX2xvY2F0aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4+ICMgOTIgIi91c3Iv aW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4+IGV4dGVybiB2b2lkIGhlcnJvciAoY29uc3QgY2hhciAq X19zdHIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4K Pj4+IGV4dGVybiBjb25zdCBjaGFyICpoc3RyZXJyb3IgKGludCBfX2Vycl9udW0pIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gc3Ry dWN0IGhvc3RlbnQKPj4+IHsKPj4+ICAgY2hhciAqaF9uYW1lOwo+Pj4gICBjaGFyICoqaF9hbGlh c2VzOwo+Pj4gICBpbnQgaF9hZGRydHlwZTsKPj4+ICAgaW50IGhfbGVuZ3RoOwo+Pj4gICBjaGFy ICoqaF9hZGRyX2xpc3Q7Cj4+Pgo+Pj4KPj4+Cj4+PiB9Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIHZvaWQgc2V0aG9zdGVudCAoaW50IF9fc3RheV9vcGVuKTsKPj4+Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgZW5kaG9zdGVudCAodm9pZCk7Cj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gc3RydWN0IGhvc3RlbnQgKmdldGhvc3RlbnQgKHZvaWQp Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpnZXRo b3N0YnlhZGRyIChjb25zdCB2b2lkICpfX2FkZHIsIF9fc29ja2xlbl90IF9fbGVuLAo+Pj4gICAg ICAgICAgIGludCBfX3R5cGUpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gc3RydWN0 IGhvc3RlbnQgKmdldGhvc3RieW5hbWUgKGNvbnN0IGNoYXIgKl9fbmFtZSk7Cj4+PiAjIDE1NSAi L3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAo+Pj4gZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpnZXRo b3N0YnluYW1lMiAoY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX19hZik7Cj4+PiAjIDE2NyAiL3Vz ci9pbmNsdWRlL25ldGRiLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBnZXRob3N0ZW50X3IgKHN0cnVj dCBob3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKPj4+ICAgICBjaGFyICpfX3Jlc3Ry aWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCj4+PiAgICAgc3RydWN0IGhvc3RlbnQgKipfX3Jl c3RyaWN0IF9fcmVzdWx0LAo+Pj4gICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsKPj4+ Cj4+PiBleHRlcm4gaW50IGdldGhvc3RieWFkZHJfciAoY29uc3Qgdm9pZCAqX19yZXN0cmljdCBf X2FkZHIsIF9fc29ja2xlbl90IF9fbGVuLAo+Pj4gICAgICAgIGludCBfX3R5cGUsCj4+PiAgICAg ICAgc3RydWN0IGhvc3RlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAo+Pj4gICAgICAgIGNo YXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKPj4+ICAgICAgICBzdHJ1Y3Qg aG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCj4+PiAgICAgICAgaW50ICpfX3Jlc3RyaWN0 IF9faF9lcnJub3ApOwo+Pj4KPj4+IGV4dGVybiBpbnQgZ2V0aG9zdGJ5bmFtZV9yIChjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4+ICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqX19yZXN0 cmljdCBfX3Jlc3VsdF9idWYsCj4+PiAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6 ZV90IF9fYnVmbGVuLAo+Pj4gICAgICAgIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0cmljdCBfX3Jl c3VsdCwKPj4+ICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCk7Cj4+Pgo+Pj4gZXh0 ZXJuIGludCBnZXRob3N0YnluYW1lMl9yIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwg aW50IF9fYWYsCj4+PiAgICAgICAgIHN0cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0 X2J1ZiwKPj4+ICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu LAo+Pj4gICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCj4+PiAg ICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsKPj4+ICMgMTk4ICIvdXNyL2luY2x1 ZGUvbmV0ZGIuaCIgMyA0Cj4+PiBleHRlcm4gdm9pZCBzZXRuZXRlbnQgKGludCBfX3N0YXlfb3Bl bik7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkIGVuZG5ldGVudCAodm9pZCk7 Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gc3RydWN0IG5ldGVudCAqZ2V0bmV0 ZW50ICh2b2lkKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzdHJ1Y3QgbmV0 ZW50ICpnZXRuZXRieWFkZHIgKHVpbnQzMl90IF9fbmV0LCBpbnQgX190eXBlKTsKPj4+Cj4+Pgo+ Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdldG5ldGJ5bmFtZSAoY29uc3Qg Y2hhciAqX19uYW1lKTsKPj4+ICMgMjM3ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0Cj4+PiBl eHRlcm4gaW50IGdldG5ldGVudF9yIChzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0 X2J1ZiwKPj4+ICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKPj4+ ICAgIHN0cnVjdCBuZXRlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAo+Pj4gICAgaW50ICpfX3Jl c3RyaWN0IF9faF9lcnJub3ApOwo+Pj4KPj4+IGV4dGVybiBpbnQgZ2V0bmV0YnlhZGRyX3IgKHVp bnQzMl90IF9fbmV0LCBpbnQgX190eXBlLAo+Pj4gICAgICAgc3RydWN0IG5ldGVudCAqX19yZXN0 cmljdCBfX3Jlc3VsdF9idWYsCj4+PiAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXpl X3QgX19idWZsZW4sCj4+PiAgICAgICBzdHJ1Y3QgbmV0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3Vs dCwKPj4+ICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsKPj4+Cj4+PiBleHRlcm4g aW50IGdldG5ldGJ5bmFtZV9yIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4+ICAg ICAgIHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAo+Pj4gICAgICAgY2hh ciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAo+Pj4gICAgICAgc3RydWN0IG5l dGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCj4+PiAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19o X2Vycm5vcCk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gc3RydWN0IHNlcnZlbnQKPj4+IHsKPj4+ICAg Y2hhciAqc19uYW1lOwo+Pj4gICBjaGFyICoqc19hbGlhc2VzOwo+Pj4gICBpbnQgc19wb3J0Owo+ Pj4gICBjaGFyICpzX3Byb3RvOwo+Pj4gfTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4 dGVybiB2b2lkIHNldHNlcnZlbnQgKGludCBfX3N0YXlfb3Blbik7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4KPj4+IGV4dGVybiB2b2lkIGVuZHNlcnZlbnQgKHZvaWQpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4gZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2ZW50ICh2b2lkKTsKPj4+Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5bmFt ZSAoY29uc3QgY2hhciAqX19uYW1lLCBjb25zdCBjaGFyICpfX3Byb3RvKTsKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5cG9ydCAoaW50 IF9fcG9ydCwgY29uc3QgY2hhciAqX19wcm90byk7Cj4+PiAjIDMwOCAiL3Vzci9pbmNsdWRlL25l dGRiLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBnZXRzZXJ2ZW50X3IgKHN0cnVjdCBzZXJ2ZW50ICpf X3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKPj4+ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBz aXplX3QgX19idWZsZW4sCj4+PiAgICAgc3RydWN0IHNlcnZlbnQgKipfX3Jlc3RyaWN0IF9fcmVz dWx0KTsKPj4+Cj4+PiBleHRlcm4gaW50IGdldHNlcnZieW5hbWVfciAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25hbWUsCj4+PiAgICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Byb3Rv LAo+Pj4gICAgICAgIHN0cnVjdCBzZXJ2ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKPj4+ ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCj4+PiAgICAg ICAgc3RydWN0IHNlcnZlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKPj4+Cj4+PiBleHRlcm4g aW50IGdldHNlcnZieXBvcnRfciAoaW50IF9fcG9ydCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBf X3Byb3RvLAo+Pj4gICAgICAgIHN0cnVjdCBzZXJ2ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1 ZiwKPj4+ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCj4+ PiAgICAgICAgc3RydWN0IHNlcnZlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKPj4+Cj4+Pgo+ Pj4KPj4+Cj4+PiBzdHJ1Y3QgcHJvdG9lbnQKPj4+IHsKPj4+ICAgY2hhciAqcF9uYW1lOwo+Pj4g ICBjaGFyICoqcF9hbGlhc2VzOwo+Pj4gICBpbnQgcF9wcm90bzsKPj4+IH07Cj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBzZXRwcm90b2VudCAoaW50IF9fc3RheV9vcGVu KTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHZvaWQgZW5kcHJvdG9lbnQgKHZvaWQp Owo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAqZ2V0 cHJvdG9lbnQgKHZvaWQpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gc3RydWN0IHBy b3RvZW50ICpnZXRwcm90b2J5bmFtZSAoY29uc3QgY2hhciAqX19uYW1lKTsKPj4+Cj4+Pgo+Pj4K Pj4+Cj4+Pgo+Pj4gZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9ieW51bWJlciAoaW50 IF9fcHJvdG8pOwo+Pj4gIyAzNzQgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4+IGV4dGVy biBpbnQgZ2V0cHJvdG9lbnRfciAoc3RydWN0IHByb3RvZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0 X2J1ZiwKPj4+ICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAo+ Pj4gICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKPj4+Cj4+PiBl eHRlcm4gaW50IGdldHByb3RvYnluYW1lX3IgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1l LAo+Pj4gICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAo+ Pj4gICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCj4+PiAg ICAgICAgIHN0cnVjdCBwcm90b2VudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpOwo+Pj4KPj4+IGV4 dGVybiBpbnQgZ2V0cHJvdG9ieW51bWJlcl9yIChpbnQgX19wcm90bywKPj4+ICAgICAgICAgICBz dHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAo+Pj4gICAgICAgICAgIGNo YXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKPj4+ICAgICAgICAgICBzdHJ1 Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKPj4+ICMgMzk1ICIvdXNyL2luY2x1 ZGUvbmV0ZGIuaCIgMyA0Cj4+PiBleHRlcm4gaW50IHNldG5ldGdyZW50IChjb25zdCBjaGFyICpf X25ldGdyb3VwKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gdm9pZCBl bmRuZXRncmVudCAodm9pZCk7Cj4+PiAjIDQxMiAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAo+ Pj4gZXh0ZXJuIGludCBnZXRuZXRncmVudCAoY2hhciAqKl9fcmVzdHJpY3QgX19ob3N0cCwKPj4+ ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdXNlcnAsCj4+PiAgICBjaGFyICoqX19yZXN0cmljdCBf X2RvbWFpbnApOwo+Pj4gIyA0MjMgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4+IGV4dGVy biBpbnQgaW5uZXRnciAoY29uc3QgY2hhciAqX19uZXRncm91cCwgY29uc3QgY2hhciAqX19ob3N0 LAo+Pj4gICAgICAgY29uc3QgY2hhciAqX191c2VyLCBjb25zdCBjaGFyICpfX2RvbWFpbik7Cj4+ Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBnZXRuZXRncmVudF9yIChj aGFyICoqX19yZXN0cmljdCBfX2hvc3RwLAo+Pj4gICAgICBjaGFyICoqX19yZXN0cmljdCBfX3Vz ZXJwLAo+Pj4gICAgICBjaGFyICoqX19yZXN0cmljdCBfX2RvbWFpbnAsCj4+PiAgICAgIGNoYXIg Kl9fcmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1Zmxlbik7Cj4+PiAjIDQ1MSAiL3Vzci9p bmNsdWRlL25ldGRiLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCByY21kIChjaGFyICoqX19yZXN0cmlj dCBfX2Fob3N0LCB1bnNpZ25lZCBzaG9ydCBpbnQgX19ycG9ydCwKPj4+ICAgIGNvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19sb2N1c2VyLAo+Pj4gICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Jl bXVzZXIsCj4+PiAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9fcmVzdHJp Y3QgX19mZDJwKTsKPj4+ICMgNDYzICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0Cj4+PiBleHRl cm4gaW50IHJjbWRfYWYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYWhvc3QsIHVuc2lnbmVkIHNob3J0 IGludCBfX3Jwb3J0LAo+Pj4gICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2xvY3VzZXIs Cj4+PiAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcmVtdXNlciwKPj4+ICAgICAgIGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19jbWQsIGludCAqX19yZXN0cmljdCBfX2ZkMnAsCj4+PiAg ICAgICBzYV9mYW1pbHlfdCBfX2FmKTsKPj4+ICMgNDc5ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIg MyA0Cj4+PiBleHRlcm4gaW50IHJleGVjIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCBpbnQg X19ycG9ydCwKPj4+ICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4+ICAgICBj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGFzcywKPj4+ICAgICBjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fY21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwKTsKPj4+ICMgNDkxICIvdXNyL2luY2x1 ZGUvbmV0ZGIuaCIgMyA0Cj4+PiBleHRlcm4gaW50IHJleGVjX2FmIChjaGFyICoqX19yZXN0cmlj dCBfX2Fob3N0LCBpbnQgX19ycG9ydCwKPj4+ICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fbmFtZSwKPj4+ICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGFzcywKPj4+ICAg ICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJw LAo+Pj4gICAgICAgIHNhX2ZhbWlseV90IF9fYWYpOwo+Pj4gIyA1MDUgIi91c3IvaW5jbHVkZS9u ZXRkYi5oIiAzIDQKPj4+IGV4dGVybiBpbnQgcnVzZXJvayAoY29uc3QgY2hhciAqX19yaG9zdCwg aW50IF9fc3VzZXIsCj4+PiAgICAgICBjb25zdCBjaGFyICpfX3JlbXVzZXIsIGNvbnN0IGNoYXIg Kl9fbG9jdXNlcik7Cj4+PiAjIDUxNSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAo+Pj4gZXh0 ZXJuIGludCBydXNlcm9rX2FmIChjb25zdCBjaGFyICpfX3Job3N0LCBpbnQgX19zdXNlciwKPj4+ ICAgICAgICAgIGNvbnN0IGNoYXIgKl9fcmVtdXNlciwgY29uc3QgY2hhciAqX19sb2N1c2VyLAo+ Pj4gICAgICAgICAgc2FfZmFtaWx5X3QgX19hZik7Cj4+PiAjIDUyOCAiL3Vzci9pbmNsdWRlL25l dGRiLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBpcnVzZXJvayAodWludDMyX3QgX19yYWRkciwgaW50 IF9fc3VzZXIsCj4+PiAgICAgICAgY29uc3QgY2hhciAqX19yZW11c2VyLCBjb25zdCBjaGFyICpf X2xvY3VzZXIpOwo+Pj4gIyA1MzkgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4+IGV4dGVy biBpbnQgaXJ1c2Vyb2tfYWYgKGNvbnN0IHZvaWQgKl9fcmFkZHIsIGludCBfX3N1c2VyLAo+Pj4g ICAgY29uc3QgY2hhciAqX19yZW11c2VyLCBjb25zdCBjaGFyICpfX2xvY3VzZXIsCj4+PiAgICBz YV9mYW1pbHlfdCBfX2FmKTsKPj4+ICMgNTUxICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0Cj4+ PiBleHRlcm4gaW50IHJyZXN2cG9ydCAoaW50ICpfX2FscG9ydCk7Cj4+PiAjIDU2MCAiL3Vzci9p bmNsdWRlL25ldGRiLmgiIDMgNAo+Pj4gZXh0ZXJuIGludCBycmVzdnBvcnRfYWYgKGludCAqX19h bHBvcnQsIHNhX2ZhbWlseV90IF9fYWYpOwo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gc3Ry dWN0IGFkZHJpbmZvCj4+PiB7Cj4+PiAgIGludCBhaV9mbGFnczsKPj4+ICAgaW50IGFpX2ZhbWls eTsKPj4+ICAgaW50IGFpX3NvY2t0eXBlOwo+Pj4gICBpbnQgYWlfcHJvdG9jb2w7Cj4+PiAgIHNv Y2tsZW5fdCBhaV9hZGRybGVuOwo+Pj4gICBzdHJ1Y3Qgc29ja2FkZHIgKmFpX2FkZHI7Cj4+PiAg IGNoYXIgKmFpX2Nhbm9ubmFtZTsKPj4+ICAgc3RydWN0IGFkZHJpbmZvICphaV9uZXh0Owo+Pj4g fTsKPj4+ICMgNjYyICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0Cj4+PiBleHRlcm4gaW50IGdl dGFkZHJpbmZvIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4+ICAgIGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19zZXJ2aWNlLAo+Pj4gICAgY29uc3Qgc3RydWN0IGFkZHJpbmZvICpf X3Jlc3RyaWN0IF9fcmVxLAo+Pj4gICAgc3RydWN0IGFkZHJpbmZvICoqX19yZXN0cmljdCBfX3Bh aSk7Cj4+Pgo+Pj4KPj4+IGV4dGVybiB2b2lkIGZyZWVhZGRyaW5mbyAoc3RydWN0IGFkZHJpbmZv ICpfX2FpKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+ Cj4+PiBleHRlcm4gY29uc3QgY2hhciAqZ2FpX3N0cmVycm9yIChpbnQgX19lY29kZSkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIGludCBnZXRuYW1laW5mbyAoY29uc3Qgc3RydWN0IHNvY2thZGRyICpfX3Jlc3Ry aWN0IF9fc2EsCj4+PiAgICBzb2NrbGVuX3QgX19zYWxlbiwgY2hhciAqX19yZXN0cmljdCBfX2hv c3QsCj4+PiAgICBzb2NrbGVuX3QgX19ob3N0bGVuLCBjaGFyICpfX3Jlc3RyaWN0IF9fc2VydiwK Pj4+ICAgIHNvY2tsZW5fdCBfX3NlcnZsZW4sIGludCBfX2ZsYWdzKTsKPj4+ICMgNzEzICIvdXNy L2luY2x1ZGUvbmV0ZGIuaCIgMyA0Cj4+Pgo+Pj4gIyA4MSAibWFjaGluZS5jIiAyCj4+Pgo+Pj4g IyAxICIvdXNyL2luY2x1ZGUvYXJwYS9pbmV0LmgiIDEgMyA0Cj4+PiAjIDMwICIvdXNyL2luY2x1 ZGUvYXJwYS9pbmV0LmgiIDMgNAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbl9hZGRyX3Qg aW5ldF9hZGRyIChjb25zdCBjaGFyICpfX2NwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gaW5fYWRkcl90IGluZXRfbG5hb2YgKHN0 cnVjdCBpbl9hZGRyIF9faW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gc3RydWN0IGluX2FkZHIgaW5ldF9tYWtlYWRkciAo aW5fYWRkcl90IF9fbmV0LCBpbl9hZGRyX3QgX19ob3N0KQo+Pj4gICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+PiBleHRlcm4gaW5fYWRkcl90 IGluZXRfbmV0b2YgKHN0cnVjdCBpbl9hZGRyIF9faW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gaW5fYWRkcl90IGluZXRf bmV0d29yayAoY29uc3QgY2hhciAqX19jcCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBjaGFyICppbmV0X250b2EgKHN0cnVj dCBpbl9hZGRyIF9faW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGludCBpbmV0X3B0b24gKGludCBfX2FmLCBjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fY3AsCj4+PiAgICAgICAgIHZvaWQgKl9fcmVzdHJpY3QgX19i dWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4gZXh0ZXJuIGNvbnN0IGNoYXIgKmluZXRfbnRvcCAoaW50IF9fYWYsIGNvbnN0IHZv aWQgKl9fcmVzdHJpY3QgX19jcCwKPj4+ICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs IHNvY2tsZW5fdCBfX2xlbikKPj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IGV4dGVybiBpbnQgaW5ldF9h dG9uIChjb25zdCBjaGFyICpfX2NwLCBzdHJ1Y3QgaW5fYWRkciAqX19pbnApIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gY2hh ciAqaW5ldF9uZXRhIChpbl9hZGRyX3QgX19uZXQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4p IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+ Pgo+Pj4gZXh0ZXJuIGNoYXIgKmluZXRfbmV0X250b3AgKGludCBfX2FmLCBjb25zdCB2b2lkICpf X2NwLCBpbnQgX19iaXRzLAo+Pj4gICAgICAgIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+ Pj4gZXh0ZXJuIGludCBpbmV0X25ldF9wdG9uIChpbnQgX19hZiwgY29uc3QgY2hhciAqX19jcCwK Pj4+ICAgICAgdm9pZCAqX19idWYsIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiBleHRlcm4gdW5zaWduZWQg aW50IGluZXRfbnNhcF9hZGRyIChjb25zdCBjaGFyICpfX2NwLAo+Pj4gICAgICAgICB1bnNpZ25l ZCBjaGFyICpfX2J1ZiwgaW50IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pj4KPj4+Cj4+Pgo+Pj4gZXh0ZXJuIGNoYXIgKmluZXRfbnNhcF9udG9hIChp bnQgX19sZW4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9fY3AsCj4+PiAgICAgICAgIGNoYXIgKl9f YnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pj4KPj4+Cj4+ Pgo+Pj4gIyA4MyAibWFjaGluZS5jIiAyCj4+PiAjIDEzNSAibWFjaGluZS5jIgo+Pj4KPj4+ICMg MTM1ICJtYWNoaW5lLmMiCj4+PiBzdGF0aWMgUGxMb25nIHN0YXJ0X3VzZXJfdGltZSA9IDA7Cj4+ PiBzdGF0aWMgUGxMb25nIHN0YXJ0X3N5c3RlbV90aW1lID0gMDsKPj4+IHN0YXRpYyBQbExvbmcg c3RhcnRfcmVhbF90aW1lID0gMDsKPj4+Cj4+PiBzdGF0aWMgaW50IGN1cl9zZWVkID0gMTsKPj4+ ICMgMTUwICJtYWNoaW5lLmMiCj4+PiBzdGF0aWMgY2hhciAqSG9zdF9OYW1lX0Zyb21fQWxpYXMo c3RydWN0IGhvc3RlbnQgKmhvc3RfZW50cnkpOwo+Pj4gIyAxNjcgIm1hY2hpbmUuYyIKPj4+IHZv aWQKPj4+IFBsX0luaXRfTWFjaGluZSh2b2lkKQo+Pj4gewo+Pj4gICB0enNldCgpOwo+Pj4KPj4+ ICAgc3RhcnRfdXNlcl90aW1lID0gUGxfTV9Vc2VyX1RpbWUoKTsKPj4+ICAgc3RhcnRfc3lzdGVt X3RpbWUgPSBQbF9NX1N5c3RlbV9UaW1lKCk7Cj4+PiAgIHN0YXJ0X3JlYWxfdGltZSA9IFBsX01f UmVhbF9UaW1lKCk7Cj4+Pgo+Pj4KPj4+ICAgbWFsbG9wdCgKPj4+ICMgMTc3ICJtYWNoaW5lLmMi IDMgNAo+Pj4gICAgICAgICAgLTQKPj4+ICMgMTc3ICJtYWNoaW5lLmMiCj4+PiAgICAgICAgICAg ICAgICAgICAgLCAwKTsKPj4+Cj4+Pgo+Pj4gICBQbF9Jbml0X01hY2hpbmUxKCk7Cj4+PiB9Cj4+ PiAjIDE5MCAibWFjaGluZS5jIgo+Pj4gY2hhciAqCj4+PiBQbF9NX1N5c19FcnJfU3RyaW5nKGlu dCByZXRfdmFsKQo+Pj4gewo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+Cj4+PiAgIGNoYXIgKnN0cjsKPj4+ ICAgc3RhdGljIGNoYXIgYnVmZls2NF07Cj4+PiAjIDIyNiAibWFjaGluZS5jIgo+Pj4gICBzdHIg PSBzdHJlcnJvcigKPj4+ICMgMjI2ICJtYWNoaW5lLmMiIDMgNAo+Pj4gICAgICAgICAgICAgICAg ICgqX19lcnJub19sb2NhdGlvbiAoKSkKPj4+ICMgMjI2ICJtYWNoaW5lLmMiCj4+PiAgICAgICAg ICAgICAgICAgICAgICApOwo+Pj4KPj4+Cj4+PiAgIGlmIChzdHIpCj4+PiAgICAgcmV0dXJuIHN0 cjsKPj4+Cj4+PiAgIHNwcmludGYoYnVmZiwgIlVua25vd24gZXJyb3IgKCVkKSIsIAo+Pj4gIyAy MzIgIm1hY2hpbmUuYyIgMyA0Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCpfX2Vycm5vX2xvY2F0aW9uICgpKQo+Pj4gIyAyMzIgIm1hY2hpbmUuYyIKPj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cj4+PiAgIHJldHVybiBidWZmOwo+Pj4g fQo+Pj4gIyAyNDQgIm1hY2hpbmUuYyIKPj4+IFBsTG9uZwo+Pj4gUGxfTV9Vc2VyX1RpbWUodm9p ZCkKPj4+IHsKPj4+ICAgUGxMb25nIHVzZXJfdGltZTsKPj4+Cj4+Pgo+Pj4gICBzdHJ1Y3QgcnVz YWdlIHJzcl91c2FnZTsKPj4+Cj4+PiAgIGdldHJ1c2FnZSgKPj4+ICMgMjUyICJtYWNoaW5lLmMi IDMgNAo+Pj4gICAgICAgICAgICBSVVNBR0VfU0VMRgo+Pj4gIyAyNTIgIm1hY2hpbmUuYyIKPj4+ ICAgICAgICAgICAgICAgICAgICAgICAsICZyc3JfdXNhZ2UpOwo+Pj4KPj4+ICAgdXNlcl90aW1l ID0gKHJzcl91c2FnZS5ydV91dGltZS50dl9zZWMgKiAxMDAwKSArCj4+PiAgICAgKHJzcl91c2Fn ZS5ydV91dGltZS50dl91c2VjIC8gMTAwMCk7Cj4+PiAjIDI3NSAibWFjaGluZS5jIgo+Pj4gICBy ZXR1cm4gdXNlcl90aW1lIC0gc3RhcnRfdXNlcl90aW1lOwo+Pj4gfQo+Pj4gIyAyODYgIm1hY2hp bmUuYyIKPj4+IFBsTG9uZwo+Pj4gUGxfTV9TeXN0ZW1fVGltZSh2b2lkKQo+Pj4gewo+Pj4gICBQ bExvbmcgc3lzdGVtX3RpbWU7Cj4+Pgo+Pj4KPj4+ICAgc3RydWN0IHJ1c2FnZSByc3JfdXNhZ2U7 Cj4+Pgo+Pj4gICBnZXRydXNhZ2UoCj4+PiAjIDI5NCAibWFjaGluZS5jIiAzIDQKPj4+ICAgICAg ICAgICAgUlVTQUdFX1NFTEYKPj4+ICMgMjk0ICJtYWNoaW5lLmMiCj4+PiAgICAgICAgICAgICAg ICAgICAgICAgLCAmcnNyX3VzYWdlKTsKPj4+Cj4+PiAgIHN5c3RlbV90aW1lID0gKHJzcl91c2Fn ZS5ydV9zdGltZS50dl9zZWMgKiAxMDAwKSArCj4+PiAgICAgKHJzcl91c2FnZS5ydV9zdGltZS50 dl91c2VjIC8gMTAwMCk7Cj4+PiAjIDMxNyAibWFjaGluZS5jIgo+Pj4gICByZXR1cm4gc3lzdGVt X3RpbWUgLSBzdGFydF9zeXN0ZW1fdGltZTsKPj4+IH0KPj4+ICMgMzI4ICJtYWNoaW5lLmMiCj4+ PiBQbExvbmcKPj4+IFBsX01fUmVhbF9UaW1lKHZvaWQpCj4+PiB7Cj4+PiAgIFBsTG9uZyByZWFs X3RpbWU7Cj4+Pgo+Pj4KPj4+ICAgc3RydWN0IHRpbWV2YWwgdHY7Cj4+Pgo+Pj4gICBnZXR0aW1l b2ZkYXkoJnR2LCAKPj4+ICMgMzM2ICJtYWNoaW5lLmMiIDMgNAo+Pj4gICAgICAgICAgICAgICAg ICAgICgodm9pZCAqKTApCj4+PiAjIDMzNiAibWFjaGluZS5jIgo+Pj4gICAgICAgICAgICAgICAg ICAgICAgICApOwo+Pj4gICByZWFsX3RpbWUgPSAodHYudHZfc2VjICogMTAwMCkgKyAodHYudHZf dXNlYyAvIDEwMDApOwo+Pj4gIyAzNTAgIm1hY2hpbmUuYyIKPj4+ICAgcmV0dXJuIHJlYWxfdGlt ZSAtIHN0YXJ0X3JlYWxfdGltZTsKPj4+IH0KPj4+ICMgMzY3ICJtYWNoaW5lLmMiCj4+PiB2b2lk Cj4+PiBQbF9NX1JhbmRvbWl6ZSh2b2lkKQo+Pj4gewo+Pj4gICBzdGF0aWMgaW50IGNvdW50ID0g MDsKPj4+Cj4+Pgo+Pj4KPj4+ICAgc3RydWN0IHRpbWV2YWwgdHY7Cj4+PiAgIGludCBzZWVkOwo+ Pj4KPj4+ICAgZ2V0dGltZW9mZGF5KCZ0diwgCj4+PiAjIDM3NyAibWFjaGluZS5jIiAzIDQKPj4+ ICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQo+Pj4gIyAzNzcgIm1hY2hpbmUuYyIKPj4+ ICAgICAgICAgICAgICAgICAgICAgICAgKTsKPj4+ICAgc2VlZCA9ICh0di50dl9zZWMgKiAxMDAw KSArICh0di50dl91c2VjIC8gMTAwMCk7Cj4+Pgo+Pj4gICBjb3VudCA9IChjb3VudCArIHJhbmQo KSkgJSAweEZGRkY7Cj4+PiAgIHNlZWQgPSBzZWVkIF4gKGdldHBpZCgpIDw8IChzZWVkICYgMHhG RikpOwo+Pj4gICBzZWVkICo9IGNvdW50Owo+Pj4gICBzZWVkID0gc2VlZCAmIDB4RkZGRkZGOwo+ Pj4KPj4+ICAgUGxfTV9TZXRfU2VlZChzZWVkKTsKPj4+IH0KPj4+ICMgMzk1ICJtYWNoaW5lLmMi Cj4+PiB2b2lkCj4+PiBQbF9NX1NldF9TZWVkKGludCBuKQo+Pj4gewo+Pj4gICBjdXJfc2VlZCA9 IG47Cj4+PiAgIHNyYW5kKGN1cl9zZWVkKTsKPj4+IH0KPj4+ICMgNDA5ICJtYWNoaW5lLmMiCj4+ PiBpbnQKPj4+IFBsX01fR2V0X1NlZWQodm9pZCkKPj4+IHsKPj4+ICAgcmV0dXJuIGN1cl9zZWVk Owo+Pj4gfQo+Pj4gIyA0MjMgIm1hY2hpbmUuYyIKPj4+IGludAo+Pj4gUGxfTV9SYW5kb21fSW50 ZWdlcihpbnQgbikKPj4+IHsKPj4+ICAgcmV0dXJuIChpbnQpICgoZG91YmxlKSBuICogcmFuZCgp IC8gKAo+Pj4gIyA0MjYgIm1hY2hpbmUuYyIgMyA0Cj4+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDIxNDc0ODM2NDcgCj4+PiAjIDQyNiAibWFjaGluZS5jIgo+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDEuMCkpOwo+Pj4g fQo+Pj4gIyA0MzcgIm1hY2hpbmUuYyIKPj4+IGRvdWJsZQo+Pj4gUGxfTV9SYW5kb21fRmxvYXQo ZG91YmxlIG4pCj4+PiB7Cj4+PiAgIHJldHVybiBuICogcmFuZCgpIC8gKAo+Pj4gIyA0NDAgIm1h Y2hpbmUuYyIgMyA0Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgMjE0NzQ4MzY0NyAKPj4+ICMg NDQwICJtYWNoaW5lLmMiCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxLjAp Owo+Pj4gfQo+Pj4gIyA0NTEgIm1hY2hpbmUuYyIKPj4+IGNoYXIgKgo+Pj4gUGxfTV9Ib3N0X05h bWVfRnJvbV9OYW1lKGNoYXIgKmhvc3RfbmFtZSkKPj4+IHsKPj4+ICAgc3RhdGljIGNoYXIgYnVm Zls0MDk2XTsKPj4+Cj4+Pgo+Pj4gICBzdHJ1Y3QgaG9zdGVudCAqaG9zdF9lbnRyeTsKPj4+Cj4+ Pgo+Pj4gICBpZiAoaG9zdF9uYW1lID09IAo+Pj4gIyA0NjAgIm1hY2hpbmUuYyIgMyA0Cj4+PiAg ICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQo+Pj4gIyA0NjAgIm1hY2hpbmUuYyIKPj4+ICAg ICAgICAgICAgICAgICAgICAgICApCj4+PiAgICAgewo+Pj4gICAgICAgUGxMb25nIGxlbmd0aCA9 IHNpemVvZihidWZmKTsKPj4+ICAgICAgIGhvc3RfbmFtZSA9IGJ1ZmY7Cj4+Pgo+Pj4KPj4+Cj4+ PiAgICAgICBpZiAoZ2V0aG9zdG5hbWUoYnVmZiwgbGVuZ3RoKSkKPj4+Cj4+PiAgICAgICAgIHsK Pj4+ICAgICAgICAgICBzdHJjcHkoYnVmZiwgInVua25vd24gaG9zdCBuYW1lIik7Cj4+PiAgICAg ICAgICAgZ290byBmaW5pc2g7Cj4+PiAgICAgICAgIH0KPj4+ICAgICB9Cj4+Pgo+Pj4gICBpZiAo c3RyY2hyKGhvc3RfbmFtZSwgJy4nKSAhPSAKPj4+ICMgNDc1ICJtYWNoaW5lLmMiIDMgNAo+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCj4+PiAjIDQ3NSAibWFj aGluZS5jIgo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCj4+PiAgICAg Z290byBmaW5pc2g7Cj4+Pgo+Pj4KPj4+Cj4+PiAgIGhvc3RfZW50cnkgPSBnZXRob3N0YnluYW1l KGhvc3RfbmFtZSk7Cj4+PiAgIGlmIChob3N0X2VudHJ5ID09IAo+Pj4gIyA0ODEgIm1hY2hpbmUu YyIgMyA0Cj4+PiAgICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkKPj4+ICMgNDgxICJtYWNo aW5lLmMiCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICkKPj4+ICAgICBnb3RvIGZpbmlzaDsK Pj4+Cj4+PiAgIGhvc3RfbmFtZSA9IEhvc3RfTmFtZV9Gcm9tX0FsaWFzKGhvc3RfZW50cnkpOwo+ Pj4KPj4+Cj4+Pgo+Pj4gZmluaXNoOgo+Pj4gICByZXR1cm4gaG9zdF9uYW1lOwo+Pj4gfQo+Pj4g IyA0OTkgIm1hY2hpbmUuYyIKPj4+IGNoYXIgKgo+Pj4gUGxfTV9Ib3N0X05hbWVfRnJvbV9BZHIo Y2hhciAqaG9zdF9hZGRyZXNzKQo+Pj4gewo+Pj4KPj4+ICAgc3RydWN0IGhvc3RlbnQgKmhvc3Rf ZW50cnk7Cj4+PiAgIHN0cnVjdCBpbl9hZGRyIGlhZHI7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiAgIGlmIChpbmV0X2F0b24oaG9zdF9hZGRyZXNzLCAmaWFkcikgPT0gMCkKPj4+Cj4+PiAg ICAgcmV0dXJuIDA7Cj4+Pgo+Pj4gICBob3N0X2VudHJ5ID0gZ2V0aG9zdGJ5YWRkcigoY2hhciAq KSAmaWFkciwgc2l6ZW9mKGlhZHIpLCAKPj4+ICMgNTE1ICJtYWNoaW5lLmMiIDMgNAo+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIK Pj4+ICMgNTE1ICJtYWNoaW5lLmMiCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cj4+PiAgIGlmIChob3N0X2VudHJ5 ID09IAo+Pj4gIyA1MTYgIm1hY2hpbmUuYyIgMyA0Cj4+PiAgICAgICAgICAgICAgICAgICAgKCh2 b2lkICopMCkKPj4+ICMgNTE2ICJtYWNoaW5lLmMiCj4+PiAgICAgICAgICAgICAgICAgICAgICAg ICkKPj4+ICAgICByZXR1cm4gCj4+PiAjIDUxNyAibWFjaGluZS5jIiAzIDQKPj4+ICAgICAgICAg ICAoKHZvaWQgKikwKQo+Pj4gIyA1MTcgIm1hY2hpbmUuYyIKPj4+ICAgICAgICAgICAgICAgOwo+ Pj4KPj4+ICAgcmV0dXJuIEhvc3RfTmFtZV9Gcm9tX0FsaWFzKGhvc3RfZW50cnkpOwo+Pj4KPj4+ Cj4+Pgo+Pj4gfQo+Pj4gIyA1MzQgIm1hY2hpbmUuYyIKPj4+IHN0YXRpYyBjaGFyICoKPj4+IEhv c3RfTmFtZV9Gcm9tX0FsaWFzKHN0cnVjdCBob3N0ZW50ICpob3N0X2VudHJ5KQo+Pj4gewo+Pj4g ICBjaGFyICpuYW1lOwo+Pj4gICBjaGFyICoqYWxpYXM7Cj4+PiAgIGNoYXIgKnA7Cj4+Pgo+Pj4g ICBuYW1lID0gKGNoYXIgKikgaG9zdF9lbnRyeS0+aF9uYW1lOwo+Pj4gICBhbGlhcyA9IGhvc3Rf ZW50cnktPmhfYWxpYXNlczsKPj4+ICAgd2hpbGUgKChwID0gc3RyY2hyKG5hbWUsICcuJykpID09 IAo+Pj4gIyA1NDMgIm1hY2hpbmUuYyIgMyA0Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgodm9pZCAqKTApIAo+Pj4gIyA1NDMgIm1hY2hpbmUuYyIKPj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAqYWxpYXMpCj4+PiAgICAgbmFtZSA9 ICphbGlhcysrOwo+Pj4KPj4+ICAgaWYgKHApCj4+PiAgICAgcmV0dXJuIG5hbWU7Cj4+Pgo+Pj4g ICByZXR1cm4gKGNoYXIgKikgaG9zdF9lbnRyeS0+aF9uYW1lOwo+Pj4gfQo+Pj4gIyA1NjEgIm1h Y2hpbmUuYyIKPj4+IEJvb2wKPj4+IFBsX01fU2V0X1dvcmtpbmdfRGlyKGNoYXIgKnBhdGgpCj4+ PiB7Cj4+PiAgIGNoYXIgKm5ld19wYXRoID0gUGxfTV9BYnNvbHV0ZV9QYXRoX05hbWUocGF0aCk7 Cj4+Pgo+Pj4gICByZXR1cm4gKG5ld19wYXRoICE9IAo+Pj4gIyA1NjYgIm1hY2hpbmUuYyIgMyA0 Cj4+PiAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKSAKPj4+ICMgNTY2ICJtYWNoaW5l LmMiCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGNoZGlyKG5ld19wYXRoKSA9PSAw KTsKPj4+IH0KPj4+ICMgNTc2ICJtYWNoaW5lLmMiCj4+PiBjaGFyICoKPj4+IFBsX01fR2V0X1dv cmtpbmdfRGlyKHZvaWQpCj4+PiB7Cj4+PiAgIHN0YXRpYyBjaGFyIGN1cl93b3JrX2RpclsKPj4+ ICMgNTc5ICJtYWNoaW5lLmMiIDMgNAo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICA0MDk2 Cj4+PiAjIDU3OSAibWFjaGluZS5jIgo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXTsKPj4+Cj4+PiAgIGlmIChnZXRjd2QoY3VyX3dvcmtfZGlyLCBzaXplb2YoY3VyX3dv cmtfZGlyKSAtIDEpID09IAo+Pj4gIyA1ODEgIm1hY2hpbmUuYyIgMyA0Cj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkK Pj4+ICMgNTgxICJtYWNoaW5lLmMiCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKPj4+ICAgICBzdHJjcHkoY3VyX3dvcmtfZGly LCAiLiIpOwo+Pj4gICByZXR1cm4gY3VyX3dvcmtfZGlyOwo+Pj4gfQo+Pj4gIyA1OTQgIm1hY2hp bmUuYyIKPj4+IGNoYXIgKgo+Pj4gUGxfTV9BYnNvbHV0ZV9QYXRoX05hbWUoY2hhciAqc3JjKQo+ Pj4gewo+Pj4gICBzdGF0aWMgY2hhciBidWZmWzJdWwo+Pj4gIyA1OTcgIm1hY2hpbmUuYyIgMyA0 Cj4+PiAgICAgICAgICAgICAgICAgICAgICA0MDk2Cj4+PiAjIDU5NyAibWFjaGluZS5jIgo+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Cj4+PiAgIGludCByZXMgPSAwOwo+Pj4g ICBjaGFyICpkc3Q7Cj4+PiAgIGNoYXIgKnAsICpxOwo+Pj4gICBjaGFyIGM7Cj4+Pgo+Pj4gICBk c3QgPSBidWZmW3Jlc107Cj4+PiAgIHdoaWxlICgoKmRzdCsrID0gKnNyYykpCj4+PiAgICAgewo+ Pj4gICAgICAgYyA9ICpzcmMrKzsKPj4+ICAgICAgIGlmIChjID09ICckJwo+Pj4KPj4+Cj4+Pgo+ Pj4gICAgICAgICApCj4+PiAgICAgICAgIHsKPj4+ICAgICAgICAgICBwID0gZHN0Owo+Pj4gICAg ICAgICAgIHdoaWxlICgKPj4+ICMgNjE0ICJtYWNoaW5lLmMiIDMgNAo+Pj4gICAgICAgICAgICAg ICAgICgoKl9fY3R5cGVfYl9sb2MgKCkpWyhpbnQpICgoCj4+PiAjIDYxNCAibWFjaGluZS5jIgo+ Pj4gICAgICAgICAgICAgICAgICpzcmMKPj4+ICMgNjE0ICJtYWNoaW5lLmMiIDMgNAo+Pj4gICAg ICAgICAgICAgICAgICkpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9JU2FsbnVtKSAKPj4+ICMg NjE0ICJtYWNoaW5lLmMiCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAqc3Jj ID09ICdfJykKPj4+ICAgICAgICAgICAgICpkc3QrKyA9ICpzcmMrKzsKPj4+Cj4+Pgo+Pj4KPj4+ Cj4+PiAgICAgICAgICAgKmRzdCA9ICdcMCc7Cj4+PiAgICAgICAgICAgcSA9IGdldGVudihwKTsK Pj4+ICAgICAgICAgICBpZiAocSkKPj4+ICAgICAgICAgICAgIHsKPj4+ICAgICAgICAgICAgICAg cC0tOwo+Pj4gICAgICAgICAgICAgICBzdHJjcHkocCwgcSk7Cj4+PiAgICAgICAgICAgICAgIGRz dCA9IHAgKyBzdHJsZW4ocCk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4gICAgICAgICAgICAgfQo+Pj4K Pj4+Cj4+Pgo+Pj4KPj4+ICAgICAgICAgfQo+Pj4gICAgIH0KPj4+ICAgKmRzdCA9ICdcMCc7Cj4+ Pgo+Pj4gICBpZiAoYnVmZltyZXNdWzBdID09ICd+JykKPj4+ICAgICB7Cj4+PiAgICAgICBpZiAo KChidWZmW3Jlc11bMV0pID09ICcvJyB8fCAoYnVmZltyZXNdWzFdKSA9PSAnLycpIHx8IGJ1ZmZb cmVzXVsxXSA9PSAnXDAnKQo+Pj4gICAgICAgICB7Cj4+PiAgICBxID0gCj4+PiAjIDY0NCAibWFj aGluZS5jIiAzIDQKPj4+ICAgICAgICgodm9pZCAqKTApCj4+PiAjIDY0NCAibWFjaGluZS5jIgo+ Pj4gICAgICAgICAgIDs7Cj4+PiAgICAgICAgICAgaWYgKChwID0gZ2V0ZW52KCJIT01FIikpID09 IAo+Pj4gIyA2NDUgIm1hY2hpbmUuYyIgMyA0Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKCh2b2lkICopMCkKPj4+ICMgNjQ1ICJtYWNoaW5lLmMiCj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKPj4+ICAgICAgewo+Pj4KPj4+Cj4+ Pgo+Pj4KPj4+Cj4+PiAgICAgICAgcmV0dXJuIAo+Pj4gIyA2NTIgIm1hY2hpbmUuYyIgMyA0Cj4+ PiAgICAgICAgICAgICAgKCh2b2lkICopMCkKPj4+ICMgNjUyICJtYWNoaW5lLmMiCj4+PiAgICAg ICAgICAgICAgICAgIDsKPj4+Cj4+PiAgICAgIH0KPj4+ICAgIGlmIChxID09IAo+Pj4gIyA2NTUg Im1hY2hpbmUuYyIgMyA0Cj4+PiAgICAgICAgICAgICgodm9pZCAqKTApCj4+PiAjIDY1NSAibWFj aGluZS5jIgo+Pj4gICAgICAgICAgICAgICAgKQo+Pj4gICAgICBxID0gIiI7Cj4+PiAgICAgICAg ICAgc3ByaW50ZihidWZmWzEgLSByZXNdLCAiJXMlcy8lcyIsIHEsIHAsIGJ1ZmZbcmVzXSArIDEp Owo+Pj4gICAgICAgICAgIHJlcyA9IDEgLSByZXM7Cj4+PiAgICAgICAgIH0KPj4+Cj4+PiAgICAg ICBlbHNlCj4+PiAgICAgICAgIHsKPj4+ICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICpwdzsKPj4+ Cj4+PiAgICAgICAgICAgcCA9IGJ1ZmZbcmVzXSArIDE7Cj4+PiAgICAgICAgICAgd2hpbGUgKCpw ICYmICEoKCpwKSA9PSAnLycgfHwgKCpwKSA9PSAnLycpKQo+Pj4gICAgICAgICAgICAgcCsrOwo+ Pj4KPj4+ICAgICAgICAgICBidWZmW3Jlc11bMF0gPSAqcDsKPj4+ICAgICAgICAgICAqcCA9ICdc MCc7Cj4+PiAgICAgICAgICAgaWYgKChwdyA9IGdldHB3bmFtKGJ1ZmZbcmVzXSArIDEpKSA9PSAK Pj4+ICMgNjcxICJtYWNoaW5lLmMiIDMgNAo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQo+Pj4gIyA2NzEgIm1hY2hpbmUuYyIKPj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKPj4+ ICAgICAgICAgICAgIHJldHVybiAKPj4+ICMgNjcyICJtYWNoaW5lLmMiIDMgNAo+Pj4gICAgICAg ICAgICAgICAgICAgKCh2b2lkICopMCkKPj4+ICMgNjcyICJtYWNoaW5lLmMiCj4+PiAgICAgICAg ICAgICAgICAgICAgICAgOwo+Pj4KPj4+ICAgICAgICAgICAqcCA9IGJ1ZmZbcmVzXVswXTsKPj4+ Cj4+PiAgICAgICAgICAgc3ByaW50ZihidWZmWzEgLSByZXNdLCAiJXMvJXMiLCBwdy0+cHdfZGly LCBwKTsKPj4+ICAgICAgICAgICByZXMgPSAxIC0gcmVzOwo+Pj4gICAgICAgICB9Cj4+Pgo+Pj4g ICAgIH0KPj4+Cj4+PiAgIGlmIChzdHJjbXAoYnVmZltyZXNdLCAidXNlciIpID09IDApCj4+PiAg ICAgcmV0dXJuIGJ1ZmZbcmVzXTsKPj4+ICMgNzA2ICJtYWNoaW5lLmMiCj4+PiAgIGlmIChidWZm W3Jlc11bMF0gIT0gJy8nKQo+Pj4gICAgIHsKPj4+ICAgICAgIHNwcmludGYoYnVmZlsxIC0gcmVz XSwgIiVzLyVzIiwgUGxfTV9HZXRfV29ya2luZ19EaXIoKSwgYnVmZltyZXNdKTsKPj4+ICAgICAg IHJlcyA9IDEgLSByZXM7Cj4+PiAgICAgfQo+Pj4KPj4+ICAgc3JjID0gYnVmZltyZXNdOwo+Pj4g ICByZXMgPSAxIC0gcmVzOwo+Pj4gICBkc3QgPSBidWZmW3Jlc107Cj4+Pgo+Pj4gICB3aGlsZSAo KCpkc3QrKyA9ICpzcmMpKQo+Pj4gICAgIHsKPj4+ICAgICAgIGlmICgqc3JjKysgIT0gJy8nKQo+ Pj4gICAgICAgICBjb250aW51ZTsKPj4+Cj4+PiAgICAgY29sbGFwc2U6Cj4+PiAgICAgICB3aGls ZSAoKnNyYyA9PSAnLycpCj4+PiAgICAgICAgIHNyYysrOwo+Pj4KPj4+ICAgICAgIGlmICgqc3Jj ICE9ICcuJykKPj4+ICAgICAgICAgY29udGludWU7Cj4+Pgo+Pj4gICAgICAgaWYgKHNyY1sxXSA9 PSAnLycgfHwgc3JjWzFdID09ICdcMCcpCj4+PiAgICAgICAgIHsKPj4+ICAgICAgICAgICBzcmMr KzsKPj4+ICAgICAgICAgICBnb3RvIGNvbGxhcHNlOwo+Pj4gICAgICAgICB9Cj4+Pgo+Pj4gICAg ICAgaWYgKHNyY1sxXSAhPSAnLicgfHwgKHNyY1syXSAhPSAnLycgJiYgc3JjWzJdICE9ICdcMCcp KQo+Pj4gICAgICAgICBjb250aW51ZTsKPj4+Cj4+PiAgICAgICBzcmMgKz0gMjsKPj4+ICAgICAg IHAgPSBkc3QgLSAyOwo+Pj4gICAgICAgd2hpbGUgKHAgPj0gYnVmZltyZXNdICYmICpwICE9ICcv JykKPj4+ICAgICAgICAgcC0tOwo+Pj4KPj4+ICAgICAgIGlmIChwIDwgYnVmZltyZXNdKQo+Pj4g ICAgICAgICByZXR1cm4gCj4+PiAjIDc0MyAibWFjaGluZS5jIiAzIDQKPj4+ICAgICAgICAgICAg ICAgKCh2b2lkICopMCkKPj4+ICMgNzQzICJtYWNoaW5lLmMiCj4+PiAgICAgICAgICAgICAgICAg ICA7Cj4+Pgo+Pj4gICAgICAgZHN0ID0gcDsKPj4+ICAgICB9Cj4+Pgo+Pj4gICBkc3QtLTsKPj4+ ICMgNzU5ICJtYWNoaW5lLmMiCj4+PiAgIGlmIChkc3QgLSBidWZmW3Jlc10gPiAxICYmICgoZHN0 Wy0xXSkgPT0gJy8nIHx8IChkc3RbLTFdKSA9PSAnLycpKQo+Pj4gICAgIGRzdFstMV0gPSAnXDAn Owo+Pj4KPj4+ICAgcmV0dXJuIGJ1ZmZbcmVzXTsKPj4+IH0KPj4+ICMgNzczICJtYWNoaW5lLmMi Cj4+PiBCb29sCj4+PiBQbF9NX0lzX0Fic29sdXRlX0ZpbGVfTmFtZShjaGFyICpwYXRoKQo+Pj4g ewo+Pj4gICBpZiAoKCgqcGF0aCkgPT0gJy8nIHx8ICgqcGF0aCkgPT0gJy8nKSkKPj4+ICAgICBy ZXR1cm4gMTsKPj4+ICMgNzk1ICJtYWNoaW5lLmMiCj4+PiAgIHJldHVybiAwOwo+Pj4gfQo+Pj4g IyA4MjkgIm1hY2hpbmUuYyIKPj4+IGNoYXIgKgo+Pj4gUGxfTV9EZWNvbXBvc2VfRmlsZV9OYW1l KGNoYXIgKnBhdGgsIEJvb2wgZGVsX3RyYWlsX3NsYXNoZXMsIGNoYXIgKipiYXNlLCBjaGFyICoq c3VmZml4KQo+Pj4gewo+Pj4gICBzdGF0aWMgY2hhciBidWZmX2RpclsKPj4+ICMgODMyICJtYWNo aW5lLmMiIDMgNAo+Pj4gICAgICAgICAgICAgICAgICAgICAgIDQwOTYKPj4+ICMgODMyICJtYWNo aW5lLmMiCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Cj4+PiAgIHN0YXRp YyBjaGFyIGJ1ZmZfYmFzZVsKPj4+ICMgODMzICJtYWNoaW5lLmMiIDMgNAo+Pj4gICAgICAgICAg ICAgICAgICAgICAgICA0MDk2Cj4+PiAjIDgzMyAibWFjaGluZS5jIgo+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXTsKPj4+ICAgaW50IGRpcl9zdGFydF9wb3MgPSAwOwo+Pj4g IyA4NTIgIm1hY2hpbmUuYyIKPj4+ICAgY2hhciAqcDsKPj4+Cj4+PiAgIHN0cmNweShidWZmX2Rp ciwgcGF0aCk7Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+ICAgZG8geyBjaGFyICpfcHRyOyBmb3Io KHApID0gCj4+PiAjIDg2MCAibWFjaGluZS5jIiAzIDQKPj4+ICAoKHZvaWQgKikwKQo+Pj4gIyA4 NjAgIm1hY2hpbmUuYyIKPj4+ICAsIF9wdHIgPSAoYnVmZl9kaXIpOyAqX3B0cjsgX3B0cisrKSBp ZiAoKCgqX3B0cikgPT0gJy8nIHx8ICgqX3B0cikgPT0gJy8nKSkgKHApID0gX3B0cjsgfSB3aGls ZSgwKTsKPj4+Cj4+PiAgIHAgPSAocCA9PSAKPj4+ICMgODYyICJtYWNoaW5lLmMiIDMgNAo+Pj4g ICAgICAgICAgICAoKHZvaWQgKikwKQo+Pj4gIyA4NjIgIm1hY2hpbmUuYyIKPj4+ICAgICAgICAg ICAgICAgICkgPyBidWZmX2RpciArIGRpcl9zdGFydF9wb3MgOiBwICsgMTsKPj4+Cj4+PiAgIHN0 cmNweShidWZmX2Jhc2UsIHApOwo+Pj4gICAqcCA9ICdcMCc7Cj4+Pgo+Pj4gICBpZiAoKHAgPSBz dHJyY2hyKGJ1ZmZfYmFzZSwgJy4nKSkgIT0gCj4+PiAjIDg2NyAibWFjaGluZS5jIiAzIDQKPj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkKPj4+ICMg ODY3ICJtYWNoaW5lLmMiCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApCj4+PiAgICAgKnN1ZmZpeCA9IHA7Cj4+PiAgIGVsc2UKPj4+ICAgICAqc3VmZml4ID0g YnVmZl9iYXNlICsgc3RybGVuKGJ1ZmZfYmFzZSk7Cj4+Pgo+Pj4KPj4+Cj4+PiAgIGlmIChkZWxf dHJhaWxfc2xhc2hlcykKPj4+ICAgICB7Cj4+PiAgICAgICBpZiAoYnVmZl9kaXJbZGlyX3N0YXJ0 X3Bvc10gPT0gJ1wwJykKPj4+ICBzdHJjYXQoYnVmZl9kaXIsICIuIik7Cj4+PiAgICAgICBlbHNl Cj4+PiAgewo+Pj4gICAgaW50IGxlbiA9IHN0cmxlbihidWZmX2Rpcik7Cj4+PiAgICB3aGlsZSgt LWxlbiA+PSBkaXJfc3RhcnRfcG9zICYmICgoYnVmZl9kaXJbbGVuXSkgPT0gJy8nIHx8IChidWZm X2RpcltsZW5dKSA9PSAnLycpKQo+Pj4gICAgICA7Cj4+Pgo+Pj4gICAgaWYgKGxlbiA8IGRpcl9z dGFydF9wb3MpCj4+PiAgICAgIGxlbiA9IGRpcl9zdGFydF9wb3M7Cj4+PiAgICBidWZmX2Rpclts ZW4gKyAxXSA9ICdcMCc7Cj4+PiAgfQo+Pj4gICAgIH0KPj4+Cj4+Pgo+Pj4KPj4+Cj4+Pgo+Pj4K Pj4+ICAgKmJhc2UgPSBidWZmX2Jhc2U7Cj4+Pgo+Pj4gICByZXR1cm4gYnVmZl9kaXI7Cj4+PiB9 Cj4+Cj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ Pj4gQnVnLXByb2xvZyBtYWlsaW5nIGxpc3QKPj4+IEJ1Zy1wcm9sb2dAZ251Lm9yZwo+Pj4gaHR0 cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vYnVnLXByb2xvZwo+Pgo+Pgo+IAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQnVnLXByb2xv ZyBtYWlsaW5nIGxpc3QKQnVnLXByb2xvZ0BnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL2J1Zy1wcm9sb2cK