From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id DCEBC89D52 for ; Mon, 19 Nov 2018 11:45:41 +0000 (UTC) References: <1540473975-32669-1-git-send-email-juhapekka.heikkila@gmail.com> <1540558693-28252-1-git-send-email-juhapekka.heikkila@gmail.com> From: Juha-Pekka Heikkila Message-ID: <67787aa3-737b-c249-d507-4fc5318a6e7d@gmail.com> Date: Mon, 19 Nov 2018 13:45:34 +0200 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: juhapekka.heikkila@gmail.com 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: "Nautiyal, Ankit K" , "igt-dev@lists.freedesktop.org" List-ID: SGkgQW5raXQsIHRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzLiBJJ2xsIHNvb24gcG9zdCBmaXhlZCBw YXRjaC4gSSBoYWQgCm9yaWdpbmFsbHkgZHJvcHBlZCBpZGVhIGZvciByZWN0YW5ndWxhciB0ZXN0 IGZpZ3VyZSBhcyBJIGRpZG4ndCBrbm93IGlmIAppdHMgdXNlZnVsLCBJIG5vdyBmb2xsb3dpbmcg eW91ciBjb21tZW50cyBmaXhlZCBpdCB0byB3b3JrIGFuZCB0YWtlIGludG8gCmFjY291bnQgc2Ny ZWVuIHNwYWNlLgoKL0p1aGEtUGVra2EKCk9uIDE2LjExLjIwMTggMTQ6MjgsIE5hdXRpeWFsLCBB bmtpdCBLIHdyb3RlOgo+IEhpIEp1aGEtUGVra2EsCj4gCj4gVGhlIG5ldyB0ZXN0IGFkZGVkIGRv IGNvdmVyIHRoZSBnYXAgb2YgaGF2aW5nIG11bHRpcGxlLXBsYW5lIHJvdGF0aW9uIAo+IHRvZ2V0 aGVyLCBhbG9uZyB3aXRoIHRoZSB0b3AgYW5kIGJvdHRvbSBjcm9wcGluZyBzY2VuYXJpb3MuCj4g Cj4gVGhlIHRlc3Qgd29yayB3ZWxsIGZvciBzcXVhcmUgZmlndXJlcyBpLmUuIHRoZSB3aWR0aCA9 IGhlaWdodCA9NTEyLCBidXQgCj4gZm9yIHJlY3Rhbmd1bGFyIGZpZ3VyZSwgdGhlIHRlc3QgbmVl ZHMgc29tZSBmaXggaW4gZ2V0X211bHRpcGxhbmVfY3JjKCksIAo+IGFzIHRoaXMgZnVuY3Rpb24g ZG9lcyBub3QgYXNzdW1lIHRoYXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIHNhbWUuCj4gCj4g UGxlYXNlIGZpbmQgc3VnZ2VzdGlvbnMgaW5saW5lLgo+IAo+IE90aGVyIHRoYW4gdGhhdCwgSSBj b3VsZCBvbmx5IG5pdHBpY2sgc29tZSBvZiB0aGUgc3R5bGluZyBpc3N1ZXMgZ2l2ZW4gCj4gaW5s aW5lLgo+IAo+IE9uIDEwLzI2LzIwMTggNjoyOCBQTSwgSnVoYS1QZWtrYSBIZWlra2lsYSB3cm90 ZToKPj4gQWRkIHRocmVlIG5ldyB0ZXN0cyB3aGljaCB0cnkgcHJpbWFyeSBhbmQgc3ByaXRlIHBs YW5lcwo+PiBuZXh0IHRvIGVhY2ggb3RoZXIgd2l0aCBkaWZmZXJlbnQgcGxhbmUgZm9ybWF0cywg cm90YXRpb25zCj4+IGFuZCB0aWxpbmcgbW9kZXMuCj4+Cj4+IG11bHRpcGxhbmUtcm90YXRpb24g c3VidGVzdCBydW4gdGVzdCB0aHJvdWdoIHdpdGggYm90aCBwbGFuZXMKPj4gZnVsbHkgdmlzaWJs ZS4KPj4KPj4gbXVsdGlwbGFuZS1yb3RhdGlvbi1jcm9wcGluZy10b3Agd2lsbCBjcm9wIHByaW1h cnkgcGxhbmUgdG8KPj4gbGVmdC90b3AgY29ybmVyIGFuZCBzcHJpdGUgcGxhbmUgdG8gcmlnaHQv dG9wIGNvcm5lciB3aGlsZSBydW5uaW5nCj4+IHJvdGF0aW9uIHRlc3RzLgo+Pgo+PiBtdWx0aXBs YW5lLXJvdGF0aW9uLWNyb3BwaW5nLWJvdHRvbSB3aWxsIGNyb3AgcHJpbWFyeSBwbGFuZSB0bwo+ PiBsZWZ0L2JvdHRvbSBjb3JuZXIgYW5kIHNwcml0ZSBwbGFuZSB0byByaWdodC9ib3R0b20gY29y bmVyIHdoaWxlCj4+IHJ1bm5pbmcgcm90YXRpb24gdGVzdHMuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6 IEp1aGEtUGVra2EgSGVpa2tpbGE8anVoYXBla2thLmhlaWtraWxhQGdtYWlsLmNvbT4KPj4gLS0t Cj4+ICAgdGVzdHMva21zX3JvdGF0aW9uX2NyYy5jIHwgMjQ5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgMSBmaWxlIGNoYW5nZWQsIDI0OSBpbnNl cnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMgYi90 ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMKPj4gaW5kZXggMzY2YzI1NC4uZGY5YWM5MSAxMDA2NDQK Pj4gLS0tIGEvdGVzdHMva21zX3JvdGF0aW9uX2NyYy5jCj4+ICsrKyBiL3Rlc3RzL2ttc19yb3Rh dGlvbl9jcmMuYwo+PiBAQCAtMjYsNiArMjYsMjUgQEAKPj4gICAjaW5jbHVkZSA8bWF0aC5oPgo+ PiAgIAo+PiAgICNkZWZpbmUgTUFYX0ZFTkNFUyAzMgo+PiArI2RlZmluZSBNQVhNVUxUSVBMQU5F U0FNT1VOVCAyCj4+ICsKPj4gK3N0cnVjdCBwX3N0cnVjdCB7Cj4+ICsJaWd0X3BsYW5lX3QgKnBs YW5lOwo+PiArCXN0cnVjdCBpZ3RfZmIgZmI7Cj4+ICt9Owo+PiArCj4+ICtlbnVtIHBfcG9pbnRv cmlnbyB7Cj4+ICsJcF90b3AgPSAxIDw8IDAsCj4+ICsJcF9ib3R0b20gPSAxIDw8IDEsCj4+ICsJ cF9sZWZ0ID0gMSA8PCAyLAo+PiArCXBfcmlnaHQgPSAxIDw8IDMKPj4gK307Cj4+ICsKPj4gK3N0 cnVjdCBwX3BvaW50ewo+PiArCWVudW0gcF9wb2ludG9yaWdvIG9yaWdvOwo+PiArCWludDMyX3Qg eDsKPj4gKwlpbnQzMl90IHk7Cj4+ICt9Owo+PiAgIAo+PiAgIHR5cGVkZWYgc3RydWN0IHsKPj4g ICAJaW50IGdmeF9mZDsKPj4gQEAgLTQzLDYgKzYyLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+PiAg IAl1aW50MzJfdCBvdmVycmlkZV9mbXQ7Cj4+ICAgCXVpbnQ2NF90IG92ZXJyaWRlX3RpbGluZzsK Pj4gICAJaW50IGRldmlkOwo+PiArCj4+ICsJc3RydWN0IHBfc3RydWN0ICptdWx0aXBsYW5lb2xk dmlldzsKPj4gKwlzdHJ1Y3QgcF9wb2ludCBwbGFuZXBvc1tNQVhNVUxUSVBMQU5FU0FNT1VOVF07 Cj4+ICAgfSBkYXRhX3Q7Cj4+ICAgCj4+ICAgdHlwZWRlZiBzdHJ1Y3Qgewo+PiBAQCAtMzk1LDYg KzQxNywxOTcgQEAgc3RhdGljIHZvaWQgdGVzdF9wbGFuZV9yb3RhdGlvbihkYXRhX3QgKmRhdGEs IGludCBwbGFuZV90eXBlLCBib29sIHRlc3RfYmFkX2Zvcm0KPj4gICAJfQo+PiAgIH0KPj4gICAK Pj4gK3R5cGVkZWYgc3RydWN0IHsKPj4gKwlpbnQzMl90IHgxLCB5MTsKPj4gKwl1aW50NjRfdCB3 aWR0aCwgaGVpZ2h0LCB0aWxpbmcsIHBsYW5ldHlwZSwgZm9ybWF0Owo+PiArCWlndF9yb3RhdGlv bl90IHJvdGF0aW9uX3N3LCByb3RhdGlvbl9odzsKPj4gK30gcGxhbmVpbmZvczsKPj4gKwo+PiAr c3RhdGljIHZvaWQgZ2V0X211bHRpcGxhbmVfY3JjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90 ICpvdXRwdXQsCj4+ICsJCQkgICAgICAgaWd0X2NyY190ICpjcmNfb3V0cHV0LCBwbGFuZWluZm9z KiBwbGFuZWluZm8sCj4+ICsJCQkgICAgICAgaW50IG51bXBsYW5lcykKPj4gK3sKPj4gKwl1aW50 MzJfdCB3LCBoOwo+PiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsK Pj4gKwlzdHJ1Y3QgcF9zdHJ1Y3QgKnBsYW5lcywgKm9sZHBsYW5lczsKPj4gKwlpbnQgYywgcmV0 Owo+PiArCj4+ICsJb2xkcGxhbmVzID0gZGF0YS0+bXVsdGlwbGFuZW9sZHZpZXc7Cj4+ICsJcGxh bmVzID0gbWFsbG9jKHNpemVvZigqcGxhbmVzKSpudW1wbGFuZXMpOwo+PiArCj4+ICsJZm9yIChj ID0gMDsgYyA8IG51bXBsYW5lczsgYysrKSB7Cj4+ICsJCXBsYW5lc1tjXS5wbGFuZSA9IGlndF9v dXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LAo+PiArCQkJCQkJCSAgICBwbGFuZWluZm9bY10u cGxhbmV0eXBlKTsKPj4gKwo+PiArCQl3ID0gcGxhbmVpbmZvW2NdLndpZHRoOwo+PiArCQloID0g cGxhbmVpbmZvW2NdLmhlaWdodDsKPj4gKwo+PiArCQlpZiAoKHBsYW5laW5mb1tjXS5yb3RhdGlv bl9od3xwbGFuZWluZm9bY10ucm90YXRpb25fc3cpCj4+ICsJCSAgICAmKElHVF9ST1RBVElPTl85 MHxJR1RfUk9UQVRJT05fMjcwKSkKPj4gKwkJCWlndF9zd2FwKHcsIGgpOwo+PiArCj4gSW4gY2Fz ZSBvZiBhbiBhY3R1YWwgaGFyZHdhcmUgcm90YXRpb24gOTAgYW5kIDI3MCwgdGhlIHdpZHRoIGFu ZCBoZWlnaHQgCj4gc2hvdWxkIG5vdCBiZSBzd2FwcGVkLgo+IFRoZSAnaWYgY29uZGl0aW9uJyBz aG91bGQgaGF2ZSBvbmx5IGNoZWNrIGZvciByb3RhdGlvbl9zdywgYW5kIG5vdCBmb3IgCj4gcm90 YXRpb25faHcuCj4gCj4+ICsJCWlndF9wbGFuZV9zZXRfc2l6ZShwbGFuZXNbY10ucGxhbmUsIHcs IGgpOwo+IEZvciA5MCBhbmQgMjcwIGRlZ3JlZSByb3RhdGlvbiAoaS5lLiByb3RhdGlvbl9odykg LCBpZ3RfcGxhbmVfc2V0X3NpemUoKSAKPiBzaG91bGQgaGF2ZSBoZWlnaHQgaW4gcGxhY2Ugb2Yg d2lkdGggYW5kIHZpY2UtdmVyc2EuCj4gCj4gaWYgKHJvdGF0aW9uX2h3ICYgKElHVF9ST1RBVElP Tl85MCB8IElHVF9ST1RBVElPTl8yNzApCj4gIMKgwqDCoCDCoMKgwqAgaWd0X3BsYW5lX3NldF9z aXplKHBsYW5lW2NdLnBsYW5lLCBoLCB3KTsKPiAKPiBGdXJ0aGVyIG1vcmUgdGhpcyBmdW5jdGlv biBpZ3RfcGxhbmVfc2V0X3NpemUgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciAKPiBpZ3RfcGxhbmVf c2V0X2ZiKCksIGJlY2F1c2UgaWd0X3BsYW5lX3NldF9mYiBzZXRzIHRoZSBwbGFuZSBzaXplIHdp dGggCj4gZmIud2lkdGggYW5kIGZiLmhlaWdodCwgdGhlcmVieSBvdmVyd3JpdGluZyBvdXIgdmFs dWVzLgo+IAo+PiArCj4+ICsJCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLCBwbGFu ZWluZm9bY10uZm9ybWF0LAo+PiArCQkJICAgICAgcGxhbmVpbmZvW2NdLnRpbGluZywgJnBsYW5l c1tjXS5mYik7Cj4+ICsKPj4gKwkJcGFpbnRfc3F1YXJlcyhkYXRhLCBwbGFuZWluZm9bY10ucm90 YXRpb25fc3csICZwbGFuZXNbY10uZmIsIDEuMGYpOwo+PiArCQlpZ3RfcGxhbmVfc2V0X2ZiKHBs YW5lc1tjXS5wbGFuZSwgJnBsYW5lc1tjXS5mYik7Cj4+ICsJCWlndF9wbGFuZV9zZXRfcG9zaXRp b24ocGxhbmVzW2NdLnBsYW5lLCBwbGFuZWluZm9bY10ueDEsIHBsYW5laW5mb1tjXS55MSk7Cj4+ ICsJCWlndF9wbGFuZV9zZXRfcm90YXRpb24ocGxhbmVzW2NdLnBsYW5lLCBwbGFuZWluZm9bY10u cm90YXRpb25faHcpOwo+PiArCX0KPj4gKwo+PiArCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21t aXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+PiArCWlndF9hc3NlcnRfZXEocmV0LCAwKTsK Pj4gKwo+PiArCWlndF9waXBlX2NyY19nZXRfY3VycmVudChkYXRhLT5nZnhfZmQsIGRhdGEtPnBp cGVfY3JjLCBjcmNfb3V0cHV0KTsKPj4gKwo+PiArCWZvciAoYyA9IDA7IGMgPCBudW1wbGFuZXMg JiYgb2xkcGxhbmVzOyBjKyspCj4+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmb2xk cGxhbmVzW2NdLmZiKTsKPj4gKwo+PiArCWZyZWUob2xkcGxhbmVzKTsKPj4gKwlkYXRhLT5tdWx0 aXBsYW5lb2xkdmlldyA9ICh2b2lkKilwbGFuZXM7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lk IHBvaW50bG9jYXRpb24oZGF0YV90ICpkYXRhLCBwbGFuZWluZm9zKiBwLCBkcm1Nb2RlTW9kZUlu Zm8gKm1vZGUsCj4+ICsJCQkgIGludCBjKQo+PiArewo+PiArCXBbY10ueDEgPSBkYXRhLT5wbGFu ZXBvc1tjXS54Cj4+ICsJCQkrKChkYXRhLT5wbGFuZXBvc1tjXS5vcmlnbyZwX3JpZ2h0KT9tb2Rl LT5oZGlzcGxheTowKTsKPj4gKwlwW2NdLnkxID0gZGF0YS0+cGxhbmVwb3NbY10ueQo+PiArCQkJ KygoZGF0YS0+cGxhbmVwb3NbY10ub3JpZ28mcF9ib3R0b20pP21vZGUtPnZkaXNwbGF5OjApOwo+ PiArfQo+IAo+IFNwYWNlIGFyb3VuZCAnJicgYW5kICc/Jwo+IAo+PiArCj4+ICsvKgo+PiArICog SGVyZSBpcyBwaXBlIHBhcmFtZXRlciB3aGljaCBpcyBub3cgdXNlZCBvbmx5IGZvciBmaXJzdCBw aXBlLgo+PiArICogSXQgaXMgbGVmdCBoZXJlIGlmIHRoaXMgdGVzdCBldmVyIHdhcyB3YW50ZWQg dG8gYmUgcnVuIG9uCj4+ICsgKiBkaWZmZXJlbnQgcGlwZXMuCj4+ICsgKi8KPj4gK3N0YXRpYyB2 b2lkIHRlc3RfbXVsdGlfcGxhbmVfcm90YXRpb24oZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlw ZSkKPj4gK3sKPj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4+ ICsJaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4+ICsJaWd0X2NyY190IHJldGNyY19zdywgcmV0Y3Jj X2h3Owo+PiArCXBsYW5laW5mb3MgcFsyXTsKPj4gKwlpbnQgYzsKPj4gKwlzdHJ1Y3QgcF9zdHJ1 Y3QgKm9sZHBsYW5lczsKPj4gKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cj4+ICsKPj4gKwljb25z dCBzdGF0aWMgc3RydWN0IHsKPj4gKwkJaWd0X3JvdGF0aW9uX3QJcm90YXRpb247Cj4+ICsJCXVp bnQ2NF90CXdpZHRoOwo+PiArCQl1aW50NjRfdAloZWlnaHQ7Cj4+ICsJCXVpbnQ2NF90CXRpbGlu ZzsKPj4gKwl9IHBsYW5lY29uZmlnc1tdID0gewo+PiArCXtJR1RfUk9UQVRJT05fMCwgNTEyLCA1 MTIsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUgfSwKPiAKPiBJbiBteSBodW1ibGUgb3Bpbmlv biwgd2UgY2FuIHVzZSBhIHJlY3RhbmdsZSBjb250ZW50LCBpbnN0ZWFkIG9mIGEgCj4gc3F1YXJl IGNvbnRlbnQuIFRoZSBmdW5jdGlvbiBnZXRfbXVsaXBsYW5lX2NyYyBhbHJlYWR5IHRha2VzIGNh cmUgb2YgCj4gZGlmZmVyZW50IHdpZHRoIGFuZCBoZWlnaHQuCj4gT25seSBjaGFuZ2Ugd2lsbCBi ZSByZXF1aXJlZCBpbiBmdW5jdGlvbiBwb2ludF9sb2NhdGlvbi4KPiAKPj4gKwl7SUdUX1JPVEFU SU9OXzAsIDUxMiwgNTEyLCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCB9LAo+PiArCXtJ R1RfUk9UQVRJT05fMCwgNTEyLCA1MTIsIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEIH0s Cj4+ICsJe0lHVF9ST1RBVElPTl8wLCA1MTIsIDUxMiwgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVEIH0sCj4+ICsJe0lHVF9ST1RBVElPTl85MCwgNTEyLCA1MTIsIExPQ0FMX0k5MTVfRk9S TUFUX01PRF9ZX1RJTEVEIH0sCj4+ICsJe0lHVF9ST1RBVElPTl85MCwgNTEyLCA1MTIsIExPQ0FM X0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCB9LAo+PiArCXtJR1RfUk9UQVRJT05fMTgwLCA1MTIs IDUxMiwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSB9LAo+PiArCXtJR1RfUk9UQVRJT05fMTgw LCA1MTIsIDUxMiwgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQgfSwKPj4gKwl7SUdUX1JP VEFUSU9OXzE4MCwgNTEyLCA1MTIsIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEIH0sCj4+ ICsJe0lHVF9ST1RBVElPTl8xODAsIDUxMiwgNTEyLCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZf VElMRUQgfSwKPj4gKwl7SUdUX1JPVEFUSU9OXzI3MCwgNTEyLCA1MTIsIExPQ0FMX0k5MTVfRk9S TUFUX01PRF9ZX1RJTEVEIH0sCj4+ICsJe0lHVF9ST1RBVElPTl8yNzAsIDUxMiwgNTEyLCBMT0NB TF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQgfSwKPj4gKwl9Owo+PiArCj4+ICsJLyoKPj4gKwkq IFRoZXNlIGFyZSB0aG9zZSBtb2RlcyB3aGljaCBhcmUgdGVzdGVkLiBGb3IgdGVzdGluZyBmZWVs IGludGVyZXN0aW5nCj4+ICsJKiBjYXNlIHdpdGggdGlsaW5nIGFyZSAyIGJ5dGUgd2lkZSBhbmQg NCBieXRlIHdpZGUuCj4+ICsJKgo+PiArCSogVE9ETzoKPj4gKwkqIEJ1aWx0IHN1cHBvcnQgZm9y IE5WMTIgaGVyZS4KPj4gKwkqLwo+PiArCWNvbnN0IHN0YXRpYyB1aW50MzJfdCAgZm9ybWF0bGlz dFtdID0ge0RSTV9GT1JNQVRfUkdCNTY1LAo+PiArCQkJCQkgICAgICAgRFJNX0ZPUk1BVF9YUkdC ODg4OH07Cj4+ICsKPj4gKwo+PiArCWZvcl9lYWNoX3ZhbGlkX291dHB1dF9vbl9waXBlKGRpc3Bs YXksIHBpcGUsIG91dHB1dCkgewo+PiArCQlpbnQgaSwgaiwgaywgbDsKPj4gKwkJaWd0X291dHB1 dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+PiArCj4+ICsJCW1vZGUgPSBpZ3Rfb3V0cHV0X2dl dF9tb2RlKG91dHB1dCk7Cj4+ICsKPj4gKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoZGlz cGxheSk7Cj4+ICsJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7 Cj4+ICsKPj4gKwkJZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmdmeF9m ZCwgcGlwZSwKPj4gKwkJCQkJCSAgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOwo+PiArCQlp Z3RfcGlwZV9jcmNfc3RhcnQoZGF0YS0+cGlwZV9jcmMpOwo+PiArCj4+ICsJCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKHBsYW5lY29uZmlncyk7IGkrKykgewo+PiArCQkJcFswXS5wbGFuZXR5 cGUgPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOwo+PiArCQkJcFswXS53aWR0aCA9IHBsYW5lY29u Zmlnc1tpXS53aWR0aDsKPj4gKwkJCXBbMF0uaGVpZ2h0ID0gcGxhbmVjb25maWdzW2ldLmhlaWdo dDsKPj4gKwkJCXBbMF0udGlsaW5nID0gcGxhbmVjb25maWdzW2ldLnRpbGluZzsKPj4gKwkJCXBv aW50bG9jYXRpb24oZGF0YSwgKHBsYW5laW5mb3MqKSZwLCBtb2RlLCAwKTsKPj4gKwo+PiArCQkJ Zm9yIChrID0gMDsgayA8IEFSUkFZX1NJWkUoZm9ybWF0bGlzdCk7IGsrKykgewo+PiArCQkJCXBb MF0uZm9ybWF0ID0gZm9ybWF0bGlzdFtrXTsKPj4gKwo+PiArCQkJCWZvciAoaiA9IDA7IGogPCBB UlJBWV9TSVpFKHBsYW5lY29uZmlncyk7IGorKykgewo+PiArCQkJCQlwWzFdLnBsYW5ldHlwZSA9 IERSTV9QTEFORV9UWVBFX09WRVJMQVk7Cj4+ICsJCQkJCXBbMV0ud2lkdGggPSBwbGFuZWNvbmZp Z3Nbal0ud2lkdGg7Cj4+ICsJCQkJCXBbMV0uaGVpZ2h0ID0gcGxhbmVjb25maWdzW2pdLmhlaWdo dDsKPj4gKwkJCQkJcFsxXS50aWxpbmcgPSBwbGFuZWNvbmZpZ3Nbal0udGlsaW5nOwo+PiArCQkJ CQlwb2ludGxvY2F0aW9uKGRhdGEsIChwbGFuZWluZm9zKikmcCwKPj4gKwkJCQkJCSAgICAgIG1v ZGUsIDEpOwo+PiArCj4+ICsJCQkJCWZvciAobCA9IDA7IGwgPCBBUlJBWV9TSVpFKGZvcm1hdGxp c3QpOyBsKyspIHsKPj4gKwkJCQkJCXBbMV0uZm9ybWF0ID0gZm9ybWF0bGlzdFtsXTsKPj4gKwo+ PiArCQkJCQkJLyoKPj4gKwkJCQkJCSAqIFJHQjU2NSA5MC8yNzAgZGVncmVlcyByb3RhdGlvbiBp cyBzdXBwb3J0ZWQKPj4gKwkJCQkJCSAqIGZyb20gZ2VuMTEgb253YXJkcy4KPj4gKwkJCQkJCSAq Lwo+PiArCQkJCQkJaWYgKHBbMF0uZm9ybWF0ID09IERSTV9GT1JNQVRfUkdCNTY1ICYmCj4+ICsJ CQkJCQkgICAgIChwbGFuZWNvbmZpZ3NbaV0ucm90YXRpb24mKElHVF9ST1RBVElPTl85MHxJR1Rf Uk9UQVRJT05fMjcwKSkKPj4gKwkJCQkJCSAgICAgJiYgaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA8 IDExKQo+PiArCQkJCQkJCWNvbnRpbnVlOwo+PiArCj4+ICsJCQkJCQlpZiAocFsxXS5mb3JtYXQg PT0gRFJNX0ZPUk1BVF9SR0I1NjUgJiYKPj4gKwkJCQkJCSAgICAgKHBsYW5lY29uZmlnc1tqXS5y b3RhdGlvbiYoSUdUX1JPVEFUSU9OXzkwfElHVF9ST1RBVElPTl8yNzApKQo+IFNwYWNlIGFyb3Vu ZCAnJicgYW5kICd8Jwo+PiArCQkJCQkJICAgICAmJiBpbnRlbF9nZW4oZGF0YS0+ZGV2aWQpIDwg MTEpCj4+ICsJCQkJCQkJY29udGludWU7Cj4+ICsKPj4gKwo+PiArCQkJCQkJcFswXS5yb3RhdGlv bl9zdyA9IHBsYW5lY29uZmlnc1tpXS5yb3RhdGlvbjsKPj4gKwkJCQkJCXBbMF0ucm90YXRpb25f aHcgPSBJR1RfUk9UQVRJT05fMDsKPj4gKwkJCQkJCXBbMV0ucm90YXRpb25fc3cgPSBwbGFuZWNv bmZpZ3Nbal0ucm90YXRpb247Cj4+ICsJCQkJCQlwWzFdLnJvdGF0aW9uX2h3ID0gSUdUX1JPVEFU SU9OXzA7Cj4+ICsJCQkJCQlnZXRfbXVsdGlwbGFuZV9jcmMoZGF0YSwgb3V0cHV0LCAmcmV0Y3Jj X3N3LAo+PiArCQkJCQkJCQkgICAocGxhbmVpbmZvcyopJnAsIE1BWE1VTFRJUExBTkVTQU1PVU5U KTsKPj4gKwo+PiArCQkJCQkJaWd0X3N3YXAocFswXS5yb3RhdGlvbl9zdywgcFswXS5yb3RhdGlv bl9odyk7Cj4+ICsJCQkJCQlpZ3Rfc3dhcChwWzFdLnJvdGF0aW9uX3N3LCBwWzFdLnJvdGF0aW9u X2h3KTsKPj4gKwkJCQkJCWdldF9tdWx0aXBsYW5lX2NyYyhkYXRhLCBvdXRwdXQsICZyZXRjcmNf aHcsCj4+ICsJCQkJCQkJCSAgIChwbGFuZWluZm9zKikmcCwgTUFYTVVMVElQTEFORVNBTU9VTlQp Owo+PiArCj4+ICsJCQkJCQlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmV0Y3JjX3N3LCAmcmV0Y3Jj X2h3KTsKPj4gKwkJCQkJfQo+PiArCQkJCX0KPj4gKwkJCX0KPj4gKwkJfQo+PiArCQlpZ3RfcGlw ZV9jcmNfc3RvcChkYXRhLT5waXBlX2NyYyk7Cj4+ICsJCWlndF9waXBlX2NyY19mcmVlKGRhdGEt PnBpcGVfY3JjKTsKPj4gKwkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsK Pj4gKwl9Cj4+ICsKPj4gKwkvKgo+PiArCSogT2xkIGZicyBhcmUgZGVsZXRlZCBvbmx5IGFmdGVy IG5ldyBvbmVzIGFyZSBzZXQgb24gcGxhbmVzLgo+PiArCSogVGhpcyBpcyBkb25lIHRvIHNwZWVk IHVwIHRoZSB0ZXN0Cj4+ICsJKi8KPj4gKwlvbGRwbGFuZXMgPSBkYXRhLT5tdWx0aXBsYW5lb2xk dmlldzsKPj4gKwlmb3IgKGMgPSAwOyBjIDwgTUFYTVVMVElQTEFORVNBTU9VTlQgJiYgb2xkcGxh bmVzOyBjKyspCj4+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmb2xkcGxhbmVzW2Nd LmZiKTsKPj4gKwo+PiArCWZyZWUob2xkcGxhbmVzKTsKPj4gKwlkYXRhLT5tdWx0aXBsYW5lb2xk dmlldyA9IE5VTEw7Cj4+ICsJZGF0YS0+cGlwZV9jcmMgPSBOVUxMOwo+PiArfQo+PiArCj4+ICAg c3RhdGljIHZvaWQgdGVzdF9wbGFuZV9yb3RhdGlvbl9leGhhdXN0X2ZlbmNlcyhkYXRhX3QgKmRh dGEsCj4+ICAgCQkJCQkgICAgICAgZW51bSBwaXBlIHBpcGUsCj4+ICAgCQkJCQkgICAgICAgaWd0 X291dHB1dF90ICpvdXRwdXQsCj4+IEBAIC01OTUsNiArODA4LDQyIEBAIGlndF9tYWluCj4+ICAg CQl9Cj4+ICAgCX0KPj4gICAKPj4gKwlpZ3Rfc3VidGVzdF9mKCJtdWx0aXBsYW5lLXJvdGF0aW9u Iikgewo+PiArCQlpZ3RfcmVxdWlyZShnZW4gPj0gOSk7Cj4+ICsJCWNsZWFudXBfY3J0YygmZGF0 YSk7Cj4+ICsJCWRhdGEucGxhbmVwb3NbMF0ub3JpZ28gPSBwX3RvcHxwX2xlZnQ7Cj4+ICsJCWRh dGEucGxhbmVwb3NbMF0ueCA9IDEyODsKPj4gKwkJZGF0YS5wbGFuZXBvc1swXS55ID0gMTI4Owo+ PiArCQlkYXRhLnBsYW5lcG9zWzFdLm9yaWdvID0gcF90b3B8cF9yaWdodDsKPj4gKwkJZGF0YS5w bGFuZXBvc1sxXS54ID0gLTEyOC01MTI7Cj4gU3BhY2UgYXJvdW5kICd8JyBhbmQgJy0nIG9wZXJh dG9ycy4gVmFsaWQgZm9yIGZldyBtb3JlIGxpbmVzIGJlbG93Lgo+IE5vdCBzdXJlIGlmIHdlIHdp bGwgZXZlciBoaXQgYSBjYXNlIHdoZXJlIHRoZXJlIGlzIGEgbG93ZXIgcmVzb2x1dGlvbiAKPiBl LmcuIDY0MHg0ODAsIHRoZSBmaWd1cmUgd2lsbCBiZSBjcm9wcGVkLCB3aGljaCBpcyBub3QgZGVz aXJlZCwgdGhlIHRlc3QgCj4gaG93ZXZlciB3b3VsZCBzdGlsbCBwYXNzIGFzIGNyYyB3b3VsZCBt YXRjaC4KPiBQZXJoYXBzIHdlIGNhbiBza2lwIGlmIHJlc29sdXRpb24gaXMgbGVzcyB0aGFuIHNv bWUgdGhyZXNob2xkLgo+IAo+PiArCQlkYXRhLnBsYW5lcG9zWzFdLnkgPSAxMjg7Cj4+ICsJCXRl c3RfbXVsdGlfcGxhbmVfcm90YXRpb24oJmRhdGEsIDApOwo+PiArCX0KPj4gKwo+PiArCWlndF9z dWJ0ZXN0X2YoIm11bHRpcGxhbmUtcm90YXRpb24tY3JvcHBpbmctdG9wIikgewo+PiArCQlpZ3Rf cmVxdWlyZShnZW4gPj0gOSk7Cj4+ICsJCWNsZWFudXBfY3J0YygmZGF0YSk7Cj4+ICsJCWRhdGEu cGxhbmVwb3NbMF0ub3JpZ28gPSBwX3RvcHxwX2xlZnQ7Cj4+ICsJCWRhdGEucGxhbmVwb3NbMF0u eCA9IC0xMjg7Cj4+ICsJCWRhdGEucGxhbmVwb3NbMF0ueSA9IC0xMjg7Cj4+ICsJCWRhdGEucGxh bmVwb3NbMV0ub3JpZ28gPSBwX3RvcHxwX3JpZ2h0Owo+PiArCQlkYXRhLnBsYW5lcG9zWzFdLngg PSAtNTEyKzEyODsKPj4gKwkJZGF0YS5wbGFuZXBvc1sxXS55ID0gLTEyODsKPj4gKwkJdGVzdF9t dWx0aV9wbGFuZV9yb3RhdGlvbigmZGF0YSwgMCk7Cj4+ICsJfQo+PiArCj4+ICsJaWd0X3N1YnRl c3RfZigibXVsdGlwbGFuZS1yb3RhdGlvbi1jcm9wcGluZy1ib3R0b20iKSB7Cj4+ICsJCWlndF9y ZXF1aXJlKGdlbiA+PSA5KTsKPj4gKwkJY2xlYW51cF9jcnRjKCZkYXRhKTsKPj4gKwkJZGF0YS5w bGFuZXBvc1swXS5vcmlnbyA9IHBfYm90dG9tfHBfbGVmdDsKPj4gKwkJZGF0YS5wbGFuZXBvc1sw XS54ID0gLTEyODsKPj4gKwkJZGF0YS5wbGFuZXBvc1swXS55ID0gLTUxMisxMjg7Cj4+ICsJCWRh dGEucGxhbmVwb3NbMV0ub3JpZ28gPSBwX2JvdHRvbXxwX3JpZ2h0Owo+PiArCQlkYXRhLnBsYW5l cG9zWzFdLnggPSAtNTEyKzEyODsKPj4gKwkJZGF0YS5wbGFuZXBvc1sxXS55ID0gLTUxMisxMjg7 Cj4+ICsJCXRlc3RfbXVsdGlfcGxhbmVfcm90YXRpb24oJmRhdGEsIDApOwo+PiArCX0KPj4gKwo+ PiAgIAkvKgo+PiAgIAkgKiBleGhhdXN0LWZlbmNlcyBzaG91bGQgYmUgbGFzdCB0ZXN0LCBpZiBp dCBmYWlscyB3ZSBtYXkgT09NIGluCj4+ICAgCSAqIHRoZSBmb2xsb3dpbmcgc3VidGVzdHMgb3Ro ZXJ3aXNlLgo+Pgo+PiAgICAKPj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldgo=