From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id BBC0D6E5C3 for ; Wed, 24 Jan 2018 11:55:57 +0000 (UTC) Message-ID: <1516794955.12453.139.camel@intel.com> From: Mika Kahola Date: Wed, 24 Jan 2018 13:55:55 +0200 In-Reply-To: <20180124102500.71999-1-maarten.lankhorst@linux.intel.com> References: <20180124102500.71999-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: mika.kahola@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Maarten Lankhorst , igt-dev@lists.freedesktop.org List-ID: T24gV2VkLCAyMDE4LTAxLTI0IGF0IDExOjI1ICswMTAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBUaGlzIHRlc3Qgd2FzIHRha2luZyB+MTAwcyBmb3IgZWFjaCBzdWJ0ZXN0LCBhbmQgYm90 aCB0ZXN0cyB3ZXJlIHRoZQo+IHNhbWUsCj4gYnV0IHJlcXVpcmVkIHRoZSB1c2VyIHRvIHBheSBh dHRlbnRpb24uIEkndmUgY2hhbmdlZCBpdCB0byBhdXRvbWF0ZWQKPiBjaGVja2luZyB3aXRoIENS QywgYW5kIHJlbW92ZWQgdGhlIHN1YnRlc3RzLgo+IAo+IFRoaXMgcmVkdWNlcyB0aGUgcnVudGlt ZSBmb3IgdGhlIHRlc3QgZnJvbSBhYm91dCAyMDBzIHRvIDEwcwo+ICh3aXRoIE5WMTIgZW5hYmxl ZCksIGFuZCBjaGVja3Mgd2hldGhlciBwaXhlbCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQKPiB3aXRo b3V0IHNwZWNpYWwgY2FzaW5nIHRoZW0uCkkgd2VsY29tZSB0aGlzIGlkZWEgdG8gcmVkdWNlIHRl c3QgZXhlY3V0aW9uIHRpbWUuIEF0IHRoZSBtb21lbnQgb3VyCklHVCB0ZXN0cyB0YWtlcyBxdWl0 ZSBtdWNoIHRpbWUgdG8gY29tcGxldGUuCsKgCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBM YW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiDCoHRl c3RzL2ttc19yZW5kZXIuYyB8IDE5MSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gLS0tLS0tLS0tLQo+IMKgMSBmaWxlIGNoYW5nZWQsIDY0IGluc2VydGlvbnMo KyksIDEyNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3JlbmRlci5j IGIvdGVzdHMva21zX3JlbmRlci5jCj4gaW5kZXggMjU1Y2YzZGUzOWNmLi4wYjMxZDM1MWRkOTAg MTAwNjQ0Cj4gLS0tIGEvdGVzdHMva21zX3JlbmRlci5jCj4gKysrIGIvdGVzdHMva21zX3JlbmRl ci5jCj4gQEAgLTMxLDE2ICszMSw3IEBACj4gwqAKPiDCoCNpbmNsdWRlICJpbnRlbF9idWZtZ3Iu aCIKPiDCoAo+IC1kcm1Nb2RlUmVzICpyZXNvdXJjZXM7Cj4gLWludCBkcm1fZmQ7Cj4gLQo+IC1l bnVtIHRlc3RfZmxhZ3Mgewo+IC0JVEVTVF9ESVJFQ1RfUkVOREVSCT0gMHgwMSwKPiAtCVRFU1Rf R1BVX0JMSVQJCT0gMHgwMiwKPiAtfTsKPiAtCj4gLXN0YXRpYyBpbnQgcGFpbnRfZmIoc3RydWN0 IGlndF9mYiAqZmIsIGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwKPiAtCQnCoMKgwqDCoGNvbnN0IGNo YXIgKm1vZGVfZm9ybWF0X3N0ciwgY29uc3QgY2hhcgo+ICpjY29uZl9zdHIpCj4gK3N0YXRpYyBp bnQgcGFpbnRfZmIoaW50IGRybV9mZCwgc3RydWN0IGlndF9mYiAqZmIsIGNvbnN0IGNoYXIKPiAq bW9kZV9mb3JtYXRfc3RyLCBjb25zdCBjaGFyICpjY29uZl9zdHIpCj4gwqB7Cj4gwqAJY2Fpcm9f dCAqY3I7Cj4gwqAKPiBAQCAtNTEsNyArNDIsNyBAQCBzdGF0aWMgaW50IHBhaW50X2ZiKHN0cnVj dCBpZ3RfZmIgKmZiLCBjb25zdCBjaGFyCj4gKnRlc3RfbmFtZSwKPiDCoAo+IMKgCWNhaXJvX21v dmVfdG8oY3IsIGZiLT53aWR0aCAvIDIsIGZiLT5oZWlnaHQgLyAyKTsKPiDCoAljYWlyb19zZXRf Zm9udF9zaXplKGNyLCAzNik7Cj4gLQlpZ3RfY2Fpcm9fcHJpbnRmX2xpbmUoY3IsIGFsaWduX2hj ZW50ZXIsIDEwLCAiJXMiLAo+IHRlc3RfbmFtZSk7Cj4gKwlpZ3RfY2Fpcm9fcHJpbnRmX2xpbmUo Y3IsIGFsaWduX2hjZW50ZXIsIDEwLCAia21zX3JlbmRlciIpOwo+IMKgCWlndF9jYWlyb19wcmlu dGZfbGluZShjciwgYWxpZ25faGNlbnRlciwgMTAsICIlcyIsCj4gbW9kZV9mb3JtYXRfc3RyKTsK PiDCoAlpZ3RfY2Fpcm9fcHJpbnRmX2xpbmUoY3IsIGFsaWduX2hjZW50ZXIsIDEwLCAiJXMiLAo+ IGNjb25mX3N0cik7Cj4gwqAKPiBAQCAtNjAsNyArNTEsNyBAQCBzdGF0aWMgaW50IHBhaW50X2Zi KHN0cnVjdCBpZ3RfZmIgKmZiLCBjb25zdCBjaGFyCj4gKnRlc3RfbmFtZSwKPiDCoAlyZXR1cm4g MDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZCBncHVfYmxpdChzdHJ1Y3QgaWd0X2ZiICpkc3Rf ZmIsIHN0cnVjdCBpZ3RfZmIgKnNyY19mYikKPiArc3RhdGljIHZvaWQgZ3B1X2JsaXQoaW50IGRy bV9mZCwgc3RydWN0IGlndF9mYiAqZHN0X2ZiLCBzdHJ1Y3QKPiBpZ3RfZmIgKnNyY19mYikKPiDC oHsKPiDCoAlkcm1faW50ZWxfYm8gKmRzdF9ibzsKPiDCoAlkcm1faW50ZWxfYm8gKnNyY19ibzsK PiBAQCAtMTAxLDE1NiArOTIsMTAyIEBAIHN0YXRpYyB2b2lkIGdwdV9ibGl0KHN0cnVjdCBpZ3Rf ZmIgKmRzdF9mYiwKPiBzdHJ1Y3QgaWd0X2ZiICpzcmNfZmIpCj4gwqAJZHJtX2ludGVsX2JvX3Vu cmVmZXJlbmNlKGRzdF9ibyk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0ZXN0X2Zvcm1hdChj b25zdCBjaGFyICp0ZXN0X25hbWUsCj4gLQkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qga21zdGVzdF9j b25uZWN0b3JfY29uZmlnICpjY29uZiwKPiAtCQnCoMKgwqDCoMKgwqDCoGRybU1vZGVNb2RlSW5m byAqbW9kZSwgdWludDMyX3QgZm9ybWF0LAo+IC0JCcKgwqDCoMKgwqDCoMKgZW51bSB0ZXN0X2Zs YWdzIGZsYWdzKQo+ICtzdGF0aWMgdm9pZCB0ZXN0X2Zvcm1hdChpZ3RfZGlzcGxheV90ICpkaXNw bGF5LAo+ICsJCQllbnVtIHBpcGUgcGlwZSwKPiArCQkJaWd0X291dHB1dF90ICpvdXRwdXQsCj4g KwkJCWlndF9wbGFuZV90ICpwcmltYXJ5LAo+ICsJCQl1aW50MzJfdCBmb3JtYXQpCj4gwqB7Cj4g LQlpbnQgd2lkdGg7Cj4gLQlpbnQgaGVpZ2h0Owo+ICsJZHJtTW9kZU1vZGVJbmZvICptb2RlID0g aWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+ICsJaW50IHdpZHRoID0gbW9kZS0+aGRpc3Bs YXksIGhlaWdodCA9IG1vZGUtPnZkaXNwbGF5LCByZXQsCj4gZHJtX2ZkID0gZGlzcGxheS0+ZHJt X2ZkOwpUaGlzIGNvdWxkIGJlIHNwbGl0IGludG8gc2VwYXJhdGUgbGluZXMuIEl0IHdvdWxkIGJl IGVhc2llciB0byByZWFkCnRoYXQgd2F5LgoKT3RoZXJ3aXNlIHRoZSBwYXRjaCBsb29rcyBvay4K Cj4gwqAJc3RydWN0IGlndF9mYiBmYlsyXTsKPiDCoAljaGFyICptb2RlX2Zvcm1hdF9zdHI7Cj4g wqAJY2hhciAqY2NvbmZfc3RyOwo+IC0JaW50IHJldDsKPiArCWlndF9waXBlX2NyY190ICpwaXBl X2NyYzsKPiArCWlndF9jcmNfdCBkaXJlY3QsIGJsaXQ7Cj4gwqAKPiDCoAlyZXQgPSBhc3ByaW50 ZigmbW9kZV9mb3JtYXRfc3RyLCAiJXMgQCAlZEh6IC8gJXMiLAo+IC0JCcKgbW9kZS0+bmFtZSwg bW9kZS0+dnJlZnJlc2gsCj4gaWd0X2Zvcm1hdF9zdHIoZm9ybWF0KSk7Cj4gKwkJwqDCoMKgwqDC oMKgwqBtb2RlLT5uYW1lLCBtb2RlLT52cmVmcmVzaCwKPiBpZ3RfZm9ybWF0X3N0cihmb3JtYXQp KTsKPiDCoAlpZ3RfYXNzZXJ0X2x0KDAsIHJldCk7Cj4gKwo+IMKgCXJldCA9IGFzcHJpbnRmKCZj Y29uZl9zdHIsICJwaXBlICVzLCBlbmNvZGVyICVzLCBjb25uZWN0b3IKPiAlcyIsCj4gLQkJwqDC oMKgwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShjY29uZi0+cGlwZSksCj4gLQkJwqDCoMKgwqDC oMKgwqBrbXN0ZXN0X2VuY29kZXJfdHlwZV9zdHIoY2NvbmYtPmVuY29kZXItCj4gPmVuY29kZXJf dHlwZSksCj4gLQkJwqDCoMKgwqDCoMKgwqBrbXN0ZXN0X2Nvbm5lY3Rvcl90eXBlX3N0cihjY29u Zi0+Y29ubmVjdG9yLQo+ID5jb25uZWN0b3JfdHlwZSkpOwo+ICsJCcKgwqDCoMKgwqDCoMKga21z dGVzdF9waXBlX25hbWUocGlwZSksCj4gKwkJwqDCoMKgwqDCoMKgwqBrbXN0ZXN0X2VuY29kZXJf dHlwZV9zdHIob3V0cHV0LQo+ID5jb25maWcuZW5jb2Rlci0+ZW5jb2Rlcl90eXBlKSwKPiArCQnC oMKgwqDCoMKgwqDCoG91dHB1dC0+bmFtZSk7Cj4gwqAJaWd0X2Fzc2VydF9sdCgwLCByZXQpOwo+ IMKgCj4gLQlpZ3RfaW5mbygiQmVnaW5uaW5nIHRlc3QgJXMgd2l0aCAlcyBvbiAlc1xuIiwKPiAt CQnCoHRlc3RfbmFtZSwgbW9kZV9mb3JtYXRfc3RyLCBjY29uZl9zdHIpOwo+IC0KPiAtCXdpZHRo ID0gbW9kZS0+aGRpc3BsYXk7Cj4gLQloZWlnaHQgPSBtb2RlLT52ZGlzcGxheTsKPiAtCj4gLQlp ZiAoIWlndF9jcmVhdGVfZmIoZHJtX2ZkLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsCj4gLQkJCcKg wqDCoExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsICZmYlswXSkpCj4gLQkJZ290byBlcnIxOwo+ IC0KPiAtCWlmICghaWd0X2NyZWF0ZV9mYihkcm1fZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwK PiAtCQkJwqDCoMKgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwJJmZiWzFdKQo+ICkKPiAtCQln b3RvIGVycjI7Cj4gLQo+IC0JaWYgKGRybU1vZGVTZXRDcnRjKGRybV9mZCwgY2NvbmYtPmNydGMt PmNydGNfaWQsCj4gZmJbMF0uZmJfaWQsCj4gLQkJCQnCoDAsIDAsICZjY29uZi0+Y29ubmVjdG9y LQo+ID5jb25uZWN0b3JfaWQsIDEsCj4gLQkJCQnCoG1vZGUpKQo+IC0JCWdvdG8gZXJyMjsKPiAt CWRvX29yX2RpZShkcm1Nb2RlUGFnZUZsaXAoZHJtX2ZkLCBjY29uZi0+Y3J0Yy0+Y3J0Y19pZCwK PiBmYlswXS5mYl9pZCwKPiAtCQkJCcKgwqAwLCBOVUxMKSk7Cj4gLQlzbGVlcCgyKTsKPiAtCj4g LQlpZiAoZmxhZ3MgJiBURVNUX0RJUkVDVF9SRU5ERVIpIHsKPiAtCQlwYWludF9mYigmZmJbMF0s IHRlc3RfbmFtZSwgbW9kZV9mb3JtYXRfc3RyLAo+IGNjb25mX3N0cik7Cj4gLQl9IGVsc2UgaWYg KGZsYWdzICYgVEVTVF9HUFVfQkxJVCkgewo+IC0JCXBhaW50X2ZiKCZmYlsxXSwgdGVzdF9uYW1l LCBtb2RlX2Zvcm1hdF9zdHIsCj4gY2NvbmZfc3RyKTsKPiAtCQlncHVfYmxpdCgmZmJbMF0sICZm YlsxXSk7Cj4gLQl9Cj4gLQlzbGVlcCg1KTsKPiArCWlndF9jcmVhdGVfZmIoZHJtX2ZkLCB3aWR0 aCwgaGVpZ2h0LCBmb3JtYXQsCj4gKwkJwqDCoMKgwqDCoMKgTE9DQUxfRFJNX0ZPUk1BVF9NT0Rf Tk9ORSwgJmZiWzBdKTsKPiDCoAo+IC0JaWd0X2luZm8oIlRlc3QgJXMgd2l0aCAlcyBvbiAlczog UEFTU0VEXG4iLAo+IC0JCcKgdGVzdF9uYW1lLCBtb2RlX2Zvcm1hdF9zdHIsIGNjb25mX3N0cik7 Cj4gLQlmcmVlKG1vZGVfZm9ybWF0X3N0cik7Cj4gLQlmcmVlKGNjb25mX3N0cik7Cj4gKwlpZ3Rf Y3JlYXRlX2ZiKGRybV9mZCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LAo+ICsJCcKgwqDCoMKgwqDC oExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsICZmYlsxXSk7Cj4gwqAKPiAtCWlndF9yZW1vdmVf ZmIoZHJtX2ZkLCAmZmJbMV0pOwo+IC0JaWd0X3JlbW92ZV9mYihkcm1fZmQsICZmYlswXSk7Cj4g KwlwYWludF9mYihkcm1fZmQsICZmYlswXSwgbW9kZV9mb3JtYXRfc3RyLCBjY29uZl9zdHIpOwo+ ICsJZ3B1X2JsaXQoZHJtX2ZkLCAmZmJbMV0sICZmYlswXSk7Cj4gwqAKPiAtCXJldHVybiAwOwo+ ICsJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmJbMF0pOwo+ICsJaWd0X2Rpc3BsYXlfY29t bWl0MihkaXNwbGF5LCBkaXNwbGF5LT5pc19hdG9taWMgPwo+IENPTU1JVF9BVE9NSUMgOiBDT01N SVRfTEVHQUNZKTsKPiArCj4gKwlwaXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZHJtX2ZkLCBw aXBlLAo+IElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKPiArCWlndF9waXBlX2NyY19jb2xs ZWN0X2NyYyhwaXBlX2NyYywgJmRpcmVjdCk7Cj4gKwo+ICsJaWd0X3BsYW5lX3NldF9mYihwcmlt YXJ5LCAmZmJbMV0pOwo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBkaXNwbGF5LT5p c19hdG9taWMgPwo+IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZKTsKPiArCWlndF9waXBl X2NyY19jb2xsZWN0X2NyYyhwaXBlX2NyYywgJmJsaXQpOwo+ICsKPiArCWlndF9hc3NlcnRfY3Jj X2VxdWFsKCZkaXJlY3QsICZibGl0KTsKPiArCj4gKwlpZ3RfcGlwZV9jcmNfZnJlZShwaXBlX2Ny Yyk7Cj4gwqAKPiAtZXJyMjoKPiAtCWlndF9yZW1vdmVfZmIoZHJtX2ZkLCAmZmJbMF0pOwo+IC1l cnIxOgo+IC0JaWd0X2luZm8oIlRlc3QgJXMgd2l0aCAlcyBvbiAlczogU0tJUFBFRFxuIiwKPiAt CQnCoHRlc3RfbmFtZSwgbW9kZV9mb3JtYXRfc3RyLCBjY29uZl9zdHIpOwo+IMKgCWZyZWUobW9k ZV9mb3JtYXRfc3RyKTsKPiDCoAlmcmVlKGNjb25mX3N0cik7Cj4gwqAKPiAtCXJldHVybiAtMTsK PiArCWlndF9yZW1vdmVfZmIoZHJtX2ZkLCAmZmJbMV0pOwo+ICsJaWd0X3JlbW92ZV9mYihkcm1f ZmQsICZmYlswXSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgdGVzdF9jb25uZWN0b3IoY29u c3QgY2hhciAqdGVzdF9uYW1lLAo+IC0JCQnCoMKgwqBzdHJ1Y3Qga21zdGVzdF9jb25uZWN0b3Jf Y29uZmlnICpjY29uZiwKPiAtCQkJwqDCoMKgZW51bSB0ZXN0X2ZsYWdzIGZsYWdzKQo+ICtzdGF0 aWMgdm9pZCB0ZXN0X2Nvbm5lY3RvcihpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVtIHBpcGUg cGlwZSwKPiArCQkJwqDCoMKgaWd0X291dHB1dF90ICpvdXRwdXQpCj4gwqB7Cj4gwqAJY29uc3Qg dWludDMyX3QgKmZvcm1hdHM7Cj4gLQlpbnQgZm9ybWF0X2NvdW50Owo+IC0JaW50IGk7Cj4gKwlp Z3RfcGxhbmVfdCAqcHJpbWFyeSA9ICZkaXNwbGF5LT5waXBlc1twaXBlXS5wbGFuZXNbMF07Cj4g KwlpbnQgZm9ybWF0X2NvdW50LCBpLCBqLCB0ZXN0ZWQgPSAwOwo+ICsKPiArCWlndF9kaXNwbGF5 X3Jlc2V0KGRpc3BsYXkpOwo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+ IMKgCj4gwqAJaWd0X2dldF9hbGxfY2Fpcm9fZm9ybWF0cygmZm9ybWF0cywgJmZvcm1hdF9jb3Vu dCk7Cj4gwqAJZm9yIChpID0gMDsgaSA8IGZvcm1hdF9jb3VudDsgaSsrKSB7Cj4gLQkJaWYgKGlz X2k5MTVfZGV2aWNlKGRybV9mZCkKPiAtCQnCoMKgwqDCoCYmIGludGVsX2dlbihpbnRlbF9nZXRf ZHJtX2RldmlkKGRybV9mZCkpIDwgNAo+IC0JCcKgwqDCoMKgJiYgZm9ybWF0c1tpXSA9PSBEUk1f Rk9STUFUX1hSR0IyMTAxMDEwKSB7Cj4gLQkJCWlndF9pbmZvKCJnZW4yLzMgZG9uJ3Qgc3VwcG9y dCAxMGJwYywKPiBza2lwcGluZ1xuIik7Cj4gLQkJCWNvbnRpbnVlOwo+IC0JCX0KPiAtCj4gLQkJ dGVzdF9mb3JtYXQodGVzdF9uYW1lLAo+IC0JCQnCoMKgwqDCoGNjb25mLCAmY2NvbmYtPmNvbm5l Y3Rvci0+bW9kZXNbMF0sCj4gLQkJCcKgwqDCoMKgZm9ybWF0c1tpXSwgZmxhZ3MpOwo+IC0JfQo+ IC19Cj4gLQo+IC1zdGF0aWMgaW50IHJ1bl90ZXN0KGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwgZW51 bSB0ZXN0X2ZsYWdzIGZsYWdzKQo+IC17Cj4gLQlpbnQgaTsKPiAtCj4gLQlyZXNvdXJjZXMgPSBk cm1Nb2RlR2V0UmVzb3VyY2VzKGRybV9mZCk7Cj4gLQlpZ3RfYXNzZXJ0KHJlc291cmNlcyk7Cj4g LQo+IC0JLyogRmluZCBhbnkgY29ubmVjdGVkIGRpc3BsYXlzICovCj4gLQlmb3IgKGkgPSAwOyBp IDwgcmVzb3VyY2VzLT5jb3VudF9jb25uZWN0b3JzOyBpKyspIHsKPiAtCQl1aW50MzJfdCBjb25u ZWN0b3JfaWQ7Cj4gLQkJaW50IGo7Cj4gLQo+IC0JCWNvbm5lY3Rvcl9pZCA9IHJlc291cmNlcy0+ Y29ubmVjdG9yc1tpXTsKPiAtCQlmb3IgKGogPSAwOyBqIDwgcmVzb3VyY2VzLT5jb3VudF9jcnRj czsgaisrKSB7Cj4gLQkJCXN0cnVjdCBrbXN0ZXN0X2Nvbm5lY3Rvcl9jb25maWcgY2NvbmY7Cj4g LQo+IC0JCQlpZiAoIWttc3Rlc3RfZ2V0X2Nvbm5lY3Rvcl9jb25maWcoZHJtX2ZkLAo+IGNvbm5l Y3Rvcl9pZCwKPiAtCQkJCQkJCcKgwqDCoDEgPDwgaiwKPiAmY2NvbmYpKQo+ICsJCWZvciAoaiA9 IDA7IGogPCBwcmltYXJ5LT5kcm1fcGxhbmUtPmNvdW50X2Zvcm1hdHM7Cj4gaisrKSB7Cj4gKwkJ CWlmIChwcmltYXJ5LT5kcm1fcGxhbmUtPmZvcm1hdHNbal0gIT0KPiBmb3JtYXRzW2ldKQo+IMKg CQkJCWNvbnRpbnVlOwo+IMKgCj4gLQkJCXRlc3RfY29ubmVjdG9yKHRlc3RfbmFtZSwgJmNjb25m LCBmbGFncyk7Cj4gLQo+IC0JCQlrbXN0ZXN0X2ZyZWVfY29ubmVjdG9yX2NvbmZpZygmY2NvbmYp Owo+ICsJCQl0ZXN0X2Zvcm1hdChkaXNwbGF5LCBwaXBlLCBvdXRwdXQsCj4gKwkJCQnCoMKgwqDC oHByaW1hcnksIGZvcm1hdHNbaV0pOwo+ICsJCQl0ZXN0ZWQgPSAxOwo+ICsJCQlicmVhazsKPiDC oAkJfQo+IMKgCX0KPiAtCj4gLQlkcm1Nb2RlRnJlZVJlc291cmNlcyhyZXNvdXJjZXMpOwo+IC0K PiAtCXJldHVybiAxOwo+ICsJaWd0X3JlcXVpcmVfZih0ZXN0ZWQgPiAwLCAiTm8gdmFsaWQgZm9y bWF0cyBjb3VsZCBiZQo+IHRlc3RlZFxuIik7Cj4gwqB9Cj4gwqAKPiAtaWd0X21haW4KPiAraWd0 X3NpbXBsZV9tYWluCj4gwqB7Cj4gLQlzdHJ1Y3Qgewo+IC0JCWVudW0gdGVzdF9mbGFncyBmbGFn czsKPiAtCQljb25zdCBjaGFyICpuYW1lOwo+IC0JfSB0ZXN0c1tdID0gewo+IC0JCXsgVEVTVF9E SVJFQ1RfUkVOREVSLAkiZGlyZWN0LXJlbmRlciIgfSwKPiAtCQl7IFRFU1RfR1BVX0JMSVQsCSJn cHUtYmxpdCIgfSwKPiAtCX07Cj4gLQlpbnQgaTsKPiArCWlndF9kaXNwbGF5X3QgZGlzcGxheTsK PiArCWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ICsJZW51bSBwaXBlIHBpcGU7Cj4gwqAKPiDCoAlp Z3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7Cj4gwqAKPiAtCWlndF9maXh0dXJlIHsKPiAtCQlkcm1f ZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9BTlkpOwo+ICsJZGlzcGxheS5kcm1f ZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9BTlkpOwo+IMKgCj4gLQkJa21zdGVz dF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwo+IC0JfQo+ICsJa21zdGVzdF9zZXRfdnRfZ3JhcGhp Y3NfbW9kZSgpOwo+ICsJaWd0X2Rpc3BsYXlfaW5pdCgmZGlzcGxheSwgZGlzcGxheS5kcm1fZmQp Owo+ICsJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRpc3BsYXkpOwo+IMKgCj4gLQlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0ZXN0cyk7IGkrKykgewo+IC0JCWlndF9zdWJ0ZXN0KHRl c3RzW2ldLm5hbWUpCj4gLQkJCXJ1bl90ZXN0KHRlc3RzW2ldLm5hbWUsIHRlc3RzW2ldLmZsYWdz KTsKPiAtCX0KPiArCWZvcl9lYWNoX3BpcGVfd2l0aF92YWxpZF9vdXRwdXQoJmRpc3BsYXksIHBp cGUsIG91dHB1dCkKPiArCQl0ZXN0X2Nvbm5lY3RvcigmZGlzcGxheSwgcGlwZSwgb3V0cHV0KTsK PiDCoAo+IC0JaWd0X2ZpeHR1cmUKPiAtCQljbG9zZShkcm1fZmQpOwo+ICsJaWd0X2Rpc3BsYXlf ZmluaSgmZGlzcGxheSk7Cj4gKwljbG9zZShkaXNwbGF5LmRybV9mZCk7Cj4gwqB9Ci0tIApNaWth IEthaG9sYSAtIEludGVsIE9UQwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Qt ZGV2Cg==