From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Use SSE4.1 movntdqa to accelerate reads from WC memory Date: Tue, 19 Jul 2016 08:50:49 +0200 Message-ID: <20160719065049.GG17101@phenom.ffwll.local> References: <20160718100111.GD21839@nuc-i3427.alporthouse.com> <1468836434-29107-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id DCB4B6E33D for ; Tue, 19 Jul 2016 06:50:55 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id i5so1663650wmg.2 for ; Mon, 18 Jul 2016 23:50:55 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1468836434-29107-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, Akash Goel , Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdWwgMTgsIDIwMTYgYXQgMTE6MDc6MTRBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGluZnJhc3RydWN0dXJlIGZvciBwZXJmb3Jt aW5nIGEgMTYtYnl0ZSBhbGlnbmVkCj4gcmVhZCBmcm9tIFdDIG1lbW9yeSB1c2luZyBub24tdGVt cG9yYWwgaW5zdHJ1Y3Rpb25zIGludHJvZHVjZWQgd2l0aCBzc2U0LjEuCj4gVXNpbmcgbW92bnRk cWEgd2UgY2FuIGJ5cGFzcyB0aGUgQ1BVIGNhY2hlcyBhbmQgcmVhZCBkaXJlY3RseSBmcm9tIG1l bW9yeQo+IGFuZCBpZ25vcmluZyB0aGUgcGFnZSBhdHRyaWJ1dGVzIHNldCBvbiB0aGUgQ1BVIFBU RSBpLmUuIG5lZ2F0aW5nIHRoZQo+IGltcGFjdCBvZiBhbiBvdGhlcndpc2UgVUMgYWNjZXNzLiBD b3B5aW5nIHVzaW5nIG1vdm50cWRhIGZyb20gV0MgaXMgYWxtb3N0Cj4gYXMgZmFzdCBhcyByZWFk aW5nIGZyb20gV0IgbWVtb3J5LCBtb2R1bG8gdGhlIHBvc3NpYmlsaXR5IG9mIGJvdGggaGl0dGlu Zwo+IHRoZSBDUFUgY2FjaGUgb3IgbGVhdmluZyB0aGUgZGF0YSBpbiB0aGUgQ1BVIGNhY2hlIGZv ciB0aGUgbmV4dCBjb25zdW1lci4KPiAoVGhlIENQVSBjYWNoZSBpdHNlbGYgbXkgYmUgZmx1c2hl ZCBmb3IgdGhlIHJlZ2lvbiBvZiB0aGUgbW92bnRkcWEgYW5kIG9uCj4gbGF0ZXIgYWNjZXNzIHRo ZSBtb3ZudGRxYSByZWFkcyBmcm9tIGEgc2VwYXJhdGUgaW50ZXJuYWwgYnVmZmVyIGZvciB0aGUK PiBjYWNoZWxpbmUuKSBUaGUgd3JpdGUgYmFjayB0byB0aGUgbWVtb3J5IGlzIGhvd2V2ZXIgY2Fj aGVkLgo+IAo+IFRoaXMgd2lsbCBiZSB1c2VkIGluIGxhdGVyIHBhdGNoZXMgdG8gYWNjZWxlcmF0 ZSBhY2Nlc3NpbmcgV0MgbWVtb3J5Lgo+IAo+IHYyOiBSZXBvcnQgd2hldGhlciB0aGUgYWNjZWxl cmF0ZWQgY29weSBpcyBzdWNjZXNzZnVsL3Bvc3NpYmxlLgo+IHYzOiBGdW5jdGlvbiBhbGlnbm1l bnQgb3ZlcnJpZGUgd2FzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gdXNpbmcgdGhlCj4gZnVuY3Rpb24g dGFyZ2V0KCJzc2U0LjEiKSAtIHdoaWNoIGlzIG5vdCBuZWNlc3NhcnkgZm9yIGVtaXR0aW5nIG1v dm50ZHFhCj4gZnJvbSBfX2FzbV9fLgo+IHY0OiBJbXByb3ZlIG5vdGVzIG9uIENQVSBjYWNoZSBi ZWhhdmlvdXIgdnMgbm9uLXRlbXBvcmFsIHN0b3Jlcy4KPiB2NTogRml4IGJ5dGUgb2Zmc2V0cyBm b3IgdW5yb2xsZWQgbW92ZXMuCj4gdjY6IEZpbmQgYWxsIHJlbWFpbmluZyB0eXBvcyBvZiBtb3Zu dHFkYSwgdXNlIGtlcm5lbF9mcHVfYmVnaW4uCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IEFrYXNoIEdvZWwgPGFrYXNoLmdv ZWxAaW50ZWwuY29tPgo+IENjOiBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuLmxlc3BpYXVAaW50ZWwu Y29tPgo+IENjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGludGVsLmNvbT4KPiBDYzog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkNjOiB4ODYgYXJjaCBm b2xrcyBpbiBjYXNlIHRoZXkncmUgaW50ZXJlc3RlZCBpbnQgdGhpcyB0b28/Ci1EYW5pZWwKCj4g LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgfCAgIDMgKysKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggICAgfCAgIDMgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9tZW1jcHkuYyB8IDEwMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g IDQgZmlsZXMgY2hhbmdlZCwgMTA5IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfbWVtY3B5LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZQo+IGluZGV4IGRkYTcyNGYwNDQ0NS4uMzQxMjQxMzQwOGMwIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKPiBAQCAtMywxMiArMywxNSBAQAo+ICAjIERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1 Y3R1cmUgKERSSSkgaW4gWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyLgo+ICAKPiAgc3ViZGlyLWNj ZmxhZ3MtJChDT05GSUdfRFJNX0k5MTVfV0VSUk9SKSA6PSAtV2Vycm9yCj4gK3N1YmRpci1jY2Zs YWdzLXkgKz0gXAo+ICsJJChjYWxsIGFzLWluc3RyLG1vdm50ZHFhICglZWF4KSQoY29tbWEpJXht bTAsLURDT05GSUdfQVNfTU9WTlREUUEpCj4gIAo+ICAjIFBsZWFzZSBrZWVwIHRoZXNlIGJ1aWxk IGxpc3RzIHNvcnRlZCEKPiAgCj4gICMgY29yZSBkcml2ZXIgY29kZQo+ICBpOTE1LXkgOj0gaTkx NV9kcnYubyBcCj4gIAkgIGk5MTVfaXJxLm8gXAo+ICsJICBpOTE1X21lbWNweS5vIFwKPiAgCSAg aTkxNV9wYXJhbXMubyBcCj4gIAkgIGk5MTVfcGNpLm8gXAo+ICAgICAgICAgICAgaTkxNV9zdXNw ZW5kLm8gXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDY0MGUzYzM0ZDNjZC4uZjEw MzRlYjY4NTNiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTgyNyw2ICs4Mjcs OCBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPndtLndtX211dGV4KTsK PiAgCW11dGV4X2luaXQoJmRldl9wcml2LT5wcHNfbXV0ZXgpOwo+ICAKPiArCWk5MTVfbWVtY3B5 X2luaXRfZWFybHkoZGV2X3ByaXYpOwo+ICsKPiAgCXJldCA9IGk5MTVfd29ya3F1ZXVlc19pbml0 KGRldl9wcml2KTsKPiAgCWlmIChyZXQgPCAwKQo+ICAJCXJldHVybiByZXQ7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gaW5kZXggODZkY2RlNTY0ZGUwLi5mOGFlM2YzZTNhZjQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzkxNiw0ICszOTE2LDcgQEAgc3RhdGljIGlubGlu ZSBib29sIF9faTkxNV9yZXF1ZXN0X2lycV9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKPiAgCXJldHVybiBmYWxzZTsKPiAgfQo+ICAKPiArdm9pZCBpOTE1X21lbWNw eV9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK2Jvb2wg aTkxNV9tZW1jcHlfZnJvbV93Yyh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgdW5zaWduZWQg bG9uZyBsZW4pOwo+ICsKPiAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfbWVtY3B5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21lbWNweS5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjUwZmM1Nzk5MjU1Zgo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21lbWNweS5j Cj4gQEAgLTAsMCArMSwxMDEgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwg Q29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5l eHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKwo+ ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxhc20vZnB1L2FwaS5oPgo+ ICsKPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKwo+ICtERUZJTkVfU1RBVElDX0tFWV9GQUxT RShoYXNfbW92bnRkcWEpOwo+ICsKPiArI2lmZGVmIENPTkZJR19BU19NT1ZOVERRQQo+ICtzdGF0 aWMgdm9pZCBfX21lbWNweV9udGRxYSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgdW5zaWdu ZWQgbG9uZyBsZW4pCj4gK3sKPiArCWtlcm5lbF9mcHVfYmVnaW4oKTsKPiArCj4gKwlsZW4gPj49 IDQ7Cj4gKwl3aGlsZSAobGVuID49IDQpIHsKPiArCQlhc20oIm1vdm50ZHFhICAgKCUwKSwgJSV4 bW0wXG4iCj4gKwkJICAgICJtb3ZudGRxYSAxNiglMCksICUleG1tMVxuIgo+ICsJCSAgICAibW92 bnRkcWEgMzIoJTApLCAlJXhtbTJcbiIKPiArCQkgICAgIm1vdm50ZHFhIDQ4KCUwKSwgJSV4bW0z XG4iCj4gKwkJICAgICJtb3ZhcHMgJSV4bW0wLCAgICglMSlcbiIKPiArCQkgICAgIm1vdmFwcyAl JXhtbTEsIDE2KCUxKVxuIgo+ICsJCSAgICAibW92YXBzICUleG1tMiwgMzIoJTEpXG4iCj4gKwkJ ICAgICJtb3ZhcHMgJSV4bW0zLCA0OCglMSlcbiIKPiArCQkgICAgOjogInIiIChzcmMpLCAiciIg KGRzdCkgOiAibWVtb3J5Iik7Cj4gKwkJc3JjICs9IDY0Owo+ICsJCWRzdCArPSA2NDsKPiArCQls ZW4gLT0gNDsKPiArCX0KPiArCXdoaWxlIChsZW4tLSkgewo+ICsJCWFzbSgibW92bnRkcWEgKCUw KSwgJSV4bW0wXG4iCj4gKwkJICAgICJtb3ZhcHMgJSV4bW0wLCAoJTEpXG4iCj4gKwkJICAgIDo6 ICJyIiAoc3JjKSwgInIiIChkc3QpIDogIm1lbW9yeSIpOwo+ICsJCXNyYyArPSAxNjsKPiArCQlk c3QgKz0gMTY7Cj4gKwl9Cj4gKwo+ICsJa2VybmVsX2ZwdV9lbmQoKTsKPiArfQo+ICsjZW5kaWYK PiArCj4gKy8qKgo+ICsgKiBpOTE1X21lbWNweV9mcm9tX3djOiBwZXJmb3JtIGFuIGFjY2VsZXJh dGVkICphbGlnbmVkKiByZWFkIGZyb20gV0MKPiArICogQGRzdDogZGVzdGluYXRpb24gcG9pbnRl cgo+ICsgKiBAc3JjOiBzb3VyY2UgcG9pbnRlcgo+ICsgKiBAbGVuOiBob3cgbWFueSBieXRlcyB0 byBjb3B5Cj4gKyAqCj4gKyAqIGk5MTVfbWVtY3B5X2Zyb21fd2MgY29waWVzIEBsZW4gYnl0ZXMg ZnJvbSBAc3JjIHRvIEBkc3QgdXNpbmcKPiArICogbm9uLXRlbXBvcmFsIGluc3RydWN0aW9ucyB3 aGVyZSBhdmFpbGFibGUuIE5vdGUgdGhhdCBhbGwgYXJndW1lbnRzCj4gKyAqIChAc3JjLCBAZHN0 KSBtdXN0IGJlIGFsaWduZWQgdG8gMTYgYnl0ZXMgYW5kIEBsZW4gbXVzdCBiZSBhIG11bHRpcGxl Cj4gKyAqIG9mIDE2Lgo+ICsgKgo+ICsgKiBUbyB0ZXN0IHdoZXRoZXIgYWNjZWxlcmF0ZWQgcmVh ZHMgZnJvbSBXQyBhcmUgc3VwcG9ydGVkLCB1c2UKPiArICogaTkxNV9tZW1jcHlfZnJvbV93YyhO VUxMLCBOVUxMLCAwKTsKPiArICoKPiArICogUmV0dXJucyB0cnVlIGlmIHRoZSBjb3B5IHdhcyBz dWNjZXNzZnVsLCBmYWxzZSBpZiB0aGUgcHJlY29uZGl0aW9ucwo+ICsgKiBhcmUgbm90IG1ldC4K PiArICovCj4gK2Jvb2wgaTkxNV9tZW1jcHlfZnJvbV93Yyh2b2lkICpkc3QsIGNvbnN0IHZvaWQg KnNyYywgdW5zaWduZWQgbG9uZyBsZW4pCj4gK3sKPiArCWlmICh1bmxpa2VseSgoKHVuc2lnbmVk IGxvbmcpZHN0IHwgKHVuc2lnbmVkIGxvbmcpc3JjIHwgbGVuKSAmIDE1KSkKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwo+ICsjaWZkZWYgQ09ORklHX0FTX01PVk5URFFBCj4gKwlpZiAoc3RhdGljX2Jy YW5jaF9saWtlbHkoJmhhc19tb3ZudGRxYSkpIHsKPiArCQlpZiAobGVuKQo+ICsJCQlfX21lbWNw eV9udGRxYShkc3QsIHNyYywgbGVuKTsKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCX0KPiArI2VuZGlm Cj4gKwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfbWVtY3B5X2luaXRf ZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpZiAoc3Rh dGljX2NwdV9oYXMoWDg2X0ZFQVRVUkVfWE1NNF8xKSkKPiArCQlzdGF0aWNfYnJhbmNoX2VuYWJs ZSgmaGFzX21vdm50ZHFhKTsKPiArfQo+IC0tIAo+IDIuOC4xCj4gCj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0 Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==