From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sagar Arun Kamble Subject: Re: [PATCH v10 1/9] drm/i915: Create GEM runtime resume helper and handle GEM suspend/resume errors Date: Wed, 27 Sep 2017 22:32:14 +0530 Message-ID: <23639d9e-07c1-7d64-c941-cbe2eae57b86@intel.com> References: <1506504639-25631-1-git-send-email-sagar.a.kamble@intel.com> <1506504639-25631-2-git-send-email-sagar.a.kamble@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0599E6E78F for ; Wed, 27 Sep 2017 17:02:53 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michal Wajdeczko , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org CgpPbiA5LzI3LzIwMTcgOToxMSBQTSwgTWljaGFsIFdhamRlY3prbyB3cm90ZToKPiBPbiBXZWQs IDI3IFNlcCAyMDE3IDExOjMwOjMxICswMjAwLCBTYWdhciBBcnVuIEthbWJsZSAKPiA8c2FnYXIu YS5rYW1ibGVAaW50ZWwuY29tPiB3cm90ZToKPgo+PiBUaGVzZSBjaGFuZ2VzIGFyZSBwcmVwYXJh dGlvbiB0byBoYW5kbGUgR3VDIHN1c3BlbmQvcmVzdW1lLiBQcmVwYXJlZAo+PiBoZWxwZXIgaTkx NV9nZW1fcnVudGltZV9yZXN1bWUgdG8gcmVpbml0aWFsaXplIHN1c3BlbmRlZCBnZW0gc2V0dXAu Cj4+IFJldHVybmluZyBzdGF0dXMgZnJvbSBpOTE1X2dlbV9ydW50aW1lX3N1c3BlbmQgYW5kIGk5 MTVfZ2VtX3Jlc3VtZS4KPj4gVGhpcyB3aWxsIGJlIHBsYWNlaG9sZGVyIGZvciBoYW5kbGluZyBh bnkgZXJyb3JzIGZyb20gdUMgc3VzcGVuZC9yZXN1bWUKPj4gaW4gdXBjb21pbmcgcGF0Y2hlcy4g UmVzdHJ1Y3R1cmVkIHRoZSBzdXNwZW5kL3Jlc3VtZSByb3V0aW5lcyB3LnIudCAKPj4gc2V0dXAK Pj4gY3JlYXRpb24gYW5kIHJvbGxiYWNrIG9yZGVyLgo+PiBUaGlzIGFsc28gZml4ZXMgaXNzdWUg b2Ygb3JkZXJpbmcgb2YgaTkxNV9nZW1fcnVudGltZV9yZXN1bWUgd2l0aAo+PiBpbnRlbF9ydW50 aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzLgo+Pgo+PiB2MjogRml4ZWQgcmV0dXJuIGZyb20gaW50 ZWxfcnVudGltZV9yZXN1bWUuIChNaWNoYcWCIFdpbmlhcnNraSkKPj4KPj4gdjM6IE5vdCByZXR1 cm5pbmcgc3RhdHVzIGZyb20gZ2VtX3J1bnRpbWVfcmVzdW1lLiAoQ2hyaXMpCj4+Cj4+IFNpZ25l ZC1vZmYtYnk6IFNhZ2FyIEFydW4gS2FtYmxlIDxzYWdhci5hLmthbWJsZUBpbnRlbC5jb20+Cj4+ IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4gQ2M6IEltcmUg RGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPj4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56 YW5vbmlAaW50ZWwuY29tPgo+PiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwu Y29tPgo+PiBDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+ Cj4+IENjOiBNaWNoYcWCIFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+Cj4+ IC0tLQo+PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgfCAyMiArKysrKysrKysr KysrLS0tLS0tLS0tCj4+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCB8wqAgNSAr KystLQo+PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgfCAxOCArKysrKysrKysr KysrKysrLS0KPj4gwqAzIGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0 aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+IGluZGV4IDcwNTZiYjIu LmQwYTcxMGQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+PiBAQCAtMTY1NSw2ICsx NjU1LDcgQEAgc3RhdGljIGludCBpOTE1X3N1c3BlbmRfc3dpdGNoZXJvbyhzdHJ1Y3QgCj4+IGRy bV9kZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQo+PiDCoHN0YXRpYyBpbnQgaTkxNV9k cm1fcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+IMKgewo+PiDCoMKgwqDCoCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4+ICvCoMKgwqAg c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7Cj4+IMKgwqDCoMKgIGlu dCByZXQ7Cj4+IMKgwqDCoMKgZGlzYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGRldl9wcml2KTsK Pj4gQEAgLTE2NjYsNyArMTY2Nyw5IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fcmVzdW1lKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4+IMKgwqDCoMKgaW50ZWxfY3NyX3Vjb2RlX3Jlc3VtZShkZXZf cHJpdik7Cj4+IC3CoMKgwqAgaTkxNV9nZW1fcmVzdW1lKGRldl9wcml2KTsKPj4gK8KgwqDCoCBy ZXQgPSBpOTE1X2dlbV9yZXN1bWUoZGV2X3ByaXYpOwo+PiArwqDCoMKgIGlmIChyZXQpCj4+ICvC oMKgwqDCoMKgwqDCoCBkZXZfZXJyKCZwZGV2LT5kZXYsICJHRU0gcmVzdW1lIGZhaWxlZFxuIik7 Cj4KPiBidHcsIGNvZGUgYWJvdmUvYmVsb3cgdXNlcyBEUk1fRVJST1IoKQpUaGlzIHdhcyBpbiBz eW1tZXRyeSB3aXRoIGk5MTVfZ2VtX3N1c3BlbmQgcmV0dXJuIGhhbmRsaW5nLgo+Cj4+IMKgwqDC oMKgaTkxNV9yZXN0b3JlX3N0YXRlKGRldl9wcml2KTsKPj4gwqDCoMKgwqAgaW50ZWxfcHBzX3Vu bG9ja19yZWdzX3dhKGRldl9wcml2KTsKPj4gQEAgLTI0OTUsNyArMjQ5OCwxMSBAQCBzdGF0aWMg aW50IGludGVsX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlIAo+PiAqa2RldikKPj4gwqDC oMKgwqDCoCAqIFdlIGFyZSBzYWZlIGhlcmUgYWdhaW5zdCByZS1mYXVsdHMsIHNpbmNlIHRoZSBm YXVsdCBoYW5kbGVyIAo+PiB0YWtlcwo+PiDCoMKgwqDCoMKgICogYW4gUlBNIHJlZmVyZW5jZS4K Pj4gwqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgIGk5MTVfZ2VtX3J1bnRpbWVfc3VzcGVuZChkZXZf cHJpdik7Cj4+ICvCoMKgwqAgcmV0ID0gaTkxNV9nZW1fcnVudGltZV9zdXNwZW5kKGRldl9wcml2 KTsKPj4gK8KgwqDCoCBpZiAocmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlbmFibGVfcnBtX3dh a2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ Cj4gYXMgdGhpcyBpcyBzZWNvbmQgcGxhY2Ugd2hlcmUgd2UgZXhpdCwgbWF5YmUgaXQncyB0aW1l IGZvcgo+Cj4gwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsKPiBm YWlsOgo+IMKgwqDCoMKgZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoZGV2X3ByaXYpOwo+IMKg wqDCoMKgcmV0dXJuIHJldDsKPiB9Cj4KWWVzLiBXaWxsIHVwZGF0ZS4KPj4gK8KgwqDCoCB9Cj4+ IMKgwqDCoMKgaW50ZWxfZ3VjX3N1c3BlbmQoZGV2X3ByaXYpOwo+PiBAQCAtMjUxNSw2ICsyNTIy LDggQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAKPj4g KmtkZXYpCj4+IMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJSdW50aW1lIHN1c3BlbmQgZmFp bGVkLCBkaXNhYmxpbmcgaXQgKCVkKVxuIiwgcmV0KTsKPj4gwqDCoMKgwqDCoMKgwqDCoCBpbnRl bF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzKGRldl9wcml2KTsKPj4gK8KgwqDCoMKgwqDC oMKgIGludGVsX2d1Y19yZXN1bWUoZGV2X3ByaXYpOwo+PiArwqDCoMKgwqDCoMKgwqAgaTkxNV9n ZW1fcnVudGltZV9yZXN1bWUoZGV2X3ByaXYpOwo+PiDCoMKgwqDCoMKgwqDCoMKgIGVuYWJsZV9y cG1fd2FrZXJlZl9hc3NlcnRzKGRldl9wcml2KTsKPj4gwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJl dDsKPj4gQEAgLTI1OTYsMTMgKzI2MDUsNiBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVz dW1lKHN0cnVjdCBkZXZpY2UgCj4+ICprZGV2KQo+PiDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IHZs dl9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdiwgdHJ1ZSk7Cj4+IMKgwqDCoMKgIH0KPj4gLcKgwqDC oCAvKgo+PiAtwqDCoMKgwqAgKiBObyBwb2ludCBvZiByb2xsaW5nIGJhY2sgdGhpbmdzIGluIGNh c2Ugb2YgYW4gZXJyb3IsIGFzIHRoZSBiZXN0Cj4+IC3CoMKgwqDCoCAqIHdlIGNhbiBkbyBpcyB0 byBob3BlIHRoYXQgdGhpbmdzIHdpbGwgc3RpbGwgd29yayAoYW5kIGRpc2FibGUgCj4+IFJQTSku Cj4+IC3CoMKgwqDCoCAqLwo+PiAtwqDCoMKgIGk5MTVfZ2VtX2luaXRfc3dpenpsaW5nKGRldl9w cml2KTsKPj4gLcKgwqDCoCBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhkZXZfcHJpdik7Cj4+IC0K Pj4gwqDCoMKgwqAgaW50ZWxfcnVudGltZV9wbV9lbmFibGVfaW50ZXJydXB0cyhkZXZfcHJpdik7 Cj4+IMKgwqDCoMKgLyoKPj4gQEAgLTI2MTUsNiArMjYxNyw4IEBAIHN0YXRpYyBpbnQgaW50ZWxf cnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAKPj4gKmtkZXYpCj4+IMKgwqDCoMKgaW50ZWxf ZW5hYmxlX2lwYyhkZXZfcHJpdik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fcnVudGltZV9yZXN1bWUo ZGV2X3ByaXYpOwo+PiArCj4+IMKgwqDCoMKgIGVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGRl dl9wcml2KTsKPj4gwqDCoMKgwqBpZiAocmV0KQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4+IGluZGV4IGI3Y2JhODkuLjQyZjNkODkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+PiBAQCAtMzQ3OSw3ICszNDc5LDggQEAgc3RydWN0IGk5MTVfdm1hICogX19tdXN0X2NoZWNr Cj4+IMKgaW50IGk5MTVfZ2VtX29iamVjdF91bmJpbmQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaik7Cj4+IMKgdm9pZCBpOTE1X2dlbV9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaik7Cj4+IC12b2lkIGk5MTVfZ2VtX3J1bnRpbWVfc3VzcGVuZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAraW50IGk5MTVfZ2VtX3J1bnRpbWVf c3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiArdm9pZCBpOTE1 X2dlbV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ PiBzdGF0aWMgaW5saW5lIGludCBfX3NnX3BhZ2VfY291bnQoY29uc3Qgc3RydWN0IHNjYXR0ZXJs aXN0ICpzZykKPj4gwqB7Cj4+IEBAIC0zNjgyLDcgKzM2ODMsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jl c2V0X2VuZ2luZShzdHJ1Y3QgCj4+IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiDCoGludCBp OTE1X2dlbV93YWl0X2Zvcl9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBmbGFncyk7Cj4+ IMKgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7Cj4+IC12b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAraW50IGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiDCoGludCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1f ZmF1bHQgKnZtZik7Cj4+IMKgaW50IGk5MTVfZ2VtX29iamVjdF93YWl0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVk IGludCBmbGFncywKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBpbmRleCA3M2VlYjZi Li41OWE4OGYyIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gQEAgLTIwMjIsNyAr MjAyMiw3IEBAIGludCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPj4gwqDC oMKgwqAgaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4+IMKgfQo+PiAtdm9pZCBpOTE1X2dl bV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAr aW50IGk5MTVfZ2VtX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4+IMKgewo+PiDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LCAqb247Cj4+IMKgwqDCoMKgIGludCBpOwo+PiBAQCAtMjA2NSw2ICsyMDY1LDE4IEBAIHZvaWQg aTkxNV9nZW1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCAKPj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4+IEdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnJlZy0+dm1hLT5vYmotPnVzZXJmYXVs dF9saW5rKSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqAgcmVnLT5kaXJ0eSA9IHRydWU7Cj4+IMKgwqDC oMKgIH0KPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICt2b2lkIGk5MTVf Z2VtX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4g K3sKPj4gK8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBObyBwb2ludCBvZiByb2xsaW5nIGJhY2sg dGhpbmdzIGluIGNhc2Ugb2YgYW4gZXJyb3IsIGFzIHRoZSBiZXN0Cj4+ICvCoMKgwqDCoCAqIHdl IGNhbiBkbyBpcyB0byBob3BlIHRoYXQgdGhpbmdzIHdpbGwgc3RpbGwgd29yayAoYW5kIGRpc2Fi bGUgCj4+IFJQTSkuCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIGk5MTVfZ2VtX2luaXRfc3dp enpsaW5nKGRldl9wcml2KTsKPj4gK8KgwqDCoCBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhkZXZf cHJpdik7Cj4+IMKgfQo+PiBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfbW1hcF9v ZmZzZXQoc3RydWN0IAo+PiBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+IEBAIC00NTg3LDcg KzQ1OTksNyBAQCBpbnQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAK Pj4gKmRldl9wcml2KQo+PiDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiDCoH0KPj4gLXZvaWQgaTkx NV9nZW1fcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK2ludCBp OTE1X2dlbV9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiDCoHsK Pj4gwqDCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+PiBA QCAtNDYwMyw2ICs0NjE1LDggQEAgdm9pZCBpOTE1X2dlbV9yZXN1bWUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgCj4+ICpkZXZfcHJpdikKPj4gwqDCoMKgwqAgZGV2X3ByaXYtPmd0LnJlc3VtZShk ZXZfcHJpdik7Cj4+IMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+ ICsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gwqB9Cj4+IHZvaWQgaTkxNV9nZW1faW5pdF9zd2l6 emxpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==