From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH v5 25/35] drm/i915: Added scheduler queue throttling by DRM file handle Date: Tue, 23 Feb 2016 13:02:50 -0800 Message-ID: <56CCC8FA.1070107@virtuousgeek.org> References: <1455805644-6450-1-git-send-email-John.C.Harrison@Intel.com> <1455805644-6450-26-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gproxy9-pub.mail.unifiedlayer.com (gproxy9-pub.mail.unifiedlayer.com [69.89.20.122]) by gabe.freedesktop.org (Postfix) with SMTP id 8978F6E3A5 for ; Tue, 23 Feb 2016 21:03:01 +0000 (UTC) In-Reply-To: <1455805644-6450-26-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMDIvMTgvMjAxNiAwNjoyNyBBTSwgSm9obi5DLkhhcnJpc29uQEludGVsLmNvbSB3cm90ZToK PiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+IAo+IFRo ZSBzY2hlZHVsZXIgZGVjb3VwbGVzIHRoZSBzdWJtaXNzaW9uIG9mIGJhdGNoIGJ1ZmZlcnMgdG8g dGhlIGRyaXZlcgo+IGZyb20gdGhlaXIgc3Vic2VxdWVudCBzdWJtaXNzaW9uIHRvIHRoZSBoYXJk d2FyZS4gVGhpcyBtZWFucyB0aGF0IGFuCj4gYXBwbGljYXRpb24gd2hpY2ggaXMgY29udGludW91 c2x5IHN1Ym1pdHRpbmcgYnVmZmVycyBhcyBmYXN0IGFzIGl0IGNhbgo+IGNvdWxkIHBvdGVudGlh bHkgZmxvb2QgdGhlIGRyaXZlci4gVG8gcHJldmVudCB0aGlzLCB0aGUgZHJpdmVyIG5vdwo+IHRy YWNrcyBob3cgbWFueSBidWZmZXJzIGFyZSBpbiBwcm9ncmVzcyAocXVldWVkIGluIHNvZnR3YXJl IG9yCj4gZXhlY3V0aW5nIGluIGhhcmR3YXJlKSBhbmQgbGltaXRzIHRoaXMgdG8gYSBnaXZlbiAo dHVuYWJsZSkgbnVtYmVyLiBJZgo+IHRoaXMgbnVtYmVyIGlzIGV4Y2VlZGVkIHRoZW4gdGhlIHF1 ZXVlIHRvIHRoZSBkcml2ZXIgd2lsbCByZXR1cm4KPiBFQUdBSU4gYW5kIHRodXMgcHJldmVudCB0 aGUgc2NoZWR1bGVyJ3MgcXVldWUgYmVjb21pbmcgYXJiaXRyYXJpbHkKPiBsYXJnZS4KPiAKPiB2 MzogQWRkZWQgYSBtaXNzaW5nIGRlY3JlbWVudCBvZiB0aGUgZmlsZSBxdWV1ZSBjb3VudGVyLgo+ IAo+IHY0OiBVcGRhdGVkIGEgY29tbWVudC4KPiAKPiB2NTogVXBkYXRlZCBkdWUgdG8gY2hhbmdl cyB0byBlYXJsaWVyIHBhdGNoZXMgaW4gc2VyaWVzIC0gcmVtb3ZpbmcKPiBmb3J3YXJkIGRlY2xh cmF0aW9ucyBhbmQgd2hpdGUgc3BhY2UuIEFsc28gYWRkZWQgc29tZSBkb2N1bWVudGF0aW9uLgo+ IFtKb29uYXMgTGFodGluZW5dCj4gCj4gRm9yOiBWSVotMTU4Nwo+IFNpZ25lZC1vZmYtYnk6IEpv aG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICAyICsrCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICA4ICsrKysrCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oICAgICAg fCAgMiArKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAwNzFhMjdiLi4zZjRjNGYwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gQEAgLTMzNiw2ICszMzYsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9w cml2YXRlIHsKPiAgCX0gcnBzOwo+ICAKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmJzZF9y aW5nOwo+ICsKPiArCXUzMiBzY2hlZHVsZXJfcXVldWVfbGVuZ3RoOwo+ICB9Owo+ICAKPiAgZW51 bSBpbnRlbF9kcGxsX2lkIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4gaW5kZXggZDRkZThjNy4uZGZmMTIwYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBAQCAtMTgwMyw2ICsxODAzLDEwIEBAIGk5MTVf Z2VtX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQly ZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gKwkvKiBUaHJvdHRsZSBiYXRjaCByZXF1ZXN0cyBw ZXIgZGV2aWNlIGZpbGUgKi8KPiArCWlmIChpOTE1X3NjaGVkdWxlcl9maWxlX3F1ZXVlX2lzX2Z1 bGwoZmlsZSkpCj4gKwkJcmV0dXJuIC1FQUdBSU47Cj4gKwo+ICAJLyogQ29weSBpbiB0aGUgZXhl YyBsaXN0IGZyb20gdXNlcmxhbmQgKi8KPiAgCWV4ZWNfbGlzdCA9IGRybV9tYWxsb2NfYWIoc2l6 ZW9mKCpleGVjX2xpc3QpLCBhcmdzLT5idWZmZXJfY291bnQpOwo+ICAJZXhlYzJfbGlzdCA9IGRy bV9tYWxsb2NfYWIoc2l6ZW9mKCpleGVjMl9saXN0KSwgYXJncy0+YnVmZmVyX2NvdW50KTsKPiBA QCAtMTg5Myw2ICsxODk3LDEwIEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXIyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+ICsJ LyogVGhyb3R0bGUgYmF0Y2ggcmVxdWVzdHMgcGVyIGRldmljZSBmaWxlICovCj4gKwlpZiAoaTkx NV9zY2hlZHVsZXJfZmlsZV9xdWV1ZV9pc19mdWxsKGZpbGUpKQo+ICsJCXJldHVybiAtRUFHQUlO Owo+ICsKPiAgCWV4ZWMyX2xpc3QgPSBrbWFsbG9jKHNpemVvZigqZXhlYzJfbGlzdCkqYXJncy0+ YnVmZmVyX2NvdW50LAo+ICAJCQkgICAgIEdGUF9URU1QT1JBUlkgfCBfX0dGUF9OT1dBUk4gfCBf X0dGUF9OT1JFVFJZKTsKPiAgCWlmIChleGVjMl9saXN0ID09IE5VTEwpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3NjaGVkdWxlci5jCj4gaW5kZXggZTU2Y2UwOC4uZjdmMjlkNSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwo+IEBAIC02OSw2ICs2OSw3IEBAIGludCBp OTE1X3NjaGVkdWxlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlzY2hlZHVsZXIt PnByaW9yaXR5X2xldmVsX2J1bXAgICAgPSA1MDsKPiAgCXNjaGVkdWxlci0+cHJpb3JpdHlfbGV2 ZWxfcHJlZW1wdCA9IDkwMDsKPiAgCXNjaGVkdWxlci0+bWluX2ZseWluZyAgICAgICAgICAgICA9 IDI7Cj4gKwlzY2hlZHVsZXItPmZpbGVfcXVldWVfbWF4ICAgICAgICAgPSA2NDsKPiAgCj4gIAlk ZXZfcHJpdi0+c2NoZWR1bGVyID0gc2NoZWR1bGVyOwo+ICAKPiBAQCAtNDY0LDYgKzQ2NSw0NCBA QCBzdGF0aWMgaW50IGk5MTVfc2NoZWR1bGVyX3N1Ym1pdF91bmxvY2tlZChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiArLyoqCj4gKyAqIGk5 MTVfc2NoZWR1bGVyX2ZpbGVfcXVldWVfaXNfZnVsbCAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVl dWUgaXMgZnVsbC4KPiArICogQGZpbGU6IEZpbGUgb2JqZWN0IHRvIHF1ZXJ5Lgo+ICsgKiBUaGlz IGFsbG93cyB0aHJvdHRsaW5nIG9mIGFwcGxpY2F0aW9ucyBieSBsaW1pdGluZyB0aGUgdG90YWwg bnVtYmVyIG9mCj4gKyAqIG91dHN0YW5kaW5nIHJlcXVlc3RzIHRvIGEgc3BlY2lmaWVkIGxldmVs LiBPbmNlIHRoYXQgbGltaXQgaXMgcmVhY2hlZCwKPiArICogdGhpcyBjYWxsIHdpbGwgcmV0dXJu IHRydWUgYW5kIG5vIG1vcmUgcmVxdWVzdHMgc2hvdWxkIGJlIGFjY2VwdGVkLgo+ICsgKi8KPiAr Ym9vbCBpOTE1X3NjaGVkdWxlcl9maWxlX3F1ZXVlX2lzX2Z1bGwoc3RydWN0IGRybV9maWxlICpm aWxlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBm aWxlLT5kcml2ZXJfcHJpdjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiAg PSBmaWxlX3ByaXYtPmRldl9wcml2Owo+ICsJc3RydWN0IGk5MTVfc2NoZWR1bGVyICpzY2hlZHVs ZXIgPSBkZXZfcHJpdi0+c2NoZWR1bGVyOwo+ICsKPiArCXJldHVybiBmaWxlX3ByaXYtPnNjaGVk dWxlcl9xdWV1ZV9sZW5ndGggPj0gc2NoZWR1bGVyLT5maWxlX3F1ZXVlX21heDsKPiArfQo+ICsK PiArLyoqCj4gKyAqIGk5MTVfc2NoZWR1bGVyX2ZpbGVfcXVldWVfaW5jIC0gSW5jcmVtZW50IHRo ZSBmaWxlJ3MgcmVxdWVzdCBxdWV1ZSBjb3VudC4KPiArICogQGZpbGU6IEZpbGUgb2JqZWN0IHRv IHByb2Nlc3MuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBpOTE1X3NjaGVkdWxlcl9maWxlX3F1ZXVl X2luYyhzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9maWxl X3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+ICsKPiArCWZpbGVfcHJp di0+c2NoZWR1bGVyX3F1ZXVlX2xlbmd0aCsrOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9z Y2hlZHVsZXJfZmlsZV9xdWV1ZV9kZWMgLSBEZWNyZW1lbnQgdGhlIGZpbGUncyByZXF1ZXN0IHF1 ZXVlIGNvdW50Lgo+ICsgKiBAZmlsZTogRmlsZSBvYmplY3QgdG8gcHJvY2Vzcy4KPiArICovCj4g K3N0YXRpYyB2b2lkIGk5MTVfc2NoZWR1bGVyX2ZpbGVfcXVldWVfZGVjKHN0cnVjdCBkcm1fZmls ZSAqZmlsZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2 ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4gKwo+ICsJZmlsZV9wcml2LT5zY2hlZHVsZXJfcXVldWVf bGVuZ3RoLS07Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGk5MTVfZ2VuZXJhdGVfZGVwZW5kZW5j aWVzKHN0cnVjdCBpOTE1X3NjaGVkdWxlciAqc2NoZWR1bGVyLAo+ICAJCQkJICAgICAgIHN0cnVj dCBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeSAqbm9kZSwKPiAgCQkJCSAgICAgICB1aW50MzJf dCByaW5nKQo+IEBAIC02NDAsNiArNjc5LDggQEAgaW50IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2V4 ZWNidWZmZXIoc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5ICpxZSkKPiAgCj4gIAls aXN0X2FkZF90YWlsKCZub2RlLT5saW5rLCAmc2NoZWR1bGVyLT5ub2RlX3F1ZXVlW3JpbmctPmlk XSk7Cj4gIAo+ICsJaTkxNV9zY2hlZHVsZXJfZmlsZV9xdWV1ZV9pbmMobm9kZS0+cGFyYW1zLmZp bGUpOwo+ICsKPiAgCW5vdF9mbHlpbmcgPSBpOTE1X3NjaGVkdWxlcl9jb3VudF9mbHlpbmcoc2No ZWR1bGVyLCByaW5nKSA8Cj4gIAkJCQkJCSBzY2hlZHVsZXItPm1pbl9mbHlpbmc7Cj4gIAo+IEBA IC04ODMsNiArOTI0LDEyIEBAIHN0YXRpYyBib29sIGk5MTVfc2NoZWR1bGVyX3JlbW92ZShzdHJ1 Y3QgaTkxNV9zY2hlZHVsZXIgKnNjaGVkdWxlciwKPiAgCQkvKiBTdHJpcCB0aGUgZGVwZW5kZW5j eSBpbmZvIHdoaWxlIHRoZSBtdXRleCBpcyBzdGlsbCBsb2NrZWQgKi8KPiAgCQlpOTE1X3NjaGVk dWxlcl9yZW1vdmVfZGVwZW5kZW50KHNjaGVkdWxlciwgbm9kZSk7Cj4gIAo+ICsJCS8qIExpa2V3 aXNlIGNsZWFuIHVwIHRoZSBmaWxlIHBvaW50ZXIuICovCj4gKwkJaWYgKG5vZGUtPnBhcmFtcy5m aWxlKSB7Cj4gKwkJCWk5MTVfc2NoZWR1bGVyX2ZpbGVfcXVldWVfZGVjKG5vZGUtPnBhcmFtcy5m aWxlKTsKPiArCQkJbm9kZS0+cGFyYW1zLmZpbGUgPSBOVUxMOwo+ICsJCX0KPiArCj4gIAkJY29u dGludWU7Cj4gIAl9Cj4gIAo+IEBAIC0xMjA1LDYgKzEyNTIsNyBAQCBpbnQgaTkxNV9zY2hlZHVs ZXJfY2xvc2VmaWxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSkKPiAgCQkJCQkJIG5vZGUtPnN0YXR1cywKPiAgCQkJCQkJIHJpbmctPm5hbWUpOwo+ICAKPiAr CQkJaTkxNV9zY2hlZHVsZXJfZmlsZV9xdWV1ZV9kZWMobm9kZS0+cGFyYW1zLmZpbGUpOwo+ICAJ CQlub2RlLT5wYXJhbXMuZmlsZSA9IE5VTEw7Cj4gIAkJfQo+ICAJfQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zY2hlZHVsZXIuaAo+IGluZGV4IDA3NWJlZmIuLmI3OGRlMTIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKPiBAQCAtNzcsNiArNzcsNyBAQCBzdHJ1Y3Qg aTkxNV9zY2hlZHVsZXIgewo+ICAJaW50MzJfdCAgICAgICAgICAgICBwcmlvcml0eV9sZXZlbF9i dW1wOwo+ICAJaW50MzJfdCAgICAgICAgICAgICBwcmlvcml0eV9sZXZlbF9wcmVlbXB0Owo+ICAJ dWludDMyX3QgICAgICAgICAgICBtaW5fZmx5aW5nOwo+ICsJdWludDMyX3QgICAgICAgICAgICBm aWxlX3F1ZXVlX21heDsKPiAgfTsKPiAgCj4gIC8qIEZsYWcgYml0cyBmb3IgaTkxNV9zY2hlZHVs ZXI6OmZsYWdzICovCj4gQEAgLTEwMCw1ICsxMDEsNiBAQCBpbnQgaTkxNV9zY2hlZHVsZXJfZmx1 c2hfc3RhbXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgCQkJICAgICAgIHVuc2ln bmVkIGxvbmcgc3RhbXAsIGJvb2wgaXNfbG9ja2VkKTsKPiAgYm9vbCBpOTE1X3NjaGVkdWxlcl9p c19yZXF1ZXN0X3RyYWNrZWQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJ CQkgICAgICAgYm9vbCAqY29tcGxldGVkLCBib29sICpidXN5KTsKPiArYm9vbCBpOTE1X3NjaGVk dWxlcl9maWxlX3F1ZXVlX2lzX2Z1bGwoc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAgCj4gICNl bmRpZiAgLyogX0k5MTVfU0NIRURVTEVSX0hfICovCj4gCgpKdXN0IHRvIGNsYXJpZnkgYW5kIG1h a2Ugc3VyZSBJIHVuZGVyc3Rvb2QgdGhlIHByZXZpb3VzIHN0dWZmOiBhIHF1ZXVlZCBleGVjYnVm IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBkaXNwYXRjaGVkIGRvZXMgbm90IHJlc2VydmUgYW5kIHBp biBwYWdlcyByaWdodD8gIFRoYXQgb2NjdXJzIGF0IGFjdHVhbCBkaXNwYXRjaCB0aW1lPyAgSWYg c28sIEkgZ3Vlc3MgY2xpZW50cyB3aWxsIGhpdCB0aGlzIDY0IHF1ZXVlZCBpdGVtIGxpbWl0IHBy ZXR0eSByZWd1bGFybHkuLi4gIEhvdyBtdWNoIG1ldGFkYXRhIG92ZXJoZWFkIGRvZXMgdGhhdCBp bnZvbHZlPyAgSGFzIGl0IGJlZW4gZGVyaXZlZCBmcm9tIHNvbWUgcGVyZm9ybWFuY2Ugd29yayB3 aXRoIGEgYnVuY2ggb2Ygd29ya2xvYWRzPyAgSXQncyBmaW5lIGlmIG5vdCwgSSBjYW4gaW1hZ2lu ZSB0aGF0IGRpZmZlcmVudCBtaXhlcyBvZiB3b3JrbG9hZHMgd291bGQgYmUgYWZmZWN0ZWQgYnkg bG93ZXIgb3IgaGlnaGVyIHF1ZXVlIGRlcHRocyAoZS5nLiBzbWFsbCBiYXRjaCB0ZXN0cykuCgpJ ZiB0aGlzIGlzIHR1bmFibGUsIEkgZ3Vlc3MgaXQgc2hvdWxkIGJlIGNsYW1wZWQgbGlrZSBhIG5p Y2Ugb3IgcmxpbWl0IHZhbHVlLCB3aXRoIHZhbHVlcyBvdXRzaWRlIHRoYXQgcmFuZ2UgcmVxdWly aW5nIENBUF9TWVNfQURNSU4uCgpSZXZpZXdlZC1ieTogSmVzc2UgQmFybmVzIDxqYmFybmVzQHZp cnR1b3VzZ2Vlay5vcmc+CgpKZXNzZQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK