Re: master: Perform local common subexpression elimination for some memory loads
Stas Boukarev <[email protected]> Tue, 4 Aug 2026 06:47:05 +0300
| Newsgroups | gmane.lisp.steel-bank.cvs,gmane.lisp.steel-bank.devel |
|---|---|
| Message-ID | <CAF63=10FRwN6k_a6fO8xm=ycj7A3oFy+djXhNtMZ0NbLzk0KMA@mail.gmail.com> |
KGRlZnVuIGogKHgpCiAgKGxldCAoKHkgKDErIHgpKSkKICAgICh2YWx1ZXMgeSB5CiAgICAgICAg ICAgIChjYXIgKikKICAgICAgICAgICAgKHNldGYgKiAnKGIpKQogICAgICAgICAgICAoY2FyICop KSkpCihsZXQgKCgqICcoYSkpKSAoaiAxKSkKPT4KMgoyCkEKKEIpCkEKCk9uIFR1ZSwgQXVnIDQs IDIwMjYgYXQgNDoyMuKAr0FNIFN0YXMgQm91a2FyZXYgPHN0YXNzYXRzQGdtYWlsLmNvbT4gd3Jv dGU6Cj4KPiAoZGVmc3RydWN0IHMKPiAgICh4IChtYWtlLWFycmF5IDMpKSkKPgo+IChsZXQgKCop Cj4gICAobGFtYmRhICgpCj4gICAgIChsZXQqICgocyAjLihtYWtlLXMpKQo+ICAgICAgICAgICAg KGEgKHMteCBzKSkKPiAgICAgICAgICAgIChiIChzLXggcykpKQo+ICAgICAgICh2YWx1ZXMgKGFy ZWYgYSAwKQo+ICAgICAgICAgICAgICAgKGFyZWYgYiAwKSkpKSkKPgo+Cj4gZGVidWdnZXIgaW52 b2tlZCBvbiBhIFNCLUlOVDpCVUcgQEI4MDA3Qjg1QUQgaW4gdGhyZWFkCj4gIzxUSFJFQUQgdGlk PTE5ODY0MDIgIm1haW4gdGhyZWFkIiBSVU5OSU5HIHsxMjAxNEYwMDAzfT46Cj4gICAgIGZhaWxl ZCBBVkVSOiAoRVEgRU5WIChMQU1CREEtRU5WSVJPTk1FTlQgKExBTUJEQS1WQVItSE9NRSBUSElO RykpKQo+Cj4gT24gVHVlLCBBdWcgNCwgMjAyNiBhdCAzOjU54oCvQU0gc251Z2xhcyB2aWEgU2Jj bC1jb21taXRzCj4gPHNiY2wtY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+IHdyb3RlOgo+ ID4KPiA+IFRoZSBicmFuY2ggIm1hc3RlciIgaGFzIGJlZW4gdXBkYXRlZCBpbiBTQkNMOgo+ID4g ICAgICAgIHZpYSAgMTAwYzljMmJkY2RjYjg0ZmYwNGM4ZmVlZjk4M2E1YjQ0Njk1Yzk3YSAoY29t bWl0KQo+ID4gICAgICAgZnJvbSAgYjU0MWYyZjI1YjE0YjYyZmNhYjdlMTRhYTUxMjRkYjVkZDFk NmIyMCAoY29tbWl0KQo+ID4KPiA+IC0gTG9nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiBjb21taXQgMTAwYzljMmJk Y2RjYjg0ZmYwNGM4ZmVlZjk4M2E1YjQ0Njk1Yzk3YQo+ID4gQXV0aG9yOiBEb3VnbGFzIEthdHpt YW4gPGRvdWdrQGdvb2dsZS5jb20+Cj4gPiBEYXRlOiAgIFR1ZSBBdWcgNCAwMDo1ODoyMSAyMDI2 ICswMDAwCj4gPgo+ID4gICAgIFBlcmZvcm0gbG9jYWwgY29tbW9uIHN1YmV4cHJlc3Npb24gZWxp bWluYXRpb24gZm9yIHNvbWUgbWVtb3J5IGxvYWRzCj4gPgo+ID4gICAgIFRoZSB0ZWNobmlxdWUg aXMgdG8gZmluZCAiZXF1aXZhbGVudCIgbG9hZHMgaW4gYmV0d2VlbiB3aGljaCB0aGVyZSBpcyBu bwo+ID4gICAgIGNvbXB1dGF0aW9uIHRoYXQgYWZmZWN0cyB0aGUgcmVzdWx0IG9mIHRoZSBsb2Fk LiBBbHNvIGl0IG5lZWRzIGEgc3Vycm91bmRpbmcKPiA+ICAgICBMRVQsIHdoaWNoIGlzIGF1Z21l bnRlZCB3aXRoIGEgbmV3IHRlbXAgdmFyaWFibGUgYXMgaWYgdGhlIHVzZXIgZGlkIHRoYXQuCj4g PiAgICAgVGhpcyBpcyBzbGlnaHRseSBkZWZpY2llbnQgZm9yIHZhcmlvdXMgcmVhc29uczoKPiA+ ICAgICAxLiBpdCB3b24ndCBkbyBhbnl0aGluZyB3aXRob3V0IHRoZSBMRVQKPiA+ICAgICAyLiB0 aGUgbW9yZSBraW5kcyBvZiBjb21tb24gc3ViZXhwcmVzc2lvbnMgd2UgYWxsb3cgKHN1Y2ggYXMg bWF0aCksCj4gPiAgICAgICAgdGhlIHNsb3dlciBJUjEtT1BUSU1JWkUtQ09NQklOQVRJT04gaXMg Z29pbmcgdG8gcnVuCj4gPiAgICAgMy4gdGhlcmUgYXJlIHBvc3NpYmx5IG90aGVyIG5vZGUgdHlw ZXMgdGhhdCBzaG91bGQgYmUgYWxsb3dlZCB0byBpbnRlcnZlbmUKPiA+Cj4gPiAgICAgT24gdGhl IHBsdXMgc2lkZSwgaXQncyBub3QgYWxsIHRoYXQgaGFyZCB0byBleHRlbmQgdGhlIGxvZ2ljIHRv IGFjY2VwdAo+ID4gICAgIG90aGVyIGZ1bmN0aW9ucyBhcyBwYXJ0aWNpcGFudHMgaW4gY29tbW9u IHN1YmV4cHJlc3Npb25zLgo+ID4KPiA+ICAgICBBbGwgdGVzdCBjYXNlcyBwbHVzIGEgbGl0dGxl IGJpdCBvZiBhc3Npc3RhbmNlIGZyb20gR2VtaW5pCj4gPiAtLS0KPiA+ICBzcmMvY29tcGlsZXIv aXIxb3B0Lmxpc3AgfCAxNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g PiAgdGVzdHMvbGNzZS5wdXJlLmxpc3AgICAgIHwgMjM0ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgeHBlcmZlY3RoYXNoMzAubGlzcC1leHByIHwg ICAzICsKPiA+ICB4cGVyZmVjdGhhc2g2MS5saXNwLWV4cHIgfCAgIDMgKwo+ID4gIHhwZXJmZWN0 aGFzaDYzLmxpc3AtZXhwciB8ICAgMyArCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCA0MjIgaW5zZXJ0 aW9ucygrKQo+ID4KPiA+IGRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvaXIxb3B0Lmxpc3AgYi9z cmMvY29tcGlsZXIvaXIxb3B0Lmxpc3AKPiA+IGluZGV4IDg1NTk4MjRmMS4uZGFjMzkzZTMxIDEw MDY0NAo+ID4gLS0tIGEvc3JjL2NvbXBpbGVyL2lyMW9wdC5saXNwCj4gPiArKysgYi9zcmMvY29t cGlsZXIvaXIxb3B0Lmxpc3AKPiA+IEBAIC0xMjIwLDYgKzEyMjAsMTgyIEBACj4gPiAgICAgICAg ICAgICAgKHNob3ctdHlwZS1kZXJpdmF0aW9uIGNvbWJpbmF0aW9uIHJlcykpCj4gPiAgICAgICAg ICAgIChjb2VyY2UtdG8tdmFsdWVzIHJlcykpKSkpKQo+ID4KPiA+ICsoZGVmdW4gY29sbGVjdC1s dmFyLXZhcnMgKGx2YXIpCj4gPiArICAoZGVjbGFyZSAodHlwZSBsdmFyIGx2YXIpKQo+ID4gKyAg KGxldCAoKHVzZSAocHJpbmNpcGFsLWx2YXItdXNlIGx2YXIpKSkKPiA+ICsgICAgKGNvbmQgKChy ZWYtcCB1c2UpCj4gPiArICAgICAgICAgICAobGV0ICgobGVhZiAocmVmLWxlYWYgdXNlKSkpCj4g PiArICAgICAgICAgICAgICh3aGVuIChsYW1iZGEtdmFyLXAgbGVhZikKPiA+ICsgICAgICAgICAg ICAgICAobGlzdCBsZWFmKSkpKQo+ID4gKyAgICAgICAgICAoKGNvbWJpbmF0aW9uLXAgdXNlKQo+ ID4gKyAgICAgICAgICAgKG1hcGNhbiAjJ2NvbGxlY3QtbHZhci12YXJzIChiYXNpYy1jb21iaW5h dGlvbi1hcmdzIHVzZSkpKQo+ID4gKyAgICAgICAgICAodCBuaWwpKSkpCj4gPiArCj4gPiArKGRl ZnVuIGZpbmQtYWN0aXZlLWxldC1sYW1iZGEgKG5vZGUpCj4gPiArICAoZGVjbGFyZSAodHlwZSBu b2RlIG5vZGUpKQo+ID4gKyAgKGxvb3AgZm9yIGVudiA9IChub2RlLWxleGVudiBub2RlKSB0aGVu IChsZXhlbnYtcGFyZW50IGVudikKPiA+ICsgICAgICAgIHdoaWxlIGVudgo+ID4gKyAgICAgICAg ZG8gKGxldCAoKGwgKGxleGVudi1sYW1iZGEgZW52KSkpCj4gPiArICAgICAgICAgICAgICh3aGVu IChhbmQgbAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbmFsLWtpbmQtZXEg bCBsZXQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZnVuY3Rpb25hbC1raW5k LWVxIGwgem9tYmllKSkpCj4gPiArICAgICAgICAgICAgICAgKHJldHVybiBsKSkpKSkKPiA+ICsK PiA+ICsoZGVmdW4gYWRkLXZhcmlhYmxlLXRvLWxldC1sYW1iZGEgKGxldC1sYW1iZGEgdikKPiA+ ICsgIChkZWNsYXJlICh0eXBlIGNsYW1iZGEgbGV0LWxhbWJkYSkKPiA+ICsgICAgICAgICAgICh0 eXBlIGxhbWJkYS12YXIgdikpCj4gPiArICAoc2V0ZiAobGFtYmRhLXZhci1ob21lIHYpIGxldC1s YW1iZGEpCj4gPiArICAoc2V0ZiAobGFtYmRhLXZhcnMgbGV0LWxhbWJkYSkgKGFwcGVuZCAobGFt YmRhLXZhcnMgbGV0LWxhbWJkYSkgKGxpc3QgdikpKQo+ID4gKyAgOzsgVXBkYXRlIHRoZSBjYWxs IHRvIHRoZSBMRVQgbGFtYmRhCj4gPiArICAobGV0KiAoKHJlZiAoY2FyIChsZWFmLXJlZnMgbGV0 LWxhbWJkYSkpKQo+ID4gKyAgICAgICAgIChjYWxsIChhbmQgcmVmCj4gPiArICAgICAgICAgICAg ICAgICAgICAobm9kZS1sdmFyIHJlZikKPiA+ICsgICAgICAgICAgICAgICAgICAgIChsdmFyLWRl c3QgKG5vZGUtbHZhciByZWYpKSkpKQo+ID4gKyAgICAod2hlbiAoYW5kIGNhbGwgKGNvbWJpbmF0 aW9uLXAgY2FsbCkpCj4gPiArICAgICAgKGxldCAoKGR1bW15LWx2YXIgKG1ha2UtbHZhcikpKQo+ ID4gKyAgICAgICAgKHNldGYgKGx2YXItZGVzdCBkdW1teS1sdmFyKSBjYWxsKQo+ID4gKyAgICAg ICAgKHNldGYgKGJhc2ljLWNvbWJpbmF0aW9uLWFyZ3MgY2FsbCkKPiA+ICsgICAgICAgICAgICAg IChhcHBlbmQgKGJhc2ljLWNvbWJpbmF0aW9uLWFyZ3MgY2FsbCkgKGxpc3QgZHVtbXktbHZhcikp KQo+ID4gKyAgICAgICAgKHNldGYgKGx2YXItZGVzdCBkdW1teS1sdmFyKSBjYWxsKSkpKSkKPiA+ ICsKPiA+ICs7OyBSZXVzZSBvZiBTWU1CT0wtVkFMVUUgb2YgYSBzcGVjaWFsIHZhciB3b3VsZCBi ZSBuaWNlLAo+ID4gKzs7IGJ1dCBTWU1CT0wtVkFMVUUgaXQgaXMgbm90IHJlcHJlc2VudGVkIGFz IGEgY2FsbCBpbiBJUjEKPiA+ICsoZGVmaW5lLWxvYWQtdGltZS1nbG9iYWwgKmVsaWRhYmxlLW1l bW9yeS1sb2FkcyoKPiA+ICsgICAgJyhjYXIgY2RyICVpbnN0YW5jZS1yZWYgJXJhdy1pbnN0YW5j ZS1yZWYvd29yZCAlcmF3LWluc3RhbmNlLXJlZi9zaWduZWQtd29yZAo+ID4gKyAgICAgIHNhcC1y ZWYtMTYgc2lnbmVkLXNhcC1yZWYtMTYgc2Itc3lzOjolc2FwLXJlZi0xNi1pbmRleGVkIHNiLXN5 czo6JXNpZ25lZC1zYXAtcmVmLTE2LWluZGV4ZWQKPiA+ICsgICAgICBzYXAtcmVmLTMyIHNpZ25l ZC1zYXAtcmVmLTMyIHNiLXN5czo6JXNhcC1yZWYtMzItaW5kZXhlZCBzYi1zeXM6OiVzaWduZWQt c2FwLXJlZi0zMi1pbmRleGVkCj4gPiArICAgICAgc2FwLXJlZi02NCBzaWduZWQtc2FwLXJlZi02 NCBzYi1zeXM6OiVzYXAtcmVmLTY0LWluZGV4ZWQgc2Itc3lzOjolc2lnbmVkLXNhcC1yZWYtNjQt aW5kZXhlZAo+ID4gKyAgICAgIHNiLWFsaWVuOmRlcmVmCj4gPiArICAgICAgc2ItYWxpZW46YWxp ZW4tc2FwKSkKPiA+ICsKPiA+ICs7OzsgTG9vayBmb3IgYW55IG5vZGUgZXF1aXZhbGVudCB0byBN QVRDSCBjb25zZGVyaW5nIG5vZGVzIGluIHJldmVyc2Ugc3RhcnRpbmcgYXQgRlJPTS4KPiA+ICs7 OzsgTWVtb3J5IGxvYWRzIGZyb20gdGhlIHNhbWUgb2JqZWN0K3Nsb3Qgb3IgU0FQK29mZnNldCBj b3VsZCBiZSBlcXVpdmFsZW50Lgo+ID4gKzs7OyBOb3RoaW5nIGVsc2UgY2FuIGJlIGVxdWl2YWxl bnQgKHVudGlsIEkgZW5oYW5jZSB0aGlzKQo+ID4gKyhkZWZ1biBmaW5kLWVxdWl2YWxlbnQtbm9k ZS1iYWNrd2FyZHMgKG1hdGNoIGZyb20pCj4gPiArICAobGFiZWxzICgobHZhci1lcXVpdmFsZW50 LXAgKGwxIGwyKQo+ID4gKyAgICAgICAgICAgICAoZGVjbGFyZSAodHlwZSBsdmFyIGwxIGwyKSkK PiA+ICsgICAgICAgICAgICAgKGNvbmQgKChlcSBsMSBsMikgdCkKPiA+ICsgICAgICAgICAgICAg ICAgICAgKChhbmQgKGNvbnN0YW50LWx2YXItcCBsMSkgKGNvbnN0YW50LWx2YXItcCBsMikpCj4g PiArICAgICAgICAgICAgICAgICAgICAoZXFsIChsdmFyLXZhbHVlIGwxKSAobHZhci12YWx1ZSBs MikpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAodAo+ID4gKyAgICAgICAgICAgICAgICAgICAg KGxldCAoKHUxIChwcmluY2lwYWwtbHZhci11c2UgbDEpKQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKHUyIChwcmluY2lwYWwtbHZhci11c2UgbDIpKSkKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgKGNvbmQgKChhbmQgKHJlZi1wIHUxKSAocmVmLXAgdTIpKQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGVxIChyZWYtbGVhZiB1MSkgKHJlZi1sZWFmIHUyKSkpCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kIChjb21iaW5hdGlvbi1wIHUxKSAo Y29tYmluYXRpb24tcCB1MikKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGVxIChiYXNpYy1jb21iaW5hdGlvbi1raW5kIHUxKSA6a25vd24pCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcSAoYmFzaWMtY29tYmluYXRpb24ta2luZCB1MikgOmtu b3duKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21iaW5hdGlvbi1lcXVp dmFsZW50LXAgdTEgdTIpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCBuaWwp KSkpKSkKPiA+ICsgICAgICAgICAgIChjb21iaW5hdGlvbi1lcXVpdmFsZW50LXAgKGMxIGMyKQo+ ID4gKyAgICAgICAgICAgICAoZGVjbGFyZSAodHlwZSBjb21iaW5hdGlvbiBjMSBjMikpCj4gPiAr ICAgICAgICAgICAgIChhbmQgKGVxIChiYXNpYy1jb21iaW5hdGlvbi1mdW4taW5mbyBjMSkgKGJh c2ljLWNvbWJpbmF0aW9uLWZ1bi1pbmZvIGMyKSkKPiA+ICsgICAgICAgICAgICAgICAgICAobGV0 ICgoYXJnczEgKGJhc2ljLWNvbWJpbmF0aW9uLWFyZ3MgYzEpKQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIChhcmdzMiAoYmFzaWMtY29tYmluYXRpb24tYXJncyBjMikpKQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgKGFuZCAoPSAobGVuZ3RoIGFyZ3MxKSAobGVuZ3RoIGFyZ3MyKSkKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZXJ5ICMnbHZhci1lcXVpdmFsZW50LXAgYXJn czEgYXJnczIpKSkpKSkKPiA+ICsgICAgKGRvICgobm9kZSBmcm9tIChjdHJhbi11c2UgKG5vZGUt cHJldiBub2RlKSkpKSAoKG51bGwgbm9kZSkpCj4gPiArICAgICAgKHdoZW4gKGFuZCAoY29tYmlu YXRpb24tcCBub2RlKQo+ID4gKyAgICAgICAgICAgICAgICAgKGVxIChjb21iaW5hdGlvbi1raW5k IG5vZGUpIDprbm93bikKPiA+ICsgICAgICAgICAgICAgICAgIChub2RlLWx2YXIgbm9kZSkKPiA+ ICsgICAgICAgICAgICAgICAgIChjb21iaW5hdGlvbi1lcXVpdmFsZW50LXAgbm9kZSBtYXRjaCkp Cj4gPiArICAgICAgICAocmV0dXJuIG5vZGUpKQo+ID4gKyAgICAgICh0eXBlY2FzZSBub2RlCj4g PiArICAgICAgICAoKG9yIGNzZXQgcmVmIGNhc3QgY29tYmluYXRpb24gY2lmKSkKPiA+ICsgICAg ICAgICh0Cj4gPiArICAgICAgICAgOzsgUmV0dXJuIDpGQUlMIHRvIGFib3J0IHF1aWNrbHkuIFRo aXMgY291bGQgY2hvb3NlIHRvIGZhaWwgaWYgYSBub24tZmx1c2hhYmxlCj4gPiArICAgICAgICAg OzsgY29tYmluYXRpb24gaXMgc2VlbiwgYnV0IGZvciBub3cgSSdtIGRlZmVycmluZyB0aGF0IHNv dW5kbmVzcyBjaGVjay4KPiA+ICsgICAgICAgICAocmV0dXJuLWZyb20gZmluZC1lcXVpdmFsZW50 LW5vZGUtYmFja3dhcmRzIDpmYWlsKSkpKSkpCj4gPiArCj4gPiArOzs7IEF0dG1wdCB0byBmaW5k IGEgQ09NQklOQVRJT04gZXF1aXZhbGVudCB0byBUSElTIHByZWNlZGluZyBpdCBpbiBub2RlIG9y ZGVyLCB0aGUgdmFsdWUKPiA+ICs7Ozsgb2Ygd2hpY2ggY2FuIGJlIHN1YnN0aXR1dGVkIGZvciB0 aGUgY2FsbCB0byBUSElTLCBhY3R1YWxseSBtYWtpbmcgdGhlIHN1YnN0aXR1dGlvbi4KPiA+ICs7 OzsgTG9va2luZyBiYWNrd2FyZHMgYXQgbW9zdCBhIGZldyBibG9ja3MgdGVuZHMgdG8gd29yayB3 ZWxsIGVub3VnaCwgYW5kIGlucG9ydGFudGx5Cj4gPiArOzs7IGxpbWl0cyB0aGUgd29yay4gU2Nh bm5pbmcgb25seSB0aGUgY3VycmVudCBibG9jayBpcyBpbmFkZXF1YXRlIGFzIHRoZSBleGFtcGxl Cj4gPiArOzs7IGluIDpMT09QLU9WRVItREVSRUYgc2hvd3MuIFRoZSBpbW1lZGlhdGUgcHJlZGVj ZXNzb3IgaXMgc3RpbGwgbm90IGVub3VnaCwgYmVjYXVzZSB0aGUKPiA+ICs7OzsgcHJlZGVjZXNz b3IgY291bGQgaGF2ZSBiZWVuIHNwbGl0LCBsZWF2aW5nIGEgdGlueSBibG9jayB3aGVyZSB0aGUg b25seSBub2RlIGlzCj4gPiArOzs7IGEgdHJpdmlhbCBvcGVyYXRpb24uCj4gPiArKGRlZnVuIHRy eS1yZXVzZS1leHByLXZhbHVlICh0aGlzKQo+ID4gKyAgKGRlY2xhcmUgKHR5cGUgY29tYmluYXRp b24gdGhpcykpCj4gPiArICAoYmluZGluZyoKPiA+ICsgICAgICAoKGhvbWUtbGFtYmRhIChmaW5k LWFjdGl2ZS1sZXQtbGFtYmRhIHRoaXMpIDpleGl0LWlmLW51bGwpCj4gPiArICAgICAgIChsb29r YmFjayAwKQo+ID4gKyAgICAgICAoYzEKPiA+ICsgICAgICAgIDs7IEluIHRoaXMgYmxvY2ssIGV4 cGxpY2l0bHkgZ28gYmFjayBhIG5vZGUgc28gdGhhdCBGSU5ELUJBQ0tXQVJEUyBkb2Vzbid0IGNv bnNpZGVyIFRISVMKPiA+ICsgICAgICAgIDs7IGFzIGVxdWl2YWxlbnQgdG8gaXRzZWxmLiBGYWls aW5nIHRoYXQsIHRyeSBwcmVkZWNlc3NvciBibG9ja3MsIGJ1dCBvbmx5IGFzIGxvbmcgYXMKPiA+ ICsgICAgICAgIDs7IHByZWQgaXMgdW5pcXVlIHNpbmNlIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24g YWJvdXQgbm9kZXMgdGhhdCBkb21pbmF0ZSBUSElTLgo+ID4gKyAgICAgICAgKG9yIChmaW5kLWVx dWl2YWxlbnQtbm9kZS1iYWNrd2FyZHMgdGhpcyAoY3RyYW4tdXNlIChub2RlLXByZXYgdGhpcykp KQo+ID4gKyAgICAgICAgICAgIChkbyAoKHByZWQgKGJsb2NrLXByZWQgKG5vZGUtYmxvY2sgdGhp cykpKSkKPiA+ICsgICAgICAgICAgICAgICAgKChvciAoPiBsb29rYmFjayAzKSAobm90IChzaW5n bGV0b24tcCBwcmVkKSkpKQo+ID4gKyAgICAgICAgICAgICAgKGluY2YgbG9va2JhY2spCj4gPiAr ICAgICAgICAgICAgICAobGV0ICgobm9kZSAoYmxvY2stbGFzdCAoY2FyIHByZWQpKSkpCj4gPiAr ICAgICAgICAgICAgICAgICh3aGVuIChudWxsIG5vZGUpIChyZXR1cm4pKQo+ID4gKyAgICAgICAg ICAgICAgICAoYXdoZW4gKGZpbmQtZXF1aXZhbGVudC1ub2RlLWJhY2t3YXJkcyB0aGlzIG5vZGUp IChyZXR1cm4gaXQpKQo+ID4gKyAgICAgICAgICAgICAgICAoc2V0cSBwcmVkIChibG9jay1wcmVk IChub2RlLWJsb2NrIG5vZGUpKSkpKSkKPiA+ICsgICAgICAgIDpleGl0LWlmLW51bGwpCj4gPiAr ICAgICAgICh2YXJzIDsgY2FuJ3QgdXNlIDpleGl0LWlmLW51bGwgaGVyZSBiZWNhdXNlIFZBUlMg Y2FuIGJlIGFuZCB1c3VhbGx5IGlzIE5JTAo+ID4gKyAgICAgICAgKHVubGVzcyAoZXEgYzEgOmZh aWwpCj4gPiArICAgICAgICAgIChtYXBjYW4gIydjb2xsZWN0LWx2YXItdmFycyAoYmFzaWMtY29t YmluYXRpb24tYXJncyBjMSkpKSkpCj4gPiArICAgICh3aGVuIChlcSBjMSA6ZmFpbCkKPiA+ICsg ICAgICAocmV0dXJuLWZyb20gdHJ5LXJldXNlLWV4cHItdmFsdWUgbmlsKSkKPiA+ICsgICAgKGxh YmVscyAoKGFsbC1mbHVzaGFibGUgKGN0cmFuIGVuZC1ub2RlKQo+ID4gKyAgICAgICAgICAgICAg IChkZWNsYXJlIChjdHJhbiBjdHJhbikgKHR5cGUgKG9yIG5vZGUgbnVsbCkgZW5kLW5vZGUpKQo+ ID4gKyAgICAgICAgICAgICAgIChsb29wIChsZXQgKChub2RlIChjdHJhbi1uZXh0IGN0cmFuKSkp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAoY29uZCAoKGVxIG5vZGUgZW5kLW5vZGUpIChy ZXR1cm4gdCkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5vdCAob2stdG8t Zmx1c2ggbm9kZSkpIChyZXR1cm4gbmlsKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgoYW5kIChub3QgZW5kLW5vZGUpIChub3QgKG5vZGUtbmV4dCBub2RlKSkpIChyZXR1cm4g dCkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgY3RyYW4gKG5vZGUtbmV4dCBu b2RlKSkpKSkKPiA+ICsgICAgICAgICAgICAgKG9rLXRvLWZsdXNoIChub2RlKQo+ID4gKyAgICAg ICAgICAgICAgIChjb25kICgoc2V0LXAgbm9kZSkgKG5vdCAobWVtYmVyIChzZXQtdmFyIG5vZGUp IHZhcnMpKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAoKGNvbWJpbmF0aW9uLXAgbm9kZSkg KGZsdXNoYWJsZS1jb21iaW5hdGlvbi1wIG5vZGUpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICgoYmFzaWMtY29tYmluYXRpb24tcCBub2RlKSBuaWwpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgKHQgdCkpKSkgOyBhbnl0aGluZyBlbHNlIHRoZSBiYWNrd2FyZHMgc2VhcmNoIGFsbG93ZWQg aXMgb2sKPiA+ICsgICAgICA7OyBXaGVuIGxvb2tiYWNrPjAgaXQncyBwb3NzaWJsZSBmb3IgdGhl IGVxdWl2YWxlbnQgbm9kZSB0byBiZSB0aGUgZmluYWwgbm9kZQo+ID4gKyAgICAgIDs7IG9mIGl0 cyBibG9jaywgaW4gd2hpY2ggY2FzZSBpdHMgTk9ERS1ORVhUIGlzIG51bGwuCj4gPiArICAgICAg KGxldCogKCh0aGlzLWJsb2NrIChub2RlLWJsb2NrIHRoaXMpKQo+ID4gKyAgICAgICAgICAgICAo cHJlZCAoY2FyIChibG9jay1wcmVkIHRoaXMtYmxvY2spKSkpCj4gPiArICAgICAgICAodW5sZXNz IChpZiAoPSBsb29rYmFjayAwKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKGFsbC1mbHVzaGFi bGUgKG5vZGUtbmV4dCBjMSkgdGhpcykKPiA+ICsgICAgICAgICAgICAgICAgICAgIChhbmQKPiA+ ICsgICAgICAgICAgICAgICAgICAgICA7OyBDaGVjayBwcmV2IGJsb2NrIGZyb20gQzEgdG8gaXRz IGVuZCBvZiBibG9jaywgYW5kIGN1cnJlbnQgYmxvY2sgdXAgdG8gVEhJUwo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIChhY29uZCAoKG5vZGUtbmV4dCBjMSkgKGFsbC1mbHVzaGFibGUgaXQgbmls KSkgKHQgdCkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgKGFsbC1mbHVzaGFibGUgKGJsb2Nr LXN0YXJ0IHRoaXMtYmxvY2spIHRoaXMpCj4gPiArICAgICAgICAgICAgICAgICAgICAgOzsgQWxs IGNoZWNrIGFsbCBvZiBvbmUgb3IgYm90aCBpbnRlcnZlbmluZyBibG9ja3MKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAob3IgKDwgbG9va2JhY2sgMikKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgKGFsbC1mbHVzaGFibGUgKGJsb2NrLXN0YXJ0IHByZWQpIG5pbCkpCj4gPiArICAgICAg ICAgICAgICAgICAgICAgKG9yICg8IGxvb2tiYWNrIDMpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgIChhbGwtZmx1c2hhYmxlIChibG9jay1zdGFydCAoY2FyIChibG9jay1wcmVkIHByZWQp KSkgbmlsKSkpKQo+ID4gKyAgICAgICAgICAocmV0dXJuLWZyb20gdHJ5LXJldXNlLWV4cHItdmFs dWUgbmlsKSkpKQo+ID4gKyAgICA7OyBTdWJzdGl0dXRlIEMxJ3MgcmVzdWx0IGluIGZvciBUSElT Cj4gPiArICAgIChiaW5kaW5nKiAoKGx2YXItYzEgKG5vZGUtbHZhciBjMSkgOmV4aXQtaWYtbnVs bCkKPiA+ICsgICAgICAgICAgICAgICAoY29uc3VtZXItMSAobHZhci1kZXN0IGx2YXItYzEpIDpl eGl0LWlmLW51bGwpCj4gPiArICAgICAgICAgICAgICAgKGMyIHRoaXMpCj4gPiArICAgICAgICAg ICAgICAgKGx2YXItYzIgKG5vZGUtbHZhciBjMikgOmV4aXQtaWYtbnVsbCkKPiA+ICsgICAgICAg ICAgICAgICAodiAobWFrZS1sYW1iZGEtdmFyIChnZW5zeW0gIlJFVVNFRC1WQUwiKQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnR5cGUgKHNpbmdsZS12YWx1ZS10eXBl IChub2RlLWRlcml2ZWQtdHlwZSBjMSkpKSkKPiA+ICsgICAgICAgICAgICAgICAobHZhci1uZXcg KG1ha2UtbHZhcikpKQo+ID4gKyAgICAgIChhZGQtdmFyaWFibGUtdG8tbGV0LWxhbWJkYSBob21l LWxhbWJkYSB2KQo+ID4gKwo+ID4gKyAgICAgIDs7IDEuIFJlZGlyZWN0IGNvbnN1bWVyLTEgdG8g cmVhZCBmcm9tIGx2YXItbmV3Cj4gPiArICAgICAgKHN1YnN0aXR1dGUtbHZhciBsdmFyLW5ldyBs dmFyLWMxKQo+ID4gKwo+ID4gKyAgICAgICh3aXRoLWlyMS1lbnZpcm9ubWVudC1mcm9tLW5vZGUg YzEKPiA+ICsgICAgICAgIDs7IDIuIE1ha2UgQzEgd3JpdGUgdG8gYSBuZXcgTFZBUiwgYW5kIGxp bmsgaXQgdG8gYSBDU0VUIG9uIFYKPiA+ICsgICAgICAgIChsZXQgKChsdmFyLWMxLW5ldyAobWFr ZS1sdmFyKSkpCj4gPiArICAgICAgICAgICglZGVsZXRlLWx2YXItdXNlIGMxKQo+ID4gKyAgICAg ICAgICAodXNlLWx2YXIgYzEgbHZhci1jMS1uZXcpCj4gPiArICAgICAgICAgIDs7IDMuIENyZWF0 ZSBTMSAoc2V0IFYgPSBsdmFyLWMxLW5ldykgYW5kIGluc2VydCBhZnRlciBDMQo+ID4gKyAgICAg ICAgICAobGV0ICgoczEgKG1ha2Utc2V0IHYgbHZhci1jMS1uZXcpKSkKPiA+ICsgICAgICAgICAg ICAoc2V0ZiAobHZhci1kZXN0IGx2YXItYzEtbmV3KSBzMSkKPiA+ICsgICAgICAgICAgICAocHVz aCBzMSAoYmFzaWMtdmFyLXNldHMgdikpCj4gPiArICAgICAgICAgICAgKGluc2VydC1ub2RlLWFm dGVyIGMxIHMxKSkpKQo+ID4gKwo+ID4gKyAgICAgIDs7IDQuIEluc2VydCByZWYxIGJlZm9yZSBj b25zdW1lci0xLCB3cml0aW5nIHRvIGx2YXItbmV3Cj4gPiArICAgICAgKGluc2VydC1yZWYtYmVm b3JlIHYgY29uc3VtZXItMSBsdmFyLW5ldykKPiA+ICsgICAgICA7OyA1LiBJbnNlcnQgcmVmMiBi ZWZvcmUgQzIsIHN0ZWFsaW5nIEMyJ3MgbHZhcgo+ID4gKyAgICAgIChpbnNlcnQtcmVmLWJlZm9y ZSB2IGMyIHQpCj4gPiArICAgICAgOzsgQzIgaXMgbm93IGRlYWQgYW5kIHdpbGwgYmUgZmx1c2hl ZCBieSB0aGUgY2FsbGVyIQo+ID4gKyAgICAgIHQpKSkKPiA+ICsKPiA+ICA7OzsgRG8gSVIxIG9w dGltaXphdGlvbnMgb24gYSBDT01CSU5BVElPTiBub2RlLgo+ID4gIChkZWZ1biBpcjEtb3B0aW1p emUtY29tYmluYXRpb24gKG5vZGUgJmF1eCAoc2hvdyAqc2hvdy10cmFuc2Zvcm1zLXAqKSkKPiA+ ICAgIChkZWNsYXJlICh0eXBlIGNvbWJpbmF0aW9uIG5vZGUpKQo+ID4gQEAgLTEzMDUsNiArMTQ4 MSw5IEBACj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChub2RlLWx2YXIgbm9kZSkp KQo+ID4gICAgICAgICAgICAgICAgICAgIChyZXR1cm4tZnJvbSBpcjEtb3B0aW1pemUtY29tYmlu YXRpb24gKGZsdXNoLW5vZGUgbm9kZSkpKQo+ID4gICAgICAgICAgICAgICAgICAgKChmb2xkLWNh bGwtZGVyaXZlZC10by1jb25zdGFudCBub2RlKQo+ID4gKyAgICAgICAgICAgICAgICAgIChyZXR1 cm4tZnJvbSBpcjEtb3B0aW1pemUtY29tYmluYXRpb24pKQo+ID4gKyAgICAgICAgICAgICAgICAg KChhbmQgKGNvbWJpbmF0aW9uLWlzIG5vZGUgKmVsaWRhYmxlLW1lbW9yeS1sb2FkcyopCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAodHJ5LXJldXNlLWV4cHItdmFsdWUgbm9kZSkpCj4gPiAg ICAgICAgICAgICAgICAgICAgKHJldHVybi1mcm9tIGlyMS1vcHRpbWl6ZS1jb21iaW5hdGlvbikp KQo+ID4gICAgICAgICAgICAgKHdoZW4gKGFuZCAoaXIxLWF0dHJpYnV0ZXAgKGZ1bi1pbmZvLWF0 dHJpYnV0ZXMgaW5mbykgY29tbXV0YXRpdmUpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICg9 IChsZW5ndGggYXJncykgMikKPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9sY3NlLnB1cmUubGlzcCBi L3Rlc3RzL2xjc2UucHVyZS5saXNwCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXgg MDAwMDAwMDAwLi40M2IzNGU5OTgKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3Rlc3RzL2xj c2UucHVyZS5saXNwCj4gPiBAQCAtMCwwICsxLDIzNCBAQAo+ID4gKzs7OzsgVGhpcyBzb2Z0d2Fy ZSBpcyBwYXJ0IG9mIHRoZSBTQkNMIHN5c3RlbS4gU2VlIHRoZSBSRUFETUUgZmlsZSBmb3IKPiA+ ICs7Ozs7IG1vcmUgaW5mb3JtYXRpb24uCj4gPiArOzs7Owo+ID4gKzs7OzsgV2hpbGUgbW9zdCBv ZiBTQkNMIGlzIGRlcml2ZWQgZnJvbSB0aGUgQ01VIENMIHN5c3RlbSwgdGhlIHRlc3QKPiA+ICs7 Ozs7IGZpbGVzIChsaWtlIHRoaXMgb25lKSB3ZXJlIHdyaXR0ZW4gZnJvbSBzY3JhdGNoIGFmdGVy IHRoZSBmb3JrCj4gPiArOzs7OyBmcm9tIENNVSBDTC4KPiA+ICs7Ozs7Cj4gPiArOzs7OyBUaGlz IHNvZnR3YXJlIGlzIGluIHRoZSBwdWJsaWMgZG9tYWluIGFuZCBpcyBwcm92aWRlZCB3aXRoCj4g PiArOzs7OyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5LiBTZWUgdGhlIENPUFlJTkcgYW5kIENSRURJ VFMgZmlsZXMgZm9yCj4gPiArOzs7OyBtb3JlIGluZm9ybWF0aW9uLgo+ID4gKwo+ID4gKzs7Ozsg VGVzdHMgb2YgbG9jYWwgY29tbW9uIHN1YmV4cHJlc3Npb24gZWxpbWluYXRpb24KPiA+ICsKPiA+ ICsoaW1wb3J0ICcoY3R1Omluc3BlY3QtaXIKPiA+ICsgICAgICAgICAgc2ItYzo6Y29tYmluYXRp b24tZnVuLWRlYnVnLW5hbWUKPiA+ICsgICAgICAgICAgc2ItYzo6YmFzaWMtY29tYmluYXRpb24t cCkpCj4gPiArCj4gPiArKGRlZnVuIGlyLWNhbGxzIChmb3JtKQo+ID4gKyAgKGxldCAoY2FsbHMp Cj4gPiArICAgIChpbnNwZWN0LWlyCj4gPiArICAgICBmb3JtCj4gPiArICAgICAobGFtYmRhIChj b21wb25lbnQpCj4gPiArICAgICAgIChjdHU6ZG8tYmxvY2tzIChibG9jayBjb21wb25lbnQpCj4g PiArICAgICAgICAgKGN0dTpkby1ub2RlcyAobm9kZSBuaWwgYmxvY2spCj4gPiArICAgICAgICAg ICAod2hlbiAoYmFzaWMtY29tYmluYXRpb24tcCBub2RlKQo+ID4gKyAgICAgICAgICAgICAocHVz aCBub2RlIGNhbGxzKSkpKSkpCj4gPiArICAgIGNhbGxzKSkKPiA+ICsKPiA+ICsoZGVmbWFjcm8g YXNzZXJ0LWNhbGxzIChmdW4tbmFtZSBleHBlY3RlZC1jb3VudCAoJnJlc3QgbGFtYmRhLWFyZ3Mp ICZib2R5IGJvZHkpCj4gPiArICAoc2ItaW50OmJpbmRpbmcqCj4gPiArICAgICAgKCgoZm9ybXMg ZGVjbHMpIChzYi1pbnQ6cGFyc2UtYm9keSBib2R5IG5pbCkpCj4gPiArICAgICAgIChsZXhwciBg KGxhbWJkYSAoLEBsYW1iZGEtYXJncykKPiA+ICsgICAgICAgICAgICAgICAgICxAZGVjbHMKPiA+ ICsgICAgICAgICAgICAgICAgICA7OyBXaXRob3V0IGEgY29udGFpbmluZyBMRVQgZm9ybSwgdGhl IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgQ1NFCj4gPiArICAgICAgICAgICAgICAgICAgOzsg aXMgdW53aWxsaW5nIHRvIGJpbmQgYSB0ZW1wb3JhcnkgbGFtYmRhIHZhciBmb3IgcmV1c2UuCj4g PiArICAgICAgICAgICAgICAgICAgKGxldCAoKGFjdGl2ZS1sZXQtdmFyIDApKQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgKHByaW50IGFjdGl2ZS1sZXQtdmFyKQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgKGluY2YgYWN0aXZlLWxldC12YXIgKHJhbmRvbSA1KSkKPiA+ICsgICAgICAgICAgICAg ICAgICAgIChwcmludCBhY3RpdmUtbGV0LXZhcikKPiA+ICsgICAgICAgICAgICAgICAgICAgICxA Zm9ybXMpKSkpCj4gPiArICAgIGAoYXNzZXJ0ICg9IChjb3VudCAnLGZ1bi1uYW1lIChpci1jYWxs cyAnLGxleHByKSA6a2V5ICMnY29tYmluYXRpb24tZnVuLWRlYnVnLW5hbWUpCj4gPiArICAgICAg ICAgICAgICAgICxleHBlY3RlZC1jb3VudCkpKSkKPiA+ICsKPiA+ICs7OzsgQmFzaWMgdGVzdHM6 IGEgc2FtcGxpbmcgb2YgZWxpZGFibGUgbG9hZCB0eXBlIHdpdGggdHdvIGlkZW50aWNhbCBsb2Fk cwo+ID4gKwo+ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpjYXIpKQo+ID4gKyAgKGFzc2Vy dC1jYWxscyBjYXIgMSAoY29ucykKPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkK PiA+ICsgICAgKGlmIChjYXIgY29ucykKPiA+ICsgICAgICAgIChwcmluYyAoY2FyIGNvbnMpKQo+ ID4gKyAgICAgICAgKHByaW5jIChjZHIgY29ucykpKSkpCj4gPiArCj4gPiArKHdpdGgtdGVzdCAo Om5hbWUgKDpjc2UgOmRpZmZlcmVudC1uYW1lcy1mb3Itc2FtZS1vYmplY3QpKQo+ID4gKyAgOzsg WSBhbmQgWCByZWZlciB0byB0aGUgc2FtZSB0aGluZywgYW5kIGl0IGRvZXNuJ3QgbWF0dGVyCj4g PiArICA7OyB3aG9zZSBDRFIgd2UgdGFrZSBmaXJzdC4gT25seSBvbmUgQ0RSIG9wZXJhdGlvbiBp cyBwZXJmb3JtZWQKPiA+ICsgIChhc3NlcnQtY2FsbHMgY2RyIDEgKHgpCj4gPiArICAgIChkZWNs YXJlICh0eXBlIGNvbnMgeCkpCj4gPiArICAgIChsZXQgKCh5IHgpKQo+ID4gKyAgICAgIChsaXN0 IChjZHIgeSkgKGNkciB4KSkpKQo+ID4gKyAgKGFzc2VydC1jYWxscyBjZHIgMSAoeCkKPiA+ICsg ICAgKGRlY2xhcmUgKHR5cGUgY29ucyB4KSkKPiA+ICsgICAgKGxldCAoKHkgeCkpCj4gPiArICAg ICAgKGxpc3QgKGNkciB4KSAoY2RyIHkpKSkpKQo+ID4gKwo+ID4gKyh3aXRoLXRlc3QgKDpuYW1l ICg6Y3NlIDpjb21wb3NpdGlvbi1vZi1jeHIpKQo+ID4gKyAgOzsgVGhlIENBUiBleHRyYWN0aW9u IHdoaWNoIGlzIHBhcnQgb2YgdGhlIENEQVIgZnVuY3Rpb24gY2FuIGJlCj4gPiArICA7OyByZXVz ZWQgYmFzZWQgb24gdGhlIGZhY3QgdGhhdCB3ZSBldmFsdWF0ZWQgKExJU1RQIChDQVIgWCkpCj4g PiArICAoYXNzZXJ0LWNhbGxzIGNhciAxICh4KQo+ID4gKyAgICAoaWYgKGxpc3RwIChjYXIgeCkp IChjZGFyIHgpKSkKPiA+ICsgIDs7IG5lZ2F0aXZlIHRlc3QgLSBDREFSIG9uIGEgZGlmZmVyZW50 IFkgaXMgYW5vdGhlciBDQVIgb3BlcmF0aW9uCj4gPiArICAoYXNzZXJ0LWNhbGxzIGNhciAyICh4 IHkpCj4gPiArICAgIChpZiAobGlzdHAgKGNhciB4KSkgKGNkYXIgeSkpKSkKPiA+ICsKPiA+ICso ZGVmc3RydWN0IGNzZS10ZXN0LWZvbyBzbG90ICh3c2xvdCAwIDp0eXBlIHNiLXZtOndvcmQpKQo+ ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDppbnN0YW5jZS1yZWYpKQo+ID4gKyAgKGFzc2Vy dC1jYWxscyBzYi1rZXJuZWw6JWluc3RhbmNlLXJlZiAxICh4KQo+ID4gKyAgICA7OyBEZXBlbmRp bmcgb24gd2hhdCBUUkFOU0ZPUk0tSU5TVEFOQ0UtVFlQRVAgZG9lcywgaXQgbWlnaHQgYWNjZXNz IGluc3RhbmNlLWxheW91dAo+ID4gKyAgICA7OyB1c2luZyAlSU5TVEFOQ0UtUkVGIHdoaWNoIHdv dWxkIGhhdmUgdG8gYmUgZGlzY291bnRlZCBpbiB0aGUgY2FsbCBjb3VudGluZy4KPiA+ICsgICAg OzsgSnVzdCBicnV0ZS1mb3JjZSB0aGUgdHlwZSB0byBhdm9pZCB0aGF0IHNpdHVhdGlvbi4KPiA+ ICsgICAgKGxldCAoKHggKHRydWx5LXRoZSBjc2UtdGVzdC1mb28geCkpKQo+ID4gKyAgICAgIChp ZiAoY3NlLXRlc3QtZm9vLXNsb3QgeCkKPiA+ICsgICAgICAgICAgKHByaW5jIChjc2UtdGVzdC1m b28tc2xvdCB4KSkKPiA+ICsgICAgICAgICAgbmlsKSkpKQo+ID4gKwo+ID4gKyh3aXRoLXRlc3Qg KDpuYW1lICg6Y3NlIDpyYXctaW5zdGFuY2UtcmVmL3dvcmQpKQo+ID4gKyAgKGFzc2VydC1jYWxs cyBzYi1rZXJuZWw6JXJhdy1pbnN0YW5jZS1yZWYvd29yZCAxICh4KQo+ID4gKyAgICAoZGVjbGFy ZSAodHlwZSBjc2UtdGVzdC1mb28geCkpCj4gPiArICAgIChpZiAobG9ndGVzdCAoY3NlLXRlc3Qt Zm9vLXdzbG90IHgpICN4ZmYwMDApCj4gPiArICAgICAgICAocHJpbmMgKGNzZS10ZXN0LWZvby13 c2xvdCB4KSkKPiA+ICsgICAgICAgIG5pbCkpKQo+ID4gKwo+ID4gKyh3aXRoLXRlc3QgKDpuYW1l ICg6Y3NlIDpzYXAtcmVmLTMyKSkKPiA+ICsgIChhc3NlcnQtY2FsbHMgc2Itc3lzOnNhcC1yZWYt MzIgMSAoc2FwIG9mZnNldCkKPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1h cmVhLXBvaW50ZXIgc2FwKQo+ID4gKyAgICAgICAgICAgICAodHlwZSBzYi12bTp3b3JkIG9mZnNl dCkpCj4gPiArICAgIChpZiAocGx1c3AgKHNiLXN5czpzYXAtcmVmLTMyIHNhcCBvZmZzZXQpKQo+ ID4gKyAgICAgICAgKHByaW5jIChzYi1zeXM6c2FwLXJlZi0zMiBzYXAgb2Zmc2V0KSkKPiA+ICsg ICAgICAgIG5pbCkpCj4gPiArICAoYXNzZXJ0LWNhbGxzIHNiLXN5czpzaWduZWQtc2FwLXJlZi0z MiAxIChzYXAgb2Zmc2V0KQo+ID4gKyAgICAoZGVjbGFyZSAodHlwZSBzYi1zeXM6c3lzdGVtLWFy ZWEtcG9pbnRlciBzYXApCj4gPiArICAgICAgICAgICAgICh0eXBlIHNiLXZtOndvcmQgb2Zmc2V0 KSkKPiA+ICsgICAgKGlmIChwbHVzcCAoc2Itc3lzOnNpZ25lZC1zYXAtcmVmLTMyIHNhcCBvZmZz ZXQpKQo+ID4gKyAgICAgICAgKHByaW5jIChzYi1zeXM6c2lnbmVkLXNhcC1yZWYtMzIgc2FwIG9m ZnNldCkpCj4gPiArICAgICAgICBuaWwpKSkKPiA+ICsKPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAo OmNzZSA6c2FwLXJlZi02NCkgOnNraXBwZWQtb24gKDpub3QgOjY0LWJpdCkpCj4gPiArICAoYXNz ZXJ0LWNhbGxzIHNiLXN5czpzYXAtcmVmLTY0IDEgKHNhcCBvZmZzZXQpCj4gPiArICAgIChkZWNs YXJlICh0eXBlIHNiLXN5czpzeXN0ZW0tYXJlYS1wb2ludGVyIHNhcCkKPiA+ICsgICAgICAgICAg ICAgKHR5cGUgc2Itdm06d29yZCBvZmZzZXQpKQo+ID4gKyAgICAoaWYgKHBsdXNwIChzYi1zeXM6 c2FwLXJlZi02NCBzYXAgb2Zmc2V0KSkKPiA+ICsgICAgICAgIChwcmluYyAoc2Itc3lzOnNhcC1y ZWYtNjQgc2FwIG9mZnNldCkpCj4gPiArICAgICAgICBuaWwpKQo+ID4gKyAgKGFzc2VydC1jYWxs cyBzYi1zeXM6c2lnbmVkLXNhcC1yZWYtNjQgMSAoc2FwIG9mZnNldCkKPiA+ICsgICAgKGRlY2xh cmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwKQo+ID4gKyAgICAgICAgICAg ICAodHlwZSBzYi12bTp3b3JkIG9mZnNldCkpCj4gPiArICAgIChpZiAocGx1c3AgKHNiLXN5czpz aWduZWQtc2FwLXJlZi02NCBzYXAgb2Zmc2V0KSkKPiA+ICsgICAgICAgIChwcmluYyAoc2Itc3lz OnNpZ25lZC1zYXAtcmVmLTY0IHNhcCBvZmZzZXQpKQo+ID4gKyAgICAgICAgbmlsKSkpCj4gPiAr Cj4gPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOmxvb3Atb3Zlci1kZXJlZikpCj4gPiArICAo bGV0ICgobGV4cHIKPiA+ICsgICAgICAgICAnKGxhbWJkYSAoZikKPiA+ICsgICAgICAgICAgICAo ZGVjbGFyZSAob3B0aW1pemUgKHNiLWM6OmFsaWVuLWZ1bmNhbGwtc2F2ZXMtZnAtYW5kLXBjIDAp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYi1jOjp0eXBlLWNoZWNrIDAp KSkKPiA+ICsgICAgICAgICAgICA7OyBGIHJldHVybnMgYSBwb2ludGVyIHRvIGEgbnVsbC10ZXJt aW5hdGVkIGFycmF5IG9mIHVuc2lnbmVkLWludC4KPiA+ICsgICAgICAgICAgICA7OyBUaGUgZGVy ZWYgZm9yIHRoZSBsb29wIHRlcm1pbmF0aW9uIHRlc3QsIGFuZCBhZ2FpbiBpbiB0aGUgYm9keQo+ ID4gKyAgICAgICAgICAgIDs7IHNob3VsZCB1c2UgYSBzaW5nbGUgbWVtb3J5IGxvYWQuCj4gPiAr ICAgICAgICAgICAgKGxldCAoKGEgKGFsaWVuLWZ1bmNhbGwgKHRoZSAoYWxpZW4gKGZ1bmN0aW9u ICgqIHVuc2lnbmVkKSkpIGYpKSkpCj4gPiArICAgICAgICAgICAgICAoZG8gKChpbmRleCAwICgx KyBpbmRleCkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICgoemVyb3AgKGRlcmVmIGEgaW5kZXgp KSkKPiA+ICsgICAgICAgICAgICAgICAgKHByaW5jICh0aGUgZml4bnVtIChkZXJlZiBhIGluZGV4 KSkpKSkpKSkKPiA+ICsgICAgKGFzc2VydCAoPSAoY291bnQgIysob3IgYXJtNjQgeDg2LTY0KSAn c2Itc3lzOiVzYXAtcmVmLTY0LWluZGV4ZWQKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIy0o b3IgYXJtNjQgeDg2LTY0KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAocHJvZ24gIys2NC1i aXQgJ3NiLXN5czpzYXAtcmVmLTY0ICMtNjQtYml0ICdzYi1zeXM6c2FwLXJlZi0zMikKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgKGlyLWNhbGxzIGxleHByKSA6a2V5ICMnY29tYmluYXRpb24t ZnVuLWRlYnVnLW5hbWUpCj4gPiArICAgICAgICAgICAgICAgMSkpKSkKPiA+ICsKPiA+ICs7Ozsg U0VUUSBvZiBhIHZhcmlhYmxlIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gYW4gZWxpZGFibGUgbG9h ZCBwcmV2ZW50cyBDU0UuCj4gPiArOzs7IFdoZW4gYSB2YXJpYWJsZSB0aGF0IHBhcnRpY2lwYXRl cyBpbiB0aGUgbG9hZCBleHByZXNzaW9uIChlLmcuLCB0aGUgY29ucwo+ID4gKzs7OyBiZWluZyBD QVInZCkgaXMgYXNzaWduZWQgYmV0d2VlbiB0d28gaWRlbnRpY2FsIGxvYWRzLCB0aGUgc2Vjb25k IGxvYWQKPiA+ICs7OzsgbXVzdCBub3QgYmUgZWxpbWluYXRlZCBiZWNhdXNlIHRoZSB2YXJpYWJs ZSBtYXkgcmVmZXJlbmNlIGEgZGlmZmVyZW50IG9iamVjdC4KPiA+ICsod2l0aC10ZXN0ICg6bmFt ZSAoOmNzZSA6c2V0cS1vZi1sb2FkLWFyZy1wcmV2ZW50cy1jYXIpKQo+ID4gKyAgOzsgQ09OUyBp cyB0aGUgYXJndW1lbnQgdG8gQ0FSLiBBc3NpZ25pbmcgQ09OUyBiZXR3ZWVuIHR3byAoQ0FSIENP TlMpCj4gPiArICA7OyBwcmV2ZW50cyBDU0UuCj4gPiArICAoYXNzZXJ0LWNhbGxzIGNhciAyIChj b25zIG90aGVyKQo+ID4gKyAgICAoZGVjbGFyZSAodHlwZSBjb25zIGNvbnMgb3RoZXIpKQo+ID4g KyAgICAobGV0ICgoYSAoY2FyIGNvbnMpKSkKPiA+ICsgICAgICAoc2V0cSBjb25zIG90aGVyKQo+ ID4gKyAgICAgIChsZXQgKChiIChjYXIgY29ucykpKQo+ID4gKyAgICAgICAgKGxpc3QgYSBiKSkp KSkKPiA+ICsKPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6c2V0cS1vZi1sb2FkLWFyZy1w cmV2ZW50cy1jZHIpKQo+ID4gKyAgKGFzc2VydC1jYWxscyBjZHIgMiAoY29ucyBvdGhlcikKPiA+ ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zIG90aGVyKSkKPiA+ICsgICAgKGxldCAoKGEg KGNkciBjb25zKSkpCj4gPiArICAgICAgKHNldHEgY29ucyBvdGhlcikKPiA+ICsgICAgICAobGV0 ICgoYiAoY2RyIGNvbnMpKSkKPiA+ICsgICAgICAgIChsaXN0IGEgYikpKSkpCj4gPiArCj4gPiAr KHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOnNldHEtb2YtbG9hZC1hcmctcHJldmVudHMtaW5zdGFu Y2UtcmVmKSkKPiA+ICsgIDs7IEFzc2lnbmluZyB0aGUgc3RydWN0IHZhcmlhYmxlIGJldHdlZW4g dHdvIHJlYWRzIG9mIHRoZSBzYW1lIHNsb3QgcHJldmVudHMgQ1NFLgo+ID4gKyAgKGFzc2VydC1j YWxscyBzYi1rZXJuZWw6JWluc3RhbmNlLXJlZiAyICh4IHkpCj4gPiArICAgIChsZXQgKCh4ICh0 cnVseS10aGUgY3NlLXRlc3QtZm9vIHgpKQo+ID4gKyAgICAgICAgICAoeSAodHJ1bHktdGhlIGNz ZS10ZXN0LWZvbyB5KSkpCj4gPiArICAgICAgKGxldCAoKGEgKGNzZS10ZXN0LWZvby1zbG90IHgp KSkKPiA+ICsgICAgICAgIChzZXRxIHggeSkKPiA+ICsgICAgICAgIChsZXQgKChiIChjc2UtdGVz dC1mb28tc2xvdCB4KSkpCj4gPiArICAgICAgICAgIChsaXN0IGEgYikpKSkpKQo+ID4gKwo+ID4g Kyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpzZXRxLW9mLWxvYWQtYXJnLXByZXZlbnRzLXNhcC1y ZWYpKQo+ID4gKyAgOzsgQXNzaWduaW5nIHRoZSBTQVAgdmFyaWFibGUgYmV0d2VlbiB0d28gcmVh ZHMgYXQgdGhlIHNhbWUgb2Zmc2V0Cj4gPiArICA7OyBtdXN0IHByZXZlbnQgQ1NFIHNpbmNlIHRo ZSBzZWNvbmQgcmVhZCBtYXkgdXNlIGEgZGlmZmVyZW50IFNBUC4KPiA+ICsgIChhc3NlcnQtY2Fs bHMgc2Itc3lzOnNhcC1yZWYtMzIgMiAoc2FwMSBzYXAyIG9mZnNldCkKPiA+ICsgICAgKGRlY2xh cmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwMSBzYXAyKQo+ID4gKyAgICAg ICAgICAgICAodHlwZSBzYi12bTp3b3JkIG9mZnNldCkpCj4gPiArICAgIChsZXQgKChhIChzYi1z eXM6c2FwLXJlZi0zMiBzYXAxIG9mZnNldCkpKQo+ID4gKyAgICAgIChzZXRxIHNhcDEgc2FwMikK PiA+ICsgICAgICAobGV0ICgoYiAoc2Itc3lzOnNhcC1yZWYtMzIgc2FwMSBvZmZzZXQpKSkKPiA+ ICsgICAgICAgIChsaXN0IGEgYikpKSkpCj4gPiArCj4gPiArOzs7IFNFVFEgb2YgYW4gKnVucmVs YXRlZCogdmFyaWFibGUgc2hvdWxkIE5PVCBwcmV2ZW50IENTRS4KPiA+ICs7OzsgT25seSBtdXRh dGlvbnMgb2YgdmFyaWFibGVzIHRoYXQgcGFydGljaXBhdGUgaW4gdGhlIGxvYWQgbWF0dGVyLgo+ ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpzZXRxLW9mLXVucmVsYXRlZC12YXItYWxsb3dz LWNzZSkpCj4gPiArICA7OyBaIGlzIG5vdCBhbiBhcmd1bWVudCB0byBDQVIsIHNvIHNldHRpbmcg WiBkb2VzIG5vdCBpbmhpYml0IENTRS4KPiA+ICsgIChhc3NlcnQtY2FsbHMgY2FyIDEgKGNvbnMg eikKPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ICsgICAgKGxldCAoKGEg KGNhciBjb25zKSkpCj4gPiArICAgICAgKHNldHEgeiBhKQo+ID4gKyAgICAgIChsZXQgKChiIChj YXIgY29ucykpKQo+ID4gKyAgICAgICAgKGxpc3QgeiBiKSkpKSkKPiA+ICsKPiA+ICs7OzsgU0It VEhSRUFEOkJBUlJJRVIgb2YgYW55IGtpbmQgcHJldmVudHMgZWxpc2lvbiBvZiB0aGUgc2Vjb25k IGxvYWQKPiA+ICs7Ozsgc2luY2UgdGhlIG1lbW9yeSBiYXJyaWVycyBpcyBub3QgZmx1c2hhYmxl LiBUaGlzIGlzIHRoZSBjb25zZXJ2YXRpdmUgc3RhbmNlLgo+ID4gKzs7OyBUaGUgYWN0dWFsIChs b29zZXIpIHJlcXVpcmVtZW50cyBhcmUgbW9yZSBzdWJ0bGUgdGhhbiBJIGNhcmUgdG8gZGVhbCB3 aXRoLgo+ID4gKyhkZWZtYWNybyBiYXJyaWVyLXRlc3QgKGtpbmQpCj4gPiArICBgKHdpdGgtdGVz dCAoOm5hbWUgKDpjc2UgOmJhcnJpZXItcHJldmVudHMtY2FyICxraW5kKSkKPiA+ICsgICAgIChh c3NlcnQtY2FsbHMgY2FyIDIgKGNvbnMpCj4gPiArICAgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBj b25zKSkKPiA+ICsgICAgICAobGV0ICgoYSAoY2FyIGNvbnMpKSkKPiA+ICsgICAgICAgIChzYi10 aHJlYWQ6YmFycmllciAoLGtpbmQpKQo+ID4gKyAgICAgICAgKGxldCAoKGIgKGNhciBjb25zKSkp Cj4gPiArICAgICAgICAgIChsaXN0IGEgYikpKSkpKQo+ID4gKyhiYXJyaWVyLXRlc3QgOnJlYWQp Cj4gPiArKGJhcnJpZXItdGVzdCA6d3JpdGUpCj4gPiArKGJhcnJpZXItdGVzdCA6bWVtb3J5KQo+ ID4gKyhiYXJyaWVyLXRlc3QgOmNvbXBpbGVyKQo+ID4gKyhiYXJyaWVyLXRlc3QgOmRhdGEtZGVw ZW5kZW5jeSkKPiA+ICsKPiA+ICs7OzsgQW55IG5vbi1mbHVzaGFibGUgY2FsbCBiZXR3ZWVuIHR3 byBpZGVudGljYWwgbG9hZHMgcHJldmVudHMgQ1NFCj4gPiArOzs7IGJlY2F1c2UgdGhlIGNhbGwg bWF5IGhhdmUgc2lkZSBlZmZlY3RzIHRoYXQgbW9kaWZ5IHRoZSBsb2FkZWQgbWVtb3J5Lgo+ID4g Kwo+ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpub24tZmx1c2hhYmxlLWNhbGwtcHJldmVu dHMtY3NlKSkKPiA+ICsgIDs7IFBSSU5DIGlzIGEgbm9uLWZsdXNoYWJsZQo+ID4gKyAgKGFzc2Vy dC1jYWxscyBjYXIgMiAoY29ucykKPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkK PiA+ICsgICAgKGxldCAoKGEgKGNhciBjb25zKSkpCj4gPiArICAgICAgKHByaW5jIDQyKQo+ID4g KyAgICAgIChsZXQgKChiIChjYXIgY29ucykpKQo+ID4gKyAgICAgICAgKGxpc3QgYSBiKSkpKSkK PiA+ICsKPiA+ICs7OzsgRGlmZmVyZW50IGZ1bmN0aW9ucyBvbiB0aGUgc2FtZSBvYmplY3QgYXJl IE5PVCBjb25zaWRlcmVkIGNvbW1vbiBzdWJleHByZXNzaW9ucy4KPiA+ICs7OzsgKENBUiB4KSBh bmQgKENEUiB4KSBhcmUgZGlmZmVyZW50IGxvYWRzIGV2ZW4gaWYgeCBpcyB0aGUgc2FtZS4KPiA+ ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6ZGlmZmVyZW50LWFjY2Vzc29ycy1ub3QtY3NlKSkK PiA+ICsgIDs7IEJvdGggQ0FSIGFuZCBDRFIgc2hvdWxkIGFwcGVhciwgZWFjaCBleGFjdGx5IG9u Y2UuCj4gPiArICAoYXNzZXJ0LWNhbGxzIGNhciAxIChjb25zKQo+ID4gKyAgICAoZGVjbGFyZSAo dHlwZSBjb25zIGNvbnMpKQo+ID4gKyAgICAoaWYgKGNhciBjb25zKQo+ID4gKyAgICAgICAgKHBy aW5jIChjZHIgY29ucykpCj4gPiArICAgICAgICBuaWwpKQo+ID4gKyAgKGFzc2VydC1jYWxscyBj ZHIgMSAoY29ucykKPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ICsgICAg KGlmIChjYXIgY29ucykKPiA+ICsgICAgICAgIChwcmluYyAoY2RyIGNvbnMpKQo+ID4gKyAgICAg ICAgbmlsKSkpCj4gPiBkaWZmIC0tZ2l0IGEveHBlcmZlY3RoYXNoMzAubGlzcC1leHByIGIveHBl cmZlY3RoYXNoMzAubGlzcC1leHByCj4gPiBpbmRleCA2YTUwM2FjZjAuLjFiNzIyN2M3OCAxMDA2 NDQKPiA+IC0tLSBhL3hwZXJmZWN0aGFzaDMwLmxpc3AtZXhwcgo+ID4gKysrIGIveHBlcmZlY3Ro YXNoMzAubGlzcC1leHByCj4gPiBAQCAtMTUwNiw2ICsxNTA2LDkgQEAKPiA+ICAoIygxMEJFNzI3 NyAxMjIxNEFFOCAxMkUyQ0JEQSAxOTczOTUzOSAxRjM1NTZDNyAxRjY0NDM4NykKPiA+ICAgIihJ TlRFR0VSIEJJR05VTSBTQi1WTTo6VU5TSUdORUQtQllURS0zMSBTQi1WTTo6U0lHTkVELUJZVEUt MzIgRklYTlVNIFNCLVZNOjpQT1NJVElWRS1GSVhOVU0pIgo+ID4gICAiKCgmICheIHZhbCAoPj4g dmFsIDIyKSkgNykpIikKPiA+ICsoIygxMEQyRUE0RSAxMjI0QzU1NyAxNUE1OEQ4NSAxNUI1QTJC NSAxNzUyNEE3OCAxNzY5RTQxOSAxODkwNkQwOCkKPiA+ICsgIihTQi1DOjpDU0VUIFNCLUM6OlJF RiBERUxBWSBTQi1DOjpBUlJBWS1JTkRFWC1DQVNUIENBU1QgU0ItQzo6Q09NQklOQVRJT04gU0It Qzo6Q0lGKSIKPiA+ICsgIigoJiAoKyAoPj4gdmFsIDEpICg+PiB2YWwgOSkpIDcpKSIpCj4gPiAg KCMoMTBEMkVBNEUgMTIyNEM1NTcgMTVBNThEODUgMTVCNUEyQjUgMTc1MjRBNzggMTc2OUU0MTkg MTg5MDZEMDggMTk1Nzc1MzkgMUMwNjVDQjggMUQ2NkM5MzIpCj4gPiAgICIjKCgoOlRZUEUgU0It Qzo6UkVGKSkgKCg6VFlQRSBTQi1DOjpDT01CSU5BVElPTikpICgoOlRZUEUgU0ItQzo6Q0lGKSkg KCg6VFlQRSBTQi1DOjpDUkVUVVJOKSkgKCg6VFlQRSBTQi1DOjpNVi1DT01CSU5BVElPTikpICgo OlRZUEUgRVhJVCkpICgoOlRZUEUgU0ItQzo6Q1NFVCkpICgoOlRZUEUgREVMQVkpICg6VFlQRSBT Qi1DOjpBUlJBWS1JTkRFWC1DQVNUKSAoOlRZUEUgQ0FTVCkpKSIKPiA+ICAgIigobGV0ICgodGFi ICNhKCg4KSAodW5zaWduZWQtYnl0ZSA4KSAwIDUgMiA4IDEzIDMgMCAwKSkpCj4gPiBkaWZmIC0t Z2l0IGEveHBlcmZlY3RoYXNoNjEubGlzcC1leHByIGIveHBlcmZlY3RoYXNoNjEubGlzcC1leHBy Cj4gPiBpbmRleCA2ZWI3MjQ4NmIuLmIxYmMwMTRmYiAxMDA2NDQKPiA+IC0tLSBhL3hwZXJmZWN0 aGFzaDYxLmxpc3AtZXhwcgo+ID4gKysrIGIveHBlcmZlY3RoYXNoNjEubGlzcC1leHByCj4gPiBA QCAtNDYzLDYgKzQ2Myw5IEBACj4gPiAgKCMoOUEzMjBENCAzOUNBQTMzOSA0M0JCRUUxOCA0RDYx MzY4RiA1MzIyMkRGQiBCRkE4NjE4OSBFREExMDM3RiBGRUU5OUE5NSkKPiA+ICAgIiMoKCg6VFlQ RSBTQi1DOjpSRUYpKSAoKDpUWVBFIFNCLUM6OkNPTUJJTkFUSU9OKSkgKCg6VFlQRSBTQi1DOjpN Vi1DT01CSU5BVElPTikpICgoOlRZUEUgRVhJVCkpICgoOlRZUEUgU0ItQzo6Q1NFVCkpICgoOlRZ UEUgREVMQVkpICg6VFlQRSBTQi1DOjpBUlJBWS1JTkRFWC1DQVNUKSAoOlRZUEUgQ0FTVCkpKSIK PiA+ICAgIigoJiAoLSAoPj4gdmFsIDMpICg+PiB2YWwgMjkpKSA3KSkiKQo+ID4gKygjKDlBMzIw RDQgMzlDQUEzMzkgNDNCQkVFMTggNTMyMjJERkIgOTM4MDgzN0MgQkZBODYxODkgRkVFOTlBOTUp Cj4gPiArICIjKCgoOlRZUEUgU0ItQzo6Q0lGKSAoOlRZUEUgU0ItQzo6Q09NQklOQVRJT04pICg6 VFlQRSBERUxBWSkgKDpUWVBFIFNCLUM6OkFSUkFZLUlOREVYLUNBU1QpICg6VFlQRSBDQVNUKSAo OlRZUEUgU0ItQzo6UkVGKSAoOlRZUEUgU0ItQzo6Q1NFVCkpKSIKPiA+ICsgIigoJiAoKyB2YWwg KD4+IHZhbCAzMSkpIDcpKSIpCj4gPiAgKCMoOUEzMjBENCA0M0JCRUUxOCA1MzIyMkRGQiBBOEE0 QzdEMiBCRkE4NjE4OSBFQUEzREE1QyBGRUU5OUE5NSkKPiA+ICAgIiMoKCg6VFlQRSBTQi1DOjpS RUYpKSAoKDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCkgKDpUWVBF IENBU1QpKSAoKDpUWVBFIFNCLUM6OkNPTUJJTkFUSU9OKSkgKCg6VFlQRSBTQi1DOjpFTlRSWSkp ICgoOlRZUEUgU0ItQzo6RU5DTE9TRSkpKSIKPiA+ICAgIigoJiAoXiAoPj4gdmFsIDcpICg+PiB2 YWwgMjMpKSA3KSkiKQo+ID4gZGlmZiAtLWdpdCBhL3hwZXJmZWN0aGFzaDYzLmxpc3AtZXhwciBi L3hwZXJmZWN0aGFzaDYzLmxpc3AtZXhwcgo+ID4gaW5kZXggY2M4NjFiYjMzLi4xM2JiNWQ4NWQg MTAwNjQ0Cj4gPiAtLS0gYS94cGVyZmVjdGhhc2g2My5saXNwLWV4cHIKPiA+ICsrKyBiL3hwZXJm ZWN0aGFzaDYzLmxpc3AtZXhwcgo+ID4gQEAgLTg3MCw2ICs4NzAsOSBAQAo+ID4gICgjKDEyMTA2 OEREIDRENjEzNjhGIDU4MTEwRTdGIDY3RUUyRDFBIDZEOUE4ODNEIDc0NTg5RDgyIDg5N0I0NjU2 IEE2OEEzOTY1KQo+ID4gICAiIygoKDpUWVBFIFNCLUM6OlJFRikpICgoOlRZUEUgU0ItQzo6Q09N QklOQVRJT04pKSAoKDpUWVBFIFNCLUM6Ok1WLUNPTUJJTkFUSU9OKSkgKCg6VFlQRSBFWElUKSkg KCg6VFlQRSBTQi1DOjpDU0VUKSkgKCg6VFlQRSBERUxBWSkgKDpUWVBFIFNCLUM6OkFSUkFZLUlO REVYLUNBU1QpICg6VFlQRSBDQVNUKSkpIgo+ID4gICAiKCgmICgtICg+PiB2YWwgNCkgKD4+IHZh bCAxNikpIDcpKSIpCj4gPiArKCMoMTIxMDY4REQgNTgxMTBFN0YgNjdFRTJEMUEgNkQ5QTg4M0Qg NzQyRDRDNTQgODk3QjQ2NTYgQTY4QTM5NjUpCj4gPiArICIjKCgoOlRZUEUgU0ItQzo6Q0lGKSAo OlRZUEUgU0ItQzo6Q09NQklOQVRJT04pICg6VFlQRSBERUxBWSkgKDpUWVBFIFNCLUM6OkFSUkFZ LUlOREVYLUNBU1QpICg6VFlQRSBDQVNUKSAoOlRZUEUgU0ItQzo6UkVGKSAoOlRZUEUgU0ItQzo6 Q1NFVCkpKSIKPiA+ICsgIigoJiAoLSAoPj4gdmFsIDQpICg+PiB2YWwgMTYpKSA3KSkiKQo+ID4g ICgjKDEyNkFEQjAyIDMxQjA5NUREIDQyRDgzRkZCIDQzNDFGN0Q4IDYzQzk3MUQ3IDdBODBGMjAx IDdCNDA4ODgwIDhGNzkxMkQ2IEVCRDAxODcyKQo+ID4gICAiKDpBTExPVy1PVEhFUi1LRVlTIDpU WVBFIDpSRVNVTFQtU1BFQ1MgOkFSRy1TUEVDUyA6Q0FMTEVSIDpERVBTIDpGSVJFRCA6TEVYRU5W IDpTT1VSQ0UtUEFUSCkiCj4gPiAgICIoKGxldCAoKHRhYiAjYSgoOCkgKHVuc2lnbmVkLWJ5dGUg OCkgMCA1IDAgMyAwIDUgMTIgNikpKQo+ID4KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPgo+ID4KPiA+ IGhvb2tzL3Bvc3QtcmVjZWl2ZQo+ID4gLS0KPiA+IFNCQ0wKPiA+Cj4gPgo+ID4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IFNiY2wtY29tbWl0cyBt YWlsaW5nIGxpc3QKPiA+IFNiY2wtY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKPiA+IGh0 dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3NiY2wtY29tbWl0cwoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClNiY2wtY29t bWl0cyBtYWlsaW5nIGxpc3QKU2JjbC1jb21taXRzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRw czovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9zYmNsLWNvbW1pdHMK