From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 1/3] drm/i915: Do not acquire crtc state to check clock during modeset, v2. Date: Tue, 27 Oct 2015 14:51:16 +0100 Message-ID: <562F8154.2040602@linux.intel.com> References: <1445514996-18733-3-git-send-email-maarten.lankhorst@linux.intel.com> <1445952393-25283-1-git-send-email-maarten.lankhorst@linux.intel.com> <20151027132917.GC4437@intel.com> <562F7EFC.80909@linux.intel.com> <20151027134946.GF4437@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id BA1A56EB09 for ; Tue, 27 Oct 2015 06:51:24 -0700 (PDT) In-Reply-To: <20151027134946.GF4437@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjctMTAtMTUgb20gMTQ6NDkgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6Cj4gT24gVHVlLCBP Y3QgMjcsIDIwMTUgYXQgMDI6NDE6MTZQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6 Cj4+IE9wIDI3LTEwLTE1IG9tIDE0OjI5IHNjaHJlZWYgVmlsbGUgU3lyasOkbMOkOgo+Pj4gT24g VHVlLCBPY3QgMjcsIDIwMTUgYXQgMDI6MjY6MzFQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qg d3JvdGU6Cj4+Pj4gUGFyYWxsZWwgbW9kZXNldHMgYXJlIHN0aWxsIG5vdCBhbGxvd2VkLCBidXQg dGhpcyB3aWxsIGFsbG93IHVwZGF0aW5nCj4+Pj4gYSBkaWZmZXJlbnQgY3J0YyBkdXJpbmcgYSBt b2Rlc2V0IGlmIHRoZSBjbG9jayBpcyBub3QgY2hhbmdlZC4KPj4+Pgo+Pj4+IEFkZGl0aW9uYWxs eSB3aGVuIGFsbCBwaXBlcyBhcmUgRFBNUyBvZmYgdGhlIGNkY2xrIHdpbGwgYmUgbG93ZXJlZAo+ Pj4+IHRvIHRoZSBtaW5pbXVtIGFsbG93ZWQuCj4+Pj4KPj4+PiBDaGFuZ2VzIHNpbmNlIHYxOgo+ Pj4+IC0gQWRkIGRldl9wcml2LT5hY3RpdmVfY3J0Y3MgZm9yIHRyYWNraW5nIHdoaWNoIGNydGNz IGFyZSBhY3RpdmUuCj4+Pj4gLSBSZW5hbWUgbWluX2NkY2xrIHRvIG1pbl9waXhjbGsgYW5kIG1v dmUgdG8gZGV2X3ByaXYuCj4+Pj4gLSBBZGQgYSBhY3RpdmVfY3J0Y3MgbWFzayB3aGljaCBpcyB1 cGRhdGVkIGF0b21pY2FsbHkuCj4+Pj4gLSBBZGQgaW50ZWxfYXRvbWljX3N0YXRlLT5tb2Rlc2V0 IHdoaWNoIGlzIHNldCBvbiBtb2Rlc2V0cy4KPj4+PiAtIENvbW1pdCBuZXcgcGl4Y2xrL2FjdGl2 ZV9jcnRjcyByaWdodCBhZnRlciBzdGF0ZSBzd2FwLgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTog TWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4+ PiAtLS0KPj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICA1ICsr Cj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jICB8ICAgMiArLQo+Pj4+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxNjAgKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0KPj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgIHwgICA3ICstCj4+Pj4gIDQgZmlsZXMgY2hhbmdlZCwgMTI1IGluc2VydGlvbnMo KyksIDQ5IGRlbGV0aW9ucygtKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4g aW5kZXggNTljOTQ5MjlmMjViLi4zN2VlZjg2ZTRhMGEgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPj4+PiBAQCAtMTgzNyw4ICsxODM3LDEzIEBAIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlIHsKPj4+PiAgCXN0cnVjdCBpbnRlbF9waXBlX2NyYyBwaXBlX2NyY1tJOTE1X01BWF9Q SVBFU107Cj4+Pj4gICNlbmRpZgo+Pj4+ICAKPj4+PiArCS8qIGRwbGwgYW5kIGNkY2xrIHN0YXRl IGlzIHByb3RlY3RlZCBieSBjb25uZWN0aW9uX211dGV4ICovCj4+Pj4gIAlpbnQgbnVtX3NoYXJl ZF9kcGxsOwo+Pj4+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsIHNoYXJlZF9kcGxsc1tJOTE1 X05VTV9QTExTXTsKPj4+PiArCj4+Pj4gKwl1bnNpZ25lZCBpbnQgYWN0aXZlX2NydGNzOwo+Pj4+ ICsJdW5zaWduZWQgaW50IG1pbl9waXhjbGtbSTkxNV9NQVhfUElQRVNdOwo+Pj4+ICsKPj4+PiAg CWludCBkcGlvX3BoeV9pb3NmX3BvcnRbSTkxNV9OVU1fUEhZU19WTFZdOwo+Pj4+ICAKPj4+PiAg CXN0cnVjdCBpOTE1X3dvcmthcm91bmRzIHdvcmthcm91bmRzOwo+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pYy5jCj4+Pj4gaW5kZXggMjVhODkxYWEzODI0Li5jYjhmY2Y0ZmU3ZjIgMTAw NjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+Pj4+IEBAIC0zMDUsNSAr MzA1LDUgQEAgdm9pZCBpbnRlbF9hdG9taWNfc3RhdGVfY2xlYXIoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnMpCj4+Pj4gIHsKPj4+PiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl ID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHMpOwo+Pj4+ICAJZHJtX2F0b21pY19zdGF0ZV9kZWZh dWx0X2NsZWFyKCZzdGF0ZS0+YmFzZSk7Cj4+Pj4gLQlzdGF0ZS0+ZHBsbF9zZXQgPSBmYWxzZTsK Pj4+PiArCXN0YXRlLT5kcGxsX3NldCA9IHN0YXRlLT5tb2Rlc2V0ID0gZmFsc2U7Cj4+Pj4gIH0K Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+Pj4gaW5kZXggMDIyZTYyOGI4 NTIwLi5hMDUwOGQ1ZTllMTMgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4+Pj4gQEAgLTUyMzcsNiArNTIzNyw3IEBAIHN0YXRpYyB2b2lkIG1vZGVzZXRfcHV0 X3Bvd2VyX2RvbWFpbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4+ICAK Pj4+PiAgc3RhdGljIHZvaWQgbW9kZXNldF91cGRhdGVfY3J0Y19wb3dlcl9kb21haW5zKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+PiAgewo+Pj4+ICsJc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ Pj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7Cj4+Pj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4+ICAJdW5z aWduZWQgbG9uZyBwdXRfZG9tYWluc1tJOTE1X01BWF9QSVBFU10gPSB7fTsKPj4+PiBAQCAtNTI0 NSwxMyArNTI0NiwxOCBAQCBzdGF0aWMgdm9pZCBtb2Rlc2V0X3VwZGF0ZV9jcnRjX3Bvd2VyX2Rv bWFpbnMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+Pj4+ICAJaW50IGk7Cj4+Pj4g IAo+Pj4+ICAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwg aSkgewo+Pj4+IC0JCWlmIChuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSkKPj4+PiAtCQkJcHV0 X2RvbWFpbnNbdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZV0gPQo+Pj4+IC0JCQkJbW9kZXNldF9n ZXRfY3J0Y19wb3dlcl9kb21haW5zKGNydGMpOwo+Pj4+ICsJCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0KPj4+PiArCQkJdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4+PiArCQllbnVtIHBp cGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4+Pj4gKwo+Pj4+ICsJCWlmICghbmVlZHNfbW9k ZXNldChjcnRjLT5zdGF0ZSkpCj4+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4+ICsKPj4+PiArCQlwdXRf ZG9tYWluc1twaXBlXSA9IG1vZGVzZXRfZ2V0X2NydGNfcG93ZXJfZG9tYWlucyhjcnRjKTsKPj4+ PiAgCX0KPj4+PiAgCj4+Pj4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jb21taXRf Y2RjbGspIHsKPj4+PiAtCQl1bnNpZ25lZCBpbnQgY2RjbGsgPSB0b19pbnRlbF9hdG9taWNfc3Rh dGUoc3RhdGUpLT5jZGNsazsKPj4+PiArCQl1bnNpZ25lZCBpbnQgY2RjbGsgPSBpbnRlbF9zdGF0 ZS0+Y2RjbGs7Cj4+Pj4gIAo+Pj4+ICAJCWlmIChjZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGtfZnJl cSAmJgo+Pj4+ICAJCSAgICAhV0FSTl9PTighc3RhdGUtPmFsbG93X21vZGVzZXQpKQo+Pj4+IEBA IC01OTM4LDIzICs1OTQ0LDMyIEBAIHN0YXRpYyBpbnQgYnJveHRvbl9jYWxjX2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+PiAgc3RhdGljIGludCBpbnRlbF9tb2Rl X21heF9waXhjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+PiAgCQkJCSBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+Pj4gIHsKPj4+PiAtCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjOwo+Pj4+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+ Pj4gLQlpbnQgbWF4X3BpeGNsayA9IDA7Cj4+Pj4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4+Pj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4+ICsJ c3RydWN0IGRybV9jcnRjICpjcnRjOwo+Pj4+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlOwo+Pj4+ICsJdW5zaWduZWQgbWF4X3BpeGVsX3JhdGUgPSAwLCBpOwo+Pj4+ICsJZW51 bSBwaXBlIHBpcGU7Cj4+Pj4gIAo+Pj4+IC0JZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGludGVs X2NydGMpIHsKPj4+PiAtCQljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRl KHN0YXRlLCBpbnRlbF9jcnRjKTsKPj4+PiAtCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQo+Pj4+ IC0JCQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0YXRlKTsKPj4+PiArCW1lbWNweShpbnRlbF9zdGF0 ZS0+bWluX3BpeGNsaywgZGV2X3ByaXYtPm1pbl9waXhjbGssCj4+Pj4gKwkgICAgICAgc2l6ZW9m KGludGVsX3N0YXRlLT5taW5fcGl4Y2xrKSk7Cj4+Pj4gIAo+Pj4+IC0JCWlmICghY3J0Y19zdGF0 ZS0+YmFzZS5lbmFibGUpCj4+Pj4gLQkJCWNvbnRpbnVlOwo+Pj4+ICsJZm9yX2VhY2hfY3J0Y19p bl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+Pj4+ICsJCWludCBwaXhjbGsg PSAwOwo+Pj4+ICAKPj4+PiAtCQltYXhfcGl4Y2xrID0gbWF4KG1heF9waXhjbGssCj4+Pj4gLQkJ CQkgY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2spOwo+Pj4+ICsJCWlm IChjcnRjX3N0YXRlLT5lbmFibGUpCj4+Pj4gKwkJCXBpeGNsayA9IGNydGNfc3RhdGUtPmFkanVz dGVkX21vZGUuY3J0Y19jbG9jazsKPj4+PiArCj4+Pj4gKwkJaW50ZWxfc3RhdGUtPm1pbl9waXhj bGtbaV0gPSBwaXhjbGs7Cj4+Pj4gIAl9Cj4+Pj4gIAo+Pj4+IC0JcmV0dXJuIG1heF9waXhjbGs7 Cj4+Pj4gKwlpZiAoIWludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpCj4+Pj4gKwkJcmV0dXJuIDA7 Cj4+Pj4gKwo+Pj4+ICsJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPj4+PiArCQltYXhf cGl4ZWxfcmF0ZSA9IG1heChpbnRlbF9zdGF0ZS0+bWluX3BpeGNsa1twaXBlXSwgbWF4X3BpeGVs X3JhdGUpOwo+Pj4+ICsKPj4+PiArCXJldHVybiBtYXhfcGl4ZWxfcmF0ZTsKPj4+PiAgfQo+Pj4+ ICAKPj4+PiAgc3RhdGljIGludCB2YWxsZXl2aWV3X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+Pj4gQEAgLTYyNTUsNiArNjI3MCw5IEBAIHN0YXRp YyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4+Pj4gIAlmb3JfZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBkb21haW5zKQo+Pj4+ICAJCWlu dGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBkb21haW4pOwo+Pj4+ICAJaW50ZWxfY3J0 Yy0+ZW5hYmxlZF9wb3dlcl9kb21haW5zID0gMDsKPj4+PiArCj4+Pj4gKwlkZXZfcHJpdi0+YWN0 aXZlX2NydGNzICY9IH4oMSA8PCBpbnRlbF9jcnRjLT5waXBlKTsKPj4+PiArCWRldl9wcml2LT5t aW5fcGl4Y2xrW2ludGVsX2NydGMtPnBpcGVdID0gMDsKPj4+PiAgfQo+Pj4+ICAKPj4+PiAgLyoK Pj4+PiBAQCAtOTQ5MCwyOSArOTUwOCwzOSBAQCBzdGF0aWMgdm9pZCBicm94dG9uX21vZGVzZXRf Y29tbWl0X2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4+Pj4gIC8q IGNvbXB1dGUgdGhlIG1heCByYXRlIGZvciBuZXcgY29uZmlndXJhdGlvbiAqLwo+Pj4+ICBzdGF0 aWMgaW50IGlsa19tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp Cj4+Pj4gIHsKPj4+PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+Pj4+IC0Jc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+Pj4gLQlpbnQgbWF4X3BpeGVsX3Jh dGUgPSAwOwo+Pj4+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0 b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+Pj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gc3RhdGUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4+Pj4gKwlzdHJ1Y3QgZHJt X2NydGMgKmNydGM7Cj4+Pj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+ Pj4gKwl1bnNpZ25lZCBtYXhfcGl4ZWxfcmF0ZSA9IDAsIGk7Cj4+Pj4gKwllbnVtIHBpcGUgcGlw ZTsKPj4+PiAgCj4+Pj4gLQlmb3JfZWFjaF9pbnRlbF9jcnRjKHN0YXRlLT5kZXYsIGludGVsX2Ny dGMpIHsKPj4+PiAtCQlpbnQgcGl4ZWxfcmF0ZTsKPj4+PiArCW1lbWNweShpbnRlbF9zdGF0ZS0+ bWluX3BpeGNsaywgZGV2X3ByaXYtPm1pbl9waXhjbGssCj4+Pj4gKwkgICAgICAgc2l6ZW9mKGlu dGVsX3N0YXRlLT5taW5fcGl4Y2xrKSk7Cj4+Pj4gIAo+Pj4+IC0JCWNydGNfc3RhdGUgPSBpbnRl bF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+Pj4+IC0JCWlmIChJ U19FUlIoY3J0Y19zdGF0ZSkpCj4+Pj4gLQkJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ Pj4+ICsJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkg ewo+Pj4+ICsJCWludCBwaXhjbGsgPSAwOwo+Pj4+ICAKPj4+PiAtCQlpZiAoIWNydGNfc3RhdGUt PmJhc2UuZW5hYmxlKQo+Pj4+IC0JCQljb250aW51ZTsKPj4+PiArCQlpZiAoY3J0Y19zdGF0ZS0+ ZW5hYmxlKSB7Cj4+Pj4gKwkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jcnRjX3N0 YXRlID0KPj4+PiArCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7Cj4+Pj4gIAo+ Pj4+IC0JCXBpeGVsX3JhdGUgPSBpbGtfcGlwZV9waXhlbF9yYXRlKGNydGNfc3RhdGUpOwo+Pj4+ ICsJCQlwaXhjbGsgPSBpbGtfcGlwZV9waXhlbF9yYXRlKGludGVsX2NydGNfc3RhdGUpOwo+Pj4g Q291bGQgeW91IGF2b2lkIHRoZSByZWluZGVudCBhbmQgcmVuYW1lcyBwbGVhc2U/Cj4+Pgo+PiBU aGUgcGl4Y2xrIGhhcyB0byBiZSBzZXQgZXZlbiB3aGVuIGVuYWJsZWQgPSBmYWxzZS4gVGhpcyB3 YXkgdGhlIG5hbWVzIGZvciBpbGtfbWF4X3BpeGVsX3JhdGUgYW5kIGludGVsX21vZGVfbWF4X3Bp eGNsayBhcmUgaWRlbnRpY2FsLgo+IEkgZG9uJ3QgZm9sbG93LgpUaGUgb2xkIGNvZGUgd2FzIGEg bm9vcCB3aGVuIGNydGNfc3RhdGUtPmVuYWJsZSA9IGZhbHNlLCBuZXcgY29kZSBuZWVkcyB0byBz ZXQgbWluX3BpeGNsa1twaXBlXSB0byAwIGluIHRoYXQgY2FzZS4KCn5NYWFydGVuCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==