Re: master: Perform local common subexpression elimination for some memory loads
Stas Boukarev <[email protected]> Tue, 4 Aug 2026 17:55:28 +0300
| Newsgroups | gmane.lisp.steel-bank.cvs,gmane.lisp.steel-bank.devel |
|---|---|
| Message-ID | <CAF63=11iVp1yqOah06dbGHO7mNjnRhRLDu3g2s8jEj_y3tDBLg@mail.gmail.com> |
KGRlZnVuIHRlc3QgKHkgbGlzdCkKICAoZGVjbGFyZSAob3B0aW1pemUgKGRlYnVnIDEpKSkKICAo bGV0ICgoeSAoMSsgeSkpKQogICAgKHZhbHVlcyB5IHkKICAgICAgICAgICAgKGxldCAoKGl0ZW0g KGNhciBsaXN0KSkpCiAgICAgICAgICAgICAgKGFkam9pbiBpdGVtIChjYXIgbGlzdCkgOnRlc3Qg J2VxdWFsKSkpKSkKPT4KOyBjYXVnaHQgV0FSTklORzoKOyAgIFRoZSBmdW5jdGlvbiBFUVVBTCBp cyBjYWxsZWQgYnkgQURKT0lOIHdpdGggKE5JTCBUKSBidXQgaXQgYWNjZXB0cyAoVCBUKS4KCk9u IFR1ZSwgQXVnIDQsIDIwMjYgYXQgNzoxN+KAr0FNIFN0YXMgQm91a2FyZXYgPHN0YXNzYXRzQGdt YWlsLmNvbT4gd3JvdGU6Cj4KPiAoZGVmdW4gajIgKHggbikKPiAgIChkZWNsYXJlIChvcHRpbWl6 ZSAoZGVidWcgMCkpKQo+ICAgKGxldCAoKHkgKDErIHgpKSkKPiAgICAgKGxpc3QgKDErIChjYXIg bikpCj4gICAgICAgICAgIChjYXIgbikKPiAgICAgICAgICAgKGNkciBuKQo+ICAgICAgICAgICB5 IHkpKSkKPiBpbmNyZWFzZXMgc3RhY2sgdXNhZ2UgZHVlIHRvIGhhdmluZyB0byBzYXZlIHRoZSBu ZXcgc2hhcmVkIHZhcmlhYmxlIG9uCj4gdGhlIHN0YWNrLgo+Cj4gT24gVHVlLCBBdWcgNCwgMjAy NiBhdCA3OjA04oCvQU0gU3RhcyBCb3VrYXJldiA8c3Rhc3NhdHNAZ21haWwuY29tPiB3cm90ZToK PiA+Cj4gPiAoZGVmdW4gayAoeCBuKQo+ID4gICAobGV0ICgoeSAoMSsgeCkpKQo+ID4gICAgICh2 YWx1ZXMgeSB5Cj4gPiAgICAgICAgICAgICAoZXEgKGNhciAoY29weS10cmVlIG4pKQo+ID4gICAg ICAgICAgICAgICAgIChjYXIgKGNvcHktdHJlZSBuKSkpKSkpCj4gPiA9Pgo+ID4gKGsgMSAnKCgx KSkpCj4gPiA9Pgo+ID4gMgo+ID4gMgo+ID4gVAo+ID4KPiA+IE9uIFR1ZSwgQXVnIDQsIDIwMjYg YXQgNjo0N+KAr0FNIFN0YXMgQm91a2FyZXYgPHN0YXNzYXRzQGdtYWlsLmNvbT4gd3JvdGU6Cj4g PiA+Cj4gPiA+IChkZWZ1biBqICh4KQo+ID4gPiAgIChsZXQgKCh5ICgxKyB4KSkpCj4gPiA+ICAg ICAodmFsdWVzIHkgeQo+ID4gPiAgICAgICAgICAgICAoY2FyICopCj4gPiA+ICAgICAgICAgICAg IChzZXRmICogJyhiKSkKPiA+ID4gICAgICAgICAgICAgKGNhciAqKSkpKQo+ID4gPiAobGV0ICgo KiAnKGEpKSkgKGogMSkpCj4gPiA+ID0+Cj4gPiA+IDIKPiA+ID4gMgo+ID4gPiBBCj4gPiA+IChC KQo+ID4gPiBBCj4gPiA+Cj4gPiA+IE9uIFR1ZSwgQXVnIDQsIDIwMjYgYXQgNDoyMuKAr0FNIFN0 YXMgQm91a2FyZXYgPHN0YXNzYXRzQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPiA+ID4KPiA+ID4gPiAo ZGVmc3RydWN0IHMKPiA+ID4gPiAgICh4IChtYWtlLWFycmF5IDMpKSkKPiA+ID4gPgo+ID4gPiA+ IChsZXQgKCopCj4gPiA+ID4gICAobGFtYmRhICgpCj4gPiA+ID4gICAgIChsZXQqICgocyAjLiht YWtlLXMpKQo+ID4gPiA+ICAgICAgICAgICAgKGEgKHMteCBzKSkKPiA+ID4gPiAgICAgICAgICAg IChiIChzLXggcykpKQo+ID4gPiA+ICAgICAgICh2YWx1ZXMgKGFyZWYgYSAwKQo+ID4gPiA+ICAg ICAgICAgICAgICAgKGFyZWYgYiAwKSkpKSkKPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gZGVidWdn ZXIgaW52b2tlZCBvbiBhIFNCLUlOVDpCVUcgQEI4MDA3Qjg1QUQgaW4gdGhyZWFkCj4gPiA+ID4g IzxUSFJFQUQgdGlkPTE5ODY0MDIgIm1haW4gdGhyZWFkIiBSVU5OSU5HIHsxMjAxNEYwMDAzfT46 Cj4gPiA+ID4gICAgIGZhaWxlZCBBVkVSOiAoRVEgRU5WIChMQU1CREEtRU5WSVJPTk1FTlQgKExB TUJEQS1WQVItSE9NRSBUSElORykpKQo+ID4gPiA+Cj4gPiA+ID4gT24gVHVlLCBBdWcgNCwgMjAy NiBhdCAzOjU54oCvQU0gc251Z2xhcyB2aWEgU2JjbC1jb21taXRzCj4gPiA+ID4gPHNiY2wtY29t bWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+IHdyb3RlOgo+ID4gPiA+ID4KPiA+ID4gPiA+IFRo ZSBicmFuY2ggIm1hc3RlciIgaGFzIGJlZW4gdXBkYXRlZCBpbiBTQkNMOgo+ID4gPiA+ID4gICAg ICAgIHZpYSAgMTAwYzljMmJkY2RjYjg0ZmYwNGM4ZmVlZjk4M2E1YjQ0Njk1Yzk3YSAoY29tbWl0 KQo+ID4gPiA+ID4gICAgICAgZnJvbSAgYjU0MWYyZjI1YjE0YjYyZmNhYjdlMTRhYTUxMjRkYjVk ZDFkNmIyMCAoY29tbWl0KQo+ID4gPiA+ID4KPiA+ID4gPiA+IC0gTG9nIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ ID4gPiBjb21taXQgMTAwYzljMmJkY2RjYjg0ZmYwNGM4ZmVlZjk4M2E1YjQ0Njk1Yzk3YQo+ID4g PiA+ID4gQXV0aG9yOiBEb3VnbGFzIEthdHptYW4gPGRvdWdrQGdvb2dsZS5jb20+Cj4gPiA+ID4g PiBEYXRlOiAgIFR1ZSBBdWcgNCAwMDo1ODoyMSAyMDI2ICswMDAwCj4gPiA+ID4gPgo+ID4gPiA+ ID4gICAgIFBlcmZvcm0gbG9jYWwgY29tbW9uIHN1YmV4cHJlc3Npb24gZWxpbWluYXRpb24gZm9y IHNvbWUgbWVtb3J5IGxvYWRzCj4gPiA+ID4gPgo+ID4gPiA+ID4gICAgIFRoZSB0ZWNobmlxdWUg aXMgdG8gZmluZCAiZXF1aXZhbGVudCIgbG9hZHMgaW4gYmV0d2VlbiB3aGljaCB0aGVyZSBpcyBu bwo+ID4gPiA+ID4gICAgIGNvbXB1dGF0aW9uIHRoYXQgYWZmZWN0cyB0aGUgcmVzdWx0IG9mIHRo ZSBsb2FkLiBBbHNvIGl0IG5lZWRzIGEgc3Vycm91bmRpbmcKPiA+ID4gPiA+ICAgICBMRVQsIHdo aWNoIGlzIGF1Z21lbnRlZCB3aXRoIGEgbmV3IHRlbXAgdmFyaWFibGUgYXMgaWYgdGhlIHVzZXIg ZGlkIHRoYXQuCj4gPiA+ID4gPiAgICAgVGhpcyBpcyBzbGlnaHRseSBkZWZpY2llbnQgZm9yIHZh cmlvdXMgcmVhc29uczoKPiA+ID4gPiA+ICAgICAxLiBpdCB3b24ndCBkbyBhbnl0aGluZyB3aXRo b3V0IHRoZSBMRVQKPiA+ID4gPiA+ICAgICAyLiB0aGUgbW9yZSBraW5kcyBvZiBjb21tb24gc3Vi ZXhwcmVzc2lvbnMgd2UgYWxsb3cgKHN1Y2ggYXMgbWF0aCksCj4gPiA+ID4gPiAgICAgICAgdGhl IHNsb3dlciBJUjEtT1BUSU1JWkUtQ09NQklOQVRJT04gaXMgZ29pbmcgdG8gcnVuCj4gPiA+ID4g PiAgICAgMy4gdGhlcmUgYXJlIHBvc3NpYmx5IG90aGVyIG5vZGUgdHlwZXMgdGhhdCBzaG91bGQg YmUgYWxsb3dlZCB0byBpbnRlcnZlbmUKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgICAgT24gdGhlIHBs dXMgc2lkZSwgaXQncyBub3QgYWxsIHRoYXQgaGFyZCB0byBleHRlbmQgdGhlIGxvZ2ljIHRvIGFj Y2VwdAo+ID4gPiA+ID4gICAgIG90aGVyIGZ1bmN0aW9ucyBhcyBwYXJ0aWNpcGFudHMgaW4gY29t bW9uIHN1YmV4cHJlc3Npb25zLgo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICBBbGwgdGVzdCBjYXNl cyBwbHVzIGEgbGl0dGxlIGJpdCBvZiBhc3Npc3RhbmNlIGZyb20gR2VtaW5pCj4gPiA+ID4gPiAt LS0KPiA+ID4gPiA+ICBzcmMvY29tcGlsZXIvaXIxb3B0Lmxpc3AgfCAxNzkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiAgdGVzdHMvbGNzZS5wdXJlLmxpc3Ag ICAgIHwgMjM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gPiA+ID4gPiAgeHBlcmZlY3RoYXNoMzAubGlzcC1leHByIHwgICAzICsKPiA+ID4gPiA+ICB4 cGVyZmVjdGhhc2g2MS5saXNwLWV4cHIgfCAgIDMgKwo+ID4gPiA+ID4gIHhwZXJmZWN0aGFzaDYz Lmxpc3AtZXhwciB8ICAgMyArCj4gPiA+ID4gPiAgNSBmaWxlcyBjaGFuZ2VkLCA0MjIgaW5zZXJ0 aW9ucygrKQo+ID4gPiA+ID4KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvaXIx b3B0Lmxpc3AgYi9zcmMvY29tcGlsZXIvaXIxb3B0Lmxpc3AKPiA+ID4gPiA+IGluZGV4IDg1NTk4 MjRmMS4uZGFjMzkzZTMxIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvc3JjL2NvbXBpbGVyL2lyMW9w dC5saXNwCj4gPiA+ID4gPiArKysgYi9zcmMvY29tcGlsZXIvaXIxb3B0Lmxpc3AKPiA+ID4gPiA+ IEBAIC0xMjIwLDYgKzEyMjAsMTgyIEBACj4gPiA+ID4gPiAgICAgICAgICAgICAgKHNob3ctdHlw ZS1kZXJpdmF0aW9uIGNvbWJpbmF0aW9uIHJlcykpCj4gPiA+ID4gPiAgICAgICAgICAgIChjb2Vy Y2UtdG8tdmFsdWVzIHJlcykpKSkpKQo+ID4gPiA+ID4KPiA+ID4gPiA+ICsoZGVmdW4gY29sbGVj dC1sdmFyLXZhcnMgKGx2YXIpCj4gPiA+ID4gPiArICAoZGVjbGFyZSAodHlwZSBsdmFyIGx2YXIp KQo+ID4gPiA+ID4gKyAgKGxldCAoKHVzZSAocHJpbmNpcGFsLWx2YXItdXNlIGx2YXIpKSkKPiA+ ID4gPiA+ICsgICAgKGNvbmQgKChyZWYtcCB1c2UpCj4gPiA+ID4gPiArICAgICAgICAgICAobGV0 ICgobGVhZiAocmVmLWxlYWYgdXNlKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICh3aGVuIChs YW1iZGEtdmFyLXAgbGVhZikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAobGlzdCBsZWFmKSkp KQo+ID4gPiA+ID4gKyAgICAgICAgICAoKGNvbWJpbmF0aW9uLXAgdXNlKQo+ID4gPiA+ID4gKyAg ICAgICAgICAgKG1hcGNhbiAjJ2NvbGxlY3QtbHZhci12YXJzIChiYXNpYy1jb21iaW5hdGlvbi1h cmdzIHVzZSkpKQo+ID4gPiA+ID4gKyAgICAgICAgICAodCBuaWwpKSkpCj4gPiA+ID4gPiArCj4g PiA+ID4gPiArKGRlZnVuIGZpbmQtYWN0aXZlLWxldC1sYW1iZGEgKG5vZGUpCj4gPiA+ID4gPiAr ICAoZGVjbGFyZSAodHlwZSBub2RlIG5vZGUpKQo+ID4gPiA+ID4gKyAgKGxvb3AgZm9yIGVudiA9 IChub2RlLWxleGVudiBub2RlKSB0aGVuIChsZXhlbnYtcGFyZW50IGVudikKPiA+ID4gPiA+ICsg ICAgICAgIHdoaWxlIGVudgo+ID4gPiA+ID4gKyAgICAgICAgZG8gKGxldCAoKGwgKGxleGVudi1s YW1iZGEgZW52KSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICh3aGVuIChhbmQgbAo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbmFsLWtpbmQtZXEgbCBsZXQpCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZnVuY3Rpb25hbC1raW5kLWVx IGwgem9tYmllKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgKHJldHVybiBsKSkpKSkKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsoZGVmdW4gYWRkLXZhcmlhYmxlLXRvLWxldC1sYW1iZGEgKGxl dC1sYW1iZGEgdikKPiA+ID4gPiA+ICsgIChkZWNsYXJlICh0eXBlIGNsYW1iZGEgbGV0LWxhbWJk YSkKPiA+ID4gPiA+ICsgICAgICAgICAgICh0eXBlIGxhbWJkYS12YXIgdikpCj4gPiA+ID4gPiAr ICAoc2V0ZiAobGFtYmRhLXZhci1ob21lIHYpIGxldC1sYW1iZGEpCj4gPiA+ID4gPiArICAoc2V0 ZiAobGFtYmRhLXZhcnMgbGV0LWxhbWJkYSkgKGFwcGVuZCAobGFtYmRhLXZhcnMgbGV0LWxhbWJk YSkgKGxpc3QgdikpKQo+ID4gPiA+ID4gKyAgOzsgVXBkYXRlIHRoZSBjYWxsIHRvIHRoZSBMRVQg bGFtYmRhCj4gPiA+ID4gPiArICAobGV0KiAoKHJlZiAoY2FyIChsZWFmLXJlZnMgbGV0LWxhbWJk YSkpKQo+ID4gPiA+ID4gKyAgICAgICAgIChjYWxsIChhbmQgcmVmCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAobm9kZS1sdmFyIHJlZikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgIChsdmFyLWRlc3QgKG5vZGUtbHZhciByZWYpKSkpKQo+ID4gPiA+ID4gKyAgICAod2hlbiAo YW5kIGNhbGwgKGNvbWJpbmF0aW9uLXAgY2FsbCkpCj4gPiA+ID4gPiArICAgICAgKGxldCAoKGR1 bW15LWx2YXIgKG1ha2UtbHZhcikpKQo+ID4gPiA+ID4gKyAgICAgICAgKHNldGYgKGx2YXItZGVz dCBkdW1teS1sdmFyKSBjYWxsKQo+ID4gPiA+ID4gKyAgICAgICAgKHNldGYgKGJhc2ljLWNvbWJp bmF0aW9uLWFyZ3MgY2FsbCkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgIChhcHBlbmQgKGJhc2lj LWNvbWJpbmF0aW9uLWFyZ3MgY2FsbCkgKGxpc3QgZHVtbXktbHZhcikpKQo+ID4gPiA+ID4gKyAg ICAgICAgKHNldGYgKGx2YXItZGVzdCBkdW1teS1sdmFyKSBjYWxsKSkpKSkKPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICs7OyBSZXVzZSBvZiBTWU1CT0wtVkFMVUUgb2YgYSBzcGVjaWFsIHZhciB3b3Vs ZCBiZSBuaWNlLAo+ID4gPiA+ID4gKzs7IGJ1dCBTWU1CT0wtVkFMVUUgaXQgaXMgbm90IHJlcHJl c2VudGVkIGFzIGEgY2FsbCBpbiBJUjEKPiA+ID4gPiA+ICsoZGVmaW5lLWxvYWQtdGltZS1nbG9i YWwgKmVsaWRhYmxlLW1lbW9yeS1sb2FkcyoKPiA+ID4gPiA+ICsgICAgJyhjYXIgY2RyICVpbnN0 YW5jZS1yZWYgJXJhdy1pbnN0YW5jZS1yZWYvd29yZCAlcmF3LWluc3RhbmNlLXJlZi9zaWduZWQt d29yZAo+ID4gPiA+ID4gKyAgICAgIHNhcC1yZWYtMTYgc2lnbmVkLXNhcC1yZWYtMTYgc2Itc3lz Ojolc2FwLXJlZi0xNi1pbmRleGVkIHNiLXN5czo6JXNpZ25lZC1zYXAtcmVmLTE2LWluZGV4ZWQK PiA+ID4gPiA+ICsgICAgICBzYXAtcmVmLTMyIHNpZ25lZC1zYXAtcmVmLTMyIHNiLXN5czo6JXNh cC1yZWYtMzItaW5kZXhlZCBzYi1zeXM6OiVzaWduZWQtc2FwLXJlZi0zMi1pbmRleGVkCj4gPiA+ ID4gPiArICAgICAgc2FwLXJlZi02NCBzaWduZWQtc2FwLXJlZi02NCBzYi1zeXM6OiVzYXAtcmVm LTY0LWluZGV4ZWQgc2Itc3lzOjolc2lnbmVkLXNhcC1yZWYtNjQtaW5kZXhlZAo+ID4gPiA+ID4g KyAgICAgIHNiLWFsaWVuOmRlcmVmCj4gPiA+ID4gPiArICAgICAgc2ItYWxpZW46YWxpZW4tc2Fw KSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICs7OzsgTG9vayBmb3IgYW55IG5vZGUgZXF1aXZhbGVu dCB0byBNQVRDSCBjb25zZGVyaW5nIG5vZGVzIGluIHJldmVyc2Ugc3RhcnRpbmcgYXQgRlJPTS4K PiA+ID4gPiA+ICs7OzsgTWVtb3J5IGxvYWRzIGZyb20gdGhlIHNhbWUgb2JqZWN0K3Nsb3Qgb3Ig U0FQK29mZnNldCBjb3VsZCBiZSBlcXVpdmFsZW50Lgo+ID4gPiA+ID4gKzs7OyBOb3RoaW5nIGVs c2UgY2FuIGJlIGVxdWl2YWxlbnQgKHVudGlsIEkgZW5oYW5jZSB0aGlzKQo+ID4gPiA+ID4gKyhk ZWZ1biBmaW5kLWVxdWl2YWxlbnQtbm9kZS1iYWNrd2FyZHMgKG1hdGNoIGZyb20pCj4gPiA+ID4g PiArICAobGFiZWxzICgobHZhci1lcXVpdmFsZW50LXAgKGwxIGwyKQo+ID4gPiA+ID4gKyAgICAg ICAgICAgICAoZGVjbGFyZSAodHlwZSBsdmFyIGwxIGwyKSkKPiA+ID4gPiA+ICsgICAgICAgICAg ICAgKGNvbmQgKChlcSBsMSBsMikgdCkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgKChh bmQgKGNvbnN0YW50LWx2YXItcCBsMSkgKGNvbnN0YW50LWx2YXItcCBsMikpCj4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAoZXFsIChsdmFyLXZhbHVlIGwxKSAobHZhci12YWx1ZSBsMikp KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAodAo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgKGxldCAoKHUxIChwcmluY2lwYWwtbHZhci11c2UgbDEpKQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKHUyIChwcmluY2lwYWwtbHZhci11c2UgbDIpKSkKPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChhbmQgKHJlZi1wIHUxKSAocmVm LXAgdTIpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxIChyZWYt bGVhZiB1MSkgKHJlZi1sZWFmIHUyKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoYW5kIChjb21iaW5hdGlvbi1wIHUxKSAoY29tYmluYXRpb24tcCB1MikKPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxIChiYXNpYy1jb21iaW5h dGlvbi1raW5kIHUxKSA6a25vd24pCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChlcSAoYmFzaWMtY29tYmluYXRpb24ta2luZCB1MikgOmtub3duKSkKPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21iaW5hdGlvbi1lcXVpdmFsZW50 LXAgdTEgdTIpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCBuaWwp KSkpKSkKPiA+ID4gPiA+ICsgICAgICAgICAgIChjb21iaW5hdGlvbi1lcXVpdmFsZW50LXAgKGMx IGMyKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAoZGVjbGFyZSAodHlwZSBjb21iaW5hdGlvbiBj MSBjMikpCj4gPiA+ID4gPiArICAgICAgICAgICAgIChhbmQgKGVxIChiYXNpYy1jb21iaW5hdGlv bi1mdW4taW5mbyBjMSkgKGJhc2ljLWNvbWJpbmF0aW9uLWZ1bi1pbmZvIGMyKSkKPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAobGV0ICgoYXJnczEgKGJhc2ljLWNvbWJpbmF0aW9uLWFyZ3Mg YzEpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIChhcmdzMiAoYmFzaWMtY29t YmluYXRpb24tYXJncyBjMikpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKGFuZCAo PSAobGVuZ3RoIGFyZ3MxKSAobGVuZ3RoIGFyZ3MyKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgKGV2ZXJ5ICMnbHZhci1lcXVpdmFsZW50LXAgYXJnczEgYXJnczIpKSkpKSkK PiA+ID4gPiA+ICsgICAgKGRvICgobm9kZSBmcm9tIChjdHJhbi11c2UgKG5vZGUtcHJldiBub2Rl KSkpKSAoKG51bGwgbm9kZSkpCj4gPiA+ID4gPiArICAgICAgKHdoZW4gKGFuZCAoY29tYmluYXRp b24tcCBub2RlKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgKGVxIChjb21iaW5hdGlvbi1r aW5kIG5vZGUpIDprbm93bikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgIChub2RlLWx2YXIg bm9kZSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgIChjb21iaW5hdGlvbi1lcXVpdmFsZW50 LXAgbm9kZSBtYXRjaCkpCj4gPiA+ID4gPiArICAgICAgICAocmV0dXJuIG5vZGUpKQo+ID4gPiA+ ID4gKyAgICAgICh0eXBlY2FzZSBub2RlCj4gPiA+ID4gPiArICAgICAgICAoKG9yIGNzZXQgcmVm IGNhc3QgY29tYmluYXRpb24gY2lmKSkKPiA+ID4gPiA+ICsgICAgICAgICh0Cj4gPiA+ID4gPiAr ICAgICAgICAgOzsgUmV0dXJuIDpGQUlMIHRvIGFib3J0IHF1aWNrbHkuIFRoaXMgY291bGQgY2hv b3NlIHRvIGZhaWwgaWYgYSBub24tZmx1c2hhYmxlCj4gPiA+ID4gPiArICAgICAgICAgOzsgY29t YmluYXRpb24gaXMgc2VlbiwgYnV0IGZvciBub3cgSSdtIGRlZmVycmluZyB0aGF0IHNvdW5kbmVz cyBjaGVjay4KPiA+ID4gPiA+ICsgICAgICAgICAocmV0dXJuLWZyb20gZmluZC1lcXVpdmFsZW50 LW5vZGUtYmFja3dhcmRzIDpmYWlsKSkpKSkpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArOzs7IEF0 dG1wdCB0byBmaW5kIGEgQ09NQklOQVRJT04gZXF1aXZhbGVudCB0byBUSElTIHByZWNlZGluZyBp dCBpbiBub2RlIG9yZGVyLCB0aGUgdmFsdWUKPiA+ID4gPiA+ICs7Ozsgb2Ygd2hpY2ggY2FuIGJl IHN1YnN0aXR1dGVkIGZvciB0aGUgY2FsbCB0byBUSElTLCBhY3R1YWxseSBtYWtpbmcgdGhlIHN1 YnN0aXR1dGlvbi4KPiA+ID4gPiA+ICs7OzsgTG9va2luZyBiYWNrd2FyZHMgYXQgbW9zdCBhIGZl dyBibG9ja3MgdGVuZHMgdG8gd29yayB3ZWxsIGVub3VnaCwgYW5kIGlucG9ydGFudGx5Cj4gPiA+ ID4gPiArOzs7IGxpbWl0cyB0aGUgd29yay4gU2Nhbm5pbmcgb25seSB0aGUgY3VycmVudCBibG9j ayBpcyBpbmFkZXF1YXRlIGFzIHRoZSBleGFtcGxlCj4gPiA+ID4gPiArOzs7IGluIDpMT09QLU9W RVItREVSRUYgc2hvd3MuIFRoZSBpbW1lZGlhdGUgcHJlZGVjZXNzb3IgaXMgc3RpbGwgbm90IGVu b3VnaCwgYmVjYXVzZSB0aGUKPiA+ID4gPiA+ICs7OzsgcHJlZGVjZXNzb3IgY291bGQgaGF2ZSBi ZWVuIHNwbGl0LCBsZWF2aW5nIGEgdGlueSBibG9jayB3aGVyZSB0aGUgb25seSBub2RlIGlzCj4g PiA+ID4gPiArOzs7IGEgdHJpdmlhbCBvcGVyYXRpb24uCj4gPiA+ID4gPiArKGRlZnVuIHRyeS1y ZXVzZS1leHByLXZhbHVlICh0aGlzKQo+ID4gPiA+ID4gKyAgKGRlY2xhcmUgKHR5cGUgY29tYmlu YXRpb24gdGhpcykpCj4gPiA+ID4gPiArICAoYmluZGluZyoKPiA+ID4gPiA+ICsgICAgICAoKGhv bWUtbGFtYmRhIChmaW5kLWFjdGl2ZS1sZXQtbGFtYmRhIHRoaXMpIDpleGl0LWlmLW51bGwpCj4g PiA+ID4gPiArICAgICAgIChsb29rYmFjayAwKQo+ID4gPiA+ID4gKyAgICAgICAoYzEKPiA+ID4g PiA+ICsgICAgICAgIDs7IEluIHRoaXMgYmxvY2ssIGV4cGxpY2l0bHkgZ28gYmFjayBhIG5vZGUg c28gdGhhdCBGSU5ELUJBQ0tXQVJEUyBkb2Vzbid0IGNvbnNpZGVyIFRISVMKPiA+ID4gPiA+ICsg ICAgICAgIDs7IGFzIGVxdWl2YWxlbnQgdG8gaXRzZWxmLiBGYWlsaW5nIHRoYXQsIHRyeSBwcmVk ZWNlc3NvciBibG9ja3MsIGJ1dCBvbmx5IGFzIGxvbmcgYXMKPiA+ID4gPiA+ICsgICAgICAgIDs7 IHByZWQgaXMgdW5pcXVlIHNpbmNlIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24gYWJvdXQgbm9kZXMg dGhhdCBkb21pbmF0ZSBUSElTLgo+ID4gPiA+ID4gKyAgICAgICAgKG9yIChmaW5kLWVxdWl2YWxl bnQtbm9kZS1iYWNrd2FyZHMgdGhpcyAoY3RyYW4tdXNlIChub2RlLXByZXYgdGhpcykpKQo+ID4g PiA+ID4gKyAgICAgICAgICAgIChkbyAoKHByZWQgKGJsb2NrLXByZWQgKG5vZGUtYmxvY2sgdGhp cykpKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgKChvciAoPiBsb29rYmFjayAzKSAobm90 IChzaW5nbGV0b24tcCBwcmVkKSkpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgKGluY2YgbG9v a2JhY2spCj4gPiA+ID4gPiArICAgICAgICAgICAgICAobGV0ICgobm9kZSAoYmxvY2stbGFzdCAo Y2FyIHByZWQpKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICh3aGVuIChudWxsIG5vZGUp IChyZXR1cm4pKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAoYXdoZW4gKGZpbmQtZXF1aXZh bGVudC1ub2RlLWJhY2t3YXJkcyB0aGlzIG5vZGUpIChyZXR1cm4gaXQpKQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAoc2V0cSBwcmVkIChibG9jay1wcmVkIChub2RlLWJsb2NrIG5vZGUpKSkp KSkKPiA+ID4gPiA+ICsgICAgICAgIDpleGl0LWlmLW51bGwpCj4gPiA+ID4gPiArICAgICAgICh2 YXJzIDsgY2FuJ3QgdXNlIDpleGl0LWlmLW51bGwgaGVyZSBiZWNhdXNlIFZBUlMgY2FuIGJlIGFu ZCB1c3VhbGx5IGlzIE5JTAo+ID4gPiA+ID4gKyAgICAgICAgKHVubGVzcyAoZXEgYzEgOmZhaWwp Cj4gPiA+ID4gPiArICAgICAgICAgIChtYXBjYW4gIydjb2xsZWN0LWx2YXItdmFycyAoYmFzaWMt Y29tYmluYXRpb24tYXJncyBjMSkpKSkpCj4gPiA+ID4gPiArICAgICh3aGVuIChlcSBjMSA6ZmFp bCkKPiA+ID4gPiA+ICsgICAgICAocmV0dXJuLWZyb20gdHJ5LXJldXNlLWV4cHItdmFsdWUgbmls KSkKPiA+ID4gPiA+ICsgICAgKGxhYmVscyAoKGFsbC1mbHVzaGFibGUgKGN0cmFuIGVuZC1ub2Rl KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIChkZWNsYXJlIChjdHJhbiBjdHJhbikgKHR5cGUg KG9yIG5vZGUgbnVsbCkgZW5kLW5vZGUpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIChsb29w IChsZXQgKChub2RlIChjdHJhbi1uZXh0IGN0cmFuKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAoY29uZCAoKGVxIG5vZGUgZW5kLW5vZGUpIChyZXR1cm4gdCkpCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5vdCAob2stdG8tZmx1c2ggbm9kZSkp IChyZXR1cm4gbmlsKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo YW5kIChub3QgZW5kLW5vZGUpIChub3QgKG5vZGUtbmV4dCBub2RlKSkpIChyZXR1cm4gdCkpKQo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgY3RyYW4gKG5vZGUtbmV4dCBu b2RlKSkpKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgKG9rLXRvLWZsdXNoIChub2RlKQo+ID4g PiA+ID4gKyAgICAgICAgICAgICAgIChjb25kICgoc2V0LXAgbm9kZSkgKG5vdCAobWVtYmVyIChz ZXQtdmFyIG5vZGUpIHZhcnMpKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAoKGNv bWJpbmF0aW9uLXAgbm9kZSkgKGZsdXNoYWJsZS1jb21iaW5hdGlvbi1wIG5vZGUpKQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICgoYmFzaWMtY29tYmluYXRpb24tcCBub2RlKSBuaWwp Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgKHQgdCkpKSkgOyBhbnl0aGluZyBlbHNl IHRoZSBiYWNrd2FyZHMgc2VhcmNoIGFsbG93ZWQgaXMgb2sKPiA+ID4gPiA+ICsgICAgICA7OyBX aGVuIGxvb2tiYWNrPjAgaXQncyBwb3NzaWJsZSBmb3IgdGhlIGVxdWl2YWxlbnQgbm9kZSB0byBi ZSB0aGUgZmluYWwgbm9kZQo+ID4gPiA+ID4gKyAgICAgIDs7IG9mIGl0cyBibG9jaywgaW4gd2hp Y2ggY2FzZSBpdHMgTk9ERS1ORVhUIGlzIG51bGwuCj4gPiA+ID4gPiArICAgICAgKGxldCogKCh0 aGlzLWJsb2NrIChub2RlLWJsb2NrIHRoaXMpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAocHJl ZCAoY2FyIChibG9jay1wcmVkIHRoaXMtYmxvY2spKSkpCj4gPiA+ID4gPiArICAgICAgICAodW5s ZXNzIChpZiAoPSBsb29rYmFjayAwKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKGFs bC1mbHVzaGFibGUgKG5vZGUtbmV4dCBjMSkgdGhpcykKPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgIChhbmQKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICA7OyBDaGVjayBwcmV2 IGJsb2NrIGZyb20gQzEgdG8gaXRzIGVuZCBvZiBibG9jaywgYW5kIGN1cnJlbnQgYmxvY2sgdXAg dG8gVEhJUwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIChhY29uZCAoKG5vZGUtbmV4 dCBjMSkgKGFsbC1mbHVzaGFibGUgaXQgbmlsKSkgKHQgdCkpCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgKGFsbC1mbHVzaGFibGUgKGJsb2NrLXN0YXJ0IHRoaXMtYmxvY2spIHRoaXMp Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgOzsgQWxsIGNoZWNrIGFsbCBvZiBvbmUg b3IgYm90aCBpbnRlcnZlbmluZyBibG9ja3MKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAob3IgKDwgbG9va2JhY2sgMikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg KGFsbC1mbHVzaGFibGUgKGJsb2NrLXN0YXJ0IHByZWQpIG5pbCkpCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgKG9yICg8IGxvb2tiYWNrIDMpCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgIChhbGwtZmx1c2hhYmxlIChibG9jay1zdGFydCAoY2FyIChibG9jay1wcmVk IHByZWQpKSkgbmlsKSkpKQo+ID4gPiA+ID4gKyAgICAgICAgICAocmV0dXJuLWZyb20gdHJ5LXJl dXNlLWV4cHItdmFsdWUgbmlsKSkpKQo+ID4gPiA+ID4gKyAgICA7OyBTdWJzdGl0dXRlIEMxJ3Mg cmVzdWx0IGluIGZvciBUSElTCj4gPiA+ID4gPiArICAgIChiaW5kaW5nKiAoKGx2YXItYzEgKG5v ZGUtbHZhciBjMSkgOmV4aXQtaWYtbnVsbCkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAoY29u c3VtZXItMSAobHZhci1kZXN0IGx2YXItYzEpIDpleGl0LWlmLW51bGwpCj4gPiA+ID4gPiArICAg ICAgICAgICAgICAgKGMyIHRoaXMpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgKGx2YXItYzIg KG5vZGUtbHZhciBjMikgOmV4aXQtaWYtbnVsbCkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAo diAobWFrZS1sYW1iZGEtdmFyIChnZW5zeW0gIlJFVVNFRC1WQUwiKQo+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnR5cGUgKHNpbmdsZS12YWx1ZS10eXBlIChu b2RlLWRlcml2ZWQtdHlwZSBjMSkpKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAobHZhci1u ZXcgKG1ha2UtbHZhcikpKQo+ID4gPiA+ID4gKyAgICAgIChhZGQtdmFyaWFibGUtdG8tbGV0LWxh bWJkYSBob21lLWxhbWJkYSB2KQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgIDs7IDEuIFJl ZGlyZWN0IGNvbnN1bWVyLTEgdG8gcmVhZCBmcm9tIGx2YXItbmV3Cj4gPiA+ID4gPiArICAgICAg KHN1YnN0aXR1dGUtbHZhciBsdmFyLW5ldyBsdmFyLWMxKQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KyAgICAgICh3aXRoLWlyMS1lbnZpcm9ubWVudC1mcm9tLW5vZGUgYzEKPiA+ID4gPiA+ICsgICAg ICAgIDs7IDIuIE1ha2UgQzEgd3JpdGUgdG8gYSBuZXcgTFZBUiwgYW5kIGxpbmsgaXQgdG8gYSBD U0VUIG9uIFYKPiA+ID4gPiA+ICsgICAgICAgIChsZXQgKChsdmFyLWMxLW5ldyAobWFrZS1sdmFy KSkpCj4gPiA+ID4gPiArICAgICAgICAgICglZGVsZXRlLWx2YXItdXNlIGMxKQo+ID4gPiA+ID4g KyAgICAgICAgICAodXNlLWx2YXIgYzEgbHZhci1jMS1uZXcpCj4gPiA+ID4gPiArICAgICAgICAg IDs7IDMuIENyZWF0ZSBTMSAoc2V0IFYgPSBsdmFyLWMxLW5ldykgYW5kIGluc2VydCBhZnRlciBD MQo+ID4gPiA+ID4gKyAgICAgICAgICAobGV0ICgoczEgKG1ha2Utc2V0IHYgbHZhci1jMS1uZXcp KSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAoc2V0ZiAobHZhci1kZXN0IGx2YXItYzEtbmV3KSBz MSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAocHVzaCBzMSAoYmFzaWMtdmFyLXNldHMgdikpCj4g PiA+ID4gPiArICAgICAgICAgICAgKGluc2VydC1ub2RlLWFmdGVyIGMxIHMxKSkpKQo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKyAgICAgIDs7IDQuIEluc2VydCByZWYxIGJlZm9yZSBjb25zdW1lci0x LCB3cml0aW5nIHRvIGx2YXItbmV3Cj4gPiA+ID4gPiArICAgICAgKGluc2VydC1yZWYtYmVmb3Jl IHYgY29uc3VtZXItMSBsdmFyLW5ldykKPiA+ID4gPiA+ICsgICAgICA7OyA1LiBJbnNlcnQgcmVm MiBiZWZvcmUgQzIsIHN0ZWFsaW5nIEMyJ3MgbHZhcgo+ID4gPiA+ID4gKyAgICAgIChpbnNlcnQt cmVmLWJlZm9yZSB2IGMyIHQpCj4gPiA+ID4gPiArICAgICAgOzsgQzIgaXMgbm93IGRlYWQgYW5k IHdpbGwgYmUgZmx1c2hlZCBieSB0aGUgY2FsbGVyIQo+ID4gPiA+ID4gKyAgICAgIHQpKSkKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICA7OzsgRG8gSVIxIG9wdGltaXphdGlvbnMgb24gYSBDT01CSU5B VElPTiBub2RlLgo+ID4gPiA+ID4gIChkZWZ1biBpcjEtb3B0aW1pemUtY29tYmluYXRpb24gKG5v ZGUgJmF1eCAoc2hvdyAqc2hvdy10cmFuc2Zvcm1zLXAqKSkKPiA+ID4gPiA+ICAgIChkZWNsYXJl ICh0eXBlIGNvbWJpbmF0aW9uIG5vZGUpKQo+ID4gPiA+ID4gQEAgLTEzMDUsNiArMTQ4MSw5IEBA Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChub2RlLWx2YXIgbm9kZSkp KQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgIChyZXR1cm4tZnJvbSBpcjEtb3B0aW1pemUt Y29tYmluYXRpb24gKGZsdXNoLW5vZGUgbm9kZSkpKQo+ID4gPiA+ID4gICAgICAgICAgICAgICAg ICAgKChmb2xkLWNhbGwtZGVyaXZlZC10by1jb25zdGFudCBub2RlKQo+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgIChyZXR1cm4tZnJvbSBpcjEtb3B0aW1pemUtY29tYmluYXRpb24pKQo+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgKChhbmQgKGNvbWJpbmF0aW9uLWlzIG5vZGUgKmVsaWRh YmxlLW1lbW9yeS1sb2FkcyopCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAodHJ5 LXJldXNlLWV4cHItdmFsdWUgbm9kZSkpCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgKHJl dHVybi1mcm9tIGlyMS1vcHRpbWl6ZS1jb21iaW5hdGlvbikpKQo+ID4gPiA+ID4gICAgICAgICAg ICAgKHdoZW4gKGFuZCAoaXIxLWF0dHJpYnV0ZXAgKGZ1bi1pbmZvLWF0dHJpYnV0ZXMgaW5mbykg Y29tbXV0YXRpdmUpCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICg9IChsZW5ndGgg YXJncykgMikKPiA+ID4gPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9sY3NlLnB1cmUubGlzcCBiL3Rl c3RzL2xjc2UucHVyZS5saXNwCj4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiA+ ID4gaW5kZXggMDAwMDAwMDAwLi40M2IzNGU5OTgKPiA+ID4gPiA+IC0tLSAvZGV2L251bGwKPiA+ ID4gPiA+ICsrKyBiL3Rlc3RzL2xjc2UucHVyZS5saXNwCj4gPiA+ID4gPiBAQCAtMCwwICsxLDIz NCBAQAo+ID4gPiA+ID4gKzs7OzsgVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBTQkNMIHN5 c3RlbS4gU2VlIHRoZSBSRUFETUUgZmlsZSBmb3IKPiA+ID4gPiA+ICs7Ozs7IG1vcmUgaW5mb3Jt YXRpb24uCj4gPiA+ID4gPiArOzs7Owo+ID4gPiA+ID4gKzs7OzsgV2hpbGUgbW9zdCBvZiBTQkNM IGlzIGRlcml2ZWQgZnJvbSB0aGUgQ01VIENMIHN5c3RlbSwgdGhlIHRlc3QKPiA+ID4gPiA+ICs7 Ozs7IGZpbGVzIChsaWtlIHRoaXMgb25lKSB3ZXJlIHdyaXR0ZW4gZnJvbSBzY3JhdGNoIGFmdGVy IHRoZSBmb3JrCj4gPiA+ID4gPiArOzs7OyBmcm9tIENNVSBDTC4KPiA+ID4gPiA+ICs7Ozs7Cj4g PiA+ID4gPiArOzs7OyBUaGlzIHNvZnR3YXJlIGlzIGluIHRoZSBwdWJsaWMgZG9tYWluIGFuZCBp cyBwcm92aWRlZCB3aXRoCj4gPiA+ID4gPiArOzs7OyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5LiBT ZWUgdGhlIENPUFlJTkcgYW5kIENSRURJVFMgZmlsZXMgZm9yCj4gPiA+ID4gPiArOzs7OyBtb3Jl IGluZm9ybWF0aW9uLgo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKzs7OzsgVGVzdHMgb2YgbG9jYWwg Y29tbW9uIHN1YmV4cHJlc3Npb24gZWxpbWluYXRpb24KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICso aW1wb3J0ICcoY3R1Omluc3BlY3QtaXIKPiA+ID4gPiA+ICsgICAgICAgICAgc2ItYzo6Y29tYmlu YXRpb24tZnVuLWRlYnVnLW5hbWUKPiA+ID4gPiA+ICsgICAgICAgICAgc2ItYzo6YmFzaWMtY29t YmluYXRpb24tcCkpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArKGRlZnVuIGlyLWNhbGxzIChmb3Jt KQo+ID4gPiA+ID4gKyAgKGxldCAoY2FsbHMpCj4gPiA+ID4gPiArICAgIChpbnNwZWN0LWlyCj4g PiA+ID4gPiArICAgICBmb3JtCj4gPiA+ID4gPiArICAgICAobGFtYmRhIChjb21wb25lbnQpCj4g PiA+ID4gPiArICAgICAgIChjdHU6ZG8tYmxvY2tzIChibG9jayBjb21wb25lbnQpCj4gPiA+ID4g PiArICAgICAgICAgKGN0dTpkby1ub2RlcyAobm9kZSBuaWwgYmxvY2spCj4gPiA+ID4gPiArICAg ICAgICAgICAod2hlbiAoYmFzaWMtY29tYmluYXRpb24tcCBub2RlKQo+ID4gPiA+ID4gKyAgICAg ICAgICAgICAocHVzaCBub2RlIGNhbGxzKSkpKSkpCj4gPiA+ID4gPiArICAgIGNhbGxzKSkKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsoZGVmbWFjcm8gYXNzZXJ0LWNhbGxzIChmdW4tbmFtZSBleHBl Y3RlZC1jb3VudCAoJnJlc3QgbGFtYmRhLWFyZ3MpICZib2R5IGJvZHkpCj4gPiA+ID4gPiArICAo c2ItaW50OmJpbmRpbmcqCj4gPiA+ID4gPiArICAgICAgKCgoZm9ybXMgZGVjbHMpIChzYi1pbnQ6 cGFyc2UtYm9keSBib2R5IG5pbCkpCj4gPiA+ID4gPiArICAgICAgIChsZXhwciBgKGxhbWJkYSAo LEBsYW1iZGEtYXJncykKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICxAZGVjbHMKPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICA7OyBXaXRob3V0IGEgY29udGFpbmluZyBMRVQgZm9ybSwg dGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgQ1NFCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgOzsgaXMgdW53aWxsaW5nIHRvIGJpbmQgYSB0ZW1wb3JhcnkgbGFtYmRhIHZhciBmb3Ig cmV1c2UuCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgKGxldCAoKGFjdGl2ZS1sZXQtdmFy IDApKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKHByaW50IGFjdGl2ZS1sZXQtdmFy KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKGluY2YgYWN0aXZlLWxldC12YXIgKHJh bmRvbSA1KSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIChwcmludCBhY3RpdmUtbGV0 LXZhcikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICxAZm9ybXMpKSkpCj4gPiA+ID4g PiArICAgIGAoYXNzZXJ0ICg9IChjb3VudCAnLGZ1bi1uYW1lIChpci1jYWxscyAnLGxleHByKSA6 a2V5ICMnY29tYmluYXRpb24tZnVuLWRlYnVnLW5hbWUpCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICxleHBlY3RlZC1jb3VudCkpKSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICs7OzsgQmFzaWMg dGVzdHM6IGEgc2FtcGxpbmcgb2YgZWxpZGFibGUgbG9hZCB0eXBlIHdpdGggdHdvIGlkZW50aWNh bCBsb2Fkcwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpj YXIpKQo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBjYXIgMSAoY29ucykKPiA+ID4gPiA+ICsg ICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ID4gPiA+ICsgICAgKGlmIChjYXIgY29u cykKPiA+ID4gPiA+ICsgICAgICAgIChwcmluYyAoY2FyIGNvbnMpKQo+ID4gPiA+ID4gKyAgICAg ICAgKHByaW5jIChjZHIgY29ucykpKSkpCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArKHdpdGgtdGVz dCAoOm5hbWUgKDpjc2UgOmRpZmZlcmVudC1uYW1lcy1mb3Itc2FtZS1vYmplY3QpKQo+ID4gPiA+ ID4gKyAgOzsgWSBhbmQgWCByZWZlciB0byB0aGUgc2FtZSB0aGluZywgYW5kIGl0IGRvZXNuJ3Qg bWF0dGVyCj4gPiA+ID4gPiArICA7OyB3aG9zZSBDRFIgd2UgdGFrZSBmaXJzdC4gT25seSBvbmUg Q0RSIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQKPiA+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgY2Ry IDEgKHgpCj4gPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBlIGNvbnMgeCkpCj4gPiA+ID4gPiAr ICAgIChsZXQgKCh5IHgpKQo+ID4gPiA+ID4gKyAgICAgIChsaXN0IChjZHIgeSkgKGNkciB4KSkp KQo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBjZHIgMSAoeCkKPiA+ID4gPiA+ICsgICAgKGRl Y2xhcmUgKHR5cGUgY29ucyB4KSkKPiA+ID4gPiA+ICsgICAgKGxldCAoKHkgeCkpCj4gPiA+ID4g PiArICAgICAgKGxpc3QgKGNkciB4KSAoY2RyIHkpKSkpKQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g Kyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpjb21wb3NpdGlvbi1vZi1jeHIpKQo+ID4gPiA+ID4g KyAgOzsgVGhlIENBUiBleHRyYWN0aW9uIHdoaWNoIGlzIHBhcnQgb2YgdGhlIENEQVIgZnVuY3Rp b24gY2FuIGJlCj4gPiA+ID4gPiArICA7OyByZXVzZWQgYmFzZWQgb24gdGhlIGZhY3QgdGhhdCB3 ZSBldmFsdWF0ZWQgKExJU1RQIChDQVIgWCkpCj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIGNh ciAxICh4KQo+ID4gPiA+ID4gKyAgICAoaWYgKGxpc3RwIChjYXIgeCkpIChjZGFyIHgpKSkKPiA+ ID4gPiA+ICsgIDs7IG5lZ2F0aXZlIHRlc3QgLSBDREFSIG9uIGEgZGlmZmVyZW50IFkgaXMgYW5v dGhlciBDQVIgb3BlcmF0aW9uCj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIGNhciAyICh4IHkp Cj4gPiA+ID4gPiArICAgIChpZiAobGlzdHAgKGNhciB4KSkgKGNkYXIgeSkpKSkKPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsoZGVmc3RydWN0IGNzZS10ZXN0LWZvbyBzbG90ICh3c2xvdCAwIDp0eXBl IHNiLXZtOndvcmQpKQo+ID4gPiA+ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDppbnN0YW5j ZS1yZWYpKQo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBzYi1rZXJuZWw6JWluc3RhbmNlLXJl ZiAxICh4KQo+ID4gPiA+ID4gKyAgICA7OyBEZXBlbmRpbmcgb24gd2hhdCBUUkFOU0ZPUk0tSU5T VEFOQ0UtVFlQRVAgZG9lcywgaXQgbWlnaHQgYWNjZXNzIGluc3RhbmNlLWxheW91dAo+ID4gPiA+ ID4gKyAgICA7OyB1c2luZyAlSU5TVEFOQ0UtUkVGIHdoaWNoIHdvdWxkIGhhdmUgdG8gYmUgZGlz Y291bnRlZCBpbiB0aGUgY2FsbCBjb3VudGluZy4KPiA+ID4gPiA+ICsgICAgOzsgSnVzdCBicnV0 ZS1mb3JjZSB0aGUgdHlwZSB0byBhdm9pZCB0aGF0IHNpdHVhdGlvbi4KPiA+ID4gPiA+ICsgICAg KGxldCAoKHggKHRydWx5LXRoZSBjc2UtdGVzdC1mb28geCkpKQo+ID4gPiA+ID4gKyAgICAgIChp ZiAoY3NlLXRlc3QtZm9vLXNsb3QgeCkKPiA+ID4gPiA+ICsgICAgICAgICAgKHByaW5jIChjc2Ut dGVzdC1mb28tc2xvdCB4KSkKPiA+ID4gPiA+ICsgICAgICAgICAgbmlsKSkpKQo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpyYXctaW5zdGFuY2UtcmVmL3dv cmQpKQo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBzYi1rZXJuZWw6JXJhdy1pbnN0YW5jZS1y ZWYvd29yZCAxICh4KQo+ID4gPiA+ID4gKyAgICAoZGVjbGFyZSAodHlwZSBjc2UtdGVzdC1mb28g eCkpCj4gPiA+ID4gPiArICAgIChpZiAobG9ndGVzdCAoY3NlLXRlc3QtZm9vLXdzbG90IHgpICN4 ZmYwMDApCj4gPiA+ID4gPiArICAgICAgICAocHJpbmMgKGNzZS10ZXN0LWZvby13c2xvdCB4KSkK PiA+ID4gPiA+ICsgICAgICAgIG5pbCkpKQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyh3aXRoLXRl c3QgKDpuYW1lICg6Y3NlIDpzYXAtcmVmLTMyKSkKPiA+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMg c2Itc3lzOnNhcC1yZWYtMzIgMSAoc2FwIG9mZnNldCkKPiA+ID4gPiA+ICsgICAgKGRlY2xhcmUg KHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwKQo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAodHlwZSBzYi12bTp3b3JkIG9mZnNldCkpCj4gPiA+ID4gPiArICAgIChpZiAocGx1c3Ag KHNiLXN5czpzYXAtcmVmLTMyIHNhcCBvZmZzZXQpKQo+ID4gPiA+ID4gKyAgICAgICAgKHByaW5j IChzYi1zeXM6c2FwLXJlZi0zMiBzYXAgb2Zmc2V0KSkKPiA+ID4gPiA+ICsgICAgICAgIG5pbCkp Cj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIHNiLXN5czpzaWduZWQtc2FwLXJlZi0zMiAxIChz YXAgb2Zmc2V0KQo+ID4gPiA+ID4gKyAgICAoZGVjbGFyZSAodHlwZSBzYi1zeXM6c3lzdGVtLWFy ZWEtcG9pbnRlciBzYXApCj4gPiA+ID4gPiArICAgICAgICAgICAgICh0eXBlIHNiLXZtOndvcmQg b2Zmc2V0KSkKPiA+ID4gPiA+ICsgICAgKGlmIChwbHVzcCAoc2Itc3lzOnNpZ25lZC1zYXAtcmVm LTMyIHNhcCBvZmZzZXQpKQo+ID4gPiA+ID4gKyAgICAgICAgKHByaW5jIChzYi1zeXM6c2lnbmVk LXNhcC1yZWYtMzIgc2FwIG9mZnNldCkpCj4gPiA+ID4gPiArICAgICAgICBuaWwpKSkKPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6c2FwLXJlZi02NCkgOnNr aXBwZWQtb24gKDpub3QgOjY0LWJpdCkpCj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIHNiLXN5 czpzYXAtcmVmLTY0IDEgKHNhcCBvZmZzZXQpCj4gPiA+ID4gPiArICAgIChkZWNsYXJlICh0eXBl IHNiLXN5czpzeXN0ZW0tYXJlYS1wb2ludGVyIHNhcCkKPiA+ID4gPiA+ICsgICAgICAgICAgICAg KHR5cGUgc2Itdm06d29yZCBvZmZzZXQpKQo+ID4gPiA+ID4gKyAgICAoaWYgKHBsdXNwIChzYi1z eXM6c2FwLXJlZi02NCBzYXAgb2Zmc2V0KSkKPiA+ID4gPiA+ICsgICAgICAgIChwcmluYyAoc2It c3lzOnNhcC1yZWYtNjQgc2FwIG9mZnNldCkpCj4gPiA+ID4gPiArICAgICAgICBuaWwpKQo+ID4g PiA+ID4gKyAgKGFzc2VydC1jYWxscyBzYi1zeXM6c2lnbmVkLXNhcC1yZWYtNjQgMSAoc2FwIG9m ZnNldCkKPiA+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBv aW50ZXIgc2FwKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAodHlwZSBzYi12bTp3b3JkIG9mZnNl dCkpCj4gPiA+ID4gPiArICAgIChpZiAocGx1c3AgKHNiLXN5czpzaWduZWQtc2FwLXJlZi02NCBz YXAgb2Zmc2V0KSkKPiA+ID4gPiA+ICsgICAgICAgIChwcmluYyAoc2Itc3lzOnNpZ25lZC1zYXAt cmVmLTY0IHNhcCBvZmZzZXQpKQo+ID4gPiA+ID4gKyAgICAgICAgbmlsKSkpCj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOmxvb3Atb3Zlci1kZXJlZikpCj4g PiA+ID4gPiArICAobGV0ICgobGV4cHIKPiA+ID4gPiA+ICsgICAgICAgICAnKGxhbWJkYSAoZikK PiA+ID4gPiA+ICsgICAgICAgICAgICAoZGVjbGFyZSAob3B0aW1pemUgKHNiLWM6OmFsaWVuLWZ1 bmNhbGwtc2F2ZXMtZnAtYW5kLXBjIDApCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzYi1jOjp0eXBlLWNoZWNrIDApKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICA7 OyBGIHJldHVybnMgYSBwb2ludGVyIHRvIGEgbnVsbC10ZXJtaW5hdGVkIGFycmF5IG9mIHVuc2ln bmVkLWludC4KPiA+ID4gPiA+ICsgICAgICAgICAgICA7OyBUaGUgZGVyZWYgZm9yIHRoZSBsb29w IHRlcm1pbmF0aW9uIHRlc3QsIGFuZCBhZ2FpbiBpbiB0aGUgYm9keQo+ID4gPiA+ID4gKyAgICAg ICAgICAgIDs7IHNob3VsZCB1c2UgYSBzaW5nbGUgbWVtb3J5IGxvYWQuCj4gPiA+ID4gPiArICAg ICAgICAgICAgKGxldCAoKGEgKGFsaWVuLWZ1bmNhbGwgKHRoZSAoYWxpZW4gKGZ1bmN0aW9uICgq IHVuc2lnbmVkKSkpIGYpKSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAoZG8gKChpbmRleCAw ICgxKyBpbmRleCkpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICgoemVyb3AgKGRlcmVm IGEgaW5kZXgpKSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgKHByaW5jICh0aGUgZml4bnVt IChkZXJlZiBhIGluZGV4KSkpKSkpKSkKPiA+ID4gPiA+ICsgICAgKGFzc2VydCAoPSAoY291bnQg Iysob3IgYXJtNjQgeDg2LTY0KSAnc2Itc3lzOiVzYXAtcmVmLTY0LWluZGV4ZWQKPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIy0ob3IgYXJtNjQgeDg2LTY0KQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAocHJvZ24gIys2NC1iaXQgJ3NiLXN5czpzYXAtcmVmLTY0ICMt NjQtYml0ICdzYi1zeXM6c2FwLXJlZi0zMikKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgKGlyLWNhbGxzIGxleHByKSA6a2V5ICMnY29tYmluYXRpb24tZnVuLWRlYnVnLW5hbWUpCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgMSkpKSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICs7Ozsg U0VUUSBvZiBhIHZhcmlhYmxlIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gYW4gZWxpZGFibGUgbG9h ZCBwcmV2ZW50cyBDU0UuCj4gPiA+ID4gPiArOzs7IFdoZW4gYSB2YXJpYWJsZSB0aGF0IHBhcnRp Y2lwYXRlcyBpbiB0aGUgbG9hZCBleHByZXNzaW9uIChlLmcuLCB0aGUgY29ucwo+ID4gPiA+ID4g Kzs7OyBiZWluZyBDQVInZCkgaXMgYXNzaWduZWQgYmV0d2VlbiB0d28gaWRlbnRpY2FsIGxvYWRz LCB0aGUgc2Vjb25kIGxvYWQKPiA+ID4gPiA+ICs7OzsgbXVzdCBub3QgYmUgZWxpbWluYXRlZCBi ZWNhdXNlIHRoZSB2YXJpYWJsZSBtYXkgcmVmZXJlbmNlIGEgZGlmZmVyZW50IG9iamVjdC4KPiA+ ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6c2V0cS1vZi1sb2FkLWFyZy1wcmV2ZW50 cy1jYXIpKQo+ID4gPiA+ID4gKyAgOzsgQ09OUyBpcyB0aGUgYXJndW1lbnQgdG8gQ0FSLiBBc3Np Z25pbmcgQ09OUyBiZXR3ZWVuIHR3byAoQ0FSIENPTlMpCj4gPiA+ID4gPiArICA7OyBwcmV2ZW50 cyBDU0UuCj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIGNhciAyIChjb25zIG90aGVyKQo+ID4g PiA+ID4gKyAgICAoZGVjbGFyZSAodHlwZSBjb25zIGNvbnMgb3RoZXIpKQo+ID4gPiA+ID4gKyAg ICAobGV0ICgoYSAoY2FyIGNvbnMpKSkKPiA+ID4gPiA+ICsgICAgICAoc2V0cSBjb25zIG90aGVy KQo+ID4gPiA+ID4gKyAgICAgIChsZXQgKChiIChjYXIgY29ucykpKQo+ID4gPiA+ID4gKyAgICAg ICAgKGxpc3QgYSBiKSkpKSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsod2l0aC10ZXN0ICg6bmFt ZSAoOmNzZSA6c2V0cS1vZi1sb2FkLWFyZy1wcmV2ZW50cy1jZHIpKQo+ID4gPiA+ID4gKyAgKGFz c2VydC1jYWxscyBjZHIgMiAoY29ucyBvdGhlcikKPiA+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5 cGUgY29ucyBjb25zIG90aGVyKSkKPiA+ID4gPiA+ICsgICAgKGxldCAoKGEgKGNkciBjb25zKSkp Cj4gPiA+ID4gPiArICAgICAgKHNldHEgY29ucyBvdGhlcikKPiA+ID4gPiA+ICsgICAgICAobGV0 ICgoYiAoY2RyIGNvbnMpKSkKPiA+ID4gPiA+ICsgICAgICAgIChsaXN0IGEgYikpKSkpCj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOnNldHEtb2YtbG9hZC1h cmctcHJldmVudHMtaW5zdGFuY2UtcmVmKSkKPiA+ID4gPiA+ICsgIDs7IEFzc2lnbmluZyB0aGUg c3RydWN0IHZhcmlhYmxlIGJldHdlZW4gdHdvIHJlYWRzIG9mIHRoZSBzYW1lIHNsb3QgcHJldmVu dHMgQ1NFLgo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBzYi1rZXJuZWw6JWluc3RhbmNlLXJl ZiAyICh4IHkpCj4gPiA+ID4gPiArICAgIChsZXQgKCh4ICh0cnVseS10aGUgY3NlLXRlc3QtZm9v IHgpKQo+ID4gPiA+ID4gKyAgICAgICAgICAoeSAodHJ1bHktdGhlIGNzZS10ZXN0LWZvbyB5KSkp Cj4gPiA+ID4gPiArICAgICAgKGxldCAoKGEgKGNzZS10ZXN0LWZvby1zbG90IHgpKSkKPiA+ID4g PiA+ICsgICAgICAgIChzZXRxIHggeSkKPiA+ID4gPiA+ICsgICAgICAgIChsZXQgKChiIChjc2Ut dGVzdC1mb28tc2xvdCB4KSkpCj4gPiA+ID4gPiArICAgICAgICAgIChsaXN0IGEgYikpKSkpKQo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpzZXRxLW9mLWxv YWQtYXJnLXByZXZlbnRzLXNhcC1yZWYpKQo+ID4gPiA+ID4gKyAgOzsgQXNzaWduaW5nIHRoZSBT QVAgdmFyaWFibGUgYmV0d2VlbiB0d28gcmVhZHMgYXQgdGhlIHNhbWUgb2Zmc2V0Cj4gPiA+ID4g PiArICA7OyBtdXN0IHByZXZlbnQgQ1NFIHNpbmNlIHRoZSBzZWNvbmQgcmVhZCBtYXkgdXNlIGEg ZGlmZmVyZW50IFNBUC4KPiA+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgc2Itc3lzOnNhcC1yZWYt MzIgMiAoc2FwMSBzYXAyIG9mZnNldCkKPiA+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgc2It c3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwMSBzYXAyKQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAodHlwZSBzYi12bTp3b3JkIG9mZnNldCkpCj4gPiA+ID4gPiArICAgIChsZXQgKChhIChzYi1z eXM6c2FwLXJlZi0zMiBzYXAxIG9mZnNldCkpKQo+ID4gPiA+ID4gKyAgICAgIChzZXRxIHNhcDEg c2FwMikKPiA+ID4gPiA+ICsgICAgICAobGV0ICgoYiAoc2Itc3lzOnNhcC1yZWYtMzIgc2FwMSBv ZmZzZXQpKSkKPiA+ID4gPiA+ICsgICAgICAgIChsaXN0IGEgYikpKSkpCj4gPiA+ID4gPiArCj4g PiA+ID4gPiArOzs7IFNFVFEgb2YgYW4gKnVucmVsYXRlZCogdmFyaWFibGUgc2hvdWxkIE5PVCBw cmV2ZW50IENTRS4KPiA+ID4gPiA+ICs7OzsgT25seSBtdXRhdGlvbnMgb2YgdmFyaWFibGVzIHRo YXQgcGFydGljaXBhdGUgaW4gdGhlIGxvYWQgbWF0dGVyLgo+ID4gPiA+ID4gKyh3aXRoLXRlc3Qg KDpuYW1lICg6Y3NlIDpzZXRxLW9mLXVucmVsYXRlZC12YXItYWxsb3dzLWNzZSkpCj4gPiA+ID4g PiArICA7OyBaIGlzIG5vdCBhbiBhcmd1bWVudCB0byBDQVIsIHNvIHNldHRpbmcgWiBkb2VzIG5v dCBpbmhpYml0IENTRS4KPiA+ID4gPiA+ICsgIChhc3NlcnQtY2FsbHMgY2FyIDEgKGNvbnMgeikK PiA+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ID4gPiA+ICsgICAg KGxldCAoKGEgKGNhciBjb25zKSkpCj4gPiA+ID4gPiArICAgICAgKHNldHEgeiBhKQo+ID4gPiA+ ID4gKyAgICAgIChsZXQgKChiIChjYXIgY29ucykpKQo+ID4gPiA+ID4gKyAgICAgICAgKGxpc3Qg eiBiKSkpKSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICs7OzsgU0ItVEhSRUFEOkJBUlJJRVIgb2Yg YW55IGtpbmQgcHJldmVudHMgZWxpc2lvbiBvZiB0aGUgc2Vjb25kIGxvYWQKPiA+ID4gPiA+ICs7 Ozsgc2luY2UgdGhlIG1lbW9yeSBiYXJyaWVycyBpcyBub3QgZmx1c2hhYmxlLiBUaGlzIGlzIHRo ZSBjb25zZXJ2YXRpdmUgc3RhbmNlLgo+ID4gPiA+ID4gKzs7OyBUaGUgYWN0dWFsIChsb29zZXIp IHJlcXVpcmVtZW50cyBhcmUgbW9yZSBzdWJ0bGUgdGhhbiBJIGNhcmUgdG8gZGVhbCB3aXRoLgo+ ID4gPiA+ID4gKyhkZWZtYWNybyBiYXJyaWVyLXRlc3QgKGtpbmQpCj4gPiA+ID4gPiArICBgKHdp dGgtdGVzdCAoOm5hbWUgKDpjc2UgOmJhcnJpZXItcHJldmVudHMtY2FyICxraW5kKSkKPiA+ID4g PiA+ICsgICAgIChhc3NlcnQtY2FsbHMgY2FyIDIgKGNvbnMpCj4gPiA+ID4gPiArICAgICAgKGRl Y2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ID4gPiA+ICsgICAgICAobGV0ICgoYSAoY2FyIGNv bnMpKSkKPiA+ID4gPiA+ICsgICAgICAgIChzYi10aHJlYWQ6YmFycmllciAoLGtpbmQpKQo+ID4g PiA+ID4gKyAgICAgICAgKGxldCAoKGIgKGNhciBjb25zKSkpCj4gPiA+ID4gPiArICAgICAgICAg IChsaXN0IGEgYikpKSkpKQo+ID4gPiA+ID4gKyhiYXJyaWVyLXRlc3QgOnJlYWQpCj4gPiA+ID4g PiArKGJhcnJpZXItdGVzdCA6d3JpdGUpCj4gPiA+ID4gPiArKGJhcnJpZXItdGVzdCA6bWVtb3J5 KQo+ID4gPiA+ID4gKyhiYXJyaWVyLXRlc3QgOmNvbXBpbGVyKQo+ID4gPiA+ID4gKyhiYXJyaWVy LXRlc3QgOmRhdGEtZGVwZW5kZW5jeSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICs7OzsgQW55IG5v bi1mbHVzaGFibGUgY2FsbCBiZXR3ZWVuIHR3byBpZGVudGljYWwgbG9hZHMgcHJldmVudHMgQ1NF Cj4gPiA+ID4gPiArOzs7IGJlY2F1c2UgdGhlIGNhbGwgbWF5IGhhdmUgc2lkZSBlZmZlY3RzIHRo YXQgbW9kaWZ5IHRoZSBsb2FkZWQgbWVtb3J5Lgo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyh3aXRo LXRlc3QgKDpuYW1lICg6Y3NlIDpub24tZmx1c2hhYmxlLWNhbGwtcHJldmVudHMtY3NlKSkKPiA+ ID4gPiA+ICsgIDs7IFBSSU5DIGlzIGEgbm9uLWZsdXNoYWJsZQo+ID4gPiA+ID4gKyAgKGFzc2Vy dC1jYWxscyBjYXIgMiAoY29ucykKPiA+ID4gPiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBj b25zKSkKPiA+ID4gPiA+ICsgICAgKGxldCAoKGEgKGNhciBjb25zKSkpCj4gPiA+ID4gPiArICAg ICAgKHByaW5jIDQyKQo+ID4gPiA+ID4gKyAgICAgIChsZXQgKChiIChjYXIgY29ucykpKQo+ID4g PiA+ID4gKyAgICAgICAgKGxpc3QgYSBiKSkpKSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICs7Ozsg RGlmZmVyZW50IGZ1bmN0aW9ucyBvbiB0aGUgc2FtZSBvYmplY3QgYXJlIE5PVCBjb25zaWRlcmVk IGNvbW1vbiBzdWJleHByZXNzaW9ucy4KPiA+ID4gPiA+ICs7OzsgKENBUiB4KSBhbmQgKENEUiB4 KSBhcmUgZGlmZmVyZW50IGxvYWRzIGV2ZW4gaWYgeCBpcyB0aGUgc2FtZS4KPiA+ID4gPiA+ICso d2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6ZGlmZmVyZW50LWFjY2Vzc29ycy1ub3QtY3NlKSkKPiA+ ID4gPiA+ICsgIDs7IEJvdGggQ0FSIGFuZCBDRFIgc2hvdWxkIGFwcGVhciwgZWFjaCBleGFjdGx5 IG9uY2UuCj4gPiA+ID4gPiArICAoYXNzZXJ0LWNhbGxzIGNhciAxIChjb25zKQo+ID4gPiA+ID4g KyAgICAoZGVjbGFyZSAodHlwZSBjb25zIGNvbnMpKQo+ID4gPiA+ID4gKyAgICAoaWYgKGNhciBj b25zKQo+ID4gPiA+ID4gKyAgICAgICAgKHByaW5jIChjZHIgY29ucykpCj4gPiA+ID4gPiArICAg ICAgICBuaWwpKQo+ID4gPiA+ID4gKyAgKGFzc2VydC1jYWxscyBjZHIgMSAoY29ucykKPiA+ID4g PiA+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiA+ID4gPiA+ICsgICAgKGlmIChj YXIgY29ucykKPiA+ID4gPiA+ICsgICAgICAgIChwcmluYyAoY2RyIGNvbnMpKQo+ID4gPiA+ID4g KyAgICAgICAgbmlsKSkpCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEveHBlcmZlY3RoYXNoMzAubGlz cC1leHByIGIveHBlcmZlY3RoYXNoMzAubGlzcC1leHByCj4gPiA+ID4gPiBpbmRleCA2YTUwM2Fj ZjAuLjFiNzIyN2M3OCAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL3hwZXJmZWN0aGFzaDMwLmxpc3At ZXhwcgo+ID4gPiA+ID4gKysrIGIveHBlcmZlY3RoYXNoMzAubGlzcC1leHByCj4gPiA+ID4gPiBA QCAtMTUwNiw2ICsxNTA2LDkgQEAKPiA+ID4gPiA+ICAoIygxMEJFNzI3NyAxMjIxNEFFOCAxMkUy Q0JEQSAxOTczOTUzOSAxRjM1NTZDNyAxRjY0NDM4NykKPiA+ID4gPiA+ICAgIihJTlRFR0VSIEJJ R05VTSBTQi1WTTo6VU5TSUdORUQtQllURS0zMSBTQi1WTTo6U0lHTkVELUJZVEUtMzIgRklYTlVN IFNCLVZNOjpQT1NJVElWRS1GSVhOVU0pIgo+ID4gPiA+ID4gICAiKCgmICheIHZhbCAoPj4gdmFs IDIyKSkgNykpIikKPiA+ID4gPiA+ICsoIygxMEQyRUE0RSAxMjI0QzU1NyAxNUE1OEQ4NSAxNUI1 QTJCNSAxNzUyNEE3OCAxNzY5RTQxOSAxODkwNkQwOCkKPiA+ID4gPiA+ICsgIihTQi1DOjpDU0VU IFNCLUM6OlJFRiBERUxBWSBTQi1DOjpBUlJBWS1JTkRFWC1DQVNUIENBU1QgU0ItQzo6Q09NQklO QVRJT04gU0ItQzo6Q0lGKSIKPiA+ID4gPiA+ICsgIigoJiAoKyAoPj4gdmFsIDEpICg+PiB2YWwg OSkpIDcpKSIpCj4gPiA+ID4gPiAgKCMoMTBEMkVBNEUgMTIyNEM1NTcgMTVBNThEODUgMTVCNUEy QjUgMTc1MjRBNzggMTc2OUU0MTkgMTg5MDZEMDggMTk1Nzc1MzkgMUMwNjVDQjggMUQ2NkM5MzIp Cj4gPiA+ID4gPiAgICIjKCgoOlRZUEUgU0ItQzo6UkVGKSkgKCg6VFlQRSBTQi1DOjpDT01CSU5B VElPTikpICgoOlRZUEUgU0ItQzo6Q0lGKSkgKCg6VFlQRSBTQi1DOjpDUkVUVVJOKSkgKCg6VFlQ RSBTQi1DOjpNVi1DT01CSU5BVElPTikpICgoOlRZUEUgRVhJVCkpICgoOlRZUEUgU0ItQzo6Q1NF VCkpICgoOlRZUEUgREVMQVkpICg6VFlQRSBTQi1DOjpBUlJBWS1JTkRFWC1DQVNUKSAoOlRZUEUg Q0FTVCkpKSIKPiA+ID4gPiA+ICAgIigobGV0ICgodGFiICNhKCg4KSAodW5zaWduZWQtYnl0ZSA4 KSAwIDUgMiA4IDEzIDMgMCAwKSkpCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEveHBlcmZlY3RoYXNo NjEubGlzcC1leHByIGIveHBlcmZlY3RoYXNoNjEubGlzcC1leHByCj4gPiA+ID4gPiBpbmRleCA2 ZWI3MjQ4NmIuLmIxYmMwMTRmYiAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL3hwZXJmZWN0aGFzaDYx Lmxpc3AtZXhwcgo+ID4gPiA+ID4gKysrIGIveHBlcmZlY3RoYXNoNjEubGlzcC1leHByCj4gPiA+ ID4gPiBAQCAtNDYzLDYgKzQ2Myw5IEBACj4gPiA+ID4gPiAgKCMoOUEzMjBENCAzOUNBQTMzOSA0 M0JCRUUxOCA0RDYxMzY4RiA1MzIyMkRGQiBCRkE4NjE4OSBFREExMDM3RiBGRUU5OUE5NSkKPiA+ ID4gPiA+ICAgIiMoKCg6VFlQRSBTQi1DOjpSRUYpKSAoKDpUWVBFIFNCLUM6OkNPTUJJTkFUSU9O KSkgKCg6VFlQRSBTQi1DOjpNVi1DT01CSU5BVElPTikpICgoOlRZUEUgRVhJVCkpICgoOlRZUEUg U0ItQzo6Q1NFVCkpICgoOlRZUEUgREVMQVkpICg6VFlQRSBTQi1DOjpBUlJBWS1JTkRFWC1DQVNU KSAoOlRZUEUgQ0FTVCkpKSIKPiA+ID4gPiA+ICAgIigoJiAoLSAoPj4gdmFsIDMpICg+PiB2YWwg MjkpKSA3KSkiKQo+ID4gPiA+ID4gKygjKDlBMzIwRDQgMzlDQUEzMzkgNDNCQkVFMTggNTMyMjJE RkIgOTM4MDgzN0MgQkZBODYxODkgRkVFOTlBOTUpCj4gPiA+ID4gPiArICIjKCgoOlRZUEUgU0It Qzo6Q0lGKSAoOlRZUEUgU0ItQzo6Q09NQklOQVRJT04pICg6VFlQRSBERUxBWSkgKDpUWVBFIFNC LUM6OkFSUkFZLUlOREVYLUNBU1QpICg6VFlQRSBDQVNUKSAoOlRZUEUgU0ItQzo6UkVGKSAoOlRZ UEUgU0ItQzo6Q1NFVCkpKSIKPiA+ID4gPiA+ICsgIigoJiAoKyB2YWwgKD4+IHZhbCAzMSkpIDcp KSIpCj4gPiA+ID4gPiAgKCMoOUEzMjBENCA0M0JCRUUxOCA1MzIyMkRGQiBBOEE0QzdEMiBCRkE4 NjE4OSBFQUEzREE1QyBGRUU5OUE5NSkKPiA+ID4gPiA+ICAgIiMoKCg6VFlQRSBTQi1DOjpSRUYp KSAoKDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCkgKDpUWVBFIENB U1QpKSAoKDpUWVBFIFNCLUM6OkNPTUJJTkFUSU9OKSkgKCg6VFlQRSBTQi1DOjpFTlRSWSkpICgo OlRZUEUgU0ItQzo6RU5DTE9TRSkpKSIKPiA+ID4gPiA+ICAgIigoJiAoXiAoPj4gdmFsIDcpICg+ PiB2YWwgMjMpKSA3KSkiKQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3hwZXJmZWN0aGFzaDYzLmxp c3AtZXhwciBiL3hwZXJmZWN0aGFzaDYzLmxpc3AtZXhwcgo+ID4gPiA+ID4gaW5kZXggY2M4NjFi YjMzLi4xM2JiNWQ4NWQgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS94cGVyZmVjdGhhc2g2My5saXNw LWV4cHIKPiA+ID4gPiA+ICsrKyBiL3hwZXJmZWN0aGFzaDYzLmxpc3AtZXhwcgo+ID4gPiA+ID4g QEAgLTg3MCw2ICs4NzAsOSBAQAo+ID4gPiA+ID4gICgjKDEyMTA2OEREIDRENjEzNjhGIDU4MTEw RTdGIDY3RUUyRDFBIDZEOUE4ODNEIDc0NTg5RDgyIDg5N0I0NjU2IEE2OEEzOTY1KQo+ID4gPiA+ ID4gICAiIygoKDpUWVBFIFNCLUM6OlJFRikpICgoOlRZUEUgU0ItQzo6Q09NQklOQVRJT04pKSAo KDpUWVBFIFNCLUM6Ok1WLUNPTUJJTkFUSU9OKSkgKCg6VFlQRSBFWElUKSkgKCg6VFlQRSBTQi1D OjpDU0VUKSkgKCg6VFlQRSBERUxBWSkgKDpUWVBFIFNCLUM6OkFSUkFZLUlOREVYLUNBU1QpICg6 VFlQRSBDQVNUKSkpIgo+ID4gPiA+ID4gICAiKCgmICgtICg+PiB2YWwgNCkgKD4+IHZhbCAxNikp IDcpKSIpCj4gPiA+ID4gPiArKCMoMTIxMDY4REQgNTgxMTBFN0YgNjdFRTJEMUEgNkQ5QTg4M0Qg NzQyRDRDNTQgODk3QjQ2NTYgQTY4QTM5NjUpCj4gPiA+ID4gPiArICIjKCgoOlRZUEUgU0ItQzo6 Q0lGKSAoOlRZUEUgU0ItQzo6Q09NQklOQVRJT04pICg6VFlQRSBERUxBWSkgKDpUWVBFIFNCLUM6 OkFSUkFZLUlOREVYLUNBU1QpICg6VFlQRSBDQVNUKSAoOlRZUEUgU0ItQzo6UkVGKSAoOlRZUEUg U0ItQzo6Q1NFVCkpKSIKPiA+ID4gPiA+ICsgIigoJiAoLSAoPj4gdmFsIDQpICg+PiB2YWwgMTYp KSA3KSkiKQo+ID4gPiA+ID4gICgjKDEyNkFEQjAyIDMxQjA5NUREIDQyRDgzRkZCIDQzNDFGN0Q4 IDYzQzk3MUQ3IDdBODBGMjAxIDdCNDA4ODgwIDhGNzkxMkQ2IEVCRDAxODcyKQo+ID4gPiA+ID4g ICAiKDpBTExPVy1PVEhFUi1LRVlTIDpUWVBFIDpSRVNVTFQtU1BFQ1MgOkFSRy1TUEVDUyA6Q0FM TEVSIDpERVBTIDpGSVJFRCA6TEVYRU5WIDpTT1VSQ0UtUEFUSCkiCj4gPiA+ID4gPiAgICIoKGxl dCAoKHRhYiAjYSgoOCkgKHVuc2lnbmVkLWJ5dGUgOCkgMCA1IDAgMyAwIDUgMTIgNikpKQo+ID4g PiA+ID4KPiA+ID4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4g PiA+IGhvb2tzL3Bvc3QtcmVjZWl2ZQo+ID4gPiA+ID4gLS0KPiA+ID4gPiA+IFNCQ0wKPiA+ID4g PiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiA+ID4gPiA+IFNiY2wtY29tbWl0cyBtYWlsaW5nIGxpc3QKPiA+ID4g PiA+IFNiY2wtY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKPiA+ID4gPiA+IGh0dHBzOi8v bGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3NiY2wtY29tbWl0cwoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClNiY2wtY29tbWl0cyBt YWlsaW5nIGxpc3QKU2JjbC1jb21taXRzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xp c3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9zYmNsLWNvbW1pdHMK