Re: master: Perform local common subexpression elimination for some memory loads
Stas Boukarev <[email protected]> Tue, 4 Aug 2026 07:17:39 +0300
| Newsgroups | gmane.lisp.steel-bank.cvs,gmane.lisp.steel-bank.devel |
|---|---|
| Message-ID | <CAF63=13_uFB6iNdMaFQ7948JoWk5SwUCQH3_jcbrEd_0-S4mmw@mail.gmail.com> |
KGRlZnVuIGoyICh4IG4pCiAgKGRlY2xhcmUgKG9wdGltaXplIChkZWJ1ZyAwKSkpCiAgKGxldCAo KHkgKDErIHgpKSkKICAgIChsaXN0ICgxKyAoY2FyIG4pKQogICAgICAgICAgKGNhciBuKQogICAg ICAgICAgKGNkciBuKQogICAgICAgICAgeSB5KSkpCmluY3JlYXNlcyBzdGFjayB1c2FnZSBkdWUg dG8gaGF2aW5nIHRvIHNhdmUgdGhlIG5ldyBzaGFyZWQgdmFyaWFibGUgb24KdGhlIHN0YWNrLgoK T24gVHVlLCBBdWcgNCwgMjAyNiBhdCA3OjA04oCvQU0gU3RhcyBCb3VrYXJldiA8c3Rhc3NhdHNA Z21haWwuY29tPiB3cm90ZToKPgo+IChkZWZ1biBrICh4IG4pCj4gICAobGV0ICgoeSAoMSsgeCkp KQo+ICAgICAodmFsdWVzIHkgeQo+ICAgICAgICAgICAgIChlcSAoY2FyIChjb3B5LXRyZWUgbikp Cj4gICAgICAgICAgICAgICAgIChjYXIgKGNvcHktdHJlZSBuKSkpKSkpCj4gPT4KPiAoayAxICco KDEpKSkKPiA9Pgo+IDIKPiAyCj4gVAo+Cj4gT24gVHVlLCBBdWcgNCwgMjAyNiBhdCA2OjQ34oCv QU0gU3RhcyBCb3VrYXJldiA8c3Rhc3NhdHNAZ21haWwuY29tPiB3cm90ZToKPiA+Cj4gPiAoZGVm dW4gaiAoeCkKPiA+ICAgKGxldCAoKHkgKDErIHgpKSkKPiA+ICAgICAodmFsdWVzIHkgeQo+ID4g ICAgICAgICAgICAgKGNhciAqKQo+ID4gICAgICAgICAgICAgKHNldGYgKiAnKGIpKQo+ID4gICAg ICAgICAgICAgKGNhciAqKSkpKQo+ID4gKGxldCAoKCogJyhhKSkpIChqIDEpKQo+ID4gPT4KPiA+ IDIKPiA+IDIKPiA+IEEKPiA+IChCKQo+ID4gQQo+ID4KPiA+IE9uIFR1ZSwgQXVnIDQsIDIwMjYg YXQgNDoyMuKAr0FNIFN0YXMgQm91a2FyZXYgPHN0YXNzYXRzQGdtYWlsLmNvbT4gd3JvdGU6Cj4g PiA+Cj4gPiA+IChkZWZzdHJ1Y3Qgcwo+ID4gPiAgICh4IChtYWtlLWFycmF5IDMpKSkKPiA+ID4K PiA+ID4gKGxldCAoKikKPiA+ID4gICAobGFtYmRhICgpCj4gPiA+ICAgICAobGV0KiAoKHMgIy4o bWFrZS1zKSkKPiA+ID4gICAgICAgICAgICAoYSAocy14IHMpKQo+ID4gPiAgICAgICAgICAgIChi IChzLXggcykpKQo+ID4gPiAgICAgICAodmFsdWVzIChhcmVmIGEgMCkKPiA+ID4gICAgICAgICAg ICAgICAoYXJlZiBiIDApKSkpKQo+ID4gPgo+ID4gPgo+ID4gPiBkZWJ1Z2dlciBpbnZva2VkIG9u IGEgU0ItSU5UOkJVRyBAQjgwMDdCODVBRCBpbiB0aHJlYWQKPiA+ID4gIzxUSFJFQUQgdGlkPTE5 ODY0MDIgIm1haW4gdGhyZWFkIiBSVU5OSU5HIHsxMjAxNEYwMDAzfT46Cj4gPiA+ICAgICBmYWls ZWQgQVZFUjogKEVRIEVOViAoTEFNQkRBLUVOVklST05NRU5UIChMQU1CREEtVkFSLUhPTUUgVEhJ TkcpKSkKPiA+ID4KPiA+ID4gT24gVHVlLCBBdWcgNCwgMjAyNiBhdCAzOjU54oCvQU0gc251Z2xh cyB2aWEgU2JjbC1jb21taXRzCj4gPiA+IDxzYmNsLWNvbW1pdHNAbGlzdHMuc291cmNlZm9yZ2Uu bmV0PiB3cm90ZToKPiA+ID4gPgo+ID4gPiA+IFRoZSBicmFuY2ggIm1hc3RlciIgaGFzIGJlZW4g dXBkYXRlZCBpbiBTQkNMOgo+ID4gPiA+ICAgICAgICB2aWEgIDEwMGM5YzJiZGNkY2I4NGZmMDRj OGZlZWY5ODNhNWI0NDY5NWM5N2EgKGNvbW1pdCkKPiA+ID4gPiAgICAgICBmcm9tICBiNTQxZjJm MjViMTRiNjJmY2FiN2UxNGFhNTEyNGRiNWRkMWQ2YjIwIChjb21taXQpCj4gPiA+ID4KPiA+ID4g PiAtIExvZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+IGNvbW1pdCAxMDBjOWMyYmRjZGNiODRmZjA0YzhmZWVm OTgzYTViNDQ2OTVjOTdhCj4gPiA+ID4gQXV0aG9yOiBEb3VnbGFzIEthdHptYW4gPGRvdWdrQGdv b2dsZS5jb20+Cj4gPiA+ID4gRGF0ZTogICBUdWUgQXVnIDQgMDA6NTg6MjEgMjAyNiArMDAwMAo+ ID4gPiA+Cj4gPiA+ID4gICAgIFBlcmZvcm0gbG9jYWwgY29tbW9uIHN1YmV4cHJlc3Npb24gZWxp bWluYXRpb24gZm9yIHNvbWUgbWVtb3J5IGxvYWRzCj4gPiA+ID4KPiA+ID4gPiAgICAgVGhlIHRl Y2huaXF1ZSBpcyB0byBmaW5kICJlcXVpdmFsZW50IiBsb2FkcyBpbiBiZXR3ZWVuIHdoaWNoIHRo ZXJlIGlzIG5vCj4gPiA+ID4gICAgIGNvbXB1dGF0aW9uIHRoYXQgYWZmZWN0cyB0aGUgcmVzdWx0 IG9mIHRoZSBsb2FkLiBBbHNvIGl0IG5lZWRzIGEgc3Vycm91bmRpbmcKPiA+ID4gPiAgICAgTEVU LCB3aGljaCBpcyBhdWdtZW50ZWQgd2l0aCBhIG5ldyB0ZW1wIHZhcmlhYmxlIGFzIGlmIHRoZSB1 c2VyIGRpZCB0aGF0Lgo+ID4gPiA+ICAgICBUaGlzIGlzIHNsaWdodGx5IGRlZmljaWVudCBmb3Ig dmFyaW91cyByZWFzb25zOgo+ID4gPiA+ICAgICAxLiBpdCB3b24ndCBkbyBhbnl0aGluZyB3aXRo b3V0IHRoZSBMRVQKPiA+ID4gPiAgICAgMi4gdGhlIG1vcmUga2luZHMgb2YgY29tbW9uIHN1YmV4 cHJlc3Npb25zIHdlIGFsbG93IChzdWNoIGFzIG1hdGgpLAo+ID4gPiA+ICAgICAgICB0aGUgc2xv d2VyIElSMS1PUFRJTUlaRS1DT01CSU5BVElPTiBpcyBnb2luZyB0byBydW4KPiA+ID4gPiAgICAg My4gdGhlcmUgYXJlIHBvc3NpYmx5IG90aGVyIG5vZGUgdHlwZXMgdGhhdCBzaG91bGQgYmUgYWxs b3dlZCB0byBpbnRlcnZlbmUKPiA+ID4gPgo+ID4gPiA+ICAgICBPbiB0aGUgcGx1cyBzaWRlLCBp dCdzIG5vdCBhbGwgdGhhdCBoYXJkIHRvIGV4dGVuZCB0aGUgbG9naWMgdG8gYWNjZXB0Cj4gPiA+ ID4gICAgIG90aGVyIGZ1bmN0aW9ucyBhcyBwYXJ0aWNpcGFudHMgaW4gY29tbW9uIHN1YmV4cHJl c3Npb25zLgo+ID4gPiA+Cj4gPiA+ID4gICAgIEFsbCB0ZXN0IGNhc2VzIHBsdXMgYSBsaXR0bGUg Yml0IG9mIGFzc2lzdGFuY2UgZnJvbSBHZW1pbmkKPiA+ID4gPiAtLS0KPiA+ID4gPiAgc3JjL2Nv bXBpbGVyL2lyMW9wdC5saXNwIHwgMTc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+ID4gPiA+ICB0ZXN0cy9sY3NlLnB1cmUubGlzcCAgICAgfCAyMzQgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiAgeHBlcmZlY3RoYXNo MzAubGlzcC1leHByIHwgICAzICsKPiA+ID4gPiAgeHBlcmZlY3RoYXNoNjEubGlzcC1leHByIHwg ICAzICsKPiA+ID4gPiAgeHBlcmZlY3RoYXNoNjMubGlzcC1leHByIHwgICAzICsKPiA+ID4gPiAg NSBmaWxlcyBjaGFuZ2VkLCA0MjIgaW5zZXJ0aW9ucygrKQo+ID4gPiA+Cj4gPiA+ID4gZGlmZiAt LWdpdCBhL3NyYy9jb21waWxlci9pcjFvcHQubGlzcCBiL3NyYy9jb21waWxlci9pcjFvcHQubGlz cAo+ID4gPiA+IGluZGV4IDg1NTk4MjRmMS4uZGFjMzkzZTMxIDEwMDY0NAo+ID4gPiA+IC0tLSBh L3NyYy9jb21waWxlci9pcjFvcHQubGlzcAo+ID4gPiA+ICsrKyBiL3NyYy9jb21waWxlci9pcjFv cHQubGlzcAo+ID4gPiA+IEBAIC0xMjIwLDYgKzEyMjAsMTgyIEBACj4gPiA+ID4gICAgICAgICAg ICAgIChzaG93LXR5cGUtZGVyaXZhdGlvbiBjb21iaW5hdGlvbiByZXMpKQo+ID4gPiA+ICAgICAg ICAgICAgKGNvZXJjZS10by12YWx1ZXMgcmVzKSkpKSkpCj4gPiA+ID4KPiA+ID4gPiArKGRlZnVu IGNvbGxlY3QtbHZhci12YXJzIChsdmFyKQo+ID4gPiA+ICsgIChkZWNsYXJlICh0eXBlIGx2YXIg bHZhcikpCj4gPiA+ID4gKyAgKGxldCAoKHVzZSAocHJpbmNpcGFsLWx2YXItdXNlIGx2YXIpKSkK PiA+ID4gPiArICAgIChjb25kICgocmVmLXAgdXNlKQo+ID4gPiA+ICsgICAgICAgICAgIChsZXQg KChsZWFmIChyZWYtbGVhZiB1c2UpKSkKPiA+ID4gPiArICAgICAgICAgICAgICh3aGVuIChsYW1i ZGEtdmFyLXAgbGVhZikKPiA+ID4gPiArICAgICAgICAgICAgICAgKGxpc3QgbGVhZikpKSkKPiA+ ID4gPiArICAgICAgICAgICgoY29tYmluYXRpb24tcCB1c2UpCj4gPiA+ID4gKyAgICAgICAgICAg KG1hcGNhbiAjJ2NvbGxlY3QtbHZhci12YXJzIChiYXNpYy1jb21iaW5hdGlvbi1hcmdzIHVzZSkp KQo+ID4gPiA+ICsgICAgICAgICAgKHQgbmlsKSkpKQo+ID4gPiA+ICsKPiA+ID4gPiArKGRlZnVu IGZpbmQtYWN0aXZlLWxldC1sYW1iZGEgKG5vZGUpCj4gPiA+ID4gKyAgKGRlY2xhcmUgKHR5cGUg bm9kZSBub2RlKSkKPiA+ID4gPiArICAobG9vcCBmb3IgZW52ID0gKG5vZGUtbGV4ZW52IG5vZGUp IHRoZW4gKGxleGVudi1wYXJlbnQgZW52KQo+ID4gPiA+ICsgICAgICAgIHdoaWxlIGVudgo+ID4g PiA+ICsgICAgICAgIGRvIChsZXQgKChsIChsZXhlbnYtbGFtYmRhIGVudikpKQo+ID4gPiA+ICsg ICAgICAgICAgICAgKHdoZW4gKGFuZCBsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jdGlvbmFsLWtpbmQtZXEgbCBsZXQpCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIChub3QgKGZ1bmN0aW9uYWwta2luZC1lcSBsIHpvbWJpZSkpKQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAocmV0dXJuIGwpKSkpKQo+ID4gPiA+ICsKPiA+ID4gPiArKGRlZnVuIGFkZC12YXJp YWJsZS10by1sZXQtbGFtYmRhIChsZXQtbGFtYmRhIHYpCj4gPiA+ID4gKyAgKGRlY2xhcmUgKHR5 cGUgY2xhbWJkYSBsZXQtbGFtYmRhKQo+ID4gPiA+ICsgICAgICAgICAgICh0eXBlIGxhbWJkYS12 YXIgdikpCj4gPiA+ID4gKyAgKHNldGYgKGxhbWJkYS12YXItaG9tZSB2KSBsZXQtbGFtYmRhKQo+ ID4gPiA+ICsgIChzZXRmIChsYW1iZGEtdmFycyBsZXQtbGFtYmRhKSAoYXBwZW5kIChsYW1iZGEt dmFycyBsZXQtbGFtYmRhKSAobGlzdCB2KSkpCj4gPiA+ID4gKyAgOzsgVXBkYXRlIHRoZSBjYWxs IHRvIHRoZSBMRVQgbGFtYmRhCj4gPiA+ID4gKyAgKGxldCogKChyZWYgKGNhciAobGVhZi1yZWZz IGxldC1sYW1iZGEpKSkKPiA+ID4gPiArICAgICAgICAgKGNhbGwgKGFuZCByZWYKPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAobm9kZS1sdmFyIHJlZikKPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAobHZhci1kZXN0IChub2RlLWx2YXIgcmVmKSkpKSkKPiA+ID4gPiArICAgICh3aGVu IChhbmQgY2FsbCAoY29tYmluYXRpb24tcCBjYWxsKSkKPiA+ID4gPiArICAgICAgKGxldCAoKGR1 bW15LWx2YXIgKG1ha2UtbHZhcikpKQo+ID4gPiA+ICsgICAgICAgIChzZXRmIChsdmFyLWRlc3Qg ZHVtbXktbHZhcikgY2FsbCkKPiA+ID4gPiArICAgICAgICAoc2V0ZiAoYmFzaWMtY29tYmluYXRp b24tYXJncyBjYWxsKQo+ID4gPiA+ICsgICAgICAgICAgICAgIChhcHBlbmQgKGJhc2ljLWNvbWJp bmF0aW9uLWFyZ3MgY2FsbCkgKGxpc3QgZHVtbXktbHZhcikpKQo+ID4gPiA+ICsgICAgICAgIChz ZXRmIChsdmFyLWRlc3QgZHVtbXktbHZhcikgY2FsbCkpKSkpCj4gPiA+ID4gKwo+ID4gPiA+ICs7 OyBSZXVzZSBvZiBTWU1CT0wtVkFMVUUgb2YgYSBzcGVjaWFsIHZhciB3b3VsZCBiZSBuaWNlLAo+ ID4gPiA+ICs7OyBidXQgU1lNQk9MLVZBTFVFIGl0IGlzIG5vdCByZXByZXNlbnRlZCBhcyBhIGNh bGwgaW4gSVIxCj4gPiA+ID4gKyhkZWZpbmUtbG9hZC10aW1lLWdsb2JhbCAqZWxpZGFibGUtbWVt b3J5LWxvYWRzKgo+ID4gPiA+ICsgICAgJyhjYXIgY2RyICVpbnN0YW5jZS1yZWYgJXJhdy1pbnN0 YW5jZS1yZWYvd29yZCAlcmF3LWluc3RhbmNlLXJlZi9zaWduZWQtd29yZAo+ID4gPiA+ICsgICAg ICBzYXAtcmVmLTE2IHNpZ25lZC1zYXAtcmVmLTE2IHNiLXN5czo6JXNhcC1yZWYtMTYtaW5kZXhl ZCBzYi1zeXM6OiVzaWduZWQtc2FwLXJlZi0xNi1pbmRleGVkCj4gPiA+ID4gKyAgICAgIHNhcC1y ZWYtMzIgc2lnbmVkLXNhcC1yZWYtMzIgc2Itc3lzOjolc2FwLXJlZi0zMi1pbmRleGVkIHNiLXN5 czo6JXNpZ25lZC1zYXAtcmVmLTMyLWluZGV4ZWQKPiA+ID4gPiArICAgICAgc2FwLXJlZi02NCBz aWduZWQtc2FwLXJlZi02NCBzYi1zeXM6OiVzYXAtcmVmLTY0LWluZGV4ZWQgc2Itc3lzOjolc2ln bmVkLXNhcC1yZWYtNjQtaW5kZXhlZAo+ID4gPiA+ICsgICAgICBzYi1hbGllbjpkZXJlZgo+ID4g PiA+ICsgICAgICBzYi1hbGllbjphbGllbi1zYXApKQo+ID4gPiA+ICsKPiA+ID4gPiArOzs7IExv b2sgZm9yIGFueSBub2RlIGVxdWl2YWxlbnQgdG8gTUFUQ0ggY29uc2RlcmluZyBub2RlcyBpbiBy ZXZlcnNlIHN0YXJ0aW5nIGF0IEZST00uCj4gPiA+ID4gKzs7OyBNZW1vcnkgbG9hZHMgZnJvbSB0 aGUgc2FtZSBvYmplY3Qrc2xvdCBvciBTQVArb2Zmc2V0IGNvdWxkIGJlIGVxdWl2YWxlbnQuCj4g PiA+ID4gKzs7OyBOb3RoaW5nIGVsc2UgY2FuIGJlIGVxdWl2YWxlbnQgKHVudGlsIEkgZW5oYW5j ZSB0aGlzKQo+ID4gPiA+ICsoZGVmdW4gZmluZC1lcXVpdmFsZW50LW5vZGUtYmFja3dhcmRzICht YXRjaCBmcm9tKQo+ID4gPiA+ICsgIChsYWJlbHMgKChsdmFyLWVxdWl2YWxlbnQtcCAobDEgbDIp Cj4gPiA+ID4gKyAgICAgICAgICAgICAoZGVjbGFyZSAodHlwZSBsdmFyIGwxIGwyKSkKPiA+ID4g PiArICAgICAgICAgICAgIChjb25kICgoZXEgbDEgbDIpIHQpCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAoKGFuZCAoY29uc3RhbnQtbHZhci1wIGwxKSAoY29uc3RhbnQtbHZhci1wIGwyKSkK PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAoZXFsIChsdmFyLXZhbHVlIGwxKSAobHZhci12 YWx1ZSBsMikpKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgKHQKPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAobGV0ICgodTEgKHByaW5jaXBhbC1sdmFyLXVzZSBsMSkpCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgKHUyIChwcmluY2lwYWwtbHZhci11c2UgbDIpKSkK PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIChjb25kICgoYW5kIChyZWYtcCB1MSkgKHJl Zi1wIHUyKSkKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKHJlZi1s ZWFmIHUxKSAocmVmLWxlYWYgdTIpKSkKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgoYW5kIChjb21iaW5hdGlvbi1wIHUxKSAoY29tYmluYXRpb24tcCB1MikKPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAoYmFzaWMtY29tYmluYXRpb24t a2luZCB1MSkgOmtub3duKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVxIChiYXNpYy1jb21iaW5hdGlvbi1raW5kIHUyKSA6a25vd24pKQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb21iaW5hdGlvbi1lcXVpdmFsZW50LXAgdTEgdTIp KQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgbmlsKSkpKSkpCj4gPiA+ ID4gKyAgICAgICAgICAgKGNvbWJpbmF0aW9uLWVxdWl2YWxlbnQtcCAoYzEgYzIpCj4gPiA+ID4g KyAgICAgICAgICAgICAoZGVjbGFyZSAodHlwZSBjb21iaW5hdGlvbiBjMSBjMikpCj4gPiA+ID4g KyAgICAgICAgICAgICAoYW5kIChlcSAoYmFzaWMtY29tYmluYXRpb24tZnVuLWluZm8gYzEpIChi YXNpYy1jb21iaW5hdGlvbi1mdW4taW5mbyBjMikpCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg IChsZXQgKChhcmdzMSAoYmFzaWMtY29tYmluYXRpb24tYXJncyBjMSkpCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIChhcmdzMiAoYmFzaWMtY29tYmluYXRpb24tYXJncyBjMikpKQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIChhbmQgKD0gKGxlbmd0aCBhcmdzMSkgKGxlbmd0 aCBhcmdzMikpCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlcnkgIydsdmFy LWVxdWl2YWxlbnQtcCBhcmdzMSBhcmdzMikpKSkpKQo+ID4gPiA+ICsgICAgKGRvICgobm9kZSBm cm9tIChjdHJhbi11c2UgKG5vZGUtcHJldiBub2RlKSkpKSAoKG51bGwgbm9kZSkpCj4gPiA+ID4g KyAgICAgICh3aGVuIChhbmQgKGNvbWJpbmF0aW9uLXAgbm9kZSkKPiA+ID4gPiArICAgICAgICAg ICAgICAgICAoZXEgKGNvbWJpbmF0aW9uLWtpbmQgbm9kZSkgOmtub3duKQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgIChub2RlLWx2YXIgbm9kZSkKPiA+ID4gPiArICAgICAgICAgICAgICAgICAo Y29tYmluYXRpb24tZXF1aXZhbGVudC1wIG5vZGUgbWF0Y2gpKQo+ID4gPiA+ICsgICAgICAgIChy ZXR1cm4gbm9kZSkpCj4gPiA+ID4gKyAgICAgICh0eXBlY2FzZSBub2RlCj4gPiA+ID4gKyAgICAg ICAgKChvciBjc2V0IHJlZiBjYXN0IGNvbWJpbmF0aW9uIGNpZikpCj4gPiA+ID4gKyAgICAgICAg KHQKPiA+ID4gPiArICAgICAgICAgOzsgUmV0dXJuIDpGQUlMIHRvIGFib3J0IHF1aWNrbHkuIFRo aXMgY291bGQgY2hvb3NlIHRvIGZhaWwgaWYgYSBub24tZmx1c2hhYmxlCj4gPiA+ID4gKyAgICAg ICAgIDs7IGNvbWJpbmF0aW9uIGlzIHNlZW4sIGJ1dCBmb3Igbm93IEknbSBkZWZlcnJpbmcgdGhh dCBzb3VuZG5lc3MgY2hlY2suCj4gPiA+ID4gKyAgICAgICAgIChyZXR1cm4tZnJvbSBmaW5kLWVx dWl2YWxlbnQtbm9kZS1iYWNrd2FyZHMgOmZhaWwpKSkpKSkKPiA+ID4gPiArCj4gPiA+ID4gKzs7 OyBBdHRtcHQgdG8gZmluZCBhIENPTUJJTkFUSU9OIGVxdWl2YWxlbnQgdG8gVEhJUyBwcmVjZWRp bmcgaXQgaW4gbm9kZSBvcmRlciwgdGhlIHZhbHVlCj4gPiA+ID4gKzs7OyBvZiB3aGljaCBjYW4g YmUgc3Vic3RpdHV0ZWQgZm9yIHRoZSBjYWxsIHRvIFRISVMsIGFjdHVhbGx5IG1ha2luZyB0aGUg c3Vic3RpdHV0aW9uLgo+ID4gPiA+ICs7OzsgTG9va2luZyBiYWNrd2FyZHMgYXQgbW9zdCBhIGZl dyBibG9ja3MgdGVuZHMgdG8gd29yayB3ZWxsIGVub3VnaCwgYW5kIGlucG9ydGFudGx5Cj4gPiA+ ID4gKzs7OyBsaW1pdHMgdGhlIHdvcmsuIFNjYW5uaW5nIG9ubHkgdGhlIGN1cnJlbnQgYmxvY2sg aXMgaW5hZGVxdWF0ZSBhcyB0aGUgZXhhbXBsZQo+ID4gPiA+ICs7OzsgaW4gOkxPT1AtT1ZFUi1E RVJFRiBzaG93cy4gVGhlIGltbWVkaWF0ZSBwcmVkZWNlc3NvciBpcyBzdGlsbCBub3QgZW5vdWdo LCBiZWNhdXNlIHRoZQo+ID4gPiA+ICs7OzsgcHJlZGVjZXNzb3IgY291bGQgaGF2ZSBiZWVuIHNw bGl0LCBsZWF2aW5nIGEgdGlueSBibG9jayB3aGVyZSB0aGUgb25seSBub2RlIGlzCj4gPiA+ID4g Kzs7OyBhIHRyaXZpYWwgb3BlcmF0aW9uLgo+ID4gPiA+ICsoZGVmdW4gdHJ5LXJldXNlLWV4cHIt dmFsdWUgKHRoaXMpCj4gPiA+ID4gKyAgKGRlY2xhcmUgKHR5cGUgY29tYmluYXRpb24gdGhpcykp Cj4gPiA+ID4gKyAgKGJpbmRpbmcqCj4gPiA+ID4gKyAgICAgICgoaG9tZS1sYW1iZGEgKGZpbmQt YWN0aXZlLWxldC1sYW1iZGEgdGhpcykgOmV4aXQtaWYtbnVsbCkKPiA+ID4gPiArICAgICAgIChs b29rYmFjayAwKQo+ID4gPiA+ICsgICAgICAgKGMxCj4gPiA+ID4gKyAgICAgICAgOzsgSW4gdGhp cyBibG9jaywgZXhwbGljaXRseSBnbyBiYWNrIGEgbm9kZSBzbyB0aGF0IEZJTkQtQkFDS1dBUkRT IGRvZXNuJ3QgY29uc2lkZXIgVEhJUwo+ID4gPiA+ICsgICAgICAgIDs7IGFzIGVxdWl2YWxlbnQg dG8gaXRzZWxmLiBGYWlsaW5nIHRoYXQsIHRyeSBwcmVkZWNlc3NvciBibG9ja3MsIGJ1dCBvbmx5 IGFzIGxvbmcgYXMKPiA+ID4gPiArICAgICAgICA7OyBwcmVkIGlzIHVuaXF1ZSBzaW5jZSB3ZSBo YXZlIG5vIGluZm9ybWF0aW9uIGFib3V0IG5vZGVzIHRoYXQgZG9taW5hdGUgVEhJUy4KPiA+ID4g PiArICAgICAgICAob3IgKGZpbmQtZXF1aXZhbGVudC1ub2RlLWJhY2t3YXJkcyB0aGlzIChjdHJh bi11c2UgKG5vZGUtcHJldiB0aGlzKSkpCj4gPiA+ID4gKyAgICAgICAgICAgIChkbyAoKHByZWQg KGJsb2NrLXByZWQgKG5vZGUtYmxvY2sgdGhpcykpKSkKPiA+ID4gPiArICAgICAgICAgICAgICAg ICgob3IgKD4gbG9va2JhY2sgMykgKG5vdCAoc2luZ2xldG9uLXAgcHJlZCkpKSkKPiA+ID4gPiAr ICAgICAgICAgICAgICAoaW5jZiBsb29rYmFjaykKPiA+ID4gPiArICAgICAgICAgICAgICAobGV0 ICgobm9kZSAoYmxvY2stbGFzdCAoY2FyIHByZWQpKSkpCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAod2hlbiAobnVsbCBub2RlKSAocmV0dXJuKSkKPiA+ID4gPiArICAgICAgICAgICAgICAgIChh d2hlbiAoZmluZC1lcXVpdmFsZW50LW5vZGUtYmFja3dhcmRzIHRoaXMgbm9kZSkgKHJldHVybiBp dCkpCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAoc2V0cSBwcmVkIChibG9jay1wcmVkIChub2Rl LWJsb2NrIG5vZGUpKSkpKSkKPiA+ID4gPiArICAgICAgICA6ZXhpdC1pZi1udWxsKQo+ID4gPiA+ ICsgICAgICAgKHZhcnMgOyBjYW4ndCB1c2UgOmV4aXQtaWYtbnVsbCBoZXJlIGJlY2F1c2UgVkFS UyBjYW4gYmUgYW5kIHVzdWFsbHkgaXMgTklMCj4gPiA+ID4gKyAgICAgICAgKHVubGVzcyAoZXEg YzEgOmZhaWwpCj4gPiA+ID4gKyAgICAgICAgICAobWFwY2FuICMnY29sbGVjdC1sdmFyLXZhcnMg KGJhc2ljLWNvbWJpbmF0aW9uLWFyZ3MgYzEpKSkpKQo+ID4gPiA+ICsgICAgKHdoZW4gKGVxIGMx IDpmYWlsKQo+ID4gPiA+ICsgICAgICAocmV0dXJuLWZyb20gdHJ5LXJldXNlLWV4cHItdmFsdWUg bmlsKSkKPiA+ID4gPiArICAgIChsYWJlbHMgKChhbGwtZmx1c2hhYmxlIChjdHJhbiBlbmQtbm9k ZSkKPiA+ID4gPiArICAgICAgICAgICAgICAgKGRlY2xhcmUgKGN0cmFuIGN0cmFuKSAodHlwZSAo b3Igbm9kZSBudWxsKSBlbmQtbm9kZSkpCj4gPiA+ID4gKyAgICAgICAgICAgICAgIChsb29wIChs ZXQgKChub2RlIChjdHJhbi1uZXh0IGN0cmFuKSkpCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgKGNvbmQgKChlcSBub2RlIGVuZC1ub2RlKSAocmV0dXJuIHQpKQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgobm90IChvay10by1mbHVzaCBub2RlKSkgKHJldHVy biBuaWwpKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kIChub3Qg ZW5kLW5vZGUpIChub3QgKG5vZGUtbmV4dCBub2RlKSkpIChyZXR1cm4gdCkpKQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGN0cmFuIChub2RlLW5leHQgbm9kZSkpKSkpCj4g PiA+ID4gKyAgICAgICAgICAgICAob2stdG8tZmx1c2ggKG5vZGUpCj4gPiA+ID4gKyAgICAgICAg ICAgICAgIChjb25kICgoc2V0LXAgbm9kZSkgKG5vdCAobWVtYmVyIChzZXQtdmFyIG5vZGUpIHZh cnMpKSkKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgKChjb21iaW5hdGlvbi1wIG5vZGUp IChmbHVzaGFibGUtY29tYmluYXRpb24tcCBub2RlKSkKPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgKChiYXNpYy1jb21iaW5hdGlvbi1wIG5vZGUpIG5pbCkKPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgKHQgdCkpKSkgOyBhbnl0aGluZyBlbHNlIHRoZSBiYWNrd2FyZHMgc2VhcmNo IGFsbG93ZWQgaXMgb2sKPiA+ID4gPiArICAgICAgOzsgV2hlbiBsb29rYmFjaz4wIGl0J3MgcG9z c2libGUgZm9yIHRoZSBlcXVpdmFsZW50IG5vZGUgdG8gYmUgdGhlIGZpbmFsIG5vZGUKPiA+ID4g PiArICAgICAgOzsgb2YgaXRzIGJsb2NrLCBpbiB3aGljaCBjYXNlIGl0cyBOT0RFLU5FWFQgaXMg bnVsbC4KPiA+ID4gPiArICAgICAgKGxldCogKCh0aGlzLWJsb2NrIChub2RlLWJsb2NrIHRoaXMp KQo+ID4gPiA+ICsgICAgICAgICAgICAgKHByZWQgKGNhciAoYmxvY2stcHJlZCB0aGlzLWJsb2Nr KSkpKQo+ID4gPiA+ICsgICAgICAgICh1bmxlc3MgKGlmICg9IGxvb2tiYWNrIDApCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgKGFsbC1mbHVzaGFibGUgKG5vZGUtbmV4dCBjMSkgdGhpcykK PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAoYW5kCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIDs7IENoZWNrIHByZXYgYmxvY2sgZnJvbSBDMSB0byBpdHMgZW5kIG9mIGJsb2NrLCBh bmQgY3VycmVudCBibG9jayB1cCB0byBUSElTCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IChhY29uZCAoKG5vZGUtbmV4dCBjMSkgKGFsbC1mbHVzaGFibGUgaXQgbmlsKSkgKHQgdCkpCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIChhbGwtZmx1c2hhYmxlIChibG9jay1zdGFydCB0 aGlzLWJsb2NrKSB0aGlzKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICA7OyBBbGwgY2hl Y2sgYWxsIG9mIG9uZSBvciBib3RoIGludGVydmVuaW5nIGJsb2Nrcwo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAob3IgKDwgbG9va2JhY2sgMikKPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgIChhbGwtZmx1c2hhYmxlIChibG9jay1zdGFydCBwcmVkKSBuaWwpKQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAob3IgKDwgbG9va2JhY2sgMykKPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgIChhbGwtZmx1c2hhYmxlIChibG9jay1zdGFydCAoY2FyIChibG9j ay1wcmVkIHByZWQpKSkgbmlsKSkpKQo+ID4gPiA+ICsgICAgICAgICAgKHJldHVybi1mcm9tIHRy eS1yZXVzZS1leHByLXZhbHVlIG5pbCkpKSkKPiA+ID4gPiArICAgIDs7IFN1YnN0aXR1dGUgQzEn cyByZXN1bHQgaW4gZm9yIFRISVMKPiA+ID4gPiArICAgIChiaW5kaW5nKiAoKGx2YXItYzEgKG5v ZGUtbHZhciBjMSkgOmV4aXQtaWYtbnVsbCkKPiA+ID4gPiArICAgICAgICAgICAgICAgKGNvbnN1 bWVyLTEgKGx2YXItZGVzdCBsdmFyLWMxKSA6ZXhpdC1pZi1udWxsKQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAoYzIgdGhpcykKPiA+ID4gPiArICAgICAgICAgICAgICAgKGx2YXItYzIgKG5vZGUt bHZhciBjMikgOmV4aXQtaWYtbnVsbCkKPiA+ID4gPiArICAgICAgICAgICAgICAgKHYgKG1ha2Ut bGFtYmRhLXZhciAoZ2Vuc3ltICJSRVVTRUQtVkFMIikKPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6dHlwZSAoc2luZ2xlLXZhbHVlLXR5cGUgKG5vZGUtZGVyaXZl ZC10eXBlIGMxKSkpKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAobHZhci1uZXcgKG1ha2UtbHZh cikpKQo+ID4gPiA+ICsgICAgICAoYWRkLXZhcmlhYmxlLXRvLWxldC1sYW1iZGEgaG9tZS1sYW1i ZGEgdikKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgIDs7IDEuIFJlZGlyZWN0IGNvbnN1bWVyLTEg dG8gcmVhZCBmcm9tIGx2YXItbmV3Cj4gPiA+ID4gKyAgICAgIChzdWJzdGl0dXRlLWx2YXIgbHZh ci1uZXcgbHZhci1jMSkKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICh3aXRoLWlyMS1lbnZpcm9u bWVudC1mcm9tLW5vZGUgYzEKPiA+ID4gPiArICAgICAgICA7OyAyLiBNYWtlIEMxIHdyaXRlIHRv IGEgbmV3IExWQVIsIGFuZCBsaW5rIGl0IHRvIGEgQ1NFVCBvbiBWCj4gPiA+ID4gKyAgICAgICAg KGxldCAoKGx2YXItYzEtbmV3IChtYWtlLWx2YXIpKSkKPiA+ID4gPiArICAgICAgICAgICglZGVs ZXRlLWx2YXItdXNlIGMxKQo+ID4gPiA+ICsgICAgICAgICAgKHVzZS1sdmFyIGMxIGx2YXItYzEt bmV3KQo+ID4gPiA+ICsgICAgICAgICAgOzsgMy4gQ3JlYXRlIFMxIChzZXQgViA9IGx2YXItYzEt bmV3KSBhbmQgaW5zZXJ0IGFmdGVyIEMxCj4gPiA+ID4gKyAgICAgICAgICAobGV0ICgoczEgKG1h a2Utc2V0IHYgbHZhci1jMS1uZXcpKSkKPiA+ID4gPiArICAgICAgICAgICAgKHNldGYgKGx2YXIt ZGVzdCBsdmFyLWMxLW5ldykgczEpCj4gPiA+ID4gKyAgICAgICAgICAgIChwdXNoIHMxIChiYXNp Yy12YXItc2V0cyB2KSkKPiA+ID4gPiArICAgICAgICAgICAgKGluc2VydC1ub2RlLWFmdGVyIGMx IHMxKSkpKQo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgOzsgNC4gSW5zZXJ0IHJlZjEgYmVmb3Jl IGNvbnN1bWVyLTEsIHdyaXRpbmcgdG8gbHZhci1uZXcKPiA+ID4gPiArICAgICAgKGluc2VydC1y ZWYtYmVmb3JlIHYgY29uc3VtZXItMSBsdmFyLW5ldykKPiA+ID4gPiArICAgICAgOzsgNS4gSW5z ZXJ0IHJlZjIgYmVmb3JlIEMyLCBzdGVhbGluZyBDMidzIGx2YXIKPiA+ID4gPiArICAgICAgKGlu c2VydC1yZWYtYmVmb3JlIHYgYzIgdCkKPiA+ID4gPiArICAgICAgOzsgQzIgaXMgbm93IGRlYWQg YW5kIHdpbGwgYmUgZmx1c2hlZCBieSB0aGUgY2FsbGVyIQo+ID4gPiA+ICsgICAgICB0KSkpCj4g PiA+ID4gKwo+ID4gPiA+ICA7OzsgRG8gSVIxIG9wdGltaXphdGlvbnMgb24gYSBDT01CSU5BVElP TiBub2RlLgo+ID4gPiA+ICAoZGVmdW4gaXIxLW9wdGltaXplLWNvbWJpbmF0aW9uIChub2RlICZh dXggKHNob3cgKnNob3ctdHJhbnNmb3Jtcy1wKikpCj4gPiA+ID4gICAgKGRlY2xhcmUgKHR5cGUg Y29tYmluYXRpb24gbm9kZSkpCj4gPiA+ID4gQEAgLTEzMDUsNiArMTQ4MSw5IEBACj4gPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAobm9kZS1sdmFyIG5vZGUpKSkKPiA+ID4gPiAg ICAgICAgICAgICAgICAgICAgKHJldHVybi1mcm9tIGlyMS1vcHRpbWl6ZS1jb21iaW5hdGlvbiAo Zmx1c2gtbm9kZSBub2RlKSkpCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgKChmb2xkLWNhbGwt ZGVyaXZlZC10by1jb25zdGFudCBub2RlKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAocmV0 dXJuLWZyb20gaXIxLW9wdGltaXplLWNvbWJpbmF0aW9uKSkKPiA+ID4gPiArICAgICAgICAgICAg ICAgICAoKGFuZCAoY29tYmluYXRpb24taXMgbm9kZSAqZWxpZGFibGUtbWVtb3J5LWxvYWRzKikK PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAodHJ5LXJldXNlLWV4cHItdmFsdWUgbm9k ZSkpCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgIChyZXR1cm4tZnJvbSBpcjEtb3B0aW1pemUt Y29tYmluYXRpb24pKSkKPiA+ID4gPiAgICAgICAgICAgICAod2hlbiAoYW5kIChpcjEtYXR0cmli dXRlcCAoZnVuLWluZm8tYXR0cmlidXRlcyBpbmZvKSBjb21tdXRhdGl2ZSkKPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICAgICg9IChsZW5ndGggYXJncykgMikKPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvdGVzdHMvbGNzZS5wdXJlLmxpc3AgYi90ZXN0cy9sY3NlLnB1cmUubGlzcAo+ID4gPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwLi40M2IzNGU5OTgKPiA+ ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ID4gKysrIGIvdGVzdHMvbGNzZS5wdXJlLmxpc3AKPiA+ ID4gPiBAQCAtMCwwICsxLDIzNCBAQAo+ID4gPiA+ICs7Ozs7IFRoaXMgc29mdHdhcmUgaXMgcGFy dCBvZiB0aGUgU0JDTCBzeXN0ZW0uIFNlZSB0aGUgUkVBRE1FIGZpbGUgZm9yCj4gPiA+ID4gKzs7 OzsgbW9yZSBpbmZvcm1hdGlvbi4KPiA+ID4gPiArOzs7Owo+ID4gPiA+ICs7Ozs7IFdoaWxlIG1v c3Qgb2YgU0JDTCBpcyBkZXJpdmVkIGZyb20gdGhlIENNVSBDTCBzeXN0ZW0sIHRoZSB0ZXN0Cj4g PiA+ID4gKzs7OzsgZmlsZXMgKGxpa2UgdGhpcyBvbmUpIHdlcmUgd3JpdHRlbiBmcm9tIHNjcmF0 Y2ggYWZ0ZXIgdGhlIGZvcmsKPiA+ID4gPiArOzs7OyBmcm9tIENNVSBDTC4KPiA+ID4gPiArOzs7 Owo+ID4gPiA+ICs7Ozs7IFRoaXMgc29mdHdhcmUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4gYW5k IGlzIHByb3ZpZGVkIHdpdGgKPiA+ID4gPiArOzs7OyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5LiBT ZWUgdGhlIENPUFlJTkcgYW5kIENSRURJVFMgZmlsZXMgZm9yCj4gPiA+ID4gKzs7OzsgbW9yZSBp bmZvcm1hdGlvbi4KPiA+ID4gPiArCj4gPiA+ID4gKzs7OzsgVGVzdHMgb2YgbG9jYWwgY29tbW9u IHN1YmV4cHJlc3Npb24gZWxpbWluYXRpb24KPiA+ID4gPiArCj4gPiA+ID4gKyhpbXBvcnQgJyhj dHU6aW5zcGVjdC1pcgo+ID4gPiA+ICsgICAgICAgICAgc2ItYzo6Y29tYmluYXRpb24tZnVuLWRl YnVnLW5hbWUKPiA+ID4gPiArICAgICAgICAgIHNiLWM6OmJhc2ljLWNvbWJpbmF0aW9uLXApKQo+ ID4gPiA+ICsKPiA+ID4gPiArKGRlZnVuIGlyLWNhbGxzIChmb3JtKQo+ID4gPiA+ICsgIChsZXQg KGNhbGxzKQo+ID4gPiA+ICsgICAgKGluc3BlY3QtaXIKPiA+ID4gPiArICAgICBmb3JtCj4gPiA+ ID4gKyAgICAgKGxhbWJkYSAoY29tcG9uZW50KQo+ID4gPiA+ICsgICAgICAgKGN0dTpkby1ibG9j a3MgKGJsb2NrIGNvbXBvbmVudCkKPiA+ID4gPiArICAgICAgICAgKGN0dTpkby1ub2RlcyAobm9k ZSBuaWwgYmxvY2spCj4gPiA+ID4gKyAgICAgICAgICAgKHdoZW4gKGJhc2ljLWNvbWJpbmF0aW9u LXAgbm9kZSkKPiA+ID4gPiArICAgICAgICAgICAgIChwdXNoIG5vZGUgY2FsbHMpKSkpKSkKPiA+ ID4gPiArICAgIGNhbGxzKSkKPiA+ID4gPiArCj4gPiA+ID4gKyhkZWZtYWNybyBhc3NlcnQtY2Fs bHMgKGZ1bi1uYW1lIGV4cGVjdGVkLWNvdW50ICgmcmVzdCBsYW1iZGEtYXJncykgJmJvZHkgYm9k eSkKPiA+ID4gPiArICAoc2ItaW50OmJpbmRpbmcqCj4gPiA+ID4gKyAgICAgICgoKGZvcm1zIGRl Y2xzKSAoc2ItaW50OnBhcnNlLWJvZHkgYm9keSBuaWwpKQo+ID4gPiA+ICsgICAgICAgKGxleHBy IGAobGFtYmRhICgsQGxhbWJkYS1hcmdzKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICxAZGVj bHMKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgOzsgV2l0aG91dCBhIGNvbnRhaW5pbmcgTEVU IGZvcm0sIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIENTRQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICA7OyBpcyB1bndpbGxpbmcgdG8gYmluZCBhIHRlbXBvcmFyeSBsYW1iZGEgdmFy IGZvciByZXVzZS4KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgKGxldCAoKGFjdGl2ZS1sZXQt dmFyIDApKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIChwcmludCBhY3RpdmUtbGV0LXZh cikKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAoaW5jZiBhY3RpdmUtbGV0LXZhciAocmFu ZG9tIDUpKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIChwcmludCBhY3RpdmUtbGV0LXZh cikKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAsQGZvcm1zKSkpKQo+ID4gPiA+ICsgICAg YChhc3NlcnQgKD0gKGNvdW50ICcsZnVuLW5hbWUgKGlyLWNhbGxzICcsbGV4cHIpIDprZXkgIydj b21iaW5hdGlvbi1mdW4tZGVidWctbmFtZSkKPiA+ID4gPiArICAgICAgICAgICAgICAgICxleHBl Y3RlZC1jb3VudCkpKSkKPiA+ID4gPiArCj4gPiA+ID4gKzs7OyBCYXNpYyB0ZXN0czogYSBzYW1w bGluZyBvZiBlbGlkYWJsZSBsb2FkIHR5cGUgd2l0aCB0d28gaWRlbnRpY2FsIGxvYWRzCj4gPiA+ ID4gKwo+ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6Y2FyKSkKPiA+ID4gPiArICAo YXNzZXJ0LWNhbGxzIGNhciAxIChjb25zKQo+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29u cyBjb25zKSkKPiA+ID4gPiArICAgIChpZiAoY2FyIGNvbnMpCj4gPiA+ID4gKyAgICAgICAgKHBy aW5jIChjYXIgY29ucykpCj4gPiA+ID4gKyAgICAgICAgKHByaW5jIChjZHIgY29ucykpKSkpCj4g PiA+ID4gKwo+ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6ZGlmZmVyZW50LW5hbWVz LWZvci1zYW1lLW9iamVjdCkpCj4gPiA+ID4gKyAgOzsgWSBhbmQgWCByZWZlciB0byB0aGUgc2Ft ZSB0aGluZywgYW5kIGl0IGRvZXNuJ3QgbWF0dGVyCj4gPiA+ID4gKyAgOzsgd2hvc2UgQ0RSIHdl IHRha2UgZmlyc3QuIE9ubHkgb25lIENEUiBvcGVyYXRpb24gaXMgcGVyZm9ybWVkCj4gPiA+ID4g KyAgKGFzc2VydC1jYWxscyBjZHIgMSAoeCkKPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBlIGNv bnMgeCkpCj4gPiA+ID4gKyAgICAobGV0ICgoeSB4KSkKPiA+ID4gPiArICAgICAgKGxpc3QgKGNk ciB5KSAoY2RyIHgpKSkpCj4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBjZHIgMSAoeCkKPiA+ID4g PiArICAgIChkZWNsYXJlICh0eXBlIGNvbnMgeCkpCj4gPiA+ID4gKyAgICAobGV0ICgoeSB4KSkK PiA+ID4gPiArICAgICAgKGxpc3QgKGNkciB4KSAoY2RyIHkpKSkpKQo+ID4gPiA+ICsKPiA+ID4g PiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOmNvbXBvc2l0aW9uLW9mLWN4cikpCj4gPiA+ID4g KyAgOzsgVGhlIENBUiBleHRyYWN0aW9uIHdoaWNoIGlzIHBhcnQgb2YgdGhlIENEQVIgZnVuY3Rp b24gY2FuIGJlCj4gPiA+ID4gKyAgOzsgcmV1c2VkIGJhc2VkIG9uIHRoZSBmYWN0IHRoYXQgd2Ug ZXZhbHVhdGVkIChMSVNUUCAoQ0FSIFgpKQo+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgY2FyIDEg KHgpCj4gPiA+ID4gKyAgICAoaWYgKGxpc3RwIChjYXIgeCkpIChjZGFyIHgpKSkKPiA+ID4gPiAr ICA7OyBuZWdhdGl2ZSB0ZXN0IC0gQ0RBUiBvbiBhIGRpZmZlcmVudCBZIGlzIGFub3RoZXIgQ0FS IG9wZXJhdGlvbgo+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgY2FyIDIgKHggeSkKPiA+ID4gPiAr ICAgIChpZiAobGlzdHAgKGNhciB4KSkgKGNkYXIgeSkpKSkKPiA+ID4gPiArCj4gPiA+ID4gKyhk ZWZzdHJ1Y3QgY3NlLXRlc3QtZm9vIHNsb3QgKHdzbG90IDAgOnR5cGUgc2Itdm06d29yZCkpCj4g PiA+ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDppbnN0YW5jZS1yZWYpKQo+ID4gPiA+ICsg IChhc3NlcnQtY2FsbHMgc2Ita2VybmVsOiVpbnN0YW5jZS1yZWYgMSAoeCkKPiA+ID4gPiArICAg IDs7IERlcGVuZGluZyBvbiB3aGF0IFRSQU5TRk9STS1JTlNUQU5DRS1UWVBFUCBkb2VzLCBpdCBt aWdodCBhY2Nlc3MgaW5zdGFuY2UtbGF5b3V0Cj4gPiA+ID4gKyAgICA7OyB1c2luZyAlSU5TVEFO Q0UtUkVGIHdoaWNoIHdvdWxkIGhhdmUgdG8gYmUgZGlzY291bnRlZCBpbiB0aGUgY2FsbCBjb3Vu dGluZy4KPiA+ID4gPiArICAgIDs7IEp1c3QgYnJ1dGUtZm9yY2UgdGhlIHR5cGUgdG8gYXZvaWQg dGhhdCBzaXR1YXRpb24uCj4gPiA+ID4gKyAgICAobGV0ICgoeCAodHJ1bHktdGhlIGNzZS10ZXN0 LWZvbyB4KSkpCj4gPiA+ID4gKyAgICAgIChpZiAoY3NlLXRlc3QtZm9vLXNsb3QgeCkKPiA+ID4g PiArICAgICAgICAgIChwcmluYyAoY3NlLXRlc3QtZm9vLXNsb3QgeCkpCj4gPiA+ID4gKyAgICAg ICAgICBuaWwpKSkpCj4gPiA+ID4gKwo+ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6 cmF3LWluc3RhbmNlLXJlZi93b3JkKSkKPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIHNiLWtlcm5l bDolcmF3LWluc3RhbmNlLXJlZi93b3JkIDEgKHgpCj4gPiA+ID4gKyAgICAoZGVjbGFyZSAodHlw ZSBjc2UtdGVzdC1mb28geCkpCj4gPiA+ID4gKyAgICAoaWYgKGxvZ3Rlc3QgKGNzZS10ZXN0LWZv by13c2xvdCB4KSAjeGZmMDAwKQo+ID4gPiA+ICsgICAgICAgIChwcmluYyAoY3NlLXRlc3QtZm9v LXdzbG90IHgpKQo+ID4gPiA+ICsgICAgICAgIG5pbCkpKQo+ID4gPiA+ICsKPiA+ID4gPiArKHdp dGgtdGVzdCAoOm5hbWUgKDpjc2UgOnNhcC1yZWYtMzIpKQo+ID4gPiA+ICsgIChhc3NlcnQtY2Fs bHMgc2Itc3lzOnNhcC1yZWYtMzIgMSAoc2FwIG9mZnNldCkKPiA+ID4gPiArICAgIChkZWNsYXJl ICh0eXBlIHNiLXN5czpzeXN0ZW0tYXJlYS1wb2ludGVyIHNhcCkKPiA+ID4gPiArICAgICAgICAg ICAgICh0eXBlIHNiLXZtOndvcmQgb2Zmc2V0KSkKPiA+ID4gPiArICAgIChpZiAocGx1c3AgKHNi LXN5czpzYXAtcmVmLTMyIHNhcCBvZmZzZXQpKQo+ID4gPiA+ICsgICAgICAgIChwcmluYyAoc2It c3lzOnNhcC1yZWYtMzIgc2FwIG9mZnNldCkpCj4gPiA+ID4gKyAgICAgICAgbmlsKSkKPiA+ID4g PiArICAoYXNzZXJ0LWNhbGxzIHNiLXN5czpzaWduZWQtc2FwLXJlZi0zMiAxIChzYXAgb2Zmc2V0 KQo+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIg c2FwKQo+ID4gPiA+ICsgICAgICAgICAgICAgKHR5cGUgc2Itdm06d29yZCBvZmZzZXQpKQo+ID4g PiA+ICsgICAgKGlmIChwbHVzcCAoc2Itc3lzOnNpZ25lZC1zYXAtcmVmLTMyIHNhcCBvZmZzZXQp KQo+ID4gPiA+ICsgICAgICAgIChwcmluYyAoc2Itc3lzOnNpZ25lZC1zYXAtcmVmLTMyIHNhcCBv ZmZzZXQpKQo+ID4gPiA+ICsgICAgICAgIG5pbCkpKQo+ID4gPiA+ICsKPiA+ID4gPiArKHdpdGgt dGVzdCAoOm5hbWUgKDpjc2UgOnNhcC1yZWYtNjQpIDpza2lwcGVkLW9uICg6bm90IDo2NC1iaXQp KQo+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgc2Itc3lzOnNhcC1yZWYtNjQgMSAoc2FwIG9mZnNl dCkKPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBlIHNiLXN5czpzeXN0ZW0tYXJlYS1wb2ludGVy IHNhcCkKPiA+ID4gPiArICAgICAgICAgICAgICh0eXBlIHNiLXZtOndvcmQgb2Zmc2V0KSkKPiA+ ID4gPiArICAgIChpZiAocGx1c3AgKHNiLXN5czpzYXAtcmVmLTY0IHNhcCBvZmZzZXQpKQo+ID4g PiA+ICsgICAgICAgIChwcmluYyAoc2Itc3lzOnNhcC1yZWYtNjQgc2FwIG9mZnNldCkpCj4gPiA+ ID4gKyAgICAgICAgbmlsKSkKPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIHNiLXN5czpzaWduZWQt c2FwLXJlZi02NCAxIChzYXAgb2Zmc2V0KQo+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgc2It c3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwKQo+ID4gPiA+ICsgICAgICAgICAgICAgKHR5cGUg c2Itdm06d29yZCBvZmZzZXQpKQo+ID4gPiA+ICsgICAgKGlmIChwbHVzcCAoc2Itc3lzOnNpZ25l ZC1zYXAtcmVmLTY0IHNhcCBvZmZzZXQpKQo+ID4gPiA+ICsgICAgICAgIChwcmluYyAoc2Itc3lz OnNpZ25lZC1zYXAtcmVmLTY0IHNhcCBvZmZzZXQpKQo+ID4gPiA+ICsgICAgICAgIG5pbCkpKQo+ ID4gPiA+ICsKPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOmxvb3Atb3Zlci1kZXJl ZikpCj4gPiA+ID4gKyAgKGxldCAoKGxleHByCj4gPiA+ID4gKyAgICAgICAgICcobGFtYmRhIChm KQo+ID4gPiA+ICsgICAgICAgICAgICAoZGVjbGFyZSAob3B0aW1pemUgKHNiLWM6OmFsaWVuLWZ1 bmNhbGwtc2F2ZXMtZnAtYW5kLXBjIDApCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2ItYzo6dHlwZS1jaGVjayAwKSkpCj4gPiA+ID4gKyAgICAgICAgICAgIDs7IEYg cmV0dXJucyBhIHBvaW50ZXIgdG8gYSBudWxsLXRlcm1pbmF0ZWQgYXJyYXkgb2YgdW5zaWduZWQt aW50Lgo+ID4gPiA+ICsgICAgICAgICAgICA7OyBUaGUgZGVyZWYgZm9yIHRoZSBsb29wIHRlcm1p bmF0aW9uIHRlc3QsIGFuZCBhZ2FpbiBpbiB0aGUgYm9keQo+ID4gPiA+ICsgICAgICAgICAgICA7 OyBzaG91bGQgdXNlIGEgc2luZ2xlIG1lbW9yeSBsb2FkLgo+ID4gPiA+ICsgICAgICAgICAgICAo bGV0ICgoYSAoYWxpZW4tZnVuY2FsbCAodGhlIChhbGllbiAoZnVuY3Rpb24gKCogdW5zaWduZWQp KSkgZikpKSkKPiA+ID4gPiArICAgICAgICAgICAgICAoZG8gKChpbmRleCAwICgxKyBpbmRleCkp KQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAoKHplcm9wIChkZXJlZiBhIGluZGV4KSkpCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAocHJpbmMgKHRoZSBmaXhudW0gKGRlcmVmIGEgaW5kZXgp KSkpKSkpKQo+ID4gPiA+ICsgICAgKGFzc2VydCAoPSAoY291bnQgIysob3IgYXJtNjQgeDg2LTY0 KSAnc2Itc3lzOiVzYXAtcmVmLTY0LWluZGV4ZWQKPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICMtKG9yIGFybTY0IHg4Ni02NCkKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIChw cm9nbiAjKzY0LWJpdCAnc2Itc3lzOnNhcC1yZWYtNjQgIy02NC1iaXQgJ3NiLXN5czpzYXAtcmVm LTMyKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKGlyLWNhbGxzIGxleHByKSA6a2V5 ICMnY29tYmluYXRpb24tZnVuLWRlYnVnLW5hbWUpCj4gPiA+ID4gKyAgICAgICAgICAgICAgIDEp KSkpCj4gPiA+ID4gKwo+ID4gPiA+ICs7OzsgU0VUUSBvZiBhIHZhcmlhYmxlIHVzZWQgYXMgYW4g YXJndW1lbnQgdG8gYW4gZWxpZGFibGUgbG9hZCBwcmV2ZW50cyBDU0UuCj4gPiA+ID4gKzs7OyBX aGVuIGEgdmFyaWFibGUgdGhhdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIGxvYWQgZXhwcmVzc2lvbiAo ZS5nLiwgdGhlIGNvbnMKPiA+ID4gPiArOzs7IGJlaW5nIENBUidkKSBpcyBhc3NpZ25lZCBiZXR3 ZWVuIHR3byBpZGVudGljYWwgbG9hZHMsIHRoZSBzZWNvbmQgbG9hZAo+ID4gPiA+ICs7OzsgbXVz dCBub3QgYmUgZWxpbWluYXRlZCBiZWNhdXNlIHRoZSB2YXJpYWJsZSBtYXkgcmVmZXJlbmNlIGEg ZGlmZmVyZW50IG9iamVjdC4KPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOnNldHEt b2YtbG9hZC1hcmctcHJldmVudHMtY2FyKSkKPiA+ID4gPiArICA7OyBDT05TIGlzIHRoZSBhcmd1 bWVudCB0byBDQVIuIEFzc2lnbmluZyBDT05TIGJldHdlZW4gdHdvIChDQVIgQ09OUykKPiA+ID4g PiArICA7OyBwcmV2ZW50cyBDU0UuCj4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBjYXIgMiAoY29u cyBvdGhlcikKPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBlIGNvbnMgY29ucyBvdGhlcikpCj4g PiA+ID4gKyAgICAobGV0ICgoYSAoY2FyIGNvbnMpKSkKPiA+ID4gPiArICAgICAgKHNldHEgY29u cyBvdGhlcikKPiA+ID4gPiArICAgICAgKGxldCAoKGIgKGNhciBjb25zKSkpCj4gPiA+ID4gKyAg ICAgICAgKGxpc3QgYSBiKSkpKSkKPiA+ID4gPiArCj4gPiA+ID4gKyh3aXRoLXRlc3QgKDpuYW1l ICg6Y3NlIDpzZXRxLW9mLWxvYWQtYXJnLXByZXZlbnRzLWNkcikpCj4gPiA+ID4gKyAgKGFzc2Vy dC1jYWxscyBjZHIgMiAoY29ucyBvdGhlcikKPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBlIGNv bnMgY29ucyBvdGhlcikpCj4gPiA+ID4gKyAgICAobGV0ICgoYSAoY2RyIGNvbnMpKSkKPiA+ID4g PiArICAgICAgKHNldHEgY29ucyBvdGhlcikKPiA+ID4gPiArICAgICAgKGxldCAoKGIgKGNkciBj b25zKSkpCj4gPiA+ID4gKyAgICAgICAgKGxpc3QgYSBiKSkpKSkKPiA+ID4gPiArCj4gPiA+ID4g Kyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpzZXRxLW9mLWxvYWQtYXJnLXByZXZlbnRzLWluc3Rh bmNlLXJlZikpCj4gPiA+ID4gKyAgOzsgQXNzaWduaW5nIHRoZSBzdHJ1Y3QgdmFyaWFibGUgYmV0 d2VlbiB0d28gcmVhZHMgb2YgdGhlIHNhbWUgc2xvdCBwcmV2ZW50cyBDU0UuCj4gPiA+ID4gKyAg KGFzc2VydC1jYWxscyBzYi1rZXJuZWw6JWluc3RhbmNlLXJlZiAyICh4IHkpCj4gPiA+ID4gKyAg ICAobGV0ICgoeCAodHJ1bHktdGhlIGNzZS10ZXN0LWZvbyB4KSkKPiA+ID4gPiArICAgICAgICAg ICh5ICh0cnVseS10aGUgY3NlLXRlc3QtZm9vIHkpKSkKPiA+ID4gPiArICAgICAgKGxldCAoKGEg KGNzZS10ZXN0LWZvby1zbG90IHgpKSkKPiA+ID4gPiArICAgICAgICAoc2V0cSB4IHkpCj4gPiA+ ID4gKyAgICAgICAgKGxldCAoKGIgKGNzZS10ZXN0LWZvby1zbG90IHgpKSkKPiA+ID4gPiArICAg ICAgICAgIChsaXN0IGEgYikpKSkpKQo+ID4gPiA+ICsKPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5h bWUgKDpjc2UgOnNldHEtb2YtbG9hZC1hcmctcHJldmVudHMtc2FwLXJlZikpCj4gPiA+ID4gKyAg OzsgQXNzaWduaW5nIHRoZSBTQVAgdmFyaWFibGUgYmV0d2VlbiB0d28gcmVhZHMgYXQgdGhlIHNh bWUgb2Zmc2V0Cj4gPiA+ID4gKyAgOzsgbXVzdCBwcmV2ZW50IENTRSBzaW5jZSB0aGUgc2Vjb25k IHJlYWQgbWF5IHVzZSBhIGRpZmZlcmVudCBTQVAuCj4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBz Yi1zeXM6c2FwLXJlZi0zMiAyIChzYXAxIHNhcDIgb2Zmc2V0KQo+ID4gPiA+ICsgICAgKGRlY2xh cmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwMSBzYXAyKQo+ID4gPiA+ICsg ICAgICAgICAgICAgKHR5cGUgc2Itdm06d29yZCBvZmZzZXQpKQo+ID4gPiA+ICsgICAgKGxldCAo KGEgKHNiLXN5czpzYXAtcmVmLTMyIHNhcDEgb2Zmc2V0KSkpCj4gPiA+ID4gKyAgICAgIChzZXRx IHNhcDEgc2FwMikKPiA+ID4gPiArICAgICAgKGxldCAoKGIgKHNiLXN5czpzYXAtcmVmLTMyIHNh cDEgb2Zmc2V0KSkpCj4gPiA+ID4gKyAgICAgICAgKGxpc3QgYSBiKSkpKSkKPiA+ID4gPiArCj4g PiA+ID4gKzs7OyBTRVRRIG9mIGFuICp1bnJlbGF0ZWQqIHZhcmlhYmxlIHNob3VsZCBOT1QgcHJl dmVudCBDU0UuCj4gPiA+ID4gKzs7OyBPbmx5IG11dGF0aW9ucyBvZiB2YXJpYWJsZXMgdGhhdCBw YXJ0aWNpcGF0ZSBpbiB0aGUgbG9hZCBtYXR0ZXIuCj4gPiA+ID4gKyh3aXRoLXRlc3QgKDpuYW1l ICg6Y3NlIDpzZXRxLW9mLXVucmVsYXRlZC12YXItYWxsb3dzLWNzZSkpCj4gPiA+ID4gKyAgOzsg WiBpcyBub3QgYW4gYXJndW1lbnQgdG8gQ0FSLCBzbyBzZXR0aW5nIFogZG9lcyBub3QgaW5oaWJp dCBDU0UuCj4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBjYXIgMSAoY29ucyB6KQo+ID4gPiA+ICsg ICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ID4gPiArICAgIChsZXQgKChhIChjYXIg Y29ucykpKQo+ID4gPiA+ICsgICAgICAoc2V0cSB6IGEpCj4gPiA+ID4gKyAgICAgIChsZXQgKChi IChjYXIgY29ucykpKQo+ID4gPiA+ICsgICAgICAgIChsaXN0IHogYikpKSkpCj4gPiA+ID4gKwo+ ID4gPiA+ICs7OzsgU0ItVEhSRUFEOkJBUlJJRVIgb2YgYW55IGtpbmQgcHJldmVudHMgZWxpc2lv biBvZiB0aGUgc2Vjb25kIGxvYWQKPiA+ID4gPiArOzs7IHNpbmNlIHRoZSBtZW1vcnkgYmFycmll cnMgaXMgbm90IGZsdXNoYWJsZS4gVGhpcyBpcyB0aGUgY29uc2VydmF0aXZlIHN0YW5jZS4KPiA+ ID4gPiArOzs7IFRoZSBhY3R1YWwgKGxvb3NlcikgcmVxdWlyZW1lbnRzIGFyZSBtb3JlIHN1YnRs ZSB0aGFuIEkgY2FyZSB0byBkZWFsIHdpdGguCj4gPiA+ID4gKyhkZWZtYWNybyBiYXJyaWVyLXRl c3QgKGtpbmQpCj4gPiA+ID4gKyAgYCh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpiYXJyaWVyLXBy ZXZlbnRzLWNhciAsa2luZCkpCj4gPiA+ID4gKyAgICAgKGFzc2VydC1jYWxscyBjYXIgMiAoY29u cykKPiA+ID4gPiArICAgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ID4gPiArICAg ICAgKGxldCAoKGEgKGNhciBjb25zKSkpCj4gPiA+ID4gKyAgICAgICAgKHNiLXRocmVhZDpiYXJy aWVyICgsa2luZCkpCj4gPiA+ID4gKyAgICAgICAgKGxldCAoKGIgKGNhciBjb25zKSkpCj4gPiA+ ID4gKyAgICAgICAgICAobGlzdCBhIGIpKSkpKSkKPiA+ID4gPiArKGJhcnJpZXItdGVzdCA6cmVh ZCkKPiA+ID4gPiArKGJhcnJpZXItdGVzdCA6d3JpdGUpCj4gPiA+ID4gKyhiYXJyaWVyLXRlc3Qg Om1lbW9yeSkKPiA+ID4gPiArKGJhcnJpZXItdGVzdCA6Y29tcGlsZXIpCj4gPiA+ID4gKyhiYXJy aWVyLXRlc3QgOmRhdGEtZGVwZW5kZW5jeSkKPiA+ID4gPiArCj4gPiA+ID4gKzs7OyBBbnkgbm9u LWZsdXNoYWJsZSBjYWxsIGJldHdlZW4gdHdvIGlkZW50aWNhbCBsb2FkcyBwcmV2ZW50cyBDU0UK PiA+ID4gPiArOzs7IGJlY2F1c2UgdGhlIGNhbGwgbWF5IGhhdmUgc2lkZSBlZmZlY3RzIHRoYXQg bW9kaWZ5IHRoZSBsb2FkZWQgbWVtb3J5Lgo+ID4gPiA+ICsKPiA+ID4gPiArKHdpdGgtdGVzdCAo Om5hbWUgKDpjc2UgOm5vbi1mbHVzaGFibGUtY2FsbC1wcmV2ZW50cy1jc2UpKQo+ID4gPiA+ICsg IDs7IFBSSU5DIGlzIGEgbm9uLWZsdXNoYWJsZQo+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgY2Fy IDIgKGNvbnMpCj4gPiA+ID4gKyAgICAoZGVjbGFyZSAodHlwZSBjb25zIGNvbnMpKQo+ID4gPiA+ ICsgICAgKGxldCAoKGEgKGNhciBjb25zKSkpCj4gPiA+ID4gKyAgICAgIChwcmluYyA0MikKPiA+ ID4gPiArICAgICAgKGxldCAoKGIgKGNhciBjb25zKSkpCj4gPiA+ID4gKyAgICAgICAgKGxpc3Qg YSBiKSkpKSkKPiA+ID4gPiArCj4gPiA+ID4gKzs7OyBEaWZmZXJlbnQgZnVuY3Rpb25zIG9uIHRo ZSBzYW1lIG9iamVjdCBhcmUgTk9UIGNvbnNpZGVyZWQgY29tbW9uIHN1YmV4cHJlc3Npb25zLgo+ ID4gPiA+ICs7OzsgKENBUiB4KSBhbmQgKENEUiB4KSBhcmUgZGlmZmVyZW50IGxvYWRzIGV2ZW4g aWYgeCBpcyB0aGUgc2FtZS4KPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOmRpZmZl cmVudC1hY2Nlc3NvcnMtbm90LWNzZSkpCj4gPiA+ID4gKyAgOzsgQm90aCBDQVIgYW5kIENEUiBz aG91bGQgYXBwZWFyLCBlYWNoIGV4YWN0bHkgb25jZS4KPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxz IGNhciAxIChjb25zKQo+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ ID4gPiArICAgIChpZiAoY2FyIGNvbnMpCj4gPiA+ID4gKyAgICAgICAgKHByaW5jIChjZHIgY29u cykpCj4gPiA+ID4gKyAgICAgICAgbmlsKSkKPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIGNkciAx IChjb25zKQo+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ID4gPiAr ICAgIChpZiAoY2FyIGNvbnMpCj4gPiA+ID4gKyAgICAgICAgKHByaW5jIChjZHIgY29ucykpCj4g PiA+ID4gKyAgICAgICAgbmlsKSkpCj4gPiA+ID4gZGlmZiAtLWdpdCBhL3hwZXJmZWN0aGFzaDMw Lmxpc3AtZXhwciBiL3hwZXJmZWN0aGFzaDMwLmxpc3AtZXhwcgo+ID4gPiA+IGluZGV4IDZhNTAz YWNmMC4uMWI3MjI3Yzc4IDEwMDY0NAo+ID4gPiA+IC0tLSBhL3hwZXJmZWN0aGFzaDMwLmxpc3At ZXhwcgo+ID4gPiA+ICsrKyBiL3hwZXJmZWN0aGFzaDMwLmxpc3AtZXhwcgo+ID4gPiA+IEBAIC0x NTA2LDYgKzE1MDYsOSBAQAo+ID4gPiA+ICAoIygxMEJFNzI3NyAxMjIxNEFFOCAxMkUyQ0JEQSAx OTczOTUzOSAxRjM1NTZDNyAxRjY0NDM4NykKPiA+ID4gPiAgICIoSU5URUdFUiBCSUdOVU0gU0It Vk06OlVOU0lHTkVELUJZVEUtMzEgU0ItVk06OlNJR05FRC1CWVRFLTMyIEZJWE5VTSBTQi1WTTo6 UE9TSVRJVkUtRklYTlVNKSIKPiA+ID4gPiAgICIoKCYgKF4gdmFsICg+PiB2YWwgMjIpKSA3KSki KQo+ID4gPiA+ICsoIygxMEQyRUE0RSAxMjI0QzU1NyAxNUE1OEQ4NSAxNUI1QTJCNSAxNzUyNEE3 OCAxNzY5RTQxOSAxODkwNkQwOCkKPiA+ID4gPiArICIoU0ItQzo6Q1NFVCBTQi1DOjpSRUYgREVM QVkgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCBDQVNUIFNCLUM6OkNPTUJJTkFUSU9OIFNCLUM6OkNJ RikiCj4gPiA+ID4gKyAiKCgmICgrICg+PiB2YWwgMSkgKD4+IHZhbCA5KSkgNykpIikKPiA+ID4g PiAgKCMoMTBEMkVBNEUgMTIyNEM1NTcgMTVBNThEODUgMTVCNUEyQjUgMTc1MjRBNzggMTc2OUU0 MTkgMTg5MDZEMDggMTk1Nzc1MzkgMUMwNjVDQjggMUQ2NkM5MzIpCj4gPiA+ID4gICAiIygoKDpU WVBFIFNCLUM6OlJFRikpICgoOlRZUEUgU0ItQzo6Q09NQklOQVRJT04pKSAoKDpUWVBFIFNCLUM6 OkNJRikpICgoOlRZUEUgU0ItQzo6Q1JFVFVSTikpICgoOlRZUEUgU0ItQzo6TVYtQ09NQklOQVRJ T04pKSAoKDpUWVBFIEVYSVQpKSAoKDpUWVBFIFNCLUM6OkNTRVQpKSAoKDpUWVBFIERFTEFZKSAo OlRZUEUgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCkgKDpUWVBFIENBU1QpKSkiCj4gPiA+ID4gICAi KChsZXQgKCh0YWIgI2EoKDgpICh1bnNpZ25lZC1ieXRlIDgpIDAgNSAyIDggMTMgMyAwIDApKSkK PiA+ID4gPiBkaWZmIC0tZ2l0IGEveHBlcmZlY3RoYXNoNjEubGlzcC1leHByIGIveHBlcmZlY3Ro YXNoNjEubGlzcC1leHByCj4gPiA+ID4gaW5kZXggNmViNzI0ODZiLi5iMWJjMDE0ZmIgMTAwNjQ0 Cj4gPiA+ID4gLS0tIGEveHBlcmZlY3RoYXNoNjEubGlzcC1leHByCj4gPiA+ID4gKysrIGIveHBl cmZlY3RoYXNoNjEubGlzcC1leHByCj4gPiA+ID4gQEAgLTQ2Myw2ICs0NjMsOSBAQAo+ID4gPiA+ ICAoIyg5QTMyMEQ0IDM5Q0FBMzM5IDQzQkJFRTE4IDRENjEzNjhGIDUzMjIyREZCIEJGQTg2MTg5 IEVEQTEwMzdGIEZFRTk5QTk1KQo+ID4gPiA+ICAgIiMoKCg6VFlQRSBTQi1DOjpSRUYpKSAoKDpU WVBFIFNCLUM6OkNPTUJJTkFUSU9OKSkgKCg6VFlQRSBTQi1DOjpNVi1DT01CSU5BVElPTikpICgo OlRZUEUgRVhJVCkpICgoOlRZUEUgU0ItQzo6Q1NFVCkpICgoOlRZUEUgREVMQVkpICg6VFlQRSBT Qi1DOjpBUlJBWS1JTkRFWC1DQVNUKSAoOlRZUEUgQ0FTVCkpKSIKPiA+ID4gPiAgICIoKCYgKC0g KD4+IHZhbCAzKSAoPj4gdmFsIDI5KSkgNykpIikKPiA+ID4gPiArKCMoOUEzMjBENCAzOUNBQTMz OSA0M0JCRUUxOCA1MzIyMkRGQiA5MzgwODM3QyBCRkE4NjE4OSBGRUU5OUE5NSkKPiA+ID4gPiAr ICIjKCgoOlRZUEUgU0ItQzo6Q0lGKSAoOlRZUEUgU0ItQzo6Q09NQklOQVRJT04pICg6VFlQRSBE RUxBWSkgKDpUWVBFIFNCLUM6OkFSUkFZLUlOREVYLUNBU1QpICg6VFlQRSBDQVNUKSAoOlRZUEUg U0ItQzo6UkVGKSAoOlRZUEUgU0ItQzo6Q1NFVCkpKSIKPiA+ID4gPiArICIoKCYgKCsgdmFsICg+ PiB2YWwgMzEpKSA3KSkiKQo+ID4gPiA+ICAoIyg5QTMyMEQ0IDQzQkJFRTE4IDUzMjIyREZCIEE4 QTRDN0QyIEJGQTg2MTg5IEVBQTNEQTVDIEZFRTk5QTk1KQo+ID4gPiA+ICAgIiMoKCg6VFlQRSBT Qi1DOjpSRUYpKSAoKDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCkg KDpUWVBFIENBU1QpKSAoKDpUWVBFIFNCLUM6OkNPTUJJTkFUSU9OKSkgKCg6VFlQRSBTQi1DOjpF TlRSWSkpICgoOlRZUEUgU0ItQzo6RU5DTE9TRSkpKSIKPiA+ID4gPiAgICIoKCYgKF4gKD4+IHZh bCA3KSAoPj4gdmFsIDIzKSkgNykpIikKPiA+ID4gPiBkaWZmIC0tZ2l0IGEveHBlcmZlY3RoYXNo NjMubGlzcC1leHByIGIveHBlcmZlY3RoYXNoNjMubGlzcC1leHByCj4gPiA+ID4gaW5kZXggY2M4 NjFiYjMzLi4xM2JiNWQ4NWQgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEveHBlcmZlY3RoYXNoNjMubGlz cC1leHByCj4gPiA+ID4gKysrIGIveHBlcmZlY3RoYXNoNjMubGlzcC1leHByCj4gPiA+ID4gQEAg LTg3MCw2ICs4NzAsOSBAQAo+ID4gPiA+ICAoIygxMjEwNjhERCA0RDYxMzY4RiA1ODExMEU3RiA2 N0VFMkQxQSA2RDlBODgzRCA3NDU4OUQ4MiA4OTdCNDY1NiBBNjhBMzk2NSkKPiA+ID4gPiAgICIj KCgoOlRZUEUgU0ItQzo6UkVGKSkgKCg6VFlQRSBTQi1DOjpDT01CSU5BVElPTikpICgoOlRZUEUg U0ItQzo6TVYtQ09NQklOQVRJT04pKSAoKDpUWVBFIEVYSVQpKSAoKDpUWVBFIFNCLUM6OkNTRVQp KSAoKDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCkgKDpUWVBFIENB U1QpKSkiCj4gPiA+ID4gICAiKCgmICgtICg+PiB2YWwgNCkgKD4+IHZhbCAxNikpIDcpKSIpCj4g PiA+ID4gKygjKDEyMTA2OEREIDU4MTEwRTdGIDY3RUUyRDFBIDZEOUE4ODNEIDc0MkQ0QzU0IDg5 N0I0NjU2IEE2OEEzOTY1KQo+ID4gPiA+ICsgIiMoKCg6VFlQRSBTQi1DOjpDSUYpICg6VFlQRSBT Qi1DOjpDT01CSU5BVElPTikgKDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgt Q0FTVCkgKDpUWVBFIENBU1QpICg6VFlQRSBTQi1DOjpSRUYpICg6VFlQRSBTQi1DOjpDU0VUKSkp Igo+ID4gPiA+ICsgIigoJiAoLSAoPj4gdmFsIDQpICg+PiB2YWwgMTYpKSA3KSkiKQo+ID4gPiA+ ICAoIygxMjZBREIwMiAzMUIwOTVERCA0MkQ4M0ZGQiA0MzQxRjdEOCA2M0M5NzFENyA3QTgwRjIw MSA3QjQwODg4MCA4Rjc5MTJENiBFQkQwMTg3MikKPiA+ID4gPiAgICIoOkFMTE9XLU9USEVSLUtF WVMgOlRZUEUgOlJFU1VMVC1TUEVDUyA6QVJHLVNQRUNTIDpDQUxMRVIgOkRFUFMgOkZJUkVEIDpM RVhFTlYgOlNPVVJDRS1QQVRIKSIKPiA+ID4gPiAgICIoKGxldCAoKHRhYiAjYSgoOCkgKHVuc2ln bmVkLWJ5dGUgOCkgMCA1IDAgMyAwIDUgMTIgNikpKQo+ID4gPiA+Cj4gPiA+ID4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gaG9va3MvcG9zdC1yZWNlaXZlCj4gPiA+ID4g LS0KPiA+ID4gPiBTQkNMCj4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+ID4gU2JjbC1jb21taXRzIG1haWxp bmcgbGlzdAo+ID4gPiA+IFNiY2wtY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKPiA+ID4g PiBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9zYmNsLWNvbW1p dHMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpTYmNs LWNvbW1pdHMgbWFpbGluZyBsaXN0ClNiY2wtY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQK aHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vc2JjbC1jb21taXRz Cg==