From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandre Demers Subject: Re: Porting GCN pre-1.2 parts from radeon to amdgpu kernel driver Date: Thu, 24 Mar 2016 23:29:57 -0400 Message-ID: <56F4B0B5.9040701@gmail.com> References: <569A9DD5.9050108@gmail.com> <569E32F3.4070608@vodafone.de> <56A03280.6030609@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-io0-x22d.google.com (mail-io0-x22d.google.com [IPv6:2607:f8b0:4001:c06::22d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 400486EA54 for ; Fri, 25 Mar 2016 03:30:02 +0000 (UTC) Received: by mail-io0-x22d.google.com with SMTP id c63so106378114iof.0 for ; Thu, 24 Mar 2016 20:30:02 -0700 (PDT) In-Reply-To: <56A03280.6030609@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?Q?Christian_K=c3=b6nig?= , "Deucher, Alexander" , "Sellers, Graham" Cc: dri-devel List-Id: dri-devel@lists.freedesktop.org QXMgYSBmb2xsb3cgdXAsIEkndmUgYmVlbiBhd2F5IGZvciBxdWl0ZSBzb21lIHRpbWUgbm93IChs b25nIG92ZXJkdWUgCnZhY2F0aW9ucyksIGJ1dCBJJ20gYmFjayBob21lIG5vdy4gVGhpcyB3aWxs IGJlIG15IG1haW4gcHJvamVjdCwgc28gd2UgCm1heSBnZXQgc29tZXRoaW5nIHdvcmtpbmcgaWYg SSdtIGx1Y2t5LiBJJ2xsIHNvb24gYmUgcG9zdGluZyBhIGxpbmsgdG8gCm15IHJlcG9zaXRvcnkg d2hlcmUgdGhpbmdzIHdpbGwgYmUgd29ya2VkIG9uLgoKQ2hlZXJzLgoKQWxleGFuZHJlIERlbWVy cwoKT24gMjAxNi0wMS0yMCAyMDoyMSwgQWxleGFuZHJlIERlbWVycyB3cm90ZToKPiBUaGFua3Mg dG8gYWxsIHlvdXIgZmVlZGJhY2suIFdlbGwsIGl0IHNlZW1zIGFjaGlldmFibGUuIEkgbWF5IGFz ayBzb21lIAo+IHF1ZXN0aW9ucyBoZXJlIGFuZCB0aGVyZSwgYnV0IEkgdGhpbmsgSSdsbCBnaXZl IGl0IGEgdHJ5Lgo+Cj4gQWxleGFuZHJlIERlbWVycwo+Cj4gT24gMjAxNi0wMS0xOSAwNzo1OCwg Q2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4+IEkgdGhpbmsgR3JhaGFtIHN1bW1lZCBpdCB1cCBw cmV0dHkgd2VsbCA6KQo+PiBJbmRlZWQsIGJ1dCB0aGVyZSBpcyBhIGRldGFpbCBtaXNzaW5nLiBU aGUgbWFpbiBwcm9ibGVtIGZvciBtb3ZpbmcgU0kgCj4+IGFuZCBDSUsgc3VwcG9ydCBmcm9tIHJh ZGVvbiB0byBhbWRncHUgaXMgdGhhdCB3ZSBjYW4ndCBicmVhayBleGlzdGluZyAKPj4gdXNlcnNw YWNlLgo+Pgo+PiBGb3J0dW5hdGVseSBhbWRncHUgd2Fzbid0IGRlc2lnbmVkIGZyb20gc2NyYXRj aCwgaW5zdGVhZCBpdCdzIHJhdGhlciAKPj4gYSBldmFsdWF0aW9uYWwgc3VjY2Vzc29yIG9mIHJh ZGVvbi4gQmVjYXVzZSBvZiB0aGF0IGEgbG90IG9mIHRoZSAKPj4gaW50ZXJuYWwgaW50ZXJmYWNl cyBhcmUgc3RpbGwgdGhlIHNhbWUuCj4+Cj4+IEFkZGl0aW9uYWwgdG8gdGhhdCBJIG1hZGUgdGhl IElPQ1RMIG51bWJlcnMgZnJvbSBSYWRlb24gYW5kIEFtZGdwdSAKPj4gaW50ZW50aW9uYWwgZGlz am9pbnQuIEFtZGdwdSBpcyB1c2luZyAweDAwLTB4MTIgYW5kIEtNUyBvbiBSYWRlb24gaXMgCj4+ IHVzaW5nIDB4MWMtMHgyZCAod2UgbmV2ZXIgc3VwcG9ydGVkIFVNUyBmb3IgU0kvQ0lLKS4KPj4K Pj4gU28gaW4gdGhlb3J5IGl0IHdvdWxkIGJlIHBvc3NpYmxlIHRoYXQgc29tZWJvZHkgaW1wbGVt ZW50cyBhIAo+PiBjb21wYXRpYmlsaXR5IG1vZGUgd2hpY2ggcHJvdmlkZXMgdGhlIG9sZCBSYWRl b24gSU9DVExzIGZvciBTSSBhbmQgCj4+IENJSyBoYXJkd2FyZSBnZW5lcmF0aW9uIGluIEFtZGdw dS4KPj4KPj4gVGhpcyB3YXkgd2UgY291bGQgc3VwcG9ydCBTSSBvbiBBbWRncHUgYXMgd2VsbCBh bmQgcmVtb3ZlIHRoZSBzdXBwb3J0IAo+PiBmb3IgU0kgYW5kIENJSyBmcm9tIFJhZGVvbi4KPj4K Pj4gVGhlIGJpZ2dlc3QgZGlmZmVyZW5jZXMgYXJlIGluZGVlZCBpbiB0aGUgbXVsdGltZWRpYSBh cmVhLCBlLmcuIFVWRCAKPj4gYW5kIFZDRS4gQnV0IGl0J3Mgc3RpbGwgbW9zdGx5IGNvcHlpbmcg dGhlIFJhZGVvbiBjb2RlIHRvIEFtZGdwdSAoaWYgCj4+IHNvbWVib2R5IGNhcmVzIHdlIGNvdWxk IGV2ZW4gbW92ZSB0aGF0IGludG8gYW4gaW5kZXBlbmRlbnQgbW9kdWxlIAo+PiBzaGFyZWQgYnkg Ym90aCkuCj4+Cj4+IFJlZ2FyZHMsCj4+IENocmlzdGlhbi4KPj4KPj4gQW0gMTguMDEuMjAxNiB1 bSAyMzoxOSBzY2hyaWViIERldWNoZXIsIEFsZXhhbmRlcjoKPj4+PiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQo+Pj4+IEZyb206IFNlbGxlcnMsIEdyYWhhbQo+Pj4+IFNlbnQ6IE1vbmRheSwg SmFudWFyeSAxOCwgMjAxNiAxMDozOCBBTQo+Pj4+IFRvOiBhbGV4YW5kcmUuZi5kZW1lcnNAZ21h aWwuY29tOyBEZXVjaGVyLCBBbGV4YW5kZXIKPj4+PiBDYzogZHJpLWRldmVsCj4+Pj4gU3ViamVj dDogUkU6IFBvcnRpbmcgR0NOIHByZS0xLjIgcGFydHMgZnJvbSByYWRlb24gdG8gYW1kZ3B1IGtl cm5lbCAKPj4+PiBkcml2ZXIKPj4+Pgo+Pj4+IEhpIEFsZXhhbmRyZSwKPj4+Pgo+Pj4+IFllcywg eW91ciB1bmRlcnN0YW5kaW5nIGlzIGNvcnJlY3QuCj4+Pj4KPj4+PiBGcmFua2x5LCBBbGV4IG9y IG9uZSBvZiB0aGUgb3RoZXIgZ3V5cyBvbiB0aGUgb3BlbiBzb3VyY2UgdGVhbSAKPj4+PiB3b3Vs ZCBiZQo+Pj4+IGJlc3QgcG9zaXRpb25lZCB0byBhbnN3ZXIgeW91ciBxdWVzdGlvbnMgYXMgdG8g d2hhdCB3b3VsZCAKPj4+PiBzcGVjaWZpY2FsbHkgbmVlZAo+Pj4+IHRvIGJlIGRvbmUuIEhvd2V2 ZXIsIHllcywgdGhlIGdhcCB3ZSBoYXZlIGhlcmUgaXMgaW4gdGhlIGFtZGdwdSBrZXJuZWwKPj4+ PiBkcml2ZXIuIEkgcHJldHR5IG11Y2ggb25seSB3b3JrIG9uIHRoZSB1c2VyLW1vZGUgc2lkZSBv ZiB0aGluZ3MuIFRoaW5rCj4+Pj4gImxpYlZ1bGthbi5zbyIgb3IgInZ1bGthbi5kbGwiIC0gdGhl IGJpdCB0aGF0IGFwcGxpY2F0aW9ucyBsaW5rIHRvLiAKPj4+PiBXZSB0YWxrIHRvIG91cgo+Pj4+ IGtlcm5lbCBkcml2ZXJzIHRocm91Z2ggc3RhbmRhcmQgaW50ZXJmYWNlcy4gSXQncyB0aGUga2Vy bmVsIGRyaXZlciAKPj4+PiB0aGF0IGRlYWxzCj4+Pj4gd2l0aCBhIGxvdCBvZiB0aGUgZGlmZmVy ZW5jZXMgYmV0d2VlbiBkaWZmZXJlbnQgcGFydHMgb2YgaGFyZHdhcmUuIAo+Pj4+IGFtZGdwdSBp cwo+Pj4+IGEgZ3JvdW5kLXVwIHJlZGVzaWduIG9mIG91ciBrZXJuZWwgc29sdXRpb24gZm9yIExp bnV4LiBUaGUgCj4+Pj4gY2xvc2VkLXNvdXJjZQo+Pj4+IGtlcm5lbCBkcml2ZXIgdGhhdCB3ZSB3 ZXJlIHVzaW5nIGluIG91ciBDYXRhbHlzdCBwYWNrYWdlcyBoYXMgYmVlbiAKPj4+PiBwdXQgb3V0 IHRvCj4+Pj4gcGFzdHVyZS4gRm9yIHRoZSBhbWRncHUgcHJvamVjdCwgZ2l2ZW4gdGhlIG51bWJl ciBvZiBlbmdpbmVlcnMgd2UgCj4+Pj4gaGF2ZSwKPj4+PiB3ZSBoYXZlIHRvIG1ha2UgYSB0b3Vn aCBkZWNpc2lvbiBiZXR3ZWVuIHN1cHBvcnRpbmcgaW50ZXJlc3RpbmcgbmV3Cj4+Pj4gZmVhdHVy ZXMgb2YgbmV3IEdQVXMsIG9yIHN0aWNraW5nIHdpdGggcHJldHR5IGJhc2ljIHN1cHBvcnQgYnV0 IAo+Pj4+IGJhY2twb3J0aW5nCj4+Pj4gdG8gb2xkZXIgR1BVcy4KPj4+Pgo+Pj4+IFRoZSBkaWZm ZXJlbmNlcyBpbiB0aGUgZ3JhcGhpY3MgY29yZSBpdHNlbGYgYmV0d2VlbiBTSSwgQ0kgYW5kIFZJ IAo+Pj4+IGFyZSBhY3R1YWxseQo+Pj4+IHByZXR0eSBtaW5pbWFsIChhcyBmYXIgYXMgdGhlIGtl cm5lbCBkcml2ZXIgaXMgY29uY2VybmVkLCBhbnl3YXkpLiAKPj4+PiBXaGVyZQo+Pj4+IHRoZXJl IGFyZSBiaWdnZXIgZGlmZmVyZW5jZXMgYXJlIGluIHRoaW5ncyBsaWtlIHRoZSBtdWx0aW1lZGlh IAo+Pj4+ICh2aWRlbykgZW5naW5lcywKPj4+PiBkaXNwbGF5IGNvbnRyb2xsZXIsIHBvd2VyIG1h bmFnZW1lbnQgYW5kIHNvIG9uLiBUaGUgcmFkZW9uIEtNRCBoYXMgCj4+Pj4gZnVsbAo+Pj4+IHN1 cHBvcnQgZm9yIGFsbCBTSSBhbmQgQ0kgKGFuZCBlYXJsaWVyKSAidW4tY29yZSIgcGFydHMgb2Yg dGhlIEdQVS4gCj4+Pj4gYW1kZ3B1IGhhcwo+Pj4+IFZJIHByb2R1Y3Qgc3VwcG9ydCBhbmQgc29t ZSBtaW5pbWFsIChhbGJlaXQgZGlzYWJsZWQpIHN1cHBvcnQgZm9yIAo+Pj4+IENJLCBhbmQKPj4+ PiBiYXNpY2FsbHkgbm90aGluZyBmcm9tIFNJLgo+Pj4+Cj4+Pj4gT3VyIHVzZXItbW9kZSBWdWxr YW4gZHJpdmVyIChhbmQgY2xvc2VkIHNvdXJjZSBPcGVuR0wgZHJpdmVyLCBmb3IgdGhhdAo+Pj4+ IG1hdHRlcikgY2FuIHRhbGsgdG8gdGhlIGFtZGdwdSBrZXJuZWwgZHJpdmVyLCBidXQgbm90IHRv IHRoZSByYWRlb24gCj4+Pj4ga2VybmVsCj4+Pj4gZHJpdmVyLiBUaGUgaW50ZXJmYWNlcyBhcmUg cXVpdGUgZGlmZmVyZW50LCBhbmQgaG9uZXN0bHksIHRoZSAKPj4+PiByYWRlb24ga2VybmVsCj4+ Pj4gaW50ZXJmYWNlIGlzbid0IGEgZ3JlYXQgZml0IGZvciBWdWxrYW4uIFdlIGhhZCBjb25zaWRl cmVkIHRyeWluZyB0byAKPj4+PiBzdXBwb3J0Cj4+Pj4gcmFkZW9uIEtNRCBpbiBvdXIgVnVsa2Fu IGRyaXZlciwgYnV0IGl0IGRvZXNuJ3Qgc2VlbSBwcmFjdGljYWwuIFNvLCAKPj4+PiBpdCBzZWVt cwo+Pj4+IHRoYXQgdGhlIG9wdGlvbnMgd291bGQgYmUgcmVhbGx5IHRvIHBvcnQgdGhlIG5vbi1j b3JlIHN1cHBvcnQgZnJvbSAKPj4+PiByYWRlb24KPj4+PiBLTUQgaW50byBhbWRncHUsIG9yIHNv bWVob3cgcG9ydCB0aGUgbmV3IEtNRCBpbnRlcmZhY2VzIHRvIHJhZGVvbgo+Pj4+IEtNRCwgd2hp Y2ggd291bGQgYWxsb3cgb3VyIFZ1bGthbiBkcml2ZXJzIHRvIHJ1biBvbiBpdCwgYnV0IHNlZW1z IAo+Pj4+IGxpa2UgYSBiaXQKPj4+PiBvZiBhIGJhY2t3YXJkcyBzdGVwLgo+Pj4+Cj4+Pj4gVGhl cmUgYXJlIG90aGVyIGNvbXBsaWNhdGlvbnMgLSBzdWNoIGFzIGl0IGJlaW5nIGZyb3duZWQgdXBv biB0byAKPj4+PiBoYXZlIHR3bwo+Pj4+IGtlcm5lbCBkcml2ZXJzIGZvciB0aGUgc2FtZSBwaWVj ZSBvZiBoYXJkd2FyZSwgc28geW91J2QgbmVlZCB0byAKPj4+PiBwb3J0IFNJIGFuZAo+Pj4+IENJ IHN0dWZmIGZyb20gcmFkZW9uIHRvIGFtZGdwdSwgYW5kIHRoZW4gc29tZWhvdyBkaXNhYmxlIChv ciByZW1vdmUgCj4+Pj4gaXQpIGluCj4+Pj4gdGhlIHJhZGVvbiBLTUQgc3VjaCB0aGF0IHRoZXJl IHdhcyBzdGlsbCBvbmx5IG9uZSBkcml2ZXIgZm9yIHRoZSAKPj4+PiBHUFUuIEl0J3MKPj4+PiBu b24tdHJpdmlhbCwgYnV0IG5vdCBpbnN1cm1vdW50YWJsZS4gQWxzbywgZXZlbiB0aG91Z2ggdGhl IGNvZGUgaXMgCj4+Pj4gdGhlcmUgYW5kCj4+Pj4gd29ya2luZyBpbiByYWRlb24gS01ELCB0aGVy ZSBhcmUgZW5vdWdoIGRpZmZlcmVuY2VzIGluIHRoZSAKPj4+PiBpbmZyYXN0cnVjdHVyZQo+Pj4+ IHRoYXQgdGhlIHBvcnRlZCBzdXBwb3J0IHdvdWxkIG5lZWQgdG8gYmUgcmUtdmFsaWRhdGVkIGFu ZCBhbGwgdGhhdCAKPj4+PiBzdHVmZi4KPj4+Pgo+Pj4+IElmIHlvdSB0aGluayB5b3UncmUgdXAg Zm9yIHRoZSBjaGFsbGVuZ2UsIHdlJ2QgYmUgYXBwcmVjaWF0aXZlIG9mIAo+Pj4+IHRoZSBpbnB1 dC4KPj4+PiBPbmUgb2YgdGhlIG1ham9yIHJlYXNvbnMgdG8gb3BlbiBvdXIgY29kZSBhbmQgc3Vw cG9ydCBvcGVuIHNvdXJjZSAKPj4+PiBpcyB0bwo+Pj4+IGVuY291cmFnZSBpbnZvbHZlbWVudCBh bmQgY29udHJpYnV0aW9ucyBmcm9tIHRoZSBjb21tdW5pdHkuIFRoYXQncyB3aHkKPj4+PiB3ZSdy ZSBkb2luZyB0aGUgR1BVT3BlbiBpbml0aWF0aXZlIGFuZCB3ZSB3aWxsIGJlIG9wZW5pbmcgYSBs b3QgCj4+Pj4gbW9yZSBvZiBvdXIKPj4+PiBzb2Z0d2FyZSBpbiB0aGUgZnV0dXJlLiBNYW55IG9m IHRoZSBndXlzIG9uIG91ciBvcGVuIHNvdXJjZSB0ZWFtIAo+Pj4+IGluaXRpYWxseQo+Pj4+IGdv dCBpbnZvbHZlZCBieSBjb250cmlidXRpbmcgdG8gdGhlIHByb2plY3QgYmVmb3JlIHdlIGhpcmVk IHRoZW0uIAo+Pj4+IFRoYXQga2luZAo+Pj4+IG9mIHRoaW5nIGxvb2tzIHJlYWxseSBnb29kIG9u IGEgcmVzdW1lLiA6KQo+Pj4gSSB0aGluayBHcmFoYW0gc3VtbWVkIGl0IHVwIHByZXR0eSB3ZWxs IDopCj4+Pgo+Pj4gQWxleAo+Pj4KPj4+Cj4+Pj4gR3JhaGFtCj4+Pj4KPj4+PiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQo+Pj4+IEZyb206IEFsZXhhbmRyZSBEZW1lcnMgW21haWx0bzphbGV4 YW5kcmUuZi5kZW1lcnNAZ21haWwuY29tXQo+Pj4+IFNlbnQ6IFNhdHVyZGF5LCBKYW51YXJ5IDE2 LCAyMDE2IDI6NDUgUE0KPj4+PiBUbzogRGV1Y2hlciwgQWxleGFuZGVyOyBTZWxsZXJzLCBHcmFo YW0KPj4+PiBDYzogZHJpLWRldmVsCj4+Pj4gU3ViamVjdDogUG9ydGluZyBHQ04gcHJlLTEuMiBw YXJ0cyBmcm9tIHJhZGVvbiB0byBhbWRncHUga2VybmVsIGRyaXZlcgo+Pj4+Cj4+Pj4gSGVsbG8g dG8gYm90aCBvZiB5b3UsCj4+Pj4KPj4+PiBJJ3ZlIGJlZW4gZm9sbG93aW5nIHRoZSBkZXZlbG9w bWVudCBtb3N0bHkgb2YgdGhlIHJhZGVvbiBkcml2ZXIgZm9yIAo+Pj4+IHNvbWUKPj4+PiB0aW1l ICh3aXRoIHNvbWUgc21hbGwgY29tbWl0cyBoZXJlIGFuZCB0aGVyZSBhcyB5b3UgbWF5IGtub3cp LiBJIHdhcwo+Pj4+IHdhaXRpbmcgdG8gaGVhciBzb21lIG5ld3MgYWJvdXQgdGhlIGNvbWluZyBz dXBwb3J0IG9mIFZ1bGthbiBBUEkuIAo+Pj4+IEFuZCBJCj4+Pj4gaGF2ZSBiZWVuIHdvbmRlcmlu ZyBmb3Igc29tZXRpbWUgbm93IGlmIGl0IHdvdWxkIGJlIGEgZ29vZCB0aGluayB0byAKPj4+PiBo YXZlCj4+Pj4gYWxsIEdDTiBwYXJ0cyBtb3ZlZCBmcm9tIHRoZSByYWRlb24gZHJpdmVyIHRvIHRo ZSBhbWRncHUga2VybmVsIAo+Pj4+IGRyaXZlciAoSQo+Pj4+IGhhZCBmaWd1cmVkIG91dCBpdCB3 b3VsZCBiZSBwb3NzaWJsZSwgYnV0IHdvdWxkIGl0IGJlIG9mIGFueSB1c2UgCj4+Pj4gd2FzIHN0 aWxsCj4+Pj4gdW5hbnN3ZXJlZCkuIEkgd2FzIGFsc28gY3VyaW91cyB0byBrbm93IGlmIHRoZSBu ZXcgQ3JpbXNvbiBzb2Z0d2FyZSAKPj4+PiB3b3VsZAo+Pj4+IHN1cHBvcnQgdGhlIHJhZGVvbiBk cml2ZXIgYXQgc29tZSBwb2ludC4KPj4+Pgo+Pj4+IE5vdywgSSBtYXkgaGF2ZSBoYWQgYSBjbGVh ciBhbnN3ZXI6IEkganVzdCByZWFkIGZyb20gUGhvcm9uaXgnIGVkaXRvcgo+Pj4+IE1pY2hhZWwg TGFyYWJlbAo+Pj4+IChodHRwOi8vd3d3LnBob3Jvbml4LmNvbS9zY2FuLnBocD9wYWdlPW5ld3Nf aXRlbSZweD1IZWxwLUJyaW5nLQo+Pj4+IE9sZGVyLUdDTi1Uby1BTURHUFUpCj4+Pj4gdGhhdCBW dWxrYW4gd291bGQgY29tZSB0byB0aGUgYW1kZ3B1IGRyaXZlciBvbmx5LCB0aGF0IHRoZSBibG9i ICh3aGljaAo+Pj4+IHNob3VsZCBldmVudHVhbGx5IGJlIG9wZW5lZCkgd291bGQgc3VwcG9ydCBh bGwgR0NOIHBhcnRzIGFuZCB0aGF0IAo+Pj4+IHRoZSBvbmx5Cj4+Pj4gbWlzc2luZyBwYXJ0IHRv IHN1cHBvcnQgR0NOIHByZS0xLjIgcGFydHMgd2l0aCBib3RoIFZ1bGthbiBhbmQgQ3JpbXNvbgo+ Pj4+IHdvdWxkIGJlIHRvIGhhdmUgdGhlbSBwb3J0ZWQgZnJvbSB0aGUgcmFkZW9uIGRyaXZlciB0 byB0aGUgYW1kZ3B1IAo+Pj4+IGRyaXZlci4KPj4+PiBBbSBJIHVuZGVyc3RhbmRpbmcgY29ycmVj dGx5Pwo+Pj4+Cj4+Pj4gSSdkIGJlIGludGVyZXN0ZWQgdG8ga25vdyBhIGJpdCBtb3JlIGFib3V0 IHRoZSB0YXNrIGFuZCBJIG1heSB0cnkgCj4+Pj4gdG8gc3RhcnQgdGhlCj4+Pj4gd29yayBvciBq b2luIHNvbWVvbmUgd2hvIHdvdWxkIGFscmVhZHkgYmUgaW50ZXJlc3RlZCBpbiBkb2luZyBzby4K Pj4+Pgo+Pj4+IEFueSBjb21tZW50cyBvbiB0aGUgbWF0dGVyPyBBbnkgbWlzc3VuZGVyc3Rvb2Qg dGhpbmc/Cj4+Pj4KPj4+PiBDaGVlcnMhCj4+Pj4KPj4+PiAtLSAKPj4+PiBBbGV4YW5kcmUgRGVt ZXJzCj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ Pj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+Pj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo+Pgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK