Re: master: Improve receiving some C strings from foreign function on 64-bit Unicode

Stas Boukarev <[email protected]> Wed, 10 Jun 2026 06:21:21 +0300
Newsgroups gmane.lisp.steel-bank.cvs,gmane.lisp.steel-bank.devel
Message-ID <CAF63=12yM73L+9Xu-u3big9nfNKeuRCm3TeMO2ZNk_ADPT8Jnw@mail.gmail.com>
Tm90IGNoZWNraW5nIGZvciB0aGUgOHRoIGJpdCBpcyBhIHF1ZXN0aW9uLiBBIGN1c3RvbSBTSU1E
IHJvdXRpbmUKd291bGQgcHJvdmlkZSBhc2NpaS1jaGVja2luZyBiYXNpY2FsbHkgZm9yIGZyZWUg
KGFuZCBldmVuIGZvciA6dXRmOCksCmFsdGhvdWdoIGl0J3MgaGFyZGVyIHRvIGtlZXAgdXAgd2l0
aCB3ZWxsIG9wdGltaXplZCBtZW1jcHkgKGJ1dAp0aGV5J3JlIGFsbCBpbiBhc3NlbWJseSBhbnl3
YXksIG5vdCBpbXBvc3NpYmxlIHRvIGNvcHkgdGhlIHNhbWUKYXBwcm9hY2hlcykuClRoZSBidWZm
ZXJpbmcgZXh0ZXJuYWwgZm9ybWF0cyBkbyBoYXZlIFNCLVZNOjpTSU1ELUNPUFktVVRGOC1UTy1C
QVNFLVNUUklORy4KCk9uIFdlZCwgSnVuIDEwLCAyMDI2IGF0IDY6MDnigK9BTSBzbnVnbGFzIHZp
YSBTYmNsLWNvbW1pdHMKPHNiY2wtY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+IHdyb3Rl
Ogo+Cj4gVGhlIGJyYW5jaCAibWFzdGVyIiBoYXMgYmVlbiB1cGRhdGVkIGluIFNCQ0w6Cj4gICAg
ICAgIHZpYSAgMDA3NDYzYTk3YWY5ZTExYjRlYTJjNDE5MTdiZjI4MzhiMzcxZTljMCAoY29tbWl0
KQo+ICAgICAgIGZyb20gIDJkZjNmODA3MWJmY2Y4NTcyMTEwNGU1OGVmYWQ2ZDM4ZTljMmI5MTIg
KGNvbW1pdCkKPgo+IC0gTG9nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gY29tbWl0IDAwNzQ2M2E5N2FmOWUxMWI0ZWEy
YzQxOTE3YmYyODM4YjM3MWU5YzAKPiBBdXRob3I6IERvdWdsYXMgS2F0em1hbiA8ZG91Z2tAZ29v
Z2xlLmNvbT4KPiBEYXRlOiAgIFR1ZSBKdW4gOSAyMjo1Nzo1NyAyMDI2IC0wNDAwCj4KPiAgICAg
SW1wcm92ZSByZWNlaXZpbmcgc29tZSBDIHN0cmluZ3MgZnJvbSBmb3JlaWduIGZ1bmN0aW9uIG9u
IDY0LWJpdCBVbmljb2RlCj4KPiAgICAgSWYgdGhlIHN0cmluZydzIEVGIGlzIDpBU0NJSSBhbmQg
dGhlIGRlc2lyZWQgZWxlbWVudC10eXBlIGlzIEJBU0UtQ0hBUiB0aGVuIGp1c3QgbWVtY3B5Lgo+
IC0tLQo+ICBzcmMvY29kZS9jLWNhbGwubGlzcCAgICAgICAgICAgfCAzMyArKysrKysrKysrKysr
KysrKysrKysrKystLS0tLS0tLS0KPiAgc3JjL2NvZGUvbWlzYy1hbGllbnMubGlzcCAgICAgIHwg
IDggLS0tLS0tLS0KPiAgc3JjL2NvZGUvdGFyZ2V0LWFsaWVuZXZhbC5saXNwIHwgIDkgKysrKysr
KysrCj4gIHNyYy9jb2RlL3RhcmdldC1jLWNhbGwubGlzcCAgICB8ICA4ICsrKysrKysrCj4gIHNy
Yy9jb2xkL2V4cG9ydHMubGlzcCAgICAgICAgICB8ICAyICstCj4gIHNyYy9jb21waWxlci9mbmRi
Lmxpc3AgICAgICAgICB8ICAyICsrCj4gIHRlc3RzL2FsaWVuY2FsbC5wdXJlLmxpc3AgICAgICB8
IDE2ICsrKysrKysrKysrKysrKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCsp
LCAxOCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9zcmMvY29kZS9jLWNhbGwubGlzcCBi
L3NyYy9jb2RlL2MtY2FsbC5saXNwCj4gaW5kZXggMmQzNDNkMWFjLi42N2MxMzA1NzYgMTAwNjQ0
Cj4gLS0tIGEvc3JjL2NvZGUvYy1jYWxsLmxpc3AKPiArKysgYi9zcmMvY29kZS9jLWNhbGwubGlz
cAo+IEBAIC04Myw2ICs4Myw4IEBACj4gICAgICAgICAgIDpkYXR1bSBuaWwpKQo+Cj4gIChkZWZp
bmUtYWxpZW4tdHlwZS1tZXRob2QgKGMtc3RyaW5nIDpuYXR1cmFsaXplLWdlbikgKHR5cGUgYWxp
ZW4pCj4gKyAgOzsgUG90ZW50aWFsbHkgdGhlIFNBRkVUWSBwb2xpY3kgY291bGQgaW5mbHVlbmNl
IHdoZXRoZXIgdG8gZWxpZGUKPiArICA7OyB0aGUgbnVsbCBjaGVjayBvbiBzdHJpbmdzIHdob3Nl
IGFsaWVuIHR5cGUgc2F5cyBub24tbnVsbGFibGUuCj4gICAgYChpZiAoemVyb3AgKHNhcC1pbnQg
LGFsaWVuKSkKPiAgICAgICAgICwoaWYgKGFsaWVuLWMtc3RyaW5nLXR5cGUtbm90LW51bGwgdHlw
ZSkKPiAgICAgICAgICAgICAgYChudWxsLWVycm9yICcsdHlwZSkKPiBAQCAtOTEsMTkgKzkzLDMy
IEBACj4gICAgICAgICA7OyBjb252ZXJzaW9uLCBvciB3aGV0aGVyIHdlIGNhbiBqdXN0IGRvIGEg
Y2hlYXAgYnl0ZS1ieS1ieXRlCj4gICAgICAgICA7OyBjb3B5IG9mIHRoZSBjLXN0cmluZyBkYXRh
Lgo+ICAgICAgICAgOzsKPiAtICAgICAgIDs7IE9uIFNCLVVOSUNPREUgd2UgY2FuIG5ldmVyIGRv
IHRoZSBjaGVhcCBjb3B5LCBldmVuIGlmIHRoZQo+IC0gICAgICAgOzsgZXh0ZXJuYWwgZm9ybWF0
IGFuZCBlbGVtZW50LXR5cGUgYXJlIHN1aXRhYmxlLCBzaW5jZQo+ICsgICAgICAgOzsgT24gU0It
VU5JQ09ERSB0aGUgY2hlYXAgY29weSBpcyBwb3NzaWJsZSBmb3IgZXh0ZXJuYWwtZm9ybWF0IDpB
U0NJSQo+ICsgICAgICAgOzsgYW5kIGNvcHlpbmcgdG8gYSBiYXNlLXN0cmluZy4gT3RoZXJ3aXNl
IGl0IGlzbid0IHNpbmNlCj4gICAgICAgICA7OyBzaW1wbGUtYmFzZS1zdHJpbmdzIG1heSBub3Qg
Y29udGFpbiBJU08tODg1OS0xIGNoYXJhY3RlcnMuCj4gICAgICAgICA7OyBJZiB3ZSBuZWVkIHRv
IGNoZWNrIGZvciBub24tYXNjaWkgZGF0YSBpbiB0aGUgaW5wdXQsIHdlCj4gICAgICAgICA7OyBt
aWdodCBhcyB3ZWxsIGdvIHRocm91Z2ggdGhlIHVzdWFsIGV4dGVybmFsLWZvcm1hdCBtYWNoaW5l
cnkKPiAgICAgICAgIDs7IGluc3RlYWQgb2YgcmV3cml0aW5nIGFub3RoZXIgdmVyc2lvbiBvZiBp
dC4KPiAtICAgICAgICwoaWYgIytzYi11bmljb2RlIHQKPiAtICAgICAgICAgICAgIy1zYi11bmlj
b2RlIChjLXN0cmluZy1uZWVkcy1jb252ZXJzaW9uLXAgdHlwZSkKPiAtICAgICAgICAgICAgYChj
LXN0cmluZy10by1zdHJpbmcgLGFsaWVuCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjLXN0cmluZy1leHRlcm5hbC1mb3JtYXQgLHR5cGUpCj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChhbGllbi1jLXN0cmluZy10eXBlLWVsZW1lbnQtdHlwZQo+IC0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHR5cGUpKQo+IC0gICAgICAgICAgICBgKCVu
YXR1cmFsaXplLWMtc3RyaW5nICxhbGllbikpKSkKPiArICAgICAgICwobGV0ICgoY29udiBgKGMt
c3RyaW5nLXRvLXN0cmluZwo+ICsgICAgICAgICAgICAgICAgICAgICAgLGFsaWVuCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAoYy1zdHJpbmctZXh0ZXJuYWwtZm9ybWF0ICx0eXBlKQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgJywoYWxpZW4tYy1zdHJpbmctdHlwZS1lbGVtZW50LXR5cGUgdHlw
ZSkpKSkKPiArICAgICAgICAgICMtc2ItdW5pY29kZQo+ICsgICAgICAgICAgKGlmIChjLXN0cmlu
Zy1uZWVkcy1jb252ZXJzaW9uLXAgdHlwZSkgY29udiBgKCVuYXR1cmFsaXplLWMtc3RyaW5nICxh
bGllbikpCj4gKyAgICAgICAgICAjK3NiLXVuaWNvZGUKPiArICAgICAgICAgIChpZiAob3IgKG5l
cSAoYWxpZW4tYy1zdHJpbmctdHlwZS1leHRlcm5hbC1mb3JtYXQgdHlwZSkgOmFzY2lpKQo+ICsg
ICAgICAgICAgICAgICAgICAobmVxIChhbGllbi1jLXN0cmluZy10eXBlLWVsZW1lbnQtdHlwZSB0
eXBlKSAnYmFzZS1jaGFyKQo+ICsgICAgICAgICAgICAgICAgICAgOzsgdGhpcyB0ZXN0IG1pZ2h0
IGJlIHVubmVjZXNzYXJ5IGJ1dCBpZiB5b3UncmUgYXNraW5nIGZvciBtYXhpbXVtCj4gKyAgICAg
ICAgICAgICAgICAgICA7OyBzYWZldHkgdGhlbiB3ZSBzaG91bGQgY2hlY2sgZm9yIG5vbi1BU0NJ
SSBjaGFyYWN0ZXJzCj4gKyAgICAgICAgICAgICAgICAgICAoc2ItYzo6cG9saWN5IHNiLWM6Oipw
b2xpY3kqICg9IHNhZmV0eSAzKSkpCj4gKyAgICAgICAgICAgICAgY29udgo+ICsgICAgICAgICAg
ICAgIDs7IGVsc2UgImNoZWFwIGJ5dGUtYnktYnl0ZSBjb3B5Igo+ICsgICAgICAgICAgICAgICMt
NjQtYml0IGAoJW5hdHVyYWxpemUtYy1zdHJpbmcgLGFsaWVuKQo+ICsgICAgICAgICAgICAgIDs7
IGV2ZW4gYmV0dGVyOiBhdm9pZCBTQVAgY29uc2luZy4gVGhlIENQVSBhbmQgT1MgYXNzdXJlIHRo
YXQgdXMgdGhhdAo+ICsgICAgICAgICAgICAgIDs7IHVzZXJzcGFjZSBjYW4ndCBoYXZlIGJpdCA2
MyBvbiBmb3IgdHdvIHBvcHVsYXIgYXJjaGl0ZWN0dXJlcy4KPiArICAgICAgICAgICAgICAjKzY0
LWJpdAo+ICsgICAgICAgICAgICAgIGAoJW5hdHVyYWxpemUtYmFzZS1zdHJpbmcvd29yZCAjKyhv
ciBhcm02NCB4ODYtNjQpICh0aGUgZml4bnVtIChzYXAtaW50ICxhbGllbikpCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMtKG9yIGFybTY0IHg4Ni02NCkg
KHNhcC1pbnQgLGFsaWVuKSkpKSkpCj4KPiAgKGRlZmluZS1hbGllbi10eXBlLW1ldGhvZCAoYy1z
dHJpbmcgOmRlcG9ydC1nZW4pICh0eXBlIHZhbHVlKQo+ICAgIDs7IFRoaXMgU0FQIHRha2luZyBp
cyBzYWZlIGFzIERFUE9SVCBjYWxsZXJzIHBpbiB0aGUgVkFMVUUgd2hlbgo+IGRpZmYgLS1naXQg
YS9zcmMvY29kZS9taXNjLWFsaWVucy5saXNwIGIvc3JjL2NvZGUvbWlzYy1hbGllbnMubGlzcAo+
IGluZGV4IDQ5NjIwMDI2ZS4uNmM4ZDczMTM5IDEwMDY0NAo+IC0tLSBhL3NyYy9jb2RlL21pc2Mt
YWxpZW5zLmxpc3AKPiArKysgYi9zcmMvY29kZS9taXNjLWFsaWVucy5saXNwCj4gQEAgLTY5LDE0
ICs2OSw2IEBACj4gICAgKGRlc3Qgc3lzdGVtLWFyZWEtcG9pbnRlcikKPiAgICAoc3JjIHN5c3Rl
bS1hcmVhLXBvaW50ZXIpCj4gICAgKG4gc2ItdW5peDo6c2l6ZS10KSkKPiAtOzs7IFRoZSBvdmVy
aGVhZCBvZiBMaXNwIG1heSBtYWtlIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIG1lbW1vdmUoKSBh
bmQgbWVtY3B5KCkKPiAtOzs7IGlycmVsZXZhbnQsIGJ1dCB3ZSBtYXkgYXMgd2VsbCBwcm9taXNl
IHRoYXQgdGhlIHJhbmdlcyBkb24ndCBvdmVybGFwIHdoZW4gb25lCj4gLTs7OyBvZiB0aGVtIGlz
IGEgZnJlc2hseSBjb25zZWQgc3RyaW5nLCBmb3IgZXhhbXBsZS4KPiAtKGRlY2xhaW0gKGlubGlu
ZSBtZW1jcHkpKQo+IC0oZGVmaW5lLWFsaWVuLXJvdXRpbmUgKCJtZW1jcHkiIG1lbWNweSkgc3lz
dGVtLWFyZWEtcG9pbnRlcgo+IC0gIChkZXN0IHN5c3RlbS1hcmVhLXBvaW50ZXIpCj4gLSAgKHNy
YyBzeXN0ZW0tYXJlYS1wb2ludGVyKQo+IC0gIChuIHNiLXVuaXg6OnNpemUtdCkpCj4KPiAgKGRl
ZnVuIGNvcHktdWI4LXRvLXN5c3RlbS1hcmVhIChzcmMgc3JjLW9mZnNldCBkc3QgZHN0LW9mZnNl
dCBsZW5ndGgpCj4gICAgKHdpdGgtcGlubmVkLW9iamVjdHMgKHNyYykKPiBkaWZmIC0tZ2l0IGEv
c3JjL2NvZGUvdGFyZ2V0LWFsaWVuZXZhbC5saXNwIGIvc3JjL2NvZGUvdGFyZ2V0LWFsaWVuZXZh
bC5saXNwCj4gaW5kZXggZGNlOTZkMjZiLi5iMmZhMjU5M2UgMTAwNjQ0Cj4gLS0tIGEvc3JjL2Nv
ZGUvdGFyZ2V0LWFsaWVuZXZhbC5saXNwCj4gKysrIGIvc3JjL2NvZGUvdGFyZ2V0LWFsaWVuZXZh
bC5saXNwCj4gQEAgLTk2MywzICs5NjMsMTIgQEAgc3BlY2lmaWVzIHRoZSB3YXkgdGhhdCB0aGUg
YXJndW1lbnQgaXMgcGFzc2VkLgo+ICAgICAgICAgICAgICAgICAoZXJyb3IgIihTVFJVQ1QgflMp
IGhhcyB1bmV4cGVjdGVkIHNpemUiIHRhZykpKSkpCj4gICAgICAoY2hlY2stc2l6ZSAnc2ItdW5p
eDo6dGltZXNwZWMpCj4gICAgICAoY2hlY2stc2l6ZSAnc2ItdW5peDo6dGltZXZhbCkpKQo+ICsK
PiArOzs7IFRoZSBvdmVyaGVhZCBvZiBMaXNwIG1heSBtYWtlIHRoZSBkaXN0aW5jdGlvbiBiZXR3
ZWVuIG1lbW1vdmUoKSBhbmQgbWVtY3B5KCkKPiArOzs7IGlycmVsZXZhbnQsIGJ1dCB3ZSBtYXkg
YXMgd2VsbCBwcm9taXNlIHRoYXQgdGhlIHJhbmdlcyBkb24ndCBvdmVybGFwIHdoZW4gb25lCj4g
Kzs7OyBvZiB0aGVtIGlzIGEgZnJlc2hseSBjb25zZWQgc3RyaW5nLCBmb3IgZXhhbXBsZS4KPiAr
KGRlY2xhaW0gKGlubGluZSBzYi1pbXBsOjptZW1jcHkpKQo+ICsoZGVmaW5lLWFsaWVuLXJvdXRp
bmUgKCJtZW1jcHkiIHNiLWltcGw6Om1lbWNweSkgc3lzdGVtLWFyZWEtcG9pbnRlcgo+ICsgIChk
ZXN0IHN5c3RlbS1hcmVhLXBvaW50ZXIpCj4gKyAgKHNyYyBzeXN0ZW0tYXJlYS1wb2ludGVyKQo+
ICsgIChuIHNiLXVuaXg6OnNpemUtdCkpCj4gZGlmZiAtLWdpdCBhL3NyYy9jb2RlL3RhcmdldC1j
LWNhbGwubGlzcCBiL3NyYy9jb2RlL3RhcmdldC1jLWNhbGwubGlzcAo+IGluZGV4IGMyNDM1NTE5
MS4uYzUxNzY2M2VkIDEwMDY0NAo+IC0tLSBhL3NyYy9jb2RlL3RhcmdldC1jLWNhbGwubGlzcAo+
ICsrKyBiL3NyYy9jb2RlL3RhcmdldC1jLWNhbGwubGlzcAo+IEBAIC03MCwzICs3MCwxMSBAQAo+
ICAgICAgOzsgQ09QWS1VQjggcGlucyB0aGUgbGlzcCBzdHJpbmcsIG5vIG5lZWQgdG8gZG8gaXQg
aGVyZQo+ICAgICAgKHNiLWtlcm5lbDpjb3B5LXViOC1mcm9tLXN5c3RlbS1hcmVhIHNhcCAwIHJl
c3VsdCAwIGxlbmd0aCkKPiAgICAgIHJlc3VsdCkpCj4gKwo+ICsoZGVmdW4gJW5hdHVyYWxpemUt
YmFzZS1zdHJpbmcvd29yZCAod29yZCkKPiArICAoZGVjbGFyZSAodHlwZSBzYi12bTp3b3JkIHdv
cmQpKQo+ICsgIChsZXQqICgobGVuZ3RoIChhbGllbi1mdW5jYWxsIChleHRlcm4tYWxpZW4gInN0
cmxlbiIgKGZ1bmN0aW9uIHNpemUtdCB1bnNpZ25lZCkpIHdvcmQpKQo+ICsgICAgICAgICAocmVz
dWx0IChtYWtlLXN0cmluZyBsZW5ndGggOmVsZW1lbnQtdHlwZSAnYmFzZS1jaGFyKSkpCj4gKyAg
ICAod2l0aC1waW5uZWQtb2JqZWN0cyAocmVzdWx0KQo+ICsgICAgICAoc2ItaW1wbDo6bWVtY3B5
ICh2ZWN0b3Itc2FwIHJlc3VsdCkgKGludC1zYXAgd29yZCkgbGVuZ3RoKSkKPiArICAgIHJlc3Vs
dCkpCj4gZGlmZiAtLWdpdCBhL3NyYy9jb2xkL2V4cG9ydHMubGlzcCBiL3NyYy9jb2xkL2V4cG9y
dHMubGlzcAo+IGluZGV4IGNmMGY4YjU2NC4uMzQ3NzAwMDZiIDEwMDY0NAo+IC0tLSBhL3NyYy9j
b2xkL2V4cG9ydHMubGlzcAo+ICsrKyBiL3NyYy9jb2xkL2V4cG9ydHMubGlzcAo+IEBAIC0xMDEy
LDcgKzEwMTIsNyBAQCBMaXNwIGV4dGVuc2lvbiBwcm9wb3NhbCBieSBEYXZpZCBOLiBHcmF5IikK
PiAgICAgICAgICAgICAiJUNBU1QiCj4gICAgICAgICAgICAgIiVERVJFRi1BRERSIiAiJUhFQVAt
QUxJRU4iICIlSEVBUC1BTElFTi1BRERSIgo+ICAgICAgICAgICAgICIlTE9DQUwtQUxJRU4tQURE
UiIgIiVMT0NBTC1BTElFTi1GT1JDRUQtVE8tTUVNT1JZLVAiICIlU0FQLUFMSUVOIgo+IC0gICAg
ICAgICAgICIlTkFUVVJBTElaRS1DLVNUUklORyIKPiArICAgICAgICAgICAiJU5BVFVSQUxJWkUt
Qy1TVFJJTkciICIlTkFUVVJBTElaRS1CQVNFLVNUUklORy9XT1JEIgo+ICAgICAgICAgICAgICIl
U0VULURFUkVGIiAiJVNFVC1IRUFQLUFMSUVOIiAiJVNFVC1MT0NBTC1BTElFTiIgIiVTRVQtU0xP
VCIKPiAgICAgICAgICAgICAiJVNMT1QtQUREUiIgIipTQVZFRC1GUCoiICIqVkFMVUVTLVRZUEUt
T0tBWSoiCj4gICAgICAgICAgICAgIipBTElFTi1UWVBFLUhBU0hTRVRTKiIKPiBkaWZmIC0tZ2l0
IGEvc3JjL2NvbXBpbGVyL2ZuZGIubGlzcCBiL3NyYy9jb21waWxlci9mbmRiLmxpc3AKPiBpbmRl
eCA2OWE3ZjRiZTMuLjYyMmQyN2EwOCAxMDA2NDQKPiAtLS0gYS9zcmMvY29tcGlsZXIvZm5kYi5s
aXNwCj4gKysrIGIvc3JjL2NvbXBpbGVyL2ZuZGIubGlzcAo+IEBAIC0yMzk3LDYgKzIzOTcsOCBA
QAo+ICA7Ozs7IEFMSUVOIGFuZCBjYWxsLW91dC10by1DIHN0dWZmCj4KPiAgKGRlZmtub3duICVh
bGllbi1mdW5jYWxsICgob3Igc3RyaW5nIHN5c3RlbS1hcmVhLXBvaW50ZXIpIGFsaWVuLXR5cGUg
JnJlc3QgdCkgKikKPiArIys2NC1iaXQKPiArKGRlZmtub3duIHNiLWFsaWVuLWludGVybmFsczol
bmF0dXJhbGl6ZS1iYXNlLXN0cmluZy93b3JkIChzYi12bTp3b3JkKSBzaW1wbGUtYmFzZS1zdHJp
bmcpCj4KPiAgOzsgVXNlZCBieSBXSVRILVBJTk5FRC1PQkpFQ1RTCj4gIChkZWZrbm93biBzYi12
bTo6dG91Y2gtb2JqZWN0ICh0KSAodmFsdWVzKQo+IGRpZmYgLS1naXQgYS90ZXN0cy9hbGllbmNh
bGwucHVyZS5saXNwIGIvdGVzdHMvYWxpZW5jYWxsLnB1cmUubGlzcAo+IGluZGV4IDY4ZDY1MTY3
MS4uODRkM2JmMTlmIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2FsaWVuY2FsbC5wdXJlLmxpc3AKPiAr
KysgYi90ZXN0cy9hbGllbmNhbGwucHVyZS5saXNwCj4gQEAgLTM5LDMgKzM5LDE5IEBACj4gICAg
ICA7OyAgICA1M0Y5RkY1OCAgICAgICAgIExEUiBSOSwgI3gxMDAxQTEwMDQ4ICAgICA7IHByaW50
Zgo+ICAgICAgOzsgMikgNjAwMjNGRDYgICAgICAgICBCTFIgUjkKPiAgICAgICMrYXJtNjQgKGFz
c2VydCAoPSAobG9vcCBmb3IgbGluZSBpbiBsaW5lcyBjb3VudCAoc2VhcmNoICJCTFIiIGxpbmUp
KSAyKSkpKQo+ICsKPiArKGxvY2FsbHkKPiArKGRlY2xhcmUgKG9wdGltaXplIChzYi1jOjphbGll
bi1mdW5jYWxsLXNhdmVzLWZwLWFuZC1wYyAwKSkpCj4gKyhkZWZpbmUtYWxpZW4tcm91dGluZSBz
dHJlcnJvciAoYy1zdHJpbmcgOmV4dGVybmFsLWZvcm1hdCA6YXNjaWkgOmVsZW1lbnQtdHlwZSBi
YXNlLWNoYXIpCj4gKyAgKGUgaW50KSkpCj4gKwo+ICsod2l0aC10ZXN0ICg6bmFtZSA6cmV0dXJu
LWMtc3RyaW5nLW9wdGltaXplciA6c2tpcHBlZC1vbiAoOm5vdCA6eDg2LTY0KSkKPiArICA7OyBj
aGVjayB0aGF0IHRoZSB0aGluZyBhY3R1YWxseSB3b3Jrcwo+ICsgIChhc3NlcnQgKHBsdXNwIChs
ZW5ndGggKHN0cmVycm9yIHNiLXVuaXg6ZWJhZGYpKSkpCj4gKyAgKGxldCAoKGxpbmVzIChjdHU6
ZGlzYXNzZW1ibHktbGluZXMgIydzdHJlcnJvcikpKQo+ICsgICAgOzsgc2hvdWxkIHRhaWwtY2Fs
bCB0aGUgbmF0dXJhbGl6ZSBmdW5jdGlvbgo+ICsgICAgKGFzc2VydCAobG9vcCBmb3IgbGluZSBp
biBsaW5lcwo+ICsgICAgICAgICAgICAgICAgICB0aGVyZWlzIChhbmQgKHNlYXJjaCAiSk1QIiBs
aW5lKSAoc2VhcmNoICIlTkFUVVJBTElaRS1CQVNFLVNUUklORy9XT1JEIiBsaW5lKSkpKQo+ICsg
ICAgOzsgbm8gYWxsb2MtdHJhbXAgKG5vIFNBUCBjb25zaW5nKSwgbm9yIEJJR05VTSBjb25zaW5n
Cj4gKyAgICAoYXNzZXJ0IChsb29wIGZvciBsaW5lIGluIGxpbmVzCj4gKyAgICAgICAgICAgICAg
ICAgIG5ldmVyIChvciAoc2VhcmNoICJBTExPQyIgbGluZSkgKHNlYXJjaCAiQklHTlVNIiBsaW5l
KSkpKSkpCj4KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4KPiBob29rcy9wb3N0LXJlY2VpdmUKPiAtLQo+
IFNCQ0wKPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KPiBTYmNsLWNvbW1pdHMgbWFpbGluZyBsaXN0Cj4gU2JjbC1jb21taXRzQGxpc3RzLnNvdXJj
ZWZvcmdlLm5ldAo+IGh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZv
L3NiY2wtY29tbWl0cwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fClNiY2wtY29tbWl0cyBtYWlsaW5nIGxpc3QKU2JjbC1jb21taXRzQGxpc3RzLnNvdXJj
ZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9z
YmNsLWNvbW1pdHMK