From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 1/7] drm/i915: Stop tracking timeline->inflight_seqnos Date: Fri, 27 Apr 2018 13:20:21 +0100 Message-ID: <39e318c8-4fcc-5e8d-a67a-08bd584c8d99@linux.intel.com> References: <20180426174932.23127-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id E1BE46E8F4 for ; Fri, 27 Apr 2018 12:20:27 +0000 (UTC) In-Reply-To: <20180426174932.23127-1-chris@chris-wilson.co.uk> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI2LzA0LzIwMTggMTg6NDksIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiBjb21taXQgOWI2 NTg2YWU5ZjZiICgiZHJtL2k5MTU6IEtlZXAgYSBnbG9iYWwgc2Vxbm8gcGVyLWVuZ2luZSIpLCB3 ZQo+IG1vdmVkIGZyb20gYSBnbG9iYWwgaW5mbGlnaHQgY291bnRlciB0byBwZXItZW5naW5lIGNv dW50ZXJzIGluIHRoZQo+IGhvcGUgdGhhdCB3aWxsIGJlIGVhc3kgdG8gcnVuIGNvbmN1cnJlbnRs eSBpbiBmdXR1cmUuIEhvd2V2ZXIsIHdpdGggdGhlCj4gYWR2ZW50IG9mIHRoZSBkZXNpcmUgdG8g bW92ZSByZXF1ZXN0cyBiZXR3ZWVuIGVuZ2luZXMsIHdlIGRvIG5lZWQgYQo+IGdsb2JhbCBjb3Vu dGVyIHRvIHByZXNlcnZlIHRoZSBzZW1hbnRpY3MgdGhhdCBubyBlbmdpbmUgd3JhcHMgaW4gdGhl Cj4gbWlkZGxlIG9mIGEgc3VibWl0LiAoQWx0aG91Z2ggdGhpcyBzZW1hbnRpYyBpcyBub3cgb25s eSByZXF1aXJlZCBmb3IgZ2VuNwo+IHNlbWFwaG9yZSBzdXBwb3J0LCB3aGljaCBvbmx5IHN1cHBv cnRzIGdyZWF0ZXItdGhlbiBjb21wYXJpc29ucyEpCj4gCj4gdjI6IEtlZXAgYSBnbG9iYWwgY291 bnRlciBvZiBhbGwgcmVxdWVzdHMgZXZlciBzdWJtaXR0ZWQgYW5kIGZvcmNlIHRoZQo+IHJlc2V0 IHdoZW4gaXQgd3JhcHMuCj4gCj4gUmVmZXJlbmNlczogOWI2NTg2YWU5ZjZiICgiZHJtL2k5MTU6 IEtlZXAgYSBnbG9iYWwgc2Vxbm8gcGVyLWVuZ2luZSIpCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0 dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyAgICAgIHwgIDUgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgICB8ICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3RpbWVsaW5lLmggfCAgNiAtLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1 ZXN0LmMgICAgICB8IDMzICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICB8ICA1ICsrLS0KPiAgIDUgZmlsZXMgY2hhbmdl ZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCAxYzg4ODA1ZDMzNTQuLjgzYzg2MjU3ZmUxYyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTEzNDAsMTAgKzEzNDAsOSBAQCBz dGF0aWMgaW50IGk5MTVfaGFuZ2NoZWNrX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1 bnVzZWQpCj4gICAJCXN0cnVjdCByYl9ub2RlICpyYjsKPiAgIAo+ICAgCQlzZXFfcHJpbnRmKG0s ICIlczpcbiIsIGVuZ2luZS0+bmFtZSk7Cj4gLQkJc2VxX3ByaW50ZihtLCAiXHRzZXFubyA9ICV4 IFtjdXJyZW50ICV4LCBsYXN0ICV4XSwgaW5mbGlnaHQgJWRcbiIsCj4gKwkJc2VxX3ByaW50Ziht LCAiXHRzZXFubyA9ICV4IFtjdXJyZW50ICV4LCBsYXN0ICV4XVxuIiwKPiAgIAkJCSAgIGVuZ2lu ZS0+aGFuZ2NoZWNrLnNlcW5vLCBzZXFub1tpZF0sCj4gLQkJCSAgIGludGVsX2VuZ2luZV9sYXN0 X3N1Ym1pdChlbmdpbmUpLAo+IC0JCQkgICBlbmdpbmUtPnRpbWVsaW5lLT5pbmZsaWdodF9zZXFu b3MpOwo+ICsJCQkgICBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQoZW5naW5lKSk7Cj4gICAJCXNl cV9wcmludGYobSwgIlx0d2FpdGVycz8gJXMsIGZha2UgaXJxIGFjdGl2ZT8gJXMsIHN0YWxsZWQ/ ICVzXG4iLAo+ICAgCQkJICAgeWVzbm8oaW50ZWxfZW5naW5lX2hhc193YWl0ZXIoZW5naW5lKSks Cj4gICAJCQkgICB5ZXNubyh0ZXN0X2JpdChlbmdpbmUtPmlkLAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IGluZGV4IDg0NDRjYThkNWFhMy4uOGZkOWZiNmVmYmE1IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gQEAgLTIwNjEsNiArMjA2MSw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlIHsKPiAgIAkJc3RydWN0IGxpc3RfaGVhZCB0aW1lbGluZXM7Cj4gICAJCXN0cnVjdCBpOTE1 X2dlbV90aW1lbGluZSBnbG9iYWxfdGltZWxpbmU7Cj4gICAJCXUzMiBhY3RpdmVfcmVxdWVzdHM7 Cj4gKwkJdTMyIHJlcXVlc3Rfc2VyaWFsOwo+ICAgCj4gICAJCS8qKgo+ICAgCQkgKiBJcyB0aGUg R1BVIGN1cnJlbnRseSBjb25zaWRlcmVkIGlkbGUsIG9yIGJ1c3kgZXhlY3V0aW5nCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5oCj4gaW5kZXggMzNlMDFiZjZhYTM2Li42 ZTgyMTE5ZTJjZDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dGltZWxpbmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5l LmgKPiBAQCAtMzcsMTIgKzM3LDYgQEAgc3RydWN0IGludGVsX3RpbWVsaW5lIHsKPiAgIAl1NjQg ZmVuY2VfY29udGV4dDsKPiAgIAl1MzIgc2Vxbm87Cj4gICAKPiAtCS8qKgo+IC0JICogQ291bnQg b2Ygb3V0c3RhbmRpbmcgcmVxdWVzdHMsIGZyb20gdGhlIHRpbWUgdGhleSBhcmUgY29uc3RydWN0 ZWQKPiAtCSAqIHRvIHRoZSBtb21lbnQgdGhleSBhcmUgcmV0aXJlZC4gTG9vc2VseSBjb3VwbGVk IHRvIGhhcmR3YXJlLgo+IC0JICovCj4gLQl1MzIgaW5mbGlnaHRfc2Vxbm9zOwo+IC0KPiAgIAlz cGlubG9ja190IGxvY2s7Cj4gICAKPiAgIAkvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuYwo+IGluZGV4IGI2OTJhOWY3YzM1Ny4uYjE5OTNkNGExYTUzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBAQCAtMjQxLDYgKzI0MSw3IEBAIHN0YXRpYyBpbnQgcmVz ZXRfYWxsX2dsb2JhbF9zZXFubyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHNl cW5vKQo+ICAgCQkJICAgICAgIHNpemVvZih0aW1lbGluZS0+ZW5naW5lW2lkXS5nbG9iYWxfc3lu YykpOwo+ICAgCX0KPiAgIAo+ICsJaTkxNS0+Z3QucmVxdWVzdF9zZXJpYWwgPSBzZXFubzsKPiAg IAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IEBAIC0yNTcsMTggKzI1OCwyMiBAQCBpbnQgaTkxNV9n ZW1fc2V0X2dsb2JhbF9zZXFubyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vxbm8pCj4g ICAJcmV0dXJuIHJlc2V0X2FsbF9nbG9iYWxfc2Vxbm8oaTkxNSwgc2Vxbm8gLSAxKTsKPiAgIH0K PiAgIAo+IC1zdGF0aWMgaW50IHJlc2VydmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiArc3RhdGljIGludCByZXNlcnZlX2d0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUt Pmk5MTU7Cj4gLQl1MzIgYWN0aXZlID0gKytlbmdpbmUtPnRpbWVsaW5lLT5pbmZsaWdodF9zZXFu b3M7Cj4gLQl1MzIgc2Vxbm8gPSBlbmdpbmUtPnRpbWVsaW5lLT5zZXFubzsKPiAgIAlpbnQgcmV0 Owo+ICAgCj4gLQkvKiBSZXNlcnZhdGlvbiBpcyBmaW5lIHVudGlsIHdlIG5lZWQgdG8gd3JhcCBh cm91bmQgKi8KPiAtCWlmICh1bmxpa2VseShhZGRfb3ZlcmZsb3dzKHNlcW5vLCBhY3RpdmUpKSkg ewo+ICsJLyoKPiArCSAqIFJlc2VydmF0aW9uIGlzIGZpbmUgdW50aWwgd2UgbWF5IG5lZWQgdG8g d3JhcCBhcm91bmQKPiArCSAqCj4gKwkgKiBCeSBpbmNyZW1lbnRpbmcgdGhlIHNlcmlhbCBmb3Ig ZXZlcnkgcmVxdWVzdCwgd2Uga25vdyB0aGF0IG5vCj4gKwkgKiBpbmRpdmlkdWFsIGVuZ2luZSBt YXkgZXhjZWVkIHRoYXQgc2VyaWFsIChhcyBlYWNoIGlzIHJlc2V0IHRvIDAKPiArCSAqIG9uIGFu eSB3cmFwKS4gVGhpcyBwcm90ZWN0cyBldmVuIHRoZSBtb3N0IHBlc3NpbWlzdGljIG9mIG1pZ3Jh dGlvbnMKPiArCSAqIG9mIGV2ZXJ5IHJlcXVlc3QgZnJvbSBhbGwgZW5naW5lcyBvbnRvIGp1c3Qg b25lLgo+ICsJICovCj4gKwl3aGlsZSAodW5saWtlbHkoKytpOTE1LT5ndC5yZXF1ZXN0X3Nlcmlh bCA9PSAwKSkgewo+ICAgCQlyZXQgPSByZXNldF9hbGxfZ2xvYmFsX3NlcW5vKGk5MTUsIDApOwo+ ICAgCQlpZiAocmV0KSB7Cj4gLQkJCWVuZ2luZS0+dGltZWxpbmUtPmluZmxpZ2h0X3NlcW5vcy0t Owo+ICsJCQlpOTE1LT5ndC5yZXF1ZXN0X3NlcmlhbC0tOwo+ICAgCQkJcmV0dXJuIHJldDsKPiAg IAkJfQo+ICAgCX0KPiBAQCAtMjc5LDE1ICsyODQsMTAgQEAgc3RhdGljIGludCByZXNlcnZlX2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJcmV0dXJuIDA7Cj4gICB9 Cj4gICAKPiAtc3RhdGljIHZvaWQgdW5yZXNlcnZlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gK3N0YXRpYyB2b2lkIHVucmVzZXJ2ZV9ndChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g ZW5naW5lLT5pOTE1Owo+IC0KPiAgIAlpZiAoIS0taTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKQo+ ICAgCQlpOTE1X2dlbV9wYXJrKGk5MTUpOwo+IC0KPiAtCUdFTV9CVUdfT04oIWVuZ2luZS0+dGlt ZWxpbmUtPmluZmxpZ2h0X3NlcW5vcyk7Cj4gLQllbmdpbmUtPnRpbWVsaW5lLT5pbmZsaWdodF9z ZXFub3MtLTsKPiAgIH0KPiAgIAo+ICAgdm9pZCBpOTE1X2dlbV9yZXRpcmVfbm9vcChzdHJ1Y3Qg aTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCj4gQEAgLTM2Miw3ICszNjIsNiBAQCBzdGF0aWMgdm9p ZCBpOTE1X3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJ bGlzdF9kZWxfaW5pdCgmcmVxdWVzdC0+bGluayk7Cj4gICAJc3Bpbl91bmxvY2tfaXJxKCZlbmdp bmUtPnRpbWVsaW5lLT5sb2NrKTsKPiAgIAo+IC0JdW5yZXNlcnZlX2VuZ2luZShyZXF1ZXN0LT5l bmdpbmUpOwo+ICAgCWFkdmFuY2VfcmluZyhyZXF1ZXN0KTsKPiAgIAo+ICAgCWZyZWVfY2FwdHVy ZV9saXN0KHJlcXVlc3QpOwo+IEBAIC00MjQsNiArNDIzLDggQEAgc3RhdGljIHZvaWQgaTkxNV9y ZXF1ZXN0X3JldGlyZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCX0KPiAgIAlz cGluX3VubG9ja19pcnEoJnJlcXVlc3QtPmxvY2spOwo+ICAgCj4gKwl1bnJlc2VydmVfZ3QocmVx dWVzdC0+aTkxNSk7Cj4gKwo+ICAgCWk5MTVfc2NoZWRfbm9kZV9maW5pKHJlcXVlc3QtPmk5MTUs ICZyZXF1ZXN0LT5zY2hlZCk7Cj4gICAJaTkxNV9yZXF1ZXN0X3B1dChyZXF1ZXN0KTsKPiAgIH0K PiBAQCAtNjQyLDcgKzY0Myw3IEBAIGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAJCXJldHVy biBFUlJfQ0FTVChyaW5nKTsKPiAgIAlHRU1fQlVHX09OKCFyaW5nKTsKPiAgIAo+IC0JcmV0ID0g cmVzZXJ2ZV9lbmdpbmUoZW5naW5lKTsKPiArCXJldCA9IHJlc2VydmVfZ3QoaTkxNSk7Cj4gICAJ aWYgKHJldCkKPiAgIAkJZ290byBlcnJfdW5waW47Cj4gICAKPiBAQCAtNzg0LDcgKzc4NSw3IEBA IGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAKPiAgIAlrbWVtX2NhY2hlX2ZyZWUoaTkxNS0+ cmVxdWVzdHMsIHJxKTsKPiAgIGVycl91bnJlc2VydmU6Cj4gLQl1bnJlc2VydmVfZW5naW5lKGVu Z2luZSk7Cj4gKwl1bnJlc2VydmVfZ3QoaTkxNSk7Cj4gICBlcnJfdW5waW46Cj4gICAJZW5naW5l LT5jb250ZXh0X3VucGluKGVuZ2luZSwgY3R4KTsKPiAgIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggYWMwMDlmMTBjOTQ4 Li5lYmE4MWQ1NWRjM2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu Ywo+IEBAIC0xMzIxLDEyICsxMzIxLDExIEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2Vk KCZlbmdpbmUtPmk5MTUtPmdwdV9lcnJvcikpCj4gICAJCWRybV9wcmludGYobSwgIioqKiBXRURH RUQgKioqXG4iKTsKPiAgIAo+IC0JZHJtX3ByaW50ZihtLCAiXHRjdXJyZW50IHNlcW5vICV4LCBs YXN0ICV4LCBoYW5nY2hlY2sgJXggWyVkIG1zXSwgaW5mbGlnaHQgJWRcbiIsCj4gKwlkcm1fcHJp bnRmKG0sICJcdGN1cnJlbnQgc2Vxbm8gJXgsIGxhc3QgJXgsIGhhbmdjaGVjayAleCBbJWQgbXNd XG4iLAo+ICAgCQkgICBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSksCj4gICAJCSAgIGlu dGVsX2VuZ2luZV9sYXN0X3N1Ym1pdChlbmdpbmUpLAo+ICAgCQkgICBlbmdpbmUtPmhhbmdjaGVj ay5zZXFubywKPiAtCQkgICBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLSBlbmdpbmUtPmhhbmdj aGVjay5hY3Rpb25fdGltZXN0YW1wKSwKPiAtCQkgICBlbmdpbmUtPnRpbWVsaW5lLT5pbmZsaWdo dF9zZXFub3MpOwo+ICsJCSAgIGppZmZpZXNfdG9fbXNlY3MoamlmZmllcyAtIGVuZ2luZS0+aGFu Z2NoZWNrLmFjdGlvbl90aW1lc3RhbXApKTsKPiAgIAlkcm1fcHJpbnRmKG0sICJcdFJlc2V0IGNv dW50OiAlZCAoZ2xvYmFsICVkKVxuIiwKPiAgIAkJICAgaTkxNV9yZXNldF9lbmdpbmVfY291bnQo ZXJyb3IsIGVuZ2luZSksCj4gICAJCSAgIGk5MTVfcmVzZXRfY291bnQoZXJyb3IpKTsKPiAKClJl dmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVn YXJkcywKClR2cnRrbwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==