From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C91410E25F for ; Mon, 14 Nov 2022 07:46:16 +0000 (UTC) From: "Hogander, Jouni" To: "igt-dev@lists.freedesktop.org" , "Gupta, Nidhi1" Date: Mon, 14 Nov 2022 07:46:07 +0000 Message-ID: <16859711a398715329704a6185631e9be873881d.camel@intel.com> References: <1668408044-618-1-git-send-email-nidhi1.gupta@intel.com> <1668408044-618-2-git-send-email-nidhi1.gupta@intel.com> In-Reply-To: <1668408044-618-2-git-send-email-nidhi1.gupta@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH 1/2] tests/i915/i915_pm_backlight: Add new subtest to validate dual panel backlight List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: SGVsbG8sCgpPbmUgbW9yZSBjb21tZW50IGJlbG93LgoKT24gTW9uLCAyMDIyLTExLTE0IGF0IDEy OjEwICswNTMwLCBOaWRoaSBHdXB0YSB3cm90ZToKPiBTaW5jZSBkcml2ZXIgY2FuIG5vdyBzdXBw b3J0IG11bHRpcGxlIGVEUHMgYW5kIERlYnVnZnMgc3RydWN0dXJlIGZvcgo+IGJhY2tsaWdodCBj aGFuZ2VkIHBlciBjb25uZWN0b3IgdGhlIHRlc3Qgc2hvdWxkIHRoZW4gaXRlcmF0ZSB0aHJvdWdo Cj4gYWxsIGVEUCBjb25uZWN0b3JzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE5pZGhpIEd1cHRhIDxu aWRoaTEuZ3VwdGFAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEJoYW51cHJha2FzaCBNb2Rl bSA8YmhhbnVwcmFrYXNoLm1vZGVtQGludGVsLmNvbT4KPiAtLS0KPiDCoHRlc3RzL2k5MTUvaTkx NV9wbV9iYWNrbGlnaHQuYyB8IDIwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4g LS0tLS0tLS0tLQo+IMKgMSBmaWxlIGNoYW5nZWQsIDE0OCBpbnNlcnRpb25zKCspLCA2MCBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5j Cj4gYi90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMKPiBpbmRleCBjYWZhZTdmLi5mZGYx MzE1IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwo+ICsrKyBi L3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwo+IEBAIC0zNCwyOSArMzQsMzkgQEAKPiDC oCNpbmNsdWRlIDxlcnJuby5oPgo+IMKgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+IMKgI2luY2x1ZGUg PHRpbWUuaD4KPiArI2luY2x1ZGUgImlndF9kZXZpY2UuaCIKPiArI2luY2x1ZGUgImlndF9kZXZp Y2Vfc2Nhbi5oIgo+IMKgCj4gwqBzdHJ1Y3QgY29udGV4dCB7Cj4gwqDCoMKgwqDCoMKgwqDCoGlu dCBtYXg7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gK8KgwqDCoMKg wqDCoMKgY2hhciBwYXRoW1BBVEhfTUFYXTsKPiDCoH07Cj4gwqAKPiArZW51bSB7Cj4gK8KgwqDC oMKgwqDCoMKgVEVTVF9OT05FID0gMCwKPiArwqDCoMKgwqDCoMKgwqBURVNUX0RQTVMsCj4gK8Kg wqDCoMKgwqDCoMKgVEVTVF9TVVNQRU5ELAo+ICt9Owo+IMKgCgpUaGVzZSBzaG91bGQgZ28gdG8g dGhlIHNlY29uZCBwYXRjaC4KCj4gwqAjZGVmaW5lIFRPTEVSQU5DRSA1IC8qIHBlcmNlbnQgKi8K PiAtI2RlZmluZSBCQUNLTElHSFRfUEFUSCAiL3N5cy9jbGFzcy9iYWNrbGlnaHQvaW50ZWxfYmFj a2xpZ2h0Igo+ICsjZGVmaW5lIEJBQ0tMSUdIVF9QQVRIICIvc3lzL2NsYXNzL2JhY2tsaWdodCIK PiDCoAo+IMKgI2RlZmluZSBGQURFU1RFUFMgMTAKPiDCoCNkZWZpbmUgRkFERVNQRUVEIDEwMCAv KiBtaWxsaXNlY29uZHMgYmV0d2VlbiBzdGVwcyAqLwo+IMKgCj4gKyNkZWZpbmUgTlVNX0VEUF9P VVRQVVRTIDIKPiArCj4gwqBJR1RfVEVTVF9ERVNDUklQVElPTigiQmFzaWMgYmFja2xpZ2h0IHN5 c2ZzIHRlc3QiKTsKPiDCoAo+IC1zdGF0aWMgaW50IGJhY2tsaWdodF9yZWFkKGludCAqcmVzdWx0 LCBjb25zdCBjaGFyICpmbmFtZSkKPiArc3RhdGljIGludCBiYWNrbGlnaHRfcmVhZChpbnQgKnJl c3VsdCwgY29uc3QgY2hhciAqZm5hbWUsIHN0cnVjdAo+IGNvbnRleHQgKmNvbnRleHQpCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBmZDsKPiDCoMKgwqDCoMKgwqDCoMKgY2hhciBmdWxsW1BB VEhfTUFYXTsKPiAtwqDCoMKgwqDCoMKgwqBjaGFyIGRzdFs2NF07Cj4gK8KgwqDCoMKgwqDCoMKg Y2hhciBkc3RbNTEyXTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IHIsIGU7Cj4gwqAKPiAtwqDCoMKg wqDCoMKgwqBpZ3RfYXNzZXJ0KHNucHJpbnRmKGZ1bGwsIFBBVEhfTUFYLCAiJXMvJXMiLCBCQUNL TElHSFRfUEFUSCwKPiBmbmFtZSkgPCBQQVRIX01BWCk7Cj4gLQo+ICvCoMKgwqDCoMKgwqDCoGln dF9hc3NlcnQoc25wcmludGYoZnVsbCwgUEFUSF9NQVgsICIlcy8lcy8lcyIsCj4gQkFDS0xJR0hU X1BBVEgsIGNvbnRleHQtPnBhdGgsIGZuYW1lKSA8IFBBVEhfTUFYKTsKPiDCoMKgwqDCoMKgwqDC oMKgZmQgPSBvcGVuKGZ1bGwsIE9fUkRPTkxZKTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGZkID09 IC0xKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1lcnJubzsKPiBA QCAtNzMsMTQgKzgzLDE0IEBAIHN0YXRpYyBpbnQgYmFja2xpZ2h0X3JlYWQoaW50ICpyZXN1bHQs IGNvbnN0IGNoYXIKPiAqZm5hbWUpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnJubzsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IGJhY2tsaWdodF93cml0ZShpbnQgdmFsdWUsIGNvbnN0IGNo YXIgKmZuYW1lKQo+ICtzdGF0aWMgaW50IGJhY2tsaWdodF93cml0ZShpbnQgdmFsdWUsIGNvbnN0 IGNoYXIgKmZuYW1lLCBzdHJ1Y3QKPiBjb250ZXh0ICpjb250ZXh0KQo+IMKgewo+IMKgwqDCoMKg wqDCoMKgwqBpbnQgZmQ7Cj4gwqDCoMKgwqDCoMKgwqDCoGNoYXIgZnVsbFtQQVRIX01BWF07Cj4g wqDCoMKgwqDCoMKgwqDCoGNoYXIgc3JjWzY0XTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IGxlbjsK PiDCoAo+IC3CoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoc25wcmludGYoZnVsbCwgUEFUSF9NQVgs ICIlcy8lcyIsIEJBQ0tMSUdIVF9QQVRILAo+IGZuYW1lKSA8IFBBVEhfTUFYKTsKPiArwqDCoMKg wqDCoMKgwqBpZ3RfYXNzZXJ0KHNucHJpbnRmKGZ1bGwsIFBBVEhfTUFYLCAiJXMvJXMvJXMiLAo+ IEJBQ0tMSUdIVF9QQVRILCBjb250ZXh0LT5wYXRoLCBmbmFtZSkgPCBQQVRIX01BWCk7Cj4gwqDC oMKgwqDCoMKgwqDCoGZkID0gb3BlbihmdWxsLCBPX1dST05MWSk7Cj4gwqDCoMKgwqDCoMKgwqDC oGlmIChmZCA9PSAtMSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAt ZXJybm87Cj4gQEAgLTEwMCwxMiArMTEwLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RfYW5kX3Zlcmlm eShzdHJ1Y3QgY29udGV4dAo+ICpjb250ZXh0LCBpbnQgdmFsKQo+IMKgwqDCoMKgwqDCoMKgwqBj b25zdCBpbnQgdG9sZXJhbmNlID0gdmFsICogVE9MRVJBTkNFIC8gMTAwOwo+IMKgwqDCoMKgwqDC oMKgwqBpbnQgcmVzdWx0Owo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9lcShiYWNr bGlnaHRfd3JpdGUodmFsLCAiYnJpZ2h0bmVzcyIpLCAwKTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rf YXNzZXJ0X2VxKGJhY2tsaWdodF9yZWFkKCZyZXN1bHQsICJicmlnaHRuZXNzIiksIDApOwo+ICvC oMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZXEoYmFja2xpZ2h0X3dyaXRlKHZhbCwgImJyaWdodG5l c3MiLCBjb250ZXh0KSwKPiAwKTsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKGJhY2ts aWdodF9yZWFkKCZyZXN1bHQsICJicmlnaHRuZXNzIiwgY29udGV4dCksCj4gMCk7Cj4gwqDCoMKg wqDCoMKgwqDCoC8qIENoZWNrIHRoYXQgdGhlIGV4YWN0IHZhbHVlIHN0aWNrcyAqLwo+IMKgwqDC oMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKHJlc3VsdCwgdmFsKTsKPiDCoAo+IC3CoMKgwqDCoMKg wqDCoGlndF9hc3NlcnRfZXEoYmFja2xpZ2h0X3JlYWQoJnJlc3VsdCwgImFjdHVhbF9icmlnaHRu ZXNzIiksCj4gMCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9lcShiYWNrbGlnaHRfcmVh ZCgmcmVzdWx0LCAiYWN0dWFsX2JyaWdodG5lc3MiLAo+IGNvbnRleHQpLCAwKTsKPiDCoMKgwqDC oMKgwqDCoMKgLyogU29tZSByb3VuZGluZyBtYXkgaGFwcGVuIGRlcGVuZGluZyBvbiBodyAqLwo+ IMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2YocmVzdWx0ID49IG1heCgwLCB2YWwgLSB0b2xl cmFuY2UpICYmCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXN1 bHQgPD0gbWluKGNvbnRleHQtPm1heCwgdmFsICsgdG9sZXJhbmNlKSwKPiBAQCAtMTI0LDE2ICsx MzQsMTYgQEAgc3RhdGljIHZvaWQgdGVzdF9iYWRfYnJpZ2h0bmVzcyhzdHJ1Y3QgY29udGV4dAo+ ICpjb250ZXh0KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgdmFsOwo+IMKgwqDCoMKgwqDC oMKgwqAvKiBGaXJzdCB3cml0ZSBzb21lIHNhbmUgdmFsdWUgKi8KPiAtwqDCoMKgwqDCoMKgwqBi YWNrbGlnaHRfd3JpdGUoY29udGV4dC0+bWF4IC8gMiwgImJyaWdodG5lc3MiKTsKPiArwqDCoMKg wqDCoMKgwqBiYWNrbGlnaHRfd3JpdGUoY29udGV4dC0+bWF4IC8gMiwgImJyaWdodG5lc3MiLCBj b250ZXh0KTsKPiDCoMKgwqDCoMKgwqDCoMKgLyogV3JpdGluZyBpbnZhbGlkIHZhbHVlcyBzaG91 bGQgZmFpbCBhbmQgbm90IGNoYW5nZSB0aGUKPiB2YWx1ZSAqLwo+IC3CoMKgwqDCoMKgwqDCoGln dF9hc3NlcnRfbHQoYmFja2xpZ2h0X3dyaXRlKC0xLCAiYnJpZ2h0bmVzcyIpLCAwKTsKPiAtwqDC oMKgwqDCoMKgwqBiYWNrbGlnaHRfcmVhZCgmdmFsLCAiYnJpZ2h0bmVzcyIpOwo+ICvCoMKgwqDC oMKgwqDCoGlndF9hc3NlcnRfbHQoYmFja2xpZ2h0X3dyaXRlKC0xLCAiYnJpZ2h0bmVzcyIsIGNv bnRleHQpLCAwKTsKPiArwqDCoMKgwqDCoMKgwqBiYWNrbGlnaHRfcmVhZCgmdmFsLCAiYnJpZ2h0 bmVzcyIsIGNvbnRleHQpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKHZhbCwgY29u dGV4dC0+bWF4IC8gMik7Cj4gLcKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9sdChiYWNrbGlnaHRf d3JpdGUoY29udGV4dC0+bWF4ICsgMSwKPiAiYnJpZ2h0bmVzcyIpLCAwKTsKPiAtwqDCoMKgwqDC oMKgwqBiYWNrbGlnaHRfcmVhZCgmdmFsLCAiYnJpZ2h0bmVzcyIpOwo+ICvCoMKgwqDCoMKgwqDC oGlndF9hc3NlcnRfbHQoYmFja2xpZ2h0X3dyaXRlKGNvbnRleHQtPm1heCArIDEsICJicmlnaHRu ZXNzIiwKPiBjb250ZXh0KSwgMCk7Cj4gK8KgwqDCoMKgwqDCoMKgYmFja2xpZ2h0X3JlYWQoJnZh bCwgImJyaWdodG5lc3MiLCBjb250ZXh0KTsKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9l cSh2YWwsIGNvbnRleHQtPm1heCAvIDIpOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfbHQo YmFja2xpZ2h0X3dyaXRlKElOVF9NQVgsICJicmlnaHRuZXNzIiksIDApOwo+IC3CoMKgwqDCoMKg wqDCoGJhY2tsaWdodF9yZWFkKCZ2YWwsICJicmlnaHRuZXNzIik7Cj4gK8KgwqDCoMKgwqDCoMKg aWd0X2Fzc2VydF9sdChiYWNrbGlnaHRfd3JpdGUoSU5UX01BWCwgImJyaWdodG5lc3MiLAo+IGNv bnRleHQpLCAwKTsKPiArwqDCoMKgwqDCoMKgwqBiYWNrbGlnaHRfcmVhZCgmdmFsLCAiYnJpZ2h0 bmVzcyIsIGNvbnRleHQpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKHZhbCwgY29u dGV4dC0+bWF4IC8gMik7Cj4gwqB9Cj4gwqAKPiBAQCAtMTc5LDIxICsxODksNTcgQEAgdGVzdF9m YWRlX3dpdGhfc3VzcGVuZChzdHJ1Y3QgY29udGV4dCAqY29udGV4dCwKPiBpZ3Rfb3V0cHV0X3Qg Km91dHB1dCkKPiDCoMKgwqDCoMKgwqDCoMKgdGVzdF9mYWRlKGNvbnRleHQpOwo+IMKgfQo+IMKg Cj4gK3N0YXRpYyB2b2lkIHRlc3RfY2xlYW51cChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3Rf b3V0cHV0X3QKPiAqb3V0cHV0KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X291dHB1dF9zZXRf cGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfY29t bWl0MihkaXNwbGF5LCBkaXNwbGF5LT5pc19hdG9taWMgPwo+IENPTU1JVF9BVE9NSUMgOiBDT01N SVRfTEVHQUNZKTsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93 ZXJfbWFuYWdlbWVudCgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0ZXN0X3NldHVwKGlndF9k aXNwbGF5X3QgZGlzcGxheSwgaWd0X291dHB1dF90ICpvdXRwdXQpCj4gK3sKPiArwqDCoMKgwqDC oMKgwqBpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiArwqDCoMKgwqDCoMKgwqBkcm1Nb2RlTW9kZUlu Zm8gKm1vZGU7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGlndF9mYiBmYjsKPiArwqDCoMKgwqDC oMKgwqBlbnVtIHBpcGUgcGlwZTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfcmVz ZXQoJmRpc3BsYXkpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9waXBlKCZkaXNwbGF5 LCBwaXBlKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghaWd0X3BpcGVf Y29ubmVjdG9yX3ZhbGlkKHBpcGUsIG91dHB1dCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0 KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9jcmVhdGVfcGF0dGVy bl9mYihkaXNwbGF5LmRybV9mZCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1vZGUtPmhkaXNwbGF5LCBt b2RlLT52ZGlzcGxheSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9GT1JNQVRfWFJHQjg4ODgsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX01PRF9MSU5FQVIsICZmYik7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBl KG91dHB1dCwKPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmIpOwo+ICsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfY29tbWl0MigmZGlzcGxheSwgZGlz cGxheS5pc19hdG9taWMgPwo+IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJf bWFuYWdlbWVudCgpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7 Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICt9Cj4gKwo+IMKgaWd0X21haW4KPiDCoHsKPiAtwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgY29udGV4dCBjb250ZXh0ID0gezB9Owo+IC3CoMKgwqDCoMKgwqDCoGlu dCBvbGQ7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IG9sZCwgZmQ7Cj4gK8KgwqDCoMKgwqDCoMKgaW50 IGkgPSAwOwo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV90IGRpc3BsYXk7Cj4gwqDCoMKg wqDCoMKgwqDCoGlndF9vdXRwdXRfdCAqb3V0cHV0Owo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBp Z3RfZmIgZmI7Cj4gK8KgwqDCoMKgwqDCoMKgY2hhciBmaWxlX3BhdGhfbltQQVRIX01BWF0gPSAi IjsKPiArwqDCoMKgwqDCoMKgwqBib29sIGR1YWxfZWRwID0gZmFsc2U7Cj4gK8KgwqDCoMKgwqDC oMKgc3RydWN0IGNvbnRleHQgY29udGV4dHNbTlVNX0VEUF9PVVRQVVRTXTsKPiDCoAo+IMKgwqDC oMKgwqDCoMKgwqBpZ3RfZml4dHVyZSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGVudW0gcGlwZSBwaXBlOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm9vbCBm b3VuZCA9IGZhbHNlOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciBmdWxs X25hbWVbMzJdID0ge307Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpu YW1lOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1Nb2RlTW9kZUluZm8gKm1v ZGU7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9wbGFuZV90ICpwcmltYXJ5 Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogQmFja2xpZ2h0IHRlc3RzIHJlcXVpcmVzIHRoZSBvdXRw dXQgdG8gYmUgZW5hYmxlZCwKPiBAQCAtMjAyLDU2ICsyNDgsOTggQEAgaWd0X21haW4KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUo KTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3JlcXVpcmUo JmRpc3BsYXksCj4gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCkpOwo+IMKgCj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIEdldCB0aGUgbWF4IHZhbHVlIGFuZCBza2lwIHRo ZSB3aG9sZSB0ZXN0IGlmIHN5c2ZzCj4gaW50ZXJmYWNlIG5vdCBhdmFpbGFibGUgKi8KPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3NraXBfb24oYmFja2xpZ2h0X3JlYWQoJm9s ZCwgImJyaWdodG5lc3MiKSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9h c3NlcnQoYmFja2xpZ2h0X3JlYWQoJmNvbnRleHQubWF4LAo+ICJtYXhfYnJpZ2h0bmVzcyIpID4g LTEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9jb25uZWN0ZWRf b3V0cHV0KCZkaXNwbGF5LCBvdXRwdXQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3ItPmNvbm5lY3Rv cl90eXBlCj4gIT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiDC oAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBzaG91bGQgYmUgLi4vLi4vY2Fy ZFgtJG91dHB1dCAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0 X2x0KDEyLCByZWFkbGluayhCQUNLTElHSFRfUEFUSCAiL2RldmljZSIsCj4gZnVsbF9uYW1lLCBz aXplb2YoZnVsbF9uYW1lKSAtIDEpKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bmFtZSA9IGJhc2VuYW1lKGZ1bGxfbmFtZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZm91bmQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc25wcmludGYoZmlsZV9wYXRo X24sIFBBVEhfTUFYLAo+ICIlcy9jYXJkJWktJXMtYmFja2xpZ2h0L2JyaWdodG5lc3MiLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQkFDS0xJR0hUX1BBVEgsCj4gaWd0X2RldmljZV9nZXRfY2Fy ZF9pbmRleChkaXNwbGF5LmRybV9mZCksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3Rfb3V0 cHV0X25hbWUob3V0cHV0KSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBlbHNlCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc25wcmludGYoZmlsZV9wYXRoX24sIFBBVEhfTUFYLAo+ ICIlcy9pbnRlbF9iYWNrbGlnaHQvYnJpZ2h0bmVzcyIsIEJBQ0tMSUdIVF9QQVRIKTsKPiDCoAo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRf b3V0cHV0KCZkaXNwbGF5LCBwaXBlLAo+IG91dHB1dCkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHN0cmNtcChuYW1lICsgNiwgb3V0cHV0LT5u YW1lKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZk ID0gb3BlbihmaWxlX3BhdGhfbiwgT19SRE9OTFkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGZkID09IC0xKSB7Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVl Owo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm91bmQg PSB0cnVlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg YnJlYWs7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZm91 bmQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc25wcmludGYoY29udGV4dHNbaV0ucGF0aCwgUEFUSF9NQVgsCj4gImNhcmQl aS0lcy1iYWNrbGlnaHQiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBpZ3RfZGV2aWNlX2dl dF9jYXJkX2luZGV4KGRpc3BsYXkuZHJtX2ZkKSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGln dF9vdXRwdXRfbmFtZShvdXRwdXQpKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGVsc2UKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbnByaW50Zihjb250ZXh0c1tpXS5wYXRoLCBQ QVRIX01BWCwKPiAiaW50ZWxfYmFja2xpZ2h0Iik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xvc2UoZmQpOwo+ICsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHNob3VsZCBiZSAuLi8uLi9jYXJk WC0kb3V0cHV0ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBzbnByaW50ZihmaWxlX3BhdGhfbiwgUEFUSF9NQVgsCj4gIiVzLyVzL2RldmljZSIsIEJB Q0tMSUdIVF9QQVRILCBjb250ZXh0c1tpXS5wYXRoKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfbHQoMTYsIHJlYWRsaW5rKGZpbGVf cGF0aF9uLAo+IGZ1bGxfbmFtZSwgc2l6ZW9mKGZ1bGxfbmFtZSkgLSAxKSk7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuYW1lID0gYmFzZW5hbWUoZnVs bF9uYW1lKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoIXN0cmNtcChuYW1lICsgNiwgb3V0cHV0LT5uYW1lKSkgewo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRl eHRzW2krK10ub3V0cHV0ID0gb3V0cHV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZm91bmQpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGR1YWxfZWRwID0gdHJ1ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGZvdW5kID0gdHJ1ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmVfZihmb3VuZCwgIk5v IHZhbGlkIG91dHB1dCBmb3VuZC5cbiIpOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfcmVxdWlyZV9mKGZvdW5kLAo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiQ291bGQg bm90IG1hcCBiYWNrbGlnaHQgZm9yIFwiJXNcIiB0bwo+IGNvbm5lY3RlZCBvdXRwdXRcbiIsCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG5hbWUpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBt b2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGRpc3BsYXkuZHJtX2ZkLAo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9GT1JN QVRfTU9EX0xJTkVBUiwgJmZiKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJp bWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LAo+IERSTV9QTEFORV9UWVBF X1BSSU1BUlkpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfcGxhbmVfc2V0 X2ZiKHByaW1hcnksICZmYik7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3QoImJhc2ljLWJy aWdodG5lc3MiKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoaW50IGog PSAwOyBqIDwgKGR1YWxfZWRwID8gMiA6IDEpOyBqKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoZGlzcGxheSwgJmNvbnRleHRz LT5vdXRwdXRbal0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWd0X2Fzc2VydChiYWNrbGlnaHRfcmVhZCgmY29udGV4dHNbal0ubWF4LAo+ICJtYXhf YnJpZ2h0bmVzcyIsICZjb250ZXh0c1tqXSkgPiAtMSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2JyaWdodG5lc3MoJmNvbnRleHRzW2pdKTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xl YW51cCgmZGlzcGxheSwgb3V0cHV0KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fQo+ICvCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZ3RfZGlzcGxheV9jb21taXQyKCZkaXNwbGF5LCBkaXNwbGF5LmlzX2F0b21pYyA/Cj4gQ09N TUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4gK8KgwqDC oMKgwqDCoMKgaWd0X3N1YnRlc3QoImJhZC1icmlnaHRuZXNzIikgewo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBmb3IgKGludCBqID0gMDsgaiA8IChkdWFsX2VkcCA/IDIgOiAxKTsg aisrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0 ZXN0X3NldHVwKGRpc3BsYXksICZjb250ZXh0cy0+b3V0cHV0W2pdKTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoYmFja2xpZ2h0X3Jl YWQoJmNvbnRleHRzW2pdLm1heCwKPiAibWF4X2JyaWdodG5lc3MiLCAmY29udGV4dHNbal0pID4g LTEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVz dF9iYWRfYnJpZ2h0bmVzcygmY29udGV4dHNbal0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkaXNwbGF5LCBvdXRwdXQpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICvC oMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0KCJmYWRlIikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBmb3IgKGludCBqID0gMDsgaiA8IChkdWFsX2VkcCA/IDIgOiAxKTsgaisrKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3Nl dHVwKGRpc3BsYXksICZjb250ZXh0cy0+b3V0cHV0W2pdKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoYmFja2xpZ2h0X3JlYWQoJmNv bnRleHRzW2pdLm1heCwKPiAibWF4X2JyaWdodG5lc3MiLCAmY29udGV4dHNbal0pID4gLTEpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9mYWRl KCZjb250ZXh0c1tqXSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB0ZXN0X2NsZWFudXAoJmRpc3BsYXksIG91dHB1dCk7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoGln dF9zdWJ0ZXN0KCJmYWRlX3dpdGhfZHBtcyIpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZm9yIChpbnQgaiA9IDA7IGogPCAoZHVhbF9lZHAgPyAyIDogMSk7IGorKykgewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9zZXR1cChk aXNwbGF5LCAmY29udGV4dHMtPm91dHB1dFtqXSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KGJhY2tsaWdodF9yZWFkKCZjb250ZXh0 c1tqXS5tYXgsCj4gIm1heF9icmlnaHRuZXNzIiwgJmNvbnRleHRzW2pdKSA+IC0xKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfZmFkZV93aXRo X2RwbXMoJmNvbnRleHRzW2pdLCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkaXNwbGF5LCBvdXRwdXQpOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICvCoMKg wqDCoMKgwqDCoGlndF9zdWJ0ZXN0KCJmYWRlX3dpdGhfc3VzcGVuZCIpIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpbnQgaiA9IDA7IGogPCAoZHVhbF9lZHAgPyAyIDog MSk7IGorKykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdGVzdF9zZXR1cChkaXNwbGF5LCAmY29udGV4dHMtPm91dHB1dFtqXSk7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KGJhY2tsaWdo dF9yZWFkKCZjb250ZXh0c1tqXS5tYXgsCj4gIm1heF9icmlnaHRuZXNzIiwgJmNvbnRleHRzW2pd KSA+IC0xKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHRlc3RfZmFkZV93aXRoX3N1c3BlbmQoJmNvbnRleHRzW2pdLCBvdXRwdXQpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkaXNw bGF5LCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDC oMKgwqDCoMKgfQo+ICsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0KCJiYXNpYy1i cmlnaHRuZXNzIikKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9icmlnaHRu ZXNzKCZjb250ZXh0KTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgiYmFkLWJyaWdodG5l c3MiKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2JhZF9icmlnaHRuZXNz KCZjb250ZXh0KTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgiZmFkZSIpCj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfZmFkZSgmY29udGV4dCk7Cj4gLcKgwqDCoMKg wqDCoMKgaWd0X3N1YnRlc3QoImZhZGVfd2l0aF9kcG1zIikKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdGVzdF9mYWRlX3dpdGhfZHBtcygmY29udGV4dCwgb3V0cHV0KTsKPiAtwqDC oMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgiZmFkZV93aXRoX3N1c3BlbmQiKQo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2ZhZGVfd2l0aF9zdXNwZW5kKCZjb250ZXh0LCBvdXRw dXQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlndF9maXh0dXJlIHsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIFJlc3RvcmUgb2xkIGJyaWdodG5lc3MgKi8KPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmFja2xpZ2h0X3dyaXRlKG9sZCwgImJyaWdodG5lc3Mi KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpbnQgaiA9IDA7IGogPCAo ZHVhbF9lZHAgPyAyIDogMSk7IGorKykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYmFja2xpZ2h0X3dyaXRlKG9sZCwgImJyaWdodG5lc3MiLAo+ICZj b250ZXh0c1tqXSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfZmluaSgmZGlzcGxheSk7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9yZW1vdmVfZmIoZGlzcGxheS5k cm1fZmQsICZmYik7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfcG1fcmVz dG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY2xvc2UoZGlzcGxheS5kcm1fZmQpOwo+IMKgwqDCoMKgwqDCoMKgwqB9Cgo=