From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9E72D6E543 for ; Fri, 26 Oct 2018 23:25:42 +0000 (UTC) Date: Fri, 26 Oct 2018 16:28:22 -0700 From: Manasi Navare Message-ID: <20181026232822.GB9833@intel.com> References: <20181005233437.31286-1-manasi.d.navare@intel.com> <20181016184704.GA8224@intel.com> <3b41c1f5-f149-43a9-d177-d9a751b226e0@intel.com> <20181016213732.GH8224@intel.com> <7dbfe7eb-4003-7056-00b5-27c94c84615f@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <7dbfe7eb-4003-7056-00b5-27c94c84615f@intel.com> 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Antonio Argenziano Cc: igt-dev@lists.freedesktop.org, Anusha Srivatsa List-ID: T24gV2VkLCBPY3QgMTcsIDIwMTggYXQgMDE6Mzg6NDdQTSAtMDcwMCwgQW50b25pbyBBcmdlbnpp YW5vIHdyb3RlOgo+IAo+IAo+IE9uIDE2LzEwLzE4IDE0OjM3LCBNYW5hc2kgTmF2YXJlIHdyb3Rl Ogo+ID5PbiBUdWUsIE9jdCAxNiwgMjAxOCBhdCAwMjoxNDo1OVBNIC0wNzAwLCBBbnRvbmlvIEFy Z2Vuemlhbm8gd3JvdGU6Cj4gPj4KPiA+Pgo+ID4+T24gMTYvMTAvMTggMTE6NDcsIE1hbmFzaSBO YXZhcmUgd3JvdGU6Cj4gPj4+T24gV2VkLCBPY3QgMTAsIDIwMTggYXQgMDg6NDg6MzdBTSAtMDcw MCwgQW50b25pbyBBcmdlbnppYW5vIHdyb3RlOgo+ID4+Pj4KPiA+Pj4+Cj4gPj4+Pk9uIDA1LzEw LzE4IDE2OjM0LCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ID4+Pj4+VGhpcyBwYXRjaCBhZGRzIGEg YmFzaWMga21zIHRlc3QgdG8gdmFsaWRhdGUgdGhlIGRpc3BsYXkgc3RyZWFtCj4gPj4+Pj5jb21w cmVzc2lvbiBmdW5jdGlvbmFsaXR5IGlmIHN1cHBvcnRlZCBvbiBEUC9lRFAgY29ubmVjdG9yLgo+ ID4+Pj4+Q3VycmVudGx5IHRoaXMgaGFzIG9ubHkgb25lIHN1YnRlc3QgdG8gZm9yY2UgdGhlIERT QyBvbiBhbGwKPiA+Pj4+PnRoZSBjb25uZWN0b3JzIHRoYXQgc3VwcG9ydCBpdCB3aXRoIGRlZmF1 bHQgcGFyYW1ldGVycy4KPiA+Pj4+PlRoaXMgd2lsbCBiZSBleHBhbmRlZCB0byBhZGQgbW9yZSBz dWJ0ZXN0cyB0byB0d2VhayBEU0MgcGFyYW1ldGVycy4KPiA+Pj4+Pgo+ID4+Pj4+Q2M6IEFudXNo YSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KPiA+Pj4+PlNpZ25lZC1vZmYt Ynk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPj4+Pj4tLS0K PiA+Pj4+PiAgdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCj4gPj4+Pj4gIHRlc3RzL2tt c19kcF9kc2MuYyAgICAgfCAzNzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiA+Pj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCAzNzMgaW5zZXJ0aW9ucygrKQo+ID4+Pj4+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX2RwX2RzYy5jCj4gPj4+Pj4KPiA+Pj4+PmRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwo+ID4+Pj4+aW5kZXggYzg0OTMzZjEuLmM4MDdhYWQzIDEwMDY0NAo+ID4+Pj4+LS0tIGEvdGVz dHMvTWFrZWZpbGUuc291cmNlcwo+ID4+Pj4+KysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ ID4+Pj4+QEAgLTIwNyw2ICsyMDcsNyBAQCBURVNUU19wcm9ncyA9IFwKPiA+Pj4+PiAgCWttc190 dl9sb2FkX2RldGVjdCBcCj4gPj4+Pj4gIAlrbXNfdW5pdmVyc2FsX3BsYW5lIFwKPiA+Pj4+PiAg CWttc192YmxhbmsgXAo+ID4+Pj4+KwlrbXNfZHBfZHNjIFwKPiA+Pj4+Cj4gPj4+PkFkZCB0ZXN0 IGluIG1lc29uIGJ1aWxkIGFzIHdlbGwuCj4gPj4+Cj4gPj4+QnV0IEkgZG9udCBzZWUgYW55IGtt cyB0ZXN0cyBhZGRlZCBpbiBtZXNvbi5idWlsZCBmaWxlLCBpcyB0aGVyZSBhbnkgb3RoZXIKPiA+ Pj5maWxlIHRoYXQgYWRkcyB0aGUgdGVzdCBuYW1lcyB0byBtZXNvbiBidWlsZD8KPiA+Pgo+ID4+ dGVzdHMvbWVzb24uYnVpbGQgZG9lcyBoYXZlIGttcyB0ZXN0cyBpbiBteSB0cmVlLiBJIHRoaW5r IHRoYXQgaXMgdGhlIG9ubHkKPiA+PnBsYWNlIHdpdGggdGVzdHMuCj4gPgo+ID5PayBnb3QgaXQh IFRoYW5rcy4KPiA+Cj4gPj4KPiA+Pj4KPiA+Pj4+Cj4gPj4+Pj4gIAltZXRhX3Rlc3QgXAo+ID4+ Pj4+ICAJcGVyZiBcCj4gPj4+Pj4gIAlwZXJmX3BtdSBcCj4gPj4+Pj5kaWZmIC0tZ2l0IGEvdGVz dHMva21zX2RwX2RzYy5jIGIvdGVzdHMva21zX2RwX2RzYy5jCj4gPj4+Pj5uZXcgZmlsZSBtb2Rl IDEwMDY0NAo+ID4+Pj4+aW5kZXggMDAwMDAwMDAuLmQwZmQyYWUzCj4gPj4+Pj4tLS0gL2Rldi9u dWxsCj4gPj4+Pj4rKysgYi90ZXN0cy9rbXNfZHBfZHNjLmMKPiA+Pj4+PkBAIC0wLDAgKzEsMzcy IEBACj4gPj4KPiA+Pj4+PisJc2l6ZV90IGxpbmVfc2l6ZSA9IDA7Cj4gPj4+Pj4rCWNoYXIgYnVm WzEyOF0gPSB7MH0sIHN1cHBvcnRlZF9zdHJbNV0sIGVuYWJsZWRfc3RyWzVdOwo+ID4+Pj4+Kwli b29sIHN1cHBvcnRlZCA9IGZhbHNlOwo+ID4+Pj4+Kwo+ID4+Pj4+KwlzdHJjcHkoYnVmLCB0ZXN0 X2Nvbm5lY3Rvcl9uYW1lKTsKPiA+Pj4+PisJc3RyY2F0KGJ1ZiwgIi9pOTE1X2RzY19zdXBwb3J0 Iik7Cj4gPj4+Pj4rCWRzY19zdXBwb3J0X2ZwID0gZm9wZW5hdChkaXIsIGJ1ZiwgInIiKTsKPiA+ Pj4+PisJaWd0X3JlcXVpcmUoZHNjX3N1cHBvcnRfZnApOwo+ID4+Pj4KPiA+Pj4+ZG9uJ3Qgd2Ug aGF2ZSBzb21ldGhpbmcgc2ltaWxhciBpbiBpZ3RfZGVidWdmcyBhbHJlYWR5IChpZ3RfZGVidWdm c19yZWFkKT8KCkkgYW0gdGhpbmtpbmcgb2YgcmVwbGFjaW5nIHRoZSBkaXJlY3QgZm9wZW5hdCBj YWxsIGJ5IGlndF9kZWJ1Z2ZzX29wZW4oKSBhbmQgdGhlbgpzdGlsbCB1c2UgdGhlIGZpbGUgcG9p bnRlciB0byBwYXNzIHRvIGdldGxpbmUgc28gdGhhdCBpIGNhbiBzY2FuIGl0IGxpbmUgYnkgbGlu ZS4KClRoZSBwcm9ibGVtIHdpdGggdXNpbmcgdGhlIGlndF9kZWJ1Z2ZzX3JlYWQgaXMgdGhhdCB0 aGVuIGl0IGNvcGllcyBpdCBpbiBhIGJ1ZmZlciBhbmQgdGhlbgpzY2FubmluZyBsaW5lIGJ5IGxp bmUgYmVjb21lcyBkaWZmaWN1bHQuIFRoYXQgd2lsbCBiZSBlYXN5IGlmIHRoZXJlIGlzIGEgc2lu Z2xlIGxpbmUuCgpEb2VzIHRoaXMgc291bmQgb2theT8KCk1hbmFzaQoKPiA+Pj4KPiA+Pj5IbW0s IHllYSBJIHRoaW5rIEkgY291bGQgYmUgYWJsZSB0byB1c2UgaWd0X2RlYnVnZnNfcmVhZCBhbmQg cGFzcyB0aGUgYnVmIHdoaWNoIHdpbGwKPiA+Pj5iZSBjb25jYXRlbmF0ZWQgc3RyIHdpdGggY29u bmVjdG9yX25hbWUvZmlsZSBuYW1lIEVnOiBEUC0xL2k5MTVfZHNjX3N1cHBvcnQKPiA+Pj4KPiA+ Pj5CdXQgSSB3aWxsIHN0aWxsIG5lZWQgdGhlIGJlbG93IHdoaWxlIGxvb3AgaW4gb3JkZXIgdG8g cGFyc2UgdGhlIHN1cHBvcnRlZCBhbmQgZW5hYmxlZAo+ID4+PnN0cmluZ3MuIEkgd2lsbCBwbGF5 IHdpdGggdGhlIGlndF9kZWJ1Z2ZzX3JlYWQgYW5kIHN0cnN0ciB0byBzZWUgaWYgSSBjYW4gZ2V0 IHJpZCBvZiB0aGlzIHdoaWxlCj4gPj4+bG9vcCBiZWxvdy4KPiA+Pj4KPiA+Pj4+Cj4gPj4+Pj4r Cj4gPj4+Pj4rCXdoaWxlIChnZXRsaW5lKCZsaW5lLCAmbGluZV9zaXplLCBkc2Nfc3VwcG9ydF9m cCkgPiAwKSB7Cj4gPj4+Pj4rCQljaGFyICpzdXBwb3J0LCAqZW5hYmxlZDsKPiA+Pj4+PisKPiA+ Pj4+PisJCWVuYWJsZWQgPSBzdHJzdHIobGluZSwgIkVuYWJsZWQ6ICIpOwo+ID4+Pj4+KwkJaWd0 X2Fzc2VydF9lcShzc2NhbmYoZW5hYmxlZCwgIkVuYWJsZWQ6ICVzIiwgZW5hYmxlZF9zdHIpLCAx KTsKPiA+Pj4+PisJCWlmIChzdHJjbXAoZW5hYmxlZF9zdHIsICJ5ZXMiKSA9PSAwKSB7Cj4gPj4+ Pj4rCQkJaWd0X2luZm8oIkRTQyBpcyBlbmFibGVkIG9uICVzXG4iLCB0ZXN0X2Nvbm5lY3Rvcl9u YW1lKTsKPiA+Pj4+PisJCQlzdXBwb3J0ZWQgPSB0cnVlOwo+ID4+Pj4+KwkJCWJyZWFrOwo+ID4+ Pj4+KwkJfSBlbHNlIHsKPiA+Pj4+PisJCQlnZXRsaW5lKCZsaW5lLCAmbGluZV9zaXplLCBkc2Nf c3VwcG9ydF9mcCk7Cj4gPj4+Pj4rCQkJc3VwcG9ydCA9IHN0cnN0cihsaW5lLCAiU3VwcG9ydGVk OiAiKTsKPiA+Pj4+PisJCWlndF9hc3NlcnRfZXEoc3NjYW5mKHN1cHBvcnQsICJTdXBwb3J0ZWQ6 ICVzIiwgc3VwcG9ydGVkX3N0ciksIDEpOwo+ID4+Pj4+KwkJaWYgKHN0cmNtcChzdXBwb3J0ZWRf c3RyLCAieWVzIikgPT0gMCkKPiA+Pj4+PisJCQlzdXBwb3J0ZWQgPSB0cnVlOwo+ID4+Pj4+KwkJ ZWxzZSBpZiAoc3RyY21wKHN1cHBvcnRlZF9zdHIsICJubyIpID09IDApCj4gPj4+Pj4rCQkJc3Vw cG9ydGVkID0gZmFsc2U7Cj4gPj4+Pj4rCQllbHNlCj4gPj4+Pj4rCQkJaWd0X2ZhaWxfb25fZih0 cnVlLCAiVW5rbm93biBEU0Mgc3VwcG9ydGVkIHN0YXR1cyAnJXMnXG4iLAo+ID4+Pj4+KwkJCQkg ICAgICBzdXBwb3J0ZWRfc3RyKTsKPiA+Pj4+PisJCWJyZWFrOwo+ID4+Pj4+KwkJfWh0dHBzOi8v amlyYTAxLmRldnRvb2xzLmludGVsLmNvbS9icm93c2UvR1VDLTMwNgo+ID4+Pj4+Kwl9Cj4gPj4+ Pj4rCj4gPj4+Pj4rCWZyZWUobGluZSk7Cj4gPj4+Pj4rCWZjbG9zZShkc2Nfc3VwcG9ydF9mcCk7 Cj4gPj4+Pj4rCj4gPj4+Pj4rCXJldHVybiBzdXBwb3J0ZWQ7Cj4gPj4+Pj4rfQo+ID4+Pj4+Kwo+ ID4+Cj4gPj4+Pj4rCj4gPj4+Pj4rc3RhdGljIGludAo+ID4+Pj4+K3NldF9tb2RlKHN0cnVjdCBj b25uZWN0b3IgKmMsIHN0cnVjdCBkc2NfY29uZmlnICp0ZXN0X2NvbmZpZywgYm9vbCBzZXRfbW9k ZSkKPiA+Pj4+Pit7Cj4gPj4+Pj4rCXVuc2lnbmVkIGludCBmYl9pZCA9IDA7Cj4gPj4+Pj4rCXN0 cnVjdCBpZ3RfZmIgZmJfaW5mbzsKPiA+Pj4+PisJaW50IHJldCA9IDA7Cj4gPj4+Pj4rCj4gPj4+ Pj4rCWlmICghc2V0X21vZGUpIHsKPiA+Pj4+PisJCXJldCA9IGRybU1vZGVTZXRDcnRjKGRybV9m ZCwgYy0+Y3J0YywgMCwgMCwgMCwKPiA+Pj4+PisJCQkJICAgICBOVUxMLCAwLCBOVUxMKTsKPiA+ Pj4+PisJCWlmIChyZXQpCj4gPj4+Pj4rCQkJaWd0X3dhcm4oIkZhaWxlZCB0byB1bnNldCBtb2Rl Iik7Cj4gPj4+Pj4rCQlyZXR1cm4gcmV0Owo+ID4+Pj4+Kwl9Cj4gPj4+Pj4rCj4gPj4+Pj4rCWZi X2lkID0gaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGRybV9mZCwgdGVzdF9jb25maWctPm1vZGVfd2lk dGgsCj4gPj4+Pj4rCQkJCSAgICAgIHRlc3RfY29uZmlnLT5tb2RlX2hlaWdodCwKPiA+Pj4+PisJ CQkJICAgICAgaWd0X2JwcF9kZXB0aF90b19kcm1fZm9ybWF0KHRlc3RfY29uZmlnLT5icHAsCj4g Pj4+Pj4rCQkJCQkJCQkgIHRlc3RfY29uZmlnLT5kZXB0aCksCj4gPj4+Pj4rCQkJCSAgICAgIHRp bGluZywgJmZiX2luZm8pOwo+ID4+Pj4+Kwo+ID4+Pj4+KwlpZ3RfaW5mbygiQ1JUQygldSk6WyVk XSIsIGMtPmNydGMsIDApOwo+ID4+Pj4+KwlrbXN0ZXN0X2R1bXBfbW9kZSgmYy0+bW9kZSk7Cj4g Pj4+Pj4rCWRybU1vZGVTZXRDcnRjKGRybV9mZCwgYy0+Y3J0YywgLTEsIDAsIDAsIE5VTEwsIDAs IE5VTEwpOwo+ID4+Pj4+KwlyZXQgPSBkcm1Nb2RlU2V0Q3J0Yyhkcm1fZmQsIGMtPmNydGMsIGZi X2lkLCAwLCAwLAo+ID4+Pj4+KwkJCSAgICAgJmMtPmlkLCAxLCAmYy0+bW9kZSk7Cj4gPj4+Pj4r CXNsZWVwKDUpOwo+ID4+Pj4KPiA+Pj4+V2h5IHRoZSBzbGVlcCBiZWZvcmUgY2hlY2tpbmcgdGhl IHJldHVybiBjb2RlPwo+ID4+Pgo+ID4+PlRoaXMgaXMgc28gdGhhdCBpdCBkaXNwbGF5cyB0aGUg cmVxdWVzdGVkIHBhdHRlcm4gZm9yIGZldyBzZWNzIGJlZm9yZSBjeWNsaW5nIHRvIHRoZSBuZXh0 Cj4gPj4+Y29ubmVjdG9yIHNvIHRoYXQgaXQgY2FuIGJlIHZhbGlkYXRlZCB2aXN1YWxseS4KPiA+ Pj5NYWtlcyBzZW5zZT8KPiA+Pgo+ID4+SG93IGRvZXMgaXQgZmFpbD8gU2hvdWxkIHlvdSB3YWl0 IGZvciB1c2VyIGlucHV0Pwo+ID4KPiA+QWN0dWFsbHkgdGhpcyB3aWxsIGZhaWwgaWYgZHJtTW9k ZVNldENydGMgZmFpbHMgc2F5IGluIGNhc2VzIHdoZXJlIERTQyBjb3VsZCBub3QgYmUgZW5hYmxl ZAo+ID5hbmQgdGhlbiBlbmNvZGVyIGNvbmZpZyB3aWxsIGZhaWwuCj4gPgo+ID4+Cj4gPj5NYXli ZSBhZGQgYSBjb21tZW50IGZvciB0aGF0LiBJcyB0aGlzIHRlc3QgYWx3YXlzIHZpc3VhbGx5IHZh bGlkYXRlZD8gSSBtZWFuCj4gPj5jYW4gd2Ugc2tpcCB0aGUgc2xlZXAgaW4gYW4gYXV0b21hdGVk IHJ1biBsaWtlIENJIGZvciBpbnN0YW5jZS4KPiA+Pgo+ID4KPiA+WWVzIEkgd2lsbCBhZGQgYSBj b21tZW50IGZvciB0aGlzLiBBbmQgeWVzIHRoZSBEU0Mgb3V0cHV0IHdpbGwgYWx3YXlzIG5lZWQg dmlzdWFsIHZhbGlkYXRpb24gaW4gdGVybXMgb2YgY29ycnVwdGlvbiBldGMuCj4gPkJ1dCBpdHMg YSBnb29kIGlkZWEgdG8gc2tpcCB0aGUgc2xlZXAgaW4gY2FzZSBvZiBDSS4gSXMgdGhlcmUgYSB3 YXkgdG8gY29uZGl0aW9uYWxsIGFkZCBzbGVlcCBvciBza2lwIHNsZWVwKCk/Cj4gCj4gSSBkb24n dCB0aGluayB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIHRoYXQgYWxyZWFkeSwgYSBjb21tYW5kLWxp bmUgcGFyYW1ldGVyCj4gbWF5YmU/Cj4gCj4gQW50b25pbwo+IAo+ID4KPiA+TWFuYXNpCj4gPj4+ Cj4gPj4+Pgo+ID4+Pj4+KwlpZiAocmV0IDwgMCkgewo+ID4+Pj4+KwkJaWd0X3dhcm4oIkZhaWxl ZCB0byBzZXQgbW9kZSAoJWR4JWRAJWRIeik6ICVzXG4iLAo+ID4+Pj4+KwkJCSB0ZXN0X2NvbmZp Zy0+bW9kZV93aWR0aCwgdGVzdF9jb25maWctPm1vZGVfaGVpZ2h0LAo+ID4+Pj4+KwkJCSBjLT5t b2RlLnZyZWZyZXNoLCBzdHJlcnJvcihlcnJubykpOwo+ID4+Pj4+KwkJaWd0X3JlbW92ZV9mYihk cm1fZmQsICZmYl9pbmZvKTsKPiA+Pj4+PisKPiA+Pj4+PisJfQo+ID4+Pj4+Kwo+ID4+Pj4+Kwly ZXR1cm4gcmV0Owo+ID4+Pj4+K30KPiA+Pj4+PisKPiA+Pj4+PisKPiA+Pj4+PisvKgo+ID4+Pj4+ KyAqIFJlLXByb2JlIGNvbm5lY3RvcnMgYW5kIGRvIGEgbW9kZXNldCB3aXRoIGFuZCB3aWhvdXQg RFNDCj4gPj4+Pj4rICoKPiA+Pj4+PisgKiBSZXR1cm5zOgo+ID4+Pj4+KyAqIDA6IE9uIFN1Y2Nl c3MKPiA+Pj4+PisgKiAtMTogT24gZmFpbHVyZQo+ID4+Pj4+KyAqLwo+ID4+Pj4+K3N0YXRpYyBp bnQgdXBkYXRlX2Rpc3BsYXkoc3RydWN0IGRzY19jb25maWcgKnRlc3RfY29uZmlnKQo+ID4+Pj4+ K3sKPiA+Pj4+PisJc3RydWN0IGNvbm5lY3RvciAqY29ubmVjdG9yczsKPiA+Pj4+PisJc3RydWN0 IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyBjb25maWc7Cj4gPj4+Pj4rCWludCBjbnQsIGNvbm5f Y250ID0gMCwgcmV0ID0gMCwgZWRwX2NudCA9IDAsIGRwX2NudCA9IDA7Cj4gPj4+Pj4rCXVuc2ln bmVkIGxvbmcgY3J0Y19pZHhfbWFzayA9IC0xVUw7Cj4gPj4+Pj4rCWNoYXIgY29ubl9idWZbMTI4 XSA9IHswfTsKPiA+Pj4+PisKPiA+Pj4+PisJcmVzb3VyY2VzID0gZHJtTW9kZUdldFJlc291cmNl cyhkcm1fZmQpOwo+ID4+Pj4+KwlpZiAoIXJlc291cmNlcykgewo+ID4+Pj4+KwkJaWd0X3dhcm4o ImRybU1vZGVHZXRSZXNvdXJjZXMgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKPiA+ Pj4+PisJCXJldHVybiAtMTsKPiA+Pj4+PisJfQo+ID4+Pj4+Kwo+ID4+Pj4+Kwljb25uZWN0b3Jz ID0gY2FsbG9jKHJlc291cmNlcy0+Y291bnRfY29ubmVjdG9ycywKPiA+Pj4+PisJCQkgICAgc2l6 ZW9mKHN0cnVjdCBjb25uZWN0b3IpKTsKPiA+Pj4+PisJaWYgKCFjb25uZWN0b3JzKQo+ID4+Pj4+ KwkJcmV0dXJuIC0xOwo+ID4+Pj4+Kwo+ID4+Pj4+KwkvKiBGaW5kIGFueSBjb25uZWN0ZWQgZGlz cGxheXMgKi8KPiA+Pj4+PisJZm9yIChjbnQgPSAwOyBjbnQgPCByZXNvdXJjZXMtPmNvdW50X2Nv bm5lY3RvcnM7IGNudCsrKSB7Cj4gPj4+Pj4rCQlzdHJ1Y3QgY29ubmVjdG9yICpjID0gJmNvbm5l Y3RvcnNbY250XTsKPiA+Pj4+PisJCWMtPmlkID0gcmVzb3VyY2VzLT5jb25uZWN0b3JzW2NudF07 Cj4gPj4+Pj4rCQlpZigha21zdGVzdF9nZXRfY29ubmVjdG9yX2NvbmZpZyhkcm1fZmQsIGMtPmlk LCBjcnRjX2lkeF9tYXNrLAo+ID4+Pj4+KwkJCQkJCSZjb25maWcpKSB7Cj4gPj4+Pj4rCQkJYy0+ bW9kZV92YWxpZCA9IDA7Cj4gPj4+Pj4rCQkJY29udGludWU7Cj4gPj4+Pj4rCQl9Cj4gPj4+Pj4r CQljLT5jb25uZWN0b3IgPSBjb25maWcuY29ubmVjdG9yOwo+ID4+Pj4+KwkJYy0+ZW5jb2RlciA9 IGNvbmZpZy5lbmNvZGVyOwo+ID4+Pj4+KwkJYy0+bW9kZSA9IGNvbmZpZy5kZWZhdWx0X21vZGU7 Cj4gPj4+Pj4rCQljLT5jcnRjID0gY29uZmlnLmNydGMtPmNydGNfaWQ7Cj4gPj4+Pj4rCQljLT5w aXBlID0gY29uZmlnLnBpcGU7Cj4gPj4+Pj4rCQljLT5tb2RlX3ZhbGlkID0gMTsKPiA+Pj4+PisK PiA+Pj4+PisJCWlmIChjLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NP Tk5FQ1RPUl9EaXNwbGF5UG9ydCB8fAo+ID4+Pj4+KwkJICAgIGMtPmNvbm5lY3Rvci0+Y29ubmVj dG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkgewo+ID4+Pj4+Kwo+ID4+Pj4+KwkJ CWlmIChjLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9l RFApCj4gPj4+Pj4rCQkJCWNvbm5fY250ID0gKysgZWRwX2NudDsKPiA+Pj4+PisJCQllbHNlCj4g Pj4+Pj4rCQkJCWNvbm5fY250ID0gKysgZHBfY250Owo+ID4+Pj4+KwkJCWlmIChjLT5jb25uZWN0 b3ItPmNvbm5lY3Rpb24gPT0gRFJNX01PREVfQ09OTkVDVEVEKSB7Cj4gPj4+Pj4rCQkJCXNwcmlu dGYoY29ubl9idWYsICIlcy0lZCIsCj4gPj4+Pj4rCQkJCQlrbXN0ZXN0X2Nvbm5lY3Rvcl90eXBl X3N0cihjLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlKSwKPiA+Pj4+PisJCQkJCWNvbm5fY250 KTsKPiA+Pj4+PisJCQkJdGVzdF9jb25maWctPmRzY19zdXBwb3J0ZWQgPQo+ID4+Pj4+KwkJCQkJ Z2V0X2RwX2RzY19zdXBwb3J0KGNvbm5fYnVmKTsKPiA+Pj4+PisJCQkJaWYgKCFzdHJjbXAodGVz dF9jb25maWctPnRlc3RfbmFtZSwKPiA+Pj4+PisJCQkJCSAgICAiZm9yY2VfZHNjX2VuYWJsZV9i YXNpYyIpKSB7Cj4gPj4+Pj4rCQkJCQlpZiAodGVzdF9jb25maWctPmRzY19zdXBwb3J0ZWQpIHsK PiA+Pj4+PisJCQkJCQlpZ3RfaW5mbyAoIkRTQyBpcyBzdXBwb3J0ZWQgb24gJXNcbiIsCj4gPj4+ Pj4rCQkJCQkJCSAgY29ubl9idWYpOwo+ID4+Pj4+KwkJCQkJCXRlc3RfY29uZmlnLT5tb2RlX3dp ZHRoID0gYy0+bW9kZS5oZGlzcGxheTsKPiA+Pj4+PisJCQkJCQl0ZXN0X2NvbmZpZy0+bW9kZV9o ZWlnaHQgPSBjLT5tb2RlLnZkaXNwbGF5Owo+ID4+Pj4+KwkJCQkJCXRlc3RfY29uZmlnLT5icHAg PSAzMjsKPiA+Pj4+PisJCQkJCQl0ZXN0X2NvbmZpZy0+ZGVwdGggPSAyNDsKPiA+Pj4+PisJCQkJ CQlzZXRfZHBfZHNjX2VuYWJsZSh0ZXN0X2NvbmZpZy0+ZHNjX2VuYWJsZSwKPiA+Pj4+PisJCQkJ CQkJICBjb25uX2J1Zik7Cj4gPj4+Pj4rCQkJCQkJcmV0ID0gc2V0X21vZGUoYywgdGVzdF9jb25m aWcsCj4gPj4+Pj4rCQkJCQkJCSAgICAgICB0cnVlKTsKPiA+Pj4+PisJCQkJCX0gZWxzZSB7Cj4g Pj4+Pj4rCQkJCQkJaWd0X2luZm8gKCJEU0MgaXMgbm90IHN1cHBvcnRlZCBvbiAlc1xuIiwKPiA+ Pj4+PisJCQkJCQkJICBjb25uX2J1Zik7Cj4gPj4+Pj4rCQkJCQl9Cj4gPj4+Pj4rCQkJCX0KPiA+ Pj4+PisJCQkJY3J0Y19pZHhfbWFzayAmPSB+KDEgPDwgYy0+cGlwZSk7Cj4gPj4+Pj4rCQkJfQo+ ID4+Pj4+KwkJfQo+ID4+Pj4+Kwl9Cj4gPj4+Pj4rCj4gPj4+Pj4rCWZyZWUoY29ubmVjdG9ycyk7 Cj4gPj4+Pj4rCWRybU1vZGVGcmVlUmVzb3VyY2VzKHJlc291cmNlcyk7Cj4gPj4+Pj4rCXJldHVy biByZXQ7Cj4gPj4+Pj4rfQo+ID4+Pj4+Kwo+ID4+Pj4+K3N0YXRpYyBpbnQgb3B0X2hhbmRsZXIo aW50IG9wdCwgaW50IG9wdF9pbmRleCwgdm9pZCAqb3B0X2R1bXApCj4gPj4+Pj4rewo+ID4+Pj4K PiA+Pj4+V2h5IG5vdCB3cmFwcGluZyBhbGwgdGhlIG9wdGlvbmFsIHByaW50cyBpbiBpZ3RfZGVi dWcgc28geW91IGNvdWxkIHJlLXVzZQo+ID4+Pj50aGUgLS1kZWJ1ZyBvcHRpb24/Cj4gPj4+Cj4g Pj4+WW91IG1lYW4gaW5zdGVhZCBvZiBpZ3RfaW5mbyBhbmQgYWxsIGNvbm5lY3RvciBkdW1wIHBy aW50cyBoYXZlIHRoZW0gaW4gaWd0X2RlYnVnKCkgPwo+ID4+Cj4gPj5Tb21ldGhpbmcgbGlrZSB0 aGF0IG9yIHJldHVybmluZyBhIHN0cmluZyBmcm9tIHRoZSBkdW1wIGZ1bmN0aW9ucyBhbmQgcGlu dAo+ID4+aXQgaW50byBhbiBpZ3RfZGVidWcoKSBjYWxsLgo+ID4+Cj4gPj4+Cj4gPj4+Pgo+ID4+ Pj4+Kwlib29sICpkdW1wID0gb3B0X2R1bXA7Cj4gPj4+Pj4rCj4gPj4+Pj4rCXN3aXRjaCAob3B0 KSB7Cj4gPj4+Pj4rCWNhc2UgJ2knOgo+ID4+Pj4+KwkJKmR1bXAgPSB0cnVlOwo+ID4+Pj4+KwkJ YnJlYWs7Cj4gPj4+Pj4rCWRlZmF1bHQ6Cj4gPj4+Pj4rCQlpZ3RfYXNzZXJ0KDApOwo+ID4+Pj4+ Kwl9Cj4gPj4+Pj4rCj4gPj4+Pj4rCXJldHVybiAwOwo+ID4+Pj4+K30KPiA+Pj4+PisKPiA+Pj4+ PitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ID4+Pj4+K3sKPiA+Pj4+PisJY29u c3QgY2hhciAqaGVscF9zdHIgPQo+ID4+Pj4+KwkJIiAgLS1pbmZvXHRcdER1bXAgSW5mb3JtYXRp b24gYWJvdXQgY29ubmVjdG9ycy4gKHN0aWxsIG5lZWRzIERSTSBhY2Nlc3MpXG4iOwo+ID4+Pj4+ KwlzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsKPiA+Pj4+PisJCXsiaW5m byIsIDAsIDAsICdpJ30sCj4gPj4+Pj4rCQl7MCwgMCwgMCwgMH0KPiA+Pj4+PisJfTsKPiA+Pj4+ PisJaW50IHJldCA9IDA7Cj4gPj4+Pj4rCXN0cnVjdCBkc2NfY29uZmlnIHRlc3RfY29uZmlnOwo+ ID4+Pj4+Kwlib29sIG9wdF9kdW1wID0gZmFsc2U7Cj4gPj4+Pj4rCWlndF9zdWJ0ZXN0X2luaXRf cGFyc2Vfb3B0cygmYXJnYywgYXJndiwgIiIsIGxvbmdfb3B0aW9ucywgaGVscF9zdHIsCj4gPj4+ Pj4rCQkJCSAgICBvcHRfaGFuZGxlciwgJm9wdF9kdW1wKTsKPiA+Pj4+PisKPiA+Pj4+PisJaWd0 X3NraXBfb25fc2ltdWxhdGlvbigpOwo+ID4+Pj4+Kwo+ID4+Pj4+KwlpZ3RfZml4dHVyZSB7Cj4g Pj4+Pj4rCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4gPj4+Pj4rCQlkcm1fZmQg PSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0FOWSk7Cj4gPj4+Pj4rCQlpZiAob3B0X2R1bXApCj4g Pj4+Pj4rCQkJZHVtcF9pbmZvKCk7Cj4gPj4+Pj4rCX0KPiA+Pj4+PisKPiA+Pj4+PisJaWd0X3N1 YnRlc3QoImZvcmNlX2RzY19lbmFibGVfYmFzaWMiKSB7Cj4gPj4+Pj4rCQlzdHJjcHkodGVzdF9j b25maWcudGVzdF9uYW1lLCJmb3JjZV9kc2NfZW5hYmxlX2Jhc2ljIik7Cj4gPj4+Pj4rCQlyZXQg PSB1cGRhdGVfZGlzcGxheSgmdGVzdF9jb25maWcpOwo+ID4+Pj4KPiA+Pj4+J3Rlc3RfY29uZmln JyBzZWVtcyB0byBiZSBhbiBvdXRwdXQgcGFyYW1ldGVyIGJ1dCBpdCBpcyBub3QgdXNlZCBpbiB0 aGUKPiA+Pj4+dGVzdC4KPiA+Pj4KPiA+Pj50ZXN0X2NvbmZpZyBpcyB1c2VkIGluIHRoZSB1cGRh dGVfZGlzcGxheSgpCj4gPj4+Cj4gPj4+Pgo+ID4+Pj4+KwkJaWd0X2Fzc2VydF9lcShyZXQsIDAp Owo+ID4+Pj4+Kwl9Cj4gPj4+Pj4rCj4gPj4+Pj4rCWNsb3NlKGRybV9mZCk7Cj4gPj4+Pj4rCj4g Pj4+Pj4rCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKPiA+Pj4+Cj4gPj4+PidyZXQnIGlzIGFscmVh ZHkgY2hlY2tlZCBpbiB0aGUgc3VidGVzdCBhbHNvLCB0aGlzIHdvdWxkIGZhaWwgaWYgeW91IGRv bid0Cj4gPj4+PnJ1biB0aGUgc3VidGVzdC4KPiA+Pj4KPiA+Pj5JZiBJIGRvbnQgcnVuIHRoZSBz dWJ0ZXN0LCBpdCB3aWxsIHVzZSB0aGUgaW5pdGlhbGl6ZWQgdmFsdWUgb2YgcmV0IHdoaWNoIGlz IDAuCj4gPj4+SXQgd2lsbCBvbmx5IGZhaWwgaWYgdXBkYXRlX2Rpc3BsYXkgcmV0dXJucyBhIG5l Z2F0aXZlIHZhbHVlLgo+ID4+Cj4gPj5Tb3JyeSwgeW91IGFyZSByaWdodCBJIG1pc3JlYWQgdGhh dC4gQnV0LCBpdCB3aWxsIG5vdCBiZSB0aGlzIGFzc2VydCB0byBmaXJlCj4gPj5pZiByZXQgIT0g MCBidXQgdGhlIG9uZSBpbiB0aGUgc3VidGVzdC4gTXkgcG9pbnQgd2FzIHRoYXQgdGhpcyBzdGF0 ZW1lbnQKPiA+PnNlZW1zIGEgYml0IHJlZHVuZGFudCBhbmQgY291bGQgYmUgZWxpbWluYXRlZC4K PiA+Pgo+ID4+QW50b25pbwo+ID4+Cj4gPj4+Cj4gPj4+TWFuYXNpCj4gPj4+Cj4gPj4+Pgo+ID4+ Pj5Db21tZW50cyBtb3N0bHkgZnJvbSBhIHJhcGlkIHJlYWQuIFlvdSB3aWxsIHN0aWxsIG5lZWQg YSBwcm9wZXIgcmV2aWV3ZXIgZm9yCj4gPj4+PnRoZSBLTVMgc3R1ZmYuCj4gPj4+Pgo+ID4+Pj5U aGFua3MsCj4gPj4+PkFudG9uaW8KPiA+Pj4+Cj4gPj4+Pj4rCj4gPj4+Pj4rCWlndF9pbmZvKCJE U0MgdGVzdGluZyBkb25lXG4iKTsKPiA+Pj4+PisJaWd0X2V4aXQoKTsKPiA+Pj4+PisKPiA+Pj4+ Pit9Cj4gPj4+Pj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==