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 861766E7C0 for ; Tue, 7 May 2019 13:28:50 +0000 (UTC) Date: Tue, 7 May 2019 16:28:30 +0300 From: Imre Deak Message-ID: <20190507132830.GD22037@ideak-desk.fi.intel.com> References: <20190507085154.32256-1-oleg.vasilev@intel.com> <20190507115810.GC22037@ideak-desk.fi.intel.com> <20190507122521.GN24299@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190507122521.GN24299@intel.com> Subject: Re: [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: imre.deak@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: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , Oleg Vasilev Cc: Jani Nikula , igt-dev@lists.freedesktop.org List-ID: T24gVHVlLCBNYXkgMDcsIDIwMTkgYXQgMDM6MjU6MjFQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgTWF5IDA3LCAyMDE5IGF0IDAyOjU4OjEwUE0gKzAzMDAsIEltcmUg RGVhayB3cm90ZToKPiA+IE9uIFR1ZSwgTWF5IDA3LCAyMDE5IGF0IDExOjUxOjU0QU0gKzAzMDAs IE9sZWcgVmFzaWxldiB3cm90ZToKPiA+ID4gVGVzdCBjaGVja2VkIHRoYXQgdGhlIG51bWJlciBv ZiB2YWxpZCBlZGlkcyBmcm9tIGRybSBpcyBlcXVhbCB0byB0aGUKPiA+ID4gc2FtZSBudW1iZXIg ZnJvbSBpMmMuCj4gPiA+IAo+ID4gPiBOb3cgZm9yIGVhY2ggZWRpZCB0aGUgd2hvbGUgYmxvYiBp cyBjb21wYXJlZC4gSW4gY2FzZSBvZiBtaXNtYXRjaCB0aGUKPiA+ID4gd2hvbGUgZWRpZCBpcyBw cmludGVkLgo+ID4gCj4gPiBIbSwgaWYgSSdtIHBhcnNpbmcgdGhlIGNvZGUgY29ycmVjdGx5IHdl IGhhdmUgYSBzeW1saW5rIHRvIHRoZQo+ID4gY29ubmVjdG9yJ3MgSTJDIGRldmljZSBvbmx5IGZv ciBEUCBhbmQgU0RWTyBjb25uZWN0b3JzLCBidXQgbm90IGZvcgo+ID4gSERNSSBvciBWR0EuCj4g Cj4gRm9yIERQIHRoZSBhdXgvaTJjIGlzIGEgY2hpbGQgb2YgdGhlIGNvbm5lY3Rvci4gRm9yIGV2 ZXJ5dGhpbmcgZWxzZSBJCj4gdGhpbmsgaXQncyBhIGNoaWxkIG9mIHRoZSBwY2kgZGV2aWNlLiBT RFZPIGxvb2tzIGxpa2UgdGhlIG5vbi1EUCBjYXNlCj4gdG8gbWUsIGllLiBpMmMgZGV2IGlzIGEg Y2hpbGQgb2YgdGhlIHBjaSBkZXYuIFdoaWNoIHByb2JhYmx5IG1ha2VzCj4gc2Vuc2UgaW4gY2Fz ZSB0aGUgU0RWTyBlbmNvZGVyIGhhcyBtdWx0aXBsZSBjb25uZWN0b3JzLgo+IAo+ID4gCj4gPiBK YW5pLCBWaWxsZSBkbyB5b3Uga25vdyB3aGF0J3MgdGhlIHJlYXNvbiBmb3IgdGhhdD8gSSB0aGlu ayBoYXZpbmcgYQo+ID4gc3ltbGluayB3b3VsZCBiZSB1c2VmdWwuCj4gCj4gWWVzLCBzeW1saW5r IHdvdWxkIGJlIG5pY2UuCgpPaywgc28gT2xlZywgSSB0aGluayBmaXJzdCB5b3UnZCBuZWVkIHRv IGFkZCB0aGUgSTJDIHN5bWxpbmtzIHRvIGFsbApjb25uZWN0b3JzIGluIHRoZSBkcml2ZXIuIEkg ZG9uJ3QgdGhpbmsgdGhlcmUgaXMgYW55IG90aGVyIGdvb2Qgd2F5IHRvCmRldGVybWluZSB0aGUg bWFwcGluZy4KCj4gCj4gPiAKPiA+IElzIHRoZXJlIGFub3RoZXIgd2F5IHRvIGlkZW50aWZ5IHdo aWNoIEkyQyBkZXZpY2UgYSBjb25uZWN0b3IgdXNlcz8KPiA+IAo+ID4gPiAKPiA+ID4gQnVnemls bGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDA5Nwo+ ID4gPiBDYzogQXJrYWRpdXN6IEhpbGVyIDxhcmthZGl1c3ouaGlsZXJAaW50ZWwuY29tPgo+ID4g PiBDYzogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBPbGVnIFZhc2lsZXYgPG9sZWcudmFzaWxldkBpbnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAg dGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jIHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLQo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCA2 OCBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2k5MTVf cG1fcnBtLmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKPiA+ID4gaW5kZXggYTJjOWQwZWQu LmYxNTMwMzkxIDEwMDY0NAo+ID4gPiAtLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKPiA+ ID4gKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCj4gPiA+IEBAIC01NzEsMzMgKzU3MSw1 NiBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfZHJtX2luZm9zX2VxdWFsKHN0cnVjdCBjb21wYXJlX2Rh dGEgKmQxLAo+ID4gPiAgCQlhc3NlcnRfZHJtX2NydGNzX2VxdWFsKGQxLT5jcnRjc1tpXSwgZDIt PmNydGNzW2ldKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAtLyogV2UgY291bGQgY2hlY2sgdGhl IGNoZWNrc3VtIHRvbywgYnV0IGp1c3QgdGhlIGhlYWRlciBpcyBwcm9iYWJseSBlbm91Z2guICov Cj4gPiA+IC1zdGF0aWMgYm9vbCBlZGlkX2lzX3ZhbGlkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVk aWQpCj4gPiA+ICtzdGF0aWMgYm9vbCBmaW5kX2kyY19wYXRoKGNoYXIgKmNvbm5lY3Rvcl9uYW1l LCBjaGFyICppMmNfcGF0aCkKPiA+ID4gIHsKPiA+ID4gLQljaGFyIGVkaWRfaGVhZGVyW10gPSB7 Cj4gPiA+IC0JCTB4MCwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwLAo+ ID4gPiAtCX07Cj4gPiA+ICsJc3RydWN0IGRpcmVudCAqZGlyZW50Owo+ID4gPiArCURJUiAqZGly Owo+ID4gPiArCWludCBzeXNmc19jYXJkX2ZkID0gaWd0X3N5c2ZzX29wZW4oZHJtX2ZkKTsKPiA+ ID4gKwlpbnQgY29ubmVjdG9yX2ZkID0gLTE7Cj4gPiA+ICsJYm9vbCBmb3VuZF9pMmNfZmlsZSA9 IGZhbHNlOwo+ID4gPiAgCj4gPiA+IC0JcmV0dXJuIChtZW1jbXAoZWRpZCwgZWRpZF9oZWFkZXIs IHNpemVvZihlZGlkX2hlYWRlcikpID09IDApOwo+ID4gPiAtfQo+ID4gPiArCWRpciA9IGZkb3Bl bmRpcihzeXNmc19jYXJkX2ZkKTsKPiA+ID4gKwlpZ3RfYXNzZXJ0KGRpcik7Cj4gPiA+ICAKPiA+ ID4gLXN0YXRpYyBpbnQgY291bnRfZHJtX3ZhbGlkX2VkaWRzKHN0cnVjdCBtb2RlX3NldF9kYXRh ICpkYXRhKQo+ID4gPiAtewo+ID4gPiAtCWludCByZXQgPSAwOwo+ID4gPiArCXdoaWxlICgoZGly ZW50ID0gcmVhZGRpcihkaXIpKSkgewo+ID4gPiArCQkvKiBTa2lwICJjYXJkeC0iIHByZWZpeCAq Lwo+ID4gPiArCQljaGFyICpkaXJuYW1lID0gZGlyZW50LT5kX25hbWU7Cj4gPiA+ICsJCXdoaWxl KGRpcm5hbWVbMF0gIT0gJ1wwJyAmJiBkaXJuYW1lWzBdICE9ICctJykKPiA+ID4gKwkJCSsrZGly bmFtZTsKPiA+ID4gIAo+ID4gPiAtCWlmICghZGF0YS0+cmVzKQo+ID4gPiAtCQlyZXR1cm4gMDsK PiA+ID4gKwkJaWYoKmRpcm5hbWUgPT0gJy0nKQo+ID4gPiArCQkJKytkaXJuYW1lOwo+ID4gPiAg Cj4gPiA+IC0JZm9yIChpbnQgaSA9IDA7IGkgPCBkYXRhLT5yZXMtPmNvdW50X2Nvbm5lY3RvcnM7 IGkrKykKPiA+ID4gLQkJaWYgKGRhdGEtPmVkaWRzW2ldICYmIGVkaWRfaXNfdmFsaWQoZGF0YS0+ ZWRpZHNbaV0tPmRhdGEpKQo+ID4gPiAtCQkJcmV0Kys7Cj4gPiA+IC0JcmV0dXJuIHJldDsKPiA+ ID4gKwkJaWYgKHN0cmNtcChkaXJuYW1lLCBjb25uZWN0b3JfbmFtZSkgPT0gMCkgewo+ID4gPiAr CQkJY29ubmVjdG9yX2ZkID0gb3BlbmF0KHN5c2ZzX2NhcmRfZmQsIGRpcmVudC0+ZF9uYW1lLCBP X1JET05MWSk7Cj4gPiA+ICsJCQlicmVhazsKPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4gKwlj bG9zZWRpcihkaXIpOwo+ID4gPiArCj4gPiA+ICsJaWYoY29ubmVjdG9yX2ZkIDwgMCkKPiA+ID4g KwkJcmV0dXJuIGZhbHNlOwo+ID4gPiArCj4gPiA+ICsJZGlyID0gZmRvcGVuZGlyKGNvbm5lY3Rv cl9mZCk7Cj4gPiA+ICsJaWd0X2Fzc2VydChkaXIpOwo+ID4gPiArCj4gPiA+ICsJd2hpbGUgKChk aXJlbnQgPSByZWFkZGlyKGRpcikpKSB7Cj4gPiA+ICsJCWlmIChzdHJuY21wKGRpcmVudC0+ZF9u YW1lLCAiaTJjLSIsIDQpID09IDApIHsKPiA+ID4gKwkJCXNwcmludGYoaTJjX3BhdGgsICIvZGV2 LyVzIiwgZGlyZW50LT5kX25hbWUpOwo+ID4gPiArCQkJZm91bmRfaTJjX2ZpbGUgPSB0cnVlOwo+ ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCWNsb3NlZGlyKGRpcik7Cj4gPiA+ICsJcmV0dXJu IGZvdW5kX2kyY19maWxlOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IC1zdGF0aWMgYm9vbCBpMmNf ZWRpZF9pc192YWxpZChpbnQgZmQpCj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBib29sIGkyY19yZWFk X2VkaWQoY2hhciAqY29ubmVjdG9yX25hbWUsIHVuc2lnbmVkIGNoYXIgKmVkaWQpCj4gPiA+ICB7 Cj4gPiA+IC0JaW50IHJjOwo+ID4gPiAtCXVuc2lnbmVkIGNoYXIgZWRpZFsxMjhdID0ge307Cj4g PiA+ICsJY2hhciBpMmNfcGF0aFtQQVRIX01BWF07Cj4gPiA+ICsJYm9vbCByZXN1bHQgPSBmaW5k X2kyY19wYXRoKGNvbm5lY3Rvcl9uYW1lLCBpMmNfcGF0aCk7Cj4gPiA+ICsJaW50IHJjLCBmZDsK PiA+ID4gKwo+ID4gPiAgCXN0cnVjdCBpMmNfbXNnIG1zZ3NbXSA9IHsKPiA+ID4gIAkJeyAvKiBT dGFydCBhdCAwLiAqLwo+ID4gPiAgCQkJLmFkZHIgPSAweDUwLAo+ID4gPiBAQCAtNjE2LDY5ICs2 MzksODYgQEAgc3RhdGljIGJvb2wgaTJjX2VkaWRfaXNfdmFsaWQoaW50IGZkKQo+ID4gPiAgCQku bm1zZ3MgPSAyLAo+ID4gPiAgCX07Cj4gPiA+ICAKPiA+ID4gKwo+ID4gPiArCWlmICghcmVzdWx0 KQo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsKPiA+ID4gKwlmZCA9IG9wZW4oaTJjX3Bh dGgsIE9fUkRXUik7Cj4gPiA+ICsJaWd0X2Fzc2VydF9uZXEoZmQsIC0xKTsKPiA+ID4gKwo+ID4g PiAgCXJjID0gaW9jdGwoZmQsIEkyQ19SRFdSLCAmbXNnc2V0KTsKPiA+ID4gLQlyZXR1cm4gKHJj ID49IDApID8gZWRpZF9pc192YWxpZChlZGlkKSA6IGZhbHNlOwo+ID4gPiArCj4gPiA+ICsJY2xv c2UoZmQpOwo+ID4gPiArCXJldHVybiByYyA+PSAwOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IC1z dGF0aWMgaW50IGNvdW50X2kyY192YWxpZF9lZGlkcyh2b2lkKQo+ID4gPiArc3RhdGljIHZvaWQg Zm9ybWF0X2hleF9zdHJpbmcodW5zaWduZWQgY2hhciBlZGlkW3N0YXRpYyBFRElEX0xFTkdUSF0s Cj4gPiA+ICsJCQkgICAgICBjaGFyIGJ1ZltzdGF0aWMgRURJRF9MRU5HVEggKiA1ICsgMV0pCj4g PiA+ICB7Cj4gPiA+IC0JaW50IGZkLCByZXQgPSAwOwo+ID4gPiAtCURJUiAqZGlyOwo+ID4gPiAr CWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgRURJRF9MRU5HVEg7ICsraSkKPiA+ID4gKwkJc3ByaW50 ZihidWYraSo1LCAiMHglMDJ4ICIsIGVkaWRbaV0pOwo+ID4gPiArfQo+ID4gPiAgCj4gPiA+IC0J c3RydWN0IGRpcmVudCAqZGlyZW50Owo+ID4gPiAtCWNoYXIgZnVsbF9uYW1lW1BBVEhfTUFYXTsK PiA+ID4gK3N0YXRpYyB2b2lkIHRlc3RfaTJjKHN0cnVjdCBtb2RlX3NldF9kYXRhICpkYXRhKQo+ ID4gPiArewo+ID4gPiArCWJvb2wgZmFpbGVkID0gZmFsc2U7Cj4gPiA+ICsJaWd0X2Rpc3BsYXlf dCBkaXNwbGF5Owo+ID4gPiArCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRpc3BsYXksIGRybV9mZCk7 Cj4gPiA+ICAKPiA+ID4gLQlkaXIgPSBvcGVuZGlyKCIvZGV2LyIpOwo+ID4gPiAtCWlndF9hc3Nl cnQoZGlyKTsKPiA+ID4gKwlmb3IgKGludCBpID0gMDsgaSA8IGRhdGEtPnJlcy0+Y291bnRfY29u bmVjdG9yczsgaSsrKSB7Cj4gPiA+ICsJCXVuc2lnbmVkIGNoYXIgKmRybV9lZGlkID0gZGF0YS0+ ZWRpZHNbaV0gPyBkYXRhLT5lZGlkc1tpXS0+ZGF0YSA6IE5VTEw7Cj4gPiA+ICsJCXVuc2lnbmVk IGNoYXIgaTJjX2VkaWRbRURJRF9MRU5HVEhdID0ge307Cj4gPiA+ICAKPiA+ID4gLQl3aGlsZSAo KGRpcmVudCA9IHJlYWRkaXIoZGlyKSkpIHsKPiA+ID4gLQkJaWYgKHN0cm5jbXAoZGlyZW50LT5k X25hbWUsICJpMmMtIiwgNCkgPT0gMCkgewo+ID4gPiAtCQkJc3ByaW50ZihmdWxsX25hbWUsICIv ZGV2LyVzIiwgZGlyZW50LT5kX25hbWUpOwo+ID4gPiAtCQkJZmQgPSBvcGVuKGZ1bGxfbmFtZSwg T19SRFdSKTsKPiA+ID4gLQkJCWlndF9hc3NlcnRfbmVxKGZkLCAtMSk7Cj4gPiA+IC0JCQlpZiAo aTJjX2VkaWRfaXNfdmFsaWQoZmQpKQo+ID4gPiAtCQkJCXJldCsrOwo+ID4gPiAtCQkJY2xvc2Uo ZmQpOwo+ID4gPiAtCQl9Cj4gPiA+IC0JfQo+ID4gPiArCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9 IGlndF9vdXRwdXRfZnJvbV9jb25uZWN0b3IoJmRpc3BsYXksCj4gPiA+ICsJCQkJCQkJCSBkYXRh LT5jb25uZWN0b3JzW2ldKTsKPiA+ID4gKwkJY2hhciAqY29ubmVjdG9yX25hbWUgPSAoY2hhciAq KSBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KTsKPiA+ID4gIAo+ID4gPiAtCWNsb3NlZGlyKGRpcik7 Cj4gPiA+ICsJCWJvb2wgZ290X2kyY19lZGlkID0gaTJjX3JlYWRfZWRpZChjb25uZWN0b3JfbmFt ZSwgaTJjX2VkaWQpOwo+ID4gPiArCQlib29sIGdvdF9kcm1fZWRpZCA9IGRybV9lZGlkICE9IE5V TEw7Cj4gPiA+ICsJCWJvb2wgaXNfdmdhID0gZGF0YS0+Y29ubmVjdG9yc1tpXS0+Y29ubmVjdG9y X3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX1ZHQTsKPiA+ID4gIAo+ID4gPiAtCXJldHVybiBy ZXQ7Cj4gPiA+IC19Cj4gPiA+ICsJCWJvb2wgZWRpZHNfZXF1YWw7Cj4gPiA+ICAKPiA+ID4gLXN0 YXRpYyBpbnQgY291bnRfdmdhX291dHB1dHMoc3RydWN0IG1vZGVfc2V0X2RhdGEgKmRhdGEpCj4g PiA+IC17Cj4gPiA+IC0JaW50IGNvdW50ID0gMDsKPiA+ID4gKwkJLyogV2UgZmFpbCB0byBkZXRl Y3Qgc29tZSBWR0EgbW9uaXRvcnMgdXNpbmcgb3VyIGkyYyBtZXRob2QuIElmIHlvdSBsb29rCj4g PiA+ICsJCSAqIGF0IHRoZSBkbWVzZyBvZiB0aGVzZSBjYXNlcywgeW91J2xsIHNlZSB0aGUgS2Vy bmVsIGNvbXBsYWluaW5nIGFib3V0Cj4gPiA+ICsJCSAqIHRoZSBFRElEIHJlYWRpbmcgbW9zdGx5 IEZGcyBhbmQgdGhlbiBkaXNhYmxpbmcgYml0LWJhbmdpbmcuIFNpbmNlIHdlCj4gPiA+ICsJCSAq IGRvbid0IHdhbnQgdG8gcmVpbXBsZW1lbnQgZXZlcnl0aGluZyB0aGUgS2VybmVsIGRvZXMsIGxl dCdzIGp1c3QKPiA+ID4gKwkJICogYWNjZXB0IHRoZSBmYWN0IHRoYXQgc29tZSBWR0Egb3V0cHV0 cyB3b24ndCBiZSBwcm9wZXJseSBkZXRlY3RlZC4gKi8KPiA+ID4gKwkJaWYoaXNfdmdhKQo+ID4g PiArCQkJY29udGludWU7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoIWRhdGEtPnJlcykKPiA+ID4gLQkJ cmV0dXJuIDA7Cj4gPiA+ICsJCWlmKCFnb3RfaTJjX2VkaWQgJiYgIWdvdF9kcm1fZWRpZCkKPiA+ ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiArCj4gPiA+ICsJCWlmKGdvdF9pMmNfZWRpZCAmJiBnb3Rf ZHJtX2VkaWQpCj4gPiA+ICsJCQllZGlkc19lcXVhbCA9ICgwID09IG1lbWNtcChkcm1fZWRpZCwg aTJjX2VkaWQsIEVESURfTEVOR1RIKSk7Cj4gPiA+ICsJCWVsc2UKPiA+ID4gKwkJCWVkaWRzX2Vx dWFsID0gZmFsc2U7Cj4gPiA+ICAKPiA+ID4gLQlmb3IgKGludCBpID0gMDsgaSA8IGRhdGEtPnJl cy0+Y291bnRfY29ubmVjdG9yczsgaSsrKQo+ID4gPiAtCQlpZiAoZGF0YS0+Y29ubmVjdG9yc1tp XS0+Y29ubmVjdG9yX3R5cGUgPT0KPiA+ID4gLQkJICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9WR0Ep Cj4gPiA+IC0JCQljb3VudCsrOwo+ID4gPiAgCj4gPiA+IC0JcmV0dXJuIGNvdW50Owo+ID4gPiAt fQo+ID4gPiArCQlpZiAoIWVkaWRzX2VxdWFsKSB7Cj4gPiA+ICsJCQljaGFyIGJ1Zls1ICogRURJ RF9MRU5HVEggKyAxXTsKPiA+ID4gKwkJCWlndF9jcml0aWNhbCgiRm9yIGNvbm5lY3RvciAlcyBF RElEIG1pc21hdGNoIVxuIiwKPiA+ID4gKwkJCQkgICAgIGNvbm5lY3Rvcl9uYW1lKTsKPiA+ID4g IAo+ID4gPiAtc3RhdGljIHZvaWQgdGVzdF9pMmMoc3RydWN0IG1vZGVfc2V0X2RhdGEgKmRhdGEp Cj4gPiA+IC17Cj4gPiA+IC0JaW50IGkyY19lZGlkcyA9IGNvdW50X2kyY192YWxpZF9lZGlkcygp Owo+ID4gPiAtCWludCBkcm1fZWRpZHMgPSBjb3VudF9kcm1fdmFsaWRfZWRpZHMoZGF0YSk7Cj4g PiA+IC0JaW50IHZnYV9vdXRwdXRzID0gY291bnRfdmdhX291dHB1dHMoZGF0YSk7Cj4gPiA+IC0J aW50IGRpZmY7Cj4gPiA+IC0KPiA+ID4gLQlpZ3RfZGVidWcoImkyYyBlZGlkczolZCBkcm0gZWRp ZHM6JWQgdmdhIG91dHB1dHM6JWRcbiIsCj4gPiA+IC0JCSAgaTJjX2VkaWRzLCBkcm1fZWRpZHMs IHZnYV9vdXRwdXRzKTsKPiA+ID4gLQo+ID4gPiAtCS8qIFdlIGZhaWwgdG8gZGV0ZWN0IHNvbWUg VkdBIG1vbml0b3JzIHVzaW5nIG91ciBpMmMgbWV0aG9kLiBJZiB5b3UgbG9vawo+ID4gPiAtCSAq IGF0IHRoZSBkbWVzZyBvZiB0aGVzZSBjYXNlcywgeW91J2xsIHNlZSB0aGUgS2VybmVsIGNvbXBs YWluaW5nIGFib3V0Cj4gPiA+IC0JICogdGhlIEVESUQgcmVhZGluZyBtb3N0bHkgRkZzIGFuZCB0 aGVuIGRpc2FibGluZyBiaXQtYmFuZ2luZy4gU2luY2Ugd2UKPiA+ID4gLQkgKiBkb24ndCB3YW50 IHRvIHJlaW1wbGVtZW50IGV2ZXJ5dGhpbmcgdGhlIEtlcm5lbCBkb2VzLCBsZXQncyBqdXN0Cj4g PiA+IC0JICogYWNjZXB0IHRoZSBmYWN0IHRoYXQgc29tZSBWR0Egb3V0cHV0cyB3b24ndCBiZSBw cm9wZXJseSBkZXRlY3RlZC4gKi8KPiA+ID4gLQlkaWZmID0gZHJtX2VkaWRzIC0gaTJjX2VkaWRz Owo+ID4gPiAtCWlndF9hc3NlcnQoZGlmZiA8PSB2Z2Ffb3V0cHV0cyAmJiBkaWZmID49IDApOwo+ ID4gPiArCQkJaWYoZ290X2kyY19lZGlkKQo+ID4gPiArCQkJCWZvcm1hdF9oZXhfc3RyaW5nKGky Y19lZGlkLCBidWYpOwo+ID4gPiArCQkJZWxzZQo+ID4gPiArCQkJCXNwcmludGYoYnVmLCAiTlVM TCIpOwo+ID4gPiArCj4gPiA+ICsJCQlpZ3RfY3JpdGljYWwoImkyYzogJXNcbiIsIGJ1Zik7Cj4g PiA+ICsKPiA+ID4gKwkJCWlmKGdvdF9kcm1fZWRpZCkKPiA+ID4gKwkJCQlmb3JtYXRfaGV4X3N0 cmluZyhkcm1fZWRpZCwgYnVmKTsKPiA+ID4gKwkJCWVsc2UKPiA+ID4gKwkJCQlzcHJpbnRmKGJ1 ZiwgIk5VTEwiKTsKPiA+ID4gKwo+ID4gPiArCQkJaWd0X2NyaXRpY2FsKCJkcm06ICVzXG4iLCBi dWYpOwo+ID4gPiArCj4gPiA+ICsJCQlmYWlsZWQgPSB0cnVlOwo+ID4gPiArCQl9Cj4gPiA+ICsJ fQo+ID4gPiArCWlndF9mYWlsX29uX2YoZmFpbGVkLCAiTWlzbWF0Y2ggb24gRURJRCB3ZSBnb3Qg ZnJvbSBpMmMgYW5kIERSTSFcbiIpOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICBzdGF0aWMgdm9p ZCBzZXR1cF9wYzgodm9pZCkKPiA+ID4gLS0gCj4gPiA+IDIuMjEuMAo+ID4gPiAKPiAKPiAtLSAK PiBWaWxsZSBTeXJqw6Rsw6QKPiBJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2lndC1kZXY=