From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v9 10/19] drm/i915/gen8: Add 4 level support in insert_entries and clear_range Date: Wed, 5 Aug 2015 17:46:36 +0200 Message-ID: <20150805154636.GB17734@phenom.ffwll.local> References: <1438187043-34267-11-git-send-email-michel.thierry@intel.com> <1438592007-3354-1-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id 43BDC6E4EC for ; Wed, 5 Aug 2015 08:46:41 -0700 (PDT) Received: by wibhh20 with SMTP id hh20so30415223wib.0 for ; Wed, 05 Aug 2015 08:46:39 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1438592007-3354-1-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michel Thierry Cc: intel-gfx@lists.freedesktop.org, Akash Goel List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBBdWcgMDMsIDIwMTUgYXQgMDk6NTM6MjdBTSArMDEwMCwgTWljaGVsIFRoaWVycnkg d3JvdGU6Cj4gV2hlbiA0OGIgaXMgZW5hYmxlZCwgZ2VuOF9wcGd0dF9pbnNlcnRfZW50cmllcyBu ZWVkcyB0byByZWFkIHRoZSBQYWdlIE1hcAo+IExldmVsIDQgKFBNTDQpLCBiZWZvcmUgaXQgc2Vs ZWN0cyB3aGljaCBQYWdlIERpcmVjdG9yeSBQb2ludGVyIChQRFApCj4gaXQgd2lsbCB3cml0ZSB0 by4KPiAKPiBTaW1pbGFybHksIGdlbjhfcHBndHRfY2xlYXJfcmFuZ2UgbmVlZHMgdG8gZ2V0IHRo ZSBjb3JyZWN0IFBEUC9QRCByYW5nZS4KPiAKPiBUaGlzIHBhdGNoIHdhcyBpbnNwaXJlZCBieSBC ZW4ncyAiRGVwZW5kIGV4Y2x1c2l2ZWx5IG9uIG1hcCBhbmQKPiB1bm1hcF92bWEiLgo+IAo+IHYy OiBSZWJhc2UgYWZ0ZXIgcy9wYWdlX3RhYmxlcy9wYWdlX3RhYmxlLy4KPiB2MzogUmVtb3ZlIHVu bmVjZXNzYXJ5IHBkcGUgbG9vcCBpbiBnZW44X3BwZ3R0X2NsZWFyX3JhbmdlXzRsdmwgYW5kIHVz ZQo+IGNsYW1wX3BkcCBpbiBnZW44X3BwZ3R0X2luc2VydF9lbnRyaWVzIChBa2FzaCkuCj4gdjQ6 IE1lcmdlIGdlbjhfcHBndHRfY2xlYXJfcmFuZ2VfNGx2bCBpbnRvIGdlbjhfcHBndHRfY2xlYXJf cmFuZ2UgdG8KPiBtYWludGFpbiBzeW1tZXRyeSB3aXRoIGdlbjhfcHBndHRfaW5zZXJ0X2VudHJp ZXMgKEFrYXNoKS4KPiB2NTogRG8gbm90IG1peCBwYWdlcyBhbmQgYnl0ZXMgaW4gaW5zZXJ0X2Vu dHJpZXMgKEFrYXNoKS4KPiB2NjogUHJldmVudCBvdmVyZmxvdyBpbiBzZ19uZW50cyA8PCBQQUdF X1NISUZULCB3aGVuIGluc2VydGluZyA0R0IgYXQKPiBvbmNlLgo+IHY3OiBSZWJhc2UgYWZ0ZXIg TWlrYSdzIHBwZ3R0IGNsZWFudXAgLyBzY3JhdGNoIG1lcmdlIHBhdGNoIHNlcmllcy4KPiBVc2Ug Z2VuOF9weF9pbmRleCBmdW5jdGlvbnMsIGFuZCByZW1vdmUgdW5uZWNlc3NhcnkgbnVtYmVyIG9m IHBhZ2VzCj4gcGFyYW1ldGVyIGluIGluc2VydF9wdGVfZW50cmllcy4KPiB2ODogQ2hhbmdlIGdl bjhfcHBndHRfY2xlYXJfcHRlX3JhbmdlIHRvIHN0b3AgYXQgUERQIGJvdW5kYXJ5LCBpbnN0ZWFk IG9mCj4gYWRkaW5nIGFuZCBleHRyYSBjbGFtcCBmdW5jdGlvbjsgcmVtb3ZlIHVubmVjZXNzYXJ5 IHBkcF9zdGFydC9wZHBfbGVuCj4gdmFyaWFibGVzIChBa2FzaCkuCj4gdjk6IHBhZ2VzLT5vcmln X25lbnRzIGluc3RlYWQgb2Ygc2dfbmVudHMocGFnZXMtPnNnbCkgdG8gZ2V0IHRoZQo+IGxlbmd0 aCAoQWthc2gpLgo+IHYxMDogUmVtb3ZlIHBkcCB3YXJuaW5nIGNoZWNrIGluZ2VuOF9wcGd0dF9p bnNlcnRfcHRlX2VudHJpZXMgdW50aWwgdGhpcwo+IGNvbW1pdCAoQWthc2gpLgo+IAo+IFJldmll d2VkLWJ5OiBBa2FzaCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4gKHY5KQo+IENjOiBBa2Fz aCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhp ZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYyB8IDUyICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggMzFmYzY3Mi4uZDVh ZTVkZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTY4MSw5ICs2 ODEsOSBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFyX3B0ZV9yYW5nZShzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9Cj4g IAkJY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7Cj4gIAlnZW44 X3B0ZV90ICpwdF92YWRkcjsKPiAtCXVuc2lnbmVkIHBkcGUgPSBzdGFydCA+PiBHRU44X1BEUEVf U0hJRlQgJiBHRU44X1BEUEVfTUFTSzsKPiAtCXVuc2lnbmVkIHBkZSA9IHN0YXJ0ID4+IEdFTjhf UERFX1NISUZUICYgR0VOOF9QREVfTUFTSzsKPiAtCXVuc2lnbmVkIHB0ZSA9IHN0YXJ0ID4+IEdF TjhfUFRFX1NISUZUICYgR0VOOF9QVEVfTUFTSzsKPiArCXVuc2lnbmVkIHBkcGUgPSBnZW44X3Bk cGVfaW5kZXgoc3RhcnQpOwo+ICsJdW5zaWduZWQgcGRlID0gZ2VuOF9wZGVfaW5kZXgoc3RhcnQp Owo+ICsJdW5zaWduZWQgcHRlID0gZ2VuOF9wdGVfaW5kZXgoc3RhcnQpOwo+ICAJdW5zaWduZWQg bnVtX2VudHJpZXMgPSBsZW5ndGggPj4gUEFHRV9TSElGVDsKPiAgCXVuc2lnbmVkIGxhc3RfcHRl LCBpOwo+ICAKPiBAQCAtNzIyLDcgKzcyMiw4IEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xl YXJfcHRlX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAKPiAgCQlwdGUg PSAwOwo+ICAJCWlmICgrK3BkZSA9PSBJOTE1X1BERVMpIHsKPiAtCQkJcGRwZSsrOwo+ICsJCQlp ZiAoKytwZHBlID09IEk5MTVfUERQRVNfUEVSX1BEUCh2bS0+ZGV2KSkKPiArCQkJCWJyZWFrOwo+ ICAJCQlwZGUgPSAwOwo+ICAJCX0KPiAgCX0KPiBAQCAtNzM1LDEyICs3MzYsMjEgQEAgc3RhdGlj IHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKPiAgewo+ICAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KPiAgCQljb250YWluZXJf b2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNlKTsKPiAtCXN0cnVjdCBpOTE1X3BhZ2Vf ZGlyZWN0b3J5X3BvaW50ZXIgKnBkcCA9ICZwcGd0dC0+cGRwOyAvKiBGSVhNRTogNDhiICovCj4g LQo+ICAJZ2VuOF9wdGVfdCBzY3JhdGNoX3B0ZSA9IGdlbjhfcHRlX2VuY29kZShweF9kbWEodm0t PnNjcmF0Y2hfcGFnZSksCj4gIAkJCQkJCSBJOTE1X0NBQ0hFX0xMQywgdXNlX3NjcmF0Y2gpOwo+ ICAKPiAtCWdlbjhfcHBndHRfY2xlYXJfcHRlX3JhbmdlKHZtLCBwZHAsIHN0YXJ0LCBsZW5ndGgs IHNjcmF0Y2hfcHRlKTsKPiArCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHZtLT5kZXYpKSB7 CgpIbSwgdGhpcyBpc24ndCBwcmV0dHksIGFuZCBsb29raW5nIHRocm91Z2ggZWFybGllciBwYXRj aGVzIHlvdSBoYXZlIGEgbG90Cm9mIGlmICg0OEJJVCkgZnVuY3Rpb25zIHJpZ2h0IGF0IHRoZSB0 b3Btb3N0IGxldmVsIHdoZXJlIHdlIGhhdmUgdmZ1bmNzLAplLmcuIGdlbjhfcHBndHRfY2xlYW51 cC4gSW1vIG11Y2ggYmV0dGVyIHRvIGp1c3QgZG8gYQpnZW44X2xlZ2FjeV9wcGd0dF9jbGVhbnVw IGFuZCBnZW44XzRsdmxfcHBndHRfY2xlYW51cC4gWWVhaCBtZWFucyB3ZQpkdXBsaWNhdGUgdGhl IGNhbGwgdG8gZnJlZV9zY3JhY3RoIGJ1dCByZWFsbHkgdGhhdCdzIG1laCAtIHdlIGNvbW1pdHRl ZCB0bwp0aGF0IGFic3RyYWN0aW9uIHNvIGxldCdzIHVzZSBpdC4KCkJ1dCByZXdvcmtpbmcgYWxs IHRoZSBwYXRjaGVzIHRvIGdldCByaWQgb2YgYWxsIHRoZSA0OGJpdCBpZnMgYW5kCmV4cGxvaXRp bmcgdGhlIHZmdW5jIGFic3RyYWN0aW9uIHdlIGhhdmUgd2lsbCBiZSBhIGJpdCBvZiB3b3JrLCBz byBJJ2xsCmtlZXAgbWVyZ2luZyBhbmQgc2lnbiB5b3UgdXAgZm9yIHRoYXQgZm9sbG93LXVwIHRh c2suIFRoZSB1c3VhbCBkZXNpZ24Kd2hlbiB3ZSBoYXZlIHZmdW5jcyBzaG91bGQgYmU6Ci0gZG8g cGVyLXBsYXRmb3JtIHZmdW5jcyBldmVyeXdoZXJlIHlvdSBuZWVkIGEgc3BsaXQKLSBmb3IgZnVu Y3Rpb25hbGl0eSBzaGFyZWQgYmV0d2VlbiBkaWZmZXJlbnQgdmZ1bmNzIGV4dHJhY3QgY29tbW9u IGhlbHBlcgogIGZ1bmN0aW9ucyBhbmQgY2FsbCB0aGVtIGZyb20gYm90aCBwbGFjZXMuCgpFLmcu IGZvciB0aGlzIGNhc2UgaGVyZSBJIHRoaW5rIHdlIG5lZWQgYSBuZXcgNGx2bCBpbnNlcnRfZW50 cmllcwpmdW5jdGlvbiB3aGljaCBjYWxscyB0aGUgZXhpc3Rpbmcgb25lIGluIGEgbG9vcCwgYW5k IGEgM2x2bCBpbnNlcl9lbnRyaWVzCmZ1bmN0aW9uIHdoaWNoIGNhbGxzIHRoZSBleGlzdGluZyBv bmUgZm9yIHRoZSBzaW5nbGUgbGVnYWN5IHBkcC4gTWFrZSAyCmNvcGllcyBvZiB0aGlzIGFuZCBw dWxsIG91dCB0aGUgaWYgdG8gdGhlIHRvcC1sZXZlbCBvZiBlYWNoLCB0aGVuCnNpbXBsaWZ5LgoK SWYgd2UgaGF2ZSBhYnN0cmFjdGlvbiBpbiB0aGUgZm9ybSBvZiB2ZnVuY3MgX2FuZF8gcGlsZSBp biBsb3RzIG9mIGlmcyBhdApsb3cgbGV2ZWwgdGhlbiB3ZSBwYXkgYm90aCB0aGUgcHJpY2UgZm9y IHRoZSBhYnN0cmFjdGlvbiBhbmQgdGhlIHByaWNlIGZvcgp0aWdodGx5IG5pdCBjb2RlLCBpLmUu IGJvdGggZG93bnNpZGVzIHdpdGhvdXQgYW4gdXBzaWRlLgoKQW53YXksIEkgZXhwZWN0IGZvbGxv dy11cCB3b3JrIGhlcmUgOy0pCgpUaGFua3MsIERhbmllbAoKPiArCQlnZW44X3BwZ3R0X2NsZWFy X3B0ZV9yYW5nZSh2bSwgJnBwZ3R0LT5wZHAsIHN0YXJ0LCBsZW5ndGgsCj4gKwkJCQkJICAgc2Ny YXRjaF9wdGUpOwo+ICsJfSBlbHNlIHsKPiArCQl1aW50NjRfdCB0ZW1wbDQsIHBtbDRlOwo+ICsJ CXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcDsKPiArCj4gKwkJZ2VuOF9m b3JfZWFjaF9wbWw0ZShwZHAsICZwcGd0dC0+cG1sNCwgc3RhcnQsIGxlbmd0aCwgdGVtcGw0LCBw bWw0ZSkgewo+ICsJCQlnZW44X3BwZ3R0X2NsZWFyX3B0ZV9yYW5nZSh2bSwgcGRwLCBzdGFydCwg bGVuZ3RoLAo+ICsJCQkJCQkgICBzY3JhdGNoX3B0ZSk7Cj4gKwkJfQo+ICsJfQo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZAo+IEBAIC03NTMsMTYgKzc2MywxMyBAQCBnZW44X3BwZ3R0X2luc2VydF9w dGVfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCXN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCA9Cj4gIAkJY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19w cGd0dCwgYmFzZSk7Cj4gIAlnZW44X3B0ZV90ICpwdF92YWRkcjsKPiAtCXVuc2lnbmVkIHBkcGUg PSBzdGFydCA+PiBHRU44X1BEUEVfU0hJRlQgJiBHRU44X1BEUEVfTUFTSzsKPiAtCXVuc2lnbmVk IHBkZSA9IHN0YXJ0ID4+IEdFTjhfUERFX1NISUZUICYgR0VOOF9QREVfTUFTSzsKPiAtCXVuc2ln bmVkIHB0ZSA9IHN0YXJ0ID4+IEdFTjhfUFRFX1NISUZUICYgR0VOOF9QVEVfTUFTSzsKPiArCXVu c2lnbmVkIHBkcGUgPSBnZW44X3BkcGVfaW5kZXgoc3RhcnQpOwo+ICsJdW5zaWduZWQgcGRlID0g Z2VuOF9wZGVfaW5kZXgoc3RhcnQpOwo+ICsJdW5zaWduZWQgcHRlID0gZ2VuOF9wdGVfaW5kZXgo c3RhcnQpOwo+ICAKPiAgCXB0X3ZhZGRyID0gTlVMTDsKPiAgCj4gIAl3aGlsZSAoX19zZ19wYWdl X2l0ZXJfbmV4dChzZ19pdGVyKSkgewo+IC0JCWlmIChXQVJOX09OKHBkcGUgPj0gR0VOOF9MRUdB Q1lfUERQRVMpKQo+IC0JCQlicmVhazsKPiAtCj4gIAkJaWYgKHB0X3ZhZGRyID09IE5VTEwpIHsK PiAgCQkJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkID0gcGRwLT5wYWdlX2RpcmVjdG9y eVtwZHBlXTsKPiAgCQkJc3RydWN0IGk5MTVfcGFnZV90YWJsZSAqcHQgPSBwZC0+cGFnZV90YWJs ZVtwZGVdOwo+IEBAIC03NzYsNyArNzgzLDggQEAgZ2VuOF9wcGd0dF9pbnNlcnRfcHRlX2VudHJp ZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAkJCWt1bm1hcF9weChwcGd0dCwg cHRfdmFkZHIpOwo+ICAJCQlwdF92YWRkciA9IE5VTEw7Cj4gIAkJCWlmICgrK3BkZSA9PSBJOTE1 X1BERVMpIHsKPiAtCQkJCXBkcGUrKzsKPiArCQkJCWlmICgrK3BkcGUgPT0gSTkxNV9QRFBFU19Q RVJfUERQKHZtLT5kZXYpKQo+ICsJCQkJCWJyZWFrOwo+ICAJCQkJcGRlID0gMDsKPiAgCQkJfQo+ ICAJCQlwdGUgPSAwOwo+IEBAIC03OTUsMTEgKzgwMywyMyBAQCBzdGF0aWMgdm9pZCBnZW44X3Bw Z3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICB7Cj4g IAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQo+ICAJCWNvbnRhaW5lcl9vZih2bSwgc3Ry dWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwo+IC0Jc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnlf cG9pbnRlciAqcGRwID0gJnBwZ3R0LT5wZHA7IC8qIEZJWE1FOiA0OGIgKi8KPiAgCXN0cnVjdCBz Z19wYWdlX2l0ZXIgc2dfaXRlcjsKPiAgCj4gIAlfX3NnX3BhZ2VfaXRlcl9zdGFydCgmc2dfaXRl ciwgcGFnZXMtPnNnbCwgc2dfbmVudHMocGFnZXMtPnNnbCksIDApOwo+IC0JZ2VuOF9wcGd0dF9p bnNlcnRfcHRlX2VudHJpZXModm0sIHBkcCwgJnNnX2l0ZXIsIHN0YXJ0LCBjYWNoZV9sZXZlbCk7 Cj4gKwo+ICsJaWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikpIHsKPiArCQlnZW44 X3BwZ3R0X2luc2VydF9wdGVfZW50cmllcyh2bSwgJnBwZ3R0LT5wZHAsICZzZ19pdGVyLCBzdGFy dCwKPiArCQkJCQkgICAgICBjYWNoZV9sZXZlbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCXN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcDsKPiArCQl1aW50NjRfdCB0ZW1wbDQsIHBt bDRlOwo+ICsJCXVpbnQ2NF90IGxlbmd0aCA9ICh1aW50NjRfdClwYWdlcy0+b3JpZ19uZW50cyA8 PCBQQUdFX1NISUZUOwo+ICsKPiArCQlnZW44X2Zvcl9lYWNoX3BtbDRlKHBkcCwgJnBwZ3R0LT5w bWw0LCBzdGFydCwgbGVuZ3RoLCB0ZW1wbDQsIHBtbDRlKSB7Cj4gKwkJCWdlbjhfcHBndHRfaW5z ZXJ0X3B0ZV9lbnRyaWVzKHZtLCBwZHAsICZzZ19pdGVyLAo+ICsJCQkJCQkgICAgICBzdGFydCwg Y2FjaGVfbGV2ZWwpOwo+ICsJCX0KPiArCX0KPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZ2VuOF9m cmVlX3BhZ2VfdGFibGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLS0gCj4gMi41LjAKPiAK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0g CkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6 Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==