RE: [PING][PATCH] aarch64: Use SVE ASRD with vector division using division operator
Tamar Christina <[email protected]> Tue, 4 Aug 2026 17:32:58 +0000
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <VI0PR08MB10392A8FDB4C98739A56AC951FFD42@VI0PR08MB10392.eurprd08.prod.outlook.com> |
SGkgU291bXlhLA0KDQpJIHRoaW5rIHRoZSByZWFzb24geW91J3JlIGhhdmluZyBhIGhhcmQgdGlt ZSBnZXR0aW5nIHJldmlld3MgaGVyZSBpcyBiZWNhdXNlIG9uIHRoZQ0Kc3VyZmFjZSB0aGlzIGRv ZXNuJ3Qgc2VlbSBsaWtlIGEgZ2VuZXJpYyBpbXByb3ZlbWVudC4gaS5lLiBpdCBmZWVscyBsaWtl IGEgdGFyZ2V0IHNwZWNpZmljDQpvcHRpbWl6YXRpb24gYmVjYXVzZSBvZiBob3cgc2xvdyBkaXZp c2lvbnMgYXJlIGFuZCBub3QgYWxsIHRhcmdldHMgaGF2ZSBzZGl2X3BvdzINCmFueXdheSBhbmQg dGhlcmUncyBubyByZWFsIHJlYXNvbiB0byBiZWxpZXZlIHNkaXYgaXMgc2xvd2VyIHRoYW4gc2Rp dl9wb3cyLg0KDQpTbyBteSBzdWdnZXN0aW9uIGZvciB5b3UgdG8gbWFrZSBwcm9ncmVzcyBvbiB0 aGlzIGlzIHRvIG1ha2UgaXQgYW4gQUFyY2g2NCBzcGVjaWZpYw0Kb3B0aW1pemF0aW9uLiAgWW91 IGNhbiBkbyBzbyBieSBleHRlbmRpbmcgYWFyY2g2NF9pbnN0cnVjdGlvbl9zZWxlY3Rpb24uDQoN Ckkgbm9ybWFsbHkgd291bGQgbm90IHJlY29tbWVuZCB0aGlzIGJ1dCBJIHRoaW5rIGdpdmVuIHRo ZSBlYXJsaWVyIHJldmlldyBjb21tZW50cw0KaXQgbWFrZXMgc2Vuc2UgdG8gbWFrZSB0aGlzIEFB cmNoNjQgb25seS4gIFlvdSBjYW4gcmV3cml0ZSB0byAuRElWX1BPVzIgYW5kIGlmIG5lZWRlZA0K d2UgY2FuIGFsd2F5cyBtb3ZlIGl0IHRvIGdlbmVyaWMgaXNlbCBsYXRlci4NCg0KVGhhbmtzLA0K VGFtYXINCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTb3VteWEgQVIg PHNvdW15YWFAbnZpZGlhLmNvbT4NCj4gU2VudDogMDQgQXVndXN0IDIwMjYgMDk6MDgNCj4gVG86 IEt5cnlsbyBUa2FjaG92IDxrdGthY2hvdkBudmlkaWEuY29tPjsgQW5kcmV3IFBpbnNraQ0KPiA8 YW5kcmV3LnBpbnNraUBvc3MucXVhbGNvbW0uY29tPjsgUmljaGFyZCBCaWVuZXIgPHJndWVudGhl ckBzdXNlLmRlPg0KPiBDYzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNv bT47IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnDQo+IFN1YmplY3Q6IFJlOiBbUElOR11bUEFUQ0hd IGFhcmNoNjQ6IFVzZSBTVkUgQVNSRCB3aXRoIHZlY3RvciBkaXZpc2lvbiB1c2luZw0KPiBkaXZp c2lvbiBvcGVyYXRvcg0KPiANCj4gSGkgS3lyaWxsLA0KPiANCj4gVGhhbmtzIGZvciB0aGUgcmV2 aWV3IQ0KPiANCj4gPiBPbiAxMyBKdWwgMjAyNiwgYXQgODo1NOKAr1BNLCBLeXJ5bG8gVGthY2hv diA8a3RrYWNob3ZAbnZpZGlhLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBIaSBTb3VteWEsDQo+ID4N Cj4gPj4gT24gMzAgSnVuIDIwMjYsIGF0IDEwOjI0LCBTb3VteWEgQVIgPHNvdW15YWFAbnZpZGlh LmNvbT4gd3JvdGU6DQo+ID4+DQo+ID4+IFBpbmcuDQo+ID4+DQo+ID4+IEFsc28gQ0MnaW5nIEFu ZHJlYSwgY291bGQgeW91IHBsZWFzZSB0YWtlIGEgbG9vayBpZiBwb3NzaWJsZT8NCj4gPj4NCj4g Pj4gVGhhbmtzLA0KPiA+PiBTb3VteWENCj4gPj4NCj4gPj4gT24gb24gVHVlLCAxNiBKdW4gMjAy NiAxMDo1NDozNyArMDAwMCwgU291bXlhIEFSDQo+IDxzb3VteWFhQG52aWRpYS5jb20+IHdyb3Rl Og0KPiA+Pj4gUGluZy4NCj4gPj4+DQo+ID4+PiBUaGFua3MsDQo+ID4+PiBTb3VteWENCj4gPj4+ DQo+ID4+Pj4gT24gOCBKdW4gMjAyNiwgYXQgMTE6MjPigK9QTSwgU291bXlhIEFSIDxzb3VteWFh QG52aWRpYS5jb20+DQo+IHdyb3RlOg0KPiA+Pj4+DQo+ID4+Pj4gUGluZy4NCj4gPj4+Pg0KPiA+ Pj4+IFRoYW5rcywNCj4gPj4+PiBTb3VteWENCj4gPj4+Pg0KPiA+Pj4+PiBPbiAyNiBNYXkgMjAy NiwgYXQgMjoyNOKAr1BNLCBTb3VteWEgQVIgPHNvdW15YWFAbnZpZGlhLmNvbT4NCj4gd3JvdGU6 DQo+ID4+Pj4+DQo+ID4+Pj4+IEhpLA0KPiA+Pj4+Pg0KPiA+Pj4+PiBSZXZpdmluZyB0aGlzIHBh dGNoIGJlY2F1c2UgaXQgY29tcGxldGVseSBzbGlwcGVkIG15IG1pbmQgYW5kIGhhcyBiZWVuDQo+ IHNpdHRpbmcNCj4gPj4+Pj4gaW4gbGltYm8gZXZlciBzaW5jZS4NCj4gPj4+Pj4NCj4gPj4+Pj4g SSdsbCB0cnkgdG8gc3VtbWFyaXplIHRoZSBkaXNjdXNzaW9uIGZvciBzb21lIGNvbnRleHQ6DQo+ ID4+Pj4+DQo+ID4+Pj4+IFRoaXMgcGF0Y2ggdGVhY2hlcyBleHBhbmRfZGl2bW9kIHRvIGRpc3Bh dGNoIHRocm91Z2ggdGhlIHNkaXZfcG93Mg0KPiBvcHRhYiBmb3INCj4gPj4+Pj4gdmVjdG9yIHBv dzIgZGl2aXNpb25zLCBzbyB0aGF0DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPj4+Pj4NCj4gPj4+ Pj4gc3ZpbnQzMl90IGJhciAoc3ZpbnQzMl90IHgpIHsgcmV0dXJuIHggLyA0OyB9DQo+ID4+Pj4+ DQo+ID4+Pj4+IGVtaXRzIGEgc2luZ2xlIEFTUkQgaW5zdGVhZCBvZiBhIHZlY3RvciBTRElWLiBB U1JEIG9uIFNWRSBwZXJmb3Jtcw0KPiBzaWduZWQNCj4gPj4+Pj4gZGl2aXNpb24gYnkgYW4gYXJp dGhtZXRpYyBzaGlmdCByaWdodCB0aGF0IHJvdW5kcyB0b3dhcmQgemVyby4NCj4gPj4+Pj4NCj4g Pj4+Pj4gVGhlIGF1dG92ZWN0b3JpemVyIGFscmVhZHkgdXNlcyB0aGlzIG9wdGFiIHZpYQ0KPiB2 ZWN0X3JlY29nX2Rpdm1vZF9wYXR0ZXJuOyB0aGlzDQo+ID4+Pj4+IGV4dGVuZHMgdGhlIHNhbWUg bWVjaGFuaXNtIHRvIHRoZSBub24tdmVjdG9yaXplciBwYXRoLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBU aGVyZSBhcmUgYSBjb3VwbGUgb2YgYmFja2VuZCBhcHByb2FjaGVzIHdlIGNvdWxkJ3ZlIHRha2Vu Og0KPiA+Pj4+Pg0KPiA+Pj4+PiAtIG1ha2UgZXhwYW5kX2Rpdm1vZCBlbWl0IHRoZSBzaGlmdCBz ZXF1ZW5jZSBmb3IgdmVjdG9yIHBvdzINCj4gZGl2aXNpb25zIChzaW1pbGFyDQo+ID4+Pj4+IHRv IGhvdyBpdCBoYW5kbGVzIHNjYWxhcnMpIGFuZCBhbmQgcmVseSBvbiBjb21iaW5lIHRvIHJlY29n bml6ZSBpdCBiYWNrDQo+IGludG8NCj4gPj4+Pj4gQVNSRC4NCj4gPj4+Pj4NCj4gPj4+Pj4gLSBl eHRlbmQgdGhlIFNWRSBTRElWIHBhdHRlcm4gdG8gYWNjZXB0IGltbWVkaWF0ZXMgYW5kIGVtaXQg QVNSRCBmb3INCj4gcG93Mi4NCj4gPj4+Pj4NCj4gPj4+Pj4gQnV0IHRob3NlIGZlZWwgbGVzcyBj bGVhbiBnaXZlbiB3ZSBoYXZlIGEgZGVkaWNhdGVkIG9wdGFiIChhbmQgdGhhdCBpdA0KPiB3b3Vs ZCBiZQ0KPiA+Pj4+PiBuZWF0ZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBhdXRvdmVjdG9y aXplciBhcHByb2FjaCkuDQo+ID4+Pj4+DQo+ID4+Pj4+IE5vdGUgdGhhdCB0aGlzIGFsc28gYXBw bGllcyB0byBBZHYuIFNJTUQgdmVjdG9ycyBvbiBTVkUgdGFyZ2V0cywgc2luY2UNCj4gdGhlDQo+ ID4+Pj4+IEFBcmNoNjQgYmFja2VuZCBleHBvc2VzIHNkaXZfcG93MiBmb3IgQWR2LiBTSU1EIG1v ZGVzLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBGb3IgZXhhbXBsZSwgYm90aDoNCj4gPj4+Pj4NCj4gPj4+ Pj4gaW50MzJ4NF90DQo+ID4+Pj4+IGZvbyAoaW50MzJ4NF90IHgpDQo+ID4+Pj4+IHsNCj4gPj4+ Pj4gcmV0dXJuIHggLyA0Ow0KPiA+Pj4+PiB9DQo+ID4+Pj4+DQo+ID4+Pj4+IGFuZA0KPiA+Pj4+ Pg0KPiA+Pj4+PiBzdmludDMyX3QNCj4gPj4+Pj4gYmFyIChzdmludDMyX3QgeCkNCj4gPj4+Pj4g ew0KPiA+Pj4+PiByZXR1cm4geCAvIDQ7DQo+ID4+Pj4+IH0NCj4gPj4+Pj4NCj4gPj4+Pj4gY3Vy cmVudGx5IGdlbmVyYXRlIERJViwgYnV0IGNhbiBiZSBkb25lIHVzaW5nIEFTUkQuDQo+ID4+Pj4+ DQo+ID4+Pj4+IFRoZSBwYXRjaCB3YXMgYm9vdHN0cmFwcGVkIGFuZCByZWd0ZXN0ZWQgb24gYWFy Y2g2NC1saW51eC1nbnUsIG5vDQo+IHJlZ3Jlc3Npb24uDQo+ID4+Pj4+IE9LIGZvciB0cnVuaz8N Cj4gPj4+Pj4NCj4gPj4+Pj4gU2lnbmVkLW9mZi1ieTogU291bXlhIEFSIDxzb3VteWFhQG52aWRp YS5jb20+DQo+ID4+Pj4+DQo+ID4+Pj4+IGdjYy9DaGFuZ2VMb2c6DQo+ID4+Pj4+DQo+ID4+Pj4+ ICogZXhwbWVkLmNjIChleHBhbmRfZGl2bW9kKTogRXhwYW5kIHRvIHNkaXZfcG93MiBvcHRhYiBm b3IgdmVjdG9ycy4NCj4gPj4+Pj4NCj4gPj4+Pj4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ ID4+Pj4+DQo+ID4+Pj4+ICogZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9zdmUtYXNyZC0yLmM6IE5l dyB0ZXN0Lg0KPiA+Pj4+PiAtLS0NCj4gPj4+Pj4gZ2NjL2V4cG1lZC5jYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKysrDQo+ID4+Pj4+IC4uLi9nY2MudGFyZ2V0L2Fh cmNoNjQvc3ZlL3N2ZS1hc3JkLTIuYyAgICAgICB8IDc0DQo+ICsrKysrKysrKysrKysrKysrKysN Cj4gPj4+Pj4gMiBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspDQo+ID4+Pj4+IGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvc3ZlLWFz cmQtMi5jDQo+ID4+Pj4+DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9nY2MvZXhwbWVkLmNjIGIvZ2Nj L2V4cG1lZC5jYw0KPiA+Pj4+PiBpbmRleCBmZTM5NTA2YjZiZC4uZWYxMjQyMDY4OWYgMTAwNjQ0 DQo+ID4+Pj4+IC0tLSBhL2djYy9leHBtZWQuY2MNCj4gPj4+Pj4gKysrIGIvZ2NjL2V4cG1lZC5j Yw0KPiA+Pj4+PiBAQCAtNDQ4Nyw2ICs0NDg3LDI3IEBAIGV4cGFuZF9kaXZtb2QgKGludCByZW1f ZmxhZywgZW51bQ0KPiB0cmVlX2NvZGUgY29kZSwgbWFjaGluZV9tb2RlIG1vZGUsDQo+ID4+Pj4+ ICAgIHsNCj4gPj4+Pj4gICAgY2FzZSBUUlVOQ19NT0RfRVhQUjoNCj4gPj4+Pj4gICAgY2FzZSBU UlVOQ19ESVZfRVhQUjoNCj4gPj4+Pj4gKyBpZiAoQ09OU1RfVkVDVE9SX1AgKG9wMSkNCj4gPj4+ Pj4gKyAgICAmJiBvcHRhYl9oYW5kbGVyIChzZGl2X3BvdzJfb3B0YWIsIG1vZGUpICE9DQo+IENP REVfRk9SX25vdGhpbmcpDQo+ID4+Pj4+ICsgIHsNCj4gPg0KPiA+IEkgdGhpbmsgaXQgaXMgd3Jv bmcgdG8gdXNlIHRoZSBzZGl2X3BvdzJfb3B0YWIgd2hlbiB1bnNpZ25lZHAgaXMgcGFzc2VkIGlu DQo+IHRoaXMgZnVuY3Rpb24sIG90aGVyd2lzZSBpbnB1dHMgbGlrZToNCj4gPiB7IDB4ODAwMDAw MDAsIDB4ZmZmZmZmZmYsIDE2LCA3IH0gLyA4DQo+ID4NCj4gPiB3aWxsIGdpdmUgd3JvbmcgcmVz dWx0cw0KPiANCj4gTXkgYmFkLCBhZGRlZCB0aGUgY2hlY2sgZm9yIHRoaXMuDQo+ID4NCj4gPj4+ Pj4gKyAgICBydHggc2NhbGFyX29wMTsNCj4gPj4+Pj4gKyAgICBpZiAoY29uc3RfdmVjX2R1cGxp Y2F0ZV9wIChvcDEsICZzY2FsYXJfb3AxKQ0KPiA+Pj4+PiArICYmIENPTlNUX0lOVF9QIChzY2Fs YXJfb3AxKSkNCj4gPj4+Pj4gKyAgICAgIHsNCj4gPj4+Pj4gKyBIT1NUX1dJREVfSU5UIGQgPSBJ TlRWQUwgKHNjYWxhcl9vcDEpOw0KPiA+Pj4+PiArIGlmIChkID4gMCAmJiBwb3cycF9od2kgKGQp KQ0KPiA+Pj4+PiArICB7DQo+ID4+Pj4+ICsgICAgcnR4IHNoaWZ0X2Ftb3VudA0KPiA+Pj4+PiAr ICAgICAgPSBnZW5fY29uc3RfdmVjX2R1cGxpY2F0ZSAobW9kZSwNCj4gPj4+Pj4gKyBHRU5fSU5U IChmbG9vcl9sb2cyIChkKSkpOw0KPiA+Pj4+PiArICAgIHJ0eCByZXN1bHQNCj4gPj4+Pj4gKyAg ICAgID0gZXhwYW5kX2Jpbm9wIChtb2RlLCBzZGl2X3BvdzJfb3B0YWIsIG9wMCwgc2hpZnRfYW1v dW50LA0KPiA+Pj4+PiArICAgICAgdGFyZ2V0LCB1bnNpZ25lZHAsIG1ldGhvZHMpOw0KPiA+Pj4+ PiArICAgIGlmIChyZXN1bHQpDQo+ID4+Pj4+ICsgICAgICByZXR1cm4gcmVzdWx0Ow0KPiA+DQo+ ID4NCj4gPiBGb3IgVFJVTkNfTU9EX0VYUFIgcmVzdWx0IGlzIHRoZSBxdW90aWVudCwgSSB0aGlu ayB0aGlzIG5ldyBwYXRoIHNob3VsZA0KPiBvbmx5IGJlIHVzZWQgZm9yICFyZW1fZmxhZy4NCj4g PiBBbHRlcm5hdGl2ZWx5LCBhc3NpZ24gdGhlIHJlc3VsdCB0byBxdW90aWVudCBhbmQgY29udGlu dWUgdGhyb3VnaCB0aGUNCj4gY29tbW9uIHJlbWFpbmRlciBoYW5kbGluZy4NCj4gPg0KPiANCj4g SSBleHBlcmltZW50ZWQgd2l0aCB1c2luZyB0aGUgY29tbW9uIGhhbmRsaW5nIGZvciB0aGlzLiBE aXJlY3RseSBhc3NpZ25pbmcgdGhlDQo+IHJlc3VsdCB0byBxdW90aWVudCBhbmQgZmFsbGluZyB0 aHJvdWdoIGRvZXNuJ3Qgd29yayBzaW5jZSB0aGUgbmV4dCBjaGVjayBpcw0KPiBvcDFfaXNfY29u c3RhbnQgKGZhbHNlIGZvciBhIENPTlNUX1ZFQ1RPUikuIENvbnRyb2wgdGhlcmVmb3JlIGZhbGxz IHRocm91Z2gNCj4gdG8NCj4gZmFpbDE6LCB3aGVyZSBkZWxldGVfaW5zbnNfc2luY2UgcmVtb3Zl cyB0aGUgZW1pdHRlZCBBU1JELg0KPiANCj4gV2UgY291bGQganVzdCBieXBhc3MgdGhpcywgYnV0 IHRoYXQgbWlnaHQgYmUgbW9vdCwgc2luY2UgdmVjdG9yIHBvdzIgbW9kdWxvDQo+IGlzDQo+IGFj dHVhbGx5IHByb2Nlc3NlZCBlYXJsaWVyIGJ5IGV4cGFuZF92ZWN0b3JfZGl2bW9kLg0KPiANCj4g SG93ZXZlciwgdGhpcyBvbmx5IHdvcmtzIGZvciBORU9OIGNhc2VzLCBmb3IgU1ZFIG1vZHVsbywg d2UgZ2V0IHRoZSBzYW1lDQo+IElDRQ0KPiBtZW50aW9uZWQgaGVyZTogZ2NjLmdudS5vcmcvYnVn emlsbGEvc2hvd19idWcuY2dpP2lkPTExODM3OA0KPiANCj4gRm9yIG5vdywgSSBoYXZlIGp1c3Qg YWRkZWQgIXJlbV9mbGFnLg0KPiANCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArICAgICAgfQ0KPiA+ Pj4+PiArICB9DQo+ID4+Pj4+IGlmIChvcDFfaXNfY29uc3RhbnQpDQo+ID4+Pj4+IHsNCj4gPj4+ Pj4gc2NhbGFyX2ludF9tb2RlIGludF9tb2RlID0gYXNfYSA8c2NhbGFyX2ludF9tb2RlPiAoY29t cHV0ZV9tb2RlKTsNCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L3N2ZS9zdmUtYXNyZC0yLmMNCj4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9zdmUvc3ZlLWFzcmQtMi5jDQo+ID4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4+Pj4+IGluZGV4IDAwMDAwMDAwMDAwLi5hNTE2MzQyMWE2OQ0KPiA+Pj4+PiAtLS0gL2Rldi9u dWxsDQo+ID4+Pj4+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9z dmUtYXNyZC0yLmMNCj4gPj4+Pj4gQEAgLTAsMCArMSw3NCBAQA0KPiA+Pj4+PiArLyogeyBkZy1k byBjb21waWxlIH0gKi8NCj4gPj4+Pj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItTzMi IH0gKi8NCj4gPj4+Pj4gKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioq IiAiIiAiIiB9IH0gKi8NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArI2luY2x1ZGUgPGFybV9zdmUuaD4N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArI2RlZmluZSBGT08odHlwZSkgXA0KPiA+Pj4+PiArdHlwZSBm b29fIyN0eXBlKHR5cGUgeCkgeyBcDQo+ID4+Pj4+ICsgIHJldHVybiB4IC8gODsgXA0KPiA+Pj4+ PiArfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKg0KPiA+Pj4+PiArKiogZm9vX2ludDMyeDRfdDoN Cj4gPj4+Pj4gKyoqICAgICBwdHJ1ZSAocFswLTddKS5iLCB2bDE2DQo+ID4+Pj4+ICsqKiAgICAg YXNyZCB6WzAtOV0rXC5zLCBcMS9tLCB6WzAtOV0rXC5zLCAjMw0KPiA+Pj4+PiArKiogICAgIHJl dA0KPiA+Pj4+PiArKi8NCj4gPj4+Pj4gK0ZPTyhpbnQzMng0X3QpDQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKy8qDQo+ID4+Pj4+ICsqKiBmb29faW50NjR4Ml90Og0KPiA+Pj4+PiArKiogICAgIHB0cnVl IChwWzAtN10pLmIsIHZsMTYNCj4gPj4+Pj4gKyoqICAgICBhc3JkIHpbMC05XStcLmQsIFwxL20s IHpbMC05XStcLmQsICMzDQo+ID4+Pj4+ICsqKiAgICAgcmV0DQo+ID4+Pj4+ICsqLw0KPiA+Pj4+ PiArRk9PKGludDY0eDJfdCkNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoNCj4gPj4+Pj4gKyoqIGZv b19zdmludDMyX3Q6DQo+ID4+Pj4+ICsqKiAgICAgcHRydWUgKHBbMC03XSkuYiwgYWxsDQo+ID4+ Pj4+ICsqKiAgICAgYXNyZCB6WzAtOV0rXC5zLCBcMS9tLCB6WzAtOV0rXC5zLCAjMw0KPiA+Pj4+ PiArKiogICAgIHJldA0KPiA+Pj4+PiArKi8NCj4gPj4+Pj4gK0ZPTyhzdmludDMyX3QpDQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKy8qDQo+ID4+Pj4+ICsqKiBmb29fc3ZpbnQ2NF90Og0KPiA+Pj4+PiAr KiogICAgIHB0cnVlIChwWzAtN10pLmIsIGFsbA0KPiA+Pj4+PiArKiogICAgIGFzcmQgelswLTld K1wuZCwgXDEvbSwgelswLTldK1wuZCwgIzMNCj4gPj4+Pj4gKyoqICAgICByZXQNCj4gPj4+Pj4g KyovDQo+ID4+Pj4+ICtGT08oc3ZpbnQ2NF90KQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKg0KPiA+ Pj4+PiArKiogZm9vX3VpbnQzMng0X3Q6DQo+ID4+Pj4+ICsqKiAgICAgcHRydWUgKHBbMC03XSku YiwgdmwxNg0KPiA+Pj4+PiArKiogICAgIGFzcmQgelswLTldK1wucywgXDEvbSwgelswLTldK1wu cywgIzMNCj4gPj4+Pj4gKyoqICAgICByZXQNCj4gPj4+Pj4gKyovDQo+ID4+Pj4+ICtGT08odWlu dDMyeDRfdCkNCj4gPg0KPiA+IEFzIG1lbnRpb25lZCBhYm92ZSwgSSBkb27igJl0IHRoaW5rIHVz aW5nIEFTUkQgdGhpcyBpcyBjb3JyZWN0IGZvciB1bnNpZ25lZA0KPiB0eXBlcyBzbyB0aGVzZSB0 ZXN0cyB3b3VsZCBuZWVkIHRvIGJlIHJlbW92ZWQuDQo+IA0KPiBEb25lLg0KPiANCj4gVGhhbmtz LA0KPiBTb3VteWENCj4gDQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gS3lyaWxsDQo+ID4NCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArLyoNCj4gPj4+Pj4gKyoqIGZvb191aW50NjR4Ml90Og0KPiA+Pj4+PiAr KiogICAgIHB0cnVlIChwWzAtN10pLmIsIHZsMTYNCj4gPj4+Pj4gKyoqICAgICBhc3JkIHpbMC05 XStcLmQsIFwxL20sIHpbMC05XStcLmQsICMzDQo+ID4+Pj4+ICsqKiAgICAgcmV0DQo+ID4+Pj4+ ICsqLw0KPiA+Pj4+PiArRk9PKHVpbnQ2NHgyX3QpDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qDQo+ ID4+Pj4+ICsqKiBmb29fc3Z1aW50MzJfdDoNCj4gPj4+Pj4gKyoqICAgICBwdHJ1ZSAocFswLTdd KS5iLCBhbGwNCj4gPj4+Pj4gKyoqICAgICBhc3JkIHpbMC05XStcLnMsIFwxL20sIHpbMC05XStc LnMsICMzDQo+ID4+Pj4+ICsqKiAgICAgcmV0DQo+ID4+Pj4+ICsqLw0KPiA+Pj4+PiArRk9PKHN2 dWludDMyX3QpDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qDQo+ID4+Pj4+ICsqKiBmb29fc3Z1aW50 NjRfdDoNCj4gPj4+Pj4gKyoqICAgICBwdHJ1ZSAocFswLTddKS5iLCBhbGwNCj4gPj4+Pj4gKyoq ICAgICBhc3JkIHpbMC05XStcLmQsIFwxL20sIHpbMC05XStcLmQsICMzDQo+ID4+Pj4+ICsqKiAg ICAgcmV0DQo+ID4+Pj4+ICsqLw0KPiA+Pj4+PiArRk9PKHN2dWludDY0X3QpDQo+ID4+Pj4+IC0t DQo+ID4+Pj4+IDIuNDMuMA0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gT24gMjIgT2N0IDIw MjUsIGF0IDc6MjHigK9QTSwgVGFtYXIgQ2hyaXN0aW5hDQo+IDxUYW1hci5DaHJpc3RpbmFAYXJt LmNvbT4gd3JvdGU6DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0 aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gPj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+ Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+Pj4gRnJvbTogUmljaGFy ZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiA+Pj4+Pj4+IFNlbnQ6IDIyIE9jdG9iZXIg MjAyNSAxNDozMA0KPiA+Pj4+Pj4+IFRvOiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGlu YUBhcm0uY29tPg0KPiA+Pj4+Pj4+IENjOiBTb3VteWEgQVIgPHNvdW15YWFAbnZpZGlhLmNvbT47 IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOw0KPiBLeXJ5bG8NCj4gPj4+Pj4+PiBUa2FjaG92IDxr dGthY2hvdkBudmlkaWEuY29tPg0KPiA+Pj4+Pj4+IFN1YmplY3Q6IFJFOiBbUEFUQ0hdIGFhcmNo NjQ6IFVzZSBTVkUgQVNSRCB3aXRoIHZlY3RvciBkaXZpc2lvbg0KPiB1c2luZw0KPiA+Pj4+Pj4+ IGRpdmlzaW9uIG9wZXJhdG9yDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBPbiBXZWQsIDIyIE9jdCAy MDI1LCBUYW1hciBDaHJpc3RpbmEgd3JvdGU6DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+Pj4+PiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8 cmd1ZW50aGVyQHN1c2UuZGU+DQo+ID4+Pj4+Pj4+PiBTZW50OiAyMiBPY3RvYmVyIDIwMjUgMTQ6 MDUNCj4gPj4+Pj4+Pj4+IFRvOiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0u Y29tPg0KPiA+Pj4+Pj4+Pj4gQ2M6IFNvdW15YSBBUiA8c291bXlhYUBudmlkaWEuY29tPjsgZ2Nj LQ0KPiBwYXRjaGVzQGdjYy5nbnUub3JnOyBLeXJ5bG8NCj4gPj4+Pj4+Pj4+IFRrYWNob3YgPGt0 a2FjaG92QG52aWRpYS5jb20+DQo+ID4+Pj4+Pj4+PiBTdWJqZWN0OiBSRTogW1BBVENIXSBhYXJj aDY0OiBVc2UgU1ZFIEFTUkQgd2l0aCB2ZWN0b3IgZGl2aXNpb24NCj4gdXNpbmcNCj4gPj4+Pj4+ Pj4+IGRpdmlzaW9uIG9wZXJhdG9yDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gT24gV2VkLCAy MiBPY3QgMjAyNSwgVGFtYXIgQ2hyaXN0aW5hIHdyb3RlOg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+PiBIaSBTb3VteWEsDQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+Pj4+Pj4gRnJvbTogU291bXlhIEFSIDxzb3VteWFhQG52 aWRpYS5jb20+DQo+ID4+Pj4+Pj4+Pj4+IFNlbnQ6IDEzIE9jdG9iZXIgMjAyNSAxMzo0Mg0KPiA+ Pj4+Pj4+Pj4+PiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4N Cj4gPj4+Pj4+Pj4+Pj4gQ2M6IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBLeXJ5bG8gVGthY2hv dg0KPiA8a3RrYWNob3ZAbnZpZGlhLmNvbT47DQo+ID4+Pj4+Pj4+Pj4+IFJpY2hhcmQgQmllbmVy IDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gPj4+Pj4+Pj4+Pj4gU3ViamVjdDogUmU6IFtQQVRDSF0g YWFyY2g2NDogVXNlIFNWRSBBU1JEIHdpdGggdmVjdG9yIGRpdmlzaW9uDQo+IHVzaW5nDQo+ID4+ Pj4+Pj4+Pj4+IGRpdmlzaW9uIG9wZXJhdG9yDQo+ID4+Pj4+Pj4+Pj4+IEltcG9ydGFuY2U6IEhp Z2gNCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+Pj4+IE9uIDEzIE9jdCAyMDI1LCBhdCAxOjQ44oCvUE0sIFRhbWFyIENocmlzdGluYQ0KPiA+ Pj4+Pj4+Pj4gPFRhbWFyLkNocmlzdGluYUBhcm0uY29tPg0KPiA+Pj4+Pj4+Pj4+PiB3cm90ZToN Cj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRp b24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBIaSBTb3VteWEsDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4+Pj4gVGhlIDEwLzEzLzIwMjUgMDc6MDUsIFNvdW15YSBBUiB3cm90ZToNCj4gPj4+Pj4+ Pj4+Pj4+PiBUaGUgQVNSRCBpbnN0cnVjdGlvbiBvbiBTVkUgcGVyZm9ybXMgYW4gYXJpdGhtZXRp YyBzaGlmdCByaWdodA0KPiBieSBhbg0KPiA+Pj4+Pj4+Pj4+PiBpbW1lZGlhdGUNCj4gPj4+Pj4+ Pj4+Pj4+PiBmb3IgZGl2aWRlLiBUaGlzIHBhdGNoIGVuYWJsZXMgQVNSRCB3aGVuIGRpdmlkaW5n IHZlY3RvcnMNCj4gdXNpbmcgdGhlDQo+ID4+Pj4+Pj4gR05VDQo+ID4+Pj4+Pj4+PiBDDQo+ID4+ Pj4+Pj4+Pj4+Pj4gZGl2aXNpb24gb3BlcmF0b3IuDQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+Pj4+PiBGb3IgZXhhbXBsZToNCj4gPj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+IGlu dDMyeDRfdA0KPiA+Pj4+Pj4+Pj4+Pj4+IGZvbyAoaW50MzJ4NF90IHgpDQo+ID4+Pj4+Pj4+Pj4+ Pj4gew0KPiA+Pj4+Pj4+Pj4+Pj4+IHJldHVybiB4IC8gNDsNCj4gPj4+Pj4+Pj4+Pj4+PiB9DQo+ ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiBzdmludDMyX3QNCj4gPj4+Pj4+Pj4+Pj4+ PiBiYXIgKHN2aW50MzJfdCB4KQ0KPiA+Pj4+Pj4+Pj4+Pj4+IHsNCj4gPj4+Pj4+Pj4+Pj4+PiBy ZXR1cm4geCAvIDQ7DQo+ID4+Pj4+Pj4+Pj4+Pj4gfQ0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+Pj4+Pj4gY3VycmVudGx5IGdlbmVyYXRlcyBhIERJViwgYnV0IGNhbiBiZSBkb25lIHVzaW5n IEFTUkQuDQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiBUaGUgcGF0Y2ggd2FzIGJv b3RzdHJhcHBlZCBhbmQgcmVndGVzdGVkIG9uIGFhcmNoNjQtbGludXgtDQo+IGdudSwgbm8NCj4g Pj4+Pj4+Pj4+Pj4gcmVncmVzc2lvbi4NCj4gPj4+Pj4+Pj4+Pj4+PiBPSyBmb3IgR0NDMTY/DQo+ ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBTb3VteWEgQVIg PHNvdW15YWFAbnZpZGlhLmNvbT4NCj4gPj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+IGdj Yy9DaGFuZ2VMb2c6DQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiAqIGV4cG1lZC5j YyAoZXhwYW5kX2Rpdm1vZCk6IEV4cGFuZCB0byBzZGl2X3BvdzIgb3B0YWINCj4gZm9yDQo+ID4+ Pj4+Pj4+PiB2ZWN0b3JzLg0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4gZ2NjL3Rl c3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiAqIGdj Yy50YXJnZXQvYWFyY2g2NC9zdmUvc3ZlLWFzcmQtMi5jOiBOZXcgdGVzdC4NCj4gPj4+Pj4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gSGkgVGFt YXIsDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IFRoYW5rcyBmb3IgdGhlIHF1aWNrIHJl dmlldyENCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IFRoZSB0ZXN0IGlzIE9LLCBidXQg eW91J2xsIG5lZWQgYSBtaWRkbGUtZW5kIG1haW50YWluZXIgZm9yIHRoZQ0KPiA+Pj4+Pj4+IGV4 cG1lZC5jYw0KPiA+Pj4+Pj4+Pj4+PiBjaGFuZ2VzLg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+ Pj4+PiBNeSBiYWQsIENDJ2luZyBSaWNoaSBoZXJlIGFzIHdlbGwuDQo+ID4+Pj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+Pj4+PiBCdXQgdGhhdCBzYWlkLi4uDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+ Pj4+Pj4gZGlmZiAtLWdpdCBhL2djYy9leHBtZWQuY2MgYi9nY2MvZXhwbWVkLmNjDQo+ID4+Pj4+ Pj4+Pj4+PiBpbmRleCBkZjA5Y2JjY2QwOC4uYTM1YWEyMjlkNDQgMTAwNjQ0DQo+ID4+Pj4+Pj4+ Pj4+PiAtLS0gYS9nY2MvZXhwbWVkLmNjDQo+ID4+Pj4+Pj4+Pj4+PiArKysgYi9nY2MvZXhwbWVk LmNjDQo+ID4+Pj4+Pj4+Pj4+PiBAQCAtNDQ2NSw2ICs0NDY1LDI0IEBAIGV4cGFuZF9kaXZtb2Qg KGludCByZW1fZmxhZywNCj4gZW51bQ0KPiA+Pj4+Pj4+Pj4gdHJlZV9jb2RlDQo+ID4+Pj4+Pj4+ Pj4+IGNvZGUsIG1hY2hpbmVfbW9kZSBtb2RlLA0KPiA+Pj4+Pj4+Pj4+Pj4gIHsNCj4gPj4+Pj4+ Pj4+Pj4+ICBjYXNlIFRSVU5DX01PRF9FWFBSOg0KPiA+Pj4+Pj4+Pj4+Pj4gIGNhc2UgVFJVTkNf RElWX0VYUFI6DQo+ID4+Pj4+Pj4+Pj4+PiArICAgICAgIGlmIChDT05TVF9WRUNUT1JfUCAob3Ax KQ0KPiA+Pj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgJiYgb3B0YWJfaGFuZGxlciAoc2Rpdl9wb3cy X29wdGFiLCBtb2RlKSAhPQ0KPiA+Pj4+Pj4+Pj4gQ09ERV9GT1Jfbm90aGluZykNCj4gPj4+Pj4+ Pj4+Pj4+ICsgICAgICAgICB7DQo+ID4+Pj4+Pj4+Pj4+PiArICAgICAgICAgICBydHggc2NhbGFy X29wMSA9IHVud3JhcF9jb25zdF92ZWNfZHVwbGljYXRlIChvcDEpOw0KPiA+Pj4+Pj4+Pj4+Pj4g KyAgICAgICAgICAgaWYgKHNjYWxhcl9vcDEgIT0gTlVMTF9SVFggJiYgQ09OU1RfSU5UX1ANCj4g KHNjYWxhcl9vcDEpKQ0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IFlvdSBjYW4gc2lt cGxpZnkgdGhpcyB1c2luZyBjb25zdF92ZWNfZHVwbGljYXRlX3AuDQo+ID4+Pj4+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICB7DQo+ID4+Pj4+Pj4+Pj4+PiArICAgICAgICAg ICAgICAgSE9TVF9XSURFX0lOVCBkID0gSU5UVkFMIChzY2FsYXJfb3AxKTsNCj4gPj4+Pj4+Pj4+ Pj4+ICsgICAgICAgICAgICAgICBpZiAoZCA+IDAgJiYgcG93MnBfaHdpIChkKSkNCj4gPj4+Pj4+ Pj4+Pj4+ICsgICAgICAgICAgICAgICAgIHsNCj4gPj4+Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgcnR4IHNoaWZ0X2Ftb3VudA0KPiA+Pj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgID0gZ2VuX2NvbnN0X3ZlY19kdXBsaWNhdGUgKG1vZGUsDQo+ID4+Pj4+Pj4+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VOX0lOVCAoZmxv b3JfbG9nMiAoZCkpKTsNCj4gPj4+Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgcmV0dXJu IGV4cGFuZF9iaW5vcCAobW9kZSwgc2Rpdl9wb3cyX29wdGFiLA0KPiBvcDAsDQo+ID4+Pj4+Pj4+ Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0X2Ftb3Vu dCwgdGFyZ2V0LCB1bnNpZ25lZHAsDQo+ID4+Pj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZHMpOw0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+Pj4+IFRoaXMgZXhwYW5zaW9uIGNhbiBmYWlsLCB3aGVuIGUuZy4gdGhlIHNoaWZ0IGFtb3Vu dCBpcyBsYXJnZXIgdGhhbg0KPiB0aGUNCj4gPj4+Pj4+Pj4+IGJpdHNpemUNCj4gPj4+Pj4+Pj4+ Pj4gb2YgdGhlIGVsZW1lbnQsDQo+ID4+Pj4+Pj4+Pj4+PiBzbyB5b3Ugc2hvdWxkIGNoZWNrIHRo ZSByZXN1bHQgb2YgaXQgYmVmb3JlIGV4aXRpbmcgZnJvbQ0KPiA+Pj4+Pj4+IGV4cGFuZF9kaXZt b2QuDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBNYWtlcyBz ZW5zZSwgYXR0YWNoaW5nIGFuIHVwZGF0ZWQgcGF0Y2ggd2l0aCBib3RoIGNoYW5nZXMuDQo+ID4+ Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiBUaGUgbmV3IHBhdGNoIGxvb2tz IE9LIHRvIG1lIChpdCB1c2VzIHRoZSBvbGQgaW50ZXJmYWNlIGJ1dCB0aGF0J3MNCj4gd2hhdA0K PiA+Pj4+Pj4+IG1vc3QNCj4gPj4+Pj4+Pj4+IG9mDQo+ID4+Pj4+Pj4+Pj4gZXhwbWVkIHVzZXMp Lg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gSSB0aGluayB5b3VyIGNvdmVyIGxldHRlciBu ZWVkcyB0byBtZW50aW9uIHRoYXQgd2UgY2FuJ3QgZG8gdGhpcyBpbg0KPiB0aGUNCj4gPj4+Pj4+ Pj4+IGJhY2tlbmQgYmVjYXVzZQ0KPiA+Pj4+Pj4+Pj4+IEFkdi4gU0lNRCBsYWNrcyBhIGRpdmlz aW9uIGluc3RydWN0aW9uIGFuZCB0aGF0IHRoZSBkZWNvbXBvc2l0aW9uDQo+IGlzDQo+ID4+Pj4+ Pj4gaGFyZGVyDQo+ID4+Pj4+Pj4+PiB0byBtYXRjaA0KPiA+Pj4+Pj4+Pj4+IGNvcnJlY3RseSBp biBhbGwgY2FzZXMuDQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiBUaGF0IHNhaWQgeW91IHN0 aWxsIG5lZWQgYSBtaWRkbGUtZW5kIG1haW50YWluZXIgYXBwcm92YWwuDQo+ID4+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+Pj4gU28gdGhlIGJhY2tlbmQgYWR2ZXJ0aXNlcyBhIHZlY3RvciBkaXZpc2lvbj8g IE90aGV3aXNlIEkgd291bGQNCj4gaGF2ZQ0KPiA+Pj4+Pj4+Pj4gZXhwZWN0ZWQgdmVjdG9yIGxv d2VyaW5nIHRvIGxvd2VyIHRoaXMgKGlmIGl0IGRvZXMgdGhhdCBhdCBhbGwsIGZvcg0KPiA+Pj4+ Pj4+Pj4gVkxBIHZlY3RvcnM/ISkuDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gU28gdGhpcyBp cyBhbiBhbHRlcm5hdGl2ZSBiZXR0ZXIgZXhwYW5zaW9uIC0gYnV0IHRoZXJlIHNob3VsZCBhbHJl YWR5DQo+ID4+Pj4+Pj4+PiBiZSBnZW5lcmljIGNvZGUgdG8gZGVhbCB3aXRoIGRpdmlzaW9ucyBi eSBhIHBvd2VyIG9mIHR3bywgd2h5IGRvZXMNCj4gPj4+Pj4+Pj4+IHRoYXQgbm90IHRyaWdnZXI/ ICBBbmQgd2hhdCdzIHRoaXMgc2Rpdl9wb3cyIHRoaW5nIGFnYWluPw0KPiA+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+PiBZZXMsIGV4cGFuZCBpbnRlcmNlcHRzIGluIGV4cGFuZF9kaXZtb2QgZGl2aXNpb24g YnkgYSBwb3dlciBvZiAyDQo+IGFuZA0KPiA+Pj4+Pj4+IGRlY29tcG9zZXMNCj4gPj4+Pj4+Pj4g SXQgdG8gc2hpZnRzLiAgIFdlIGNvdWxkIHJlLXJlY29nbml6ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4g Y29tYmluZSBvZg0KPiBjb3Vyc2UsIGJ1dA0KPiA+Pj4+Pj4+IHdlIGFscmVhZHkNCj4gPj4+Pj4+ Pj4gaGF2ZSBhbiBvcHRhYiB0aGUgdmVjdG9yaXplciB3b3VsZCBoYXZlIHVzZWQgaW4gdGhpcyBj YXNlDQo+IFt1c11kaXZfcG93Miwgc2VlDQo+ID4+Pj4+Pj4+IHZlY3RfcmVjb2dfZGl2bW9kX3Bh dHRlcm4uICBTbyB0aGlzIGlzIGp1c3QgdGVhY2hpbmcgZXhwYW5kIGFib3V0DQo+IHRoZQ0KPiA+ Pj4+Pj4+IHNwZWNpYWwgZGl2aXNpb24gb2YNCj4gPj4+Pj4+Pj4gYSBwb3dlciBvZiAyIG9wdGFi IHRoYXQgdGhlIHZlY3Rvcml6ZXIgdXNlcyBmb3Igbm9ybWFsIHZlY3Rvcg0KPiBvcGVyYXRpb25z Lg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSSBjYW4ndCByZW1lbWJlciB0aGUgZGlmZmVyZW5jZSBv ZiBkaXZfcG93MiBhbmQgc2hpZnRzLCBidXQgaXQgZmVlbHMgbGlrZQ0KPiA+Pj4+Pj4+IHRoaXMg ZXhwYW5kLXRpbWUgaW1wcm92ZW1lbnQgc2hvdWxkIGJlIGRvbmUgYnkgZXhwYW5kX2Rpdm1vZA0K PiB0aGVuPw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFRoZSBwYXRjaCBkb2VzIGV4dGVuZCBleHBhbmRf ZGl2bW9kIHRob3VnaCwgYnV0IGRvZXMgdGhyb3VnaCBhbg0KPiBleGlzdGluZw0KPiA+Pj4+Pj4g b3B0YWIuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gVGhlIGlzc3VlIGlzIHRoYXQgc2lnbmVkbmVzcyBt YXR0ZXJzLA0KPiA+Pj4+Pj4gdGhpcyByZXdyaXRlIHRvIGFzcmQgaXMgb25seSBwb3NzaWJsZSBm b3Igc2lnbmVkIHZhbHVlcyBhcyBpdCdzIGFuDQo+IGFyaXRobWV0aWMgc2hpZnQuDQo+ID4+Pj4+ Pg0KPiA+Pj4+Pj4gRm9yIHVuc2lnbmVkIHZhbHVlcyB3ZSB3YW50IHVzaHIuDQo+ID4+Pj4+Pg0K PiA+Pj4+Pj4+ICdhc3JkJyBpcyBkZXNjcmliZWQgYXMgYXJpdGhtZXRpYyBzaGlmdCByaWdodCBm b3IgZGl2aWRlIGJ5IGltbWVkaWF0ZQ0KPiA+Pj4+Pj4+IHdoYXRldmVyIHRoZSBleGFjdCBkaWZm ZXJlbmNlIGZyb20gJ2FzcicgaXMgLi4uIHRoZSBkb2NzIHNheSBzdGgNCj4gPj4+Pj4+PiBhYm91 dCByb3VuZCB0b3dhcmRzIHplcm8sIGJ1dCB0aGVuIHdlJ3JlIHVzaW5nIGFyaXRobWV0aWMgcmln aHQgc2hpZnRzDQo+ID4+Pj4+Pj4gZm9yIHNpZ25lZCBkaXZpc2lvbiBhbHJlYWR5IC4uLg0KPiA+ Pj4+Pj4NCj4gPj4+Pj4+IFNWRSBkb2Vzbid0IHN1cHBvcnQgZGl2aXNpb24gYnkgaW1tZWRpYXRl cywgc28gU0RJViBvbmx5IHRha2VzIGENCj4gcmVnaXN0ZXIuDQo+ID4+Pj4+PiB3ZSBjb3VsZCBh bHdheXMgZXh0ZW5kIHRoZSBzZGl2IHBhdHRlcm4gdG8gc3VwcG9ydCBpbW1lZGlhdGVzLCBidXQg aXQNCj4gPj4+Pj4+IGRvZXMgZmVlbCBvZGQgZ2l2ZW4gd2UgaGF2ZSBhIGRpZmZlcmVudCBvcHRh YiBmb3IgdGhpcy4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBUaGFua3MsDQo+ID4+Pj4+PiBUYW1hcg0K PiA+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IFJpY2hhcmQuDQo+ID4+Pj4+Pj4NCj4gPj4+ Pj4+Pj4gVGhhbmtzLA0KPiA+Pj4+Pj4+PiBUYW1hcg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+IFJpY2hhcmQuDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IFRoYW5rcywN Cj4gPj4+Pj4+Pj4+PiBUYW1hcg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IFRoYW5rcywN Cj4gPj4+Pj4+Pj4+Pj4gU291bXlhDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBUaGFu a3MsDQo+ID4+Pj4+Pj4+Pj4+PiBUYW1hcg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+ ICsgICAgICAgICAgICAgICAgIH0NCj4gPj4+Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgfQ0KPiA+ Pj4+Pj4+Pj4+Pj4gKyAgICAgICAgIH0NCj4gPj4+Pj4+Pj4+Pj4+ICAgaWYgKG9wMV9pc19jb25z dGFudCkNCj4gPj4+Pj4+Pj4+Pj4+ICAgICB7DQo+ID4+Pj4+Pj4+Pj4+PiAgICAgICBzY2FsYXJf aW50X21vZGUgaW50X21vZGUgPSBhc19hIDxzY2FsYXJfaW50X21vZGU+DQo+ID4+Pj4+Pj4+Pj4+ IChjb21wdXRlX21vZGUpOw0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiAtLQ0KPiA+Pj4+Pj4+Pj4gUmljaGFyZCBCaWVu ZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiA+Pj4+Pj4+Pj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlv bnMgR2VybWFueSBHbWJILA0KPiA+Pj4+Pj4+Pj4gRnJhbmtlbnN0cmFzc2UgMTQ2LCA5MDQ2MSBO dWVybmJlcmcsIEdlcm1hbnk7DQo+ID4+Pj4+Pj4+PiBHRjogSXZvIFRvdGV2LCBBbmRyZXcgTWNE b25hbGQsIFdlcm5lciBLbm9ibGljaDsgKEhSQiAzNjgwOSwNCj4gQUcNCj4gPj4+Pj4+Pj4+IE51 ZXJuYmVyZykNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IC0tDQo+ID4+Pj4+Pj4g UmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiA+Pj4+Pj4+IFNVU0UgU29mdHdh cmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwNCj4gPj4+Pj4+PiBGcmFua2Vuc3RyYXNzZSAxNDYs IDkwNDYxIE51ZXJuYmVyZywgR2VybWFueTsNCj4gPj4+Pj4+PiBHRjogSXZvIFRvdGV2LCBBbmRy ZXcgTWNEb25hbGQsIFdlcm5lciBLbm9ibGljaDsgKEhSQiAzNjgwOSwgQUcNCj4gPj4+Pj4+PiBO dWVybmJlcmcpDQo+IA0KDQo=