From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: Re: [PATCH i-g-t v2 20/33] tests/kms_plane_multiple: Add support for dynamic number of planes Date: Thu, 26 Jan 2017 12:47:45 +0200 Message-ID: <1485427665.9014.113.camel@intel.com> References: <20170124233400.5053-1-robert.foss@collabora.com> <20170124233400.5053-21-robert.foss@collabora.com> Reply-To: mika.kahola@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id AED026EAEC for ; Thu, 26 Jan 2017 10:47:05 +0000 (UTC) In-Reply-To: <20170124233400.5053-21-robert.foss@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Robert Foss , intel-gfx@lists.freedesktop.org, Tomeu Vizoso , Maarten Lankhorst , Gustavo Padovan , Daniel Stone , Petri Latvala List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMDE3LTAxLTI0IGF0IDE4OjMzIC0wNTAwLCBSb2JlcnQgRm9zcyB3cm90ZToKPiBB ZGQgY2hhbmdlcyByZWZsZWN0aW5nIHRoZSBuZXcgc3VwcG9ydCBmb3IgZHluYW1pYyBudW1iZXIg b2YgcGxhbmVzCj4gcGVyIHBpcGUuCj4gCj4gU2lnbmVkLW9mZi1ieTogUm9iZXJ0IEZvc3MgPHJv YmVydC5mb3NzQGNvbGxhYm9yYS5jb20+Cj4gLS0tCj4gwqB0ZXN0cy9rbXNfcGxhbmVfbXVsdGlw bGUuYyB8IDIwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+IC0tLS0tLS0t LS0KPiDCoDEgZmlsZSBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgNzggZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jIGIvdGVzdHMva21z X3BsYW5lX211bHRpcGxlLmMKPiBpbmRleCAyYjQzZjBjNS4uZTEwYmJlYTMgMTAwNjQ0Cj4gLS0t IGEvdGVzdHMva21zX3BsYW5lX211bHRpcGxlLmMKPiArKysgYi90ZXN0cy9rbXNfcGxhbmVfbXVs dGlwbGUuYwo+IEBAIC00Nyw4ICs0Nyw4IEBAIHR5cGVkZWYgc3RydWN0IHsKPiDCoAlpbnQgZHJt X2ZkOwo+IMKgCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKPiDCoAlpZ3RfcGlwZV9jcmNfdCAqcGlw ZV9jcmM7Cj4gLQlpZ3RfcGxhbmVfdCAqcGxhbmVbSUdUX01BWF9QTEFORVNdOwo+IC0Jc3RydWN0 IGlndF9mYiBmYltJR1RfTUFYX1BMQU5FU107Cj4gKwlpZ3RfcGxhbmVfdCAqKnBsYW5lOwo+ICsJ c3RydWN0IGlndF9mYiAqZmI7Cj4gwqB9IGRhdGFfdDsKPiDCoAo+IMKgdHlwZWRlZiBzdHJ1Y3Qg ewo+IEBAIC03MCwyMCArNzAsMzUgQEAgc3RydWN0IHsKPiDCoC8qCj4gwqAgKiBDb21tb24gY29k ZSBhY3Jvc3MgYWxsIHRlc3RzLCBhY3Rpbmcgb24gZGF0YV90Cj4gwqAgKi8KPiAtc3RhdGljIHZv aWQgdGVzdF9pbml0KGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpCj4gK3N0YXRpYyB2b2lk IHRlc3RfaW5pdChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCBpbnQgbWF4X3BsYW5lcykK PiDCoHsKPiDCoAlkYXRhLT5waXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcocGlwZSwKPiBJTlRF TF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7Cj4gKwo+ICsJZGF0YS0+cGxhbmUgPSBtYWxsb2MobWF4 X3BsYW5lcyAqIHNpemVvZihkYXRhLT5wbGFuZSkpOwo+ICsJaWd0X2Fzc2VydF9mKGRhdGEtPnBs YW5lICE9IE5VTEwsICJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5Cj4gZm9yIHBsYW5lc1xuIik7 Cj4gKwo+ICsJZGF0YS0+ZmIgPSBtYWxsb2MobWF4X3BsYW5lcyAqIHNpemVvZihzdHJ1Y3QgaWd0 X2ZiKSk7Cj4gKwlpZ3RfYXNzZXJ0X2YoZGF0YS0+ZmIgIT0gTlVMTCwgIkZhaWxlZCB0byBhbGxv Y2F0ZSBtZW1vcnkKPiBmb3IgRkJzXG4iKTsKUnVubmluZyB0aGlzIHRlc3QgSSByZWNlaXZlZCBh IGZvbGxvd2luZyBlcnJvciBvbiAnYXRvbWljLXBpcGUtQS0KdGlsaW5nLW5vbmUtcGxhbmVzJwoK VGVzdGluZyBjb25uZWN0b3IgRFAtMSB1c2luZyBwaXBlIEEgd2l0aCAwIHBsYW5lcyBmb3IgMSBp dGVyYXRpb24gd2l0aApzZWVkIDE0ODU0Mjc2MDIKKioqIEVycm9yIGluIGAuL2ttc19wbGFuZV9t dWx0aXBsZSc6IG1hbGxvYygpOiBtZW1vcnkgY29ycnVwdGlvbjoKMHgwMDAwMDAwMDAyNDcxYWUw ICoqKgoKYW5kIHdpdGggbGVnYWN5IHZlcnNpb24KClRlc3RpbmcgY29ubmVjdG9yIERQLTEgdXNp bmcgcGlwZSBBIHdpdGggMCBwbGFuZXMgZm9yIDEgaXRlcmF0aW9uIHdpdGgKc2VlZCAxNDg1NDI3 OTcxCioqKiBFcnJvciBpbiBgLi9rbXNfcGxhbmVfbXVsdGlwbGUnOiBkb3VibGUgZnJlZSBvciBj b3JydXB0aW9uIChvdXQpOgoweDAwMDAwMDAwMDE4NTA3ZjAgKioqCgo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgdm9pZCB0ZXN0X2ZpbmkoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwg aW50Cj4gbWF4X3BsYW5lcykKPiDCoHsKPiAtCWZvciAoaW50IGkgPSBJR1RfUExBTkVfUFJJTUFS WTsgaSA8PSBtYXhfcGxhbmVzOyBpKyspCj4gLQkJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wbGFu ZVtpXSwgTlVMTCk7Cj4gKwlmb3IgKGludCBpID0gMDsgaSA8PSBtYXhfcGxhbmVzOyBpKyspIHsK PiArCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSBkYXRhLT5wbGFuZVtpXTsKPiArCQlpZiAocGxhbmUt PnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKPiArCQkJY29udGludWU7Cj4gKwkJaWd0 X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7Cj4gKwl9Cj4gwqAKPiDCoAkvKiByZXNldCB0aGUg Y29uc3RyYWludCBvbiB0aGUgcGlwZSAqLwo+IMKgCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0 LCBQSVBFX0FOWSk7Cj4gwqAKPiDCoAlpZ3RfcGlwZV9jcmNfZnJlZShkYXRhLT5waXBlX2NyYyk7 Cj4gKwo+ICsJZnJlZShkYXRhLT5wbGFuZSk7Cj4gKwlkYXRhLT5wbGFuZSA9IE5VTEw7Cj4gKwlm cmVlKGRhdGEtPmZiKTsKPiArCWRhdGEtPmZiID0gTlVMTDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IHZvaWQKPiBAQCAtOTEsMTEgKzEwNiwxMyBAQCB0ZXN0X2dyYWJfY3JjKGRhdGFfdCAqZGF0YSwg aWd0X291dHB1dF90Cj4gKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsIGJvb2wgYXRvbWljLAo+IMKg CcKgwqDCoMKgwqDCoGNvbG9yX3QgKmNvbG9yLCB1aW50NjRfdCB0aWxpbmcsIGlndF9jcmNfdCAq Y3JjIC8qIG91dAo+ICovKQo+IMKgewo+IMKgCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKPiArCWln dF9wbGFuZV90ICpwcmltYXJ5Owo+IMKgCWludCByZXQsIG47Cj4gwqAKPiDCoAlpZ3Rfb3V0cHV0 X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4gwqAKPiAtCWRhdGEtPnBsYW5lW0lHVF9QTEFORV9Q UklNQVJZXSA9Cj4gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCBJR1RfUExBTkVfUFJJTUFS WSk7Cj4gKwlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsCj4gRFJN X1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gKwlkYXRhLT5wbGFuZVtwcmltYXJ5LT5pbmRleF0gPSBw cmltYXJ5Owo+IMKgCj4gwqAJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKPiDC oAo+IEBAIC0xMDMsOSArMTIwLDkgQEAgdGVzdF9ncmFiX2NyYyhkYXRhX3QgKmRhdGEsIGlndF9v dXRwdXRfdCAqb3V0cHV0LAo+IGVudW0gcGlwZSBwaXBlLCBib29sIGF0b21pYywKPiDCoAkJCcKg wqDCoMKgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiDCoAkJCcKgwqDCoMKgTE9DQUxfRFJNX0ZPUk1B VF9NT0RfTk9ORSwKPiDCoAkJCcKgwqDCoMKgY29sb3ItPnJlZCwgY29sb3ItPmdyZWVuLCBjb2xv ci0+Ymx1ZSwKPiAtCQkJwqDCoMKgwqAmZGF0YS0+ZmJbSUdUX1BMQU5FX1BSSU1BUlldKTsKPiAr CQkJwqDCoMKgwqAmZGF0YS0+ZmJbcHJpbWFyeS0+aW5kZXhdKTsKPiDCoAo+IC0JaWd0X3BsYW5l X3NldF9mYihkYXRhLT5wbGFuZVtJR1RfUExBTkVfUFJJTUFSWV0sICZkYXRhLQo+ID5mYltJR1Rf UExBTkVfUFJJTUFSWV0pOwo+ICsJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wbGFuZVtwcmltYXJ5 LT5pbmRleF0sICZkYXRhLQo+ID5mYltwcmltYXJ5LT5pbmRleF0pOwo+IMKgCj4gwqAJcmV0ID0g aWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksCj4gwqAJCQkJwqDCoMKgwqDC oMKgYXRvbWljID8gQ09NTUlUX0FUT01JQyA6Cj4gQ09NTUlUX0xFR0FDWSk7Cj4gQEAgLTEyOCwy OSArMTQ1LDM1IEBAIHRlc3RfZ3JhYl9jcmMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QKPiAq b3V0cHV0LCBlbnVtIHBpcGUgcGlwZSwgYm9vbCBhdG9taWMsCj4gwqAgKi8KPiDCoAo+IMKgc3Rh dGljIHZvaWQKPiAtY3JlYXRlX2ZiX2Zvcl9tb2RlX3Bvc2l0aW9uKGRhdGFfdCAqZGF0YSwgZHJt TW9kZU1vZGVJbmZvICptb2RlLAo+ICtjcmVhdGVfZmJfZm9yX21vZGVfcG9zaXRpb24oZGF0YV90 ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPiBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsCj4g wqAJCQnCoMKgwqDCoGNvbG9yX3QgKmNvbG9yLCBpbnQgKnJlY3RfeCwgaW50Cj4gKnJlY3RfeSwK PiDCoAkJCcKgwqDCoMKgaW50ICpyZWN0X3csIGludCAqcmVjdF9oLCB1aW50NjRfdAo+IHRpbGlu ZywKPiDCoAkJCcKgwqDCoMKgaW50IG1heF9wbGFuZXMpCj4gwqB7Cj4gwqAJdW5zaWduZWQgaW50 IGZiX2lkOwo+IMKgCWNhaXJvX3QgKmNyOwo+ICsJaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gKwo+ ICsJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LAo+IERSTV9QTEFO RV9UWVBFX1BSSU1BUlkpOwo+IMKgCj4gwqAJZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRy bV9mZCwKPiDCoAkJCcKgwqDCoMKgwqDCoG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwK PiDCoAkJCcKgwqDCoMKgwqDCoERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gwqAJCQnCoMKgwqDCoMKg wqB0aWxpbmcsCj4gLQkJCcKgwqDCoMKgwqDCoCZkYXRhLT5mYltJR1RfUExBTkVfUFJJTUFSWV0p Owo+ICsJCQnCoMKgwqDCoMKgwqAmZGF0YS0+ZmJbcHJpbWFyeS0+aW5kZXhdKTsKPiDCoAlpZ3Rf YXNzZXJ0KGZiX2lkKTsKPiDCoAo+IC0JY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1f ZmQsICZkYXRhLQo+ID5mYltJR1RfUExBTkVfUFJJTUFSWV0pOwo+ICsJY3IgPSBpZ3RfZ2V0X2Nh aXJvX2N0eChkYXRhLT5kcm1fZmQsICZkYXRhLT5mYltwcmltYXJ5LQo+ID5pbmRleF0pOwo+IMKg CWlndF9wYWludF9jb2xvcihjciwgcmVjdF94WzBdLCByZWN0X3lbMF0sCj4gwqAJCQltb2RlLT5o ZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCj4gwqAJCQljb2xvci0+cmVkLCBjb2xvci0+Z3JlZW4s IGNvbG9yLT5ibHVlKTsKPiDCoAo+IC0JZm9yIChpbnQgaSA9IElHVF9QTEFORV8yOyBpIDw9IG1h eF9wbGFuZXM7IGkrKykKPiArCWZvciAoaW50IGkgPSAwOyBpIDw9IG1heF9wbGFuZXM7IGkrKykg ewo+ICsJCWlmIChkYXRhLT5wbGFuZVtpXS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZ KQo+ICsJCQljb250aW51ZTsKPiDCoAkJaWd0X3BhaW50X2NvbG9yKGNyLCByZWN0X3hbaV0sIHJl Y3RfeVtpXSwKPiDCoAkJCQlyZWN0X3dbaV0sIHJlY3RfaFtpXSwgMC4wLCAwLjAsCj4gMC4wKTsK PiArCQl9Cj4gwqAKPiDCoAlpZ3RfYXNzZXJ0KGNhaXJvX3N0YXR1cyhjcikgPT0gMCk7Cj4gwqAJ Y2Fpcm9fZGVzdHJveShjcik7Cj4gQEAgLTE1OCwzNyArMTgxLDUyIEBAIGNyZWF0ZV9mYl9mb3Jf bW9kZV9wb3NpdGlvbihkYXRhX3QgKmRhdGEsCj4gZHJtTW9kZU1vZGVJbmZvICptb2RlLAo+IMKg Cj4gwqAKPiDCoHN0YXRpYyB2b2lkCj4gLXByZXBhcmVfcGxhbmVzKGRhdGFfdCAqZGF0YSwgZW51 bSBwaXBlIHBpcGUsIGNvbG9yX3QgKmNvbG9yLAo+ICtwcmVwYXJlX3BsYW5lcyhkYXRhX3QgKmRh dGEsIGVudW0gcGlwZSBwaXBlX2lkLCBjb2xvcl90ICpjb2xvciwKPiDCoAnCoMKgwqDCoMKgwqDC oHVpbnQ2NF90IHRpbGluZywgaW50IG1heF9wbGFuZXMsIGlndF9vdXRwdXRfdAo+ICpvdXRwdXQp Cj4gwqB7Cj4gwqAJZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+IC0JaW50IHhbSUdUX01BWF9QTEFO RVNdOwo+IC0JaW50IHlbSUdUX01BWF9QTEFORVNdOwo+IC0JaW50IHNpemVbSUdUX01BWF9QTEFO RVNdOwo+ICsJaWd0X3BpcGVfdCAqcGlwZTsKPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Owo+ICsJ aW50ICp4Owo+ICsJaW50ICp5Owo+ICsJaW50ICpzaXplOwo+IMKgCWludCBpOwo+IMKgCj4gLQlp Z3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4gKwlpZ3Rfb3V0cHV0X3NldF9waXBl KG91dHB1dCwgcGlwZV9pZCk7Cj4gKwlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlw ZShvdXRwdXQsCj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gKwlwaXBlID0gcHJpbWFyeS0+ cGlwZTsKPiArCj4gKwl4ID0gbWFsbG9jKHBpcGUtPm5fcGxhbmVzICogc2l6ZW9mKCp4KSk7Cj4g KwlpZ3RfYXNzZXJ0X2YoeCwgIkZhaWxlZCB0byBhbGxvY2F0ZSAlbGQgYnl0ZXMgZm9yIHZhcmlh YmxlCj4geFxuIiwgKGxvbmcgaW50KSAocGlwZS0+bl9wbGFuZXMgKiBzaXplb2YoKngpKSk7Cj4g Kwl5ID0gbWFsbG9jKHBpcGUtPm5fcGxhbmVzICogc2l6ZW9mKCp5KSk7Cj4gKwlpZ3RfYXNzZXJ0 X2YoeSwgIkZhaWxlZCB0byBhbGxvY2F0ZSAlbGQgYnl0ZXMgZm9yIHZhcmlhYmxlCj4geVxuIiwg KGxvbmcgaW50KSAocGlwZS0+bl9wbGFuZXMgKiBzaXplb2YoKnkpKSk7Cj4gKwlzaXplID0gbWFs bG9jKHBpcGUtPm5fcGxhbmVzICogc2l6ZW9mKCpzaXplKSk7Cj4gKwlpZ3RfYXNzZXJ0X2Yoc2l6 ZSwgIkZhaWxlZCB0byBhbGxvY2F0ZSAlbGQgYnl0ZXMgZm9yCj4gdmFyaWFibGUgc2l6ZVxuIiwg KGxvbmcgaW50KSAocGlwZS0+bl9wbGFuZXMgKiBzaXplb2YoKnNpemUpKSk7Cj4gwqAKPiDCoAlt b2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+IMKgCj4gwqAJLyogcGxhbmVzIHdp dGggcmFuZG9tIHBvc2l0aW9ucyAqLwo+IC0JeFtJR1RfUExBTkVfUFJJTUFSWV0gPSAwOwo+IC0J eVtJR1RfUExBTkVfUFJJTUFSWV0gPSAwOwo+IC0JZm9yIChpID0gSUdUX1BMQU5FXzI7IGkgPD0g bWF4X3BsYW5lczsgaSsrKSB7Cj4gLQkJaWYgKGkgPT0gSUdUX1BMQU5FX0NVUlNPUikKPiArCXhb cHJpbWFyeS0+aW5kZXhdID0gMDsKPiArCXlbcHJpbWFyeS0+aW5kZXhdID0gMDsKPiArCWZvciAo aSA9IDE7IGkgPD0gbWF4X3BsYW5lczsgaSsrKSB7Cj4gKwkJaWd0X3BsYW5lX3QgKnBsYW5lID0g aWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LAo+IGkpOwo+ICsKPiArCQlpZiAocGxhbmUtPnR5 cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQo+IMKgCQkJc2l6ZVtpXSA9IFNJWkVfQ1VSU09S Owo+ICsJCWVsc2UgaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4g KwkJCWNvbnRpbnVlOwo+IMKgCQllbHNlCj4gwqAJCQlzaXplW2ldID0gU0laRV9QTEFORTsKPiDC oAo+IMKgCQl4W2ldID0gcmFuZCgpICUgKG1vZGUtPmhkaXNwbGF5IC0gc2l6ZVtpXSk7Cj4gwqAJ CXlbaV0gPSByYW5kKCkgJSAobW9kZS0+dmRpc3BsYXkgLSBzaXplW2ldKTsKPiDCoAo+IC0JCWRh dGEtPnBsYW5lW2ldID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCBpKTsKPiArCQlkYXRh LT5wbGFuZVtpXSA9IHBsYW5lOwo+IMKgCj4gwqAJCWlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ ZHJtX2ZkLAo+IMKgCQkJCcKgwqDCoMKgc2l6ZVtpXSwgc2l6ZVtpXSwKPiAtCQkJCcKgwqDCoMKg ZGF0YS0+cGxhbmVbaV0tPmlzX2N1cnNvciA/Cj4gRFJNX0ZPUk1BVF9BUkdCODg4OCA6IERSTV9G T1JNQVRfWFJHQjg4ODgsCj4gLQkJCQnCoMKgwqDCoGRhdGEtPnBsYW5lW2ldLT5pc19jdXJzb3Ig Pwo+IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUgOiB0aWxpbmcsCj4gKwkJCQnCoMKgwqDCoGRh dGEtPnBsYW5lW2ldLT50eXBlID09Cj4gRFJNX1BMQU5FX1RZUEVfQ1VSU09SID8gRFJNX0ZPUk1B VF9BUkdCODg4OCA6IERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gKwkJCQnCoMKgwqDCoGRhdGEtPnBs YW5lW2ldLT50eXBlID09Cj4gRFJNX1BMQU5FX1RZUEVfQ1VSU09SID8gTE9DQUxfRFJNX0ZPUk1B VF9NT0RfTk9ORSA6IHRpbGluZywKPiDCoAkJCQnCoMKgwqDCoGNvbG9yLT5yZWQsIGNvbG9yLT5n cmVlbiwgY29sb3ItCj4gPmJsdWUsCj4gwqAJCQkJwqDCoMKgwqAmZGF0YS0+ZmJbaV0pOwo+IMKg Cj4gQEAgLTE5NywxMCArMjM1LDEwIEBAIHByZXBhcmVfcGxhbmVzKGRhdGFfdCAqZGF0YSwgZW51 bSBwaXBlIHBpcGUsCj4gY29sb3JfdCAqY29sb3IsCj4gwqAJfQo+IMKgCj4gwqAJLyogcHJpbWFy eSBwbGFuZSAqLwo+IC0JZGF0YS0+cGxhbmVbSUdUX1BMQU5FX1BSSU1BUlldID0KPiBpZ3Rfb3V0 cHV0X2dldF9wbGFuZShvdXRwdXQsIElHVF9QTEFORV9QUklNQVJZKTsKPiAtCWNyZWF0ZV9mYl9m b3JfbW9kZV9wb3NpdGlvbihkYXRhLCBtb2RlLCBjb2xvciwgeCwgeSwKPiArCWRhdGEtPnBsYW5l W3ByaW1hcnktPmluZGV4XSA9IHByaW1hcnk7Cj4gKwljcmVhdGVfZmJfZm9yX21vZGVfcG9zaXRp b24oZGF0YSwgb3V0cHV0LCBtb2RlLCBjb2xvciwgeCwgeSwKPiDCoAkJCQnCoMKgwqDCoHNpemUs IHNpemUsIHRpbGluZywgbWF4X3BsYW5lcyk7Cj4gLQlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnBs YW5lW0lHVF9QTEFORV9QUklNQVJZXSwgJmRhdGEtCj4gPmZiW0lHVF9QTEFORV9QUklNQVJZXSk7 Cj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnBsYW5lW3ByaW1hcnktPmluZGV4XSwgJmRhdGEt Cj4gPmZiW3ByaW1hcnktPmluZGV4XSk7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkCj4gQEAg LTIzMiw3ICsyNzAsNyBAQCB0ZXN0X2F0b21pY19wbGFuZV9wb3NpdGlvbl93aXRoX291dHB1dChk YXRhX3QKPiAqZGF0YSwgZW51bSBwaXBlIHBpcGUsCj4gwqAJCcKgaWd0X291dHB1dF9uYW1lKG91 dHB1dCksIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLAo+IG1heF9wbGFuZXMsCj4gwqAJCcKgaW5m bywgb3B0LnNlZWQpOwo+IMKgCj4gLQl0ZXN0X2luaXQoZGF0YSwgcGlwZSk7Cj4gKwl0ZXN0X2lu aXQoZGF0YSwgcGlwZSwgbWF4X3BsYW5lcyk7Cj4gwqAKPiDCoAl0ZXN0X2dyYWJfY3JjKGRhdGEs IG91dHB1dCwgcGlwZSwgdHJ1ZSwgJmJsdWUsIHRpbGluZywKPiDCoAkJwqDCoMKgwqDCoMKgJnRl c3QucmVmZXJlbmNlX2NyYyk7Cj4gQEAgLTI5OCw3ICszMzYsNyBAQCB0ZXN0X2xlZ2FjeV9wbGFu ZV9wb3NpdGlvbl93aXRoX291dHB1dChkYXRhX3QKPiAqZGF0YSwgZW51bSBwaXBlIHBpcGUsCj4g wqAJCcKgaWd0X291dHB1dF9uYW1lKG91dHB1dCksIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLAo+ IG1heF9wbGFuZXMsCj4gwqAJCcKgaW5mbywgb3B0LnNlZWQpOwo+IMKgCj4gLQl0ZXN0X2luaXQo ZGF0YSwgcGlwZSk7Cj4gKwl0ZXN0X2luaXQoZGF0YSwgcGlwZSwgbWF4X3BsYW5lcyk7Cj4gwqAK PiDCoAl0ZXN0X2dyYWJfY3JjKGRhdGEsIG91dHB1dCwgcGlwZSwgZmFsc2UsICZibHVlLCB0aWxp bmcsCj4gwqAJCcKgwqDCoMKgwqDCoCZ0ZXN0LnJlZmVyZW5jZV9jcmMpOwo+IEBAIC0zNjcsNTQg KzQwNSw3MSBAQCB0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlCj4g cGlwZSwgYm9vbCBhdG9taWMsIGludCBtYXhfcGxhbmVzLAo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg dm9pZAo+IC1ydW5fdGVzdHNfZm9yX3BpcGVfcGxhbmUoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUg cGlwZSwgaW50Cj4gbWF4X3BsYW5lcykKPiArcnVuX3Rlc3RzX2Zvcl9waXBlX3BsYW5lKGRhdGFf dCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpCj4gwqB7Cj4gLQlpZ3Rfc3VidGVzdF9mKCJsZWdhY3kt cGlwZS0lcy10aWxpbmctbm9uZS1wbGFuZXMtJWQiLAo+IC0JCcKgwqDCoMKgwqDCoGttc3Rlc3Rf cGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzKQo+IC0JCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0 YSwgcGlwZSwgZmFsc2UsIG1heF9wbGFuZXMsCj4gLQkJCQnCoMKgwqDCoExPQ0FMX0RSTV9GT1JN QVRfTU9EX05PTkUpOwo+IC0KPiAtCWlndF9zdWJ0ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGlu Zy1ub25lLXBsYW5lcy0lZCIsCj4gLQkJwqDCoMKgwqDCoMKga21zdGVzdF9waXBlX25hbWUocGlw ZSksIG1heF9wbGFuZXMpCj4gLQkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCB0cnVl LCBtYXhfcGxhbmVzLAo+IC0JCQkJwqDCoMKgwqBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxF RCk7Cj4gLQo+IC0JaWd0X3N1YnRlc3RfZigibGVnYWN5LXBpcGUtJXMtdGlsaW5nLXgtcGxhbmVz LSVkIiwKPiAtCQnCoMKgwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwgbWF4X3BsYW5l cykKPiAtCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIGZhbHNlLCBtYXhfcGxhbmVz LAo+IC0JCQkJwqDCoMKgwqBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCk7Cj4gLQo+IC0J aWd0X3N1YnRlc3RfZigiYXRvbWljLXBpcGUtJXMtdGlsaW5nLXgtcGxhbmVzLSVkIiwKPiAtCQnC oMKgwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwgbWF4X3BsYW5lcykKPiAtCQl0ZXN0 X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIHRydWUsIG1heF9wbGFuZXMsCj4gLQkJCQnCoMKg wqDCoExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEKTsKPiAtCj4gLQlpZ3Rfc3VidGVzdF9m KCJsZWdhY3ktcGlwZS0lcy10aWxpbmcteS1wbGFuZXMtJWQiLAo+IC0JCcKgwqDCoMKgwqDCoGtt c3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzKQo+IC0JCXRlc3RfcGxhbmVfcG9zaXRp b24oZGF0YSwgcGlwZSwgZmFsc2UsIG1heF9wbGFuZXMsCj4gLQkJCQnCoMKgwqDCoExPQ0FMX0k5 MTVfRk9STUFUX01PRF9ZX1RJTEVEKTsKPiAtCj4gLQlpZ3Rfc3VidGVzdF9mKCJhdG9taWMtcGlw ZS0lcy10aWxpbmcteS1wbGFuZXMtJWQiLAo+IC0JCcKgwqDCoMKgwqDCoGttc3Rlc3RfcGlwZV9u YW1lKHBpcGUpLCBtYXhfcGxhbmVzKQo+IC0JCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlw ZSwgdHJ1ZSwgbWF4X3BsYW5lcywKPiAtCQkJCcKgwqDCoMKgTE9DQUxfSTkxNV9GT1JNQVRfTU9E X1lfVElMRUQpOwo+IC0KPiAtCWlndF9zdWJ0ZXN0X2YoImxlZ2FjeS1waXBlLSVzLXRpbGluZy15 Zi1wbGFuZXMtJWQiLAo+IC0JCcKgwqDCoMKgwqDCoGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBt YXhfcGxhbmVzKQo+IC0JCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlwZSwgZmFsc2UsIG1h eF9wbGFuZXMsCj4gLQkJCQnCoMKgwqDCoExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCk7 Cj4gLQo+IC0JaWd0X3N1YnRlc3RfZigiYXRvbWljLXBpcGUtJXMtdGlsaW5nLXlmLXBsYW5lcy0l ZCIsCj4gLQkJwqDCoMKgwqDCoMKga21zdGVzdF9waXBlX25hbWUocGlwZSksIG1heF9wbGFuZXMp Cj4gLQkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCB0cnVlLCBtYXhfcGxhbmVzLAo+ IC0JCQkJwqDCoMKgwqBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpOwo+IC19Cj4gKwlp Z3Rfc3VidGVzdF9mKCJsZWdhY3ktcGlwZS0lcy10aWxpbmctbm9uZS1wbGFuZXMiLAo+ICsJCcKg wqDCoMKgwqDCoGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKSB7Cj4gKwkJaW50IG5fcGxhbmVzID0g ZGF0YS0+ZGlzcGxheS5waXBlc1twaXBlXS5uX3BsYW5lczsKPiArCQlmb3IgKGludCBwbGFuZXMg PSAwOyBwbGFuZXMgPCBuX3BsYW5lczsgcGxhbmVzKyspCj4gKwkJCXRlc3RfcGxhbmVfcG9zaXRp b24oZGF0YSwgcGlwZSwgZmFsc2UsCj4gcGxhbmVzLAo+ICsJCQkJTE9DQUxfRFJNX0ZPUk1BVF9N T0RfTk9ORSk7Cj4gKwl9Cj4gwqAKPiAtc3RhdGljIHZvaWQKPiAtcnVuX3Rlc3RzX2Zvcl9waXBl KGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpCj4gLXsKPiAtCWZvciAoaW50IHBsYW5lcyA9 IElHVF9QTEFORV9QUklNQVJZOyBwbGFuZXMgPAo+IElHVF9NQVhfUExBTkVTOyBwbGFuZXMrKykK PiAtCQlydW5fdGVzdHNfZm9yX3BpcGVfcGxhbmUoZGF0YSwgcGlwZSwgcGxhbmVzKTsKPiArCWln dF9zdWJ0ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGluZy1ub25lLXBsYW5lcyIsCkkgdGhpbmsg d2UgY291bGQgZHJvcCB0aGUgcmVmZXJlbmNlIHRvIC1wbGFuZXMgZnJvbSB0aGUgc3VidGVzdCBu YW1lIGFzCndlIHJ1biB0aHJvdWdoIGFsbCBhdmFpbGFibGUgcGxhbmVzIGFueXdheS4KCj4gKwkJ wqDCoMKgwqDCoMKga21zdGVzdF9waXBlX25hbWUocGlwZSkpIHsKPiArCQlpbnQgbl9wbGFuZXMg PSBkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLm5fcGxhbmVzOwo+ICsJCWZvciAoaW50IHBsYW5l cyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykKRm9yIHRoaXMgdGVzdCwgd2UgY291 bGQgY2hhbmdlIHRoaXMgYnkgc3RhcnQgdGVzdGluZyB3aXRoIGF0IGxlYXN0IG9uZQpvdmVybGF5 IHBsYW5lLiBPcmlnaW5hbGx5LCB3ZSBydW4gdGhpcyB0ZXN0IHdpdGhvdXQgYW55IG92ZXJsYXkg cGxhbmVzCmJ1dCBzaW5jZSB3ZSBhcmUgaGVyZSB3ZSBjb3VsZCBkbyB0aGlzIGNoYW5nZS4KwqAK PiArCQkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCB0cnVlLAo+IHBsYW5lcywKPiAr CQkJCUxPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEKTsKPiArCX0KPiArCj4gKwlpZ3Rfc3Vi dGVzdF9mKCJsZWdhY3ktcGlwZS0lcy10aWxpbmcteC1wbGFuZXMiLAo+ICsJCcKgwqDCoMKgwqDC oGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKSB7Cj4gKwkJaW50IG5fcGxhbmVzID0gZGF0YS0+ZGlz cGxheS5waXBlc1twaXBlXS5uX3BsYW5lczsKPiArCQlmb3IgKGludCBwbGFuZXMgPSAwOyBwbGFu ZXMgPCBuX3BsYW5lczsgcGxhbmVzKyspCj4gKwkJCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwg cGlwZSwgZmFsc2UsCj4gcGxhbmVzLAo+ICsJCQkJTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElM RUQpOwo+ICsJfQo+ICsKPiArCWlndF9zdWJ0ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGluZy14 LXBsYW5lcyIsCj4gKwkJwqDCoMKgwqDCoMKga21zdGVzdF9waXBlX25hbWUocGlwZSkpIHsKPiAr CQlpbnQgbl9wbGFuZXMgPSBkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLm5fcGxhbmVzOwo+ICsJ CWZvciAoaW50IHBsYW5lcyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykKPiArCQkJ dGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCB0cnVlLAo+IHBsYW5lcywKPiArCQkJCUxP Q0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEKTsKPiArCX0KPiArCj4gKwlpZ3Rfc3VidGVzdF9m KCJsZWdhY3ktcGlwZS0lcy10aWxpbmcteS1wbGFuZXMiLAo+ICsJCcKgwqDCoMKgwqDCoGttc3Rl c3RfcGlwZV9uYW1lKHBpcGUpKSB7Cj4gKwkJaW50IG5fcGxhbmVzID0gZGF0YS0+ZGlzcGxheS5w aXBlc1twaXBlXS5uX3BsYW5lczsKPiArCQlmb3IgKGludCBwbGFuZXMgPSAwOyBwbGFuZXMgPCBu X3BsYW5lczsgcGxhbmVzKyspCj4gKwkJCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlwZSwg ZmFsc2UsCj4gcGxhbmVzLAo+ICsJCQkJTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQpOwo+ ICsJfQo+ICsKPiArCWlndF9zdWJ0ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGluZy15LXBsYW5l cyIsCj4gKwkJwqDCoMKgwqDCoMKga21zdGVzdF9waXBlX25hbWUocGlwZSkpIHsKPiArCQlpbnQg bl9wbGFuZXMgPSBkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLm5fcGxhbmVzOwo+ICsJCWZvciAo aW50IHBsYW5lcyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykKPiArCQkJdGVzdF9w bGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCB0cnVlLAo+IHBsYW5lcywKPiArCQkJCUxPQ0FMX0k5 MTVfRk9STUFUX01PRF9ZX1RJTEVEKTsKPiArCX0KPiArCj4gKwlpZ3Rfc3VidGVzdF9mKCJsZWdh Y3ktcGlwZS0lcy10aWxpbmcteWYtcGxhbmVzIiwKPiArCQnCoMKgwqDCoMKgwqBrbXN0ZXN0X3Bp cGVfbmFtZShwaXBlKSkgewo+ICsJCWludCBuX3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNb cGlwZV0ubl9wbGFuZXM7Cj4gKwkJZm9yIChpbnQgcGxhbmVzID0gMDsgcGxhbmVzIDwgbl9wbGFu ZXM7IHBsYW5lcysrKQo+ICsJCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIGZhbHNl LAo+IHBsYW5lcywKPiArCQkJCUxPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCk7Cj4gKwl9 Cj4gKwo+ICsJaWd0X3N1YnRlc3RfZigiYXRvbWljLXBpcGUtJXMtdGlsaW5nLXlmLXBsYW5lcyIs Cj4gKwkJwqDCoMKgwqDCoMKga21zdGVzdF9waXBlX25hbWUocGlwZSkpIHsKPiArCQlpbnQgbl9w bGFuZXMgPSBkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLm5fcGxhbmVzOwo+ICsJCWZvciAoaW50 IHBsYW5lcyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykKPiArCQkJdGVzdF9wbGFu ZV9wb3NpdGlvbihkYXRhLCBwaXBlLCB0cnVlLAo+IHBsYW5lcywKPiArCQkJCUxPQ0FMX0k5MTVf Rk9STUFUX01PRF9ZZl9USUxFRCk7Cj4gKwl9Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBkYXRhX3Qg ZGF0YTsKPiBAQCAtNDYxLDE1ICs1MTYsMTMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKPiDCoAo+IMKgCWlndF9maXh0dXJlIHsKPiDCoAkJZGF0YS5kcm1fZmQgPSBkcm1fb3Bl bl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7Cj4gLQo+IMKgCQlrbXN0ZXN0X3NldF92dF9n cmFwaGljc19tb2RlKCk7Cj4gLQo+IMKgCQlpZ3RfcmVxdWlyZV9waXBlX2NyYygpOwo+IMKgCQlp Z3RfZGlzcGxheV9pbml0KCZkYXRhLmRpc3BsYXksIGRhdGEuZHJtX2ZkKTsKPiDCoAl9Cj4gwqAK PiDCoAlmb3IgKGludCBwaXBlID0gMDsgcGlwZSA8IEk5MTVfTUFYX1BJUEVTOyBwaXBlKyspCj4g LQkJcnVuX3Rlc3RzX2Zvcl9waXBlKCZkYXRhLCBwaXBlKTsKPiArCQlydW5fdGVzdHNfZm9yX3Bp cGVfcGxhbmUoJmRhdGEsIHBpcGUpOwo+IMKgCj4gwqAJaWd0X2ZpeHR1cmUgewo+IMKgCQlpZ3Rf ZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOwotLSAKTWlrYSBLYWhvbGEgLSBJbnRlbCBPVEMK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=