From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 07/10] drm/i915: Remove superfluous powersave work flushing Date: Mon, 11 Jul 2016 17:11:08 +0300 Message-ID: <878tx8tgcj.fsf@intel.com> References: <1468055535-19740-1-git-send-email-chris@chris-wilson.co.uk> <1468055535-19740-8-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id D5C0789FD7 for ; Mon, 11 Jul 2016 14:11:43 +0000 (UTC) In-Reply-To: <1468055535-19740-8-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gSW5zdGVh ZCBvZiBmbHVzaGluZyB0aGUgb3V0c3RhbmRpbmcgZW5hYmxpbmcsIHJlbWVtYmVyIHRoZSByZXF1 ZXN0ZWQKPiBmcmVxdWVuY3kgdG8gYXBwbHkgd2hlbiB0aGUgcG93ZXJzYXZlIHdvcmsgcnVucy4K Pgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr Pgo+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoK UmV2aWV3ZWQtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgoKPiAt LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCAzMCArKy0tLS0tLS0t LS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAgfCA1MiAr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwg MTYgaW5zZXJ0aW9ucygrKSwgNjYgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwo+IGluZGV4IGQxZmY0Y2I5YjkwZS4uOTBhZWY0NTQwMTkzIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMTIwNSw4ICsxMjA1LDYgQEAgc3RhdGlj IGludCBpOTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2Vk KQo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gLQlmbHVzaF9k ZWxheWVkX3dvcmsoJmRldl9wcml2LT5ycHMuZGVsYXllZF9yZXN1bWVfd29yayk7Cj4gLQo+ICAJ aWYgKElTX0dFTjUoZGV2KSkgewo+ICAJCXUxNiByZ3Zzd2N0bCA9IEk5MTVfUkVBRDE2KE1FTVNX Q1RMKTsKPiAgCQl1MTYgcmd2c3RhdCA9IEk5MTVfUkVBRDE2KE1FTVNUQVRfSUxLKTsKPiBAQCAt MTg5OCw4ICsxODk2LDYgQEAgc3RhdGljIGludCBpOTE1X3JpbmdfZnJlcV90YWJsZShzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChk ZXZfcHJpdik7Cj4gIAo+IC0JZmx1c2hfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cnBzLmRlbGF5 ZWRfcmVzdW1lX3dvcmspOwo+IC0KPiAgCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgm ZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290byBvdXQ7Cj4gQEAg LTQ5NTIsMjAgKzQ5NDgsMTEgQEAgaTkxNV9tYXhfZnJlcV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2 YWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkYXRhOwo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0JaW50IHJldDsKPiAg Cj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ICAJCXJldHVybiAtRU5PREVWOwo+ ICAKPiAtCWZsdXNoX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPnJwcy5kZWxheWVkX3Jlc3VtZV93 b3JrKTsKPiAtCj4gLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5y cHMuaHdfbG9jayk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ICAJKnZhbCA9 IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLm1heF9mcmVxX3NvZnRsaW1p dCk7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gLQo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTQ5ODAsOCArNDk2Nyw2IEBAIGk5MTVfbWF4X2ZyZXFfc2V0 KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAtCWZsdXNoX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYt PnJwcy5kZWxheWVkX3Jlc3VtZV93b3JrKTsKPiAtCj4gIAlEUk1fREVCVUdfRFJJVkVSKCJNYW51 YWxseSBzZXR0aW5nIG1heCBmcmVxIHRvICVsbHVcbiIsIHZhbCk7Cj4gIAo+ICAJcmV0ID0gbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+IEBAIC01MDE5 LDIwICs1MDA0LDExIEBAIGk5MTVfbWluX2ZyZXFfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGF0YTsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCByZXQ7Cj4gIAo+IC0J aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNikKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNikKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gLQlmbHVzaF9kZWxheWVkX3dvcmsoJmRl dl9wcml2LT5ycHMuZGVsYXllZF9yZXN1bWVfd29yayk7Cj4gLQo+IC0JcmV0ID0gbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+IC0JaWYgKHJldCkKPiAt CQlyZXR1cm4gcmV0Owo+IC0KPiAgCSp2YWwgPSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2 X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spOwo+IC0KPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC01MDQ0LDEx ICs1MDIwLDkgQEAgaTkxNV9taW5fZnJlcV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAgCXUz MiBod19tYXgsIGh3X21pbjsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuIDwgNikKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikKPiAgCQlyZXR1cm4g LUVOT0RFVjsKPiAgCj4gLQlmbHVzaF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5ycHMuZGVsYXll ZF9yZXN1bWVfd29yayk7Cj4gLQo+ICAJRFJNX0RFQlVHX0RSSVZFUigiTWFudWFsbHkgc2V0dGlu ZyBtaW4gZnJlcSB0byAlbGx1XG4iLCB2YWwpOwo+ICAKPiAgCXJldCA9IG11dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9z eXNmcy5jCj4gaW5kZXggOGMwNDVmZjQ3ZjBlLi5kNDcyODFiNGIxYzEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zeXNmcy5jCj4gQEAgLTI3MSw4ICsyNzEsNiBAQCBzdGF0aWMgc3NpemVfdCBn dF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJaW50IHJldDsKPiAgCj4g LQlmbHVzaF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5ycHMuZGVsYXllZF9yZXN1bWVfd29yayk7 Cj4gLQo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCW11dGV4X2xv Y2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gQEAgLTMwMywxOSArMzAxLDEwIEBAIHN0YXRp YyBzc2l6ZV90IGd0X2N1cl9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gIAlz dHJ1Y3QgZHJtX21pbm9yICptaW5vciA9IGRldl90b19kcm1fbWlub3Ioa2Rldik7Cj4gIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gbWlub3ItPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCByZXQ7Cj4gLQo+IC0JZmx1c2hf ZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cnBzLmRlbGF5ZWRfcmVzdW1lX3dvcmspOwo+IC0KPiAt CWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAtCj4gLQltdXRleF9sb2NrKCZkZXZf cHJpdi0+cnBzLmh3X2xvY2spOwo+IC0JcmV0ID0gaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRl dl9wcml2LT5ycHMuY3VyX2ZyZXEpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAtCj4gLQly ZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwgcmV0KTsKPiArCXJldHVybiBz bnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAo+ICsJCQlpbnRlbF9ncHVfZnJlcShkZXZf cHJpdiwKPiArCQkJCSAgICAgICBkZXZfcHJpdi0+cnBzLmN1cl9mcmVxKSk7Cj4gIH0KPiAgCj4g IHN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2Rl diwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiBAQCAtMzI0LDcg KzMxMyw4IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRl dmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG1pbm9yLT5kZXYpOwo+ICAKPiAgCXJldHVybiBzbnBy aW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAo+IC0JCQlpbnRlbF9ncHVfZnJlcShkZXZfcHJp diwgZGV2X3ByaXYtPnJwcy5ib29zdF9mcmVxKSk7Cj4gKwkJCWludGVsX2dwdV9mcmVxKGRldl9w cml2LAo+ICsJCQkJICAgICAgIGRldl9wcml2LT5ycHMuYm9vc3RfZnJlcSkpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgc3NpemVfdCBndF9ib29zdF9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICpr ZGV2LAo+IEBAIC0zNjAsOSArMzUwLDkgQEAgc3RhdGljIHNzaXplX3Qgdmx2X3JwZV9mcmVxX21o el9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g bWlub3ItPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKPiAgCj4gLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsCj4gLQkJCSIl ZFxuIiwKPiAtCQkJaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuZWZmaWNp ZW50X2ZyZXEpKTsKPiArCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAo+ ICsJCQlpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwKPiArCQkJCSAgICAgICBkZXZfcHJpdi0+cnBz LmVmZmljaWVudF9mcmVxKSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBzc2l6ZV90IGd0X21heF9mcmVx X21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCj4gQEAgLTM3MCwxNSArMzYwLDEwIEBAIHN0YXRpYyBzc2l6ZV90IGd0 X21heF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlCj4gIAlzdHJ1Y3QgZHJtX21pbm9yICptaW5vciA9IGRldl90b19kcm1fbWlub3Ioa2Rl dik7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbWlub3ItPmRldjsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCByZXQ7Cj4g LQo+IC0JZmx1c2hfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cnBzLmRlbGF5ZWRfcmVzdW1lX3dv cmspOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gLQlyZXQg PSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9zb2Z0bGlt aXQpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+IC0KPiAtCXJl dHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLCByZXQpOwo+ICsJcmV0dXJuIHNu cHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCj4gKwkJCWludGVsX2dwdV9mcmVxKGRldl9w cml2LAo+ICsJCQkJICAgICAgIGRldl9wcml2LT5ycHMubWF4X2ZyZXFfc29mdGxpbWl0KSk7Cj4g IH0KPiAgCj4gIHN0YXRpYyBzc2l6ZV90IGd0X21heF9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2 aWNlICprZGV2LAo+IEBAIC0zOTUsOCArMzgwLDYgQEAgc3RhdGljIHNzaXplX3QgZ3RfbWF4X2Zy ZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gIAlpZiAocmV0KQo+ICAJCXJldHVy biByZXQ7Cj4gIAo+IC0JZmx1c2hfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cnBzLmRlbGF5ZWRf cmVzdW1lX3dvcmspOwo+IC0KPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAg Cj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+IEBAIC00MzgsMTUgKzQy MSwxMCBAQCBzdGF0aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNl ICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZQo+ICAJc3RydWN0IGRybV9taW5vciAqbWlu b3IgPSBkZXZfdG9fZHJtX21pbm9yKGtkZXYpOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IG1pbm9yLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gLQlpbnQgcmV0Owo+ICAKPiAtCWZsdXNoX2RlbGF5ZWRfd29yaygmZGV2X3By aXYtPnJwcy5kZWxheWVkX3Jlc3VtZV93b3JrKTsKPiAtCj4gLQltdXRleF9sb2NrKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spOwo+IC0JcmV0ID0gaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9w cml2LT5ycHMubWluX2ZyZXFfc29mdGxpbWl0KTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnJwcy5od19sb2NrKTsKPiAtCj4gLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIl ZFxuIiwgcmV0KTsKPiArCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAo+ ICsJCQlpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwKPiArCQkJCSAgICAgICBkZXZfcHJpdi0+cnBz Lm1pbl9mcmVxX3NvZnRsaW1pdCkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgc3NpemVfdCBndF9taW5f ZnJlcV9taHpfc3RvcmUoc3RydWN0IGRldmljZSAqa2RldiwKPiBAQCAtNDYzLDggKzQ0MSw2IEBA IHN0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2 LAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCWZsdXNoX2RlbGF5ZWRfd29y aygmZGV2X3ByaXYtPnJwcy5kZWxheWVkX3Jlc3VtZV93b3JrKTsKPiAtCj4gIAlpbnRlbF9ydW50 aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5o d19sb2NrKTsKPiAtLSAKPiAyLjguMQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK