Re: master: Perform local common subexpression elimination for some memory loads
Stas Boukarev <[email protected]> Tue, 4 Aug 2026 17:44:16 +0300
| Newsgroups | gmane.lisp.steel-bank.cvs,gmane.lisp.steel-bank.devel |
|---|---|
| Message-ID | <CAF63=11aG9S2EAd-a_t5f3RiEOweTe60AA=J5yVWVJa5xaqpxg@mail.gmail.com> |
PkVzcGVjaWFsbHkgYmVjYXVzZSBsb2NhbCBDU0UgZG9lcyBub3QgdHJpZ2dlciBvdGhlciBmcm9u dCBlbmQgb3B0aW1pemF0aW9ucyBvciBpbXByb3ZlIHR5cGUgaW5mZXJlbmNlLgpJdCBhY3R1YWxs eSBkb2VzIChvdGhlciB0aGluZ3MgY291bGQgZG8gdGhlIHNhbWUpLgpJdCBmb3VuZCB0aGlzIGJ1 ZzoKKGNvbmQgKChhbmQgc3RyaW5ncy1hbmQtZGVsYXlzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5ncCAoZmlyc3QKc3RyaW5ncy1hbmQtZGVsYXlz KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgKGZpcnN0 IHN0cmluZ3MtYW5kLWRlbGF5cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY29uY2F0ZW5hdGUgKGZpcnN0CnN0cmluZ3MtYW5kLWRlbGF5cykgOzsgZGVy aXZlZCBhcyBhIHN0cmluZywgbWlzc2luZyB0aGUgdHlwZSBhcmd1bWVudC4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkLXN0cmlu ZykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBwYWQtc3RyaW5nIHN0cmluZ3Mt YW5kLWRlbGF5cykpKQoKCk9uIFR1ZSwgQXVnIDQsIDIwMjYgYXQgMTozMOKAr1BNIENoYXJsZXMg WmhhbmcgdmlhIFNiY2wtY29tbWl0cwo8c2JjbC1jb21taXRzQGxpc3RzLnNvdXJjZWZvcmdlLm5l dD4gd3JvdGU6Cj4KPiBXb3VsZG7igJl0IHRoaXMgb3B0aW1pemF0aW9uIGJlIGJldHRlciBvZmYg ZG9uZSBpbiBJUjI/IElmIHdlIGFyZSB3b3JraW5nIGhhcmQgdG8gYXBwcm94aW1hdGUgd2hhdCB0 aGUgdm9wcyBhbmQgbWVtb3J5IGxvYWRzIHdvdWxkIGVuZCB1cCBkb2luZy4KPgo+IE1hbnkgYWR2 YW50YWdlczoKPgo+IC0gUG9zc2libGUgdG8gZXN0aW1hdGUgd2hldGhlciBpdCB3b3VsZCBpbXBh Y3Qgc3RhY2sgdXNhZ2UuCj4gLSBDb3N0IG1vZGVsIHdpdGggcmVnaXN0ZXIgYWxsb2NhdG9yIHBv c3NpYmxlCj4gLSBBY2N1cmF0ZSB2b3AgY29zdHMKPiAtIE5vIHNoZW5hbmlnYW5zIGFyb3VuZCBk aWZmZXJlbnQgbGFtYmRhIHJlcHJlc2VudGF0aW9ucwo+IC0gVE5zIGFyZSBtb3JlIGFtZW5hYmxl IHRvIHZhbHVlIG51bWJlcmluZy4KPiAtIEVudmlyb25tZW50IGFuYWx5c2lzIGFscmVhZHkgZG9u ZS4KPiAtIElyMSBvcHRpbWl6ZXJzIG5vdCBpbXBhY3RlZAo+IC0gVHlwZSBjaGVja2luZyBwb3Nz aWJsZSB0byBDU0UKPgo+IEVzcGVjaWFsbHkgYmVjYXVzZSBsb2NhbCBDU0UgZG9lcyBub3QgdHJp Z2dlciBvdGhlciBmcm9udCBlbmQgb3B0aW1pemF0aW9ucyBvciBpbXByb3ZlIHR5cGUgaW5mZXJl bmNlLgo+Cj4gT24gVHVlc2RheSwgQXVndXN0IDQsIDIwMjYsIDY6MTggQU0sIFN0YXMgQm91a2Fy ZXYgPHN0YXNzYXRzQGdtYWlsLmNvbT4gd3JvdGU6Cj4KPiAoZGVmdW4gajIgKHggbikKPiAgIChk ZWNsYXJlIChvcHRpbWl6ZSAoZGVidWcgMCkpKQo+ICAgKGxldCAoKHkgKDErIHgpKSkKPiAgICAg KGxpc3QgKDErIChjYXIgbikpCj4gICAgICAgICAgIChjYXIgbikKPiAgICAgICAgICAgKGNkciBu KQo+ICAgICAgICAgICB5IHkpKSkKPiBpbmNyZWFzZXMgc3RhY2sgdXNhZ2UgZHVlIHRvIGhhdmlu ZyB0byBzYXZlIHRoZSBuZXcgc2hhcmVkIHZhcmlhYmxlIG9uCj4gdGhlIHN0YWNrLgo+Cj4gT24g VHVlLCBBdWcgNCwgMjAyNiBhdCA3OjA04oCvQU0gU3RhcyBCb3VrYXJldiA8c3Rhc3NhdHNAZ21h aWwuY29tPiB3cm90ZToKPiA+Cj4gPiAoZGVmdW4gayAoeCBuKQo+ID4gIChsZXQgKCh5ICgxKyB4 KSkpCj4gPiAgICAodmFsdWVzIHkgeQo+ID4gICAgICAgICAgICAoZXEgKGNhciAoY29weS10cmVl IG4pKQo+ID4gICAgICAgICAgICAgICAgKGNhciAoY29weS10cmVlIG4pKSkpKSkKPiA+ID0+Cj4g PiAoayAxICcoKDEpKSkKPiA+ID0+Cj4gPiAyCj4gPiAyCj4gPiBUCj4gPgo+ID4gT24gVHVlLCBB dWcgNCwgMjAyNiBhdCA2OjQ34oCvQU0gU3RhcyBCb3VrYXJldiA8c3Rhc3NhdHNAZ21haWwuY29t PiB3cm90ZToKPiA+ID4KPiA+ID4gKGRlZnVuIGogKHgpCj4gPiA+ICAobGV0ICgoeSAoMSsgeCkp KQo+ID4gPiAgICAodmFsdWVzIHkgeQo+ID4gPiAgICAgICAgICAgIChjYXIgKikKPiA+ID4gICAg ICAgICAgICAoc2V0ZiAqICcoYikpCj4gPiA+ICAgICAgICAgICAgKGNhciAqKSkpKQo+ID4gPiAo bGV0ICgoKiAnKGEpKSkgKGogMSkpCj4gPiA+ID0+Cj4gPiA+IDIKPiA+ID4gMgo+ID4gPiBBCj4g PiA+IChCKQo+ID4gPiBBCj4gPiA+Cj4gPiA+IE9uIFR1ZSwgQXVnIDQsIDIwMjYgYXQgNDoyMuKA r0FNIFN0YXMgQm91a2FyZXYgPHN0YXNzYXRzQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPiA+ID4KPiA+ ID4gPiAoZGVmc3RydWN0IHMKPiA+ID4gPiAgKHggKG1ha2UtYXJyYXkgMykpKQo+ID4gPiA+Cj4g PiA+ID4gKGxldCAoKikKPiA+ID4gPiAgKGxhbWJkYSAoKQo+ID4gPiA+ICAgIChsZXQqICgocyAj LihtYWtlLXMpKQo+ID4gPiA+ICAgICAgICAgICAgKGEgKHMteCBzKSkKPiA+ID4gPiAgICAgICAg ICAgIChiIChzLXggcykpKQo+ID4gPiA+ICAgICAgKHZhbHVlcyAoYXJlZiBhIDApCj4gPiA+ID4g ICAgICAgICAgICAgIChhcmVmIGIgMCkpKSkpCj4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IGRlYnVn Z2VyIGludm9rZWQgb24gYSBTQi1JTlQ6QlVHIEBCODAwN0I4NUFEIGluIHRocmVhZAo+ID4gPiA+ ICM8VEhSRUFEIHRpZD0xOTg2NDAyICJtYWluIHRocmVhZCIgUlVOTklORyB7MTIwMTRGMDAwM30+ Ogo+ID4gPiA+ICAgIGZhaWxlZCBBVkVSOiAoRVEgRU5WIChMQU1CREEtRU5WSVJPTk1FTlQgKExB TUJEQS1WQVItSE9NRSBUSElORykpKQo+ID4gPiA+Cj4gPiA+ID4gT24gVHVlLCBBdWcgNCwgMjAy NiBhdCAzOjU54oCvQU0gc251Z2xhcyB2aWEgU2JjbC1jb21taXRzCj4gPiA+ID4gPHNiY2wtY29t bWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+IHdyb3RlOgo+ID4gPiA+ID4KPiA+ID4gPiA+IFRo ZSBicmFuY2ggIm1hc3RlciIgaGFzIGJlZW4gdXBkYXRlZCBpbiBTQkNMOgo+ID4gPiA+ID4gICAg ICAgIHZpYSAgMTAwYzljMmJkY2RjYjg0ZmYwNGM4ZmVlZjk4M2E1YjQ0Njk1Yzk3YSAoY29tbWl0 KQo+ID4gPiA+ID4gICAgICBmcm9tICBiNTQxZjJmMjViMTRiNjJmY2FiN2UxNGFhNTEyNGRiNWRk MWQ2YjIwIChjb21taXQpCj4gPiA+ID4gPgo+ID4gPiA+ID4gLSBMb2cgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4g PiA+IGNvbW1pdCAxMDBjOWMyYmRjZGNiODRmZjA0YzhmZWVmOTgzYTViNDQ2OTVjOTdhCj4gPiA+ ID4gPiBBdXRob3I6IERvdWdsYXMgS2F0em1hbiA8ZG91Z2tAZ29vZ2xlLmNvbT4KPiA+ID4gPiA+ IERhdGU6ICBUdWUgQXVnIDQgMDA6NTg6MjEgMjAyNiArMDAwMAo+ID4gPiA+ID4KPiA+ID4gPiA+ ICAgIFBlcmZvcm0gbG9jYWwgY29tbW9uIHN1YmV4cHJlc3Npb24gZWxpbWluYXRpb24gZm9yIHNv bWUgbWVtb3J5IGxvYWRzCj4gPiA+ID4gPgo+ID4gPiA+ID4gICAgVGhlIHRlY2huaXF1ZSBpcyB0 byBmaW5kICJlcXVpdmFsZW50IiBsb2FkcyBpbiBiZXR3ZWVuIHdoaWNoIHRoZXJlIGlzIG5vCj4g PiA+ID4gPiAgICBjb21wdXRhdGlvbiB0aGF0IGFmZmVjdHMgdGhlIHJlc3VsdCBvZiB0aGUgbG9h ZC4gQWxzbyBpdCBuZWVkcyBhIHN1cnJvdW5kaW5nCj4gPiA+ID4gPiAgICBMRVQsIHdoaWNoIGlz IGF1Z21lbnRlZCB3aXRoIGEgbmV3IHRlbXAgdmFyaWFibGUgYXMgaWYgdGhlIHVzZXIgZGlkIHRo YXQuCj4gPiA+ID4gPiAgICBUaGlzIGlzIHNsaWdodGx5IGRlZmljaWVudCBmb3IgdmFyaW91cyBy ZWFzb25zOgo+ID4gPiA+ID4gICAgMS4gaXQgd29uJ3QgZG8gYW55dGhpbmcgd2l0aG91dCB0aGUg TEVUCj4gPiA+ID4gPiAgICAyLiB0aGUgbW9yZSBraW5kcyBvZiBjb21tb24gc3ViZXhwcmVzc2lv bnMgd2UgYWxsb3cgKHN1Y2ggYXMgbWF0aCksCj4gPiA+ID4gPiAgICAgICAgdGhlIHNsb3dlciBJ UjEtT1BUSU1JWkUtQ09NQklOQVRJT04gaXMgZ29pbmcgdG8gcnVuCj4gPiA+ID4gPiAgICAzLiB0 aGVyZSBhcmUgcG9zc2libHkgb3RoZXIgbm9kZSB0eXBlcyB0aGF0IHNob3VsZCBiZSBhbGxvd2Vk IHRvIGludGVydmVuZQo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgIE9uIHRoZSBwbHVzIHNpZGUsIGl0 J3Mgbm90IGFsbCB0aGF0IGhhcmQgdG8gZXh0ZW5kIHRoZSBsb2dpYyB0byBhY2NlcHQKPiA+ID4g PiA+ICAgIG90aGVyIGZ1bmN0aW9ucyBhcyBwYXJ0aWNpcGFudHMgaW4gY29tbW9uIHN1YmV4cHJl c3Npb25zLgo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgIEFsbCB0ZXN0IGNhc2VzIHBsdXMgYSBsaXR0 bGUgYml0IG9mIGFzc2lzdGFuY2UgZnJvbSBHZW1pbmkKPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4g IHNyYy9jb21waWxlci9pcjFvcHQubGlzcCB8IDE3OSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiA+ID4gPiA+ICB0ZXN0cy9sY3NlLnB1cmUubGlzcCAgICB8IDIzNCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiA+ID4gIHhw ZXJmZWN0aGFzaDMwLmxpc3AtZXhwciB8ICAzICsKPiA+ID4gPiA+ICB4cGVyZmVjdGhhc2g2MS5s aXNwLWV4cHIgfCAgMyArCj4gPiA+ID4gPiAgeHBlcmZlY3RoYXNoNjMubGlzcC1leHByIHwgIDMg Kwo+ID4gPiA+ID4gIDUgZmlsZXMgY2hhbmdlZCwgNDIyIGluc2VydGlvbnMoKykKPiA+ID4gPiA+ Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL2lyMW9wdC5saXNwIGIvc3JjL2Nv bXBpbGVyL2lyMW9wdC5saXNwCj4gPiA+ID4gPiBpbmRleCA4NTU5ODI0ZjEuLmRhYzM5M2UzMSAx MDA2NDQKPiA+ID4gPiA+IC0tLSBhL3NyYy9jb21waWxlci9pcjFvcHQubGlzcAo+ID4gPiA+ID4g KysrIGIvc3JjL2NvbXBpbGVyL2lyMW9wdC5saXNwCj4gPiA+ID4gPiBAQCAtMTIyMCw2ICsxMjIw LDE4MiBAQAo+ID4gPiA+ID4gICAgICAgICAgICAgIChzaG93LXR5cGUtZGVyaXZhdGlvbiBjb21i aW5hdGlvbiByZXMpKQo+ID4gPiA+ID4gICAgICAgICAgICAoY29lcmNlLXRvLXZhbHVlcyByZXMp KSkpKSkKPiA+ID4gPiA+Cj4gPiA+ID4gPiArKGRlZnVuIGNvbGxlY3QtbHZhci12YXJzIChsdmFy KQo+ID4gPiA+ID4gKyAgKGRlY2xhcmUgKHR5cGUgbHZhciBsdmFyKSkKPiA+ID4gPiA+ICsgIChs ZXQgKCh1c2UgKHByaW5jaXBhbC1sdmFyLXVzZSBsdmFyKSkpCj4gPiA+ID4gPiArICAgIChjb25k ICgocmVmLXAgdXNlKQo+ID4gPiA+ID4gKyAgICAgICAgICAobGV0ICgobGVhZiAocmVmLWxlYWYg dXNlKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgKHdoZW4gKGxhbWJkYS12YXItcCBsZWFmKQo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgKGxpc3QgbGVhZikpKSkKPiA+ID4gPiA+ICsgICAgICAg ICAgKChjb21iaW5hdGlvbi1wIHVzZSkKPiA+ID4gPiA+ICsgICAgICAgICAgKG1hcGNhbiAjJ2Nv bGxlY3QtbHZhci12YXJzIChiYXNpYy1jb21iaW5hdGlvbi1hcmdzIHVzZSkpKQo+ID4gPiA+ID4g KyAgICAgICAgICAodCBuaWwpKSkpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArKGRlZnVuIGZpbmQt YWN0aXZlLWxldC1sYW1iZGEgKG5vZGUpCj4gPiA+ID4gPiArICAoZGVjbGFyZSAodHlwZSBub2Rl IG5vZGUpKQo+ID4gPiA+ID4gKyAgKGxvb3AgZm9yIGVudiA9IChub2RlLWxleGVudiBub2RlKSB0 aGVuIChsZXhlbnYtcGFyZW50IGVudikKPiA+ID4gPiA+ICsgICAgICAgIHdoaWxlIGVudgo+ID4g PiA+ID4gKyAgICAgICAgZG8gKGxldCAoKGwgKGxleGVudi1sYW1iZGEgZW52KSkpCj4gPiA+ID4g PiArICAgICAgICAgICAgKHdoZW4gKGFuZCBsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgKGZ1bmN0aW9uYWwta2luZC1lcSBsIGxldCkKPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAobm90IChmdW5jdGlvbmFsLWtpbmQtZXEgbCB6b21iaWUpKSkKPiA+ID4gPiA+ ICsgICAgICAgICAgICAgIChyZXR1cm4gbCkpKSkpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArKGRl ZnVuIGFkZC12YXJpYWJsZS10by1sZXQtbGFtYmRhIChsZXQtbGFtYmRhIHYpCj4gPiA+ID4gPiAr ICAoZGVjbGFyZSAodHlwZSBjbGFtYmRhIGxldC1sYW1iZGEpCj4gPiA+ID4gPiArICAgICAgICAg ICh0eXBlIGxhbWJkYS12YXIgdikpCj4gPiA+ID4gPiArICAoc2V0ZiAobGFtYmRhLXZhci1ob21l IHYpIGxldC1sYW1iZGEpCj4gPiA+ID4gPiArICAoc2V0ZiAobGFtYmRhLXZhcnMgbGV0LWxhbWJk YSkgKGFwcGVuZCAobGFtYmRhLXZhcnMgbGV0LWxhbWJkYSkgKGxpc3QgdikpKQo+ID4gPiA+ID4g KyAgOzsgVXBkYXRlIHRoZSBjYWxsIHRvIHRoZSBMRVQgbGFtYmRhCj4gPiA+ID4gPiArICAobGV0 KiAoKHJlZiAoY2FyIChsZWFmLXJlZnMgbGV0LWxhbWJkYSkpKQo+ID4gPiA+ID4gKyAgICAgICAg KGNhbGwgKGFuZCByZWYKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIChub2RlLWx2YXIg cmVmKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKGx2YXItZGVzdCAobm9kZS1sdmFy IHJlZikpKSkpCj4gPiA+ID4gPiArICAgICh3aGVuIChhbmQgY2FsbCAoY29tYmluYXRpb24tcCBj YWxsKSkKPiA+ID4gPiA+ICsgICAgICAobGV0ICgoZHVtbXktbHZhciAobWFrZS1sdmFyKSkpCj4g PiA+ID4gPiArICAgICAgICAoc2V0ZiAobHZhci1kZXN0IGR1bW15LWx2YXIpIGNhbGwpCj4gPiA+ ID4gPiArICAgICAgICAoc2V0ZiAoYmFzaWMtY29tYmluYXRpb24tYXJncyBjYWxsKQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgKGFwcGVuZCAoYmFzaWMtY29tYmluYXRpb24tYXJncyBjYWxsKSAo bGlzdCBkdW1teS1sdmFyKSkpCj4gPiA+ID4gPiArICAgICAgICAoc2V0ZiAobHZhci1kZXN0IGR1 bW15LWx2YXIpIGNhbGwpKSkpKQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKzs7IFJldXNlIG9mIFNZ TUJPTC1WQUxVRSBvZiBhIHNwZWNpYWwgdmFyIHdvdWxkIGJlIG5pY2UsCj4gPiA+ID4gPiArOzsg YnV0IFNZTUJPTC1WQUxVRSBpdCBpcyBub3QgcmVwcmVzZW50ZWQgYXMgYSBjYWxsIGluIElSMQo+ ID4gPiA+ID4gKyhkZWZpbmUtbG9hZC10aW1lLWdsb2JhbCAqZWxpZGFibGUtbWVtb3J5LWxvYWRz Kgo+ID4gPiA+ID4gKyAgICAnKGNhciBjZHIgJWluc3RhbmNlLXJlZiAlcmF3LWluc3RhbmNlLXJl Zi93b3JkICVyYXctaW5zdGFuY2UtcmVmL3NpZ25lZC13b3JkCj4gPiA+ID4gPiArICAgICAgc2Fw LXJlZi0xNiBzaWduZWQtc2FwLXJlZi0xNiBzYi1zeXM6OiVzYXAtcmVmLTE2LWluZGV4ZWQgc2It c3lzOjolc2lnbmVkLXNhcC1yZWYtMTYtaW5kZXhlZAo+ID4gPiA+ID4gKyAgICAgIHNhcC1yZWYt MzIgc2lnbmVkLXNhcC1yZWYtMzIgc2Itc3lzOjolc2FwLXJlZi0zMi1pbmRleGVkIHNiLXN5czo6 JXNpZ25lZC1zYXAtcmVmLTMyLWluZGV4ZWQKPiA+ID4gPiA+ICsgICAgICBzYXAtcmVmLTY0IHNp Z25lZC1zYXAtcmVmLTY0IHNiLXN5czo6JXNhcC1yZWYtNjQtaW5kZXhlZCBzYi1zeXM6OiVzaWdu ZWQtc2FwLXJlZi02NC1pbmRleGVkCj4gPiA+ID4gPiArICAgICAgc2ItYWxpZW46ZGVyZWYKPiA+ ID4gPiA+ICsgICAgICBzYi1hbGllbjphbGllbi1zYXApKQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g Kzs7OyBMb29rIGZvciBhbnkgbm9kZSBlcXVpdmFsZW50IHRvIE1BVENIIGNvbnNkZXJpbmcgbm9k ZXMgaW4gcmV2ZXJzZSBzdGFydGluZyBhdCBGUk9NLgo+ID4gPiA+ID4gKzs7OyBNZW1vcnkgbG9h ZHMgZnJvbSB0aGUgc2FtZSBvYmplY3Qrc2xvdCBvciBTQVArb2Zmc2V0IGNvdWxkIGJlIGVxdWl2 YWxlbnQuCj4gPiA+ID4gPiArOzs7IE5vdGhpbmcgZWxzZSBjYW4gYmUgZXF1aXZhbGVudCAodW50 aWwgSSBlbmhhbmNlIHRoaXMpCj4gPiA+ID4gPiArKGRlZnVuIGZpbmQtZXF1aXZhbGVudC1ub2Rl LWJhY2t3YXJkcyAobWF0Y2ggZnJvbSkKPiA+ID4gPiA+ICsgIChsYWJlbHMgKChsdmFyLWVxdWl2 YWxlbnQtcCAobDEgbDIpCj4gPiA+ID4gPiArICAgICAgICAgICAgKGRlY2xhcmUgKHR5cGUgbHZh ciBsMSBsMikpCj4gPiA+ID4gPiArICAgICAgICAgICAgKGNvbmQgKChlcSBsMSBsMikgdCkKPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAoKGFuZCAoY29uc3RhbnQtbHZhci1wIGwxKSAoY29u c3RhbnQtbHZhci1wIGwyKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIChlcWwgKGx2 YXItdmFsdWUgbDEpIChsdmFyLXZhbHVlIGwyKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgKHQKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIChsZXQgKCh1MSAocHJpbmNpcGFs LWx2YXItdXNlIGwxKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICh1MiAo cHJpbmNpcGFsLWx2YXItdXNlIGwyKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg IChjb25kICgoYW5kIChyZWYtcCB1MSkgKHJlZi1wIHUyKSkKPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVxIChyZWYtbGVhZiB1MSkgKHJlZi1sZWFmIHUyKSkpCj4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kIChjb21iaW5hdGlvbi1wIHUx KSAoY29tYmluYXRpb24tcCB1MikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGVxIChiYXNpYy1jb21iaW5hdGlvbi1raW5kIHUxKSA6a25vd24pCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAoYmFzaWMtY29tYmluYXRp b24ta2luZCB1MikgOmtub3duKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbWJpbmF0aW9uLWVxdWl2YWxlbnQtcCB1MSB1MikpCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh0IG5pbCkpKSkpKQo+ID4gPiA+ID4gKyAgICAgICAgICAoY29t YmluYXRpb24tZXF1aXZhbGVudC1wIChjMSBjMikKPiA+ID4gPiA+ICsgICAgICAgICAgICAoZGVj bGFyZSAodHlwZSBjb21iaW5hdGlvbiBjMSBjMikpCj4gPiA+ID4gPiArICAgICAgICAgICAgKGFu ZCAoZXEgKGJhc2ljLWNvbWJpbmF0aW9uLWZ1bi1pbmZvIGMxKSAoYmFzaWMtY29tYmluYXRpb24t ZnVuLWluZm8gYzIpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIChsZXQgKChhcmdzMSAo YmFzaWMtY29tYmluYXRpb24tYXJncyBjMSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgKGFyZ3MyIChiYXNpYy1jb21iaW5hdGlvbi1hcmdzIGMyKSkpCj4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAoYW5kICg9IChsZW5ndGggYXJnczEpIChsZW5ndGggYXJnczIpKQo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIChldmVyeSAjJ2x2YXItZXF1aXZhbGVu dC1wIGFyZ3MxIGFyZ3MyKSkpKSkpCj4gPiA+ID4gPiArICAgIChkbyAoKG5vZGUgZnJvbSAoY3Ry YW4tdXNlIChub2RlLXByZXYgbm9kZSkpKSkgKChudWxsIG5vZGUpKQo+ID4gPiA+ID4gKyAgICAg ICh3aGVuIChhbmQgKGNvbWJpbmF0aW9uLXAgbm9kZSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgKGVxIChjb21iaW5hdGlvbi1raW5kIG5vZGUpIDprbm93bikKPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgKG5vZGUtbHZhciBub2RlKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAoY29t YmluYXRpb24tZXF1aXZhbGVudC1wIG5vZGUgbWF0Y2gpKQo+ID4gPiA+ID4gKyAgICAgICAgKHJl dHVybiBub2RlKSkKPiA+ID4gPiA+ICsgICAgICAodHlwZWNhc2Ugbm9kZQo+ID4gPiA+ID4gKyAg ICAgICAgKChvciBjc2V0IHJlZiBjYXN0IGNvbWJpbmF0aW9uIGNpZikpCj4gPiA+ID4gPiArICAg ICAgICAodAo+ID4gPiA+ID4gKyAgICAgICAgOzsgUmV0dXJuIDpGQUlMIHRvIGFib3J0IHF1aWNr bHkuIFRoaXMgY291bGQgY2hvb3NlIHRvIGZhaWwgaWYgYSBub24tZmx1c2hhYmxlCj4gPiA+ID4g PiArICAgICAgICA7OyBjb21iaW5hdGlvbiBpcyBzZWVuLCBidXQgZm9yIG5vdyBJJ20gZGVmZXJy aW5nIHRoYXQgc291bmRuZXNzIGNoZWNrLgo+ID4gPiA+ID4gKyAgICAgICAgKHJldHVybi1mcm9t IGZpbmQtZXF1aXZhbGVudC1ub2RlLWJhY2t3YXJkcyA6ZmFpbCkpKSkpKQo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gKzs7OyBBdHRtcHQgdG8gZmluZCBhIENPTUJJTkFUSU9OIGVxdWl2YWxlbnQgdG8g VEhJUyBwcmVjZWRpbmcgaXQgaW4gbm9kZSBvcmRlciwgdGhlIHZhbHVlCj4gPiA+ID4gPiArOzs7 IG9mIHdoaWNoIGNhbiBiZSBzdWJzdGl0dXRlZCBmb3IgdGhlIGNhbGwgdG8gVEhJUywgYWN0dWFs bHkgbWFraW5nIHRoZSBzdWJzdGl0dXRpb24uCj4gPiA+ID4gPiArOzs7IExvb2tpbmcgYmFja3dh cmRzIGF0IG1vc3QgYSBmZXcgYmxvY2tzIHRlbmRzIHRvIHdvcmsgd2VsbCBlbm91Z2gsIGFuZCBp bnBvcnRhbnRseQo+ID4gPiA+ID4gKzs7OyBsaW1pdHMgdGhlIHdvcmsuIFNjYW5uaW5nIG9ubHkg dGhlIGN1cnJlbnQgYmxvY2sgaXMgaW5hZGVxdWF0ZSBhcyB0aGUgZXhhbXBsZQo+ID4gPiA+ID4g Kzs7OyBpbiA6TE9PUC1PVkVSLURFUkVGIHNob3dzLiBUaGUgaW1tZWRpYXRlIHByZWRlY2Vzc29y IGlzIHN0aWxsIG5vdCBlbm91Z2gsIGJlY2F1c2UgdGhlCj4gPiA+ID4gPiArOzs7IHByZWRlY2Vz c29yIGNvdWxkIGhhdmUgYmVlbiBzcGxpdCwgbGVhdmluZyBhIHRpbnkgYmxvY2sgd2hlcmUgdGhl IG9ubHkgbm9kZSBpcwo+ID4gPiA+ID4gKzs7OyBhIHRyaXZpYWwgb3BlcmF0aW9uLgo+ID4gPiA+ ID4gKyhkZWZ1biB0cnktcmV1c2UtZXhwci12YWx1ZSAodGhpcykKPiA+ID4gPiA+ICsgIChkZWNs YXJlICh0eXBlIGNvbWJpbmF0aW9uIHRoaXMpKQo+ID4gPiA+ID4gKyAgKGJpbmRpbmcqCj4gPiA+ ID4gPiArICAgICAgKChob21lLWxhbWJkYSAoZmluZC1hY3RpdmUtbGV0LWxhbWJkYSB0aGlzKSA6 ZXhpdC1pZi1udWxsKQo+ID4gPiA+ID4gKyAgICAgIChsb29rYmFjayAwKQo+ID4gPiA+ID4gKyAg ICAgIChjMQo+ID4gPiA+ID4gKyAgICAgICAgOzsgSW4gdGhpcyBibG9jaywgZXhwbGljaXRseSBn byBiYWNrIGEgbm9kZSBzbyB0aGF0IEZJTkQtQkFDS1dBUkRTIGRvZXNuJ3QgY29uc2lkZXIgVEhJ Uwo+ID4gPiA+ID4gKyAgICAgICAgOzsgYXMgZXF1aXZhbGVudCB0byBpdHNlbGYuIEZhaWxpbmcg dGhhdCwgdHJ5IHByZWRlY2Vzc29yIGJsb2NrcywgYnV0IG9ubHkgYXMgbG9uZyBhcwo+ID4gPiA+ ID4gKyAgICAgICAgOzsgcHJlZCBpcyB1bmlxdWUgc2luY2Ugd2UgaGF2ZSBubyBpbmZvcm1hdGlv biBhYm91dCBub2RlcyB0aGF0IGRvbWluYXRlIFRISVMuCj4gPiA+ID4gPiArICAgICAgICAob3Ig KGZpbmQtZXF1aXZhbGVudC1ub2RlLWJhY2t3YXJkcyB0aGlzIChjdHJhbi11c2UgKG5vZGUtcHJl diB0aGlzKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgKGRvICgocHJlZCAoYmxvY2stcHJlZCAo bm9kZS1ibG9jayB0aGlzKSkpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAoKG9yICg+IGxv b2tiYWNrIDMpIChub3QgKHNpbmdsZXRvbi1wIHByZWQpKSkpCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAoaW5jZiBsb29rYmFjaykKPiA+ID4gPiA+ICsgICAgICAgICAgICAgIChsZXQgKChub2Rl IChibG9jay1sYXN0IChjYXIgcHJlZCkpKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgKHdo ZW4gKG51bGwgbm9kZSkgKHJldHVybikpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgIChhd2hl biAoZmluZC1lcXVpdmFsZW50LW5vZGUtYmFja3dhcmRzIHRoaXMgbm9kZSkgKHJldHVybiBpdCkp Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgIChzZXRxIHByZWQgKGJsb2NrLXByZWQgKG5vZGUt YmxvY2sgbm9kZSkpKSkpKQo+ID4gPiA+ID4gKyAgICAgICAgOmV4aXQtaWYtbnVsbCkKPiA+ID4g PiA+ICsgICAgICAodmFycyA7IGNhbid0IHVzZSA6ZXhpdC1pZi1udWxsIGhlcmUgYmVjYXVzZSBW QVJTIGNhbiBiZSBhbmQgdXN1YWxseSBpcyBOSUwKPiA+ID4gPiA+ICsgICAgICAgICh1bmxlc3Mg KGVxIGMxIDpmYWlsKQo+ID4gPiA+ID4gKyAgICAgICAgICAobWFwY2FuICMnY29sbGVjdC1sdmFy LXZhcnMgKGJhc2ljLWNvbWJpbmF0aW9uLWFyZ3MgYzEpKSkpKQo+ID4gPiA+ID4gKyAgICAod2hl biAoZXEgYzEgOmZhaWwpCj4gPiA+ID4gPiArICAgICAgKHJldHVybi1mcm9tIHRyeS1yZXVzZS1l eHByLXZhbHVlIG5pbCkpCj4gPiA+ID4gPiArICAgIChsYWJlbHMgKChhbGwtZmx1c2hhYmxlIChj dHJhbiBlbmQtbm9kZSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgIChkZWNsYXJlIChjdHJhbiBj dHJhbikgKHR5cGUgKG9yIG5vZGUgbnVsbCkgZW5kLW5vZGUpKQo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgKGxvb3AgKGxldCAoKG5vZGUgKGN0cmFuLW5leHQgY3RyYW4pKSkKPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChlcSBub2RlIGVuZC1ub2RlKSAocmV0dXJuIHQp KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5vdCAob2stdG8tZmx1 c2ggbm9kZSkpIChyZXR1cm4gbmlsKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChhbmQgKG5vdCBlbmQtbm9kZSkgKG5vdCAobm9kZS1uZXh0IG5vZGUpKSkgKHJldHVy biB0KSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGN0cmFuIChub2Rl LW5leHQgbm9kZSkpKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgKG9rLXRvLWZsdXNoIChub2Rl KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgKGNvbmQgKChzZXQtcCBub2RlKSAobm90IChtZW1i ZXIgKHNldC12YXIgbm9kZSkgdmFycykpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg KChjb21iaW5hdGlvbi1wIG5vZGUpIChmbHVzaGFibGUtY29tYmluYXRpb24tcCBub2RlKSkKPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICgoYmFzaWMtY29tYmluYXRpb24tcCBub2RlKSBu aWwpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAodCB0KSkpKSA7IGFueXRoaW5nIGVs c2UgdGhlIGJhY2t3YXJkcyBzZWFyY2ggYWxsb3dlZCBpcyBvawo+ID4gPiA+ID4gKyAgICAgIDs7 IFdoZW4gbG9va2JhY2s+MCBpdCdzIHBvc3NpYmxlIGZvciB0aGUgZXF1aXZhbGVudCBub2RlIHRv IGJlIHRoZSBmaW5hbCBub2RlCj4gPiA+ID4gPiArICAgICAgOzsgb2YgaXRzIGJsb2NrLCBpbiB3 aGljaCBjYXNlIGl0cyBOT0RFLU5FWFQgaXMgbnVsbC4KPiA+ID4gPiA+ICsgICAgICAobGV0KiAo KHRoaXMtYmxvY2sgKG5vZGUtYmxvY2sgdGhpcykpCj4gPiA+ID4gPiArICAgICAgICAgICAgKHBy ZWQgKGNhciAoYmxvY2stcHJlZCB0aGlzLWJsb2NrKSkpKQo+ID4gPiA+ID4gKyAgICAgICAgKHVu bGVzcyAoaWYgKD0gbG9va2JhY2sgMCkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIChh bGwtZmx1c2hhYmxlIChub2RlLW5leHQgYzEpIHRoaXMpCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAoYW5kCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICA7OyBDaGVjayBwcmV2 IGJsb2NrIGZyb20gQzEgdG8gaXRzIGVuZCBvZiBibG9jaywgYW5kIGN1cnJlbnQgYmxvY2sgdXAg dG8gVEhJUwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKGFjb25kICgobm9kZS1uZXh0 IGMxKSAoYWxsLWZsdXNoYWJsZSBpdCBuaWwpKSAodCB0KSkKPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgIChhbGwtZmx1c2hhYmxlIChibG9jay1zdGFydCB0aGlzLWJsb2NrKSB0aGlzKQo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgOzsgQWxsIGNoZWNrIGFsbCBvZiBvbmUgb3Ig Ym90aCBpbnRlcnZlbmluZyBibG9ja3MKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIChv ciAoPCBsb29rYmFjayAyKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIChhbGwt Zmx1c2hhYmxlIChibG9jay1zdGFydCBwcmVkKSBuaWwpKQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgKG9yICg8IGxvb2tiYWNrIDMpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgKGFsbC1mbHVzaGFibGUgKGJsb2NrLXN0YXJ0IChjYXIgKGJsb2NrLXByZWQgcHJlZCkp KSBuaWwpKSkpCj4gPiA+ID4gPiArICAgICAgICAgIChyZXR1cm4tZnJvbSB0cnktcmV1c2UtZXhw ci12YWx1ZSBuaWwpKSkpCj4gPiA+ID4gPiArICAgIDs7IFN1YnN0aXR1dGUgQzEncyByZXN1bHQg aW4gZm9yIFRISVMKPiA+ID4gPiA+ICsgICAgKGJpbmRpbmcqICgobHZhci1jMSAobm9kZS1sdmFy IGMxKSA6ZXhpdC1pZi1udWxsKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgKGNvbnN1bWVyLTEg KGx2YXItZGVzdCBsdmFyLWMxKSA6ZXhpdC1pZi1udWxsKQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgKGMyIHRoaXMpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAobHZhci1jMiAobm9kZS1sdmFy IGMyKSA6ZXhpdC1pZi1udWxsKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgKHYgKG1ha2UtbGFt YmRhLXZhciAoZ2Vuc3ltICJSRVVTRUQtVkFMIikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOnR5cGUgKHNpbmdsZS12YWx1ZS10eXBlIChub2RlLWRlcml2ZWQt dHlwZSBjMSkpKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgIChsdmFyLW5ldyAobWFrZS1sdmFy KSkpCj4gPiA+ID4gPiArICAgICAgKGFkZC12YXJpYWJsZS10by1sZXQtbGFtYmRhIGhvbWUtbGFt YmRhIHYpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgOzsgMS4gUmVkaXJlY3QgY29uc3Vt ZXItMSB0byByZWFkIGZyb20gbHZhci1uZXcKPiA+ID4gPiA+ICsgICAgICAoc3Vic3RpdHV0ZS1s dmFyIGx2YXItbmV3IGx2YXItYzEpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgKHdpdGgt aXIxLWVudmlyb25tZW50LWZyb20tbm9kZSBjMQo+ID4gPiA+ID4gKyAgICAgICAgOzsgMi4gTWFr ZSBDMSB3cml0ZSB0byBhIG5ldyBMVkFSLCBhbmQgbGluayBpdCB0byBhIENTRVQgb24gVgo+ID4g PiA+ID4gKyAgICAgICAgKGxldCAoKGx2YXItYzEtbmV3IChtYWtlLWx2YXIpKSkKPiA+ID4gPiA+ ICsgICAgICAgICAgKCVkZWxldGUtbHZhci11c2UgYzEpCj4gPiA+ID4gPiArICAgICAgICAgICh1 c2UtbHZhciBjMSBsdmFyLWMxLW5ldykKPiA+ID4gPiA+ICsgICAgICAgICAgOzsgMy4gQ3JlYXRl IFMxIChzZXQgViA9IGx2YXItYzEtbmV3KSBhbmQgaW5zZXJ0IGFmdGVyIEMxCj4gPiA+ID4gPiAr ICAgICAgICAgIChsZXQgKChzMSAobWFrZS1zZXQgdiBsdmFyLWMxLW5ldykpKQo+ID4gPiA+ID4g KyAgICAgICAgICAgIChzZXRmIChsdmFyLWRlc3QgbHZhci1jMS1uZXcpIHMxKQo+ID4gPiA+ID4g KyAgICAgICAgICAgIChwdXNoIHMxIChiYXNpYy12YXItc2V0cyB2KSkKPiA+ID4gPiA+ICsgICAg ICAgICAgICAoaW5zZXJ0LW5vZGUtYWZ0ZXIgYzEgczEpKSkpCj4gPiA+ID4gPiArCj4gPiA+ID4g PiArICAgICAgOzsgNC4gSW5zZXJ0IHJlZjEgYmVmb3JlIGNvbnN1bWVyLTEsIHdyaXRpbmcgdG8g bHZhci1uZXcKPiA+ID4gPiA+ICsgICAgICAoaW5zZXJ0LXJlZi1iZWZvcmUgdiBjb25zdW1lci0x IGx2YXItbmV3KQo+ID4gPiA+ID4gKyAgICAgIDs7IDUuIEluc2VydCByZWYyIGJlZm9yZSBDMiwg c3RlYWxpbmcgQzIncyBsdmFyCj4gPiA+ID4gPiArICAgICAgKGluc2VydC1yZWYtYmVmb3JlIHYg YzIgdCkKPiA+ID4gPiA+ICsgICAgICA7OyBDMiBpcyBub3cgZGVhZCBhbmQgd2lsbCBiZSBmbHVz aGVkIGJ5IHRoZSBjYWxsZXIhCj4gPiA+ID4gPiArICAgICAgdCkpKQo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gIDs7OyBEbyBJUjEgb3B0aW1pemF0aW9ucyBvbiBhIENPTUJJTkFUSU9OIG5vZGUuCj4g PiA+ID4gPiAgKGRlZnVuIGlyMS1vcHRpbWl6ZS1jb21iaW5hdGlvbiAobm9kZSAmYXV4IChzaG93 ICpzaG93LXRyYW5zZm9ybXMtcCopKQo+ID4gPiA+ID4gICAgKGRlY2xhcmUgKHR5cGUgY29tYmlu YXRpb24gbm9kZSkpCj4gPiA+ID4gPiBAQCAtMTMwNSw2ICsxNDgxLDkgQEAKPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgKG5vdCAobm9kZS1sdmFyIG5vZGUpKSkKPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAocmV0dXJuLWZyb20gaXIxLW9wdGltaXplLWNvbWJpbmF0aW9uIChm bHVzaC1ub2RlIG5vZGUpKSkKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgKChmb2xkLWNhbGwt ZGVyaXZlZC10by1jb25zdGFudCBub2RlKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIChy ZXR1cm4tZnJvbSBpcjEtb3B0aW1pemUtY29tYmluYXRpb24pKQo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAoKGFuZCAoY29tYmluYXRpb24taXMgbm9kZSAqZWxpZGFibGUtbWVtb3J5LWxvYWRz KikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKHRyeS1yZXVzZS1leHByLXZhbHVl IG5vZGUpKQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgIChyZXR1cm4tZnJvbSBpcjEtb3B0 aW1pemUtY29tYmluYXRpb24pKSkKPiA+ID4gPiA+ICAgICAgICAgICAgKHdoZW4gKGFuZCAoaXIx LWF0dHJpYnV0ZXAgKGZ1bi1pbmZvLWF0dHJpYnV0ZXMgaW5mbykgY29tbXV0YXRpdmUpCj4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICg9IChsZW5ndGggYXJncykgMikKPiA+ID4gPiA+ IGRpZmYgLS1naXQgYS90ZXN0cy9sY3NlLnB1cmUubGlzcCBiL3Rlc3RzL2xjc2UucHVyZS5saXNw Cj4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAw Li40M2IzNGU5OTgKPiA+ID4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gPiA+ICsrKyBiL3Rlc3Rz L2xjc2UucHVyZS5saXNwCj4gPiA+ID4gPiBAQCAtMCwwICsxLDIzNCBAQAo+ID4gPiA+ID4gKzs7 OzsgVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBTQkNMIHN5c3RlbS4gU2VlIHRoZSBSRUFE TUUgZmlsZSBmb3IKPiA+ID4gPiA+ICs7Ozs7IG1vcmUgaW5mb3JtYXRpb24uCj4gPiA+ID4gPiAr Ozs7Owo+ID4gPiA+ID4gKzs7OzsgV2hpbGUgbW9zdCBvZiBTQkNMIGlzIGRlcml2ZWQgZnJvbSB0 aGUgQ01VIENMIHN5c3RlbSwgdGhlIHRlc3QKPiA+ID4gPiA+ICs7Ozs7IGZpbGVzIChsaWtlIHRo aXMgb25lKSB3ZXJlIHdyaXR0ZW4gZnJvbSBzY3JhdGNoIGFmdGVyIHRoZSBmb3JrCj4gPiA+ID4g PiArOzs7OyBmcm9tIENNVSBDTC4KPiA+ID4gPiA+ICs7Ozs7Cj4gPiA+ID4gPiArOzs7OyBUaGlz IHNvZnR3YXJlIGlzIGluIHRoZSBwdWJsaWMgZG9tYWluIGFuZCBpcyBwcm92aWRlZCB3aXRoCj4g PiA+ID4gPiArOzs7OyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5LiBTZWUgdGhlIENPUFlJTkcgYW5k IENSRURJVFMgZmlsZXMgZm9yCj4gPiA+ID4gPiArOzs7OyBtb3JlIGluZm9ybWF0aW9uLgo+ID4g PiA+ID4gKwo+ID4gPiA+ID4gKzs7OzsgVGVzdHMgb2YgbG9jYWwgY29tbW9uIHN1YmV4cHJlc3Np b24gZWxpbWluYXRpb24KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsoaW1wb3J0ICcoY3R1Omluc3Bl Y3QtaXIKPiA+ID4gPiA+ICsgICAgICAgICAgc2ItYzo6Y29tYmluYXRpb24tZnVuLWRlYnVnLW5h bWUKPiA+ID4gPiA+ICsgICAgICAgICAgc2ItYzo6YmFzaWMtY29tYmluYXRpb24tcCkpCj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArKGRlZnVuIGlyLWNhbGxzIChmb3JtKQo+ID4gPiA+ID4gKyAgKGxl dCAoY2FsbHMpCj4gPiA+ID4gPiArICAgIChpbnNwZWN0LWlyCj4gPiA+ID4gPiArICAgIGZvcm0K PiA+ID4gPiA+ICsgICAgKGxhbWJkYSAoY29tcG9uZW50KQo+ID4gPiA+ID4gKyAgICAgIChjdHU6 ZG8tYmxvY2tzIChibG9jayBjb21wb25lbnQpCj4gPiA+ID4gPiArICAgICAgICAoY3R1OmRvLW5v ZGVzIChub2RlIG5pbCBibG9jaykKPiA+ID4gPiA+ICsgICAgICAgICAgKHdoZW4gKGJhc2ljLWNv bWJpbmF0aW9uLXAgbm9kZSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAocHVzaCBub2RlIGNhbGxz KSkpKSkpCj4gPiA+ID4gPiArICAgIGNhbGxzKSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsoZGVm bWFjcm8gYXNzZXJ0LWNhbGxzIChmdW4tbmFtZSBleHBlY3RlZC1jb3VudCAoJnJlc3QgbGFtYmRh LWFyZ3MpICZib2R5IGJvZHkpCj4gPiA+ID4gPiArICAoc2ItaW50OmJpbmRpbmcqCj4gPiA+ID4g PiArICAgICAgKCgoZm9ybXMgZGVjbHMpIChzYi1pbnQ6cGFyc2UtYm9keSBib2R5IG5pbCkpCj4g PiA+ID4gPiArICAgICAgKGxleHByIGAobGFtYmRhICgsQGxhbWJkYS1hcmdzKQo+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAsQGRlY2xzCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgOzsg V2l0aG91dCBhIGNvbnRhaW5pbmcgTEVUIGZvcm0sIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9u IG9mIENTRQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIDs7IGlzIHVud2lsbGluZyB0byBi aW5kIGEgdGVtcG9yYXJ5IGxhbWJkYSB2YXIgZm9yIHJldXNlLgo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgIChsZXQgKChhY3RpdmUtbGV0LXZhciAwKSkKPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgIChwcmludCBhY3RpdmUtbGV0LXZhcikKPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgIChpbmNmIGFjdGl2ZS1sZXQtdmFyIChyYW5kb20gNSkpCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAocHJpbnQgYWN0aXZlLWxldC12YXIpCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAsQGZvcm1zKSkpKQo+ID4gPiA+ID4gKyAgICBgKGFzc2VydCAoPSAoY291bnQg JyxmdW4tbmFtZSAoaXItY2FsbHMgJyxsZXhwcikgOmtleSAjJ2NvbWJpbmF0aW9uLWZ1bi1kZWJ1 Zy1uYW1lKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAsZXhwZWN0ZWQtY291bnQpKSkpCj4g PiA+ID4gPiArCj4gPiA+ID4gPiArOzs7IEJhc2ljIHRlc3RzOiBhIHNhbXBsaW5nIG9mIGVsaWRh YmxlIGxvYWQgdHlwZSB3aXRoIHR3byBpZGVudGljYWwgbG9hZHMKPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6Y2FyKSkKPiA+ID4gPiA+ICsgIChhc3NlcnQt Y2FsbHMgY2FyIDEgKGNvbnMpCj4gPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBlIGNvbnMgY29u cykpCj4gPiA+ID4gPiArICAgIChpZiAoY2FyIGNvbnMpCj4gPiA+ID4gPiArICAgICAgICAocHJp bmMgKGNhciBjb25zKSkKPiA+ID4gPiA+ICsgICAgICAgIChwcmluYyAoY2RyIGNvbnMpKSkpKQo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpkaWZmZXJlbnQt bmFtZXMtZm9yLXNhbWUtb2JqZWN0KSkKPiA+ID4gPiA+ICsgIDs7IFkgYW5kIFggcmVmZXIgdG8g dGhlIHNhbWUgdGhpbmcsIGFuZCBpdCBkb2Vzbid0IG1hdHRlcgo+ID4gPiA+ID4gKyAgOzsgd2hv c2UgQ0RSIHdlIHRha2UgZmlyc3QuIE9ubHkgb25lIENEUiBvcGVyYXRpb24gaXMgcGVyZm9ybWVk Cj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIGNkciAxICh4KQo+ID4gPiA+ID4gKyAgICAoZGVj bGFyZSAodHlwZSBjb25zIHgpKQo+ID4gPiA+ID4gKyAgICAobGV0ICgoeSB4KSkKPiA+ID4gPiA+ ICsgICAgICAobGlzdCAoY2RyIHkpIChjZHIgeCkpKSkKPiA+ID4gPiA+ICsgIChhc3NlcnQtY2Fs bHMgY2RyIDEgKHgpCj4gPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBlIGNvbnMgeCkpCj4gPiA+ ID4gPiArICAgIChsZXQgKCh5IHgpKQo+ID4gPiA+ID4gKyAgICAgIChsaXN0IChjZHIgeCkgKGNk ciB5KSkpKSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6 Y29tcG9zaXRpb24tb2YtY3hyKSkKPiA+ID4gPiA+ICsgIDs7IFRoZSBDQVIgZXh0cmFjdGlvbiB3 aGljaCBpcyBwYXJ0IG9mIHRoZSBDREFSIGZ1bmN0aW9uIGNhbiBiZQo+ID4gPiA+ID4gKyAgOzsg cmV1c2VkIGJhc2VkIG9uIHRoZSBmYWN0IHRoYXQgd2UgZXZhbHVhdGVkIChMSVNUUCAoQ0FSIFgp KQo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBjYXIgMSAoeCkKPiA+ID4gPiA+ICsgICAgKGlm IChsaXN0cCAoY2FyIHgpKSAoY2RhciB4KSkpCj4gPiA+ID4gPiArICA7OyBuZWdhdGl2ZSB0ZXN0 IC0gQ0RBUiBvbiBhIGRpZmZlcmVudCBZIGlzIGFub3RoZXIgQ0FSIG9wZXJhdGlvbgo+ID4gPiA+ ID4gKyAgKGFzc2VydC1jYWxscyBjYXIgMiAoeCB5KQo+ID4gPiA+ID4gKyAgICAoaWYgKGxpc3Rw IChjYXIgeCkpIChjZGFyIHkpKSkpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArKGRlZnN0cnVjdCBj c2UtdGVzdC1mb28gc2xvdCAod3Nsb3QgMCA6dHlwZSBzYi12bTp3b3JkKSkKPiA+ID4gPiA+ICso d2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6aW5zdGFuY2UtcmVmKSkKPiA+ID4gPiA+ICsgIChhc3Nl cnQtY2FsbHMgc2Ita2VybmVsOiVpbnN0YW5jZS1yZWYgMSAoeCkKPiA+ID4gPiA+ICsgICAgOzsg RGVwZW5kaW5nIG9uIHdoYXQgVFJBTlNGT1JNLUlOU1RBTkNFLVRZUEVQIGRvZXMsIGl0IG1pZ2h0 IGFjY2VzcyBpbnN0YW5jZS1sYXlvdXQKPiA+ID4gPiA+ICsgICAgOzsgdXNpbmcgJUlOU1RBTkNF LVJFRiB3aGljaCB3b3VsZCBoYXZlIHRvIGJlIGRpc2NvdW50ZWQgaW4gdGhlIGNhbGwgY291bnRp bmcuCj4gPiA+ID4gPiArICAgIDs7IEp1c3QgYnJ1dGUtZm9yY2UgdGhlIHR5cGUgdG8gYXZvaWQg dGhhdCBzaXR1YXRpb24uCj4gPiA+ID4gPiArICAgIChsZXQgKCh4ICh0cnVseS10aGUgY3NlLXRl c3QtZm9vIHgpKSkKPiA+ID4gPiA+ICsgICAgICAoaWYgKGNzZS10ZXN0LWZvby1zbG90IHgpCj4g PiA+ID4gPiArICAgICAgICAgIChwcmluYyAoY3NlLXRlc3QtZm9vLXNsb3QgeCkpCj4gPiA+ID4g PiArICAgICAgICAgIG5pbCkpKSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsod2l0aC10ZXN0ICg6 bmFtZSAoOmNzZSA6cmF3LWluc3RhbmNlLXJlZi93b3JkKSkKPiA+ID4gPiA+ICsgIChhc3NlcnQt Y2FsbHMgc2Ita2VybmVsOiVyYXctaW5zdGFuY2UtcmVmL3dvcmQgMSAoeCkKPiA+ID4gPiA+ICsg ICAgKGRlY2xhcmUgKHR5cGUgY3NlLXRlc3QtZm9vIHgpKQo+ID4gPiA+ID4gKyAgICAoaWYgKGxv Z3Rlc3QgKGNzZS10ZXN0LWZvby13c2xvdCB4KSAjeGZmMDAwKQo+ID4gPiA+ID4gKyAgICAgICAg KHByaW5jIChjc2UtdGVzdC1mb28td3Nsb3QgeCkpCj4gPiA+ID4gPiArICAgICAgICBuaWwpKSkK PiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6c2FwLXJlZi0z MikpCj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIHNiLXN5czpzYXAtcmVmLTMyIDEgKHNhcCBv ZmZzZXQpCj4gPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBlIHNiLXN5czpzeXN0ZW0tYXJlYS1w b2ludGVyIHNhcCkKPiA+ID4gPiA+ICsgICAgICAgICAgICAodHlwZSBzYi12bTp3b3JkIG9mZnNl dCkpCj4gPiA+ID4gPiArICAgIChpZiAocGx1c3AgKHNiLXN5czpzYXAtcmVmLTMyIHNhcCBvZmZz ZXQpKQo+ID4gPiA+ID4gKyAgICAgICAgKHByaW5jIChzYi1zeXM6c2FwLXJlZi0zMiBzYXAgb2Zm c2V0KSkKPiA+ID4gPiA+ICsgICAgICAgIG5pbCkpCj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxz IHNiLXN5czpzaWduZWQtc2FwLXJlZi0zMiAxIChzYXAgb2Zmc2V0KQo+ID4gPiA+ID4gKyAgICAo ZGVjbGFyZSAodHlwZSBzYi1zeXM6c3lzdGVtLWFyZWEtcG9pbnRlciBzYXApCj4gPiA+ID4gPiAr ICAgICAgICAgICAgKHR5cGUgc2Itdm06d29yZCBvZmZzZXQpKQo+ID4gPiA+ID4gKyAgICAoaWYg KHBsdXNwIChzYi1zeXM6c2lnbmVkLXNhcC1yZWYtMzIgc2FwIG9mZnNldCkpCj4gPiA+ID4gPiAr ICAgICAgICAocHJpbmMgKHNiLXN5czpzaWduZWQtc2FwLXJlZi0zMiBzYXAgb2Zmc2V0KSkKPiA+ ID4gPiA+ICsgICAgICAgIG5pbCkpKQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyh3aXRoLXRlc3Qg KDpuYW1lICg6Y3NlIDpzYXAtcmVmLTY0KSA6c2tpcHBlZC1vbiAoOm5vdCA6NjQtYml0KSkKPiA+ ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgc2Itc3lzOnNhcC1yZWYtNjQgMSAoc2FwIG9mZnNldCkK PiA+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIg c2FwKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICh0eXBlIHNiLXZtOndvcmQgb2Zmc2V0KSkKPiA+ ID4gPiA+ICsgICAgKGlmIChwbHVzcCAoc2Itc3lzOnNhcC1yZWYtNjQgc2FwIG9mZnNldCkpCj4g PiA+ID4gPiArICAgICAgICAocHJpbmMgKHNiLXN5czpzYXAtcmVmLTY0IHNhcCBvZmZzZXQpKQo+ ID4gPiA+ID4gKyAgICAgICAgbmlsKSkKPiA+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgc2Itc3lz OnNpZ25lZC1zYXAtcmVmLTY0IDEgKHNhcCBvZmZzZXQpCj4gPiA+ID4gPiArICAgIChkZWNsYXJl ICh0eXBlIHNiLXN5czpzeXN0ZW0tYXJlYS1wb2ludGVyIHNhcCkKPiA+ID4gPiA+ICsgICAgICAg ICAgICAodHlwZSBzYi12bTp3b3JkIG9mZnNldCkpCj4gPiA+ID4gPiArICAgIChpZiAocGx1c3Ag KHNiLXN5czpzaWduZWQtc2FwLXJlZi02NCBzYXAgb2Zmc2V0KSkKPiA+ID4gPiA+ICsgICAgICAg IChwcmluYyAoc2Itc3lzOnNpZ25lZC1zYXAtcmVmLTY0IHNhcCBvZmZzZXQpKQo+ID4gPiA+ID4g KyAgICAgICAgbmlsKSkpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5hbWUg KDpjc2UgOmxvb3Atb3Zlci1kZXJlZikpCj4gPiA+ID4gPiArICAobGV0ICgobGV4cHIKPiA+ID4g PiA+ICsgICAgICAgICcobGFtYmRhIChmKQo+ID4gPiA+ID4gKyAgICAgICAgICAgIChkZWNsYXJl IChvcHRpbWl6ZSAoc2ItYzo6YWxpZW4tZnVuY2FsbC1zYXZlcy1mcC1hbmQtcGMgMCkKPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2ItYzo6dHlwZS1jaGVjayAwKSkp Cj4gPiA+ID4gPiArICAgICAgICAgICAgOzsgRiByZXR1cm5zIGEgcG9pbnRlciB0byBhIG51bGwt dGVybWluYXRlZCBhcnJheSBvZiB1bnNpZ25lZC1pbnQuCj4gPiA+ID4gPiArICAgICAgICAgICAg OzsgVGhlIGRlcmVmIGZvciB0aGUgbG9vcCB0ZXJtaW5hdGlvbiB0ZXN0LCBhbmQgYWdhaW4gaW4g dGhlIGJvZHkKPiA+ID4gPiA+ICsgICAgICAgICAgICA7OyBzaG91bGQgdXNlIGEgc2luZ2xlIG1l bW9yeSBsb2FkLgo+ID4gPiA+ID4gKyAgICAgICAgICAgIChsZXQgKChhIChhbGllbi1mdW5jYWxs ICh0aGUgKGFsaWVuIChmdW5jdGlvbiAoKiB1bnNpZ25lZCkpKSBmKSkpKQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgKGRvICgoaW5kZXggMCAoMSsgaW5kZXgpKSkKPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAoKHplcm9wIChkZXJlZiBhIGluZGV4KSkpCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgIChwcmluYyAodGhlIGZpeG51bSAoZGVyZWYgYSBpbmRleCkpKSkpKSkpCj4gPiA+ID4g PiArICAgIChhc3NlcnQgKD0gKGNvdW50ICMrKG9yIGFybTY0IHg4Ni02NCkgJ3NiLXN5czolc2Fw LXJlZi02NC1pbmRleGVkCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICMtKG9yIGFy bTY0IHg4Ni02NCkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKHByb2duICMrNjQt Yml0ICdzYi1zeXM6c2FwLXJlZi02NCAjLTY0LWJpdCAnc2Itc3lzOnNhcC1yZWYtMzIpCj4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgIChpci1jYWxscyBsZXhwcikgOmtleSAjJ2NvbWJp bmF0aW9uLWZ1bi1kZWJ1Zy1uYW1lKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgMSkpKSkKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICs7OzsgU0VUUSBvZiBhIHZhcmlhYmxlIHVzZWQgYXMgYW4gYXJn dW1lbnQgdG8gYW4gZWxpZGFibGUgbG9hZCBwcmV2ZW50cyBDU0UuCj4gPiA+ID4gPiArOzs7IFdo ZW4gYSB2YXJpYWJsZSB0aGF0IHBhcnRpY2lwYXRlcyBpbiB0aGUgbG9hZCBleHByZXNzaW9uIChl LmcuLCB0aGUgY29ucwo+ID4gPiA+ID4gKzs7OyBiZWluZyBDQVInZCkgaXMgYXNzaWduZWQgYmV0 d2VlbiB0d28gaWRlbnRpY2FsIGxvYWRzLCB0aGUgc2Vjb25kIGxvYWQKPiA+ID4gPiA+ICs7Ozsg bXVzdCBub3QgYmUgZWxpbWluYXRlZCBiZWNhdXNlIHRoZSB2YXJpYWJsZSBtYXkgcmVmZXJlbmNl IGEgZGlmZmVyZW50IG9iamVjdC4KPiA+ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6 c2V0cS1vZi1sb2FkLWFyZy1wcmV2ZW50cy1jYXIpKQo+ID4gPiA+ID4gKyAgOzsgQ09OUyBpcyB0 aGUgYXJndW1lbnQgdG8gQ0FSLiBBc3NpZ25pbmcgQ09OUyBiZXR3ZWVuIHR3byAoQ0FSIENPTlMp Cj4gPiA+ID4gPiArICA7OyBwcmV2ZW50cyBDU0UuCj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxz IGNhciAyIChjb25zIG90aGVyKQo+ID4gPiA+ID4gKyAgICAoZGVjbGFyZSAodHlwZSBjb25zIGNv bnMgb3RoZXIpKQo+ID4gPiA+ID4gKyAgICAobGV0ICgoYSAoY2FyIGNvbnMpKSkKPiA+ID4gPiA+ ICsgICAgICAoc2V0cSBjb25zIG90aGVyKQo+ID4gPiA+ID4gKyAgICAgIChsZXQgKChiIChjYXIg Y29ucykpKQo+ID4gPiA+ID4gKyAgICAgICAgKGxpc3QgYSBiKSkpKSkKPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6c2V0cS1vZi1sb2FkLWFyZy1wcmV2ZW50 cy1jZHIpKQo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBjZHIgMiAoY29ucyBvdGhlcikKPiA+ ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zIG90aGVyKSkKPiA+ID4gPiA+ICsg ICAgKGxldCAoKGEgKGNkciBjb25zKSkpCj4gPiA+ID4gPiArICAgICAgKHNldHEgY29ucyBvdGhl cikKPiA+ID4gPiA+ICsgICAgICAobGV0ICgoYiAoY2RyIGNvbnMpKSkKPiA+ID4gPiA+ICsgICAg ICAgIChsaXN0IGEgYikpKSkpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5h bWUgKDpjc2UgOnNldHEtb2YtbG9hZC1hcmctcHJldmVudHMtaW5zdGFuY2UtcmVmKSkKPiA+ID4g PiA+ICsgIDs7IEFzc2lnbmluZyB0aGUgc3RydWN0IHZhcmlhYmxlIGJldHdlZW4gdHdvIHJlYWRz IG9mIHRoZSBzYW1lIHNsb3QgcHJldmVudHMgQ1NFLgo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxs cyBzYi1rZXJuZWw6JWluc3RhbmNlLXJlZiAyICh4IHkpCj4gPiA+ID4gPiArICAgIChsZXQgKCh4 ICh0cnVseS10aGUgY3NlLXRlc3QtZm9vIHgpKQo+ID4gPiA+ID4gKyAgICAgICAgICAoeSAodHJ1 bHktdGhlIGNzZS10ZXN0LWZvbyB5KSkpCj4gPiA+ID4gPiArICAgICAgKGxldCAoKGEgKGNzZS10 ZXN0LWZvby1zbG90IHgpKSkKPiA+ID4gPiA+ICsgICAgICAgIChzZXRxIHggeSkKPiA+ID4gPiA+ ICsgICAgICAgIChsZXQgKChiIChjc2UtdGVzdC1mb28tc2xvdCB4KSkpCj4gPiA+ID4gPiArICAg ICAgICAgIChsaXN0IGEgYikpKSkpKQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyh3aXRoLXRlc3Qg KDpuYW1lICg6Y3NlIDpzZXRxLW9mLWxvYWQtYXJnLXByZXZlbnRzLXNhcC1yZWYpKQo+ID4gPiA+ ID4gKyAgOzsgQXNzaWduaW5nIHRoZSBTQVAgdmFyaWFibGUgYmV0d2VlbiB0d28gcmVhZHMgYXQg dGhlIHNhbWUgb2Zmc2V0Cj4gPiA+ID4gPiArICA7OyBtdXN0IHByZXZlbnQgQ1NFIHNpbmNlIHRo ZSBzZWNvbmQgcmVhZCBtYXkgdXNlIGEgZGlmZmVyZW50IFNBUC4KPiA+ID4gPiA+ICsgIChhc3Nl cnQtY2FsbHMgc2Itc3lzOnNhcC1yZWYtMzIgMiAoc2FwMSBzYXAyIG9mZnNldCkKPiA+ID4gPiA+ ICsgICAgKGRlY2xhcmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwMSBzYXAy KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICh0eXBlIHNiLXZtOndvcmQgb2Zmc2V0KSkKPiA+ID4g PiA+ICsgICAgKGxldCAoKGEgKHNiLXN5czpzYXAtcmVmLTMyIHNhcDEgb2Zmc2V0KSkpCj4gPiA+ ID4gPiArICAgICAgKHNldHEgc2FwMSBzYXAyKQo+ID4gPiA+ID4gKyAgICAgIChsZXQgKChiIChz Yi1zeXM6c2FwLXJlZi0zMiBzYXAxIG9mZnNldCkpKQo+ID4gPiA+ID4gKyAgICAgICAgKGxpc3Qg YSBiKSkpKSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICs7OzsgU0VUUSBvZiBhbiAqdW5yZWxhdGVk KiB2YXJpYWJsZSBzaG91bGQgTk9UIHByZXZlbnQgQ1NFLgo+ID4gPiA+ID4gKzs7OyBPbmx5IG11 dGF0aW9ucyBvZiB2YXJpYWJsZXMgdGhhdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbG9hZCBtYXR0ZXIu Cj4gPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOnNldHEtb2YtdW5yZWxhdGVkLXZh ci1hbGxvd3MtY3NlKSkKPiA+ID4gPiA+ICsgIDs7IFogaXMgbm90IGFuIGFyZ3VtZW50IHRvIENB Uiwgc28gc2V0dGluZyBaIGRvZXMgbm90IGluaGliaXQgQ1NFLgo+ID4gPiA+ID4gKyAgKGFzc2Vy dC1jYWxscyBjYXIgMSAoY29ucyB6KQo+ID4gPiA+ID4gKyAgICAoZGVjbGFyZSAodHlwZSBjb25z IGNvbnMpKQo+ID4gPiA+ID4gKyAgICAobGV0ICgoYSAoY2FyIGNvbnMpKSkKPiA+ID4gPiA+ICsg ICAgICAoc2V0cSB6IGEpCj4gPiA+ID4gPiArICAgICAgKGxldCAoKGIgKGNhciBjb25zKSkpCj4g PiA+ID4gPiArICAgICAgICAobGlzdCB6IGIpKSkpKQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKzs7 OyBTQi1USFJFQUQ6QkFSUklFUiBvZiBhbnkga2luZCBwcmV2ZW50cyBlbGlzaW9uIG9mIHRoZSBz ZWNvbmQgbG9hZAo+ID4gPiA+ID4gKzs7OyBzaW5jZSB0aGUgbWVtb3J5IGJhcnJpZXJzIGlzIG5v dCBmbHVzaGFibGUuIFRoaXMgaXMgdGhlIGNvbnNlcnZhdGl2ZSBzdGFuY2UuCj4gPiA+ID4gPiAr Ozs7IFRoZSBhY3R1YWwgKGxvb3NlcikgcmVxdWlyZW1lbnRzIGFyZSBtb3JlIHN1YnRsZSB0aGFu IEkgY2FyZSB0byBkZWFsIHdpdGguCj4gPiA+ID4gPiArKGRlZm1hY3JvIGJhcnJpZXItdGVzdCAo a2luZCkKPiA+ID4gPiA+ICsgIGAod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6YmFycmllci1wcmV2 ZW50cy1jYXIgLGtpbmQpKQo+ID4gPiA+ID4gKyAgICAoYXNzZXJ0LWNhbGxzIGNhciAyIChjb25z KQo+ID4gPiA+ID4gKyAgICAgIChkZWNsYXJlICh0eXBlIGNvbnMgY29ucykpCj4gPiA+ID4gPiAr ICAgICAgKGxldCAoKGEgKGNhciBjb25zKSkpCj4gPiA+ID4gPiArICAgICAgICAoc2ItdGhyZWFk OmJhcnJpZXIgKCxraW5kKSkKPiA+ID4gPiA+ICsgICAgICAgIChsZXQgKChiIChjYXIgY29ucykp KQo+ID4gPiA+ID4gKyAgICAgICAgICAobGlzdCBhIGIpKSkpKSkKPiA+ID4gPiA+ICsoYmFycmll ci10ZXN0IDpyZWFkKQo+ID4gPiA+ID4gKyhiYXJyaWVyLXRlc3QgOndyaXRlKQo+ID4gPiA+ID4g KyhiYXJyaWVyLXRlc3QgOm1lbW9yeSkKPiA+ID4gPiA+ICsoYmFycmllci10ZXN0IDpjb21waWxl cikKPiA+ID4gPiA+ICsoYmFycmllci10ZXN0IDpkYXRhLWRlcGVuZGVuY3kpCj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArOzs7IEFueSBub24tZmx1c2hhYmxlIGNhbGwgYmV0d2VlbiB0d28gaWRlbnRp Y2FsIGxvYWRzIHByZXZlbnRzIENTRQo+ID4gPiA+ID4gKzs7OyBiZWNhdXNlIHRoZSBjYWxsIG1h eSBoYXZlIHNpZGUgZWZmZWN0cyB0aGF0IG1vZGlmeSB0aGUgbG9hZGVkIG1lbW9yeS4KPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6bm9uLWZsdXNoYWJsZS1j YWxsLXByZXZlbnRzLWNzZSkpCj4gPiA+ID4gPiArICA7OyBQUklOQyBpcyBhIG5vbi1mbHVzaGFi bGUKPiA+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgY2FyIDIgKGNvbnMpCj4gPiA+ID4gPiArICAg IChkZWNsYXJlICh0eXBlIGNvbnMgY29ucykpCj4gPiA+ID4gPiArICAgIChsZXQgKChhIChjYXIg Y29ucykpKQo+ID4gPiA+ID4gKyAgICAgIChwcmluYyA0MikKPiA+ID4gPiA+ICsgICAgICAobGV0 ICgoYiAoY2FyIGNvbnMpKSkKPiA+ID4gPiA+ICsgICAgICAgIChsaXN0IGEgYikpKSkpCj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArOzs7IERpZmZlcmVudCBmdW5jdGlvbnMgb24gdGhlIHNhbWUgb2Jq ZWN0IGFyZSBOT1QgY29uc2lkZXJlZCBjb21tb24gc3ViZXhwcmVzc2lvbnMuCj4gPiA+ID4gPiAr Ozs7IChDQVIgeCkgYW5kIChDRFIgeCkgYXJlIGRpZmZlcmVudCBsb2FkcyBldmVuIGlmIHggaXMg dGhlIHNhbWUuCj4gPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOmRpZmZlcmVudC1h Y2Nlc3NvcnMtbm90LWNzZSkpCj4gPiA+ID4gPiArICA7OyBCb3RoIENBUiBhbmQgQ0RSIHNob3Vs ZCBhcHBlYXIsIGVhY2ggZXhhY3RseSBvbmNlLgo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBj YXIgMSAoY29ucykKPiA+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ ID4gPiA+ICsgICAgKGlmIChjYXIgY29ucykKPiA+ID4gPiA+ICsgICAgICAgIChwcmluYyAoY2Ry IGNvbnMpKQo+ID4gPiA+ID4gKyAgICAgICAgbmlsKSkKPiA+ID4gPiA+ICsgIChhc3NlcnQtY2Fs bHMgY2RyIDEgKGNvbnMpCj4gPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBlIGNvbnMgY29ucykp Cj4gPiA+ID4gPiArICAgIChpZiAoY2FyIGNvbnMpCj4gPiA+ID4gPiArICAgICAgICAocHJpbmMg KGNkciBjb25zKSkKPiA+ID4gPiA+ICsgICAgICAgIG5pbCkpKQo+ID4gPiA+ID4gZGlmZiAtLWdp dCBhL3hwZXJmZWN0aGFzaDMwLmxpc3AtZXhwciBiL3hwZXJmZWN0aGFzaDMwLmxpc3AtZXhwcgo+ ID4gPiA+ID4gaW5kZXggNmE1MDNhY2YwLi4xYjcyMjdjNzggMTAwNjQ0Cj4gPiA+ID4gPiAtLS0g YS94cGVyZmVjdGhhc2gzMC5saXNwLWV4cHIKPiA+ID4gPiA+ICsrKyBiL3hwZXJmZWN0aGFzaDMw Lmxpc3AtZXhwcgo+ID4gPiA+ID4gQEAgLTE1MDYsNiArMTUwNiw5IEBACj4gPiA+ID4gPiAgKCMo MTBCRTcyNzcgMTIyMTRBRTggMTJFMkNCREEgMTk3Mzk1MzkgMUYzNTU2QzcgMUY2NDQzODcpCj4g PiA+ID4gPiAgIihJTlRFR0VSIEJJR05VTSBTQi1WTTo6VU5TSUdORUQtQllURS0zMSBTQi1WTTo6 U0lHTkVELUJZVEUtMzIgRklYTlVNIFNCLVZNOjpQT1NJVElWRS1GSVhOVU0pIgo+ID4gPiA+ID4g ICIoKCYgKF4gdmFsICg+PiB2YWwgMjIpKSA3KSkiKQo+ID4gPiA+ID4gKygjKDEwRDJFQTRFIDEy MjRDNTU3IDE1QTU4RDg1IDE1QjVBMkI1IDE3NTI0QTc4IDE3NjlFNDE5IDE4OTA2RDA4KQo+ID4g PiA+ID4gKyAiKFNCLUM6OkNTRVQgU0ItQzo6UkVGIERFTEFZIFNCLUM6OkFSUkFZLUlOREVYLUNB U1QgQ0FTVCBTQi1DOjpDT01CSU5BVElPTiBTQi1DOjpDSUYpIgo+ID4gPiA+ID4gKyAiKCgmICgr ICg+PiB2YWwgMSkgKD4+IHZhbCA5KSkgNykpIikKPiA+ID4gPiA+ICAoIygxMEQyRUE0RSAxMjI0 QzU1NyAxNUE1OEQ4NSAxNUI1QTJCNSAxNzUyNEE3OCAxNzY5RTQxOSAxODkwNkQwOCAxOTU3NzUz OSAxQzA2NUNCOCAxRDY2QzkzMikKPiA+ID4gPiA+ICAiIygoKDpUWVBFIFNCLUM6OlJFRikpICgo OlRZUEUgU0ItQzo6Q09NQklOQVRJT04pKSAoKDpUWVBFIFNCLUM6OkNJRikpICgoOlRZUEUgU0It Qzo6Q1JFVFVSTikpICgoOlRZUEUgU0ItQzo6TVYtQ09NQklOQVRJT04pKSAoKDpUWVBFIEVYSVQp KSAoKDpUWVBFIFNCLUM6OkNTRVQpKSAoKDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVkt SU5ERVgtQ0FTVCkgKDpUWVBFIENBU1QpKSkiCj4gPiA+ID4gPiAgIigobGV0ICgodGFiICNhKCg4 KSAodW5zaWduZWQtYnl0ZSA4KSAwIDUgMiA4IDEzIDMgMCAwKSkpCj4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEveHBlcmZlY3RoYXNoNjEubGlzcC1leHByIGIveHBlcmZlY3RoYXNoNjEubGlzcC1leHBy Cj4gPiA+ID4gPiBpbmRleCA2ZWI3MjQ4NmIuLmIxYmMwMTRmYiAxMDA2NDQKPiA+ID4gPiA+IC0t LSBhL3hwZXJmZWN0aGFzaDYxLmxpc3AtZXhwcgo+ID4gPiA+ID4gKysrIGIveHBlcmZlY3RoYXNo NjEubGlzcC1leHByCj4gPiA+ID4gPiBAQCAtNDYzLDYgKzQ2Myw5IEBACj4gPiA+ID4gPiAgKCMo OUEzMjBENCAzOUNBQTMzOSA0M0JCRUUxOCA0RDYxMzY4RiA1MzIyMkRGQiBCRkE4NjE4OSBFREEx MDM3RiBGRUU5OUE5NSkKPiA+ID4gPiA+ICAiIygoKDpUWVBFIFNCLUM6OlJFRikpICgoOlRZUEUg U0ItQzo6Q09NQklOQVRJT04pKSAoKDpUWVBFIFNCLUM6Ok1WLUNPTUJJTkFUSU9OKSkgKCg6VFlQ RSBFWElUKSkgKCg6VFlQRSBTQi1DOjpDU0VUKSkgKCg6VFlQRSBERUxBWSkgKDpUWVBFIFNCLUM6 OkFSUkFZLUlOREVYLUNBU1QpICg6VFlQRSBDQVNUKSkpIgo+ID4gPiA+ID4gICIoKCYgKC0gKD4+ IHZhbCAzKSAoPj4gdmFsIDI5KSkgNykpIikKPiA+ID4gPiA+ICsoIyg5QTMyMEQ0IDM5Q0FBMzM5 IDQzQkJFRTE4IDUzMjIyREZCIDkzODA4MzdDIEJGQTg2MTg5IEZFRTk5QTk1KQo+ID4gPiA+ID4g KyAiIygoKDpUWVBFIFNCLUM6OkNJRikgKDpUWVBFIFNCLUM6OkNPTUJJTkFUSU9OKSAoOlRZUEUg REVMQVkpICg6VFlQRSBTQi1DOjpBUlJBWS1JTkRFWC1DQVNUKSAoOlRZUEUgQ0FTVCkgKDpUWVBF IFNCLUM6OlJFRikgKDpUWVBFIFNCLUM6OkNTRVQpKSkiCj4gPiA+ID4gPiArICIoKCYgKCsgdmFs ICg+PiB2YWwgMzEpKSA3KSkiKQo+ID4gPiA+ID4gICgjKDlBMzIwRDQgNDNCQkVFMTggNTMyMjJE RkIgQThBNEM3RDIgQkZBODYxODkgRUFBM0RBNUMgRkVFOTlBOTUpCj4gPiA+ID4gPiAgIiMoKCg6 VFlQRSBTQi1DOjpSRUYpKSAoKDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgt Q0FTVCkgKDpUWVBFIENBU1QpKSAoKDpUWVBFIFNCLUM6OkNPTUJJTkFUSU9OKSkgKCg6VFlQRSBT Qi1DOjpFTlRSWSkpICgoOlRZUEUgU0ItQzo6RU5DTE9TRSkpKSIKPiA+ID4gPiA+ICAiKCgmIChe ICg+PiB2YWwgNykgKD4+IHZhbCAyMykpIDcpKSIpCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEveHBl cmZlY3RoYXNoNjMubGlzcC1leHByIGIveHBlcmZlY3RoYXNoNjMubGlzcC1leHByCj4gPiA+ID4g PiBpbmRleCBjYzg2MWJiMzMuLjEzYmI1ZDg1ZCAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL3hwZXJm ZWN0aGFzaDYzLmxpc3AtZXhwcgo+ID4gPiA+ID4gKysrIGIveHBlcmZlY3RoYXNoNjMubGlzcC1l eHByCj4gPiA+ID4gPiBAQCAtODcwLDYgKzg3MCw5IEBACj4gPiA+ID4gPiAgKCMoMTIxMDY4REQg NEQ2MTM2OEYgNTgxMTBFN0YgNjdFRTJEMUEgNkQ5QTg4M0QgNzQ1ODlEODIgODk3QjQ2NTYgQTY4 QTM5NjUpCj4gPiA+ID4gPiAgIiMoKCg6VFlQRSBTQi1DOjpSRUYpKSAoKDpUWVBFIFNCLUM6OkNP TUJJTkFUSU9OKSkgKCg6VFlQRSBTQi1DOjpNVi1DT01CSU5BVElPTikpICgoOlRZUEUgRVhJVCkp ICgoOlRZUEUgU0ItQzo6Q1NFVCkpICgoOlRZUEUgREVMQVkpICg6VFlQRSBTQi1DOjpBUlJBWS1J TkRFWC1DQVNUKSAoOlRZUEUgQ0FTVCkpKSIKPiA+ID4gPiA+ICAiKCgmICgtICg+PiB2YWwgNCkg KD4+IHZhbCAxNikpIDcpKSIpCj4gPiA+ID4gPiArKCMoMTIxMDY4REQgNTgxMTBFN0YgNjdFRTJE MUEgNkQ5QTg4M0QgNzQyRDRDNTQgODk3QjQ2NTYgQTY4QTM5NjUpCj4gPiA+ID4gPiArICIjKCgo OlRZUEUgU0ItQzo6Q0lGKSAoOlRZUEUgU0ItQzo6Q09NQklOQVRJT04pICg6VFlQRSBERUxBWSkg KDpUWVBFIFNCLUM6OkFSUkFZLUlOREVYLUNBU1QpICg6VFlQRSBDQVNUKSAoOlRZUEUgU0ItQzo6 UkVGKSAoOlRZUEUgU0ItQzo6Q1NFVCkpKSIKPiA+ID4gPiA+ICsgIigoJiAoLSAoPj4gdmFsIDQp ICg+PiB2YWwgMTYpKSA3KSkiKQo+ID4gPiA+ID4gICgjKDEyNkFEQjAyIDMxQjA5NUREIDQyRDgz RkZCIDQzNDFGN0Q4IDYzQzk3MUQ3IDdBODBGMjAxIDdCNDA4ODgwIDhGNzkxMkQ2IEVCRDAxODcy KQo+ID4gPiA+ID4gICIoOkFMTE9XLU9USEVSLUtFWVMgOlRZUEUgOlJFU1VMVC1TUEVDUyA6QVJH LVNQRUNTIDpDQUxMRVIgOkRFUFMgOkZJUkVEIDpMRVhFTlYgOlNPVVJDRS1QQVRIKSIKPiA+ID4g PiA+ICAiKChsZXQgKCh0YWIgI2EoKDgpICh1bnNpZ25lZC1ieXRlIDgpIDAgNSAwIDMgMCA1IDEy IDYpKSkKPiA+ID4gPiA+Cj4gPiA+ID4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+ID4KPiA+ID4g PiA+Cj4gPiA+ID4gPiBob29rcy9wb3N0LXJlY2VpdmUKPiA+ID4gPiA+IC0tCj4gPiA+ID4gPiBT QkNMCj4gPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+ID4gPiBTYmNsLWNvbW1pdHMgbWFpbGluZyBs aXN0Cj4gPiA+ID4gPiBTYmNsLWNvbW1pdHNAbGlzdHMuc291cmNlZm9yZ2UubmV0Cj4gPiA+ID4g PiBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9zYmNsLWNvbW1p dHMKPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBTYmNsLWNvbW1pdHMgbWFpbGluZyBsaXN0Cj4gU2JjbC1jb21taXRzQGxpc3RzLnNvdXJjZWZv cmdlLm5ldAo+IGh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3Ni Y2wtY29tbWl0cwo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiBTYmNsLWNvbW1pdHMgbWFpbGluZyBsaXN0Cj4gU2JjbC1jb21taXRzQGxpc3RzLnNv dXJjZWZvcmdlLm5ldAo+IGh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3Rp bmZvL3NiY2wtY29tbWl0cwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClNiY2wtY29tbWl0cyBtYWlsaW5nIGxpc3QKU2JjbC1jb21taXRzQGxpc3RzLnNv dXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5m by9zYmNsLWNvbW1pdHMK