From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [DPU PATCH v2] drm/msm: Don't duplicate modeset_enables atomic helper Date: Fri, 16 Mar 2018 13:57:24 -0700 Message-ID: References: <645777c3f76662ce5b0b14bcf7b81acb@codeaurora.org> <20180316194541.23514-1-seanpaul@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180316194541.23514-1-seanpaul@chromium.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: linux-arm-msm@vger.kernel.org, abhinavk@codeaurora.org, dri-devel@lists.freedesktop.org, hoegsberg@chromium.org, freedreno@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMjAxOC0wMy0xNiAxMjo0NSwgU2VhbiBQYXVsIHdyb3RlOgo+IEluc3RlYWQsIHNodWZmbGUg dGhpbmdzIGFyb3VuZCBzbyB3ZSBraWNrb2ZmIGNydGMgYWZ0ZXIgZW5hYmxpbmcgCj4gZW5jb2Rl cgo+IGR1cmluZyBtb2Rlc2V0cy4gQWxzbyBtb3ZlcyB0aGUgdmJsYW5rIHdhaXQgdG8gYWZ0ZXIg dGhlIGZyYW1lLgo+IAo+IENoYW5nZXMgaW4gdjI6Cj4gLSBSZW1vdmUgdGhlIGVuY29kZXIuY29t bWl0IGhhY2ssIGl0J3Mgbm90IHJlcXVpcmVkIChKZXlrdW1hcikKPiAKPiBDYzogSmV5a3VtYXIg U2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KPiBTaWduZWQtb2ZmLWJ5OiBTZWFuIFBh dWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KClJldmlld2VkLWJ5OiBKZXlrdW1hciBTYW5rYXJh biA8anNhbmthQGNvZGVhdXJvcmEub3JnPgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2NydGMuYyB8ICAgOSArKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfa21zLmMgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21p Yy5jICAgICAgICAgfCAxMzIgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMyBmaWxlcyBjaGFu Z2VkLCAxOSBpbnNlcnRpb25zKCspLCAxMzAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiBpbmRleCBhM2FiNmVkMmJmMWQuLjk0ZmFi MmRjY2E1YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf Y3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+ IEBAIC0zNTI1LDYgKzM1MjUsMTIgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZW5hYmxlKHN0cnVj dCBkcm1fY3J0YyAKPiAqY3J0YywKPiAgCURQVV9FVlQzMl9WRVJCT1NFKERSTUlEKGNydGMpKTsK PiAgCWRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7Cj4gCj4gKwlpZiAobXNtX2lzX21vZGVf c2VhbWxlc3MoJmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlKSB8fAo+ICsJICAgIG1zbV9pc19t b2RlX3NlYW1sZXNzX3ZycigmY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGUpKSB7Cj4gKwkJRFBV X0RFQlVHKCJTa2lwcGluZyBjcnRjIGVuYWJsZSwgc2VhbWxlc3MgbW9kZVxuIik7Cj4gKwkJcmV0 dXJuOwo+ICsJfQo+ICsKPiAgCXBtX3J1bnRpbWVfZ2V0X3N5bmMoY3J0Yy0+ZGV2LT5kZXYpOwo+ IAo+ICAJZHJtX2Zvcl9lYWNoX2VuY29kZXIoZW5jb2RlciwgY3J0Yy0+ZGV2KSB7Cj4gQEAgLTM1 NzIsNiArMzU3OCw5IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgCj4gKmNydGMsCj4gIAkJRFBVX1BPV0VSX0VWRU5UX1BPU1RfRU5BQkxFIHwgRFBVX1BPV0VS X0VWRU5UX1BPU1RfRElTQUJMRQo+IHwKPiAgCQlEUFVfUE9XRVJfRVZFTlRfUFJFX0RJU0FCTEUs Cj4gIAkJZHB1X2NydGNfaGFuZGxlX3Bvd2VyX2V2ZW50LCBjcnRjLCBkcHVfY3J0Yy0+bmFtZSk7 Cj4gKwo+ICsJaWYgKG1zbV9uZWVkc192YmxhbmtfcHJlX21vZGVzZXQoJmNydGMtPnN0YXRlLT5h ZGp1c3RlZF9tb2RlKSkKPiArCQlkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7Cj4gIH0K PiAKPiAgc3RydWN0IHBsYW5lX3N0YXRlIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfa21zLmMKPiBpbmRleCA1YmEzNDUzOTViODIuLjJjNGM3ZmUxYWZmZSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiBAQCAtNDIyLDE0ICs0MjIsMTQg QEAgc3RhdGljIHZvaWQgZHB1X2ttc19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgbXNtX2ttcwo+ICpr bXMsCj4gIAkJCWRwdV9lbmNvZGVyX3ByZXBhcmVfY29tbWl0KGVuY29kZXIpOwo+ICB9Cj4gCj4g LXN0YXRpYyB2b2lkIGRwdV9rbXNfY29tbWl0KHN0cnVjdCBtc21fa21zICprbXMsCj4gLQkJc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiArc3RhdGljIHZvaWQgZHB1X2ttc19j b21taXQoc3RydWN0IG1zbV9rbXMgKmttcywgc3RydWN0IAo+IGRybV9hdG9taWNfc3RhdGUKPiAq c3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAtCXN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNf c3RhdGU7Cj4gKwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKPiAgCWludCBpOwo+IAo+ IC0JZm9yX2VhY2hfb2xkX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19z dGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNy dGNfc3RhdGUsIGkpIHsKPiAgCQlpZiAoY3J0Yy0+c3RhdGUtPmFjdGl2ZSkgewo+ICAJCQlEUFVf RVZUMzIoRFJNSUQoY3J0YykpOwo+ICAJCQlkcHVfY3J0Y19jb21taXRfa2lja29mZihjcnRjKTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMKPiBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jCj4gaW5kZXggNWNmYjgwMzQ1MDUyLi5mNTc5NGRj ZTI1ZGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYwo+IEBAIC04NCwxMzEgKzg0LDYg QEAgc3RhdGljIHZvaWQgbXNtX2F0b21pY193YWl0X2Zvcl9jb21taXRfZG9uZSgKPiAgCX0KPiAg fQo+IAo+IC0vKioKPiAtICogbXNtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxl cyAtIG1vZGVzZXQgY29tbWl0IHRvIGVuYWJsZQo+IG91dHB1dHMKPiAtICogQGRldjogRFJNIGRl dmljZQo+IC0gKiBAb2xkX3N0YXRlOiBhdG9taWMgc3RhdGUgb2JqZWN0IHdpdGggb2xkIHN0YXRl IHN0cnVjdHVyZXMKPiAtICoKPiAtICogVGhpcyBmdW5jdGlvbiBlbmFibGVzIGFsbCB0aGUgb3V0 cHV0cyB3aXRoIHRoZSBuZXcgY29uZmlndXJhdGlvbiAKPiB3aGljaAo+IGhhZCB0bwo+IC0gKiBi ZSB0dXJuZWQgb2ZmIGZvciB0aGUgdXBkYXRlLgo+IC0gKgo+IC0gKiBGb3IgY29tcGF0aWJpbGl0 eSB3aXRoIGxlZ2FjeSBjcnRjIGhlbHBlcnMgdGhpcyBzaG91bGQgYmUgY2FsbGVkIAo+IGFmdGVy Cj4gLSAqIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoKSwgd2hpY2ggaXMgd2hhdCB0 aGUgZGVmYXVsdCBjb21taXQKPiBmdW5jdGlvbgo+IC0gKiBkb2VzLiBCdXQgZHJpdmVycyB3aXRo IGRpZmZlcmVudCBuZWVkcyBjYW4gZ3JvdXAgdGhlIG1vZGVzZXQgCj4gY29tbWl0cwo+IHRvZ2V0 aGVyCj4gLSAqIGFuZCBkbyB0aGUgcGxhbmUgY29tbWl0cyBhdCB0aGUgZW5kLiBUaGlzIGlzIHVz ZWZ1bCBmb3IgZHJpdmVycyAKPiBkb2luZwo+IHJ1bnRpbWUKPiAtICogUE0gc2luY2UgcGxhbmVz IHVwZGF0ZXMgdGhlbiBvbmx5IGhhcHBlbiB3aGVuIHRoZSBDUlRDIGlzIGFjdHVhbGx5Cj4gZW5h YmxlZC4KPiAtICovCj4gLXN0YXRpYyB2b2lkIG1zbV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rl c2V0X2VuYWJsZXMoc3RydWN0IGRybV9kZXZpY2UKPiAqZGV2LAo+IC0JCXN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpvbGRfc3RhdGUpCj4gLXsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAt CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gLQlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcjsKPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZTsKPiAt CXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3Ry dWN0IG1zbV9rbXMgKmttcyA9IHByaXYtPmttczsKPiAtCWludCBicmlkZ2VfZW5hYmxlX2NvdW50 ID0gMDsKPiAtCWludCBpOwo+IC0KPiAtCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKG9s ZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsCj4gLQkJCW5ld19jcnRjX3N0YXRlLCBpKSB7 Cj4gLQkJY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gLQo+IC0J CS8qIE5lZWQgdG8gZmlsdGVyIG91dCBDUlRDcyB3aGVyZSBvbmx5IHBsYW5lcyBjaGFuZ2UuICov Cj4gLQkJaWYgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkp Cj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5hY3RpdmUpCj4g LQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlpZiAobXNtX2lzX21vZGVfc2VhbWxlc3MoJm5ld19jcnRj X3N0YXRlLT5tb2RlKSB8fAo+IC0JCQkJbXNtX2lzX21vZGVfc2VhbWxlc3NfdnJyKAo+IC0JCQkJ Jm5ld19jcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlKSkKPiAtCQkJY29udGludWU7Cj4gLQo+IC0J CWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7Cj4gLQo+IC0JCWlmIChjcnRjLT5zdGF0ZS0+ ZW5hYmxlKSB7Cj4gLQkJCURSTV9ERUJVR19BVE9NSUMoImVuYWJsaW5nIFtDUlRDOiVkXVxuIiwK PiAtCQkJCQkgY3J0Yy0+YmFzZS5pZCk7Cj4gLQo+IC0JCQlpZiAoZnVuY3MtPmF0b21pY19lbmFi bGUpCj4gLQkJCQlmdW5jcy0+YXRvbWljX2VuYWJsZShjcnRjLAo+IG9sZF9jcnRjX3N0YXRlKTsK PiAtCQkJZWxzZQo+IC0JCQkJZnVuY3MtPmNvbW1pdChjcnRjKTsKPiAtCQl9Cj4gLQo+IC0JCWlm IChtc21fbmVlZHNfdmJsYW5rX3ByZV9tb2Rlc2V0KAo+IC0JCQkJCSZuZXdfY3J0Y19zdGF0ZS0+ YWRqdXN0ZWRfbW9kZSkpCj4gLQkJCWRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTsKPiAt CX0KPiAtCj4gLQkvKiBlbnN1cmUgYnJpZGdlL2VuY29kZXIgdXBkYXRlcyBoYXBwZW4gb24gc2Ft ZSB2YmxhbmsgKi8KPiAtCW1zbV9hdG9taWNfd2FpdF9mb3JfY29tbWl0X2RvbmUoZGV2LCBvbGRf c3RhdGUpOwo+IC0KPiAtCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRl LCBjb25uZWN0b3IsCj4gLQkJCW5ld19jb25uX3N0YXRlLCBpKSB7Cj4gLQkJY29uc3Qgc3RydWN0 IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gLQkJc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyOwo+IC0KPiAtCQlpZiAoIW5ld19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpCj4g LQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlpZiAoIW5ld19jb25uX3N0YXRlLT5jcnRjLT5zdGF0ZS0+ YWN0aXZlIHx8Cj4gLQkJICAgICFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgKPiAtCQkJ ICAgIG5ld19jb25uX3N0YXRlLT5jcnRjLT5zdGF0ZSkpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAt CQllbmNvZGVyID0gbmV3X2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcjsKPiAtCQlmdW5jcyA9IGVu Y29kZXItPmhlbHBlcl9wcml2YXRlOwo+IC0KPiAtCQlEUk1fREVCVUdfQVRPTUlDKCJlbmFibGlu ZyBbRU5DT0RFUjolZDolc11cbiIsCj4gLQkJCQkgZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rlci0+ bmFtZSk7Cj4gLQo+IC0JCS8qCj4gLQkJICogRWFjaCBlbmNvZGVyIGhhcyBhdCBtb3N0IG9uZSBj b25uZWN0b3IgKHNpbmNlIHdlIGFsd2F5cwo+IHN0ZWFsCj4gLQkJICogaXQgYXdheSksIHNvIHdl IHdvbid0IGNhbGwgZW5hYmxlIGhvb2tzIHR3aWNlLgo+IC0JCSAqLwo+IC0JCWRybV9icmlkZ2Vf cHJlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+IC0JCSsrYnJpZGdlX2VuYWJsZV9jb3VudDsK PiAtCj4gLQkJaWYgKGZ1bmNzLT5lbmFibGUpCj4gLQkJCWZ1bmNzLT5lbmFibGUoZW5jb2Rlcik7 Cj4gLQkJZWxzZQo+IC0JCQlmdW5jcy0+Y29tbWl0KGVuY29kZXIpOwo+IC0JfQo+IC0KPiAtCWlm IChrbXMtPmZ1bmNzLT5jb21taXQpIHsKPiAtCQlEUk1fREVCVUdfQVRPTUlDKCJ0cmlnZ2VyaW5n IGNvbW1pdFxuIik7Cj4gLQkJa21zLT5mdW5jcy0+Y29tbWl0KGttcywgb2xkX3N0YXRlKTsKPiAt CX0KPiAtCj4gLQkvKiBJZiBubyBicmlkZ2VzIHdlcmUgcHJlX2VuYWJsZWQsIHNraXAgaXRlcmF0 aW5nIG92ZXIgdGhlbSBhZ2Fpbgo+ICovCj4gLQlpZiAoYnJpZGdlX2VuYWJsZV9jb3VudCA9PSAw KQo+IC0JCXJldHVybjsKPiAtCj4gLQlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKG9s ZF9zdGF0ZSwgY29ubmVjdG9yLAo+IC0JCQluZXdfY29ubl9zdGF0ZSwgaSkgewo+IC0JCXN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiAtCj4gLQkJaWYgKCFuZXdfY29ubl9zdGF0ZS0+YmVz dF9lbmNvZGVyKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJaWYgKCFuZXdfY29ubl9zdGF0ZS0+ Y3J0Yy0+c3RhdGUtPmFjdGl2ZSB8fAo+IC0JCSAgICAhZHJtX2F0b21pY19jcnRjX25lZWRzX21v ZGVzZXQoCj4gLQkJCQkgICAgbmV3X2Nvbm5fc3RhdGUtPmNydGMtPnN0YXRlKSkKPiAtCQkJY29u dGludWU7Cj4gLQo+IC0JCWVuY29kZXIgPSBuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyOwo+ IC0KPiAtCQlEUk1fREVCVUdfQVRPTUlDKCJicmlkZ2UgZW5hYmxlIGVuYWJsaW5nCj4gW0VOQ09E RVI6JWQ6JXNdXG4iLAo+IC0JCQkJIGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXItPm5hbWUpOwo+ IC0KPiAtCQlkcm1fYnJpZGdlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+IC0JfQo+IC19Cj4g LQo+ICAvKiBUaGUgKHBvdGVudGlhbGx5KSBhc3luY2hyb25vdXMgcGFydCBvZiB0aGUgY29tbWl0 LiAgQXQgdGhpcyBwb2ludAo+ICAgKiBub3RoaW5nIGNhbiBmYWlsIHNob3J0IG9mIGFybWFnZWRk b24uCj4gICAqLwo+IEBAIC0yMjcsNyArMTAyLDEyIEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2Nv bW1pdChzdHJ1Y3QgbXNtX2NvbW1pdCAqYykKPiAKPiAgCWRybV9hdG9taWNfaGVscGVyX2NvbW1p dF9wbGFuZXMoZGV2LCBzdGF0ZSwgMCk7Cj4gCj4gLQltc21fYXRvbWljX2hlbHBlcl9jb21taXRf bW9kZXNldF9lbmFibGVzKGRldiwgc3RhdGUpOwo+ICsJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 X21vZGVzZXRfZW5hYmxlcyhkZXYsIHN0YXRlKTsKPiArCj4gKwlpZiAoa21zLT5mdW5jcy0+Y29t bWl0KSB7Cj4gKwkJRFJNX0RFQlVHX0FUT01JQygidHJpZ2dlcmluZyBjb21taXRcbiIpOwo+ICsJ CWttcy0+ZnVuY3MtPmNvbW1pdChrbXMsIHN0YXRlKTsKPiArCX0KPiAKPiAgCS8qIE5PVEU6IF93 YWl0X2Zvcl92YmxhbmtzKCkgb25seSB3YWl0cyBmb3IgdmJsYW5rIG9uCj4gIAkgKiBlbmFibGVk IENSVENzLiAgU28gd2UgZW5kIHVwIGZhdWx0aW5nIHdoZW4gZGlzYWJsaW5nCgotLSAKSmV5a3Vt YXIgUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK