Re: GCC segfault on i686
Till Hofmann <[email protected]> Fri, 19 Aug 2016 08:56:01 +0200
| Newsgroups | gmane.comp.gnu.prolog.bugs |
|---|---|
| Message-ID | <[email protected]> |
T24gMDgvMTkvMjAxNiAwMjo0MCBBTSwgTWF0dGhldyBDYXJ0ZXIgd3JvdGU6Cj4gSSBjYW4gY29u ZmlybSBmYWlsdXJlIHRvIGJ1aWxkIHdpdGggZ2NjIDYuMSsgb24gaTY4NiAodXNpbmcgQXJjaCBM aW51eAo+IG15c2VsZikuCj4gCj4gSSBjb3VsZG4ndCBnZXQgaXQgdG8gYnVpbGQgd2l0aCB5b3Vy IGNvbmZpZ3VyZSBvcHRpb25zIGhvd2V2ZXIgKGl0IHN0aWxsCj4gZmFpbGVkIHdpdGggc2VnZmF1 bHQgaW4gdGhlIHNhbWUgcGxhY2UpLgoKVGhlIGNvbmZpZ3VyZSBvcHRpb25zIHdlcmUgb25seSB0 byBwcm9kdWNlIHRoZSBtb3JlIHZlcmJvc2UgbWFrZSBvdXRwdXQKYW5kIHRoZSAuaSBmaWxlcy4g VGhlIGJ1aWxkIHN0aWxsIGZhaWxzLiBTb3JyeSBpZiB0aGlzIHdhc24ndCBjbGVhci4KCktpbmQg cmVnYXJkcywKVGlsbAoKPiAKPiAtTWF0dAo+IAo+IE9uIFRodSwgQXVnIDE4LCAyMDE2IGF0IDEy OjEwOjQ5UE0gKzAyMDAsIFRpbGwgSG9mbWFubiB3cm90ZToKPj4gSGkgYWxsLAo+Pgo+PiBJJ20g Y3VycmVudGx5IHRyeWluZyB0byBkZWJ1ZyBhIEdDQyBzZWdmYXVsdCB0aGF0IG9jY3VycyB3aGVu IGNvbXBpbGluZwo+PiBFbmdpbmVQbC9tYWNoaW5lLmMgb24gaTY4NiBtYWNoaW5lczoKPj4KPj4+ IG1ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VT L2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZVBsJwo+Pj4gZ3BsYyAtYyAtQyAnLU8zIC1mb21pdC1m cmFtZS1wb2ludGVyJyBtYWNoaW5lLmMKPj4+IG1hY2hpbmUuYzogSW4gZnVuY3Rpb24g4oCYUGxf TV9SYW5kb21pemXigJk6Cj4+PiBtYWNoaW5lLmM6Mzg2OjE6IGludGVybmFsIGNvbXBpbGVyIGVy cm9yOiBTZWdtZW50YXRpb24gZmF1bHQKPj4KPj4gSXQgbG9va3MgbGlrZSB0aGlzIGlzIHJlbGF0 ZWQgdG8gdXNpbmcgdGhlIGVieCByZWdpc3RlcjsgaWYgSSByZW1vdmUKPj4gJy1mZml4ZWQtZWJ4 JyBmcm9tIHRoZSBjYWxsIHRvIGNjMSwgdGhlIHNlZ2ZhdWx0IGRpc2FwcGVhcnMuCj4+Cj4+IExv b2tpbmcgYXQgdGhlIENoYW5nZWxvZywgaXQgbG9va3MgbGlrZSB0aGVyZSB3YXMgYSBmaXggZm9y IHNvbWUgaXNzdWUKPj4gcmVsYXRlZCB0byB1c2luZyBlYnggaW4gMS4zLjEsIGJ1dCB0aGUgZXJy b3Igc3RpbGwgb2NjdXJzIG9uIGk2ODYuCj4+Cj4+IFRvIHJlcHJvZHVjZSwgeW91IG5lZWQgdG8g YnVpbGQgZ3Byb2xvZyBvbiBpNjg2IHdpdGggR0NDIDYuMS4gSSBjb3VsZAo+PiByZXByb2R1Y2Ug dGhpcyBvbiBtdWx0aXBsZSBtYWNoaW5lcy4KPj4KPj4gU29tZSBhZGRpdGlvbmFsIGluZm86Cj4+ IGdwcm9sb2cgdmVyc2lvbjogMS40LjQKPj4gT1M6IEZlZG9yYSAyNCAoYWxzbyBvY2N1cnMgb24g RmVkb3JhIDI1IGFuZCBGZWRvcmEgUmF3aGlkZSkKPj4gJCBnY2MgLS12ZXJzaW9uCj4+IGdjYyAo R0NDKSA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKQo+PiAkIHVuYW1lIC1hCj4+IExp bnV4IG5jMTAgNC42LjUtMzAwLmZjMjQuaTY4NitQQUUgIzEgU01QIFRodSBKdWwgMjggMDE6MzQ6 NDYgVVRDIDIwMTYKPj4gaTY4NiBpNjg2IGkzODYgR05VL0xpbnV4Cj4+Cj4+IEkgYnVpbGQgd2l0 aCAiLi9jb25maWd1cmUgLS13aXRoLWMtZmxhZ3M9Jy12IC1zYXZlLXRlbXBzJyIsIEkndmUKPj4g YXR0YWNoZWQgdGhlIGZ1bGwgb3V0cHV0IGZyb20gbWFrZS4gSSd2ZSBhbHNvIGF0dGFjaGVkIG1h Y2hpbmUuaS4KPj4KPj4gV2l0aCBvbGRlciBHQ0MgdmVyc2lvbnMgKDw2KSwgdGhlIGJ1ZyBkb2Vz IG5vdCBvY2N1ciwgc28gdGhpcyBtaWdodCB3ZWxsCj4+IGJlIGEgYnVnIGluIEdDQzYuCj4+Cj4+ Cj4+IEtpbmQgcmVnYXJkcwo+PiBUaWxsCj4gCj4+IGNkIEVuZ2luZVBsOyBtYWtlIGNvbmZpZwo+ PiBtYWtlWzFdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNF Uy9ncHJvbG9nLTEuNC40L3NyYy9FbmdpbmVQbCcKPj4gZ2NjIC1tYXJjaD1wZW50aXVtcHJvIC1t MzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXYgLXNhdmUtdGVtcHMgIC1vIHBsX2NvbmZpZyBwbF9j b25maWcuYwo+PiBVc2luZyBidWlsdC1pbiBzcGVjcy4KPj4gQ09MTEVDVF9HQ0M9Z2NjCj4+IENP TExFQ1RfTFRPX1dSQVBQRVI9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEu MS9sdG8td3JhcHBlcgo+PiBUYXJnZXQ6IGk2ODYtcmVkaGF0LWxpbnV4Cj4+IENvbmZpZ3VyZWQg d2l0aDogLi4vY29uZmlndXJlIC0tZW5hYmxlLWJvb3RzdHJhcCAtLWVuYWJsZS1sYW5ndWFnZXM9 YyxjKyssb2JqYyxvYmotYysrLGZvcnRyYW4sYWRhLGdvLGx0byAtLXByZWZpeD0vdXNyIC0tbWFu ZGlyPS91c3Ivc2hhcmUvbWFuIC0taW5mb2Rpcj0vdXNyL3NoYXJlL2luZm8gLS13aXRoLWJ1Z3Vy bD1odHRwOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYSAtLWVuYWJsZS1zaGFyZWQgLS1l bmFibGUtdGhyZWFkcz1wb3NpeCAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIC0tZW5hYmxlLW11 bHRpbGliIC0td2l0aC1zeXN0ZW0temxpYiAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgLS1kaXNhYmxl LWxpYnVud2luZC1leGNlcHRpb25zIC0tZW5hYmxlLWdudS11bmlxdWUtb2JqZWN0IC0tZW5hYmxl LWxpbmtlci1idWlsZC1pZCAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9Z251IC0tZW5hYmxlLXBs dWdpbiAtLWVuYWJsZS1pbml0ZmluaS1hcnJheSAtLWRpc2FibGUtbGliZ2NqIC0td2l0aC1pc2wg LS1lbmFibGUtbGlibXB4IC0tZW5hYmxlLWdudS1pbmRpcmVjdC1mdW5jdGlvbiAtLXdpdGgtdHVu ZT1nZW5lcmljIC0td2l0aC1hcmNoPWk2ODYgLS1idWlsZD1pNjg2LXJlZGhhdC1saW51eAo+PiBU aHJlYWQgbW9kZWw6IHBvc2l4Cj4+IGdjYyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0 IDYuMS4xLTMpIChHQ0MpIAo+PiBDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBy bycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycg J3BsX2NvbmZpZycKPj4gIC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEv Y2MxIC1FIC1xdWlldCAtdiBwbF9jb25maWcuYyAtbWFyY2g9cGVudGl1bXBybyAtbTMyIC1mbm8t c3RyaWN0LWFsaWFzaW5nIC1mcGNoLXByZXByb2Nlc3MgLW8gcGxfY29uZmlnLmkKPj4gaWdub3Jp bmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgv Ni4xLjEvaW5jbHVkZS1maXhlZCIKPj4gaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIv dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vLi4vaTY4Ni1yZWRo YXQtbGludXgvaW5jbHVkZSIKPj4gI2luY2x1ZGUgIi4uLiIgc2VhcmNoIHN0YXJ0cyBoZXJlOgo+ PiAjaW5jbHVkZSA8Li4uPiBzZWFyY2ggc3RhcnRzIGhlcmU6Cj4+ICAvdXNyL2xpYi9nY2MvaTY4 Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZQo+PiAgL3Vzci9sb2NhbC9pbmNsdWRlCj4+ICAv dXNyL2luY2x1ZGUKPj4gRW5kIG9mIHNlYXJjaCBsaXN0Lgo+PiBDT0xMRUNUX0dDQ19PUFRJT05T PSctbWFyY2g9cGVudGl1bXBybycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAn LXNhdmUtdGVtcHMnICctbycgJ3BsX2NvbmZpZycKPj4gIC91c3IvbGliZXhlYy9nY2MvaTY4Ni1y ZWRoYXQtbGludXgvNi4xLjEvY2MxIC1mcHJlcHJvY2Vzc2VkIHBsX2NvbmZpZy5pIC1xdWlldCAt ZHVtcGJhc2UgcGxfY29uZmlnLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtYXV4YmFzZSBwbF9j b25maWcgLXZlcnNpb24gLWZuby1zdHJpY3QtYWxpYXNpbmcgLW8gcGxfY29uZmlnLnMKPj4gR05V IEMxMSAoR0NDKSB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChpNjg2 LXJlZGhhdC1saW51eCkKPj4gCWNvbXBpbGVkIGJ5IEdOVSBDIHZlcnNpb24gNi4xLjEgMjAxNjA2 MjEgKFJlZCBIYXQgNi4xLjEtMyksIEdNUCB2ZXJzaW9uIDYuMS4wLCBNUEZSIHZlcnNpb24gMy4x LjQsIE1QQyB2ZXJzaW9uIDEuMC4yLCBpc2wgdmVyc2lvbiAwLjE0IG9yIDAuMTMKPj4gd2Fybmlu ZzogR01QIGhlYWRlciB2ZXJzaW9uIDYuMS4wIGRpZmZlcnMgZnJvbSBsaWJyYXJ5IHZlcnNpb24g Ni4xLjEuCj4+IEdHQyBoZXVyaXN0aWNzOiAtLXBhcmFtIGdnYy1taW4tZXhwYW5kPTEwMCAtLXBh cmFtIGdnYy1taW4taGVhcHNpemU9MTMxMDcyCj4+IEdOVSBDMTEgKEdDQykgdmVyc2lvbiA2LjEu MSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRoYXQtbGludXgpCj4+IAljb21w aWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpLCBH TVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2ZXJzaW9uIDMuMS40LCBNUEMgdmVyc2lvbiAxLjAuMiwg aXNsIHZlcnNpb24gMC4xNCBvciAwLjEzCj4+IHdhcm5pbmc6IEdNUCBoZWFkZXIgdmVyc2lvbiA2 LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4xLgo+PiBHR0MgaGV1cmlzdGlj czogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJhbSBnZ2MtbWluLWhlYXBzaXplPTEz MTA3Mgo+PiBDb21waWxlciBleGVjdXRhYmxlIGNoZWNrc3VtOiBhYmNlYjEzOGFmNDNhNzhjMzZj MWFhYTIyOGY1ZjkyYQo+PiBDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycg Jy1tMzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ3Bs X2NvbmZpZycKPj4gIGFzIC12IC0tMzIgLW8gcGxfY29uZmlnLm8gcGxfY29uZmlnLnMKPj4gR05V IGFzc2VtYmxlciB2ZXJzaW9uIDIuMjYuMSAoaTY4Ni1yZWRoYXQtbGludXgpIHVzaW5nIEJGRCB2 ZXJzaW9uIHZlcnNpb24gMi4yNi4xLTEuZmMyNAo+PiBDT01QSUxFUl9QQVRIPS91c3IvbGliZXhl Yy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRo YXQtbGludXgvNi4xLjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvOi91c3Iv bGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0 LWxpbnV4Lwo+PiBMSUJSQVJZX1BBVEg9L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYu MS4xLzovdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vOi9saWIv Oi91c3IvbGliLwo+PiBDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1t MzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ3BsX2Nv bmZpZycKPj4gIC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY29sbGVj dDIgLXBsdWdpbiAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2xpYmx0 b19wbHVnaW4uc28gLXBsdWdpbi1vcHQ9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51 eC82LjEuMS9sdG8td3JhcHBlciAtcGx1Z2luLW9wdD0tZnJlc29sdXRpb249cGxfY29uZmlnLnJl cyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91 Z2g9LWxnY2NfcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sYyAtcGx1Z2luLW9wdD0tcGFz cy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2NfcyAtLWJ1aWxk LWlkIC0tbm8tYWRkLW5lZWRlZCAtLWVoLWZyYW1lLWhkciAtLWhhc2gtc3R5bGU9Z251IC1tIGVs Zl9pMzg2IC1keW5hbWljLWxpbmtlciAvbGliL2xkLWxpbnV4LnNvLjIgLW8gcGxfY29uZmlnIC91 c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8uLi9jcnQxLm8gL3Vzci9s aWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uL2NydGkubyAvdXNyL2xpYi9n Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY3J0YmVnaW4ubyAtTC91c3IvbGliL2djYy9pNjg2 LXJlZGhhdC1saW51eC82LjEuMSAtTC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEu MS8uLi8uLi8uLiBwbF9jb25maWcubyAtbGdjYyAtLWFzLW5lZWRlZCAtbGdjY19zIC0tbm8tYXMt bmVlZGVkIC1sYyAtbGdjYyAtLWFzLW5lZWRlZCAtbGdjY19zIC0tbm8tYXMtbmVlZGVkIC91c3Iv bGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jcnRlbmQubyAvdXNyL2xpYi9nY2MvaTY4 Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vY3J0bi5vCj4+IENPTExFQ1RfR0NDX09QVElP TlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYn ICctc2F2ZS10ZW1wcycgJy1vJyAncGxfY29uZmlnJwo+PiAuL3BsX2NvbmZpZwo+Pgo+PiAJLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiAJLS0tIEdOVSBQUk9MT0cgSU5TVEFMTEFU SU9OIC0tLQo+PiAJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pgo+PiBHTlUgUHJv bG9nIHZlcnNpb246IDEuNC40IChBdWcgMTggMjAxNikKPj4gT3BlcmF0aW5nIHN5c3RlbSAgOiBs aW51eC1nbnUKPj4gUHJvY2Vzc29yICAgICAgICAgOiBpNjg2Cj4+IFNpemUgb2YgYSBXQU0gd29y ZDogMzIgYml0cwo+PiBDIGNvbXBpbGVyICAgICAgICA6IGdjYwo+PiBDIGZsYWdzICAgICAgICAg ICA6IC12IC1zYXZlLXRlbXBzCj4+IEMgZmxhZ3MgbWFjaGluZSAgIDogLW1hcmNoPXBlbnRpdW1w cm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2luZwo+PiBBc3NlbWJsZXIgICAgICAgICA6IGFzCj4+ IEFzc2VtYmxlciBmbGFncyAgIDogLS0zMgo+PiBMb2FkZXIgZmxhZ3MgICAgICA6IAo+PiBMb2Fk ZXIgbGlicmFyaWVzICA6IC1sbQo+PiBVc2UgbGluZSBlZGl0b3IgICA6IFllcwo+PiBVc2UgcGlw ZWQgY29uc3VsdCA6IFllcwo+PiBVc2Ugc29ja2V0cyAgICAgICA6IFllcwo+PiBVc2UgRkQgc29s dmVyICAgICA6IFllcwo+PiBVc2UgZmFzdCBjYWxsICAgICA6IFllcwo+PiBVc2UgbWFjaGluZSBy ZWdzLiA6IFllcwo+PiBVc2VkIHJlZ2lzdGVyKHMpICA6IGVieCAoVFIpICAKPj4KPj4gCS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pgo+PiAoY2QgLi4vVG9wQ29tcDsgbWFrZSBncGxj KQo+PiBtYWtlWzJdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09V UkNFUy9ncHJvbG9nLTEuNC40L3NyYy9Ub3BDb21wJwo+PiBnY2MgLW1hcmNoPXBlbnRpdW1wcm8g LW0zMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtdiAtc2F2ZS10ZW1wcyAtbyBncGxjIHRvcF9jb21w LmMgLWxtCj4+IFVzaW5nIGJ1aWx0LWluIHNwZWNzLgo+PiBDT0xMRUNUX0dDQz1nY2MKPj4gQ09M TEVDVF9MVE9fV1JBUFBFUj0vdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4x L2x0by13cmFwcGVyCj4+IFRhcmdldDogaTY4Ni1yZWRoYXQtbGludXgKPj4gQ29uZmlndXJlZCB3 aXRoOiAuLi9jb25maWd1cmUgLS1lbmFibGUtYm9vdHN0cmFwIC0tZW5hYmxlLWxhbmd1YWdlcz1j LGMrKyxvYmpjLG9iai1jKyssZm9ydHJhbixhZGEsZ28sbHRvIC0tcHJlZml4PS91c3IgLS1tYW5k aXI9L3Vzci9zaGFyZS9tYW4gLS1pbmZvZGlyPS91c3Ivc2hhcmUvaW5mbyAtLXdpdGgtYnVndXJs PWh0dHA6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhIC0tZW5hYmxlLXNoYXJlZCAtLWVu YWJsZS10aHJlYWRzPXBvc2l4IC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgLS1lbmFibGUtbXVs dGlsaWIgLS13aXRoLXN5c3RlbS16bGliIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCAtLWRpc2FibGUt bGlidW53aW5kLWV4Y2VwdGlvbnMgLS1lbmFibGUtZ251LXVuaXF1ZS1vYmplY3QgLS1lbmFibGUt bGlua2VyLWJ1aWxkLWlkIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT1nbnUgLS1lbmFibGUtcGx1 Z2luIC0tZW5hYmxlLWluaXRmaW5pLWFycmF5IC0tZGlzYWJsZS1saWJnY2ogLS13aXRoLWlzbCAt LWVuYWJsZS1saWJtcHggLS1lbmFibGUtZ251LWluZGlyZWN0LWZ1bmN0aW9uIC0td2l0aC10dW5l PWdlbmVyaWMgLS13aXRoLWFyY2g9aTY4NiAtLWJ1aWxkPWk2ODYtcmVkaGF0LWxpbnV4Cj4+IFRo cmVhZCBtb2RlbDogcG9zaXgKPj4gZ2NjIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQg Ni4xLjEtMykgKEdDQykgCj4+IENPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJv JyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAn Z3BsYycKPj4gIC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY2MxIC1F IC1xdWlldCAtdiB0b3BfY29tcC5jIC1tYXJjaD1wZW50aXVtcHJvIC1tMzIgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWZwY2gtcHJlcHJvY2VzcyAtbyB0b3BfY29tcC5pCj4+IGlnbm9yaW5nIG5vbmV4 aXN0ZW50IGRpcmVjdG9yeSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2lu Y2x1ZGUtZml4ZWQiCj4+IGlnbm9yaW5nIG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAiL3Vzci9saWIv Z2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uLy4uL2k2ODYtcmVkaGF0LWxpbnV4 L2luY2x1ZGUiCj4+ICNpbmNsdWRlICIuLi4iIHNlYXJjaCBzdGFydHMgaGVyZToKPj4gI2luY2x1 ZGUgPC4uLj4gc2VhcmNoIHN0YXJ0cyBoZXJlOgo+PiAgL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0 LWxpbnV4LzYuMS4xL2luY2x1ZGUKPj4gIC91c3IvbG9jYWwvaW5jbHVkZQo+PiAgL3Vzci9pbmNs dWRlCj4+IEVuZCBvZiBzZWFyY2ggbGlzdC4KPj4gQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNo PXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRl bXBzJyAnLW8nICdncGxjJwo+PiAgL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82 LjEuMS9jYzEgLWZwcmVwcm9jZXNzZWQgdG9wX2NvbXAuaSAtcXVpZXQgLWR1bXBiYXNlIHRvcF9j b21wLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtYXV4YmFzZSB0b3BfY29tcCAtdmVyc2lvbiAt Zm5vLXN0cmljdC1hbGlhc2luZyAtbyB0b3BfY29tcC5zCj4+IEdOVSBDMTEgKEdDQykgdmVyc2lv biA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRoYXQtbGludXgpCj4+ IAljb21waWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4x LTMpLCBHTVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2ZXJzaW9uIDMuMS40LCBNUEMgdmVyc2lvbiAx LjAuMiwgaXNsIHZlcnNpb24gMC4xNCBvciAwLjEzCj4+IHdhcm5pbmc6IEdNUCBoZWFkZXIgdmVy c2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4xLgo+PiBHR0MgaGV1 cmlzdGljczogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJhbSBnZ2MtbWluLWhlYXBz aXplPTEzMTA3Mgo+PiBHTlUgQzExIChHQ0MpIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBI YXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4KQo+PiAJY29tcGlsZWQgYnkgR05VIEMgdmVy c2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01QIHZlcnNpb24gNi4xLjAs IE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlzbCB2ZXJzaW9uIDAuMTQg b3IgMC4xMwo+PiB3YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24gNi4xLjAgZGlmZmVycyBmcm9t IGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KPj4gR0dDIGhldXJpc3RpY3M6IC0tcGFyYW0gZ2djLW1p bi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIKPj4gQ29tcGlsZXIg ZXhlY3V0YWJsZSBjaGVja3N1bTogYWJjZWIxMzhhZjQzYTc4YzM2YzFhYWEyMjhmNWY5MmEKPj4g Q09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJp Y3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdncGxjJwo+PiAgYXMgLXYgLS0z MiAtbyB0b3BfY29tcC5vIHRvcF9jb21wLnMKPj4gR05VIGFzc2VtYmxlciB2ZXJzaW9uIDIuMjYu MSAoaTY4Ni1yZWRoYXQtbGludXgpIHVzaW5nIEJGRCB2ZXJzaW9uIHZlcnNpb24gMi4yNi4xLTEu ZmMyNAo+PiBDT01QSUxFUl9QQVRIPS91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgv Ni4xLjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvOi91c3IvbGli ZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvOi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51 eC82LjEuMS86L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4Lwo+PiBMSUJSQVJZX1BBVEg9 L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLzovdXNyL2xpYi9nY2MvaTY4Ni1y ZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vOi9saWIvOi91c3IvbGliLwo+PiBDT0xMRUNUX0dD Q19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2lu ZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ2dwbGMnCj4+ICAvdXNyL2xpYmV4ZWMvZ2NjL2k2 ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NvbGxlY3QyIC1wbHVnaW4gL3Vzci9saWJleGVjL2djYy9p Njg2LXJlZGhhdC1saW51eC82LjEuMS9saWJsdG9fcGx1Z2luLnNvIC1wbHVnaW4tb3B0PS91c3Iv bGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvbHRvLXdyYXBwZXIgLXBsdWdpbi1v cHQ9LWZyZXNvbHV0aW9uPXRvcF9jb21wLnJlcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1s Z2NjIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2NfcyAtcGx1Z2luLW9wdD0tcGFzcy10 aHJvdWdoPS1sYyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1w YXNzLXRocm91Z2g9LWxnY2NfcyAtLWJ1aWxkLWlkIC0tbm8tYWRkLW5lZWRlZCAtLWVoLWZyYW1l LWhkciAtLWhhc2gtc3R5bGU9Z251IC1tIGVsZl9pMzg2IC1keW5hbWljLWxpbmtlciAvbGliL2xk LWxpbnV4LnNvLjIgLW8gZ3BsYyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEv Li4vLi4vLi4vY3J0MS5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8u Li8uLi9jcnRpLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NydGJlZ2lu Lm8gLUwvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEgLUwvdXNyL2xpYi9nY2Mv aTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4gdG9wX2NvbXAubyAtbG0gLWxnY2MgLS1h cy1uZWVkZWQgLWxnY2NfcyAtLW5vLWFzLW5lZWRlZCAtbGMgLWxnY2MgLS1hcy1uZWVkZWQgLWxn Y2NfcyAtLW5vLWFzLW5lZWRlZCAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEv Y3J0ZW5kLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uL2Ny dG4ubwo+PiBDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1tMzInICct Zm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ2dwbGMnCj4+IG1h a2VbMl06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3By b2xvZy0xLjQuNC9zcmMvVG9wQ29tcCcKPj4gbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy9o b21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9FbmdpbmVQbCcKPj4g LiAuL1NFVFZBUlM7Zm9yIGkgaW4gRW5naW5lUGwgVG9wQ29tcCBXYW0yTWEgTWEyQXNtIExpbmVk aXQgQmlwc1BsIFBsMldhbSBGZDJDIEVuZ2luZUZEIEJpcHNGRDtkbyAoY2QgJGk7IG1ha2UpIHx8 IGV4aXQgMTsgZG9uZTtcCj4+IChjZCBUb3BDb21wOyBtYWtlIHRvcC1sZXZlbCkgfHwgZXhpdCAx O1wKPj4gKGNkIFBsMldhbTsgbWFrZSBzdGFnZTIpCj4+IG1ha2VbMV06IEVudGVyaW5nIGRpcmVj dG9yeSAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2lu ZVBsJwo+PiBnY2MgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2luZyAt diAtc2F2ZS10ZW1wcyAgLW8gY3BwX2hlYWRlcnMgY3BwX2hlYWRlcnMuYwo+PiBVc2luZyBidWls dC1pbiBzcGVjcy4KPj4gQ09MTEVDVF9HQ0M9Z2NjCj4+IENPTExFQ1RfTFRPX1dSQVBQRVI9L3Vz ci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9sdG8td3JhcHBlcgo+PiBUYXJn ZXQ6IGk2ODYtcmVkaGF0LWxpbnV4Cj4+IENvbmZpZ3VyZWQgd2l0aDogLi4vY29uZmlndXJlIC0t ZW5hYmxlLWJvb3RzdHJhcCAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKyssb2JqYyxvYmotYysrLGZv cnRyYW4sYWRhLGdvLGx0byAtLXByZWZpeD0vdXNyIC0tbWFuZGlyPS91c3Ivc2hhcmUvbWFuIC0t aW5mb2Rpcj0vdXNyL3NoYXJlL2luZm8gLS13aXRoLWJ1Z3VybD1odHRwOi8vYnVnemlsbGEucmVk aGF0LmNvbS9idWd6aWxsYSAtLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtdGhyZWFkcz1wb3NpeCAt LWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIC0tZW5hYmxlLW11bHRpbGliIC0td2l0aC1zeXN0ZW0t emxpYiAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgLS1kaXNhYmxlLWxpYnVud2luZC1leGNlcHRpb25z IC0tZW5hYmxlLWdudS11bmlxdWUtb2JqZWN0IC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCAtLXdp dGgtbGlua2VyLWhhc2gtc3R5bGU9Z251IC0tZW5hYmxlLXBsdWdpbiAtLWVuYWJsZS1pbml0Zmlu aS1hcnJheSAtLWRpc2FibGUtbGliZ2NqIC0td2l0aC1pc2wgLS1lbmFibGUtbGlibXB4IC0tZW5h YmxlLWdudS1pbmRpcmVjdC1mdW5jdGlvbiAtLXdpdGgtdHVuZT1nZW5lcmljIC0td2l0aC1hcmNo PWk2ODYgLS1idWlsZD1pNjg2LXJlZGhhdC1saW51eAo+PiBUaHJlYWQgbW9kZWw6IHBvc2l4Cj4+ IGdjYyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChHQ0MpIAo+PiBD T0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1tMzInICctZm5vLXN0cmlj dC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ2NwcF9oZWFkZXJzJwo+PiAgL3Vz ci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jYzEgLUUgLXF1aWV0IC12IGNw cF9oZWFkZXJzLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2luZyAt ZnBjaC1wcmVwcm9jZXNzIC1vIGNwcF9oZWFkZXJzLmkKPj4gaWdub3Jpbmcgbm9uZXhpc3RlbnQg ZGlyZWN0b3J5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS1m aXhlZCIKPj4gaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9nY2MvaTY4 Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vLi4vaTY4Ni1yZWRoYXQtbGludXgvaW5jbHVk ZSIKPj4gI2luY2x1ZGUgIi4uLiIgc2VhcmNoIHN0YXJ0cyBoZXJlOgo+PiAjaW5jbHVkZSA8Li4u PiBzZWFyY2ggc3RhcnRzIGhlcmU6Cj4+ICAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgv Ni4xLjEvaW5jbHVkZQo+PiAgL3Vzci9sb2NhbC9pbmNsdWRlCj4+ICAvdXNyL2luY2x1ZGUKPj4g RW5kIG9mIHNlYXJjaCBsaXN0Lgo+PiBDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1 bXBybycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICct bycgJ2NwcF9oZWFkZXJzJwo+PiAgL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82 LjEuMS9jYzEgLWZwcmVwcm9jZXNzZWQgY3BwX2hlYWRlcnMuaSAtcXVpZXQgLWR1bXBiYXNlIGNw cF9oZWFkZXJzLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtYXV4YmFzZSBjcHBfaGVhZGVycyAt dmVyc2lvbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtbyBjcHBfaGVhZGVycy5zCj4+IEdOVSBDMTEg KEdDQykgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRo YXQtbGludXgpCj4+IAljb21waWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChS ZWQgSGF0IDYuMS4xLTMpLCBHTVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2ZXJzaW9uIDMuMS40LCBN UEMgdmVyc2lvbiAxLjAuMiwgaXNsIHZlcnNpb24gMC4xNCBvciAwLjEzCj4+IHdhcm5pbmc6IEdN UCBoZWFkZXIgdmVyc2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4x Lgo+PiBHR0MgaGV1cmlzdGljczogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJhbSBn Z2MtbWluLWhlYXBzaXplPTEzMTA3Mgo+PiBHTlUgQzExIChHQ0MpIHZlcnNpb24gNi4xLjEgMjAx NjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4KQo+PiAJY29tcGlsZWQg YnkgR05VIEMgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01QIHZl cnNpb24gNi4xLjAsIE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlzbCB2 ZXJzaW9uIDAuMTQgb3IgMC4xMwo+PiB3YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24gNi4xLjAg ZGlmZmVycyBmcm9tIGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KPj4gR0dDIGhldXJpc3RpY3M6IC0t cGFyYW0gZ2djLW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIK Pj4gQ29tcGlsZXIgZXhlY3V0YWJsZSBjaGVja3N1bTogYWJjZWIxMzhhZjQzYTc4YzM2YzFhYWEy MjhmNWY5MmEKPj4gQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMy JyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdjcHBfaGVh ZGVycycKPj4gIGFzIC12IC0tMzIgLW8gY3BwX2hlYWRlcnMubyBjcHBfaGVhZGVycy5zCj4+IEdO VSBhc3NlbWJsZXIgdmVyc2lvbiAyLjI2LjEgKGk2ODYtcmVkaGF0LWxpbnV4KSB1c2luZyBCRkQg dmVyc2lvbiB2ZXJzaW9uIDIuMjYuMS0xLmZjMjQKPj4gQ09NUElMRVJfUEFUSD0vdXNyL2xpYmV4 ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLzovdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVk aGF0LWxpbnV4LzYuMS4xLzovdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzovdXNy L2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvOi91c3IvbGliL2djYy9pNjg2LXJlZGhh dC1saW51eC8KPj4gTElCUkFSWV9QQVRIPS91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82 LjEuMS86L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uLzovbGli LzovdXNyL2xpYi8KPj4gQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICct bTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdjcHBf aGVhZGVycycKPj4gIC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY29s bGVjdDIgLXBsdWdpbiAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2xp Ymx0b19wbHVnaW4uc28gLXBsdWdpbi1vcHQ9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1s aW51eC82LjEuMS9sdG8td3JhcHBlciAtcGx1Z2luLW9wdD0tZnJlc29sdXRpb249Y3BwX2hlYWRl cnMucmVzIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBhc3Mt dGhyb3VnaD0tbGdjY19zIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxjIC1wbHVnaW4tb3B0 PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBhc3MtdGhyb3VnaD0tbGdjY19zIC0t YnVpbGQtaWQgLS1uby1hZGQtbmVlZGVkIC0tZWgtZnJhbWUtaGRyIC0taGFzaC1zdHlsZT1nbnUg LW0gZWxmX2kzODYgLWR5bmFtaWMtbGlua2VyIC9saWIvbGQtbGludXguc28uMiAtbyBjcHBfaGVh ZGVycyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vY3J0MS5v IC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8uLi9jcnRpLm8gL3Vz ci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NydGJlZ2luLm8gLUwvdXNyL2xpYi9n Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEgLUwvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGlu dXgvNi4xLjEvLi4vLi4vLi4gY3BwX2hlYWRlcnMubyAtbGdjYyAtLWFzLW5lZWRlZCAtbGdjY19z IC0tbm8tYXMtbmVlZGVkIC1sYyAtbGdjYyAtLWFzLW5lZWRlZCAtbGdjY19zIC0tbm8tYXMtbmVl ZGVkIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jcnRlbmQubyAvdXNyL2xp Yi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vY3J0bi5vCj4+IENPTExFQ1Rf R0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFz aW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAnY3BwX2hlYWRlcnMnCj4+IGdwbGMgLWMgLUMg Jy12IC1zYXZlLXRlbXBzJyBtYWNoaW5lLmMKPj4gVXNpbmcgYnVpbHQtaW4gc3BlY3MuCj4+IENP TExFQ1RfR0NDPWdjYwo+PiBUYXJnZXQ6IGk2ODYtcmVkaGF0LWxpbnV4Cj4+IENvbmZpZ3VyZWQg d2l0aDogLi4vY29uZmlndXJlIC0tZW5hYmxlLWJvb3RzdHJhcCAtLWVuYWJsZS1sYW5ndWFnZXM9 YyxjKyssb2JqYyxvYmotYysrLGZvcnRyYW4sYWRhLGdvLGx0byAtLXByZWZpeD0vdXNyIC0tbWFu ZGlyPS91c3Ivc2hhcmUvbWFuIC0taW5mb2Rpcj0vdXNyL3NoYXJlL2luZm8gLS13aXRoLWJ1Z3Vy bD1odHRwOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYSAtLWVuYWJsZS1zaGFyZWQgLS1l bmFibGUtdGhyZWFkcz1wb3NpeCAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIC0tZW5hYmxlLW11 bHRpbGliIC0td2l0aC1zeXN0ZW0temxpYiAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgLS1kaXNhYmxl LWxpYnVud2luZC1leGNlcHRpb25zIC0tZW5hYmxlLWdudS11bmlxdWUtb2JqZWN0IC0tZW5hYmxl LWxpbmtlci1idWlsZC1pZCAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9Z251IC0tZW5hYmxlLXBs dWdpbiAtLWVuYWJsZS1pbml0ZmluaS1hcnJheSAtLWRpc2FibGUtbGliZ2NqIC0td2l0aC1pc2wg LS1lbmFibGUtbGlibXB4IC0tZW5hYmxlLWdudS1pbmRpcmVjdC1mdW5jdGlvbiAtLXdpdGgtdHVu ZT1nZW5lcmljIC0td2l0aC1hcmNoPWk2ODYgLS1idWlsZD1pNjg2LXJlZGhhdC1saW51eAo+PiBU aHJlYWQgbW9kZWw6IHBvc2l4Cj4+IGdjYyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0 IDYuMS4xLTMpIChHQ0MpIAo+PiBDT0xMRUNUX0dDQ19PUFRJT05TPSctdicgJy1zYXZlLXRlbXBz JyAnLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctZmZp eGVkLWVieCcgJy1jJyAnLUknICcvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0x LjQuNC9zcmMvRW5naW5lUGwnICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJv bG9nLTEuNC40L3NyYy9CaXBzUGwnICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9n cHJvbG9nLTEuNC40L3NyYy9FbmdpbmVGRCcgJy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VS Q0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNGRCcgJy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9T T1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xpbmVkaXQnICctSScgJy9ob21lL3RpbGwvcnBtYnVp bGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9XMzJHVUlDb25zJyAnLW8nICdtYWNoaW5lLm8n Cj4+ICAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NjMSAtRSAtcXVp ZXQgLXYgLUkgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0Vu Z2luZVBsIC1JIC9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9C aXBzUGwgLUkgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0Vu Z2luZUZEIC1JIC9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9C aXBzRkQgLUkgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xp bmVkaXQgLUkgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL1cz MkdVSUNvbnMgbWFjaGluZS5jIC1tYXJjaD1wZW50aXVtcHJvIC1tMzIgLWZuby1zdHJpY3QtYWxp YXNpbmcgLWZmaXhlZC1lYnggLWZwY2gtcHJlcHJvY2VzcyAtbyBtYWNoaW5lLmkKPj4gaWdub3Jp bmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgv Ni4xLjEvaW5jbHVkZS1maXhlZCIKPj4gaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIv dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vLi4vaTY4Ni1yZWRo YXQtbGludXgvaW5jbHVkZSIKPj4gI2luY2x1ZGUgIi4uLiIgc2VhcmNoIHN0YXJ0cyBoZXJlOgo+ PiAjaW5jbHVkZSA8Li4uPiBzZWFyY2ggc3RhcnRzIGhlcmU6Cj4+ICAvaG9tZS90aWxsL3JwbWJ1 aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwKPj4gIC9ob21lL3RpbGwvcnBt YnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwKPj4gIC9ob21lL3RpbGwvcnBt YnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9FbmdpbmVGRAo+PiAgL2hvbWUvdGlsbC9y cG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNGRAo+PiAgL2hvbWUvdGlsbC9y cG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xpbmVkaXQKPj4gIC9ob21lL3RpbGwv cnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9XMzJHVUlDb25zCj4+ICAvdXNyL2xp Yi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZQo+PiAgL3Vzci9sb2NhbC9pbmNs dWRlCj4+ICAvdXNyL2luY2x1ZGUKPj4gRW5kIG9mIHNlYXJjaCBsaXN0Lgo+PiBDT0xMRUNUX0dD Q19PUFRJT05TPSctdicgJy1zYXZlLXRlbXBzJyAnLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAn LWZuby1zdHJpY3QtYWxpYXNpbmcnICctZmZpeGVkLWVieCcgJy1jJyAnLUknICcvaG9tZS90aWxs L3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwnICctSScgJy9ob21l L3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwnICctSScgJy9o b21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9FbmdpbmVGRCcgJy1J JyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNGRCcg Jy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xpbmVk aXQnICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9X MzJHVUlDb25zJyAnLW8nICdtYWNoaW5lLm8nCj4+ICAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVk aGF0LWxpbnV4LzYuMS4xL2NjMSAtZnByZXByb2Nlc3NlZCBtYWNoaW5lLmkgLXF1aWV0IC1kdW1w YmFzZSBtYWNoaW5lLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtYXV4YmFzZS1zdHJpcCBtYWNo aW5lLm8gLXZlcnNpb24gLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZmaXhlZC1lYnggLW8gbWFjaGlu ZS5zCj4+IEdOVSBDMTEgKEdDQykgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEu MS0zKSAoaTY4Ni1yZWRoYXQtbGludXgpCj4+IAljb21waWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYu MS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpLCBHTVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2 ZXJzaW9uIDMuMS40LCBNUEMgdmVyc2lvbiAxLjAuMiwgaXNsIHZlcnNpb24gMC4xNCBvciAwLjEz Cj4+IHdhcm5pbmc6IEdNUCBoZWFkZXIgdmVyc2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGlicmFy eSB2ZXJzaW9uIDYuMS4xLgo+PiBHR0MgaGV1cmlzdGljczogLS1wYXJhbSBnZ2MtbWluLWV4cGFu ZD0xMDAgLS1wYXJhbSBnZ2MtbWluLWhlYXBzaXplPTEzMTA3Mgo+PiBHTlUgQzExIChHQ0MpIHZl cnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4 KQo+PiAJY29tcGlsZWQgYnkgR05VIEMgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2 LjEuMS0zKSwgR01QIHZlcnNpb24gNi4xLjAsIE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNp b24gMS4wLjIsIGlzbCB2ZXJzaW9uIDAuMTQgb3IgMC4xMwo+PiB3YXJuaW5nOiBHTVAgaGVhZGVy IHZlcnNpb24gNi4xLjAgZGlmZmVycyBmcm9tIGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KPj4gR0dD IGhldXJpc3RpY3M6IC0tcGFyYW0gZ2djLW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1o ZWFwc2l6ZT0xMzEwNzIKPj4gQ29tcGlsZXIgZXhlY3V0YWJsZSBjaGVja3N1bTogYWJjZWIxMzhh ZjQzYTc4YzM2YzFhYWEyMjhmNWY5MmEKPj4gbWFjaGluZS5jOiBJbiBmdW5jdGlvbiDigJhQbF9N X1JhbmRvbWl6ZeKAmToKPj4gbWFjaGluZS5jOjM4NjoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJv cjogU2VnbWVudGF0aW9uIGZhdWx0Cj4+ICB9Cj4+ICBeCj4+IFBsZWFzZSBzdWJtaXQgYSBmdWxs IGJ1ZyByZXBvcnQsCj4+IHdpdGggcHJlcHJvY2Vzc2VkIHNvdXJjZSBpZiBhcHByb3ByaWF0ZS4K Pj4gU2VlIDxodHRwOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYT4gZm9yIGluc3RydWN0 aW9ucy4KPj4gUHJlcHJvY2Vzc2VkIHNvdXJjZSBzdG9yZWQgaW50byAvdG1wL2NjY1hDQVdNLm91 dCBmaWxlLCBwbGVhc2UgYXR0YWNoIHRoaXMgdG8geW91ciBidWdyZXBvcnQuCj4+IGNvbXBpbGF0 aW9uIGZhaWxlZAo+PiBNYWtlZmlsZTozMDogcmVjaXBlIGZvciB0YXJnZXQgJ21hY2hpbmUubycg ZmFpbGVkCj4+IG1ha2VbMV06ICoqKiBbbWFjaGluZS5vXSBFcnJvciAxCj4+IG1ha2VbMV06IExl YXZpbmcgZGlyZWN0b3J5ICcvaG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQu NC9zcmMvRW5naW5lUGwnCj4+IE1ha2VmaWxlOjQ1OiByZWNpcGUgZm9yIHRhcmdldCAnYWxsJyBm YWlsZWQKPj4gbWFrZTogKioqIFthbGxdIEVycm9yIDEKPiAKPj4gIyAxICJtYWNoaW5lLmMiCj4+ ICMgMSAiPGJ1aWx0LWluPiIKPj4gIyAxICI8Y29tbWFuZC1saW5lPiIKPj4gIyAzMSAiPGNvbW1h bmQtbGluZT4iCj4+ICMgMSAiL3Vzci9pbmNsdWRlL3N0ZGMtcHJlZGVmLmgiIDEgMyA0Cj4+ICMg MzIgIjxjb21tYW5kLWxpbmU+IiAyCj4+ICMgMSAibWFjaGluZS5jIgo+PiAjIDM5ICJtYWNoaW5l LmMiCj4+ICMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMyA0Cj4+ICMgMjcgIi91c3IvaW5j bHVkZS9zdGRpby5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzIDQK Pj4gIyAzNjggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1 ZGUvc3lzL2NkZWZzLmgiIDEgMyA0Cj4+ICMgNDEwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgi IDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0Cj4+ICMgNDEx ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIgMyA0Cj4+ICMgMzY5ICIvdXNyL2luY2x1ZGUv ZmVhdHVyZXMuaCIgMiAzIDQKPj4gIyAzOTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQK Pj4gIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy0zMi5oIiAxIDMgNAo+PiAjIDggIi91c3Iv aW5jbHVkZS9nbnUvc3R1YnMuaCIgMiAzIDQKPj4gIyAzOTMgIi91c3IvaW5jbHVkZS9mZWF0dXJl cy5oIiAyIDMgNAo+PiAjIDI4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKPj4KPj4KPj4K Pj4KPj4KPj4gIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVk ZS9zdGRkZWYuaCIgMSAzIDQKPj4gIyAyMTYgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51 eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKPj4KPj4gIyAyMTYgIi91c3IvbGliL2djYy9p Njg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKPj4gdHlwZWRlZiB1 bnNpZ25lZCBpbnQgc2l6ZV90Owo+PiAjIDM0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQK Pj4KPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMgNAo+PiAjIDI3ICIvdXNy L2luY2x1ZGUvYml0cy90eXBlcy5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jk c2l6ZS5oIiAxIDMgNAo+PiAjIDI4ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMgNAo+ Pgo+Pgo+PiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7Cj4+IHR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgaW50IF9fdV9zaG9ydDsKPj4gdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsK Pj4gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3VfbG9uZzsKPj4KPj4KPj4gdHlwZWRlZiBz aWduZWQgY2hhciBfX2ludDhfdDsKPj4gdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhfdDsK Pj4gdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKPj4gdHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCBpbnQgX191aW50MTZfdDsKPj4gdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJfdDsK Pj4gdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKPj4KPj4KPj4KPj4KPj4gX19leHRl bnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKPj4gX19leHRl bnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKPj4KPj4K Pj4KPj4KPj4KPj4KPj4KPj4gX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19x dWFkX3Q7Cj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9f dV9xdWFkX3Q7Cj4+ICMgMTIxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzIDQKPj4gIyAx ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlc2l6ZXMuaCIgMSAzIDQKPj4gIyAxMjIgIi91c3IvaW5j bHVkZS9iaXRzL3R5cGVzLmgiIDIgMyA0Cj4+Cj4+Cj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBf X3VfcXVhZF90IF9fZGV2X3Q7Cj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBpbnQg X191aWRfdDsKPj4gX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX2dpZF90Owo+ PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19pbm9fdDsKPj4gX19l eHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90Owo+PiBfX2V4dGVuc2lvbl9f IHR5cGVkZWYgdW5zaWduZWQgaW50IF9fbW9kZV90Owo+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYg dW5zaWduZWQgaW50IF9fbmxpbmtfdDsKPj4gX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50 IF9fb2ZmX3Q7Cj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3F1YWRfdCBfX29mZjY0X3Q7Cj4+ IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19waWRfdDsKPj4gX19leHRlbnNpb25fXyB0eXBl ZGVmIHN0cnVjdCB7IGludCBfX3ZhbFsyXTsgfSBfX2ZzaWRfdDsKPj4gX19leHRlbnNpb25fXyB0 eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKPj4gX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2ln bmVkIGxvbmcgaW50IF9fcmxpbV90Owo+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX191X3F1YWRf dCBfX3JsaW02NF90Owo+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9faWRf dDsKPj4gX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owo+PiBfX2V4dGVu c2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNfdDsKPj4gX19leHRlbnNpb25f XyB0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7Cj4+Cj4+IF9fZXh0ZW5zaW9uX18gdHlw ZWRlZiBpbnQgX19kYWRkcl90Owo+PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fa2V5X3Q7 Cj4+Cj4+Cj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7Cj4+Cj4+Cj4+ IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB2b2lkICogX190aW1lcl90Owo+Pgo+Pgo+PiBfX2V4dGVu c2lvbl9fIHR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7Cj4+Cj4+Cj4+Cj4+Cj4+IF9fZXh0 ZW5zaW9uX18gdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owo+PiBfX2V4dGVuc2lvbl9fIHR5 cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90Owo+Pgo+Pgo+PiBfX2V4dGVuc2lvbl9fIHR5cGVk ZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2Jsa2NudF90Owo+PiBfX2V4dGVuc2lvbl9fIHR5cGVk ZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKPj4KPj4KPj4gX19leHRlbnNpb25fXyB0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZnNmaWxjbnRfdDsKPj4gX19leHRlbnNpb25fXyB0eXBl ZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7Cj4+Cj4+Cj4+IF9fZXh0ZW5zaW9uX18gdHlw ZWRlZiBpbnQgX19mc3dvcmRfdDsKPj4KPj4gX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX3Nz aXplX3Q7Cj4+Cj4+Cj4+IF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGludCBfX3N5c2NhbGxf c2xvbmdfdDsKPj4KPj4gX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9f c3lzY2FsbF91bG9uZ190Owo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIF9fb2ZmNjRfdCBfX2xvZmZfdDsK Pj4gdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90Owo+PiB0eXBlZGVmIGNoYXIgKl9fY2FkZHJf dDsKPj4KPj4KPj4gX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX2ludHB0cl90Owo+Pgo+Pgo+ PiBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90Owo+PiAjIDM2 ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKPj4gIyA0NCAiL3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDMgNAo+PiBzdHJ1Y3QgX0lPX0ZJTEU7Cj4+Cj4+Cj4+Cj4+IHR5cGVkZWYgc3RydWN0IF9J T19GSUxFIEZJTEU7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ICMgNjQgIi91c3IvaW5jbHVkZS9zdGRpby5o IiAzIDQKPj4gdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOwo+PiAjIDc0ICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMyA0Cj4+ ICMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvX0df Y29uZmlnLmgiIDEgMyA0Cj4+ICMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMyA0Cj4+ ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVm LmgiIDEgMyA0Cj4+ICMgMTYgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzIDQKPj4KPj4K Pj4KPj4KPj4gIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzIDQKPj4gIyA4MiAiL3Vzci9p bmNsdWRlL3djaGFyLmgiIDMgNAo+PiB0eXBlZGVmIHN0cnVjdAo+PiB7Cj4+ICAgaW50IF9fY291 bnQ7Cj4+ICAgdW5pb24KPj4gICB7Cj4+Cj4+ICAgICB1bnNpZ25lZCBpbnQgX193Y2g7Cj4+Cj4+ Cj4+Cj4+ICAgICBjaGFyIF9fd2NoYls0XTsKPj4gICB9IF9fdmFsdWU7Cj4+IH0gX19tYnN0YXRl X3Q7Cj4+ICMgMjEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzIDQKPj4gdHlwZWRlZiBz dHJ1Y3QKPj4gewo+PiAgIF9fb2ZmX3QgX19wb3M7Cj4+ICAgX19tYnN0YXRlX3QgX19zdGF0ZTsK Pj4gfSBfR19mcG9zX3Q7Cj4+IHR5cGVkZWYgc3RydWN0Cj4+IHsKPj4gICBfX29mZjY0X3QgX19w b3M7Cj4+ICAgX19tYnN0YXRlX3QgX19zdGF0ZTsKPj4gfSBfR19mcG9zNjRfdDsKPj4gIyAzMiAi L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMyA0Cj4+ICMgNDkgIi91c3IvaW5jbHVkZS9saWJpby5o IiAzIDQKPj4gIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVk ZS9zdGRhcmcuaCIgMSAzIDQKPj4gIyA0MCAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4 LzYuMS4xL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAo+PiB0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0 IF9fZ251Y192YV9saXN0Owo+PiAjIDUwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzIDQKPj4g IyAxNDQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKPj4gc3RydWN0IF9JT19qdW1wX3Q7IHN0 cnVjdCBfSU9fRklMRTsKPj4KPj4KPj4KPj4KPj4KPj4gdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7 Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IHN0cnVjdCBfSU9fbWFya2VyIHsKPj4gICBzdHJ1Y3QgX0lPX21h cmtlciAqX25leHQ7Cj4+ICAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKPj4KPj4KPj4KPj4gICBp bnQgX3BvczsKPj4gIyAxNzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKPj4gfTsKPj4KPj4K Pj4gZW51bSBfX2NvZGVjdnRfcmVzdWx0Cj4+IHsKPj4gICBfX2NvZGVjdnRfb2ssCj4+ICAgX19j b2RlY3Z0X3BhcnRpYWwsCj4+ICAgX19jb2RlY3Z0X2Vycm9yLAo+PiAgIF9fY29kZWN2dF9ub2Nv bnYKPj4gfTsKPj4gIyAyNDEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKPj4gc3RydWN0IF9J T19GSUxFIHsKPj4gICBpbnQgX2ZsYWdzOwo+Pgo+Pgo+Pgo+Pgo+PiAgIGNoYXIqIF9JT19yZWFk X3B0cjsKPj4gICBjaGFyKiBfSU9fcmVhZF9lbmQ7Cj4+ICAgY2hhciogX0lPX3JlYWRfYmFzZTsK Pj4gICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKPj4gICBjaGFyKiBfSU9fd3JpdGVfcHRyOwo+PiAg IGNoYXIqIF9JT193cml0ZV9lbmQ7Cj4+ICAgY2hhciogX0lPX2J1Zl9iYXNlOwo+PiAgIGNoYXIq IF9JT19idWZfZW5kOwo+Pgo+PiAgIGNoYXIgKl9JT19zYXZlX2Jhc2U7Cj4+ICAgY2hhciAqX0lP X2JhY2t1cF9iYXNlOwo+PiAgIGNoYXIgKl9JT19zYXZlX2VuZDsKPj4KPj4gICBzdHJ1Y3QgX0lP X21hcmtlciAqX21hcmtlcnM7Cj4+Cj4+ICAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47Cj4+Cj4+ ICAgaW50IF9maWxlbm87Cj4+Cj4+Cj4+Cj4+ICAgaW50IF9mbGFnczI7Cj4+Cj4+ICAgX19vZmZf dCBfb2xkX29mZnNldDsKPj4KPj4KPj4KPj4gICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsK Pj4gICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKPj4gICBjaGFyIF9zaG9ydGJ1ZlsxXTsK Pj4KPj4KPj4KPj4gICBfSU9fbG9ja190ICpfbG9jazsKPj4gIyAyODkgIi91c3IvaW5jbHVkZS9s aWJpby5oIiAzIDQKPj4gICBfX29mZjY0X3QgX29mZnNldDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4K Pj4gICB2b2lkICpfX3BhZDE7Cj4+ICAgdm9pZCAqX19wYWQyOwo+PiAgIHZvaWQgKl9fcGFkMzsK Pj4gICB2b2lkICpfX3BhZDQ7Cj4+Cj4+ICAgc2l6ZV90IF9fcGFkNTsKPj4gICBpbnQgX21vZGU7 Cj4+Cj4+ICAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAoaW50KSAtIDQgKiBzaXplb2YgKHZv aWQgKikgLSBzaXplb2YgKHNpemVfdCldOwo+Pgo+PiB9Owo+Pgo+Pgo+PiB0eXBlZGVmIHN0cnVj dCBfSU9fRklMRSBfSU9fRklMRTsKPj4KPj4KPj4gc3RydWN0IF9JT19GSUxFX3BsdXM7Cj4+Cj4+ IGV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKPj4gZXh0ZXJuIHN0 cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKPj4gZXh0ZXJuIHN0cnVjdCBfSU9f RklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKPj4gIyAzMzMgIi91c3IvaW5jbHVkZS9saWJpby5o IiAzIDQKPj4gdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwg Y2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IHR5 cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBjb25zdCBjaGFy ICpfX2J1ZiwKPj4gICAgICBzaXplX3QgX19uKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4gdHlw ZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3Bvcywg aW50IF9fdyk7Cj4+Cj4+Cj4+IHR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29v a2llKTsKPj4gIyAzODUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKPj4gZXh0ZXJuIGludCBf X3VuZGVyZmxvdyAoX0lPX0ZJTEUgKik7Cj4+IGV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUg Kik7Cj4+IGV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KTsKPj4gIyA0Mjkg Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKPj4gZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJ TEUgKl9fZnApOwo+PiBleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19m cCk7Cj4+IGV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiBleHRlcm4gaW50IF9JT19mZXJyb3IgKF9J T19GSUxFICpfX2ZwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+ Pgo+PiBleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKTsKPj4KPj4K Pj4KPj4KPj4KPj4gZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gZXh0ZXJuIHZvaWQgX0lPX2Z1 bmxvY2tmaWxlIChfSU9fRklMRSAqKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+PiBleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgKF9JT19GSUxFICopIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ICMgNDU5ICIvdXNyL2luY2x1 ZGUvbGliaW8uaCIgMyA0Cj4+IGV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19y ZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCj4+ICAgIF9fZ251Y192YV9saXN0LCBp bnQgKl9fcmVzdHJpY3QpOwo+PiBleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9f cmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCj4+ICAgICBfX2dudWNfdmFfbGlzdCk7 Cj4+IGV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90 KTsKPj4gZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90 KTsKPj4KPj4gZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2 NF90LCBpbnQsIGludCk7Cj4+IGV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxF ICosIF9fb2ZmNjRfdCwgaW50KTsKPj4KPj4gZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2Fy ZWEgKF9JT19GSUxFICopIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 Cj4+ICMgNzUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAo+Pgo+Pgo+Pgo+Pgo+PiB0eXBl ZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7Cj4+ICMgOTAgIi91c3IvaW5jbHVkZS9zdGRpby5o IiAzIDQKPj4gdHlwZWRlZiBfX29mZl90IG9mZl90Owo+PiAjIDEwMiAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMgNAo+PiB0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90Owo+Pgo+Pgo+Pgo+Pgo+Pgo+ Pgo+Pgo+PiB0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7Cj4+Cj4+Cj4+Cj4+Cj4+ICMgMTY0ICIv dXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9f bGltLmgiIDEgMyA0Cj4+ICMgMTY1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKPj4KPj4K Pj4KPj4gZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3RkaW47Cj4+IGV4dGVybiBzdHJ1Y3QgX0lP X0ZJTEUgKnN0ZG91dDsKPj4gZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3RkZXJyOwo+Pgo+Pgo+ Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHJlbW92ZSAoY29uc3QgY2hhciAqX19maWxlbmFt ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4gZXh0ZXJu IGludCByZW5hbWUgKGNvbnN0IGNoYXIgKl9fb2xkLCBjb25zdCBjaGFyICpfX25ldykgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJu IGludCByZW5hbWVhdCAoaW50IF9fb2xkZmQsIGNvbnN0IGNoYXIgKl9fb2xkLCBpbnQgX19uZXdm ZCwKPj4gICAgICAgIGNvbnN0IGNoYXIgKl9fbmV3KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gRklMRSAq dG1wZmlsZSAodm9pZCkgOwo+PiAjIDIwOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAo+PiBl eHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gY2hhciAqdG1wbmFtX3Ig KGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+ ICMgMjI3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+IGV4dGVybiBjaGFyICp0ZW1wbmFt IChjb25zdCBjaGFyICpfX2RpciwgY29uc3QgY2hhciAqX19wZngpCj4+ICAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2Nf XykpIDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUg Kl9fc3RyZWFtKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3Ry ZWFtKTsKPj4KPj4gIyAyNTIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4gZXh0ZXJuIGlu dCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKPj4gIyAyNjYgIi91c3IvaW5jbHVk ZS9zdGRpby5oIiAzIDQKPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIEZJTEUgKmZvcGVuIChj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCj4+ICAgICAgIGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19tb2RlcykgOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gRklMRSAqZnJlb3BlbiAo Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAo+PiAgICAgICAgIGNvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19tb2RlcywKPj4gICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt KSA7Cj4+ICMgMjk1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+Cj4+ICMgMzA2ICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+IGV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBj b25zdCBjaGFyICpfX21vZGVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIDsKPj4gIyAzMTkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4gZXh0ZXJuIEZJTEUg KmZtZW1vcGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgY29uc3QgY2hhciAqX19tb2RlcykK Pj4gICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKPj4KPj4KPj4K Pj4KPj4gZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFyICoqX19idWZsb2MsIHNpemVf dCAqX19zaXplbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK Pj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0 IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHNldHZidWYgKEZJTEUg Kl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCj4+ICAgICAgIGlu dCBfX21vZGVzLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCj4+ICAgICAgICAgIHNp emVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ Cj4+Cj4+IGV4dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+ PiBleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCj4+ICAgICAg IGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLik7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4 dGVybiBpbnQgcHJpbnRmIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwo+ Pgo+PiBleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAo+PiAgICAgICBj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpf X3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKPj4gICAgICAg IF9fZ251Y192YV9saXN0IF9fYXJnKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCB2cHJpbnRm IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZyk7 Cj4+Cj4+IGV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAo+PiAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4g aW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAo+PiAg ICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQo+PiAgICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By aW50Zl9fLCAzLCA0KSkpOwo+Pgo+PiBleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0 cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKPj4gICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKPj4gICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywg MywgMCkpKTsKPj4KPj4gIyA0MTIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4gZXh0ZXJu IGludCB2ZHByaW50ZiAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsCj4+ ICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19m b3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKPj4gZXh0ZXJuIGludCBkcHJpbnRmIChpbnQg X19mZCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQo+PiAgICAgIF9fYXR0cmli dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+ Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwK Pj4gICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKPj4KPj4KPj4K Pj4KPj4gZXh0ZXJuIGludCBzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg Li4uKSA7Cj4+Cj4+IGV4dGVybiBpbnQgc3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f cywKPj4gICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ICMgNDQzICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMyA0Cj4+IGV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry ZWFtLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXNtX18gKCIiICJf X2lzb2M5OV9mc2NhbmYiKQo+Pgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwo+ PiBleHRlcm4gaW50IHNjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p IF9fYXNtX18gKCIiICJfX2lzb2M5OV9zY2FuZiIpCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKPj4gZXh0ZXJuIGludCBzc2NhbmYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXNtX18gKCIiICJfX2lz b2M5OV9zc2NhbmYiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCj4+ Cj4+ICAgICAgICAgICAgICAgICAgICAgICA7Cj4+ICMgNDYzICIvdXNyL2luY2x1ZGUvc3RkaW8u aCIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdmZzY2FuZiAoRklM RSAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCj4+ICAg ICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1h dF9fIChfX3NjYW5mX18sIDIsIDApKSkgOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHZz Y2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19h cmcpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkp KSA7Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdnNzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBf X3MsCj4+ICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9s aXN0IF9fYXJnKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKPj4gIyA0 OTQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4gZXh0ZXJuIGludCB2ZnNjYW5mIChGSUxF ICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVj X3ZhX2xpc3QgX19hcmcpIF9fYXNtX18gKCIiICJfX2lzb2M5OV92ZnNjYW5mIikKPj4KPj4KPj4K Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpIDsK Pj4gZXh0ZXJuIGludCB2c2NhbmYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9f Z251Y192YV9saXN0IF9fYXJnKSBfX2FzbV9fICgiIiAiX19pc29jOTlfdnNjYW5mIikKPj4KPj4g ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpIDsKPj4g ZXh0ZXJuIGludCB2c3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fYXNtX18gKCIi ICJfX2lzb2M5OV92c3NjYW5mIikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKQo+Pgo+Pgo+Pgo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5m X18sIDIsIDApKSk7Cj4+ICMgNTIyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3RyZWFtKTsK Pj4gZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4 dGVybiBpbnQgZ2V0Y2hhciAodm9pZCk7Cj4+Cj4+ICMgNTUwICIvdXNyL2luY2x1ZGUvc3RkaW8u aCIgMyA0Cj4+IGV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwo+PiBl eHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpOwo+PiAjIDU2MSAiL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDMgNAo+PiBleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVh bSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZnB1dGMg KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKPj4gZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBG SUxFICpfX3N0cmVhbSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgcHV0Y2hhciAoaW50 IF9fYyk7Cj4+Cj4+ICMgNTk0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+IGV4dGVybiBp bnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKPj4KPj4KPj4KPj4K Pj4KPj4KPj4KPj4gZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0 cmVhbSk7Cj4+IGV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYyk7Cj4+Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pOwo+Pgo+Pgo+PiBl eHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKTsKPj4KPj4KPj4KPj4KPj4K Pj4KPj4KPj4KPj4gZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50 IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKPj4gICAgICA7Cj4+ICMgNjQwICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+Cj4+ICMgNjY1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MyA0Cj4+IGV4dGVybiBfX3NzaXplX3QgX19nZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19s aW5lcHRyLAo+PiAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1p dGVyLAo+PiAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwo+PiBleHRlcm4g X19zc2l6ZV90IGdldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCj4+ICAgICAg ICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAo+PiAgICAgICAgIEZJ TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJu IF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCj4+ICAgICAg ICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLAo+PiAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0 cmVhbSkgOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGZwdXRzIChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgcHV0cyAoY29uc3QgY2hhciAqX19zKTsKPj4KPj4KPj4K Pj4KPj4KPj4KPj4gZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsK Pj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmlj dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKPj4gICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVz dHJpY3QgX19zdHJlYW0pIDsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHNpemVfdCBmd3JpdGUgKGNv bnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCj4+ICAgICAgICAgc2l6 ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpOwo+Pgo+PiAjIDczNyAiL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDMgNAo+PiBleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jl c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAo+PiAgICAgICAgICBzaXplX3QgX19uLCBGSUxF ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7Cj4+IGV4dGVybiBzaXplX3QgZndyaXRlX3VubG9ja2Vk IChjb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAo+PiAgICAgICAg ICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7Cj4+Cj4+Cj4+Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBf X29mZiwgaW50IF9fd2hlbmNlKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGxvbmcgaW50IGZ0ZWxs IChGSUxFICpfX3N0cmVhbSkgOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gdm9pZCByZXdpbmQgKEZJ TEUgKl9fc3RyZWFtKTsKPj4KPj4gIyA3NzMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4g ZXh0ZXJuIGludCBmc2Vla28gKEZJTEUgKl9fc3RyZWFtLCBfX29mZl90IF9fb2ZmLCBpbnQgX193 aGVuY2UpOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3Ry ZWFtKSA7Cj4+ICMgNzkyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+ Cj4+Cj4+IGV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBv c190ICpfX3Jlc3RyaWN0IF9fcG9zKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBmc2V0cG9z IChGSUxFICpfX3N0cmVhbSwgY29uc3QgZnBvc190ICpfX3Bvcyk7Cj4+ICMgODE1ICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMyA0Cj4+Cj4+ICMgODI0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0 Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4gZXh0ZXJuIGludCBmZW9mIChG SUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7 Cj4+Cj4+IGV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIGNs ZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4gZXh0ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0 cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+IGV4dGVy biBpbnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVy biB2b2lkIHBlcnJvciAoY29uc3QgY2hhciAqX19zKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gIyAx ICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAxIDMgNAo+PiAjIDI2ICIvdXNyL2lu Y2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAzIDQKPj4gZXh0ZXJuIGludCBzeXNfbmVycjsKPj4g ZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19lcnJsaXN0W107Cj4+ICMgODU0ICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMiAzIDQKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBmaWxlbm8gKEZJ TEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK Pj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKPj4gIyA4NzIgIi91 c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4gZXh0ZXJuIEZJTEUgKnBvcGVuIChjb25zdCBjaGFy ICpfX2NvbW1hbmQsIGNvbnN0IGNoYXIgKl9fbW9kZXMpIDsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0 ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJu IGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKPj4gIyA5MTIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKPj4gZXh0ZXJu IHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJ TEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK Pj4KPj4KPj4gZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiAjIDk0MiAiL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDMgNAo+Pgo+PiAjIDQwICJtYWNoaW5lLmMiIDIKPj4gIyAxICIvdXNyL2luY2x1 ZGUvc3RkbGliLmgiIDEgMyA0Cj4+ICMgMzIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0Cj4+ ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVm LmgiIDEgMyA0Cj4+ICMgMzI4ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEv aW5jbHVkZS9zdGRkZWYuaCIgMyA0Cj4+IHR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKPj4gIyAz MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+ PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFncy5oIiAxIDMgNAo+PiAjIDQyICIvdXNy L2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2FpdHN0 YXR1cy5oIiAxIDMgNAo+PiAjIDY0ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMg NAo+PiAjIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzIDQKPj4gIyAzNiAiL3Vzci9pbmNs dWRlL2VuZGlhbi5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAz IDQKPj4gIyAzNyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMgNAo+PiAjIDYwICIvdXNyL2lu Y2x1ZGUvZW5kaWFuLmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgi IDEgMyA0Cj4+ICMgMjggIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgiIDMgNAo+PiAjIDEg Ii91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0Cj4+ICMgMjkgIi91c3IvaW5jbHVk ZS9iaXRzL2J5dGVzd2FwLmgiIDIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ICMgMSAiL3Vzci9p bmNsdWRlL2JpdHMvYnl0ZXN3YXAtMTYuaCIgMSAzIDQKPj4gIyAzNiAiL3Vzci9pbmNsdWRlL2Jp dHMvYnl0ZXN3YXAuaCIgMiAzIDQKPj4gIyA0NCAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAu aCIgMyA0Cj4+IHN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBpbnQKPj4gX19ic3dhcF8zMiAodW5z aWduZWQgaW50IF9fYnN4KQo+PiB7Cj4+ICAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDMyIChfX2Jz eCk7Cj4+IH0KPj4gIyAxMDggIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgiIDMgNAo+PiBz dGF0aWMgX19pbmxpbmUgX191aW50NjRfdAo+PiBfX2Jzd2FwXzY0IChfX3VpbnQ2NF90IF9fYnN4 KQo+PiB7Cj4+ICAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDY0IChfX2JzeCk7Cj4+IH0KPj4gIyA2 MSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMgNAo+PiAjIDY1ICIvdXNyL2luY2x1ZGUvYml0 cy93YWl0c3RhdHVzLmgiIDIgMyA0Cj4+Cj4+IHVuaW9uIHdhaXQKPj4gICB7Cj4+ICAgICBpbnQg d19zdGF0dXM7Cj4+ICAgICBzdHJ1Y3QKPj4gICAgICAgewo+Pgo+PiAgdW5zaWduZWQgaW50IF9f d190ZXJtc2lnOjc7Cj4+ICB1bnNpZ25lZCBpbnQgX193X2NvcmVkdW1wOjE7Cj4+ICB1bnNpZ25l ZCBpbnQgX193X3JldGNvZGU6ODsKPj4gIHVuc2lnbmVkIGludDoxNjsKPj4KPj4KPj4KPj4KPj4K Pj4KPj4KPj4gICAgICAgfSBfX3dhaXRfdGVybWluYXRlZDsKPj4gICAgIHN0cnVjdAo+PiAgICAg ICB7Cj4+Cj4+ICB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6ODsKPj4gIHVuc2lnbmVkIGludCBf X3dfc3RvcHNpZzo4Owo+PiAgdW5zaWduZWQgaW50OjE2Owo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiAg ICAgICB9IF9fd2FpdF9zdG9wcGVkOwo+PiAgIH07Cj4+ICMgNDMgIi91c3IvaW5jbHVkZS9zdGRs aWIuaCIgMiAzIDQKPj4gIyA2NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKPj4gdHlwZWRl ZiB1bmlvbgo+PiAgIHsKPj4gICAgIHVuaW9uIHdhaXQgKl9fdXB0cjsKPj4gICAgIGludCAqX19p cHRyOwo+PiAgIH0gX19XQUlUX1NUQVRVUyBfX2F0dHJpYnV0ZV9fICgoX190cmFuc3BhcmVudF91 bmlvbl9fKSk7Cj4+ICMgOTUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0Cj4+Cj4+Cj4+IHR5 cGVkZWYgc3RydWN0Cj4+ICAgewo+PiAgICAgaW50IHF1b3Q7Cj4+ICAgICBpbnQgcmVtOwo+PiAg IH0gZGl2X3Q7Cj4+Cj4+Cj4+Cj4+IHR5cGVkZWYgc3RydWN0Cj4+ICAgewo+PiAgICAgbG9uZyBp bnQgcXVvdDsKPj4gICAgIGxvbmcgaW50IHJlbTsKPj4gICB9IGxkaXZfdDsKPj4KPj4KPj4KPj4K Pj4KPj4KPj4KPj4gX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAo+PiAgIHsKPj4gICAgIGxv bmcgbG9uZyBpbnQgcXVvdDsKPj4gICAgIGxvbmcgbG9uZyBpbnQgcmVtOwo+PiAgIH0gbGxkaXZf dDsKPj4KPj4KPj4gIyAxMzkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0Cj4+IGV4dGVybiBz aXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSA7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBkb3VibGUgYXRvZiAo Y29uc3QgY2hhciAqX19ucHRyKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpIDsKPj4KPj4gZXh0ZXJuIGludCBhdG9pIChjb25zdCBjaGFyICpfX25w dHIpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkg Owo+Pgo+PiBleHRlcm4gbG9uZyBpbnQgYXRvbCAoY29uc3QgY2hhciAqX19ucHRyKQo+PiAgICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4KPj4KPj4K Pj4KPj4KPj4gX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoY29uc3Qg Y2hhciAqX19ucHRyKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpIDsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+PiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRl cm4gZmxvYXQgc3RydG9mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKPj4gICAgICAg IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4gZXh0 ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGQgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+ PiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCj4+ICAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBsb25nIGludCBzdHJ0b2wgKGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+PiAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg aW50IF9fYmFzZSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4gZXh0ZXJuIHVuc2ln bmVkIGxvbmcgaW50IHN0cnRvdWwgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+PiAg ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKPj4gICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKTsKPj4KPj4KPj4KPj4KPj4gX19leHRlbnNpb25fXwo+PiBleHRlcm4gbG9u ZyBsb25nIGludCBzdHJ0b3EgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+PiAgICAg ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQo+PiAgICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpOwo+Pgo+PiBfX2V4dGVuc2lvbl9fCj4+IGV4dGVybiB1bnNpZ25lZCBsb25n IGxvbmcgaW50IHN0cnRvdXEgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+PiAgICAg ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQo+PiAgICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBfX2V4dGVuc2lvbl9fCj4+IGV4dGVy biBsb25nIGxvbmcgaW50IHN0cnRvbGwgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAo+ PiAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKPj4gICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4gX19leHRlbnNpb25fXwo+PiBleHRlcm4gdW5zaWdu ZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs Cj4+ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7Cj4+Cj4+ICMgMzA1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMg NAo+PiBleHRlcm4gY2hhciAqbDY0YSAobG9uZyBpbnQgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIDsKPj4KPj4KPj4gZXh0ZXJuIGxvbmcgaW50IGE2NGwgKGNv bnN0IGNoYXIgKl9fcykKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKSA7Cj4+Cj4+Cj4+Cj4+Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o IiAxIDMgNAo+PiAjIDI3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAo+Pgo+Pgo+Pgo+ Pgo+Pgo+Pgo+PiB0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKPj4gdHlwZWRlZiBfX3Vfc2hvcnQg dV9zaG9ydDsKPj4gdHlwZWRlZiBfX3VfaW50IHVfaW50Owo+PiB0eXBlZGVmIF9fdV9sb25nIHVf bG9uZzsKPj4gdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7Cj4+IHR5cGVkZWYgX191X3F1YWRfdCB1 X3F1YWRfdDsKPj4gdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7Cj4+Cj4+Cj4+Cj4+Cj4+IHR5cGVk ZWYgX19sb2ZmX3QgbG9mZl90Owo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIF9faW5vX3QgaW5vX3Q7Cj4+ ICMgNjAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0Cj4+IHR5cGVkZWYgX19kZXZfdCBk ZXZfdDsKPj4KPj4KPj4KPj4KPj4gdHlwZWRlZiBfX2dpZF90IGdpZF90Owo+Pgo+Pgo+Pgo+Pgo+ PiB0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKPj4KPj4KPj4KPj4KPj4gdHlwZWRlZiBfX25saW5r X3QgbmxpbmtfdDsKPj4KPj4KPj4KPj4KPj4gdHlwZWRlZiBfX3VpZF90IHVpZF90Owo+PiAjIDk4 ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAo+PiB0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7 Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IHR5cGVkZWYgX19pZF90IGlkX3Q7Cj4+ICMgMTE1ICIvdXNyL2lu Y2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAo+PiB0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owo+PiB0 eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90Owo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIF9fa2V5 X3Qga2V5X3Q7Cj4+ICMgMTMyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAo+PiAjIDEg Ii91c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0Cj4+ICMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgi IDMgNAo+Pgo+Pgo+PiB0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190Owo+Pgo+Pgo+Pgo+PiAjIDcz ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKPj4KPj4KPj4gdHlwZWRlZiBfX3RpbWVfdCB0aW1l X3Q7Cj4+Cj4+Cj4+Cj4+ICMgOTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAo+PiB0eXBlZGVm IF9fY2xvY2tpZF90IGNsb2NraWRfdDsKPj4gIyAxMDMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMg NAo+PiB0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90Owo+PiAjIDEzMyAiL3Vzci9pbmNsdWRlL3N5 cy90eXBlcy5oIiAyIDMgNAo+PiAjIDE0NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQK Pj4gIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRk ZWYuaCIgMSAzIDQKPj4gIyAxNDcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKPj4K Pj4KPj4KPj4gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKPj4gdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCBpbnQgdXNob3J0Owo+PiB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owo+PiAj IDE5NCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKPj4gdHlwZWRlZiBpbnQgaW50OF90 IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwo+PiB0eXBlZGVmIGludCBpbnQx Nl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwo+PiB0eXBlZGVmIGludCBp bnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwo+PiB0eXBlZGVmIGlu dCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwo+Pgo+Pgo+PiB0 eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f UUlfXykpKTsKPj4gdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18g KChfX21vZGVfXyAoX19ISV9fKSkpOwo+PiB0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3Qg X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7Cj4+IHR5cGVkZWYgdW5zaWduZWQg aW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKPj4KPj4g dHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9f KSkpOwo+PiAjIDIxOSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKPj4gIyAxICIvdXNy L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMgNAo+PiAjIDMwICIvdXNyL2luY2x1ZGUvc3lzL3Nl bGVjdC5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzIDQKPj4g IyAyMiAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVk ZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0Cj4+ICMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVj dC5oIiAyIDMgNAo+PiAjIDMxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAo+Pgo+ Pgo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMgNAo+PiAjIDIyICIvdXNy L2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMyA0Cj4+IHR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190 Owo+Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIHN0cnVjdAo+PiAgIHsKPj4gICAgIHVuc2lnbmVkIGxv bmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsK Pj4gICB9IF9fc2lnc2V0X3Q7Cj4+ICMgMzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIg MyA0Cj4+Cj4+Cj4+Cj4+IHR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKPj4KPj4KPj4KPj4K Pj4KPj4gIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAo+PiAjIDEyMCAiL3Vzci9pbmNs dWRlL3RpbWUuaCIgMyA0Cj4+IHN0cnVjdCB0aW1lc3BlYwo+PiAgIHsKPj4gICAgIF9fdGltZV90 IHR2X3NlYzsKPj4gICAgIF9fc3lzY2FsbF9zbG9uZ190IHR2X25zZWM7Cj4+ICAgfTsKPj4gIyA0 NCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKPj4KPj4gIyAxICIvdXNyL2luY2x1 ZGUvYml0cy90aW1lLmgiIDEgMyA0Cj4+ICMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIg MyA0Cj4+IHN0cnVjdCB0aW1ldmFsCj4+ICAgewo+PiAgICAgX190aW1lX3QgdHZfc2VjOwo+PiAg ICAgX19zdXNlY29uZHNfdCB0dl91c2VjOwo+PiAgIH07Cj4+ICMgNDYgIi91c3IvaW5jbHVkZS9z eXMvc2VsZWN0LmgiIDIgMyA0Cj4+Cj4+Cj4+IHR5cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29u ZHNfdDsKPj4KPj4KPj4KPj4KPj4KPj4gdHlwZWRlZiBsb25nIGludCBfX2ZkX21hc2s7Cj4+ICMg NjQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAo+PiB0eXBlZGVmIHN0cnVjdAo+PiAg IHsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gICAgIF9fZmRfbWFzayBfX2Zkc19iaXRzWzEwMjQgLyAo OCAqIChpbnQpIHNpemVvZiAoX19mZF9tYXNrKSldOwo+Pgo+Pgo+PiAgIH0gZmRfc2V0Owo+Pgo+ Pgo+Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwo+PiAjIDk2ICIvdXNy L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKPj4KPj4gIyAxMDYgIi91c3IvaW5jbHVkZS9zeXMv c2VsZWN0LmgiIDMgNAo+PiBleHRlcm4gaW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpf X3Jlc3RyaWN0IF9fcmVhZGZkcywKPj4gICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZk cywKPj4gICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCj4+ICAgICAgc3RydWN0 IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KTsKPj4gIyAxMTggIi91c3IvaW5jbHVkZS9z eXMvc2VsZWN0LmgiIDMgNAo+PiBleHRlcm4gaW50IHBzZWxlY3QgKGludCBfX25mZHMsIGZkX3Nl dCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCj4+ICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dy aXRlZmRzLAo+PiAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCj4+ICAgICAg IGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBfX3RpbWVvdXQsCj4+ICAgICAgIGNv bnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKTsKPj4gIyAxMzEgIi91c3IvaW5j bHVkZS9zeXMvc2VsZWN0LmgiIDMgNAo+Pgo+PiAjIDIyMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBl cy5oIiAyIDMgNAo+Pgo+Pgo+PiAjIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEg MyA0Cj4+ICMgMjQgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMgNAo+Pgo+Pgo+PiBf X2V4dGVuc2lvbl9fCj4+IGV4dGVybiB1bnNpZ25lZCBpbnQgZ251X2Rldl9tYWpvciAodW5zaWdu ZWQgbG9uZyBsb25nIGludCBfX2RldikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4gX19leHRlbnNp b25fXwo+PiBleHRlcm4gdW5zaWduZWQgaW50IGdudV9kZXZfbWlub3IgKHVuc2lnbmVkIGxvbmcg bG9uZyBpbnQgX19kZXYpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cj4+IF9fZXh0ZW5zaW9uX18KPj4g ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgZ251X2Rldl9tYWtlZGV2ICh1bnNpZ25lZCBp bnQgX19tYWpvciwKPj4gICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fbWlub3IpCj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7Cj4+ICMgNTggIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMgNAo+ Pgo+PiAjIDIyMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAo+Pgo+Pgo+Pgo+Pgo+ Pgo+PiB0eXBlZGVmIF9fYmxrc2l6ZV90IGJsa3NpemVfdDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4g dHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90Owo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIF9fZnNibGtj bnRfdCBmc2Jsa2NudF90Owo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNu dF90Owo+PiAjIDI3MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKPj4gIyAxICIvdXNy L2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzIDQKPj4gIyAyMSAiL3Vzci9pbmNsdWRl L2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRz aXplLmgiIDEgMyA0Cj4+ICMgMjIgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAy IDMgNAo+PiAjIDYwICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMyA0Cj4+IHR5 cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90Owo+Pgo+Pgo+PiB1bmlvbiBwdGhyZWFk X2F0dHJfdAo+PiB7Cj4+ICAgY2hhciBfX3NpemVbMzZdOwo+PiAgIGxvbmcgaW50IF9fYWxpZ247 Cj4+IH07Cj4+Cj4+IHR5cGVkZWYgdW5pb24gcHRocmVhZF9hdHRyX3QgcHRocmVhZF9hdHRyX3Q7 Cj4+ICMgODEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzIDQKPj4gdHlwZWRl ZiBzdHJ1Y3QgX19wdGhyZWFkX2ludGVybmFsX3NsaXN0Cj4+IHsKPj4gICBzdHJ1Y3QgX19wdGhy ZWFkX2ludGVybmFsX3NsaXN0ICpfX25leHQ7Cj4+IH0gX19wdGhyZWFkX3NsaXN0X3Q7Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+IHR5cGVkZWYgdW5pb24KPj4gewo+PiAgIHN0cnVjdCBfX3B0aHJlYWRfbXV0 ZXhfcwo+PiAgIHsKPj4gICAgIGludCBfX2xvY2s7Cj4+ICAgICB1bnNpZ25lZCBpbnQgX19jb3Vu dDsKPj4gICAgIGludCBfX293bmVyOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiAgICAgaW50IF9fa2luZDsK Pj4gIyAxMTEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzIDQKPj4gICAgIHVu c2lnbmVkIGludCBfX251c2VyczsKPj4gICAgIF9fZXh0ZW5zaW9uX18gdW5pb24KPj4gICAgIHsK Pj4gICAgICAgc3RydWN0Cj4+ICAgICAgIHsKPj4gIHNob3J0IF9fZXNwaW5zOwo+PiAgc2hvcnQg X19lbGlzaW9uOwo+Pgo+Pgo+Pgo+PiAgICAgICB9IF9fZWxpc2lvbl9kYXRhOwo+PiAgICAgICBf X3B0aHJlYWRfc2xpc3RfdCBfX2xpc3Q7Cj4+ICAgICB9Owo+Pgo+PiAgIH0gX19kYXRhOwo+PiAg IGNoYXIgX19zaXplWzI0XTsKPj4gICBsb25nIGludCBfX2FsaWduOwo+PiB9IHB0aHJlYWRfbXV0 ZXhfdDsKPj4KPj4gdHlwZWRlZiB1bmlvbgo+PiB7Cj4+ICAgY2hhciBfX3NpemVbNF07Cj4+ICAg aW50IF9fYWxpZ247Cj4+IH0gcHRocmVhZF9tdXRleGF0dHJfdDsKPj4KPj4KPj4KPj4KPj4gdHlw ZWRlZiB1bmlvbgo+PiB7Cj4+ICAgc3RydWN0Cj4+ICAgewo+PiAgICAgaW50IF9fbG9jazsKPj4g ICAgIHVuc2lnbmVkIGludCBfX2Z1dGV4Owo+PiAgICAgX19leHRlbnNpb25fXyB1bnNpZ25lZCBs b25nIGxvbmcgaW50IF9fdG90YWxfc2VxOwo+PiAgICAgX19leHRlbnNpb25fXyB1bnNpZ25lZCBs b25nIGxvbmcgaW50IF9fd2FrZXVwX3NlcTsKPj4gICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQg bG9uZyBsb25nIGludCBfX3dva2VuX3NlcTsKPj4gICAgIHZvaWQgKl9fbXV0ZXg7Cj4+ICAgICB1 bnNpZ25lZCBpbnQgX19ud2FpdGVyczsKPj4gICAgIHVuc2lnbmVkIGludCBfX2Jyb2FkY2FzdF9z ZXE7Cj4+ICAgfSBfX2RhdGE7Cj4+ICAgY2hhciBfX3NpemVbNDhdOwo+PiAgIF9fZXh0ZW5zaW9u X18gbG9uZyBsb25nIGludCBfX2FsaWduOwo+PiB9IHB0aHJlYWRfY29uZF90Owo+Pgo+PiB0eXBl ZGVmIHVuaW9uCj4+IHsKPj4gICBjaGFyIF9fc2l6ZVs0XTsKPj4gICBpbnQgX19hbGlnbjsKPj4g fSBwdGhyZWFkX2NvbmRhdHRyX3Q7Cj4+Cj4+Cj4+Cj4+IHR5cGVkZWYgdW5zaWduZWQgaW50IHB0 aHJlYWRfa2V5X3Q7Cj4+Cj4+Cj4+Cj4+IHR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90Owo+Pgo+ Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIHVuaW9uCj4+IHsKPj4gIyAyMDIgIi91c3IvaW5jbHVkZS9i aXRzL3B0aHJlYWR0eXBlcy5oIiAzIDQKPj4gICBzdHJ1Y3QKPj4gICB7Cj4+ICAgICBpbnQgX19s b2NrOwo+PiAgICAgdW5zaWduZWQgaW50IF9fbnJfcmVhZGVyczsKPj4gICAgIHVuc2lnbmVkIGlu dCBfX3JlYWRlcnNfd2FrZXVwOwo+PiAgICAgdW5zaWduZWQgaW50IF9fd3JpdGVyX3dha2V1cDsK Pj4gICAgIHVuc2lnbmVkIGludCBfX25yX3JlYWRlcnNfcXVldWVkOwo+PiAgICAgdW5zaWduZWQg aW50IF9fbnJfd3JpdGVyc19xdWV1ZWQ7Cj4+Cj4+Cj4+ICAgICB1bnNpZ25lZCBjaGFyIF9fZmxh Z3M7Cj4+ICAgICB1bnNpZ25lZCBjaGFyIF9fc2hhcmVkOwo+PiAgICAgc2lnbmVkIGNoYXIgX19y d2VsaXNpb247Cj4+Cj4+ICAgICB1bnNpZ25lZCBjaGFyIF9fcGFkMjsKPj4gICAgIGludCBfX3dy aXRlcjsKPj4gICB9IF9fZGF0YTsKPj4KPj4gICBjaGFyIF9fc2l6ZVszMl07Cj4+ICAgbG9uZyBp bnQgX19hbGlnbjsKPj4gfSBwdGhyZWFkX3J3bG9ja190Owo+Pgo+PiB0eXBlZGVmIHVuaW9uCj4+ IHsKPj4gICBjaGFyIF9fc2l6ZVs4XTsKPj4gICBsb25nIGludCBfX2FsaWduOwo+PiB9IHB0aHJl YWRfcndsb2NrYXR0cl90Owo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIHZvbGF0aWxlIGludCBw dGhyZWFkX3NwaW5sb2NrX3Q7Cj4+Cj4+Cj4+Cj4+Cj4+IHR5cGVkZWYgdW5pb24KPj4gewo+PiAg IGNoYXIgX19zaXplWzIwXTsKPj4gICBsb25nIGludCBfX2FsaWduOwo+PiB9IHB0aHJlYWRfYmFy cmllcl90Owo+Pgo+PiB0eXBlZGVmIHVuaW9uCj4+IHsKPj4gICBjaGFyIF9fc2l6ZVs0XTsKPj4g ICBpbnQgX19hbGlnbjsKPj4gfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7Cj4+ICMgMjcxICIvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0Cj4+Cj4+Cj4+Cj4+ICMgMzE1ICIvdXNyL2luY2x1 ZGUvc3RkbGliLmgiIDIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBsb25nIGludCBy YW5kb20gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ Cj4+Cj4+IGV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVy biBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYs Cj4+ICAgIHNpemVfdCBfX3N0YXRlbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKPj4KPj4KPj4KPj4g ZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4gc3RydWN0IHJhbmRvbV9kYXRhCj4+ICAgewo+PiAg ICAgaW50MzJfdCAqZnB0cjsKPj4gICAgIGludDMyX3QgKnJwdHI7Cj4+ICAgICBpbnQzMl90ICpz dGF0ZTsKPj4gICAgIGludCByYW5kX3R5cGU7Cj4+ICAgICBpbnQgcmFuZF9kZWc7Cj4+ICAgICBp bnQgcmFuZF9zZXA7Cj4+ICAgICBpbnQzMl90ICplbmRfcHRyOwo+PiAgIH07Cj4+Cj4+IGV4dGVy biBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKPj4g ICAgICAgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp Owo+Pgo+PiBleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0 IHJhbmRvbV9kYXRhICpfX2J1ZikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKPj4KPj4gZXh0 ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0cmlj dCBfX3N0YXRlYnVmLAo+PiAgICBzaXplX3QgX19zdGF0ZWxlbiwKPj4gICAgc3RydWN0IHJhbmRv bV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpOwo+ Pgo+PiBleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwK Pj4gICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKQo+PiAgICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHJh bmQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+ IGV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19zZWVkKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHJhbmRf ciAodW5zaWduZWQgaW50ICpfX3NlZWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBkb3VibGUgZHJhbmQ0OCAo dm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gZXh0ZXJu IGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7Cj4+Cj4+Cj4+IGV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiBleHRlcm4gbG9uZyBpbnQgbnJh bmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pCj4+ICAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7Cj4+Cj4+Cj4+IGV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2b2lkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiBleHRlcm4gbG9uZyBpbnQganJhbmQ0 OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp KSk7Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gZXh0ZXJuIHVuc2lnbmVk IHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKQo+PiAg ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+PiBleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBz aG9ydCBpbnQgX19wYXJhbVs3XSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ IHN0cnVjdCBkcmFuZDQ4X2RhdGEKPj4gICB7Cj4+ICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194 WzNdOwo+PiAgICAgdW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107Cj4+ICAgICB1bnNpZ25l ZCBzaG9ydCBpbnQgX19jOwo+PiAgICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKPj4gICAg IF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX2E7Cj4+Cj4+ICAgfTsKPj4K Pj4KPj4gZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJp Y3QgX19idWZmZXIsCj4+ICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKPj4gZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0 IGludCBfX3hzdWJpWzNdLAo+PiAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJp Y3QgX19idWZmZXIsCj4+ICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4gZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBk cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCj4+ICAgICAgICAgbG9uZyBpbnQgKl9f cmVzdHJpY3QgX19yZXN1bHQpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+IGV4dGVy biBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKPj4gICAgICAg ICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAo+PiAgICAgICAgIGxv bmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp Owo+Pgo+Pgo+PiBleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y ZXN0cmljdCBfX2J1ZmZlciwKPj4gICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3Vs dCkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4gZXh0ZXJuIGludCBqcmFuZDQ4X3Ig KHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAo+PiAgICAgICAgIHN0cnVjdCBkcmFuZDQ4 X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCj4+ICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJp Y3QgX19yZXN1bHQpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+Cj4+Cj4+IGV4dGVy biBpbnQgc3JhbmQ0OF9yIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEg Kl9fYnVmZmVyKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwo+Pgo+PiBleHRlcm4gaW50IHNl ZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAo+PiAgICAgICAgc3RydWN0 IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pgo+PiBleHRl cm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCj4+ICAgICAg ICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDIpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkICptYWxsb2Mg KHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7Cj4+Cj4+IGV4dGVybiB2b2lkICpjYWxsb2Mg KHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7Cj4+ Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkICpyZWFsbG9jICh2b2lk ICpfX3B0ciwgc2l6ZV90IF9fc2l6ZSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7 Cj4+Cj4+IGV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gdm9pZCBjZnJlZSAo dm9pZCAqX19wdHIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ Cj4+Cj4+Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMgNAo+PiAjIDI0ICIvdXNy L2luY2x1ZGUvYWxsb2NhLmgiIDMgNAo+PiAjIDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1s aW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAo+PiAjIDI1ICIvdXNyL2luY2x1ZGUv YWxsb2NhLmgiIDIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkICphbGxv Y2EgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ICMgNDkzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIg MyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbWFsbG9jX18pKSA7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24g KHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19zaXplKQo+PiAg ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHZvaWQgKmFsaWdu ZWRfYWxsb2MgKHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKPj4gICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21h bGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgyKSkpIDsKPj4KPj4KPj4K Pj4KPj4gZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwo+Pgo+Pgo+Pgo+ PiBleHRlcm4gaW50IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBhdF9xdWlja19leGl0ICh2 b2lkICgqX19mdW5jKSAodm9pZCkpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+ Pgo+Pgo+PiBleHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMs IHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+ Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1cykgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Jl dHVybl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIHF1aWNrX2V4aXQgKGludCBf X3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2 b2lkIF9FeGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+ Pgo+PiBleHRlcm4gY2hhciAqZ2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpIDsKPj4KPj4gIyA1NzggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0Cj4+IGV4dGVy biBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Cj4+Cj4+ Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgc2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUsIGNvbnN0IGNo YXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7Cj4+ Cj4+Cj4+IGV4dGVybiBpbnQgdW5zZXRlbnYgKGNvbnN0IGNoYXIgKl9fbmFtZSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ICMgNjA2ICIvdXNy L2luY2x1ZGUvc3RkbGliLmgiIDMgNAo+PiBleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3Rl bXBsYXRlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4gIyA2MTkgIi91c3IvaW5jbHVkZS9zdGRsaWIu aCIgMyA0Cj4+IGV4dGVybiBpbnQgbWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4gIyA2NDEgIi91c3IvaW5jbHVkZS9zdGRsaWIu aCIgMyA0Cj4+IGV4dGVybiBpbnQgbWtzdGVtcHMgKGNoYXIgKl9fdGVtcGxhdGUsIGludCBfX3N1 ZmZpeGxlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4gIyA2NjIgIi91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0Cj4+IGV4dGVybiBjaGFyICpta2R0ZW1wIChjaGFyICpf X3RlbXBsYXRlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7Cj4+ICMgNzExICIvdXNyL2luY2x1ZGUvc3Rk bGliLmgiIDMgNAo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHN5c3RlbSAoY29uc3QgY2hh ciAqX19jb21tYW5kKSA7Cj4+Cj4+ICMgNzMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAo+ PiBleHRlcm4gY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAo+ PiAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIGlu dCAoKl9fY29tcGFyX2ZuX3QpIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7Cj4+ICMgNzUx ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAo+Pgo+Pgo+Pgo+PiBleHRlcm4gdm9pZCAqYnNl YXJjaCAoY29uc3Qgdm9pZCAqX19rZXksIGNvbnN0IHZvaWQgKl9fYmFzZSwKPj4gICAgICAgICBz aXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcikKPj4g ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDUpKSkgOwo+Pgo+Pgo+Pgo+ Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19u bWVtYiwgc2l6ZV90IF9fc2l6ZSwKPj4gICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7Cj4+ICMgNzc0ICIvdXNyL2luY2x1ZGUv c3RkbGliLmgiIDMgNAo+PiBleHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwo+ PiBleHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7Cj4+Cj4+ Cj4+Cj4+IF9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9u ZyBpbnQgX194KQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4g ZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQo+PiAgICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpIDsKPj4gZXh0ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGlu dCBfX2Rlbm9tKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKPj4KPj4KPj4KPj4KPj4gX19leHRlbnNp b25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLAo+PiAgICAg ICAgIGxvbmcgbG9uZyBpbnQgX19kZW5vbSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7Cj4+Cj4+ICMg ODExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAo+PiBleHRlcm4gY2hhciAqZWN2dCAoZG91 YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCj4+ICAg ICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkgOwo+Pgo+Pgo+ Pgo+Pgo+PiBleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCj4+ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDMsIDQpKSkgOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gY2hhciAqZ2N2dCAo ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpCj4+ICAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDMpKSkgOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gY2hhciAqcWVjdnQgKGxvbmcgZG91 YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKPj4gICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVj cHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkg Owo+PiBleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp dCwKPj4gICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3Np Z24pCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkgOwo+PiBleHRlcm4gY2hhciAqcWdjdnQg KGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpCj4+ICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDMpKSkgOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGVjdnRfciAoZG91 YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCj4+ICAg ICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKPj4gICAg ICBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0LCA1KSkpOwo+PiBleHRlcm4gaW50IGZj dnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVj cHQsCj4+ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1 ZiwKPj4gICAgICBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0LCA1KSkpOwo+Pgo+PiBl eHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKPj4g ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCj4+ ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikKPj4gICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMywgNCwgNSkpKTsKPj4gZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBf X3ZhbHVlLCBpbnQgX19uZGlnaXQsCj4+ICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBp bnQgKl9fcmVzdHJpY3QgX19zaWduLAo+PiAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBz aXplX3QgX19sZW4pCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQsIDUpKSk7Cj4+Cj4+Cj4+Cj4+ Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgbWJsZW4gKGNvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4gZXh0ZXJu IGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsCj4+ICAgICAgY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdj aGFyX3QgX193Y2hhcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK Pj4KPj4KPj4KPj4gZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBf X3B3Y3MsCj4+ICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+PiBleHRlcm4gc2l6ZV90 IHdjc3RvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKPj4gICAgY29uc3Qgd2NoYXJfdCAqX19y ZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGlu dCBycG1hdGNoIChjb25zdCBjaGFyICpfX3Jlc3BvbnNlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7Cj4+ ICMgODk4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAo+PiBleHRlcm4gaW50IGdldHN1Ym9w dCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAo+PiAgICAgICAgIGNoYXIgKmNvbnN0ICpf X3Jlc3RyaWN0IF9fdG9rZW5zLAo+PiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVw KQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpIDsKPj4gIyA5NTAgIi91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMyA0Cj4+IGV4dGVybiBpbnQgZ2V0bG9hZGF2ZyAoZG91YmxlIF9fbG9hZGF2 Z1tdLCBpbnQgX19uZWxlbSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4KPj4gIyAx ICIvdXNyL2luY2x1ZGUvYml0cy9zdGRsaWItZmxvYXQuaCIgMSAzIDQKPj4gIyA5NTUgIi91c3Iv aW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKPj4gIyA5NjcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg MyA0Cj4+Cj4+ICMgNDEgIm1hY2hpbmUuYyIgMgo+PiAjIDEgIi91c3IvaW5jbHVkZS9zaWduYWwu aCIgMSAzIDQKPj4gIyAzMCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKPj4KPj4KPj4gIyAx ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzIDQKPj4gIyAxMDIgIi91c3IvaW5jbHVk ZS9iaXRzL3NpZ3NldC5oIiAzIDQKPj4gZXh0ZXJuIGludCBfX3NpZ2lzbWVtYmVyIChjb25zdCBf X3NpZ3NldF90ICosIGludCk7Cj4+IGV4dGVybiBpbnQgX19zaWdhZGRzZXQgKF9fc2lnc2V0X3Qg KiwgaW50KTsKPj4gZXh0ZXJuIGludCBfX3NpZ2RlbHNldCAoX19zaWdzZXRfdCAqLCBpbnQpOwo+ PiAjIDMzICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ Cj4+IHR5cGVkZWYgX19zaWdfYXRvbWljX3Qgc2lnX2F0b21pY190Owo+Pgo+PiAjIDU3ICIvdXNy L2luY2x1ZGUvc2lnbmFsLmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ251bS5o IiAxIDMgNAo+PiAjIDU4ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0Cj4+ICMgNzUgIi91 c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAz IDQKPj4gIyA3NiAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAo+Pgo+Pgo+Pgo+Pgo+PiAj IDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMSAzIDQKPj4gIyAyNCAiL3Vzci9pbmNs dWRlL2JpdHMvc2lnaW5mby5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6 ZS5oIiAxIDMgNAo+PiAjIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDIgMyA0Cj4+ Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IHR5cGVkZWYgdW5pb24gc2lndmFsCj4+ICAgewo+PiAgICAg aW50IHNpdmFsX2ludDsKPj4gICAgIHZvaWQgKnNpdmFsX3B0cjsKPj4gICB9IHNpZ3ZhbF90Owo+ PiAjIDU4ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMgNAo+PiB0eXBlZGVmIF9fY2xv Y2tfdCBfX3NpZ2NobGRfY2xvY2tfdDsKPj4KPj4KPj4KPj4gdHlwZWRlZiBzdHJ1Y3QKPj4gICB7 Cj4+ICAgICBpbnQgc2lfc2lnbm87Cj4+ICAgICBpbnQgc2lfZXJybm87Cj4+Cj4+ICAgICBpbnQg c2lfY29kZTsKPj4KPj4gICAgIHVuaW9uCj4+ICAgICAgIHsKPj4gIGludCBfcGFkWygoMTI4IC8g c2l6ZW9mIChpbnQpKSAtIDMpXTsKPj4KPj4KPj4gIHN0cnVjdAo+PiAgICB7Cj4+ICAgICAgX19w aWRfdCBzaV9waWQ7Cj4+ICAgICAgX191aWRfdCBzaV91aWQ7Cj4+ICAgIH0gX2tpbGw7Cj4+Cj4+ Cj4+ICBzdHJ1Y3QKPj4gICAgewo+PiAgICAgIGludCBzaV90aWQ7Cj4+ICAgICAgaW50IHNpX292 ZXJydW47Cj4+ICAgICAgc2lndmFsX3Qgc2lfc2lndmFsOwo+PiAgICB9IF90aW1lcjsKPj4KPj4K Pj4gIHN0cnVjdAo+PiAgICB7Cj4+ICAgICAgX19waWRfdCBzaV9waWQ7Cj4+ICAgICAgX191aWRf dCBzaV91aWQ7Cj4+ICAgICAgc2lndmFsX3Qgc2lfc2lndmFsOwo+PiAgICB9IF9ydDsKPj4KPj4K Pj4gIHN0cnVjdAo+PiAgICB7Cj4+ICAgICAgX19waWRfdCBzaV9waWQ7Cj4+ICAgICAgX191aWRf dCBzaV91aWQ7Cj4+ICAgICAgaW50IHNpX3N0YXR1czsKPj4gICAgICBfX3NpZ2NobGRfY2xvY2tf dCBzaV91dGltZTsKPj4gICAgICBfX3NpZ2NobGRfY2xvY2tfdCBzaV9zdGltZTsKPj4gICAgfSBf c2lnY2hsZDsKPj4KPj4KPj4gIHN0cnVjdAo+PiAgICB7Cj4+ICAgICAgdm9pZCAqc2lfYWRkcjsK Pj4gICAgICBzaG9ydCBpbnQgc2lfYWRkcl9sc2I7Cj4+ICAgICAgc3RydWN0Cj4+ICAgICAgICB7 Cj4+ICAgdm9pZCAqX2xvd2VyOwo+PiAgIHZvaWQgKl91cHBlcjsKPj4gICAgICAgIH0gc2lfYWRk cl9ibmQ7Cj4+ICAgIH0gX3NpZ2ZhdWx0Owo+Pgo+Pgo+PiAgc3RydWN0Cj4+ICAgIHsKPj4gICAg ICBsb25nIGludCBzaV9iYW5kOwo+PiAgICAgIGludCBzaV9mZDsKPj4gICAgfSBfc2lncG9sbDsK Pj4KPj4KPj4gIHN0cnVjdAo+PiAgICB7Cj4+ICAgICAgdm9pZCAqX2NhbGxfYWRkcjsKPj4gICAg ICBpbnQgX3N5c2NhbGw7Cj4+ICAgICAgdW5zaWduZWQgaW50IF9hcmNoOwo+PiAgICB9IF9zaWdz eXM7Cj4+ICAgICAgIH0gX3NpZmllbGRzOwo+PiAgIH0gc2lnaW5mb190IDsKPj4gIyAxNjAgIi91 c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMyA0Cj4+IGVudW0KPj4gewo+PiAgIFNJX0FTWU5D TkwgPSAtNjAsCj4+Cj4+ICAgU0lfVEtJTEwgPSAtNiwKPj4KPj4gICBTSV9TSUdJTywKPj4KPj4g ICBTSV9BU1lOQ0lPLAo+Pgo+PiAgIFNJX01FU0dRLAo+Pgo+PiAgIFNJX1RJTUVSLAo+Pgo+PiAg IFNJX1FVRVVFLAo+Pgo+PiAgIFNJX1VTRVIsCj4+Cj4+ICAgU0lfS0VSTkVMID0gMHg4MAo+Pgo+ PiB9Owo+Pgo+Pgo+Pgo+Pgo+PiBlbnVtCj4+IHsKPj4gICBJTExfSUxMT1BDID0gMSwKPj4KPj4g ICBJTExfSUxMT1BOLAo+Pgo+PiAgIElMTF9JTExBRFIsCj4+Cj4+ICAgSUxMX0lMTFRSUCwKPj4K Pj4gICBJTExfUFJWT1BDLAo+Pgo+PiAgIElMTF9QUlZSRUcsCj4+Cj4+ICAgSUxMX0NPUFJPQywK Pj4KPj4gICBJTExfQkFEU1RLCj4+Cj4+IH07Cj4+Cj4+Cj4+IGVudW0KPj4gewo+PiAgIEZQRV9J TlRESVYgPSAxLAo+Pgo+PiAgIEZQRV9JTlRPVkYsCj4+Cj4+ICAgRlBFX0ZMVERJViwKPj4KPj4g ICBGUEVfRkxUT1ZGLAo+Pgo+PiAgIEZQRV9GTFRVTkQsCj4+Cj4+ICAgRlBFX0ZMVFJFUywKPj4K Pj4gICBGUEVfRkxUSU5WLAo+Pgo+PiAgIEZQRV9GTFRTVUIKPj4KPj4gfTsKPj4KPj4KPj4gZW51 bQo+PiB7Cj4+ICAgU0VHVl9NQVBFUlIgPSAxLAo+Pgo+PiAgIFNFR1ZfQUNDRVJSCj4+Cj4+IH07 Cj4+Cj4+Cj4+IGVudW0KPj4gewo+PiAgIEJVU19BRFJBTE4gPSAxLAo+Pgo+PiAgIEJVU19BRFJF UlIsCj4+Cj4+ICAgQlVTX09CSkVSUiwKPj4KPj4gICBCVVNfTUNFRVJSX0FSLAo+Pgo+PiAgIEJV U19NQ0VFUlJfQU8KPj4KPj4gfTsKPj4gIyAyNjQgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8u aCIgMyA0Cj4+IGVudW0KPj4gewo+PiAgIENMRF9FWElURUQgPSAxLAo+Pgo+PiAgIENMRF9LSUxM RUQsCj4+Cj4+ICAgQ0xEX0RVTVBFRCwKPj4KPj4gICBDTERfVFJBUFBFRCwKPj4KPj4gICBDTERf U1RPUFBFRCwKPj4KPj4gICBDTERfQ09OVElOVUVECj4+Cj4+IH07Cj4+Cj4+Cj4+IGVudW0KPj4g ewo+PiAgIFBPTExfSU4gPSAxLAo+Pgo+PiAgIFBPTExfT1VULAo+Pgo+PiAgIFBPTExfTVNHLAo+ Pgo+PiAgIFBPTExfRVJSLAo+Pgo+PiAgIFBPTExfUFJJLAo+Pgo+PiAgIFBPTExfSFVQCj4+Cj4+ IH07Cj4+ICMgMzIwICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMgNAo+PiB0eXBlZGVm IHN0cnVjdCBzaWdldmVudAo+PiAgIHsKPj4gICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVlOwo+PiAg ICAgaW50IHNpZ2V2X3NpZ25vOwo+PiAgICAgaW50IHNpZ2V2X25vdGlmeTsKPj4KPj4gICAgIHVu aW9uCj4+ICAgICAgIHsKPj4gIGludCBfcGFkWygoNjQgLyBzaXplb2YgKGludCkpIC0gMyldOwo+ Pgo+Pgo+Pgo+PiAgX19waWRfdCBfdGlkOwo+Pgo+PiAgc3RydWN0Cj4+ICAgIHsKPj4gICAgICB2 b2lkICgqX2Z1bmN0aW9uKSAoc2lndmFsX3QpOwo+PiAgICAgIHB0aHJlYWRfYXR0cl90ICpfYXR0 cmlidXRlOwo+PiAgICB9IF9zaWdldl90aHJlYWQ7Cj4+ICAgICAgIH0gX3NpZ2V2X3VuOwo+PiAg IH0gc2lnZXZlbnRfdDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gZW51bQo+PiB7Cj4+ICAgU0lHRVZf U0lHTkFMID0gMCwKPj4KPj4gICBTSUdFVl9OT05FLAo+Pgo+PiAgIFNJR0VWX1RIUkVBRCwKPj4K Pj4KPj4gICBTSUdFVl9USFJFQURfSUQgPSA0Cj4+Cj4+IH07Cj4+ICMgODEgIi91c3IvaW5jbHVk ZS9zaWduYWwuaCIgMiAzIDQKPj4KPj4KPj4KPj4KPj4gdHlwZWRlZiB2b2lkICgqX19zaWdoYW5k bGVyX3QpIChpbnQpOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gX19zaWdoYW5kbGVyX3QgX19zeXN2 X3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIpCj4+ICAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gIyAxMDAgIi91c3IvaW5j bHVkZS9zaWduYWwuaCIgMyA0Cj4+Cj4+Cj4+IGV4dGVybiBfX3NpZ2hhbmRsZXJfdCBzaWduYWwg KGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQo+PiAgICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ICMgMTE0ICIvdXNyL2luY2x1ZGUvc2ln bmFsLmgiIDMgNAo+Pgo+PiAjIDEyNyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKPj4gZXh0 ZXJuIGludCBraWxsIChfX3BpZF90IF9fcGlkLCBpbnQgX19zaWcpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQg a2lsbHBnIChfX3BpZF90IF9fcGdycCwgaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHJhaXNlIChpbnQg X19zaWcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+ Cj4+Cj4+IGV4dGVybiBfX3NpZ2hhbmRsZXJfdCBzc2lnbmFsIChpbnQgX19zaWcsIF9fc2lnaGFu ZGxlcl90IF9faGFuZGxlcikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+PiBleHRlcm4gaW50IGdzaWduYWwgKGludCBfX3NpZykgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHZvaWQg cHNpZ25hbCAoaW50IF9fc2lnLCBjb25zdCBjaGFyICpfX3MpOwo+Pgo+Pgo+PiBleHRlcm4gdm9p ZCBwc2lnaW5mbyAoY29uc3Qgc2lnaW5mb190ICpfX3BpbmZvLCBjb25zdCBjaGFyICpfX3MpOwo+ PiAjIDE4NyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKPj4gZXh0ZXJuIGludCBzaWdibG9j ayAoaW50IF9fbWFzaykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKTsKPj4KPj4KPj4gZXh0ZXJuIGludCBzaWdz ZXRtYXNrIChpbnQgX19tYXNrKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwo+Pgo+Pgo+PiBleHRlcm4gaW50 IHNpZ2dldG1hc2sgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSk7Cj4+ICMgMjA3ICIvdXNyL2luY2x1 ZGUvc2lnbmFsLmgiIDMgNAo+PiB0eXBlZGVmIF9fc2lnaGFuZGxlcl90IHNpZ190Owo+Pgo+Pgo+ Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHNpZ2VtcHR5c2V0IChzaWdzZXRfdCAqX19zZXQpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpOwo+Pgo+Pgo+PiBleHRlcm4gaW50IHNpZ2ZpbGxzZXQgKHNpZ3NldF90ICpf X3NldCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgc2lnYWRkc2V0IChz aWdzZXRfdCAqX19zZXQsIGludCBfX3NpZ25vKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4KPj4g ZXh0ZXJuIGludCBzaWdkZWxzZXQgKHNpZ3NldF90ICpfX3NldCwgaW50IF9fc2lnbm8pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpOwo+Pgo+Pgo+PiBleHRlcm4gaW50IHNpZ2lzbWVtYmVyIChjb25zdCBzaWdz ZXRfdCAqX19zZXQsIGludCBfX3NpZ25vKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+PiAj IDI0MyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0 cy9zaWdhY3Rpb24uaCIgMSAzIDQKPj4gIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnYWN0aW9u LmgiIDMgNAo+PiBzdHJ1Y3Qgc2lnYWN0aW9uCj4+ICAgewo+Pgo+Pgo+PiAgICAgdW5pb24KPj4g ICAgICAgewo+Pgo+PiAgX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsKPj4KPj4gIHZvaWQgKCpz YV9zaWdhY3Rpb24pIChpbnQsIHNpZ2luZm9fdCAqLCB2b2lkICopOwo+PiAgICAgICB9Cj4+ICAg ICBfX3NpZ2FjdGlvbl9oYW5kbGVyOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiAgICAgX19zaWdz ZXRfdCBzYV9tYXNrOwo+Pgo+Pgo+PiAgICAgaW50IHNhX2ZsYWdzOwo+Pgo+Pgo+PiAgICAgdm9p ZCAoKnNhX3Jlc3RvcmVyKSAodm9pZCk7Cj4+ICAgfTsKPj4gIyAyNDQgIi91c3IvaW5jbHVkZS9z aWduYWwuaCIgMiAzIDQKPj4KPj4KPj4gZXh0ZXJuIGludCBzaWdwcm9jbWFzayAoaW50IF9faG93 LCBjb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKPj4gICAgc2lnc2V0X3QgKl9fcmVz dHJpY3QgX19vc2V0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+ Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHNpZ3N1c3BlbmQgKGNvbnN0IHNpZ3NldF90 ICpfX3NldCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+PiBleHRl cm4gaW50IHNpZ2FjdGlvbiAoaW50IF9fc2lnLCBjb25zdCBzdHJ1Y3Qgc2lnYWN0aW9uICpfX3Jl c3RyaWN0IF9fYWN0LAo+PiAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gKl9fcmVzdHJpY3QgX19v YWN0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBl eHRlcm4gaW50IHNpZ3BlbmRpbmcgKHNpZ3NldF90ICpfX3NldCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgc2lnd2FpdCAoY29uc3Qgc2lnc2V0X3Qg Kl9fcmVzdHJpY3QgX19zZXQsIGludCAqX19yZXN0cmljdCBfX3NpZykKPj4gICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVy biBpbnQgc2lnd2FpdGluZm8gKGNvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LAo+PiAg ICBzaWdpbmZvX3QgKl9fcmVzdHJpY3QgX19pbmZvKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgc2lndGltZWR3YWl0IChj b25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKPj4gICAgIHNpZ2luZm9fdCAqX19yZXN0 cmljdCBfX2luZm8sCj4+ICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190 aW1lb3V0KQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4K Pj4KPj4gZXh0ZXJuIGludCBzaWdxdWV1ZSAoX19waWRfdCBfX3BpZCwgaW50IF9fc2lnLCBjb25z dCB1bmlvbiBzaWd2YWwgX192YWwpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKPj4gIyAzMDEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0Cj4+IGV4 dGVybiBjb25zdCBjaGFyICpjb25zdCBfc3lzX3NpZ2xpc3RbNjVdOwo+PiBleHRlcm4gY29uc3Qg Y2hhciAqY29uc3Qgc3lzX3NpZ2xpc3RbNjVdOwo+Pgo+Pgo+Pgo+PiAjIDEgIi91c3IvaW5jbHVk ZS9iaXRzL3NpZ2NvbnRleHQuaCIgMSAzIDQKPj4gIyAyOSAiL3Vzci9pbmNsdWRlL2JpdHMvc2ln Y29udGV4dC5oIiAzIDQKPj4gc3RydWN0IF9mcHhfc3dfYnl0ZXMKPj4gewo+PiAgIF9fdWludDMy X3QgbWFnaWMxOwo+PiAgIF9fdWludDMyX3QgZXh0ZW5kZWRfc2l6ZTsKPj4gICBfX3VpbnQ2NF90 IHhzdGF0ZV9idjsKPj4gICBfX3VpbnQzMl90IHhzdGF0ZV9zaXplOwo+PiAgIF9fdWludDMyX3Qg cGFkZGluZ1s3XTsKPj4gfTsKPj4KPj4gc3RydWN0IF9mcHJlZwo+PiB7Cj4+ICAgdW5zaWduZWQg c2hvcnQgc2lnbmlmaWNhbmRbNF07Cj4+ICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7Cj4+IH07 Cj4+Cj4+IHN0cnVjdCBfZnB4cmVnCj4+IHsKPj4gICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2Fu ZFs0XTsKPj4gICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKPj4gICB1bnNpZ25lZCBzaG9ydCBw YWRkaW5nWzNdOwo+PiB9Owo+Pgo+PiBzdHJ1Y3QgX3htbXJlZwo+PiB7Cj4+ICAgX191aW50MzJf dCBlbGVtZW50WzRdOwo+PiB9Owo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBzdHJ1Y3QgX2Zwc3RhdGUKPj4g ewo+Pgo+PiAgIF9fdWludDMyX3QgY3c7Cj4+ICAgX191aW50MzJfdCBzdzsKPj4gICBfX3VpbnQz Ml90IHRhZzsKPj4gICBfX3VpbnQzMl90IGlwb2ZmOwo+PiAgIF9fdWludDMyX3QgY3NzZWw7Cj4+ ICAgX191aW50MzJfdCBkYXRhb2ZmOwo+PiAgIF9fdWludDMyX3QgZGF0YXNlbDsKPj4gICBzdHJ1 Y3QgX2ZwcmVnIF9zdFs4XTsKPj4gICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7Cj4+ICAgdW5zaWdu ZWQgc2hvcnQgbWFnaWM7Cj4+Cj4+Cj4+ICAgX191aW50MzJfdCBfZnhzcl9lbnZbNl07Cj4+ICAg X191aW50MzJfdCBteGNzcjsKPj4gICBfX3VpbnQzMl90IHJlc2VydmVkOwo+PiAgIHN0cnVjdCBf ZnB4cmVnIF9meHNyX3N0WzhdOwo+PiAgIHN0cnVjdCBfeG1tcmVnIF94bW1bOF07Cj4+ICAgX191 aW50MzJfdCBwYWRkaW5nWzU2XTsKPj4gfTsKPj4gIyA5MyAiL3Vzci9pbmNsdWRlL2JpdHMvc2ln Y29udGV4dC5oIiAzIDQKPj4gc3RydWN0IHNpZ2NvbnRleHQKPj4gewo+PiAgIHVuc2lnbmVkIHNo b3J0IGdzLCBfX2dzaDsKPj4gICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7Cj4+ICAgdW5zaWdu ZWQgc2hvcnQgZXMsIF9fZXNoOwo+PiAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKPj4gICB1 bnNpZ25lZCBsb25nIGVkaTsKPj4gICB1bnNpZ25lZCBsb25nIGVzaTsKPj4gICB1bnNpZ25lZCBs b25nIGVicDsKPj4gICB1bnNpZ25lZCBsb25nIGVzcDsKPj4gICB1bnNpZ25lZCBsb25nIGVieDsK Pj4gICB1bnNpZ25lZCBsb25nIGVkeDsKPj4gICB1bnNpZ25lZCBsb25nIGVjeDsKPj4gICB1bnNp Z25lZCBsb25nIGVheDsKPj4gICB1bnNpZ25lZCBsb25nIHRyYXBubzsKPj4gICB1bnNpZ25lZCBs b25nIGVycjsKPj4gICB1bnNpZ25lZCBsb25nIGVpcDsKPj4gICB1bnNpZ25lZCBzaG9ydCBjcywg X19jc2g7Cj4+ICAgdW5zaWduZWQgbG9uZyBlZmxhZ3M7Cj4+ICAgdW5zaWduZWQgbG9uZyBlc3Bf YXRfc2lnbmFsOwo+PiAgIHVuc2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKPj4gICBzdHJ1Y3QgX2Zw c3RhdGUgKiBmcHN0YXRlOwo+PiAgIHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKPj4gICB1bnNpZ25l ZCBsb25nIGNyMjsKPj4gfTsKPj4gIyAxNzUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQu aCIgMyA0Cj4+IHN0cnVjdCBfeHNhdmVfaGRyCj4+IHsKPj4gICBfX3VpbnQ2NF90IHhzdGF0ZV9i djsKPj4gICBfX3VpbnQ2NF90IHJlc2VydmVkMVsyXTsKPj4gICBfX3VpbnQ2NF90IHJlc2VydmVk Mls1XTsKPj4gfTsKPj4KPj4gc3RydWN0IF95bW1oX3N0YXRlCj4+IHsKPj4gICBfX3VpbnQzMl90 IHltbWhfc3BhY2VbNjRdOwo+PiB9Owo+Pgo+PiBzdHJ1Y3QgX3hzdGF0ZQo+PiB7Cj4+ICAgc3Ry dWN0IF9mcHN0YXRlIGZwc3RhdGU7Cj4+ICAgc3RydWN0IF94c2F2ZV9oZHIgeHN0YXRlX2hkcjsK Pj4gICBzdHJ1Y3QgX3ltbWhfc3RhdGUgeW1taDsKPj4gfTsKPj4gIyAzMDcgIi91c3IvaW5jbHVk ZS9zaWduYWwuaCIgMiAzIDQKPj4KPj4KPj4gZXh0ZXJuIGludCBzaWdyZXR1cm4gKHN0cnVjdCBz aWdjb250ZXh0ICpfX3NjcCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGlu dXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKPj4gIyAzMTcgIi91c3IvaW5jbHVkZS9z aWduYWwuaCIgMiAzIDQKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBzaWdpbnRlcnJ1cHQgKGlu dCBfX3NpZywgaW50IF9faW50ZXJydXB0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pgo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3N0YWNrLmgiIDEgMyA0 Cj4+ICMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3N0YWNrLmgiIDMgNAo+PiBzdHJ1Y3Qgc2ln c3RhY2sKPj4gICB7Cj4+ICAgICB2b2lkICpzc19zcDsKPj4gICAgIGludCBzc19vbnN0YWNrOwo+ PiAgIH07Cj4+Cj4+Cj4+Cj4+IGVudW0KPj4gewo+PiAgIFNTX09OU1RBQ0sgPSAxLAo+Pgo+PiAg IFNTX0RJU0FCTEUKPj4KPj4gfTsKPj4gIyA0OSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc3RhY2su aCIgMyA0Cj4+IHR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0YWNrCj4+ICAgewo+PiAgICAgdm9pZCAq c3Nfc3A7Cj4+ICAgICBpbnQgc3NfZmxhZ3M7Cj4+ICAgICBzaXplX3Qgc3Nfc2l6ZTsKPj4gICB9 IHN0YWNrX3Q7Cj4+ICMgMzI0ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0Cj4+Cj4+Cj4+ ICMgMSAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAxIDMgNAo+PiAjIDIyICIvdXNyL2lu Y2x1ZGUvc3lzL3Vjb250ZXh0LmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIg MSAzIDQKPj4gIyAyMyAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAyIDMgNAo+PiAjIDE0 NiAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzIDQKPj4gdHlwZWRlZiBpbnQgZ3JlZ190 Owo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIGdyZWdfdCBncmVnc2V0X3RbMTldOwo+PiAjIDIw MCAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzIDQKPj4gc3RydWN0IF9saWJjX2ZwcmVn Cj4+IHsKPj4gICB1bnNpZ25lZCBzaG9ydCBpbnQgc2lnbmlmaWNhbmRbNF07Cj4+ICAgdW5zaWdu ZWQgc2hvcnQgaW50IGV4cG9uZW50Owo+PiB9Owo+Pgo+PiBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZQo+ PiB7Cj4+ICAgdW5zaWduZWQgbG9uZyBpbnQgY3c7Cj4+ICAgdW5zaWduZWQgbG9uZyBpbnQgc3c7 Cj4+ICAgdW5zaWduZWQgbG9uZyBpbnQgdGFnOwo+PiAgIHVuc2lnbmVkIGxvbmcgaW50IGlwb2Zm Owo+PiAgIHVuc2lnbmVkIGxvbmcgaW50IGNzc2VsOwo+PiAgIHVuc2lnbmVkIGxvbmcgaW50IGRh dGFvZmY7Cj4+ICAgdW5zaWduZWQgbG9uZyBpbnQgZGF0YXNlbDsKPj4gICBzdHJ1Y3QgX2xpYmNf ZnByZWcgX3N0WzhdOwo+PiAgIHVuc2lnbmVkIGxvbmcgaW50IHN0YXR1czsKPj4gfTsKPj4KPj4K Pj4gdHlwZWRlZiBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSAqZnByZWdzZXRfdDsKPj4KPj4KPj4gdHlw ZWRlZiBzdHJ1Y3QKPj4gICB7Cj4+ICAgICBncmVnc2V0X3QgZ3JlZ3M7Cj4+Cj4+Cj4+ICAgICBm cHJlZ3NldF90IGZwcmVnczsKPj4gICAgIHVuc2lnbmVkIGxvbmcgaW50IG9sZG1hc2s7Cj4+ICAg ICB1bnNpZ25lZCBsb25nIGludCBjcjI7Cj4+ICAgfSBtY29udGV4dF90Owo+Pgo+Pgo+PiB0eXBl ZGVmIHN0cnVjdCB1Y29udGV4dAo+PiAgIHsKPj4gICAgIHVuc2lnbmVkIGxvbmcgaW50IHVjX2Zs YWdzOwo+PiAgICAgc3RydWN0IHVjb250ZXh0ICp1Y19saW5rOwo+PiAgICAgc3RhY2tfdCB1Y19z dGFjazsKPj4gICAgIG1jb250ZXh0X3QgdWNfbWNvbnRleHQ7Cj4+ICAgICBfX3NpZ3NldF90IHVj X3NpZ21hc2s7Cj4+ICAgICBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSBfX2ZwcmVnc19tZW07Cj4+ICAg fSB1Y29udGV4dF90Owo+PiAjIDMyNyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAo+Pgo+ Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHNpZ3N0YWNrIChzdHJ1Y3Qgc2lnc3RhY2sgKl9fc3Ms IHN0cnVjdCBzaWdzdGFjayAqX19vc3MpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKTsKPj4KPj4K Pj4KPj4gZXh0ZXJuIGludCBzaWdhbHRzdGFjayAoY29uc3Qgc3RydWN0IHNpZ2FsdHN0YWNrICpf X3Jlc3RyaWN0IF9fc3MsCj4+ICAgIHN0cnVjdCBzaWdhbHRzdGFjayAqX19yZXN0cmljdCBfX29z cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gIyAzNjIgIi91 c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lndGhy ZWFkLmgiIDEgMyA0Cj4+ICMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3RocmVhZC5oIiAzIDQK Pj4gZXh0ZXJuIGludCBwdGhyZWFkX3NpZ21hc2sgKGludCBfX2hvdywKPj4gICAgICAgIGNvbnN0 IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19uZXdtYXNrLAo+PiAgICAgICAgX19zaWdzZXRfdCAq X19yZXN0cmljdCBfX29sZG1hc2spX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKPj4KPj4KPj4gZXh0ZXJuIGludCBwdGhyZWFkX2tpbGwgKHB0aHJlYWRfdCBfX3RocmVh ZGlkLCBpbnQgX19zaWdubykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKPj4gIyAzNjMgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQKPj4KPj4KPj4KPj4KPj4K Pj4KPj4gZXh0ZXJuIGludCBfX2xpYmNfY3VycmVudF9zaWdydG1pbiAodm9pZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4gZXh0ZXJuIGludCBfX2xpYmNf Y3VycmVudF9zaWdydG1heCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4gIyA0MiAibWFjaGluZS5jIiAyCj4+ICMgMSAiL3Vzci9p bmNsdWRlL2Vycm5vLmgiIDEgMyA0Cj4+ICMgMzEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzIDQK Pj4KPj4KPj4KPj4KPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMgNAo+PiAj IDI0ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUv bGludXgvZXJybm8uaCIgMSAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEg MyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmgiIDEgMyA0Cj4+Cj4+ Cj4+Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLWJhc2UuaCIgMSAzIDQK Pj4gIyA1ICIvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8uaCIgMiAzIDQKPj4gIyAxICIv dXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDIgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4 L2Vycm5vLmgiIDIgMyA0Cj4+ICMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDIgMyA0 Cj4+ICMgNTAgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMgNAo+PiBleHRlcm4gaW50ICpf X2Vycm5vX2xvY2F0aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4gIyAzNiAiL3Vzci9pbmNsdWRl L2Vycm5vLmgiIDIgMyA0Cj4+ICMgNTggIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzIDQKPj4KPj4g IyA0MyAibWFjaGluZS5jIiAyCj4+ICMgMSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDEgMyA0Cj4+ ICMgMjggIi91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4g IyAxICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAxIDMgNAo+PiAjIDM1ICIvdXNyL2luY2x1 ZGUvYml0cy9mY250bC5oIiAzIDQKPj4gc3RydWN0IGZsb2NrCj4+ICAgewo+PiAgICAgc2hvcnQg aW50IGxfdHlwZTsKPj4gICAgIHNob3J0IGludCBsX3doZW5jZTsKPj4KPj4gICAgIF9fb2ZmX3Qg bF9zdGFydDsKPj4gICAgIF9fb2ZmX3QgbF9sZW47Cj4+Cj4+Cj4+Cj4+Cj4+ICAgICBfX3BpZF90 IGxfcGlkOwo+PiAgIH07Cj4+ICMgNjEgIi91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDMgNAo+ PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLWxpbnV4LmgiIDEgMyA0Cj4+ICMgMzQ1ICIv dXNyL2luY2x1ZGUvYml0cy9mY250bC1saW51eC5oIiAzIDQKPj4KPj4gIyA0MTkgIi91c3IvaW5j bHVkZS9iaXRzL2ZjbnRsLWxpbnV4LmgiIDMgNAo+Pgo+PiAjIDYxICIvdXNyL2luY2x1ZGUvYml0 cy9mY250bC5oIiAyIDMgNAo+PiAjIDM2ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzIDQKPj4g IyA3NiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS90aW1l LmgiIDEgMyA0Cj4+ICMgNzcgIi91c3IvaW5jbHVkZS9mY250bC5oIiAyIDMgNAo+PiAjIDEgIi91 c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMSAzIDQKPj4gIyA0NiAiL3Vzci9pbmNsdWRlL2JpdHMv c3RhdC5oIiAzIDQKPj4gc3RydWN0IHN0YXQKPj4gICB7Cj4+ICAgICBfX2Rldl90IHN0X2RldjsK Pj4KPj4gICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDE7Cj4+Cj4+Cj4+ICAgICBfX2lub190 IHN0X2lubzsKPj4KPj4KPj4KPj4KPj4gICAgIF9fbW9kZV90IHN0X21vZGU7Cj4+ICAgICBfX25s aW5rX3Qgc3Rfbmxpbms7Cj4+Cj4+Cj4+Cj4+Cj4+ICAgICBfX3VpZF90IHN0X3VpZDsKPj4gICAg IF9fZ2lkX3Qgc3RfZ2lkOwo+Pgo+Pgo+Pgo+PiAgICAgX19kZXZfdCBzdF9yZGV2Owo+Pgo+PiAg ICAgdW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMjsKPj4KPj4KPj4gICAgIF9fb2ZmX3Qgc3Rfc2l6 ZTsKPj4KPj4KPj4KPj4gICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7Cj4+Cj4+ICAgICBfX2Js a2NudF90IHN0X2Jsb2NrczsKPj4gIyA5MSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAzIDQK Pj4gICAgIHN0cnVjdCB0aW1lc3BlYyBzdF9hdGltOwo+PiAgICAgc3RydWN0IHRpbWVzcGVjIHN0 X210aW07Cj4+ICAgICBzdHJ1Y3QgdGltZXNwZWMgc3RfY3RpbTsKPj4gIyAxMDkgIi91c3IvaW5j bHVkZS9iaXRzL3N0YXQuaCIgMyA0Cj4+ICAgICB1bnNpZ25lZCBsb25nIGludCBfX2dsaWJjX3Jl c2VydmVkNDsKPj4gICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fZ2xpYmNfcmVzZXJ2ZWQ1Owo+Pgo+ Pgo+Pgo+Pgo+PiAgIH07Cj4+ICMgNzggIi91c3IvaW5jbHVkZS9mY250bC5oIiAyIDMgNAo+PiAj IDE2OSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNAo+PiBleHRlcm4gaW50IGZjbnRsIChpbnQg X19mZCwgaW50IF9fY21kLCAuLi4pOwo+PiAjIDE3OSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMg NAo+PiBleHRlcm4gaW50IG9wZW4gKGNvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4u LikgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+PiAjIDIwMyAiL3Vzci9pbmNs dWRlL2ZjbnRsLmgiIDMgNAo+PiBleHRlcm4gaW50IG9wZW5hdCAoaW50IF9fZmQsIGNvbnN0IGNo YXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDIpKSk7Cj4+ICMgMjI1ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0Cj4+IGV4 dGVybiBpbnQgY3JlYXQgKGNvbnN0IGNoYXIgKl9fZmlsZSwgbW9kZV90IF9fbW9kZSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+PiAjIDI1NCAiL3Vzci9pbmNsdWRlL2ZjbnRs LmgiIDMgNAo+PiBleHRlcm4gaW50IGxvY2tmIChpbnQgX19mZCwgaW50IF9fY21kLCBvZmZfdCBf X2xlbik7Cj4+ICMgMjcxICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0Cj4+IGV4dGVybiBpbnQg cG9zaXhfZmFkdmlzZSAoaW50IF9fZmQsIG9mZl90IF9fb2Zmc2V0LCBvZmZfdCBfX2xlbiwKPj4g ICAgICBpbnQgX19hZHZpc2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+ICMgMjkzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0Cj4+IGV4dGVybiBpbnQgcG9z aXhfZmFsbG9jYXRlIChpbnQgX19mZCwgb2ZmX3QgX19vZmZzZXQsIG9mZl90IF9fbGVuKTsKPj4g IyAzMTUgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKPj4KPj4gIyA0NCAibWFjaGluZS5jIiAy Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMyA0Cj4+ICMgMjggIi91c3IvaW5jbHVk ZS9jdHlwZS5oIiAzIDQKPj4KPj4gIyA0NiAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNAo+PiBl bnVtCj4+IHsKPj4gICBfSVN1cHBlciA9ICgoMCkgPCA4ID8gKCgxIDw8ICgwKSkgPDwgOCkgOiAo KDEgPDwgKDApKSA+PiA4KSksCj4+ICAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/ICgoMSA8PCAoMSkp IDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAo+PiAgIF9JU2FscGhhID0gKCgyKSA8IDggPyAo KDEgPDwgKDIpKSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgpKSwKPj4gICBfSVNkaWdpdCA9ICgo MykgPCA4ID8gKCgxIDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCj4+ICAgX0lT eGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkpID4+IDgp KSwKPj4gICBfSVNzcGFjZSA9ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwg KDUpKSA+PiA4KSksCj4+ICAgX0lTcHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAoNikpIDw8IDgp IDogKCgxIDw8ICg2KSkgPj4gOCkpLAo+PiAgIF9JU2dyYXBoID0gKCg3KSA8IDggPyAoKDEgPDwg KDcpKSA8PCA4KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKPj4gICBfSVNibGFuayA9ICgoOCkgPCA4 ID8gKCgxIDw8ICg4KSkgPDwgOCkgOiAoKDEgPDwgKDgpKSA+PiA4KSksCj4+ICAgX0lTY250cmwg PSAoKDkpIDwgOCA/ICgoMSA8PCAoOSkpIDw8IDgpIDogKCgxIDw8ICg5KSkgPj4gOCkpLAo+PiAg IF9JU3B1bmN0ID0gKCgxMCkgPCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgpIDogKCgxIDw8ICgxMCkp ID4+IDgpKSwKPj4gICBfSVNhbG51bSA9ICgoMTEpIDwgOCA/ICgoMSA8PCAoMTEpKSA8PCA4KSA6 ICgoMSA8PCAoMTEpKSA+PiA4KSkKPj4gfTsKPj4gIyA3OSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgi IDMgNAo+PiBleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICoqX19jdHlwZV9iX2xvYyAo dm9pZCkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4gZXh0ZXJuIGNvbnN0IF9faW50MzJfdCAqKl9f Y3R5cGVfdG9sb3dlcl9sb2MgKHZvaWQpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cj4+IGV4dGVybiBj b25zdCBfX2ludDMyX3QgKipfX2N0eXBlX3RvdXBwZXJfbG9jICh2b2lkKQo+PiAgICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwo+PiAjIDEwNCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNAo+Pgo+Pgo+Pgo+Pgo+ Pgo+Pgo+PiBleHRlcm4gaW50IGlzYWxudW0gKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4gZXh0ZXJuIGludCBpc2FscGhhIChpbnQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4dGVybiBpbnQgaXNjbnRybCAoaW50 KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiBleHRlcm4gaW50 IGlzZGlnaXQgKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK Pj4gZXh0ZXJuIGludCBpc2xvd2VyIChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7Cj4+IGV4dGVybiBpbnQgaXNncmFwaCAoaW50KSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiBleHRlcm4gaW50IGlzcHJpbnQgKGludCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gZXh0ZXJuIGludCBpc3B1 bmN0IChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4 dGVybiBpbnQgaXNzcGFjZSAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+PiBleHRlcm4gaW50IGlzdXBwZXIgKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4gZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50 IHRvbG93ZXIgKGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0 ZXJuIGludCBpc2JsYW5rIChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7Cj4+Cj4+Cj4+ICMgMTUwICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0Cj4+IGV4dGVy biBpbnQgaXNhc2NpaSAoaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4KPj4KPj4KPj4gZXh0ZXJuIGludCB0b2FzY2lpIChpbnQgX19jKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50 IF90b3VwcGVyIChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 Cj4+IGV4dGVybiBpbnQgX3RvbG93ZXIgKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKPj4gIyAyNTcgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKPj4gIyAx ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMgNAo+PiAjIDI3ICIvdXNyL2luY2x1ZGUveGxv Y2FsZS5oIiAzIDQKPj4gdHlwZWRlZiBzdHJ1Y3QgX19sb2NhbGVfc3RydWN0Cj4+IHsKPj4KPj4g ICBzdHJ1Y3QgX19sb2NhbGVfZGF0YSAqX19sb2NhbGVzWzEzXTsKPj4KPj4KPj4gICBjb25zdCB1 bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKPj4gICBjb25zdCBpbnQgKl9fY3R5cGVfdG9s b3dlcjsKPj4gICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKPj4KPj4KPj4gICBjb25zdCBj aGFyICpfX25hbWVzWzEzXTsKPj4gfSAqX19sb2NhbGVfdDsKPj4KPj4KPj4gdHlwZWRlZiBfX2xv Y2FsZV90IGxvY2FsZV90Owo+PiAjIDI1OCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMyA0Cj4+ ICMgMjcxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0Cj4+IGV4dGVybiBpbnQgaXNhbG51bV9s IChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+IGV4dGVybiBpbnQgaXNhbHBoYV9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4dGVybiBpbnQgaXNjbnRybF9sIChp bnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 Cj4+IGV4dGVybiBpbnQgaXNkaWdpdF9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4dGVybiBpbnQgaXNsb3dlcl9sIChpbnQs IF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ IGV4dGVybiBpbnQgaXNncmFwaF9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4dGVybiBpbnQgaXNwcmludF9sIChpbnQsIF9f bG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4 dGVybiBpbnQgaXNwdW5jdF9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4dGVybiBpbnQgaXNzcGFjZV9sIChpbnQsIF9fbG9j YWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4dGVy biBpbnQgaXN1cHBlcl9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4dGVybiBpbnQgaXN4ZGlnaXRfbCAoaW50LCBfX2xvY2Fs ZV90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+PiBleHRl cm4gaW50IGlzYmxhbmtfbCAoaW50LCBfX2xvY2FsZV90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IF9fdG9sb3dlcl9sIChp bnQgX19jLCBfX2xvY2FsZV90IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4gZXh0ZXJuIGludCB0b2xvd2VyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19s KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRl cm4gaW50IF9fdG91cHBlcl9sIChpbnQgX19jLCBfX2xvY2FsZV90IF9fbCkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gZXh0ZXJuIGludCB0b3VwcGVyX2wgKGlu dCBfX2MsIF9fbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+PiAjIDM0NyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNAo+Pgo+PiAjIDQ1ICJt YWNoaW5lLmMiIDIKPj4gIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0Cj4+ICMgMjcg Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ICMgMSAiL3Vzci9s aWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0Cj4+ ICMgMzMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKPj4KPj4KPj4KPj4KPj4KPj4KPj4K Pj4KPj4KPj4gZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIGNv bnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCj4+ICAgICAgICBzaXplX3QgX19uKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4gZXh0ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVz dCwgY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDIpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpf X3Jlc3RyaWN0IF9fZGVzdCwgY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKPj4gICAgICAg ICBpbnQgX19jLCBzaXplX3QgX19uKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pgo+ Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNp emVfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+PiBleHRlcm4gaW50IG1lbWNtcCAo Y29uc3Qgdm9pZCAqX19zMSwgY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKPj4gICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4gIyA5MiAi L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKPj4gZXh0ZXJuIHZvaWQgKm1lbWNociAoY29uc3Qg dm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQo+PiAgICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4KPj4gIyAxMjMgIi91c3IvaW5jbHVk ZS9zdHJpbmcuaCIgMyA0Cj4+Cj4+Cj4+IGV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVz dHJpY3QgX19kZXN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQo+PiAgICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxLCAyKSkpOwo+Pgo+PiBleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0 cmljdCBfX2Rlc3QsCj4+ICAgICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6 ZV90IF9fbikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4gZXh0ZXJuIGNo YXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19zcmMpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+Cj4+IGV4dGVybiBjaGFy ICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX3NyYywKPj4gICAgICAgICBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4K Pj4KPj4gZXh0ZXJuIGludCBzdHJjbXAgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9f czIpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7Cj4+Cj4+IGV4dGVybiBpbnQgc3RybmNtcCAoY29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hh ciAqX19zMiwgc2l6ZV90IF9fbikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4gZXh0ZXJuIGludCBzdHJjb2xsIChjb25zdCBj aGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pgo+PiBleHRlcm4gc2l6ZV90IHN0cnhmcm0g KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAo+PiAgICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fc3JjLCBzaXplX3QgX19uKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwo+Pgo+PiAj IDE2MiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKPj4gZXh0ZXJuIGludCBzdHJjb2xsX2wg KGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxlX3QgX19sKQo+PiAg ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpOwo+ Pgo+PiBleHRlcm4gc2l6ZV90IHN0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBjb25zdCBjaGFyICpf X3NyYywgc2l6ZV90IF9fbiwKPj4gICAgIF9fbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwg NCkpKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGNoYXIgKnN0cmR1cCAoY29uc3QgY2hhciAqX19z KQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBjaGFyICpzdHJuZHVwIChjb25zdCBjaGFyICpf X3N0cmluZywgc2l6ZV90IF9fbikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwo+PiAjIDIwNiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQK Pj4KPj4gIyAyMzEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0Cj4+IGV4dGVybiBjaGFyICpz dHJjaHIgKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4gIyAyNTggIi91c3IvaW5jbHVkZS9zdHJp bmcuaCIgMyA0Cj4+IGV4dGVybiBjaGFyICpzdHJyY2hyIChjb25zdCBjaGFyICpfX3MsIGludCBf X2MpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 Cj4+Cj4+Cj4+ICMgMjc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAo+Pgo+Pgo+Pgo+PiBl eHRlcm4gc2l6ZV90IHN0cmNzcG4gKGNvbnN0IGNoYXIgKl9fcywgY29uc3QgY2hhciAqX19yZWpl Y3QpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7Cj4+Cj4+Cj4+IGV4dGVybiBzaXplX3Qgc3Ryc3BuIChjb25zdCBjaGFyICpfX3MsIGNvbnN0 IGNoYXIgKl9fYWNjZXB0KQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxLCAyKSkpOwo+PiAjIDMxMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKPj4g ZXh0ZXJuIGNoYXIgKnN0cnBicmsgKGNvbnN0IGNoYXIgKl9fcywgY29uc3QgY2hhciAqX19hY2Nl cHQpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7Cj4+ICMgMzM3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAo+PiBleHRlcm4gY2hhciAq c3Ryc3RyIChjb25zdCBjaGFyICpfX2hheXN0YWNrLCBjb25zdCBjaGFyICpfX25lZWRsZSkKPj4g ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4K Pj4KPj4KPj4KPj4gZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsK Pj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3Qg X19zLAo+PiAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAo+PiAgICAgY2hhciAq Kl9fcmVzdHJpY3QgX19zYXZlX3B0cikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsKPj4K Pj4gZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2RlbGltLAo+PiAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3Nh dmVfcHRyKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpOwo+PiAjIDM5MiAiL3Vzci9pbmNs dWRlL3N0cmluZy5oIiAzIDQKPj4KPj4KPj4gZXh0ZXJuIHNpemVfdCBzdHJsZW4gKGNvbnN0IGNo YXIgKl9fcykKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHNpemVfdCBzdHJubGVuIChjb25zdCBjaGFy ICpfX3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gY2hhciAq c3RyZXJyb3IgKGludCBfX2Vycm51bSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4KPj4gIyA0MjIgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0Cj4+IGV4dGVy biBpbnQgc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVm bGVuKSBfX2FzbV9fICgiIiAiX194cGdfc3RyZXJyb3JfciIpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkKPj4KPj4gICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwo+PiAjIDQ0MCAiL3Vzci9pbmNsdWRlL3N0cmlu Zy5oIiAzIDQKPj4gZXh0ZXJuIGNoYXIgKnN0cmVycm9yX2wgKGludCBfX2Vycm51bSwgX19sb2Nh bGVfdCBfX2wpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIGJjb3B5IChjb25zdCB2 b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKQo+PiAgICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxLCAyKSkpOwo+Pgo+Pgo+PiBleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3Qg X19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4KPj4gZXh0ZXJuIGludCBiY21wIChjb25zdCB2 b2lkICpfX3MxLCBjb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQo+PiAgICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+PiAjIDQ4NCAiL3Vzci9p bmNsdWRlL3N0cmluZy5oIiAzIDQKPj4gZXh0ZXJuIGNoYXIgKmluZGV4IChjb25zdCBjaGFyICpf X3MsIGludCBfX2MpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7Cj4+ICMgNTEyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAo+PiBleHRlcm4g Y2hhciAqcmluZGV4IChjb25zdCBjaGFyICpfX3MsIGludCBfX2MpCj4+ICAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVy biBpbnQgZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4gIyA1MjkgIi91c3IvaW5jbHVkZS9z dHJpbmcuaCIgMyA0Cj4+IGV4dGVybiBpbnQgc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqX19zMSwg Y29uc3QgY2hhciAqX19zMikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4gZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAoY29uc3Qg Y2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKPj4gICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4gIyA1NTIgIi91c3Iv aW5jbHVkZS9zdHJpbmcuaCIgMyA0Cj4+IGV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jl c3RyaWN0IF9fc3RyaW5ncCwKPj4gICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxp bSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGNo YXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4gY2hhciAqX19zdHBjcHkgKGNoYXIgKl9fcmVzdHJp Y3QgX19kZXN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQo+PiAgICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyKSkpOwo+PiBleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9f ZGVzdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKPj4gICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSwgMikpKTsKPj4KPj4KPj4KPj4gZXh0ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAqX19yZXN0 cmljdCBfX2Rlc3QsCj4+ICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf X24pCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+IGV4dGVybiBjaGFyICpzdHBuY3B5 IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKPj4gICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fc3JjLCBzaXplX3QgX19uKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+PiAj IDY1OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKPj4KPj4gIyA0NiAibWFjaGluZS5jIiAy Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzIDQKPj4gIyAyOSAiL3Vzci9pbmNsdWRl L3RpbWUuaCIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ICMgMSAiL3Vzci9saWIvZ2Nj L2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0Cj4+ICMgMzgg Ii91c3IvaW5jbHVkZS90aW1lLmgiIDIgMyA0Cj4+Cj4+Cj4+Cj4+ICMgMSAiL3Vzci9pbmNsdWRl L2JpdHMvdGltZS5oIiAxIDMgNAo+PiAjIDQyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAo+ PiAjIDEzMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0Cj4+Cj4+Cj4+IHN0cnVjdCB0bQo+PiB7 Cj4+ICAgaW50IHRtX3NlYzsKPj4gICBpbnQgdG1fbWluOwo+PiAgIGludCB0bV9ob3VyOwo+PiAg IGludCB0bV9tZGF5Owo+PiAgIGludCB0bV9tb247Cj4+ICAgaW50IHRtX3llYXI7Cj4+ICAgaW50 IHRtX3dkYXk7Cj4+ICAgaW50IHRtX3lkYXk7Cj4+ICAgaW50IHRtX2lzZHN0Owo+Pgo+Pgo+PiAg IGxvbmcgaW50IHRtX2dtdG9mZjsKPj4gICBjb25zdCBjaGFyICp0bV96b25lOwo+Pgo+Pgo+Pgo+ Pgo+PiB9Owo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBzdHJ1Y3QgaXRpbWVyc3BlYwo+PiAg IHsKPj4gICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKPj4gICAgIHN0cnVjdCB0aW1l c3BlYyBpdF92YWx1ZTsKPj4gICB9Owo+Pgo+Pgo+PiBzdHJ1Y3Qgc2lnZXZlbnQ7Cj4+ICMgMTg2 ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKPj4KPj4KPj4KPj4gZXh0ZXJuIGNsb2NrX3QgY2xv Y2sgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+ Cj4+IGV4dGVybiB0aW1lX3QgdGltZSAodGltZV90ICpfX3RpbWVyKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4gZG91YmxlIGRpZmZ0aW1l ICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cj4+ Cj4+Cj4+IGV4dGVybiB0aW1lX3QgbWt0aW1lIChzdHJ1Y3QgdG0gKl9fdHApIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBz aXplX3Qgc3RyZnRpbWUgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAo+ PiAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAo+PiAgICBjb25zdCBzdHJ1Y3Qg dG0gKl9fcmVzdHJpY3QgX190cCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKPj4KPj4gIyAyMjMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAo+PiBleHRlcm4gc2l6 ZV90IHN0cmZ0aW1lX2wgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAo+ PiAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCj4+ICAgICAgY29uc3Qgc3Ry dWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCj4+ICAgICAgX19sb2NhbGVfdCBfX2xvYykgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gIyAyMzYgIi91c3IvaW5jbHVk ZS90aW1lLmgiIDMgNAo+Pgo+Pgo+Pgo+PiBleHRlcm4gc3RydWN0IHRtICpnbXRpbWUgKGNvbnN0 IHRpbWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKPj4KPj4KPj4KPj4gZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChjb25zdCB0aW1lX3Qg Kl9fdGltZXIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9yIChjb25zdCB0aW1lX3QgKl9f cmVzdHJpY3QgX190aW1lciwKPj4gICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+PiBleHRl cm4gc3RydWN0IHRtICpsb2NhbHRpbWVfciAoY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGlt ZXIsCj4+ICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGNo YXIgKmFzY3RpbWUgKGNvbnN0IHN0cnVjdCB0bSAqX190cCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4gZXh0ZXJuIGNoYXIgKmN0aW1lIChjb25zdCB0 aW1lX3QgKl9fdGltZXIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBjaGFyICphc2N0aW1lX3IgKGNvbnN0IHN0 cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwLAo+PiAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4g Y2hhciAqY3RpbWVfciAoY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCj4+ICAgICAg ICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwo+PiBl eHRlcm4gaW50IF9fZGF5bGlnaHQ7Cj4+IGV4dGVybiBsb25nIGludCBfX3RpbWV6b25lOwo+Pgo+ Pgo+Pgo+Pgo+PiBleHRlcm4gY2hhciAqdHpuYW1lWzJdOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gdm9p ZCB0enNldCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK Pj4KPj4KPj4KPj4gZXh0ZXJuIGludCBkYXlsaWdodDsKPj4gZXh0ZXJuIGxvbmcgaW50IHRpbWV6 b25lOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHN0aW1lIChjb25zdCB0aW1lX3QgKl9f d2hlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gIyAzMTkg Ii91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAo+PiBleHRlcm4gdGltZV90IHRpbWVnbSAoc3RydWN0 IHRtICpfX3RwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+ Pgo+PiBleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4gaW50IGR5c2l6 ZSAoaW50IF9feWVhcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cj4+ICMgMzM0ICIvdXNyL2luY2x1ZGUvdGltZS5o IiAzIDQKPj4gZXh0ZXJuIGludCBuYW5vc2xlZXAgKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19y ZXF1ZXN0ZWRfdGltZSwKPj4gICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKTsK Pj4KPj4KPj4KPj4gZXh0ZXJuIGludCBjbG9ja19nZXRyZXMgKGNsb2NraWRfdCBfX2Nsb2NrX2lk LCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4gaW50IGNsb2NrX2dldHRpbWUgKGNsb2NraWRfdCBf X2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdHApIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAoY2xv Y2tpZF90IF9fY2xvY2tfaWQsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX190cCkKPj4gICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+ Pgo+PiBleHRlcm4gaW50IGNsb2NrX25hbm9zbGVlcCAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIGlu dCBfX2ZsYWdzLAo+PiAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcSwKPj4gICAg ICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW0pOwo+Pgo+Pgo+PiBleHRlcm4gaW50IGNsb2NrX2dl dGNwdWNsb2NraWQgKHBpZF90IF9fcGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBp bnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwKPj4gICAgIHN0cnVjdCBzaWdl dmVudCAqX19yZXN0cmljdCBfX2V2cCwKPj4gICAgIHRpbWVyX3QgKl9fcmVzdHJpY3QgX190aW1l cmlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBl eHRlcm4gaW50IHRpbWVyX2RlbGV0ZSAodGltZXJfdCBfX3RpbWVyaWQpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdGltZXJfc2V0 dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIGludCBfX2ZsYWdzLAo+PiAgICAgIGNvbnN0IHN0cnVj dCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fdmFsdWUsCj4+ICAgICAgc3RydWN0IGl0aW1lcnNw ZWMgKl9fcmVzdHJpY3QgX19vdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdGltZXJfZ2V0dGltZSAodGltZXJfdCBfX3Rp bWVyaWQsIHN0cnVjdCBpdGltZXJzcGVjICpfX3ZhbHVlKQo+PiAgICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdGltZXJfZ2V0 b3ZlcnJ1biAodGltZXJfdCBfX3RpbWVyaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdGltZXNwZWNfZ2V0IChz dHJ1Y3QgdGltZXNwZWMgKl9fdHMsIGludCBfX2Jhc2UpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp KSk7Cj4+ICMgNDMwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKPj4KPj4gIyA0NyAibWFjaGlu ZS5jIiAyCj4+Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDEgMyA0Cj4+ICMgMTAy ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+Cj4+Cj4+ICMgMSAiL3Vzci9pbmNsdWRl L2JpdHMvc3RhdC5oIiAxIDMgNAo+PiAjIDEwNSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIg MyA0Cj4+ICMgMjA4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+IGV4dGVybiBpbnQg c3RhdCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCj4+ICAgIHN0cnVjdCBzdGF0ICpf X3Jlc3RyaWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4KPj4gZXh0ZXJu IGludCBmc3RhdCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX2J1ZikgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIp KSk7Cj4+ICMgMjM3ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+IGV4dGVybiBpbnQg ZnN0YXRhdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAo+PiAgICAg ICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1ZiwgaW50IF9fZmxhZykKPj4gICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMiwgMykpKTsKPj4gIyAyNjIgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQK Pj4gZXh0ZXJuIGludCBsc3RhdCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCj4+ICAg ICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+ ICMgMjgzICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+IGV4dGVybiBpbnQgY2htb2Qg KGNvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKQo+PiAgICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGxjaG1vZCAoY29uc3QgY2hhciAq X19maWxlLCBfX21vZGVfdCBfX21vZGUpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Cj4+ Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZmNobW9kIChpbnQgX19mZCwgX19tb2RlX3QgX19tb2RlKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+ PiBleHRlcm4gaW50IGZjaG1vZGF0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19maWxlLCBfX21v ZGVfdCBfX21vZGUsCj4+ICAgICAgICBpbnQgX19mbGFnKQo+PiAgICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgy KSkpIDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIF9fbW9kZV90IHVtYXNrIChfX21vZGVf dCBfX21hc2spIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ICMg MzIwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+IGV4dGVybiBpbnQgbWtkaXIgKGNv bnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKQo+PiAgICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IG1rZGlyYXQgKGludCBfX2ZkLCBjb25z dCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikp KTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBta25vZCAoY29uc3QgY2hhciAqX19w YXRoLCBfX21vZGVfdCBfX21vZGUsIF9fZGV2X3QgX19kZXYpCj4+ICAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgbWtub2RhdCAoaW50IF9fZmQsIGNv bnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAo+PiAgICAgICBfX2Rldl90IF9fZGV2 KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMikpKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBta2ZpZm8g KGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKQo+PiAgICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IG1rZmlmb2F0IChpbnQgX19mZCwg Y29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpCj4+ICAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDIpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdXRpbWVuc2F0IChpbnQgX19mZCwg Y29uc3QgY2hhciAqX19wYXRoLAo+PiAgICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyBfX3Rp bWVzWzJdLAo+PiAgICAgICAgIGludCBfX2ZsYWdzKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkp Owo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGZ1dGltZW5zIChpbnQgX19mZCwgY29uc3Qgc3Ry dWN0IHRpbWVzcGVjIF9fdGltZXNbMl0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7Cj4+ICMgMzk4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+IGV4dGVy biBpbnQgX19meHN0YXQgKGludCBfX3ZlciwgaW50IF9fZmlsZGVzLCBzdHJ1Y3Qgc3RhdCAqX19z dGF0X2J1ZikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKTsKPj4gZXh0ZXJuIGludCBfX3hzdGF0 IChpbnQgX192ZXIsIGNvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCj4+ICAgICAgIHN0cnVjdCBzdGF0 ICpfX3N0YXRfYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsKPj4gZXh0ZXJuIGludCBfX2x4c3Rh dCAoaW50IF9fdmVyLCBjb25zdCBjaGFyICpfX2ZpbGVuYW1lLAo+PiAgICAgICAgc3RydWN0IHN0 YXQgKl9fc3RhdF9idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpOwo+PiBleHRlcm4gaW50IF9fZnhz dGF0YXQgKGludCBfX3ZlciwgaW50IF9fZmlsZGVzLCBjb25zdCBjaGFyICpfX2ZpbGVuYW1lLAo+ PiAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZiwgaW50IF9fZmxhZykKPj4gICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMywgNCkpKTsKPj4gIyA0NDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAz IDQKPj4gZXh0ZXJuIGludCBfX3hta25vZCAoaW50IF9fdmVyLCBjb25zdCBjaGFyICpfX3BhdGgs IF9fbW9kZV90IF9fbW9kZSwKPj4gICAgICAgIF9fZGV2X3QgKl9fZGV2KSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MiwgNCkpKTsKPj4KPj4gZXh0ZXJuIGludCBfX3hta25vZGF0IChpbnQgX192ZXIsIGludCBfX2Zk LCBjb25zdCBjaGFyICpfX3BhdGgsCj4+ICAgICAgICAgIF9fbW9kZV90IF9fbW9kZSwgX19kZXZf dCAqX19kZXYpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDUpKSk7Cj4+ICMgNTMzICIvdXNyL2lu Y2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cj4+Cj4+ICMgNDkgIm1hY2hpbmUuYyIgMgo+Pgo+PiAjIDEg ImdwX2NvbmZpZy5oIiAxCj4+ICMgMzI3ICJncF9jb25maWcuaCIKPj4gIyAxICJhcmNoX2RlcC5o IiAxCj4+ICMgMzI4ICJncF9jb25maWcuaCIgMgo+PiAjIDEgInBsX2xvbmcuaCIgMQo+PiAjIDQx ICJwbF9sb25nLmgiCj4+ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4x L2luY2x1ZGUvc3RkaW50LmgiIDEgMyA0Cj4+ICMgOSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0 LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkaW50LmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9z dGRpbnQuaCIgMSAzIDQKPj4gIyAyNiAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzIDQKPj4gIyAx ICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMgNAo+PiAjIDI3ICIvdXNyL2luY2x1ZGUv c3RkaW50LmgiIDIgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAz IDQKPj4gIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAyIDMgNAo+PiAjIDQ4ICIvdXNyL2lu Y2x1ZGUvc3RkaW50LmgiIDMgNAo+PiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKPj4g dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdWludDE2X3Q7Cj4+Cj4+IHR5cGVkZWYgdW5zaWdu ZWQgaW50IHVpbnQzMl90Owo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBfX2V4dGVuc2lvbl9fCj4+IHR5cGVk ZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50NjRfdDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4g dHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7Cj4+IHR5cGVkZWYgc2hvcnQgaW50IGlu dF9sZWFzdDE2X3Q7Cj4+IHR5cGVkZWYgaW50IGludF9sZWFzdDMyX3Q7Cj4+Cj4+Cj4+Cj4+IF9f ZXh0ZW5zaW9uX18KPj4gdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9sZWFzdDY0X3Q7Cj4+Cj4+ Cj4+Cj4+IHR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50X2xlYXN0OF90Owo+PiB0eXBlZGVmIHVu c2lnbmVkIHNob3J0IGludCB1aW50X2xlYXN0MTZfdDsKPj4gdHlwZWRlZiB1bnNpZ25lZCBpbnQg dWludF9sZWFzdDMyX3Q7Cj4+Cj4+Cj4+Cj4+IF9fZXh0ZW5zaW9uX18KPj4gdHlwZWRlZiB1bnNp Z25lZCBsb25nIGxvbmcgaW50IHVpbnRfbGVhc3Q2NF90Owo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB0 eXBlZGVmIHNpZ25lZCBjaGFyIGludF9mYXN0OF90Owo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVm IGludCBpbnRfZmFzdDE2X3Q7Cj4+IHR5cGVkZWYgaW50IGludF9mYXN0MzJfdDsKPj4gX19leHRl bnNpb25fXwo+PiB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50X2Zhc3Q2NF90Owo+Pgo+Pgo+Pgo+ PiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9mYXN0OF90Owo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB0 eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3QxNl90Owo+PiB0eXBlZGVmIHVuc2lnbmVkIGlu dCB1aW50X2Zhc3QzMl90Owo+PiBfX2V4dGVuc2lvbl9fCj4+IHR5cGVkZWYgdW5zaWduZWQgbG9u ZyBsb25nIGludCB1aW50X2Zhc3Q2NF90Owo+PiAjIDEyNSAiL3Vzci9pbmNsdWRlL3N0ZGludC5o IiAzIDQKPj4gdHlwZWRlZiBpbnQgaW50cHRyX3Q7Cj4+Cj4+Cj4+IHR5cGVkZWYgdW5zaWduZWQg aW50IHVpbnRwdHJfdDsKPj4gIyAxMzcgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMyA0Cj4+IF9f ZXh0ZW5zaW9uX18KPj4gdHlwZWRlZiBsb25nIGxvbmcgaW50IGludG1heF90Owo+PiBfX2V4dGVu c2lvbl9fCj4+IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50bWF4X3Q7Cj4+ICMg MTAgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGludC5o IiAyIDMgNAo+PiAjIDQyICJwbF9sb25nLmgiIDIKPj4KPj4gIyAxICJncF9jb25maWcuaCIgMQo+ PiAjIDQ0ICJwbF9sb25nLmgiIDIKPj4KPj4KPj4KPj4KPj4gIyA0NyAicGxfbG9uZy5oIgo+PiB0 eXBlZGVmIGludHB0cl90IFBsTG9uZzsKPj4gdHlwZWRlZiB1aW50cHRyX3QgUGxVTG9uZzsKPj4K Pj4KPj4KPj4gIyAxICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMSAzIDQKPj4gIyAzNCAiL3Vz ci9pbmNsdWRlL2ludHR5cGVzLmgiIDMgNAo+Pgo+PiAjIDM0ICIvdXNyL2luY2x1ZGUvaW50dHlw ZXMuaCIgMyA0Cj4+IHR5cGVkZWYgbG9uZyBpbnQgX19nd2NoYXJfdDsKPj4gIyAyNjYgIi91c3Iv aW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKPj4KPj4gIyAyODAgIi91c3IvaW5jbHVkZS9pbnR0eXBl cy5oIiAzIDQKPj4gdHlwZWRlZiBzdHJ1Y3QKPj4gICB7Cj4+ICAgICBfX2V4dGVuc2lvbl9fIGxv bmcgbG9uZyBpbnQgcXVvdDsKPj4gICAgIF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCByZW07 Cj4+ICAgfSBpbWF4ZGl2X3Q7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnRtYXhfdCBpbWF4 YWJzIChpbnRtYXhfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwo+Pgo+Pgo+PiBleHRlcm4gaW1heGRpdl90 IGltYXhkaXYgKGludG1heF90IF9fbnVtZXIsIGludG1heF90IF9fZGVub20pCj4+ICAgICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwo+Pgo+Pgo+PiBleHRlcm4gaW50bWF4X3Qgc3RydG9pbWF4IChjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fbnB0ciwKPj4gICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs IGludCBfX2Jhc2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ Cj4+Cj4+IGV4dGVybiB1aW50bWF4X3Qgc3RydG91bWF4IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fbnB0ciwKPj4gICAgICAgIGNoYXIgKiogX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4gZXh0 ZXJuIGludG1heF90IHdjc3RvaW1heCAoY29uc3QgX19nd2NoYXJfdCAqX19yZXN0cmljdCBfX25w dHIsCj4+ICAgICAgIF9fZ3djaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl KQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+ Cj4+IGV4dGVybiB1aW50bWF4X3Qgd2NzdG91bWF4IChjb25zdCBfX2d3Y2hhcl90ICpfX3Jlc3Ry aWN0IF9fbnB0ciwKPj4gICAgICAgIF9fZ3djaGFyX3QgKiogX19yZXN0cmljdCBfX2VuZHB0ciwg aW50IF9fYmFzZSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwo+PiAjIDQzMiAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMgNAo+Pgo+PiAjIDUzICJw bF9sb25nLmgiIDIKPj4gIyAzMjkgImdwX2NvbmZpZy5oIiAyCj4+ICMgNTEgIm1hY2hpbmUuYyIg Mgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiAjIDEgIi91c3IvaW5jbHVkZS9wd2QuaCIgMSAzIDQKPj4g IyAyNyAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzIDQKPj4KPj4KPj4KPj4KPj4KPj4gIyAxICIvdXNy L2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQK Pj4gIyAzMyAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAyIDMgNAo+PiAjIDQ5ICIvdXNyL2luY2x1ZGUv cHdkLmgiIDMgNAo+PiBzdHJ1Y3QgcGFzc3dkCj4+IHsKPj4gICBjaGFyICpwd19uYW1lOwo+PiAg IGNoYXIgKnB3X3Bhc3N3ZDsKPj4gICBfX3VpZF90IHB3X3VpZDsKPj4gICBfX2dpZF90IHB3X2dp ZDsKPj4gICBjaGFyICpwd19nZWNvczsKPj4gICBjaGFyICpwd19kaXI7Cj4+ICAgY2hhciAqcHdf c2hlbGw7Cj4+IH07Cj4+ICMgNzIgIi91c3IvaW5jbHVkZS9wd2QuaCIgMyA0Cj4+IGV4dGVybiB2 b2lkIHNldHB3ZW50ICh2b2lkKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHZvaWQgZW5kcHdl bnQgKHZvaWQpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdl bnQgKHZvaWQpOwo+PiAjIDk0ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDMgNAo+PiBleHRlcm4gc3Ry dWN0IHBhc3N3ZCAqZmdldHB3ZW50IChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHB1dHB3 ZW50IChjb25zdCBzdHJ1Y3QgcGFzc3dkICpfX3Jlc3RyaWN0IF9fcCwKPj4gICAgICAgIEZJTEUg Kl9fcmVzdHJpY3QgX19mKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHN0cnVjdCBwYXNz d2QgKmdldHB3dWlkIChfX3VpZF90IF9fdWlkKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHN0 cnVjdCBwYXNzd2QgKmdldHB3bmFtIChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKTsKPj4gIyAxMzkgIi91c3IvaW5jbHVkZS9wd2QuaCIgMyA0Cj4+ IGV4dGVybiBpbnQgZ2V0cHdlbnRfciAoc3RydWN0IHBhc3N3ZCAqX19yZXN0cmljdCBfX3Jlc3Vs dGJ1ZiwKPj4gICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVm bGVuLAo+PiAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICoqX19yZXN0cmljdCBfX3Jlc3VsdCkKPj4g ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCA0KSkpOwo+Pgo+Pgo+ PiBleHRlcm4gaW50IGdldHB3dWlkX3IgKF9fdWlkX3QgX191aWQsCj4+ICAgICAgICAgIHN0cnVj dCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCj4+ICAgICAgICAgIGNoYXIgKl9fcmVz dHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKPj4gICAgICAgICAgc3RydWN0IHBhc3N3 ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpCj4+ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMiwgMywgNSkpKTsKPj4KPj4gZXh0ZXJuIGludCBnZXRwd25hbV9yIChjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4gICAgICAgICAgc3RydWN0IHBhc3N3ZCAqX19yZXN0 cmljdCBfX3Jlc3VsdGJ1ZiwKPj4gICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwg c2l6ZV90IF9fYnVmbGVuLAo+PiAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICoqX19yZXN0cmljdCBf X3Jlc3VsdCkKPj4gICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAz LCA1KSkpOwo+PiAjIDE2NiAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzIDQKPj4gZXh0ZXJuIGludCBm Z2V0cHdlbnRfciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKPj4gICAgc3RydWN0IHBhc3N3 ZCAqX19yZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKPj4gICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZmZl ciwgc2l6ZV90IF9fYnVmbGVuLAo+PiAgICBzdHJ1Y3QgcGFzc3dkICoqX19yZXN0cmljdCBfX3Jl c3VsdCkKPj4gICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzLCA1KSkpOwo+ PiAjIDE4NyAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzIDQKPj4KPj4gIyA1OCAibWFjaGluZS5jIiAy Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMgNAo+PiAjIDI3ICIvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDMgNAo+Pgo+PiAjIDIwNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQK Pj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAzIDQKPj4gIyAyMDYgIi91 c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKPj4KPj4KPj4KPj4gIyAxICIvdXNyL2luY2x1ZGUv Yml0cy9lbnZpcm9ubWVudHMuaCIgMSAzIDQKPj4gIyAyMiAiL3Vzci9pbmNsdWRlL2JpdHMvZW52 aXJvbm1lbnRzLmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEg MyA0Cj4+ICMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAyIDMgNAo+PiAj IDIxMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAo+PiAjIDIyOSAiL3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAzIDQKPj4gIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4x LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKPj4gIyAyMzAgIi91c3IvaW5jbHVkZS91bmlzdGQu aCIgMiAzIDQKPj4gIyAyNTggIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+IHR5cGVkZWYg X191c2Vjb25kc190IHVzZWNvbmRzX3Q7Cj4+ICMgMjc3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDMgNAo+PiB0eXBlZGVmIF9fc29ja2xlbl90IHNvY2tsZW5fdDsKPj4gIyAyOTAgIi91c3IvaW5j bHVkZS91bmlzdGQuaCIgMyA0Cj4+IGV4dGVybiBpbnQgYWNjZXNzIChjb25zdCBjaGFyICpfX25h bWUsIGludCBfX3R5cGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+PiAjIDMwNyAiL3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAzIDQKPj4gZXh0ZXJuIGludCBmYWNjZXNzYXQgKGludCBfX2ZkLCBjb25zdCBj aGFyICpfX2ZpbGUsIGludCBfX3R5cGUsIGludCBfX2ZsYWcpCj4+ICAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDIpKSkgOwo+PiAjIDMzNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKPj4gZXh0ZXJuIF9f b2ZmX3QgbHNlZWsgKGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ICMgMzU2ICIvdXNyL2lu Y2x1ZGUvdW5pc3RkLmgiIDMgNAo+PiBleHRlcm4gaW50IGNsb3NlIChpbnQgX19mZCk7Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1 Ziwgc2l6ZV90IF9fbmJ5dGVzKSA7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBzc2l6ZV90IHdy aXRlIChpbnQgX19mZCwgY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24pIDsKPj4gIyAzNzkg Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+IGV4dGVybiBzc2l6ZV90IHByZWFkIChpbnQg X19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywKPj4gICAgICAgICBfX29mZl90IF9f b2Zmc2V0KSA7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBzc2l6ZV90IHB3cml0ZSAoaW50 IF9fZmQsIGNvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAo+PiAgICAgICAgICBfX29mZl90 IF9fb2Zmc2V0KSA7Cj4+ICMgNDIwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+PiBleHRl cm4gaW50IHBpcGUgKGludCBfX3BpcGVkZXNbMl0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgOwo+PiAjIDQzNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKPj4g ZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gIyA0NDcgIi91c3IvaW5jbHVk ZS91bmlzdGQuaCIgMyA0Cj4+IGV4dGVybiB1bnNpZ25lZCBpbnQgc2xlZXAgKHVuc2lnbmVkIGlu dCBfX3NlY29uZHMpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gX191c2Vjb25kc190 IHVhbGFybSAoX191c2Vjb25kc190IF9fdmFsdWUsIF9fdXNlY29uZHNfdCBfX2ludGVydmFsKQo+ PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdXNsZWVwIChfX3VzZWNvbmRzX3QgX191c2Vjb25kcyk7 Cj4+ICMgNDcyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+PiBleHRlcm4gaW50IHBhdXNl ICh2b2lkKTsKPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBjaG93biAoY29uc3QgY2hhciAqX19maWxl LCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKPj4gICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKSA7Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZmNob3duIChpbnQgX19mZCwgX191aWRfdCBf X293bmVyLCBfX2dpZF90IF9fZ3JvdXApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGxjaG93biAoY29uc3QgY2hhciAq X19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKPj4gICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKSA7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZmNob3duYXQgKGlu dCBfX2ZkLCBjb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwKPj4gICAgICAgIF9f Z2lkX3QgX19ncm91cCwgaW50IF9fZmxhZykKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKSA7Cj4+ Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgY2hkaXIgKGNvbnN0IGNoYXIgKl9fcGF0aCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSkgOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGZjaGRpciAoaW50IF9fZmQpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+PiAjIDUxNCAiL3Vzci9pbmNs dWRlL3VuaXN0ZC5oIiAzIDQKPj4gZXh0ZXJuIGNoYXIgKmdldGN3ZCAoY2hhciAqX19idWYsIHNp emVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+ PiAjIDUyOCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKPj4gZXh0ZXJuIGNoYXIgKmdldHdk IChjaGFyICpfX2J1ZikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgo X19kZXByZWNhdGVkX18pKSA7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZHVwIChpbnQgX19m ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+Cj4+Cj4+IGV4 dGVybiBpbnQgZHVwMiAoaW50IF9fZmQsIGludCBfX2ZkMikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4gIyA1NDYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0 Cj4+IGV4dGVybiBjaGFyICoqX19lbnZpcm9uOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRl cm4gaW50IGV4ZWN2ZSAoY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSwK Pj4gICAgICBjaGFyICpjb25zdCBfX2VudnBbXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7Cj4+Cj4+ Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZmV4ZWN2ZSAoaW50IF9fZmQsIGNoYXIgKmNvbnN0IF9fYXJn dltdLCBjaGFyICpjb25zdCBfX2VudnBbXSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKPj4K Pj4KPj4KPj4KPj4gZXh0ZXJuIGludCBleGVjdiAoY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpj b25zdCBfX2FyZ3ZbXSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4KPj4g ZXh0ZXJuIGludCBleGVjbGUgKGNvbnN0IGNoYXIgKl9fcGF0aCwgY29uc3QgY2hhciAqX19hcmcs IC4uLikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4KPj4gZXh0ZXJuIGlu dCBleGVjbCAoY29uc3QgY2hhciAqX19wYXRoLCBjb25zdCBjaGFyICpfX2FyZywgLi4uKQo+PiAg ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGV4ZWN2cCAo Y29uc3QgY2hhciAqX19maWxlLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSkKPj4gICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSwgMikpKTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBleGVjbHAgKGNvbnN0IGNo YXIgKl9fZmlsZSwgY29uc3QgY2hhciAqX19hcmcsIC4uLikKPj4gICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSwgMikpKTsKPj4gIyA2MDEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+IGV4dGVybiBp bnQgbmljZSAoaW50IF9faW5jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIDsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHZvaWQgX2V4aXQgKGludCBfX3N0YXR1cykgX19h dHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiAjIDEgIi91c3Iv aW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMyA0Cj4+ICMgMjQgIi91c3IvaW5jbHVkZS9iaXRz L2NvbmZuYW1lLmgiIDMgNAo+PiBlbnVtCj4+ICAgewo+PiAgICAgX1BDX0xJTktfTUFYLAo+Pgo+ PiAgICAgX1BDX01BWF9DQU5PTiwKPj4KPj4gICAgIF9QQ19NQVhfSU5QVVQsCj4+Cj4+ICAgICBf UENfTkFNRV9NQVgsCj4+Cj4+ICAgICBfUENfUEFUSF9NQVgsCj4+Cj4+ICAgICBfUENfUElQRV9C VUYsCj4+Cj4+ICAgICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKPj4KPj4gICAgIF9QQ19OT19UUlVO QywKPj4KPj4gICAgIF9QQ19WRElTQUJMRSwKPj4KPj4gICAgIF9QQ19TWU5DX0lPLAo+Pgo+PiAg ICAgX1BDX0FTWU5DX0lPLAo+Pgo+PiAgICAgX1BDX1BSSU9fSU8sCj4+Cj4+ICAgICBfUENfU09D S19NQVhCVUYsCj4+Cj4+ICAgICBfUENfRklMRVNJWkVCSVRTLAo+Pgo+PiAgICAgX1BDX1JFQ19J TkNSX1hGRVJfU0laRSwKPj4KPj4gICAgIF9QQ19SRUNfTUFYX1hGRVJfU0laRSwKPj4KPj4gICAg IF9QQ19SRUNfTUlOX1hGRVJfU0laRSwKPj4KPj4gICAgIF9QQ19SRUNfWEZFUl9BTElHTiwKPj4K Pj4gICAgIF9QQ19BTExPQ19TSVpFX01JTiwKPj4KPj4gICAgIF9QQ19TWU1MSU5LX01BWCwKPj4K Pj4gICAgIF9QQ18yX1NZTUxJTktTCj4+Cj4+ICAgfTsKPj4KPj4KPj4gZW51bQo+PiAgIHsKPj4g ICAgIF9TQ19BUkdfTUFYLAo+Pgo+PiAgICAgX1NDX0NISUxEX01BWCwKPj4KPj4gICAgIF9TQ19D TEtfVENLLAo+Pgo+PiAgICAgX1NDX05HUk9VUFNfTUFYLAo+Pgo+PiAgICAgX1NDX09QRU5fTUFY LAo+Pgo+PiAgICAgX1NDX1NUUkVBTV9NQVgsCj4+Cj4+ICAgICBfU0NfVFpOQU1FX01BWCwKPj4K Pj4gICAgIF9TQ19KT0JfQ09OVFJPTCwKPj4KPj4gICAgIF9TQ19TQVZFRF9JRFMsCj4+Cj4+ICAg ICBfU0NfUkVBTFRJTUVfU0lHTkFMUywKPj4KPj4gICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5H LAo+Pgo+PiAgICAgX1NDX1RJTUVSUywKPj4KPj4gICAgIF9TQ19BU1lOQ0hST05PVVNfSU8sCj4+ Cj4+ICAgICBfU0NfUFJJT1JJVElaRURfSU8sCj4+Cj4+ICAgICBfU0NfU1lOQ0hST05JWkVEX0lP LAo+Pgo+PiAgICAgX1NDX0ZTWU5DLAo+Pgo+PiAgICAgX1NDX01BUFBFRF9GSUxFUywKPj4KPj4g ICAgIF9TQ19NRU1MT0NLLAo+Pgo+PiAgICAgX1NDX01FTUxPQ0tfUkFOR0UsCj4+Cj4+ICAgICBf U0NfTUVNT1JZX1BST1RFQ1RJT04sCj4+Cj4+ICAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAo+Pgo+ PiAgICAgX1NDX1NFTUFQSE9SRVMsCj4+Cj4+ICAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RT LAo+Pgo+PiAgICAgX1NDX0FJT19MSVNUSU9fTUFYLAo+Pgo+PiAgICAgX1NDX0FJT19NQVgsCj4+ Cj4+ICAgICBfU0NfQUlPX1BSSU9fREVMVEFfTUFYLAo+Pgo+PiAgICAgX1NDX0RFTEFZVElNRVJf TUFYLAo+Pgo+PiAgICAgX1NDX01RX09QRU5fTUFYLAo+Pgo+PiAgICAgX1NDX01RX1BSSU9fTUFY LAo+Pgo+PiAgICAgX1NDX1ZFUlNJT04sCj4+Cj4+ICAgICBfU0NfUEFHRVNJWkUsCj4+Cj4+Cj4+ ICAgICBfU0NfUlRTSUdfTUFYLAo+Pgo+PiAgICAgX1NDX1NFTV9OU0VNU19NQVgsCj4+Cj4+ICAg ICBfU0NfU0VNX1ZBTFVFX01BWCwKPj4KPj4gICAgIF9TQ19TSUdRVUVVRV9NQVgsCj4+Cj4+ICAg ICBfU0NfVElNRVJfTUFYLAo+Pgo+Pgo+Pgo+Pgo+PiAgICAgX1NDX0JDX0JBU0VfTUFYLAo+Pgo+ PiAgICAgX1NDX0JDX0RJTV9NQVgsCj4+Cj4+ICAgICBfU0NfQkNfU0NBTEVfTUFYLAo+Pgo+PiAg ICAgX1NDX0JDX1NUUklOR19NQVgsCj4+Cj4+ICAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKPj4K Pj4gICAgIF9TQ19FUVVJVl9DTEFTU19NQVgsCj4+Cj4+ICAgICBfU0NfRVhQUl9ORVNUX01BWCwK Pj4KPj4gICAgIF9TQ19MSU5FX01BWCwKPj4KPj4gICAgIF9TQ19SRV9EVVBfTUFYLAo+Pgo+PiAg ICAgX1NDX0NIQVJDTEFTU19OQU1FX01BWCwKPj4KPj4KPj4gICAgIF9TQ18yX1ZFUlNJT04sCj4+ Cj4+ICAgICBfU0NfMl9DX0JJTkQsCj4+Cj4+ICAgICBfU0NfMl9DX0RFViwKPj4KPj4gICAgIF9T Q18yX0ZPUlRfREVWLAo+Pgo+PiAgICAgX1NDXzJfRk9SVF9SVU4sCj4+Cj4+ICAgICBfU0NfMl9T V19ERVYsCj4+Cj4+ICAgICBfU0NfMl9MT0NBTEVERUYsCj4+Cj4+Cj4+ICAgICBfU0NfUElJLAo+ Pgo+PiAgICAgX1NDX1BJSV9YVEksCj4+Cj4+ICAgICBfU0NfUElJX1NPQ0tFVCwKPj4KPj4gICAg IF9TQ19QSUlfSU5URVJORVQsCj4+Cj4+ICAgICBfU0NfUElJX09TSSwKPj4KPj4gICAgIF9TQ19Q T0xMLAo+Pgo+PiAgICAgX1NDX1NFTEVDVCwKPj4KPj4gICAgIF9TQ19VSU9fTUFYSU9WLAo+Pgo+ PiAgICAgX1NDX0lPVl9NQVggPSBfU0NfVUlPX01BWElPViwKPj4KPj4gICAgIF9TQ19QSUlfSU5U RVJORVRfU1RSRUFNLAo+Pgo+PiAgICAgX1NDX1BJSV9JTlRFUk5FVF9ER1JBTSwKPj4KPj4gICAg IF9TQ19QSUlfT1NJX0NPVFMsCj4+Cj4+ICAgICBfU0NfUElJX09TSV9DTFRTLAo+Pgo+PiAgICAg X1NDX1BJSV9PU0lfTSwKPj4KPj4gICAgIF9TQ19UX0lPVl9NQVgsCj4+Cj4+Cj4+Cj4+ICAgICBf U0NfVEhSRUFEUywKPj4KPj4gICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCj4+Cj4+ICAg ICBfU0NfR0VUR1JfUl9TSVpFX01BWCwKPj4KPj4gICAgIF9TQ19HRVRQV19SX1NJWkVfTUFYLAo+ Pgo+PiAgICAgX1NDX0xPR0lOX05BTUVfTUFYLAo+Pgo+PiAgICAgX1NDX1RUWV9OQU1FX01BWCwK Pj4KPj4gICAgIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TLAo+Pgo+PiAgICAgX1ND X1RIUkVBRF9LRVlTX01BWCwKPj4KPj4gICAgIF9TQ19USFJFQURfU1RBQ0tfTUlOLAo+Pgo+PiAg ICAgX1NDX1RIUkVBRF9USFJFQURTX01BWCwKPj4KPj4gICAgIF9TQ19USFJFQURfQVRUUl9TVEFD S0FERFIsCj4+Cj4+ICAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFLAo+Pgo+PiAgICAgX1ND X1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HLAo+Pgo+PiAgICAgX1NDX1RIUkVBRF9QUklPX0lO SEVSSVQsCj4+Cj4+ICAgICBfU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCwKPj4KPj4gICAgIF9TQ19U SFJFQURfUFJPQ0VTU19TSEFSRUQsCj4+Cj4+Cj4+ICAgICBfU0NfTlBST0NFU1NPUlNfQ09ORiwK Pj4KPj4gICAgIF9TQ19OUFJPQ0VTU09SU19PTkxOLAo+Pgo+PiAgICAgX1NDX1BIWVNfUEFHRVMs Cj4+Cj4+ICAgICBfU0NfQVZQSFlTX1BBR0VTLAo+Pgo+PiAgICAgX1NDX0FURVhJVF9NQVgsCj4+ Cj4+ICAgICBfU0NfUEFTU19NQVgsCj4+Cj4+Cj4+ICAgICBfU0NfWE9QRU5fVkVSU0lPTiwKPj4K Pj4gICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKPj4KPj4gICAgIF9TQ19YT1BFTl9VTklYLAo+ Pgo+PiAgICAgX1NDX1hPUEVOX0NSWVBULAo+Pgo+PiAgICAgX1NDX1hPUEVOX0VOSF9JMThOLAo+ Pgo+PiAgICAgX1NDX1hPUEVOX1NITSwKPj4KPj4KPj4gICAgIF9TQ18yX0NIQVJfVEVSTSwKPj4K Pj4gICAgIF9TQ18yX0NfVkVSU0lPTiwKPj4KPj4gICAgIF9TQ18yX1VQRSwKPj4KPj4KPj4gICAg IF9TQ19YT1BFTl9YUEcyLAo+Pgo+PiAgICAgX1NDX1hPUEVOX1hQRzMsCj4+Cj4+ICAgICBfU0Nf WE9QRU5fWFBHNCwKPj4KPj4KPj4gICAgIF9TQ19DSEFSX0JJVCwKPj4KPj4gICAgIF9TQ19DSEFS X01BWCwKPj4KPj4gICAgIF9TQ19DSEFSX01JTiwKPj4KPj4gICAgIF9TQ19JTlRfTUFYLAo+Pgo+ PiAgICAgX1NDX0lOVF9NSU4sCj4+Cj4+ICAgICBfU0NfTE9OR19CSVQsCj4+Cj4+ICAgICBfU0Nf V09SRF9CSVQsCj4+Cj4+ICAgICBfU0NfTUJfTEVOX01BWCwKPj4KPj4gICAgIF9TQ19OWkVSTywK Pj4KPj4gICAgIF9TQ19TU0laRV9NQVgsCj4+Cj4+ICAgICBfU0NfU0NIQVJfTUFYLAo+Pgo+PiAg ICAgX1NDX1NDSEFSX01JTiwKPj4KPj4gICAgIF9TQ19TSFJUX01BWCwKPj4KPj4gICAgIF9TQ19T SFJUX01JTiwKPj4KPj4gICAgIF9TQ19VQ0hBUl9NQVgsCj4+Cj4+ICAgICBfU0NfVUlOVF9NQVgs Cj4+Cj4+ICAgICBfU0NfVUxPTkdfTUFYLAo+Pgo+PiAgICAgX1NDX1VTSFJUX01BWCwKPj4KPj4K Pj4gICAgIF9TQ19OTF9BUkdNQVgsCj4+Cj4+ICAgICBfU0NfTkxfTEFOR01BWCwKPj4KPj4gICAg IF9TQ19OTF9NU0dNQVgsCj4+Cj4+ICAgICBfU0NfTkxfTk1BWCwKPj4KPj4gICAgIF9TQ19OTF9T RVRNQVgsCj4+Cj4+ICAgICBfU0NfTkxfVEVYVE1BWCwKPj4KPj4KPj4gICAgIF9TQ19YQlM1X0lM UDMyX09GRjMyLAo+Pgo+PiAgICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAo+Pgo+PiAgICAgX1ND X1hCUzVfTFA2NF9PRkY2NCwKPj4KPj4gICAgIF9TQ19YQlM1X0xQQklHX09GRkJJRywKPj4KPj4K Pj4gICAgIF9TQ19YT1BFTl9MRUdBQ1ksCj4+Cj4+ICAgICBfU0NfWE9QRU5fUkVBTFRJTUUsCj4+ Cj4+ICAgICBfU0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUywKPj4KPj4KPj4gICAgIF9TQ19BRFZJ U09SWV9JTkZPLAo+Pgo+PiAgICAgX1NDX0JBUlJJRVJTLAo+Pgo+PiAgICAgX1NDX0JBU0UsCj4+ Cj4+ICAgICBfU0NfQ19MQU5HX1NVUFBPUlQsCj4+Cj4+ICAgICBfU0NfQ19MQU5HX1NVUFBPUlRf UiwKPj4KPj4gICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCj4+Cj4+ICAgICBfU0NfQ1BVVElNRSwK Pj4KPj4gICAgIF9TQ19USFJFQURfQ1BVVElNRSwKPj4KPj4gICAgIF9TQ19ERVZJQ0VfSU8sCj4+ Cj4+ICAgICBfU0NfREVWSUNFX1NQRUNJRklDLAo+Pgo+PiAgICAgX1NDX0RFVklDRV9TUEVDSUZJ Q19SLAo+Pgo+PiAgICAgX1NDX0ZEX01HTVQsCj4+Cj4+ICAgICBfU0NfRklGTywKPj4KPj4gICAg IF9TQ19QSVBFLAo+Pgo+PiAgICAgX1NDX0ZJTEVfQVRUUklCVVRFUywKPj4KPj4gICAgIF9TQ19G SUxFX0xPQ0tJTkcsCj4+Cj4+ICAgICBfU0NfRklMRV9TWVNURU0sCj4+Cj4+ICAgICBfU0NfTU9O T1RPTklDX0NMT0NLLAo+Pgo+PiAgICAgX1NDX01VTFRJX1BST0NFU1MsCj4+Cj4+ICAgICBfU0Nf U0lOR0xFX1BST0NFU1MsCj4+Cj4+ICAgICBfU0NfTkVUV09SS0lORywKPj4KPj4gICAgIF9TQ19S RUFERVJfV1JJVEVSX0xPQ0tTLAo+Pgo+PiAgICAgX1NDX1NQSU5fTE9DS1MsCj4+Cj4+ICAgICBf U0NfUkVHRVhQLAo+Pgo+PiAgICAgX1NDX1JFR0VYX1ZFUlNJT04sCj4+Cj4+ICAgICBfU0NfU0hF TEwsCj4+Cj4+ICAgICBfU0NfU0lHTkFMUywKPj4KPj4gICAgIF9TQ19TUEFXTiwKPj4KPj4gICAg IF9TQ19TUE9SQURJQ19TRVJWRVIsCj4+Cj4+ICAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZF UiwKPj4KPj4gICAgIF9TQ19TWVNURU1fREFUQUJBU0UsCj4+Cj4+ICAgICBfU0NfU1lTVEVNX0RB VEFCQVNFX1IsCj4+Cj4+ICAgICBfU0NfVElNRU9VVFMsCj4+Cj4+ICAgICBfU0NfVFlQRURfTUVN T1JZX09CSkVDVFMsCj4+Cj4+ICAgICBfU0NfVVNFUl9HUk9VUFMsCj4+Cj4+ICAgICBfU0NfVVNF Ul9HUk9VUFNfUiwKPj4KPj4gICAgIF9TQ18yX1BCUywKPj4KPj4gICAgIF9TQ18yX1BCU19BQ0NP VU5USU5HLAo+Pgo+PiAgICAgX1NDXzJfUEJTX0xPQ0FURSwKPj4KPj4gICAgIF9TQ18yX1BCU19N RVNTQUdFLAo+Pgo+PiAgICAgX1NDXzJfUEJTX1RSQUNLLAo+Pgo+PiAgICAgX1NDX1NZTUxPT1Bf TUFYLAo+Pgo+PiAgICAgX1NDX1NUUkVBTVMsCj4+Cj4+ICAgICBfU0NfMl9QQlNfQ0hFQ0tQT0lO VCwKPj4KPj4KPj4gICAgIF9TQ19WNl9JTFAzMl9PRkYzMiwKPj4KPj4gICAgIF9TQ19WNl9JTFAz Ml9PRkZCSUcsCj4+Cj4+ICAgICBfU0NfVjZfTFA2NF9PRkY2NCwKPj4KPj4gICAgIF9TQ19WNl9M UEJJR19PRkZCSUcsCj4+Cj4+Cj4+ICAgICBfU0NfSE9TVF9OQU1FX01BWCwKPj4KPj4gICAgIF9T Q19UUkFDRSwKPj4KPj4gICAgIF9TQ19UUkFDRV9FVkVOVF9GSUxURVIsCj4+Cj4+ICAgICBfU0Nf VFJBQ0VfSU5IRVJJVCwKPj4KPj4gICAgIF9TQ19UUkFDRV9MT0csCj4+Cj4+Cj4+ICAgICBfU0Nf TEVWRUwxX0lDQUNIRV9TSVpFLAo+Pgo+PiAgICAgX1NDX0xFVkVMMV9JQ0FDSEVfQVNTT0MsCj4+ Cj4+ICAgICBfU0NfTEVWRUwxX0lDQUNIRV9MSU5FU0laRSwKPj4KPj4gICAgIF9TQ19MRVZFTDFf RENBQ0hFX1NJWkUsCj4+Cj4+ICAgICBfU0NfTEVWRUwxX0RDQUNIRV9BU1NPQywKPj4KPj4gICAg IF9TQ19MRVZFTDFfRENBQ0hFX0xJTkVTSVpFLAo+Pgo+PiAgICAgX1NDX0xFVkVMMl9DQUNIRV9T SVpFLAo+Pgo+PiAgICAgX1NDX0xFVkVMMl9DQUNIRV9BU1NPQywKPj4KPj4gICAgIF9TQ19MRVZF TDJfQ0FDSEVfTElORVNJWkUsCj4+Cj4+ICAgICBfU0NfTEVWRUwzX0NBQ0hFX1NJWkUsCj4+Cj4+ ICAgICBfU0NfTEVWRUwzX0NBQ0hFX0FTU09DLAo+Pgo+PiAgICAgX1NDX0xFVkVMM19DQUNIRV9M SU5FU0laRSwKPj4KPj4gICAgIF9TQ19MRVZFTDRfQ0FDSEVfU0laRSwKPj4KPj4gICAgIF9TQ19M RVZFTDRfQ0FDSEVfQVNTT0MsCj4+Cj4+ICAgICBfU0NfTEVWRUw0X0NBQ0hFX0xJTkVTSVpFLAo+ Pgo+Pgo+Pgo+PiAgICAgX1NDX0lQVjYgPSBfU0NfTEVWRUwxX0lDQUNIRV9TSVpFICsgNTAsCj4+ Cj4+ICAgICBfU0NfUkFXX1NPQ0tFVFMsCj4+Cj4+Cj4+ICAgICBfU0NfVjdfSUxQMzJfT0ZGMzIs Cj4+Cj4+ICAgICBfU0NfVjdfSUxQMzJfT0ZGQklHLAo+Pgo+PiAgICAgX1NDX1Y3X0xQNjRfT0ZG NjQsCj4+Cj4+ICAgICBfU0NfVjdfTFBCSUdfT0ZGQklHLAo+Pgo+Pgo+PiAgICAgX1NDX1NTX1JF UExfTUFYLAo+Pgo+Pgo+PiAgICAgX1NDX1RSQUNFX0VWRU5UX05BTUVfTUFYLAo+Pgo+PiAgICAg X1NDX1RSQUNFX05BTUVfTUFYLAo+Pgo+PiAgICAgX1NDX1RSQUNFX1NZU19NQVgsCj4+Cj4+ICAg ICBfU0NfVFJBQ0VfVVNFUl9FVkVOVF9NQVgsCj4+Cj4+Cj4+ICAgICBfU0NfWE9QRU5fU1RSRUFN UywKPj4KPj4KPj4gICAgIF9TQ19USFJFQURfUk9CVVNUX1BSSU9fSU5IRVJJVCwKPj4KPj4gICAg IF9TQ19USFJFQURfUk9CVVNUX1BSSU9fUFJPVEVDVAo+Pgo+PiAgIH07Cj4+Cj4+Cj4+IGVudW0K Pj4gICB7Cj4+ICAgICBfQ1NfUEFUSCwKPj4KPj4KPj4gICAgIF9DU19WNl9XSURUSF9SRVNUUklD VEVEX0VOVlMsCj4+Cj4+Cj4+Cj4+ICAgICBfQ1NfR05VX0xJQkNfVkVSU0lPTiwKPj4KPj4gICAg IF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OLAo+Pgo+Pgo+PiAgICAgX0NTX1Y1X1dJRFRIX1JF U1RSSUNURURfRU5WUywKPj4KPj4KPj4KPj4gICAgIF9DU19WN19XSURUSF9SRVNUUklDVEVEX0VO VlMsCj4+Cj4+Cj4+Cj4+ICAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCj4+Cj4+ICAgICBfQ1Nf TEZTX0xERkxBR1MsCj4+Cj4+ICAgICBfQ1NfTEZTX0xJQlMsCj4+Cj4+ICAgICBfQ1NfTEZTX0xJ TlRGTEFHUywKPj4KPj4gICAgIF9DU19MRlM2NF9DRkxBR1MsCj4+Cj4+ICAgICBfQ1NfTEZTNjRf TERGTEFHUywKPj4KPj4gICAgIF9DU19MRlM2NF9MSUJTLAo+Pgo+PiAgICAgX0NTX0xGUzY0X0xJ TlRGTEFHUywKPj4KPj4KPj4gICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0NGTEFHUyA9IDExMDAs Cj4+Cj4+ICAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTLAo+Pgo+PiAgICAgX0NTX1hC UzVfSUxQMzJfT0ZGMzJfTElCUywKPj4KPj4gICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJTlRG TEFHUywKPj4KPj4gICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsCj4+Cj4+ICAgICBf Q1NfWEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUywKPj4KPj4gICAgIF9DU19YQlM1X0lMUDMyX09G RkJJR19MSUJTLAo+Pgo+PiAgICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKPj4K Pj4gICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfQ0ZMQUdTLAo+Pgo+PiAgICAgX0NTX1hCUzVfTFA2 NF9PRkY2NF9MREZMQUdTLAo+Pgo+PiAgICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTLAo+Pgo+ PiAgICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MsCj4+Cj4+ICAgICBfQ1NfWEJTNV9M UEJJR19PRkZCSUdfQ0ZMQUdTLAo+Pgo+PiAgICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxB R1MsCj4+Cj4+ICAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKPj4KPj4gICAgIF9DU19Y QlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MsCj4+Cj4+Cj4+ICAgICBfQ1NfUE9TSVhfVjZfSUxQ MzJfT0ZGMzJfQ0ZMQUdTLAo+Pgo+PiAgICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xERkxB R1MsCj4+Cj4+ICAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElCUywKPj4KPj4gICAgIF9D U19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MSU5URkxBR1MsCj4+Cj4+ICAgICBfQ1NfUE9TSVhfVjZf SUxQMzJfT0ZGQklHX0NGTEFHUywKPj4KPj4gICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdf TERGTEFHUywKPj4KPj4gICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElCUywKPj4KPj4g ICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAo+Pgo+PiAgICAgX0NTX1BP U0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAo+Pgo+PiAgICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZG NjRfTERGTEFHUywKPj4KPj4gICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJQlMsCj4+Cj4+ ICAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSU5URkxBR1MsCj4+Cj4+ICAgICBfQ1NfUE9T SVhfVjZfTFBCSUdfT0ZGQklHX0NGTEFHUywKPj4KPj4gICAgIF9DU19QT1NJWF9WNl9MUEJJR19P RkZCSUdfTERGTEFHUywKPj4KPj4gICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElCUywK Pj4KPj4gICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElOVEZMQUdTLAo+Pgo+Pgo+PiAg ICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0NGTEFHUywKPj4KPj4gICAgIF9DU19QT1NJWF9W N19JTFAzMl9PRkYzMl9MREZMQUdTLAo+Pgo+PiAgICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMy X0xJQlMsCj4+Cj4+ICAgICBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGMzJfTElOVEZMQUdTLAo+Pgo+ PiAgICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19DRkxBR1MsCj4+Cj4+ICAgICBfQ1NfUE9T SVhfVjdfSUxQMzJfT0ZGQklHX0xERkxBR1MsCj4+Cj4+ICAgICBfQ1NfUE9TSVhfVjdfSUxQMzJf T0ZGQklHX0xJQlMsCj4+Cj4+ICAgICBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklHX0xJTlRGTEFH UywKPj4KPj4gICAgIF9DU19QT1NJWF9WN19MUDY0X09GRjY0X0NGTEFHUywKPj4KPj4gICAgIF9D U19QT1NJWF9WN19MUDY0X09GRjY0X0xERkxBR1MsCj4+Cj4+ICAgICBfQ1NfUE9TSVhfVjdfTFA2 NF9PRkY2NF9MSUJTLAo+Pgo+PiAgICAgX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRfTElOVEZMQUdT LAo+Pgo+PiAgICAgX0NTX1BPU0lYX1Y3X0xQQklHX09GRkJJR19DRkxBR1MsCj4+Cj4+ICAgICBf Q1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xERkxBR1MsCj4+Cj4+ICAgICBfQ1NfUE9TSVhfVjdf TFBCSUdfT0ZGQklHX0xJQlMsCj4+Cj4+ICAgICBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xJ TlRGTEFHUywKPj4KPj4KPj4gICAgIF9DU19WNl9FTlYsCj4+Cj4+ICAgICBfQ1NfVjdfRU5WCj4+ Cj4+ICAgfTsKPj4gIyA2MTMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKPj4KPj4KPj4g ZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mIChjb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUp Cj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Cj4+Cj4+IGV4dGVybiBsb25nIGludCBmcGF0 aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4gbG9uZyBpbnQgc3lzY29uZiAoaW50IF9fbmFt ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4g ZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19uYW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9f bGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+ Pgo+PiBleHRlcm4gX19waWRfdCBnZXRwaWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiBfX3BpZF90IGdldHBwaWQgKHZvaWQp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVy biBfX3BpZF90IGdldHBncnAgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBfX3Bp ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4gZXh0ZXJu IF9fcGlkX3QgZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBzZXRwZ2lk IChfX3BpZF90IF9fcGlkLCBfX3BpZF90IF9fcGdpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4gIyA2NjMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+ IGV4dGVybiBpbnQgc2V0cGdycCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIF9fcGlkX3Qgc2V0c2lkICh2 b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+ PiBleHRlcm4gX19waWRfdCBnZXRzaWQgKF9fcGlkX3QgX19waWQpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBfX3VpZF90IGdldHVp ZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4K Pj4gZXh0ZXJuIF9fdWlkX3QgZ2V0ZXVpZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4gZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4g X19naWRfdCBnZXRlZ2lkICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwg X19naWRfdCBfX2xpc3RbXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSA7Cj4+ICMgNzAzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+PiBleHRlcm4gaW50IHNl dHVpZCAoX191aWRfdCBfX3VpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSA7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgc2V0cmV1aWQgKF9fdWlkX3QgX19ydWlk LCBfX3VpZF90IF9fZXVpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSA7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgc2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ Cj4+IGV4dGVybiBpbnQgc2V0Z2lkIChfX2dpZF90IF9fZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIDsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBzZXRyZWdp ZCAoX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIDsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBzZXRlZ2lkIChf X2dpZF90IF9fZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK Pj4gIyA3NTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+IGV4dGVybiBfX3BpZF90IGZv cmsgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+ Pgo+Pgo+PiBleHRlcm4gX19waWRfdCB2Zm9yayAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGNoYXIgKnR0eW5h bWUgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+ Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHR0eW5hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBz aXplX3QgX19idWZsZW4pCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSkgOwo+Pgo+Pgo+Pgo+PiBl eHRlcm4gaW50IGlzYXR0eSAoaW50IF9fZmQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdHR5c2xvdCAodm9pZCkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4g ZXh0ZXJuIGludCBsaW5rIChjb25zdCBjaGFyICpfX2Zyb20sIGNvbnN0IGNoYXIgKl9fdG8pCj4+ ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSkgOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGxp bmthdCAoaW50IF9fZnJvbWZkLCBjb25zdCBjaGFyICpfX2Zyb20sIGludCBfX3RvZmQsCj4+ICAg ICAgY29uc3QgY2hhciAqX190bywgaW50IF9fZmxhZ3MpCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIs IDQpKSkgOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHN5bWxpbmsgKGNvbnN0IGNoYXIgKl9f ZnJvbSwgY29uc3QgY2hhciAqX190bykKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKSA7Cj4+ Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBzc2l6ZV90IHJlYWRsaW5rIChjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fcGF0aCwKPj4gICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikK Pj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKSA7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQg c3ltbGlua2F0IChjb25zdCBjaGFyICpfX2Zyb20sIGludCBfX3RvZmQsCj4+ICAgICAgICAgY29u c3QgY2hhciAqX190bykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSkgOwo+Pgo+Pgo+PiBleHRlcm4gc3Np emVfdCByZWFkbGlua2F0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgs Cj4+ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikKPj4gICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMiwgMykpKSA7Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdW5saW5rIChjb25z dCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50 IHVubGlua2F0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX19mbGFnKQo+PiAg ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgyKSkpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHJtZGlyIChjb25z dCBjaGFyICpfX3BhdGgpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gX19w aWRfdCB0Y2dldHBncnAgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlk X3QgX19wZ3JwX2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+ Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpOwo+Pgo+Pgo+ Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGdldGxvZ2luX3IgKGNoYXIgKl9fbmFtZSwgc2l6 ZV90IF9fbmFtZV9sZW4pIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4K Pj4KPj4KPj4gZXh0ZXJuIGludCBzZXRsb2dpbiAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKPj4gIyA4NzQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+ICMgMSAi L3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMgNAo+PiAjIDU3ICIvdXNyL2luY2x1ZGUvZ2V0b3B0 LmgiIDMgNAo+PiBleHRlcm4gY2hhciAqb3B0YXJnOwo+PiAjIDcxICIvdXNyL2luY2x1ZGUvZ2V0 b3B0LmgiIDMgNAo+PiBleHRlcm4gaW50IG9wdGluZDsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGlu dCBvcHRlcnI7Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgb3B0b3B0Owo+PiAjIDE1MCAiL3Vzci9p bmNsdWRlL2dldG9wdC5oIiAzIDQKPj4gZXh0ZXJuIGludCBnZXRvcHQgKGludCBfX19hcmdjLCBj aGFyICpjb25zdCAqX19fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMpCj4+ICAgICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiAjIDg3NSAiL3Vzci9p bmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50 IGdldGhvc3RuYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp KSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgc2V0aG9zdG5hbWUgKGNvbnN0IGNo YXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4K Pj4KPj4KPj4gZXh0ZXJuIGludCBzZXRob3N0aWQgKGxvbmcgaW50IF9faWQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4g aW50IGdldGRvbWFpbm5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKQo+PiAgICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpIDsKPj4gZXh0ZXJuIGludCBzZXRkb21haW5uYW1lIChjb25zdCBjaGFy ICpfX25hbWUsIHNpemVfdCBfX2xlbikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgdmhhbmd1cCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4gZXh0ZXJuIGludCByZXZva2UgKGNvbnN0 IGNoYXIgKl9fZmlsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+ PiBleHRlcm4gaW50IHByb2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIs IHNpemVfdCBfX3NpemUsCj4+ICAgICAgc2l6ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19z Y2FsZSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJu IGludCBhY2N0IChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBjaGFyICpnZXR1c2Vyc2hlbGwgKHZv aWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4dGVybiB2 b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4gZXh0ZXJuIHZvaWQgc2V0dXNlcnNoZWxsICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50 IGRhZW1vbiAoaW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSA7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQg Y2hyb290IChjb25zdCBjaGFyICpfX3BhdGgpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4KPj4KPj4K Pj4gZXh0ZXJuIGNoYXIgKmdldHBhc3MgKGNvbnN0IGNoYXIgKl9fcHJvbXB0KSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBp bnQgZnN5bmMgKGludCBfX2ZkKTsKPj4gIyA5NzIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0 Cj4+IGV4dGVybiBsb25nIGludCBnZXRob3N0aWQgKHZvaWQpOwo+Pgo+Pgo+PiBleHRlcm4gdm9p ZCBzeW5jICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+ Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiAjIDk5NiAiL3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAzIDQKPj4gZXh0ZXJuIGludCB0cnVuY2F0ZSAoY29uc3QgY2hhciAqX19maWxl LCBfX29mZl90IF9fbGVuZ3RoKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKPj4gIyAxMDE5 ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+PiBleHRlcm4gaW50IGZ0cnVuY2F0ZSAoaW50 IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgOwo+PiAjIDEwNDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+IGV4dGVy biBpbnQgYnJrICh2b2lkICpfX2FkZHIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gdm9pZCAqc2JyayAoaW50cHRyX3Qg X19kZWx0YSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gIyAx MDYxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAo+PiBleHRlcm4gbG9uZyBpbnQgc3lzY2Fs bCAobG9uZyBpbnQgX19zeXNubywgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwo+PiAjIDExMTUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cj4+IGV4dGVy biBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpOwo+PiAjIDExNTQgIi91c3IvaW5jbHVkZS91 bmlzdGQuaCIgMyA0Cj4+Cj4+ICMgNTkgIm1hY2hpbmUuYyIgMgo+PiAjIDEgIi91c3IvaW5jbHVk ZS9zeXMvcGFyYW0uaCIgMSAzIDQKPj4gIyAyMyAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAz IDQKPj4gIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9z dGRkZWYuaCIgMSAzIDQKPj4gIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAyIDMgNAo+ Pgo+Pgo+PiAjIDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRl L2xpbWl0cy5oIiAxIDMgNAo+PiAjIDM0ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgv Ni4xLjEvaW5jbHVkZS9saW1pdHMuaCIgMyA0Cj4+ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVk aGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+ Cj4+Cj4+ICMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUv bGltaXRzLmgiIDEgMyA0Cj4+ICMgMTY4ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgv Ni4xLjEvaW5jbHVkZS9saW1pdHMuaCIgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5o IiAxIDMgNAo+PiAjIDE0MyAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzIDQKPj4gIyAxICIvdXNy L2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMyA0Cj4+ICMgMTYwICIvdXNyL2luY2x1ZGUv Yml0cy9wb3NpeDFfbGltLmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xp bS5oIiAxIDMgNAo+PiAjIDM4ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMyA0Cj4+ ICMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMgNAo+PiAjIDM5ICIvdXNyL2lu Y2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMiAzIDQKPj4gIyAxNjEgIi91c3IvaW5jbHVkZS9iaXRz L3Bvc2l4MV9saW0uaCIgMiAzIDQKPj4gIyAxNDQgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAz IDQKPj4KPj4KPj4KPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMyA0 Cj4+ICMgMTQ4ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0Cj4+ICMgMTY5ICIvdXNyL2xp Yi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9saW1pdHMuaCIgMiAzIDQKPj4g IyA4ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zeXNsaW1p dHMuaCIgMiAzIDQKPj4gIyAzNSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4x L2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0Cj4+ICMgMjcgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0u aCIgMiAzIDQKPj4KPj4KPj4KPj4KPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wYXJhbS5oIiAx IDMgNAo+PiAjIDI4ICIvdXNyL2luY2x1ZGUvYml0cy9wYXJhbS5oIiAzIDQKPj4gIyAxICIvdXNy L2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMSAzIDQKPj4KPj4KPj4KPj4gIyAxICIvdXNyL2luY2x1 ZGUvYXNtL3BhcmFtLmgiIDEgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3Bh cmFtLmgiIDEgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FzbS9wYXJhbS5oIiAyIDMgNAo+PiAj IDUgIi91c3IvaW5jbHVkZS9saW51eC9wYXJhbS5oIiAyIDMgNAo+PiAjIDI5ICIvdXNyL2luY2x1 ZGUvYml0cy9wYXJhbS5oIiAyIDMgNAo+PiAjIDMyICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgi IDIgMyA0Cj4+ICMgNjAgIm1hY2hpbmUuYyIgMgo+PiAjIDEgIi91c3IvaW5jbHVkZS9zeXMvdGlt ZS5oIiAxIDMgNAo+PiAjIDI3ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0Cj4+ICMgMSAi L3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMgNAo+PiAjIDI4ICIvdXNyL2luY2x1ZGUvc3lz L3RpbWUuaCIgMiAzIDQKPj4gIyAzNyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAo+Pgo+ PiAjIDU1ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0Cj4+IHN0cnVjdCB0aW1lem9uZQo+ PiAgIHsKPj4gICAgIGludCB0el9taW51dGVzd2VzdDsKPj4gICAgIGludCB0el9kc3R0aW1lOwo+ PiAgIH07Cj4+Cj4+IHR5cGVkZWYgc3RydWN0IHRpbWV6b25lICpfX3Jlc3RyaWN0IF9fdGltZXpv bmVfcHRyX3Q7Cj4+ICMgNzEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKPj4gZXh0ZXJu IGludCBnZXR0aW1lb2ZkYXkgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdHYsCj4+ICAg ICBfX3RpbWV6b25lX3B0cl90IF9fdHopIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+Pgo+Pgo+ PiBleHRlcm4gaW50IHNldHRpbWVvZmRheSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fdHYsCj4+ ICAgICBjb25zdCBzdHJ1Y3QgdGltZXpvbmUgKl9fdHopCj4+ICAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBh ZGp0aW1lIChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqX19kZWx0YSwKPj4gICAgICAgc3RydWN0IHRp bWV2YWwgKl9fb2xkZGVsdGEpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+Cj4+Cj4+Cj4+Cj4+IGVudW0gX19pdGltZXJfd2hpY2gKPj4gICB7Cj4+Cj4+ICAgICBJ VElNRVJfUkVBTCA9IDAsCj4+Cj4+Cj4+ICAgICBJVElNRVJfVklSVFVBTCA9IDEsCj4+Cj4+Cj4+ Cj4+ICAgICBJVElNRVJfUFJPRiA9IDIKPj4KPj4gICB9Owo+Pgo+Pgo+Pgo+PiBzdHJ1Y3QgaXRp bWVydmFsCj4+ICAgewo+Pgo+PiAgICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7Cj4+Cj4+ ICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKPj4gICB9Owo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+ PiB0eXBlZGVmIGludCBfX2l0aW1lcl93aGljaF90Owo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50 IGdldGl0aW1lciAoX19pdGltZXJfd2hpY2hfdCBfX3doaWNoLAo+PiAgICAgICAgIHN0cnVjdCBp dGltZXJ2YWwgKl9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgc2V0aXRpbWVyIChfX2l0aW1lcl93aGljaF90 IF9fd2hpY2gsCj4+ICAgICAgICAgY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqX19yZXN0cmljdCBf X25ldywKPj4gICAgICAgICBzdHJ1Y3QgaXRpbWVydmFsICpfX3Jlc3RyaWN0IF9fb2xkKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRl cm4gaW50IHV0aW1lcyAoY29uc3QgY2hhciAqX19maWxlLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCBf X3R2cFsyXSkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKPj4KPj4KPj4KPj4gZXh0ZXJuIGlu dCBsdXRpbWVzIChjb25zdCBjaGFyICpfX2ZpbGUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZw WzJdKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwo+Pgo+Pgo+PiBleHRlcm4gaW50IGZ1dGlt ZXMgKGludCBfX2ZkLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCBfX3R2cFsyXSkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gIyAxODkgIi91c3IvaW5jbHVkZS9zeXMv dGltZS5oIiAzIDQKPj4KPj4gIyA2MSAibWFjaGluZS5jIiAyCj4+ICMgMSAiL3Vzci9pbmNsdWRl L3N5cy90aW1lcy5oIiAxIDMgNAo+PiAjIDMxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDMg NAo+Pgo+Pgo+Pgo+PiBzdHJ1Y3QgdG1zCj4+ICAgewo+PiAgICAgY2xvY2tfdCB0bXNfdXRpbWU7 Cj4+ICAgICBjbG9ja190IHRtc19zdGltZTsKPj4KPj4gICAgIGNsb2NrX3QgdG1zX2N1dGltZTsK Pj4gICAgIGNsb2NrX3QgdG1zX2NzdGltZTsKPj4gICB9Owo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBl eHRlcm4gY2xvY2tfdCB0aW1lcyAoc3RydWN0IHRtcyAqX19idWZmZXIpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+ICMgNjIgIm1hY2hpbmUuYyIgMgo+ PiAjIDEgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzIDQKPj4gIyAyNCAiL3Vzci9p bmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9yZXNv dXJjZS5oIiAxIDMgNAo+PiAjIDMxICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAzIDQK Pj4gZW51bSBfX3JsaW1pdF9yZXNvdXJjZQo+PiB7Cj4+Cj4+ICAgUkxJTUlUX0NQVSA9IDAsCj4+ Cj4+Cj4+Cj4+ICAgUkxJTUlUX0ZTSVpFID0gMSwKPj4KPj4KPj4KPj4gICBSTElNSVRfREFUQSA9 IDIsCj4+Cj4+Cj4+Cj4+ICAgUkxJTUlUX1NUQUNLID0gMywKPj4KPj4KPj4KPj4gICBSTElNSVRf Q09SRSA9IDQsCj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ICAgX19STElNSVRfUlNTID0gNSwKPj4KPj4K Pj4KPj4gICBSTElNSVRfTk9GSUxFID0gNywKPj4gICBfX1JMSU1JVF9PRklMRSA9IFJMSU1JVF9O T0ZJTEUsCj4+Cj4+Cj4+Cj4+Cj4+ICAgUkxJTUlUX0FTID0gOSwKPj4KPj4KPj4KPj4gICBfX1JM SU1JVF9OUFJPQyA9IDYsCj4+Cj4+Cj4+Cj4+ICAgX19STElNSVRfTUVNTE9DSyA9IDgsCj4+Cj4+ Cj4+Cj4+ICAgX19STElNSVRfTE9DS1MgPSAxMCwKPj4KPj4KPj4KPj4gICBfX1JMSU1JVF9TSUdQ RU5ESU5HID0gMTEsCj4+Cj4+Cj4+Cj4+ICAgX19STElNSVRfTVNHUVVFVUUgPSAxMiwKPj4KPj4K Pj4KPj4KPj4KPj4gICBfX1JMSU1JVF9OSUNFID0gMTMsCj4+Cj4+Cj4+Cj4+Cj4+ICAgX19STElN SVRfUlRQUklPID0gMTQsCj4+Cj4+Cj4+Cj4+Cj4+Cj4+ICAgX19STElNSVRfUlRUSU1FID0gMTUs Cj4+Cj4+Cj4+ICAgX19STElNSVRfTkxJTUlUUyA9IDE2LAo+PiAgIF9fUkxJTV9OTElNSVRTID0g X19STElNSVRfTkxJTUlUUwo+Pgo+Pgo+PiB9Owo+PiAjIDEzMSAiL3Vzci9pbmNsdWRlL2JpdHMv cmVzb3VyY2UuaCIgMyA0Cj4+IHR5cGVkZWYgX19ybGltX3QgcmxpbV90Owo+Pgo+Pgo+Pgo+Pgo+ Pgo+Pgo+Pgo+PiBzdHJ1Y3QgcmxpbWl0Cj4+ICAgewo+Pgo+PiAgICAgcmxpbV90IHJsaW1fY3Vy Owo+Pgo+PiAgICAgcmxpbV90IHJsaW1fbWF4Owo+PiAgIH07Cj4+ICMgMTU4ICIvdXNyL2luY2x1 ZGUvYml0cy9yZXNvdXJjZS5oIiAzIDQKPj4gZW51bSBfX3J1c2FnZV93aG8KPj4gewo+Pgo+PiAg IFJVU0FHRV9TRUxGID0gMCwKPj4KPj4KPj4KPj4gICBSVVNBR0VfQ0hJTERSRU4gPSAtMQo+PiAj IDE3NiAiL3Vzci9pbmNsdWRlL2JpdHMvcmVzb3VyY2UuaCIgMyA0Cj4+IH07Cj4+Cj4+Cj4+ICMg MSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMgNAo+PiAjIDE4MCAiL3Vzci9pbmNsdWRl L2JpdHMvcmVzb3VyY2UuaCIgMiAzIDQKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4gc3RydWN0IHJ1 c2FnZQo+PiAgIHsKPj4KPj4gICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwo+Pgo+PiAgICAg c3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7Cj4+Cj4+ICAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCj4+ ICAgICAgIHsKPj4gIGxvbmcgaW50IHJ1X21heHJzczsKPj4gIF9fc3lzY2FsbF9zbG9uZ190IF9f cnVfbWF4cnNzX3dvcmQ7Cj4+ICAgICAgIH07Cj4+Cj4+Cj4+Cj4+ICAgICBfX2V4dGVuc2lvbl9f IHVuaW9uCj4+ICAgICAgIHsKPj4gIGxvbmcgaW50IHJ1X2l4cnNzOwo+PiAgX19zeXNjYWxsX3Ns b25nX3QgX19ydV9peHJzc193b3JkOwo+PiAgICAgICB9Owo+Pgo+PiAgICAgX19leHRlbnNpb25f XyB1bmlvbgo+PiAgICAgICB7Cj4+ICBsb25nIGludCBydV9pZHJzczsKPj4gIF9fc3lzY2FsbF9z bG9uZ190IF9fcnVfaWRyc3Nfd29yZDsKPj4gICAgICAgfTsKPj4KPj4gICAgIF9fZXh0ZW5zaW9u X18gdW5pb24KPj4gICAgICAgewo+PiAgbG9uZyBpbnQgcnVfaXNyc3M7Cj4+ICAgX19zeXNjYWxs X3Nsb25nX3QgX19ydV9pc3Jzc193b3JkOwo+PiAgICAgICB9Owo+Pgo+Pgo+PiAgICAgX19leHRl bnNpb25fXyB1bmlvbgo+PiAgICAgICB7Cj4+ICBsb25nIGludCBydV9taW5mbHQ7Cj4+ICBfX3N5 c2NhbGxfc2xvbmdfdCBfX3J1X21pbmZsdF93b3JkOwo+PiAgICAgICB9Owo+Pgo+PiAgICAgX19l eHRlbnNpb25fXyB1bmlvbgo+PiAgICAgICB7Cj4+ICBsb25nIGludCBydV9tYWpmbHQ7Cj4+ICBf X3N5c2NhbGxfc2xvbmdfdCBfX3J1X21hamZsdF93b3JkOwo+PiAgICAgICB9Owo+Pgo+PiAgICAg X19leHRlbnNpb25fXyB1bmlvbgo+PiAgICAgICB7Cj4+ICBsb25nIGludCBydV9uc3dhcDsKPj4g IF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbnN3YXBfd29yZDsKPj4gICAgICAgfTsKPj4KPj4KPj4g ICAgIF9fZXh0ZW5zaW9uX18gdW5pb24KPj4gICAgICAgewo+PiAgbG9uZyBpbnQgcnVfaW5ibG9j azsKPj4gIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfaW5ibG9ja193b3JkOwo+PiAgICAgICB9Owo+ Pgo+PiAgICAgX19leHRlbnNpb25fXyB1bmlvbgo+PiAgICAgICB7Cj4+ICBsb25nIGludCBydV9v dWJsb2NrOwo+PiAgX19zeXNjYWxsX3Nsb25nX3QgX19ydV9vdWJsb2NrX3dvcmQ7Cj4+ICAgICAg IH07Cj4+Cj4+ICAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCj4+ICAgICAgIHsKPj4gIGxvbmcgaW50 IHJ1X21zZ3NuZDsKPj4gIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbXNnc25kX3dvcmQ7Cj4+ICAg ICAgIH07Cj4+Cj4+ICAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCj4+ICAgICAgIHsKPj4gIGxvbmcg aW50IHJ1X21zZ3JjdjsKPj4gIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbXNncmN2X3dvcmQ7Cj4+ ICAgICAgIH07Cj4+Cj4+ICAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCj4+ICAgICAgIHsKPj4gIGxv bmcgaW50IHJ1X25zaWduYWxzOwo+PiAgX19zeXNjYWxsX3Nsb25nX3QgX19ydV9uc2lnbmFsc193 b3JkOwo+PiAgICAgICB9Owo+Pgo+Pgo+Pgo+PiAgICAgX19leHRlbnNpb25fXyB1bmlvbgo+PiAg ICAgICB7Cj4+ICBsb25nIGludCBydV9udmNzdzsKPj4gIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVf bnZjc3dfd29yZDsKPj4gICAgICAgfTsKPj4KPj4KPj4gICAgIF9fZXh0ZW5zaW9uX18gdW5pb24K Pj4gICAgICAgewo+PiAgbG9uZyBpbnQgcnVfbml2Y3N3Owo+PiAgX19zeXNjYWxsX3Nsb25nX3Qg X19ydV9uaXZjc3dfd29yZDsKPj4gICAgICAgfTsKPj4gICB9Owo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+ Pgo+PiBlbnVtIF9fcHJpb3JpdHlfd2hpY2gKPj4gewo+PiAgIFBSSU9fUFJPQ0VTUyA9IDAsCj4+ Cj4+ICAgUFJJT19QR1JQID0gMSwKPj4KPj4gICBQUklPX1VTRVIgPSAyCj4+Cj4+IH07Cj4+Cj4+ Cj4+Cj4+ICMgMzI4ICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAzIDQKPj4KPj4gIyAy NSAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAyIDMgNAo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+ Pgo+PiAjIDQyICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNAo+PiB0eXBlZGVmIGlu dCBfX3JsaW1pdF9yZXNvdXJjZV90Owo+PiB0eXBlZGVmIGludCBfX3J1c2FnZV93aG9fdDsKPj4g dHlwZWRlZiBpbnQgX19wcmlvcml0eV93aGljaF90Owo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4g aW50IGdldHJsaW1pdCAoX19ybGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAo+PiAgICAgICAg IHN0cnVjdCBybGltaXQgKl9fcmxpbWl0cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKPj4gIyA2OSAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKPj4g ZXh0ZXJuIGludCBzZXRybGltaXQgKF9fcmxpbWl0X3Jlc291cmNlX3QgX19yZXNvdXJjZSwKPj4g ICAgICAgICBjb25zdCBzdHJ1Y3QgcmxpbWl0ICpfX3JsaW1pdHMpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ICMgODcgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3Vy Y2UuaCIgMyA0Cj4+IGV4dGVybiBpbnQgZ2V0cnVzYWdlIChfX3J1c2FnZV93aG9fdCBfX3dobywg c3RydWN0IHJ1c2FnZSAqX191c2FnZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBnZXRwcmlvcml0eSAoX19wcmlv cml0eV93aGljaF90IF9fd2hpY2gsIGlkX3QgX193aG8pIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgc2V0cHJpb3JpdHkgKF9f cHJpb3JpdHlfd2hpY2hfdCBfX3doaWNoLCBpZF90IF9fd2hvLCBpbnQgX19wcmlvKQo+PiAgICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+ICMgNjMg Im1hY2hpbmUuYyIgMgo+PiAjIDcxICJtYWNoaW5lLmMiCj4+ICMgMSAiZW5naW5lX3BsLmgiIDEK Pj4gIyA0MCAiZW5naW5lX3BsLmgiCj4+ICMgMSAicGxfcGFyYW1zLmgiIDEKPj4gIyA0MSAiZW5n aW5lX3BsLmgiIDIKPj4gIyAxICJoYXNoX2ZjdC5oIiAxCj4+ICMgNTMgImhhc2hfZmN0LmgiCj4+ Cj4+ICMgNTMgImhhc2hfZmN0LmgiCj4+IHR5cGVkZWYgc3RydWN0Cj4+IHsKPj4gICBpbnQgbGVu Owo+PiAgIHVpbnQzMl90IGhhc2g7Cj4+IH0gSGFzaEluY3JJbmZvOwo+Pgo+Pgo+Pgo+Pgo+Pgo+ Pgo+Pgo+PiB1aW50MzJfdCBQbF9IYXNoX0J1ZmZlcihjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVu KTsKPj4KPj4gdm9pZCBQbF9IYXNoX0luY3JfSW5pdChIYXNoSW5jckluZm8gKmhpKTsKPj4KPj4g dm9pZCBQbF9IYXNoX0luY3JfQnVmZmVyKEhhc2hJbmNySW5mbyAqaGksIGNvbnN0IHZvaWQgKmRh dGEsIGludCBsZW4pOwo+Pgo+PiB2b2lkIFBsX0hhc2hfSW5jcl9JbnQzMihIYXNoSW5jckluZm8g KmhpLCB1aW50MzJfdCB4KTsKPj4KPj4gdm9pZCBQbF9IYXNoX0luY3JfSW50NjQoSGFzaEluY3JJ bmZvICpoaSwgdWludDY0X3QgeCk7Cj4+Cj4+IHZvaWQgUGxfSGFzaF9JbmNyX0RvdWJsZShIYXNo SW5jckluZm8gKmhpLCBkb3VibGUgeCk7Cj4+Cj4+IHVpbnQzMl90IFBsX0hhc2hfSW5jcl9UZXJt KEhhc2hJbmNySW5mbyAqaGkpOwo+PiAjIDQyICJlbmdpbmVfcGwuaCIgMgo+PiAjIDEgImhhc2gu aCIgMQo+PiAjIDQ4ICJoYXNoLmgiCj4+IHR5cGVkZWYgc3RydWN0Cj4+IHsKPj4gICBjaGFyICpl bmR0Owo+PiAgIGNoYXIgKmN1cl90Owo+PiAgIGNoYXIgKmN1cl9wOwo+PiB9Cj4+IEhhc2hTY2Fu Owo+PiAjIDY3ICJoYXNoLmgiCj4+IGNoYXIgKlBsX0hhc2hfQWxsb2NfVGFibGUoaW50IHRibF9z aXplLCBpbnQgZWxlbV9zaXplKTsKPj4KPj4gdm9pZCBQbF9IYXNoX0ZyZWVfVGFibGUoY2hhciAq dGJsKTsKPj4KPj4gY2hhciAqUGxfSGFzaF9SZWFsbG9jX1RhYmxlKGNoYXIgKnRibCwgaW50IG5l d190Ymxfc2l6ZSk7Cj4+Cj4+IHZvaWQgUGxfSGFzaF9EZWxldGVfQWxsKGNoYXIgKnRibCk7Cj4+ Cj4+IGNoYXIgKlBsX0hhc2hfSW5zZXJ0KGNoYXIgKnRibCwgY2hhciAqZWxlbSwgaW50IHJlcGxh Y2UpOwo+Pgo+PiBjaGFyICpQbF9IYXNoX0ZpbmQoY2hhciAqdGJsLCBQbExvbmcga2V5KTsKPj4K Pj4gY2hhciAqUGxfSGFzaF9EZWxldGUoY2hhciAqdGJsLCBQbExvbmcga2V5KTsKPj4KPj4gY2hh ciAqUGxfSGFzaF9GaXJzdChjaGFyICp0YmwsIEhhc2hTY2FuICpzY2FuKTsKPj4KPj4gY2hhciAq UGxfSGFzaF9OZXh0KEhhc2hTY2FuICpzY2FuKTsKPj4KPj4gaW50IFBsX0hhc2hfVGFibGVfU2l6 ZShjaGFyICp0YmwpOwo+Pgo+PiBpbnQgUGxfSGFzaF9OYl9FbGVtZW50cyhjaGFyICp0YmwpOwo+ PiAjIDQzICJlbmdpbmVfcGwuaCIgMgo+PiAjIDEgImJvb2wuaCIgMQo+PiAjIDY1ICJib29sLmgi Cj4+IHR5cGVkZWYgaW50IEJvb2w7Cj4+ICMgNDQgImVuZ2luZV9wbC5oIiAyCj4+ICMgMSAid2Ft X3JlZ3MuaCIgMQo+PiAjIDQ1ICJlbmdpbmVfcGwuaCIgMgo+PiAjIDEgIndhbV9hcmNoaS5oIiAx Cj4+ICMgNDQgIndhbV9hcmNoaS5oIgo+PiB0eXBlZGVmIGludHB0cl90IFdhbVdvcmQ7Cj4+Cj4+ IHR5cGVkZWYgdm9pZCAoKkNvZGVQdHIpICgpOwo+Pgo+PiB0eXBlZGVmIENvZGVQdHIgV2FtQ29u dDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gdHlwZWRlZiBXYW1Xb3JkICpXYW1Xb3JkUDsKPj4KPj4K Pj4KPj4KPj4KPj4KPj4gcmVnaXN0ZXIgV2FtV29yZFAgVFIgYXNtICgiZWJ4Iik7Cj4+ICMgOTYg IndhbV9hcmNoaS5oIgo+PiBleHRlcm4gV2FtV29yZCBwbF9yZWdfYmFua1tdOwo+PiBleHRlcm4g V2FtV29yZCBwbF9idWZmX3NpZ25hbF9yZWdbXTsKPj4KPj4gZXh0ZXJuIGNoYXIgKnBsX3JlZ190 YmxbXTsKPj4gIyAyNzAgIndhbV9hcmNoaS5oIgo+PiB0eXBlZGVmIGVudW0KPj4gewo+PiAgIExP TkdfSU5ULAo+PiAgIFNIT1JUX1VOUywKPj4gICBBRERSRVNTCj4+IH1UeXBUYWc7Cj4+Cj4+IHR5 cGVkZWYgc3RydWN0Cj4+IHsKPj4gICBjaGFyICpuYW1lOwo+PiAgIFR5cFRhZyB0eXBlOwo+PiAg IGludCB2YWx1ZTsKPj4gICBQbExvbmcgdGFnX21hc2s7Cj4+IH1JbmZUYWc7Cj4+ICMgMzAxICJ3 YW1fYXJjaGkuaCIKPj4gZXh0ZXJuIEluZlRhZyBwbF90YWdfdGJsW107Cj4+ICMgMzI4ICJ3YW1f YXJjaGkuaCIKPj4gIyAxICJ3YW1fc3RhY2tzLmgiIDEKPj4gIyAyNyAid2FtX3N0YWNrcy5oIgo+ PiB0eXBlZGVmIHN0cnVjdAo+PiB7Cj4+ICAgY2hhciAqbmFtZTsKPj4gICBjaGFyICpkZXNjOwo+ PiAgIGNoYXIgKmVudl92YXJfbmFtZTsKPj4gICBQbExvbmcgKnBfZGVmX3NpemU7Cj4+ICAgaW50 IGRlZmF1bHRfc2l6ZTsKPj4gICBpbnQgc2l6ZTsKPj4gICBXYW1Xb3JkICpzdGFjazsKPj4gfUlu ZlN0YWNrOwo+PiAjIDU4ICJ3YW1fc3RhY2tzLmgiCj4+IGV4dGVybiBQbExvbmcgcGxfZGVmX3Ry YWlsX3NpemU7Cj4+IGV4dGVybiBQbExvbmcgcGxfZGVmX2NzdHJfc2l6ZTsKPj4gZXh0ZXJuIFBs TG9uZyBwbF9kZWZfZ2xvYmFsX3NpemU7Cj4+IGV4dGVybiBQbExvbmcgcGxfZGVmX2xvY2FsX3Np emU7Cj4+IGV4dGVybiBQbExvbmcgcGxfZml4ZWRfc2l6ZXM7Cj4+Cj4+Cj4+IGV4dGVybiBJbmZT dGFjayBwbF9zdGtfdGJsW107Cj4+ICMgMzI5ICJ3YW1fYXJjaGkuaCIgMgo+PiAjIDQ2ICJlbmdp bmVfcGwuaCIgMgo+PiAjIDEgImVuZ2luZS5oIiAxCj4+ICMgODcgImVuZ2luZS5oIgo+PiBleHRl cm4gaW50IHBsX29zX2FyZ2M7Cj4+IGV4dGVybiBjaGFyICoqcGxfb3NfYXJndjsKPj4KPj4gZXh0 ZXJuIGNoYXIgKnBsX2hvbWU7Cj4+IGV4dGVybiBpbnQgcGxfZGV2ZWxfbW9kZTsKPj4KPj4gZXh0 ZXJuIGNoYXIgcGxfZ2xvYl9idWZmW107Cj4+Cj4+IGV4dGVybiBQbExvbmcgKnBsX2Jhc2VfZmw7 Cj4+IGV4dGVybiBkb3VibGUgKnBsX2Jhc2VfZmQ7Cj4+Cj4+IGV4dGVybiBpbnQgcGxfbGVfbW9k ZTsKPj4gIyAxMDggImVuZ2luZS5oIgo+PiBpbnQgUGxfU3RhcnRfUHJvbG9nKGludCBhcmdjLCBj aGFyICphcmd2W10pOwo+Pgo+PiB2b2lkIFBsX1N0b3BfUHJvbG9nKHZvaWQpOwo+Pgo+PiB2b2lk IFBsX1Jlc2V0X1Byb2xvZyh2b2lkKTsKPj4KPj4gdm9pZCBQbF9SZXNldF9Qcm9sb2dfSW5fU2ln bmFsKHZvaWQpOwo+Pgo+PiB2b2lkIFBsX1NldF9IZWFwX0FjdHVhbF9TdGFydChXYW1Xb3JkICpo ZWFwX2FjdHVhbF9zdGFydCk7Cj4+Cj4+Cj4+Cj4+IHZvaWQgUGxfRXhlY3V0ZV9EaXJlY3RpdmUo aW50IHBsX2ZpbGUsIGludCBwbF9saW5lLCBCb29sIGlzX3N5c3RlbSwKPj4gICAgICBDb2RlUHRy IHByb2MpOwo+Pgo+PiBCb29sIFBsX1RyeV9FeGVjdXRlX1RvcF9MZXZlbCh2b2lkKTsKPj4KPj4g Qm9vbCBQbF9DYWxsX1Byb2xvZyhDb2RlUHRyIGNvZGVwKTsKPj4KPj4gQm9vbCBQbF9DYWxsX1By b2xvZ19OZXh0X1NvbChXYW1Xb3JkICpxdWVyeV9iKTsKPj4KPj4gdm9pZCBQbF9LZWVwX1Jlc3Rf Rm9yX1Byb2xvZyhXYW1Xb3JkICpxdWVyeV9iKTsKPj4KPj4gdm9pZCBQbF9FeGl0X1dpdGhfRXhj ZXB0aW9uKHZvaWQpOwo+Pgo+PiB2b2lkIFBsX0V4ZWN1dGVfQV9Db250aW51YXRpb24oQ29kZVB0 ciBjb2RlcCk7Cj4+ICMgNDcgImVuZ2luZV9wbC5oIiAyCj4+ICMgMSAiYXRvbS5oIiAxCj4+ICMg OTcgImF0b20uaCIKPj4gdHlwZWRlZiBzdHJ1Y3QKPj4gewo+PiAgIHVuc2lnbmVkIGxlbmd0aDox NjsKPj4gICB1bnNpZ25lZCBvcF9tYXNrOjQ7Cj4+ICAgdW5zaWduZWQgdHlwZToyOwo+PiAgIHVu c2lnbmVkIG5lZWRzX3F1b3RlOjE7Cj4+ICAgdW5zaWduZWQgbmVlZHNfc2NhbjoxOwo+PiB9Cj4+ IEF0b21Qcm9wOwo+Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIHN0cnVjdAo+PiB7Cj4+ICAgY2hhciAq bmFtZTsKPj4gICB1bnNpZ25lZCBoYXNoOwo+PiAgIEF0b21Qcm9wIHByb3A7Cj4+ICAgdm9pZCAq aW5mbzsKPj4gfQo+PiBBdG9tSW5mOwo+PiAjIDE1MyAiYXRvbS5oIgo+PiBleHRlcm4gQXRvbUlu ZiAqcGxfYXRvbV90Ymw7Cj4+IGV4dGVybiBpbnQgcGxfbWF4X2F0b207Cj4+IGV4dGVybiBpbnQg cGxfbmJfYXRvbTsKPj4KPj4gZXh0ZXJuIGludCBwbF9hdG9tX3ZvaWQ7Cj4+IGV4dGVybiBpbnQg cGxfYXRvbV9jdXJseV9icmFja2V0czsKPj4KPj4gZXh0ZXJuIGludCBwbF9hdG9tX2ZhbHNlOwo+ PiBleHRlcm4gaW50IHBsX2F0b21fdHJ1ZTsKPj4KPj4gZXh0ZXJuIGludCBwbF9hdG9tX2VuZF9v Zl9maWxlOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gY2hhciBwbF9jaGFyX2NvbnZbXTsKPj4g ZXh0ZXJuIGludCBwbF9jaGFyX3R5cGVbXTsKPj4KPj4gZXh0ZXJuIGNoYXIgcGxfZXNjYXBlX3N5 bWJvbFtdOwo+PiBleHRlcm4gY2hhciBwbF9lc2NhcGVfY2hhcltdOwo+Pgo+Pgo+Pgo+PiBQbExv bmcgcGxfZGVmX21heF9hdG9tOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB2b2lkIFBsX0luaXRf QXRvbSh2b2lkKTsKPj4KPj4gaW50IFBsX0NyZWF0ZV9BbGxvY2F0ZV9BdG9tKGNoYXIgKm5hbWUp Owo+Pgo+PiBpbnQgUGxfQ3JlYXRlX0F0b20oY2hhciAqbmFtZSk7Cj4+Cj4+IFdhbVdvcmQgX19h dHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0NyZWF0ZV9BdG9tX1RhZ2dlZChjaGFyICpuYW1l KTsKPj4KPj4gaW50IFBsX0ZpbmRfQXRvbShjaGFyICpuYW1lKTsKPj4KPj4gaW50IFBsX0dlbl9O ZXdfQXRvbShjaGFyICpwcmVmaXgpOwo+Pgo+PiBpbnQgUGxfRmluZF9OZXh0X0F0b20oaW50IGxh c3RfYXRvbSk7Cj4+ICMgNDggImVuZ2luZV9wbC5oIiAyCj4+ICMgMSAicHJlZC5oIiAxCj4+ICMg NjIgInByZWQuaCIKPj4gdHlwZWRlZiBzdHJ1Y3QKPj4gewo+PiAgIFBsTG9uZyBmX247Cj4+ICAg aW50IHBsX2ZpbGU7Cj4+ICAgaW50IHBsX2xpbmU7Cj4+ICAgaW50IHByb3A7Cj4+ICAgUGxMb25n ICpjb2RlcDsKPj4gICBQbExvbmcgKmR5bjsKPj4gfQo+PiBQcmVkSW5mOwo+PiAjIDg2ICJwcmVk LmgiCj4+IGV4dGVybiBjaGFyICpwbF9wcmVkX3RibDsKPj4gIyA5NyAicHJlZC5oIgo+PiB2b2lk IFBsX0luaXRfUHJlZCh2b2lkKTsKPj4KPj4gUHJlZEluZiAqIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMykpKSBQbF9DcmVhdGVfUHJlZChpbnQgZnVuYywgaW50IGFyaXR5LCBpbnQgcGxfZmlsZSwg aW50IHBsX2xpbmUsCj4+ICAgICAgICBpbnQgcHJvcCwgUGxMb25nICpjb2RlcCk7Cj4+Cj4+IFBy ZWRJbmYgKiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfTG9va3VwX1ByZWQoaW50IGZ1 bmMsIGludCBhcml0eSk7Cj4+Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBs X0RlbGV0ZV9QcmVkKGludCBmdW5jLCBpbnQgYXJpdHkpOwo+PiAjIDQ5ICJlbmdpbmVfcGwuaCIg Mgo+PiAjIDEgIm1pc2MuaCIgMQo+PiAjIDU3ICJtaXNjLmgiCj4+IGNoYXIgKlBsX01hbGxvY19D aGVjayh1bnNpZ25lZCBzaXplLCBjaGFyICpzcmNfZmlsZSwgaW50IHNyY19saW5lKTsKPj4KPj4g Y2hhciAqUGxfQ2FsbG9jX0NoZWNrKHVuc2lnbmVkIG5iLCB1bnNpZ25lZCBzaXplLCBjaGFyICpz cmNfZmlsZSwKPj4gICAgICBpbnQgc3JjX2xpbmUpOwo+Pgo+PiBjaGFyICpQbF9SZWFsbG9jX0No ZWNrKGNoYXIgKnB0ciwgdW5zaWduZWQgc2l6ZSwgY2hhciAqc3JjX2ZpbGUsIGludCBzcmNfbGlu ZSk7Cj4+Cj4+IGNoYXIgKlBsX1N0cmR1cF9DaGVjayhjaGFyICpzdHIsIGNoYXIgKnNyY19maWxl LCBpbnQgc3JjX2xpbmUpOwo+PiAjIDc2ICJtaXNjLmgiCj4+IHZvaWQgUGxfRXh0ZW5kX1RhYmxl X0lmX05lZWRlZChjaGFyICoqaGFzaF90YmwpOwo+Pgo+PiB2b2lkIFBsX0V4dGVuZF9BcnJheShj aGFyICoqcHRibCwgaW50ICpuYl9lbGVtLCBpbnQgZWxlbV9zaXplLCBCb29sIGJ6ZXJvKTsKPj4K Pj4gdm9pZCBQbF9FeGl0X1dpdGhfVmFsdWUoaW50IHJldF92YWwpOwo+Pgo+PiB2b2lkIFBsX0Zh dGFsX0Vycm9yKGNoYXIgKmZvcm1hdCwgLi4uKTsKPj4gIyAxMTQgIm1pc2MuaCIKPj4gdm9pZCAq UGxfRHVtbXlfUHRyKHZvaWQgKnApOwo+PiAjIDUwICJlbmdpbmVfcGwuaCIgMgo+PiAjIDEgIm9w ZXIuaCIgMQo+PiAjIDcyICJvcGVyLmgiCj4+IHR5cGVkZWYgc3RydWN0Cj4+IHsKPj4gICBQbExv bmcgYV90Owo+PiAgIGludCBwcmVjOwo+PiAgIGludCBsZWZ0Owo+PiAgIGludCByaWdodDsKPj4g fQo+PiBPcGVySW5mOwo+PiAjIDk0ICJvcGVyLmgiCj4+IGV4dGVybiBjaGFyICpwbF9vcGVyX3Ri bDsKPj4gIyAxMDMgIm9wZXIuaCIKPj4gdm9pZCBQbF9Jbml0X09wZXIodm9pZCk7Cj4+Cj4+IE9w ZXJJbmYgKlBsX0NyZWF0ZV9PcGVyKGludCBhdG9tX29wLCBpbnQgdHlwZSwgaW50IHByZWMsIGlu dCBsZWZ0LCBpbnQgcmlnaHQpOwo+Pgo+PiBPcGVySW5mICpQbF9Mb29rdXBfT3BlcihpbnQgYXRv bV9vcCwgaW50IHR5cGUpOwo+Pgo+PiBPcGVySW5mICpQbF9Mb29rdXBfT3Blcl9BbnlfVHlwZShp bnQgYXRvbV9vcCk7Cj4+Cj4+IE9wZXJJbmYgKlBsX0RlbGV0ZV9PcGVyKGludCBhdG9tX29wLCBp bnQgdHlwZSk7Cj4+ICMgNTEgImVuZ2luZV9wbC5oIiAyCj4+ICMgMSAibWFjaGluZTEuaCIgMQo+ PiAjIDcwICJtYWNoaW5lMS5oIgo+PiBleHRlcm4gaW50IHBsX21fb3NfdHlwZTsKPj4gZXh0ZXJu IGNoYXIgcGxfbV9hcmNoaXRlY3R1cmVbXTsKPj4gZXh0ZXJuIGNoYXIgcGxfbV9vc192ZXJzaW9u W107Cj4+ICMgODMgIm1hY2hpbmUxLmgiCj4+IHZvaWQgUGxfSW5pdF9NYWNoaW5lMSh2b2lkKTsK Pj4KPj4gY2hhciAqKlBsX01fQ3JlYXRlX1NoZWxsX0NvbW1hbmQoY2hhciAqY21kKTsKPj4KPj4g Y2hhciAqKlBsX01fQ21kX0xpbmVfVG9fQXJndihjaGFyICpjbWQsIGludCAqYXJnYyk7Cj4+Cj4+ IGludCBQbF9NX1NoZWxsKGNoYXIgKmNtZCk7Cj4+Cj4+IGludCBQbF9NX1NwYXduKGNoYXIgKmFy Z1tdKTsKPj4KPj4gaW50IFBsX01fU3Bhd25fUmVkaXJlY3QoY2hhciAqYXJnW10sIGludCBkZXRh Y2gsCj4+ICAgICAgICBGSUxFICoqZl9pbiwgRklMRSAqKmZfb3V0LCBGSUxFICoqZl9lcnIpOwo+ Pgo+PiBpbnQgUGxfTV9HZXRfU3RhdHVzKGludCBwaWQpOwo+Pgo+Pgo+Pgo+PiBjaGFyICpQbF9N X01rdGVtcChjaGFyICp0bXBfdGVtcGxhdGUpOwo+Pgo+PiBjaGFyICpQbF9NX1RlbXBuYW0oY2hh ciAqZGlyLCBjaGFyICpwZngpOwo+PiAjIDUyICJlbmdpbmVfcGwuaCIgMgo+PiAjIDEgIm1hY2hp bmUuaCIgMQo+PiAjIDYxICJtYWNoaW5lLmgiCj4+IHZvaWQgUGxfSW5pdF9NYWNoaW5lKHZvaWQp Owo+Pgo+PiBjaGFyICpQbF9NX1N5c19FcnJfU3RyaW5nKGludCByZXRfdmFsKTsKPj4KPj4gUGxM b25nIFBsX01fVXNlcl9UaW1lKHZvaWQpOwo+Pgo+PiBQbExvbmcgUGxfTV9TeXN0ZW1fVGltZSh2 b2lkKTsKPj4KPj4gUGxMb25nIFBsX01fUmVhbF9UaW1lKHZvaWQpOwo+Pgo+PiB2b2lkIFBsX01f UmFuZG9taXplKHZvaWQpOwo+Pgo+PiB2b2lkIFBsX01fU2V0X1NlZWQoaW50IG4pOwo+Pgo+PiBp bnQgUGxfTV9HZXRfU2VlZCh2b2lkKTsKPj4KPj4gaW50IFBsX01fUmFuZG9tX0ludGVnZXIoaW50 IG4pOwo+Pgo+PiBkb3VibGUgUGxfTV9SYW5kb21fRmxvYXQoZG91YmxlIG4pOwo+Pgo+Pgo+Pgo+ PiBjaGFyICpQbF9NX0hvc3RfTmFtZV9Gcm9tX05hbWUoY2hhciAqaG9zdF9uYW1lKTsKPj4KPj4g Y2hhciAqUGxfTV9Ib3N0X05hbWVfRnJvbV9BZHIoY2hhciAqaG9zdF9hZGRyZXNzKTsKPj4KPj4g Y2hhciAqUGxfTV9HZXRfV29ya2luZ19EaXIodm9pZCk7Cj4+Cj4+IEJvb2wgUGxfTV9TZXRfV29y a2luZ19EaXIoY2hhciAqcGF0aCk7Cj4+Cj4+IGNoYXIgKlBsX01fQWJzb2x1dGVfUGF0aF9OYW1l KGNoYXIgKnNyYyk7Cj4+Cj4+IEJvb2wgUGxfTV9Jc19BYnNvbHV0ZV9GaWxlX05hbWUoY2hhciAq cGF0aCk7Cj4+Cj4+IGNoYXIgKlBsX01fRGVjb21wb3NlX0ZpbGVfTmFtZShjaGFyICpwYXRoLCBC b29sIGRlbF90cmFpbF9zbGFzaGVzLAo+PiAgICAgICAgICAgY2hhciAqKmJhc2UsIGNoYXIgKipz dWZmaXgpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB2b2lkIE1fQ2hlY2tfTWFnaWNfV29yZHMo dm9pZCk7Cj4+ICMgNTMgImVuZ2luZV9wbC5oIiAyCj4+ICMgMSAic3RhY2tzX3NpZ3NlZ3YuaCIg MQo+PiAjIDUwICJzdGFja3Nfc2lnc2Vndi5oIgo+PiB0eXBlZGVmIGludCAoKlNlZ3ZIZGxyKSh2 b2lkICpiYWRfYWRkcik7Cj4+ICMgNjAgInN0YWNrc19zaWdzZWd2LmgiCj4+IHZvaWQgUGxfQWxs b2NhdGVfU3RhY2tzKHZvaWQpOwo+Pgo+PiB2b2lkIFBsX1B1c2hfU0lHU0VHVl9IYW5kbGVyKFNl Z3ZIZGxyIGhhbmRsZXIpOwo+Pgo+PiB2b2lkIFBsX1BvcF9TSUdTRUdWX0hhbmRsZXIodm9pZCk7 Cj4+ICMgNTQgImVuZ2luZV9wbC5oIiAyCj4+ICMgMSAib2JqX2NoYWluLmgiIDEKPj4gIyA1OCAi b2JqX2NoYWluLmgiCj4+IHZvaWQgUGxfRmluZF9MaW5rZWRfT2JqZWN0cyh2b2lkKTsKPj4KPj4g dm9pZCBQbF9OZXdfT2JqZWN0KHZvaWQgKCpmY3Rfb2JqX2luaXQpKCksIHZvaWQgKCpmY3RfZXhl Y19zeXN0ZW0pICgpLCB2b2lkICgqZmN0X2V4ZWNfdXNlcikgKCkpOwo+PiAjIDU1ICJlbmdpbmVf cGwuaCIgMgo+PiAjIDEgIndhbV9pbnN0LmgiIDEKPj4gIyAyNDkgIndhbV9pbnN0LmgiCj4+IHR5 cGVkZWYgc3RydWN0Cj4+IHsKPj4gICBQbExvbmcga2V5Owo+PiAgIENvZGVQdHIgY29kZXA7Cj4+ IH0KPj4gU3d0SW5mOwo+Pgo+PiB0eXBlZGVmIFN3dEluZiAqU3d0VGJsOwo+PiAjIDI2OSAid2Ft X2luc3QuaCIKPj4gV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRl X0Z1bmN0b3JfQXJpdHlfVGFnZ2VkKGNoYXIgKmZ1bmNfc3RyLCBpbnQgYXJpdHkpOwo+Pgo+PiBT d3RUYmwgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0NyZWF0ZV9Td3RfVGFibGUoaW50 IHNpemUpOwo+Pgo+PiB2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9DcmVhdGVf U3d0X0F0bV9FbGVtZW50KFN3dFRibCB0LCBpbnQgc2l6ZSwgaW50IGF0b20sIENvZGVQdHIgY29k ZXApOwo+Pgo+PiB2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9DcmVhdGVfU3d0 X1N0Y19FbGVtZW50KFN3dFRibCB0LCBpbnQgc2l6ZSwgaW50IGZ1bmMsIGludCBhcml0eSwKPj4g ICAgICAgIENvZGVQdHIgY29kZXApOwo+Pgo+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o MykpKSBQbF9HZXRfQXRvbV9UYWdnZWQoV2FtV29yZCB3LCBXYW1Xb3JkIHN0YXJ0X3dvcmQpOwo+ Pgo+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9HZXRfQXRvbShpbnQgYXRv bSwgV2FtV29yZCBzdGFydF93b3JkKTsKPj4KPj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDMpKSkgUGxfR2V0X0ludGVnZXJfVGFnZ2VkKFdhbVdvcmQgdywgV2FtV29yZCBzdGFydF93b3Jk KTsKPj4KPj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2V0X0ludGVnZXIo UGxMb25nIG4sIFdhbVdvcmQgc3RhcnRfd29yZCk7Cj4+Cj4+IEJvb2wgX19hdHRyaWJ1dGVfXygo cmVncGFybSgzKSkpIFBsX0dldF9GbG9hdChkb3VibGUgbiwgV2FtV29yZCBzdGFydF93b3JkKTsK Pj4KPj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2V0X05pbChXYW1Xb3Jk IHN0YXJ0X3dvcmQpOwo+Pgo+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9H ZXRfTGlzdChXYW1Xb3JkIHN0YXJ0X3dvcmQpOwo+Pgo+PiBCb29sIF9fYXR0cmlidXRlX18oKHJl Z3Bhcm0oMykpKSBQbF9HZXRfU3RydWN0dXJlX1RhZ2dlZChXYW1Xb3JkIHcsIFdhbVdvcmQgc3Rh cnRfd29yZCk7Cj4+Cj4+IEJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0dldF9T dHJ1Y3R1cmUoaW50IGZ1bmMsIGludCBhcml0eSwgV2FtV29yZCBzdGFydF93b3JkKTsKPj4KPj4g V2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0X1hfVmFyaWFibGUodm9p ZCk7Cj4+Cj4+IFdhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9ZX1Zh cmlhYmxlKFdhbVdvcmQgKnlfYWRyKTsKPj4KPj4gV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdw YXJtKDMpKSkgUGxfUHV0X1Vuc2FmZV9WYWx1ZShXYW1Xb3JkIHN0YXJ0X3dvcmQpOwo+Pgo+PiBX YW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfQXRvbV9UYWdnZWQoV2Ft V29yZCB3KTsKPj4KPj4gV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0 X0F0b20oaW50IGF0b20pOwo+Pgo+PiBXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp KSBQbF9QdXRfSW50ZWdlcl9UYWdnZWQoV2FtV29yZCB3KTsKPj4KPj4gV2FtV29yZCBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0X0ludGVnZXIoUGxMb25nIG4pOwo+Pgo+PiBXYW1X b3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfRmxvYXQoZG91YmxlIG4pOwo+ Pgo+PiBXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfTmlsKHZvaWQp Owo+Pgo+PiBXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfTGlzdCh2 b2lkKTsKPj4KPj4gV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0X1N0 cnVjdHVyZV9UYWdnZWQoV2FtV29yZCB3KTsKPj4KPj4gV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDMpKSkgUGxfUHV0X1N0cnVjdHVyZShpbnQgZnVuYywgaW50IGFyaXR5KTsKPj4KPj4g V2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfVmFyaWFibGUodm9p ZCk7Cj4+Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5X1ZvaWQo aW50IG4pOwo+Pgo+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9W YWx1ZShXYW1Xb3JkIHN0YXJ0X3dvcmQpOwo+Pgo+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMykpKSBQbF9VbmlmeV9Mb2NhbF9WYWx1ZShXYW1Xb3JkIHN0YXJ0X3dvcmQpOwo+Pgo+PiBC b29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9BdG9tX1RhZ2dlZChXYW1X b3JkIHcpOwo+Pgo+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9B dG9tKGludCBhdG9tKTsKPj4KPj4gQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxf VW5pZnlfSW50ZWdlcl9UYWdnZWQoV2FtV29yZCB3KTsKPj4KPj4gQm9vbCBfX2F0dHJpYnV0ZV9f KChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfSW50ZWdlcihQbExvbmcgbik7Cj4+Cj4+IEJvb2wgX19h dHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5X05pbCh2b2lkKTsKPj4KPj4gQm9vbCBf X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfTGlzdCh2b2lkKTsKPj4KPj4gQm9v bCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfU3RydWN0dXJlX1RhZ2dlZChX YW1Xb3JkIHcpOwo+Pgo+PiBCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Vbmlm eV9TdHJ1Y3R1cmUoaW50IGZ1bmMsIGludCBhcml0eSk7Cj4+Cj4+IFdhbVdvcmQgX19hdHRyaWJ1 dGVfXygocmVncGFybSgzKSkpIFBsX0dsb2JhbGl6ZV9JZl9Jbl9Mb2NhbChXYW1Xb3JkIHN0YXJ0 X3dvcmQpOwo+Pgo+PiB2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9BbGxvY2F0 ZShpbnQgbik7Cj4+Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0RlYWxs b2NhdGUodm9pZCk7Cj4+Cj4+IENvZGVQdHIgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBs X1N3aXRjaF9Pbl9UZXJtKENvZGVQdHIgY192YXIsIENvZGVQdHIgY19hdG0sIENvZGVQdHIgY19p bnQsCj4+ICAgICAgICAgICAgIENvZGVQdHIgY19sc3QsIENvZGVQdHIgY19zdGMpOwo+PiBDb2Rl UHRyIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Td2l0Y2hfT25fVGVybV9WYXJfQXRt KENvZGVQdHIgY192YXIsIENvZGVQdHIgY19hdG0pOwo+PiBDb2RlUHRyIF9fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMykpKSBQbF9Td2l0Y2hfT25fVGVybV9WYXJfU3RjKENvZGVQdHIgY192YXIsIENv ZGVQdHIgY19zdGMpOwo+PiBDb2RlUHRyIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9T d2l0Y2hfT25fVGVybV9WYXJfQXRtX0xzdChDb2RlUHRyIGNfdmFyLCBDb2RlUHRyIGNfYXRtLAo+ PiAgICAgICAgICAgQ29kZVB0ciBjX2xzdCk7Cj4+IENvZGVQdHIgX19hdHRyaWJ1dGVfXygocmVn cGFybSgzKSkpIFBsX1N3aXRjaF9Pbl9UZXJtX1Zhcl9BdG1fU3RjKENvZGVQdHIgY192YXIsIENv ZGVQdHIgY19hdG0sCj4+ICAgICAgICAgICBDb2RlUHRyIGNfc3RjKTsKPj4KPj4gQ29kZVB0ciBf X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfU3dpdGNoX09uX0F0b20oU3d0VGJsIHQsIGlu dCBzaXplKTsKPj4KPj4gUGxMb25nIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Td2l0 Y2hfT25fSW50ZWdlcih2b2lkKTsKPj4KPj4gQ29kZVB0ciBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDMpKSkgUGxfU3dpdGNoX09uX1N0cnVjdHVyZShTd3RUYmwgdCwgaW50IHNpemUpOwo+Pgo+PiBX YW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9HZXRfQ3VycmVudF9DaG9pY2Uo dm9pZCk7Cj4+Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0N1dChXYW1X b3JkIGJfd29yZCk7Cj4+Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1Nv ZnRfQ3V0KFdhbVdvcmQgYl93b3JkKTsKPj4KPj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDMpKSkgUGxfR2xvYmFsX1B1c2hfRmxvYXQoZG91YmxlIG4pOwo+Pgo+PiBkb3VibGUgX19hdHRy aWJ1dGVfXygocmVncGFybSgzKSkpIFBsX09idGFpbl9GbG9hdChXYW1Xb3JkICphZHIpOwo+Pgo+ Pgo+PiB2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9DcmVhdGVfQ2hvaWNlX1Bv aW50KENvZGVQdHIgY29kZXBfYWx0LCBpbnQgYXJpdHkpOwo+PiB2b2lkIF9fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMykpKSBQbF9DcmVhdGVfQ2hvaWNlX1BvaW50MChDb2RlUHRyIGNvZGVwX2FsdCk7 Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0NyZWF0ZV9DaG9pY2VfUG9p bnQxKENvZGVQdHIgY29kZXBfYWx0KTsKPj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp KSkgUGxfQ3JlYXRlX0Nob2ljZV9Qb2ludDIoQ29kZVB0ciBjb2RlcF9hbHQpOwo+PiB2b2lkIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9DcmVhdGVfQ2hvaWNlX1BvaW50MyhDb2RlUHRy IGNvZGVwX2FsdCk7Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0NyZWF0 ZV9DaG9pY2VfUG9pbnQ0KENvZGVQdHIgY29kZXBfYWx0KTsKPj4KPj4KPj4gdm9pZCBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVXBkYXRlX0Nob2ljZV9Qb2ludChDb2RlUHRyIGNvZGVw X2FsdCwgaW50IGFyaXR5KTsKPj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxf VXBkYXRlX0Nob2ljZV9Qb2ludDAoQ29kZVB0ciBjb2RlcF9hbHQpOwo+PiB2b2lkIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VcGRhdGVfQ2hvaWNlX1BvaW50MShDb2RlUHRyIGNvZGVw X2FsdCk7Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VwZGF0ZV9DaG9p Y2VfUG9pbnQyKENvZGVQdHIgY29kZXBfYWx0KTsKPj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdw YXJtKDMpKSkgUGxfVXBkYXRlX0Nob2ljZV9Qb2ludDMoQ29kZVB0ciBjb2RlcF9hbHQpOwo+PiB2 b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VcGRhdGVfQ2hvaWNlX1BvaW50NChD b2RlUHRyIGNvZGVwX2FsdCk7Cj4+Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp IFBsX0RlbGV0ZV9DaG9pY2VfUG9pbnQoaW50IGFyaXR5KTsKPj4gdm9pZCBfX2F0dHJpYnV0ZV9f KChyZWdwYXJtKDMpKSkgUGxfRGVsZXRlX0Nob2ljZV9Qb2ludDAodm9pZCk7Cj4+IHZvaWQgX19h dHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0RlbGV0ZV9DaG9pY2VfUG9pbnQxKHZvaWQpOwo+ PiB2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9EZWxldGVfQ2hvaWNlX1BvaW50 Mih2b2lkKTsKPj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfRGVsZXRlX0No b2ljZV9Qb2ludDModm9pZCk7Cj4+IHZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBs X0RlbGV0ZV9DaG9pY2VfUG9pbnQ0KHZvaWQpOwo+Pgo+Pgo+PiB2b2lkIFBsX0RlZmVhc2libGVf T3BlbigpOwo+PiB2b2lkIFBsX0RlZmVhc2libGVfVW5kbygpOwo+PiB2b2lkIFBsX0RlZmVhc2li bGVfQ2xvc2UoQm9vbCB1bmRvX2JlZm9yZSk7Cj4+Cj4+Cj4+Cj4+IHZvaWQgX19hdHRyaWJ1dGVf XygocmVncGFybSgzKSkpIFBsX1VudHJhaWwoV2FtV29yZCAqbG93X2Fkcik7Cj4+Cj4+IEJvb2wg X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5KFdhbVdvcmQgc3RhcnRfdV93b3Jk LCBXYW1Xb3JkIHN0YXJ0X3Zfd29yZCk7Cj4+Cj4+IEJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFy bSgzKSkpIFBsX1VuaWZ5X09jY3Vyc19DaGVjayhXYW1Xb3JkIHN0YXJ0X3Vfd29yZCwgV2FtV29y ZCBzdGFydF92X3dvcmQpOwo+PiAjIDU2ICJlbmdpbmVfcGwuaCIgMgo+PiAjIDEgImlmX25vX2Zk LmgiIDEKPj4gIyA2NSAiaWZfbm9fZmQuaCIKPj4gZXh0ZXJuIHZvaWQgKCpwbF9mZF9pbml0X3Nv bHZlcikgKCk7Cj4+IGV4dGVybiB2b2lkICgqcGxfZmRfcmVzZXRfc29sdmVyKSAoKTsKPj4gZXh0 ZXJuIEJvb2wgKCpwbF9mZF91bmlmeV93aXRoX2ludGVnZXIpICgpOwo+PiBleHRlcm4gQm9vbCAo KnBsX2ZkX3VuaWZ5X3dpdGhfZmRfdmFyKSAoKTsKPj4gZXh0ZXJuIGludCAoKnBsX2ZkX3Zhcmlh YmxlX3NpemUpICgpOwo+PiBleHRlcm4gaW50ICgqcGxfZmRfY29weV92YXJpYWJsZSkgKCk7Cj4+ IGV4dGVybiBjaGFyICooKnBsX2ZkX3ZhcmlhYmxlX3RvX3N0cmluZykgKCk7Cj4+ICMgODIgImlm X25vX2ZkLmgiCj4+IHZvaWQgUGxfRmRfSW5pdF9Tb2x2ZXIodm9pZCk7Cj4+Cj4+IHZvaWQgUGxf RmRfUmVzZXRfU29sdmVyKHZvaWQpOwo+PiAjIDU2ICJlbmdpbmVfcGwuaCIgMgo+PiAjIDcyICJt YWNoaW5lLmMiIDIKPj4KPj4KPj4KPj4gIyAxICIvdXNyL2luY2x1ZGUvbWFsbG9jLmgiIDEgMyA0 Cj4+ICMgMjMgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIgMyA0Cj4+ICMgMSAiL3Vzci9saWIvZ2Nj L2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0Cj4+ICMgMTQ5 ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIg MyA0Cj4+Cj4+ICMgMTQ5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5j bHVkZS9zdGRkZWYuaCIgMyA0Cj4+IHR5cGVkZWYgaW50IHB0cmRpZmZfdDsKPj4gIyA0MjYgIi91 c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQK Pj4gdHlwZWRlZiBzdHJ1Y3Qgewo+PiAgIGxvbmcgbG9uZyBfX21heF9hbGlnbl9sbCBfX2F0dHJp YnV0ZV9fKChfX2FsaWduZWRfXyhfX2FsaWdub2ZfXyhsb25nIGxvbmcpKSkpOwo+PiAgIGxvbmcg ZG91YmxlIF9fbWF4X2FsaWduX2xkIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKF9fYWxpZ25v Zl9fKGxvbmcgZG91YmxlKSkpKTsKPj4gfSBtYXhfYWxpZ25fdDsKPj4gIyAyNCAiL3Vzci9pbmNs dWRlL21hbGxvYy5oIiAyIDMgNAo+PiAjIDM1ICIvdXNyL2luY2x1ZGUvbWFsbG9jLmgiIDMgNAo+ Pgo+Pgo+Pgo+PiBleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f KSkgOwo+Pgo+Pgo+PiBleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90 IF9fc2l6ZSkKPj4gX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHZv aWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKQo+PiBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4gdm9p ZCBjZnJlZSAodm9pZCAqX19wdHIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkICptZW1hbGlnbiAoc2l6ZV90IF9fYWxpZ25tZW50 LCBzaXplX3QgX19zaXplKQo+PiBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgOwo+Pgo+Pgo+PiBleHRlcm4gdm9pZCAq dmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgOwo+Pgo+Pgo+Pgo+PiBleHRlcm4g dm9pZCAqcHZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsKPj4KPj4KPj4KPj4g ZXh0ZXJuIHZvaWQgKigqX19tb3JlY29yZSkgKHB0cmRpZmZfdCBfX3NpemUpOwo+Pgo+Pgo+PiBl eHRlcm4gdm9pZCAqX19kZWZhdWx0X21vcmVjb3JlIChwdHJkaWZmX3QgX19zaXplKQo+PiBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21h bGxvY19fKSk7Cj4+Cj4+Cj4+Cj4+IHN0cnVjdCBtYWxsaW5mbwo+PiB7Cj4+ICAgaW50IGFyZW5h Owo+PiAgIGludCBvcmRibGtzOwo+PiAgIGludCBzbWJsa3M7Cj4+ICAgaW50IGhibGtzOwo+PiAg IGludCBoYmxraGQ7Cj4+ICAgaW50IHVzbWJsa3M7Cj4+ICAgaW50IGZzbWJsa3M7Cj4+ICAgaW50 IHVvcmRibGtzOwo+PiAgIGludCBmb3JkYmxrczsKPj4gICBpbnQga2VlcGNvc3Q7Cj4+IH07Cj4+ Cj4+Cj4+IGV4dGVybiBzdHJ1Y3QgbWFsbGluZm8gbWFsbGluZm8gKHZvaWQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ICMgMTIxICIvdXNyL2luY2x1ZGUvbWFs bG9jLmgiIDMgNAo+PiBleHRlcm4gaW50IG1hbGxvcHQgKGludCBfX3BhcmFtLCBpbnQgX192YWwp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+IGV4 dGVybiBpbnQgbWFsbG9jX3RyaW0gKHNpemVfdCBfX3BhZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4gZXh0ZXJuIHNpemVfdCBtYWxsb2NfdXNh YmxlX3NpemUgKHZvaWQgKl9fcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4gdm9pZCBtYWxsb2Nfc3RhdHMgKHZvaWQpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgbWFs bG9jX2luZm8gKGludCBfX29wdGlvbnMsIEZJTEUgKl9fZnApIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkICptYWxsb2NfZ2V0X3N0 YXRlICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+ Pgo+Pgo+PiBleHRlcm4gaW50IG1hbGxvY19zZXRfc3RhdGUgKHZvaWQgKl9fcHRyKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4g dm9pZCAoKnZvbGF0aWxlIF9fbWFsbG9jX2luaXRpYWxpemVfaG9vaykgKHZvaWQpCj4+IF9fYXR0 cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwo+Pgo+PiBleHRlcm4gdm9pZCAoKnZvbGF0aWxl IF9fZnJlZV9ob29rKSAodm9pZCAqX19wdHIsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKikKPj4gX19hdHRyaWJ1dGVfXyAo KF9fZGVwcmVjYXRlZF9fKSk7Cj4+IGV4dGVybiB2b2lkICooKnZvbGF0aWxlIF9fbWFsbG9jX2hv b2spKHNpemVfdCBfX3NpemUsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqKQo+PiBfX2F0dHJpYnV0ZV9fICgoX19kZXBy ZWNhdGVkX18pKTsKPj4gZXh0ZXJuIHZvaWQgKigqdm9sYXRpbGUgX19yZWFsbG9jX2hvb2spKHZv aWQgKl9fcHRyLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgX19zaXplLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICopCj4+IF9fYXR0cmlidXRlX18g KChfX2RlcHJlY2F0ZWRfXykpOwo+PiBleHRlcm4gdm9pZCAqKCp2b2xhdGlsZSBfX21lbWFsaWdu X2hvb2spKHNpemVfdCBfX2FsaWdubWVudCwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUsCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICop Cj4+IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwo+PiBleHRlcm4gdm9pZCAoKnZv bGF0aWxlIF9fYWZ0ZXJfbW9yZWNvcmVfaG9vaykgKHZvaWQpOwo+Pgo+Pgo+PiBleHRlcm4gdm9p ZCBfX21hbGxvY19jaGVja19pbml0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwo+Pgo+Pgo+Pgo+ PiAjIDc2ICJtYWNoaW5lLmMiIDIKPj4KPj4KPj4KPj4KPj4gIyAxICIvdXNyL2luY2x1ZGUvbmV0 ZGIuaCIgMSAzIDQKPj4gIyAyNyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAo+PiAjIDEgIi91 c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDEgMyA0Cj4+ICMgMjMgIi91c3IvaW5jbHVkZS9uZXRp bmV0L2luLmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDEgMyA0Cj4+ ICMgMjQgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDMgNAo+Pgo+Pgo+PiAjIDEgIi91c3Iv aW5jbHVkZS9zeXMvdWlvLmgiIDEgMyA0Cj4+ICMgMjUgIi91c3IvaW5jbHVkZS9zeXMvdWlvLmgi IDMgNAo+Pgo+Pgo+Pgo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Vpby5oIiAxIDMgNAo+PiAj IDQzICIvdXNyL2luY2x1ZGUvYml0cy91aW8uaCIgMyA0Cj4+IHN0cnVjdCBpb3ZlYwo+PiAgIHsK Pj4gICAgIHZvaWQgKmlvdl9iYXNlOwo+PiAgICAgc2l6ZV90IGlvdl9sZW47Cj4+ICAgfTsKPj4g IyAyOSAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIgMiAzIDQKPj4gIyAzOSAiL3Vzci9pbmNsdWRl L3N5cy91aW8uaCIgMyA0Cj4+IGV4dGVybiBzc2l6ZV90IHJlYWR2IChpbnQgX19mZCwgY29uc3Qg c3RydWN0IGlvdmVjICpfX2lvdmVjLCBpbnQgX19jb3VudCkKPj4gICA7Cj4+ICMgNTAgIi91c3Iv aW5jbHVkZS9zeXMvdWlvLmgiIDMgNAo+PiBleHRlcm4gc3NpemVfdCB3cml0ZXYgKGludCBfX2Zk LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKl9faW92ZWMsIGludCBfX2NvdW50KQo+PiAgIDsKPj4gIyA2 NSAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIgMyA0Cj4+IGV4dGVybiBzc2l6ZV90IHByZWFkdiAo aW50IF9fZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqX19pb3ZlYywgaW50IF9fY291bnQsCj4+ICAg ICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKPj4gIyA3NyAiL3Vzci9pbmNsdWRlL3N5cy91aW8u aCIgMyA0Cj4+IGV4dGVybiBzc2l6ZV90IHB3cml0ZXYgKGludCBfX2ZkLCBjb25zdCBzdHJ1Y3Qg aW92ZWMgKl9faW92ZWMsIGludCBfX2NvdW50LAo+PiAgICBfX29mZl90IF9fb2Zmc2V0KSA7Cj4+ ICMgMTIwICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAzIDQKPj4KPj4gIyAyNyAiL3Vzci9pbmNs dWRlL3N5cy9zb2NrZXQuaCIgMiAzIDQKPj4KPj4gIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRo YXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKPj4gIyAyOSAiL3Vzci9pbmNs dWRlL3N5cy9zb2NrZXQuaCIgMiAzIDQKPj4gIyAzOCAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQu aCIgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDEgMyA0Cj4+ICMgMjcg Ii91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzIDQKPj4gIyAxICIvdXNyL2xpYi9nY2MvaTY4 Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKPj4gIyAyOCAiL3Vz ci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDIgMyA0Cj4+ICMgMzggIi91c3IvaW5jbHVkZS9iaXRz L3NvY2tldC5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXRfdHlwZS5oIiAx IDMgNAo+PiAjIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXRfdHlwZS5oIiAzIDQKPj4gZW51 bSBfX3NvY2tldF90eXBlCj4+IHsKPj4gICBTT0NLX1NUUkVBTSA9IDEsCj4+Cj4+Cj4+ICAgU09D S19ER1JBTSA9IDIsCj4+Cj4+Cj4+ICAgU09DS19SQVcgPSAzLAo+Pgo+PiAgIFNPQ0tfUkRNID0g NCwKPj4KPj4gICBTT0NLX1NFUVBBQ0tFVCA9IDUsCj4+Cj4+Cj4+ICAgU09DS19EQ0NQID0gNiwK Pj4KPj4gICBTT0NLX1BBQ0tFVCA9IDEwLAo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiAgIFNPQ0tf Q0xPRVhFQyA9IDAyMDAwMDAwLAo+Pgo+Pgo+PiAgIFNPQ0tfTk9OQkxPQ0sgPSAwMDAwNDAwMAo+ Pgo+Pgo+PiB9Owo+PiAjIDM5ICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzIDQKPj4g IyAxNTAgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1 ZGUvYml0cy9zb2NrYWRkci5oIiAxIDMgNAo+PiAjIDI4ICIvdXNyL2luY2x1ZGUvYml0cy9zb2Nr YWRkci5oIiAzIDQKPj4gdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5X3Q7Cj4+ ICMgMTUxICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzIDQKPj4KPj4KPj4gc3RydWN0 IHNvY2thZGRyCj4+ICAgewo+PiAgICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5Owo+PiAgICAgY2hh ciBzYV9kYXRhWzE0XTsKPj4gICB9Owo+PiAjIDE2NiAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0 LmgiIDMgNAo+PiBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZQo+PiAgIHsKPj4gICAgIHNhX2ZhbWls eV90IHNzX2ZhbWlseTsKPj4gICAgIGNoYXIgX19zc19wYWRkaW5nWygxMjggLSAoc2l6ZW9mICh1 bnNpZ25lZCBzaG9ydCBpbnQpKSAtIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKV07Cj4+ICAg ICB1bnNpZ25lZCBsb25nIGludCBfX3NzX2FsaWduOwo+PiAgIH07Cj4+Cj4+Cj4+Cj4+IGVudW0K Pj4gICB7Cj4+ICAgICBNU0dfT09CID0gMHgwMSwKPj4KPj4gICAgIE1TR19QRUVLID0gMHgwMiwK Pj4KPj4gICAgIE1TR19ET05UUk9VVEUgPSAweDA0LAo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiAgICAg TVNHX0NUUlVOQyA9IDB4MDgsCj4+Cj4+ICAgICBNU0dfUFJPWFkgPSAweDEwLAo+Pgo+PiAgICAg TVNHX1RSVU5DID0gMHgyMCwKPj4KPj4gICAgIE1TR19ET05UV0FJVCA9IDB4NDAsCj4+Cj4+ICAg ICBNU0dfRU9SID0gMHg4MCwKPj4KPj4gICAgIE1TR19XQUlUQUxMID0gMHgxMDAsCj4+Cj4+ICAg ICBNU0dfRklOID0gMHgyMDAsCj4+Cj4+ICAgICBNU0dfU1lOID0gMHg0MDAsCj4+Cj4+ICAgICBN U0dfQ09ORklSTSA9IDB4ODAwLAo+Pgo+PiAgICAgTVNHX1JTVCA9IDB4MTAwMCwKPj4KPj4gICAg IE1TR19FUlJRVUVVRSA9IDB4MjAwMCwKPj4KPj4gICAgIE1TR19OT1NJR05BTCA9IDB4NDAwMCwK Pj4KPj4gICAgIE1TR19NT1JFID0gMHg4MDAwLAo+Pgo+PiAgICAgTVNHX1dBSVRGT1JPTkUgPSAw eDEwMDAwLAo+Pgo+PiAgICAgTVNHX0ZBU1RPUEVOID0gMHgyMDAwMDAwMCwKPj4KPj4KPj4gICAg IE1TR19DTVNHX0NMT0VYRUMgPSAweDQwMDAwMDAwCj4+Cj4+Cj4+Cj4+ICAgfTsKPj4KPj4KPj4K Pj4KPj4gc3RydWN0IG1zZ2hkcgo+PiAgIHsKPj4gICAgIHZvaWQgKm1zZ19uYW1lOwo+PiAgICAg c29ja2xlbl90IG1zZ19uYW1lbGVuOwo+Pgo+PiAgICAgc3RydWN0IGlvdmVjICptc2dfaW92Owo+ PiAgICAgc2l6ZV90IG1zZ19pb3ZsZW47Cj4+Cj4+ICAgICB2b2lkICptc2dfY29udHJvbDsKPj4g ICAgIHNpemVfdCBtc2dfY29udHJvbGxlbjsKPj4KPj4KPj4KPj4KPj4gICAgIGludCBtc2dfZmxh Z3M7Cj4+ICAgfTsKPj4KPj4KPj4gc3RydWN0IGNtc2doZHIKPj4gICB7Cj4+ICAgICBzaXplX3Qg Y21zZ19sZW47Cj4+Cj4+Cj4+Cj4+Cj4+ICAgICBpbnQgY21zZ19sZXZlbDsKPj4gICAgIGludCBj bXNnX3R5cGU7Cj4+Cj4+ICAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGNoYXIgX19jbXNnX2Rh dGEgW107Cj4+Cj4+ICAgfTsKPj4gIyAyNzYgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAz IDQKPj4gZXh0ZXJuIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2dfbnh0aGRyIChzdHJ1Y3QgbXNnaGRy ICpfX21oZHIsCj4+ICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiAjIDMwMyAiL3Vzci9pbmNsdWRlL2Jp dHMvc29ja2V0LmgiIDMgNAo+PiBlbnVtCj4+ICAgewo+PiAgICAgU0NNX1JJR0hUUyA9IDB4MDEK Pj4KPj4KPj4KPj4KPj4KPj4gICB9Owo+PiAjIDM0OSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0 LmgiIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9hc20vc29ja2V0LmgiIDEgMyA0Cj4+ICMgMSAi L3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NvY2tldC5oIiAxIDMgNAo+Pgo+Pgo+Pgo+PiAjIDEg Ii91c3IvaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxIDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9h c20tZ2VuZXJpYy9zb2NraW9zLmgiIDEgMyA0Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FzbS9zb2Nr aW9zLmgiIDIgMyA0Cj4+ICMgNSAiL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NvY2tldC5oIiAy IDMgNAo+PiAjIDEgIi91c3IvaW5jbHVkZS9hc20vc29ja2V0LmgiIDIgMyA0Cj4+ICMgMzUwICIv dXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzIDQKPj4gIyAzODMgIi91c3IvaW5jbHVkZS9i aXRzL3NvY2tldC5oIiAzIDQKPj4gc3RydWN0IGxpbmdlcgo+PiAgIHsKPj4gICAgIGludCBsX29u b2ZmOwo+PiAgICAgaW50IGxfbGluZ2VyOwo+PiAgIH07Cj4+ICMgMzkgIi91c3IvaW5jbHVkZS9z eXMvc29ja2V0LmgiIDIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+IHN0cnVjdCBvc29ja2FkZHIKPj4gICB7 Cj4+ICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5Owo+PiAgICAgdW5zaWduZWQgY2hh ciBzYV9kYXRhWzE0XTsKPj4gICB9Owo+Pgo+Pgo+Pgo+Pgo+PiBlbnVtCj4+IHsKPj4gICBTSFVU X1JEID0gMCwKPj4KPj4gICBTSFVUX1dSLAo+Pgo+PiAgIFNIVVRfUkRXUgo+Pgo+PiB9Owo+PiAj IDExMyAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0Cj4+IGV4dGVybiBpbnQgc29ja2V0 IChpbnQgX19kb21haW4sIGludCBfX3R5cGUsIGludCBfX3Byb3RvY29sKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50 IHNvY2tldHBhaXIgKGludCBfX2RvbWFpbiwgaW50IF9fdHlwZSwgaW50IF9fcHJvdG9jb2wsCj4+ ICAgICAgICAgIGludCBfX2Zkc1syXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4KPj4KPj4gZXh0ZXJuIGludCBiaW5kIChpbnQgX19mZCwgY29uc3Qgc3RydWN0 IHNvY2thZGRyICogX19hZGRyLCBzb2NrbGVuX3QgX19sZW4pCj4+ICAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4gZXh0ZXJuIGludCBnZXRzb2Nr bmFtZSAoaW50IF9fZmQsIHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmljdCBfX2FkZHIsCj4+ICAg IHNvY2tsZW5fdCAqX19yZXN0cmljdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKPj4gIyAxMzcgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDMgNAo+ PiBleHRlcm4gaW50IGNvbm5lY3QgKGludCBfX2ZkLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiBf X2FkZHIsIHNvY2tsZW5fdCBfX2xlbik7Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgZ2V0cGVlcm5h bWUgKGludCBfX2ZkLCBzdHJ1Y3Qgc29ja2FkZHIgKl9fcmVzdHJpY3QgX19hZGRyLAo+PiAgICBz b2NrbGVuX3QgKl9fcmVzdHJpY3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBzc2l6ZV90IHNlbmQgKGlu dCBfX2ZkLCBjb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwgaW50IF9fZmxhZ3MpOwo+Pgo+ Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gc3NpemVfdCByZWN2IChpbnQgX19mZCwgdm9pZCAqX19i dWYsIHNpemVfdCBfX24sIGludCBfX2ZsYWdzKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJu IHNzaXplX3Qgc2VuZHRvIChpbnQgX19mZCwgY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24s Cj4+ICAgICAgICAgIGludCBfX2ZsYWdzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiBfX2FkZHIs Cj4+ICAgICAgICAgIHNvY2tsZW5fdCBfX2FkZHJfbGVuKTsKPj4gIyAxNzQgIi91c3IvaW5jbHVk ZS9zeXMvc29ja2V0LmgiIDMgNAo+PiBleHRlcm4gc3NpemVfdCByZWN2ZnJvbSAoaW50IF9fZmQs IHZvaWQgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX24sCj4+ICAgICBpbnQgX19mbGFncywg c3RydWN0IHNvY2thZGRyICpfX3Jlc3RyaWN0IF9fYWRkciwKPj4gICAgIHNvY2tsZW5fdCAqX19y ZXN0cmljdCBfX2FkZHJfbGVuKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHNzaXpl X3Qgc2VuZG1zZyAoaW50IF9fZmQsIGNvbnN0IHN0cnVjdCBtc2doZHIgKl9fbWVzc2FnZSwKPj4g ICAgaW50IF9fZmxhZ3MpOwo+PiAjIDIwMiAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0 Cj4+IGV4dGVybiBzc2l6ZV90IHJlY3Ztc2cgKGludCBfX2ZkLCBzdHJ1Y3QgbXNnaGRyICpfX21l c3NhZ2UsIGludCBfX2ZsYWdzKTsKPj4gIyAyMTkgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0Lmgi IDMgNAo+PiBleHRlcm4gaW50IGdldHNvY2tvcHQgKGludCBfX2ZkLCBpbnQgX19sZXZlbCwgaW50 IF9fb3B0bmFtZSwKPj4gICAgICAgICAgdm9pZCAqX19yZXN0cmljdCBfX29wdHZhbCwKPj4gICAg ICAgICAgc29ja2xlbl90ICpfX3Jlc3RyaWN0IF9fb3B0bGVuKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IHNldHNvY2tv cHQgKGludCBfX2ZkLCBpbnQgX19sZXZlbCwgaW50IF9fb3B0bmFtZSwKPj4gICAgICAgICAgY29u c3Qgdm9pZCAqX19vcHR2YWwsIHNvY2tsZW5fdCBfX29wdGxlbikgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBsaXN0 ZW4gKGludCBfX2ZkLCBpbnQgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+PiAjIDI0MyAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0Cj4+IGV4dGVy biBpbnQgYWNjZXB0IChpbnQgX19mZCwgc3RydWN0IHNvY2thZGRyICpfX3Jlc3RyaWN0IF9fYWRk ciwKPj4gICAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19hZGRyX2xlbik7Cj4+ICMgMjYxICIv dXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzIDQKPj4gZXh0ZXJuIGludCBzaHV0ZG93biAoaW50 IF9fZmQsIGludCBfX2hvdykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBzb2NrYXRtYXJrIChpbnQgX19mZCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4KPj4K Pj4gZXh0ZXJuIGludCBpc2ZkdHlwZSAoaW50IF9fZmQsIGludCBfX2ZkdHlwZSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gIyAyODMgIi91c3IvaW5jbHVkZS9z eXMvc29ja2V0LmgiIDMgNAo+Pgo+PiAjIDI0ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAy IDMgNAo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIHVpbnQzMl90IGluX2FkZHJfdDsKPj4g c3RydWN0IGluX2FkZHIKPj4gICB7Cj4+ICAgICBpbl9hZGRyX3Qgc19hZGRyOwo+PiAgIH07Cj4+ Cj4+Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvaW4uaCIgMSAzIDQKPj4gIyAxMzMgIi91c3Iv aW5jbHVkZS9iaXRzL2luLmgiIDMgNAo+PiBzdHJ1Y3QgaXBfb3B0cwo+PiAgIHsKPj4gICAgIHN0 cnVjdCBpbl9hZGRyIGlwX2RzdDsKPj4gICAgIGNoYXIgaXBfb3B0c1s0MF07Cj4+ICAgfTsKPj4K Pj4KPj4gc3RydWN0IGlwX21yZXFuCj4+ICAgewo+PiAgICAgc3RydWN0IGluX2FkZHIgaW1yX211 bHRpYWRkcjsKPj4gICAgIHN0cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNzOwo+PiAgICAgaW50IGlt cl9pZmluZGV4Owo+PiAgIH07Cj4+Cj4+Cj4+IHN0cnVjdCBpbl9wa3RpbmZvCj4+ICAgewo+PiAg ICAgaW50IGlwaV9pZmluZGV4Owo+PiAgICAgc3RydWN0IGluX2FkZHIgaXBpX3NwZWNfZHN0Owo+ PiAgICAgc3RydWN0IGluX2FkZHIgaXBpX2FkZHI7Cj4+ICAgfTsKPj4gIyAzOCAiL3Vzci9pbmNs dWRlL25ldGluZXQvaW4uaCIgMiAzIDQKPj4KPj4KPj4gZW51bQo+PiAgIHsKPj4gICAgIElQUFJP VE9fSVAgPSAwLAo+Pgo+PiAgICAgSVBQUk9UT19JQ01QID0gMSwKPj4KPj4gICAgIElQUFJPVE9f SUdNUCA9IDIsCj4+Cj4+ICAgICBJUFBST1RPX0lQSVAgPSA0LAo+Pgo+PiAgICAgSVBQUk9UT19U Q1AgPSA2LAo+Pgo+PiAgICAgSVBQUk9UT19FR1AgPSA4LAo+Pgo+PiAgICAgSVBQUk9UT19QVVAg PSAxMiwKPj4KPj4gICAgIElQUFJPVE9fVURQID0gMTcsCj4+Cj4+ICAgICBJUFBST1RPX0lEUCA9 IDIyLAo+Pgo+PiAgICAgSVBQUk9UT19UUCA9IDI5LAo+Pgo+PiAgICAgSVBQUk9UT19EQ0NQID0g MzMsCj4+Cj4+ICAgICBJUFBST1RPX0lQVjYgPSA0MSwKPj4KPj4gICAgIElQUFJPVE9fUlNWUCA9 IDQ2LAo+Pgo+PiAgICAgSVBQUk9UT19HUkUgPSA0NywKPj4KPj4gICAgIElQUFJPVE9fRVNQID0g NTAsCj4+Cj4+ICAgICBJUFBST1RPX0FIID0gNTEsCj4+Cj4+ICAgICBJUFBST1RPX01UUCA9IDky LAo+Pgo+PiAgICAgSVBQUk9UT19CRUVUUEggPSA5NCwKPj4KPj4gICAgIElQUFJPVE9fRU5DQVAg PSA5OCwKPj4KPj4gICAgIElQUFJPVE9fUElNID0gMTAzLAo+Pgo+PiAgICAgSVBQUk9UT19DT01Q ID0gMTA4LAo+Pgo+PiAgICAgSVBQUk9UT19TQ1RQID0gMTMyLAo+Pgo+PiAgICAgSVBQUk9UT19V RFBMSVRFID0gMTM2LAo+Pgo+PiAgICAgSVBQUk9UT19NUExTID0gMTM3LAo+Pgo+PiAgICAgSVBQ Uk9UT19SQVcgPSAyNTUsCj4+Cj4+ICAgICBJUFBST1RPX01BWAo+PiAgIH07Cj4+Cj4+Cj4+Cj4+ Cj4+Cj4+IGVudW0KPj4gICB7Cj4+ICAgICBJUFBST1RPX0hPUE9QVFMgPSAwLAo+Pgo+PiAgICAg SVBQUk9UT19ST1VUSU5HID0gNDMsCj4+Cj4+ICAgICBJUFBST1RPX0ZSQUdNRU5UID0gNDQsCj4+ Cj4+ICAgICBJUFBST1RPX0lDTVBWNiA9IDU4LAo+Pgo+PiAgICAgSVBQUk9UT19OT05FID0gNTks Cj4+Cj4+ICAgICBJUFBST1RPX0RTVE9QVFMgPSA2MCwKPj4KPj4gICAgIElQUFJPVE9fTUggPSAx MzUKPj4KPj4gICB9Owo+Pgo+Pgo+Pgo+PiB0eXBlZGVmIHVpbnQxNl90IGluX3BvcnRfdDsKPj4K Pj4KPj4gZW51bQo+PiAgIHsKPj4gICAgIElQUE9SVF9FQ0hPID0gNywKPj4gICAgIElQUE9SVF9E SVNDQVJEID0gOSwKPj4gICAgIElQUE9SVF9TWVNUQVQgPSAxMSwKPj4gICAgIElQUE9SVF9EQVlU SU1FID0gMTMsCj4+ICAgICBJUFBPUlRfTkVUU1RBVCA9IDE1LAo+PiAgICAgSVBQT1JUX0ZUUCA9 IDIxLAo+PiAgICAgSVBQT1JUX1RFTE5FVCA9IDIzLAo+PiAgICAgSVBQT1JUX1NNVFAgPSAyNSwK Pj4gICAgIElQUE9SVF9USU1FU0VSVkVSID0gMzcsCj4+ICAgICBJUFBPUlRfTkFNRVNFUlZFUiA9 IDQyLAo+PiAgICAgSVBQT1JUX1dIT0lTID0gNDMsCj4+ICAgICBJUFBPUlRfTVRQID0gNTcsCj4+ Cj4+ICAgICBJUFBPUlRfVEZUUCA9IDY5LAo+PiAgICAgSVBQT1JUX1JKRSA9IDc3LAo+PiAgICAg SVBQT1JUX0ZJTkdFUiA9IDc5LAo+PiAgICAgSVBQT1JUX1RUWUxJTksgPSA4NywKPj4gICAgIElQ UE9SVF9TVVBEVVAgPSA5NSwKPj4KPj4KPj4gICAgIElQUE9SVF9FWEVDU0VSVkVSID0gNTEyLAo+ PiAgICAgSVBQT1JUX0xPR0lOU0VSVkVSID0gNTEzLAo+PiAgICAgSVBQT1JUX0NNRFNFUlZFUiA9 IDUxNCwKPj4gICAgIElQUE9SVF9FRlNTRVJWRVIgPSA1MjAsCj4+Cj4+Cj4+ICAgICBJUFBPUlRf QklGRlVEUCA9IDUxMiwKPj4gICAgIElQUE9SVF9XSE9TRVJWRVIgPSA1MTMsCj4+ICAgICBJUFBP UlRfUk9VVEVTRVJWRVIgPSA1MjAsCj4+Cj4+Cj4+ICAgICBJUFBPUlRfUkVTRVJWRUQgPSAxMDI0 LAo+Pgo+Pgo+PiAgICAgSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKPj4gICB9Owo+PiAjIDIx MSAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMyA0Cj4+IHN0cnVjdCBpbjZfYWRkcgo+PiAg IHsKPj4gICAgIHVuaW9uCj4+ICAgICAgIHsKPj4gIHVpbnQ4X3QgX191Nl9hZGRyOFsxNl07Cj4+ Cj4+ICB1aW50MTZfdCBfX3U2X2FkZHIxNls4XTsKPj4gIHVpbnQzMl90IF9fdTZfYWRkcjMyWzRd Owo+Pgo+PiAgICAgICB9IF9faW42X3U7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ICAgfTsKPj4KPj4KPj4g ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbjZfYWRkciBpbjZhZGRyX2FueTsKPj4gZXh0ZXJuIGNvbnN0 IHN0cnVjdCBpbjZfYWRkciBpbjZhZGRyX2xvb3BiYWNrOwo+PiAjIDIzOSAiL3Vzci9pbmNsdWRl L25ldGluZXQvaW4uaCIgMyA0Cj4+IHN0cnVjdCBzb2NrYWRkcl9pbgo+PiAgIHsKPj4gICAgIHNh X2ZhbWlseV90IHNpbl9mYW1pbHk7Cj4+ICAgICBpbl9wb3J0X3Qgc2luX3BvcnQ7Cj4+ICAgICBz dHJ1Y3QgaW5fYWRkciBzaW5fYWRkcjsKPj4KPj4KPj4gICAgIHVuc2lnbmVkIGNoYXIgc2luX3pl cm9bc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHIpIC0KPj4gICAgICAgKHNpemVvZiAodW5zaWduZWQg c2hvcnQgaW50KSkgLQo+PiAgICAgICBzaXplb2YgKGluX3BvcnRfdCkgLQo+PiAgICAgICBzaXpl b2YgKHN0cnVjdCBpbl9hZGRyKV07Cj4+ICAgfTsKPj4KPj4KPj4KPj4gc3RydWN0IHNvY2thZGRy X2luNgo+PiAgIHsKPj4gICAgIHNhX2ZhbWlseV90IHNpbjZfZmFtaWx5Owo+PiAgICAgaW5fcG9y dF90IHNpbjZfcG9ydDsKPj4gICAgIHVpbnQzMl90IHNpbjZfZmxvd2luZm87Cj4+ICAgICBzdHJ1 Y3QgaW42X2FkZHIgc2luNl9hZGRyOwo+PiAgICAgdWludDMyX3Qgc2luNl9zY29wZV9pZDsKPj4g ICB9Owo+Pgo+Pgo+Pgo+Pgo+PiBzdHJ1Y3QgaXBfbXJlcQo+PiAgIHsKPj4KPj4gICAgIHN0cnVj dCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7Cj4+Cj4+Cj4+ICAgICBzdHJ1Y3QgaW5fYWRkciBpbXJf aW50ZXJmYWNlOwo+PiAgIH07Cj4+Cj4+IHN0cnVjdCBpcF9tcmVxX3NvdXJjZQo+PiAgIHsKPj4K Pj4gICAgIHN0cnVjdCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7Cj4+Cj4+Cj4+ICAgICBzdHJ1Y3Qg aW5fYWRkciBpbXJfaW50ZXJmYWNlOwo+Pgo+Pgo+PiAgICAgc3RydWN0IGluX2FkZHIgaW1yX3Nv dXJjZWFkZHI7Cj4+ICAgfTsKPj4KPj4KPj4KPj4KPj4gc3RydWN0IGlwdjZfbXJlcQo+PiAgIHsK Pj4KPj4gICAgIHN0cnVjdCBpbjZfYWRkciBpcHY2bXJfbXVsdGlhZGRyOwo+Pgo+Pgo+PiAgICAg dW5zaWduZWQgaW50IGlwdjZtcl9pbnRlcmZhY2U7Cj4+ICAgfTsKPj4KPj4KPj4KPj4KPj4gc3Ry dWN0IGdyb3VwX3JlcQo+PiAgIHsKPj4KPj4gICAgIHVpbnQzMl90IGdyX2ludGVyZmFjZTsKPj4K Pj4KPj4gICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGdyX2dyb3VwOwo+PiAgIH07Cj4+Cj4+ IHN0cnVjdCBncm91cF9zb3VyY2VfcmVxCj4+ICAgewo+Pgo+PiAgICAgdWludDMyX3QgZ3NyX2lu dGVyZmFjZTsKPj4KPj4KPj4gICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGdzcl9ncm91cDsK Pj4KPj4KPj4gICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGdzcl9zb3VyY2U7Cj4+ICAgfTsK Pj4KPj4KPj4KPj4gc3RydWN0IGlwX21zZmlsdGVyCj4+ICAgewo+Pgo+PiAgICAgc3RydWN0IGlu X2FkZHIgaW1zZl9tdWx0aWFkZHI7Cj4+Cj4+Cj4+ICAgICBzdHJ1Y3QgaW5fYWRkciBpbXNmX2lu dGVyZmFjZTsKPj4KPj4KPj4gICAgIHVpbnQzMl90IGltc2ZfZm1vZGU7Cj4+Cj4+Cj4+ICAgICB1 aW50MzJfdCBpbXNmX251bXNyYzsKPj4KPj4gICAgIHN0cnVjdCBpbl9hZGRyIGltc2Zfc2xpc3Rb MV07Cj4+ICAgfTsKPj4KPj4KPj4KPj4KPj4KPj4gc3RydWN0IGdyb3VwX2ZpbHRlcgo+PiAgIHsK Pj4KPj4gICAgIHVpbnQzMl90IGdmX2ludGVyZmFjZTsKPj4KPj4KPj4gICAgIHN0cnVjdCBzb2Nr YWRkcl9zdG9yYWdlIGdmX2dyb3VwOwo+Pgo+Pgo+PiAgICAgdWludDMyX3QgZ2ZfZm1vZGU7Cj4+ Cj4+Cj4+ICAgICB1aW50MzJfdCBnZl9udW1zcmM7Cj4+Cj4+ICAgICBzdHJ1Y3Qgc29ja2FkZHJf c3RvcmFnZSBnZl9zbGlzdFsxXTsKPj4gfTsKPj4gIyAzNzYgIi91c3IvaW5jbHVkZS9uZXRpbmV0 L2luLmgiIDMgNAo+PiBleHRlcm4gdWludDMyX3QgbnRvaGwgKHVpbnQzMl90IF9fbmV0bG9uZykg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7Cj4+IGV4dGVybiB1aW50MTZfdCBudG9ocyAodWludDE2X3QgX19uZXRzaG9y dCkKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKPj4gZXh0ZXJuIHVpbnQzMl90IGh0b25sICh1aW50MzJf dCBfX2hvc3Rsb25nKQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwo+PiBleHRlcm4gdWludDE2X3QgaHRv bnMgKHVpbnQxNl90IF9faG9zdHNob3J0KQo+PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwo+Pgo+Pgo+Pgo+ Pgo+PiAjIDEgIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgiIDEgMyA0Cj4+ICMgMzg4ICIv dXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMgNAo+PiAjIDUwMyAiL3Vzci9pbmNsdWRlL25l dGluZXQvaW4uaCIgMyA0Cj4+IGV4dGVybiBpbnQgYmluZHJlc3Zwb3J0IChpbnQgX19zb2NrZmQs IHN0cnVjdCBzb2NrYWRkcl9pbiAqX19zb2NrX2luKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRlcm4gaW50IGJpbmRyZXN2cG9ydDYgKGludCBf X3NvY2tmZCwgc3RydWN0IHNvY2thZGRyX2luNiAqX19zb2NrX2luKQo+PiAgICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+ICMgNjMxICIvdXNyL2luY2x1ZGUv bmV0aW5ldC9pbi5oIiAzIDQKPj4KPj4gIyAyOCAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDIgMyA0 Cj4+Cj4+Cj4+Cj4+Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL3JwYy9uZXRkYi5oIiAxIDMgNAo+PiAj IDQyICIvdXNyL2luY2x1ZGUvcnBjL25ldGRiLmgiIDMgNAo+PiAjIDEgIi91c3IvbGliL2djYy9p Njg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAo+PiAjIDQzICIv dXNyL2luY2x1ZGUvcnBjL25ldGRiLmgiIDIgMyA0Cj4+Cj4+Cj4+Cj4+IHN0cnVjdCBycGNlbnQK Pj4gewo+PiAgIGNoYXIgKnJfbmFtZTsKPj4gICBjaGFyICoqcl9hbGlhc2VzOwo+PiAgIGludCBy X251bWJlcjsKPj4gfTsKPj4KPj4gZXh0ZXJuIHZvaWQgc2V0cnBjZW50IChpbnQgX19zdGF5b3Bl bikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4gZXh0ZXJuIHZv aWQgZW5kcnBjZW50ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwo+PiBleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnluYW1lIChjb25zdCBjaGFyICpf X25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+IGV4dGVy biBzdHJ1Y3QgcnBjZW50ICpnZXRycGNieW51bWJlciAoaW50IF9fbnVtYmVyKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+PiBleHRlcm4gc3RydWN0IHJwY2VudCAq Z2V0cnBjZW50ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp Owo+Pgo+Pgo+PiBleHRlcm4gaW50IGdldHJwY2J5bmFtZV9yIChjb25zdCBjaGFyICpfX25hbWUs IHN0cnVjdCBycGNlbnQgKl9fcmVzdWx0X2J1ZiwKPj4gICAgICAgY2hhciAqX19idWZmZXIsIHNp emVfdCBfX2J1ZmxlbiwKPj4gICAgICAgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+PiBleHRlcm4gaW50IGdldHJw Y2J5bnVtYmVyX3IgKGludCBfX251bWJlciwgc3RydWN0IHJwY2VudCAqX19yZXN1bHRfYnVmLAo+ PiAgICAgICAgIGNoYXIgKl9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCj4+ICAgICAgICAgc3Ry dWN0IHJwY2VudCAqKl9fcmVzdWx0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pgo+PiBleHRlcm4gaW50IGdldHJwY2VudF9yIChzdHJ1Y3QgcnBjZW50ICpfX3Jl c3VsdF9idWYsIGNoYXIgKl9fYnVmZmVyLAo+PiAgICBzaXplX3QgX19idWZsZW4sIHN0cnVjdCBy cGNlbnQgKipfX3Jlc3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKPj4KPj4KPj4KPj4gIyAzMyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDIgMyA0Cj4+ICMgNDIg Ii91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4gIyAxICIvdXNyL2luY2x1ZGUvYml0cy9uZXRk Yi5oIiAxIDMgNAo+PiAjIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9uZXRkYi5oIiAzIDQKPj4gc3Ry dWN0IG5ldGVudAo+PiB7Cj4+ICAgY2hhciAqbl9uYW1lOwo+PiAgIGNoYXIgKipuX2FsaWFzZXM7 Cj4+ICAgaW50IG5fYWRkcnR5cGU7Cj4+ICAgdWludDMyX3Qgbl9uZXQ7Cj4+IH07Cj4+ICMgNDMg Ii91c3IvaW5jbHVkZS9uZXRkYi5oIiAyIDMgNAo+PiAjIDUzICIvdXNyL2luY2x1ZGUvbmV0ZGIu aCIgMyA0Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgKl9faF9lcnJub19s b2NhdGlvbiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cj4+ICMgOTIgIi91c3IvaW5jbHVkZS9uZXRkYi5o IiAzIDQKPj4gZXh0ZXJuIHZvaWQgaGVycm9yIChjb25zdCBjaGFyICpfX3N0cikgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4gZXh0ZXJuIGNvbnN0IGNo YXIgKmhzdHJlcnJvciAoaW50IF9fZXJyX251bSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4gc3RydWN0IGhvc3RlbnQKPj4gewo+PiAgIGNo YXIgKmhfbmFtZTsKPj4gICBjaGFyICoqaF9hbGlhc2VzOwo+PiAgIGludCBoX2FkZHJ0eXBlOwo+ PiAgIGludCBoX2xlbmd0aDsKPj4gICBjaGFyICoqaF9hZGRyX2xpc3Q7Cj4+Cj4+Cj4+Cj4+IH07 Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIHNldGhvc3RlbnQgKGludCBfX3N0YXlf b3Blbik7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIGVuZGhvc3RlbnQgKHZvaWQpOwo+ Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gc3RydWN0IGhvc3RlbnQgKmdldGhvc3RlbnQgKHZv aWQpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gc3RydWN0IGhvc3RlbnQgKmdldGhvc3Ri eWFkZHIgKGNvbnN0IHZvaWQgKl9fYWRkciwgX19zb2NrbGVuX3QgX19sZW4sCj4+ICAgICAgICAg ICBpbnQgX190eXBlKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpn ZXRob3N0YnluYW1lIChjb25zdCBjaGFyICpfX25hbWUpOwo+PiAjIDE1NSAiL3Vzci9pbmNsdWRl L25ldGRiLmgiIDMgNAo+PiBleHRlcm4gc3RydWN0IGhvc3RlbnQgKmdldGhvc3RieW5hbWUyIChj b25zdCBjaGFyICpfX25hbWUsIGludCBfX2FmKTsKPj4gIyAxNjcgIi91c3IvaW5jbHVkZS9uZXRk Yi5oIiAzIDQKPj4gZXh0ZXJuIGludCBnZXRob3N0ZW50X3IgKHN0cnVjdCBob3N0ZW50ICpfX3Jl c3RyaWN0IF9fcmVzdWx0X2J1ZiwKPj4gICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVf dCBfX2J1ZmxlbiwKPj4gICAgIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwK Pj4gICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsKPj4KPj4gZXh0ZXJuIGludCBnZXRo b3N0YnlhZGRyX3IgKGNvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19hZGRyLCBfX3NvY2tsZW5fdCBf X2xlbiwKPj4gICAgICAgIGludCBfX3R5cGUsCj4+ICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqX19y ZXN0cmljdCBfX3Jlc3VsdF9idWYsCj4+ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBz aXplX3QgX19idWZsZW4sCj4+ICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJpY3QgX19y ZXN1bHQsCj4+ICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCk7Cj4+Cj4+IGV4dGVy biBpbnQgZ2V0aG9zdGJ5bmFtZV9yIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4g ICAgICAgIHN0cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKPj4gICAgICAg IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKPj4gICAgICAgIHN0cnVj dCBob3N0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwKPj4gICAgICAgIGludCAqX19yZXN0cmlj dCBfX2hfZXJybm9wKTsKPj4KPj4gZXh0ZXJuIGludCBnZXRob3N0YnluYW1lMl9yIChjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwgaW50IF9fYWYsCj4+ICAgICAgICAgc3RydWN0IGhvc3Rl bnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAo+PiAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3Qg X19idWYsIHNpemVfdCBfX2J1ZmxlbiwKPj4gICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVz dHJpY3QgX19yZXN1bHQsCj4+ICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9faF9lcnJub3ApOwo+ PiAjIDE5OCAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAo+PiBleHRlcm4gdm9pZCBzZXRuZXRl bnQgKGludCBfX3N0YXlfb3Blbik7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIGVuZG5l dGVudCAodm9pZCk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBzdHJ1Y3QgbmV0ZW50ICpn ZXRuZXRlbnQgKHZvaWQpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gc3RydWN0IG5ldGVu dCAqZ2V0bmV0YnlhZGRyICh1aW50MzJfdCBfX25ldCwgaW50IF9fdHlwZSk7Cj4+Cj4+Cj4+Cj4+ Cj4+Cj4+IGV4dGVybiBzdHJ1Y3QgbmV0ZW50ICpnZXRuZXRieW5hbWUgKGNvbnN0IGNoYXIgKl9f bmFtZSk7Cj4+ICMgMjM3ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0Cj4+IGV4dGVybiBpbnQg Z2V0bmV0ZW50X3IgKHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAo+PiAg ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCj4+ICAgIHN0cnVjdCBu ZXRlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAo+PiAgICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vy cm5vcCk7Cj4+Cj4+IGV4dGVybiBpbnQgZ2V0bmV0YnlhZGRyX3IgKHVpbnQzMl90IF9fbmV0LCBp bnQgX190eXBlLAo+PiAgICAgICBzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1 ZiwKPj4gICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAo+PiAg ICAgICBzdHJ1Y3QgbmV0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwKPj4gICAgICAgaW50ICpf X3Jlc3RyaWN0IF9faF9lcnJub3ApOwo+Pgo+PiBleHRlcm4gaW50IGdldG5ldGJ5bmFtZV9yIChj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4gICAgICAgc3RydWN0IG5ldGVudCAqX19y ZXN0cmljdCBfX3Jlc3VsdF9idWYsCj4+ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNp emVfdCBfX2J1ZmxlbiwKPj4gICAgICAgc3RydWN0IG5ldGVudCAqKl9fcmVzdHJpY3QgX19yZXN1 bHQsCj4+ICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsKPj4KPj4KPj4KPj4KPj4g c3RydWN0IHNlcnZlbnQKPj4gewo+PiAgIGNoYXIgKnNfbmFtZTsKPj4gICBjaGFyICoqc19hbGlh c2VzOwo+PiAgIGludCBzX3BvcnQ7Cj4+ICAgY2hhciAqc19wcm90bzsKPj4gfTsKPj4KPj4KPj4K Pj4KPj4KPj4KPj4gZXh0ZXJuIHZvaWQgc2V0c2VydmVudCAoaW50IF9fc3RheV9vcGVuKTsKPj4K Pj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHZvaWQgZW5kc2VydmVudCAodm9pZCk7Cj4+Cj4+Cj4+Cj4+ Cj4+Cj4+Cj4+IGV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmVudCAodm9pZCk7Cj4+Cj4+ Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5bmFtZSAoY29u c3QgY2hhciAqX19uYW1lLCBjb25zdCBjaGFyICpfX3Byb3RvKTsKPj4KPj4KPj4KPj4KPj4KPj4K Pj4gZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2Ynlwb3J0IChpbnQgX19wb3J0LCBjb25z dCBjaGFyICpfX3Byb3RvKTsKPj4gIyAzMDggIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4g ZXh0ZXJuIGludCBnZXRzZXJ2ZW50X3IgKHN0cnVjdCBzZXJ2ZW50ICpfX3Jlc3RyaWN0IF9fcmVz dWx0X2J1ZiwKPj4gICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwK Pj4gICAgIHN0cnVjdCBzZXJ2ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCk7Cj4+Cj4+IGV4dGVy biBpbnQgZ2V0c2VydmJ5bmFtZV9yIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4g ICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wcm90bywKPj4gICAgICAgIHN0cnVjdCBz ZXJ2ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKPj4gICAgICAgIGNoYXIgKl9fcmVzdHJp Y3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKPj4gICAgICAgIHN0cnVjdCBzZXJ2ZW50ICoqX19y ZXN0cmljdCBfX3Jlc3VsdCk7Cj4+Cj4+IGV4dGVybiBpbnQgZ2V0c2VydmJ5cG9ydF9yIChpbnQg X19wb3J0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcHJvdG8sCj4+ICAgICAgICBzdHJ1Y3Qg c2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCj4+ICAgICAgICBjaGFyICpfX3Jlc3Ry aWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCj4+ICAgICAgICBzdHJ1Y3Qgc2VydmVudCAqKl9f cmVzdHJpY3QgX19yZXN1bHQpOwo+Pgo+Pgo+Pgo+Pgo+PiBzdHJ1Y3QgcHJvdG9lbnQKPj4gewo+ PiAgIGNoYXIgKnBfbmFtZTsKPj4gICBjaGFyICoqcF9hbGlhc2VzOwo+PiAgIGludCBwX3Byb3Rv Owo+PiB9Owo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gdm9pZCBzZXRwcm90b2VudCAoaW50 IF9fc3RheV9vcGVuKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIHZvaWQgZW5kcHJvdG9lbnQg KHZvaWQpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gc3RydWN0IHByb3RvZW50ICpnZXRw cm90b2VudCAodm9pZCk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBzdHJ1Y3QgcHJvdG9lbnQg KmdldHByb3RvYnluYW1lIChjb25zdCBjaGFyICpfX25hbWUpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBl eHRlcm4gc3RydWN0IHByb3RvZW50ICpnZXRwcm90b2J5bnVtYmVyIChpbnQgX19wcm90byk7Cj4+ ICMgMzc0ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0Cj4+IGV4dGVybiBpbnQgZ2V0cHJvdG9l bnRfciAoc3RydWN0IHByb3RvZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKPj4gICAgICBj aGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCj4+ICAgICAgc3RydWN0IHBy b3RvZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCk7Cj4+Cj4+IGV4dGVybiBpbnQgZ2V0cHJvdG9i eW5hbWVfciAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCj4+ICAgICAgICAgc3RydWN0 IHByb3RvZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKPj4gICAgICAgICBjaGFyICpfX3Jl c3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCj4+ICAgICAgICAgc3RydWN0IHByb3RvZW50 ICoqX19yZXN0cmljdCBfX3Jlc3VsdCk7Cj4+Cj4+IGV4dGVybiBpbnQgZ2V0cHJvdG9ieW51bWJl cl9yIChpbnQgX19wcm90bywKPj4gICAgICAgICAgIHN0cnVjdCBwcm90b2VudCAqX19yZXN0cmlj dCBfX3Jlc3VsdF9idWYsCj4+ICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXpl X3QgX19idWZsZW4sCj4+ICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9f cmVzdWx0KTsKPj4gIyAzOTUgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4gZXh0ZXJuIGlu dCBzZXRuZXRncmVudCAoY29uc3QgY2hhciAqX19uZXRncm91cCk7Cj4+Cj4+Cj4+Cj4+Cj4+Cj4+ Cj4+Cj4+IGV4dGVybiB2b2lkIGVuZG5ldGdyZW50ICh2b2lkKTsKPj4gIyA0MTIgIi91c3IvaW5j bHVkZS9uZXRkYi5oIiAzIDQKPj4gZXh0ZXJuIGludCBnZXRuZXRncmVudCAoY2hhciAqKl9fcmVz dHJpY3QgX19ob3N0cCwKPj4gICAgY2hhciAqKl9fcmVzdHJpY3QgX191c2VycCwKPj4gICAgY2hh ciAqKl9fcmVzdHJpY3QgX19kb21haW5wKTsKPj4gIyA0MjMgIi91c3IvaW5jbHVkZS9uZXRkYi5o IiAzIDQKPj4gZXh0ZXJuIGludCBpbm5ldGdyIChjb25zdCBjaGFyICpfX25ldGdyb3VwLCBjb25z dCBjaGFyICpfX2hvc3QsCj4+ICAgICAgIGNvbnN0IGNoYXIgKl9fdXNlciwgY29uc3QgY2hhciAq X19kb21haW4pOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGdldG5ldGdyZW50 X3IgKGNoYXIgKipfX3Jlc3RyaWN0IF9faG9zdHAsCj4+ICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg X191c2VycCwKPj4gICAgICBjaGFyICoqX19yZXN0cmljdCBfX2RvbWFpbnAsCj4+ICAgICAgY2hh ciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuKTsKPj4gIyA0NTEgIi91c3Iv aW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4gZXh0ZXJuIGludCByY21kIChjaGFyICoqX19yZXN0cmlj dCBfX2Fob3N0LCB1bnNpZ25lZCBzaG9ydCBpbnQgX19ycG9ydCwKPj4gICAgY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2xvY3VzZXIsCj4+ICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19yZW11 c2VyLAo+PiAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9fcmVzdHJpY3Qg X19mZDJwKTsKPj4gIyA0NjMgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4gZXh0ZXJuIGlu dCByY21kX2FmIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCB1bnNpZ25lZCBzaG9ydCBpbnQg X19ycG9ydCwKPj4gICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2xvY3VzZXIsCj4+ICAg ICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19yZW11c2VyLAo+PiAgICAgICBjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwLAo+PiAgICAgICBzYV9m YW1pbHlfdCBfX2FmKTsKPj4gIyA0NzkgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4gZXh0 ZXJuIGludCByZXhlYyAoY2hhciAqKl9fcmVzdHJpY3QgX19haG9zdCwgaW50IF9fcnBvcnQsCj4+ ICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4gICAgIGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19wYXNzLAo+PiAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2NtZCwgaW50 ICpfX3Jlc3RyaWN0IF9fZmQycCk7Cj4+ICMgNDkxICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0 Cj4+IGV4dGVybiBpbnQgcmV4ZWNfYWYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYWhvc3QsIGludCBf X3Jwb3J0LAo+PiAgICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCj4+ICAgICAg ICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGFzcywKPj4gICAgICAgIGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19jbWQsIGludCAqX19yZXN0cmljdCBfX2ZkMnAsCj4+ICAgICAgICBzYV9mYW1p bHlfdCBfX2FmKTsKPj4gIyA1MDUgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKPj4gZXh0ZXJu IGludCBydXNlcm9rIChjb25zdCBjaGFyICpfX3Job3N0LCBpbnQgX19zdXNlciwKPj4gICAgICAg Y29uc3QgY2hhciAqX19yZW11c2VyLCBjb25zdCBjaGFyICpfX2xvY3VzZXIpOwo+PiAjIDUxNSAi L3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAo+PiBleHRlcm4gaW50IHJ1c2Vyb2tfYWYgKGNvbnN0 IGNoYXIgKl9fcmhvc3QsIGludCBfX3N1c2VyLAo+PiAgICAgICAgICBjb25zdCBjaGFyICpfX3Jl bXVzZXIsIGNvbnN0IGNoYXIgKl9fbG9jdXNlciwKPj4gICAgICAgICAgc2FfZmFtaWx5X3QgX19h Zik7Cj4+ICMgNTI4ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0Cj4+IGV4dGVybiBpbnQgaXJ1 c2Vyb2sgKHVpbnQzMl90IF9fcmFkZHIsIGludCBfX3N1c2VyLAo+PiAgICAgICAgY29uc3QgY2hh ciAqX19yZW11c2VyLCBjb25zdCBjaGFyICpfX2xvY3VzZXIpOwo+PiAjIDUzOSAiL3Vzci9pbmNs dWRlL25ldGRiLmgiIDMgNAo+PiBleHRlcm4gaW50IGlydXNlcm9rX2FmIChjb25zdCB2b2lkICpf X3JhZGRyLCBpbnQgX19zdXNlciwKPj4gICAgY29uc3QgY2hhciAqX19yZW11c2VyLCBjb25zdCBj aGFyICpfX2xvY3VzZXIsCj4+ICAgIHNhX2ZhbWlseV90IF9fYWYpOwo+PiAjIDU1MSAiL3Vzci9p bmNsdWRlL25ldGRiLmgiIDMgNAo+PiBleHRlcm4gaW50IHJyZXN2cG9ydCAoaW50ICpfX2FscG9y dCk7Cj4+ICMgNTYwICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0Cj4+IGV4dGVybiBpbnQgcnJl c3Zwb3J0X2FmIChpbnQgKl9fYWxwb3J0LCBzYV9mYW1pbHlfdCBfX2FmKTsKPj4KPj4KPj4KPj4K Pj4KPj4KPj4gc3RydWN0IGFkZHJpbmZvCj4+IHsKPj4gICBpbnQgYWlfZmxhZ3M7Cj4+ICAgaW50 IGFpX2ZhbWlseTsKPj4gICBpbnQgYWlfc29ja3R5cGU7Cj4+ICAgaW50IGFpX3Byb3RvY29sOwo+ PiAgIHNvY2tsZW5fdCBhaV9hZGRybGVuOwo+PiAgIHN0cnVjdCBzb2NrYWRkciAqYWlfYWRkcjsK Pj4gICBjaGFyICphaV9jYW5vbm5hbWU7Cj4+ICAgc3RydWN0IGFkZHJpbmZvICphaV9uZXh0Owo+ PiB9Owo+PiAjIDY2MiAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAo+PiBleHRlcm4gaW50IGdl dGFkZHJpbmZvIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKPj4gICAgY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX3NlcnZpY2UsCj4+ICAgIGNvbnN0IHN0cnVjdCBhZGRyaW5mbyAqX19y ZXN0cmljdCBfX3JlcSwKPj4gICAgc3RydWN0IGFkZHJpbmZvICoqX19yZXN0cmljdCBfX3BhaSk7 Cj4+Cj4+Cj4+IGV4dGVybiB2b2lkIGZyZWVhZGRyaW5mbyAoc3RydWN0IGFkZHJpbmZvICpfX2Fp KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+PiBleHRl cm4gY29uc3QgY2hhciAqZ2FpX3N0cmVycm9yIChpbnQgX19lY29kZSkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4KPj4KPj4gZXh0ZXJuIGludCBn ZXRuYW1laW5mbyAoY29uc3Qgc3RydWN0IHNvY2thZGRyICpfX3Jlc3RyaWN0IF9fc2EsCj4+ICAg IHNvY2tsZW5fdCBfX3NhbGVuLCBjaGFyICpfX3Jlc3RyaWN0IF9faG9zdCwKPj4gICAgc29ja2xl bl90IF9faG9zdGxlbiwgY2hhciAqX19yZXN0cmljdCBfX3NlcnYsCj4+ICAgIHNvY2tsZW5fdCBf X3NlcnZsZW4sIGludCBfX2ZsYWdzKTsKPj4gIyA3MTMgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAz IDQKPj4KPj4gIyA4MSAibWFjaGluZS5jIiAyCj4+Cj4+ICMgMSAiL3Vzci9pbmNsdWRlL2FycGEv aW5ldC5oIiAxIDMgNAo+PiAjIDMwICIvdXNyL2luY2x1ZGUvYXJwYS9pbmV0LmgiIDMgNAo+Pgo+ Pgo+Pgo+Pgo+PiBleHRlcm4gaW5fYWRkcl90IGluZXRfYWRkciAoY29uc3QgY2hhciAqX19jcCkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4gZXh0ZXJu IGluX2FkZHJfdCBpbmV0X2xuYW9mIChzdHJ1Y3QgaW5fYWRkciBfX2luKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gc3RydWN0IGlu X2FkZHIgaW5ldF9tYWtlYWRkciAoaW5fYWRkcl90IF9fbmV0LCBpbl9hZGRyX3QgX19ob3N0KQo+ PiAgICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+ IGV4dGVybiBpbl9hZGRyX3QgaW5ldF9uZXRvZiAoc3RydWN0IGluX2FkZHIgX19pbikgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4KPj4KPj4gZXh0ZXJuIGlu X2FkZHJfdCBpbmV0X25ldHdvcmsgKGNvbnN0IGNoYXIgKl9fY3ApIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBjaGFyICppbmV0X250 b2EgKHN0cnVjdCBpbl9hZGRyIF9faW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgaW5ldF9wdG9uIChpbnQgX19hZiwg Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2NwLAo+PiAgICAgICAgIHZvaWQgKl9fcmVzdHJpY3Qg X19idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+ Cj4+Cj4+IGV4dGVybiBjb25zdCBjaGFyICppbmV0X250b3AgKGludCBfX2FmLCBjb25zdCB2b2lk ICpfX3Jlc3RyaWN0IF9fY3AsCj4+ICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNv Y2tsZW5fdCBfX2xlbikKPj4gICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBleHRlcm4gaW50IGluZXRfYXRvbiAoY29uc3Qg Y2hhciAqX19jcCwgc3RydWN0IGluX2FkZHIgKl9faW5wKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gY2hhciAqaW5ldF9uZXRhIChp bl9hZGRyX3QgX19uZXQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBjaGFyICpp bmV0X25ldF9udG9wIChpbnQgX19hZiwgY29uc3Qgdm9pZCAqX19jcCwgaW50IF9fYml0cywKPj4g ICAgICAgIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7Cj4+Cj4+Cj4+Cj4+Cj4+IGV4dGVybiBpbnQgaW5ldF9uZXRfcHRv biAoaW50IF9fYWYsIGNvbnN0IGNoYXIgKl9fY3AsCj4+ICAgICAgdm9pZCAqX19idWYsIHNpemVf dCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKPj4KPj4K Pj4KPj4KPj4gZXh0ZXJuIHVuc2lnbmVkIGludCBpbmV0X25zYXBfYWRkciAoY29uc3QgY2hhciAq X19jcCwKPj4gICAgICAgICB1bnNpZ25lZCBjaGFyICpfX2J1ZiwgaW50IF9fbGVuKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwo+Pgo+Pgo+Pgo+PiBleHRlcm4gY2hh ciAqaW5ldF9uc2FwX250b2EgKGludCBfX2xlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqX19jcCwK Pj4gICAgICAgICBjaGFyICpfX2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKPj4KPj4KPj4KPj4gIyA4MyAibWFjaGluZS5jIiAyCj4+ICMgMTM1ICJtYWNoaW5l LmMiCj4+Cj4+ICMgMTM1ICJtYWNoaW5lLmMiCj4+IHN0YXRpYyBQbExvbmcgc3RhcnRfdXNlcl90 aW1lID0gMDsKPj4gc3RhdGljIFBsTG9uZyBzdGFydF9zeXN0ZW1fdGltZSA9IDA7Cj4+IHN0YXRp YyBQbExvbmcgc3RhcnRfcmVhbF90aW1lID0gMDsKPj4KPj4gc3RhdGljIGludCBjdXJfc2VlZCA9 IDE7Cj4+ICMgMTUwICJtYWNoaW5lLmMiCj4+IHN0YXRpYyBjaGFyICpIb3N0X05hbWVfRnJvbV9B bGlhcyhzdHJ1Y3QgaG9zdGVudCAqaG9zdF9lbnRyeSk7Cj4+ICMgMTY3ICJtYWNoaW5lLmMiCj4+ IHZvaWQKPj4gUGxfSW5pdF9NYWNoaW5lKHZvaWQpCj4+IHsKPj4gICB0enNldCgpOwo+Pgo+PiAg IHN0YXJ0X3VzZXJfdGltZSA9IFBsX01fVXNlcl9UaW1lKCk7Cj4+ICAgc3RhcnRfc3lzdGVtX3Rp bWUgPSBQbF9NX1N5c3RlbV9UaW1lKCk7Cj4+ICAgc3RhcnRfcmVhbF90aW1lID0gUGxfTV9SZWFs X1RpbWUoKTsKPj4KPj4KPj4gICBtYWxsb3B0KAo+PiAjIDE3NyAibWFjaGluZS5jIiAzIDQKPj4g ICAgICAgICAgLTQKPj4gIyAxNzcgIm1hY2hpbmUuYyIKPj4gICAgICAgICAgICAgICAgICAgICwg MCk7Cj4+Cj4+Cj4+ICAgUGxfSW5pdF9NYWNoaW5lMSgpOwo+PiB9Cj4+ICMgMTkwICJtYWNoaW5l LmMiCj4+IGNoYXIgKgo+PiBQbF9NX1N5c19FcnJfU3RyaW5nKGludCByZXRfdmFsKQo+PiB7Cj4+ Cj4+Cj4+Cj4+Cj4+Cj4+ICAgY2hhciAqc3RyOwo+PiAgIHN0YXRpYyBjaGFyIGJ1ZmZbNjRdOwo+ PiAjIDIyNiAibWFjaGluZS5jIgo+PiAgIHN0ciA9IHN0cmVycm9yKAo+PiAjIDIyNiAibWFjaGlu ZS5jIiAzIDQKPj4gICAgICAgICAgICAgICAgICgqX19lcnJub19sb2NhdGlvbiAoKSkKPj4gIyAy MjYgIm1hY2hpbmUuYyIKPj4gICAgICAgICAgICAgICAgICAgICAgKTsKPj4KPj4KPj4gICBpZiAo c3RyKQo+PiAgICAgcmV0dXJuIHN0cjsKPj4KPj4gICBzcHJpbnRmKGJ1ZmYsICJVbmtub3duIGVy cm9yICglZCkiLCAKPj4gIyAyMzIgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKl9fZXJybm9fbG9jYXRpb24gKCkpCj4+ICMgMjMyICJtYWNoaW5l LmMiCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cj4+ICAgcmV0 dXJuIGJ1ZmY7Cj4+IH0KPj4gIyAyNDQgIm1hY2hpbmUuYyIKPj4gUGxMb25nCj4+IFBsX01fVXNl cl9UaW1lKHZvaWQpCj4+IHsKPj4gICBQbExvbmcgdXNlcl90aW1lOwo+Pgo+Pgo+PiAgIHN0cnVj dCBydXNhZ2UgcnNyX3VzYWdlOwo+Pgo+PiAgIGdldHJ1c2FnZSgKPj4gIyAyNTIgIm1hY2hpbmUu YyIgMyA0Cj4+ICAgICAgICAgICAgUlVTQUdFX1NFTEYKPj4gIyAyNTIgIm1hY2hpbmUuYyIKPj4g ICAgICAgICAgICAgICAgICAgICAgICwgJnJzcl91c2FnZSk7Cj4+Cj4+ICAgdXNlcl90aW1lID0g KHJzcl91c2FnZS5ydV91dGltZS50dl9zZWMgKiAxMDAwKSArCj4+ICAgICAocnNyX3VzYWdlLnJ1 X3V0aW1lLnR2X3VzZWMgLyAxMDAwKTsKPj4gIyAyNzUgIm1hY2hpbmUuYyIKPj4gICByZXR1cm4g dXNlcl90aW1lIC0gc3RhcnRfdXNlcl90aW1lOwo+PiB9Cj4+ICMgMjg2ICJtYWNoaW5lLmMiCj4+ IFBsTG9uZwo+PiBQbF9NX1N5c3RlbV9UaW1lKHZvaWQpCj4+IHsKPj4gICBQbExvbmcgc3lzdGVt X3RpbWU7Cj4+Cj4+Cj4+ICAgc3RydWN0IHJ1c2FnZSByc3JfdXNhZ2U7Cj4+Cj4+ICAgZ2V0cnVz YWdlKAo+PiAjIDI5NCAibWFjaGluZS5jIiAzIDQKPj4gICAgICAgICAgICBSVVNBR0VfU0VMRgo+ PiAjIDI5NCAibWFjaGluZS5jIgo+PiAgICAgICAgICAgICAgICAgICAgICAgLCAmcnNyX3VzYWdl KTsKPj4KPj4gICBzeXN0ZW1fdGltZSA9IChyc3JfdXNhZ2UucnVfc3RpbWUudHZfc2VjICogMTAw MCkgKwo+PiAgICAgKHJzcl91c2FnZS5ydV9zdGltZS50dl91c2VjIC8gMTAwMCk7Cj4+ICMgMzE3 ICJtYWNoaW5lLmMiCj4+ICAgcmV0dXJuIHN5c3RlbV90aW1lIC0gc3RhcnRfc3lzdGVtX3RpbWU7 Cj4+IH0KPj4gIyAzMjggIm1hY2hpbmUuYyIKPj4gUGxMb25nCj4+IFBsX01fUmVhbF9UaW1lKHZv aWQpCj4+IHsKPj4gICBQbExvbmcgcmVhbF90aW1lOwo+Pgo+Pgo+PiAgIHN0cnVjdCB0aW1ldmFs IHR2Owo+Pgo+PiAgIGdldHRpbWVvZmRheSgmdHYsIAo+PiAjIDMzNiAibWFjaGluZS5jIiAzIDQK Pj4gICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCj4+ICMgMzM2ICJtYWNoaW5lLmMiCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgKTsKPj4gICByZWFsX3RpbWUgPSAodHYudHZfc2VjICog MTAwMCkgKyAodHYudHZfdXNlYyAvIDEwMDApOwo+PiAjIDM1MCAibWFjaGluZS5jIgo+PiAgIHJl dHVybiByZWFsX3RpbWUgLSBzdGFydF9yZWFsX3RpbWU7Cj4+IH0KPj4gIyAzNjcgIm1hY2hpbmUu YyIKPj4gdm9pZAo+PiBQbF9NX1JhbmRvbWl6ZSh2b2lkKQo+PiB7Cj4+ICAgc3RhdGljIGludCBj b3VudCA9IDA7Cj4+Cj4+Cj4+Cj4+ICAgc3RydWN0IHRpbWV2YWwgdHY7Cj4+ICAgaW50IHNlZWQ7 Cj4+Cj4+ICAgZ2V0dGltZW9mZGF5KCZ0diwgCj4+ICMgMzc3ICJtYWNoaW5lLmMiIDMgNAo+PiAg ICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkKPj4gIyAzNzcgIm1hY2hpbmUuYyIKPj4gICAg ICAgICAgICAgICAgICAgICAgICApOwo+PiAgIHNlZWQgPSAodHYudHZfc2VjICogMTAwMCkgKyAo dHYudHZfdXNlYyAvIDEwMDApOwo+Pgo+PiAgIGNvdW50ID0gKGNvdW50ICsgcmFuZCgpKSAlIDB4 RkZGRjsKPj4gICBzZWVkID0gc2VlZCBeIChnZXRwaWQoKSA8PCAoc2VlZCAmIDB4RkYpKTsKPj4g ICBzZWVkICo9IGNvdW50Owo+PiAgIHNlZWQgPSBzZWVkICYgMHhGRkZGRkY7Cj4+Cj4+ICAgUGxf TV9TZXRfU2VlZChzZWVkKTsKPj4gfQo+PiAjIDM5NSAibWFjaGluZS5jIgo+PiB2b2lkCj4+IFBs X01fU2V0X1NlZWQoaW50IG4pCj4+IHsKPj4gICBjdXJfc2VlZCA9IG47Cj4+ICAgc3JhbmQoY3Vy X3NlZWQpOwo+PiB9Cj4+ICMgNDA5ICJtYWNoaW5lLmMiCj4+IGludAo+PiBQbF9NX0dldF9TZWVk KHZvaWQpCj4+IHsKPj4gICByZXR1cm4gY3VyX3NlZWQ7Cj4+IH0KPj4gIyA0MjMgIm1hY2hpbmUu YyIKPj4gaW50Cj4+IFBsX01fUmFuZG9tX0ludGVnZXIoaW50IG4pCj4+IHsKPj4gICByZXR1cm4g KGludCkgKChkb3VibGUpIG4gKiByYW5kKCkgLyAoCj4+ICMgNDI2ICJtYWNoaW5lLmMiIDMgNAo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxNDc0ODM2NDcgCj4+ICMg NDI2ICJtYWNoaW5lLmMiCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKyAxLjApKTsKPj4gfQo+PiAjIDQzNyAibWFjaGluZS5jIgo+PiBkb3VibGUKPj4g UGxfTV9SYW5kb21fRmxvYXQoZG91YmxlIG4pCj4+IHsKPj4gICByZXR1cm4gbiAqIHJhbmQoKSAv ICgKPj4gIyA0NDAgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAgICAgICAgICAgICAyMTQ3 NDgzNjQ3IAo+PiAjIDQ0MCAibWFjaGluZS5jIgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKyAxLjApOwo+PiB9Cj4+ICMgNDUxICJtYWNoaW5lLmMiCj4+IGNoYXIgKgo+PiBQbF9N X0hvc3RfTmFtZV9Gcm9tX05hbWUoY2hhciAqaG9zdF9uYW1lKQo+PiB7Cj4+ICAgc3RhdGljIGNo YXIgYnVmZls0MDk2XTsKPj4KPj4KPj4gICBzdHJ1Y3QgaG9zdGVudCAqaG9zdF9lbnRyeTsKPj4K Pj4KPj4gICBpZiAoaG9zdF9uYW1lID09IAo+PiAjIDQ2MCAibWFjaGluZS5jIiAzIDQKPj4gICAg ICAgICAgICAgICAgICAgKCh2b2lkICopMCkKPj4gIyA0NjAgIm1hY2hpbmUuYyIKPj4gICAgICAg ICAgICAgICAgICAgICAgICkKPj4gICAgIHsKPj4gICAgICAgUGxMb25nIGxlbmd0aCA9IHNpemVv ZihidWZmKTsKPj4gICAgICAgaG9zdF9uYW1lID0gYnVmZjsKPj4KPj4KPj4KPj4gICAgICAgaWYg KGdldGhvc3RuYW1lKGJ1ZmYsIGxlbmd0aCkpCj4+Cj4+ICAgICAgICAgewo+PiAgICAgICAgICAg c3RyY3B5KGJ1ZmYsICJ1bmtub3duIGhvc3QgbmFtZSIpOwo+PiAgICAgICAgICAgZ290byBmaW5p c2g7Cj4+ICAgICAgICAgfQo+PiAgICAgfQo+Pgo+PiAgIGlmIChzdHJjaHIoaG9zdF9uYW1lLCAn LicpICE9IAo+PiAjIDQ3NSAibWFjaGluZS5jIiAzIDQKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgodm9pZCAqKTApCj4+ICMgNDc1ICJtYWNoaW5lLmMiCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKQo+PiAgICAgZ290byBmaW5pc2g7Cj4+Cj4+Cj4+Cj4+ ICAgaG9zdF9lbnRyeSA9IGdldGhvc3RieW5hbWUoaG9zdF9uYW1lKTsKPj4gICBpZiAoaG9zdF9l bnRyeSA9PSAKPj4gIyA0ODEgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAgICAgICAgICAo KHZvaWQgKikwKQo+PiAjIDQ4MSAibWFjaGluZS5jIgo+PiAgICAgICAgICAgICAgICAgICAgICAg ICkKPj4gICAgIGdvdG8gZmluaXNoOwo+Pgo+PiAgIGhvc3RfbmFtZSA9IEhvc3RfTmFtZV9Gcm9t X0FsaWFzKGhvc3RfZW50cnkpOwo+Pgo+Pgo+Pgo+PiBmaW5pc2g6Cj4+ICAgcmV0dXJuIGhvc3Rf bmFtZTsKPj4gfQo+PiAjIDQ5OSAibWFjaGluZS5jIgo+PiBjaGFyICoKPj4gUGxfTV9Ib3N0X05h bWVfRnJvbV9BZHIoY2hhciAqaG9zdF9hZGRyZXNzKQo+PiB7Cj4+Cj4+ICAgc3RydWN0IGhvc3Rl bnQgKmhvc3RfZW50cnk7Cj4+ICAgc3RydWN0IGluX2FkZHIgaWFkcjsKPj4KPj4KPj4KPj4KPj4K Pj4KPj4gICBpZiAoaW5ldF9hdG9uKGhvc3RfYWRkcmVzcywgJmlhZHIpID09IDApCj4+Cj4+ICAg ICByZXR1cm4gMDsKPj4KPj4gICBob3N0X2VudHJ5ID0gZ2V0aG9zdGJ5YWRkcigoY2hhciAqKSAm aWFkciwgc2l6ZW9mKGlhZHIpLCAKPj4gIyA1MTUgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCj4+ICMg NTE1ICJtYWNoaW5lLmMiCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKPj4gICBpZiAoaG9zdF9lbnRyeSA9PSAKPj4g IyA1MTYgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQo+ PiAjIDUxNiAibWFjaGluZS5jIgo+PiAgICAgICAgICAgICAgICAgICAgICAgICkKPj4gICAgIHJl dHVybiAKPj4gIyA1MTcgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAoKHZvaWQgKikwKQo+ PiAjIDUxNyAibWFjaGluZS5jIgo+PiAgICAgICAgICAgICAgIDsKPj4KPj4gICByZXR1cm4gSG9z dF9OYW1lX0Zyb21fQWxpYXMoaG9zdF9lbnRyeSk7Cj4+Cj4+Cj4+Cj4+IH0KPj4gIyA1MzQgIm1h Y2hpbmUuYyIKPj4gc3RhdGljIGNoYXIgKgo+PiBIb3N0X05hbWVfRnJvbV9BbGlhcyhzdHJ1Y3Qg aG9zdGVudCAqaG9zdF9lbnRyeSkKPj4gewo+PiAgIGNoYXIgKm5hbWU7Cj4+ICAgY2hhciAqKmFs aWFzOwo+PiAgIGNoYXIgKnA7Cj4+Cj4+ICAgbmFtZSA9IChjaGFyICopIGhvc3RfZW50cnktPmhf bmFtZTsKPj4gICBhbGlhcyA9IGhvc3RfZW50cnktPmhfYWxpYXNlczsKPj4gICB3aGlsZSAoKHAg PSBzdHJjaHIobmFtZSwgJy4nKSkgPT0gCj4+ICMgNTQzICJtYWNoaW5lLmMiIDMgNAo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApIAo+PiAjIDU0MyAibWFj aGluZS5jIgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKmFs aWFzKQo+PiAgICAgbmFtZSA9ICphbGlhcysrOwo+Pgo+PiAgIGlmIChwKQo+PiAgICAgcmV0dXJu IG5hbWU7Cj4+Cj4+ICAgcmV0dXJuIChjaGFyICopIGhvc3RfZW50cnktPmhfbmFtZTsKPj4gfQo+ PiAjIDU2MSAibWFjaGluZS5jIgo+PiBCb29sCj4+IFBsX01fU2V0X1dvcmtpbmdfRGlyKGNoYXIg KnBhdGgpCj4+IHsKPj4gICBjaGFyICpuZXdfcGF0aCA9IFBsX01fQWJzb2x1dGVfUGF0aF9OYW1l KHBhdGgpOwo+Pgo+PiAgIHJldHVybiAobmV3X3BhdGggIT0gCj4+ICMgNTY2ICJtYWNoaW5lLmMi IDMgNAo+PiAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKSAKPj4gIyA1NjYgIm1hY2hp bmUuYyIKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBjaGRpcihuZXdfcGF0aCkgPT0g MCk7Cj4+IH0KPj4gIyA1NzYgIm1hY2hpbmUuYyIKPj4gY2hhciAqCj4+IFBsX01fR2V0X1dvcmtp bmdfRGlyKHZvaWQpCj4+IHsKPj4gICBzdGF0aWMgY2hhciBjdXJfd29ya19kaXJbCj4+ICMgNTc5 ICJtYWNoaW5lLmMiIDMgNAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwOTYKPj4gIyA1 NzkgIm1hY2hpbmUuYyIKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsK Pj4KPj4gICBpZiAoZ2V0Y3dkKGN1cl93b3JrX2Rpciwgc2l6ZW9mKGN1cl93b3JrX2RpcikgLSAx KSA9PSAKPj4gIyA1ODEgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQo+PiAjIDU4MSAibWFj aGluZS5jIgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKPj4gICAgIHN0cmNweShjdXJfd29ya19kaXIsICIuIik7Cj4+ICAgcmV0 dXJuIGN1cl93b3JrX2RpcjsKPj4gfQo+PiAjIDU5NCAibWFjaGluZS5jIgo+PiBjaGFyICoKPj4g UGxfTV9BYnNvbHV0ZV9QYXRoX05hbWUoY2hhciAqc3JjKQo+PiB7Cj4+ICAgc3RhdGljIGNoYXIg YnVmZlsyXVsKPj4gIyA1OTcgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAgICAgICAgICAg IDQwOTYKPj4gIyA1OTcgIm1hY2hpbmUuYyIKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF07Cj4+ICAgaW50IHJlcyA9IDA7Cj4+ICAgY2hhciAqZHN0Owo+PiAgIGNoYXIgKnAsICpx Owo+PiAgIGNoYXIgYzsKPj4KPj4gICBkc3QgPSBidWZmW3Jlc107Cj4+ICAgd2hpbGUgKCgqZHN0 KysgPSAqc3JjKSkKPj4gICAgIHsKPj4gICAgICAgYyA9ICpzcmMrKzsKPj4gICAgICAgaWYgKGMg PT0gJyQnCj4+Cj4+Cj4+Cj4+ICAgICAgICAgKQo+PiAgICAgICAgIHsKPj4gICAgICAgICAgIHAg PSBkc3Q7Cj4+ICAgICAgICAgICB3aGlsZSAoCj4+ICMgNjE0ICJtYWNoaW5lLmMiIDMgNAo+PiAg ICAgICAgICAgICAgICAgKCgqX19jdHlwZV9iX2xvYyAoKSlbKGludCkgKCgKPj4gIyA2MTQgIm1h Y2hpbmUuYyIKPj4gICAgICAgICAgICAgICAgICpzcmMKPj4gIyA2MTQgIm1hY2hpbmUuYyIgMyA0 Cj4+ICAgICAgICAgICAgICAgICApKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSBfSVNhbG51bSkg Cj4+ICMgNjE0ICJtYWNoaW5lLmMiCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8 ICpzcmMgPT0gJ18nKQo+PiAgICAgICAgICAgICAqZHN0KysgPSAqc3JjKys7Cj4+Cj4+Cj4+Cj4+ Cj4+ICAgICAgICAgICAqZHN0ID0gJ1wwJzsKPj4gICAgICAgICAgIHEgPSBnZXRlbnYocCk7Cj4+ ICAgICAgICAgICBpZiAocSkKPj4gICAgICAgICAgICAgewo+PiAgICAgICAgICAgICAgIHAtLTsK Pj4gICAgICAgICAgICAgICBzdHJjcHkocCwgcSk7Cj4+ICAgICAgICAgICAgICAgZHN0ID0gcCAr IHN0cmxlbihwKTsKPj4KPj4KPj4KPj4KPj4gICAgICAgICAgICAgfQo+Pgo+Pgo+Pgo+Pgo+PiAg ICAgICAgIH0KPj4gICAgIH0KPj4gICAqZHN0ID0gJ1wwJzsKPj4KPj4gICBpZiAoYnVmZltyZXNd WzBdID09ICd+JykKPj4gICAgIHsKPj4gICAgICAgaWYgKCgoYnVmZltyZXNdWzFdKSA9PSAnLycg fHwgKGJ1ZmZbcmVzXVsxXSkgPT0gJy8nKSB8fCBidWZmW3Jlc11bMV0gPT0gJ1wwJykKPj4gICAg ICAgICB7Cj4+ICAgIHEgPSAKPj4gIyA2NDQgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICgodm9p ZCAqKTApCj4+ICMgNjQ0ICJtYWNoaW5lLmMiCj4+ICAgICAgICAgICA7Owo+PiAgICAgICAgICAg aWYgKChwID0gZ2V0ZW52KCJIT01FIikpID09IAo+PiAjIDY0NSAibWFjaGluZS5jIiAzIDQKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCj4+ICMgNjQ1 ICJtYWNoaW5lLmMiCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KQo+PiAgICAgIHsKPj4KPj4KPj4KPj4KPj4KPj4gICAgICAgIHJldHVybiAKPj4gIyA2NTIgIm1h Y2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAgICAoKHZvaWQgKikwKQo+PiAjIDY1MiAibWFjaGlu ZS5jIgo+PiAgICAgICAgICAgICAgICAgIDsKPj4KPj4gICAgICB9Cj4+ICAgIGlmIChxID09IAo+ PiAjIDY1NSAibWFjaGluZS5jIiAzIDQKPj4gICAgICAgICAgICAoKHZvaWQgKikwKQo+PiAjIDY1 NSAibWFjaGluZS5jIgo+PiAgICAgICAgICAgICAgICApCj4+ICAgICAgcSA9ICIiOwo+PiAgICAg ICAgICAgc3ByaW50ZihidWZmWzEgLSByZXNdLCAiJXMlcy8lcyIsIHEsIHAsIGJ1ZmZbcmVzXSAr IDEpOwo+PiAgICAgICAgICAgcmVzID0gMSAtIHJlczsKPj4gICAgICAgICB9Cj4+Cj4+ICAgICAg IGVsc2UKPj4gICAgICAgICB7Cj4+ICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICpwdzsKPj4KPj4g ICAgICAgICAgIHAgPSBidWZmW3Jlc10gKyAxOwo+PiAgICAgICAgICAgd2hpbGUgKCpwICYmICEo KCpwKSA9PSAnLycgfHwgKCpwKSA9PSAnLycpKQo+PiAgICAgICAgICAgICBwKys7Cj4+Cj4+ICAg ICAgICAgICBidWZmW3Jlc11bMF0gPSAqcDsKPj4gICAgICAgICAgICpwID0gJ1wwJzsKPj4gICAg ICAgICAgIGlmICgocHcgPSBnZXRwd25hbShidWZmW3Jlc10gKyAxKSkgPT0gCj4+ICMgNjcxICJt YWNoaW5lLmMiIDMgNAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgodm9pZCAqKTApCj4+ICMgNjcxICJtYWNoaW5lLmMiCj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKPj4gICAgICAgICAgICAgcmV0 dXJuIAo+PiAjIDY3MiAibWFjaGluZS5jIiAzIDQKPj4gICAgICAgICAgICAgICAgICAgKCh2b2lk ICopMCkKPj4gIyA2NzIgIm1hY2hpbmUuYyIKPj4gICAgICAgICAgICAgICAgICAgICAgIDsKPj4K Pj4gICAgICAgICAgICpwID0gYnVmZltyZXNdWzBdOwo+Pgo+PiAgICAgICAgICAgc3ByaW50Zihi dWZmWzEgLSByZXNdLCAiJXMvJXMiLCBwdy0+cHdfZGlyLCBwKTsKPj4gICAgICAgICAgIHJlcyA9 IDEgLSByZXM7Cj4+ICAgICAgICAgfQo+Pgo+PiAgICAgfQo+Pgo+PiAgIGlmIChzdHJjbXAoYnVm ZltyZXNdLCAidXNlciIpID09IDApCj4+ICAgICByZXR1cm4gYnVmZltyZXNdOwo+PiAjIDcwNiAi bWFjaGluZS5jIgo+PiAgIGlmIChidWZmW3Jlc11bMF0gIT0gJy8nKQo+PiAgICAgewo+PiAgICAg ICBzcHJpbnRmKGJ1ZmZbMSAtIHJlc10sICIlcy8lcyIsIFBsX01fR2V0X1dvcmtpbmdfRGlyKCks IGJ1ZmZbcmVzXSk7Cj4+ICAgICAgIHJlcyA9IDEgLSByZXM7Cj4+ICAgICB9Cj4+Cj4+ICAgc3Jj ID0gYnVmZltyZXNdOwo+PiAgIHJlcyA9IDEgLSByZXM7Cj4+ICAgZHN0ID0gYnVmZltyZXNdOwo+ Pgo+PiAgIHdoaWxlICgoKmRzdCsrID0gKnNyYykpCj4+ICAgICB7Cj4+ICAgICAgIGlmICgqc3Jj KysgIT0gJy8nKQo+PiAgICAgICAgIGNvbnRpbnVlOwo+Pgo+PiAgICAgY29sbGFwc2U6Cj4+ICAg ICAgIHdoaWxlICgqc3JjID09ICcvJykKPj4gICAgICAgICBzcmMrKzsKPj4KPj4gICAgICAgaWYg KCpzcmMgIT0gJy4nKQo+PiAgICAgICAgIGNvbnRpbnVlOwo+Pgo+PiAgICAgICBpZiAoc3JjWzFd ID09ICcvJyB8fCBzcmNbMV0gPT0gJ1wwJykKPj4gICAgICAgICB7Cj4+ICAgICAgICAgICBzcmMr KzsKPj4gICAgICAgICAgIGdvdG8gY29sbGFwc2U7Cj4+ICAgICAgICAgfQo+Pgo+PiAgICAgICBp ZiAoc3JjWzFdICE9ICcuJyB8fCAoc3JjWzJdICE9ICcvJyAmJiBzcmNbMl0gIT0gJ1wwJykpCj4+ ICAgICAgICAgY29udGludWU7Cj4+Cj4+ICAgICAgIHNyYyArPSAyOwo+PiAgICAgICBwID0gZHN0 IC0gMjsKPj4gICAgICAgd2hpbGUgKHAgPj0gYnVmZltyZXNdICYmICpwICE9ICcvJykKPj4gICAg ICAgICBwLS07Cj4+Cj4+ICAgICAgIGlmIChwIDwgYnVmZltyZXNdKQo+PiAgICAgICAgIHJldHVy biAKPj4gIyA3NDMgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAgICAgKCh2b2lkICopMCkK Pj4gIyA3NDMgIm1hY2hpbmUuYyIKPj4gICAgICAgICAgICAgICAgICAgOwo+Pgo+PiAgICAgICBk c3QgPSBwOwo+PiAgICAgfQo+Pgo+PiAgIGRzdC0tOwo+PiAjIDc1OSAibWFjaGluZS5jIgo+PiAg IGlmIChkc3QgLSBidWZmW3Jlc10gPiAxICYmICgoZHN0Wy0xXSkgPT0gJy8nIHx8IChkc3RbLTFd KSA9PSAnLycpKQo+PiAgICAgZHN0Wy0xXSA9ICdcMCc7Cj4+Cj4+ICAgcmV0dXJuIGJ1ZmZbcmVz XTsKPj4gfQo+PiAjIDc3MyAibWFjaGluZS5jIgo+PiBCb29sCj4+IFBsX01fSXNfQWJzb2x1dGVf RmlsZV9OYW1lKGNoYXIgKnBhdGgpCj4+IHsKPj4gICBpZiAoKCgqcGF0aCkgPT0gJy8nIHx8ICgq cGF0aCkgPT0gJy8nKSkKPj4gICAgIHJldHVybiAxOwo+PiAjIDc5NSAibWFjaGluZS5jIgo+PiAg IHJldHVybiAwOwo+PiB9Cj4+ICMgODI5ICJtYWNoaW5lLmMiCj4+IGNoYXIgKgo+PiBQbF9NX0Rl Y29tcG9zZV9GaWxlX05hbWUoY2hhciAqcGF0aCwgQm9vbCBkZWxfdHJhaWxfc2xhc2hlcywgY2hh ciAqKmJhc2UsIGNoYXIgKipzdWZmaXgpCj4+IHsKPj4gICBzdGF0aWMgY2hhciBidWZmX2RpclsK Pj4gIyA4MzIgIm1hY2hpbmUuYyIgMyA0Cj4+ICAgICAgICAgICAgICAgICAgICAgICA0MDk2Cj4+ ICMgODMyICJtYWNoaW5lLmMiCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsK Pj4gICBzdGF0aWMgY2hhciBidWZmX2Jhc2VbCj4+ICMgODMzICJtYWNoaW5lLmMiIDMgNAo+PiAg ICAgICAgICAgICAgICAgICAgICAgIDQwOTYKPj4gIyA4MzMgIm1hY2hpbmUuYyIKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKPj4gICBpbnQgZGlyX3N0YXJ0X3BvcyA9IDA7 Cj4+ICMgODUyICJtYWNoaW5lLmMiCj4+ICAgY2hhciAqcDsKPj4KPj4gICBzdHJjcHkoYnVmZl9k aXIsIHBhdGgpOwo+Pgo+Pgo+Pgo+Pgo+Pgo+PiAgIGRvIHsgY2hhciAqX3B0cjsgZm9yKChwKSA9 IAo+PiAjIDg2MCAibWFjaGluZS5jIiAzIDQKPj4gICgodm9pZCAqKTApCj4+ICMgODYwICJtYWNo aW5lLmMiCj4+ICAsIF9wdHIgPSAoYnVmZl9kaXIpOyAqX3B0cjsgX3B0cisrKSBpZiAoKCgqX3B0 cikgPT0gJy8nIHx8ICgqX3B0cikgPT0gJy8nKSkgKHApID0gX3B0cjsgfSB3aGlsZSgwKTsKPj4K Pj4gICBwID0gKHAgPT0gCj4+ICMgODYyICJtYWNoaW5lLmMiIDMgNAo+PiAgICAgICAgICAgICgo dm9pZCAqKTApCj4+ICMgODYyICJtYWNoaW5lLmMiCj4+ICAgICAgICAgICAgICAgICkgPyBidWZm X2RpciArIGRpcl9zdGFydF9wb3MgOiBwICsgMTsKPj4KPj4gICBzdHJjcHkoYnVmZl9iYXNlLCBw KTsKPj4gICAqcCA9ICdcMCc7Cj4+Cj4+ICAgaWYgKChwID0gc3RycmNocihidWZmX2Jhc2UsICcu JykpICE9IAo+PiAjIDg2NyAibWFjaGluZS5jIiAzIDQKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQo+PiAjIDg2NyAibWFjaGluZS5jIgo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCj4+ICAgICAqc3VmZml4ID0g cDsKPj4gICBlbHNlCj4+ICAgICAqc3VmZml4ID0gYnVmZl9iYXNlICsgc3RybGVuKGJ1ZmZfYmFz ZSk7Cj4+Cj4+Cj4+Cj4+ICAgaWYgKGRlbF90cmFpbF9zbGFzaGVzKQo+PiAgICAgewo+PiAgICAg ICBpZiAoYnVmZl9kaXJbZGlyX3N0YXJ0X3Bvc10gPT0gJ1wwJykKPj4gIHN0cmNhdChidWZmX2Rp ciwgIi4iKTsKPj4gICAgICAgZWxzZQo+PiAgewo+PiAgICBpbnQgbGVuID0gc3RybGVuKGJ1ZmZf ZGlyKTsKPj4gICAgd2hpbGUoLS1sZW4gPj0gZGlyX3N0YXJ0X3BvcyAmJiAoKGJ1ZmZfZGlyW2xl bl0pID09ICcvJyB8fCAoYnVmZl9kaXJbbGVuXSkgPT0gJy8nKSkKPj4gICAgICA7Cj4+Cj4+ICAg IGlmIChsZW4gPCBkaXJfc3RhcnRfcG9zKQo+PiAgICAgIGxlbiA9IGRpcl9zdGFydF9wb3M7Cj4+ ICAgIGJ1ZmZfZGlyW2xlbiArIDFdID0gJ1wwJzsKPj4gIH0KPj4gICAgIH0KPj4KPj4KPj4KPj4K Pj4KPj4KPj4gICAqYmFzZSA9IGJ1ZmZfYmFzZTsKPj4KPj4gICByZXR1cm4gYnVmZl9kaXI7Cj4+ IH0KPiAKPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K Pj4gQnVnLXByb2xvZyBtYWlsaW5nIGxpc3QKPj4gQnVnLXByb2xvZ0BnbnUub3JnCj4+IGh0dHBz Oi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2J1Zy1wcm9sb2cKPiAKPiAKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpCdWctcHJvbG9nIG1h aWxpbmcgbGlzdApCdWctcHJvbG9nQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxt YW4vbGlzdGluZm8vYnVnLXByb2xvZwo=