From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2A69A6E40B for ; Wed, 17 Oct 2018 20:38:48 +0000 (UTC) References: <20181005233437.31286-1-manasi.d.navare@intel.com> <20181016184704.GA8224@intel.com> <3b41c1f5-f149-43a9-d177-d9a751b226e0@intel.com> <20181016213732.GH8224@intel.com> From: Antonio Argenziano Message-ID: <7dbfe7eb-4003-7056-00b5-27c94c84615f@intel.com> Date: Wed, 17 Oct 2018 13:38:47 -0700 MIME-Version: 1.0 In-Reply-To: <20181016213732.GH8224@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: CgpPbiAxNi8xMC8xOCAxNDozNywgTWFuYXNpIE5hdmFyZSB3cm90ZToKPiBPbiBUdWUsIE9jdCAx NiwgMjAxOCBhdCAwMjoxNDo1OVBNIC0wNzAwLCBBbnRvbmlvIEFyZ2Vuemlhbm8gd3JvdGU6Cj4+ Cj4+Cj4+IE9uIDE2LzEwLzE4IDExOjQ3LCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+Pj4gT24gV2Vk LCBPY3QgMTAsIDIwMTggYXQgMDg6NDg6MzdBTSAtMDcwMCwgQW50b25pbyBBcmdlbnppYW5vIHdy b3RlOgo+Pj4+Cj4+Pj4KPj4+PiBPbiAwNS8xMC8xOCAxNjozNCwgTWFuYXNpIE5hdmFyZSB3cm90 ZToKPj4+Pj4gVGhpcyBwYXRjaCBhZGRzIGEgYmFzaWMga21zIHRlc3QgdG8gdmFsaWRhdGUgdGhl IGRpc3BsYXkgc3RyZWFtCj4+Pj4+IGNvbXByZXNzaW9uIGZ1bmN0aW9uYWxpdHkgaWYgc3VwcG9y dGVkIG9uIERQL2VEUCBjb25uZWN0b3IuCj4+Pj4+IEN1cnJlbnRseSB0aGlzIGhhcyBvbmx5IG9u ZSBzdWJ0ZXN0IHRvIGZvcmNlIHRoZSBEU0Mgb24gYWxsCj4+Pj4+IHRoZSBjb25uZWN0b3JzIHRo YXQgc3VwcG9ydCBpdCB3aXRoIGRlZmF1bHQgcGFyYW1ldGVycy4KPj4+Pj4gVGhpcyB3aWxsIGJl IGV4cGFuZGVkIHRvIGFkZCBtb3JlIHN1YnRlc3RzIHRvIHR3ZWFrIERTQyBwYXJhbWV0ZXJzLgo+ Pj4+Pgo+Pj4+PiBDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29t Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50 ZWwuY29tPgo+Pj4+PiAtLS0KPj4+Pj4gICB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsK Pj4+Pj4gICB0ZXN0cy9rbXNfZHBfZHNjLmMgICAgIHwgMzcyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4+Pj4+ICAgMiBmaWxlcyBjaGFuZ2VkLCAzNzMgaW5zZXJ0 aW9ucygrKQo+Pj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZHBfZHNjLmMKPj4+ Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtl ZmlsZS5zb3VyY2VzCj4+Pj4+IGluZGV4IGM4NDkzM2YxLi5jODA3YWFkMyAxMDA2NDQKPj4+Pj4g LS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+Pj4+PiArKysgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCj4+Pj4+IEBAIC0yMDcsNiArMjA3LDcgQEAgVEVTVFNfcHJvZ3MgPSBcCj4+Pj4+ICAg CWttc190dl9sb2FkX2RldGVjdCBcCj4+Pj4+ICAgCWttc191bml2ZXJzYWxfcGxhbmUgXAo+Pj4+ PiAgIAlrbXNfdmJsYW5rIFwKPj4+Pj4gKwlrbXNfZHBfZHNjIFwKPj4+Pgo+Pj4+IEFkZCB0ZXN0 IGluIG1lc29uIGJ1aWxkIGFzIHdlbGwuCj4+Pgo+Pj4gQnV0IEkgZG9udCBzZWUgYW55IGttcyB0 ZXN0cyBhZGRlZCBpbiBtZXNvbi5idWlsZCBmaWxlLCBpcyB0aGVyZSBhbnkgb3RoZXIKPj4+IGZp bGUgdGhhdCBhZGRzIHRoZSB0ZXN0IG5hbWVzIHRvIG1lc29uIGJ1aWxkPwo+Pgo+PiB0ZXN0cy9t ZXNvbi5idWlsZCBkb2VzIGhhdmUga21zIHRlc3RzIGluIG15IHRyZWUuIEkgdGhpbmsgdGhhdCBp cyB0aGUgb25seQo+PiBwbGFjZSB3aXRoIHRlc3RzLgo+IAo+IE9rIGdvdCBpdCEgVGhhbmtzLgo+ IAo+Pgo+Pj4KPj4+Pgo+Pj4+PiAgIAltZXRhX3Rlc3QgXAo+Pj4+PiAgIAlwZXJmIFwKPj4+Pj4g ICAJcGVyZl9wbXUgXAo+Pj4+PiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2RwX2RzYy5jIGIvdGVz dHMva21zX2RwX2RzYy5jCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4+IGluZGV4IDAw MDAwMDAwLi5kMGZkMmFlMwo+Pj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4+ICsrKyBiL3Rlc3RzL2tt c19kcF9kc2MuYwo+Pj4+PiBAQCAtMCwwICsxLDM3MiBAQAo+Pgo+Pj4+PiArCXNpemVfdCBsaW5l X3NpemUgPSAwOwo+Pj4+PiArCWNoYXIgYnVmWzEyOF0gPSB7MH0sIHN1cHBvcnRlZF9zdHJbNV0s IGVuYWJsZWRfc3RyWzVdOwo+Pj4+PiArCWJvb2wgc3VwcG9ydGVkID0gZmFsc2U7Cj4+Pj4+ICsK Pj4+Pj4gKwlzdHJjcHkoYnVmLCB0ZXN0X2Nvbm5lY3Rvcl9uYW1lKTsKPj4+Pj4gKwlzdHJjYXQo YnVmLCAiL2k5MTVfZHNjX3N1cHBvcnQiKTsKPj4+Pj4gKwlkc2Nfc3VwcG9ydF9mcCA9IGZvcGVu YXQoZGlyLCBidWYsICJyIik7Cj4+Pj4+ICsJaWd0X3JlcXVpcmUoZHNjX3N1cHBvcnRfZnApOwo+ Pj4+Cj4+Pj4gZG9uJ3Qgd2UgaGF2ZSBzb21ldGhpbmcgc2ltaWxhciBpbiBpZ3RfZGVidWdmcyBh bHJlYWR5IChpZ3RfZGVidWdmc19yZWFkKT8KPj4+Cj4+PiBIbW0sIHllYSBJIHRoaW5rIEkgY291 bGQgYmUgYWJsZSB0byB1c2UgaWd0X2RlYnVnZnNfcmVhZCBhbmQgcGFzcyB0aGUgYnVmIHdoaWNo IHdpbGwKPj4+IGJlIGNvbmNhdGVuYXRlZCBzdHIgd2l0aCBjb25uZWN0b3JfbmFtZS9maWxlIG5h bWUgRWc6IERQLTEvaTkxNV9kc2Nfc3VwcG9ydAo+Pj4KPj4+IEJ1dCBJIHdpbGwgc3RpbGwgbmVl ZCB0aGUgYmVsb3cgd2hpbGUgbG9vcCBpbiBvcmRlciB0byBwYXJzZSB0aGUgc3VwcG9ydGVkIGFu ZCBlbmFibGVkCj4+PiBzdHJpbmdzLiBJIHdpbGwgcGxheSB3aXRoIHRoZSBpZ3RfZGVidWdmc19y ZWFkIGFuZCBzdHJzdHIgdG8gc2VlIGlmIEkgY2FuIGdldCByaWQgb2YgdGhpcyB3aGlsZQo+Pj4g bG9vcCBiZWxvdy4KPj4+Cj4+Pj4KPj4+Pj4gKwo+Pj4+PiArCXdoaWxlIChnZXRsaW5lKCZsaW5l LCAmbGluZV9zaXplLCBkc2Nfc3VwcG9ydF9mcCkgPiAwKSB7Cj4+Pj4+ICsJCWNoYXIgKnN1cHBv cnQsICplbmFibGVkOwo+Pj4+PiArCj4+Pj4+ICsJCWVuYWJsZWQgPSBzdHJzdHIobGluZSwgIkVu YWJsZWQ6ICIpOwo+Pj4+PiArCQlpZ3RfYXNzZXJ0X2VxKHNzY2FuZihlbmFibGVkLCAiRW5hYmxl ZDogJXMiLCBlbmFibGVkX3N0ciksIDEpOwo+Pj4+PiArCQlpZiAoc3RyY21wKGVuYWJsZWRfc3Ry LCAieWVzIikgPT0gMCkgewo+Pj4+PiArCQkJaWd0X2luZm8oIkRTQyBpcyBlbmFibGVkIG9uICVz XG4iLCB0ZXN0X2Nvbm5lY3Rvcl9uYW1lKTsKPj4+Pj4gKwkJCXN1cHBvcnRlZCA9IHRydWU7Cj4+ Pj4+ICsJCQlicmVhazsKPj4+Pj4gKwkJfSBlbHNlIHsKPj4+Pj4gKwkJCWdldGxpbmUoJmxpbmUs ICZsaW5lX3NpemUsIGRzY19zdXBwb3J0X2ZwKTsKPj4+Pj4gKwkJCXN1cHBvcnQgPSBzdHJzdHIo bGluZSwgIlN1cHBvcnRlZDogIik7Cj4+Pj4+ICsJCWlndF9hc3NlcnRfZXEoc3NjYW5mKHN1cHBv cnQsICJTdXBwb3J0ZWQ6ICVzIiwgc3VwcG9ydGVkX3N0ciksIDEpOwo+Pj4+PiArCQlpZiAoc3Ry Y21wKHN1cHBvcnRlZF9zdHIsICJ5ZXMiKSA9PSAwKQo+Pj4+PiArCQkJc3VwcG9ydGVkID0gdHJ1 ZTsKPj4+Pj4gKwkJZWxzZSBpZiAoc3RyY21wKHN1cHBvcnRlZF9zdHIsICJubyIpID09IDApCj4+ Pj4+ICsJCQlzdXBwb3J0ZWQgPSBmYWxzZTsKPj4+Pj4gKwkJZWxzZQo+Pj4+PiArCQkJaWd0X2Zh aWxfb25fZih0cnVlLCAiVW5rbm93biBEU0Mgc3VwcG9ydGVkIHN0YXR1cyAnJXMnXG4iLAo+Pj4+ PiArCQkJCSAgICAgIHN1cHBvcnRlZF9zdHIpOwo+Pj4+PiArCQlicmVhazsKPj4+Pj4gKwkJfWh0 dHBzOi8vamlyYTAxLmRldnRvb2xzLmludGVsLmNvbS9icm93c2UvR1VDLTMwNgo+Pj4+PiArCX0K Pj4+Pj4gKwo+Pj4+PiArCWZyZWUobGluZSk7Cj4+Pj4+ICsJZmNsb3NlKGRzY19zdXBwb3J0X2Zw KTsKPj4+Pj4gKwo+Pj4+PiArCXJldHVybiBzdXBwb3J0ZWQ7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4K Pj4+Pj4gKwo+Pj4+PiArc3RhdGljIGludAo+Pj4+PiArc2V0X21vZGUoc3RydWN0IGNvbm5lY3Rv ciAqYywgc3RydWN0IGRzY19jb25maWcgKnRlc3RfY29uZmlnLCBib29sIHNldF9tb2RlKQo+Pj4+ PiArewo+Pj4+PiArCXVuc2lnbmVkIGludCBmYl9pZCA9IDA7Cj4+Pj4+ICsJc3RydWN0IGlndF9m YiBmYl9pbmZvOwo+Pj4+PiArCWludCByZXQgPSAwOwo+Pj4+PiArCj4+Pj4+ICsJaWYgKCFzZXRf bW9kZSkgewo+Pj4+PiArCQlyZXQgPSBkcm1Nb2RlU2V0Q3J0Yyhkcm1fZmQsIGMtPmNydGMsIDAs IDAsIDAsCj4+Pj4+ICsJCQkJICAgICBOVUxMLCAwLCBOVUxMKTsKPj4+Pj4gKwkJaWYgKHJldCkK Pj4+Pj4gKwkJCWlndF93YXJuKCJGYWlsZWQgdG8gdW5zZXQgbW9kZSIpOwo+Pj4+PiArCQlyZXR1 cm4gcmV0Owo+Pj4+PiArCX0KPj4+Pj4gKwo+Pj4+PiArCWZiX2lkID0gaWd0X2NyZWF0ZV9wYXR0 ZXJuX2ZiKGRybV9mZCwgdGVzdF9jb25maWctPm1vZGVfd2lkdGgsCj4+Pj4+ICsJCQkJICAgICAg dGVzdF9jb25maWctPm1vZGVfaGVpZ2h0LAo+Pj4+PiArCQkJCSAgICAgIGlndF9icHBfZGVwdGhf dG9fZHJtX2Zvcm1hdCh0ZXN0X2NvbmZpZy0+YnBwLAo+Pj4+PiArCQkJCQkJCQkgIHRlc3RfY29u ZmlnLT5kZXB0aCksCj4+Pj4+ICsJCQkJICAgICAgdGlsaW5nLCAmZmJfaW5mbyk7Cj4+Pj4+ICsK Pj4+Pj4gKwlpZ3RfaW5mbygiQ1JUQygldSk6WyVkXSIsIGMtPmNydGMsIDApOwo+Pj4+PiArCWtt c3Rlc3RfZHVtcF9tb2RlKCZjLT5tb2RlKTsKPj4+Pj4gKwlkcm1Nb2RlU2V0Q3J0Yyhkcm1fZmQs IGMtPmNydGMsIC0xLCAwLCAwLCBOVUxMLCAwLCBOVUxMKTsKPj4+Pj4gKwlyZXQgPSBkcm1Nb2Rl U2V0Q3J0Yyhkcm1fZmQsIGMtPmNydGMsIGZiX2lkLCAwLCAwLAo+Pj4+PiArCQkJICAgICAmYy0+ aWQsIDEsICZjLT5tb2RlKTsKPj4+Pj4gKwlzbGVlcCg1KTsKPj4+Pgo+Pj4+IFdoeSB0aGUgc2xl ZXAgYmVmb3JlIGNoZWNraW5nIHRoZSByZXR1cm4gY29kZT8KPj4+Cj4+PiBUaGlzIGlzIHNvIHRo YXQgaXQgZGlzcGxheXMgdGhlIHJlcXVlc3RlZCBwYXR0ZXJuIGZvciBmZXcgc2VjcyBiZWZvcmUg Y3ljbGluZyB0byB0aGUgbmV4dAo+Pj4gY29ubmVjdG9yIHNvIHRoYXQgaXQgY2FuIGJlIHZhbGlk YXRlZCB2aXN1YWxseS4KPj4+IE1ha2VzIHNlbnNlPwo+Pgo+PiBIb3cgZG9lcyBpdCBmYWlsPyBT aG91bGQgeW91IHdhaXQgZm9yIHVzZXIgaW5wdXQ/Cj4gCj4gQWN0dWFsbHkgdGhpcyB3aWxsIGZh aWwgaWYgZHJtTW9kZVNldENydGMgZmFpbHMgc2F5IGluIGNhc2VzIHdoZXJlIERTQyBjb3VsZCBu b3QgYmUgZW5hYmxlZAo+IGFuZCB0aGVuIGVuY29kZXIgY29uZmlnIHdpbGwgZmFpbC4KPiAKPj4K Pj4gTWF5YmUgYWRkIGEgY29tbWVudCBmb3IgdGhhdC4gSXMgdGhpcyB0ZXN0IGFsd2F5cyB2aXN1 YWxseSB2YWxpZGF0ZWQ/IEkgbWVhbgo+PiBjYW4gd2Ugc2tpcCB0aGUgc2xlZXAgaW4gYW4gYXV0 b21hdGVkIHJ1biBsaWtlIENJIGZvciBpbnN0YW5jZS4KPj4KPiAKPiBZZXMgSSB3aWxsIGFkZCBh IGNvbW1lbnQgZm9yIHRoaXMuIEFuZCB5ZXMgdGhlIERTQyBvdXRwdXQgd2lsbCBhbHdheXMgbmVl ZCB2aXN1YWwgdmFsaWRhdGlvbiBpbiB0ZXJtcyBvZiBjb3JydXB0aW9uIGV0Yy4KPiBCdXQgaXRz IGEgZ29vZCBpZGVhIHRvIHNraXAgdGhlIHNsZWVwIGluIGNhc2Ugb2YgQ0kuIElzIHRoZXJlIGEg d2F5IHRvIGNvbmRpdGlvbmFsbCBhZGQgc2xlZXAgb3Igc2tpcCBzbGVlcCgpPwoKSSBkb24ndCB0 aGluayB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIHRoYXQgYWxyZWFkeSwgYSBjb21tYW5kLWxpbmUg CnBhcmFtZXRlciBtYXliZT8KCkFudG9uaW8KCj4gCj4gTWFuYXNpCj4gICAKPj4+Cj4+Pj4KPj4+ Pj4gKwlpZiAocmV0IDwgMCkgewo+Pj4+PiArCQlpZ3Rfd2FybigiRmFpbGVkIHRvIHNldCBtb2Rl ICglZHglZEAlZEh6KTogJXNcbiIsCj4+Pj4+ICsJCQkgdGVzdF9jb25maWctPm1vZGVfd2lkdGgs IHRlc3RfY29uZmlnLT5tb2RlX2hlaWdodCwKPj4+Pj4gKwkJCSBjLT5tb2RlLnZyZWZyZXNoLCBz dHJlcnJvcihlcnJubykpOwo+Pj4+PiArCQlpZ3RfcmVtb3ZlX2ZiKGRybV9mZCwgJmZiX2luZm8p Owo+Pj4+PiArCj4+Pj4+ICsJfQo+Pj4+PiArCj4+Pj4+ICsJcmV0dXJuIHJldDsKPj4+Pj4gK30K Pj4+Pj4gKwo+Pj4+PiArCj4+Pj4+ICsvKgo+Pj4+PiArICogUmUtcHJvYmUgY29ubmVjdG9ycyBh bmQgZG8gYSBtb2Rlc2V0IHdpdGggYW5kIHdpaG91dCBEU0MKPj4+Pj4gKyAqCj4+Pj4+ICsgKiBS ZXR1cm5zOgo+Pj4+PiArICogMDogT24gU3VjY2Vzcwo+Pj4+PiArICogLTE6IE9uIGZhaWx1cmUK Pj4+Pj4gKyAqLwo+Pj4+PiArc3RhdGljIGludCB1cGRhdGVfZGlzcGxheShzdHJ1Y3QgZHNjX2Nv bmZpZyAqdGVzdF9jb25maWcpCj4+Pj4+ICt7Cj4+Pj4+ICsJc3RydWN0IGNvbm5lY3RvciAqY29u bmVjdG9yczsKPj4+Pj4gKwlzdHJ1Y3Qga21zdGVzdF9jb25uZWN0b3JfY29uZmlnIGNvbmZpZzsK Pj4+Pj4gKwlpbnQgY250LCBjb25uX2NudCA9IDAsIHJldCA9IDAsIGVkcF9jbnQgPSAwLCBkcF9j bnQgPSAwOwo+Pj4+PiArCXVuc2lnbmVkIGxvbmcgY3J0Y19pZHhfbWFzayA9IC0xVUw7Cj4+Pj4+ ICsJY2hhciBjb25uX2J1ZlsxMjhdID0gezB9Owo+Pj4+PiArCj4+Pj4+ICsJcmVzb3VyY2VzID0g ZHJtTW9kZUdldFJlc291cmNlcyhkcm1fZmQpOwo+Pj4+PiArCWlmICghcmVzb3VyY2VzKSB7Cj4+ Pj4+ICsJCWlndF93YXJuKCJkcm1Nb2RlR2V0UmVzb3VyY2VzIGZhaWxlZDogJXNcbiIsIHN0cmVy cm9yKGVycm5vKSk7Cj4+Pj4+ICsJCXJldHVybiAtMTsKPj4+Pj4gKwl9Cj4+Pj4+ICsKPj4+Pj4g Kwljb25uZWN0b3JzID0gY2FsbG9jKHJlc291cmNlcy0+Y291bnRfY29ubmVjdG9ycywKPj4+Pj4g KwkJCSAgICBzaXplb2Yoc3RydWN0IGNvbm5lY3RvcikpOwo+Pj4+PiArCWlmICghY29ubmVjdG9y cykKPj4+Pj4gKwkJcmV0dXJuIC0xOwo+Pj4+PiArCj4+Pj4+ICsJLyogRmluZCBhbnkgY29ubmVj dGVkIGRpc3BsYXlzICovCj4+Pj4+ICsJZm9yIChjbnQgPSAwOyBjbnQgPCByZXNvdXJjZXMtPmNv dW50X2Nvbm5lY3RvcnM7IGNudCsrKSB7Cj4+Pj4+ICsJCXN0cnVjdCBjb25uZWN0b3IgKmMgPSAm Y29ubmVjdG9yc1tjbnRdOwo+Pj4+PiArCQljLT5pZCA9IHJlc291cmNlcy0+Y29ubmVjdG9yc1tj bnRdOwo+Pj4+PiArCQlpZigha21zdGVzdF9nZXRfY29ubmVjdG9yX2NvbmZpZyhkcm1fZmQsIGMt PmlkLCBjcnRjX2lkeF9tYXNrLAo+Pj4+PiArCQkJCQkJJmNvbmZpZykpIHsKPj4+Pj4gKwkJCWMt Pm1vZGVfdmFsaWQgPSAwOwo+Pj4+PiArCQkJY29udGludWU7Cj4+Pj4+ICsJCX0KPj4+Pj4gKwkJ Yy0+Y29ubmVjdG9yID0gY29uZmlnLmNvbm5lY3RvcjsKPj4+Pj4gKwkJYy0+ZW5jb2RlciA9IGNv bmZpZy5lbmNvZGVyOwo+Pj4+PiArCQljLT5tb2RlID0gY29uZmlnLmRlZmF1bHRfbW9kZTsKPj4+ Pj4gKwkJYy0+Y3J0YyA9IGNvbmZpZy5jcnRjLT5jcnRjX2lkOwo+Pj4+PiArCQljLT5waXBlID0g Y29uZmlnLnBpcGU7Cj4+Pj4+ICsJCWMtPm1vZGVfdmFsaWQgPSAxOwo+Pj4+PiArCj4+Pj4+ICsJ CWlmIChjLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9E aXNwbGF5UG9ydCB8fAo+Pj4+PiArCQkgICAgYy0+Y29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9 PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKSB7Cj4+Pj4+ICsKPj4+Pj4gKwkJCWlmIChjLT5jb25u ZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCj4+Pj4+ICsJ CQkJY29ubl9jbnQgPSArKyBlZHBfY250Owo+Pj4+PiArCQkJZWxzZQo+Pj4+PiArCQkJCWNvbm5f Y250ID0gKysgZHBfY250Owo+Pj4+PiArCQkJaWYgKGMtPmNvbm5lY3Rvci0+Y29ubmVjdGlvbiA9 PSBEUk1fTU9ERV9DT05ORUNURUQpIHsKPj4+Pj4gKwkJCQlzcHJpbnRmKGNvbm5fYnVmLCAiJXMt JWQiLAo+Pj4+PiArCQkJCQlrbXN0ZXN0X2Nvbm5lY3Rvcl90eXBlX3N0cihjLT5jb25uZWN0b3It PmNvbm5lY3Rvcl90eXBlKSwKPj4+Pj4gKwkJCQkJY29ubl9jbnQpOwo+Pj4+PiArCQkJCXRlc3Rf Y29uZmlnLT5kc2Nfc3VwcG9ydGVkID0KPj4+Pj4gKwkJCQkJZ2V0X2RwX2RzY19zdXBwb3J0KGNv bm5fYnVmKTsKPj4+Pj4gKwkJCQlpZiAoIXN0cmNtcCh0ZXN0X2NvbmZpZy0+dGVzdF9uYW1lLAo+ Pj4+PiArCQkJCQkgICAgImZvcmNlX2RzY19lbmFibGVfYmFzaWMiKSkgewo+Pj4+PiArCQkJCQlp ZiAodGVzdF9jb25maWctPmRzY19zdXBwb3J0ZWQpIHsKPj4+Pj4gKwkJCQkJCWlndF9pbmZvICgi RFNDIGlzIHN1cHBvcnRlZCBvbiAlc1xuIiwKPj4+Pj4gKwkJCQkJCQkgIGNvbm5fYnVmKTsKPj4+ Pj4gKwkJCQkJCXRlc3RfY29uZmlnLT5tb2RlX3dpZHRoID0gYy0+bW9kZS5oZGlzcGxheTsKPj4+ Pj4gKwkJCQkJCXRlc3RfY29uZmlnLT5tb2RlX2hlaWdodCA9IGMtPm1vZGUudmRpc3BsYXk7Cj4+ Pj4+ICsJCQkJCQl0ZXN0X2NvbmZpZy0+YnBwID0gMzI7Cj4+Pj4+ICsJCQkJCQl0ZXN0X2NvbmZp Zy0+ZGVwdGggPSAyNDsKPj4+Pj4gKwkJCQkJCXNldF9kcF9kc2NfZW5hYmxlKHRlc3RfY29uZmln LT5kc2NfZW5hYmxlLAo+Pj4+PiArCQkJCQkJCSAgY29ubl9idWYpOwo+Pj4+PiArCQkJCQkJcmV0 ID0gc2V0X21vZGUoYywgdGVzdF9jb25maWcsCj4+Pj4+ICsJCQkJCQkJICAgICAgIHRydWUpOwo+ Pj4+PiArCQkJCQl9IGVsc2Ugewo+Pj4+PiArCQkJCQkJaWd0X2luZm8gKCJEU0MgaXMgbm90IHN1 cHBvcnRlZCBvbiAlc1xuIiwKPj4+Pj4gKwkJCQkJCQkgIGNvbm5fYnVmKTsKPj4+Pj4gKwkJCQkJ fQo+Pj4+PiArCQkJCX0KPj4+Pj4gKwkJCQljcnRjX2lkeF9tYXNrICY9IH4oMSA8PCBjLT5waXBl KTsKPj4+Pj4gKwkJCX0KPj4+Pj4gKwkJfQo+Pj4+PiArCX0KPj4+Pj4gKwo+Pj4+PiArCWZyZWUo Y29ubmVjdG9ycyk7Cj4+Pj4+ICsJZHJtTW9kZUZyZWVSZXNvdXJjZXMocmVzb3VyY2VzKTsKPj4+ Pj4gKwlyZXR1cm4gcmV0Owo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgaW50IG9wdF9o YW5kbGVyKGludCBvcHQsIGludCBvcHRfaW5kZXgsIHZvaWQgKm9wdF9kdW1wKQo+Pj4+PiArewo+ Pj4+Cj4+Pj4gV2h5IG5vdCB3cmFwcGluZyBhbGwgdGhlIG9wdGlvbmFsIHByaW50cyBpbiBpZ3Rf ZGVidWcgc28geW91IGNvdWxkIHJlLXVzZQo+Pj4+IHRoZSAtLWRlYnVnIG9wdGlvbj8KPj4+Cj4+ PiBZb3UgbWVhbiBpbnN0ZWFkIG9mIGlndF9pbmZvIGFuZCBhbGwgY29ubmVjdG9yIGR1bXAgcHJp bnRzIGhhdmUgdGhlbSBpbiBpZ3RfZGVidWcoKSA/Cj4+Cj4+IFNvbWV0aGluZyBsaWtlIHRoYXQg b3IgcmV0dXJuaW5nIGEgc3RyaW5nIGZyb20gdGhlIGR1bXAgZnVuY3Rpb25zIGFuZCBwaW50Cj4+ IGl0IGludG8gYW4gaWd0X2RlYnVnKCkgY2FsbC4KPj4KPj4+Cj4+Pj4KPj4+Pj4gKwlib29sICpk dW1wID0gb3B0X2R1bXA7Cj4+Pj4+ICsKPj4+Pj4gKwlzd2l0Y2ggKG9wdCkgewo+Pj4+PiArCWNh c2UgJ2knOgo+Pj4+PiArCQkqZHVtcCA9IHRydWU7Cj4+Pj4+ICsJCWJyZWFrOwo+Pj4+PiArCWRl ZmF1bHQ6Cj4+Pj4+ICsJCWlndF9hc3NlcnQoMCk7Cj4+Pj4+ICsJfQo+Pj4+PiArCj4+Pj4+ICsJ cmV0dXJuIDA7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gK2ludCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCj4+Pj4+ICt7Cj4+Pj4+ICsJY29uc3QgY2hhciAqaGVscF9zdHIgPQo+Pj4+PiAr CQkiICAtLWluZm9cdFx0RHVtcCBJbmZvcm1hdGlvbiBhYm91dCBjb25uZWN0b3JzLiAoc3RpbGwg bmVlZHMgRFJNIGFjY2VzcylcbiI7Cj4+Pj4+ICsJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19v cHRpb25zW10gPSB7Cj4+Pj4+ICsJCXsiaW5mbyIsIDAsIDAsICdpJ30sCj4+Pj4+ICsJCXswLCAw LCAwLCAwfQo+Pj4+PiArCX07Cj4+Pj4+ICsJaW50IHJldCA9IDA7Cj4+Pj4+ICsJc3RydWN0IGRz Y19jb25maWcgdGVzdF9jb25maWc7Cj4+Pj4+ICsJYm9vbCBvcHRfZHVtcCA9IGZhbHNlOwo+Pj4+ PiArCWlndF9zdWJ0ZXN0X2luaXRfcGFyc2Vfb3B0cygmYXJnYywgYXJndiwgIiIsIGxvbmdfb3B0 aW9ucywgaGVscF9zdHIsCj4+Pj4+ICsJCQkJICAgIG9wdF9oYW5kbGVyLCAmb3B0X2R1bXApOwo+ Pj4+PiArCj4+Pj4+ICsJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwo+Pj4+PiArCj4+Pj4+ICsJ aWd0X2ZpeHR1cmUgewo+Pj4+PiArCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4+ Pj4+ICsJCWRybV9mZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfQU5ZKTsKPj4+Pj4gKwkJaWYg KG9wdF9kdW1wKQo+Pj4+PiArCQkJZHVtcF9pbmZvKCk7Cj4+Pj4+ICsJfQo+Pj4+PiArCj4+Pj4+ ICsJaWd0X3N1YnRlc3QoImZvcmNlX2RzY19lbmFibGVfYmFzaWMiKSB7Cj4+Pj4+ICsJCXN0cmNw eSh0ZXN0X2NvbmZpZy50ZXN0X25hbWUsImZvcmNlX2RzY19lbmFibGVfYmFzaWMiKTsKPj4+Pj4g KwkJcmV0ID0gdXBkYXRlX2Rpc3BsYXkoJnRlc3RfY29uZmlnKTsKPj4+Pgo+Pj4+ICd0ZXN0X2Nv bmZpZycgc2VlbXMgdG8gYmUgYW4gb3V0cHV0IHBhcmFtZXRlciBidXQgaXQgaXMgbm90IHVzZWQg aW4gdGhlCj4+Pj4gdGVzdC4KPj4+Cj4+PiB0ZXN0X2NvbmZpZyBpcyB1c2VkIGluIHRoZSB1cGRh dGVfZGlzcGxheSgpCj4+Pgo+Pj4+Cj4+Pj4+ICsJCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKPj4+ Pj4gKwl9Cj4+Pj4+ICsKPj4+Pj4gKwljbG9zZShkcm1fZmQpOwo+Pj4+PiArCj4+Pj4+ICsJaWd0 X2Fzc2VydF9lcShyZXQsIDApOwo+Pj4+Cj4+Pj4gJ3JldCcgaXMgYWxyZWFkeSBjaGVja2VkIGlu IHRoZSBzdWJ0ZXN0IGFsc28sIHRoaXMgd291bGQgZmFpbCBpZiB5b3UgZG9uJ3QKPj4+PiBydW4g dGhlIHN1YnRlc3QuCj4+Pgo+Pj4gSWYgSSBkb250IHJ1biB0aGUgc3VidGVzdCwgaXQgd2lsbCB1 c2UgdGhlIGluaXRpYWxpemVkIHZhbHVlIG9mIHJldCB3aGljaCBpcyAwLgo+Pj4gSXQgd2lsbCBv bmx5IGZhaWwgaWYgdXBkYXRlX2Rpc3BsYXkgcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlLgo+Pgo+ PiBTb3JyeSwgeW91IGFyZSByaWdodCBJIG1pc3JlYWQgdGhhdC4gQnV0LCBpdCB3aWxsIG5vdCBi ZSB0aGlzIGFzc2VydCB0byBmaXJlCj4+IGlmIHJldCAhPSAwIGJ1dCB0aGUgb25lIGluIHRoZSBz dWJ0ZXN0LiBNeSBwb2ludCB3YXMgdGhhdCB0aGlzIHN0YXRlbWVudAo+PiBzZWVtcyBhIGJpdCBy ZWR1bmRhbnQgYW5kIGNvdWxkIGJlIGVsaW1pbmF0ZWQuCj4+Cj4+IEFudG9uaW8KPj4KPj4+Cj4+ PiBNYW5hc2kKPj4+Cj4+Pj4KPj4+PiBDb21tZW50cyBtb3N0bHkgZnJvbSBhIHJhcGlkIHJlYWQu IFlvdSB3aWxsIHN0aWxsIG5lZWQgYSBwcm9wZXIgcmV2aWV3ZXIgZm9yCj4+Pj4gdGhlIEtNUyBz dHVmZi4KPj4+Pgo+Pj4+IFRoYW5rcywKPj4+PiBBbnRvbmlvCj4+Pj4KPj4+Pj4gKwo+Pj4+PiAr CWlndF9pbmZvKCJEU0MgdGVzdGluZyBkb25lXG4iKTsKPj4+Pj4gKwlpZ3RfZXhpdCgpOwo+Pj4+ PiArCj4+Pj4+ICt9Cj4+Pj4+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRl dgo=