From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Stellard Subject: Re: Some llvm questions (for tgsi backend) Date: Tue, 12 Jan 2016 10:08:44 -0500 Message-ID: <20160112150842.GA4742@yyz> References: <56938CE2.1010705@redhat.com> <20160111171008.GA27306@freedesktop.org> <56951356.2040005@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <56951356.2040005-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Hans de Goede Cc: "nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: nouveau.vger.kernel.org T24gVHVlLCBKYW4gMTIsIDIwMTYgYXQgMDM6NTM6MTBQTSArMDEwMCwgSGFucyBkZSBHb2VkZSB3 cm90ZToKPiBIaSBUb20sCj4gCj4gVGhhbmtzIGZvciB0YWtpbmcgdGhlIHRpbWUgdG8gYW5zd2Vy IHRoaXMuCj4gCj4gT24gMTEtMDEtMTYgMTg6MTAsIFRvbSBTdGVsbGFyZCB3cm90ZToKPiA+IE9u IE1vbiwgSmFuIDExLCAyMDE2IGF0IDEyOjA3OjE0UE0gKzAxMDAsIEhhbnMgZGUgR29lZGUgd3Jv dGU6Cj4gPj4gSGksCj4gPj4KPiA+PiBBZnRlciBhIGZldyBkaXN0cmFjdGlvbnMgSSdtIGJhY2sg dG8gd29yayBvbiB0aGUgbGx2bSB0Z3NpIGJhY2tlbmQuIEkndmUKPiA+PiBhZGRlZCBjbGFuZyBp bnRlZ3JhdGlvbiBhbmQgSSBjYW4gbm93IGNvbXBpbGUgYSBzaW1wbGUgb3BlbmNsIHByb2dyYW0K PiA+PiB0byBzb21ldGhpbmcgd2hpY2ggc29ydCBvZiBsb29rcyBsaWtlIHRnc2kuCj4gPj4KPiA+ PiBZb3UgY2FuIGZpbmQgbXkgbGF0ZXN0IHdvcmsgb24gdGhpcyBoZXJlOgo+ID4+IGh0dHA6Ly9j Z2l0LmZyZWVkZXNrdG9wLm9yZy9+andyZGVnb2VkZS9sbHZtCj4gPj4gaHR0cDovL2NnaXQuZnJl ZWRlc2t0b3Aub3JnL35qd3JkZWdvZWRlL2NsYW5nCj4gPj4gKHRoZSBsYXR0ZXIgbWF5IHN0aWxs IG5lZWQgdG8gc3luYykKPiA+Pgo+ID4+IEkndmUgYSBsaXR0bGUgdGVzdCBwcm9ncmFtIG9mIHdo aWNoIEkgaGF2ZSAzIHZlcnNpb25zIG5vdywKPiA+PiAxIHJhdyBnYWxsaXVtIGNhbGxzICsgYSB0 Z3NpIGtlcm5lbAo+ID4+IDIgb3BlbmNsIGNhbGxzIHRvIGNsb3ZlciArIGEgdGdzaSBrZXJuZWwK PiA+PiAzIG9wZW5jbCBjYWxscyB0byBjbG92ZXIgKyBhbiBvcGVuY2wga2VybmVsCj4gPj4KPiA+ PiAxIGFuZCAyIGhhdmUgYmVlbiB0ZXN0ZWQgb24gYSBrZXBsZXIgY2FyZCwgMyBoYXMgYmVlbgo+ ID4+IHRlc3RlZCB3aXRoIHBvY2wuIE15IGdvYWwgZm9yIHRoaXMgd2VlayBpcyB0byBnZXQKPiA+ PiB0aGUgdGdzaSBiYWNrZW5kIHRvIHByb2R1Y2UgY29kZSB3aGljaCBJIGNhbiBjb3B5Cj4gPj4g YW5kIHBhc3RlIGludG8gMiBhbmQgdGhlbiBoYXZlIGl0IHdvcmtpbmcgb24gYSBrZXBsZXIgY2Fy ZC4KPiA+Pgo+ID4+IFRoZSB0ZXN0IHByb2dyYW0gbG9va3MgbGlrZSB0aGlzOgo+ID4+Cj4gPj4g X19rZXJuZWwgdm9pZCB0ZXN0X2tlcm4oX19nbG9iYWwgdWludCAqdmFscywgX19nbG9iYWwgdWlu dCAqYnVmKQo+ID4+IHsKPiA+PiAgICB1aW50IGlkID0gZ2V0X2dsb2JhbF9pZCgwKTsKPiA+Pgo+ ID4+ICAgIGJ1ZlszMiAqIGlkXSAtPSB2YWxzW2lkXTsKPiA+PiB9Cj4gPj4KPiA+PiBUaGUgbGx2 bSBpciBsb29rcyBsaWtlIHRoaXM6Cj4gPj4KPiA+PiBiaW4vY2xhbmcgLXggY2wgLWMgLWVtaXQt bGx2bSAtdGFyZ2V0IHRnc2ktLSAtaW5jbHVkZSAvdXNyL3NoYXJlL3BvY2wvaW5jbHVkZS9fa2Vy bmVsLmggLW8gfi9mb28uaXIgLXggY2wgLVMgfi9mb28uY2wKPiA+Pgo+ID4+IDsgTW9kdWxlSUQg PSAnL2hvbWUvaGFucy9mb28uY2wnCj4gPj4gdGFyZ2V0IGRhdGFsYXlvdXQgPSAiRS1wOjMyOjMy LWk2NDo2NDo2NC1mMzI6MzI6MzItbjMyIgo+ID4+IHRhcmdldCB0cmlwbGUgPSAidGdzaS0tIgo+ ID4+Cj4gPj4gOyBGdW5jdGlvbiBBdHRyczogbm91bndpbmQKPiA+PiBkZWZpbmUgdm9pZCBAdGVz dF9rZXJuKGkzMiBhZGRyc3BhY2UoMSkqIG5vY2FwdHVyZSByZWFkb25seSAldmFscywgaTMyIGFk ZHJzcGFjZSgxKSogbm9jYXB0dXJlICVidWYpICMwIHsKPiA+PiBlbnRyeToKPiA+PiAgICAlY2Fs bCA9IHRhaWwgY2FsbCBpMzIgQF9aMTNnZXRfZ2xvYmFsX2lkaihpMzIgMCkgIzIKPiA+PiAgICAl YXJyYXlpZHggPSBnZXRlbGVtZW50cHRyIGluYm91bmRzIGkzMiwgaTMyIGFkZHJzcGFjZSgxKSog JXZhbHMsIGkzMiAlY2FsbAo+ID4+ICAgICUwID0gbG9hZCBpMzIsIGkzMiBhZGRyc3BhY2UoMSkq ICVhcnJheWlkeCwgYWxpZ24gNCwgIXRiYWEgITcKPiA+PiAgICAlbXVsID0gc2hsIGkzMiAlY2Fs bCwgNQo+ID4+ICAgICVhcnJheWlkeDEgPSBnZXRlbGVtZW50cHRyIGluYm91bmRzIGkzMiwgaTMy IGFkZHJzcGFjZSgxKSogJWJ1ZiwgaTMyICVtdWwKPiA+PiAgICAlMSA9IGxvYWQgaTMyLCBpMzIg YWRkcnNwYWNlKDEpKiAlYXJyYXlpZHgxLCBhbGlnbiA0LCAhdGJhYSAhNwo+ID4+ICAgICVzdWIg PSBzdWIgaTMyICUxLCAlMAo+ID4+ICAgIHN0b3JlIGkzMiAlc3ViLCBpMzIgYWRkcnNwYWNlKDEp KiAlYXJyYXlpZHgxLCBhbGlnbiA0LCAhdGJhYSAhNwo+ID4+ICAgIHJldCB2b2lkCj4gPj4gfQo+ ID4+Cj4gPj4gZGVjbGFyZSBpMzIgQF9aMTNnZXRfZ2xvYmFsX2lkaihpMzIpICMxCj4gPj4KPiA+ PiBhdHRyaWJ1dGVzICMwID0geyBub3Vud2luZCAiZGlzYWJsZS10YWlsLWNhbGxzIj0iZmFsc2Ui ICJsZXNzLXByZWNpc2UtZnBtYWQiPSJmYWxzZSIgIm5vLWZyYW1lLXBvaW50ZXItZWxpbSI9InRy dWUiICJuby1mcmFtZS1wb2ludGVyLWVsaW0tbm9uLWxlYWYiICJuby1pbmZzLWZwLW1hdGgiPSJm YWxzZSIgIm5vLW5hbnMtZnAtbWF0aCI9ImZhbHNlIiAic3RhY2stcHJvdGVjdG9yLWJ1ZmZlci1z aXplIj0iOCIgInVuc2FmZS1mcC1tYXRoIj0iZmFsc2UiICJ1c2Utc29mdC1mbG9hdCI9ImZhbHNl IiB9Cj4gPj4gYXR0cmlidXRlcyAjMSA9IHsgImRpc2FibGUtdGFpbC1jYWxscyI9ImZhbHNlIiAi bGVzcy1wcmVjaXNlLWZwbWFkIj0iZmFsc2UiICJuby1mcmFtZS1wb2ludGVyLWVsaW0iPSJ0cnVl IiAibm8tZnJhbWUtcG9pbnRlci1lbGltLW5vbi1sZWFmIiAibm8taW5mcy1mcC1tYXRoIj0iZmFs c2UiICJuby1uYW5zLWZwLW1hdGgiPSJmYWxzZSIgInN0YWNrLXByb3RlY3Rvci1idWZmZXItc2l6 ZSI9IjgiICJ1bnNhZmUtZnAtbWF0aCI9ImZhbHNlIiAidXNlLXNvZnQtZmxvYXQiPSJmYWxzZSIg fQo+ID4+IGF0dHJpYnV0ZXMgIzIgPSB7IG5vdW53aW5kIH0KPiA+Pgo+ID4+ICFvcGVuY2wua2Vy bmVscyA9ICF7ITB9Cj4gPj4gIWxsdm0uaWRlbnQgPSAheyE2fQo+ID4+Cj4gPj4gITAgPSAhe3Zv aWQgKGkzMiBhZGRyc3BhY2UoMSkqLCBpMzIgYWRkcnNwYWNlKDEpKikqIEB0ZXN0X2tlcm4sICEx LCAhMiwgITMsICE0LCAhNX0KPiA+PiAhMSA9ICF7ISJrZXJuZWxfYXJnX2FkZHJfc3BhY2UiLCBp MzIgMSwgaTMyIDF9Cj4gPj4gITIgPSAheyEia2VybmVsX2FyZ19hY2Nlc3NfcXVhbCIsICEibm9u ZSIsICEibm9uZSJ9Cj4gPj4gITMgPSAheyEia2VybmVsX2FyZ190eXBlIiwgISJ1aW50KiIsICEi dWludCoifQo+ID4+ICE0ID0gIXshImtlcm5lbF9hcmdfYmFzZV90eXBlIiwgISJ1aW50KiIsICEi dWludCoifQo+ID4+ICE1ID0gIXshImtlcm5lbF9hcmdfdHlwZV9xdWFsIiwgISIiLCAhIiJ9Cj4g Pj4gITYgPSAheyEiY2xhbmcgdmVyc2lvbiAzLjguMCAoaHR0cDovL2xsdm0ub3JnL2dpdC9jbGFu Zy5naXQgOTM3NmY5OTJlMDA1NjliZDA4YTRlY2YzYTFkMDZkOGI5M2M5NzY4MSkgKGh0dHA6Ly9s bHZtLm9yZy9naXQvbGx2bS5naXQgN2EzMTExNDM1NTBjNmZjMDFhYTUwMDAwNDk4MjVlY2MwOTc4 NzQ0MCkifQo+ID4+ICE3ID0gIXshOCwgITgsIGk2NCAwfQo+ID4+ICE4ID0gIXshImludCIsICE5 LCBpNjQgMH0KPiA+PiAhOSA9ICF7ISJvbW5pcG90ZW50IGNoYXIiLCAhMTAsIGk2NCAwfQo+ID4+ ICExMCA9ICF7ISJTaW1wbGUgQy9DKysgVEJBQSJ9Cj4gPj4KPiA+PiBBbmQgdGhlICJ0Z3NpIiBs b29rcyBsaWtlIHRoaXM6Cj4gPj4KPiA+PiAgICAgICAgICAudGV4dAo+ID4+ICAgICAgICAgIC5m aWxlICAgIi9ob21lL2hhbnMvZm9vLmNsIgo+ID4+ICAgICAgICAgIC5nbG9ibCAgdGVzdF9rZXJu Cj4gPj4gdGVzdF9rZXJuOgo+ID4+ICAgICAgICAgIEJHTlNVQgo+ID4+ICAgICAgICAgIE1PVmlz IFRFTVAxeCwgMAo+ID4+ICAgICAgICAgIENBTCBfWjEzZ2V0X2dsb2JhbF9pZGoKPiA+PiAgICAg ICAgICBTSExzIFRFTVAxeSwgVEVNUDF4LCA3Cj4gPj4gICAgICAgICAgTE9BRGlpcyBURU1QMXos IFs0XQo+ID4+ICAgICAgICAgIFVBRERzIFRFTVAxeSwgVEVNUDF6LCBURU1QMXkKPiA+PiAgICAg ICAgICBTSExzIFRFTVAxeCwgVEVNUDF4LCAyCj4gPj4gICAgICAgICAgTE9BRGlpcyBURU1QMXos IFswXQo+ID4+ICAgICAgICAgIFVBRERzIFRFTVAxeCwgVEVNUDF6LCBURU1QMXgKPiA+PiAgICAg ICAgICBMT0FEZ2lzIFRFTVAxeCwgW1RFTVAxeF0KPiA+PiAgICAgICAgICBJTkVHcyBURU1QMXgs IFRFTVAxeAo+ID4+ICAgICAgICAgIExPQURnaXMgVEVNUDF6LCBbVEVNUDF5XQo+ID4+ICAgICAg ICAgIFVBRERzIFRFTVAxeCwgVEVNUDF4LCBURU1QMXoKPiA+PiAgICAgICAgICBTVE9SRWdpcyBb VEVNUDF5XSwgVEVNUDF4Cj4gPj4gICAgICAgICAgUkVUCj4gPj4gICAgICAgICAgRU5EU1VCCj4g Pj4KPiA+PiBXb3JraW5nIHRnc2kgZm9yIHRoaXMgd291bGQgbG9vayBsaWtlIHRoaXM6Cj4gPj4K PiA+PiBDT01QCj4gPj4gRENMIFNWWzBdLCBUSFJFQURfSURbMF0KPiA+PiBEQ0wgVEVNUFswXSwg TE9DQUwKPiA+PiBEQ0wgVEVNUFsxXSwgTE9DQUwKPiA+PiBJTU0gVUlOVDMyIHsgMCwgMCwgMCwg MCB9Cj4gPj4gSU1NIFVJTlQzMiB7IDQsIDAsIDAsIDAgfQo+ID4+IElNTSBVSU5UMzIgeyAxMjgs IDAsIDAsIDAgfQo+ID4+Cj4gPj4gQkdOU1VCCj4gPj4gICAgICAgICBMT0FEIFRFTVBbMF0ueHks IFJJTlBVVCwgSU1NWzBdCj4gPj4gICAgICAgICBVTVVMIFRFTVBbMV0ueCwgU1ZbMF0sIElNTVsx XQo+ID4+ICAgICAgICAgVUFERCBURU1QWzBdLngsIFRFTVBbMF0sIFRFTVBbMV0KPiA+PiAgICAg ICAgIFVNVUwgVEVNUFsxXS54LCBTVlswXSwgSU1NWzJdCj4gPj4gICAgICAgICBVQUREIFRFTVBb MF0ueSwgVEVNUFswXSwgVEVNUFsxXS54eHh4Cj4gPj4gICAgICAgICBMT0FEIFRFTVBbMV0ueCwg UkdMT0JBTCwgVEVNUFswXQo+ID4+ICAgICAgICAgTE9BRCBURU1QWzBdLngsIFJHTE9CQUwsIFRF TVBbMF0ueXl5eQo+ID4+ICAgICAgICAgVUFERCBURU1QWzFdLngsIFRFTVBbMF0sIC1URU1QWzFd Cj4gPj4gICAgICAgICBTVE9SRSBSR0xPQkFMLngsIFRFTVBbMF0ueXl5eSwgVEVNUFsxXQo+ID4+ ICAgICAgICAgUkVUCj4gPj4gRU5EU1VCOwo+ID4+Cj4gPj4gU28gbXkgcXVlc3Rpb25zIChJJ20g c3RpbGwgcXVpdGUgZ3JlZW4gd2hlbiBpdCBjb21lcyB0byBsbHZtKToKPiA+Pgo+ID4+IDEpIEFz IHlvdSBjYW4gc2VlIGEgcHJvcGVyIHRnc2kgcHJvZ3JhbSBuZWVkcyBhIGhlYWRlcgo+ID4+IHRv IGRlY2xhcmUgd2hpY2ggcmVnaXN0ZXJzIChldGMpIGl0IGlzIHVzaW5nLCBpbiB3aGljaAo+ID4+ IGNsYXNzLW1ldGhvZCBzaG91bGQgSSBpbXBsZW1lbnQgdGhpcyA/Cj4gPj4KPiA+Cj4gPiBUaGVz ZSBraW5kcyBvZiB0aGluZ3Mgc2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhlIFRHU0kgaW1wbGVtZW50 YXRpb24gb2YgdGhlCj4gPiBBc21QcmludGVyIGNsYXNzOiBodHRwOi8vbGx2bS5vcmcvZG9jcy9k b3h5Z2VuL2h0bWwvY2xhc3NsbHZtXzFfMUFzbVByaW50ZXIuaHRtbAo+ID4gWW91IHByb2JhYmx5 IHdhbnQgdG8gdXNlIEVtaXRTdGFydE9mQXNtRmlsZSgpIGZvciB0aGUgaGVhZGVycy4KPiAKPiBP aywgaXMgdGhlcmUgYW4gZWFzeSB3YXkgdG8gc3VwcHJlc3MgdGhlIGdlbmVyYXRpb24gb2Y6Cj4g Cj4gICAgICAgICAgLnRleHQKPiAgICAgICAgICAuZmlsZSAgICIvaG9tZS9oYW5zL2Zvby5jbCIK PiAgICAgICAgICAuZ2xvYmwgIHRlc3Rfa2Vybgo+IAo+ID8KPiAKCi5maWxlIGNhbiBiZSBhdm9p ZGVkIHByZXR0eSBlYXNpbHkuICBZb3UnbGwgaGF2ZSB0byBsb29rIHRocm91Z2ggdGhlIE1DCmNv ZGUgdG8gc2VlIHdoYXQgYml0IHlvdSBuZWVkIHRvIHNldCB0byBkaXNhYmxlIGl0LiAgSG93ZXZl ciwgd2h5CmRvIHlvdSBub3Qgd2FudCB0byBlbWl0IHRoZXNlPyAgSSB0aGluayB0aGUgZWFzaWVz dCB0aGluayB0byBkbyBpcwprZWVwIHRoZSBFTEYgZm9ybWF0IGFuZCBqdXN0IGhhdmUgY2xvdmVy IGV4dHJhY3QgdGhlIGJpbmFyeSBjb2RlCmZyb20gdGhlIC50ZXh0IHNlY3Rpb24uCgpTZWUgZ2Fs bGl1bS9kcml2ZXJzL3JhZGVvbi9yYWRlb25fZWxmX3V0aWwuYwoKPiBJdCBzZWVtcyBJIG5lZWQg dG8gdGFja2xlIGFsbCAzIG9mIHRob3NlIHNlcGFyYXRlbHkgPwo+IAo+ID4+IDIpIEltbWVkaWF0 ZXMgbmVlZCB0byBiZSBkZWNsYXJlZCB3aXRoIGEgc3BlY2lmaWMKPiA+PiB2YWx1ZSBhbmQgdGhl biBhZGRyZXNzZWQgYXMgSU1NW3hdLCBob3cgd291bGQgSSBnbyBhYm91dAo+ID4+IHRoaXMgPwo+ ID4+Cj4gPgo+ID4gSSB3b3VsZCByZWNvbW1lbmQgYWRkaW5nIGEgcGFzcyB0aGF0IHJlcGxhY2Vk IGltbWVkaWF0ZXMgaW4gdGhlIGNvZGUgd2l0aAo+ID4gSU1NIGZpbGUgcmVnaXRzZXIgYWNjZXNz ZXMuCj4gCj4gVGhpbmtpbmcgbW9yZSBhYm91dCB0aGlzLCBJIGJlbGlldmUgSSBjYW4gdXNlIHRo ZSBleGlzdGluZyBjb25zdAo+IG1lY2hhbmlzbSBmb3IgdGhpcyAoYW5kIHRoZW4gYWRkIGEgY29u c3QgZ2VuZXJhdGlvbiBwYXNzIHRvIEFzbVByaW50ZXIpLgo+IAoKSSB3b3VsZCByZWNvbW1lbmQg bm90IGRvaW5nIHRoaXMga2luZCBvZiB0aGluZyBpbiB0aGUgQXNtUHJpbnRlciBpZiB5b3UKY2Fu IGF2b2lkIGl0LiAgSSByZWFsbHkgdGhpbmsgeW91IHNob3VsZCBiZSBhYmxlIHRvIGRvIHRoaXMg aW4gYQpNYWNoaW5lSW5zdHIgcGFzcy4KCj4gSG93IGRvIEkgdGVsbCBsbHZtIHRvIG5ldmVyIGdl bmVyYXRlIGluc3RydWN0aW9ucyB1c2luZyBpbW1lZGlhdGVzCj4gYW5kIHRvIGluc3RlYWQgYWx3 YXlzIHVzZSB0aGUgY29uc3QgYWRkcmVzcyBzcGFjZSBmb3IgdGhpcyA/Cj4gCgpMTFZNIHVzdWFs bHkgd29uJ3QgcHV0IGltbWVkaWF0ZXMgaW50byBpbnN0cnVjdGlvbnMgdW5sZXNzIHlvdSBoYXZl IGEKVGFibGVHZW4gcGF0dGVybiB0aGF0IHRlbGxzIGl0IHRvIGRvIHRoaXMuICBJIHN1c3BlY3Qg eW91IHByb2JhYmx5IGhhdmUKc29tZSBwYXR0ZXJucyBsaWtlIHRoaXMuCgo+ID4+IDMpIFRoZSBn ZXRfZ2xvYmFsX2lkIGNhbGwgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZCBpbnRvCj4gPj4gc2ltcGx5 IHVzaW5nIHRoZSBTVlswXSAicmVnaXN0ZXIiLCBob3cgd291bGQgSSBnbyBhYm91dAo+ID4+IHRo aXMgPwo+ID4+Cj4gPgo+ID4gZ2V0X2dsb2JhbF9pZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4g bGliY2xjIHdpdGggdGdzaSBzcGVjaWZpYyBpbnRyaW5zaWNzCj4gPiB0aGF0IHJlYWQgZnJvbSB0 aGUgc3lzdGVtIHZhbHVlIHJlZ2lzdGVycy4KPiAKPiBJIHNlZSBJIHdpbGwgaW52ZXN0aWdhdGUg dGhpcyBmdXJ0aGVyLgo+IAo+ID4+IDQpIFRoZSBnbG9iYWwgYW5kIGlucHV0IGxvYWQgLyBzdG9y ZXMgYXJlIG5vdCBoYW5kbGVkCj4gPj4gY29ycmVjdGx5LCBJIHNlZSB0aGF0IHRoZSBMT0FEIGlu c3RydWN0aW9ucyBnZXQgcG9zdGZpeGVkCj4gPj4gd2l0aCBhIGkgcmVwcy4gZyBmb3IgaW5wdXQg LyBnbG9iYWwgaG93IHdvdWxkIEkgZ28gYWJvdXQKPiA+PiBtb2RpZnlpbmcgdGhlIGNvZGUgZW1p dHRlciAoQXNtUHJpbnRlcj8pIHRvIGNoYW5nZSAiTE9BRGkiCj4gPj4gaW50byAiTE9BRCA8ZGVz dD4gUklOUFVUIDxvZmZzZXQ+Ij8KPiA+Pgo+ID4KPiA+IEkgZG9uJ3QgdW5kZXJzdGFuZCBleGFj dGx5IHdoeSB5b3Ugd2FudCB0byBjaGFuZ2UgdGhpcy4gIEFyZSB5b3UgdHJ5aW5nIHRvCj4gPiBt YWtlIHRoZSBhc3NlbWJseSBzdHJpbmcgZm9yIGlucHV0IGxvYWRzIGFuZCBnbG9iYWwgbG9hZHMg bG9vayB0aGUgc2FtZT8KPiAKPiBDdXJyZW50bHkgdGhlIGZvbGxvd2luZyBjb2RlIGlzIGdlbmVy YXRlZDoKPiAKPiBMT0FEaWlzIFRFTVBbMV0ueiwgWzBdCj4gCj4gVGhpcyBzaG91bGQgYmU6Cj4g Cj4gTE9BRCBURU1QWzFdLnosIFJJTlBVVCwgMAo+IAo+IFNvIEkgbmVlZCB0byBhZGQgaGFuZGxp bmcgdG8gZ2VuZXJhdGUgdGhlIFJJTlBVVCBoZXJlLiBJJ20gd29uZGVyaW5nCj4gd2hhdCB0aGUg YmVzdCBwbGFjZSBpcyBmb3IgdGhpcy4gRG8gSSBzaW1wbHkgaW50ZXJjZXB0IHRoZSBMT0FEIGlu Cj4gTG93ZXJNYWNoaW5lSW5zdHJUb01DSW5zdCBhbmQgYWRkIGFuIGV4dHJhIG9wZXJhbmQgdGhl cmUgPwo+IAoKSXQgc2VlbXMgbGlrZSB5b3UganVzdCBuZWVkIHRvIGNoYW5nZSB5b3VyIGluc3Ry dWN0aW9uIGRlZmluaXRpb25zIGFuL29yCmFzc2VtYmx5IHByaW50aW5nIGhlcmUuCgo+IAo+ID4+ IDUpIFRhbGtpbmcgYWJvdXQgdGhlIGxvd2VjYXNlIHN1ZmZpeGVzIHRvIHRoZSBpbnN0cnVjdGlv bnMsCj4gPj4gdGhlc2Ugc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoZSBvdXRwdXQsIGhvdyBkbyBJ IGZpbHRlciB0aGVzZT8KPiA+Pgo+ID4+IDYpIEFuZCBmaW5hbGx5LCB0aGUgY3VycmVudCBsbHZt LXRnc2kgb3V0cHV0IHVzZXMgZS5nLgo+ID4+IFRFTVAxeSB3aGVyZSBhcyBmb3IgdGhlIGRlc3Rp bmF0aW9uIGl0IHNob3VsZCB1c2UgVEVNUFsxXS55Cj4gPj4gYW5kIGZvciB0aGUgc291cmNlcyBp dCBzaG91bGQgdXNlIFRFTVBbMV0ueHh4eCAoc28gaW5jbHVkZQo+ID4+IHByb3BlciBzd2l6emxp bmcgaW5mbykuCj4gPj4KPiA+Cj4gPiBZb3UganVzdCBuZWVkIHRvIGNoYW5nZSBob3cgdGhlIHJl Z2lzdGVycyBhcmUgcHJpbnRlZCBpbiB0aGUKPiA+IFRHU0lSZWdpc3RlckluZm8udGQgZmlsZSB3 aGljaCBzaG91bGQgZml4IHRoaXMuCj4gCj4gT0ssIHNvIEkndmUgbWFuYWdlZCAoZWFzeSkgdG8g Y2hhbmdlIHRoaW5ncyBzbyB0aGF0IG5vdyBJIGdldAo+IChpLmUuKSA6Cj4gCj4gVUFERHMgVEVN UFsxXS54LCBURU1QWzFdLngsIFRFTVBbMV0uego+IAo+IFRoaXMgaXMgaG93ZXZlciBub3QgY29y cmVjdCBUR1NJLCBjb3JyZWN0IHdvdWxkIGJlOgo+IAoKQXJlIHlvdSBzdXJlIHRoZSBhYm92ZSBp c24ndCBjb3JyZWN0PwoKPiBVQUREIFRFTVBbMV0ueCwgVEVNUFsxXS54eHh4LCBURU1QWzFdLnp6 enoKPiAKPiBXaGljaCBtYXkgYmUgc2hvcnRlbmQgdG86Cj4gCj4gVUFERCBURU1QWzFdLngsIFRF TVBbMV0sIFRFTVBbMV0uenp6ego+IAo+IFRHU0kgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGUg ZGVzdCB2ZWN0b3IgY29tcG9uZW50IGZyb20KPiB0aGUgc291cmNlcywgYW5kIGlmIHlvdSB3YW50 IHRvIHVzZSBhbm90aGVyIGNvbXBvbmVudCB5b3UKPiBuZWVkIHRvIHNwZWNpZnkgYSBzd2l6emxl IG9yZGVyLCB3aGljaCBpcyB0aGUgNCBjb21wb25lbnRzCj4gaW4gYW4gYWx0ZXJuYXRlIG9yZGVy Lgo+IAo+IEknbSBub3QgcXVpdGUgc3VyZSB5ZXQgaG93IHRvIGRlYWwgd2l0aCB0aGlzLgo+IAoK VGhlc2Uga2luZHMgb2YgdGhpbmdzIGNhbiBiZSBjb21wbGljYXRlZCwgSSB0aGluayB0aGlzIGlz IGEKZ29vZCByZWFzb24gdG8gc3RhcnQgZW1pdHRpbmcgYmluYXJ5IGNvZGUgZnJvbSBMTFZNIHJh dGhlciB0aGFuCnRleHQuICBZb3UgY2FuIGFsd2F5cyBjbGVhbiB1cCB0aGUgYXNzZW1ibHkgZm9y bWF0IGxhdGVyLgoKLVRvbQoKPiBSZWdhcmRzLAo+IAo+IEhhbnMKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTm91dmVhdSBtYWlsaW5nIGxpc3QKTm91dmVh dUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL25vdXZlYXUK