From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 5A70A26098 for ; Sat, 9 Jun 2018 14:41:09 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MCPFLL3xkyEY for ; Sat, 9 Jun 2018 14:41:09 -0400 (EDT) Received: from f492.i.mail.ru (f492.i.mail.ru [217.69.138.159]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id E721A26097 for ; Sat, 9 Jun 2018 14:41:06 -0400 (EDT) Received: by f492.i.mail.ru with local (envelope-from ) id 1fRinQ-0004Oc-IG for tarantool-patches@freelists.org; Sat, 09 Jun 2018 21:41:04 +0300 From: =?UTF-8?B?0JzQtdGA0LPQtdC9INCY0LzQtdC10LI=?= Subject: [tarantool-patches] =?UTF-8?B?UmU6IFt0YXJhbnRvb2wtcGF0Y2hlc10gUmU6IFtQQVRDSCB2NyAxLzFdIGJv?= =?UTF-8?B?eDogY3JlYXRlIGJpZ3JlZnMgZm9yIHR1cGxlcw==?= MIME-Version: 1.0 Date: Sat, 09 Jun 2018 21:41:04 +0300 Message-ID: <1528569664.354142726@f492.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--xqTC9BIjQxsRdlqNtktW4ysmAIeZ6NCJ1528569664" In-Reply-To: <9185aed4-3f3e-6548-b210-ebf400114fe0@tarantool.org> References: <1d9d86e84669c700adf694a8178f7133a52e9262.1528555089.git.imeevma@gmail.com> <9185aed4-3f3e-6548-b210-ebf400114fe0@tarantool.org> Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: tarantool-patches@freelists.org ----ALT--xqTC9BIjQxsRdlqNtktW4ysmAIeZ6NCJ1528569664 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CgoKPtCh0YPQsdCx0L7RgtCwLCAgOSDQuNGO0L3RjyAyMDE4LCAxODoxNSArMDM6MDAg0L7RgiBW bGFkaXNsYXYgU2hwaWxldm95IDx2LnNocGlsZXZveUB0YXJhbnRvb2wub3JnPjoKPgo+VGhhbmtz IGZvciB0aGUgcGF0Y2ghIEkgaGF2ZSBwdXNoZWQgYSBzZXBhcmF0ZSBjb21taXQgd2l0aCBteSBm aXhlcywgYnV0Cj5pdCBkb2VzIG5vdCBwYXNzIHRoZSB0ZXN0LiBQbGVhc2UsIGZpeCBpdC4KPgo+ QW5kIHVzZSB1bml0LmggaGVscGVyczogb2ssIGlzbnQsIGlzLCBmYWlsIGV0YyB0byB0ZXN0IHNv bWV0aGluZyBpbnN0ZWFkCj5vZiBhc3NlcnRpb25zLiBBc3NlcnQgaXMgb21pdHRlZCBpbiBSZWxl YXNlIGJ1aWxkLCBhbmQgdGhlIHRlc3Qgd2lsbCB0ZXN0Cj5ub3RoaW5nLiAKRG9uZS4KPgo+Cj5P biAwOS8wNi8yMDE4IDE3OjQwLCAgaW1lZXZtYUB0YXJhbnRvb2wub3JnIHdyb3RlOgo+PiBEdWUg dG8gbGltaXRhdGlvbiBvZiByZWZlcmVuY2UgY291bnRlcnMgZm9yIHR1cGxlIGJlaW5nIG9ubHkK Pj4gNjU1MzUgaXQgd2FzIHBvc3NpYmxlIHRvIHJlYWNoIHRoaXMgbGltaXRhdGlvbi4gVGhpcyBw YXRjaAo+PiBpbmNyZWFzZXMgY2FwYWNpdHkgb2YgcmVmZXJlbmNlIGNvdW50ZXJzIHRvIDQgYmls bGlvbnMuCj4+IAo+PiBDbG9zZXMgIzMyMjQKPj4gLS0tCj4+IEJyYW5jaDogIGh0dHBzOi8vZ2l0 aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL2NvbW1pdHMvaW1lZXZtYS9naC0zMjI0LXR1cGxl LWJpZ3JlZnMKPj4gSXNzdWU6ICBodHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9v bC9pc3N1ZXMvMzIyNAo+PiAKPj4gICBzcmMvYm94L2JveC5jYyAgICAgICAgICAgICAgICB8ICAy MCArKystLS0KPj4gICBzcmMvYm94L2VycmNvZGUuaCAgICAgICAgICAgICB8ICAgMiArLQo+PiAg IHNyYy9ib3gvaW5kZXguY2MgICAgICAgICAgICAgIHwgIDIwICsrKy0tLQo+PiAgIHNyYy9ib3gv bHVhL3R1cGxlLmMgICAgICAgICAgIHwgICA1ICstCj4+ICAgc3JjL2JveC9wb3J0LmMgICAgICAg ICAgICAgICAgfCAgIDggKy0tCj4+ICAgc3JjL2JveC90dXBsZS5jICAgICAgICAgICAgICAgfCAx NDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+ICAgc3JjL2Jv eC90dXBsZS5oICAgICAgICAgICAgICAgfCAxMDUgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLQo+PiAgIHNyYy9ib3gvdmlueWwuYyAgICAgICAgICAgICAgIHwgIDM4ICsrKysrLS0tLS0t Cj4+ICAgdGVzdC9ib3gvbWlzYy5yZXN1bHQgICAgICAgICAgfCAgMzkgKysrKysrLS0tLS0tCj4+ ICAgdGVzdC9ib3gvc2VsZWN0LnJlc3VsdCAgICAgICAgfCAgNDMgKysrKysrKysrKystLQo+PiAg IHRlc3QvYm94L3NlbGVjdC50ZXN0Lmx1YSAgICAgIHwgIDIxICsrKysrLS0KPj4gICB0ZXN0L3Vu aXQvQ01ha2VMaXN0cy50eHQgICAgICB8ICAgMyArCj4+ICAgdGVzdC91bml0L3R1cGxlX2JpZ3Jl Zi5jICAgICAgfCAxMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIHRl c3QvdW5pdC90dXBsZV9iaWdyZWYucmVzdWx0IHwgICA1ICsrCj4+ICAgMTQgZmlsZXMgY2hhbmdl ZCwgNDEzIGluc2VydGlvbnMoKyksIDE1NiBkZWxldGlvbnMoLSkKPj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgdGVzdC91bml0L3R1cGxlX2JpZ3JlZi5jCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRl c3QvdW5pdC90dXBsZV9iaWdyZWYucmVzdWx0Cj4+IAo+PiBkaWZmIC0tZ2l0IGEvc3JjL2JveC9i b3guY2MgYi9zcmMvYm94L2JveC5jYwo+PiBpbmRleCBjNzI4YTRjLi40MjU3ODYxIDEwMDY0NAo+ PiAtLS0gYS9zcmMvYm94L2JveC5jYwo+PiArKysgYi9zcmMvYm94L2JveC5jYwo+PiBAQCAtMTc0 LDIwICsxNzQsMjIgQEAgcHJvY2Vzc19ydyhzdHJ1Y3QgcmVxdWVzdCAqcmVxdWVzdCwgc3RydWN0 IHNwYWNlICpzcGFjZSwgc3RydWN0IHR1cGxlICoqcmVzdWx0KQo+PiAgIAkJdHhuX3JvbGxiYWNr X3N0bXQoKTsKPj4gICAJCXJldHVybiAtMTsKPj4gICAJfQo+PiArCWlmIChyZXN1bHQgPT0gTlVM TCkKPj4gKwkJcmV0dXJuIHR4bl9jb21taXRfc3RtdCh0eG4sIHJlcXVlc3QpOwo+PiArCSpyZXN1 bHQgPSB0dXBsZTsKPj4gKwlpZiAodHVwbGUgPT0gTlVMTCkKPj4gKwkJcmV0dXJuIHR4bl9jb21t aXRfc3RtdCh0eG4sIHJlcXVlc3QpOwo+PiAgIAkvKgo+PiAgIAkgKiBQaW4gdGhlIHR1cGxlIGxv Y2FsbHkgYmVmb3JlIHRoZSBjb21taXQsCj4+ICAgCSAqIG90aGVyd2lzZSBpdCBtYXkgZ28gYXdh eSBkdXJpbmcgeWllbGQgaW4KPj4gICAJICogd2hlbiBXQUwgaXMgd3JpdHRlbiBpbiBhdXRvY29t bWl0IG1vZGUuCj4+ICAgCSAqLwo+PiAtCVR1cGxlUmVmTmlsIHJlZih0dXBsZSk7Cj4+IC0JaWYg KHR4bl9jb21taXRfc3RtdCh0eG4sIHJlcXVlc3QpICE9IDApCj4+IC0JCXJldHVybiAtMTsKPj4g LQlpZiAocmVzdWx0ICE9IE5VTEwpIHsKPj4gLQkJaWYgKHR1cGxlICE9IE5VTEwgJiYgdHVwbGVf Ymxlc3ModHVwbGUpID09IE5VTEwpCj4+IC0JCQlyZXR1cm4gLTE7Cj4+IC0JCSpyZXN1bHQgPSB0 dXBsZTsKPj4gLQl9Cj4+IC0JcmV0dXJuIDA7Cj4+ICsJdHVwbGVfcmVmKHR1cGxlKTsKPj4gKwlp bnQgcmMgPSB0eG5fY29tbWl0X3N0bXQodHhuLCByZXF1ZXN0KTsKPj4gKwlpZiAocmMgPT0gMCkK Pj4gKwkJdHVwbGVfYmxlc3ModHVwbGUpOwo+PiArCXR1cGxlX3VucmVmKHR1cGxlKTsKPj4gKwly ZXR1cm4gcmM7Cj4+ICAgfQo+PiAKPj4gICB2b2lkCj4+IGRpZmYgLS1naXQgYS9zcmMvYm94L2Vy cmNvZGUuaCBiL3NyYy9ib3gvZXJyY29kZS5oCj4+IGluZGV4IGEwNzU5ZjguLmUwMDk1MjQgMTAw NjQ0Cj4+IC0tLSBhL3NyYy9ib3gvZXJyY29kZS5oCj4+ICsrKyBiL3NyYy9ib3gvZXJyY29kZS5o Cj4+IEBAIC0xMzgsNyArMTM4LDcgQEAgc3RydWN0IGVycmNvZGVfcmVjb3JkIHsKPj4gICAJLyog ODMgKi9fKEVSX1JPTEVfRVhJU1RTLAkJIlJvbGUgJyVzJyBhbHJlYWR5IGV4aXN0cyIpIFwKPj4g ICAJLyogODQgKi9fKEVSX0NSRUFURV9ST0xFLAkJIkZhaWxlZCB0byBjcmVhdGUgcm9sZSAnJXMn OiAlcyIpIFwKPj4gICAJLyogODUgKi9fKEVSX0lOREVYX0VYSVNUUywJCSJJbmRleCAnJXMnIGFs cmVhZHkgZXhpc3RzIikgXAo+PiAtCS8qIDg2ICovXyhFUl9UVVBMRV9SRUZfT1ZFUkZMT1csCSJU dXBsZSByZWZlcmVuY2UgY291bnRlciBvdmVyZmxvdyIpIFwKPj4gKwkvKiA4NiAqL18oRVJfVU5V U0VENiwJCQkiIikgXAo+PiAgIAkvKiA4NyAqL18oRVJfUk9MRV9MT09QLAkJCSJHcmFudGluZyBy b2xlICclcycgdG8gcm9sZSAnJXMnIHdvdWxkIGNyZWF0ZSBhIGxvb3AiKSBcCj4+ICAgCS8qIDg4 ICovXyhFUl9HUkFOVCwJCQkiSW5jb3JyZWN0IGdyYW50IGFyZ3VtZW50czogJXMiKSBcCj4+ICAg CS8qIDg5ICovXyhFUl9QUklWX0dSQU5URUQsCQkiVXNlciAnJXMnIGFscmVhZHkgaGFzICVzIGFj Y2VzcyBvbiAlcyAnJXMnIikgXAo+PiBkaWZmIC0tZ2l0IGEvc3JjL2JveC9pbmRleC5jYyBiL3Ny Yy9ib3gvaW5kZXguY2MKPj4gaW5kZXggM2M2MmVjMS4uZjk5MmJjOSAxMDA2NDQKPj4gLS0tIGEv c3JjL2JveC9pbmRleC5jYwo+PiArKysgYi9zcmMvYm94L2luZGV4LmNjCj4+IEBAIC0yMjAsOCAr MjIwLDggQEAgYm94X2luZGV4X3JhbmRvbSh1aW50MzJfdCBzcGFjZV9pZCwgdWludDMyX3QgaW5k ZXhfaWQsIHVpbnQzMl90IHJuZCwKPj4gICAJLyogTm8gdHggbWFuYWdlbWVudCwgcmFuZG9tKCkg aXMgZm9yIGFwcHJveGltYXRpb24gYW55d2F5LiAqLwo+PiAgIAlpZiAoaW5kZXhfcmFuZG9tKGlu ZGV4LCBybmQsIHJlc3VsdCkgIT0gMCkKPj4gICAJCXJldHVybiAtMTsKPj4gLQlpZiAoKnJlc3Vs dCAhPSBOVUxMICYmIHR1cGxlX2JsZXNzKCpyZXN1bHQpID09IE5VTEwpCj4+IC0JCXJldHVybiAt MTsKPj4gKwlpZiAoKnJlc3VsdCAhPSBOVUxMKQo+PiArCQl0dXBsZV9ibGVzcygqcmVzdWx0KTsK Pj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+PiAKPj4gQEAgLTI1Myw4ICsyNTMsOCBAQCBib3hfaW5k ZXhfZ2V0KHVpbnQzMl90IHNwYWNlX2lkLCB1aW50MzJfdCBpbmRleF9pZCwgY29uc3QgY2hhciAq a2V5LAo+PiAgIAl0eG5fY29tbWl0X3JvX3N0bXQodHhuKTsKPj4gICAJLyogQ291bnQgc3RhdGlz dGljcy4gKi8KPj4gICAJcm1lYW5fY29sbGVjdChybWVhbl9ib3gsIElQUk9UT19TRUxFQ1QsIDEp Owo+PiAtCWlmICgqcmVzdWx0ICE9IE5VTEwgJiYgdHVwbGVfYmxlc3MoKnJlc3VsdCkgPT0gTlVM TCkKPj4gLQkJcmV0dXJuIC0xOwo+PiArCWlmICgqcmVzdWx0ICE9IE5VTEwpCj4+ICsJCXR1cGxl X2JsZXNzKCpyZXN1bHQpOwo+PiAgIAlyZXR1cm4gMDsKPj4gICB9Cj4+IAo+PiBAQCAtMjg1LDgg KzI4NSw4IEBAIGJveF9pbmRleF9taW4odWludDMyX3Qgc3BhY2VfaWQsIHVpbnQzMl90IGluZGV4 X2lkLCBjb25zdCBjaGFyICprZXksCj4+ICAgCQlyZXR1cm4gLTE7Cj4+ICAgCX0KPj4gICAJdHhu X2NvbW1pdF9yb19zdG10KHR4bik7Cj4+IC0JaWYgKCpyZXN1bHQgIT0gTlVMTCAmJiB0dXBsZV9i bGVzcygqcmVzdWx0KSA9PSBOVUxMKQo+PiAtCQlyZXR1cm4gLTE7Cj4+ICsJaWYgKCpyZXN1bHQg IT0gTlVMTCkKPj4gKwkJdHVwbGVfYmxlc3MoKnJlc3VsdCk7Cj4+ICAgCXJldHVybiAwOwo+PiAg IH0KPj4gCj4+IEBAIC0zMTcsOCArMzE3LDggQEAgYm94X2luZGV4X21heCh1aW50MzJfdCBzcGFj ZV9pZCwgdWludDMyX3QgaW5kZXhfaWQsIGNvbnN0IGNoYXIgKmtleSwKPj4gICAJCXJldHVybiAt MTsKPj4gICAJfQo+PiAgIAl0eG5fY29tbWl0X3JvX3N0bXQodHhuKTsKPj4gLQlpZiAoKnJlc3Vs dCAhPSBOVUxMICYmIHR1cGxlX2JsZXNzKCpyZXN1bHQpID09IE5VTEwpCj4+IC0JCXJldHVybiAt MTsKPj4gKwlpZiAoKnJlc3VsdCAhPSBOVUxMKQo+PiArCQl0dXBsZV9ibGVzcygqcmVzdWx0KTsK Pj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+PiAKPj4gQEAgLTM5Nyw4ICszOTcsOCBAQCBib3hfaXRl cmF0b3JfbmV4dChib3hfaXRlcmF0b3JfdCAqaXRyLCBib3hfdHVwbGVfdCAqKnJlc3VsdCkKPj4g ICAJYXNzZXJ0KHJlc3VsdCAhPSBOVUxMKTsKPj4gICAJaWYgKGl0ZXJhdG9yX25leHQoaXRyLCBy ZXN1bHQpICE9IDApCj4+ICAgCQlyZXR1cm4gLTE7Cj4+IC0JaWYgKCpyZXN1bHQgIT0gTlVMTCAm JiB0dXBsZV9ibGVzcygqcmVzdWx0KSA9PSBOVUxMKQo+PiAtCQlyZXR1cm4gLTE7Cj4+ICsJaWYg KCpyZXN1bHQgIT0gTlVMTCkKPj4gKwkJdHVwbGVfYmxlc3MoKnJlc3VsdCk7Cj4+ICAgCXJldHVy biAwOwo+PiAgIH0KPj4gCj4+IGRpZmYgLS1naXQgYS9zcmMvYm94L2x1YS90dXBsZS5jIGIvc3Jj L2JveC9sdWEvdHVwbGUuYwo+PiBpbmRleCAgODA1NzMzMSAuLjIyZmU2OTYgMTAwNjQ0Cj4+IC0t LSBhL3NyYy9ib3gvbHVhL3R1cGxlLmMKPj4gKysrIGIvc3JjL2JveC9sdWEvdHVwbGUuYwo+PiBA QCAtNDk2LDEwICs0OTYsNyBAQCBsdWFUX3B1c2h0dXBsZShzdHJ1Y3QgbHVhX1N0YXRlICpMLCBi b3hfdHVwbGVfdCAqdHVwbGUpCj4+ICAgCQlsdWFMX3B1c2hjZGF0YShMLCBDVElEX0NPTlNUX1NU UlVDVF9UVVBMRV9SRUYpOwo+PiAgIAkqcHRyID0gdHVwbGU7Cj4+ICAgCS8qIFRoZSBvcmRlciBp cyBpbXBvcnRhbnQgLSBmaXJzdCByZWZlcmVuY2UgdHVwbGUsIG5leHQgc2V0IGdjICovCj4+IC0J aWYgKGJveF90dXBsZV9yZWYodHVwbGUpICE9IDApIHsKPj4gLQkJbHVhVF9lcnJvcihMKTsKPj4g LQkJcmV0dXJuOwo+PiAtCX0KPj4gKwlib3hfdHVwbGVfcmVmKHR1cGxlKTsKPj4gICAJbHVhX3B1 c2hjZnVuY3Rpb24oTCwgbGJveF90dXBsZV9nYyk7Cj4+ICAgCWx1YUxfc2V0Y2RhdGFnYyhMLCAt Mik7Cj4+ICAgfQo+PiBkaWZmIC0tZ2l0IGEvc3JjL2JveC9wb3J0LmMgYi9zcmMvYm94L3BvcnQu Ywo+PiBpbmRleCAwM2Y2YmU3Li45YjZiODU4IDEwMDY0NAo+PiAtLS0gYS9zcmMvYm94L3BvcnQu Ywo+PiArKysgYi9zcmMvYm94L3BvcnQuYwo+PiBAQCAtNDUsOCArNDUsNyBAQCBwb3J0X3R1cGxl X2FkZChzdHJ1Y3QgcG9ydCAqYmFzZSwgc3RydWN0IHR1cGxlICp0dXBsZSkKPj4gICAJc3RydWN0 IHBvcnRfdHVwbGUgKnBvcnQgPSBwb3J0X3R1cGxlKGJhc2UpOwo+PiAgIAlzdHJ1Y3QgcG9ydF90 dXBsZV9lbnRyeSAqZTsKPj4gICAJaWYgKHBvcnQtPnNpemUgPT0gMCkgewo+PiAtCQlpZiAodHVw bGVfcmVmKHR1cGxlKSAhPSAwKQo+PiAtCQkJcmV0dXJuIC0xOwo+PiArCQl0dXBsZV9yZWYodHVw bGUpOwo+PiAgIAkJZSA9ICZwb3J0LT5maXJzdF9lbnRyeTsKPj4gICAJCXBvcnQtPmZpcnN0ID0g cG9ydC0+bGFzdCA9IGU7Cj4+ICAgCX0gZWxzZSB7Cj4+IEBAIC01NSwxMCArNTQsNyBAQCBwb3J0 X3R1cGxlX2FkZChzdHJ1Y3QgcG9ydCAqYmFzZSwgc3RydWN0IHR1cGxlICp0dXBsZSkKPj4gICAJ CQlkaWFnX3NldChPdXRPZk1lbW9yeSwgc2l6ZW9mKCplKSwgIm1lbXBvb2xfYWxsb2MiLCAiZSIp Owo+PiAgIAkJCXJldHVybiAtMTsKPj4gICAJCX0KPj4gLQkJaWYgKHR1cGxlX3JlZih0dXBsZSkg IT0gMCkgewo+PiAtCQkJbWVtcG9vbF9mcmVlKCZwb3J0X3R1cGxlX2VudHJ5X3Bvb2wsIGUpOwo+ PiAtCQkJcmV0dXJuIC0xOwo+PiAtCQl9Cj4+ICsJCXR1cGxlX3JlZih0dXBsZSk7Cj4+ICAgCQlw b3J0LT5sYXN0LT5uZXh0ID0gZTsKPj4gICAJCXBvcnQtPmxhc3QgPSBlOwo+PiAgIAl9Cj4+IGRp ZmYgLS1naXQgYS9zcmMvYm94L3R1cGxlLmMgYi9zcmMvYm94L3R1cGxlLmMKPj4gaW5kZXggMDE0 ZjM3NC4uYjYzMjE4MyAxMDA2NDQKPj4gLS0tIGEvc3JjL2JveC90dXBsZS5jCj4+ICsrKyBiL3Ny Yy9ib3gvdHVwbGUuYwo+PiBAQCAtNDgsNiArNDgsMjggQEAgZW51bSB7Cj4+ICAgCU9CSlNJWkVf TUlOID0gMTYsCj4+ICAgfTsKPj4gCj4+ICsvKioKPj4gKyAqIENvbnRhaW5lciBmb3IgYmlnIHJl ZmVyZW5jZSBjb3VudGVycy4gQ29udGFpbnMgYXJyYXkgb2YgYmlnCj4+ICsgKiByZWZlcmVuY2Ug Y291bnRlcnMsIHNpemUgb2YgdGhpcyBhcnJheSBhbmQgbnVtYmVyIG9mIG5vbi16ZXJvCj4+ICsg KiBiaWcgcmVmZXJlbmNlIGNvdW50ZXJzLiBXaGVuIHJlZmVyZW5jZSBjb3VudGVyIG9mIHR1cGxl IGJlY29tZXMKPj4gKyAqIG1vcmUgdGhhbiAzMjc2NywgZmllbGQgcmVmcyBvZiB0aGlzIHR1cGxl IGJlY29tZXMgaW5kZXggb2YgYmlnCj4+ICsgKiByZWZlcmVuY2UgY291bnRlciBpbiBiaWcgcmVm ZXJlbmNlIGNvdW50ZXIgYXJyYXkgYW5kIGZpZWxkCj4+ICsgKiBpc19iaWdyZWYgaXMgc2V0IHRy dWUuIFRoZSBtb21lbnQgYmlnIHJlZmVyZW5jZSBiZWNvbWVzIGVxdWFsCj4+ICsgKiAzMjc2NyBp dCBpcyBzZXQgdG8gMCwgcmVmcyBvZiB0aGUgdHVwbGUgYmVjb21lcyAzMjc2NyBhbmQKPj4gKyAq IGlzX2JpZ3JlZiBiZWNvbWVzIGZhbHNlLiBCaWcgcmVmZXJlbmNlIGNvdW50ZXIgY2FuIGJlIGVx dWFsIHRvCj4+ICsgKiAwIG9yIGJlIG1vcmUgdGhhbiAzMjc2Ny4KPj4gKyAqLwo+PiArc3RhdGlj IHN0cnVjdCBiaWdyZWZfbGlzdCB7Cj4+ICsJLyoqIEFycmF5IG9mIGJpZyByZWZlcmVuY2UgY291 bnRlcnMuICovCj4+ICsJdWludDMyX3QgKnJlZnM7Cj4+ICsJLyoqIE51bWJlciBvZiBub24temVy byBlbGVtZW50cyBpbiB0aGUgYXJyYXkuICovCj4+ICsJdWludDE2X3Qgc2l6ZTsKPj4gKwkvKiog Q2FwYWNpdHkgb2YgdGhlIGFycmF5LiAqLwo+PiArCXVpbnQxNl90IGNhcGFjaXR5Owo+PiArCS8q KiBJbmRleCBvZiBmaXJzdCBmcmVlIGVsZW1lbnQuICovCj4+ICsJdWludDE2X3QgdmFjYW50X2lu ZGV4Owo+PiArfSBiaWdyZWZfbGlzdDsKPj4gKwo+PiAgIHN0YXRpYyBjb25zdCBkb3VibGUgQUxM T0NfRkFDVE9SID0gMS4wNTsKPj4gCj4+ICAgLyoqCj4+IEBAIC0xNTEsNiArMTczLDEzIEBAIHR1 cGxlX3ZhbGlkYXRlX3JhdyhzdHJ1Y3QgdHVwbGVfZm9ybWF0ICpmb3JtYXQsIGNvbnN0IGNoYXIg KnR1cGxlKQo+PiAgIAlyZXR1cm4gMDsKPj4gICB9Cj4+IAo+PiArLyoqIEluaXRpYWxpemUgYmln IHJlZmVyZW5jZXMgY29udGFpbmVyLiAqLwo+PiArc3RhdGljIGlubGluZSB2b2lkCj4+ICtiaWdy ZWZfbGlzdF9jcmVhdGUoKQo+PiArewo+PiArCW1lbXNldCgmYmlncmVmX2xpc3QsIDAsIHNpemVv ZihiaWdyZWZfbGlzdCkpOwo+PiArfQo+PiArCj4+ICAgLyoqCj4+ICAgICogSW5jcmVtZW50ZWQg b24gZXZlcnkgc25hcHNob3QgYW5kIGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdHVwbGVzCj4+ICAg ICogd2hpY2ggd2VyZSBjcmVhdGVkIGFmdGVyIHN0YXJ0IG9mIGEgc25hcHNob3QgKHRoZXNlIHR1 cGxlcyBjYW4KPj4gQEAgLTIxMSw2ICsyNDAsOCBAQCB0dXBsZV9pbml0KGZpZWxkX25hbWVfaGFz aF9mIGhhc2gpCj4+IAo+PiAgIAlib3hfdHVwbGVfbGFzdCA9IE5VTEw7Cj4+IAo+PiArCWJpZ3Jl Zl9saXN0X2NyZWF0ZSgpOwo+PiArCj4+ICAgCWlmIChjb2xsX2lkX2NhY2hlX2luaXQoKSAhPSAw KQo+PiAgIAkJcmV0dXJuIC0xOwo+PiAKPj4gQEAgLTI0NCw2ICsyNzUsMTA3IEBAIHR1cGxlX2Fy ZW5hX2NyZWF0ZShzdHJ1Y3Qgc2xhYl9hcmVuYSAqYXJlbmEsIHN0cnVjdCBxdW90YSAqcXVvdGEs Cj4+ICAgCX0KPj4gICB9Cj4+IAo+PiArZW51bSB7Cj4+ICsJQklHUkVGX0ZBQ1RPUiA9IDIsCj4+ ICsJQklHUkVGX01BWCA9IFVJTlQzMl9NQVgsCj4+ICsJQklHUkVGX01JTl9DQVBBQ0lUWSA9IDE2 LAo+PiArCS8qKgo+PiArCSAqIE9ubHkgMTUgYml0cyBhcmUgYXZhaWxhYmxlIGZvciBiaWdyZWYg bGlzdCBpbmRleCBpbgo+PiArCSAqIHN0cnVjdCB0dXBsZS4KPj4gKwkgKi8KPj4gKwlCSUdSRUZf TUFYX0NBUEFDSVRZID0gVUlOVDE2X01BWCA+PiAxCj4+ICt9Owo+PiArCj4+ICsvKiogRGVzdHJv eSBiaWcgcmVmZXJlbmNlcyBhbmQgZnJlZSBtZW1vcnkgdGhhdCB3YXMgYWxsb2NhdGVkLiAqLwo+ PiArc3RhdGljIGlubGluZSB2b2lkCj4+ICtiaWdyZWZfbGlzdF9yZXNldCgpCj4+ICt7Cj4+ICsJ ZnJlZShiaWdyZWZfbGlzdC5yZWZzKTsKPj4gKwliaWdyZWZfbGlzdF9jcmVhdGUoKTsKPj4gK30K Pj4gKwo+PiArLyoqCj4+ICsgKiBJbmNyZWFzZSBjYXBhY2l0eSBvZiBiaWdyZWZfbGlzdC4KPj4g KyAqLwo+PiArc3RhdGljIGlubGluZSB2b2lkCj4+ICtiaWdyZWZfbGlzdF9pbmNyZWFzZV9jYXBh Y2l0eSgpCj4+ICt7Cj4+ICsJYXNzZXJ0KGJpZ3JlZl9saXN0LmNhcGFjaXR5ID09IGJpZ3JlZl9s aXN0LnZhY2FudF9pbmRleCk7Cj4+ICsJdWludDMyX3QgKnJlZnMgPSBiaWdyZWZfbGlzdC5yZWZz Owo+PiArCXVpbnQxNl90IGNhcGFjaXR5ID0gYmlncmVmX2xpc3QuY2FwYWNpdHk7Cj4+ICsJaWYg KGNhcGFjaXR5ID09IDApCj4+ICsJCWNhcGFjaXR5ID0gQklHUkVGX01JTl9DQVBBQ0lUWTsKPj4g KwllbHNlIGlmIChjYXBhY2l0eSA8IEJJR1JFRl9NQVhfQ0FQQUNJVFkpCj4+ICsJCWNhcGFjaXR5 ID0gTUlOKGNhcGFjaXR5ICogQklHUkVGX0ZBQ1RPUiwgQklHUkVGX01BWF9DQVBBQ0lUWSk7Cj4+ ICsJZWxzZQo+PiArCQlwYW5pYygiVG9vIG1hbnkgYmlnIHJlZmVyZW5jZXMiKTsKPj4gKwlyZWZz ID0gKHVpbnQzMl90ICopIHJlYWxsb2MocmVmcywgY2FwYWNpdHkgKiBzaXplb2YoKnJlZnMpKTsK Pj4gKwlpZiAocmVmcyA9PSBOVUxMKSB7Cj4+ICsJCXBhbmljKCJmYWlsZWQgdG8gcmVhbGxvY2F0 ZSAlenUgYnl0ZXM6IENhbm5vdCBhbGxvY2F0ZSAiXAo+PiArCQkgICAgICAibWVtb3J5LiIsIGNh cGFjaXR5ICogc2l6ZW9mKCpyZWZzKSk7Cj4+ICsJfQo+PiArCWZvcih1aW50MTZfdCBpID0gYmln cmVmX2xpc3QuY2FwYWNpdHk7IGkgPCBjYXBhY2l0eTsgKytpKSB7Cj4+ICsJCXJlZnNbaV0gPSBp ICsgMTsKPj4gKwl9Cj4+ICsJYmlncmVmX2xpc3QucmVmcyA9IHJlZnM7Cj4+ICsJYmlncmVmX2xp c3QuY2FwYWNpdHkgPSBjYXBhY2l0eTsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiBSZXR1cm4g aW5kZXggZm9yIG5ldyBiaWcgcmVmZXJlbmNlIGNvdW50ZXIgYW5kIGFsbG9jYXRlIG1lbW9yeQo+ PiArICogaWYgbmVlZGVkLgo+PiArICogQHJldHZhbCBpbmRleCBmb3IgbmV3IGJpZyByZWZlcmVu Y2UgY291bnRlci4KPj4gKyAqLwo+PiArc3RhdGljIGlubGluZSB1aW50MTZfdAo+PiArYmlncmVm X2xpc3RfbmV3X2luZGV4KCkKPj4gK3sKPj4gKwlpZiAoYmlncmVmX2xpc3Quc2l6ZSA9PSBiaWdy ZWZfbGlzdC5jYXBhY2l0eSkKPj4gKwkJYmlncmVmX2xpc3RfaW5jcmVhc2VfY2FwYWNpdHkoKTsK Pj4gKwkrK2JpZ3JlZl9saXN0LnNpemU7Cj4+ICsJdWludDE2X3QgdmFjYW50X2luZGV4ID0gYmln cmVmX2xpc3QudmFjYW50X2luZGV4Owo+PiArCWJpZ3JlZl9saXN0LnZhY2FudF9pbmRleCA9IGJp Z3JlZl9saXN0LnJlZnNbdmFjYW50X2luZGV4XTsKPj4gKwlyZXR1cm4gdmFjYW50X2luZGV4Owo+ PiArfQo+PiArCj4+ICt2b2lkCj4+ICt0dXBsZV9yZWZfc2xvdyhzdHJ1Y3QgdHVwbGUgKnR1cGxl KQo+PiArewo+PiArCWFzc2VydCh0dXBsZS0+aXNfYmlncmVmIHx8IHR1cGxlLT5yZWZzID09IFRV UExFX1JFRl9NQVgpOwo+PiArCWlmICghIHR1cGxlLT5pc19iaWdyZWYpIHsKPj4gKwkJdHVwbGUt PnJlZl9pbmRleCA9IGJpZ3JlZl9saXN0X25ld19pbmRleCgpOwo+PiArCQl0dXBsZS0+aXNfYmln cmVmID0gdHJ1ZTsKPj4gKwkJYmlncmVmX2xpc3QucmVmc1t0dXBsZS0+cmVmX2luZGV4XSA9IFRV UExFX1JFRl9NQVg7Cj4+ICsJfSBlbHNlIGlmIChiaWdyZWZfbGlzdC5yZWZzW3R1cGxlLT5yZWZf aW5kZXhdID09IEJJR1JFRl9NQVgpIHsKPj4gKwkJcGFuaWMoIlR1cGxlIGJpZyByZWZlcmVuY2Ug Y291bnRlciBvdmVyZmxvdyIpOwo+PiArCX0KPj4gKwliaWdyZWZfbGlzdC5yZWZzW3R1cGxlLT5y ZWZfaW5kZXhdKys7Cj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogRnJlZSBpbmRleCBhbmQgYWRk IGl0IHRvIGZyZWUtaW5kZXgtbGlzdC4gRnJlZSBtZW1vcnkKPj4gKyAqIHdoZW4gc2l6ZSA9PSAw Lgo+PiArICovCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQKPj4gK2JpZ3JlZl9saXN0X2RlbGV0ZV9p bmRleCh1aW50MTZfdCBpbmRleCkKPj4gK3sKPj4gKwliaWdyZWZfbGlzdC5yZWZzW2luZGV4XSA9 IGJpZ3JlZl9saXN0LnZhY2FudF9pbmRleDsKPj4gKwliaWdyZWZfbGlzdC52YWNhbnRfaW5kZXgg PSBpbmRleDsKPj4gKwlpZiAoLS1iaWdyZWZfbGlzdC5zaXplID09IDApCj4+ICsJCWJpZ3JlZl9s aXN0X3Jlc2V0KCk7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQKPj4gK3R1cGxlX3VucmVmX3Nsb3coc3Ry dWN0IHR1cGxlICp0dXBsZSkKPj4gK3sKPj4gKwlhc3NlcnQodHVwbGUtPmlzX2JpZ3JlZiAmJgo+ PiArCSAgICAgICBiaWdyZWZfbGlzdC5yZWZzW3R1cGxlLT5yZWZfaW5kZXhdID4gVFVQTEVfUkVG X01BWCk7Cj4+ICsJaWYoLS1iaWdyZWZfbGlzdC5yZWZzW3R1cGxlLT5yZWZfaW5kZXhdID09IFRV UExFX1JFRl9NQVgpIHsKPj4gKwkJYmlncmVmX2xpc3RfZGVsZXRlX2luZGV4KHR1cGxlLT5yZWZf aW5kZXgpOwo+PiArCQl0dXBsZS0+cmVmX2luZGV4ID0gVFVQTEVfUkVGX01BWDsKPj4gKwkJdHVw bGUtPmlzX2JpZ3JlZiA9IGZhbHNlOwo+PiArCX0KPj4gK30KPj4gKwo+PiAgIHZvaWQKPj4gICB0 dXBsZV9hcmVuYV9kZXN0cm95KHN0cnVjdCBzbGFiX2FyZW5hICphcmVuYSkKPj4gICB7Cj4+IEBA IC0yNjUsNiArMzk3LDggQEAgdHVwbGVfZnJlZSh2b2lkKQo+PiAgIAl0dXBsZV9mb3JtYXRfZnJl ZSgpOwo+PiAKPj4gICAJY29sbF9pZF9jYWNoZV9kZXN0cm95KCk7Cj4+ICsKPj4gKwliaWdyZWZf bGlzdF9yZXNldCgpOwo+PiAgIH0KPj4gCj4+ICAgYm94X3R1cGxlX2Zvcm1hdF90ICoKPj4gQEAg LTI4OCw3ICs0MjIsOCBAQCBpbnQKPj4gICBib3hfdHVwbGVfcmVmKGJveF90dXBsZV90ICp0dXBs ZSkKPj4gICB7Cj4+ICAgCWFzc2VydCh0dXBsZSAhPSBOVUxMKTsKPj4gLQlyZXR1cm4gdHVwbGVf cmVmKHR1cGxlKTsKPj4gKwl0dXBsZV9yZWYodHVwbGUpOwo+PiArCXJldHVybiAwOwo+PiAgIH0K Pj4gCj4+ICAgdm9pZAo+PiBAQCAtMzU3LDEwICs0OTIsNyBAQCBib3hfdHVwbGVfaXRlcmF0b3Io Ym94X3R1cGxlX3QgKnR1cGxlKQo+PiAgIAkJCSAibWVtcG9vbCIsICJuZXcgc2xhYiIpOwo+PiAg IAkJcmV0dXJuIE5VTEw7Cj4+ICAgCX0KPj4gLQlpZiAodHVwbGVfcmVmKHR1cGxlKSAhPSAwKSB7 Cj4+IC0JCW1lbXBvb2xfZnJlZSgmdHVwbGVfaXRlcmF0b3JfcG9vbCwgaXQpOwo+PiAtCQlyZXR1 cm4gTlVMTDsKPj4gLQl9Cj4+ICsJdHVwbGVfcmVmKHR1cGxlKTsKPj4gICAJdHVwbGVfcmV3aW5k KGl0LCB0dXBsZSk7Cj4+ICAgCXJldHVybiBpdDsKPj4gICB9Cj4+IEBAIC00NTEsNyArNTgzLDYg QEAgYm94X3R1cGxlX25ldyhib3hfdHVwbGVfZm9ybWF0X3QgKmZvcm1hdCwgY29uc3QgY2hhciAq ZGF0YSwgY29uc3QgY2hhciAqZW5kKQo+PiAgIAlzdHJ1Y3QgdHVwbGUgKnJldCA9IHR1cGxlX25l dyhmb3JtYXQsIGRhdGEsIGVuZCk7Cj4+ICAgCWlmIChyZXQgPT0gTlVMTCkKPj4gICAJCXJldHVy biBOVUxMOwo+PiAtCS8qIENhbid0IGZhaWwgb24gemVybyByZWZzLiAqLwo+PiAgIAlyZXR1cm4g dHVwbGVfYmxlc3MocmV0KTsKPj4gICB9Cj4+IAo+PiBkaWZmIC0tZ2l0IGEvc3JjL2JveC90dXBs ZS5oIGIvc3JjL2JveC90dXBsZS5oCj4+IGluZGV4IGUyMzg0ZGQuLjE0ZGJkNDAgMTAwNjQ0Cj4+ IC0tLSBhL3NyYy9ib3gvdHVwbGUuaAo+PiArKysgYi9zcmMvYm94L3R1cGxlLmgKPj4gQEAgLTEw NSw4ICsxMDUsNyBAQCB0eXBlZGVmIHN0cnVjdCB0dXBsZSBib3hfdHVwbGVfdDsKPj4gICAgKiB0 dXBsZSB3aWxsIGxlYWsuCj4+ICAgICoKPj4gICAgKiBccGFyYW0gdHVwbGUgYSB0dXBsZQo+PiAt ICogXHJldHZhbCAtMSBvbiBlcnJvciAoY2hlY2sgYm94X2Vycm9yX2xhc3QoKSkKPj4gLSAqIFxy ZXR2YWwgMCBvbiBzdWNjZXNzCj4+ICsgKiBccmV0dmFsIDAgYWx3YXlzCj4+ICAgICogXHNhIGJv eF90dXBsZV91bnJlZigpCj4+ICAgICovCj4+ICAgaW50Cj4+IEBAIC0yNjksOCArMjY4LDcgQEAg Ym94X3R1cGxlX25leHQoYm94X3R1cGxlX2l0ZXJhdG9yX3QgKml0KTsKPj4gICAgKiBVc2UgYm94 X3R1cGxlX2Zvcm1hdF9kZWZhdWx0KCkgdG8gY3JlYXRlIHNwYWNlLWluZGVwZW5kZW50IHR1cGxl Lgo+PiAgICAqIFxwYXJhbSBkYXRhIHR1cGxlIGRhdGEgaW4gTXNnUGFjayBBcnJheSBmb3JtYXQg KFtmaWVsZDEsIGZpZWxkMiwgLi4uXSkuCj4+ICAgICogXHBhcmFtIGVuZCB0aGUgZW5kIG9mIFxh IGRhdGEKPj4gLSAqIFxyZXR2YWwgTlVMTCBvbiBvdXQgb2YgbWVtb3J5Cj4+IC0gKiBccmV0dmFs IHR1cGxlIG90aGVyd2lzZQo+PiArICogXHJldHZhbCB0dXBsZQo+PiAgICAqIFxwcmUgZGF0YSwg ZW5kIGlzIHZhbGlkIE1zZ1BhY2sgQXJyYXkKPj4gICAgKiBcc2EgXGNvZGUgYm94LnR1cGxlLm5l dyhkYXRhKSBcZW5kY29kZQo+PiAgICAqLwo+PiBAQCAtMzA3LDkgKzMwNSwxNyBAQCBib3hfdHVw bGVfdXBzZXJ0KGNvbnN0IGJveF90dXBsZV90ICp0dXBsZSwgY29uc3QgY2hhciAqZXhwciwgY29u c3QKPj4gICAgKi8KPj4gICBzdHJ1Y3QgUEFDS0VEIHR1cGxlCj4+ICAgewo+PiAtCS8qKiByZWZl cmVuY2UgY291bnRlciAqLwo+PiAtCXVpbnQxNl90IHJlZnM7Cj4+IC0JLyoqIGZvcm1hdCBpZGVu dGlmaWVyICovCj4+ICsJdW5pb24gewo+PiArCQkvKiogUmVmZXJlbmNlIGNvdW50ZXIuICovCj4+ ICsJCXVpbnQxNl90IHJlZnM7Cj4+ICsJCXN0cnVjdCB7Cj4+ICsJCQkvKiogSW5kZXggb2YgYmln IHJlZmVyZW5jZSBjb3VudGVyLiAqLwo+PiArCQkJdWludDE2X3QgcmVmX2luZGV4IDogMTU7Cj4+ ICsJCQkvKiogQmlnIHJlZmVyZW5jZSBmbGFnLiAqLwo+PiArCQkJYm9vbCBpc19iaWdyZWYgOiAx Owo+PiArCQl9Owo+PiArCX07Cj4+ICsJLyoqIEZvcm1hdCBpZGVudGlmaWVyLiAqLwo+PiAgIAl1 aW50MTZfdCBmb3JtYXRfaWQ7Cj4+ICAgCS8qKgo+PiAgIAkgKiBMZW5ndGggb2YgdGhlIE1lc3Nh Z2VQYWNrIGRhdGEgaW4gcmF3IHBhcnQgb2YgdGhlCj4+IEBAIC03NzQsMjYgKzc4MCwzNiBAQCB0 dXBsZV9maWVsZF91dWlkKGNvbnN0IHN0cnVjdCB0dXBsZSAqdHVwbGUsIGludCBmaWVsZG5vLAo+ PiAgIAlyZXR1cm4gMDsKPj4gICB9Cj4+IAo+PiAtZW51bSB7IFRVUExFX1JFRl9NQVggPSBVSU5U MTZfTUFYIH07Cj4+ICtlbnVtIHsgVFVQTEVfUkVGX01BWCA9IFVJTlQxNl9NQVggPj4gMSB9Owo+ PiArCj4+ICsvKioKPj4gKyAqIEluY3JlYXNlIHR1cGxlIGJpZyByZWZlcmVuY2UgY291bnRlci4K Pj4gKyAqIEBwYXJhbSB0dXBsZSBUdXBsZSB0byByZWZlcmVuY2UuCj4+ICsgKi8KPj4gK3ZvaWQK Pj4gK3R1cGxlX3JlZl9zbG93KHN0cnVjdCB0dXBsZSAqdHVwbGUpOwo+PiAKPj4gICAvKioKPj4g ICAgKiBJbmNyZW1lbnQgdHVwbGUgcmVmZXJlbmNlIGNvdW50ZXIuCj4+ICAgICogQHBhcmFtIHR1 cGxlIFR1cGxlIHRvIHJlZmVyZW5jZS4KPj4gLSAqIEByZXR2YWwgIDAgU3VjY2Vzcy4KPj4gLSAq IEByZXR2YWwgLTEgVG9vIG1hbnkgcmVmcyBlcnJvci4KPj4gICAgKi8KPj4gLXN0YXRpYyBpbmxp bmUgaW50Cj4+ICtzdGF0aWMgaW5saW5lIHZvaWQKPj4gICB0dXBsZV9yZWYoc3RydWN0IHR1cGxl ICp0dXBsZSkKPj4gICB7Cj4+IC0JaWYgKHR1cGxlLT5yZWZzICsgMSA+IFRVUExFX1JFRl9NQVgp IHsKPj4gLQkJZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX1RVUExFX1JFRl9PVkVSRkxPVyk7Cj4+ IC0JCXJldHVybiAtMTsKPj4gLQl9Cj4+IC0JdHVwbGUtPnJlZnMrKzsKPj4gLQlyZXR1cm4gMDsK Pj4gKwlpZiAodW5saWtlbHkodHVwbGUtPnJlZnMgPj0gVFVQTEVfUkVGX01BWCkpCj4+ICsJCXR1 cGxlX3JlZl9zbG93KHR1cGxlKTsKPj4gKwllbHNlCj4+ICsJCXR1cGxlLT5yZWZzKys7Cj4+ICAg fQo+PiAKPj4gICAvKioKPj4gKyAqIERlY3JlYXNlIHR1cGxlIGJpZyByZWZlcmVuY2UgY291bnRl ci4KPj4gKyAqIEBwYXJhbSB0dXBsZSBUdXBsZSB0byByZWZlcmVuY2UuCj4+ICsgKi8KPj4gK3Zv aWQKPj4gK3R1cGxlX3VucmVmX3Nsb3coc3RydWN0IHR1cGxlICp0dXBsZSk7Cj4+ICsKPj4gKy8q Kgo+PiAgICAqIERlY3JlbWVudCB0dXBsZSByZWZlcmVuY2UgY291bnRlci4gSWYgaXQgaGFzIHJl YWNoZWQgemVybywgZnJlZSB0aGUgdHVwbGUuCj4+ICAgICoKPj4gICAgKiBAcHJlIHR1cGxlLT5y ZWZzICsgY291bnQgPj0gMAo+PiBAQCAtODAyLDEwICs4MTgsOSBAQCBzdGF0aWMgaW5saW5lIHZv aWQKPj4gICB0dXBsZV91bnJlZihzdHJ1Y3QgdHVwbGUgKnR1cGxlKQo+PiAgIHsKPj4gICAJYXNz ZXJ0KHR1cGxlLT5yZWZzIC0gMSA+PSAwKTsKPj4gLQo+PiAtCXR1cGxlLT5yZWZzLS07Cj4+IC0K Pj4gLQlpZiAodHVwbGUtPnJlZnMgPT0gMCkKPj4gKwlpZiAodW5saWtlbHkodHVwbGUtPmlzX2Jp Z3JlZikpCj4+ICsJCXR1cGxlX3VucmVmX3Nsb3codHVwbGUpOwo+PiArCWVsc2UgaWYgKC0tdHVw bGUtPnJlZnMgPT0gMCkKPj4gICAJCXR1cGxlX2RlbGV0ZSh0dXBsZSk7Cj4+ICAgfQo+PiAKPj4g QEAgLTgxMywyNSArODI4LDE4IEBAIGV4dGVybiBzdHJ1Y3QgdHVwbGUgKmJveF90dXBsZV9sYXN0 Owo+PiAKPj4gICAvKioKPj4gICAgKiBDb252ZXJ0IGludGVybmFsIGBzdHJ1Y3QgdHVwbGVgIHRv IHB1YmxpYyBgYm94X3R1cGxlX3RgLgo+PiAtICogXHJldHZhbCB0dXBsZSBvbiBzdWNjZXNzCj4+ IC0gKiBccmV0dmFsIE5VTEwgb24gZXJyb3IsIGNoZWNrIGRpYWcKPj4gKyAqIFxyZXR2YWwgdHVw bGUKPj4gICAgKiBccG9zdCBcYSB0dXBsZSByZWYgY291bnRlZCB1bnRpbCB0aGUgbmV4dCBjYWxs Lgo+PiAtICogXHBvc3QgdHVwbGVfcmVmKCkgZG9lc24ndCBmYWlsIGF0IGxlYXN0IG9uY2UKPj4g ICAgKiBcc2EgdHVwbGVfcmVmCj4+ICAgICovCj4+ICAgc3RhdGljIGlubGluZSBib3hfdHVwbGVf dCAqCj4+ICAgdHVwbGVfYmxlc3Moc3RydWN0IHR1cGxlICp0dXBsZSkKPj4gICB7Cj4+ICAgCWFz c2VydCh0dXBsZSAhPSBOVUxMKTsKPj4gLQkvKiBFbnN1cmUgdHVwbGUgY2FuIGJlIHJlZmVyZW5j ZWQgYXQgbGVhc3Qgb25jZSBhZnRlciByZXR1cm4gKi8KPj4gLQlpZiAodHVwbGUtPnJlZnMgKyAy ID4gVFVQTEVfUkVGX01BWCkgewo+PiAtCQlkaWFnX3NldChDbGllbnRFcnJvciwgRVJfVFVQTEVf UkVGX09WRVJGTE9XKTsKPj4gLQkJcmV0dXJuIE5VTEw7Cj4+IC0JfQo+PiAtCXR1cGxlLT5yZWZz Kys7Cj4+ICsJdHVwbGVfcmVmKHR1cGxlKTsKPj4gICAJLyogUmVtb3ZlIHByZXZpb3VzIHR1cGxl ICovCj4+ICAgCWlmIChsaWtlbHkoYm94X3R1cGxlX2xhc3QgIT0gTlVMTCkpCj4+IC0JCXR1cGxl X3VucmVmKGJveF90dXBsZV9sYXN0KTsgLyogZG8gbm90IHRocm93ICovCj4+ICsJCXR1cGxlX3Vu cmVmKGJveF90dXBsZV9sYXN0KTsKPj4gICAJLyogUmVtZW1iZXIgY3VycmVudCB0dXBsZSAqLwo+ PiAgIAlib3hfdHVwbGVfbGFzdCA9IHR1cGxlOwo+PiAgIAlyZXR1cm4gdHVwbGU7Cj4+IEBAIC04 NDksNDEgKzg1Nyw2IEBAIHR1cGxlX3RvX2J1Zihjb25zdCBzdHJ1Y3QgdHVwbGUgKnR1cGxlLCBj aGFyICpidWYsIHNpemVfdCBzaXplKTsKPj4gICAjaW5jbHVkZSAidHVwbGVfdXBkYXRlLmgiCj4+ ICAgI2luY2x1ZGUgImVycmluai5oIgo+PiAKPj4gLS8qKgo+PiAtICogXGNvcHlkb2MgdHVwbGVf cmVmKCkKPj4gLSAqIFx0aHJvd3MgaWYgb3ZlcmZsb3cgZGV0ZWN0ZWQuCj4+IC0gKi8KPj4gLXN0 YXRpYyBpbmxpbmUgdm9pZAo+PiAtdHVwbGVfcmVmX3hjKHN0cnVjdCB0dXBsZSAqdHVwbGUpCj4+ IC17Cj4+IC0JaWYgKHR1cGxlX3JlZih0dXBsZSkpCj4+IC0JCWRpYWdfcmFpc2UoKTsKPj4gLX0K Pj4gLQo+PiAtLyoqCj4+IC0gKiBcY29weWRvYyB0dXBsZV9ibGVzcwo+PiAtICogXHRocm93IEVS X1RVUExFX1JFRl9PVkVSRkxPVwo+PiAtICovCj4+IC1zdGF0aWMgaW5saW5lIGJveF90dXBsZV90 ICoKPj4gLXR1cGxlX2JsZXNzX3hjKHN0cnVjdCB0dXBsZSAqdHVwbGUpCj4+IC17Cj4+IC0JYm94 X3R1cGxlX3QgKmJsZXNzZWQgPSB0dXBsZV9ibGVzcyh0dXBsZSk7Cj4+IC0JaWYgKGJsZXNzZWQg PT0gTlVMTCkKPj4gLQkJZGlhZ19yYWlzZSgpOwo+PiAtCXJldHVybiBibGVzc2VkOwo+PiAtfQo+ PiAtCj4+IC0vKiogTWFrZSB0dXBsZSByZWZlcmVuY2VzIGV4Y2VwdGlvbi1mcmllbmRseSBpbiBh YnNlbmNlIG9mIEBmaW5hbGx5LiAqLwo+PiAtc3RydWN0IFR1cGxlUmVmTmlsIHsKPj4gLQlzdHJ1 Y3QgdHVwbGUgKnR1cGxlOwo+PiAtCVR1cGxlUmVmTmlsIChzdHJ1Y3QgdHVwbGUgKmFyZykgOnR1 cGxlKGFyZykKPj4gLQl7IGlmICh0dXBsZSkgdHVwbGVfcmVmX3hjKHR1cGxlKTsgfQo+PiAtCX5U dXBsZVJlZk5pbCgpIHsgaWYgKHR1cGxlKSB0dXBsZV91bnJlZih0dXBsZSk7IH0KPj4gLQo+PiAt CVR1cGxlUmVmTmlsKGNvbnN0IFR1cGxlUmVmTmlsJikgPSBkZWxldGU7Cj4+IC0Jdm9pZCBvcGVy YXRvcj0oY29uc3QgVHVwbGVSZWZOaWwmKSA9IGRlbGV0ZTsKPj4gLX07Cj4+IC0KPj4gICAvKiBA Y29weWRvYyB0dXBsZV9maWVsZF93aXRoX3R5cGUoKSAqLwo+PiAgIHN0YXRpYyBpbmxpbmUgY29u c3QgY2hhciAqCj4+ICAgdHVwbGVfZmllbGRfd2l0aF90eXBlX3hjKGNvbnN0IHN0cnVjdCB0dXBs ZSAqdHVwbGUsIHVpbnQzMl90IGZpZWxkbm8sCj4+IGRpZmYgLS1naXQgYS9zcmMvYm94L3Zpbnls LmMgYi9zcmMvYm94L3ZpbnlsLmMKPj4gaW5kZXggZjBkMjY4Ny4uZGMwZDAyMCAxMDA2NDQKPj4g LS0tIGEvc3JjL2JveC92aW55bC5jCj4+ICsrKyBiL3NyYy9ib3gvdmlueWwuYwo+PiBAQCAtMzgy Miw3ICszODIyLDYgQEAgdmlueWxfaXRlcmF0b3JfcHJpbWFyeV9uZXh0KHN0cnVjdCBpdGVyYXRv ciAqYmFzZSwgc3RydWN0IHR1cGxlICoqcmV0KQo+PiAgIAlhc3NlcnQoYmFzZS0+bmV4dCA9IHZp bnlsX2l0ZXJhdG9yX3ByaW1hcnlfbmV4dCk7Cj4+ICAgCXN0cnVjdCB2aW55bF9pdGVyYXRvciAq aXQgPSAoc3RydWN0IHZpbnlsX2l0ZXJhdG9yICopYmFzZTsKPj4gICAJYXNzZXJ0KGl0LT5sc20t PmluZGV4X2lkID09IDApOwo+PiAtCXN0cnVjdCB0dXBsZSAqdHVwbGU7Cj4+IAo+PiAgIAlpZiAo aXQtPnR4ID09IE5VTEwpIHsKPj4gICAJCWRpYWdfc2V0KENsaWVudEVycm9yLCBFUl9DVVJTT1Jf Tk9fVFJBTlNBQ1RJT04pOwo+PiBAQCAtMzgzMywxOCArMzgzMiwxNSBAQCB2aW55bF9pdGVyYXRv cl9wcmltYXJ5X25leHQoc3RydWN0IGl0ZXJhdG9yICpiYXNlLCBzdHJ1Y3QgdHVwbGUgKipyZXQp Cj4+ICAgCQlnb3RvIGZhaWw7Cj4+ICAgCX0KPj4gCj4+IC0JaWYgKHZ5X3JlYWRfaXRlcmF0b3Jf bmV4dCgmaXQtPml0ZXJhdG9yLCAmdHVwbGUpICE9IDApCj4+ICsJaWYgKHZ5X3JlYWRfaXRlcmF0 b3JfbmV4dCgmaXQtPml0ZXJhdG9yLCByZXQpICE9IDApCj4+ICAgCQlnb3RvIGZhaWw7Cj4+IC0K Pj4gLQlpZiAodHVwbGUgPT0gTlVMTCkgewo+PiArCWlmICgqcmV0ID09IE5VTEwpIHsKPj4gICAJ CS8qIEVPRi4gQ2xvc2UgdGhlIGl0ZXJhdG9yIGltbWVkaWF0ZWx5LiAqLwo+PiAgIAkJdmlueWxf aXRlcmF0b3JfY2xvc2UoaXQpOwo+PiAtCQkqcmV0ID0gTlVMTDsKPj4gLQkJcmV0dXJuIDA7Cj4+ ICsJfSBlbHNlIHsKPj4gKwkJdHVwbGVfYmxlc3MoKnJldCk7Cj4+ICAgCX0KPj4gLQkqcmV0ID0g dHVwbGVfYmxlc3ModHVwbGUpOwo+PiAtCWlmICgqcmV0ICE9IE5VTEwpCj4+IC0JCXJldHVybiAw Owo+PiArCXJldHVybiAwOwo+PiAgIGZhaWw6Cj4+ICAgCXZpbnlsX2l0ZXJhdG9yX2Nsb3NlKGl0 KTsKPj4gICAJcmV0dXJuIC0xOwo+PiBAQCAtMzg5MCwxMSArMzg4NiwxMCBAQCBuZXh0Ogo+PiAg IAkgKiBOb3RlLCB0aGVyZSdzIG5vIG5lZWQgaW4gdnlfdHhfdHJhY2soKSBhcyB0aGUKPj4gICAJ ICogdHVwbGUgaXMgYWxyZWFkeSB0cmFja2VkIGluIHRoZSBzZWNvbmRhcnkgaW5kZXguCj4+ICAg CSAqLwo+PiAtCXN0cnVjdCB0dXBsZSAqZnVsbF90dXBsZTsKPj4gICAJaWYgKHZ5X3BvaW50X2xv b2t1cChpdC0+bHNtLT5waywgaXQtPnR4LCB2eV90eF9yZWFkX3ZpZXcoaXQtPnR4KSwKPj4gLQkJ CSAgICB0dXBsZSwgJmZ1bGxfdHVwbGUpICE9IDApCj4+ICsJCQkgICAgdHVwbGUsIHJldCkgIT0g MCkKPj4gICAJCWdvdG8gZmFpbDsKPj4gLQlpZiAoZnVsbF90dXBsZSA9PSBOVUxMKSB7Cj4+ICsJ aWYgKCpyZXQgPT0gTlVMTCkgewo+PiAgIAkJLyoKPj4gICAJCSAqIEFsbCBpbmRleGVzIG9mIGEg c3BhY2UgbXVzdCBiZSBjb25zaXN0ZW50LCBpLmUuCj4+ICAgCQkgKiBpZiBhIHR1cGxlIGlzIHBy ZXNlbnQgaW4gb25lIGluZGV4LCBpdCBtdXN0IGJlCj4+IEBAIC0zOTA4LDEwICszOTAzLDkgQEAg bmV4dDoKPj4gICAJCQkgdnlfbHNtX25hbWUoaXQtPmxzbSksIHZ5X3N0bXRfc3RyKHR1cGxlKSk7 Cj4+ICAgCQlnb3RvIG5leHQ7Cj4+ICAgCX0KPj4gLQkqcmV0ID0gdHVwbGVfYmxlc3MoZnVsbF90 dXBsZSk7Cj4+IC0JdHVwbGVfdW5yZWYoZnVsbF90dXBsZSk7Cj4+IC0JaWYgKCpyZXQgIT0gTlVM TCkKPj4gLQkJcmV0dXJuIDA7Cj4+ICsJdHVwbGVfYmxlc3MoKnJldCk7Cj4+ICsJdHVwbGVfdW5y ZWYoKnJldCk7Cj4+ICsJcmV0dXJuIDA7Cj4+ICAgZmFpbDoKPj4gICAJdmlueWxfaXRlcmF0b3Jf Y2xvc2UoaXQpOwo+PiAgIAlyZXR1cm4gLTE7Cj4+IEBAIC0zOTk3LDE2ICszOTkxLDEyIEBAIHZp bnlsX2luZGV4X2dldChzdHJ1Y3QgaW5kZXggKmluZGV4LCBjb25zdCBjaGFyICprZXksCj4+ICAg CWNvbnN0IHN0cnVjdCB2eV9yZWFkX3ZpZXcgKipydiA9ICh0eCAhPSBOVUxMID8gdnlfdHhfcmVh ZF92aWV3KHR4KSA6Cj4+ICAgCQkJCQkgICZlbnYtPnhtLT5wX2dsb2JhbF9yZWFkX3ZpZXcpOwo+ PiAKPj4gLQlzdHJ1Y3QgdHVwbGUgKnR1cGxlOwo+PiAtCWlmICh2eV9sc21fZnVsbF9ieV9rZXko bHNtLCB0eCwgcnYsIGtleSwgcGFydF9jb3VudCwgJnR1cGxlKSAhPSAwKQo+PiArCWlmICh2eV9s c21fZnVsbF9ieV9rZXkobHNtLCB0eCwgcnYsIGtleSwgcGFydF9jb3VudCwgcmV0KSAhPSAwKQo+ PiAgIAkJcmV0dXJuIC0xOwo+PiAtCj4+IC0JaWYgKHR1cGxlICE9IE5VTEwpIHsKPj4gLQkJKnJl dCA9IHR1cGxlX2JsZXNzKHR1cGxlKTsKPj4gLQkJdHVwbGVfdW5yZWYodHVwbGUpOwo+PiAtCQly ZXR1cm4gKnJldCA9PSBOVUxMID8gLTEgOiAwOwo+PiArCWlmICgqcmV0ICE9IE5VTEwpIHsKPj4g KwkJdHVwbGVfYmxlc3MoKnJldCk7Cj4+ICsJCXR1cGxlX3VucmVmKCpyZXQpOwo+PiAgIAl9Cj4+ IC0JKnJldCA9IE5VTEw7Cj4+ICAgCXJldHVybiAwOwo+PiAgIH0KPj4gCj4+IGRpZmYgLS1naXQg YS90ZXN0L2JveC9taXNjLnJlc3VsdCBiL3Rlc3QvYm94L21pc2MucmVzdWx0Cj4+IGluZGV4IDhm OTRmNTUuLmY3NzAzYmEgMTAwNjQ0Cj4+IC0tLSBhL3Rlc3QvYm94L21pc2MucmVzdWx0Cj4+ICsr KyBiL3Rlc3QvYm94L21pc2MucmVzdWx0Cj4+IEBAIC0zMzIsNyArMzMyLDYgQEAgdDsKPj4gICAg IC0gJ2JveC5lcnJvci5VTktOT1dOX1VQREFURV9PUCA6IDI4Jwo+PiAgICAgLSAnYm94LmVycm9y LldST05HX0NPTExBVElPTl9PUFRJT05TIDogMTUxJwo+PiAgICAgLSAnYm94LmVycm9yLkNVUlNP Ul9OT19UUkFOU0FDVElPTiA6IDgwJwo+PiAtICAtICdib3guZXJyb3IuVFVQTEVfUkVGX09WRVJG TE9XIDogODYnCj4+ICAgICAtICdib3guZXJyb3IuQUxURVJfU0VRVUVOQ0UgOiAxNDMnCj4+ICAg ICAtICdib3guZXJyb3IuSU5WQUxJRF9YTE9HX05BTUUgOiA3NScKPj4gICAgIC0gJ2JveC5lcnJv ci5TQVZFUE9JTlRfRU1QVFlfVFggOiA2MCcKPj4gQEAgLTM2MCw3ICszNTksNyBAQCB0Owo+PiAg ICAgLSAnYm94LmVycm9yLlZJTllMX01BWF9UVVBMRV9TSVpFIDogMTM5Jwo+PiAgICAgLSAnYm94 LmVycm9yLkxPQURfRlVOQ1RJT04gOiA5OScKPj4gICAgIC0gJ2JveC5lcnJvci5JTlZBTElEX1hM T0cgOiA3NCcKPj4gLSAgLSAnYm94LmVycm9yLlBSSVZfTk9UX0dSQU5URUQgOiA5MScKPj4gKyAg LSAnYm94LmVycm9yLlJFQURfVklFV19BQk9SVEVEIDogMTMwJwo+PiAgICAgLSAnYm94LmVycm9y LlRSQU5TQUNUSU9OX0NPTkZMSUNUIDogOTcnCj4+ICAgICAtICdib3guZXJyb3IuR1VFU1RfVVNF Ul9QQVNTV09SRCA6IDk2Jwo+PiAgICAgLSAnYm94LmVycm9yLlBST0NfQyA6IDEwMicKPj4gQEAg LTQwNSw3ICs0MDQsNyBAQCB0Owo+PiAgICAgLSAnYm94LmVycm9yLmluamVjdGlvbiA6IHRhYmxl OiA8YWRkcmVzcz4KPj4gICAgIC0gJ2JveC5lcnJvci5OVUxMQUJMRV9NSVNNQVRDSCA6IDE1MycK Pj4gICAgIC0gJ2JveC5lcnJvci5MQVNUX0RST1AgOiAxNScKPj4gLSAgLSAnYm94LmVycm9yLk5P X1NVQ0hfUk9MRSA6IDgyJwo+PiArICAtICdib3guZXJyb3IuVFVQTEVfRk9STUFUX0xJTUlUIDog MTYnCj4+ICAgICAtICdib3guZXJyb3IuREVDT01QUkVTU0lPTiA6IDEyNCcKPj4gICAgIC0gJ2Jv eC5lcnJvci5DUkVBVEVfU0VRVUVOQ0UgOiAxNDInCj4+ICAgICAtICdib3guZXJyb3IuQ1JFQVRF X1VTRVIgOiA0MycKPj4gQEAgLTQxNCw2NiArNDEzLDY2IEBAIHQ7Cj4+ICAgICAtICdib3guZXJy b3IuU0VRVUVOQ0VfT1ZFUkZMT1cgOiAxNDcnCj4+ICAgICAtICdib3guZXJyb3IuU1lTVEVNIDog MTE1Jwo+PiAgICAgLSAnYm94LmVycm9yLktFWV9QQVJUX0lTX1RPT19MT05HIDogMTE4Jwo+PiAt ICAtICdib3guZXJyb3IuVFVQTEVfRk9STUFUX0xJTUlUIDogMTYnCj4+IC0gIC0gJ2JveC5lcnJv ci5CRUZPUkVfUkVQTEFDRV9SRVQgOiA1MycKPj4gKyAgLSAnYm94LmVycm9yLklOSkVDVElPTiA6 IDgnCj4+ICsgIC0gJ2JveC5lcnJvci5JTlZBTElEX01TR1BBQ0sgOiAyMCcKPj4gICAgIC0gJ2Jv eC5lcnJvci5OT19TVUNIX1NBVkVQT0lOVCA6IDYxJwo+PiAgICAgLSAnYm94LmVycm9yLlRSVU5D QVRFX1NZU1RFTV9TUEFDRSA6IDEzNycKPj4gICAgIC0gJ2JveC5lcnJvci5WWV9RVU9UQV9USU1F T1VUIDogMTM1Jwo+PiAgICAgLSAnYm94LmVycm9yLldST05HX0lOREVYX09QVElPTlMgOiAxMDgn Cj4+ICAgICAtICdib3guZXJyb3IuSU5WQUxJRF9WWUxPR19GSUxFIDogMTMzJwo+PiAgICAgLSAn Ym94LmVycm9yLklOREVYX0ZJRUxEX0NPVU5UX0xJTUlUIDogMTI3Jwo+PiAtICAtICdib3guZXJy b3IuUkVBRF9WSUVXX0FCT1JURUQgOiAxMzAnCj4+ICsgIC0gJ2JveC5lcnJvci5QUklWX05PVF9H UkFOVEVEIDogOTEnCj4+ICAgICAtICdib3guZXJyb3IuVVNFUl9NQVggOiA1NicKPj4gLSAgLSAn Ym94LmVycm9yLlBST1RPQ09MIDogMTA0Jwo+PiArICAtICdib3guZXJyb3IuQkVGT1JFX1JFUExB Q0VfUkVUIDogNTMnCj4+ICAgICAtICdib3guZXJyb3IuVFVQTEVfTk9UX0FSUkFZIDogMjInCj4+ ICAgICAtICdib3guZXJyb3IuS0VZX1BBUlRfQ09VTlQgOiAzMScKPj4gICAgIC0gJ2JveC5lcnJv ci5BTFRFUl9TUEFDRSA6IDEyJwo+PiAgICAgLSAnYm94LmVycm9yLkFDVElWRV9UUkFOU0FDVElP TiA6IDc5Jwo+PiAgICAgLSAnYm94LmVycm9yLkVYQUNUX0ZJRUxEX0NPVU5UIDogMzgnCj4+ICAg ICAtICdib3guZXJyb3IuRFJPUF9TRVFVRU5DRSA6IDE0NCcKPj4gLSAgLSAnYm94LmVycm9yLklO VkFMSURfTVNHUEFDSyA6IDIwJwo+PiAgICAgLSAnYm94LmVycm9yLk1PUkVfVEhBTl9PTkVfVFVQ TEUgOiA0MScKPj4gLSAgLSAnYm94LmVycm9yLlJUUkVFX1JFQ1QgOiAxMDEnCj4+IC0gIC0gJ2Jv eC5lcnJvci5TVUJfU1RNVF9NQVggOiAxMjEnCj4+ICsgIC0gJ2JveC5lcnJvci5VUFNFUlRfVU5J UVVFX1NFQ09OREFSWV9LRVkgOiAxMDUnCj4+ICAgICAtICdib3guZXJyb3IuVU5LTk9XTl9SRVFV RVNUX1RZUEUgOiA0OCcKPj4gLSAgLSAnYm94LmVycm9yLlNQQUNFX0VYSVNUUyA6IDEwJwo+PiAr ICAtICdib3guZXJyb3IuU1VCX1NUTVRfTUFYIDogMTIxJwo+PiAgICAgLSAnYm94LmVycm9yLlBS T0NfTFVBIDogMzInCj4+ICsgIC0gJ2JveC5lcnJvci5TUEFDRV9FWElTVFMgOiAxMCcKPj4gICAg IC0gJ2JveC5lcnJvci5ST0xFX05PVF9HUkFOVEVEIDogOTInCj4+ICsgIC0gJ2JveC5lcnJvci5V TlNVUFBPUlRFRCA6IDUnCj4+ICAgICAtICdib3guZXJyb3IuTk9fU1VDSF9TUEFDRSA6IDM2Jwo+ PiAgICAgLSAnYm94LmVycm9yLldST05HX0lOREVYX1BBUlRTIDogMTA3Jwo+PiAtICAtICdib3gu ZXJyb3IuRFJPUF9TUEFDRSA6IDExJwo+PiAgICAgLSAnYm94LmVycm9yLk1JTl9GSUVMRF9DT1VO VCA6IDM5Jwo+PiAgICAgLSAnYm94LmVycm9yLlJFUExJQ0FTRVRfVVVJRF9NSVNNQVRDSCA6IDYz Jwo+PiAgICAgLSAnYm94LmVycm9yLlVQREFURV9GSUVMRCA6IDI5Jwo+PiArICAtICdib3guZXJy b3IuSU5ERVhfRVhJU1RTIDogODUnCj4+ICAgICAtICdib3guZXJyb3IuQ09NUFJFU1NJT04gOiAx MTknCj4+ICAgICAtICdib3guZXJyb3IuSU5WQUxJRF9PUkRFUiA6IDY4Jwo+PiAtICAtICdib3gu ZXJyb3IuSU5ERVhfRVhJU1RTIDogODUnCj4+ICAgICAtICdib3guZXJyb3IuU1BMSUNFIDogMjUn Cj4+ICAgICAtICdib3guZXJyb3IuVU5LTk9XTiA6IDAnCj4+ICsgIC0gJ2JveC5lcnJvci5JREVO VElGSUVSIDogNzAnCj4+ICAgICAtICdib3guZXJyb3IuRFJPUF9QUklNQVJZX0tFWSA6IDE3Jwo+ PiAgICAgLSAnYm94LmVycm9yLk5VTExBQkxFX1BSSU1BUlkgOiAxNTInCj4+ICAgICAtICdib3gu ZXJyb3IuTk9fU1VDSF9TRVFVRU5DRSA6IDE0NScKPj4gICAgIC0gJ2JveC5lcnJvci5SRUxPQURf Q0ZHIDogNTgnCj4+ICAgICAtICdib3guZXJyb3IuSU5WQUxJRF9VVUlEIDogNjQnCj4+IC0gIC0g J2JveC5lcnJvci5JTkpFQ1RJT04gOiA4Jwo+PiArICAtICdib3guZXJyb3IuRFJPUF9TUEFDRSA6 IDExJwo+PiAgICAgLSAnYm94LmVycm9yLlRJTUVPVVQgOiA3OCcKPj4gLSAgLSAnYm94LmVycm9y LklERU5USUZJRVIgOiA3MCcKPj4gICAgIC0gJ2JveC5lcnJvci5JVEVSQVRPUl9UWVBFIDogNzIn Cj4+ICAgICAtICdib3guZXJyb3IuUkVQTElDQV9NQVggOiA3MycKPj4gKyAgLSAnYm94LmVycm9y Lk5PX1NVQ0hfUk9MRSA6IDgyJwo+PiAgICAgLSAnYm94LmVycm9yLk1JU1NJTkdfUkVRVUVTVF9G SUVMRCA6IDY5Jwo+PiAgICAgLSAnYm94LmVycm9yLk1JU1NJTkdfU05BUFNIT1QgOiA5MycKPj4g ICAgIC0gJ2JveC5lcnJvci5XUk9OR19TUEFDRV9PUFRJT05TIDogMTExJwo+PiAgICAgLSAnYm94 LmVycm9yLlJFQURPTkxZIDogNycKPj4gLSAgLSAnYm94LmVycm9yLlVOU1VQUE9SVEVEIDogNScK Pj4gICAgIC0gJ2JveC5lcnJvci5VUERBVEVfSU5URUdFUl9PVkVSRkxPVyA6IDk1Jwo+PiArICAt ICdib3guZXJyb3IuUlRSRUVfUkVDVCA6IDEwMScKPj4gICAgIC0gJ2JveC5lcnJvci5OT19DT05O RUNUSU9OIDogNzcnCj4+ICAgICAtICdib3guZXJyb3IuSU5WQUxJRF9YTE9HX09SREVSIDogNzYn Cj4+IC0gIC0gJ2JveC5lcnJvci5VUFNFUlRfVU5JUVVFX1NFQ09OREFSWV9LRVkgOiAxMDUnCj4+ IC0gIC0gJ2JveC5lcnJvci5ST0xMQkFDS19JTl9TVUJfU1RNVCA6IDEyMycKPj4gICAgIC0gJ2Jv eC5lcnJvci5XUk9OR19TQ0hFTUFfVkVSU0lPTiA6IDEwOScKPj4gLSAgLSAnYm94LmVycm9yLlVO U1VQUE9SVEVEX0lOREVYX0ZFQVRVUkUgOiAxMTInCj4+IC0gIC0gJ2JveC5lcnJvci5JTkRFWF9Q QVJUX1RZUEVfTUlTTUFUQ0ggOiAyNCcKPj4gKyAgLSAnYm94LmVycm9yLlJPTExCQUNLX0lOX1NV Ql9TVE1UIDogMTIzJwo+PiArICAtICdib3guZXJyb3IuUFJPVE9DT0wgOiAxMDQnCj4+ICAgICAt ICdib3guZXJyb3IuSU5WQUxJRF9YTE9HX1RZUEUgOiAxMjUnCj4+ICsgIC0gJ2JveC5lcnJvci5J TkRFWF9QQVJUX1RZUEVfTUlTTUFUQ0ggOiAyNCcKPj4gKyAgLSAnYm94LmVycm9yLlVOU1VQUE9S VEVEX0lOREVYX0ZFQVRVUkUgOiAxMTInCj4+ICAgLi4uCj4+ICAgdGVzdF9ydW46Y21kKCJzZXRv cHQgZGVsaW1pdGVyICcnIik7Cj4+ICAgLS0tCj4+IGRpZmYgLS1naXQgYS90ZXN0L2JveC9zZWxl Y3QucmVzdWx0IGIvdGVzdC9ib3gvc2VsZWN0LnJlc3VsdAo+PiBpbmRleCA0YWVkNzA2Li5iM2Vl NmNkIDEwMDY0NAo+PiAtLS0gYS90ZXN0L2JveC9zZWxlY3QucmVzdWx0Cj4+ICsrKyBiL3Rlc3Qv Ym94L3NlbGVjdC5yZXN1bHQKPj4gQEAgLTYxOSwzMSArNjE5LDYyIEBAIGNvbGxlY3RnYXJiYWdl KCdjb2xsZWN0JykKPj4gICAtLS0KPj4gICAtIDAKPj4gICAuLi4KPj4gKy0tIGdoLTMyMjQgcmVz dXJyZWN0IHR1cGxlIGJpZ3JlZnMKPj4gK2NvbGxlY3RnYXJiYWdlKCdzdG9wJykKPj4gKy0tLQo+ PiArLSAwCj4+ICsuLi4KPj4gICBzID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3NlbGVjdCcs IHsgdGVtcG9yYXJ5ID0gdHJ1ZSB9KQo+PiAgIC0tLQo+PiAgIC4uLgo+PiAgIGluZGV4ID0gczpj cmVhdGVfaW5kZXgoJ3ByaW1hcnknLCB7IHR5cGUgPSAndHJlZScgfSkKPj4gICAtLS0KPj4gICAu Li4KPj4gLWEgPSBzOmluc2VydHswfQo+PiArXyA9IHM6aW5zZXJ0ezB9Cj4+ICstLS0KPj4gKy4u Lgo+PiArXyA9IHM6aW5zZXJ0ezF9Cj4+ICstLS0KPj4gKy4uLgo+PiArXyA9IHM6aW5zZXJ0ezJ9 Cj4+ICstLS0KPj4gKy4uLgo+PiArXyA9IHM6aW5zZXJ0ezN9Cj4+ICstLS0KPj4gKy4uLgo+PiAr bG90c19vZl9saW5rcyA9IHNldG1ldGF0YWJsZSh7fSwge19fbW9kZSA9ICd2J30pCj4+ICAgLS0t Cj4+ICAgLi4uCj4+IC1sb3RzX29mX2xpbmtzID0ge30KPj4gK2kgPSAwCj4+ICstLS0KPj4gKy4u Lgo+PiArd2hpbGUgKGkgPCAzMzAwMCkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlua3MsIHM6 Z2V0ezB9KSBpID0gaSArIDEgZW5kCj4+ICstLS0KPj4gKy4uLgo+PiArd2hpbGUgKGkgPCA2NjAw MCkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlua3MsIHM6Z2V0ezF9KSBpID0gaSArIDEgZW5k Cj4+ICstLS0KPj4gKy4uLgo+PiArd2hpbGUgKGkgPCAxMDAwMDApIGRvIHRhYmxlLmluc2VydChs b3RzX29mX2xpbmtzLCBzOmdldHsyfSkgaSA9IGkgKyAxIGVuZAo+PiAgIC0tLQo+PiAgIC4uLgo+ PiAgIHJlZl9jb3VudCA9IDAKPj4gICAtLS0KPj4gICAuLi4KPj4gLXdoaWxlICh0cnVlKSBkbyB0 YWJsZS5pbnNlcnQobG90c19vZl9saW5rcywgczpnZXR7MH0pIHJlZl9jb3VudCA9IHJlZl9jb3Vu dCArIDEgZW5kCj4+ICtmb3IgaywgdiBpbiBwYWlycyhsb3RzX29mX2xpbmtzKSBkbyByZWZfY291 bnQgPSByZWZfY291bnQgKyAxIGVuZAo+PiAgIC0tLQo+PiAtLSBlcnJvcjogVHVwbGUgcmVmZXJl bmNlIGNvdW50ZXIgb3ZlcmZsb3cKPj4gICAuLi4KPj4gICByZWZfY291bnQKPj4gICAtLS0KPj4g LS0gNjU1MzEKPj4gKy0gMTAwMDAwCj4+ICAgLi4uCj4+IC1sb3RzX29mX2xpbmtzID0ge30KPj4g Ky0tIGNoZWNrIHRoYXQgdHVwbGVzIGFyZSBkZWxldGVkIGFmdGVyIGdjIGlzIGFjdGl2YXRlZAo+ PiArY29sbGVjdGdhcmJhZ2UoJ2NvbGxlY3QnKQo+PiAgIC0tLQo+PiArLSAwCj4+ICsuLi4KPj4g K2xvdHNfb2ZfbGlua3MKPj4gKy0tLQo+PiArLSBbXQo+PiAgIC4uLgo+PiAgIHM6ZHJvcCgpCj4+ ICAgLS0tCj4+IGRpZmYgLS1naXQgYS90ZXN0L2JveC9zZWxlY3QudGVzdC5sdWEgYi90ZXN0L2Jv eC9zZWxlY3QudGVzdC5sdWEKPj4gaW5kZXggNTRjMmVjYy4uMzQwMGJkYSAxMDA2NDQKPj4gLS0t IGEvdGVzdC9ib3gvc2VsZWN0LnRlc3QubHVhCj4+ICsrKyBiL3Rlc3QvYm94L3NlbGVjdC50ZXN0 Lmx1YQo+PiBAQCAtMTI0LDEyICsxMjQsMjUgQEAgdGVzdC5yYW5kb20ocy5pbmRleFswXSwgNDgp Cj4+ICAgczpkcm9wKCkKPj4gCj4+ICAgY29sbGVjdGdhcmJhZ2UoJ2NvbGxlY3QnKQo+PiArCj4+ ICstLSBnaC0zMjI0IHJlc3VycmVjdCB0dXBsZSBiaWdyZWZzCj4+ICsKPj4gK2NvbGxlY3RnYXJi YWdlKCdzdG9wJykKPj4gICBzID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3NlbGVjdCcsIHsg dGVtcG9yYXJ5ID0gdHJ1ZSB9KQo+PiAgIGluZGV4ID0gczpjcmVhdGVfaW5kZXgoJ3ByaW1hcnkn LCB7IHR5cGUgPSAndHJlZScgfSkKPj4gLWEgPSBzOmluc2VydHswfQo+PiAtbG90c19vZl9saW5r cyA9IHt9Cj4+ICtfID0gczppbnNlcnR7MH0KPj4gK18gPSBzOmluc2VydHsxfQo+PiArXyA9IHM6 aW5zZXJ0ezJ9Cj4+ICtfID0gczppbnNlcnR7M30KPj4gK2xvdHNfb2ZfbGlua3MgPSBzZXRtZXRh dGFibGUoe30sIHtfX21vZGUgPSAndid9KQo+PiAraSA9IDAKPj4gK3doaWxlIChpIDwgMzMwMDAp IGRvIHRhYmxlLmluc2VydChsb3RzX29mX2xpbmtzLCBzOmdldHswfSkgaSA9IGkgKyAxIGVuZAo+ PiArd2hpbGUgKGkgPCA2NjAwMCkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlua3MsIHM6Z2V0 ezF9KSBpID0gaSArIDEgZW5kCj4+ICt3aGlsZSAoaSA8IDEwMDAwMCkgZG8gdGFibGUuaW5zZXJ0 KGxvdHNfb2ZfbGlua3MsIHM6Z2V0ezJ9KSBpID0gaSArIDEgZW5kCj4+ICAgcmVmX2NvdW50ID0g MAo+PiAtd2hpbGUgKHRydWUpIGRvIHRhYmxlLmluc2VydChsb3RzX29mX2xpbmtzLCBzOmdldHsw fSkgcmVmX2NvdW50ID0gcmVmX2NvdW50ICsgMSBlbmQKPj4gK2ZvciBrLCB2IGluIHBhaXJzKGxv dHNfb2ZfbGlua3MpIGRvIHJlZl9jb3VudCA9IHJlZl9jb3VudCArIDEgZW5kCj4+ICAgcmVmX2Nv dW50Cj4+IC1sb3RzX29mX2xpbmtzID0ge30KPj4gKy0tIGNoZWNrIHRoYXQgdHVwbGVzIGFyZSBk ZWxldGVkIGFmdGVyIGdjIGlzIGFjdGl2YXRlZAo+PiArY29sbGVjdGdhcmJhZ2UoJ2NvbGxlY3Qn KQo+PiArbG90c19vZl9saW5rcwo+PiAgIHM6ZHJvcCgpCj4+IGRpZmYgLS1naXQgYS90ZXN0L3Vu aXQvQ01ha2VMaXN0cy50eHQgYi90ZXN0L3VuaXQvQ01ha2VMaXN0cy50eHQKPj4gaW5kZXggZGJj MDJjZC4uYWVmNTMxNiAxMDA2NDQKPj4gLS0tIGEvdGVzdC91bml0L0NNYWtlTGlzdHMudHh0Cj4+ ICsrKyBiL3Rlc3QvdW5pdC9DTWFrZUxpc3RzLnR4dAo+PiBAQCAtMTkyLDMgKzE5Miw2IEBAIHRh cmdldF9saW5rX2xpYnJhcmllcyh2eV9jYWNoZS50ZXN0ICR7SVRFUkFUT1JfVEVTVF9MSUJTfSkK Pj4gCj4+ICAgYWRkX2V4ZWN1dGFibGUoY29sbC50ZXN0IGNvbGwuY3BwKQo+PiAgIHRhcmdldF9s aW5rX2xpYnJhcmllcyhjb2xsLnRlc3QgY29yZSB1bml0ICR7SUNVX0xJQlJBUklFU30gbWlzYykK Pj4gKwo+PiArYWRkX2V4ZWN1dGFibGUodHVwbGVfYmlncmVmLnRlc3QgdHVwbGVfYmlncmVmLmMp Cj4+ICt0YXJnZXRfbGlua19saWJyYXJpZXModHVwbGVfYmlncmVmLnRlc3QgdHVwbGUgdW5pdCkK Pj4gZGlmZiAtLWdpdCBhL3Rlc3QvdW5pdC90dXBsZV9iaWdyZWYuYyBiL3Rlc3QvdW5pdC90dXBs ZV9iaWdyZWYuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi45NzA5 NWRjCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvdGVzdC91bml0L3R1cGxlX2JpZ3JlZi5jCj4+ IEBAIC0wLDAgKzEsMTE3IEBACj4+ICsjaW5jbHVkZSAidnlfaXRlcmF0b3JzX2hlbHBlci5oIgo+ PiArI2luY2x1ZGUgIm1lbW9yeS5oIgo+PiArI2luY2x1ZGUgImZpYmVyLmgiCj4+ICsjaW5jbHVk ZSAidW5pdC5oIgo+PiArI2luY2x1ZGUgPG1zZ3B1Y2suaD4KPj4gKyNpbmNsdWRlICJ0cml2aWEv dXRpbC5oIgo+PiArCj4+ICtlbnVtIHsKPj4gKwlCSUdSRUZfRElGRiA9IDEwLAo+PiArCUJJR1JF Rl9DT1VOVCA9IDcwMDAzLAo+PiArCUJJR1JFRl9DQVBBQ0lUWSA9IDEwNywKPj4gK307Cj4+ICsK Pj4gK3N0YXRpYyBjaGFyIHR1cGxlX2J1Zls2NF07Cj4+ICtzdGF0aWMgY2hhciAqdHVwbGVfZW5k ID0gdHVwbGVfYnVmOwo+PiArCj4+ICsvKioKPj4gKyAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBu ZXcgdHVwbGUgd2l0aCByZWZzID09IDEuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IHR1cGxlICoKPj4gK2NyZWF0ZV90dXBsZSgpCj4+ICt7Cj4+ICsJc3RydWN0IHR1cGxlICpyZXQg PQo+PiArCQl0dXBsZV9uZXcoYm94X3R1cGxlX2Zvcm1hdF9kZWZhdWx0KCksIHR1cGxlX2J1Ziwg dHVwbGVfZW5kKTsKPj4gKwl0dXBsZV9yZWYocmV0KTsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+ PiArCj4+ICsvKioKPj4gKyAqIFRoaXMgdGVzdCBwZXJmb3JtcyBvdmVyYWxsIGNoZWNrIG9mIGJp Z3JlZnMuCj4+ICsgKiBXaGF0IGl0IGNoZWNrczoKPj4gKyAqIDEpIFRpbGwgcmVmcyA8PSBUVVBM RV9SRUZfTUFYIGl0IHNob3dzIG51bWJlciBvZiByZWZzCj4+ICsgKiBvZiB0dXBsZSBhbmQgaXQg aXNuJ3QgYSBiaWdyZWYuCj4+ICsgKiAyKSBXaGVuIHJlZnMgPiBUVVBMRV9SRUZfTUFYIGZpcnN0 IDE1IGJpdHMgb2YgaXQgYmVjb21lcwo+PiArICogaW5kZXggb2YgYmlncmVmIGFuZCB0aGUgbGFz dCBiaXQgYmVjb21lcyB0cnVlIHdoaWNoCj4+ICsgKiBzaG93cyB0aGF0IGl0IGlzIGJpZ3JlZi4K Pj4gKyAqIDMpIEVhY2ggb2YgdHVwbGUgaGFzIGl0cyBvd24gbnVtYmVyIG9mIHJlZnMsIGJ1dCBh bGwKPj4gKyAqIHRoZXNlIG51bWJlcnMgbW9yZSB0aGFuIGl0IGlzIG5lZWRlZCBmb3IgZ2V0dGlu ZyBhIGJpZ3JlZi4KPj4gKyAqIDQpIEluZGV4ZXMgb2YgYmlncmVmcyBhcmUgZ2l2ZW4gc2VxdWVu dGlhbGx5Lgo+PiArICogNSkgQWZ0ZXIgc29tZSB0dXBsZXMgYXJlIHNlcXVlbnRpYWxseSBkZWxl dGVkIGFsbCBvZgo+PiArICogb3RoZXJzIGJpZ3JlZnMgYXJlIGZpbmUuIEluIHRoaXMgdGVzdCBC SUdSRUZfQ0FQQUNJVFkKPj4gKyAqIHR1cGxlcyBjcmVhdGVkIGFuZCBlYWNoIG9mIHRoZWlyIHJl ZiBjb3VudGVyIGluY3JlYXNlZAo+PiArICogdG8gKEJJR1JFRl9DT1VOVCAtIGluZGV4IG9mIHR1 cGxlKS4gVHVwbGVzIGFyZSBjcmVhdGVkCj4+ICsgKiBjb25zaXN0ZW50bHkuCj4+ICsgKi8KPj4g K3N0YXRpYyBpbnQKPj4gK3Rlc3RfYmlncmVmc18xKCkKPj4gK3sKPj4gKwlzdHJ1Y3QgdHVwbGUg Kip0dXBsZXMgPSAoc3RydWN0IHR1cGxlICoqKSBtYWxsb2MoQklHUkVGX0NBUEFDSVRZICoKPj4g KwkJCQkJCQkgc2l6ZW9mKCp0dXBsZXMpKTsKPj4gKwlmb3IoaW50IGkgPSAwOyBpIDwgQklHUkVG X0NBUEFDSVRZOyArK2kpCj4+ICsJCXR1cGxlc1tpXSA9IGNyZWF0ZV90dXBsZSgpOwo+PiArCWZv cihpbnQgaSA9IDA7IGkgPCBCSUdSRUZfQ0FQQUNJVFk7ICsraSkgewo+PiArCQlhc3NlcnQodHVw bGVzW2ldLT5yZWZzID09IDEpOwo+PiArCQlmb3IoaW50IGogPSAxOyBqIDwgVFVQTEVfUkVGX01B WDsgKytqKQo+PiArCQkJdHVwbGVfcmVmKHR1cGxlc1tpXSk7Cj4+ICsJCWFzc2VydCghIHR1cGxl c1tpXS0+aXNfYmlncmVmKTsKPj4gKwkJdHVwbGVfcmVmKHR1cGxlc1tpXSk7Cj4+ICsJCWFzc2Vy dCh0dXBsZXNbaV0tPmlzX2JpZ3JlZik7Cj4+ICsJCWZvcihpbnQgaiA9IFRVUExFX1JFRl9NQVgg KyAxOyBqIDwgQklHUkVGX0NPVU5UIC0gaTsgKytqKQo+PiArCQkJdHVwbGVfcmVmKHR1cGxlc1tp XSk7Cj4+ICsJCWFzc2VydCh0dXBsZXNbaV0tPmlzX2JpZ3JlZik7Cj4+ICsJfQo+PiArCWZvcihp bnQgaSA9IDA7IGkgPCBCSUdSRUZfQ0FQQUNJVFk7ICsraSkgewo+PiArCQlmb3IoaW50IGogPSAx OyBqIDwgQklHUkVGX0NPVU5UIC0gaTsgKytqKQo+PiArCQkJdHVwbGVfdW5yZWYodHVwbGVzW2ld KTsKPj4gKwkJYXNzZXJ0KHR1cGxlc1tpXS0+cmVmcyA9PSAxKTsKPj4gKwkJdHVwbGVfdW5yZWYo dHVwbGVzW2ldKTsKPj4gKwl9Cj4+ICsJZnJlZSh0dXBsZXMpOwo+PiArCXJldHVybiAwOwo+PiAr fQo+PiArCj4+ICsvKioKPj4gKyAqIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBiaWdyZWZzIHdvcmtz IGZpbmUgYWZ0ZXIgYmVpbmcKPj4gKyAqIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBCSUdSRUZfRElG RiB0aW1lcy4KPj4gKyAqLwo+PiArc3RhdGljIGludAo+PiArdGVzdF9iaWdyZWZzXzIoKQo+PiAr ewo+PiArCXN0cnVjdCB0dXBsZSAqdHVwbGUgPSBjcmVhdGVfdHVwbGUoKTsKPj4gKwlmb3IoaW50 IGkgPSAwOyBpIDwgMjsgKytpKSB7Cj4+ICsJCWFzc2VydCh0dXBsZS0+cmVmcyA9PSAxKTsKPj4g KwkJZm9yKGludCBqID0gMTsgaiA8IEJJR1JFRl9DT1VOVDsgKytqKQo+PiArCQkJdHVwbGVfcmVm KHR1cGxlKTsKPj4gKwkJYXNzZXJ0KHR1cGxlLT5pc19iaWdyZWYpOwo+PiArCQlmb3IoaW50IGog PSAxOyBqIDwgQklHUkVGX0NPVU5UOyArK2opCj4+ICsJCQl0dXBsZV91bnJlZih0dXBsZSk7Cj4+ ICsJCWFzc2VydCh0dXBsZS0+cmVmcyA9PSAxKTsKPj4gKwl9Cj4+ICsJdHVwbGVfdW5yZWYodHVw bGUpOwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtpbnQKPj4gK21haW4oKQo+PiArewo+ PiArCWhlYWRlcigpOwo+PiArCXBsYW4oMik7Cj4+ICsKPj4gKwltZW1vcnlfaW5pdCgpOwo+PiAr CWZpYmVyX2luaXQoZmliZXJfY19pbnZva2UpOwo+PiArCXR1cGxlX2luaXQoTlVMTCk7Cj4+ICsK Pj4gKwl0dXBsZV9lbmQgPSBtcF9lbmNvZGVfYXJyYXkodHVwbGVfZW5kLCAxKTsKPj4gKwl0dXBs ZV9lbmQgPSBtcF9lbmNvZGVfdWludCh0dXBsZV9lbmQsIDIpOwo+PiArCj4+ICsJb2sodGVzdF9i aWdyZWZzXzEoKSA9PSAwLCAiT3ZlcmFsbCB0ZXN0IHBhc3NlZC4iKTsKPj4gKwlvayh0ZXN0X2Jp Z3JlZnNfMigpID09IDAsICJDcmVhdGUvZGVzdHJveSB0ZXN0IHBhc3NlZC4iKTsKPj4gKwo+PiAr CXR1cGxlX2ZyZWUoKTsKPj4gKwlmaWJlcl9mcmVlKCk7Cj4+ICsJbWVtb3J5X2ZyZWUoKTsKPj4g Kwo+PiArCWZvb3RlcigpOwo+PiArCWNoZWNrX3BsYW4oKTsKPj4gK30KPj4gZGlmZiAtLWdpdCBh L3Rlc3QvdW5pdC90dXBsZV9iaWdyZWYucmVzdWx0IGIvdGVzdC91bml0L3R1cGxlX2JpZ3JlZi5y ZXN1bHQKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uYWQyMmY0NQo+ PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3Rlc3QvdW5pdC90dXBsZV9iaWdyZWYucmVzdWx0Cj4+ IEBAIC0wLDAgKzEsNSBAQAo+PiArCSoqKiBtYWluICoqKgo+PiArMS4uMgo+PiArb2sgMSAtIE92 ZXJhbGwgdGVzdCBwYXNzZWQuCj4+ICtvayAyIC0gQ3JlYXRlL2Rlc3Ryb3kgdGVzdCBwYXNzZWQu Cj4+ICsJKioqIG1haW46IGRvbmUgKioqCj4+IAo+CmNvbW1pdCAxZDQ5N2NkMjQ4ODIwMmE2YjU2 NmU1Mzk5MTYwYWNjODQ4NGZmMzlkCkF1dGhvcjogTWVyZ2VuIEltZWV2IDxpbWVldm1hQGdtYWls LmNvbT4KRGF0ZTrCoMKgIE1vbiBNYXkgMjggMTk6MTc6NTEgMjAxOCArMDMwMAoKwqDCoMKgIGJv eDogY3JlYXRlIGJpZ3JlZnMgZm9yIHR1cGxlcwrCoMKgIMKgCsKgwqDCoCBEdWUgdG8gbGltaXRh dGlvbiBvZiByZWZlcmVuY2UgY291bnRlcnMgZm9yIHR1cGxlIGJlaW5nIG9ubHkKwqDCoMKgIDY1 NTM1IGl0IHdhcyBwb3NzaWJsZSB0byByZWFjaCB0aGlzIGxpbWl0YXRpb24uIFRoaXMgcGF0Y2gK wqDCoMKgIGluY3JlYXNlcyBjYXBhY2l0eSBvZiByZWZlcmVuY2UgY291bnRlcnMgdG8gNCBiaWxs aW9ucy4KwqDCoCDCoArCoMKgwqAgQ2xvc2VzICMzMjI0CgpkaWZmIC0tZ2l0IGEvc3JjL2JveC9i b3guY2MgYi9zcmMvYm94L2JveC5jYwppbmRleCBjNzI4YTRjNTMuLjQyNTc4NjEzZCAxMDA2NDQK LS0tIGEvc3JjL2JveC9ib3guY2MKKysrIGIvc3JjL2JveC9ib3guY2MKQEAgLTE3NCwyMCArMTc0 LDIyIEBAIHByb2Nlc3Nfcncoc3RydWN0IHJlcXVlc3QgKnJlcXVlc3QsIHN0cnVjdCBzcGFjZSAq c3BhY2UsIHN0cnVjdCB0dXBsZSAqKnJlc3VsdCkKwqDCoMKgIMKgwqDCoCDCoHR4bl9yb2xsYmFj a19zdG10KCk7CsKgwqDCoCDCoMKgwqAgwqByZXR1cm4gLTE7CsKgwqDCoCDCoH0KK8KgwqAgwqBp ZiAocmVzdWx0ID09IE5VTEwpCivCoMKgIMKgwqDCoCDCoHJldHVybiB0eG5fY29tbWl0X3N0bXQo dHhuLCByZXF1ZXN0KTsKK8KgwqAgwqAqcmVzdWx0ID0gdHVwbGU7CivCoMKgIMKgaWYgKHR1cGxl ID09IE5VTEwpCivCoMKgIMKgwqDCoCDCoHJldHVybiB0eG5fY29tbWl0X3N0bXQodHhuLCByZXF1 ZXN0KTsKwqDCoMKgIMKgLyoKwqDCoMKgIMKgICogUGluIHRoZSB0dXBsZSBsb2NhbGx5IGJlZm9y ZSB0aGUgY29tbWl0LArCoMKgwqAgwqAgKiBvdGhlcndpc2UgaXQgbWF5IGdvIGF3YXkgZHVyaW5n IHlpZWxkIGluCsKgwqDCoCDCoCAqIHdoZW4gV0FMIGlzIHdyaXR0ZW4gaW4gYXV0b2NvbW1pdCBt b2RlLgrCoMKgwqAgwqAgKi8KLcKgwqAgwqBUdXBsZVJlZk5pbCByZWYodHVwbGUpOwotwqDCoCDC oGlmICh0eG5fY29tbWl0X3N0bXQodHhuLCByZXF1ZXN0KSAhPSAwKQotwqDCoCDCoMKgwqAgwqBy ZXR1cm4gLTE7Ci3CoMKgIMKgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci3CoMKgIMKgwqDCoCDCoGlm ICh0dXBsZSAhPSBOVUxMICYmIHR1cGxlX2JsZXNzKHR1cGxlKSA9PSBOVUxMKQotwqDCoCDCoMKg wqAgwqDCoMKgIMKgcmV0dXJuIC0xOwotwqDCoCDCoMKgwqAgwqAqcmVzdWx0ID0gdHVwbGU7Ci3C oMKgIMKgfQotwqDCoCDCoHJldHVybiAwOworwqDCoCDCoHR1cGxlX3JlZih0dXBsZSk7CivCoMKg IMKgaW50IHJjID0gdHhuX2NvbW1pdF9zdG10KHR4biwgcmVxdWVzdCk7CivCoMKgIMKgaWYgKHJj ID09IDApCivCoMKgIMKgwqDCoCDCoHR1cGxlX2JsZXNzKHR1cGxlKTsKK8KgwqAgwqB0dXBsZV91 bnJlZih0dXBsZSk7CivCoMKgIMKgcmV0dXJuIHJjOwrCoH0KwqAKwqB2b2lkCmRpZmYgLS1naXQg YS9zcmMvYm94L2VycmNvZGUuaCBiL3NyYy9ib3gvZXJyY29kZS5oCmluZGV4IGEwNzU5ZjhmNC4u ZTAwOTUyNGFkIDEwMDY0NAotLS0gYS9zcmMvYm94L2VycmNvZGUuaAorKysgYi9zcmMvYm94L2Vy cmNvZGUuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHN0cnVjdCBlcnJjb2RlX3JlY29yZCB7CsKgwqDC oCDCoC8qIDgzICovXyhFUl9ST0xFX0VYSVNUUyzCoMKgIMKgwqDCoCDCoCJSb2xlICclcycgYWxy ZWFkeSBleGlzdHMiKSBcCsKgwqDCoCDCoC8qIDg0ICovXyhFUl9DUkVBVEVfUk9MRSzCoMKgIMKg wqDCoCDCoCJGYWlsZWQgdG8gY3JlYXRlIHJvbGUgJyVzJzogJXMiKSBcCsKgwqDCoCDCoC8qIDg1 ICovXyhFUl9JTkRFWF9FWElTVFMswqDCoCDCoMKgwqAgwqAiSW5kZXggJyVzJyBhbHJlYWR5IGV4 aXN0cyIpIFwKLcKgwqAgwqAvKiA4NiAqL18oRVJfVFVQTEVfUkVGX09WRVJGTE9XLMKgwqAgwqAi VHVwbGUgcmVmZXJlbmNlIGNvdW50ZXIgb3ZlcmZsb3ciKSBcCivCoMKgIMKgLyogODYgKi9fKEVS X1VOVVNFRDYswqDCoCDCoMKgwqAgwqDCoMKgIMKgIiIpIFwKwqDCoMKgIMKgLyogODcgKi9fKEVS X1JPTEVfTE9PUCzCoMKgIMKgwqDCoCDCoMKgwqAgwqAiR3JhbnRpbmcgcm9sZSAnJXMnIHRvIHJv bGUgJyVzJyB3b3VsZCBjcmVhdGUgYSBsb29wIikgXArCoMKgwqAgwqAvKiA4OCAqL18oRVJfR1JB TlQswqDCoCDCoMKgwqAgwqDCoMKgIMKgIkluY29ycmVjdCBncmFudCBhcmd1bWVudHM6ICVzIikg XArCoMKgwqAgwqAvKiA4OSAqL18oRVJfUFJJVl9HUkFOVEVELMKgwqAgwqDCoMKgIMKgIlVzZXIg JyVzJyBhbHJlYWR5IGhhcyAlcyBhY2Nlc3Mgb24gJXMgJyVzJyIpIFwKZGlmZiAtLWdpdCBhL3Ny Yy9ib3gvaW5kZXguY2MgYi9zcmMvYm94L2luZGV4LmNjCmluZGV4IDNjNjJlYzFjYy4uZjk5MmJj OTRjIDEwMDY0NAotLS0gYS9zcmMvYm94L2luZGV4LmNjCisrKyBiL3NyYy9ib3gvaW5kZXguY2MK QEAgLTIyMCw4ICsyMjAsOCBAQCBib3hfaW5kZXhfcmFuZG9tKHVpbnQzMl90IHNwYWNlX2lkLCB1 aW50MzJfdCBpbmRleF9pZCwgdWludDMyX3Qgcm5kLArCoMKgwqAgwqAvKiBObyB0eCBtYW5hZ2Vt ZW50LCByYW5kb20oKSBpcyBmb3IgYXBwcm94aW1hdGlvbiBhbnl3YXkuICovCsKgwqDCoCDCoGlm IChpbmRleF9yYW5kb20oaW5kZXgsIHJuZCwgcmVzdWx0KSAhPSAwKQrCoMKgwqAgwqDCoMKgIMKg cmV0dXJuIC0xOwotwqDCoCDCoGlmICgqcmVzdWx0ICE9IE5VTEwgJiYgdHVwbGVfYmxlc3MoKnJl c3VsdCkgPT0gTlVMTCkKLcKgwqAgwqDCoMKgIMKgcmV0dXJuIC0xOworwqDCoCDCoGlmICgqcmVz dWx0ICE9IE5VTEwpCivCoMKgIMKgwqDCoCDCoHR1cGxlX2JsZXNzKCpyZXN1bHQpOwrCoMKgwqAg wqByZXR1cm4gMDsKwqB9CsKgCkBAIC0yNTMsOCArMjUzLDggQEAgYm94X2luZGV4X2dldCh1aW50 MzJfdCBzcGFjZV9pZCwgdWludDMyX3QgaW5kZXhfaWQsIGNvbnN0IGNoYXIgKmtleSwKwqDCoMKg IMKgdHhuX2NvbW1pdF9yb19zdG10KHR4bik7CsKgwqDCoCDCoC8qIENvdW50IHN0YXRpc3RpY3Mu ICovCsKgwqDCoCDCoHJtZWFuX2NvbGxlY3Qocm1lYW5fYm94LCBJUFJPVE9fU0VMRUNULCAxKTsK LcKgwqAgwqBpZiAoKnJlc3VsdCAhPSBOVUxMICYmIHR1cGxlX2JsZXNzKCpyZXN1bHQpID09IE5V TEwpCi3CoMKgIMKgwqDCoCDCoHJldHVybiAtMTsKK8KgwqAgwqBpZiAoKnJlc3VsdCAhPSBOVUxM KQorwqDCoCDCoMKgwqAgwqB0dXBsZV9ibGVzcygqcmVzdWx0KTsKwqDCoMKgIMKgcmV0dXJuIDA7 CsKgfQrCoApAQCAtMjg1LDggKzI4NSw4IEBAIGJveF9pbmRleF9taW4odWludDMyX3Qgc3BhY2Vf aWQsIHVpbnQzMl90IGluZGV4X2lkLCBjb25zdCBjaGFyICprZXksCsKgwqDCoCDCoMKgwqAgwqBy ZXR1cm4gLTE7CsKgwqDCoCDCoH0KwqDCoMKgIMKgdHhuX2NvbW1pdF9yb19zdG10KHR4bik7Ci3C oMKgIMKgaWYgKCpyZXN1bHQgIT0gTlVMTCAmJiB0dXBsZV9ibGVzcygqcmVzdWx0KSA9PSBOVUxM KQotwqDCoCDCoMKgwqAgwqByZXR1cm4gLTE7CivCoMKgIMKgaWYgKCpyZXN1bHQgIT0gTlVMTCkK K8KgwqAgwqDCoMKgIMKgdHVwbGVfYmxlc3MoKnJlc3VsdCk7CsKgwqDCoCDCoHJldHVybiAwOwrC oH0KwqAKQEAgLTMxNyw4ICszMTcsOCBAQCBib3hfaW5kZXhfbWF4KHVpbnQzMl90IHNwYWNlX2lk LCB1aW50MzJfdCBpbmRleF9pZCwgY29uc3QgY2hhciAqa2V5LArCoMKgwqAgwqDCoMKgIMKgcmV0 dXJuIC0xOwrCoMKgwqAgwqB9CsKgwqDCoCDCoHR4bl9jb21taXRfcm9fc3RtdCh0eG4pOwotwqDC oCDCoGlmICgqcmVzdWx0ICE9IE5VTEwgJiYgdHVwbGVfYmxlc3MoKnJlc3VsdCkgPT0gTlVMTCkK LcKgwqAgwqDCoMKgIMKgcmV0dXJuIC0xOworwqDCoCDCoGlmICgqcmVzdWx0ICE9IE5VTEwpCivC oMKgIMKgwqDCoCDCoHR1cGxlX2JsZXNzKCpyZXN1bHQpOwrCoMKgwqAgwqByZXR1cm4gMDsKwqB9 CsKgCkBAIC0zOTcsOCArMzk3LDggQEAgYm94X2l0ZXJhdG9yX25leHQoYm94X2l0ZXJhdG9yX3Qg Kml0ciwgYm94X3R1cGxlX3QgKipyZXN1bHQpCsKgwqDCoCDCoGFzc2VydChyZXN1bHQgIT0gTlVM TCk7CsKgwqDCoCDCoGlmIChpdGVyYXRvcl9uZXh0KGl0ciwgcmVzdWx0KSAhPSAwKQrCoMKgwqAg wqDCoMKgIMKgcmV0dXJuIC0xOwotwqDCoCDCoGlmICgqcmVzdWx0ICE9IE5VTEwgJiYgdHVwbGVf Ymxlc3MoKnJlc3VsdCkgPT0gTlVMTCkKLcKgwqAgwqDCoMKgIMKgcmV0dXJuIC0xOworwqDCoCDC oGlmICgqcmVzdWx0ICE9IE5VTEwpCivCoMKgIMKgwqDCoCDCoHR1cGxlX2JsZXNzKCpyZXN1bHQp OwrCoMKgwqAgwqByZXR1cm4gMDsKwqB9CsKgCmRpZmYgLS1naXQgYS9zcmMvYm94L2x1YS90dXBs ZS5jIGIvc3JjL2JveC9sdWEvdHVwbGUuYwppbmRleCA4MDU3MzMxM2QuLjIyZmU2OTYxMSAxMDA2 NDQKLS0tIGEvc3JjL2JveC9sdWEvdHVwbGUuYworKysgYi9zcmMvYm94L2x1YS90dXBsZS5jCkBA IC00OTYsMTAgKzQ5Niw3IEBAIGx1YVRfcHVzaHR1cGxlKHN0cnVjdCBsdWFfU3RhdGUgKkwsIGJv eF90dXBsZV90ICp0dXBsZSkKwqDCoMKgIMKgwqDCoCDCoGx1YUxfcHVzaGNkYXRhKEwsIENUSURf Q09OU1RfU1RSVUNUX1RVUExFX1JFRik7CsKgwqDCoCDCoCpwdHIgPSB0dXBsZTsKwqDCoMKgIMKg LyogVGhlIG9yZGVyIGlzIGltcG9ydGFudCAtIGZpcnN0IHJlZmVyZW5jZSB0dXBsZSwgbmV4dCBz ZXQgZ2MgKi8KLcKgwqAgwqBpZiAoYm94X3R1cGxlX3JlZih0dXBsZSkgIT0gMCkgewotwqDCoCDC oMKgwqAgwqBsdWFUX2Vycm9yKEwpOwotwqDCoCDCoMKgwqAgwqByZXR1cm47Ci3CoMKgIMKgfQor wqDCoCDCoGJveF90dXBsZV9yZWYodHVwbGUpOwrCoMKgwqAgwqBsdWFfcHVzaGNmdW5jdGlvbihM LCBsYm94X3R1cGxlX2djKTsKwqDCoMKgIMKgbHVhTF9zZXRjZGF0YWdjKEwsIC0yKTsKwqB9CmRp ZmYgLS1naXQgYS9zcmMvYm94L3BvcnQuYyBiL3NyYy9ib3gvcG9ydC5jCmluZGV4IDAzZjZiZTc5 ZC4uOWI2Yjg1ODBjIDEwMDY0NAotLS0gYS9zcmMvYm94L3BvcnQuYworKysgYi9zcmMvYm94L3Bv cnQuYwpAQCAtNDUsOCArNDUsNyBAQCBwb3J0X3R1cGxlX2FkZChzdHJ1Y3QgcG9ydCAqYmFzZSwg c3RydWN0IHR1cGxlICp0dXBsZSkKwqDCoMKgIMKgc3RydWN0IHBvcnRfdHVwbGUgKnBvcnQgPSBw b3J0X3R1cGxlKGJhc2UpOwrCoMKgwqAgwqBzdHJ1Y3QgcG9ydF90dXBsZV9lbnRyeSAqZTsKwqDC oMKgIMKgaWYgKHBvcnQtPnNpemUgPT0gMCkgewotwqDCoCDCoMKgwqAgwqBpZiAodHVwbGVfcmVm KHR1cGxlKSAhPSAwKQotwqDCoCDCoMKgwqAgwqDCoMKgIMKgcmV0dXJuIC0xOworwqDCoCDCoMKg wqAgwqB0dXBsZV9yZWYodHVwbGUpOwrCoMKgwqAgwqDCoMKgIMKgZSA9ICZwb3J0LT5maXJzdF9l bnRyeTsKwqDCoMKgIMKgwqDCoCDCoHBvcnQtPmZpcnN0ID0gcG9ydC0+bGFzdCA9IGU7CsKgwqDC oCDCoH0gZWxzZSB7CkBAIC01NSwxMCArNTQsNyBAQCBwb3J0X3R1cGxlX2FkZChzdHJ1Y3QgcG9y dCAqYmFzZSwgc3RydWN0IHR1cGxlICp0dXBsZSkKwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqBkaWFn X3NldChPdXRPZk1lbW9yeSwgc2l6ZW9mKCplKSwgIm1lbXBvb2xfYWxsb2MiLCAiZSIpOwrCoMKg wqAgwqDCoMKgIMKgwqDCoCDCoHJldHVybiAtMTsKwqDCoMKgIMKgwqDCoCDCoH0KLcKgwqAgwqDC oMKgIMKgaWYgKHR1cGxlX3JlZih0dXBsZSkgIT0gMCkgewotwqDCoCDCoMKgwqAgwqDCoMKgIMKg bWVtcG9vbF9mcmVlKCZwb3J0X3R1cGxlX2VudHJ5X3Bvb2wsIGUpOwotwqDCoCDCoMKgwqAgwqDC oMKgIMKgcmV0dXJuIC0xOwotwqDCoCDCoMKgwqAgwqB9CivCoMKgIMKgwqDCoCDCoHR1cGxlX3Jl Zih0dXBsZSk7CsKgwqDCoCDCoMKgwqAgwqBwb3J0LT5sYXN0LT5uZXh0ID0gZTsKwqDCoMKgIMKg wqDCoCDCoHBvcnQtPmxhc3QgPSBlOwrCoMKgwqAgwqB9CmRpZmYgLS1naXQgYS9zcmMvYm94L3R1 cGxlLmMgYi9zcmMvYm94L3R1cGxlLmMKaW5kZXggMDE0ZjM3NDA2Li40ZWVkOTVmNmMgMTAwNjQ0 Ci0tLSBhL3NyYy9ib3gvdHVwbGUuYworKysgYi9zcmMvYm94L3R1cGxlLmMKQEAgLTQ4LDYgKzQ4 LDI4IEBAIGVudW0gewrCoMKgwqAgwqBPQkpTSVpFX01JTiA9IDE2LArCoH07CsKgCisvKioKKyAq IENvbnRhaW5lciBmb3IgYmlnIHJlZmVyZW5jZSBjb3VudGVycy4gQ29udGFpbnMgYXJyYXkgb2Yg YmlnCisgKiByZWZlcmVuY2UgY291bnRlcnMsIHNpemUgb2YgdGhpcyBhcnJheSBhbmQgbnVtYmVy IG9mIG5vbi16ZXJvCisgKiBiaWcgcmVmZXJlbmNlIGNvdW50ZXJzLiBXaGVuIHJlZmVyZW5jZSBj b3VudGVyIG9mIHR1cGxlIGJlY29tZXMKKyAqIG1vcmUgdGhhbiAzMjc2NywgZmllbGQgcmVmcyBv ZiB0aGlzIHR1cGxlIGJlY29tZXMgaW5kZXggb2YgYmlnCisgKiByZWZlcmVuY2UgY291bnRlciBp biBiaWcgcmVmZXJlbmNlIGNvdW50ZXIgYXJyYXkgYW5kIGZpZWxkCisgKiBpc19iaWdyZWYgaXMg c2V0IHRydWUuIFRoZSBtb21lbnQgYmlnIHJlZmVyZW5jZSBiZWNvbWVzIGVxdWFsCisgKiAzMjc2 NyBpdCBpcyBzZXQgdG8gMCwgcmVmcyBvZiB0aGUgdHVwbGUgYmVjb21lcyAzMjc2NyBhbmQKKyAq IGlzX2JpZ3JlZiBiZWNvbWVzIGZhbHNlLiBCaWcgcmVmZXJlbmNlIGNvdW50ZXIgY2FuIGJlIGVx dWFsIHRvCisgKiAwIG9yIGJlIG1vcmUgdGhhbiAzMjc2Ny4KKyAqLworc3RhdGljIHN0cnVjdCBi aWdyZWZfbGlzdCB7CivCoMKgIMKgLyoqIEZyZWUtbGlzdCBvZiBiaWcgcmVmZXJlbmNlIGNvdW50 ZXJzLiAqLworwqDCoCDCoHVpbnQzMl90ICpyZWZzOworwqDCoCDCoC8qKiBOdW1iZXIgb2Ygbm9u LXplcm8gZWxlbWVudHMgaW4gdGhlIGFycmF5LiAqLworwqDCoCDCoHVpbnQxNl90IHNpemU7CivC oMKgIMKgLyoqIENhcGFjaXR5IG9mIHRoZSBhcnJheS4gKi8KK8KgwqAgwqB1aW50MTZfdCBjYXBh Y2l0eTsKK8KgwqAgwqAvKiogSW5kZXggb2YgZmlyc3QgZnJlZSBlbGVtZW50LiAqLworwqDCoCDC oHVpbnQxNl90IHZhY2FudF9pbmRleDsKK30gYmlncmVmX2xpc3Q7CisKwqBzdGF0aWMgY29uc3Qg ZG91YmxlIEFMTE9DX0ZBQ1RPUiA9IDEuMDU7CsKgCsKgLyoqCkBAIC0xNTEsNiArMTczLDEzIEBA IHR1cGxlX3ZhbGlkYXRlX3JhdyhzdHJ1Y3QgdHVwbGVfZm9ybWF0ICpmb3JtYXQsIGNvbnN0IGNo YXIgKnR1cGxlKQrCoMKgwqAgwqByZXR1cm4gMDsKwqB9CsKgCisvKiogSW5pdGlhbGl6ZSBiaWcg cmVmZXJlbmNlcyBjb250YWluZXIuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2JpZ3JlZl9saXN0 X2NyZWF0ZSgpCit7CivCoMKgIMKgbWVtc2V0KCZiaWdyZWZfbGlzdCwgMCwgc2l6ZW9mKGJpZ3Jl Zl9saXN0KSk7Cit9CisKwqAvKioKwqAgKiBJbmNyZW1lbnRlZCBvbiBldmVyeSBzbmFwc2hvdCBh bmQgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB0dXBsZXMKwqAgKiB3aGljaCB3ZXJlIGNyZWF0ZWQg YWZ0ZXIgc3RhcnQgb2YgYSBzbmFwc2hvdCAodGhlc2UgdHVwbGVzIGNhbgpAQCAtMjExLDYgKzI0 MCw4IEBAIHR1cGxlX2luaXQoZmllbGRfbmFtZV9oYXNoX2YgaGFzaCkKwqAKwqDCoMKgIMKgYm94 X3R1cGxlX2xhc3QgPSBOVUxMOwrCoAorwqDCoCDCoGJpZ3JlZl9saXN0X2NyZWF0ZSgpOworCsKg wqDCoCDCoGlmIChjb2xsX2lkX2NhY2hlX2luaXQoKSAhPSAwKQrCoMKgwqAgwqDCoMKgIMKgcmV0 dXJuIC0xOwrCoApAQCAtMjQ0LDYgKzI3NSwxMDYgQEAgdHVwbGVfYXJlbmFfY3JlYXRlKHN0cnVj dCBzbGFiX2FyZW5hICphcmVuYSwgc3RydWN0IHF1b3RhICpxdW90YSwKwqDCoMKgIMKgfQrCoH0K wqAKK2VudW0geworwqDCoCDCoEJJR1JFRl9GQUNUT1IgPSAyLAorwqDCoCDCoEJJR1JFRl9NQVgg PSBVSU5UMzJfTUFYLAorwqDCoCDCoEJJR1JFRl9NSU5fQ0FQQUNJVFkgPSAxNiwKK8KgwqAgwqAv KioKK8KgwqAgwqAgKiBPbmx5IDE1IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgYmlncmVmIGxpc3Qg aW5kZXggaW4KK8KgwqAgwqAgKiBzdHJ1Y3QgdHVwbGUuCivCoMKgIMKgICovCivCoMKgIMKgQklH UkVGX01BWF9DQVBBQ0lUWSA9IFVJTlQxNl9NQVggPj4gMQorfTsKKworLyoqIERlc3Ryb3kgYmln IHJlZmVyZW5jZXMgYW5kIGZyZWUgbWVtb3J5IHRoYXQgd2FzIGFsbG9jYXRlZC4gKi8KK3N0YXRp YyBpbmxpbmUgdm9pZAorYmlncmVmX2xpc3RfcmVzZXQoKQoreworwqDCoCDCoGZyZWUoYmlncmVm X2xpc3QucmVmcyk7CivCoMKgIMKgYmlncmVmX2xpc3RfY3JlYXRlKCk7Cit9CisKKy8qKgorICog SW5jcmVhc2UgY2FwYWNpdHkgb2YgYmlncmVmX2xpc3QuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9p ZAorYmlncmVmX2xpc3RfaW5jcmVhc2VfY2FwYWNpdHkoKQoreworwqDCoCDCoGFzc2VydChiaWdy ZWZfbGlzdC5jYXBhY2l0eSA9PSBiaWdyZWZfbGlzdC52YWNhbnRfaW5kZXgpOworwqDCoCDCoHVp bnQzMl90ICpyZWZzID0gYmlncmVmX2xpc3QucmVmczsKK8KgwqAgwqB1aW50MTZfdCBjYXBhY2l0 eSA9IGJpZ3JlZl9saXN0LmNhcGFjaXR5OworwqDCoCDCoGlmIChjYXBhY2l0eSA9PSAwKQorwqDC oCDCoMKgwqAgwqBjYXBhY2l0eSA9IEJJR1JFRl9NSU5fQ0FQQUNJVFk7CivCoMKgIMKgZWxzZSBp ZiAoY2FwYWNpdHkgPCBCSUdSRUZfTUFYX0NBUEFDSVRZKQorwqDCoCDCoMKgwqAgwqBjYXBhY2l0 eSA9IE1JTihjYXBhY2l0eSAqIEJJR1JFRl9GQUNUT1IsIEJJR1JFRl9NQVhfQ0FQQUNJVFkpOwor wqDCoCDCoGVsc2UKK8KgwqAgwqDCoMKgIMKgcGFuaWMoIlRvbyBtYW55IGJpZyByZWZlcmVuY2Vz Iik7CivCoMKgIMKgcmVmcyA9ICh1aW50MzJfdCAqKSByZWFsbG9jKHJlZnMsIGNhcGFjaXR5ICog c2l6ZW9mKCpyZWZzKSk7CivCoMKgIMKgaWYgKHJlZnMgPT0gTlVMTCkgeworwqDCoCDCoMKgwqAg wqBwYW5pYygiZmFpbGVkIHRvIHJlYWxsb2NhdGUgJXp1IGJ5dGVzOiBDYW5ub3QgYWxsb2NhdGUg IlwKK8KgwqAgwqDCoMKgIMKgwqDCoMKgwqDCoCAibWVtb3J5LiIsIGNhcGFjaXR5ICogc2l6ZW9m KCpyZWZzKSk7CivCoMKgIMKgfQorwqDCoCDCoGZvcih1aW50MTZfdCBpID0gYmlncmVmX2xpc3Qu Y2FwYWNpdHk7IGkgPCBjYXBhY2l0eTsgKytpKQorwqDCoCDCoMKgwqAgwqByZWZzW2ldID0gaSAr IDE7CivCoMKgIMKgYmlncmVmX2xpc3QucmVmcyA9IHJlZnM7CivCoMKgIMKgYmlncmVmX2xpc3Qu Y2FwYWNpdHkgPSBjYXBhY2l0eTsKK30KKworLyoqCisgKiBSZXR1cm4gaW5kZXggZm9yIG5ldyBi aWcgcmVmZXJlbmNlIGNvdW50ZXIgYW5kIGFsbG9jYXRlIG1lbW9yeQorICogaWYgbmVlZGVkLgor ICogQHJldHZhbCBpbmRleCBmb3IgbmV3IGJpZyByZWZlcmVuY2UgY291bnRlci4KKyAqLworc3Rh dGljIGlubGluZSB1aW50MTZfdAorYmlncmVmX2xpc3RfbmV3X2luZGV4KCkKK3sKK8KgwqAgwqBp ZiAoYmlncmVmX2xpc3Quc2l6ZSA9PSBiaWdyZWZfbGlzdC5jYXBhY2l0eSkKK8KgwqAgwqDCoMKg IMKgYmlncmVmX2xpc3RfaW5jcmVhc2VfY2FwYWNpdHkoKTsKK8KgwqAgwqArK2JpZ3JlZl9saXN0 LnNpemU7CivCoMKgIMKgdWludDE2X3QgdmFjYW50X2luZGV4ID0gYmlncmVmX2xpc3QudmFjYW50 X2luZGV4OworwqDCoCDCoGJpZ3JlZl9saXN0LnZhY2FudF9pbmRleCA9IGJpZ3JlZl9saXN0LnJl ZnNbdmFjYW50X2luZGV4XTsKK8KgwqAgwqByZXR1cm4gdmFjYW50X2luZGV4OworfQorCit2b2lk Cit0dXBsZV9yZWZfc2xvdyhzdHJ1Y3QgdHVwbGUgKnR1cGxlKQoreworwqDCoCDCoGFzc2VydCh0 dXBsZS0+aXNfYmlncmVmIHx8IHR1cGxlLT5yZWZzID09IFRVUExFX1JFRl9NQVgpOworwqDCoCDC oGlmICghIHR1cGxlLT5pc19iaWdyZWYpIHsKK8KgwqAgwqDCoMKgIMKgdHVwbGUtPnJlZl9pbmRl eCA9IGJpZ3JlZl9saXN0X25ld19pbmRleCgpOworwqDCoCDCoMKgwqAgwqB0dXBsZS0+aXNfYmln cmVmID0gdHJ1ZTsKK8KgwqAgwqDCoMKgIMKgYmlncmVmX2xpc3QucmVmc1t0dXBsZS0+cmVmX2lu ZGV4XSA9IFRVUExFX1JFRl9NQVg7CivCoMKgIMKgfSBlbHNlIGlmIChiaWdyZWZfbGlzdC5yZWZz W3R1cGxlLT5yZWZfaW5kZXhdID09IEJJR1JFRl9NQVgpIHsKK8KgwqAgwqDCoMKgIMKgcGFuaWMo IlR1cGxlIGJpZyByZWZlcmVuY2UgY291bnRlciBvdmVyZmxvdyIpOworwqDCoCDCoH0KK8KgwqAg wqBiaWdyZWZfbGlzdC5yZWZzW3R1cGxlLT5yZWZfaW5kZXhdKys7Cit9CisKKy8qKgorICogRnJl ZSBpbmRleCBhbmQgYWRkIGl0IHRvIGZyZWUtaW5kZXgtbGlzdC4gRnJlZSBtZW1vcnkKKyAqIHdo ZW4gc2l6ZSA9PSAwLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2JpZ3JlZl9saXN0X2RlbGV0 ZV9pbmRleCh1aW50MTZfdCBpbmRleCkKK3sKK8KgwqAgwqBiaWdyZWZfbGlzdC5yZWZzW2luZGV4 XSA9IGJpZ3JlZl9saXN0LnZhY2FudF9pbmRleDsKK8KgwqAgwqBiaWdyZWZfbGlzdC52YWNhbnRf aW5kZXggPSBpbmRleDsKK8KgwqAgwqBpZiAoLS1iaWdyZWZfbGlzdC5zaXplID09IDApCivCoMKg IMKgwqDCoCDCoGJpZ3JlZl9saXN0X3Jlc2V0KCk7Cit9CisKK3ZvaWQKK3R1cGxlX3VucmVmX3Ns b3coc3RydWN0IHR1cGxlICp0dXBsZSkKK3sKK8KgwqAgwqBhc3NlcnQodHVwbGUtPmlzX2JpZ3Jl ZiAmJgorwqDCoCDCoMKgwqDCoMKgwqDCoCBiaWdyZWZfbGlzdC5yZWZzW3R1cGxlLT5yZWZfaW5k ZXhdID4gVFVQTEVfUkVGX01BWCk7CivCoMKgIMKgaWYoLS1iaWdyZWZfbGlzdC5yZWZzW3R1cGxl LT5yZWZfaW5kZXhdID09IFRVUExFX1JFRl9NQVgpIHsKK8KgwqAgwqDCoMKgIMKgYmlncmVmX2xp c3RfZGVsZXRlX2luZGV4KHR1cGxlLT5yZWZfaW5kZXgpOworwqDCoCDCoMKgwqAgwqB0dXBsZS0+ cmVmX2luZGV4ID0gVFVQTEVfUkVGX01BWDsKK8KgwqAgwqDCoMKgIMKgdHVwbGUtPmlzX2JpZ3Jl ZiA9IGZhbHNlOworwqDCoCDCoH0KK30KKwrCoHZvaWQKwqB0dXBsZV9hcmVuYV9kZXN0cm95KHN0 cnVjdCBzbGFiX2FyZW5hICphcmVuYSkKwqB7CkBAIC0yNjUsNiArMzk2LDggQEAgdHVwbGVfZnJl ZSh2b2lkKQrCoMKgwqAgwqB0dXBsZV9mb3JtYXRfZnJlZSgpOwrCoArCoMKgwqAgwqBjb2xsX2lk X2NhY2hlX2Rlc3Ryb3koKTsKKworwqDCoCDCoGJpZ3JlZl9saXN0X3Jlc2V0KCk7CsKgfQrCoArC oGJveF90dXBsZV9mb3JtYXRfdCAqCkBAIC0yODgsNyArNDIxLDggQEAgaW50CsKgYm94X3R1cGxl X3JlZihib3hfdHVwbGVfdCAqdHVwbGUpCsKgewrCoMKgwqAgwqBhc3NlcnQodHVwbGUgIT0gTlVM TCk7Ci3CoMKgIMKgcmV0dXJuIHR1cGxlX3JlZih0dXBsZSk7CivCoMKgIMKgdHVwbGVfcmVmKHR1 cGxlKTsKK8KgwqAgwqByZXR1cm4gMDsKwqB9CsKgCsKgdm9pZApAQCAtMzU3LDEwICs0OTEsNyBA QCBib3hfdHVwbGVfaXRlcmF0b3IoYm94X3R1cGxlX3QgKnR1cGxlKQrCoMKgwqAgwqDCoMKgIMKg wqDCoCDCoCAibWVtcG9vbCIsICJuZXcgc2xhYiIpOwrCoMKgwqAgwqDCoMKgIMKgcmV0dXJuIE5V TEw7CsKgwqDCoCDCoH0KLcKgwqAgwqBpZiAodHVwbGVfcmVmKHR1cGxlKSAhPSAwKSB7Ci3CoMKg IMKgwqDCoCDCoG1lbXBvb2xfZnJlZSgmdHVwbGVfaXRlcmF0b3JfcG9vbCwgaXQpOwotwqDCoCDC oMKgwqAgwqByZXR1cm4gTlVMTDsKLcKgwqAgwqB9CivCoMKgIMKgdHVwbGVfcmVmKHR1cGxlKTsK wqDCoMKgIMKgdHVwbGVfcmV3aW5kKGl0LCB0dXBsZSk7CsKgwqDCoCDCoHJldHVybiBpdDsKwqB9 CkBAIC00NTEsNyArNTgyLDYgQEAgYm94X3R1cGxlX25ldyhib3hfdHVwbGVfZm9ybWF0X3QgKmZv cm1hdCwgY29uc3QgY2hhciAqZGF0YSwgY29uc3QgY2hhciAqZW5kKQrCoMKgwqAgwqBzdHJ1Y3Qg dHVwbGUgKnJldCA9IHR1cGxlX25ldyhmb3JtYXQsIGRhdGEsIGVuZCk7CsKgwqDCoCDCoGlmIChy ZXQgPT0gTlVMTCkKwqDCoMKgIMKgwqDCoCDCoHJldHVybiBOVUxMOwotwqDCoCDCoC8qIENhbid0 IGZhaWwgb24gemVybyByZWZzLiAqLwrCoMKgwqAgwqByZXR1cm4gdHVwbGVfYmxlc3MocmV0KTsK wqB9CsKgCmRpZmYgLS1naXQgYS9zcmMvYm94L3R1cGxlLmggYi9zcmMvYm94L3R1cGxlLmgKaW5k ZXggZTIzODRkZGEwLi4xNGRiZDQwOTQgMTAwNjQ0Ci0tLSBhL3NyYy9ib3gvdHVwbGUuaAorKysg Yi9zcmMvYm94L3R1cGxlLmgKQEAgLTEwNSw4ICsxMDUsNyBAQCB0eXBlZGVmIHN0cnVjdCB0dXBs ZSBib3hfdHVwbGVfdDsKwqAgKiB0dXBsZSB3aWxsIGxlYWsuCsKgICoKwqAgKiBccGFyYW0gdHVw bGUgYSB0dXBsZQotICogXHJldHZhbCAtMSBvbiBlcnJvciAoY2hlY2sgYm94X2Vycm9yX2xhc3Qo KSkKLSAqIFxyZXR2YWwgMCBvbiBzdWNjZXNzCisgKiBccmV0dmFsIDAgYWx3YXlzCsKgICogXHNh IGJveF90dXBsZV91bnJlZigpCsKgICovCsKgaW50CkBAIC0yNjksOCArMjY4LDcgQEAgYm94X3R1 cGxlX25leHQoYm94X3R1cGxlX2l0ZXJhdG9yX3QgKml0KTsKwqAgKiBVc2UgYm94X3R1cGxlX2Zv cm1hdF9kZWZhdWx0KCkgdG8gY3JlYXRlIHNwYWNlLWluZGVwZW5kZW50IHR1cGxlLgrCoCAqIFxw YXJhbSBkYXRhIHR1cGxlIGRhdGEgaW4gTXNnUGFjayBBcnJheSBmb3JtYXQgKFtmaWVsZDEsIGZp ZWxkMiwgLi4uXSkuCsKgICogXHBhcmFtIGVuZCB0aGUgZW5kIG9mIFxhIGRhdGEKLSAqIFxyZXR2 YWwgTlVMTCBvbiBvdXQgb2YgbWVtb3J5Ci0gKiBccmV0dmFsIHR1cGxlIG90aGVyd2lzZQorICog XHJldHZhbCB0dXBsZQrCoCAqIFxwcmUgZGF0YSwgZW5kIGlzIHZhbGlkIE1zZ1BhY2sgQXJyYXkK wqAgKiBcc2EgXGNvZGUgYm94LnR1cGxlLm5ldyhkYXRhKSBcZW5kY29kZQrCoCAqLwpAQCAtMzA3 LDkgKzMwNSwxNyBAQCBib3hfdHVwbGVfdXBzZXJ0KGNvbnN0IGJveF90dXBsZV90ICp0dXBsZSwg Y29uc3QgY2hhciAqZXhwciwgY29uc3QKwqAgKi8KwqBzdHJ1Y3QgUEFDS0VEIHR1cGxlCsKgewot wqDCoCDCoC8qKiByZWZlcmVuY2UgY291bnRlciAqLwotwqDCoCDCoHVpbnQxNl90IHJlZnM7Ci3C oMKgIMKgLyoqIGZvcm1hdCBpZGVudGlmaWVyICovCivCoMKgIMKgdW5pb24geworwqDCoCDCoMKg wqAgwqAvKiogUmVmZXJlbmNlIGNvdW50ZXIuICovCivCoMKgIMKgwqDCoCDCoHVpbnQxNl90IHJl ZnM7CivCoMKgIMKgwqDCoCDCoHN0cnVjdCB7CivCoMKgIMKgwqDCoCDCoMKgwqAgwqAvKiogSW5k ZXggb2YgYmlnIHJlZmVyZW5jZSBjb3VudGVyLiAqLworwqDCoCDCoMKgwqAgwqDCoMKgIMKgdWlu dDE2X3QgcmVmX2luZGV4IDogMTU7CivCoMKgIMKgwqDCoCDCoMKgwqAgwqAvKiogQmlnIHJlZmVy ZW5jZSBmbGFnLiAqLworwqDCoCDCoMKgwqAgwqDCoMKgIMKgYm9vbCBpc19iaWdyZWYgOiAxOwor wqDCoCDCoMKgwqAgwqB9OworwqDCoCDCoH07CivCoMKgIMKgLyoqIEZvcm1hdCBpZGVudGlmaWVy LiAqLwrCoMKgwqAgwqB1aW50MTZfdCBmb3JtYXRfaWQ7CsKgwqDCoCDCoC8qKgrCoMKgwqAgwqAg KiBMZW5ndGggb2YgdGhlIE1lc3NhZ2VQYWNrIGRhdGEgaW4gcmF3IHBhcnQgb2YgdGhlCkBAIC03 NzQsMjUgKzc4MCwzNSBAQCB0dXBsZV9maWVsZF91dWlkKGNvbnN0IHN0cnVjdCB0dXBsZSAqdHVw bGUsIGludCBmaWVsZG5vLArCoMKgwqAgwqByZXR1cm4gMDsKwqB9CsKgCi1lbnVtIHsgVFVQTEVf UkVGX01BWCA9IFVJTlQxNl9NQVggfTsKK2VudW0geyBUVVBMRV9SRUZfTUFYID0gVUlOVDE2X01B WCA+PiAxIH07CisKKy8qKgorICogSW5jcmVhc2UgdHVwbGUgYmlnIHJlZmVyZW5jZSBjb3VudGVy LgorICogQHBhcmFtIHR1cGxlIFR1cGxlIHRvIHJlZmVyZW5jZS4KKyAqLwordm9pZAordHVwbGVf cmVmX3Nsb3coc3RydWN0IHR1cGxlICp0dXBsZSk7CsKgCsKgLyoqCsKgICogSW5jcmVtZW50IHR1 cGxlIHJlZmVyZW5jZSBjb3VudGVyLgrCoCAqIEBwYXJhbSB0dXBsZSBUdXBsZSB0byByZWZlcmVu Y2UuCi0gKiBAcmV0dmFswqAgMCBTdWNjZXNzLgotICogQHJldHZhbCAtMSBUb28gbWFueSByZWZz IGVycm9yLgrCoCAqLwotc3RhdGljIGlubGluZSBpbnQKK3N0YXRpYyBpbmxpbmUgdm9pZArCoHR1 cGxlX3JlZihzdHJ1Y3QgdHVwbGUgKnR1cGxlKQrCoHsKLcKgwqAgwqBpZiAodHVwbGUtPnJlZnMg KyAxID4gVFVQTEVfUkVGX01BWCkgewotwqDCoCDCoMKgwqAgwqBkaWFnX3NldChDbGllbnRFcnJv ciwgRVJfVFVQTEVfUkVGX09WRVJGTE9XKTsKLcKgwqAgwqDCoMKgIMKgcmV0dXJuIC0xOwotwqDC oCDCoH0KLcKgwqAgwqB0dXBsZS0+cmVmcysrOwotwqDCoCDCoHJldHVybiAwOworwqDCoCDCoGlm ICh1bmxpa2VseSh0dXBsZS0+cmVmcyA+PSBUVVBMRV9SRUZfTUFYKSkKK8KgwqAgwqDCoMKgIMKg dHVwbGVfcmVmX3Nsb3codHVwbGUpOworwqDCoCDCoGVsc2UKK8KgwqAgwqDCoMKgIMKgdHVwbGUt PnJlZnMrKzsKwqB9CsKgCisvKioKKyAqIERlY3JlYXNlIHR1cGxlIGJpZyByZWZlcmVuY2UgY291 bnRlci4KKyAqIEBwYXJhbSB0dXBsZSBUdXBsZSB0byByZWZlcmVuY2UuCisgKi8KK3ZvaWQKK3R1 cGxlX3VucmVmX3Nsb3coc3RydWN0IHR1cGxlICp0dXBsZSk7CisKwqAvKioKwqAgKiBEZWNyZW1l bnQgdHVwbGUgcmVmZXJlbmNlIGNvdW50ZXIuIElmIGl0IGhhcyByZWFjaGVkIHplcm8sIGZyZWUg dGhlIHR1cGxlLgrCoCAqCkBAIC04MDIsMTAgKzgxOCw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZArC oHR1cGxlX3VucmVmKHN0cnVjdCB0dXBsZSAqdHVwbGUpCsKgewrCoMKgwqAgwqBhc3NlcnQodHVw bGUtPnJlZnMgLSAxID49IDApOwotCi3CoMKgIMKgdHVwbGUtPnJlZnMtLTsKLQotwqDCoCDCoGlm ICh0dXBsZS0+cmVmcyA9PSAwKQorwqDCoCDCoGlmICh1bmxpa2VseSh0dXBsZS0+aXNfYmlncmVm KSkKK8KgwqAgwqDCoMKgIMKgdHVwbGVfdW5yZWZfc2xvdyh0dXBsZSk7CivCoMKgIMKgZWxzZSBp ZiAoLS10dXBsZS0+cmVmcyA9PSAwKQrCoMKgwqAgwqDCoMKgIMKgdHVwbGVfZGVsZXRlKHR1cGxl KTsKwqB9CsKgCkBAIC04MTMsMjUgKzgyOCwxOCBAQCBleHRlcm4gc3RydWN0IHR1cGxlICpib3hf dHVwbGVfbGFzdDsKwqAKwqAvKioKwqAgKiBDb252ZXJ0IGludGVybmFsIGBzdHJ1Y3QgdHVwbGVg IHRvIHB1YmxpYyBgYm94X3R1cGxlX3RgLgotICogXHJldHZhbCB0dXBsZSBvbiBzdWNjZXNzCi0g KiBccmV0dmFsIE5VTEwgb24gZXJyb3IsIGNoZWNrIGRpYWcKKyAqIFxyZXR2YWwgdHVwbGUKwqAg KiBccG9zdCBcYSB0dXBsZSByZWYgY291bnRlZCB1bnRpbCB0aGUgbmV4dCBjYWxsLgotICogXHBv c3QgdHVwbGVfcmVmKCkgZG9lc24ndCBmYWlsIGF0IGxlYXN0IG9uY2UKwqAgKiBcc2EgdHVwbGVf cmVmCsKgICovCsKgc3RhdGljIGlubGluZSBib3hfdHVwbGVfdCAqCsKgdHVwbGVfYmxlc3Moc3Ry dWN0IHR1cGxlICp0dXBsZSkKwqB7CsKgwqDCoCDCoGFzc2VydCh0dXBsZSAhPSBOVUxMKTsKLcKg wqAgwqAvKiBFbnN1cmUgdHVwbGUgY2FuIGJlIHJlZmVyZW5jZWQgYXQgbGVhc3Qgb25jZSBhZnRl ciByZXR1cm4gKi8KLcKgwqAgwqBpZiAodHVwbGUtPnJlZnMgKyAyID4gVFVQTEVfUkVGX01BWCkg ewotwqDCoCDCoMKgwqAgwqBkaWFnX3NldChDbGllbnRFcnJvciwgRVJfVFVQTEVfUkVGX09WRVJG TE9XKTsKLcKgwqAgwqDCoMKgIMKgcmV0dXJuIE5VTEw7Ci3CoMKgIMKgfQotwqDCoCDCoHR1cGxl LT5yZWZzKys7CivCoMKgIMKgdHVwbGVfcmVmKHR1cGxlKTsKwqDCoMKgIMKgLyogUmVtb3ZlIHBy ZXZpb3VzIHR1cGxlICovCsKgwqDCoCDCoGlmIChsaWtlbHkoYm94X3R1cGxlX2xhc3QgIT0gTlVM TCkpCi3CoMKgIMKgwqDCoCDCoHR1cGxlX3VucmVmKGJveF90dXBsZV9sYXN0KTsgLyogZG8gbm90 IHRocm93ICovCivCoMKgIMKgwqDCoCDCoHR1cGxlX3VucmVmKGJveF90dXBsZV9sYXN0KTsKwqDC oMKgIMKgLyogUmVtZW1iZXIgY3VycmVudCB0dXBsZSAqLwrCoMKgwqAgwqBib3hfdHVwbGVfbGFz dCA9IHR1cGxlOwrCoMKgwqAgwqByZXR1cm4gdHVwbGU7CkBAIC04NDksNDEgKzg1Nyw2IEBAIHR1 cGxlX3RvX2J1Zihjb25zdCBzdHJ1Y3QgdHVwbGUgKnR1cGxlLCBjaGFyICpidWYsIHNpemVfdCBz aXplKTsKwqAjaW5jbHVkZSAidHVwbGVfdXBkYXRlLmgiCsKgI2luY2x1ZGUgImVycmluai5oIgrC oAotLyoqCi0gKiBcY29weWRvYyB0dXBsZV9yZWYoKQotICogXHRocm93cyBpZiBvdmVyZmxvdyBk ZXRlY3RlZC4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkCi10dXBsZV9yZWZfeGMoc3RydWN0IHR1 cGxlICp0dXBsZSkKLXsKLcKgwqAgwqBpZiAodHVwbGVfcmVmKHR1cGxlKSkKLcKgwqAgwqDCoMKg IMKgZGlhZ19yYWlzZSgpOwotfQotCi0vKioKLSAqIFxjb3B5ZG9jIHR1cGxlX2JsZXNzCi0gKiBc dGhyb3cgRVJfVFVQTEVfUkVGX09WRVJGTE9XCi0gKi8KLXN0YXRpYyBpbmxpbmUgYm94X3R1cGxl X3QgKgotdHVwbGVfYmxlc3NfeGMoc3RydWN0IHR1cGxlICp0dXBsZSkKLXsKLcKgwqAgwqBib3hf dHVwbGVfdCAqYmxlc3NlZCA9IHR1cGxlX2JsZXNzKHR1cGxlKTsKLcKgwqAgwqBpZiAoYmxlc3Nl ZCA9PSBOVUxMKQotwqDCoCDCoMKgwqAgwqBkaWFnX3JhaXNlKCk7Ci3CoMKgIMKgcmV0dXJuIGJs ZXNzZWQ7Ci19Ci0KLS8qKiBNYWtlIHR1cGxlIHJlZmVyZW5jZXMgZXhjZXB0aW9uLWZyaWVuZGx5 IGluIGFic2VuY2Ugb2YgQGZpbmFsbHkuICovCi1zdHJ1Y3QgVHVwbGVSZWZOaWwgewotwqDCoCDC oHN0cnVjdCB0dXBsZSAqdHVwbGU7Ci3CoMKgIMKgVHVwbGVSZWZOaWwgKHN0cnVjdCB0dXBsZSAq YXJnKSA6dHVwbGUoYXJnKQotwqDCoCDCoHsgaWYgKHR1cGxlKSB0dXBsZV9yZWZfeGModHVwbGUp OyB9Ci3CoMKgIMKgflR1cGxlUmVmTmlsKCkgeyBpZiAodHVwbGUpIHR1cGxlX3VucmVmKHR1cGxl KTsgfQotCi3CoMKgIMKgVHVwbGVSZWZOaWwoY29uc3QgVHVwbGVSZWZOaWwmKSA9IGRlbGV0ZTsK LcKgwqAgwqB2b2lkIG9wZXJhdG9yPShjb25zdCBUdXBsZVJlZk5pbCYpID0gZGVsZXRlOwotfTsK LQrCoC8qIEBjb3B5ZG9jIHR1cGxlX2ZpZWxkX3dpdGhfdHlwZSgpICovCsKgc3RhdGljIGlubGlu ZSBjb25zdCBjaGFyICoKwqB0dXBsZV9maWVsZF93aXRoX3R5cGVfeGMoY29uc3Qgc3RydWN0IHR1 cGxlICp0dXBsZSwgdWludDMyX3QgZmllbGRubywKZGlmZiAtLWdpdCBhL3NyYy9ib3gvdmlueWwu YyBiL3NyYy9ib3gvdmlueWwuYwppbmRleCBmMGQyNjg3NGUuLmRjMGQwMjA1NCAxMDA2NDQKLS0t IGEvc3JjL2JveC92aW55bC5jCisrKyBiL3NyYy9ib3gvdmlueWwuYwpAQCAtMzgyMiw3ICszODIy LDYgQEAgdmlueWxfaXRlcmF0b3JfcHJpbWFyeV9uZXh0KHN0cnVjdCBpdGVyYXRvciAqYmFzZSwg c3RydWN0IHR1cGxlICoqcmV0KQrCoMKgwqAgwqBhc3NlcnQoYmFzZS0+bmV4dCA9IHZpbnlsX2l0 ZXJhdG9yX3ByaW1hcnlfbmV4dCk7CsKgwqDCoCDCoHN0cnVjdCB2aW55bF9pdGVyYXRvciAqaXQg PSAoc3RydWN0IHZpbnlsX2l0ZXJhdG9yICopYmFzZTsKwqDCoMKgIMKgYXNzZXJ0KGl0LT5sc20t PmluZGV4X2lkID09IDApOwotwqDCoCDCoHN0cnVjdCB0dXBsZSAqdHVwbGU7CsKgCsKgwqDCoCDC oGlmIChpdC0+dHggPT0gTlVMTCkgewrCoMKgwqAgwqDCoMKgIMKgZGlhZ19zZXQoQ2xpZW50RXJy b3IsIEVSX0NVUlNPUl9OT19UUkFOU0FDVElPTik7CkBAIC0zODMzLDE4ICszODMyLDE1IEBAIHZp bnlsX2l0ZXJhdG9yX3ByaW1hcnlfbmV4dChzdHJ1Y3QgaXRlcmF0b3IgKmJhc2UsIHN0cnVjdCB0 dXBsZSAqKnJldCkKwqDCoMKgIMKgwqDCoCDCoGdvdG8gZmFpbDsKwqDCoMKgIMKgfQrCoAotwqDC oCDCoGlmICh2eV9yZWFkX2l0ZXJhdG9yX25leHQoJml0LT5pdGVyYXRvciwgJnR1cGxlKSAhPSAw KQorwqDCoCDCoGlmICh2eV9yZWFkX2l0ZXJhdG9yX25leHQoJml0LT5pdGVyYXRvciwgcmV0KSAh PSAwKQrCoMKgwqAgwqDCoMKgIMKgZ290byBmYWlsOwotCi3CoMKgIMKgaWYgKHR1cGxlID09IE5V TEwpIHsKK8KgwqAgwqBpZiAoKnJldCA9PSBOVUxMKSB7CsKgwqDCoCDCoMKgwqAgwqAvKiBFT0Yu IENsb3NlIHRoZSBpdGVyYXRvciBpbW1lZGlhdGVseS4gKi8KwqDCoMKgIMKgwqDCoCDCoHZpbnls X2l0ZXJhdG9yX2Nsb3NlKGl0KTsKLcKgwqAgwqDCoMKgIMKgKnJldCA9IE5VTEw7Ci3CoMKgIMKg wqDCoCDCoHJldHVybiAwOworwqDCoCDCoH0gZWxzZSB7CivCoMKgIMKgwqDCoCDCoHR1cGxlX2Js ZXNzKCpyZXQpOwrCoMKgwqAgwqB9Ci3CoMKgIMKgKnJldCA9IHR1cGxlX2JsZXNzKHR1cGxlKTsK LcKgwqAgwqBpZiAoKnJldCAhPSBOVUxMKQotwqDCoCDCoMKgwqAgwqByZXR1cm4gMDsKK8KgwqAg wqByZXR1cm4gMDsKwqBmYWlsOgrCoMKgwqAgwqB2aW55bF9pdGVyYXRvcl9jbG9zZShpdCk7CsKg wqDCoCDCoHJldHVybiAtMTsKQEAgLTM4OTAsMTEgKzM4ODYsMTAgQEAgbmV4dDoKwqDCoMKgIMKg ICogTm90ZSwgdGhlcmUncyBubyBuZWVkIGluIHZ5X3R4X3RyYWNrKCkgYXMgdGhlCsKgwqDCoCDC oCAqIHR1cGxlIGlzIGFscmVhZHkgdHJhY2tlZCBpbiB0aGUgc2Vjb25kYXJ5IGluZGV4LgrCoMKg wqAgwqAgKi8KLcKgwqAgwqBzdHJ1Y3QgdHVwbGUgKmZ1bGxfdHVwbGU7CsKgwqDCoCDCoGlmICh2 eV9wb2ludF9sb29rdXAoaXQtPmxzbS0+cGssIGl0LT50eCwgdnlfdHhfcmVhZF92aWV3KGl0LT50 eCksCi3CoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgwqAgdHVwbGUsICZmdWxsX3R1cGxlKSAhPSAw KQorwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoMKgIHR1cGxlLCByZXQpICE9IDApCsKgwqDCoCDC oMKgwqAgwqBnb3RvIGZhaWw7Ci3CoMKgIMKgaWYgKGZ1bGxfdHVwbGUgPT0gTlVMTCkgeworwqDC oCDCoGlmICgqcmV0ID09IE5VTEwpIHsKwqDCoMKgIMKgwqDCoCDCoC8qCsKgwqDCoCDCoMKgwqAg wqAgKiBBbGwgaW5kZXhlcyBvZiBhIHNwYWNlIG11c3QgYmUgY29uc2lzdGVudCwgaS5lLgrCoMKg wqAgwqDCoMKgIMKgICogaWYgYSB0dXBsZSBpcyBwcmVzZW50IGluIG9uZSBpbmRleCwgaXQgbXVz dCBiZQpAQCAtMzkwOCwxMCArMzkwMyw5IEBAIG5leHQ6CsKgwqDCoCDCoMKgwqAgwqDCoMKgIMKg IHZ5X2xzbV9uYW1lKGl0LT5sc20pLCB2eV9zdG10X3N0cih0dXBsZSkpOwrCoMKgwqAgwqDCoMKg IMKgZ290byBuZXh0OwrCoMKgwqAgwqB9Ci3CoMKgIMKgKnJldCA9IHR1cGxlX2JsZXNzKGZ1bGxf dHVwbGUpOwotwqDCoCDCoHR1cGxlX3VucmVmKGZ1bGxfdHVwbGUpOwotwqDCoCDCoGlmICgqcmV0 ICE9IE5VTEwpCi3CoMKgIMKgwqDCoCDCoHJldHVybiAwOworwqDCoCDCoHR1cGxlX2JsZXNzKCpy ZXQpOworwqDCoCDCoHR1cGxlX3VucmVmKCpyZXQpOworwqDCoCDCoHJldHVybiAwOwrCoGZhaWw6 CsKgwqDCoCDCoHZpbnlsX2l0ZXJhdG9yX2Nsb3NlKGl0KTsKwqDCoMKgIMKgcmV0dXJuIC0xOwpA QCAtMzk5NywxNiArMzk5MSwxMiBAQCB2aW55bF9pbmRleF9nZXQoc3RydWN0IGluZGV4ICppbmRl eCwgY29uc3QgY2hhciAqa2V5LArCoMKgwqAgwqBjb25zdCBzdHJ1Y3QgdnlfcmVhZF92aWV3ICoq cnYgPSAodHggIT0gTlVMTCA/IHZ5X3R4X3JlYWRfdmlldyh0eCkgOgrCoMKgwqAgwqDCoMKgIMKg wqDCoCDCoMKgwqAgwqDCoMKgIMKgwqAgJmVudi0+eG0tPnBfZ2xvYmFsX3JlYWRfdmlldyk7CsKg Ci3CoMKgIMKgc3RydWN0IHR1cGxlICp0dXBsZTsKLcKgwqAgwqBpZiAodnlfbHNtX2Z1bGxfYnlf a2V5KGxzbSwgdHgsIHJ2LCBrZXksIHBhcnRfY291bnQsICZ0dXBsZSkgIT0gMCkKK8KgwqAgwqBp ZiAodnlfbHNtX2Z1bGxfYnlfa2V5KGxzbSwgdHgsIHJ2LCBrZXksIHBhcnRfY291bnQsIHJldCkg IT0gMCkKwqDCoMKgIMKgwqDCoCDCoHJldHVybiAtMTsKLQotwqDCoCDCoGlmICh0dXBsZSAhPSBO VUxMKSB7Ci3CoMKgIMKgwqDCoCDCoCpyZXQgPSB0dXBsZV9ibGVzcyh0dXBsZSk7Ci3CoMKgIMKg wqDCoCDCoHR1cGxlX3VucmVmKHR1cGxlKTsKLcKgwqAgwqDCoMKgIMKgcmV0dXJuICpyZXQgPT0g TlVMTCA/IC0xIDogMDsKK8KgwqAgwqBpZiAoKnJldCAhPSBOVUxMKSB7CivCoMKgIMKgwqDCoCDC oHR1cGxlX2JsZXNzKCpyZXQpOworwqDCoCDCoMKgwqAgwqB0dXBsZV91bnJlZigqcmV0KTsKwqDC oMKgIMKgfQotwqDCoCDCoCpyZXQgPSBOVUxMOwrCoMKgwqAgwqByZXR1cm4gMDsKwqB9CsKgCmRp ZmYgLS1naXQgYS90ZXN0L2JveC9taXNjLnJlc3VsdCBiL3Rlc3QvYm94L21pc2MucmVzdWx0Cmlu ZGV4IDhmOTRmNTUxMy4uZjc3MDNiYThkIDEwMDY0NAotLS0gYS90ZXN0L2JveC9taXNjLnJlc3Vs dAorKysgYi90ZXN0L2JveC9taXNjLnJlc3VsdApAQCAtMzMyLDcgKzMzMiw2IEBAIHQ7CsKgwqAg LSAnYm94LmVycm9yLlVOS05PV05fVVBEQVRFX09QIDogMjgnCsKgwqAgLSAnYm94LmVycm9yLldS T05HX0NPTExBVElPTl9PUFRJT05TIDogMTUxJwrCoMKgIC0gJ2JveC5lcnJvci5DVVJTT1JfTk9f VFJBTlNBQ1RJT04gOiA4MCcKLcKgIC0gJ2JveC5lcnJvci5UVVBMRV9SRUZfT1ZFUkZMT1cgOiA4 NicKwqDCoCAtICdib3guZXJyb3IuQUxURVJfU0VRVUVOQ0UgOiAxNDMnCsKgwqAgLSAnYm94LmVy cm9yLklOVkFMSURfWExPR19OQU1FIDogNzUnCsKgwqAgLSAnYm94LmVycm9yLlNBVkVQT0lOVF9F TVBUWV9UWCA6IDYwJwpAQCAtMzYwLDcgKzM1OSw3IEBAIHQ7CsKgwqAgLSAnYm94LmVycm9yLlZJ TllMX01BWF9UVVBMRV9TSVpFIDogMTM5JwrCoMKgIC0gJ2JveC5lcnJvci5MT0FEX0ZVTkNUSU9O IDogOTknCsKgwqAgLSAnYm94LmVycm9yLklOVkFMSURfWExPRyA6IDc0JwotwqAgLSAnYm94LmVy cm9yLlBSSVZfTk9UX0dSQU5URUQgOiA5MScKK8KgIC0gJ2JveC5lcnJvci5SRUFEX1ZJRVdfQUJP UlRFRCA6IDEzMCcKwqDCoCAtICdib3guZXJyb3IuVFJBTlNBQ1RJT05fQ09ORkxJQ1QgOiA5NycK wqDCoCAtICdib3guZXJyb3IuR1VFU1RfVVNFUl9QQVNTV09SRCA6IDk2JwrCoMKgIC0gJ2JveC5l cnJvci5QUk9DX0MgOiAxMDInCkBAIC00MDUsNyArNDA0LDcgQEAgdDsKwqDCoCAtICdib3guZXJy b3IuaW5qZWN0aW9uIDogdGFibGU6IDxhZGRyZXNzPgrCoMKgIC0gJ2JveC5lcnJvci5OVUxMQUJM RV9NSVNNQVRDSCA6IDE1MycKwqDCoCAtICdib3guZXJyb3IuTEFTVF9EUk9QIDogMTUnCi3CoCAt ICdib3guZXJyb3IuTk9fU1VDSF9ST0xFIDogODInCivCoCAtICdib3guZXJyb3IuVFVQTEVfRk9S TUFUX0xJTUlUIDogMTYnCsKgwqAgLSAnYm94LmVycm9yLkRFQ09NUFJFU1NJT04gOiAxMjQnCsKg wqAgLSAnYm94LmVycm9yLkNSRUFURV9TRVFVRU5DRSA6IDE0MicKwqDCoCAtICdib3guZXJyb3Iu Q1JFQVRFX1VTRVIgOiA0MycKQEAgLTQxNCw2NiArNDEzLDY2IEBAIHQ7CsKgwqAgLSAnYm94LmVy cm9yLlNFUVVFTkNFX09WRVJGTE9XIDogMTQ3JwrCoMKgIC0gJ2JveC5lcnJvci5TWVNURU0gOiAx MTUnCsKgwqAgLSAnYm94LmVycm9yLktFWV9QQVJUX0lTX1RPT19MT05HIDogMTE4JwotwqAgLSAn Ym94LmVycm9yLlRVUExFX0ZPUk1BVF9MSU1JVCA6IDE2JwotwqAgLSAnYm94LmVycm9yLkJFRk9S RV9SRVBMQUNFX1JFVCA6IDUzJworwqAgLSAnYm94LmVycm9yLklOSkVDVElPTiA6IDgnCivCoCAt ICdib3guZXJyb3IuSU5WQUxJRF9NU0dQQUNLIDogMjAnCsKgwqAgLSAnYm94LmVycm9yLk5PX1NV Q0hfU0FWRVBPSU5UIDogNjEnCsKgwqAgLSAnYm94LmVycm9yLlRSVU5DQVRFX1NZU1RFTV9TUEFD RSA6IDEzNycKwqDCoCAtICdib3guZXJyb3IuVllfUVVPVEFfVElNRU9VVCA6IDEzNScKwqDCoCAt ICdib3guZXJyb3IuV1JPTkdfSU5ERVhfT1BUSU9OUyA6IDEwOCcKwqDCoCAtICdib3guZXJyb3Iu SU5WQUxJRF9WWUxPR19GSUxFIDogMTMzJwrCoMKgIC0gJ2JveC5lcnJvci5JTkRFWF9GSUVMRF9D T1VOVF9MSU1JVCA6IDEyNycKLcKgIC0gJ2JveC5lcnJvci5SRUFEX1ZJRVdfQUJPUlRFRCA6IDEz MCcKK8KgIC0gJ2JveC5lcnJvci5QUklWX05PVF9HUkFOVEVEIDogOTEnCsKgwqAgLSAnYm94LmVy cm9yLlVTRVJfTUFYIDogNTYnCi3CoCAtICdib3guZXJyb3IuUFJPVE9DT0wgOiAxMDQnCivCoCAt ICdib3guZXJyb3IuQkVGT1JFX1JFUExBQ0VfUkVUIDogNTMnCsKgwqAgLSAnYm94LmVycm9yLlRV UExFX05PVF9BUlJBWSA6IDIyJwrCoMKgIC0gJ2JveC5lcnJvci5LRVlfUEFSVF9DT1VOVCA6IDMx JwrCoMKgIC0gJ2JveC5lcnJvci5BTFRFUl9TUEFDRSA6IDEyJwrCoMKgIC0gJ2JveC5lcnJvci5B Q1RJVkVfVFJBTlNBQ1RJT04gOiA3OScKwqDCoCAtICdib3guZXJyb3IuRVhBQ1RfRklFTERfQ09V TlQgOiAzOCcKwqDCoCAtICdib3guZXJyb3IuRFJPUF9TRVFVRU5DRSA6IDE0NCcKLcKgIC0gJ2Jv eC5lcnJvci5JTlZBTElEX01TR1BBQ0sgOiAyMCcKwqDCoCAtICdib3guZXJyb3IuTU9SRV9USEFO X09ORV9UVVBMRSA6IDQxJwotwqAgLSAnYm94LmVycm9yLlJUUkVFX1JFQ1QgOiAxMDEnCi3CoCAt ICdib3guZXJyb3IuU1VCX1NUTVRfTUFYIDogMTIxJworwqAgLSAnYm94LmVycm9yLlVQU0VSVF9V TklRVUVfU0VDT05EQVJZX0tFWSA6IDEwNScKwqDCoCAtICdib3guZXJyb3IuVU5LTk9XTl9SRVFV RVNUX1RZUEUgOiA0OCcKLcKgIC0gJ2JveC5lcnJvci5TUEFDRV9FWElTVFMgOiAxMCcKK8KgIC0g J2JveC5lcnJvci5TVUJfU1RNVF9NQVggOiAxMjEnCsKgwqAgLSAnYm94LmVycm9yLlBST0NfTFVB IDogMzInCivCoCAtICdib3guZXJyb3IuU1BBQ0VfRVhJU1RTIDogMTAnCsKgwqAgLSAnYm94LmVy cm9yLlJPTEVfTk9UX0dSQU5URUQgOiA5MicKK8KgIC0gJ2JveC5lcnJvci5VTlNVUFBPUlRFRCA6 IDUnCsKgwqAgLSAnYm94LmVycm9yLk5PX1NVQ0hfU1BBQ0UgOiAzNicKwqDCoCAtICdib3guZXJy b3IuV1JPTkdfSU5ERVhfUEFSVFMgOiAxMDcnCi3CoCAtICdib3guZXJyb3IuRFJPUF9TUEFDRSA6 IDExJwrCoMKgIC0gJ2JveC5lcnJvci5NSU5fRklFTERfQ09VTlQgOiAzOScKwqDCoCAtICdib3gu ZXJyb3IuUkVQTElDQVNFVF9VVUlEX01JU01BVENIIDogNjMnCsKgwqAgLSAnYm94LmVycm9yLlVQ REFURV9GSUVMRCA6IDI5JworwqAgLSAnYm94LmVycm9yLklOREVYX0VYSVNUUyA6IDg1JwrCoMKg IC0gJ2JveC5lcnJvci5DT01QUkVTU0lPTiA6IDExOScKwqDCoCAtICdib3guZXJyb3IuSU5WQUxJ RF9PUkRFUiA6IDY4JwotwqAgLSAnYm94LmVycm9yLklOREVYX0VYSVNUUyA6IDg1JwrCoMKgIC0g J2JveC5lcnJvci5TUExJQ0UgOiAyNScKwqDCoCAtICdib3guZXJyb3IuVU5LTk9XTiA6IDAnCivC oCAtICdib3guZXJyb3IuSURFTlRJRklFUiA6IDcwJwrCoMKgIC0gJ2JveC5lcnJvci5EUk9QX1BS SU1BUllfS0VZIDogMTcnCsKgwqAgLSAnYm94LmVycm9yLk5VTExBQkxFX1BSSU1BUlkgOiAxNTIn CsKgwqAgLSAnYm94LmVycm9yLk5PX1NVQ0hfU0VRVUVOQ0UgOiAxNDUnCsKgwqAgLSAnYm94LmVy cm9yLlJFTE9BRF9DRkcgOiA1OCcKwqDCoCAtICdib3guZXJyb3IuSU5WQUxJRF9VVUlEIDogNjQn Ci3CoCAtICdib3guZXJyb3IuSU5KRUNUSU9OIDogOCcKK8KgIC0gJ2JveC5lcnJvci5EUk9QX1NQ QUNFIDogMTEnCsKgwqAgLSAnYm94LmVycm9yLlRJTUVPVVQgOiA3OCcKLcKgIC0gJ2JveC5lcnJv ci5JREVOVElGSUVSIDogNzAnCsKgwqAgLSAnYm94LmVycm9yLklURVJBVE9SX1RZUEUgOiA3MicK wqDCoCAtICdib3guZXJyb3IuUkVQTElDQV9NQVggOiA3MycKK8KgIC0gJ2JveC5lcnJvci5OT19T VUNIX1JPTEUgOiA4MicKwqDCoCAtICdib3guZXJyb3IuTUlTU0lOR19SRVFVRVNUX0ZJRUxEIDog NjknCsKgwqAgLSAnYm94LmVycm9yLk1JU1NJTkdfU05BUFNIT1QgOiA5MycKwqDCoCAtICdib3gu ZXJyb3IuV1JPTkdfU1BBQ0VfT1BUSU9OUyA6IDExMScKwqDCoCAtICdib3guZXJyb3IuUkVBRE9O TFkgOiA3JwotwqAgLSAnYm94LmVycm9yLlVOU1VQUE9SVEVEIDogNScKwqDCoCAtICdib3guZXJy b3IuVVBEQVRFX0lOVEVHRVJfT1ZFUkZMT1cgOiA5NScKK8KgIC0gJ2JveC5lcnJvci5SVFJFRV9S RUNUIDogMTAxJwrCoMKgIC0gJ2JveC5lcnJvci5OT19DT05ORUNUSU9OIDogNzcnCsKgwqAgLSAn Ym94LmVycm9yLklOVkFMSURfWExPR19PUkRFUiA6IDc2JwotwqAgLSAnYm94LmVycm9yLlVQU0VS VF9VTklRVUVfU0VDT05EQVJZX0tFWSA6IDEwNScKLcKgIC0gJ2JveC5lcnJvci5ST0xMQkFDS19J Tl9TVUJfU1RNVCA6IDEyMycKwqDCoCAtICdib3guZXJyb3IuV1JPTkdfU0NIRU1BX1ZFUlNJT04g OiAxMDknCi3CoCAtICdib3guZXJyb3IuVU5TVVBQT1JURURfSU5ERVhfRkVBVFVSRSA6IDExMicK LcKgIC0gJ2JveC5lcnJvci5JTkRFWF9QQVJUX1RZUEVfTUlTTUFUQ0ggOiAyNCcKK8KgIC0gJ2Jv eC5lcnJvci5ST0xMQkFDS19JTl9TVUJfU1RNVCA6IDEyMycKK8KgIC0gJ2JveC5lcnJvci5QUk9U T0NPTCA6IDEwNCcKwqDCoCAtICdib3guZXJyb3IuSU5WQUxJRF9YTE9HX1RZUEUgOiAxMjUnCivC oCAtICdib3guZXJyb3IuSU5ERVhfUEFSVF9UWVBFX01JU01BVENIIDogMjQnCivCoCAtICdib3gu ZXJyb3IuVU5TVVBQT1JURURfSU5ERVhfRkVBVFVSRSA6IDExMicKwqAuLi4KwqB0ZXN0X3J1bjpj bWQoInNldG9wdCBkZWxpbWl0ZXIgJyciKTsKwqAtLS0KZGlmZiAtLWdpdCBhL3Rlc3QvYm94L3Nl bGVjdC5yZXN1bHQgYi90ZXN0L2JveC9zZWxlY3QucmVzdWx0CmluZGV4IDRhZWQ3MDYzMC4uYjNl ZTZjZDU3IDEwMDY0NAotLS0gYS90ZXN0L2JveC9zZWxlY3QucmVzdWx0CisrKyBiL3Rlc3QvYm94 L3NlbGVjdC5yZXN1bHQKQEAgLTYxOSwzMSArNjE5LDYyIEBAIGNvbGxlY3RnYXJiYWdlKCdjb2xs ZWN0JykKwqAtLS0KwqAtIDAKwqAuLi4KKy0tIGdoLTMyMjQgcmVzdXJyZWN0IHR1cGxlIGJpZ3Jl ZnMKK2NvbGxlY3RnYXJiYWdlKCdzdG9wJykKKy0tLQorLSAwCisuLi4KwqBzID0gYm94LnNjaGVt YS5zcGFjZS5jcmVhdGUoJ3NlbGVjdCcsIHsgdGVtcG9yYXJ5ID0gdHJ1ZSB9KQrCoC0tLQrCoC4u LgrCoGluZGV4ID0gczpjcmVhdGVfaW5kZXgoJ3ByaW1hcnknLCB7IHR5cGUgPSAndHJlZScgfSkK wqAtLS0KwqAuLi4KLWEgPSBzOmluc2VydHswfQorXyA9IHM6aW5zZXJ0ezB9CistLS0KKy4uLgor XyA9IHM6aW5zZXJ0ezF9CistLS0KKy4uLgorXyA9IHM6aW5zZXJ0ezJ9CistLS0KKy4uLgorXyA9 IHM6aW5zZXJ0ezN9CistLS0KKy4uLgorbG90c19vZl9saW5rcyA9IHNldG1ldGF0YWJsZSh7fSwg e19fbW9kZSA9ICd2J30pCsKgLS0tCsKgLi4uCi1sb3RzX29mX2xpbmtzID0ge30KK2kgPSAwCist LS0KKy4uLgord2hpbGUgKGkgPCAzMzAwMCkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlua3Ms IHM6Z2V0ezB9KSBpID0gaSArIDEgZW5kCistLS0KKy4uLgord2hpbGUgKGkgPCA2NjAwMCkgZG8g dGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlua3MsIHM6Z2V0ezF9KSBpID0gaSArIDEgZW5kCistLS0K Ky4uLgord2hpbGUgKGkgPCAxMDAwMDApIGRvIHRhYmxlLmluc2VydChsb3RzX29mX2xpbmtzLCBz OmdldHsyfSkgaSA9IGkgKyAxIGVuZArCoC0tLQrCoC4uLgrCoHJlZl9jb3VudCA9IDAKwqAtLS0K wqAuLi4KLXdoaWxlICh0cnVlKSBkbyB0YWJsZS5pbnNlcnQobG90c19vZl9saW5rcywgczpnZXR7 MH0pIHJlZl9jb3VudCA9IHJlZl9jb3VudCArIDEgZW5kCitmb3IgaywgdiBpbiBwYWlycyhsb3Rz X29mX2xpbmtzKSBkbyByZWZfY291bnQgPSByZWZfY291bnQgKyAxIGVuZArCoC0tLQotLSBlcnJv cjogVHVwbGUgcmVmZXJlbmNlIGNvdW50ZXIgb3ZlcmZsb3cKwqAuLi4KwqByZWZfY291bnQKwqAt LS0KLS0gNjU1MzEKKy0gMTAwMDAwCsKgLi4uCi1sb3RzX29mX2xpbmtzID0ge30KKy0tIGNoZWNr IHRoYXQgdHVwbGVzIGFyZSBkZWxldGVkIGFmdGVyIGdjIGlzIGFjdGl2YXRlZAorY29sbGVjdGdh cmJhZ2UoJ2NvbGxlY3QnKQrCoC0tLQorLSAwCisuLi4KK2xvdHNfb2ZfbGlua3MKKy0tLQorLSBb XQrCoC4uLgrCoHM6ZHJvcCgpCsKgLS0tCmRpZmYgLS1naXQgYS90ZXN0L2JveC9zZWxlY3QudGVz dC5sdWEgYi90ZXN0L2JveC9zZWxlY3QudGVzdC5sdWEKaW5kZXggNTRjMmVjYzFjLi4zNDAwYmRh ZmUgMTAwNjQ0Ci0tLSBhL3Rlc3QvYm94L3NlbGVjdC50ZXN0Lmx1YQorKysgYi90ZXN0L2JveC9z ZWxlY3QudGVzdC5sdWEKQEAgLTEyNCwxMiArMTI0LDI1IEBAIHRlc3QucmFuZG9tKHMuaW5kZXhb MF0sIDQ4KQrCoHM6ZHJvcCgpCsKgCsKgY29sbGVjdGdhcmJhZ2UoJ2NvbGxlY3QnKQorCistLSBn aC0zMjI0IHJlc3VycmVjdCB0dXBsZSBiaWdyZWZzCisKK2NvbGxlY3RnYXJiYWdlKCdzdG9wJykK wqBzID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3NlbGVjdCcsIHsgdGVtcG9yYXJ5ID0gdHJ1 ZSB9KQrCoGluZGV4ID0gczpjcmVhdGVfaW5kZXgoJ3ByaW1hcnknLCB7IHR5cGUgPSAndHJlZScg fSkKLWEgPSBzOmluc2VydHswfQotbG90c19vZl9saW5rcyA9IHt9CitfID0gczppbnNlcnR7MH0K K18gPSBzOmluc2VydHsxfQorXyA9IHM6aW5zZXJ0ezJ9CitfID0gczppbnNlcnR7M30KK2xvdHNf b2ZfbGlua3MgPSBzZXRtZXRhdGFibGUoe30sIHtfX21vZGUgPSAndid9KQoraSA9IDAKK3doaWxl IChpIDwgMzMwMDApIGRvIHRhYmxlLmluc2VydChsb3RzX29mX2xpbmtzLCBzOmdldHswfSkgaSA9 IGkgKyAxIGVuZAord2hpbGUgKGkgPCA2NjAwMCkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlu a3MsIHM6Z2V0ezF9KSBpID0gaSArIDEgZW5kCit3aGlsZSAoaSA8IDEwMDAwMCkgZG8gdGFibGUu aW5zZXJ0KGxvdHNfb2ZfbGlua3MsIHM6Z2V0ezJ9KSBpID0gaSArIDEgZW5kCsKgcmVmX2NvdW50 ID0gMAotd2hpbGUgKHRydWUpIGRvIHRhYmxlLmluc2VydChsb3RzX29mX2xpbmtzLCBzOmdldHsw fSkgcmVmX2NvdW50ID0gcmVmX2NvdW50ICsgMSBlbmQKK2ZvciBrLCB2IGluIHBhaXJzKGxvdHNf b2ZfbGlua3MpIGRvIHJlZl9jb3VudCA9IHJlZl9jb3VudCArIDEgZW5kCsKgcmVmX2NvdW50Ci1s b3RzX29mX2xpbmtzID0ge30KKy0tIGNoZWNrIHRoYXQgdHVwbGVzIGFyZSBkZWxldGVkIGFmdGVy IGdjIGlzIGFjdGl2YXRlZAorY29sbGVjdGdhcmJhZ2UoJ2NvbGxlY3QnKQorbG90c19vZl9saW5r cwrCoHM6ZHJvcCgpCmRpZmYgLS1naXQgYS90ZXN0L3VuaXQvQ01ha2VMaXN0cy50eHQgYi90ZXN0 L3VuaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZGJjMDJjZGYwLi5hZWY1MzE2MDAgMTAwNjQ0Ci0t LSBhL3Rlc3QvdW5pdC9DTWFrZUxpc3RzLnR4dAorKysgYi90ZXN0L3VuaXQvQ01ha2VMaXN0cy50 eHQKQEAgLTE5MiwzICsxOTIsNiBAQCB0YXJnZXRfbGlua19saWJyYXJpZXModnlfY2FjaGUudGVz dCAke0lURVJBVE9SX1RFU1RfTElCU30pCsKgCsKgYWRkX2V4ZWN1dGFibGUoY29sbC50ZXN0IGNv bGwuY3BwKQrCoHRhcmdldF9saW5rX2xpYnJhcmllcyhjb2xsLnRlc3QgY29yZSB1bml0ICR7SUNV X0xJQlJBUklFU30gbWlzYykKKworYWRkX2V4ZWN1dGFibGUodHVwbGVfYmlncmVmLnRlc3QgdHVw bGVfYmlncmVmLmMpCit0YXJnZXRfbGlua19saWJyYXJpZXModHVwbGVfYmlncmVmLnRlc3QgdHVw bGUgdW5pdCkKZGlmZiAtLWdpdCBhL3Rlc3QvdW5pdC90dXBsZV9iaWdyZWYuYyBiL3Rlc3QvdW5p dC90dXBsZV9iaWdyZWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjE1 NGMxMGFjMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvdW5pdC90dXBsZV9iaWdyZWYuYwpAQCAt MCwwICsxLDE3OSBAQAorI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgImZpYmVyLmgiCisj aW5jbHVkZSAidHVwbGUuaCIKKyNpbmNsdWRlICJ1bml0LmgiCisjaW5jbHVkZSA8c3RkaW8uaD4K KworZW51bSB7CivCoMKgIMKgQklHUkVGX0RJRkYgPSAxMCwKK8KgwqAgwqBCSUdSRUZfQ09VTlQg PSA3MDAwMywKK8KgwqAgwqBCSUdSRUZfQ0FQQUNJVFkgPSAxMDcsCit9OworCitzdGF0aWMgY2hh ciB0dXBsZV9idWZbNjRdOworc3RhdGljIGNoYXIgKnR1cGxlX2VuZCA9IHR1cGxlX2J1ZjsKKwor LyoqCisgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgbmV3IHR1cGxlIHdpdGggcmVmcyA9PSAxLgor ICovCitzdGF0aWMgaW5saW5lIHN0cnVjdCB0dXBsZSAqCitjcmVhdGVfdHVwbGUoKQoreworwqDC oCDCoHN0cnVjdCB0dXBsZSAqcmV0ID0KK8KgwqAgwqDCoMKgIMKgdHVwbGVfbmV3KGJveF90dXBs ZV9mb3JtYXRfZGVmYXVsdCgpLCB0dXBsZV9idWYsIHR1cGxlX2VuZCk7CivCoMKgIMKgdHVwbGVf cmVmKHJldCk7CivCoMKgIMKgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBUaGlzIHRlc3QgcGVy Zm9ybXMgb3ZlcmFsbCBjaGVjayBvZiBiaWdyZWZzLgorICogV2hhdCBpdCBjaGVja3M6CisgKiAx KSBUaWxsIHJlZnMgPD0gVFVQTEVfUkVGX01BWCBpdCBzaG93cyBudW1iZXIgb2YgcmVmcworICog b2YgdHVwbGUgYW5kIGl0IGlzbid0IGEgYmlncmVmLgorICogMikgV2hlbiByZWZzID4gVFVQTEVf UkVGX01BWCBmaXJzdCAxNSBiaXRzIG9mIGl0IGJlY29tZXMKKyAqIGluZGV4IG9mIGJpZ3JlZiBh bmQgdGhlIGxhc3QgYml0IGJlY29tZXMgdHJ1ZSB3aGljaAorICogc2hvd3MgdGhhdCBpdCBpcyBi aWdyZWYuCisgKiAzKSBFYWNoIG9mIHR1cGxlIGhhcyBpdHMgb3duIG51bWJlciBvZiByZWZzLCBi dXQgYWxsCisgKiB0aGVzZSBudW1iZXJzIG1vcmUgdGhhbiBpdCBpcyBuZWVkZWQgZm9yIGdldHRp bmcgYSBiaWdyZWYuCisgKiA0KSBJbmRleGVzIG9mIGJpZ3JlZnMgYXJlIGdpdmVuIHNlcXVlbnRp YWxseS4KKyAqIDUpIEFmdGVyIHNvbWUgdHVwbGVzIGFyZSBzZXF1ZW50aWFsbHkgZGVsZXRlZCBh bGwgb2YKKyAqIG90aGVycyBiaWdyZWZzIGFyZSBmaW5lLiBJbiB0aGlzIHRlc3QgQklHUkVGX0NB UEFDSVRZCisgKiB0dXBsZXMgY3JlYXRlZCBhbmQgZWFjaCBvZiB0aGVpciByZWYgY291bnRlciBp bmNyZWFzZWQKKyAqIHRvIChCSUdSRUZfQ09VTlQgLSBpbmRleCBvZiB0dXBsZSkuIFR1cGxlcyBh cmUgY3JlYXRlZAorICogY29uc2lzdGVudGx5LgorICovCitzdGF0aWMgdm9pZAordGVzdF9iaWdy ZWZzXzEoKQoreworwqDCoCDCoHByaW50ZigiVGVzdDE6IE92ZXJhbGwgY2hlY2sgb2YgYmlncmVm cy5cbiIpOworwqDCoCDCoHVpbnQxNl90IGNvdW50ZXIgPSAwOworwqDCoCDCoHN0cnVjdCB0dXBs ZSAqKnR1cGxlcyA9IChzdHJ1Y3QgdHVwbGUgKiopIG1hbGxvYyhCSUdSRUZfQ0FQQUNJVFkgKgor wqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoCBzaXplb2Yo KnR1cGxlcykpOworwqDCoCDCoGZvcihpbnQgaSA9IDA7IGkgPCBCSUdSRUZfQ0FQQUNJVFk7ICsr aSkKK8KgwqAgwqDCoMKgIMKgdHVwbGVzW2ldID0gY3JlYXRlX3R1cGxlKCk7CivCoMKgIMKgZm9y KGludCBpID0gMDsgaSA8IEJJR1JFRl9DQVBBQ0lUWTsgKytpKQorwqDCoCDCoMKgwqAgwqBjb3Vu dGVyICs9IHR1cGxlc1tpXS0+cmVmcyA9PSAxOworwqDCoCDCoGlzKGNvdW50ZXIsIEJJR1JFRl9D QVBBQ0lUWSwgIkFsbCB0dXBsZXMgaGF2ZSByZWZzID09IDEuIik7CivCoMKgIMKgZm9yKGludCBp ID0gMDsgaSA8IEJJR1JFRl9DQVBBQ0lUWTsgKytpKSB7CivCoMKgIMKgwqDCoCDCoGZvcihpbnQg aiA9IDE7IGogPCBUVVBMRV9SRUZfTUFYOyArK2opCivCoMKgIMKgwqDCoCDCoMKgwqAgwqB0dXBs ZV9yZWYodHVwbGVzW2ldKTsKK8KgwqAgwqDCoMKgIMKgdHVwbGVfcmVmKHR1cGxlc1tpXSk7CivC oMKgIMKgwqDCoCDCoGZvcihpbnQgaiA9IFRVUExFX1JFRl9NQVggKyAxOyBqIDwgQklHUkVGX0NP VU5UIC0gaTsgKytqKQorwqDCoCDCoMKgwqAgwqDCoMKgIMKgdHVwbGVfcmVmKHR1cGxlc1tpXSk7 CivCoMKgIMKgfQorwqDCoCDCoGNvdW50ZXIgPSAwOworwqDCoCDCoGZvcihpbnQgaSA9IDA7IGkg PCBCSUdSRUZfQ0FQQUNJVFk7ICsraSkKK8KgwqAgwqDCoMKgIMKgY291bnRlciArPSB0dXBsZXNb aV0tPmlzX2JpZ3JlZiA9PSB0cnVlOworwqDCoCDCoGlzKGNvdW50ZXIsIEJJR1JFRl9DQVBBQ0lU WSwgIkFsbCB0dXBsZXMgaGF2ZSBiaWdyZWZzLiIpOworwqDCoCDCoGNvdW50ZXIgPSAwOworwqDC oCDCoGZvcihpbnQgaSA9IDA7IGkgPCBCSUdSRUZfQ0FQQUNJVFk7ICsraSkgeworwqDCoCDCoMKg wqAgwqBmb3IoaW50IGogPSAxOyBqIDwgQklHUkVGX0NPVU5UIC0gaTsgKytqKQorwqDCoCDCoMKg wqAgwqDCoMKgIMKgdHVwbGVfdW5yZWYodHVwbGVzW2ldKTsKK8KgwqAgwqDCoMKgIMKgY291bnRl ciArPSB0dXBsZXNbaV0tPnJlZnMgPT0gMTsKK8KgwqAgwqDCoMKgIMKgdHVwbGVfdW5yZWYodHVw bGVzW2ldKTsKK8KgwqAgwqB9CivCoMKgIMKgaXMoY291bnRlciwgQklHUkVGX0NBUEFDSVRZLCAi QWxsIHR1cGxlcyB3ZXJlIGRlbGV0ZWQuIik7CivCoMKgIMKgZnJlZSh0dXBsZXMpOworfQorCisv KioKKyAqIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBiaWdyZWZzIHdvcmtzIGZpbmUgYWZ0ZXIgYmVp bmcKKyAqIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCAyIHRpbWVzLgorICovCitzdGF0aWMgdm9pZAor dGVzdF9iaWdyZWZzXzIoKQoreworwqDCoCDCoHByaW50ZigiVGVzdCAyOiBDcmVhdGUvZGVzdHJv eSB0ZXN0LlxuIik7CivCoMKgIMKgc3RydWN0IHR1cGxlICp0dXBsZSA9IGNyZWF0ZV90dXBsZSgp OworwqDCoCDCoGZvcihpbnQgaiA9IDE7IGogPCBCSUdSRUZfQ09VTlQ7ICsraikKK8KgwqAgwqDC oMKgIMKgdHVwbGVfcmVmKHR1cGxlKTsKK8KgwqAgwqBvayh0dXBsZS0+cmVmcyAmJiB0dXBsZS0+ cmVmX2luZGV4ID09IDAsCivCoMKgIMKgwqDCoCAiVHVwbGUgYmVjb21lcyBiaWdyZWYgZmlyc3Qg dGltZSB3aXRoIHJlZl9pbmRleCA9PSAwLiIpOworwqDCoCDCoGZvcihpbnQgaiA9IDE7IGogPCBC SUdSRUZfQ09VTlQ7ICsraikKK8KgwqAgwqDCoMKgIMKgdHVwbGVfdW5yZWYodHVwbGUpOworwqDC oCDCoGZvcihpbnQgaiA9IDE7IGogPCBCSUdSRUZfQ09VTlQ7ICsraikKK8KgwqAgwqDCoMKgIMKg dHVwbGVfcmVmKHR1cGxlKTsKK8KgwqAgwqBvayh0dXBsZS0+cmVmcyAmJiB0dXBsZS0+cmVmX2lu ZGV4ID09IDAsCivCoMKgIMKgwqDCoCAiVHVwbGUgYmVjb21lcyBiaWdyZWYgc2Vjb25kIHRpbWUg d2l0aCByZWZfaW5kZXggPT0gMC4iKTsKK8KgwqAgwqBmb3IoaW50IGogPSAxOyBqIDwgQklHUkVG X0NPVU5UOyArK2opCivCoMKgIMKgwqDCoCDCoHR1cGxlX3VucmVmKHR1cGxlKTsKK8KgwqAgwqB0 dXBsZV91bnJlZih0dXBsZSk7Cit9CisKKy8qKgorICogVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGlu ZGV4ZXMgYXJlIGdpdmVuIGFzCisgKiBpbnRlbmRlZC4KKyAqLworc3RhdGljIHZvaWQKK3Rlc3Rf YmlncmVmc18zKCkKK3sKK8KgwqAgwqBwcmludGYoIlRlc3QzOiBOb24tY29uc2lzdGVudCBpbmRl eGVzIHRlc3QuXG4iKTsKK8KgwqAgwqB1aW50MTZfdCBjb3VudGVyID0gMDsKK8KgwqAgwqB1aW50 MTZfdCBtYXhfaW5kZXggPSBCSUdSRUZfQ0FQQUNJVFkgLyBCSUdSRUZfRElGRjsKK8KgwqAgwqBz dHJ1Y3QgdHVwbGUgKip0dXBsZXMgPSAoc3RydWN0IHR1cGxlICoqKSBtYWxsb2MoQklHUkVGX0NB UEFDSVRZICoKK8KgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAg wqAgc2l6ZW9mKCp0dXBsZXMpKTsKK8KgwqAgwqB1aW50MTZfdCAqaW5kZXhlcyA9ICh1aW50MTZf dCAqKSBtYWxsb2MgKHNpemVvZigqaW5kZXhlcykgKgorwqDCoCDCoMKgwqAgwqAobWF4X2luZGV4 ICsgMSkpOworwqDCoCDCoGZvcihpbnQgaSA9IDA7IGkgPCBCSUdSRUZfQ0FQQUNJVFk7ICsraSkK K8KgwqAgwqDCoMKgIMKgdHVwbGVzW2ldID0gY3JlYXRlX3R1cGxlKCk7CivCoMKgIMKgZm9yKGlu dCBpID0gMDsgaSA8IEJJR1JFRl9DQVBBQ0lUWTsgKytpKSB7CivCoMKgIMKgwqDCoCDCoGZvcihp bnQgaiA9IDE7IGogPCBCSUdSRUZfQ09VTlQ7ICsraikKK8KgwqAgwqDCoMKgIMKgwqDCoCDCoHR1 cGxlX3JlZih0dXBsZXNbaV0pOworwqDCoCDCoMKgwqAgwqBjb3VudGVyICs9IHR1cGxlc1tpXS0+ aXNfYmlncmVmID09IHRydWU7CivCoMKgIMKgfQorwqDCoCDCoGlzKGNvdW50ZXIsIEJJR1JFRl9D QVBBQ0lUWSwgIkFsbCB0dXBsZXMgaGF2ZSBiaWdyZWZzLiIpOworwqDCoCDCoGNvdW50ZXIgPSAw OworwqDCoCDCoGZvcihpbnQgaSA9IDA7IGkgPCBCSUdSRUZfQ0FQQUNJVFk7IGkgKz0gQklHUkVG X0RJRkYpIHsKK8KgwqAgwqDCoMKgIMKgaW5kZXhlc1tjb3VudGVyXSA9IHR1cGxlc1tpXS0+cmVm X2luZGV4OworwqDCoCDCoMKgwqAgwqBmb3IoaW50IGogPSAxOyBqIDwgQklHUkVGX0NPVU5UOyAr K2opCivCoMKgIMKgwqDCoCDCoMKgwqAgwqB0dXBsZV91bnJlZih0dXBsZXNbaV0pOworwqDCoCDC oMKgwqAgwqBhc3NlcnQoIXR1cGxlc1tpXS0+aXNfYmlncmVmKTsKK8KgwqAgwqDCoMKgIMKgY291 bnRlcisrOworwqDCoCDCoH0KK8KgwqAgwqBpcyhjb3VudGVyLCBtYXhfaW5kZXggKyAxLCAiJWQg dHVwbGVzIGRvbid0IGhhdmUgYmlncmVmcyAiXAorwqDCoCDCoMKgwqAgImFuZCBhbGwgb3RoZXIg dHVwbGVzIGhhdmUiLCBtYXhfaW5kZXggKyAxKTsKK8KgwqAgwqBjb3VudGVyID0gMDsKK8KgwqAg wqBmb3IoaW50IGkgPSAwOyBpIDwgQklHUkVGX0NBUEFDSVRZOyBpICs9IEJJR1JFRl9ESUZGKSB7 CivCoMKgIMKgwqDCoCDCoGFzc2VydCh0dXBsZXNbaV0tPnJlZnMgPT0gMSk7CivCoMKgIMKgwqDC oCDCoGZvcihpbnQgaiA9IDE7IGogPCBCSUdSRUZfQ09VTlQ7ICsraikKK8KgwqAgwqDCoMKgIMKg wqDCoCDCoHR1cGxlX3JlZih0dXBsZXNbaV0pOworwqDCoCDCoMKgwqAgwqBhc3NlcnQodHVwbGVz W2ldLT5pc19iaWdyZWYgJiYKK8KgwqAgwqDCoMKgIMKgwqDCoMKgwqDCoMKgIHR1cGxlc1tpXS0+ cmVmX2luZGV4ID09IGluZGV4ZXNbbWF4X2luZGV4IC0gY291bnRlcl0pOworwqDCoCDCoMKgwqAg wqArK2NvdW50ZXI7CivCoMKgIMKgfQorwqDCoCDCoGlzKGNvdW50ZXIsIG1heF9pbmRleCArIDEs ICJBbGwgdHVwbGVzIGhhdmUgYmlncmVmcyBhbmQgIlwKK8KgwqAgwqDCoMKgICJ0aGVpciBpbmRl eGVzIGFyZSBpbiByaWdodCBvcmRlci4iKTsKK8KgwqAgwqBmb3IgKGludCBpID0gMDsgaSA8IEJJ R1JFRl9DQVBBQ0lUWTsgKytpKSB7CivCoMKgIMKgwqDCoCDCoGZvciAoaW50IGogPSAxOyBqIDwg QklHUkVGX0NPVU5UOyArK2opCivCoMKgIMKgwqDCoCDCoMKgwqAgwqB0dXBsZV91bnJlZih0dXBs ZXNbaV0pOworwqDCoCDCoMKgwqAgwqBhc3NlcnQodHVwbGVzW2ldLT5yZWZzID09IDEpOworwqDC oCDCoMKgwqAgwqB0dXBsZV91bnJlZih0dXBsZXNbaV0pOworwqDCoCDCoH0KK8KgwqAgwqBmcmVl KGluZGV4ZXMpOworwqDCoCDCoGZyZWUodHVwbGVzKTsKK30KKworaW50CittYWluKCkKK3sKK8Kg wqAgwqBoZWFkZXIoKTsKK8KgwqAgwqBwbGFuKDkpOworCivCoMKgIMKgbWVtb3J5X2luaXQoKTsK K8KgwqAgwqBmaWJlcl9pbml0KGZpYmVyX2NfaW52b2tlKTsKK8KgwqAgwqB0dXBsZV9pbml0KE5V TEwpOworCivCoMKgIMKgdHVwbGVfZW5kID0gbXBfZW5jb2RlX2FycmF5KHR1cGxlX2VuZCwgMSk7 CivCoMKgIMKgdHVwbGVfZW5kID0gbXBfZW5jb2RlX3VpbnQodHVwbGVfZW5kLCAyKTsKKworwqDC oCDCoHRlc3RfYmlncmVmc18xKCk7CivCoMKgIMKgdGVzdF9iaWdyZWZzXzIoKTsKK8KgwqAgwqB0 ZXN0X2JpZ3JlZnNfMygpOworCivCoMKgIMKgdHVwbGVfZnJlZSgpOworwqDCoCDCoGZpYmVyX2Zy ZWUoKTsKK8KgwqAgwqBtZW1vcnlfZnJlZSgpOworCivCoMKgIMKgZm9vdGVyKCk7CivCoMKgIMKg Y2hlY2tfcGxhbigpOworfQpkaWZmIC0tZ2l0IGEvdGVzdC91bml0L3R1cGxlX2JpZ3JlZi5yZXN1 bHQgYi90ZXN0L3VuaXQvdHVwbGVfYmlncmVmLnJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAuLjdlODY5NGUxNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvdW5pdC90 dXBsZV9iaWdyZWYucmVzdWx0CkBAIC0wLDAgKzEsMTUgQEAKKyMgTG9va3MgbGlrZSB5b3UgcGxh bm5lZCA5IHRlc3RzIGJ1dCByYW4gOC4KK8KgwqAgwqAqKiogbWFpbiAqKioKKzEuLjkKK1Rlc3Qx OiBPdmVyYWxsIGNoZWNrIG9mIGJpZ3JlZnMuCitvayAxIC0gQWxsIHR1cGxlcyBoYXZlIHJlZnMg PT0gMS4KK29rIDIgLSBBbGwgdHVwbGVzIGhhdmUgYmlncmVmcy4KK29rIDMgLSBBbGwgdHVwbGVz IHdlcmUgZGVsZXRlZC4KK1Rlc3QgMjogQ3JlYXRlL2Rlc3Ryb3kgdGVzdC4KK29rIDQgLSBUdXBs ZSBiZWNvbWVzIGJpZ3JlZiBmaXJzdCB0aW1lIHdpdGggcmVmX2luZGV4ID09IDAuCitvayA1IC0g VHVwbGUgYmVjb21lcyBiaWdyZWYgc2Vjb25kIHRpbWUgd2l0aCByZWZfaW5kZXggPT0gMC4KK1Rl c3QzOiBOb24tY29uc2lzdGVudCBpbmRleGVzIHRlc3QuCitvayA2IC0gQWxsIHR1cGxlcyBoYXZl IGJpZ3JlZnMuCitvayA3IC0gMTEgdHVwbGVzIGRvbid0IGhhdmUgYmlncmVmcyBhbmQgYWxsIG90 aGVyIHR1cGxlcyBoYXZlCitvayA4IC0gQWxsIHR1cGxlcyBoYXZlIGJpZ3JlZnMgYW5kIHRoZWly IGluZGV4ZXMgYXJlIGluIHJpZ2h0IG9yZGVyLgorwqDCoCDCoCoqKiBtYWluOiBkb25lICoqKgoK Cg== ----ALT--xqTC9BIjQxsRdlqNtktW4ysmAIeZ6NCJ1528569664 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxicj48YnI+PGJyPjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDox cHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPgoJ0KHR g9Cx0LHQvtGC0LAsICA5INC40Y7QvdGPIDIwMTgsIDE4OjE1ICswMzowMCDQvtGCIFZsYWRpc2xh diBTaHBpbGV2b3kgJmx0O3Yuc2hwaWxldm95QHRhcmFudG9vbC5vcmcmZ3Q7Ojxicj48YnI+PGRp diBpZD0iIj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdiBp ZD0ic3R5bGVfMTUyODU1NzMyNjAwMDAwMDAwNTZfQk9EWSI+VGhhbmtzIGZvciB0aGUgcGF0Y2gh IEkgaGF2ZSBwdXNoZWQgYSBzZXBhcmF0ZSBjb21taXQgd2l0aCBteSBmaXhlcywgYnV0PGJyPgpp dCBkb2VzIG5vdCBwYXNzIHRoZSB0ZXN0LiBQbGVhc2UsIGZpeCBpdC48YnI+PGJyPgpBbmQgdXNl IHVuaXQuaCBoZWxwZXJzOiBvaywgaXNudCwgaXMsIGZhaWwgZXRjIHRvIHRlc3Qgc29tZXRoaW5n IGluc3RlYWQ8YnI+Cm9mIGFzc2VydGlvbnMuIEFzc2VydCBpcyBvbWl0dGVkIGluIFJlbGVhc2Ug YnVpbGQsIGFuZCB0aGUgdGVzdCB3aWxsIHRlc3Q8YnI+Cm5vdGhpbmcuPC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PC9ibG9ja3F1b3RlPkRvbmUuPGJyPjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXIt bGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsi PjxkaXYgaWQ9IiI+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2Pjxk aXYgaWQ9InN0eWxlXzE1Mjg1NTczMjYwMDAwMDAwMDU2X0JPRFkiPjxicj48YnI+Ck9uIDA5LzA2 LzIwMTggMTc6NDAsIDxhIGhyZWY9Im1haWx0bzppbWVldm1hQHRhcmFudG9vbC5vcmciPmltZWV2 bWFAdGFyYW50b29sLm9yZzwvYT4gd3JvdGU6PGJyPgomZ3Q7IER1ZSB0byBsaW1pdGF0aW9uIG9m IHJlZmVyZW5jZSBjb3VudGVycyBmb3IgdHVwbGUgYmVpbmcgb25seTxicj4KJmd0OyA2NTUzNSBp dCB3YXMgcG9zc2libGUgdG8gcmVhY2ggdGhpcyBsaW1pdGF0aW9uLiBUaGlzIHBhdGNoPGJyPgom Z3Q7IGluY3JlYXNlcyBjYXBhY2l0eSBvZiByZWZlcmVuY2UgY291bnRlcnMgdG8gNCBiaWxsaW9u cy48YnI+CiZndDsgPGJyPgomZ3Q7IENsb3NlcyAjMzIyNDxicj4KJmd0OyAtLS08YnI+CiZndDsg QnJhbmNoOiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9vbC9j b21taXRzL2ltZWV2bWEvZ2gtMzIyNC10dXBsZS1iaWdyZWZzIiB0YXJnZXQ9Il9ibGFuayI+aHR0 cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvY29tbWl0cy9pbWVldm1hL2doLTMy MjQtdHVwbGUtYmlncmVmczwvYT48YnI+CiZndDsgSXNzdWU6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0 aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL2lzc3Vlcy8zMjI0IiB0YXJnZXQ9Il9ibGFuayI+ aHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvaXNzdWVzLzMyMjQ8L2E+PGJy PgomZ3Q7IDxicj4KJmd0OyAgIHNyYy9ib3gvYm94LmNjICAgICAgICAgICAgICAgIHwgIDIwICsr Ky0tLTxicj4KJmd0OyAgIHNyYy9ib3gvZXJyY29kZS5oICAgICAgICAgICAgIHwgICAyICstPGJy PgomZ3Q7ICAgc3JjL2JveC9pbmRleC5jYyAgICAgICAgICAgICAgfCAgMjAgKysrLS0tPGJyPgom Z3Q7ICAgc3JjL2JveC9sdWEvdHVwbGUuYyAgICAgICAgICAgfCAgIDUgKy08YnI+CiZndDsgICBz cmMvYm94L3BvcnQuYyAgICAgICAgICAgICAgICB8ICAgOCArLS08YnI+CiZndDsgICBzcmMvYm94 L3R1cGxlLmMgICAgICAgICAgICAgICB8IDE0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS08YnI+CiZndDsgICBzcmMvYm94L3R1cGxlLmggICAgICAgICAgICAgICB8 IDEwNSArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tPGJyPgomZ3Q7ICAgc3JjL2JveC92 aW55bC5jICAgICAgICAgICAgICAgfCAgMzggKysrKystLS0tLS08YnI+CiZndDsgICB0ZXN0L2Jv eC9taXNjLnJlc3VsdCAgICAgICAgICB8ICAzOSArKysrKystLS0tLS08YnI+CiZndDsgICB0ZXN0 L2JveC9zZWxlY3QucmVzdWx0ICAgICAgICB8ICA0MyArKysrKysrKysrKy0tPGJyPgomZ3Q7ICAg dGVzdC9ib3gvc2VsZWN0LnRlc3QubHVhICAgICAgfCAgMjEgKysrKystLTxicj4KJmd0OyAgIHRl c3QvdW5pdC9DTWFrZUxpc3RzLnR4dCAgICAgIHwgICAzICs8YnI+CiZndDsgICB0ZXN0L3VuaXQv dHVwbGVfYmlncmVmLmMgICAgICB8IDExNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrPGJyPgomZ3Q7ICAgdGVzdC91bml0L3R1cGxlX2JpZ3JlZi5yZXN1bHQgfCAgIDUgKys8YnI+ CiZndDsgICAxNCBmaWxlcyBjaGFuZ2VkLCA0MTMgaW5zZXJ0aW9ucygrKSwgMTU2IGRlbGV0aW9u cygtKTxicj4KJmd0OyAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L3VuaXQvdHVwbGVfYmlncmVm LmM8YnI+CiZndDsgICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC91bml0L3R1cGxlX2JpZ3JlZi5y ZXN1bHQ8YnI+CiZndDsgPGJyPgomZ3Q7IGRpZmYgLS1naXQgYS9zcmMvYm94L2JveC5jYyBiL3Ny Yy9ib3gvYm94LmNjPGJyPgomZ3Q7IGluZGV4IGM3MjhhNGMuLjQyNTc4NjEgMTAwNjQ0PGJyPgom Z3Q7IC0tLSBhL3NyYy9ib3gvYm94LmNjPGJyPgomZ3Q7ICsrKyBiL3NyYy9ib3gvYm94LmNjPGJy PgomZ3Q7IEBAIC0xNzQsMjAgKzE3NCwyMiBAQCBwcm9jZXNzX3J3KHN0cnVjdCByZXF1ZXN0ICpy ZXF1ZXN0LCBzdHJ1Y3Qgc3BhY2UgKnNwYWNlLCBzdHJ1Y3QgdHVwbGUgKipyZXN1bHQpPGJyPgom Z3Q7ICAgCQl0eG5fcm9sbGJhY2tfc3RtdCgpOzxicj4KJmd0OyAgIAkJcmV0dXJuIC0xOzxicj4K Jmd0OyAgIAl9PGJyPgomZ3Q7ICsJaWYgKHJlc3VsdCA9PSBOVUxMKTxicj4KJmd0OyArCQlyZXR1 cm4gdHhuX2NvbW1pdF9zdG10KHR4biwgcmVxdWVzdCk7PGJyPgomZ3Q7ICsJKnJlc3VsdCA9IHR1 cGxlOzxicj4KJmd0OyArCWlmICh0dXBsZSA9PSBOVUxMKTxicj4KJmd0OyArCQlyZXR1cm4gdHhu X2NvbW1pdF9zdG10KHR4biwgcmVxdWVzdCk7PGJyPgomZ3Q7ICAgCS8qPGJyPgomZ3Q7ICAgCSAq IFBpbiB0aGUgdHVwbGUgbG9jYWxseSBiZWZvcmUgdGhlIGNvbW1pdCw8YnI+CiZndDsgICAJICog b3RoZXJ3aXNlIGl0IG1heSBnbyBhd2F5IGR1cmluZyB5aWVsZCBpbjxicj4KJmd0OyAgIAkgKiB3 aGVuIFdBTCBpcyB3cml0dGVuIGluIGF1dG9jb21taXQgbW9kZS48YnI+CiZndDsgICAJICovPGJy PgomZ3Q7IC0JVHVwbGVSZWZOaWwgcmVmKHR1cGxlKTs8YnI+CiZndDsgLQlpZiAodHhuX2NvbW1p dF9zdG10KHR4biwgcmVxdWVzdCkgIT0gMCk8YnI+CiZndDsgLQkJcmV0dXJuIC0xOzxicj4KJmd0 OyAtCWlmIChyZXN1bHQgIT0gTlVMTCkgezxicj4KJmd0OyAtCQlpZiAodHVwbGUgIT0gTlVMTCAm YW1wOyZhbXA7IHR1cGxlX2JsZXNzKHR1cGxlKSA9PSBOVUxMKTxicj4KJmd0OyAtCQkJcmV0dXJu IC0xOzxicj4KJmd0OyAtCQkqcmVzdWx0ID0gdHVwbGU7PGJyPgomZ3Q7IC0JfTxicj4KJmd0OyAt CXJldHVybiAwOzxicj4KJmd0OyArCXR1cGxlX3JlZih0dXBsZSk7PGJyPgomZ3Q7ICsJaW50IHJj ID0gdHhuX2NvbW1pdF9zdG10KHR4biwgcmVxdWVzdCk7PGJyPgomZ3Q7ICsJaWYgKHJjID09IDAp PGJyPgomZ3Q7ICsJCXR1cGxlX2JsZXNzKHR1cGxlKTs8YnI+CiZndDsgKwl0dXBsZV91bnJlZih0 dXBsZSk7PGJyPgomZ3Q7ICsJcmV0dXJuIHJjOzxicj4KJmd0OyAgIH08YnI+CiZndDsgICA8YnI+ CiZndDsgICB2b2lkPGJyPgomZ3Q7IGRpZmYgLS1naXQgYS9zcmMvYm94L2VycmNvZGUuaCBiL3Ny Yy9ib3gvZXJyY29kZS5oPGJyPgomZ3Q7IGluZGV4IGEwNzU5ZjguLmUwMDk1MjQgMTAwNjQ0PGJy PgomZ3Q7IC0tLSBhL3NyYy9ib3gvZXJyY29kZS5oPGJyPgomZ3Q7ICsrKyBiL3NyYy9ib3gvZXJy Y29kZS5oPGJyPgomZ3Q7IEBAIC0xMzgsNyArMTM4LDcgQEAgc3RydWN0IGVycmNvZGVfcmVjb3Jk IHs8YnI+CiZndDsgICAJLyogODMgKi9fKEVSX1JPTEVfRVhJU1RTLAkJIlJvbGUgJyVzJyBhbHJl YWR5IGV4aXN0cyIpIFw8YnI+CiZndDsgICAJLyogODQgKi9fKEVSX0NSRUFURV9ST0xFLAkJIkZh aWxlZCB0byBjcmVhdGUgcm9sZSAnJXMnOiAlcyIpIFw8YnI+CiZndDsgICAJLyogODUgKi9fKEVS X0lOREVYX0VYSVNUUywJCSJJbmRleCAnJXMnIGFscmVhZHkgZXhpc3RzIikgXDxicj4KJmd0OyAt CS8qIDg2ICovXyhFUl9UVVBMRV9SRUZfT1ZFUkZMT1csCSJUdXBsZSByZWZlcmVuY2UgY291bnRl ciBvdmVyZmxvdyIpIFw8YnI+CiZndDsgKwkvKiA4NiAqL18oRVJfVU5VU0VENiwJCQkiIikgXDxi cj4KJmd0OyAgIAkvKiA4NyAqL18oRVJfUk9MRV9MT09QLAkJCSJHcmFudGluZyByb2xlICclcycg dG8gcm9sZSAnJXMnIHdvdWxkIGNyZWF0ZSBhIGxvb3AiKSBcPGJyPgomZ3Q7ICAgCS8qIDg4ICov XyhFUl9HUkFOVCwJCQkiSW5jb3JyZWN0IGdyYW50IGFyZ3VtZW50czogJXMiKSBcPGJyPgomZ3Q7 ICAgCS8qIDg5ICovXyhFUl9QUklWX0dSQU5URUQsCQkiVXNlciAnJXMnIGFscmVhZHkgaGFzICVz IGFjY2VzcyBvbiAlcyAnJXMnIikgXDxicj4KJmd0OyBkaWZmIC0tZ2l0IGEvc3JjL2JveC9pbmRl eC5jYyBiL3NyYy9ib3gvaW5kZXguY2M8YnI+CiZndDsgaW5kZXggM2M2MmVjMS4uZjk5MmJjOSAx MDA2NDQ8YnI+CiZndDsgLS0tIGEvc3JjL2JveC9pbmRleC5jYzxicj4KJmd0OyArKysgYi9zcmMv Ym94L2luZGV4LmNjPGJyPgomZ3Q7IEBAIC0yMjAsOCArMjIwLDggQEAgYm94X2luZGV4X3JhbmRv bSh1aW50MzJfdCBzcGFjZV9pZCwgdWludDMyX3QgaW5kZXhfaWQsIHVpbnQzMl90IHJuZCw8YnI+ CiZndDsgICAJLyogTm8gdHggbWFuYWdlbWVudCwgcmFuZG9tKCkgaXMgZm9yIGFwcHJveGltYXRp b24gYW55d2F5LiAqLzxicj4KJmd0OyAgIAlpZiAoaW5kZXhfcmFuZG9tKGluZGV4LCBybmQsIHJl c3VsdCkgIT0gMCk8YnI+CiZndDsgICAJCXJldHVybiAtMTs8YnI+CiZndDsgLQlpZiAoKnJlc3Vs dCAhPSBOVUxMICZhbXA7JmFtcDsgdHVwbGVfYmxlc3MoKnJlc3VsdCkgPT0gTlVMTCk8YnI+CiZn dDsgLQkJcmV0dXJuIC0xOzxicj4KJmd0OyArCWlmICgqcmVzdWx0ICE9IE5VTEwpPGJyPgomZ3Q7 ICsJCXR1cGxlX2JsZXNzKCpyZXN1bHQpOzxicj4KJmd0OyAgIAlyZXR1cm4gMDs8YnI+CiZndDsg ICB9PGJyPgomZ3Q7ICAgPGJyPgomZ3Q7IEBAIC0yNTMsOCArMjUzLDggQEAgYm94X2luZGV4X2dl dCh1aW50MzJfdCBzcGFjZV9pZCwgdWludDMyX3QgaW5kZXhfaWQsIGNvbnN0IGNoYXIgKmtleSw8 YnI+CiZndDsgICAJdHhuX2NvbW1pdF9yb19zdG10KHR4bik7PGJyPgomZ3Q7ICAgCS8qIENvdW50 IHN0YXRpc3RpY3MuICovPGJyPgomZ3Q7ICAgCXJtZWFuX2NvbGxlY3Qocm1lYW5fYm94LCBJUFJP VE9fU0VMRUNULCAxKTs8YnI+CiZndDsgLQlpZiAoKnJlc3VsdCAhPSBOVUxMICZhbXA7JmFtcDsg dHVwbGVfYmxlc3MoKnJlc3VsdCkgPT0gTlVMTCk8YnI+CiZndDsgLQkJcmV0dXJuIC0xOzxicj4K Jmd0OyArCWlmICgqcmVzdWx0ICE9IE5VTEwpPGJyPgomZ3Q7ICsJCXR1cGxlX2JsZXNzKCpyZXN1 bHQpOzxicj4KJmd0OyAgIAlyZXR1cm4gMDs8YnI+CiZndDsgICB9PGJyPgomZ3Q7ICAgPGJyPgom Z3Q7IEBAIC0yODUsOCArMjg1LDggQEAgYm94X2luZGV4X21pbih1aW50MzJfdCBzcGFjZV9pZCwg dWludDMyX3QgaW5kZXhfaWQsIGNvbnN0IGNoYXIgKmtleSw8YnI+CiZndDsgICAJCXJldHVybiAt MTs8YnI+CiZndDsgICAJfTxicj4KJmd0OyAgIAl0eG5fY29tbWl0X3JvX3N0bXQodHhuKTs8YnI+ CiZndDsgLQlpZiAoKnJlc3VsdCAhPSBOVUxMICZhbXA7JmFtcDsgdHVwbGVfYmxlc3MoKnJlc3Vs dCkgPT0gTlVMTCk8YnI+CiZndDsgLQkJcmV0dXJuIC0xOzxicj4KJmd0OyArCWlmICgqcmVzdWx0 ICE9IE5VTEwpPGJyPgomZ3Q7ICsJCXR1cGxlX2JsZXNzKCpyZXN1bHQpOzxicj4KJmd0OyAgIAly ZXR1cm4gMDs8YnI+CiZndDsgICB9PGJyPgomZ3Q7ICAgPGJyPgomZ3Q7IEBAIC0zMTcsOCArMzE3 LDggQEAgYm94X2luZGV4X21heCh1aW50MzJfdCBzcGFjZV9pZCwgdWludDMyX3QgaW5kZXhfaWQs IGNvbnN0IGNoYXIgKmtleSw8YnI+CiZndDsgICAJCXJldHVybiAtMTs8YnI+CiZndDsgICAJfTxi cj4KJmd0OyAgIAl0eG5fY29tbWl0X3JvX3N0bXQodHhuKTs8YnI+CiZndDsgLQlpZiAoKnJlc3Vs dCAhPSBOVUxMICZhbXA7JmFtcDsgdHVwbGVfYmxlc3MoKnJlc3VsdCkgPT0gTlVMTCk8YnI+CiZn dDsgLQkJcmV0dXJuIC0xOzxicj4KJmd0OyArCWlmICgqcmVzdWx0ICE9IE5VTEwpPGJyPgomZ3Q7 ICsJCXR1cGxlX2JsZXNzKCpyZXN1bHQpOzxicj4KJmd0OyAgIAlyZXR1cm4gMDs8YnI+CiZndDsg ICB9PGJyPgomZ3Q7ICAgPGJyPgomZ3Q7IEBAIC0zOTcsOCArMzk3LDggQEAgYm94X2l0ZXJhdG9y X25leHQoYm94X2l0ZXJhdG9yX3QgKml0ciwgYm94X3R1cGxlX3QgKipyZXN1bHQpPGJyPgomZ3Q7 ICAgCWFzc2VydChyZXN1bHQgIT0gTlVMTCk7PGJyPgomZ3Q7ICAgCWlmIChpdGVyYXRvcl9uZXh0 KGl0ciwgcmVzdWx0KSAhPSAwKTxicj4KJmd0OyAgIAkJcmV0dXJuIC0xOzxicj4KJmd0OyAtCWlm ICgqcmVzdWx0ICE9IE5VTEwgJmFtcDsmYW1wOyB0dXBsZV9ibGVzcygqcmVzdWx0KSA9PSBOVUxM KTxicj4KJmd0OyAtCQlyZXR1cm4gLTE7PGJyPgomZ3Q7ICsJaWYgKCpyZXN1bHQgIT0gTlVMTCk8 YnI+CiZndDsgKwkJdHVwbGVfYmxlc3MoKnJlc3VsdCk7PGJyPgomZ3Q7ICAgCXJldHVybiAwOzxi cj4KJmd0OyAgIH08YnI+CiZndDsgICA8YnI+CiZndDsgZGlmZiAtLWdpdCBhL3NyYy9ib3gvbHVh L3R1cGxlLmMgYi9zcmMvYm94L2x1YS90dXBsZS5jPGJyPgomZ3Q7IGluZGV4IDxzcGFuIGNsYXNz PSJqcy1waG9uZS1udW1iZXIiPjgwNTczMzE8L3NwYW4+Li4yMmZlNjk2IDEwMDY0NDxicj4KJmd0 OyAtLS0gYS9zcmMvYm94L2x1YS90dXBsZS5jPGJyPgomZ3Q7ICsrKyBiL3NyYy9ib3gvbHVhL3R1 cGxlLmM8YnI+CiZndDsgQEAgLTQ5NiwxMCArNDk2LDcgQEAgbHVhVF9wdXNodHVwbGUoc3RydWN0 IGx1YV9TdGF0ZSAqTCwgYm94X3R1cGxlX3QgKnR1cGxlKTxicj4KJmd0OyAgIAkJbHVhTF9wdXNo Y2RhdGEoTCwgQ1RJRF9DT05TVF9TVFJVQ1RfVFVQTEVfUkVGKTs8YnI+CiZndDsgICAJKnB0ciA9 IHR1cGxlOzxicj4KJmd0OyAgIAkvKiBUaGUgb3JkZXIgaXMgaW1wb3J0YW50IC0gZmlyc3QgcmVm ZXJlbmNlIHR1cGxlLCBuZXh0IHNldCBnYyAqLzxicj4KJmd0OyAtCWlmIChib3hfdHVwbGVfcmVm KHR1cGxlKSAhPSAwKSB7PGJyPgomZ3Q7IC0JCWx1YVRfZXJyb3IoTCk7PGJyPgomZ3Q7IC0JCXJl dHVybjs8YnI+CiZndDsgLQl9PGJyPgomZ3Q7ICsJYm94X3R1cGxlX3JlZih0dXBsZSk7PGJyPgom Z3Q7ICAgCWx1YV9wdXNoY2Z1bmN0aW9uKEwsIGxib3hfdHVwbGVfZ2MpOzxicj4KJmd0OyAgIAls dWFMX3NldGNkYXRhZ2MoTCwgLTIpOzxicj4KJmd0OyAgIH08YnI+CiZndDsgZGlmZiAtLWdpdCBh L3NyYy9ib3gvcG9ydC5jIGIvc3JjL2JveC9wb3J0LmM8YnI+CiZndDsgaW5kZXggMDNmNmJlNy4u OWI2Yjg1OCAxMDA2NDQ8YnI+CiZndDsgLS0tIGEvc3JjL2JveC9wb3J0LmM8YnI+CiZndDsgKysr IGIvc3JjL2JveC9wb3J0LmM8YnI+CiZndDsgQEAgLTQ1LDggKzQ1LDcgQEAgcG9ydF90dXBsZV9h ZGQoc3RydWN0IHBvcnQgKmJhc2UsIHN0cnVjdCB0dXBsZSAqdHVwbGUpPGJyPgomZ3Q7ICAgCXN0 cnVjdCBwb3J0X3R1cGxlICpwb3J0ID0gcG9ydF90dXBsZShiYXNlKTs8YnI+CiZndDsgICAJc3Ry dWN0IHBvcnRfdHVwbGVfZW50cnkgKmU7PGJyPgomZ3Q7ICAgCWlmIChwb3J0LSZndDtzaXplID09 IDApIHs8YnI+CiZndDsgLQkJaWYgKHR1cGxlX3JlZih0dXBsZSkgIT0gMCk8YnI+CiZndDsgLQkJ CXJldHVybiAtMTs8YnI+CiZndDsgKwkJdHVwbGVfcmVmKHR1cGxlKTs8YnI+CiZndDsgICAJCWUg PSAmYW1wO3BvcnQtJmd0O2ZpcnN0X2VudHJ5Ozxicj4KJmd0OyAgIAkJcG9ydC0mZ3Q7Zmlyc3Qg PSBwb3J0LSZndDtsYXN0ID0gZTs8YnI+CiZndDsgICAJfSBlbHNlIHs8YnI+CiZndDsgQEAgLTU1 LDEwICs1NCw3IEBAIHBvcnRfdHVwbGVfYWRkKHN0cnVjdCBwb3J0ICpiYXNlLCBzdHJ1Y3QgdHVw bGUgKnR1cGxlKTxicj4KJmd0OyAgIAkJCWRpYWdfc2V0KE91dE9mTWVtb3J5LCBzaXplb2YoKmUp LCAibWVtcG9vbF9hbGxvYyIsICJlIik7PGJyPgomZ3Q7ICAgCQkJcmV0dXJuIC0xOzxicj4KJmd0 OyAgIAkJfTxicj4KJmd0OyAtCQlpZiAodHVwbGVfcmVmKHR1cGxlKSAhPSAwKSB7PGJyPgomZ3Q7 IC0JCQltZW1wb29sX2ZyZWUoJmFtcDtwb3J0X3R1cGxlX2VudHJ5X3Bvb2wsIGUpOzxicj4KJmd0 OyAtCQkJcmV0dXJuIC0xOzxicj4KJmd0OyAtCQl9PGJyPgomZ3Q7ICsJCXR1cGxlX3JlZih0dXBs ZSk7PGJyPgomZ3Q7ICAgCQlwb3J0LSZndDtsYXN0LSZndDtuZXh0ID0gZTs8YnI+CiZndDsgICAJ CXBvcnQtJmd0O2xhc3QgPSBlOzxicj4KJmd0OyAgIAl9PGJyPgomZ3Q7IGRpZmYgLS1naXQgYS9z cmMvYm94L3R1cGxlLmMgYi9zcmMvYm94L3R1cGxlLmM8YnI+CiZndDsgaW5kZXggMDE0ZjM3NC4u YjYzMjE4MyAxMDA2NDQ8YnI+CiZndDsgLS0tIGEvc3JjL2JveC90dXBsZS5jPGJyPgomZ3Q7ICsr KyBiL3NyYy9ib3gvdHVwbGUuYzxicj4KJmd0OyBAQCAtNDgsNiArNDgsMjggQEAgZW51bSB7PGJy PgomZ3Q7ICAgCU9CSlNJWkVfTUlOID0gMTYsPGJyPgomZ3Q7ICAgfTs8YnI+CiZndDsgICA8YnI+ CiZndDsgKy8qKjxicj4KJmd0OyArICogQ29udGFpbmVyIGZvciBiaWcgcmVmZXJlbmNlIGNvdW50 ZXJzLiBDb250YWlucyBhcnJheSBvZiBiaWc8YnI+CiZndDsgKyAqIHJlZmVyZW5jZSBjb3VudGVy cywgc2l6ZSBvZiB0aGlzIGFycmF5IGFuZCBudW1iZXIgb2Ygbm9uLXplcm88YnI+CiZndDsgKyAq IGJpZyByZWZlcmVuY2UgY291bnRlcnMuIFdoZW4gcmVmZXJlbmNlIGNvdW50ZXIgb2YgdHVwbGUg YmVjb21lczxicj4KJmd0OyArICogbW9yZSB0aGFuIDMyNzY3LCBmaWVsZCByZWZzIG9mIHRoaXMg dHVwbGUgYmVjb21lcyBpbmRleCBvZiBiaWc8YnI+CiZndDsgKyAqIHJlZmVyZW5jZSBjb3VudGVy IGluIGJpZyByZWZlcmVuY2UgY291bnRlciBhcnJheSBhbmQgZmllbGQ8YnI+CiZndDsgKyAqIGlz X2JpZ3JlZiBpcyBzZXQgdHJ1ZS4gVGhlIG1vbWVudCBiaWcgcmVmZXJlbmNlIGJlY29tZXMgZXF1 YWw8YnI+CiZndDsgKyAqIDMyNzY3IGl0IGlzIHNldCB0byAwLCByZWZzIG9mIHRoZSB0dXBsZSBi ZWNvbWVzIDMyNzY3IGFuZDxicj4KJmd0OyArICogaXNfYmlncmVmIGJlY29tZXMgZmFsc2UuIEJp ZyByZWZlcmVuY2UgY291bnRlciBjYW4gYmUgZXF1YWwgdG88YnI+CiZndDsgKyAqIDAgb3IgYmUg bW9yZSB0aGFuIDMyNzY3Ljxicj4KJmd0OyArICovPGJyPgomZ3Q7ICtzdGF0aWMgc3RydWN0IGJp Z3JlZl9saXN0IHs8YnI+CiZndDsgKwkvKiogQXJyYXkgb2YgYmlnIHJlZmVyZW5jZSBjb3VudGVy cy4gKi88YnI+CiZndDsgKwl1aW50MzJfdCAqcmVmczs8YnI+CiZndDsgKwkvKiogTnVtYmVyIG9m IG5vbi16ZXJvIGVsZW1lbnRzIGluIHRoZSBhcnJheS4gKi88YnI+CiZndDsgKwl1aW50MTZfdCBz aXplOzxicj4KJmd0OyArCS8qKiBDYXBhY2l0eSBvZiB0aGUgYXJyYXkuICovPGJyPgomZ3Q7ICsJ dWludDE2X3QgY2FwYWNpdHk7PGJyPgomZ3Q7ICsJLyoqIEluZGV4IG9mIGZpcnN0IGZyZWUgZWxl bWVudC4gKi88YnI+CiZndDsgKwl1aW50MTZfdCB2YWNhbnRfaW5kZXg7PGJyPgomZ3Q7ICt9IGJp Z3JlZl9saXN0Ozxicj4KJmd0OyArPGJyPgomZ3Q7ICAgc3RhdGljIGNvbnN0IGRvdWJsZSBBTExP Q19GQUNUT1IgPSAxLjA1Ozxicj4KJmd0OyAgIDxicj4KJmd0OyAgIC8qKjxicj4KJmd0OyBAQCAt MTUxLDYgKzE3MywxMyBAQCB0dXBsZV92YWxpZGF0ZV9yYXcoc3RydWN0IHR1cGxlX2Zvcm1hdCAq Zm9ybWF0LCBjb25zdCBjaGFyICp0dXBsZSk8YnI+CiZndDsgICAJcmV0dXJuIDA7PGJyPgomZ3Q7 ICAgfTxicj4KJmd0OyAgIDxicj4KJmd0OyArLyoqIEluaXRpYWxpemUgYmlnIHJlZmVyZW5jZXMg Y29udGFpbmVyLiAqLzxicj4KJmd0OyArc3RhdGljIGlubGluZSB2b2lkPGJyPgomZ3Q7ICtiaWdy ZWZfbGlzdF9jcmVhdGUoKTxicj4KJmd0OyArezxicj4KJmd0OyArCW1lbXNldCgmYW1wO2JpZ3Jl Zl9saXN0LCAwLCBzaXplb2YoYmlncmVmX2xpc3QpKTs8YnI+CiZndDsgK308YnI+CiZndDsgKzxi cj4KJmd0OyAgIC8qKjxicj4KJmd0OyAgICAqIEluY3JlbWVudGVkIG9uIGV2ZXJ5IHNuYXBzaG90 IGFuZCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHR1cGxlczxicj4KJmd0OyAgICAqIHdoaWNoIHdl cmUgY3JlYXRlZCBhZnRlciBzdGFydCBvZiBhIHNuYXBzaG90ICh0aGVzZSB0dXBsZXMgY2FuPGJy PgomZ3Q7IEBAIC0yMTEsNiArMjQwLDggQEAgdHVwbGVfaW5pdChmaWVsZF9uYW1lX2hhc2hfZiBo YXNoKTxicj4KJmd0OyAgIDxicj4KJmd0OyAgIAlib3hfdHVwbGVfbGFzdCA9IE5VTEw7PGJyPgom Z3Q7ICAgPGJyPgomZ3Q7ICsJYmlncmVmX2xpc3RfY3JlYXRlKCk7PGJyPgomZ3Q7ICs8YnI+CiZn dDsgICAJaWYgKGNvbGxfaWRfY2FjaGVfaW5pdCgpICE9IDApPGJyPgomZ3Q7ICAgCQlyZXR1cm4g LTE7PGJyPgomZ3Q7ICAgPGJyPgomZ3Q7IEBAIC0yNDQsNiArMjc1LDEwNyBAQCB0dXBsZV9hcmVu YV9jcmVhdGUoc3RydWN0IHNsYWJfYXJlbmEgKmFyZW5hLCBzdHJ1Y3QgcXVvdGEgKnF1b3RhLDxi cj4KJmd0OyAgIAl9PGJyPgomZ3Q7ICAgfTxicj4KJmd0OyAgIDxicj4KJmd0OyArZW51bSB7PGJy PgomZ3Q7ICsJQklHUkVGX0ZBQ1RPUiA9IDIsPGJyPgomZ3Q7ICsJQklHUkVGX01BWCA9IFVJTlQz Ml9NQVgsPGJyPgomZ3Q7ICsJQklHUkVGX01JTl9DQVBBQ0lUWSA9IDE2LDxicj4KJmd0OyArCS8q Kjxicj4KJmd0OyArCSAqIE9ubHkgMTUgYml0cyBhcmUgYXZhaWxhYmxlIGZvciBiaWdyZWYgbGlz dCBpbmRleCBpbjxicj4KJmd0OyArCSAqIHN0cnVjdCB0dXBsZS48YnI+CiZndDsgKwkgKi88YnI+ CiZndDsgKwlCSUdSRUZfTUFYX0NBUEFDSVRZID0gVUlOVDE2X01BWCAmZ3Q7Jmd0OyAxPGJyPgom Z3Q7ICt9Ozxicj4KJmd0OyArPGJyPgomZ3Q7ICsvKiogRGVzdHJveSBiaWcgcmVmZXJlbmNlcyBh bmQgZnJlZSBtZW1vcnkgdGhhdCB3YXMgYWxsb2NhdGVkLiAqLzxicj4KJmd0OyArc3RhdGljIGlu bGluZSB2b2lkPGJyPgomZ3Q7ICtiaWdyZWZfbGlzdF9yZXNldCgpPGJyPgomZ3Q7ICt7PGJyPgom Z3Q7ICsJZnJlZShiaWdyZWZfbGlzdC5yZWZzKTs8YnI+CiZndDsgKwliaWdyZWZfbGlzdF9jcmVh dGUoKTs8YnI+CiZndDsgK308YnI+CiZndDsgKzxicj4KJmd0OyArLyoqPGJyPgomZ3Q7ICsgKiBJ bmNyZWFzZSBjYXBhY2l0eSBvZiBiaWdyZWZfbGlzdC48YnI+CiZndDsgKyAqLzxicj4KJmd0OyAr c3RhdGljIGlubGluZSB2b2lkPGJyPgomZ3Q7ICtiaWdyZWZfbGlzdF9pbmNyZWFzZV9jYXBhY2l0 eSgpPGJyPgomZ3Q7ICt7PGJyPgomZ3Q7ICsJYXNzZXJ0KGJpZ3JlZl9saXN0LmNhcGFjaXR5ID09 IGJpZ3JlZl9saXN0LnZhY2FudF9pbmRleCk7PGJyPgomZ3Q7ICsJdWludDMyX3QgKnJlZnMgPSBi aWdyZWZfbGlzdC5yZWZzOzxicj4KJmd0OyArCXVpbnQxNl90IGNhcGFjaXR5ID0gYmlncmVmX2xp c3QuY2FwYWNpdHk7PGJyPgomZ3Q7ICsJaWYgKGNhcGFjaXR5ID09IDApPGJyPgomZ3Q7ICsJCWNh cGFjaXR5ID0gQklHUkVGX01JTl9DQVBBQ0lUWTs8YnI+CiZndDsgKwllbHNlIGlmIChjYXBhY2l0 eSAmbHQ7IEJJR1JFRl9NQVhfQ0FQQUNJVFkpPGJyPgomZ3Q7ICsJCWNhcGFjaXR5ID0gTUlOKGNh cGFjaXR5ICogQklHUkVGX0ZBQ1RPUiwgQklHUkVGX01BWF9DQVBBQ0lUWSk7PGJyPgomZ3Q7ICsJ ZWxzZTxicj4KJmd0OyArCQlwYW5pYygiVG9vIG1hbnkgYmlnIHJlZmVyZW5jZXMiKTs8YnI+CiZn dDsgKwlyZWZzID0gKHVpbnQzMl90ICopIHJlYWxsb2MocmVmcywgY2FwYWNpdHkgKiBzaXplb2Yo KnJlZnMpKTs8YnI+CiZndDsgKwlpZiAocmVmcyA9PSBOVUxMKSB7PGJyPgomZ3Q7ICsJCXBhbmlj KCJmYWlsZWQgdG8gcmVhbGxvY2F0ZSAlenUgYnl0ZXM6IENhbm5vdCBhbGxvY2F0ZSAiXDxicj4K Jmd0OyArCQkgICAgICAibWVtb3J5LiIsIGNhcGFjaXR5ICogc2l6ZW9mKCpyZWZzKSk7PGJyPgom Z3Q7ICsJfTxicj4KJmd0OyArCWZvcih1aW50MTZfdCBpID0gYmlncmVmX2xpc3QuY2FwYWNpdHk7 IGkgJmx0OyBjYXBhY2l0eTsgKytpKSB7PGJyPgomZ3Q7ICsJCXJlZnNbaV0gPSBpICsgMTs8YnI+ CiZndDsgKwl9PGJyPgomZ3Q7ICsJYmlncmVmX2xpc3QucmVmcyA9IHJlZnM7PGJyPgomZ3Q7ICsJ YmlncmVmX2xpc3QuY2FwYWNpdHkgPSBjYXBhY2l0eTs8YnI+CiZndDsgK308YnI+CiZndDsgKzxi cj4KJmd0OyArLyoqPGJyPgomZ3Q7ICsgKiBSZXR1cm4gaW5kZXggZm9yIG5ldyBiaWcgcmVmZXJl bmNlIGNvdW50ZXIgYW5kIGFsbG9jYXRlIG1lbW9yeTxicj4KJmd0OyArICogaWYgbmVlZGVkLjxi cj4KJmd0OyArICogQHJldHZhbCBpbmRleCBmb3IgbmV3IGJpZyByZWZlcmVuY2UgY291bnRlci48 YnI+CiZndDsgKyAqLzxicj4KJmd0OyArc3RhdGljIGlubGluZSB1aW50MTZfdDxicj4KJmd0OyAr YmlncmVmX2xpc3RfbmV3X2luZGV4KCk8YnI+CiZndDsgK3s8YnI+CiZndDsgKwlpZiAoYmlncmVm X2xpc3Quc2l6ZSA9PSBiaWdyZWZfbGlzdC5jYXBhY2l0eSk8YnI+CiZndDsgKwkJYmlncmVmX2xp c3RfaW5jcmVhc2VfY2FwYWNpdHkoKTs8YnI+CiZndDsgKwkrK2JpZ3JlZl9saXN0LnNpemU7PGJy PgomZ3Q7ICsJdWludDE2X3QgdmFjYW50X2luZGV4ID0gYmlncmVmX2xpc3QudmFjYW50X2luZGV4 Ozxicj4KJmd0OyArCWJpZ3JlZl9saXN0LnZhY2FudF9pbmRleCA9IGJpZ3JlZl9saXN0LnJlZnNb dmFjYW50X2luZGV4XTs8YnI+CiZndDsgKwlyZXR1cm4gdmFjYW50X2luZGV4Ozxicj4KJmd0OyAr fTxicj4KJmd0OyArPGJyPgomZ3Q7ICt2b2lkPGJyPgomZ3Q7ICt0dXBsZV9yZWZfc2xvdyhzdHJ1 Y3QgdHVwbGUgKnR1cGxlKTxicj4KJmd0OyArezxicj4KJmd0OyArCWFzc2VydCh0dXBsZS0mZ3Q7 aXNfYmlncmVmIHx8IHR1cGxlLSZndDtyZWZzID09IFRVUExFX1JFRl9NQVgpOzxicj4KJmd0OyAr CWlmICghIHR1cGxlLSZndDtpc19iaWdyZWYpIHs8YnI+CiZndDsgKwkJdHVwbGUtJmd0O3JlZl9p bmRleCA9IGJpZ3JlZl9saXN0X25ld19pbmRleCgpOzxicj4KJmd0OyArCQl0dXBsZS0mZ3Q7aXNf YmlncmVmID0gdHJ1ZTs8YnI+CiZndDsgKwkJYmlncmVmX2xpc3QucmVmc1t0dXBsZS0mZ3Q7cmVm X2luZGV4XSA9IFRVUExFX1JFRl9NQVg7PGJyPgomZ3Q7ICsJfSBlbHNlIGlmIChiaWdyZWZfbGlz dC5yZWZzW3R1cGxlLSZndDtyZWZfaW5kZXhdID09IEJJR1JFRl9NQVgpIHs8YnI+CiZndDsgKwkJ cGFuaWMoIlR1cGxlIGJpZyByZWZlcmVuY2UgY291bnRlciBvdmVyZmxvdyIpOzxicj4KJmd0OyAr CX08YnI+CiZndDsgKwliaWdyZWZfbGlzdC5yZWZzW3R1cGxlLSZndDtyZWZfaW5kZXhdKys7PGJy PgomZ3Q7ICt9PGJyPgomZ3Q7ICs8YnI+CiZndDsgKy8qKjxicj4KJmd0OyArICogRnJlZSBpbmRl eCBhbmQgYWRkIGl0IHRvIGZyZWUtaW5kZXgtbGlzdC4gRnJlZSBtZW1vcnk8YnI+CiZndDsgKyAq IHdoZW4gc2l6ZSA9PSAwLjxicj4KJmd0OyArICovPGJyPgomZ3Q7ICtzdGF0aWMgaW5saW5lIHZv aWQ8YnI+CiZndDsgK2JpZ3JlZl9saXN0X2RlbGV0ZV9pbmRleCh1aW50MTZfdCBpbmRleCk8YnI+ CiZndDsgK3s8YnI+CiZndDsgKwliaWdyZWZfbGlzdC5yZWZzW2luZGV4XSA9IGJpZ3JlZl9saXN0 LnZhY2FudF9pbmRleDs8YnI+CiZndDsgKwliaWdyZWZfbGlzdC52YWNhbnRfaW5kZXggPSBpbmRl eDs8YnI+CiZndDsgKwlpZiAoLS1iaWdyZWZfbGlzdC5zaXplID09IDApPGJyPgomZ3Q7ICsJCWJp Z3JlZl9saXN0X3Jlc2V0KCk7PGJyPgomZ3Q7ICt9PGJyPgomZ3Q7ICs8YnI+CiZndDsgK3ZvaWQ8 YnI+CiZndDsgK3R1cGxlX3VucmVmX3Nsb3coc3RydWN0IHR1cGxlICp0dXBsZSk8YnI+CiZndDsg K3s8YnI+CiZndDsgKwlhc3NlcnQodHVwbGUtJmd0O2lzX2JpZ3JlZiAmYW1wOyZhbXA7PGJyPgom Z3Q7ICsJICAgICAgIGJpZ3JlZl9saXN0LnJlZnNbdHVwbGUtJmd0O3JlZl9pbmRleF0gJmd0OyBU VVBMRV9SRUZfTUFYKTs8YnI+CiZndDsgKwlpZigtLWJpZ3JlZl9saXN0LnJlZnNbdHVwbGUtJmd0 O3JlZl9pbmRleF0gPT0gVFVQTEVfUkVGX01BWCkgezxicj4KJmd0OyArCQliaWdyZWZfbGlzdF9k ZWxldGVfaW5kZXgodHVwbGUtJmd0O3JlZl9pbmRleCk7PGJyPgomZ3Q7ICsJCXR1cGxlLSZndDty ZWZfaW5kZXggPSBUVVBMRV9SRUZfTUFYOzxicj4KJmd0OyArCQl0dXBsZS0mZ3Q7aXNfYmlncmVm ID0gZmFsc2U7PGJyPgomZ3Q7ICsJfTxicj4KJmd0OyArfTxicj4KJmd0OyArPGJyPgomZ3Q7ICAg dm9pZDxicj4KJmd0OyAgIHR1cGxlX2FyZW5hX2Rlc3Ryb3koc3RydWN0IHNsYWJfYXJlbmEgKmFy ZW5hKTxicj4KJmd0OyAgIHs8YnI+CiZndDsgQEAgLTI2NSw2ICszOTcsOCBAQCB0dXBsZV9mcmVl KHZvaWQpPGJyPgomZ3Q7ICAgCXR1cGxlX2Zvcm1hdF9mcmVlKCk7PGJyPgomZ3Q7ICAgPGJyPgom Z3Q7ICAgCWNvbGxfaWRfY2FjaGVfZGVzdHJveSgpOzxicj4KJmd0OyArPGJyPgomZ3Q7ICsJYmln cmVmX2xpc3RfcmVzZXQoKTs8YnI+CiZndDsgICB9PGJyPgomZ3Q7ICAgPGJyPgomZ3Q7ICAgYm94 X3R1cGxlX2Zvcm1hdF90ICo8YnI+CiZndDsgQEAgLTI4OCw3ICs0MjIsOCBAQCBpbnQ8YnI+CiZn dDsgICBib3hfdHVwbGVfcmVmKGJveF90dXBsZV90ICp0dXBsZSk8YnI+CiZndDsgICB7PGJyPgom Z3Q7ICAgCWFzc2VydCh0dXBsZSAhPSBOVUxMKTs8YnI+CiZndDsgLQlyZXR1cm4gdHVwbGVfcmVm KHR1cGxlKTs8YnI+CiZndDsgKwl0dXBsZV9yZWYodHVwbGUpOzxicj4KJmd0OyArCXJldHVybiAw Ozxicj4KJmd0OyAgIH08YnI+CiZndDsgICA8YnI+CiZndDsgICB2b2lkPGJyPgomZ3Q7IEBAIC0z NTcsMTAgKzQ5Miw3IEBAIGJveF90dXBsZV9pdGVyYXRvcihib3hfdHVwbGVfdCAqdHVwbGUpPGJy PgomZ3Q7ICAgCQkJICJtZW1wb29sIiwgIm5ldyBzbGFiIik7PGJyPgomZ3Q7ICAgCQlyZXR1cm4g TlVMTDs8YnI+CiZndDsgICAJfTxicj4KJmd0OyAtCWlmICh0dXBsZV9yZWYodHVwbGUpICE9IDAp IHs8YnI+CiZndDsgLQkJbWVtcG9vbF9mcmVlKCZhbXA7dHVwbGVfaXRlcmF0b3JfcG9vbCwgaXQp Ozxicj4KJmd0OyAtCQlyZXR1cm4gTlVMTDs8YnI+CiZndDsgLQl9PGJyPgomZ3Q7ICsJdHVwbGVf cmVmKHR1cGxlKTs8YnI+CiZndDsgICAJdHVwbGVfcmV3aW5kKGl0LCB0dXBsZSk7PGJyPgomZ3Q7 ICAgCXJldHVybiBpdDs8YnI+CiZndDsgICB9PGJyPgomZ3Q7IEBAIC00NTEsNyArNTgzLDYgQEAg Ym94X3R1cGxlX25ldyhib3hfdHVwbGVfZm9ybWF0X3QgKmZvcm1hdCwgY29uc3QgY2hhciAqZGF0 YSwgY29uc3QgY2hhciAqZW5kKTxicj4KJmd0OyAgIAlzdHJ1Y3QgdHVwbGUgKnJldCA9IHR1cGxl X25ldyhmb3JtYXQsIGRhdGEsIGVuZCk7PGJyPgomZ3Q7ICAgCWlmIChyZXQgPT0gTlVMTCk8YnI+ CiZndDsgICAJCXJldHVybiBOVUxMOzxicj4KJmd0OyAtCS8qIENhbid0IGZhaWwgb24gemVybyBy ZWZzLiAqLzxicj4KJmd0OyAgIAlyZXR1cm4gdHVwbGVfYmxlc3MocmV0KTs8YnI+CiZndDsgICB9 PGJyPgomZ3Q7ICAgPGJyPgomZ3Q7IGRpZmYgLS1naXQgYS9zcmMvYm94L3R1cGxlLmggYi9zcmMv Ym94L3R1cGxlLmg8YnI+CiZndDsgaW5kZXggZTIzODRkZC4uMTRkYmQ0MCAxMDA2NDQ8YnI+CiZn dDsgLS0tIGEvc3JjL2JveC90dXBsZS5oPGJyPgomZ3Q7ICsrKyBiL3NyYy9ib3gvdHVwbGUuaDxi cj4KJmd0OyBAQCAtMTA1LDggKzEwNSw3IEBAIHR5cGVkZWYgc3RydWN0IHR1cGxlIGJveF90dXBs ZV90Ozxicj4KJmd0OyAgICAqIHR1cGxlIHdpbGwgbGVhay48YnI+CiZndDsgICAgKjxicj4KJmd0 OyAgICAqIFxwYXJhbSB0dXBsZSBhIHR1cGxlPGJyPgomZ3Q7IC0gKiBccmV0dmFsIC0xIG9uIGVy cm9yIChjaGVjayBib3hfZXJyb3JfbGFzdCgpKTxicj4KJmd0OyAtICogXHJldHZhbCAwIG9uIHN1 Y2Nlc3M8YnI+CiZndDsgKyAqIFxyZXR2YWwgMCBhbHdheXM8YnI+CiZndDsgICAgKiBcc2EgYm94 X3R1cGxlX3VucmVmKCk8YnI+CiZndDsgICAgKi88YnI+CiZndDsgICBpbnQ8YnI+CiZndDsgQEAg LTI2OSw4ICsyNjgsNyBAQCBib3hfdHVwbGVfbmV4dChib3hfdHVwbGVfaXRlcmF0b3JfdCAqaXQp Ozxicj4KJmd0OyAgICAqIFVzZSBib3hfdHVwbGVfZm9ybWF0X2RlZmF1bHQoKSB0byBjcmVhdGUg c3BhY2UtaW5kZXBlbmRlbnQgdHVwbGUuPGJyPgomZ3Q7ICAgICogXHBhcmFtIGRhdGEgdHVwbGUg ZGF0YSBpbiBNc2dQYWNrIEFycmF5IGZvcm1hdCAoW2ZpZWxkMSwgZmllbGQyLCAuLi5dKS48YnI+ CiZndDsgICAgKiBccGFyYW0gZW5kIHRoZSBlbmQgb2YgXGEgZGF0YTxicj4KJmd0OyAtICogXHJl dHZhbCBOVUxMIG9uIG91dCBvZiBtZW1vcnk8YnI+CiZndDsgLSAqIFxyZXR2YWwgdHVwbGUgb3Ro ZXJ3aXNlPGJyPgomZ3Q7ICsgKiBccmV0dmFsIHR1cGxlPGJyPgomZ3Q7ICAgICogXHByZSBkYXRh LCBlbmQgaXMgdmFsaWQgTXNnUGFjayBBcnJheTxicj4KJmd0OyAgICAqIFxzYSBcY29kZSBib3gu dHVwbGUubmV3KGRhdGEpIFxlbmRjb2RlPGJyPgomZ3Q7ICAgICovPGJyPgomZ3Q7IEBAIC0zMDcs OSArMzA1LDE3IEBAIGJveF90dXBsZV91cHNlcnQoY29uc3QgYm94X3R1cGxlX3QgKnR1cGxlLCBj b25zdCBjaGFyICpleHByLCBjb25zdDxicj4KJmd0OyAgICAqLzxicj4KJmd0OyAgIHN0cnVjdCBQ QUNLRUQgdHVwbGU8YnI+CiZndDsgICB7PGJyPgomZ3Q7IC0JLyoqIHJlZmVyZW5jZSBjb3VudGVy ICovPGJyPgomZ3Q7IC0JdWludDE2X3QgcmVmczs8YnI+CiZndDsgLQkvKiogZm9ybWF0IGlkZW50 aWZpZXIgKi88YnI+CiZndDsgKwl1bmlvbiB7PGJyPgomZ3Q7ICsJCS8qKiBSZWZlcmVuY2UgY291 bnRlci4gKi88YnI+CiZndDsgKwkJdWludDE2X3QgcmVmczs8YnI+CiZndDsgKwkJc3RydWN0IHs8 YnI+CiZndDsgKwkJCS8qKiBJbmRleCBvZiBiaWcgcmVmZXJlbmNlIGNvdW50ZXIuICovPGJyPgom Z3Q7ICsJCQl1aW50MTZfdCByZWZfaW5kZXggOiAxNTs8YnI+CiZndDsgKwkJCS8qKiBCaWcgcmVm ZXJlbmNlIGZsYWcuICovPGJyPgomZ3Q7ICsJCQlib29sIGlzX2JpZ3JlZiA6IDE7PGJyPgomZ3Q7 ICsJCX07PGJyPgomZ3Q7ICsJfTs8YnI+CiZndDsgKwkvKiogRm9ybWF0IGlkZW50aWZpZXIuICov PGJyPgomZ3Q7ICAgCXVpbnQxNl90IGZvcm1hdF9pZDs8YnI+CiZndDsgICAJLyoqPGJyPgomZ3Q7 ICAgCSAqIExlbmd0aCBvZiB0aGUgTWVzc2FnZVBhY2sgZGF0YSBpbiByYXcgcGFydCBvZiB0aGU8 YnI+CiZndDsgQEAgLTc3NCwyNiArNzgwLDM2IEBAIHR1cGxlX2ZpZWxkX3V1aWQoY29uc3Qgc3Ry dWN0IHR1cGxlICp0dXBsZSwgaW50IGZpZWxkbm8sPGJyPgomZ3Q7ICAgCXJldHVybiAwOzxicj4K Jmd0OyAgIH08YnI+CiZndDsgICA8YnI+CiZndDsgLWVudW0geyBUVVBMRV9SRUZfTUFYID0gVUlO VDE2X01BWCB9Ozxicj4KJmd0OyArZW51bSB7IFRVUExFX1JFRl9NQVggPSBVSU5UMTZfTUFYICZn dDsmZ3Q7IDEgfTs8YnI+CiZndDsgKzxicj4KJmd0OyArLyoqPGJyPgomZ3Q7ICsgKiBJbmNyZWFz ZSB0dXBsZSBiaWcgcmVmZXJlbmNlIGNvdW50ZXIuPGJyPgomZ3Q7ICsgKiBAcGFyYW0gdHVwbGUg VHVwbGUgdG8gcmVmZXJlbmNlLjxicj4KJmd0OyArICovPGJyPgomZ3Q7ICt2b2lkPGJyPgomZ3Q7 ICt0dXBsZV9yZWZfc2xvdyhzdHJ1Y3QgdHVwbGUgKnR1cGxlKTs8YnI+CiZndDsgICA8YnI+CiZn dDsgICAvKio8YnI+CiZndDsgICAgKiBJbmNyZW1lbnQgdHVwbGUgcmVmZXJlbmNlIGNvdW50ZXIu PGJyPgomZ3Q7ICAgICogQHBhcmFtIHR1cGxlIFR1cGxlIHRvIHJlZmVyZW5jZS48YnI+CiZndDsg LSAqIEByZXR2YWwgIDAgU3VjY2Vzcy48YnI+CiZndDsgLSAqIEByZXR2YWwgLTEgVG9vIG1hbnkg cmVmcyBlcnJvci48YnI+CiZndDsgICAgKi88YnI+CiZndDsgLXN0YXRpYyBpbmxpbmUgaW50PGJy PgomZ3Q7ICtzdGF0aWMgaW5saW5lIHZvaWQ8YnI+CiZndDsgICB0dXBsZV9yZWYoc3RydWN0IHR1 cGxlICp0dXBsZSk8YnI+CiZndDsgICB7PGJyPgomZ3Q7IC0JaWYgKHR1cGxlLSZndDtyZWZzICsg MSAmZ3Q7IFRVUExFX1JFRl9NQVgpIHs8YnI+CiZndDsgLQkJZGlhZ19zZXQoQ2xpZW50RXJyb3Is IEVSX1RVUExFX1JFRl9PVkVSRkxPVyk7PGJyPgomZ3Q7IC0JCXJldHVybiAtMTs8YnI+CiZndDsg LQl9PGJyPgomZ3Q7IC0JdHVwbGUtJmd0O3JlZnMrKzs8YnI+CiZndDsgLQlyZXR1cm4gMDs8YnI+ CiZndDsgKwlpZiAodW5saWtlbHkodHVwbGUtJmd0O3JlZnMgJmd0Oz0gVFVQTEVfUkVGX01BWCkp PGJyPgomZ3Q7ICsJCXR1cGxlX3JlZl9zbG93KHR1cGxlKTs8YnI+CiZndDsgKwllbHNlPGJyPgom Z3Q7ICsJCXR1cGxlLSZndDtyZWZzKys7PGJyPgomZ3Q7ICAgfTxicj4KJmd0OyAgIDxicj4KJmd0 OyAgIC8qKjxicj4KJmd0OyArICogRGVjcmVhc2UgdHVwbGUgYmlnIHJlZmVyZW5jZSBjb3VudGVy Ljxicj4KJmd0OyArICogQHBhcmFtIHR1cGxlIFR1cGxlIHRvIHJlZmVyZW5jZS48YnI+CiZndDsg KyAqLzxicj4KJmd0OyArdm9pZDxicj4KJmd0OyArdHVwbGVfdW5yZWZfc2xvdyhzdHJ1Y3QgdHVw bGUgKnR1cGxlKTs8YnI+CiZndDsgKzxicj4KJmd0OyArLyoqPGJyPgomZ3Q7ICAgICogRGVjcmVt ZW50IHR1cGxlIHJlZmVyZW5jZSBjb3VudGVyLiBJZiBpdCBoYXMgcmVhY2hlZCB6ZXJvLCBmcmVl IHRoZSB0dXBsZS48YnI+CiZndDsgICAgKjxicj4KJmd0OyAgICAqIEBwcmUgdHVwbGUtJmd0O3Jl ZnMgKyBjb3VudCAmZ3Q7PSAwPGJyPgomZ3Q7IEBAIC04MDIsMTAgKzgxOCw5IEBAIHN0YXRpYyBp bmxpbmUgdm9pZDxicj4KJmd0OyAgIHR1cGxlX3VucmVmKHN0cnVjdCB0dXBsZSAqdHVwbGUpPGJy PgomZ3Q7ICAgezxicj4KJmd0OyAgIAlhc3NlcnQodHVwbGUtJmd0O3JlZnMgLSAxICZndDs9IDAp Ozxicj4KJmd0OyAtPGJyPgomZ3Q7IC0JdHVwbGUtJmd0O3JlZnMtLTs8YnI+CiZndDsgLTxicj4K Jmd0OyAtCWlmICh0dXBsZS0mZ3Q7cmVmcyA9PSAwKTxicj4KJmd0OyArCWlmICh1bmxpa2VseSh0 dXBsZS0mZ3Q7aXNfYmlncmVmKSk8YnI+CiZndDsgKwkJdHVwbGVfdW5yZWZfc2xvdyh0dXBsZSk7 PGJyPgomZ3Q7ICsJZWxzZSBpZiAoLS10dXBsZS0mZ3Q7cmVmcyA9PSAwKTxicj4KJmd0OyAgIAkJ dHVwbGVfZGVsZXRlKHR1cGxlKTs8YnI+CiZndDsgICB9PGJyPgomZ3Q7ICAgPGJyPgomZ3Q7IEBA IC04MTMsMjUgKzgyOCwxOCBAQCBleHRlcm4gc3RydWN0IHR1cGxlICpib3hfdHVwbGVfbGFzdDs8 YnI+CiZndDsgICA8YnI+CiZndDsgICAvKio8YnI+CiZndDsgICAgKiBDb252ZXJ0IGludGVybmFs IGBzdHJ1Y3QgdHVwbGVgIHRvIHB1YmxpYyBgYm94X3R1cGxlX3RgLjxicj4KJmd0OyAtICogXHJl dHZhbCB0dXBsZSBvbiBzdWNjZXNzPGJyPgomZ3Q7IC0gKiBccmV0dmFsIE5VTEwgb24gZXJyb3Is IGNoZWNrIGRpYWc8YnI+CiZndDsgKyAqIFxyZXR2YWwgdHVwbGU8YnI+CiZndDsgICAgKiBccG9z dCBcYSB0dXBsZSByZWYgY291bnRlZCB1bnRpbCB0aGUgbmV4dCBjYWxsLjxicj4KJmd0OyAtICog XHBvc3QgdHVwbGVfcmVmKCkgZG9lc24ndCBmYWlsIGF0IGxlYXN0IG9uY2U8YnI+CiZndDsgICAg KiBcc2EgdHVwbGVfcmVmPGJyPgomZ3Q7ICAgICovPGJyPgomZ3Q7ICAgc3RhdGljIGlubGluZSBi b3hfdHVwbGVfdCAqPGJyPgomZ3Q7ICAgdHVwbGVfYmxlc3Moc3RydWN0IHR1cGxlICp0dXBsZSk8 YnI+CiZndDsgICB7PGJyPgomZ3Q7ICAgCWFzc2VydCh0dXBsZSAhPSBOVUxMKTs8YnI+CiZndDsg LQkvKiBFbnN1cmUgdHVwbGUgY2FuIGJlIHJlZmVyZW5jZWQgYXQgbGVhc3Qgb25jZSBhZnRlciBy ZXR1cm4gKi88YnI+CiZndDsgLQlpZiAodHVwbGUtJmd0O3JlZnMgKyAyICZndDsgVFVQTEVfUkVG X01BWCkgezxicj4KJmd0OyAtCQlkaWFnX3NldChDbGllbnRFcnJvciwgRVJfVFVQTEVfUkVGX09W RVJGTE9XKTs8YnI+CiZndDsgLQkJcmV0dXJuIE5VTEw7PGJyPgomZ3Q7IC0JfTxicj4KJmd0OyAt CXR1cGxlLSZndDtyZWZzKys7PGJyPgomZ3Q7ICsJdHVwbGVfcmVmKHR1cGxlKTs8YnI+CiZndDsg ICAJLyogUmVtb3ZlIHByZXZpb3VzIHR1cGxlICovPGJyPgomZ3Q7ICAgCWlmIChsaWtlbHkoYm94 X3R1cGxlX2xhc3QgIT0gTlVMTCkpPGJyPgomZ3Q7IC0JCXR1cGxlX3VucmVmKGJveF90dXBsZV9s YXN0KTsgLyogZG8gbm90IHRocm93ICovPGJyPgomZ3Q7ICsJCXR1cGxlX3VucmVmKGJveF90dXBs ZV9sYXN0KTs8YnI+CiZndDsgICAJLyogUmVtZW1iZXIgY3VycmVudCB0dXBsZSAqLzxicj4KJmd0 OyAgIAlib3hfdHVwbGVfbGFzdCA9IHR1cGxlOzxicj4KJmd0OyAgIAlyZXR1cm4gdHVwbGU7PGJy PgomZ3Q7IEBAIC04NDksNDEgKzg1Nyw2IEBAIHR1cGxlX3RvX2J1Zihjb25zdCBzdHJ1Y3QgdHVw bGUgKnR1cGxlLCBjaGFyICpidWYsIHNpemVfdCBzaXplKTs8YnI+CiZndDsgICAjaW5jbHVkZSAi dHVwbGVfdXBkYXRlLmgiPGJyPgomZ3Q7ICAgI2luY2x1ZGUgImVycmluai5oIjxicj4KJmd0OyAg IDxicj4KJmd0OyAtLyoqPGJyPgomZ3Q7IC0gKiBcY29weWRvYyB0dXBsZV9yZWYoKTxicj4KJmd0 OyAtICogXHRocm93cyBpZiBvdmVyZmxvdyBkZXRlY3RlZC48YnI+CiZndDsgLSAqLzxicj4KJmd0 OyAtc3RhdGljIGlubGluZSB2b2lkPGJyPgomZ3Q7IC10dXBsZV9yZWZfeGMoc3RydWN0IHR1cGxl ICp0dXBsZSk8YnI+CiZndDsgLXs8YnI+CiZndDsgLQlpZiAodHVwbGVfcmVmKHR1cGxlKSk8YnI+ CiZndDsgLQkJZGlhZ19yYWlzZSgpOzxicj4KJmd0OyAtfTxicj4KJmd0OyAtPGJyPgomZ3Q7IC0v Kio8YnI+CiZndDsgLSAqIFxjb3B5ZG9jIHR1cGxlX2JsZXNzPGJyPgomZ3Q7IC0gKiBcdGhyb3cg RVJfVFVQTEVfUkVGX09WRVJGTE9XPGJyPgomZ3Q7IC0gKi88YnI+CiZndDsgLXN0YXRpYyBpbmxp bmUgYm94X3R1cGxlX3QgKjxicj4KJmd0OyAtdHVwbGVfYmxlc3NfeGMoc3RydWN0IHR1cGxlICp0 dXBsZSk8YnI+CiZndDsgLXs8YnI+CiZndDsgLQlib3hfdHVwbGVfdCAqYmxlc3NlZCA9IHR1cGxl X2JsZXNzKHR1cGxlKTs8YnI+CiZndDsgLQlpZiAoYmxlc3NlZCA9PSBOVUxMKTxicj4KJmd0OyAt CQlkaWFnX3JhaXNlKCk7PGJyPgomZ3Q7IC0JcmV0dXJuIGJsZXNzZWQ7PGJyPgomZ3Q7IC19PGJy PgomZ3Q7IC08YnI+CiZndDsgLS8qKiBNYWtlIHR1cGxlIHJlZmVyZW5jZXMgZXhjZXB0aW9uLWZy aWVuZGx5IGluIGFic2VuY2Ugb2YgQGZpbmFsbHkuICovPGJyPgomZ3Q7IC1zdHJ1Y3QgVHVwbGVS ZWZOaWwgezxicj4KJmd0OyAtCXN0cnVjdCB0dXBsZSAqdHVwbGU7PGJyPgomZ3Q7IC0JVHVwbGVS ZWZOaWwgKHN0cnVjdCB0dXBsZSAqYXJnKSA6dHVwbGUoYXJnKTxicj4KJmd0OyAtCXsgaWYgKHR1 cGxlKSB0dXBsZV9yZWZfeGModHVwbGUpOyB9PGJyPgomZ3Q7IC0JflR1cGxlUmVmTmlsKCkgeyBp ZiAodHVwbGUpIHR1cGxlX3VucmVmKHR1cGxlKTsgfTxicj4KJmd0OyAtPGJyPgomZ3Q7IC0JVHVw bGVSZWZOaWwoY29uc3QgVHVwbGVSZWZOaWwmYW1wOykgPSBkZWxldGU7PGJyPgomZ3Q7IC0Jdm9p ZCBvcGVyYXRvcj0oY29uc3QgVHVwbGVSZWZOaWwmYW1wOykgPSBkZWxldGU7PGJyPgomZ3Q7IC19 Ozxicj4KJmd0OyAtPGJyPgomZ3Q7ICAgLyogQGNvcHlkb2MgdHVwbGVfZmllbGRfd2l0aF90eXBl KCkgKi88YnI+CiZndDsgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKjxicj4KJmd0OyAgIHR1 cGxlX2ZpZWxkX3dpdGhfdHlwZV94Yyhjb25zdCBzdHJ1Y3QgdHVwbGUgKnR1cGxlLCB1aW50MzJf dCBmaWVsZG5vLDxicj4KJmd0OyBkaWZmIC0tZ2l0IGEvc3JjL2JveC92aW55bC5jIGIvc3JjL2Jv eC92aW55bC5jPGJyPgomZ3Q7IGluZGV4IGYwZDI2ODcuLmRjMGQwMjAgMTAwNjQ0PGJyPgomZ3Q7 IC0tLSBhL3NyYy9ib3gvdmlueWwuYzxicj4KJmd0OyArKysgYi9zcmMvYm94L3ZpbnlsLmM8YnI+ CiZndDsgQEAgLTM4MjIsNyArMzgyMiw2IEBAIHZpbnlsX2l0ZXJhdG9yX3ByaW1hcnlfbmV4dChz dHJ1Y3QgaXRlcmF0b3IgKmJhc2UsIHN0cnVjdCB0dXBsZSAqKnJldCk8YnI+CiZndDsgICAJYXNz ZXJ0KGJhc2UtJmd0O25leHQgPSB2aW55bF9pdGVyYXRvcl9wcmltYXJ5X25leHQpOzxicj4KJmd0 OyAgIAlzdHJ1Y3QgdmlueWxfaXRlcmF0b3IgKml0ID0gKHN0cnVjdCB2aW55bF9pdGVyYXRvciAq KWJhc2U7PGJyPgomZ3Q7ICAgCWFzc2VydChpdC0mZ3Q7bHNtLSZndDtpbmRleF9pZCA9PSAwKTs8 YnI+CiZndDsgLQlzdHJ1Y3QgdHVwbGUgKnR1cGxlOzxicj4KJmd0OyAgIDxicj4KJmd0OyAgIAlp ZiAoaXQtJmd0O3R4ID09IE5VTEwpIHs8YnI+CiZndDsgICAJCWRpYWdfc2V0KENsaWVudEVycm9y LCBFUl9DVVJTT1JfTk9fVFJBTlNBQ1RJT04pOzxicj4KJmd0OyBAQCAtMzgzMywxOCArMzgzMiwx NSBAQCB2aW55bF9pdGVyYXRvcl9wcmltYXJ5X25leHQoc3RydWN0IGl0ZXJhdG9yICpiYXNlLCBz dHJ1Y3QgdHVwbGUgKipyZXQpPGJyPgomZ3Q7ICAgCQlnb3RvIGZhaWw7PGJyPgomZ3Q7ICAgCX08 YnI+CiZndDsgICA8YnI+CiZndDsgLQlpZiAodnlfcmVhZF9pdGVyYXRvcl9uZXh0KCZhbXA7aXQt Jmd0O2l0ZXJhdG9yLCAmYW1wO3R1cGxlKSAhPSAwKTxicj4KJmd0OyArCWlmICh2eV9yZWFkX2l0 ZXJhdG9yX25leHQoJmFtcDtpdC0mZ3Q7aXRlcmF0b3IsIHJldCkgIT0gMCk8YnI+CiZndDsgICAJ CWdvdG8gZmFpbDs8YnI+CiZndDsgLTxicj4KJmd0OyAtCWlmICh0dXBsZSA9PSBOVUxMKSB7PGJy PgomZ3Q7ICsJaWYgKCpyZXQgPT0gTlVMTCkgezxicj4KJmd0OyAgIAkJLyogRU9GLiBDbG9zZSB0 aGUgaXRlcmF0b3IgaW1tZWRpYXRlbHkuICovPGJyPgomZ3Q7ICAgCQl2aW55bF9pdGVyYXRvcl9j bG9zZShpdCk7PGJyPgomZ3Q7IC0JCSpyZXQgPSBOVUxMOzxicj4KJmd0OyAtCQlyZXR1cm4gMDs8 YnI+CiZndDsgKwl9IGVsc2Ugezxicj4KJmd0OyArCQl0dXBsZV9ibGVzcygqcmV0KTs8YnI+CiZn dDsgICAJfTxicj4KJmd0OyAtCSpyZXQgPSB0dXBsZV9ibGVzcyh0dXBsZSk7PGJyPgomZ3Q7IC0J aWYgKCpyZXQgIT0gTlVMTCk8YnI+CiZndDsgLQkJcmV0dXJuIDA7PGJyPgomZ3Q7ICsJcmV0dXJu IDA7PGJyPgomZ3Q7ICAgZmFpbDo8YnI+CiZndDsgICAJdmlueWxfaXRlcmF0b3JfY2xvc2UoaXQp Ozxicj4KJmd0OyAgIAlyZXR1cm4gLTE7PGJyPgomZ3Q7IEBAIC0zODkwLDExICszODg2LDEwIEBA IG5leHQ6PGJyPgomZ3Q7ICAgCSAqIE5vdGUsIHRoZXJlJ3Mgbm8gbmVlZCBpbiB2eV90eF90cmFj aygpIGFzIHRoZTxicj4KJmd0OyAgIAkgKiB0dXBsZSBpcyBhbHJlYWR5IHRyYWNrZWQgaW4gdGhl IHNlY29uZGFyeSBpbmRleC48YnI+CiZndDsgICAJICovPGJyPgomZ3Q7IC0Jc3RydWN0IHR1cGxl ICpmdWxsX3R1cGxlOzxicj4KJmd0OyAgIAlpZiAodnlfcG9pbnRfbG9va3VwKGl0LSZndDtsc20t Jmd0O3BrLCBpdC0mZ3Q7dHgsIHZ5X3R4X3JlYWRfdmlldyhpdC0mZ3Q7dHgpLDxicj4KJmd0OyAt CQkJICAgIHR1cGxlLCAmYW1wO2Z1bGxfdHVwbGUpICE9IDApPGJyPgomZ3Q7ICsJCQkgICAgdHVw bGUsIHJldCkgIT0gMCk8YnI+CiZndDsgICAJCWdvdG8gZmFpbDs8YnI+CiZndDsgLQlpZiAoZnVs bF90dXBsZSA9PSBOVUxMKSB7PGJyPgomZ3Q7ICsJaWYgKCpyZXQgPT0gTlVMTCkgezxicj4KJmd0 OyAgIAkJLyo8YnI+CiZndDsgICAJCSAqIEFsbCBpbmRleGVzIG9mIGEgc3BhY2UgbXVzdCBiZSBj b25zaXN0ZW50LCBpLmUuPGJyPgomZ3Q7ICAgCQkgKiBpZiBhIHR1cGxlIGlzIHByZXNlbnQgaW4g b25lIGluZGV4LCBpdCBtdXN0IGJlPGJyPgomZ3Q7IEBAIC0zOTA4LDEwICszOTAzLDkgQEAgbmV4 dDo8YnI+CiZndDsgICAJCQkgdnlfbHNtX25hbWUoaXQtJmd0O2xzbSksIHZ5X3N0bXRfc3RyKHR1 cGxlKSk7PGJyPgomZ3Q7ICAgCQlnb3RvIG5leHQ7PGJyPgomZ3Q7ICAgCX08YnI+CiZndDsgLQkq cmV0ID0gdHVwbGVfYmxlc3MoZnVsbF90dXBsZSk7PGJyPgomZ3Q7IC0JdHVwbGVfdW5yZWYoZnVs bF90dXBsZSk7PGJyPgomZ3Q7IC0JaWYgKCpyZXQgIT0gTlVMTCk8YnI+CiZndDsgLQkJcmV0dXJu IDA7PGJyPgomZ3Q7ICsJdHVwbGVfYmxlc3MoKnJldCk7PGJyPgomZ3Q7ICsJdHVwbGVfdW5yZWYo KnJldCk7PGJyPgomZ3Q7ICsJcmV0dXJuIDA7PGJyPgomZ3Q7ICAgZmFpbDo8YnI+CiZndDsgICAJ dmlueWxfaXRlcmF0b3JfY2xvc2UoaXQpOzxicj4KJmd0OyAgIAlyZXR1cm4gLTE7PGJyPgomZ3Q7 IEBAIC0zOTk3LDE2ICszOTkxLDEyIEBAIHZpbnlsX2luZGV4X2dldChzdHJ1Y3QgaW5kZXggKmlu ZGV4LCBjb25zdCBjaGFyICprZXksPGJyPgomZ3Q7ICAgCWNvbnN0IHN0cnVjdCB2eV9yZWFkX3Zp ZXcgKipydiA9ICh0eCAhPSBOVUxMID8gdnlfdHhfcmVhZF92aWV3KHR4KSA6PGJyPgomZ3Q7ICAg CQkJCQkgICZhbXA7ZW52LSZndDt4bS0mZ3Q7cF9nbG9iYWxfcmVhZF92aWV3KTs8YnI+CiZndDsg ICA8YnI+CiZndDsgLQlzdHJ1Y3QgdHVwbGUgKnR1cGxlOzxicj4KJmd0OyAtCWlmICh2eV9sc21f ZnVsbF9ieV9rZXkobHNtLCB0eCwgcnYsIGtleSwgcGFydF9jb3VudCwgJmFtcDt0dXBsZSkgIT0g MCk8YnI+CiZndDsgKwlpZiAodnlfbHNtX2Z1bGxfYnlfa2V5KGxzbSwgdHgsIHJ2LCBrZXksIHBh cnRfY291bnQsIHJldCkgIT0gMCk8YnI+CiZndDsgICAJCXJldHVybiAtMTs8YnI+CiZndDsgLTxi cj4KJmd0OyAtCWlmICh0dXBsZSAhPSBOVUxMKSB7PGJyPgomZ3Q7IC0JCSpyZXQgPSB0dXBsZV9i bGVzcyh0dXBsZSk7PGJyPgomZ3Q7IC0JCXR1cGxlX3VucmVmKHR1cGxlKTs8YnI+CiZndDsgLQkJ cmV0dXJuICpyZXQgPT0gTlVMTCA/IC0xIDogMDs8YnI+CiZndDsgKwlpZiAoKnJldCAhPSBOVUxM KSB7PGJyPgomZ3Q7ICsJCXR1cGxlX2JsZXNzKCpyZXQpOzxicj4KJmd0OyArCQl0dXBsZV91bnJl ZigqcmV0KTs8YnI+CiZndDsgICAJfTxicj4KJmd0OyAtCSpyZXQgPSBOVUxMOzxicj4KJmd0OyAg IAlyZXR1cm4gMDs8YnI+CiZndDsgICB9PGJyPgomZ3Q7ICAgPGJyPgomZ3Q7IGRpZmYgLS1naXQg YS90ZXN0L2JveC9taXNjLnJlc3VsdCBiL3Rlc3QvYm94L21pc2MucmVzdWx0PGJyPgomZ3Q7IGlu ZGV4IDhmOTRmNTUuLmY3NzAzYmEgMTAwNjQ0PGJyPgomZ3Q7IC0tLSBhL3Rlc3QvYm94L21pc2Mu cmVzdWx0PGJyPgomZ3Q7ICsrKyBiL3Rlc3QvYm94L21pc2MucmVzdWx0PGJyPgomZ3Q7IEBAIC0z MzIsNyArMzMyLDYgQEAgdDs8YnI+CiZndDsgICAgIC0gJ2JveC5lcnJvci5VTktOT1dOX1VQREFU RV9PUCA6IDI4Jzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLldST05HX0NPTExBVElPTl9PUFRJ T05TIDogMTUxJzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLkNVUlNPUl9OT19UUkFOU0FDVElP TiA6IDgwJzxicj4KJmd0OyAtICAtICdib3guZXJyb3IuVFVQTEVfUkVGX09WRVJGTE9XIDogODYn PGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuQUxURVJfU0VRVUVOQ0UgOiAxNDMnPGJyPgomZ3Q7 ICAgICAtICdib3guZXJyb3IuSU5WQUxJRF9YTE9HX05BTUUgOiA3NSc8YnI+CiZndDsgICAgIC0g J2JveC5lcnJvci5TQVZFUE9JTlRfRU1QVFlfVFggOiA2MCc8YnI+CiZndDsgQEAgLTM2MCw3ICsz NTksNyBAQCB0Ozxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLlZJTllMX01BWF9UVVBMRV9TSVpF IDogMTM5Jzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLkxPQURfRlVOQ1RJT04gOiA5OSc8YnI+ CiZndDsgICAgIC0gJ2JveC5lcnJvci5JTlZBTElEX1hMT0cgOiA3NCc8YnI+CiZndDsgLSAgLSAn Ym94LmVycm9yLlBSSVZfTk9UX0dSQU5URUQgOiA5MSc8YnI+CiZndDsgKyAgLSAnYm94LmVycm9y LlJFQURfVklFV19BQk9SVEVEIDogMTMwJzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLlRSQU5T QUNUSU9OX0NPTkZMSUNUIDogOTcnPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuR1VFU1RfVVNF Ul9QQVNTV09SRCA6IDk2Jzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLlBST0NfQyA6IDEwMic8 YnI+CiZndDsgQEAgLTQwNSw3ICs0MDQsNyBAQCB0Ozxicj4KJmd0OyAgICAgLSAnYm94LmVycm9y LmluamVjdGlvbiA6IHRhYmxlOiAmbHQ7YWRkcmVzcyZndDs8YnI+CiZndDsgICAgIC0gJ2JveC5l cnJvci5OVUxMQUJMRV9NSVNNQVRDSCA6IDE1Myc8YnI+CiZndDsgICAgIC0gJ2JveC5lcnJvci5M QVNUX0RST1AgOiAxNSc8YnI+CiZndDsgLSAgLSAnYm94LmVycm9yLk5PX1NVQ0hfUk9MRSA6IDgy Jzxicj4KJmd0OyArICAtICdib3guZXJyb3IuVFVQTEVfRk9STUFUX0xJTUlUIDogMTYnPGJyPgom Z3Q7ICAgICAtICdib3guZXJyb3IuREVDT01QUkVTU0lPTiA6IDEyNCc8YnI+CiZndDsgICAgIC0g J2JveC5lcnJvci5DUkVBVEVfU0VRVUVOQ0UgOiAxNDInPGJyPgomZ3Q7ICAgICAtICdib3guZXJy b3IuQ1JFQVRFX1VTRVIgOiA0Myc8YnI+CiZndDsgQEAgLTQxNCw2NiArNDEzLDY2IEBAIHQ7PGJy PgomZ3Q7ICAgICAtICdib3guZXJyb3IuU0VRVUVOQ0VfT1ZFUkZMT1cgOiAxNDcnPGJyPgomZ3Q7 ICAgICAtICdib3guZXJyb3IuU1lTVEVNIDogMTE1Jzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9y LktFWV9QQVJUX0lTX1RPT19MT05HIDogMTE4Jzxicj4KJmd0OyAtICAtICdib3guZXJyb3IuVFVQ TEVfRk9STUFUX0xJTUlUIDogMTYnPGJyPgomZ3Q7IC0gIC0gJ2JveC5lcnJvci5CRUZPUkVfUkVQ TEFDRV9SRVQgOiA1Myc8YnI+CiZndDsgKyAgLSAnYm94LmVycm9yLklOSkVDVElPTiA6IDgnPGJy PgomZ3Q7ICsgIC0gJ2JveC5lcnJvci5JTlZBTElEX01TR1BBQ0sgOiAyMCc8YnI+CiZndDsgICAg IC0gJ2JveC5lcnJvci5OT19TVUNIX1NBVkVQT0lOVCA6IDYxJzxicj4KJmd0OyAgICAgLSAnYm94 LmVycm9yLlRSVU5DQVRFX1NZU1RFTV9TUEFDRSA6IDEzNyc8YnI+CiZndDsgICAgIC0gJ2JveC5l cnJvci5WWV9RVU9UQV9USU1FT1VUIDogMTM1Jzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLldS T05HX0lOREVYX09QVElPTlMgOiAxMDgnPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuSU5WQUxJ RF9WWUxPR19GSUxFIDogMTMzJzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLklOREVYX0ZJRUxE X0NPVU5UX0xJTUlUIDogMTI3Jzxicj4KJmd0OyAtICAtICdib3guZXJyb3IuUkVBRF9WSUVXX0FC T1JURUQgOiAxMzAnPGJyPgomZ3Q7ICsgIC0gJ2JveC5lcnJvci5QUklWX05PVF9HUkFOVEVEIDog OTEnPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuVVNFUl9NQVggOiA1Nic8YnI+CiZndDsgLSAg LSAnYm94LmVycm9yLlBST1RPQ09MIDogMTA0Jzxicj4KJmd0OyArICAtICdib3guZXJyb3IuQkVG T1JFX1JFUExBQ0VfUkVUIDogNTMnPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuVFVQTEVfTk9U X0FSUkFZIDogMjInPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuS0VZX1BBUlRfQ09VTlQgOiAz MSc8YnI+CiZndDsgICAgIC0gJ2JveC5lcnJvci5BTFRFUl9TUEFDRSA6IDEyJzxicj4KJmd0OyAg ICAgLSAnYm94LmVycm9yLkFDVElWRV9UUkFOU0FDVElPTiA6IDc5Jzxicj4KJmd0OyAgICAgLSAn Ym94LmVycm9yLkVYQUNUX0ZJRUxEX0NPVU5UIDogMzgnPGJyPgomZ3Q7ICAgICAtICdib3guZXJy b3IuRFJPUF9TRVFVRU5DRSA6IDE0NCc8YnI+CiZndDsgLSAgLSAnYm94LmVycm9yLklOVkFMSURf TVNHUEFDSyA6IDIwJzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLk1PUkVfVEhBTl9PTkVfVFVQ TEUgOiA0MSc8YnI+CiZndDsgLSAgLSAnYm94LmVycm9yLlJUUkVFX1JFQ1QgOiAxMDEnPGJyPgom Z3Q7IC0gIC0gJ2JveC5lcnJvci5TVUJfU1RNVF9NQVggOiAxMjEnPGJyPgomZ3Q7ICsgIC0gJ2Jv eC5lcnJvci5VUFNFUlRfVU5JUVVFX1NFQ09OREFSWV9LRVkgOiAxMDUnPGJyPgomZ3Q7ICAgICAt ICdib3guZXJyb3IuVU5LTk9XTl9SRVFVRVNUX1RZUEUgOiA0OCc8YnI+CiZndDsgLSAgLSAnYm94 LmVycm9yLlNQQUNFX0VYSVNUUyA6IDEwJzxicj4KJmd0OyArICAtICdib3guZXJyb3IuU1VCX1NU TVRfTUFYIDogMTIxJzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLlBST0NfTFVBIDogMzInPGJy PgomZ3Q7ICsgIC0gJ2JveC5lcnJvci5TUEFDRV9FWElTVFMgOiAxMCc8YnI+CiZndDsgICAgIC0g J2JveC5lcnJvci5ST0xFX05PVF9HUkFOVEVEIDogOTInPGJyPgomZ3Q7ICsgIC0gJ2JveC5lcnJv ci5VTlNVUFBPUlRFRCA6IDUnPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuTk9fU1VDSF9TUEFD RSA6IDM2Jzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLldST05HX0lOREVYX1BBUlRTIDogMTA3 Jzxicj4KJmd0OyAtICAtICdib3guZXJyb3IuRFJPUF9TUEFDRSA6IDExJzxicj4KJmd0OyAgICAg LSAnYm94LmVycm9yLk1JTl9GSUVMRF9DT1VOVCA6IDM5Jzxicj4KJmd0OyAgICAgLSAnYm94LmVy cm9yLlJFUExJQ0FTRVRfVVVJRF9NSVNNQVRDSCA6IDYzJzxicj4KJmd0OyAgICAgLSAnYm94LmVy cm9yLlVQREFURV9GSUVMRCA6IDI5Jzxicj4KJmd0OyArICAtICdib3guZXJyb3IuSU5ERVhfRVhJ U1RTIDogODUnPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuQ09NUFJFU1NJT04gOiAxMTknPGJy PgomZ3Q7ICAgICAtICdib3guZXJyb3IuSU5WQUxJRF9PUkRFUiA6IDY4Jzxicj4KJmd0OyAtICAt ICdib3guZXJyb3IuSU5ERVhfRVhJU1RTIDogODUnPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3Iu U1BMSUNFIDogMjUnPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuVU5LTk9XTiA6IDAnPGJyPgom Z3Q7ICsgIC0gJ2JveC5lcnJvci5JREVOVElGSUVSIDogNzAnPGJyPgomZ3Q7ICAgICAtICdib3gu ZXJyb3IuRFJPUF9QUklNQVJZX0tFWSA6IDE3Jzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLk5V TExBQkxFX1BSSU1BUlkgOiAxNTInPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuTk9fU1VDSF9T RVFVRU5DRSA6IDE0NSc8YnI+CiZndDsgICAgIC0gJ2JveC5lcnJvci5SRUxPQURfQ0ZHIDogNTgn PGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuSU5WQUxJRF9VVUlEIDogNjQnPGJyPgomZ3Q7IC0g IC0gJ2JveC5lcnJvci5JTkpFQ1RJT04gOiA4Jzxicj4KJmd0OyArICAtICdib3guZXJyb3IuRFJP UF9TUEFDRSA6IDExJzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLlRJTUVPVVQgOiA3OCc8YnI+ CiZndDsgLSAgLSAnYm94LmVycm9yLklERU5USUZJRVIgOiA3MCc8YnI+CiZndDsgICAgIC0gJ2Jv eC5lcnJvci5JVEVSQVRPUl9UWVBFIDogNzInPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuUkVQ TElDQV9NQVggOiA3Myc8YnI+CiZndDsgKyAgLSAnYm94LmVycm9yLk5PX1NVQ0hfUk9MRSA6IDgy Jzxicj4KJmd0OyAgICAgLSAnYm94LmVycm9yLk1JU1NJTkdfUkVRVUVTVF9GSUVMRCA6IDY5Jzxi cj4KJmd0OyAgICAgLSAnYm94LmVycm9yLk1JU1NJTkdfU05BUFNIT1QgOiA5Myc8YnI+CiZndDsg ICAgIC0gJ2JveC5lcnJvci5XUk9OR19TUEFDRV9PUFRJT05TIDogMTExJzxicj4KJmd0OyAgICAg LSAnYm94LmVycm9yLlJFQURPTkxZIDogNyc8YnI+CiZndDsgLSAgLSAnYm94LmVycm9yLlVOU1VQ UE9SVEVEIDogNSc8YnI+CiZndDsgICAgIC0gJ2JveC5lcnJvci5VUERBVEVfSU5URUdFUl9PVkVS RkxPVyA6IDk1Jzxicj4KJmd0OyArICAtICdib3guZXJyb3IuUlRSRUVfUkVDVCA6IDEwMSc8YnI+ CiZndDsgICAgIC0gJ2JveC5lcnJvci5OT19DT05ORUNUSU9OIDogNzcnPGJyPgomZ3Q7ICAgICAt ICdib3guZXJyb3IuSU5WQUxJRF9YTE9HX09SREVSIDogNzYnPGJyPgomZ3Q7IC0gIC0gJ2JveC5l cnJvci5VUFNFUlRfVU5JUVVFX1NFQ09OREFSWV9LRVkgOiAxMDUnPGJyPgomZ3Q7IC0gIC0gJ2Jv eC5lcnJvci5ST0xMQkFDS19JTl9TVUJfU1RNVCA6IDEyMyc8YnI+CiZndDsgICAgIC0gJ2JveC5l cnJvci5XUk9OR19TQ0hFTUFfVkVSU0lPTiA6IDEwOSc8YnI+CiZndDsgLSAgLSAnYm94LmVycm9y LlVOU1VQUE9SVEVEX0lOREVYX0ZFQVRVUkUgOiAxMTInPGJyPgomZ3Q7IC0gIC0gJ2JveC5lcnJv ci5JTkRFWF9QQVJUX1RZUEVfTUlTTUFUQ0ggOiAyNCc8YnI+CiZndDsgKyAgLSAnYm94LmVycm9y LlJPTExCQUNLX0lOX1NVQl9TVE1UIDogMTIzJzxicj4KJmd0OyArICAtICdib3guZXJyb3IuUFJP VE9DT0wgOiAxMDQnPGJyPgomZ3Q7ICAgICAtICdib3guZXJyb3IuSU5WQUxJRF9YTE9HX1RZUEUg OiAxMjUnPGJyPgomZ3Q7ICsgIC0gJ2JveC5lcnJvci5JTkRFWF9QQVJUX1RZUEVfTUlTTUFUQ0gg OiAyNCc8YnI+CiZndDsgKyAgLSAnYm94LmVycm9yLlVOU1VQUE9SVEVEX0lOREVYX0ZFQVRVUkUg OiAxMTInPGJyPgomZ3Q7ICAgLi4uPGJyPgomZ3Q7ICAgdGVzdF9ydW46Y21kKCJzZXRvcHQgZGVs aW1pdGVyICcnIik7PGJyPgomZ3Q7ICAgLS0tPGJyPgomZ3Q7IGRpZmYgLS1naXQgYS90ZXN0L2Jv eC9zZWxlY3QucmVzdWx0IGIvdGVzdC9ib3gvc2VsZWN0LnJlc3VsdDxicj4KJmd0OyBpbmRleCA0 YWVkNzA2Li5iM2VlNmNkIDEwMDY0NDxicj4KJmd0OyAtLS0gYS90ZXN0L2JveC9zZWxlY3QucmVz dWx0PGJyPgomZ3Q7ICsrKyBiL3Rlc3QvYm94L3NlbGVjdC5yZXN1bHQ8YnI+CiZndDsgQEAgLTYx OSwzMSArNjE5LDYyIEBAIGNvbGxlY3RnYXJiYWdlKCdjb2xsZWN0Jyk8YnI+CiZndDsgICAtLS08 YnI+CiZndDsgICAtIDA8YnI+CiZndDsgICAuLi48YnI+CiZndDsgKy0tIGdoLTMyMjQgcmVzdXJy ZWN0IHR1cGxlIGJpZ3JlZnM8YnI+CiZndDsgK2NvbGxlY3RnYXJiYWdlKCdzdG9wJyk8YnI+CiZn dDsgKy0tLTxicj4KJmd0OyArLSAwPGJyPgomZ3Q7ICsuLi48YnI+CiZndDsgICBzID0gYm94LnNj aGVtYS5zcGFjZS5jcmVhdGUoJ3NlbGVjdCcsIHsgdGVtcG9yYXJ5ID0gdHJ1ZSB9KTxicj4KJmd0 OyAgIC0tLTxicj4KJmd0OyAgIC4uLjxicj4KJmd0OyAgIGluZGV4ID0gczpjcmVhdGVfaW5kZXgo J3ByaW1hcnknLCB7IHR5cGUgPSAndHJlZScgfSk8YnI+CiZndDsgICAtLS08YnI+CiZndDsgICAu Li48YnI+CiZndDsgLWEgPSBzOmluc2VydHswfTxicj4KJmd0OyArXyA9IHM6aW5zZXJ0ezB9PGJy PgomZ3Q7ICstLS08YnI+CiZndDsgKy4uLjxicj4KJmd0OyArXyA9IHM6aW5zZXJ0ezF9PGJyPgom Z3Q7ICstLS08YnI+CiZndDsgKy4uLjxicj4KJmd0OyArXyA9IHM6aW5zZXJ0ezJ9PGJyPgomZ3Q7 ICstLS08YnI+CiZndDsgKy4uLjxicj4KJmd0OyArXyA9IHM6aW5zZXJ0ezN9PGJyPgomZ3Q7ICst LS08YnI+CiZndDsgKy4uLjxicj4KJmd0OyArbG90c19vZl9saW5rcyA9IHNldG1ldGF0YWJsZSh7 fSwge19fbW9kZSA9ICd2J30pPGJyPgomZ3Q7ICAgLS0tPGJyPgomZ3Q7ICAgLi4uPGJyPgomZ3Q7 IC1sb3RzX29mX2xpbmtzID0ge308YnI+CiZndDsgK2kgPSAwPGJyPgomZ3Q7ICstLS08YnI+CiZn dDsgKy4uLjxicj4KJmd0OyArd2hpbGUgKGkgJmx0OyAzMzAwMCkgZG8gdGFibGUuaW5zZXJ0KGxv dHNfb2ZfbGlua3MsIHM6Z2V0ezB9KSBpID0gaSArIDEgZW5kPGJyPgomZ3Q7ICstLS08YnI+CiZn dDsgKy4uLjxicj4KJmd0OyArd2hpbGUgKGkgJmx0OyA2NjAwMCkgZG8gdGFibGUuaW5zZXJ0KGxv dHNfb2ZfbGlua3MsIHM6Z2V0ezF9KSBpID0gaSArIDEgZW5kPGJyPgomZ3Q7ICstLS08YnI+CiZn dDsgKy4uLjxicj4KJmd0OyArd2hpbGUgKGkgJmx0OyAxMDAwMDApIGRvIHRhYmxlLmluc2VydChs b3RzX29mX2xpbmtzLCBzOmdldHsyfSkgaSA9IGkgKyAxIGVuZDxicj4KJmd0OyAgIC0tLTxicj4K Jmd0OyAgIC4uLjxicj4KJmd0OyAgIHJlZl9jb3VudCA9IDA8YnI+CiZndDsgICAtLS08YnI+CiZn dDsgICAuLi48YnI+CiZndDsgLXdoaWxlICh0cnVlKSBkbyB0YWJsZS5pbnNlcnQobG90c19vZl9s aW5rcywgczpnZXR7MH0pIHJlZl9jb3VudCA9IHJlZl9jb3VudCArIDEgZW5kPGJyPgomZ3Q7ICtm b3IgaywgdiBpbiBwYWlycyhsb3RzX29mX2xpbmtzKSBkbyByZWZfY291bnQgPSByZWZfY291bnQg KyAxIGVuZDxicj4KJmd0OyAgIC0tLTxicj4KJmd0OyAtLSBlcnJvcjogVHVwbGUgcmVmZXJlbmNl IGNvdW50ZXIgb3ZlcmZsb3c8YnI+CiZndDsgICAuLi48YnI+CiZndDsgICByZWZfY291bnQ8YnI+ CiZndDsgICAtLS08YnI+CiZndDsgLS0gNjU1MzE8YnI+CiZndDsgKy0gMTAwMDAwPGJyPgomZ3Q7 ICAgLi4uPGJyPgomZ3Q7IC1sb3RzX29mX2xpbmtzID0ge308YnI+CiZndDsgKy0tIGNoZWNrIHRo YXQgdHVwbGVzIGFyZSBkZWxldGVkIGFmdGVyIGdjIGlzIGFjdGl2YXRlZDxicj4KJmd0OyArY29s bGVjdGdhcmJhZ2UoJ2NvbGxlY3QnKTxicj4KJmd0OyAgIC0tLTxicj4KJmd0OyArLSAwPGJyPgom Z3Q7ICsuLi48YnI+CiZndDsgK2xvdHNfb2ZfbGlua3M8YnI+CiZndDsgKy0tLTxicj4KJmd0OyAr LSBbXTxicj4KJmd0OyAgIC4uLjxicj4KJmd0OyAgIHM6ZHJvcCgpPGJyPgomZ3Q7ICAgLS0tPGJy PgomZ3Q7IGRpZmYgLS1naXQgYS90ZXN0L2JveC9zZWxlY3QudGVzdC5sdWEgYi90ZXN0L2JveC9z ZWxlY3QudGVzdC5sdWE8YnI+CiZndDsgaW5kZXggNTRjMmVjYy4uMzQwMGJkYSAxMDA2NDQ8YnI+ CiZndDsgLS0tIGEvdGVzdC9ib3gvc2VsZWN0LnRlc3QubHVhPGJyPgomZ3Q7ICsrKyBiL3Rlc3Qv Ym94L3NlbGVjdC50ZXN0Lmx1YTxicj4KJmd0OyBAQCAtMTI0LDEyICsxMjQsMjUgQEAgdGVzdC5y YW5kb20ocy5pbmRleFswXSwgNDgpPGJyPgomZ3Q7ICAgczpkcm9wKCk8YnI+CiZndDsgICA8YnI+ CiZndDsgICBjb2xsZWN0Z2FyYmFnZSgnY29sbGVjdCcpPGJyPgomZ3Q7ICs8YnI+CiZndDsgKy0t IGdoLTMyMjQgcmVzdXJyZWN0IHR1cGxlIGJpZ3JlZnM8YnI+CiZndDsgKzxicj4KJmd0OyArY29s bGVjdGdhcmJhZ2UoJ3N0b3AnKTxicj4KJmd0OyAgIHMgPSBib3guc2NoZW1hLnNwYWNlLmNyZWF0 ZSgnc2VsZWN0JywgeyB0ZW1wb3JhcnkgPSB0cnVlIH0pPGJyPgomZ3Q7ICAgaW5kZXggPSBzOmNy ZWF0ZV9pbmRleCgncHJpbWFyeScsIHsgdHlwZSA9ICd0cmVlJyB9KTxicj4KJmd0OyAtYSA9IHM6 aW5zZXJ0ezB9PGJyPgomZ3Q7IC1sb3RzX29mX2xpbmtzID0ge308YnI+CiZndDsgK18gPSBzOmlu c2VydHswfTxicj4KJmd0OyArXyA9IHM6aW5zZXJ0ezF9PGJyPgomZ3Q7ICtfID0gczppbnNlcnR7 Mn08YnI+CiZndDsgK18gPSBzOmluc2VydHszfTxicj4KJmd0OyArbG90c19vZl9saW5rcyA9IHNl dG1ldGF0YWJsZSh7fSwge19fbW9kZSA9ICd2J30pPGJyPgomZ3Q7ICtpID0gMDxicj4KJmd0OyAr d2hpbGUgKGkgJmx0OyAzMzAwMCkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlua3MsIHM6Z2V0 ezB9KSBpID0gaSArIDEgZW5kPGJyPgomZ3Q7ICt3aGlsZSAoaSAmbHQ7IDY2MDAwKSBkbyB0YWJs ZS5pbnNlcnQobG90c19vZl9saW5rcywgczpnZXR7MX0pIGkgPSBpICsgMSBlbmQ8YnI+CiZndDsg K3doaWxlIChpICZsdDsgMTAwMDAwKSBkbyB0YWJsZS5pbnNlcnQobG90c19vZl9saW5rcywgczpn ZXR7Mn0pIGkgPSBpICsgMSBlbmQ8YnI+CiZndDsgICByZWZfY291bnQgPSAwPGJyPgomZ3Q7IC13 aGlsZSAodHJ1ZSkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlua3MsIHM6Z2V0ezB9KSByZWZf Y291bnQgPSByZWZfY291bnQgKyAxIGVuZDxicj4KJmd0OyArZm9yIGssIHYgaW4gcGFpcnMobG90 c19vZl9saW5rcykgZG8gcmVmX2NvdW50ID0gcmVmX2NvdW50ICsgMSBlbmQ8YnI+CiZndDsgICBy ZWZfY291bnQ8YnI+CiZndDsgLWxvdHNfb2ZfbGlua3MgPSB7fTxicj4KJmd0OyArLS0gY2hlY2sg dGhhdCB0dXBsZXMgYXJlIGRlbGV0ZWQgYWZ0ZXIgZ2MgaXMgYWN0aXZhdGVkPGJyPgomZ3Q7ICtj b2xsZWN0Z2FyYmFnZSgnY29sbGVjdCcpPGJyPgomZ3Q7ICtsb3RzX29mX2xpbmtzPGJyPgomZ3Q7 ICAgczpkcm9wKCk8YnI+CiZndDsgZGlmZiAtLWdpdCBhL3Rlc3QvdW5pdC9DTWFrZUxpc3RzLnR4 dCBiL3Rlc3QvdW5pdC9DTWFrZUxpc3RzLnR4dDxicj4KJmd0OyBpbmRleCBkYmMwMmNkLi5hZWY1 MzE2IDEwMDY0NDxicj4KJmd0OyAtLS0gYS90ZXN0L3VuaXQvQ01ha2VMaXN0cy50eHQ8YnI+CiZn dDsgKysrIGIvdGVzdC91bml0L0NNYWtlTGlzdHMudHh0PGJyPgomZ3Q7IEBAIC0xOTIsMyArMTky LDYgQEAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHZ5X2NhY2hlLnRlc3QgJHtJVEVSQVRPUl9URVNU X0xJQlN9KTxicj4KJmd0OyAgIDxicj4KJmd0OyAgIGFkZF9leGVjdXRhYmxlKGNvbGwudGVzdCBj b2xsLmNwcCk8YnI+CiZndDsgICB0YXJnZXRfbGlua19saWJyYXJpZXMoY29sbC50ZXN0IGNvcmUg dW5pdCAke0lDVV9MSUJSQVJJRVN9IG1pc2MpPGJyPgomZ3Q7ICs8YnI+CiZndDsgK2FkZF9leGVj dXRhYmxlKHR1cGxlX2JpZ3JlZi50ZXN0IHR1cGxlX2JpZ3JlZi5jKTxicj4KJmd0OyArdGFyZ2V0 X2xpbmtfbGlicmFyaWVzKHR1cGxlX2JpZ3JlZi50ZXN0IHR1cGxlIHVuaXQpPGJyPgomZ3Q7IGRp ZmYgLS1naXQgYS90ZXN0L3VuaXQvdHVwbGVfYmlncmVmLmMgYi90ZXN0L3VuaXQvdHVwbGVfYmln cmVmLmM8YnI+CiZndDsgbmV3IGZpbGUgbW9kZSAxMDA2NDQ8YnI+CiZndDsgaW5kZXggMDAwMDAw MC4uOTcwOTVkYzxicj4KJmd0OyAtLS0gL2Rldi9udWxsPGJyPgomZ3Q7ICsrKyBiL3Rlc3QvdW5p dC90dXBsZV9iaWdyZWYuYzxicj4KJmd0OyBAQCAtMCwwICsxLDExNyBAQDxicj4KJmd0OyArI2lu Y2x1ZGUgInZ5X2l0ZXJhdG9yc19oZWxwZXIuaCI8YnI+CiZndDsgKyNpbmNsdWRlICJtZW1vcnku aCI8YnI+CiZndDsgKyNpbmNsdWRlICJmaWJlci5oIjxicj4KJmd0OyArI2luY2x1ZGUgInVuaXQu aCI8YnI+CiZndDsgKyNpbmNsdWRlICZsdDttc2dwdWNrLmgmZ3Q7PGJyPgomZ3Q7ICsjaW5jbHVk ZSAidHJpdmlhL3V0aWwuaCI8YnI+CiZndDsgKzxicj4KJmd0OyArZW51bSB7PGJyPgomZ3Q7ICsJ QklHUkVGX0RJRkYgPSAxMCw8YnI+CiZndDsgKwlCSUdSRUZfQ09VTlQgPSA3MDAwMyw8YnI+CiZn dDsgKwlCSUdSRUZfQ0FQQUNJVFkgPSAxMDcsPGJyPgomZ3Q7ICt9Ozxicj4KJmd0OyArPGJyPgom Z3Q7ICtzdGF0aWMgY2hhciB0dXBsZV9idWZbNjRdOzxicj4KJmd0OyArc3RhdGljIGNoYXIgKnR1 cGxlX2VuZCA9IHR1cGxlX2J1Zjs8YnI+CiZndDsgKzxicj4KJmd0OyArLyoqPGJyPgomZ3Q7ICsg KiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgbmV3IHR1cGxlIHdpdGggcmVmcyA9PSAxLjxicj4KJmd0 OyArICovPGJyPgomZ3Q7ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB0dXBsZSAqPGJyPgomZ3Q7ICtj cmVhdGVfdHVwbGUoKTxicj4KJmd0OyArezxicj4KJmd0OyArCXN0cnVjdCB0dXBsZSAqcmV0ID08 YnI+CiZndDsgKwkJdHVwbGVfbmV3KGJveF90dXBsZV9mb3JtYXRfZGVmYXVsdCgpLCB0dXBsZV9i dWYsIHR1cGxlX2VuZCk7PGJyPgomZ3Q7ICsJdHVwbGVfcmVmKHJldCk7PGJyPgomZ3Q7ICsJcmV0 dXJuIHJldDs8YnI+CiZndDsgK308YnI+CiZndDsgKzxicj4KJmd0OyArLyoqPGJyPgomZ3Q7ICsg KiBUaGlzIHRlc3QgcGVyZm9ybXMgb3ZlcmFsbCBjaGVjayBvZiBiaWdyZWZzLjxicj4KJmd0OyAr ICogV2hhdCBpdCBjaGVja3M6PGJyPgomZ3Q7ICsgKiAxKSBUaWxsIHJlZnMgJmx0Oz0gVFVQTEVf UkVGX01BWCBpdCBzaG93cyBudW1iZXIgb2YgcmVmczxicj4KJmd0OyArICogb2YgdHVwbGUgYW5k IGl0IGlzbid0IGEgYmlncmVmLjxicj4KJmd0OyArICogMikgV2hlbiByZWZzICZndDsgVFVQTEVf UkVGX01BWCBmaXJzdCAxNSBiaXRzIG9mIGl0IGJlY29tZXM8YnI+CiZndDsgKyAqIGluZGV4IG9m IGJpZ3JlZiBhbmQgdGhlIGxhc3QgYml0IGJlY29tZXMgdHJ1ZSB3aGljaDxicj4KJmd0OyArICog c2hvd3MgdGhhdCBpdCBpcyBiaWdyZWYuPGJyPgomZ3Q7ICsgKiAzKSBFYWNoIG9mIHR1cGxlIGhh cyBpdHMgb3duIG51bWJlciBvZiByZWZzLCBidXQgYWxsPGJyPgomZ3Q7ICsgKiB0aGVzZSBudW1i ZXJzIG1vcmUgdGhhbiBpdCBpcyBuZWVkZWQgZm9yIGdldHRpbmcgYSBiaWdyZWYuPGJyPgomZ3Q7 ICsgKiA0KSBJbmRleGVzIG9mIGJpZ3JlZnMgYXJlIGdpdmVuIHNlcXVlbnRpYWxseS48YnI+CiZn dDsgKyAqIDUpIEFmdGVyIHNvbWUgdHVwbGVzIGFyZSBzZXF1ZW50aWFsbHkgZGVsZXRlZCBhbGwg b2Y8YnI+CiZndDsgKyAqIG90aGVycyBiaWdyZWZzIGFyZSBmaW5lLiBJbiB0aGlzIHRlc3QgQklH UkVGX0NBUEFDSVRZPGJyPgomZ3Q7ICsgKiB0dXBsZXMgY3JlYXRlZCBhbmQgZWFjaCBvZiB0aGVp ciByZWYgY291bnRlciBpbmNyZWFzZWQ8YnI+CiZndDsgKyAqIHRvIChCSUdSRUZfQ09VTlQgLSBp bmRleCBvZiB0dXBsZSkuIFR1cGxlcyBhcmUgY3JlYXRlZDxicj4KJmd0OyArICogY29uc2lzdGVu dGx5Ljxicj4KJmd0OyArICovPGJyPgomZ3Q7ICtzdGF0aWMgaW50PGJyPgomZ3Q7ICt0ZXN0X2Jp Z3JlZnNfMSgpPGJyPgomZ3Q7ICt7PGJyPgomZ3Q7ICsJc3RydWN0IHR1cGxlICoqdHVwbGVzID0g KHN0cnVjdCB0dXBsZSAqKikgbWFsbG9jKEJJR1JFRl9DQVBBQ0lUWSAqPGJyPgomZ3Q7ICsJCQkJ CQkJIHNpemVvZigqdHVwbGVzKSk7PGJyPgomZ3Q7ICsJZm9yKGludCBpID0gMDsgaSAmbHQ7IEJJ R1JFRl9DQVBBQ0lUWTsgKytpKTxicj4KJmd0OyArCQl0dXBsZXNbaV0gPSBjcmVhdGVfdHVwbGUo KTs8YnI+CiZndDsgKwlmb3IoaW50IGkgPSAwOyBpICZsdDsgQklHUkVGX0NBUEFDSVRZOyArK2kp IHs8YnI+CiZndDsgKwkJYXNzZXJ0KHR1cGxlc1tpXS0mZ3Q7cmVmcyA9PSAxKTs8YnI+CiZndDsg KwkJZm9yKGludCBqID0gMTsgaiAmbHQ7IFRVUExFX1JFRl9NQVg7ICsraik8YnI+CiZndDsgKwkJ CXR1cGxlX3JlZih0dXBsZXNbaV0pOzxicj4KJmd0OyArCQlhc3NlcnQoISB0dXBsZXNbaV0tJmd0 O2lzX2JpZ3JlZik7PGJyPgomZ3Q7ICsJCXR1cGxlX3JlZih0dXBsZXNbaV0pOzxicj4KJmd0OyAr CQlhc3NlcnQodHVwbGVzW2ldLSZndDtpc19iaWdyZWYpOzxicj4KJmd0OyArCQlmb3IoaW50IGog PSBUVVBMRV9SRUZfTUFYICsgMTsgaiAmbHQ7IEJJR1JFRl9DT1VOVCAtIGk7ICsraik8YnI+CiZn dDsgKwkJCXR1cGxlX3JlZih0dXBsZXNbaV0pOzxicj4KJmd0OyArCQlhc3NlcnQodHVwbGVzW2ld LSZndDtpc19iaWdyZWYpOzxicj4KJmd0OyArCX08YnI+CiZndDsgKwlmb3IoaW50IGkgPSAwOyBp ICZsdDsgQklHUkVGX0NBUEFDSVRZOyArK2kpIHs8YnI+CiZndDsgKwkJZm9yKGludCBqID0gMTsg aiAmbHQ7IEJJR1JFRl9DT1VOVCAtIGk7ICsraik8YnI+CiZndDsgKwkJCXR1cGxlX3VucmVmKHR1 cGxlc1tpXSk7PGJyPgomZ3Q7ICsJCWFzc2VydCh0dXBsZXNbaV0tJmd0O3JlZnMgPT0gMSk7PGJy PgomZ3Q7ICsJCXR1cGxlX3VucmVmKHR1cGxlc1tpXSk7PGJyPgomZ3Q7ICsJfTxicj4KJmd0OyAr CWZyZWUodHVwbGVzKTs8YnI+CiZndDsgKwlyZXR1cm4gMDs8YnI+CiZndDsgK308YnI+CiZndDsg Kzxicj4KJmd0OyArLyoqPGJyPgomZ3Q7ICsgKiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYmlncmVm cyB3b3JrcyBmaW5lIGFmdGVyIGJlaW5nPGJyPgomZ3Q7ICsgKiBjcmVhdGVkIGFuZCBkZXN0cm95 ZWQgQklHUkVGX0RJRkYgdGltZXMuPGJyPgomZ3Q7ICsgKi88YnI+CiZndDsgK3N0YXRpYyBpbnQ8 YnI+CiZndDsgK3Rlc3RfYmlncmVmc18yKCk8YnI+CiZndDsgK3s8YnI+CiZndDsgKwlzdHJ1Y3Qg dHVwbGUgKnR1cGxlID0gY3JlYXRlX3R1cGxlKCk7PGJyPgomZ3Q7ICsJZm9yKGludCBpID0gMDsg aSAmbHQ7IDI7ICsraSkgezxicj4KJmd0OyArCQlhc3NlcnQodHVwbGUtJmd0O3JlZnMgPT0gMSk7 PGJyPgomZ3Q7ICsJCWZvcihpbnQgaiA9IDE7IGogJmx0OyBCSUdSRUZfQ09VTlQ7ICsraik8YnI+ CiZndDsgKwkJCXR1cGxlX3JlZih0dXBsZSk7PGJyPgomZ3Q7ICsJCWFzc2VydCh0dXBsZS0mZ3Q7 aXNfYmlncmVmKTs8YnI+CiZndDsgKwkJZm9yKGludCBqID0gMTsgaiAmbHQ7IEJJR1JFRl9DT1VO VDsgKytqKTxicj4KJmd0OyArCQkJdHVwbGVfdW5yZWYodHVwbGUpOzxicj4KJmd0OyArCQlhc3Nl cnQodHVwbGUtJmd0O3JlZnMgPT0gMSk7PGJyPgomZ3Q7ICsJfTxicj4KJmd0OyArCXR1cGxlX3Vu cmVmKHR1cGxlKTs8YnI+CiZndDsgKwlyZXR1cm4gMDs8YnI+CiZndDsgK308YnI+CiZndDsgKzxi cj4KJmd0OyAraW50PGJyPgomZ3Q7ICttYWluKCk8YnI+CiZndDsgK3s8YnI+CiZndDsgKwloZWFk ZXIoKTs8YnI+CiZndDsgKwlwbGFuKDIpOzxicj4KJmd0OyArPGJyPgomZ3Q7ICsJbWVtb3J5X2lu aXQoKTs8YnI+CiZndDsgKwlmaWJlcl9pbml0KGZpYmVyX2NfaW52b2tlKTs8YnI+CiZndDsgKwl0 dXBsZV9pbml0KE5VTEwpOzxicj4KJmd0OyArPGJyPgomZ3Q7ICsJdHVwbGVfZW5kID0gbXBfZW5j b2RlX2FycmF5KHR1cGxlX2VuZCwgMSk7PGJyPgomZ3Q7ICsJdHVwbGVfZW5kID0gbXBfZW5jb2Rl X3VpbnQodHVwbGVfZW5kLCAyKTs8YnI+CiZndDsgKzxicj4KJmd0OyArCW9rKHRlc3RfYmlncmVm c18xKCkgPT0gMCwgIk92ZXJhbGwgdGVzdCBwYXNzZWQuIik7PGJyPgomZ3Q7ICsJb2sodGVzdF9i aWdyZWZzXzIoKSA9PSAwLCAiQ3JlYXRlL2Rlc3Ryb3kgdGVzdCBwYXNzZWQuIik7PGJyPgomZ3Q7 ICs8YnI+CiZndDsgKwl0dXBsZV9mcmVlKCk7PGJyPgomZ3Q7ICsJZmliZXJfZnJlZSgpOzxicj4K Jmd0OyArCW1lbW9yeV9mcmVlKCk7PGJyPgomZ3Q7ICs8YnI+CiZndDsgKwlmb290ZXIoKTs8YnI+ CiZndDsgKwljaGVja19wbGFuKCk7PGJyPgomZ3Q7ICt9PGJyPgomZ3Q7IGRpZmYgLS1naXQgYS90 ZXN0L3VuaXQvdHVwbGVfYmlncmVmLnJlc3VsdCBiL3Rlc3QvdW5pdC90dXBsZV9iaWdyZWYucmVz dWx0PGJyPgomZ3Q7IG5ldyBmaWxlIG1vZGUgMTAwNjQ0PGJyPgomZ3Q7IGluZGV4IDAwMDAwMDAu LmFkMjJmNDU8YnI+CiZndDsgLS0tIC9kZXYvbnVsbDxicj4KJmd0OyArKysgYi90ZXN0L3VuaXQv dHVwbGVfYmlncmVmLnJlc3VsdDxicj4KJmd0OyBAQCAtMCwwICsxLDUgQEA8YnI+CiZndDsgKwkq KiogbWFpbiAqKio8YnI+CiZndDsgKzEuLjI8YnI+CiZndDsgK29rIDEgLSBPdmVyYWxsIHRlc3Qg cGFzc2VkLjxicj4KJmd0OyArb2sgMiAtIENyZWF0ZS9kZXN0cm95IHRlc3QgcGFzc2VkLjxicj4K Jmd0OyArCSoqKiBtYWluOiBkb25lICoqKjxicj4KJmd0OyA8YnI+PGJyPjwvZGl2PjwvZGl2Pjwv ZGl2PjwvZGl2PjwvYmxvY2txdW90ZT4KY29tbWl0IDFkNDk3Y2QyNDg4MjAyYTZiNTY2ZTUzOTkx NjBhY2M4NDg0ZmYzOWQ8YnI+QXV0aG9yOiBNZXJnZW4gSW1lZXYgJmx0O2ltZWV2bWFAZ21haWwu Y29tJmd0Ozxicj5EYXRlOiZuYnNwOyZuYnNwOyBNb24gTWF5IDI4IDE5OjE3OjUxIDIwMTggKzAz MDA8YnI+PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyBib3g6IGNyZWF0ZSBiaWdyZWZzIGZvciB0dXBs ZXM8YnI+Jm5ic3A7Jm5ic3A7ICZuYnNwOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsgRHVlIHRvIGxp bWl0YXRpb24gb2YgcmVmZXJlbmNlIGNvdW50ZXJzIGZvciB0dXBsZSBiZWluZyBvbmx5PGJyPiZu YnNwOyZuYnNwOyZuYnNwOyA2NTUzNSBpdCB3YXMgcG9zc2libGUgdG8gcmVhY2ggdGhpcyBsaW1p dGF0aW9uLiBUaGlzIHBhdGNoPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyBpbmNyZWFzZXMgY2FwYWNp dHkgb2YgcmVmZXJlbmNlIGNvdW50ZXJzIHRvIDQgYmlsbGlvbnMuPGJyPiZuYnNwOyZuYnNwOyAm bmJzcDs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IENsb3NlcyAjMzIyNDxicj48YnI+ZGlmZiAtLWdp dCBhL3NyYy9ib3gvYm94LmNjIGIvc3JjL2JveC9ib3guY2M8YnI+aW5kZXggYzcyOGE0YzUzLi40 MjU3ODYxM2QgMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gvYm94LmNjPGJyPisrKyBiL3NyYy9ib3gv Ym94LmNjPGJyPkBAIC0xNzQsMjAgKzE3NCwyMiBAQCBwcm9jZXNzX3J3KHN0cnVjdCByZXF1ZXN0 ICpyZXF1ZXN0LCBzdHJ1Y3Qgc3BhY2UgKnNwYWNlLCBzdHJ1Y3QgdHVwbGUgKipyZXN1bHQpPGJy PiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHhuX3JvbGxiYWNr X3N0bXQoKTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDty ZXR1cm4gLTE7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt9PGJyPismbmJzcDsmbmJzcDsg Jm5ic3A7aWYgKHJlc3VsdCA9PSBOVUxMKTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDtyZXR1cm4gdHhuX2NvbW1pdF9zdG10KHR4biwgcmVxdWVzdCk7PGJyPismbmJz cDsmbmJzcDsgJm5ic3A7KnJlc3VsdCA9IHR1cGxlOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2lm ICh0dXBsZSA9PSBOVUxMKTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJz cDtyZXR1cm4gdHhuX2NvbW1pdF9zdG10KHR4biwgcmVxdWVzdCk7PGJyPiZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDsvKjxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ICogUGluIHRoZSB0dXBs ZSBsb2NhbGx5IGJlZm9yZSB0aGUgY29tbWl0LDxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7 ICogb3RoZXJ3aXNlIGl0IG1heSBnbyBhd2F5IGR1cmluZyB5aWVsZCBpbjxicj4mbmJzcDsmbmJz cDsmbmJzcDsgJm5ic3A7ICogd2hlbiBXQUwgaXMgd3JpdHRlbiBpbiBhdXRvY29tbWl0IG1vZGUu PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgKi88YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDtU dXBsZVJlZk5pbCByZWYodHVwbGUpOzxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwO2lmICh0eG5fY29t bWl0X3N0bXQodHhuLCByZXF1ZXN0KSAhPSAwKTxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNw OyZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7aWYgKHJlc3Vs dCAhPSBOVUxMKSB7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO2lm ICh0dXBsZSAhPSBOVUxMICZhbXA7JmFtcDsgdHVwbGVfYmxlc3ModHVwbGUpID09IE5VTEwpPGJy Pi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJz cDtyZXR1cm4gLTE7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOypy ZXN1bHQgPSB0dXBsZTs8YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDt9PGJyPi0mbmJzcDsmbmJzcDsg Jm5ic3A7cmV0dXJuIDA7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGVfcmVmKHR1cGxlKTs8 YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpbnQgcmMgPSB0eG5fY29tbWl0X3N0bXQodHhuLCByZXF1 ZXN0KTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAocmMgPT0gMCk8YnI+KyZuYnNwOyZuYnNw OyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGVfYmxlc3ModHVwbGUpOzxicj4rJm5ic3A7 Jm5ic3A7ICZuYnNwO3R1cGxlX3VucmVmKHR1cGxlKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDty ZXR1cm4gcmM7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPiZuYnNwO3ZvaWQ8YnI+ZGlmZiAtLWdp dCBhL3NyYy9ib3gvZXJyY29kZS5oIGIvc3JjL2JveC9lcnJjb2RlLmg8YnI+aW5kZXggYTA3NTlm OGY0Li5lMDA5NTI0YWQgMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gvZXJyY29kZS5oPGJyPisrKyBi L3NyYy9ib3gvZXJyY29kZS5oPGJyPkBAIC0xMzgsNyArMTM4LDcgQEAgc3RydWN0IGVycmNvZGVf cmVjb3JkIHs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOy8qIDgzICovXyhFUl9ST0xFX0VY SVNUUywmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyJSb2xlICclcycgYWxy ZWFkeSBleGlzdHMiKSBcPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsvKiA4NCAqL18oRVJf Q1JFQVRFX1JPTEUsJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsiRmFpbGVk IHRvIGNyZWF0ZSByb2xlICclcyc6ICVzIikgXDxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7 LyogODUgKi9fKEVSX0lOREVYX0VYSVNUUywmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7 ICZuYnNwOyJJbmRleCAnJXMnIGFscmVhZHkgZXhpc3RzIikgXDxicj4tJm5ic3A7Jm5ic3A7ICZu YnNwOy8qIDg2ICovXyhFUl9UVVBMRV9SRUZfT1ZFUkZMT1csJm5ic3A7Jm5ic3A7ICZuYnNwOyJU dXBsZSByZWZlcmVuY2UgY291bnRlciBvdmVyZmxvdyIpIFw8YnI+KyZuYnNwOyZuYnNwOyAmbmJz cDsvKiA4NiAqL18oRVJfVU5VU0VENiwmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZu YnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsiIikgXDxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7 LyogODcgKi9fKEVSX1JPTEVfTE9PUCwmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZu YnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsiR3JhbnRpbmcgcm9sZSAnJXMnIHRvIHJvbGUgJyVzJyB3 b3VsZCBjcmVhdGUgYSBsb29wIikgXDxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7LyogODgg Ki9fKEVSX0dSQU5ULCZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7 Jm5ic3A7ICZuYnNwOyJJbmNvcnJlY3QgZ3JhbnQgYXJndW1lbnRzOiAlcyIpIFw8YnI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7ICZuYnNwOy8qIDg5ICovXyhFUl9QUklWX0dSQU5URUQsJm5ic3A7Jm5ic3A7 ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsiVXNlciAnJXMnIGFscmVhZHkgaGFzICVzIGFjY2Vz cyBvbiAlcyAnJXMnIikgXDxicj5kaWZmIC0tZ2l0IGEvc3JjL2JveC9pbmRleC5jYyBiL3NyYy9i b3gvaW5kZXguY2M8YnI+aW5kZXggM2M2MmVjMWNjLi5mOTkyYmM5NGMgMTAwNjQ0PGJyPi0tLSBh L3NyYy9ib3gvaW5kZXguY2M8YnI+KysrIGIvc3JjL2JveC9pbmRleC5jYzxicj5AQCAtMjIwLDgg KzIyMCw4IEBAIGJveF9pbmRleF9yYW5kb20odWludDMyX3Qgc3BhY2VfaWQsIHVpbnQzMl90IGlu ZGV4X2lkLCB1aW50MzJfdCBybmQsPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsvKiBObyB0 eCBtYW5hZ2VtZW50LCByYW5kb20oKSBpcyBmb3IgYXBwcm94aW1hdGlvbiBhbnl3YXkuICovPGJy PiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAoaW5kZXhfcmFuZG9tKGluZGV4LCBybmQsIHJl c3VsdCkgIT0gMCk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJz cDtyZXR1cm4gLTE7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7aWYgKCpyZXN1bHQgIT0gTlVMTCAm YW1wOyZhbXA7IHR1cGxlX2JsZXNzKCpyZXN1bHQpID09IE5VTEwpPGJyPi0mbmJzcDsmbmJzcDsg Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJz cDtpZiAoKnJlc3VsdCAhPSBOVUxMKTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNw OyAmbmJzcDt0dXBsZV9ibGVzcygqcmVzdWx0KTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNw O3JldHVybiAwOzxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj5AQCAtMjUzLDggKzI1Myw4IEBAIGJv eF9pbmRleF9nZXQodWludDMyX3Qgc3BhY2VfaWQsIHVpbnQzMl90IGluZGV4X2lkLCBjb25zdCBj aGFyICprZXksPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt0eG5fY29tbWl0X3JvX3N0bXQo dHhuKTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOy8qIENvdW50IHN0YXRpc3RpY3MuICov PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtybWVhbl9jb2xsZWN0KHJtZWFuX2JveCwgSVBS T1RPX1NFTEVDVCwgMSk7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7aWYgKCpyZXN1bHQgIT0gTlVM TCAmYW1wOyZhbXA7IHR1cGxlX2JsZXNzKCpyZXN1bHQpID09IE5VTEwpPGJyPi0mbmJzcDsmbmJz cDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+KyZuYnNwOyZuYnNwOyAm bmJzcDtpZiAoKnJlc3VsdCAhPSBOVUxMKTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDt0dXBsZV9ibGVzcygqcmVzdWx0KTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZu YnNwO3JldHVybiAwOzxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj5AQCAtMjg1LDggKzI4NSw4IEBA IGJveF9pbmRleF9taW4odWludDMyX3Qgc3BhY2VfaWQsIHVpbnQzMl90IGluZGV4X2lkLCBjb25z dCBjaGFyICprZXksPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5i c3A7cmV0dXJuIC0xOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7fTxicj4mbmJzcDsmbmJz cDsmbmJzcDsgJm5ic3A7dHhuX2NvbW1pdF9yb19zdG10KHR4bik7PGJyPi0mbmJzcDsmbmJzcDsg Jm5ic3A7aWYgKCpyZXN1bHQgIT0gTlVMTCAmYW1wOyZhbXA7IHR1cGxlX2JsZXNzKCpyZXN1bHQp ID09IE5VTEwpPGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVy biAtMTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAoKnJlc3VsdCAhPSBOVUxMKTxicj4rJm5i c3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV9ibGVzcygqcmVzdWx0KTs8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAwOzxicj4mbmJzcDt9PGJyPiZuYnNw Ozxicj5AQCAtMzE3LDggKzMxNyw4IEBAIGJveF9pbmRleF9tYXgodWludDMyX3Qgc3BhY2VfaWQs IHVpbnQzMl90IGluZGV4X2lkLCBjb25zdCBjaGFyICprZXksPGJyPiZuYnNwOyZuYnNwOyZuYnNw OyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7cmV0dXJuIC0xOzxicj4mbmJzcDsmbmJzcDsmbmJz cDsgJm5ic3A7fTxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHhuX2NvbW1pdF9yb19zdG10 KHR4bik7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7aWYgKCpyZXN1bHQgIT0gTlVMTCAmYW1wOyZh bXA7IHR1cGxlX2JsZXNzKCpyZXN1bHQpID09IE5VTEwpPGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7 Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAo KnJlc3VsdCAhPSBOVUxMKTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJz cDt0dXBsZV9ibGVzcygqcmVzdWx0KTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVy biAwOzxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj5AQCAtMzk3LDggKzM5Nyw4IEBAIGJveF9pdGVy YXRvcl9uZXh0KGJveF9pdGVyYXRvcl90ICppdHIsIGJveF90dXBsZV90ICoqcmVzdWx0KTxicj4m bmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7YXNzZXJ0KHJlc3VsdCAhPSBOVUxMKTs8YnI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7ICZuYnNwO2lmIChpdGVyYXRvcl9uZXh0KGl0ciwgcmVzdWx0KSAhPSAwKTxi cj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAtMTs8 YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDtpZiAoKnJlc3VsdCAhPSBOVUxMICZhbXA7JmFtcDsgdHVw bGVfYmxlc3MoKnJlc3VsdCkgPT0gTlVMTCk8YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsm bmJzcDsgJm5ic3A7cmV0dXJuIC0xOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2lmICgqcmVzdWx0 ICE9IE5VTEwpPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxl X2JsZXNzKCpyZXN1bHQpOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJy PiZuYnNwO308YnI+Jm5ic3A7PGJyPmRpZmYgLS1naXQgYS9zcmMvYm94L2x1YS90dXBsZS5jIGIv c3JjL2JveC9sdWEvdHVwbGUuYzxicj5pbmRleCA4MDU3MzMxM2QuLjIyZmU2OTYxMSAxMDA2NDQ8 YnI+LS0tIGEvc3JjL2JveC9sdWEvdHVwbGUuYzxicj4rKysgYi9zcmMvYm94L2x1YS90dXBsZS5j PGJyPkBAIC00OTYsMTAgKzQ5Niw3IEBAIGx1YVRfcHVzaHR1cGxlKHN0cnVjdCBsdWFfU3RhdGUg KkwsIGJveF90dXBsZV90ICp0dXBsZSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNw OyZuYnNwOyAmbmJzcDtsdWFMX3B1c2hjZGF0YShMLCBDVElEX0NPTlNUX1NUUlVDVF9UVVBMRV9S RUYpOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7KnB0ciA9IHR1cGxlOzxicj4mbmJzcDsm bmJzcDsmbmJzcDsgJm5ic3A7LyogVGhlIG9yZGVyIGlzIGltcG9ydGFudCAtIGZpcnN0IHJlZmVy ZW5jZSB0dXBsZSwgbmV4dCBzZXQgZ2MgKi88YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDtpZiAoYm94 X3R1cGxlX3JlZih0dXBsZSkgIT0gMCkgezxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDtsdWFUX2Vycm9yKEwpOzxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDtyZXR1cm47PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7fTxicj4rJm5ic3A7Jm5i c3A7ICZuYnNwO2JveF90dXBsZV9yZWYodHVwbGUpOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5i c3A7bHVhX3B1c2hjZnVuY3Rpb24oTCwgbGJveF90dXBsZV9nYyk7PGJyPiZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDtsdWFMX3NldGNkYXRhZ2MoTCwgLTIpOzxicj4mbmJzcDt9PGJyPmRpZmYgLS1n aXQgYS9zcmMvYm94L3BvcnQuYyBiL3NyYy9ib3gvcG9ydC5jPGJyPmluZGV4IDAzZjZiZTc5ZC4u OWI2Yjg1ODBjIDEwMDY0NDxicj4tLS0gYS9zcmMvYm94L3BvcnQuYzxicj4rKysgYi9zcmMvYm94 L3BvcnQuYzxicj5AQCAtNDUsOCArNDUsNyBAQCBwb3J0X3R1cGxlX2FkZChzdHJ1Y3QgcG9ydCAq YmFzZSwgc3RydWN0IHR1cGxlICp0dXBsZSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3N0 cnVjdCBwb3J0X3R1cGxlICpwb3J0ID0gcG9ydF90dXBsZShiYXNlKTs8YnI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZuYnNwO3N0cnVjdCBwb3J0X3R1cGxlX2VudHJ5ICplOzxicj4mbmJzcDsmbmJzcDsm bmJzcDsgJm5ic3A7aWYgKHBvcnQtJmd0O3NpemUgPT0gMCkgezxicj4tJm5ic3A7Jm5ic3A7ICZu YnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAodHVwbGVfcmVmKHR1cGxlKSAhPSAwKTxicj4tJm5i c3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7cmV0 dXJuIC0xOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV9y ZWYodHVwbGUpOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNw O2UgPSAmYW1wO3BvcnQtJmd0O2ZpcnN0X2VudHJ5Ozxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5i c3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3BvcnQtJmd0O2ZpcnN0ID0gcG9ydC0mZ3Q7bGFzdCA9IGU7 PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt9IGVsc2Ugezxicj5AQCAtNTUsMTAgKzU0LDcg QEAgcG9ydF90dXBsZV9hZGQoc3RydWN0IHBvcnQgKmJhc2UsIHN0cnVjdCB0dXBsZSAqdHVwbGUp PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5i c3A7ICZuYnNwO2RpYWdfc2V0KE91dE9mTWVtb3J5LCBzaXplb2YoKmUpLCAibWVtcG9vbF9hbGxv YyIsICJlIik7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7 Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDt9PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7 ICZuYnNwO2lmICh0dXBsZV9yZWYodHVwbGUpICE9IDApIHs8YnI+LSZuYnNwOyZuYnNwOyAmbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO21lbXBvb2xfZnJlZSgmYW1w O3BvcnRfdHVwbGVfZW50cnlfcG9vbCwgZSk7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7 Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7PGJyPi0mbmJzcDsmbmJz cDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO308YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJz cDsmbmJzcDsgJm5ic3A7dHVwbGVfcmVmKHR1cGxlKTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZu YnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtwb3J0LSZndDtsYXN0LSZndDtuZXh0ID0gZTs8YnI+Jm5i c3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtwb3J0LSZndDtsYXN0ID0g ZTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO308YnI+ZGlmZiAtLWdpdCBhL3NyYy9ib3gv dHVwbGUuYyBiL3NyYy9ib3gvdHVwbGUuYzxicj5pbmRleCAwMTRmMzc0MDYuLjRlZWQ5NWY2YyAx MDA2NDQ8YnI+LS0tIGEvc3JjL2JveC90dXBsZS5jPGJyPisrKyBiL3NyYy9ib3gvdHVwbGUuYzxi cj5AQCAtNDgsNiArNDgsMjggQEAgZW51bSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtP QkpTSVpFX01JTiA9IDE2LDxicj4mbmJzcDt9Ozxicj4mbmJzcDs8YnI+Ky8qKjxicj4rICogQ29u dGFpbmVyIGZvciBiaWcgcmVmZXJlbmNlIGNvdW50ZXJzLiBDb250YWlucyBhcnJheSBvZiBiaWc8 YnI+KyAqIHJlZmVyZW5jZSBjb3VudGVycywgc2l6ZSBvZiB0aGlzIGFycmF5IGFuZCBudW1iZXIg b2Ygbm9uLXplcm88YnI+KyAqIGJpZyByZWZlcmVuY2UgY291bnRlcnMuIFdoZW4gcmVmZXJlbmNl IGNvdW50ZXIgb2YgdHVwbGUgYmVjb21lczxicj4rICogbW9yZSB0aGFuIDMyNzY3LCBmaWVsZCBy ZWZzIG9mIHRoaXMgdHVwbGUgYmVjb21lcyBpbmRleCBvZiBiaWc8YnI+KyAqIHJlZmVyZW5jZSBj b3VudGVyIGluIGJpZyByZWZlcmVuY2UgY291bnRlciBhcnJheSBhbmQgZmllbGQ8YnI+KyAqIGlz X2JpZ3JlZiBpcyBzZXQgdHJ1ZS4gVGhlIG1vbWVudCBiaWcgcmVmZXJlbmNlIGJlY29tZXMgZXF1 YWw8YnI+KyAqIDMyNzY3IGl0IGlzIHNldCB0byAwLCByZWZzIG9mIHRoZSB0dXBsZSBiZWNvbWVz IDMyNzY3IGFuZDxicj4rICogaXNfYmlncmVmIGJlY29tZXMgZmFsc2UuIEJpZyByZWZlcmVuY2Ug Y291bnRlciBjYW4gYmUgZXF1YWwgdG88YnI+KyAqIDAgb3IgYmUgbW9yZSB0aGFuIDMyNzY3Ljxi cj4rICovPGJyPitzdGF0aWMgc3RydWN0IGJpZ3JlZl9saXN0IHs8YnI+KyZuYnNwOyZuYnNwOyAm bmJzcDsvKiogRnJlZS1saXN0IG9mIGJpZyByZWZlcmVuY2UgY291bnRlcnMuICovPGJyPismbmJz cDsmbmJzcDsgJm5ic3A7dWludDMyX3QgKnJlZnM7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Lyoq IE51bWJlciBvZiBub24temVybyBlbGVtZW50cyBpbiB0aGUgYXJyYXkuICovPGJyPismbmJzcDsm bmJzcDsgJm5ic3A7dWludDE2X3Qgc2l6ZTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsvKiogQ2Fw YWNpdHkgb2YgdGhlIGFycmF5LiAqLzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO3VpbnQxNl90IGNh cGFjaXR5Ozxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOy8qKiBJbmRleCBvZiBmaXJzdCBmcmVlIGVs ZW1lbnQuICovPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7dWludDE2X3QgdmFjYW50X2luZGV4Ozxi cj4rfSBiaWdyZWZfbGlzdDs8YnI+Kzxicj4mbmJzcDtzdGF0aWMgY29uc3QgZG91YmxlIEFMTE9D X0ZBQ1RPUiA9IDEuMDU7PGJyPiZuYnNwOzxicj4mbmJzcDsvKio8YnI+QEAgLTE1MSw2ICsxNzMs MTMgQEAgdHVwbGVfdmFsaWRhdGVfcmF3KHN0cnVjdCB0dXBsZV9mb3JtYXQgKmZvcm1hdCwgY29u c3QgY2hhciAqdHVwbGUpPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+ Jm5ic3A7fTxicj4mbmJzcDs8YnI+Ky8qKiBJbml0aWFsaXplIGJpZyByZWZlcmVuY2VzIGNvbnRh aW5lci4gKi88YnI+K3N0YXRpYyBpbmxpbmUgdm9pZDxicj4rYmlncmVmX2xpc3RfY3JlYXRlKCk8 YnI+K3s8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDttZW1zZXQoJmFtcDtiaWdyZWZfbGlzdCwgMCwg c2l6ZW9mKGJpZ3JlZl9saXN0KSk7PGJyPit9PGJyPis8YnI+Jm5ic3A7LyoqPGJyPiZuYnNwOyAq IEluY3JlbWVudGVkIG9uIGV2ZXJ5IHNuYXBzaG90IGFuZCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNo IHR1cGxlczxicj4mbmJzcDsgKiB3aGljaCB3ZXJlIGNyZWF0ZWQgYWZ0ZXIgc3RhcnQgb2YgYSBz bmFwc2hvdCAodGhlc2UgdHVwbGVzIGNhbjxicj5AQCAtMjExLDYgKzI0MCw4IEBAIHR1cGxlX2lu aXQoZmllbGRfbmFtZV9oYXNoX2YgaGFzaCk8YnI+Jm5ic3A7PGJyPiZuYnNwOyZuYnNwOyZuYnNw OyAmbmJzcDtib3hfdHVwbGVfbGFzdCA9IE5VTEw7PGJyPiZuYnNwOzxicj4rJm5ic3A7Jm5ic3A7 ICZuYnNwO2JpZ3JlZl9saXN0X2NyZWF0ZSgpOzxicj4rPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAm bmJzcDtpZiAoY29sbF9pZF9jYWNoZV9pbml0KCkgIT0gMCk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7 ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7PGJyPiZuYnNwOzxicj5AQCAtMjQ0 LDYgKzI3NSwxMDYgQEAgdHVwbGVfYXJlbmFfY3JlYXRlKHN0cnVjdCBzbGFiX2FyZW5hICphcmVu YSwgc3RydWN0IHF1b3RhICpxdW90YSw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO308YnI+ Jm5ic3A7fTxicj4mbmJzcDs8YnI+K2VudW0gezxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO0JJR1JF Rl9GQUNUT1IgPSAyLDxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO0JJR1JFRl9NQVggPSBVSU5UMzJf TUFYLDxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO0JJR1JFRl9NSU5fQ0FQQUNJVFkgPSAxNiw8YnI+ KyZuYnNwOyZuYnNwOyAmbmJzcDsvKio8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsgKiBPbmx5IDE1 IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgYmlncmVmIGxpc3QgaW5kZXggaW48YnI+KyZuYnNwOyZu YnNwOyAmbmJzcDsgKiBzdHJ1Y3QgdHVwbGUuPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7ICovPGJy PismbmJzcDsmbmJzcDsgJm5ic3A7QklHUkVGX01BWF9DQVBBQ0lUWSA9IFVJTlQxNl9NQVggJmd0 OyZndDsgMTxicj4rfTs8YnI+Kzxicj4rLyoqIERlc3Ryb3kgYmlnIHJlZmVyZW5jZXMgYW5kIGZy ZWUgbWVtb3J5IHRoYXQgd2FzIGFsbG9jYXRlZC4gKi88YnI+K3N0YXRpYyBpbmxpbmUgdm9pZDxi cj4rYmlncmVmX2xpc3RfcmVzZXQoKTxicj4rezxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2ZyZWUo YmlncmVmX2xpc3QucmVmcyk7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7YmlncmVmX2xpc3RfY3Jl YXRlKCk7PGJyPit9PGJyPis8YnI+Ky8qKjxicj4rICogSW5jcmVhc2UgY2FwYWNpdHkgb2YgYmln cmVmX2xpc3QuPGJyPisgKi88YnI+K3N0YXRpYyBpbmxpbmUgdm9pZDxicj4rYmlncmVmX2xpc3Rf aW5jcmVhc2VfY2FwYWNpdHkoKTxicj4rezxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2Fzc2VydChi aWdyZWZfbGlzdC5jYXBhY2l0eSA9PSBiaWdyZWZfbGlzdC52YWNhbnRfaW5kZXgpOzxicj4rJm5i c3A7Jm5ic3A7ICZuYnNwO3VpbnQzMl90ICpyZWZzID0gYmlncmVmX2xpc3QucmVmczs8YnI+KyZu YnNwOyZuYnNwOyAmbmJzcDt1aW50MTZfdCBjYXBhY2l0eSA9IGJpZ3JlZl9saXN0LmNhcGFjaXR5 Ozxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2lmIChjYXBhY2l0eSA9PSAwKTxicj4rJm5ic3A7Jm5i c3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtjYXBhY2l0eSA9IEJJR1JFRl9NSU5fQ0FQQUNJ VFk7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7ZWxzZSBpZiAoY2FwYWNpdHkgJmx0OyBCSUdSRUZf TUFYX0NBUEFDSVRZKTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtj YXBhY2l0eSA9IE1JTihjYXBhY2l0eSAqIEJJR1JFRl9GQUNUT1IsIEJJR1JFRl9NQVhfQ0FQQUNJ VFkpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2Vsc2U8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsm bmJzcDsmbmJzcDsgJm5ic3A7cGFuaWMoIlRvbyBtYW55IGJpZyByZWZlcmVuY2VzIik7PGJyPism bmJzcDsmbmJzcDsgJm5ic3A7cmVmcyA9ICh1aW50MzJfdCAqKSByZWFsbG9jKHJlZnMsIGNhcGFj aXR5ICogc2l6ZW9mKCpyZWZzKSk7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7aWYgKHJlZnMgPT0g TlVMTCkgezxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtwYW5pYygi ZmFpbGVkIHRvIHJlYWxsb2NhdGUgJXp1IGJ5dGVzOiBDYW5ub3QgYWxsb2NhdGUgIlw8YnI+KyZu YnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7ICJtZW1vcnkuIiwgY2FwYWNpdHkgKiBzaXplb2YoKnJlZnMpKTs8YnI+KyZuYnNw OyZuYnNwOyAmbmJzcDt9PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Zm9yKHVpbnQxNl90IGkgPSBi aWdyZWZfbGlzdC5jYXBhY2l0eTsgaSAmbHQ7IGNhcGFjaXR5OyArK2kpPGJyPismbmJzcDsmbmJz cDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JlZnNbaV0gPSBpICsgMTs8YnI+KyZuYnNwOyZu YnNwOyAmbmJzcDtiaWdyZWZfbGlzdC5yZWZzID0gcmVmczs8YnI+KyZuYnNwOyZuYnNwOyAmbmJz cDtiaWdyZWZfbGlzdC5jYXBhY2l0eSA9IGNhcGFjaXR5Ozxicj4rfTxicj4rPGJyPisvKio8YnI+ KyAqIFJldHVybiBpbmRleCBmb3IgbmV3IGJpZyByZWZlcmVuY2UgY291bnRlciBhbmQgYWxsb2Nh dGUgbWVtb3J5PGJyPisgKiBpZiBuZWVkZWQuPGJyPisgKiBAcmV0dmFsIGluZGV4IGZvciBuZXcg YmlnIHJlZmVyZW5jZSBjb3VudGVyLjxicj4rICovPGJyPitzdGF0aWMgaW5saW5lIHVpbnQxNl90 PGJyPitiaWdyZWZfbGlzdF9uZXdfaW5kZXgoKTxicj4rezxicj4rJm5ic3A7Jm5ic3A7ICZuYnNw O2lmIChiaWdyZWZfbGlzdC5zaXplID09IGJpZ3JlZl9saXN0LmNhcGFjaXR5KTxicj4rJm5ic3A7 Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtiaWdyZWZfbGlzdF9pbmNyZWFzZV9jYXBh Y2l0eSgpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOysrYmlncmVmX2xpc3Quc2l6ZTs8YnI+KyZu YnNwOyZuYnNwOyAmbmJzcDt1aW50MTZfdCB2YWNhbnRfaW5kZXggPSBiaWdyZWZfbGlzdC52YWNh bnRfaW5kZXg7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7YmlncmVmX2xpc3QudmFjYW50X2luZGV4 ID0gYmlncmVmX2xpc3QucmVmc1t2YWNhbnRfaW5kZXhdOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNw O3JldHVybiB2YWNhbnRfaW5kZXg7PGJyPit9PGJyPis8YnI+K3ZvaWQ8YnI+K3R1cGxlX3JlZl9z bG93KHN0cnVjdCB0dXBsZSAqdHVwbGUpPGJyPit7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7YXNz ZXJ0KHR1cGxlLSZndDtpc19iaWdyZWYgfHwgdHVwbGUtJmd0O3JlZnMgPT0gVFVQTEVfUkVGX01B WCk7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7aWYgKCEgdHVwbGUtJmd0O2lzX2JpZ3JlZikgezxi cj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZS0mZ3Q7cmVmX2lu ZGV4ID0gYmlncmVmX2xpc3RfbmV3X2luZGV4KCk7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5i c3A7Jm5ic3A7ICZuYnNwO3R1cGxlLSZndDtpc19iaWdyZWYgPSB0cnVlOzxicj4rJm5ic3A7Jm5i c3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtiaWdyZWZfbGlzdC5yZWZzW3R1cGxlLSZndDty ZWZfaW5kZXhdID0gVFVQTEVfUkVGX01BWDs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDt9IGVsc2Ug aWYgKGJpZ3JlZl9saXN0LnJlZnNbdHVwbGUtJmd0O3JlZl9pbmRleF0gPT0gQklHUkVGX01BWCkg ezxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtwYW5pYygiVHVwbGUg YmlnIHJlZmVyZW5jZSBjb3VudGVyIG92ZXJmbG93Iik7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7 fTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2JpZ3JlZl9saXN0LnJlZnNbdHVwbGUtJmd0O3JlZl9p bmRleF0rKzs8YnI+K308YnI+Kzxicj4rLyoqPGJyPisgKiBGcmVlIGluZGV4IGFuZCBhZGQgaXQg dG8gZnJlZS1pbmRleC1saXN0LiBGcmVlIG1lbW9yeTxicj4rICogd2hlbiBzaXplID09IDAuPGJy PisgKi88YnI+K3N0YXRpYyBpbmxpbmUgdm9pZDxicj4rYmlncmVmX2xpc3RfZGVsZXRlX2luZGV4 KHVpbnQxNl90IGluZGV4KTxicj4rezxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2JpZ3JlZl9saXN0 LnJlZnNbaW5kZXhdID0gYmlncmVmX2xpc3QudmFjYW50X2luZGV4Ozxicj4rJm5ic3A7Jm5ic3A7 ICZuYnNwO2JpZ3JlZl9saXN0LnZhY2FudF9pbmRleCA9IGluZGV4Ozxicj4rJm5ic3A7Jm5ic3A7 ICZuYnNwO2lmICgtLWJpZ3JlZl9saXN0LnNpemUgPT0gMCk8YnI+KyZuYnNwOyZuYnNwOyAmbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7YmlncmVmX2xpc3RfcmVzZXQoKTs8YnI+K308YnI+Kzxicj4r dm9pZDxicj4rdHVwbGVfdW5yZWZfc2xvdyhzdHJ1Y3QgdHVwbGUgKnR1cGxlKTxicj4rezxicj4r Jm5ic3A7Jm5ic3A7ICZuYnNwO2Fzc2VydCh0dXBsZS0mZ3Q7aXNfYmlncmVmICZhbXA7JmFtcDs8 YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgYmlncmVmX2xpc3QucmVmc1t0dXBsZS0mZ3Q7cmVmX2luZGV4XSAmZ3Q7IFRVUExFX1JFRl9N QVgpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2lmKC0tYmlncmVmX2xpc3QucmVmc1t0dXBsZS0m Z3Q7cmVmX2luZGV4XSA9PSBUVVBMRV9SRUZfTUFYKSB7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7 Jm5ic3A7Jm5ic3A7ICZuYnNwO2JpZ3JlZl9saXN0X2RlbGV0ZV9pbmRleCh0dXBsZS0mZ3Q7cmVm X2luZGV4KTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGUt Jmd0O3JlZl9pbmRleCA9IFRVUExFX1JFRl9NQVg7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5i c3A7Jm5ic3A7ICZuYnNwO3R1cGxlLSZndDtpc19iaWdyZWYgPSBmYWxzZTs8YnI+KyZuYnNwOyZu YnNwOyAmbmJzcDt9PGJyPit9PGJyPis8YnI+Jm5ic3A7dm9pZDxicj4mbmJzcDt0dXBsZV9hcmVu YV9kZXN0cm95KHN0cnVjdCBzbGFiX2FyZW5hICphcmVuYSk8YnI+Jm5ic3A7ezxicj5AQCAtMjY1 LDYgKzM5Niw4IEBAIHR1cGxlX2ZyZWUodm9pZCk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNw O3R1cGxlX2Zvcm1hdF9mcmVlKCk7PGJyPiZuYnNwOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5i c3A7Y29sbF9pZF9jYWNoZV9kZXN0cm95KCk7PGJyPis8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDti aWdyZWZfbGlzdF9yZXNldCgpOzxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj4mbmJzcDtib3hfdHVw bGVfZm9ybWF0X3QgKjxicj5AQCAtMjg4LDcgKzQyMSw4IEBAIGludDxicj4mbmJzcDtib3hfdHVw bGVfcmVmKGJveF90dXBsZV90ICp0dXBsZSk8YnI+Jm5ic3A7ezxicj4mbmJzcDsmbmJzcDsmbmJz cDsgJm5ic3A7YXNzZXJ0KHR1cGxlICE9IE5VTEwpOzxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwO3Jl dHVybiB0dXBsZV9yZWYodHVwbGUpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3JlZih0 dXBsZSk7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJyPiZuYnNwO308YnI+Jm5i c3A7PGJyPiZuYnNwO3ZvaWQ8YnI+QEAgLTM1NywxMCArNDkxLDcgQEAgYm94X3R1cGxlX2l0ZXJh dG9yKGJveF90dXBsZV90ICp0dXBsZSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNw OyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ICJtZW1wb29sIiwgIm5ldyBzbGFiIik7 PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7cmV0dXJuIE5V TEw7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt9PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7 aWYgKHR1cGxlX3JlZih0dXBsZSkgIT0gMCkgezxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNw OyZuYnNwOyAmbmJzcDttZW1wb29sX2ZyZWUoJmFtcDt0dXBsZV9pdGVyYXRvcl9wb29sLCBpdCk7 PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiBOVUxMOzxi cj4tJm5ic3A7Jm5ic3A7ICZuYnNwO308YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV9yZWYo dHVwbGUpOzxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGVfcmV3aW5kKGl0LCB0dXBs ZSk7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gaXQ7PGJyPiZuYnNwO308YnI+ QEAgLTQ1MSw3ICs1ODIsNiBAQCBib3hfdHVwbGVfbmV3KGJveF90dXBsZV9mb3JtYXRfdCAqZm9y bWF0LCBjb25zdCBjaGFyICpkYXRhLCBjb25zdCBjaGFyICplbmQpPGJyPiZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDtzdHJ1Y3QgdHVwbGUgKnJldCA9IHR1cGxlX25ldyhmb3JtYXQsIGRhdGEsIGVu ZCk7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAocmV0ID09IE5VTEwpPGJyPiZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7cmV0dXJuIE5VTEw7PGJyPi0m bmJzcDsmbmJzcDsgJm5ic3A7LyogQ2FuJ3QgZmFpbCBvbiB6ZXJvIHJlZnMuICovPGJyPiZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gdHVwbGVfYmxlc3MocmV0KTs8YnI+Jm5ic3A7fTxi cj4mbmJzcDs8YnI+ZGlmZiAtLWdpdCBhL3NyYy9ib3gvdHVwbGUuaCBiL3NyYy9ib3gvdHVwbGUu aDxicj5pbmRleCBlMjM4NGRkYTAuLjE0ZGJkNDA5NCAxMDA2NDQ8YnI+LS0tIGEvc3JjL2JveC90 dXBsZS5oPGJyPisrKyBiL3NyYy9ib3gvdHVwbGUuaDxicj5AQCAtMTA1LDggKzEwNSw3IEBAIHR5 cGVkZWYgc3RydWN0IHR1cGxlIGJveF90dXBsZV90Ozxicj4mbmJzcDsgKiB0dXBsZSB3aWxsIGxl YWsuPGJyPiZuYnNwOyAqPGJyPiZuYnNwOyAqIFxwYXJhbSB0dXBsZSBhIHR1cGxlPGJyPi0gKiBc cmV0dmFsIC0xIG9uIGVycm9yIChjaGVjayBib3hfZXJyb3JfbGFzdCgpKTxicj4tICogXHJldHZh bCAwIG9uIHN1Y2Nlc3M8YnI+KyAqIFxyZXR2YWwgMCBhbHdheXM8YnI+Jm5ic3A7ICogXHNhIGJv eF90dXBsZV91bnJlZigpPGJyPiZuYnNwOyAqLzxicj4mbmJzcDtpbnQ8YnI+QEAgLTI2OSw4ICsy NjgsNyBAQCBib3hfdHVwbGVfbmV4dChib3hfdHVwbGVfaXRlcmF0b3JfdCAqaXQpOzxicj4mbmJz cDsgKiBVc2UgYm94X3R1cGxlX2Zvcm1hdF9kZWZhdWx0KCkgdG8gY3JlYXRlIHNwYWNlLWluZGVw ZW5kZW50IHR1cGxlLjxicj4mbmJzcDsgKiBccGFyYW0gZGF0YSB0dXBsZSBkYXRhIGluIE1zZ1Bh Y2sgQXJyYXkgZm9ybWF0IChbZmllbGQxLCBmaWVsZDIsIC4uLl0pLjxicj4mbmJzcDsgKiBccGFy YW0gZW5kIHRoZSBlbmQgb2YgXGEgZGF0YTxicj4tICogXHJldHZhbCBOVUxMIG9uIG91dCBvZiBt ZW1vcnk8YnI+LSAqIFxyZXR2YWwgdHVwbGUgb3RoZXJ3aXNlPGJyPisgKiBccmV0dmFsIHR1cGxl PGJyPiZuYnNwOyAqIFxwcmUgZGF0YSwgZW5kIGlzIHZhbGlkIE1zZ1BhY2sgQXJyYXk8YnI+Jm5i c3A7ICogXHNhIFxjb2RlIGJveC50dXBsZS5uZXcoZGF0YSkgXGVuZGNvZGU8YnI+Jm5ic3A7ICov PGJyPkBAIC0zMDcsOSArMzA1LDE3IEBAIGJveF90dXBsZV91cHNlcnQoY29uc3QgYm94X3R1cGxl X3QgKnR1cGxlLCBjb25zdCBjaGFyICpleHByLCBjb25zdDxicj4mbmJzcDsgKi88YnI+Jm5ic3A7 c3RydWN0IFBBQ0tFRCB0dXBsZTxicj4mbmJzcDt7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Lyoq IHJlZmVyZW5jZSBjb3VudGVyICovPGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7dWludDE2X3QgcmVm czs8YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDsvKiogZm9ybWF0IGlkZW50aWZpZXIgKi88YnI+KyZu YnNwOyZuYnNwOyAmbmJzcDt1bmlvbiB7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5i c3A7ICZuYnNwOy8qKiBSZWZlcmVuY2UgY291bnRlci4gKi88YnI+KyZuYnNwOyZuYnNwOyAmbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7dWludDE2X3QgcmVmczs8YnI+KyZuYnNwOyZuYnNwOyAmbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7c3RydWN0IHs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJz cDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOy8qKiBJbmRleCBvZiBiaWcgcmVmZXJl bmNlIGNvdW50ZXIuICovPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDt1aW50MTZfdCByZWZfaW5kZXggOiAxNTs8YnI+KyZuYnNwOyZu YnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOy8qKiBCaWcg cmVmZXJlbmNlIGZsYWcuICovPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZu YnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtib29sIGlzX2JpZ3JlZiA6IDE7PGJyPismbmJzcDsmbmJz cDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO307PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7fTs8 YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsvKiogRm9ybWF0IGlkZW50aWZpZXIuICovPGJyPiZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDt1aW50MTZfdCBmb3JtYXRfaWQ7PGJyPiZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDsvKio8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyAqIExlbmd0aCBvZiB0 aGUgTWVzc2FnZVBhY2sgZGF0YSBpbiByYXcgcGFydCBvZiB0aGU8YnI+QEAgLTc3NCwyNSArNzgw LDM1IEBAIHR1cGxlX2ZpZWxkX3V1aWQoY29uc3Qgc3RydWN0IHR1cGxlICp0dXBsZSwgaW50IGZp ZWxkbm8sPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+Jm5ic3A7fTxi cj4mbmJzcDs8YnI+LWVudW0geyBUVVBMRV9SRUZfTUFYID0gVUlOVDE2X01BWCB9Ozxicj4rZW51 bSB7IFRVUExFX1JFRl9NQVggPSBVSU5UMTZfTUFYICZndDsmZ3Q7IDEgfTs8YnI+Kzxicj4rLyoq PGJyPisgKiBJbmNyZWFzZSB0dXBsZSBiaWcgcmVmZXJlbmNlIGNvdW50ZXIuPGJyPisgKiBAcGFy YW0gdHVwbGUgVHVwbGUgdG8gcmVmZXJlbmNlLjxicj4rICovPGJyPit2b2lkPGJyPit0dXBsZV9y ZWZfc2xvdyhzdHJ1Y3QgdHVwbGUgKnR1cGxlKTs8YnI+Jm5ic3A7PGJyPiZuYnNwOy8qKjxicj4m bmJzcDsgKiBJbmNyZW1lbnQgdHVwbGUgcmVmZXJlbmNlIGNvdW50ZXIuPGJyPiZuYnNwOyAqIEBw YXJhbSB0dXBsZSBUdXBsZSB0byByZWZlcmVuY2UuPGJyPi0gKiBAcmV0dmFsJm5ic3A7IDAgU3Vj Y2Vzcy48YnI+LSAqIEByZXR2YWwgLTEgVG9vIG1hbnkgcmVmcyBlcnJvci48YnI+Jm5ic3A7ICov PGJyPi1zdGF0aWMgaW5saW5lIGludDxicj4rc3RhdGljIGlubGluZSB2b2lkPGJyPiZuYnNwO3R1 cGxlX3JlZihzdHJ1Y3QgdHVwbGUgKnR1cGxlKTxicj4mbmJzcDt7PGJyPi0mbmJzcDsmbmJzcDsg Jm5ic3A7aWYgKHR1cGxlLSZndDtyZWZzICsgMSAmZ3Q7IFRVUExFX1JFRl9NQVgpIHs8YnI+LSZu YnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ZGlhZ19zZXQoQ2xpZW50RXJyb3Is IEVSX1RVUExFX1JFRl9PVkVSRkxPVyk7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5i c3A7ICZuYnNwO3JldHVybiAtMTs8YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDt9PGJyPi0mbmJzcDsm bmJzcDsgJm5ic3A7dHVwbGUtJmd0O3JlZnMrKzs8YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1 cm4gMDs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAodW5saWtlbHkodHVwbGUtJmd0O3JlZnMg Jmd0Oz0gVFVQTEVfUkVGX01BWCkpPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7 ICZuYnNwO3R1cGxlX3JlZl9zbG93KHR1cGxlKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtlbHNl PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlLSZndDtyZWZz Kys7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPisvKio8YnI+KyAqIERlY3JlYXNlIHR1cGxlIGJp ZyByZWZlcmVuY2UgY291bnRlci48YnI+KyAqIEBwYXJhbSB0dXBsZSBUdXBsZSB0byByZWZlcmVu Y2UuPGJyPisgKi88YnI+K3ZvaWQ8YnI+K3R1cGxlX3VucmVmX3Nsb3coc3RydWN0IHR1cGxlICp0 dXBsZSk7PGJyPis8YnI+Jm5ic3A7LyoqPGJyPiZuYnNwOyAqIERlY3JlbWVudCB0dXBsZSByZWZl cmVuY2UgY291bnRlci4gSWYgaXQgaGFzIHJlYWNoZWQgemVybywgZnJlZSB0aGUgdHVwbGUuPGJy PiZuYnNwOyAqPGJyPkBAIC04MDIsMTAgKzgxOCw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZDxicj4m bmJzcDt0dXBsZV91bnJlZihzdHJ1Y3QgdHVwbGUgKnR1cGxlKTxicj4mbmJzcDt7PGJyPiZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDthc3NlcnQodHVwbGUtJmd0O3JlZnMgLSAxICZndDs9IDApOzxi cj4tPGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGUtJmd0O3JlZnMtLTs8YnI+LTxicj4tJm5i c3A7Jm5ic3A7ICZuYnNwO2lmICh0dXBsZS0mZ3Q7cmVmcyA9PSAwKTxicj4rJm5ic3A7Jm5ic3A7 ICZuYnNwO2lmICh1bmxpa2VseSh0dXBsZS0mZ3Q7aXNfYmlncmVmKSk8YnI+KyZuYnNwOyZuYnNw OyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGVfdW5yZWZfc2xvdyh0dXBsZSk7PGJyPism bmJzcDsmbmJzcDsgJm5ic3A7ZWxzZSBpZiAoLS10dXBsZS0mZ3Q7cmVmcyA9PSAwKTxicj4mbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX2RlbGV0ZSh0dXBs ZSk7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPkBAIC04MTMsMjUgKzgyOCwxOCBAQCBleHRlcm4g c3RydWN0IHR1cGxlICpib3hfdHVwbGVfbGFzdDs8YnI+Jm5ic3A7PGJyPiZuYnNwOy8qKjxicj4m bmJzcDsgKiBDb252ZXJ0IGludGVybmFsIGBzdHJ1Y3QgdHVwbGVgIHRvIHB1YmxpYyBgYm94X3R1 cGxlX3RgLjxicj4tICogXHJldHZhbCB0dXBsZSBvbiBzdWNjZXNzPGJyPi0gKiBccmV0dmFsIE5V TEwgb24gZXJyb3IsIGNoZWNrIGRpYWc8YnI+KyAqIFxyZXR2YWwgdHVwbGU8YnI+Jm5ic3A7ICog XHBvc3QgXGEgdHVwbGUgcmVmIGNvdW50ZWQgdW50aWwgdGhlIG5leHQgY2FsbC48YnI+LSAqIFxw b3N0IHR1cGxlX3JlZigpIGRvZXNuJ3QgZmFpbCBhdCBsZWFzdCBvbmNlPGJyPiZuYnNwOyAqIFxz YSB0dXBsZV9yZWY8YnI+Jm5ic3A7ICovPGJyPiZuYnNwO3N0YXRpYyBpbmxpbmUgYm94X3R1cGxl X3QgKjxicj4mbmJzcDt0dXBsZV9ibGVzcyhzdHJ1Y3QgdHVwbGUgKnR1cGxlKTxicj4mbmJzcDt7 PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDthc3NlcnQodHVwbGUgIT0gTlVMTCk7PGJyPi0m bmJzcDsmbmJzcDsgJm5ic3A7LyogRW5zdXJlIHR1cGxlIGNhbiBiZSByZWZlcmVuY2VkIGF0IGxl YXN0IG9uY2UgYWZ0ZXIgcmV0dXJuICovPGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7aWYgKHR1cGxl LSZndDtyZWZzICsgMiAmZ3Q7IFRVUExFX1JFRl9NQVgpIHs8YnI+LSZuYnNwOyZuYnNwOyAmbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7ZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX1RVUExFX1JFRl9P VkVSRkxPVyk7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVy biBOVUxMOzxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwO308YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDt0 dXBsZS0mZ3Q7cmVmcysrOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3JlZih0dXBsZSk7 PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsvKiBSZW1vdmUgcHJldmlvdXMgdHVwbGUgKi88 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO2lmIChsaWtlbHkoYm94X3R1cGxlX2xhc3QgIT0g TlVMTCkpPGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3Vu cmVmKGJveF90dXBsZV9sYXN0KTsgLyogZG8gbm90IHRocm93ICovPGJyPismbmJzcDsmbmJzcDsg Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3VucmVmKGJveF90dXBsZV9sYXN0KTs8YnI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOy8qIFJlbWVtYmVyIGN1cnJlbnQgdHVwbGUgKi88YnI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO2JveF90dXBsZV9sYXN0ID0gdHVwbGU7PGJyPiZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gdHVwbGU7PGJyPkBAIC04NDksNDEgKzg1Nyw2IEBA IHR1cGxlX3RvX2J1Zihjb25zdCBzdHJ1Y3QgdHVwbGUgKnR1cGxlLCBjaGFyICpidWYsIHNpemVf dCBzaXplKTs8YnI+Jm5ic3A7I2luY2x1ZGUgInR1cGxlX3VwZGF0ZS5oIjxicj4mbmJzcDsjaW5j bHVkZSAiZXJyaW5qLmgiPGJyPiZuYnNwOzxicj4tLyoqPGJyPi0gKiBcY29weWRvYyB0dXBsZV9y ZWYoKTxicj4tICogXHRocm93cyBpZiBvdmVyZmxvdyBkZXRlY3RlZC48YnI+LSAqLzxicj4tc3Rh dGljIGlubGluZSB2b2lkPGJyPi10dXBsZV9yZWZfeGMoc3RydWN0IHR1cGxlICp0dXBsZSk8YnI+ LXs8YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDtpZiAodHVwbGVfcmVmKHR1cGxlKSk8YnI+LSZuYnNw OyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ZGlhZ19yYWlzZSgpOzxicj4tfTxicj4t PGJyPi0vKio8YnI+LSAqIFxjb3B5ZG9jIHR1cGxlX2JsZXNzPGJyPi0gKiBcdGhyb3cgRVJfVFVQ TEVfUkVGX09WRVJGTE9XPGJyPi0gKi88YnI+LXN0YXRpYyBpbmxpbmUgYm94X3R1cGxlX3QgKjxi cj4tdHVwbGVfYmxlc3NfeGMoc3RydWN0IHR1cGxlICp0dXBsZSk8YnI+LXs8YnI+LSZuYnNwOyZu YnNwOyAmbmJzcDtib3hfdHVwbGVfdCAqYmxlc3NlZCA9IHR1cGxlX2JsZXNzKHR1cGxlKTs8YnI+ LSZuYnNwOyZuYnNwOyAmbmJzcDtpZiAoYmxlc3NlZCA9PSBOVUxMKTxicj4tJm5ic3A7Jm5ic3A7 ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtkaWFnX3JhaXNlKCk7PGJyPi0mbmJzcDsmbmJzcDsg Jm5ic3A7cmV0dXJuIGJsZXNzZWQ7PGJyPi19PGJyPi08YnI+LS8qKiBNYWtlIHR1cGxlIHJlZmVy ZW5jZXMgZXhjZXB0aW9uLWZyaWVuZGx5IGluIGFic2VuY2Ugb2YgQGZpbmFsbHkuICovPGJyPi1z dHJ1Y3QgVHVwbGVSZWZOaWwgezxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwO3N0cnVjdCB0dXBsZSAq dHVwbGU7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7VHVwbGVSZWZOaWwgKHN0cnVjdCB0dXBsZSAq YXJnKSA6dHVwbGUoYXJnKTxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwO3sgaWYgKHR1cGxlKSB0dXBs ZV9yZWZfeGModHVwbGUpOyB9PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7flR1cGxlUmVmTmlsKCkg eyBpZiAodHVwbGUpIHR1cGxlX3VucmVmKHR1cGxlKTsgfTxicj4tPGJyPi0mbmJzcDsmbmJzcDsg Jm5ic3A7VHVwbGVSZWZOaWwoY29uc3QgVHVwbGVSZWZOaWwmYW1wOykgPSBkZWxldGU7PGJyPi0m bmJzcDsmbmJzcDsgJm5ic3A7dm9pZCBvcGVyYXRvcj0oY29uc3QgVHVwbGVSZWZOaWwmYW1wOykg PSBkZWxldGU7PGJyPi19Ozxicj4tPGJyPiZuYnNwOy8qIEBjb3B5ZG9jIHR1cGxlX2ZpZWxkX3dp dGhfdHlwZSgpICovPGJyPiZuYnNwO3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqPGJyPiZuYnNw O3R1cGxlX2ZpZWxkX3dpdGhfdHlwZV94Yyhjb25zdCBzdHJ1Y3QgdHVwbGUgKnR1cGxlLCB1aW50 MzJfdCBmaWVsZG5vLDxicj5kaWZmIC0tZ2l0IGEvc3JjL2JveC92aW55bC5jIGIvc3JjL2JveC92 aW55bC5jPGJyPmluZGV4IGYwZDI2ODc0ZS4uZGMwZDAyMDU0IDEwMDY0NDxicj4tLS0gYS9zcmMv Ym94L3ZpbnlsLmM8YnI+KysrIGIvc3JjL2JveC92aW55bC5jPGJyPkBAIC0zODIyLDcgKzM4MjIs NiBAQCB2aW55bF9pdGVyYXRvcl9wcmltYXJ5X25leHQoc3RydWN0IGl0ZXJhdG9yICpiYXNlLCBz dHJ1Y3QgdHVwbGUgKipyZXQpPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDthc3NlcnQoYmFz ZS0mZ3Q7bmV4dCA9IHZpbnlsX2l0ZXJhdG9yX3ByaW1hcnlfbmV4dCk7PGJyPiZuYnNwOyZuYnNw OyZuYnNwOyAmbmJzcDtzdHJ1Y3QgdmlueWxfaXRlcmF0b3IgKml0ID0gKHN0cnVjdCB2aW55bF9p dGVyYXRvciAqKWJhc2U7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDthc3NlcnQoaXQtJmd0 O2xzbS0mZ3Q7aW5kZXhfaWQgPT0gMCk7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7c3RydWN0IHR1 cGxlICp0dXBsZTs8YnI+Jm5ic3A7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAoaXQt Jmd0O3R4ID09IE5VTEwpIHs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNw OyAmbmJzcDtkaWFnX3NldChDbGllbnRFcnJvciwgRVJfQ1VSU09SX05PX1RSQU5TQUNUSU9OKTs8 YnI+QEAgLTM4MzMsMTggKzM4MzIsMTUgQEAgdmlueWxfaXRlcmF0b3JfcHJpbWFyeV9uZXh0KHN0 cnVjdCBpdGVyYXRvciAqYmFzZSwgc3RydWN0IHR1cGxlICoqcmV0KTxicj4mbmJzcDsmbmJzcDsm bmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO2dvdG8gZmFpbDs8YnI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZuYnNwO308YnI+Jm5ic3A7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7aWYgKHZ5X3Jl YWRfaXRlcmF0b3JfbmV4dCgmYW1wO2l0LSZndDtpdGVyYXRvciwgJmFtcDt0dXBsZSkgIT0gMCk8 YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAodnlfcmVhZF9pdGVyYXRvcl9uZXh0KCZhbXA7aXQt Jmd0O2l0ZXJhdG9yLCByZXQpICE9IDApPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJz cDsmbmJzcDsgJm5ic3A7Z290byBmYWlsOzxicj4tPGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7aWYg KHR1cGxlID09IE5VTEwpIHs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAoKnJldCA9PSBOVUxM KSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7LyogRU9G LiBDbG9zZSB0aGUgaXRlcmF0b3IgaW1tZWRpYXRlbHkuICovPGJyPiZuYnNwOyZuYnNwOyZuYnNw OyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dmlueWxfaXRlcmF0b3JfY2xvc2UoaXQpOzxicj4t Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsqcmV0ID0gTlVMTDs8YnI+LSZu YnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJyPismbmJzcDsm bmJzcDsgJm5ic3A7fSBlbHNlIHs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsg Jm5ic3A7dHVwbGVfYmxlc3MoKnJldCk7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt9PGJy Pi0mbmJzcDsmbmJzcDsgJm5ic3A7KnJldCA9IHR1cGxlX2JsZXNzKHR1cGxlKTs8YnI+LSZuYnNw OyZuYnNwOyAmbmJzcDtpZiAoKnJldCAhPSBOVUxMKTxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwOyZu YnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4g MDs8YnI+Jm5ic3A7ZmFpbDo8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3ZpbnlsX2l0ZXJh dG9yX2Nsb3NlKGl0KTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+ QEAgLTM4OTAsMTEgKzM4ODYsMTAgQEAgbmV4dDo8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNw OyAqIE5vdGUsIHRoZXJlJ3Mgbm8gbmVlZCBpbiB2eV90eF90cmFjaygpIGFzIHRoZTxicj4mbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7ICogdHVwbGUgaXMgYWxyZWFkeSB0cmFja2VkIGluIHRoZSBz ZWNvbmRhcnkgaW5kZXguPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgKi88YnI+LSZuYnNw OyZuYnNwOyAmbmJzcDtzdHJ1Y3QgdHVwbGUgKmZ1bGxfdHVwbGU7PGJyPiZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDtpZiAodnlfcG9pbnRfbG9va3VwKGl0LSZndDtsc20tJmd0O3BrLCBpdC0mZ3Q7 dHgsIHZ5X3R4X3JlYWRfdmlldyhpdC0mZ3Q7dHgpLDxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwOyZu YnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHR1 cGxlLCAmYW1wO2Z1bGxfdHVwbGUpICE9IDApPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7 Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdHVwbGUs IHJldCkgIT0gMCk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJz cDtnb3RvIGZhaWw7PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7aWYgKGZ1bGxfdHVwbGUgPT0gTlVM TCkgezxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2lmICgqcmV0ID09IE5VTEwpIHs8YnI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsvKjxicj4mbmJzcDsmbmJzcDsm bmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyAqIEFsbCBpbmRleGVzIG9mIGEgc3BhY2Ug bXVzdCBiZSBjb25zaXN0ZW50LCBpLmUuPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJz cDsmbmJzcDsgJm5ic3A7ICogaWYgYSB0dXBsZSBpcyBwcmVzZW50IGluIG9uZSBpbmRleCwgaXQg bXVzdCBiZTxicj5AQCAtMzkwOCwxMCArMzkwMyw5IEBAIG5leHQ6PGJyPiZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyB2eV9sc21f bmFtZShpdC0mZ3Q7bHNtKSwgdnlfc3RtdF9zdHIodHVwbGUpKTs8YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtnb3RvIG5leHQ7PGJyPiZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDt9PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7KnJldCA9IHR1cGxlX2JsZXNzKGZ1 bGxfdHVwbGUpOzxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3VucmVmKGZ1bGxfdHVwbGUp Ozxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwO2lmICgqcmV0ICE9IE5VTEwpPGJyPi0mbmJzcDsmbmJz cDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAwOzxicj4rJm5ic3A7Jm5ic3A7ICZu YnNwO3R1cGxlX2JsZXNzKCpyZXQpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3VucmVm KCpyZXQpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAwOzxicj4mbmJzcDtmYWlsOjxi cj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dmlueWxfaXRlcmF0b3JfY2xvc2UoaXQpOzxicj4m bmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7cmV0dXJuIC0xOzxicj5AQCAtMzk5NywxNiArMzk5MSwx MiBAQCB2aW55bF9pbmRleF9nZXQoc3RydWN0IGluZGV4ICppbmRleCwgY29uc3QgY2hhciAqa2V5 LDxicj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Y29uc3Qgc3RydWN0IHZ5X3JlYWRfdmlldyAq KnJ2ID0gKHR4ICE9IE5VTEwgPyB2eV90eF9yZWFkX3ZpZXcodHgpIDo8YnI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7 Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsgJmFtcDtlbnYtJmd0O3htLSZn dDtwX2dsb2JhbF9yZWFkX3ZpZXcpOzxicj4mbmJzcDs8YnI+LSZuYnNwOyZuYnNwOyAmbmJzcDtz dHJ1Y3QgdHVwbGUgKnR1cGxlOzxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwO2lmICh2eV9sc21fZnVs bF9ieV9rZXkobHNtLCB0eCwgcnYsIGtleSwgcGFydF9jb3VudCwgJmFtcDt0dXBsZSkgIT0gMCk8 YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpZiAodnlfbHNtX2Z1bGxfYnlfa2V5KGxzbSwgdHgsIHJ2 LCBrZXksIHBhcnRfY291bnQsIHJldCkgIT0gMCk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7PGJyPi08YnI+LSZuYnNwOyZuYnNwOyAmbmJz cDtpZiAodHVwbGUgIT0gTlVMTCkgezxicj4tJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNw OyAmbmJzcDsqcmV0ID0gdHVwbGVfYmxlc3ModHVwbGUpOzxicj4tJm5ic3A7Jm5ic3A7ICZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV91bnJlZih0dXBsZSk7PGJyPi0mbmJzcDsmbmJzcDsg Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVybiAqcmV0ID09IE5VTEwgPyAtMSA6IDA7PGJy PismbmJzcDsmbmJzcDsgJm5ic3A7aWYgKCpyZXQgIT0gTlVMTCkgezxicj4rJm5ic3A7Jm5ic3A7 ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV9ibGVzcygqcmV0KTs8YnI+KyZuYnNwOyZu YnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGVfdW5yZWYoKnJldCk7PGJyPiZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDt9PGJyPi0mbmJzcDsmbmJzcDsgJm5ic3A7KnJldCA9IE5VTEw7 PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+Jm5ic3A7fTxicj4mbmJz cDs8YnI+ZGlmZiAtLWdpdCBhL3Rlc3QvYm94L21pc2MucmVzdWx0IGIvdGVzdC9ib3gvbWlzYy5y ZXN1bHQ8YnI+aW5kZXggOGY5NGY1NTEzLi5mNzcwM2JhOGQgMTAwNjQ0PGJyPi0tLSBhL3Rlc3Qv Ym94L21pc2MucmVzdWx0PGJyPisrKyBiL3Rlc3QvYm94L21pc2MucmVzdWx0PGJyPkBAIC0zMzIs NyArMzMyLDYgQEAgdDs8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5VTktOT1dOX1VQREFU RV9PUCA6IDI4Jzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLldST05HX0NPTExBVElPTl9P UFRJT05TIDogMTUxJzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLkNVUlNPUl9OT19UUkFO U0FDVElPTiA6IDgwJzxicj4tJm5ic3A7IC0gJ2JveC5lcnJvci5UVVBMRV9SRUZfT1ZFUkZMT1cg OiA4Nic8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5BTFRFUl9TRVFVRU5DRSA6IDE0Myc8 YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5JTlZBTElEX1hMT0dfTkFNRSA6IDc1Jzxicj4m bmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLlNBVkVQT0lOVF9FTVBUWV9UWCA6IDYwJzxicj5AQCAt MzYwLDcgKzM1OSw3IEBAIHQ7PGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuVklOWUxfTUFY X1RVUExFX1NJWkUgOiAxMzknPGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuTE9BRF9GVU5D VElPTiA6IDk5Jzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLklOVkFMSURfWExPRyA6IDc0 Jzxicj4tJm5ic3A7IC0gJ2JveC5lcnJvci5QUklWX05PVF9HUkFOVEVEIDogOTEnPGJyPismbmJz cDsgLSAnYm94LmVycm9yLlJFQURfVklFV19BQk9SVEVEIDogMTMwJzxicj4mbmJzcDsmbmJzcDsg LSAnYm94LmVycm9yLlRSQU5TQUNUSU9OX0NPTkZMSUNUIDogOTcnPGJyPiZuYnNwOyZuYnNwOyAt ICdib3guZXJyb3IuR1VFU1RfVVNFUl9QQVNTV09SRCA6IDk2Jzxicj4mbmJzcDsmbmJzcDsgLSAn Ym94LmVycm9yLlBST0NfQyA6IDEwMic8YnI+QEAgLTQwNSw3ICs0MDQsNyBAQCB0Ozxicj4mbmJz cDsmbmJzcDsgLSAnYm94LmVycm9yLmluamVjdGlvbiA6IHRhYmxlOiAmbHQ7YWRkcmVzcyZndDs8 YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5OVUxMQUJMRV9NSVNNQVRDSCA6IDE1Myc8YnI+ Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5MQVNUX0RST1AgOiAxNSc8YnI+LSZuYnNwOyAtICdi b3guZXJyb3IuTk9fU1VDSF9ST0xFIDogODInPGJyPismbmJzcDsgLSAnYm94LmVycm9yLlRVUExF X0ZPUk1BVF9MSU1JVCA6IDE2Jzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLkRFQ09NUFJF U1NJT04gOiAxMjQnPGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuQ1JFQVRFX1NFUVVFTkNF IDogMTQyJzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLkNSRUFURV9VU0VSIDogNDMnPGJy PkBAIC00MTQsNjYgKzQxMyw2NiBAQCB0Ozxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLlNF UVVFTkNFX09WRVJGTE9XIDogMTQ3Jzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLlNZU1RF TSA6IDExNSc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5LRVlfUEFSVF9JU19UT09fTE9O RyA6IDExOCc8YnI+LSZuYnNwOyAtICdib3guZXJyb3IuVFVQTEVfRk9STUFUX0xJTUlUIDogMTYn PGJyPi0mbmJzcDsgLSAnYm94LmVycm9yLkJFRk9SRV9SRVBMQUNFX1JFVCA6IDUzJzxicj4rJm5i c3A7IC0gJ2JveC5lcnJvci5JTkpFQ1RJT04gOiA4Jzxicj4rJm5ic3A7IC0gJ2JveC5lcnJvci5J TlZBTElEX01TR1BBQ0sgOiAyMCc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5OT19TVUNI X1NBVkVQT0lOVCA6IDYxJzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLlRSVU5DQVRFX1NZ U1RFTV9TUEFDRSA6IDEzNyc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5WWV9RVU9UQV9U SU1FT1VUIDogMTM1Jzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLldST05HX0lOREVYX09Q VElPTlMgOiAxMDgnPGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuSU5WQUxJRF9WWUxPR19G SUxFIDogMTMzJzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLklOREVYX0ZJRUxEX0NPVU5U X0xJTUlUIDogMTI3Jzxicj4tJm5ic3A7IC0gJ2JveC5lcnJvci5SRUFEX1ZJRVdfQUJPUlRFRCA6 IDEzMCc8YnI+KyZuYnNwOyAtICdib3guZXJyb3IuUFJJVl9OT1RfR1JBTlRFRCA6IDkxJzxicj4m bmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLlVTRVJfTUFYIDogNTYnPGJyPi0mbmJzcDsgLSAnYm94 LmVycm9yLlBST1RPQ09MIDogMTA0Jzxicj4rJm5ic3A7IC0gJ2JveC5lcnJvci5CRUZPUkVfUkVQ TEFDRV9SRVQgOiA1Myc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5UVVBMRV9OT1RfQVJS QVkgOiAyMic8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5LRVlfUEFSVF9DT1VOVCA6IDMx Jzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLkFMVEVSX1NQQUNFIDogMTInPGJyPiZuYnNw OyZuYnNwOyAtICdib3guZXJyb3IuQUNUSVZFX1RSQU5TQUNUSU9OIDogNzknPGJyPiZuYnNwOyZu YnNwOyAtICdib3guZXJyb3IuRVhBQ1RfRklFTERfQ09VTlQgOiAzOCc8YnI+Jm5ic3A7Jm5ic3A7 IC0gJ2JveC5lcnJvci5EUk9QX1NFUVVFTkNFIDogMTQ0Jzxicj4tJm5ic3A7IC0gJ2JveC5lcnJv ci5JTlZBTElEX01TR1BBQ0sgOiAyMCc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5NT1JF X1RIQU5fT05FX1RVUExFIDogNDEnPGJyPi0mbmJzcDsgLSAnYm94LmVycm9yLlJUUkVFX1JFQ1Qg OiAxMDEnPGJyPi0mbmJzcDsgLSAnYm94LmVycm9yLlNVQl9TVE1UX01BWCA6IDEyMSc8YnI+KyZu YnNwOyAtICdib3guZXJyb3IuVVBTRVJUX1VOSVFVRV9TRUNPTkRBUllfS0VZIDogMTA1Jzxicj4m bmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLlVOS05PV05fUkVRVUVTVF9UWVBFIDogNDgnPGJyPi0m bmJzcDsgLSAnYm94LmVycm9yLlNQQUNFX0VYSVNUUyA6IDEwJzxicj4rJm5ic3A7IC0gJ2JveC5l cnJvci5TVUJfU1RNVF9NQVggOiAxMjEnPGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuUFJP Q19MVUEgOiAzMic8YnI+KyZuYnNwOyAtICdib3guZXJyb3IuU1BBQ0VfRVhJU1RTIDogMTAnPGJy PiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuUk9MRV9OT1RfR1JBTlRFRCA6IDkyJzxicj4rJm5i c3A7IC0gJ2JveC5lcnJvci5VTlNVUFBPUlRFRCA6IDUnPGJyPiZuYnNwOyZuYnNwOyAtICdib3gu ZXJyb3IuTk9fU1VDSF9TUEFDRSA6IDM2Jzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLldS T05HX0lOREVYX1BBUlRTIDogMTA3Jzxicj4tJm5ic3A7IC0gJ2JveC5lcnJvci5EUk9QX1NQQUNF IDogMTEnPGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuTUlOX0ZJRUxEX0NPVU5UIDogMzkn PGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuUkVQTElDQVNFVF9VVUlEX01JU01BVENIIDog NjMnPGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuVVBEQVRFX0ZJRUxEIDogMjknPGJyPism bmJzcDsgLSAnYm94LmVycm9yLklOREVYX0VYSVNUUyA6IDg1Jzxicj4mbmJzcDsmbmJzcDsgLSAn Ym94LmVycm9yLkNPTVBSRVNTSU9OIDogMTE5Jzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9y LklOVkFMSURfT1JERVIgOiA2OCc8YnI+LSZuYnNwOyAtICdib3guZXJyb3IuSU5ERVhfRVhJU1RT IDogODUnPGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuU1BMSUNFIDogMjUnPGJyPiZuYnNw OyZuYnNwOyAtICdib3guZXJyb3IuVU5LTk9XTiA6IDAnPGJyPismbmJzcDsgLSAnYm94LmVycm9y LklERU5USUZJRVIgOiA3MCc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5EUk9QX1BSSU1B UllfS0VZIDogMTcnPGJyPiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuTlVMTEFCTEVfUFJJTUFS WSA6IDE1Mic8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5OT19TVUNIX1NFUVVFTkNFIDog MTQ1Jzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLlJFTE9BRF9DRkcgOiA1OCc8YnI+Jm5i c3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5JTlZBTElEX1VVSUQgOiA2NCc8YnI+LSZuYnNwOyAtICdi b3guZXJyb3IuSU5KRUNUSU9OIDogOCc8YnI+KyZuYnNwOyAtICdib3guZXJyb3IuRFJPUF9TUEFD RSA6IDExJzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLlRJTUVPVVQgOiA3OCc8YnI+LSZu YnNwOyAtICdib3guZXJyb3IuSURFTlRJRklFUiA6IDcwJzxicj4mbmJzcDsmbmJzcDsgLSAnYm94 LmVycm9yLklURVJBVE9SX1RZUEUgOiA3Mic8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5S RVBMSUNBX01BWCA6IDczJzxicj4rJm5ic3A7IC0gJ2JveC5lcnJvci5OT19TVUNIX1JPTEUgOiA4 Mic8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5NSVNTSU5HX1JFUVVFU1RfRklFTEQgOiA2 OSc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5NSVNTSU5HX1NOQVBTSE9UIDogOTMnPGJy PiZuYnNwOyZuYnNwOyAtICdib3guZXJyb3IuV1JPTkdfU1BBQ0VfT1BUSU9OUyA6IDExMSc8YnI+ Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5SRUFET05MWSA6IDcnPGJyPi0mbmJzcDsgLSAnYm94 LmVycm9yLlVOU1VQUE9SVEVEIDogNSc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5VUERB VEVfSU5URUdFUl9PVkVSRkxPVyA6IDk1Jzxicj4rJm5ic3A7IC0gJ2JveC5lcnJvci5SVFJFRV9S RUNUIDogMTAxJzxicj4mbmJzcDsmbmJzcDsgLSAnYm94LmVycm9yLk5PX0NPTk5FQ1RJT04gOiA3 Nyc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5JTlZBTElEX1hMT0dfT1JERVIgOiA3Nic8 YnI+LSZuYnNwOyAtICdib3guZXJyb3IuVVBTRVJUX1VOSVFVRV9TRUNPTkRBUllfS0VZIDogMTA1 Jzxicj4tJm5ic3A7IC0gJ2JveC5lcnJvci5ST0xMQkFDS19JTl9TVUJfU1RNVCA6IDEyMyc8YnI+ Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJvci5XUk9OR19TQ0hFTUFfVkVSU0lPTiA6IDEwOSc8YnI+ LSZuYnNwOyAtICdib3guZXJyb3IuVU5TVVBQT1JURURfSU5ERVhfRkVBVFVSRSA6IDExMic8YnI+ LSZuYnNwOyAtICdib3guZXJyb3IuSU5ERVhfUEFSVF9UWVBFX01JU01BVENIIDogMjQnPGJyPism bmJzcDsgLSAnYm94LmVycm9yLlJPTExCQUNLX0lOX1NVQl9TVE1UIDogMTIzJzxicj4rJm5ic3A7 IC0gJ2JveC5lcnJvci5QUk9UT0NPTCA6IDEwNCc8YnI+Jm5ic3A7Jm5ic3A7IC0gJ2JveC5lcnJv ci5JTlZBTElEX1hMT0dfVFlQRSA6IDEyNSc8YnI+KyZuYnNwOyAtICdib3guZXJyb3IuSU5ERVhf UEFSVF9UWVBFX01JU01BVENIIDogMjQnPGJyPismbmJzcDsgLSAnYm94LmVycm9yLlVOU1VQUE9S VEVEX0lOREVYX0ZFQVRVUkUgOiAxMTInPGJyPiZuYnNwOy4uLjxicj4mbmJzcDt0ZXN0X3J1bjpj bWQoInNldG9wdCBkZWxpbWl0ZXIgJyciKTs8YnI+Jm5ic3A7LS0tPGJyPmRpZmYgLS1naXQgYS90 ZXN0L2JveC9zZWxlY3QucmVzdWx0IGIvdGVzdC9ib3gvc2VsZWN0LnJlc3VsdDxicj5pbmRleCA0 YWVkNzA2MzAuLmIzZWU2Y2Q1NyAxMDA2NDQ8YnI+LS0tIGEvdGVzdC9ib3gvc2VsZWN0LnJlc3Vs dDxicj4rKysgYi90ZXN0L2JveC9zZWxlY3QucmVzdWx0PGJyPkBAIC02MTksMzEgKzYxOSw2MiBA QCBjb2xsZWN0Z2FyYmFnZSgnY29sbGVjdCcpPGJyPiZuYnNwOy0tLTxicj4mbmJzcDstIDA8YnI+ Jm5ic3A7Li4uPGJyPistLSBnaC0zMjI0IHJlc3VycmVjdCB0dXBsZSBiaWdyZWZzPGJyPitjb2xs ZWN0Z2FyYmFnZSgnc3RvcCcpPGJyPistLS08YnI+Ky0gMDxicj4rLi4uPGJyPiZuYnNwO3MgPSBi b3guc2NoZW1hLnNwYWNlLmNyZWF0ZSgnc2VsZWN0JywgeyB0ZW1wb3JhcnkgPSB0cnVlIH0pPGJy PiZuYnNwOy0tLTxicj4mbmJzcDsuLi48YnI+Jm5ic3A7aW5kZXggPSBzOmNyZWF0ZV9pbmRleCgn cHJpbWFyeScsIHsgdHlwZSA9ICd0cmVlJyB9KTxicj4mbmJzcDstLS08YnI+Jm5ic3A7Li4uPGJy Pi1hID0gczppbnNlcnR7MH08YnI+K18gPSBzOmluc2VydHswfTxicj4rLS0tPGJyPisuLi48YnI+ K18gPSBzOmluc2VydHsxfTxicj4rLS0tPGJyPisuLi48YnI+K18gPSBzOmluc2VydHsyfTxicj4r LS0tPGJyPisuLi48YnI+K18gPSBzOmluc2VydHszfTxicj4rLS0tPGJyPisuLi48YnI+K2xvdHNf b2ZfbGlua3MgPSBzZXRtZXRhdGFibGUoe30sIHtfX21vZGUgPSAndid9KTxicj4mbmJzcDstLS08 YnI+Jm5ic3A7Li4uPGJyPi1sb3RzX29mX2xpbmtzID0ge308YnI+K2kgPSAwPGJyPistLS08YnI+ Ky4uLjxicj4rd2hpbGUgKGkgJmx0OyAzMzAwMCkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlu a3MsIHM6Z2V0ezB9KSBpID0gaSArIDEgZW5kPGJyPistLS08YnI+Ky4uLjxicj4rd2hpbGUgKGkg Jmx0OyA2NjAwMCkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlua3MsIHM6Z2V0ezF9KSBpID0g aSArIDEgZW5kPGJyPistLS08YnI+Ky4uLjxicj4rd2hpbGUgKGkgJmx0OyAxMDAwMDApIGRvIHRh YmxlLmluc2VydChsb3RzX29mX2xpbmtzLCBzOmdldHsyfSkgaSA9IGkgKyAxIGVuZDxicj4mbmJz cDstLS08YnI+Jm5ic3A7Li4uPGJyPiZuYnNwO3JlZl9jb3VudCA9IDA8YnI+Jm5ic3A7LS0tPGJy PiZuYnNwOy4uLjxicj4td2hpbGUgKHRydWUpIGRvIHRhYmxlLmluc2VydChsb3RzX29mX2xpbmtz LCBzOmdldHswfSkgcmVmX2NvdW50ID0gcmVmX2NvdW50ICsgMSBlbmQ8YnI+K2ZvciBrLCB2IGlu IHBhaXJzKGxvdHNfb2ZfbGlua3MpIGRvIHJlZl9jb3VudCA9IHJlZl9jb3VudCArIDEgZW5kPGJy PiZuYnNwOy0tLTxicj4tLSBlcnJvcjogVHVwbGUgcmVmZXJlbmNlIGNvdW50ZXIgb3ZlcmZsb3c8 YnI+Jm5ic3A7Li4uPGJyPiZuYnNwO3JlZl9jb3VudDxicj4mbmJzcDstLS08YnI+LS0gNjU1MzE8 YnI+Ky0gMTAwMDAwPGJyPiZuYnNwOy4uLjxicj4tbG90c19vZl9saW5rcyA9IHt9PGJyPistLSBj aGVjayB0aGF0IHR1cGxlcyBhcmUgZGVsZXRlZCBhZnRlciBnYyBpcyBhY3RpdmF0ZWQ8YnI+K2Nv bGxlY3RnYXJiYWdlKCdjb2xsZWN0Jyk8YnI+Jm5ic3A7LS0tPGJyPistIDA8YnI+Ky4uLjxicj4r bG90c19vZl9saW5rczxicj4rLS0tPGJyPistIFtdPGJyPiZuYnNwOy4uLjxicj4mbmJzcDtzOmRy b3AoKTxicj4mbmJzcDstLS08YnI+ZGlmZiAtLWdpdCBhL3Rlc3QvYm94L3NlbGVjdC50ZXN0Lmx1 YSBiL3Rlc3QvYm94L3NlbGVjdC50ZXN0Lmx1YTxicj5pbmRleCA1NGMyZWNjMWMuLjM0MDBiZGFm ZSAxMDA2NDQ8YnI+LS0tIGEvdGVzdC9ib3gvc2VsZWN0LnRlc3QubHVhPGJyPisrKyBiL3Rlc3Qv Ym94L3NlbGVjdC50ZXN0Lmx1YTxicj5AQCAtMTI0LDEyICsxMjQsMjUgQEAgdGVzdC5yYW5kb20o cy5pbmRleFswXSwgNDgpPGJyPiZuYnNwO3M6ZHJvcCgpPGJyPiZuYnNwOzxicj4mbmJzcDtjb2xs ZWN0Z2FyYmFnZSgnY29sbGVjdCcpPGJyPis8YnI+Ky0tIGdoLTMyMjQgcmVzdXJyZWN0IHR1cGxl IGJpZ3JlZnM8YnI+Kzxicj4rY29sbGVjdGdhcmJhZ2UoJ3N0b3AnKTxicj4mbmJzcDtzID0gYm94 LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3NlbGVjdCcsIHsgdGVtcG9yYXJ5ID0gdHJ1ZSB9KTxicj4m bmJzcDtpbmRleCA9IHM6Y3JlYXRlX2luZGV4KCdwcmltYXJ5JywgeyB0eXBlID0gJ3RyZWUnIH0p PGJyPi1hID0gczppbnNlcnR7MH08YnI+LWxvdHNfb2ZfbGlua3MgPSB7fTxicj4rXyA9IHM6aW5z ZXJ0ezB9PGJyPitfID0gczppbnNlcnR7MX08YnI+K18gPSBzOmluc2VydHsyfTxicj4rXyA9IHM6 aW5zZXJ0ezN9PGJyPitsb3RzX29mX2xpbmtzID0gc2V0bWV0YXRhYmxlKHt9LCB7X19tb2RlID0g J3YnfSk8YnI+K2kgPSAwPGJyPit3aGlsZSAoaSAmbHQ7IDMzMDAwKSBkbyB0YWJsZS5pbnNlcnQo bG90c19vZl9saW5rcywgczpnZXR7MH0pIGkgPSBpICsgMSBlbmQ8YnI+K3doaWxlIChpICZsdDsg NjYwMDApIGRvIHRhYmxlLmluc2VydChsb3RzX29mX2xpbmtzLCBzOmdldHsxfSkgaSA9IGkgKyAx IGVuZDxicj4rd2hpbGUgKGkgJmx0OyAxMDAwMDApIGRvIHRhYmxlLmluc2VydChsb3RzX29mX2xp bmtzLCBzOmdldHsyfSkgaSA9IGkgKyAxIGVuZDxicj4mbmJzcDtyZWZfY291bnQgPSAwPGJyPi13 aGlsZSAodHJ1ZSkgZG8gdGFibGUuaW5zZXJ0KGxvdHNfb2ZfbGlua3MsIHM6Z2V0ezB9KSByZWZf Y291bnQgPSByZWZfY291bnQgKyAxIGVuZDxicj4rZm9yIGssIHYgaW4gcGFpcnMobG90c19vZl9s aW5rcykgZG8gcmVmX2NvdW50ID0gcmVmX2NvdW50ICsgMSBlbmQ8YnI+Jm5ic3A7cmVmX2NvdW50 PGJyPi1sb3RzX29mX2xpbmtzID0ge308YnI+Ky0tIGNoZWNrIHRoYXQgdHVwbGVzIGFyZSBkZWxl dGVkIGFmdGVyIGdjIGlzIGFjdGl2YXRlZDxicj4rY29sbGVjdGdhcmJhZ2UoJ2NvbGxlY3QnKTxi cj4rbG90c19vZl9saW5rczxicj4mbmJzcDtzOmRyb3AoKTxicj5kaWZmIC0tZ2l0IGEvdGVzdC91 bml0L0NNYWtlTGlzdHMudHh0IGIvdGVzdC91bml0L0NNYWtlTGlzdHMudHh0PGJyPmluZGV4IGRi YzAyY2RmMC4uYWVmNTMxNjAwIDEwMDY0NDxicj4tLS0gYS90ZXN0L3VuaXQvQ01ha2VMaXN0cy50 eHQ8YnI+KysrIGIvdGVzdC91bml0L0NNYWtlTGlzdHMudHh0PGJyPkBAIC0xOTIsMyArMTkyLDYg QEAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHZ5X2NhY2hlLnRlc3QgJHtJVEVSQVRPUl9URVNUX0xJ QlN9KTxicj4mbmJzcDs8YnI+Jm5ic3A7YWRkX2V4ZWN1dGFibGUoY29sbC50ZXN0IGNvbGwuY3Bw KTxicj4mbmJzcDt0YXJnZXRfbGlua19saWJyYXJpZXMoY29sbC50ZXN0IGNvcmUgdW5pdCAke0lD VV9MSUJSQVJJRVN9IG1pc2MpPGJyPis8YnI+K2FkZF9leGVjdXRhYmxlKHR1cGxlX2JpZ3JlZi50 ZXN0IHR1cGxlX2JpZ3JlZi5jKTxicj4rdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHR1cGxlX2JpZ3Jl Zi50ZXN0IHR1cGxlIHVuaXQpPGJyPmRpZmYgLS1naXQgYS90ZXN0L3VuaXQvdHVwbGVfYmlncmVm LmMgYi90ZXN0L3VuaXQvdHVwbGVfYmlncmVmLmM8YnI+bmV3IGZpbGUgbW9kZSAxMDA2NDQ8YnI+ aW5kZXggMDAwMDAwMDAwLi4xNTRjMTBhYzE8YnI+LS0tIC9kZXYvbnVsbDxicj4rKysgYi90ZXN0 L3VuaXQvdHVwbGVfYmlncmVmLmM8YnI+QEAgLTAsMCArMSwxNzkgQEA8YnI+KyNpbmNsdWRlICJt ZW1vcnkuaCI8YnI+KyNpbmNsdWRlICJmaWJlci5oIjxicj4rI2luY2x1ZGUgInR1cGxlLmgiPGJy PisjaW5jbHVkZSAidW5pdC5oIjxicj4rI2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7PGJyPis8YnI+ K2VudW0gezxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO0JJR1JFRl9ESUZGID0gMTAsPGJyPismbmJz cDsmbmJzcDsgJm5ic3A7QklHUkVGX0NPVU5UID0gNzAwMDMsPGJyPismbmJzcDsmbmJzcDsgJm5i c3A7QklHUkVGX0NBUEFDSVRZID0gMTA3LDxicj4rfTs8YnI+Kzxicj4rc3RhdGljIGNoYXIgdHVw bGVfYnVmWzY0XTs8YnI+K3N0YXRpYyBjaGFyICp0dXBsZV9lbmQgPSB0dXBsZV9idWY7PGJyPis8 YnI+Ky8qKjxicj4rICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIG5ldyB0dXBsZSB3aXRoIHJlZnMg PT0gMS48YnI+KyAqLzxicj4rc3RhdGljIGlubGluZSBzdHJ1Y3QgdHVwbGUgKjxicj4rY3JlYXRl X3R1cGxlKCk8YnI+K3s8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtzdHJ1Y3QgdHVwbGUgKnJldCA9 PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX25ldyhib3hf dHVwbGVfZm9ybWF0X2RlZmF1bHQoKSwgdHVwbGVfYnVmLCB0dXBsZV9lbmQpOzxicj4rJm5ic3A7 Jm5ic3A7ICZuYnNwO3R1cGxlX3JlZihyZXQpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO3JldHVy biByZXQ7PGJyPit9PGJyPis8YnI+Ky8qKjxicj4rICogVGhpcyB0ZXN0IHBlcmZvcm1zIG92ZXJh bGwgY2hlY2sgb2YgYmlncmVmcy48YnI+KyAqIFdoYXQgaXQgY2hlY2tzOjxicj4rICogMSkgVGls bCByZWZzICZsdDs9IFRVUExFX1JFRl9NQVggaXQgc2hvd3MgbnVtYmVyIG9mIHJlZnM8YnI+KyAq IG9mIHR1cGxlIGFuZCBpdCBpc24ndCBhIGJpZ3JlZi48YnI+KyAqIDIpIFdoZW4gcmVmcyAmZ3Q7 IFRVUExFX1JFRl9NQVggZmlyc3QgMTUgYml0cyBvZiBpdCBiZWNvbWVzPGJyPisgKiBpbmRleCBv ZiBiaWdyZWYgYW5kIHRoZSBsYXN0IGJpdCBiZWNvbWVzIHRydWUgd2hpY2g8YnI+KyAqIHNob3dz IHRoYXQgaXQgaXMgYmlncmVmLjxicj4rICogMykgRWFjaCBvZiB0dXBsZSBoYXMgaXRzIG93biBu dW1iZXIgb2YgcmVmcywgYnV0IGFsbDxicj4rICogdGhlc2UgbnVtYmVycyBtb3JlIHRoYW4gaXQg aXMgbmVlZGVkIGZvciBnZXR0aW5nIGEgYmlncmVmLjxicj4rICogNCkgSW5kZXhlcyBvZiBiaWdy ZWZzIGFyZSBnaXZlbiBzZXF1ZW50aWFsbHkuPGJyPisgKiA1KSBBZnRlciBzb21lIHR1cGxlcyBh cmUgc2VxdWVudGlhbGx5IGRlbGV0ZWQgYWxsIG9mPGJyPisgKiBvdGhlcnMgYmlncmVmcyBhcmUg ZmluZS4gSW4gdGhpcyB0ZXN0IEJJR1JFRl9DQVBBQ0lUWTxicj4rICogdHVwbGVzIGNyZWF0ZWQg YW5kIGVhY2ggb2YgdGhlaXIgcmVmIGNvdW50ZXIgaW5jcmVhc2VkPGJyPisgKiB0byAoQklHUkVG X0NPVU5UIC0gaW5kZXggb2YgdHVwbGUpLiBUdXBsZXMgYXJlIGNyZWF0ZWQ8YnI+KyAqIGNvbnNp c3RlbnRseS48YnI+KyAqLzxicj4rc3RhdGljIHZvaWQ8YnI+K3Rlc3RfYmlncmVmc18xKCk8YnI+ K3s8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtwcmludGYoIlRlc3QxOiBPdmVyYWxsIGNoZWNrIG9m IGJpZ3JlZnMuXG4iKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDt1aW50MTZfdCBjb3VudGVyID0g MDs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtzdHJ1Y3QgdHVwbGUgKip0dXBsZXMgPSAoc3RydWN0 IHR1cGxlICoqKSBtYWxsb2MoQklHUkVGX0NBUEFDSVRZICo8YnI+KyZuYnNwOyZuYnNwOyAmbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJz cDsgc2l6ZW9mKCp0dXBsZXMpKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtmb3IoaW50IGkgPSAw OyBpICZsdDsgQklHUkVGX0NBUEFDSVRZOyArK2kpPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5i c3A7Jm5ic3A7ICZuYnNwO3R1cGxlc1tpXSA9IGNyZWF0ZV90dXBsZSgpOzxicj4rJm5ic3A7Jm5i c3A7ICZuYnNwO2ZvcihpbnQgaSA9IDA7IGkgJmx0OyBCSUdSRUZfQ0FQQUNJVFk7ICsraSk8YnI+ KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Y291bnRlciArPSB0dXBsZXNb aV0tJmd0O3JlZnMgPT0gMTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpcyhjb3VudGVyLCBCSUdS RUZfQ0FQQUNJVFksICJBbGwgdHVwbGVzIGhhdmUgcmVmcyA9PSAxLiIpOzxicj4rJm5ic3A7Jm5i c3A7ICZuYnNwO2ZvcihpbnQgaSA9IDA7IGkgJmx0OyBCSUdSRUZfQ0FQQUNJVFk7ICsraSkgezxi cj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtmb3IoaW50IGogPSAxOyBq ICZsdDsgVFVQTEVfUkVGX01BWDsgKytqKTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGVfcmVmKHR1cGxlc1tpXSk7PGJyPism bmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3JlZih0dXBsZXNbaV0p Ozxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtmb3IoaW50IGogPSBU VVBMRV9SRUZfTUFYICsgMTsgaiAmbHQ7IEJJR1JFRl9DT1VOVCAtIGk7ICsraik8YnI+KyZuYnNw OyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxl X3JlZih0dXBsZXNbaV0pOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO308YnI+KyZuYnNwOyZuYnNw OyAmbmJzcDtjb3VudGVyID0gMDs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtmb3IoaW50IGkgPSAw OyBpICZsdDsgQklHUkVGX0NBUEFDSVRZOyArK2kpPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5i c3A7Jm5ic3A7ICZuYnNwO2NvdW50ZXIgKz0gdHVwbGVzW2ldLSZndDtpc19iaWdyZWYgPT0gdHJ1 ZTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpcyhjb3VudGVyLCBCSUdSRUZfQ0FQQUNJVFksICJB bGwgdHVwbGVzIGhhdmUgYmlncmVmcy4iKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtjb3VudGVy ID0gMDs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtmb3IoaW50IGkgPSAwOyBpICZsdDsgQklHUkVG X0NBUEFDSVRZOyArK2kpIHs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5i c3A7Zm9yKGludCBqID0gMTsgaiAmbHQ7IEJJR1JFRl9DT1VOVCAtIGk7ICsraik8YnI+KyZuYnNw OyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxl X3VucmVmKHR1cGxlc1tpXSk7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZu YnNwO2NvdW50ZXIgKz0gdHVwbGVzW2ldLSZndDtyZWZzID09IDE7PGJyPismbmJzcDsmbmJzcDsg Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3VucmVmKHR1cGxlc1tpXSk7PGJyPismbmJz cDsmbmJzcDsgJm5ic3A7fTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2lzKGNvdW50ZXIsIEJJR1JF Rl9DQVBBQ0lUWSwgIkFsbCB0dXBsZXMgd2VyZSBkZWxldGVkLiIpOzxicj4rJm5ic3A7Jm5ic3A7 ICZuYnNwO2ZyZWUodHVwbGVzKTs8YnI+K308YnI+Kzxicj4rLyoqPGJyPisgKiBUaGlzIHRlc3Qg Y2hlY2tzIHRoYXQgYmlncmVmcyB3b3JrcyBmaW5lIGFmdGVyIGJlaW5nPGJyPisgKiBjcmVhdGVk IGFuZCBkZXN0cm95ZWQgMiB0aW1lcy48YnI+KyAqLzxicj4rc3RhdGljIHZvaWQ8YnI+K3Rlc3Rf YmlncmVmc18yKCk8YnI+K3s8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtwcmludGYoIlRlc3QgMjog Q3JlYXRlL2Rlc3Ryb3kgdGVzdC5cbiIpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO3N0cnVjdCB0 dXBsZSAqdHVwbGUgPSBjcmVhdGVfdHVwbGUoKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtmb3Io aW50IGogPSAxOyBqICZsdDsgQklHUkVGX0NPVU5UOyArK2opPGJyPismbmJzcDsmbmJzcDsgJm5i c3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3JlZih0dXBsZSk7PGJyPismbmJzcDsmbmJzcDsg Jm5ic3A7b2sodHVwbGUtJmd0O3JlZnMgJmFtcDsmYW1wOyB0dXBsZS0mZ3Q7cmVmX2luZGV4ID09 IDAsPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICJUdXBsZSBiZWNvbWVzIGJp Z3JlZiBmaXJzdCB0aW1lIHdpdGggcmVmX2luZGV4ID09IDAuIik7PGJyPismbmJzcDsmbmJzcDsg Jm5ic3A7Zm9yKGludCBqID0gMTsgaiAmbHQ7IEJJR1JFRl9DT1VOVDsgKytqKTxicj4rJm5ic3A7 Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV91bnJlZih0dXBsZSk7PGJyPism bmJzcDsmbmJzcDsgJm5ic3A7Zm9yKGludCBqID0gMTsgaiAmbHQ7IEJJR1JFRl9DT1VOVDsgKytq KTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV9yZWYodHVw bGUpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO29rKHR1cGxlLSZndDtyZWZzICZhbXA7JmFtcDsg dHVwbGUtJmd0O3JlZl9pbmRleCA9PSAwLDxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZu YnNwOyAiVHVwbGUgYmVjb21lcyBiaWdyZWYgc2Vjb25kIHRpbWUgd2l0aCByZWZfaW5kZXggPT0g MC4iKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtmb3IoaW50IGogPSAxOyBqICZsdDsgQklHUkVG X0NPVU5UOyArK2opPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1 cGxlX3VucmVmKHR1cGxlKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV91bnJlZih0dXBs ZSk7PGJyPit9PGJyPis8YnI+Ky8qKjxicj4rICogVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGluZGV4 ZXMgYXJlIGdpdmVuIGFzPGJyPisgKiBpbnRlbmRlZC48YnI+KyAqLzxicj4rc3RhdGljIHZvaWQ8 YnI+K3Rlc3RfYmlncmVmc18zKCk8YnI+K3s8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtwcmludGYo IlRlc3QzOiBOb24tY29uc2lzdGVudCBpbmRleGVzIHRlc3QuXG4iKTs8YnI+KyZuYnNwOyZuYnNw OyAmbmJzcDt1aW50MTZfdCBjb3VudGVyID0gMDs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDt1aW50 MTZfdCBtYXhfaW5kZXggPSBCSUdSRUZfQ0FQQUNJVFkgLyBCSUdSRUZfRElGRjs8YnI+KyZuYnNw OyZuYnNwOyAmbmJzcDtzdHJ1Y3QgdHVwbGUgKip0dXBsZXMgPSAoc3RydWN0IHR1cGxlICoqKSBt YWxsb2MoQklHUkVGX0NBUEFDSVRZICo8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJz cDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJz cDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgc2l6ZW9mKCp0 dXBsZXMpKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDt1aW50MTZfdCAqaW5kZXhlcyA9ICh1aW50 MTZfdCAqKSBtYWxsb2MgKHNpemVvZigqaW5kZXhlcykgKjxicj4rJm5ic3A7Jm5ic3A7ICZuYnNw OyZuYnNwOyZuYnNwOyAmbmJzcDsobWF4X2luZGV4ICsgMSkpOzxicj4rJm5ic3A7Jm5ic3A7ICZu YnNwO2ZvcihpbnQgaSA9IDA7IGkgJmx0OyBCSUdSRUZfQ0FQQUNJVFk7ICsraSk8YnI+KyZuYnNw OyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGVzW2ldID0gY3JlYXRlX3R1cGxl KCk7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Zm9yKGludCBpID0gMDsgaSAmbHQ7IEJJR1JFRl9D QVBBQ0lUWTsgKytpKSB7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNw O2ZvcihpbnQgaiA9IDE7IGogJmx0OyBCSUdSRUZfQ09VTlQ7ICsraik8YnI+KyZuYnNwOyZuYnNw OyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO3R1cGxlX3JlZih0 dXBsZXNbaV0pOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtjb3Vu dGVyICs9IHR1cGxlc1tpXS0mZ3Q7aXNfYmlncmVmID09IHRydWU7PGJyPismbmJzcDsmbmJzcDsg Jm5ic3A7fTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2lzKGNvdW50ZXIsIEJJR1JFRl9DQVBBQ0lU WSwgIkFsbCB0dXBsZXMgaGF2ZSBiaWdyZWZzLiIpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2Nv dW50ZXIgPSAwOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2ZvcihpbnQgaSA9IDA7IGkgJmx0OyBC SUdSRUZfQ0FQQUNJVFk7IGkgKz0gQklHUkVGX0RJRkYpIHs8YnI+KyZuYnNwOyZuYnNwOyAmbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7aW5kZXhlc1tjb3VudGVyXSA9IHR1cGxlc1tpXS0mZ3Q7cmVm X2luZGV4Ozxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtmb3IoaW50 IGogPSAxOyBqICZsdDsgQklHUkVGX0NPVU5UOyArK2opPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7 Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV91bnJlZih0dXBsZXNb aV0pOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDthc3NlcnQoIXR1 cGxlc1tpXS0mZ3Q7aXNfYmlncmVmKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJz cDsgJm5ic3A7Y291bnRlcisrOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO308YnI+KyZuYnNwOyZu YnNwOyAmbmJzcDtpcyhjb3VudGVyLCBtYXhfaW5kZXggKyAxLCAiJWQgdHVwbGVzIGRvbid0IGhh dmUgYmlncmVmcyAiXDxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAiYW5kIGFs bCBvdGhlciB0dXBsZXMgaGF2ZSIsIG1heF9pbmRleCArIDEpOzxicj4rJm5ic3A7Jm5ic3A7ICZu YnNwO2NvdW50ZXIgPSAwOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwO2ZvcihpbnQgaSA9IDA7IGkg Jmx0OyBCSUdSRUZfQ0FQQUNJVFk7IGkgKz0gQklHUkVGX0RJRkYpIHs8YnI+KyZuYnNwOyZuYnNw OyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7YXNzZXJ0KHR1cGxlc1tpXS0mZ3Q7cmVmcyA9PSAx KTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Zm9yKGludCBqID0g MTsgaiAmbHQ7IEJJR1JFRl9DT1VOVDsgKytqKTxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNw OyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGVfcmVmKHR1cGxlc1tpXSk7PGJy PismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO2Fzc2VydCh0dXBsZXNbaV0t Jmd0O2lzX2JpZ3JlZiAmYW1wOyZhbXA7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5i c3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB0dXBsZXNbaV0t Jmd0O3JlZl9pbmRleCA9PSBpbmRleGVzW21heF9pbmRleCAtIGNvdW50ZXJdKTs8YnI+KyZuYnNw OyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Kytjb3VudGVyOzxicj4rJm5ic3A7Jm5i c3A7ICZuYnNwO308YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtpcyhjb3VudGVyLCBtYXhfaW5kZXgg KyAxLCAiQWxsIHR1cGxlcyBoYXZlIGJpZ3JlZnMgYW5kICJcPGJyPismbmJzcDsmbmJzcDsgJm5i c3A7Jm5ic3A7Jm5ic3A7ICJ0aGVpciBpbmRleGVzIGFyZSBpbiByaWdodCBvcmRlci4iKTs8YnI+ KyZuYnNwOyZuYnNwOyAmbmJzcDtmb3IgKGludCBpID0gMDsgaSAmbHQ7IEJJR1JFRl9DQVBBQ0lU WTsgKytpKSB7PGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwO2ZvciAo aW50IGogPSAxOyBqICZsdDsgQklHUkVGX0NPVU5UOyArK2opPGJyPismbmJzcDsmbmJzcDsgJm5i c3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDt0dXBsZV91bnJlZih0dXBs ZXNbaV0pOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDthc3NlcnQo dHVwbGVzW2ldLSZndDtyZWZzID09IDEpOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZu YnNwOyAmbmJzcDt0dXBsZV91bnJlZih0dXBsZXNbaV0pOzxicj4rJm5ic3A7Jm5ic3A7ICZuYnNw O308YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtmcmVlKGluZGV4ZXMpOzxicj4rJm5ic3A7Jm5ic3A7 ICZuYnNwO2ZyZWUodHVwbGVzKTs8YnI+K308YnI+Kzxicj4raW50PGJyPittYWluKCk8YnI+K3s8 YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtoZWFkZXIoKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDtw bGFuKDkpOzxicj4rPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7bWVtb3J5X2luaXQoKTs8YnI+KyZu YnNwOyZuYnNwOyAmbmJzcDtmaWJlcl9pbml0KGZpYmVyX2NfaW52b2tlKTs8YnI+KyZuYnNwOyZu YnNwOyAmbmJzcDt0dXBsZV9pbml0KE5VTEwpOzxicj4rPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7 dHVwbGVfZW5kID0gbXBfZW5jb2RlX2FycmF5KHR1cGxlX2VuZCwgMSk7PGJyPismbmJzcDsmbmJz cDsgJm5ic3A7dHVwbGVfZW5kID0gbXBfZW5jb2RlX3VpbnQodHVwbGVfZW5kLCAyKTs8YnI+Kzxi cj4rJm5ic3A7Jm5ic3A7ICZuYnNwO3Rlc3RfYmlncmVmc18xKCk7PGJyPismbmJzcDsmbmJzcDsg Jm5ic3A7dGVzdF9iaWdyZWZzXzIoKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDt0ZXN0X2JpZ3Jl ZnNfMygpOzxicj4rPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7dHVwbGVfZnJlZSgpOzxicj4rJm5i c3A7Jm5ic3A7ICZuYnNwO2ZpYmVyX2ZyZWUoKTs8YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDttZW1v cnlfZnJlZSgpOzxicj4rPGJyPismbmJzcDsmbmJzcDsgJm5ic3A7Zm9vdGVyKCk7PGJyPismbmJz cDsmbmJzcDsgJm5ic3A7Y2hlY2tfcGxhbigpOzxicj4rfTxicj5kaWZmIC0tZ2l0IGEvdGVzdC91 bml0L3R1cGxlX2JpZ3JlZi5yZXN1bHQgYi90ZXN0L3VuaXQvdHVwbGVfYmlncmVmLnJlc3VsdDxi cj5uZXcgZmlsZSBtb2RlIDEwMDY0NDxicj5pbmRleCAwMDAwMDAwMDAuLjdlODY5NGUxNTxicj4t LS0gL2Rldi9udWxsPGJyPisrKyBiL3Rlc3QvdW5pdC90dXBsZV9iaWdyZWYucmVzdWx0PGJyPkBA IC0wLDAgKzEsMTUgQEA8YnI+KyMgTG9va3MgbGlrZSB5b3UgcGxhbm5lZCA5IHRlc3RzIGJ1dCBy YW4gOC48YnI+KyZuYnNwOyZuYnNwOyAmbmJzcDsqKiogbWFpbiAqKio8YnI+KzEuLjk8YnI+K1Rl c3QxOiBPdmVyYWxsIGNoZWNrIG9mIGJpZ3JlZnMuPGJyPitvayAxIC0gQWxsIHR1cGxlcyBoYXZl IHJlZnMgPT0gMS48YnI+K29rIDIgLSBBbGwgdHVwbGVzIGhhdmUgYmlncmVmcy48YnI+K29rIDMg LSBBbGwgdHVwbGVzIHdlcmUgZGVsZXRlZC48YnI+K1Rlc3QgMjogQ3JlYXRlL2Rlc3Ryb3kgdGVz dC48YnI+K29rIDQgLSBUdXBsZSBiZWNvbWVzIGJpZ3JlZiBmaXJzdCB0aW1lIHdpdGggcmVmX2lu ZGV4ID09IDAuPGJyPitvayA1IC0gVHVwbGUgYmVjb21lcyBiaWdyZWYgc2Vjb25kIHRpbWUgd2l0 aCByZWZfaW5kZXggPT0gMC48YnI+K1Rlc3QzOiBOb24tY29uc2lzdGVudCBpbmRleGVzIHRlc3Qu PGJyPitvayA2IC0gQWxsIHR1cGxlcyBoYXZlIGJpZ3JlZnMuPGJyPitvayA3IC0gMTEgdHVwbGVz IGRvbid0IGhhdmUgYmlncmVmcyBhbmQgYWxsIG90aGVyIHR1cGxlcyBoYXZlPGJyPitvayA4IC0g QWxsIHR1cGxlcyBoYXZlIGJpZ3JlZnMgYW5kIHRoZWlyIGluZGV4ZXMgYXJlIGluIHJpZ2h0IG9y ZGVyLjxicj4rJm5ic3A7Jm5ic3A7ICZuYnNwOyoqKiBtYWluOiBkb25lICoqKjxicj48YnI+PGJy PjwvQk9EWT48L0hUTUw+Cg== ----ALT--xqTC9BIjQxsRdlqNtktW4ysmAIeZ6NCJ1528569664--