From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B13E8876A for ; Tue, 16 Oct 2018 21:15:00 +0000 (UTC) References: <20181005233437.31286-1-manasi.d.navare@intel.com> <20181016184704.GA8224@intel.com> From: Antonio Argenziano Message-ID: <3b41c1f5-f149-43a9-d177-d9a751b226e0@intel.com> Date: Tue, 16 Oct 2018 14:14:59 -0700 MIME-Version: 1.0 In-Reply-To: <20181016184704.GA8224@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] test/kms_dp_dsc: Basic KMS test to validate VESA DSC on DP/eDP List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Manasi Navare Cc: igt-dev@lists.freedesktop.org, Anusha Srivatsa List-ID: CgpPbiAxNi8xMC8xOCAxMTo0NywgTWFuYXNpIE5hdmFyZSB3cm90ZToKPiBPbiBXZWQsIE9jdCAx MCwgMjAxOCBhdCAwODo0ODozN0FNIC0wNzAwLCBBbnRvbmlvIEFyZ2Vuemlhbm8gd3JvdGU6Cj4+ Cj4+Cj4+IE9uIDA1LzEwLzE4IDE2OjM0LCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+Pj4gVGhpcyBw YXRjaCBhZGRzIGEgYmFzaWMga21zIHRlc3QgdG8gdmFsaWRhdGUgdGhlIGRpc3BsYXkgc3RyZWFt Cj4+PiBjb21wcmVzc2lvbiBmdW5jdGlvbmFsaXR5IGlmIHN1cHBvcnRlZCBvbiBEUC9lRFAgY29u bmVjdG9yLgo+Pj4gQ3VycmVudGx5IHRoaXMgaGFzIG9ubHkgb25lIHN1YnRlc3QgdG8gZm9yY2Ug dGhlIERTQyBvbiBhbGwKPj4+IHRoZSBjb25uZWN0b3JzIHRoYXQgc3VwcG9ydCBpdCB3aXRoIGRl ZmF1bHQgcGFyYW1ldGVycy4KPj4+IFRoaXMgd2lsbCBiZSBleHBhbmRlZCB0byBhZGQgbW9yZSBz dWJ0ZXN0cyB0byB0d2VhayBEU0MgcGFyYW1ldGVycy4KPj4+Cj4+PiBDYzogQW51c2hhIFNyaXZh dHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+Pj4gU2lnbmVkLW9mZi1ieTogTWFuYXNp IE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPj4+IC0tLQo+Pj4gICB0ZXN0cy9N YWtlZmlsZS5zb3VyY2VzIHwgICAxICsKPj4+ICAgdGVzdHMva21zX2RwX2RzYy5jICAgICB8IDM3 MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4gICAyIGZpbGVz IGNoYW5nZWQsIDM3MyBpbnNlcnRpb25zKCspCj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0 cy9rbXNfZHBfZHNjLmMKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNl cyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPj4+IGluZGV4IGM4NDkzM2YxLi5jODA3YWFkMyAx MDA2NDQKPj4+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPj4+ICsrKyBiL3Rlc3RzL01h a2VmaWxlLnNvdXJjZXMKPj4+IEBAIC0yMDcsNiArMjA3LDcgQEAgVEVTVFNfcHJvZ3MgPSBcCj4+ PiAgIAlrbXNfdHZfbG9hZF9kZXRlY3QgXAo+Pj4gICAJa21zX3VuaXZlcnNhbF9wbGFuZSBcCj4+ PiAgIAlrbXNfdmJsYW5rIFwKPj4+ICsJa21zX2RwX2RzYyBcCj4+Cj4+IEFkZCB0ZXN0IGluIG1l c29uIGJ1aWxkIGFzIHdlbGwuCj4gCj4gQnV0IEkgZG9udCBzZWUgYW55IGttcyB0ZXN0cyBhZGRl ZCBpbiBtZXNvbi5idWlsZCBmaWxlLCBpcyB0aGVyZSBhbnkgb3RoZXIKPiBmaWxlIHRoYXQgYWRk cyB0aGUgdGVzdCBuYW1lcyB0byBtZXNvbiBidWlsZD8KCnRlc3RzL21lc29uLmJ1aWxkIGRvZXMg aGF2ZSBrbXMgdGVzdHMgaW4gbXkgdHJlZS4gSSB0aGluayB0aGF0IGlzIHRoZSAKb25seSBwbGFj ZSB3aXRoIHRlc3RzLgoKPiAKPj4KPj4+ICAgCW1ldGFfdGVzdCBcCj4+PiAgIAlwZXJmIFwKPj4+ ICAgCXBlcmZfcG11IFwKPj4+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZHBfZHNjLmMgYi90ZXN0 cy9rbXNfZHBfZHNjLmMKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAw MC4uZDBmZDJhZTMKPj4+IC0tLSAvZGV2L251bGwKPj4+ICsrKyBiL3Rlc3RzL2ttc19kcF9kc2Mu Ywo+Pj4gQEAgLTAsMCArMSwzNzIgQEAKCj4+PiArCXNpemVfdCBsaW5lX3NpemUgPSAwOwo+Pj4g KwljaGFyIGJ1ZlsxMjhdID0gezB9LCBzdXBwb3J0ZWRfc3RyWzVdLCBlbmFibGVkX3N0cls1XTsK Pj4+ICsJYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKPj4+ICsKPj4+ICsJc3RyY3B5KGJ1ZiwgdGVz dF9jb25uZWN0b3JfbmFtZSk7Cj4+PiArCXN0cmNhdChidWYsICIvaTkxNV9kc2Nfc3VwcG9ydCIp Owo+Pj4gKwlkc2Nfc3VwcG9ydF9mcCA9IGZvcGVuYXQoZGlyLCBidWYsICJyIik7Cj4+PiArCWln dF9yZXF1aXJlKGRzY19zdXBwb3J0X2ZwKTsKPj4KPj4gZG9uJ3Qgd2UgaGF2ZSBzb21ldGhpbmcg c2ltaWxhciBpbiBpZ3RfZGVidWdmcyBhbHJlYWR5IChpZ3RfZGVidWdmc19yZWFkKT8KPiAKPiBI bW0sIHllYSBJIHRoaW5rIEkgY291bGQgYmUgYWJsZSB0byB1c2UgaWd0X2RlYnVnZnNfcmVhZCBh bmQgcGFzcyB0aGUgYnVmIHdoaWNoIHdpbGwKPiBiZSBjb25jYXRlbmF0ZWQgc3RyIHdpdGggY29u bmVjdG9yX25hbWUvZmlsZSBuYW1lIEVnOiBEUC0xL2k5MTVfZHNjX3N1cHBvcnQKPiAKPiBCdXQg SSB3aWxsIHN0aWxsIG5lZWQgdGhlIGJlbG93IHdoaWxlIGxvb3AgaW4gb3JkZXIgdG8gcGFyc2Ug dGhlIHN1cHBvcnRlZCBhbmQgZW5hYmxlZAo+IHN0cmluZ3MuIEkgd2lsbCBwbGF5IHdpdGggdGhl IGlndF9kZWJ1Z2ZzX3JlYWQgYW5kIHN0cnN0ciB0byBzZWUgaWYgSSBjYW4gZ2V0IHJpZCBvZiB0 aGlzIHdoaWxlCj4gbG9vcCBiZWxvdy4KPiAKPj4KPj4+ICsKPj4+ICsJd2hpbGUgKGdldGxpbmUo JmxpbmUsICZsaW5lX3NpemUsIGRzY19zdXBwb3J0X2ZwKSA+IDApIHsKPj4+ICsJCWNoYXIgKnN1 cHBvcnQsICplbmFibGVkOwo+Pj4gKwo+Pj4gKwkJZW5hYmxlZCA9IHN0cnN0cihsaW5lLCAiRW5h YmxlZDogIik7Cj4+PiArCQlpZ3RfYXNzZXJ0X2VxKHNzY2FuZihlbmFibGVkLCAiRW5hYmxlZDog JXMiLCBlbmFibGVkX3N0ciksIDEpOwo+Pj4gKwkJaWYgKHN0cmNtcChlbmFibGVkX3N0ciwgInll cyIpID09IDApIHsKPj4+ICsJCQlpZ3RfaW5mbygiRFNDIGlzIGVuYWJsZWQgb24gJXNcbiIsIHRl c3RfY29ubmVjdG9yX25hbWUpOwo+Pj4gKwkJCXN1cHBvcnRlZCA9IHRydWU7Cj4+PiArCQkJYnJl YWs7Cj4+PiArCQl9IGVsc2Ugewo+Pj4gKwkJCWdldGxpbmUoJmxpbmUsICZsaW5lX3NpemUsIGRz Y19zdXBwb3J0X2ZwKTsKPj4+ICsJCQlzdXBwb3J0ID0gc3Ryc3RyKGxpbmUsICJTdXBwb3J0ZWQ6 ICIpOwo+Pj4gKwkJaWd0X2Fzc2VydF9lcShzc2NhbmYoc3VwcG9ydCwgIlN1cHBvcnRlZDogJXMi LCBzdXBwb3J0ZWRfc3RyKSwgMSk7Cj4+PiArCQlpZiAoc3RyY21wKHN1cHBvcnRlZF9zdHIsICJ5 ZXMiKSA9PSAwKQo+Pj4gKwkJCXN1cHBvcnRlZCA9IHRydWU7Cj4+PiArCQllbHNlIGlmIChzdHJj bXAoc3VwcG9ydGVkX3N0ciwgIm5vIikgPT0gMCkKPj4+ICsJCQlzdXBwb3J0ZWQgPSBmYWxzZTsK Pj4+ICsJCWVsc2UKPj4+ICsJCQlpZ3RfZmFpbF9vbl9mKHRydWUsICJVbmtub3duIERTQyBzdXBw b3J0ZWQgc3RhdHVzICclcydcbiIsCj4+PiArCQkJCSAgICAgIHN1cHBvcnRlZF9zdHIpOwo+Pj4g KwkJYnJlYWs7Cj4+PiArCQl9aHR0cHM6Ly9qaXJhMDEuZGV2dG9vbHMuaW50ZWwuY29tL2Jyb3dz ZS9HVUMtMzA2Cj4+PiArCX0KPj4+ICsKPj4+ICsJZnJlZShsaW5lKTsKPj4+ICsJZmNsb3NlKGRz Y19zdXBwb3J0X2ZwKTsKPj4+ICsKPj4+ICsJcmV0dXJuIHN1cHBvcnRlZDsKPj4+ICt9Cj4+PiAr Cgo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQKPj4+ICtzZXRfbW9kZShzdHJ1Y3QgY29ubmVjdG9yICpj LCBzdHJ1Y3QgZHNjX2NvbmZpZyAqdGVzdF9jb25maWcsIGJvb2wgc2V0X21vZGUpCj4+PiArewo+ Pj4gKwl1bnNpZ25lZCBpbnQgZmJfaWQgPSAwOwo+Pj4gKwlzdHJ1Y3QgaWd0X2ZiIGZiX2luZm87 Cj4+PiArCWludCByZXQgPSAwOwo+Pj4gKwo+Pj4gKwlpZiAoIXNldF9tb2RlKSB7Cj4+PiArCQly ZXQgPSBkcm1Nb2RlU2V0Q3J0Yyhkcm1fZmQsIGMtPmNydGMsIDAsIDAsIDAsCj4+PiArCQkJCSAg ICAgTlVMTCwgMCwgTlVMTCk7Cj4+PiArCQlpZiAocmV0KQo+Pj4gKwkJCWlndF93YXJuKCJGYWls ZWQgdG8gdW5zZXQgbW9kZSIpOwo+Pj4gKwkJcmV0dXJuIHJldDsKPj4+ICsJfQo+Pj4gKwo+Pj4g KwlmYl9pZCA9IGlndF9jcmVhdGVfcGF0dGVybl9mYihkcm1fZmQsIHRlc3RfY29uZmlnLT5tb2Rl X3dpZHRoLAo+Pj4gKwkJCQkgICAgICB0ZXN0X2NvbmZpZy0+bW9kZV9oZWlnaHQsCj4+PiArCQkJ CSAgICAgIGlndF9icHBfZGVwdGhfdG9fZHJtX2Zvcm1hdCh0ZXN0X2NvbmZpZy0+YnBwLAo+Pj4g KwkJCQkJCQkJICB0ZXN0X2NvbmZpZy0+ZGVwdGgpLAo+Pj4gKwkJCQkgICAgICB0aWxpbmcsICZm Yl9pbmZvKTsKPj4+ICsKPj4+ICsJaWd0X2luZm8oIkNSVEMoJXUpOlslZF0iLCBjLT5jcnRjLCAw KTsKPj4+ICsJa21zdGVzdF9kdW1wX21vZGUoJmMtPm1vZGUpOwo+Pj4gKwlkcm1Nb2RlU2V0Q3J0 Yyhkcm1fZmQsIGMtPmNydGMsIC0xLCAwLCAwLCBOVUxMLCAwLCBOVUxMKTsKPj4+ICsJcmV0ID0g ZHJtTW9kZVNldENydGMoZHJtX2ZkLCBjLT5jcnRjLCBmYl9pZCwgMCwgMCwKPj4+ICsJCQkgICAg ICZjLT5pZCwgMSwgJmMtPm1vZGUpOwo+Pj4gKwlzbGVlcCg1KTsKPj4KPj4gV2h5IHRoZSBzbGVl cCBiZWZvcmUgY2hlY2tpbmcgdGhlIHJldHVybiBjb2RlPwo+IAo+IFRoaXMgaXMgc28gdGhhdCBp dCBkaXNwbGF5cyB0aGUgcmVxdWVzdGVkIHBhdHRlcm4gZm9yIGZldyBzZWNzIGJlZm9yZSBjeWNs aW5nIHRvIHRoZSBuZXh0Cj4gY29ubmVjdG9yIHNvIHRoYXQgaXQgY2FuIGJlIHZhbGlkYXRlZCB2 aXN1YWxseS4KPiBNYWtlcyBzZW5zZT8KCkhvdyBkb2VzIGl0IGZhaWw/IFNob3VsZCB5b3Ugd2Fp dCBmb3IgdXNlciBpbnB1dD8KCk1heWJlIGFkZCBhIGNvbW1lbnQgZm9yIHRoYXQuIElzIHRoaXMg dGVzdCBhbHdheXMgdmlzdWFsbHkgdmFsaWRhdGVkPyBJIAptZWFuIGNhbiB3ZSBza2lwIHRoZSBz bGVlcCBpbiBhbiBhdXRvbWF0ZWQgcnVuIGxpa2UgQ0kgZm9yIGluc3RhbmNlLgoKPiAKPj4KPj4+ ICsJaWYgKHJldCA8IDApIHsKPj4+ICsJCWlndF93YXJuKCJGYWlsZWQgdG8gc2V0IG1vZGUgKCVk eCVkQCVkSHopOiAlc1xuIiwKPj4+ICsJCQkgdGVzdF9jb25maWctPm1vZGVfd2lkdGgsIHRlc3Rf Y29uZmlnLT5tb2RlX2hlaWdodCwKPj4+ICsJCQkgYy0+bW9kZS52cmVmcmVzaCwgc3RyZXJyb3Io ZXJybm8pKTsKPj4+ICsJCWlndF9yZW1vdmVfZmIoZHJtX2ZkLCAmZmJfaW5mbyk7Cj4+PiArCj4+ PiArCX0KPj4+ICsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICt9Cj4+PiArCj4+PiArCj4+PiArLyoK Pj4+ICsgKiBSZS1wcm9iZSBjb25uZWN0b3JzIGFuZCBkbyBhIG1vZGVzZXQgd2l0aCBhbmQgd2lo b3V0IERTQwo+Pj4gKyAqCj4+PiArICogUmV0dXJuczoKPj4+ICsgKiAwOiBPbiBTdWNjZXNzCj4+ PiArICogLTE6IE9uIGZhaWx1cmUKPj4+ICsgKi8KPj4+ICtzdGF0aWMgaW50IHVwZGF0ZV9kaXNw bGF5KHN0cnVjdCBkc2NfY29uZmlnICp0ZXN0X2NvbmZpZykKPj4+ICt7Cj4+PiArCXN0cnVjdCBj b25uZWN0b3IgKmNvbm5lY3RvcnM7Cj4+PiArCXN0cnVjdCBrbXN0ZXN0X2Nvbm5lY3Rvcl9jb25m aWcgY29uZmlnOwo+Pj4gKwlpbnQgY250LCBjb25uX2NudCA9IDAsIHJldCA9IDAsIGVkcF9jbnQg PSAwLCBkcF9jbnQgPSAwOwo+Pj4gKwl1bnNpZ25lZCBsb25nIGNydGNfaWR4X21hc2sgPSAtMVVM Owo+Pj4gKwljaGFyIGNvbm5fYnVmWzEyOF0gPSB7MH07Cj4+PiArCj4+PiArCXJlc291cmNlcyA9 IGRybU1vZGVHZXRSZXNvdXJjZXMoZHJtX2ZkKTsKPj4+ICsJaWYgKCFyZXNvdXJjZXMpIHsKPj4+ ICsJCWlndF93YXJuKCJkcm1Nb2RlR2V0UmVzb3VyY2VzIGZhaWxlZDogJXNcbiIsIHN0cmVycm9y KGVycm5vKSk7Cj4+PiArCQlyZXR1cm4gLTE7Cj4+PiArCX0KPj4+ICsKPj4+ICsJY29ubmVjdG9y cyA9IGNhbGxvYyhyZXNvdXJjZXMtPmNvdW50X2Nvbm5lY3RvcnMsCj4+PiArCQkJICAgIHNpemVv ZihzdHJ1Y3QgY29ubmVjdG9yKSk7Cj4+PiArCWlmICghY29ubmVjdG9ycykKPj4+ICsJCXJldHVy biAtMTsKPj4+ICsKPj4+ICsJLyogRmluZCBhbnkgY29ubmVjdGVkIGRpc3BsYXlzICovCj4+PiAr CWZvciAoY250ID0gMDsgY250IDwgcmVzb3VyY2VzLT5jb3VudF9jb25uZWN0b3JzOyBjbnQrKykg ewo+Pj4gKwkJc3RydWN0IGNvbm5lY3RvciAqYyA9ICZjb25uZWN0b3JzW2NudF07Cj4+PiArCQlj LT5pZCA9IHJlc291cmNlcy0+Y29ubmVjdG9yc1tjbnRdOwo+Pj4gKwkJaWYoIWttc3Rlc3RfZ2V0 X2Nvbm5lY3Rvcl9jb25maWcoZHJtX2ZkLCBjLT5pZCwgY3J0Y19pZHhfbWFzaywKPj4+ICsJCQkJ CQkmY29uZmlnKSkgewo+Pj4gKwkJCWMtPm1vZGVfdmFsaWQgPSAwOwo+Pj4gKwkJCWNvbnRpbnVl Owo+Pj4gKwkJfQo+Pj4gKwkJYy0+Y29ubmVjdG9yID0gY29uZmlnLmNvbm5lY3RvcjsKPj4+ICsJ CWMtPmVuY29kZXIgPSBjb25maWcuZW5jb2RlcjsKPj4+ICsJCWMtPm1vZGUgPSBjb25maWcuZGVm YXVsdF9tb2RlOwo+Pj4gKwkJYy0+Y3J0YyA9IGNvbmZpZy5jcnRjLT5jcnRjX2lkOwo+Pj4gKwkJ Yy0+cGlwZSA9IGNvbmZpZy5waXBlOwo+Pj4gKwkJYy0+bW9kZV92YWxpZCA9IDE7Cj4+PiArCj4+ PiArCQlpZiAoYy0+Y29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNU T1JfRGlzcGxheVBvcnQgfHwKPj4+ICsJCSAgICBjLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBl ID09IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApIHsKPj4+ICsKPj4+ICsJCQlpZiAoYy0+Y29ubmVj dG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKQo+Pj4gKwkJCQlj b25uX2NudCA9ICsrIGVkcF9jbnQ7Cj4+PiArCQkJZWxzZQo+Pj4gKwkJCQljb25uX2NudCA9ICsr IGRwX2NudDsKPj4+ICsJCQlpZiAoYy0+Y29ubmVjdG9yLT5jb25uZWN0aW9uID09IERSTV9NT0RF X0NPTk5FQ1RFRCkgewo+Pj4gKwkJCQlzcHJpbnRmKGNvbm5fYnVmLCAiJXMtJWQiLAo+Pj4gKwkJ CQkJa21zdGVzdF9jb25uZWN0b3JfdHlwZV9zdHIoYy0+Y29ubmVjdG9yLT5jb25uZWN0b3JfdHlw ZSksCj4+PiArCQkJCQljb25uX2NudCk7Cj4+PiArCQkJCXRlc3RfY29uZmlnLT5kc2Nfc3VwcG9y dGVkID0KPj4+ICsJCQkJCWdldF9kcF9kc2Nfc3VwcG9ydChjb25uX2J1Zik7Cj4+PiArCQkJCWlm ICghc3RyY21wKHRlc3RfY29uZmlnLT50ZXN0X25hbWUsCj4+PiArCQkJCQkgICAgImZvcmNlX2Rz Y19lbmFibGVfYmFzaWMiKSkgewo+Pj4gKwkJCQkJaWYgKHRlc3RfY29uZmlnLT5kc2Nfc3VwcG9y dGVkKSB7Cj4+PiArCQkJCQkJaWd0X2luZm8gKCJEU0MgaXMgc3VwcG9ydGVkIG9uICVzXG4iLAo+ Pj4gKwkJCQkJCQkgIGNvbm5fYnVmKTsKPj4+ICsJCQkJCQl0ZXN0X2NvbmZpZy0+bW9kZV93aWR0 aCA9IGMtPm1vZGUuaGRpc3BsYXk7Cj4+PiArCQkJCQkJdGVzdF9jb25maWctPm1vZGVfaGVpZ2h0 ID0gYy0+bW9kZS52ZGlzcGxheTsKPj4+ICsJCQkJCQl0ZXN0X2NvbmZpZy0+YnBwID0gMzI7Cj4+ PiArCQkJCQkJdGVzdF9jb25maWctPmRlcHRoID0gMjQ7Cj4+PiArCQkJCQkJc2V0X2RwX2RzY19l bmFibGUodGVzdF9jb25maWctPmRzY19lbmFibGUsCj4+PiArCQkJCQkJCSAgY29ubl9idWYpOwo+ Pj4gKwkJCQkJCXJldCA9IHNldF9tb2RlKGMsIHRlc3RfY29uZmlnLAo+Pj4gKwkJCQkJCQkgICAg ICAgdHJ1ZSk7Cj4+PiArCQkJCQl9IGVsc2Ugewo+Pj4gKwkJCQkJCWlndF9pbmZvICgiRFNDIGlz IG5vdCBzdXBwb3J0ZWQgb24gJXNcbiIsCj4+PiArCQkJCQkJCSAgY29ubl9idWYpOwo+Pj4gKwkJ CQkJfQo+Pj4gKwkJCQl9Cj4+PiArCQkJCWNydGNfaWR4X21hc2sgJj0gfigxIDw8IGMtPnBpcGUp Owo+Pj4gKwkJCX0KPj4+ICsJCX0KPj4+ICsJfQo+Pj4gKwo+Pj4gKwlmcmVlKGNvbm5lY3RvcnMp Owo+Pj4gKwlkcm1Nb2RlRnJlZVJlc291cmNlcyhyZXNvdXJjZXMpOwo+Pj4gKwlyZXR1cm4gcmV0 Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IG9wdF9oYW5kbGVyKGludCBvcHQsIGludCBv cHRfaW5kZXgsIHZvaWQgKm9wdF9kdW1wKQo+Pj4gK3sKPj4KPj4gV2h5IG5vdCB3cmFwcGluZyBh bGwgdGhlIG9wdGlvbmFsIHByaW50cyBpbiBpZ3RfZGVidWcgc28geW91IGNvdWxkIHJlLXVzZQo+ PiB0aGUgLS1kZWJ1ZyBvcHRpb24/Cj4gCj4gWW91IG1lYW4gaW5zdGVhZCBvZiBpZ3RfaW5mbyBh bmQgYWxsIGNvbm5lY3RvciBkdW1wIHByaW50cyBoYXZlIHRoZW0gaW4gaWd0X2RlYnVnKCkgPwoK U29tZXRoaW5nIGxpa2UgdGhhdCBvciByZXR1cm5pbmcgYSBzdHJpbmcgZnJvbSB0aGUgZHVtcCBm dW5jdGlvbnMgYW5kIApwaW50IGl0IGludG8gYW4gaWd0X2RlYnVnKCkgY2FsbC4KCj4gCj4+Cj4+ PiArCWJvb2wgKmR1bXAgPSBvcHRfZHVtcDsKPj4+ICsKPj4+ICsJc3dpdGNoIChvcHQpIHsKPj4+ ICsJY2FzZSAnaSc6Cj4+PiArCQkqZHVtcCA9IHRydWU7Cj4+PiArCQlicmVhazsKPj4+ICsJZGVm YXVsdDoKPj4+ICsJCWlndF9hc3NlcnQoMCk7Cj4+PiArCX0KPj4+ICsKPj4+ICsJcmV0dXJuIDA7 Cj4+PiArfQo+Pj4gKwo+Pj4gK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4+PiAr ewo+Pj4gKwljb25zdCBjaGFyICpoZWxwX3N0ciA9Cj4+PiArCQkiICAtLWluZm9cdFx0RHVtcCBJ bmZvcm1hdGlvbiBhYm91dCBjb25uZWN0b3JzLiAoc3RpbGwgbmVlZHMgRFJNIGFjY2VzcylcbiI7 Cj4+PiArCXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0gewo+Pj4gKwkJeyJp bmZvIiwgMCwgMCwgJ2knfSwKPj4+ICsJCXswLCAwLCAwLCAwfQo+Pj4gKwl9Owo+Pj4gKwlpbnQg cmV0ID0gMDsKPj4+ICsJc3RydWN0IGRzY19jb25maWcgdGVzdF9jb25maWc7Cj4+PiArCWJvb2wg b3B0X2R1bXAgPSBmYWxzZTsKPj4+ICsJaWd0X3N1YnRlc3RfaW5pdF9wYXJzZV9vcHRzKCZhcmdj LCBhcmd2LCAiIiwgbG9uZ19vcHRpb25zLCBoZWxwX3N0ciwKPj4+ICsJCQkJICAgIG9wdF9oYW5k bGVyLCAmb3B0X2R1bXApOwo+Pj4gKwo+Pj4gKwlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7Cj4+ PiArCj4+PiArCWlndF9maXh0dXJlIHsKPj4+ICsJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21v ZGUoKTsKPj4+ICsJCWRybV9mZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfQU5ZKTsKPj4+ICsJ CWlmIChvcHRfZHVtcCkKPj4+ICsJCQlkdW1wX2luZm8oKTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlp Z3Rfc3VidGVzdCgiZm9yY2VfZHNjX2VuYWJsZV9iYXNpYyIpIHsKPj4+ICsJCXN0cmNweSh0ZXN0 X2NvbmZpZy50ZXN0X25hbWUsImZvcmNlX2RzY19lbmFibGVfYmFzaWMiKTsKPj4+ICsJCXJldCA9 IHVwZGF0ZV9kaXNwbGF5KCZ0ZXN0X2NvbmZpZyk7Cj4+Cj4+ICd0ZXN0X2NvbmZpZycgc2VlbXMg dG8gYmUgYW4gb3V0cHV0IHBhcmFtZXRlciBidXQgaXQgaXMgbm90IHVzZWQgaW4gdGhlCj4+IHRl c3QuCj4gCj4gdGVzdF9jb25maWcgaXMgdXNlZCBpbiB0aGUgdXBkYXRlX2Rpc3BsYXkoKQo+IAo+ Pgo+Pj4gKwkJaWd0X2Fzc2VydF9lcShyZXQsIDApOwo+Pj4gKwl9Cj4+PiArCj4+PiArCWNsb3Nl KGRybV9mZCk7Cj4+PiArCj4+PiArCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKPj4KPj4gJ3JldCcg aXMgYWxyZWFkeSBjaGVja2VkIGluIHRoZSBzdWJ0ZXN0IGFsc28sIHRoaXMgd291bGQgZmFpbCBp ZiB5b3UgZG9uJ3QKPj4gcnVuIHRoZSBzdWJ0ZXN0Lgo+IAo+IElmIEkgZG9udCBydW4gdGhlIHN1 YnRlc3QsIGl0IHdpbGwgdXNlIHRoZSBpbml0aWFsaXplZCB2YWx1ZSBvZiByZXQgd2hpY2ggaXMg MC4KPiBJdCB3aWxsIG9ubHkgZmFpbCBpZiB1cGRhdGVfZGlzcGxheSByZXR1cm5zIGEgbmVnYXRp dmUgdmFsdWUuCgpTb3JyeSwgeW91IGFyZSByaWdodCBJIG1pc3JlYWQgdGhhdC4gQnV0LCBpdCB3 aWxsIG5vdCBiZSB0aGlzIGFzc2VydCB0byAKZmlyZSBpZiByZXQgIT0gMCBidXQgdGhlIG9uZSBp biB0aGUgc3VidGVzdC4gTXkgcG9pbnQgd2FzIHRoYXQgdGhpcyAKc3RhdGVtZW50IHNlZW1zIGEg Yml0IHJlZHVuZGFudCBhbmQgY291bGQgYmUgZWxpbWluYXRlZC4KCkFudG9uaW8KCj4gCj4gTWFu YXNpCj4gCj4+Cj4+IENvbW1lbnRzIG1vc3RseSBmcm9tIGEgcmFwaWQgcmVhZC4gWW91IHdpbGwg c3RpbGwgbmVlZCBhIHByb3BlciByZXZpZXdlciBmb3IKPj4gdGhlIEtNUyBzdHVmZi4KPj4KPj4g VGhhbmtzLAo+PiBBbnRvbmlvCj4+Cj4+PiArCj4+PiArCWlndF9pbmZvKCJEU0MgdGVzdGluZyBk b25lXG4iKTsKPj4+ICsJaWd0X2V4aXQoKTsKPj4+ICsKPj4+ICt9Cj4+PgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK