From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 2C17F3858D1E; Fri, 13 Oct 2023 13:30:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2C17F3858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-CSE-ConnectionGUID: CdlZslONQCOBAeaZTUq7VA== X-CSE-MsgGUID: 93hJi0p6Qre+wqpO8Jg2OQ== X-IronPort-AV: E=Sophos;i="6.03,222,1694764800"; d="diff'?scan'208";a="21724316" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 13 Oct 2023 05:29:59 -0800 IronPort-SDR: vbbugToQMvQ3EF2YC8j5vpfmTXagdATTmKYpHKjFh2FbSEueCUxQ+ADyXyKyS/zSfAdYGw0/tz Fj+FQceYtDEQ895m5+UYDCSVBKpsNy9iwxIrsBsyKlCy63DwGYy3UWO3Y8um7Eq9Q74Uxj890U 3XXTDP/I6+gANKwYd/pkVqS5iSZkGnsiTrsPfKsIhuXAi4uUWPksOvnUBhQD7EtnKTDQrK/BzF /+3KSVxbVMRgQ6HELHLPE/PJX7f+Q9mO4Hoa1gsANpdUpYxk/qsmjbGuZ+Trtq95dzwJYZuGSr Jdw= Content-Type: multipart/mixed; boundary="------------t0kzbXjw30FOpk0alaiVx91M" Message-ID: <7f16971c-ff06-4e48-85e2-5b38828b7bc2@codesourcery.com> Date: Fri, 13 Oct 2023 15:29:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [Patch] Fortran: Support OpenMP's 'allocate' directive for stack vars Content-Language: en-US To: Jakub Jelinek CC: gcc-patches , fortran References: <457ea120-5cca-48e0-89d6-c3eab4234b61@codesourcery.com> From: Tobias Burnus In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SCC_5_SHORT_WORD_LINES,SPF_HELO_PASS,SPF_PASS,TXREP,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------t0kzbXjw30FOpk0alaiVx91M Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 13.10.23 13:01, Jakub Jelinek wrote: > On Tue, Oct 10, 2023 at 06:46:35PM +0200, Tobias Burnus wrote: > +++ b/gcc/gimplify.cc >> @@ -1400,23 +1400,53 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pr= e_p) >> + else if (errorcount >> + || (align =3D=3D NULL_TREE >> + && alloc !=3D NULL_TREE >> + && integer_onep (alloc))) >> + DECL_ATTRIBUTES (t) =3D remove_attribute ("omp allocate", >> + DECL_ATTRIBUTES (t)= ); > Probably already preexisting, by I wonder how safe remove_attribute is. > Aren't attributes shared in some cases > (like __attribute__((attr1, attr2, attr3)) int a, b, c, d;)? I think there should be no problem =E2=80=93 new attributes get added as: DECL_ATTRIBUTES (var) =3D tree_cons (get_identifier ("omp allocate"), t, DECL_ATTRIBUTES (var)); Thus, attr =3D DECL_ATTRIBUTES (var) is not shared, even if TREE_CHAIN (attr) might be shared. Thus, as long as new attributes get added at the head of the chain, there should be no issue. And "omp allocate" is added once per decl and is therefore not shared - removing might create again a shared tree, but any following 'tree_cons' will again unshare it. I think in your case, there would be indeed a problem when doing: 'tree attr =3D remove_attr (...("attr2") ...)' as this would remove "attr2" for 4 decls. * * * However, as 'omp allocate' is not used later on, I also do not need to remove it. =3D> Updated patch attached + interdiff for gimplify.cc attached. Changes: * Condition now the same as previously * Keep 'omp allocate' also for DECL_VALUE_EXPR variable * Add assert that we either have Fortran's expression the GOMP_FREE location - or a DECL_VALUE_EXPR. * Make use of the assertion by keeping the HAS_DECL_VALUE expr below; this avoids adding an align/allocator =3D=3D default check. =3D> same code as old code, except for creating + using 'v' variable and adding a clobber. * * * > Otherwise LGTM (though, I didn't spot anything about allocatables in the > patch, am I just looking wrong or are they still unsupported)? It's unsupported =E2=80=93 albeit Chung-Lin has some patch for it. The code= path is completely different. It already starts by 'omp allocators' (+ legacy: 'omp allocate') being not declarative but executable and associated with a Fortran 'allocate' statement and ... Sorry for being slow - but I keep getting distracted by other tasks ... Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------t0kzbXjw30FOpk0alaiVx91M Content-Type: text/x-patch; charset="UTF-8"; name="interdiff.diff" Content-Disposition: attachment; filename="interdiff.diff" Content-Transfer-Encoding: base64 ZGlmZiAtdSBiL2djYy9naW1wbGlmeS5jYyBiL2djYy9naW1wbGlmeS5jYwotLS0gYi9nY2Mv Z2ltcGxpZnkuY2MKKysrIGIvZ2NjL2dpbXBsaWZ5LmNjCkBAIC0xNDAwLDEzICsxNDAwLDEw IEBACiAJCQkgICJyZWdpb24gbXVzdCBzcGVjaWZ5IGFuICU8YWxsb2NhdG9yJT4gY2xhdXNl IiwgdCk7CiAJICAgICAgLyogU2tpcCBmb3Igb21wX2RlZmF1bHRfbWVtX2FsbG9jICg9IDEp LAogCQkgdW5sZXNzIGFsaWduIGlzIHByZXNlbnQuICovCi0JICAgICAgZWxzZSBpZiAoZXJy b3Jjb3VudAotCQkgICAgICAgfHwgKGFsaWduID09IE5VTExfVFJFRQotCQkJICAgJiYgYWxs b2MgIT0gTlVMTF9UUkVFCi0JCQkgICAmJiBpbnRlZ2VyX29uZXAgKGFsbG9jKSkpCi0JCURF Q0xfQVRUUklCVVRFUyAodCkgPSByZW1vdmVfYXR0cmlidXRlICgib21wIGFsbG9jYXRlIiwK LQkJCQkJCQlERUNMX0FUVFJJQlVURVMgKHQpKTsKLQkgICAgICBlbHNlCisJICAgICAgZWxz ZSBpZiAoIWVycm9yY291bnQKKwkJICAgICAgICYmIChhbGlnbiAhPSBOVUxMX1RSRUUKKwkJ CSAgIHx8IGFsbG9jID09IE5VTExfVFJFRQorCQkJICAgfHwgIWludGVnZXJfb25lcCAoYWxs b2MpKSkKIAkJewogCQkgIC8qIEZvcnRyYW4gbWlnaHQgYWxyZWFkeSB1c2UgYSBwb2ludGVy IHR5cGUgaW50ZXJuYWxseTsKIAkJICAgICB1c2UgdGhhdCBwb2ludGVyIGV4Y2VwdCBmb3Ig dHlwZShDX3B0cikgYW5kIHR5cGUoQ19mdW5wdHIpOwpAQCAtMTQyNiwxMCArMTQyMywxMCBA QAogCQkgICAgICB0bXAgPSBidWlsZF9wb2ludGVyX3R5cGUgKHR5cGUpOwogCQkgICAgICB2 ID0gY3JlYXRlX3RtcF92YXIgKHRtcCwgZ2V0X25hbWUgKHQpKTsKIAkJICAgICAgREVDTF9J R05PUkVEX1AgKHYpID0gMDsKLQkJICAgICAgdG1wID0gcmVtb3ZlX2F0dHJpYnV0ZSAoIm9t cCBhbGxvY2F0ZSIsIERFQ0xfQVRUUklCVVRFUyAodCkpOwogCQkgICAgICBERUNMX0FUVFJJ QlVURVMgKHYpCiAJCQk9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZpZXIgKCJvbXAgYWxsb2Nh dGUgdmFyIiksCi0JCQkJICAgICBidWlsZF90cmVlX2xpc3QgKE5VTExfVFJFRSwgdCksIHRt cCk7CisJCQkJICAgICBidWlsZF90cmVlX2xpc3QgKE5VTExfVFJFRSwgdCksCisJCQkJICAg ICBERUNMX0FUVFJJQlVURVMgKHQpKTsKIAkJICAgICAgdG1wID0gYnVpbGRfZm9sZF9pbmRp cmVjdF9yZWYgKHYpOwogCQkgICAgICBUUkVFX1RISVNfTk9UUkFQICh0bXApID0gMTsKIAkJ ICAgICAgU0VUX0RFQ0xfVkFMVUVfRVhQUiAodCwgdG1wKTsKQEAgLTE0NjEsNiArMTQ1OCwx MSBAQAogCQkgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAobG9jLCBNT0RJRllfRVhQUiwgVFJF RV9UWVBFICh2KSwgdiwKIAkJCQkJIGZvbGRfY29udmVydCAoVFJFRV9UWVBFICh2KSwgdG1w KSk7CiAJCSAgZ2NjX2Fzc2VydCAoQklORF9FWFBSX0JPRFkgKGJpbmRfZXhwcikgIT0gTlVM TF9UUkVFKTsKKwkJICAvKiBFbnN1cmUgdGhhdCBlaXRoZXIgVFJFRV9DSEFJTiAoVFJFRV9W QUxVRSAoYXR0cikgaXMgc2V0CisJCSAgICAgYW5kIEdPTVBfRlJFRSBhZGRlZCBoZXJlIG9y IHRoYXQgREVDTF9IQVNfVkFMVUVfRVhQUl9QICh0KQorCQkgICAgIGlzIHNldCwgdXNpbmcg aW4gYSBjb25kaXRpb24gbXVjaCBmdXJ0aGVyIGJlbG93LiAgKi8KKwkJICBnY2NfYXNzZXJ0 IChERUNMX0hBU19WQUxVRV9FWFBSX1AgKHQpCisJCQkgICAgICB8fCBUUkVFX0NIQUlOIChU UkVFX1ZBTFVFIChhdHRyKSkpOwogCQkgIGlmIChUUkVFX0NIQUlOIChUUkVFX1ZBTFVFIChh dHRyKSkpCiAJCSAgICB7CiAJCSAgICAgIC8qIEZvcnRyYW4gaXMgc3BlY2lhbCBhcyBpdCBk b2VzIG5vdCBoYXZlIHByb3Blcmx5IG5lc3QKQEAgLTE2MzEsMTQgKzE2MzMsMTUgQEAKIAl7 CiAJICB0cmVlIGF0dHI7CiAJICBpZiAoZmxhZ19vcGVubXAKKwkgICAgICAmJiBERUNMX0hB U19WQUxVRV9FWFBSX1AgKHQpCiAJICAgICAgJiYgVFJFRV9VU0VEICh0KQogCSAgICAgICYm ICgoYXR0ciA9IGxvb2t1cF9hdHRyaWJ1dGUgKCJvbXAgYWxsb2NhdGUiLAogCQkJCQkgICAg REVDTF9BVFRSSUJVVEVTICh0KSkpICE9IE5VTExfVFJFRSkKIAkgICAgICAmJiBUUkVFX0NI QUlOIChUUkVFX1ZBTFVFIChhdHRyKSkgPT0gTlVMTF9UUkVFKQogCSAgICB7Ci0JICAgICAg LyogRm9yIEZvcnRyYW4sIHRoZSBHT01QX2ZyZWUgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCBh Ym92ZS4gICovCi0JICAgICAgdHJlZSB2ID0gKERFQ0xfSEFTX1ZBTFVFX0VYUFJfUCAodCkK LQkJCT8gVFJFRV9PUEVSQU5EIChERUNMX1ZBTFVFX0VYUFIgKHQpLCAwKSA6IHQpOworCSAg ICAgIC8qIEZvciBGb3J0cmFuLCBUUkVFX0NIQUlOIChUUkVFX1ZBTFVFIChhdHRyKSkgaXMg c2V0LCB3aGljaAorCQkgY2F1c2VzIHRoYXQgdGhlIEdPTVBfZnJlZSBjYWxsIGlzIGFscmVh ZHkgYWRkZWQgYWJvdmUuICAqLworCSAgICAgIHRyZWUgdiA9IFRSRUVfT1BFUkFORCAoREVD TF9WQUxVRV9FWFBSICh0KSwgMCk7CiAJICAgICAgdHJlZSB0bXAgPSBidWlsdGluX2RlY2xf ZXhwbGljaXQgKEJVSUxUX0lOX0dPTVBfRlJFRSk7CiAJICAgICAgdG1wID0gYnVpbGRfY2Fs bF9leHByX2xvYyAoZW5kX2xvY3VzLCB0bXAsIDIsIHYsCiAJCQkJCSBidWlsZF96ZXJvX2Nz dCAocHRyX3R5cGVfbm9kZSkpOwo= --------------t0kzbXjw30FOpk0alaiVx91M Content-Type: text/x-patch; charset="UTF-8"; name="omp-allocate-fortran-v3.diff" Content-Disposition: attachment; filename="omp-allocate-fortran-v3.diff" Content-Transfer-Encoding: base64 Rm9ydHJhbjogU3VwcG9ydCBPcGVuTVAncyAnYWxsb2NhdGUnIGRpcmVjdGl2ZSBmb3Igc3Rh Y2sgdmFycwoKZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCSogZ2ZvcnRyYW4uaCAoZXh0X2F0 dHJfdCk6IEFkZCBvbXBfYWxsb2NhdGUgZmxhZy4KCSogbWF0Y2guY2MgKGdmY19mcmVlX29t cF9uYW1lbGlzdCk6IFZvaWQgZGVsZXRpbmcgc2FtZQoJdTIuYWxsb2NhdG9yIG11bHRpcGxl IHRpbWVzIG5vdyB0aGF0IGEgc2VxdWVuY2UgY2FuIHVzZQoJdGhlIHNhbWUgb25lLgoJKiBv cGVubXAuY2MgKGdmY19tYXRjaF9vbXBfY2xhdXNlcywgZ2ZjX21hdGNoX29tcF9hbGxvY2F0 ZSk6IFVzZQoJc2FtZSBhbGxvY2F0b3IgZXhwciBtdWx0aXBsZSB0aW1lcy4KCShpc19wcmVk ZWZpbmVkX2FsbG9jYXRvcik6IE1ha2Ugc3RhdGljLgoJKGdmY19yZXNvbHZlX29tcF9hbGxv Y2F0ZSk6IFVwZGF0ZS9leHRlbmQgcmVzdHJpY3Rpb24gY2hlY2tzOwoJcmVtb3ZlIHNvcnJ5 IG1lc3NhZ2UuCgkocmVzb2x2ZV9vbXBfY2xhdXNlcyk6IFJlamVjdCBjb3JhcnJheXMgaW4g YWxsb2NhdGUvYWxsb2NhdG9ycwoJZGlyZWN0aXZlLgoJKiBwYXJzZS5jYyAoY2hlY2tfb21w X2FsbG9jYXRlX3N0bXQpOiBQZXJtaXQgcHJvY2VkdXJlIHBvaW50ZXJzCgloZXJlIChyZWpl Y3RlZCBsYXRlcikgZm9yIGxlc3MgbWlzbGVhZGluZyBkaWFnbm9zdGljLgoJKiB0cmFucy1h cnJheS5jYyAoZ2ZjX3RyYW5zX2F1dG9fYXJyYXlfYWxsb2NhdGlvbik6IFByb3BhZ2F0ZQoJ c2l6ZSBmb3IgR09NUF9hbGxvYyBhbmQgbG9jYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGJl IGFkZGVkIHRvLgoJKiB0cmFucy1kZWNsLmNjIChnZmNfdHJhbnNfZGVmZXJyZWRfdmFycyk6 IEhhbmRsZSAnb21wIGFsbG9jYXRlJwoJZm9yIHN0YWNrIHZhcmlhYmxlczsgc29ycnkgZm9y IHN0YXRpYyB2YXJpYWJsZXMvY29tbW9uIGJsb2Nrcy4KCSogdHJhbnMtb3Blbm1wLmNjIChn ZmNfdHJhbnNfb21wX2NsYXVzZXMpOiBFdmFsdWF0ZSAnYWxsb2NhdGUnCgljbGF1c2UncyBh bGxvY2F0b3Igb25seSBvbmNlOyBmaXggYWRkaW5nIGV4cHJlc3Npb25zIHRvIHRoZQoJYmxv Y2suCgkoZ2ZjX3RyYW5zX29tcF9zaW5nbGUpOiBQYXNzIGEgYmxvY2sgdG8gZ2ZjX3RyYW5z X29tcF9jbGF1c2VzLgoKZ2NjL0NoYW5nZUxvZzoKCgkqIGdpbXBsaWZ5LmNjIChnaW1wbGlm eV9iaW5kX2V4cHIpOiBIYW5kbGUgRm9ydHJhbidzCgknb21wIGFsbG9jYXRlJyBmb3Igc3Rh Y2sgdmFyaWFibGVzLgoKbGliZ29tcC9DaGFuZ2VMb2c6CgoJKiBsaWJnb21wLnRleGkgKE9w ZW5NUCBJbXBsLiBTdGF0dXMpOiBNZW50aW9uIHRoYXQgRm9ydHJhbiBub3cKCXN1cHBvcnRz IHRoZSBhbGxvY2F0ZSBkaXJlY3RpdmUgZm9yIHN0YWNrIHZhcmlhYmxlcy4KCSogdGVzdHN1 aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS01LmY5MDogTmV3IHRlc3QuCgkqIHRlc3Rz dWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNi5mOTA6IE5ldyB0ZXN0LgoJKiB0ZXN0 c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRlLTcuZjkwOiBOZXcgdGVzdC4KCSogdGVz dHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS04LmY5MDogTmV3IHRlc3QuCgpnY2Mv dGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGMtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTE0 LmM6IEZpeCBkaXJlY3RpdmUgbmFtZS4KCSogYy1jKystY29tbW9uL2dvbXAvYWxsb2NhdGUt MTUuYzogTGlrZXdpc2UuCgkqIGMtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTkuYzogRml4 IGNvbW1lbnQgdHlwby4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS00LmY5MDogUmVt b3ZlIHNvcnJ5IGRnLWVycm9yLgoJKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTcuZjkw OiBMaWtld2lzZS4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xMC5mOTA6IE5ldyB0 ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTExLmY5MDogTmV3IHRlc3QuCgkq IGdmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTIuZjkwOiBOZXcgdGVzdC4KCSogZ2ZvcnRy YW4uZGcvZ29tcC9hbGxvY2F0ZS0xMy5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9n b21wL2FsbG9jYXRlLTE0LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvYWxs b2NhdGUtMTUuZjkwOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS04 LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtOS5mOTA6IE5l dyB0ZXN0LgoKIGdjYy9mb3J0cmFuL2dmb3J0cmFuLmggICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBnY2MvZm9ydHJhbi9tYXRjaC5jYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDkgKy0KIGdjYy9mb3J0cmFuL29wZW5tcC5jYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICA2MiArKystCiBnY2MvZm9ydHJhbi9wYXJzZS5jYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIGdjYy9mb3J0cmFuL3RyYW5zLWFycmF5 LmNjICAgICAgICAgICAgICAgICAgICAgICB8ICAyOCArLQogZ2NjL2ZvcnRyYW4vdHJhbnMt ZGVjbC5jYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI2ICsrKysrKysrKwogZ2NjL2Zv cnRyYW4vdHJhbnMtb3Blbm1wLmNjICAgICAgICAgICAgICAgICAgICAgIHwgIDc3ICsrKy0t CiBnY2MvZ2ltcGxpZnkuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx NjYgKysrKysrKystLS0KIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvYWxsb2Nh dGUtMTQuYyAgICB8ICAgMiArLQogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9h bGxvY2F0ZS0xNS5jICAgIHwgICAyICstCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9n b21wL2FsbG9jYXRlLTkuYyAgICAgfCAgIDIgKy0KIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvZ29tcC9hbGxvY2F0ZS0xMC5mOTAgICB8ICA3NSArKysrKwogZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTExLmY5MCAgIHwgIDMzICsrKwogZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTEyLmY5MCAgIHwgIDI0ICsrCiBnY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTMuZjkwICAgfCAgMjUgKysK IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xNC5mOTAgICB8ICA5 NSArKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTUu ZjkwICAgfCAgMzggKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2Nh dGUtNC5mOTAgICAgfCAgIDQgKy0KIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9h bGxvY2F0ZS03LmY5MCAgICB8ICAxMCAtCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvYWxsb2NhdGUtOC5mOTAgICAgfCAgMjkgKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvZ29tcC9hbGxvY2F0ZS05LmY5MCAgICB8IDExMiArKysrKysrKwogbGliZ29tcC9saWJn b21wLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBsaWJnb21w L3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNS5mOTAgfCAgODcgKysrKysr CiBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNi5mOTAgfCAx MjMgKysrKysrKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0 ZS03LmY5MCB8IDM0MiArKysrKysrKysrKysrKysrKysrKysrKwogbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRlLTguZjkwIHwgIDk5ICsrKysrKysKIDI2IGZp bGVzIGNoYW5nZWQsIDE0ODQgaW5zZXJ0aW9ucygrKSwgOTkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCBiL2djYy9mb3J0cmFuL2dmb3J0cmFu LmgKaW5kZXggNmNhZjc3NjVhYzYuLjg4ZjMzYjA5NTdlIDEwMDY0NAotLS0gYS9nY2MvZm9y dHJhbi9nZm9ydHJhbi5oCisrKyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKQEAgLTEwMDAs NiArMTAwMCw3IEBAIHR5cGVkZWYgc3RydWN0CiAgIHVuc2lnbmVkIG9tcF9kZWNsYXJlX3Rh cmdldDoxOwogICB1bnNpZ25lZCBvbXBfZGVjbGFyZV90YXJnZXRfbGluazoxOwogICBFTlVN X0JJVEZJRUxEIChnZmNfb21wX2RldmljZV90eXBlKSBvbXBfZGV2aWNlX3R5cGU6MjsKKyAg dW5zaWduZWQgb21wX2FsbG9jYXRlOjE7CiAKICAgLyogTWVudGlvbmVkIGluIE9BQ0MgREVD TEFSRS4gICovCiAgIHVuc2lnbmVkIG9hY2NfZGVjbGFyZV9jcmVhdGU6MTsKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL21hdGNoLmNjIGIvZ2NjL2ZvcnRyYW4vbWF0Y2guY2MKaW5kZXgg YzkyNmYzODA1OGYuLjE0OGE4NmJiNDM2IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9tYXRj aC5jYworKysgYi9nY2MvZm9ydHJhbi9tYXRjaC5jYwpAQCAtNTU0MSw2ICs1NTQxLDcgQEAg Z2ZjX2ZyZWVfb21wX25hbWVsaXN0IChnZmNfb21wX25hbWVsaXN0ICpuYW1lLCBib29sIGZy ZWVfbnMsCiAJCSAgICAgICBib29sIGZyZWVfbWVtX3RyYWl0c19zcGFjZSkKIHsKICAgZ2Zj X29tcF9uYW1lbGlzdCAqbjsKKyAgZ2ZjX2V4cHIgKmxhc3RfYWxsb2NhdG9yID0gTlVMTDsK IAogICBmb3IgKDsgbmFtZTsgbmFtZSA9IG4pCiAgICAgewpAQCAtNTU1Miw3ICs1NTUzLDEz IEBAIGdmY19mcmVlX29tcF9uYW1lbGlzdCAoZ2ZjX29tcF9uYW1lbGlzdCAqbmFtZSwgYm9v bCBmcmVlX25zLAogICAgICAgaWYgKGZyZWVfbnMpCiAJZ2ZjX2ZyZWVfbmFtZXNwYWNlIChu YW1lLT51Mi5ucyk7CiAgICAgICBlbHNlIGlmIChmcmVlX2FsaWduX2FsbG9jYXRvcikKLQln ZmNfZnJlZV9leHByIChuYW1lLT51Mi5hbGxvY2F0b3IpOworCXsKKwkgIGlmIChsYXN0X2Fs bG9jYXRvciAhPSBuYW1lLT51Mi5hbGxvY2F0b3IpCisJICAgIHsKKwkgICAgICBsYXN0X2Fs bG9jYXRvciA9IG5hbWUtPnUyLmFsbG9jYXRvcjsKKwkgICAgICBnZmNfZnJlZV9leHByIChu YW1lLT51Mi5hbGxvY2F0b3IpOworCSAgICB9CisJfQogICAgICAgZWxzZSBpZiAoZnJlZV9t ZW1fdHJhaXRzX3NwYWNlKQogCXsgfSAgLyogbmFtZS0+dTIudHJhaXRzX3N5bTogc2hhbGwg bm90IGNhbGwgZ2ZjX2ZyZWVfc3ltYm9sIGhlcmUuICovCiAgICAgICBlbHNlIGlmIChuYW1l LT51Mi51ZHIpCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9vcGVubXAuY2MgYi9nY2MvZm9y dHJhbi9vcGVubXAuY2MKaW5kZXggNzliNWFlMGU0YmQuLjFjYzY1ZDdmYTQ5IDEwMDY0NAot LS0gYS9nY2MvZm9ydHJhbi9vcGVubXAuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNj CkBAIC0yMDMyLDExICsyMDMyLDkgQEAgZ2ZjX21hdGNoX29tcF9jbGF1c2VzIChnZmNfb21w X2NsYXVzZXMgKipjcCwgY29uc3Qgb21wX21hc2sgbWFzaywKIAogCSAgICAgIGZvciAoZ2Zj X29tcF9uYW1lbGlzdCAqbiA9ICpoZWFkOyBuOyBuID0gbi0+bmV4dCkKIAkJewotCQkgIG4t PnUyLmFsbG9jYXRvciA9ICgoYWxsb2NhdG9yKQotCQkJCSAgICAgPyBnZmNfY29weV9leHBy IChhbGxvY2F0b3IpIDogTlVMTCk7CisJCSAgbi0+dTIuYWxsb2NhdG9yID0gYWxsb2NhdG9y OwogCQkgIG4tPnUuYWxpZ24gPSAoYWxpZ24pID8gZ2ZjX2NvcHlfZXhwciAoYWxpZ24pIDog TlVMTDsKIAkJfQotCSAgICAgIGdmY19mcmVlX2V4cHIgKGFsbG9jYXRvcik7CiAJICAgICAg Z2ZjX2ZyZWVfZXhwciAoYWxpZ24pOwogCSAgICAgIGNvbnRpbnVlOwogCSAgICB9CkBAIC00 NTQ3LDkgKzQ1NDUsOCBAQCBnZmNfbWF0Y2hfb21wX2FsbG9jYXRlICh2b2lkKQogICAgICAg Zm9yICg7IHZhcnM7IHZhcnMgPSB2YXJzLT5uZXh0KQogCXsKIAkgIHZhcnMtPnUuYWxpZ24g PSAoYWxpZ24pID8gZ2ZjX2NvcHlfZXhwciAoYWxpZ24pIDogTlVMTDsKLQkgIHZhcnMtPnUy LmFsbG9jYXRvciA9ICgoYWxsb2NhdG9yKSA/IGdmY19jb3B5X2V4cHIgKGFsbG9jYXRvcikg OiBOVUxMKTsKKwkgIHZhcnMtPnUyLmFsbG9jYXRvciA9IGFsbG9jYXRvcjsKIAl9Ci0gICAg ICBnZmNfZnJlZV9leHByIChhbGxvY2F0b3IpOwogICAgICAgZ2ZjX2ZyZWVfZXhwciAoYWxp Z24pOwogICAgIH0KICAgcmV0dXJuIE1BVENIX1lFUzsKQEAgLTcxOTEsNyArNzE4OCw3IEBA IHJlc29sdmVfb21wX3Vkcl9jbGF1c2UgKGdmY19vbXBfbmFtZWxpc3QgKm4sIGdmY19uYW1l c3BhY2UgKm5zLAogLyogQXNzdW1lIHRoYXQgYSBjb25zdGFudCBleHByZXNzaW9uIGluIHRo ZSByYW5nZSAxIChvbXBfZGVmYXVsdF9tZW1fYWxsb2MpCiAgICB0byA4IChvbXBfdGhyZWFk X21lbV9hbGxvYykgcmFuZ2UgaXMgZmluZS4gIFRoZSBvcmlnaW5hbCBzeW1ib2wgbmFtZSBp cwogICAgYWxyZWFkeSBsb3N0IGR1cmluZyBtYXRjaGluZyB2aWEgZ2ZjX21hdGNoX2V4cHIu ICAqLwotYm9vbAorc3RhdGljIGJvb2wKIGlzX3ByZWRlZmluZWRfYWxsb2NhdG9yIChnZmNf ZXhwciAqZXhwcikKIHsKICAgcmV0dXJuIChnZmNfcmVzb2x2ZV9leHByIChleHByKQpAQCAt NzIwOSwxMCArNzIwNiwyMCBAQCBpc19wcmVkZWZpbmVkX2FsbG9jYXRvciAoZ2ZjX2V4cHIg KmV4cHIpCiB2b2lkCiBnZmNfcmVzb2x2ZV9vbXBfYWxsb2NhdGUgKGdmY19uYW1lc3BhY2Ug Km5zLCBnZmNfb21wX25hbWVsaXN0ICpsaXN0KQogewotICBmb3IgKGdmY19vbXBfbmFtZWxp c3QgKm4gPSBsaXN0OyBuOyBuID0gbi0+bmV4dCkKLSAgICBuLT5zeW0tPm1hcmsgPSAwOwog ICBmb3IgKGdmY19vbXBfbmFtZWxpc3QgKm4gPSBsaXN0OyBuOyBuID0gbi0+bmV4dCkKICAg ICB7CisgICAgICBpZiAobi0+c3ltLT5hdHRyLnJlc3VsdCB8fCBuLT5zeW0tPnJlc3VsdCA9 PSBuLT5zeW0pCisJeworCSAgZ2ZjX2Vycm9yICgiVW5leHBlY3RlZCBmdW5jdGlvbi1yZXN1 bHQgdmFyaWFibGUgJXFzIGF0ICVMIGluICIKKwkJICAgICAiZGVjbGFyYXRpdmUgISRPTVAg QUxMT0NBVEUiLCBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CisJICBjb250aW51ZTsKKwl9 CisgICAgICBpZiAobnMtPm9tcF9hbGxvY2F0ZS0+c3ltLT5hdHRyLnByb2NfcG9pbnRlcikK Kwl7CisJICBnZmNfZXJyb3IgKCJQcm9jZWR1cmUgcG9pbnRlciAlcXMgbm90IHN1cHBvcnRl ZCB3aXRoICEkT01QICIKKwkJICAgICAiQUxMT0NBVEUgYXQgJUwiLCBuLT5zeW0tPm5hbWUs ICZuLT53aGVyZSk7CisJICBjb250aW51ZTsKKwl9CiAgICAgICBpZiAobi0+c3ltLT5hdHRy LmZsYXZvciAhPSBGTF9WQVJJQUJMRSkKIAl7CiAJICBnZmNfZXJyb3IgKCJBcmd1bWVudCAl cXMgYXQgJUwgdG8gZGVjbGFyYXRpdmUgISRPTVAgQUxMT0NBVEUgIgpAQCAtNzIyMCw4ICs3 MjI3LDcgQEAgZ2ZjX3Jlc29sdmVfb21wX2FsbG9jYXRlIChnZmNfbmFtZXNwYWNlICpucywg Z2ZjX29tcF9uYW1lbGlzdCAqbGlzdCkKIAkJICAgICAmbi0+d2hlcmUpOwogCSAgY29udGlu dWU7CiAJfQotICAgICAgaWYgKG5zICE9IG4tPnN5bS0+bnMgfHwgbi0+c3ltLT5hdHRyLnVz ZV9hc3NvYwotCSAgfHwgbi0+c3ltLT5hdHRyLmhvc3RfYXNzb2MgfHwgbi0+c3ltLT5hdHRy LmltcG9ydGVkKQorICAgICAgaWYgKG5zICE9IG4tPnN5bS0+bnMgfHwgbi0+c3ltLT5hdHRy LnVzZV9hc3NvYyB8fCBuLT5zeW0tPmF0dHIuaW1wb3J0ZWQpCiAJewogCSAgZ2ZjX2Vycm9y ICgiQXJndW1lbnQgJXFzIGF0ICVMIHRvIGRlY2xhcmF0aXZlICEkT01QIEFMTE9DQVRFIHNo YWxsIGJlIgogCQkgICAgICIgaW4gdGhlIHNhbWUgc2NvcGUgYXMgdGhlIHZhcmlhYmxlIGRl Y2xhcmF0aW9uIiwKQEAgLTcyMzQsNyArNzI0MCwxMyBAQCBnZmNfcmVzb2x2ZV9vbXBfYWxs b2NhdGUgKGdmY19uYW1lc3BhY2UgKm5zLCBnZmNfb21wX25hbWVsaXN0ICpsaXN0KQogCQkg ICAgICJkZWNsYXJhdGl2ZSAhJE9NUCBBTExPQ0FURSIsIG4tPnN5bS0+bmFtZSwgJm4tPndo ZXJlKTsKIAkgIGNvbnRpbnVlOwogCX0KLSAgICAgIGlmIChuLT5zeW0tPm1hcmspCisgICAg ICBpZiAobi0+c3ltLT5hdHRyLmNvZGltZW5zaW9uKQorCXsKKwkgIGdmY19lcnJvciAoIlVu ZXhwZWN0ZWQgY29hcnJheSBhcmd1bWVudCAlcXMgYXMgYXJndW1lbnQgYXQgJUwgdG8gIgor CQkgICAgICJkZWNsYXJhdGl2ZSAhJE9NUCBBTExPQ0FURSIsIG4tPnN5bS0+bmFtZSwgJm4t PndoZXJlKTsKKwkgIGNvbnRpbnVlOworCX0KKyAgICAgIGlmIChuLT5zeW0tPmF0dHIub21w X2FsbG9jYXRlKQogCXsKIAkgIGlmIChuLT5zeW0tPmF0dHIuaW5fY29tbW9uKQogCSAgICB7 CkBAIC03MjQ5LDcgKzcyNjEsMjggQEAgZ2ZjX3Jlc29sdmVfb21wX2FsbG9jYXRlIChnZmNf bmFtZXNwYWNlICpucywgZ2ZjX29tcF9uYW1lbGlzdCAqbGlzdCkKIAkJICAgICAgIG4tPnN5 bS0+bmFtZSwgJm4tPndoZXJlKTsKIAkgIGNvbnRpbnVlOwogCX0KLSAgICAgIG4tPnN5bS0+ bWFyayA9IDE7CisgICAgICAvKiBGb3IgJ2VxdWl2YWxlbmNlKGEsYiknLCBhICd1bmlvbl90 eXBlIHs8dHlwZT4gYSxifSBlcXVpdi4wJyBpcyBjcmVhdGVkCisJIHdpdGggYSB2YWx1ZSBl eHByZXNzaW9uIGZvciAnYScgYXMgJ2VxdWl2LjAuYScgKGxpa2V3aXNlIGZvciBiKTsgd2hp bGUKKwkgdGhpcyBjYW4gYmUgaGFuZGxlZCwgRVFVSVZBTEVOQ0UgaXMgbWFya2VkIGFzIG9i c29sZXNjZW50IHNpbmNlIEZvcnRyYW4KKwkgMjAxOCBhbmQgYWxzbyBub3Qgd2lkZWx5IHVz ZWQuICBIb3dldmVyLCBpdCBjb3VsZCBiZSBzdXBwb3J0ZWQsCisJIGlmIG5lZWRlZC4gKi8K KyAgICAgIGlmIChuLT5zeW0tPmF0dHIuaW5fZXF1aXZhbGVuY2UpCisJeworCSAgZ2ZjX2Vy cm9yICgiU29ycnksIEVRVUlWQUxFTkNFIG9iamVjdCAlcXMgbm90IHN1cHBvcnRlZCB3aXRo ICEkT01QICIKKwkJICAgICAiQUxMT0NBVEUgYXQgJUwiLCBuLT5zeW0tPm5hbWUsICZuLT53 aGVyZSk7CisJICBjb250aW51ZTsKKwl9CisgICAgICAvKiBTaW1pbGFyIGZvciBDcmF5IHBv aW50ZXIvcG9pbnRlZSAtIHRoZXkgY291bGQgYmUgaW1wbGVtZW50ZWQgYnV0IGFzCisJIGNv bW1vbiB2ZW5kb3IgZXh0ZW5zaW9uIGJ1dCBub3dhZGF5cyByYXJlbHkgdXNlZCBhbmQgcmVx dWlyaW5nCisJIC1mY3JheS1wb2ludGVyLCB0aGVyZSBpcyBubyBuZWVkIHRvIHN1cHBvcnQg dGhlbS4gICovCisgICAgICBpZiAobi0+c3ltLT5hdHRyLmNyYXlfcG9pbnRlciB8fCBuLT5z eW0tPmF0dHIuY3JheV9wb2ludGVlKQorCXsKKwkgIGdmY19lcnJvciAoIlNvcnJ5LCBDcmF5 IHBvaW50ZXJzIGFuZCBwb2ludGVlcyBzdWNoIGFzICVxcyBhcmUgbm90ICIKKwkJICAgICAi c3VwcG9ydGVkIHdpdGggISRPTVAgQUxMT0NBVEUgYXQgJUwiLAorCQkgICAgIG4tPnN5bS0+ bmFtZSwgJm4tPndoZXJlKTsKKwkgIGNvbnRpbnVlOworCX0KKyAgICAgIG4tPnN5bS0+YXR0 ci5vbXBfYWxsb2NhdGUgPSAxOwogICAgICAgaWYgKChuLT5zeW0tPnRzLnR5cGUgPT0gQlRf Q0xBU1MgJiYgbi0+c3ltLT5hdHRyLmNsYXNzX29rCiAJICAgJiYgQ0xBU1NfREFUQSAobi0+ c3ltKS0+YXR0ci5hbGxvY2F0YWJsZSkKIAkgIHx8IChuLT5zeW0tPnRzLnR5cGUgIT0gQlRf Q0xBU1MgJiYgbi0+c3ltLT5hdHRyLmFsbG9jYXRhYmxlKSkKQEAgLTczMDcsOCArNzM0MCw2 IEBAIGdmY19yZXNvbHZlX29tcF9hbGxvY2F0ZSAoZ2ZjX25hbWVzcGFjZSAqbnMsIGdmY19v bXBfbmFtZWxpc3QgKmxpc3QpCiAJCSAgICIlPG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQl PiBraW5kIGF0ICVMIiwKIAkJICAgJm4tPnUyLmFsbG9jYXRvci0+d2hlcmUpOwogICAgIH0K LSAgZ2ZjX2Vycm9yICgiU29ycnksIGRlY2xhcmF0aXZlICEkT01QIEFMTE9DQVRFIGF0ICVM IG5vdCB5ZXQgc3VwcG9ydGVkIiwKLQkgICAgICZsaXN0LT53aGVyZSk7CiB9CiAKIC8qIFJl c29sdmUgQVNTVU1FJ3MgYW5kIEFTU1VNRVMnIGFzc3VtcHRpb24gY2xhdXNlcy4gIE5vdGUg dGhhdCBhYnNlbnQvY29udGFpbnMKQEAgLTc4OTcsNiArNzkyOCw5IEBAIHJlc29sdmVfb21w X2NsYXVzZXMgKGdmY19jb2RlICpjb2RlLCBnZmNfb21wX2NsYXVzZXMgKm9tcF9jbGF1c2Vz LAogCSAgICB7CiAJICAgICAgaWYgKG4tPnN5bSA9PSBOVUxMKQogCQljb250aW51ZTsKKwkg ICAgICBpZiAobi0+c3ltLT5hdHRyLmNvZGltZW5zaW9uKQorCQlnZmNfZXJyb3IgKCJVbmV4 cGVjdGVkIGNvYXJyYXkgJXFzIGluICU8YWxsb2NhdGUlPiBhdCAlTCIsCisJCQkgICBuLT5z eW0tPm5hbWUsICZuLT53aGVyZSk7CiAJICAgICAgZm9yIChhID0gY29kZS0+YmxvY2stPm5l eHQtPmV4dC5hbGxvYy5saXN0OyBhOyBhID0gYS0+bmV4dCkKIAkJaWYgKGEtPmV4cHItPmV4 cHJfdHlwZSA9PSBFWFBSX1ZBUklBQkxFCiAJCSAgICAmJiBhLT5leHByLT5zeW10cmVlLT5u LnN5bSA9PSBuLT5zeW0pCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9wYXJzZS5jYyBiL2dj Yy9mb3J0cmFuL3BhcnNlLmNjCmluZGV4IDQ0NGJhZjQyY2JkLi5lMTAzZWJlZTU1NyAxMDA2 NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vcGFyc2UuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vcGFyc2Uu Y2MKQEAgLTgzMywxOCArODMzLDE4IEBAIGNoZWNrX29tcF9hbGxvY2F0ZV9zdG10IChsb2N1 cyAqbG9jKQogCQkgICAgICAmbi0+ZXhwci0+d2hlcmUsIGdmY19hc2NpaV9zdGF0ZW1lbnQg KFNUX09NUF9BTExPQ0FURSkpOwogCSAgcmV0dXJuIGZhbHNlOwogCX0KKyAgICAgIC8qIFBy b2NlZHVyZSBwb2ludGVycyBhcmUgbm90IGFsbG9jYXRhYmxlOyBoZW5jZSwgd2UgZG8gbm90 IHJlZ2FyZCB0aGVtIGFzCisJIHBvaW50ZXJzIGhlcmUgLSBhbmQgcmVqZWN0IHRoZW0gbGF0 ZXIgaW4gZ2ZjX3Jlc29sdmVfb21wX2FsbG9jYXRlLiAgKi8KICAgICAgIGJvb2wgYWxsb2Nf cHRyOwogICAgICAgaWYgKG4tPnN5bS0+dHMudHlwZSA9PSBCVF9DTEFTUyAmJiBuLT5zeW0t PmF0dHIuY2xhc3Nfb2spCiAJYWxsb2NfcHRyID0gKENMQVNTX0RBVEEgKG4tPnN5bSktPmF0 dHIuYWxsb2NhdGFibGUKIAkJICAgICB8fCBDTEFTU19EQVRBIChuLT5zeW0pLT5hdHRyLmNs YXNzX3BvaW50ZXIpOwogICAgICAgZWxzZQotCWFsbG9jX3B0ciA9IChuLT5zeW0tPmF0dHIu YWxsb2NhdGFibGUgfHwgbi0+c3ltLT5hdHRyLnBvaW50ZXIKLQkJICAgICB8fCBuLT5zeW0t PmF0dHIucHJvY19wb2ludGVyKTsKKwlhbGxvY19wdHIgPSBuLT5zeW0tPmF0dHIuYWxsb2Nh dGFibGUgfHwgbi0+c3ltLT5hdHRyLnBvaW50ZXI7CiAgICAgICBpZiAoYWxsb2NfcHRyCiAJ ICB8fCAobi0+c3ltLT5ucyAmJiBuLT5zeW0tPm5zLT5wcm9jX25hbWUKIAkgICAgICAmJiAo bi0+c3ltLT5ucy0+cHJvY19uYW1lLT5hdHRyLmFsbG9jYXRhYmxlCi0JCSAgfHwgbi0+c3lt LT5ucy0+cHJvY19uYW1lLT5hdHRyLnBvaW50ZXIKLQkJICB8fCBuLT5zeW0tPm5zLT5wcm9j X25hbWUtPmF0dHIucHJvY19wb2ludGVyKSkpCisJCSAgfHwgbi0+c3ltLT5ucy0+cHJvY19u YW1lLT5hdHRyLnBvaW50ZXIpKSkKIAloYXNfYWxsb2NhdGFibGUgPSB0cnVlOwogICAgICAg ZWxzZQogCWhhc19ub25fYWxsb2NhdGFibGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vdHJhbnMtYXJyYXkuY2MgYi9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5jYwppbmRl eCA4ZTk0YTlhNDY5Zi4uYmJiODFmNDBhYTkgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3Ry YW5zLWFycmF5LmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmNjCkBAIC04Miw2 ICs4Miw5IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBu b3Qgc2VlCiAjaW5jbHVkZSAidHJlZS5oIgogI2luY2x1ZGUgImdmb3J0cmFuLmgiCiAjaW5j bHVkZSAiZ2ltcGxlLWV4cHIuaCIKKyNpbmNsdWRlICJ0cmVlLWl0ZXJhdG9yLmgiCisjaW5j bHVkZSAic3RyaW5ncG9vbC5oIiAgLyogUmVxdWlyZWQgYnkgImF0dHJpYnMuaCIuICAqLwor I2luY2x1ZGUgImF0dHJpYnMuaCIgLyogRm9yIGxvb2t1cF9hdHRyaWJ1dGUuICAqLwogI2lu Y2x1ZGUgInRyYW5zLmgiCiAjaW5jbHVkZSAiZm9sZC1jb25zdC5oIgogI2luY2x1ZGUgImNv bnN0cnVjdG9yLmgiCkBAIC02NzcwLDYgKzY3NzMsMTUgQEAgZ2ZjX3RyYW5zX2F1dG9fYXJy YXlfYWxsb2NhdGlvbiAodHJlZSBkZWNsLCBnZmNfc3ltYm9sICogc3ltLAogCSBnaW1wbGlm aWVyIHRvIGFsbG9jYXRlIHN0b3JhZ2UsIGFuZCBhbGwgdGhhdCBnb29kIHN0dWZmLiAgKi8K ICAgICAgIHRtcCA9IGZvbGRfYnVpbGQxX2xvYyAoaW5wdXRfbG9jYXRpb24sIERFQ0xfRVhQ UiwgVFJFRV9UWVBFIChkZWNsKSwgZGVjbCk7CiAgICAgICBnZmNfYWRkX2V4cHJfdG9fYmxv Y2sgKCZpbml0LCB0bXApOworICAgICAgaWYgKHN5bS0+YXR0ci5vbXBfYWxsb2NhdGUpCisJ eworCSAgLyogU2F2ZSBsb2NhdGlvbiBvZiBzaXplIGNhbGN1bGF0aW9uIHRvIGVuc3VyZSBH T01QX2FsbG9jIGlzIHBsYWNlZAorCSAgICAgYWZ0ZXIgaXQuICAqLworCSAgdHJlZSBvbXBf YWxsb2MgPSBsb29rdXBfYXR0cmlidXRlICgib21wIGFsbG9jYXRlIiwKKwkJCQkJICAgICBE RUNMX0FUVFJJQlVURVMgKGRlY2wpKTsKKwkgIFRSRUVfQ0hBSU4gKFRSRUVfQ0hBSU4gKFRS RUVfVkFMVUUgKG9tcF9hbGxvYykpKQorCSAgICA9IGJ1aWxkX3RyZWVfbGlzdCAoTlVMTF9U UkVFLCB0c2lfc3RtdCAodHNpX2xhc3QgKGluaXQuaGVhZCkpKTsKKwl9CiAgICAgfQogCiAg IGlmIChvbnN0YWNrKQpAQCAtNjc5OCw4ICs2ODEwLDIyIEBAIGdmY190cmFuc19hdXRvX2Fy cmF5X2FsbG9jYXRpb24gKHRyZWUgZGVjbCwgZ2ZjX3N5bWJvbCAqIHN5bSwKICAgICAgIGdm Y19hZGRfaW5pdF9jbGVhbnVwIChibG9jaywgZ2ZjX2ZpbmlzaF9ibG9jayAoJmluaXQpLCBO VUxMX1RSRUUpOwogICAgICAgcmV0dXJuOwogICAgIH0KKyAgaWYgKHN5bS0+YXR0ci5vbXBf YWxsb2NhdGUpCisgICAgeworICAgICAgLyogVGhlIHNpemUgaXMgdGhlIG51bWJlciBvZiBl bGVtZW50cyBpbiB0aGUgYXJyYXksIHNvIG11bHRpcGx5IGJ5IHRoZQorCSBzaXplIG9mIGFu IGVsZW1lbnQgdG8gZ2V0IHRoZSB0b3RhbCBzaXplLiAgKi8KKyAgICAgIHRtcCA9IFRZUEVf U0laRV9VTklUIChnZmNfZ2V0X2VsZW1lbnRfdHlwZSAodHlwZSkpOworICAgICAgc2l6ZSA9 IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE1VTFRfRVhQUiwgZ2ZjX2FycmF5 X2luZGV4X3R5cGUsCisJCQkgICAgICBzaXplLCBmb2xkX2NvbnZlcnQgKGdmY19hcnJheV9p bmRleF90eXBlLCB0bXApKTsKKyAgICAgIHNpemUgPSBnZmNfZXZhbHVhdGVfbm93IChzaXpl LCAmaW5pdCk7CiAKLSAgaWYgKGZsYWdfc3RhY2tfYXJyYXlzKQorICAgICAgdHJlZSBvbXBf YWxsb2MgPSBsb29rdXBfYXR0cmlidXRlICgib21wIGFsbG9jYXRlIiwKKwkJCQkJIERFQ0xf QVRUUklCVVRFUyAoZGVjbCkpOworICAgICAgVFJFRV9DSEFJTiAoVFJFRV9DSEFJTiAoVFJF RV9WQUxVRSAob21wX2FsbG9jKSkpCisJPSBidWlsZF90cmVlX2xpc3QgKHNpemUsIE5VTExf VFJFRSk7CisgICAgICBzcGFjZSA9IE5VTExfVFJFRTsKKyAgICB9CisgIGVsc2UgaWYgKGZs YWdfc3RhY2tfYXJyYXlzKQogICAgIHsKICAgICAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAo VFJFRV9UWVBFIChkZWNsKSkgPT0gUE9JTlRFUl9UWVBFKTsKICAgICAgIHNwYWNlID0gYnVp bGRfZGVjbCAoZ2ZjX2dldF9sb2NhdGlvbiAoJnN5bS0+ZGVjbGFyZWRfYXQpLApkaWZmIC0t Z2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYyBiL2djYy9mb3J0cmFuL3RyYW5zLWRl Y2wuY2MKaW5kZXggYjBmZDI1ZTkyYTMuLmEzZjAzN2JkMDdiIDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi90cmFucy1kZWNsLmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MK QEAgLTQ4LDYgKzQ4LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5H My4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJnaW1wbGlmeS5oIgogI2luY2x1ZGUgIm9tcC1n ZW5lcmFsLmgiCiAjaW5jbHVkZSAiYXR0ci1mbnNwZWMuaCIKKyNpbmNsdWRlICJ0cmVlLWl0 ZXJhdG9yLmgiCiAKICNkZWZpbmUgTUFYX0xBQkVMX1ZBTFVFIDk5OTk5CiAKQEAgLTQ2NTIs NiArNDY1MywzNiBAQCBnZmNfdHJhbnNfZGVmZXJyZWRfdmFycyAoZ2ZjX3N5bWJvbCAqIHBy b2Nfc3ltLCBnZmNfd3JhcHBlZF9ibG9jayAqIGJsb2NrKQogICBpbml0X2ludGVudF9vdXRf ZHQgKHByb2Nfc3ltLCBibG9jayk7CiAgIGdmY19yZXN0b3JlX2JhY2tlbmRfbG9jdXMgKCZs b2MpOwogCisgIC8qIEZvciBzb21lIHJlYXNvbnMsIGludGVybmFsIHByb2NlZHVyZXMgcG9p bnQgdG8gdGhlIHBhcmVudCdzCisgICAgIG5hbWVzcGFjZS4gIFRvcC1sZXZlbCBwcm9jZWR1 cmUgYW5kIHZhcmlhYmxlcyBpbnNpZGUgQkxPQ0sgYXJlIGZpbmUuICAqLworICBnZmNfbmFt ZXNwYWNlICpvbXBfbnMgPSBwcm9jX3N5bS0+bnM7CisgIGlmIChwcm9jX3N5bS0+bnMtPnBy b2NfbmFtZSAhPSBwcm9jX3N5bSkKKyAgICBmb3IgKG9tcF9ucyA9IHByb2Nfc3ltLT5ucy0+ Y29udGFpbmVkOyBvbXBfbnM7CisJIG9tcF9ucyA9IG9tcF9ucy0+c2libGluZykKKyAgICAg IGlmIChvbXBfbnMtPnByb2NfbmFtZSA9PSBwcm9jX3N5bSkKKwlicmVhazsKKworICAvKiBB ZGQgJ29tcCBhbGxvY2F0ZScgYXR0cmlidXRlIGZvciBnZmNfdHJhbnNfYXV0b19hcnJheV9h bGxvY2F0aW9uIGFuZAorICAgICB1bnNldCBhdHRyLm9tcF9hbGxvY2F0ZSBmb3IgJ29tcCBh bGxvY2F0ZSBhbGxvY2F0b3Iob21wX2RlZmF1bHRfbWVtX2FsbG9jKSwKKyAgICAgd2hpY2gg aGFzIHRoZSBub3JtYWwgY29kZXBhdGggZXhjZXB0IGZvciBhbiBpbnZhbGlkLXVzZSBjaGVj ayBpbiB0aGUgTUUuCisgICAgIFRoZSBtYWluIHByb2Nlc3NpbmcgaGFwcGVucyBsYXRlciBp biB0aGlzIGZ1bmN0aW9uLiAgKi8KKyAgZm9yIChzdHJ1Y3QgZ2ZjX29tcF9uYW1lbGlzdCAq biA9IG9tcF9ucyA/IG9tcF9ucy0+b21wX2FsbG9jYXRlIDogTlVMTDsKKyAgICAgICBuOyBu ID0gbi0+bmV4dCkKKyAgICBpZiAoIVRSRUVfU1RBVElDIChuLT5zeW0tPmJhY2tlbmRfZGVj bCkpCisgICAgICB7CisJLyogQWRkIGVtcHR5IGVudHJpZXMgLSBkZXNjcmliZWQgYW5kIHRv IGJlIGZpbGxlZCBiZWxvdy4gICovCisJdHJlZSB0bXAgPSBidWlsZF90cmVlX2xpc3QgKE5V TExfVFJFRSwgTlVMTF9UUkVFKTsKKwlUUkVFX0NIQUlOICh0bXApID0gYnVpbGRfdHJlZV9s aXN0IChOVUxMX1RSRUUsIE5VTExfVFJFRSk7CisJREVDTF9BVFRSSUJVVEVTIChuLT5zeW0t PmJhY2tlbmRfZGVjbCkKKwkgID0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAoIm9tcCBh bGxvY2F0ZSIpLCB0bXAsCisJCQkJICAgICAgIERFQ0xfQVRUUklCVVRFUyAobi0+c3ltLT5i YWNrZW5kX2RlY2wpKTsKKwlpZiAobi0+dS5hbGlnbiA9PSBOVUxMCisJICAgICYmIG4tPnUy LmFsbG9jYXRvciAhPSBOVUxMCisJICAgICYmIG4tPnUyLmFsbG9jYXRvci0+ZXhwcl90eXBl ID09IEVYUFJfQ09OU1RBTlQKKwkgICAgJiYgbXB6X2NtcF9zaSAobi0+dTIuYWxsb2NhdG9y LT52YWx1ZS5pbnRlZ2VyLCAxKSA9PSAwKQorCSAgbi0+c3ltLT5hdHRyLm9tcF9hbGxvY2F0 ZSA9IDA7CisgICAgICAgfQorCiAgIGZvciAoc3ltID0gcHJvY19zeW0tPnRsaW5rOyBzeW0g IT0gcHJvY19zeW07IHN5bSA9IHN5bS0+dGxpbmspCiAgICAgewogICAgICAgYm9vbCBhbGxv Y19jb21wX29yX2ZpbmkgPSAoc3ltLT50cy50eXBlID09IEJUX0RFUklWRUQpCkBAIC01MTA1 LDYgKzUxMzYsMTAxIEBAIGdmY190cmFuc19kZWZlcnJlZF92YXJzIChnZmNfc3ltYm9sICog cHJvY19zeW0sIGdmY193cmFwcGVkX2Jsb2NrICogYmxvY2spCiAJZ2NjX3VucmVhY2hhYmxl ICgpOwogICAgIH0KIAorICAvKiBIYW5kbGUgJ29tcCBhbGxvY2F0ZScuIFRoaXMgaGFzIHRv IGJlIGFmdGVyIHRoZSBibG9jayBhYm92ZSBhcworICAgICBnZmNfYWRkX2luaXRfY2xlYW51 cCAoLi4uLCBpbml0LCAuLi4pIHB1dHMgJ2luaXQnIG9mIGxhdGVyIGNhbGxzCisgICAgIGJl Zm9yZSBlYXJsaWVyIGNhbGxzLiAgVGhlIGNvZGUgaXMgYSBiaXQgbW9yZSBjb21wbGV4IGFz IGdmb3J0cmFuIGRvZXMKKyAgICAgbm90IHJlYWxseSB3b3JrIHdpdGggYmluZCBleHByZXNz aW9ucyAvIEJJTkRfRVhQUl9WQVJTIHByb3Blcmx5LCBpLmUuCisgICAgIGdpbXBsaWZ5X2Jp bmRfZXhwciBuZWVkcyBzb21lIGhlbHAgZm9yIHBsYWNpbmcgdGhlIEdPTVBfYWxsb2MuIFRo dXMsCisgICAgIHdlIHBhc3Mgb24gdGhlIGxvY2F0aW9uIG9mIHRoZSBhbGxvY2F0ZS1hc3Np Z25tZW50IGV4cHJlc3Npb24gYW5kLAorICAgICBpZiB0aGUgc2l6ZSBpcyBub3QgY29uc3Rh bnQsIHRoZSBzaXplIHZhcmlhYmxlIGlmIEZvcnRyYW4gY29tcHV0ZXMgdGhpcworICAgICBk aWZmZXJlbnRseS4gV2UgYWxzbyBtaWdodCBhZGQgYW4gZXhwcmVzc2lvbiBsb2NhdGlvbiBh ZnRlciB3aGljaCB0aGUKKyAgICAgY29kZSBoYXMgdG8gYmUgYWRkZWQsIGUuZy4gZm9yIGNo YXJhY3RlciBsZW4gZXhwcmVzc2lvbnMsIHdoaWNoIGFmZmVjdAorICAgICB0aGUgVU5JVF9T SVpFLiAgKi8KKyAgZ2ZjX2V4cHIgKmxhc3RfYWxsb2NhdG9yID0gTlVMTDsKKyAgaWYgKG9t cF9ucyAmJiBvbXBfbnMtPm9tcF9hbGxvY2F0ZSkKKyAgICB7CisgICAgICBpZiAoIWJsb2Nr LT5pbml0IHx8IFRSRUVfQ09ERSAoYmxvY2stPmluaXQpICE9IFNUQVRFTUVOVF9MSVNUKQor CXsKKwkgIHRyZWUgdG1wID0gYnVpbGQxX3YgKExBQkVMX0VYUFIsIGdmY19idWlsZF9sYWJl bF9kZWNsIChOVUxMX1RSRUUpKTsKKwkgIGFwcGVuZF90b19zdGF0ZW1lbnRfbGlzdCAodG1w LCAmYmxvY2stPmluaXQpOworCX0KKyAgICAgIGlmICghYmxvY2stPmNsZWFudXAgfHwgVFJF RV9DT0RFIChibG9jay0+Y2xlYW51cCkgIT0gU1RBVEVNRU5UX0xJU1QpCisJeworCSAgdHJl ZSB0bXAgPSBidWlsZDFfdiAoTEFCRUxfRVhQUiwgZ2ZjX2J1aWxkX2xhYmVsX2RlY2wgKE5V TExfVFJFRSkpOworCSAgYXBwZW5kX3RvX3N0YXRlbWVudF9saXN0ICh0bXAsICZibG9jay0+ Y2xlYW51cCk7CisJfQorICAgIH0KKyAgdHJlZSBpbml0X3N0bXRsaXN0ID0gYmxvY2stPmlu aXQ7CisgIHRyZWUgY2xlYW51cF9zdG10bGlzdCA9IGJsb2NrLT5jbGVhbnVwOworICBzZS5l eHByID0gTlVMTF9UUkVFOworICBmb3IgKHN0cnVjdCBnZmNfb21wX25hbWVsaXN0ICpuID0g b21wX25zID8gb21wX25zLT5vbXBfYWxsb2NhdGUgOiBOVUxMOworICAgICAgIG47IG4gPSBu LT5uZXh0KQorICAgIGlmICghVFJFRV9TVEFUSUMgKG4tPnN5bS0+YmFja2VuZF9kZWNsKSkK KyAgICAgIHsKKwl0cmVlIGFsaWduID0gKG4tPnUuYWxpZ24gPyBnZmNfY29udl9jb25zdGFu dF90b190cmVlIChuLT51LmFsaWduKQorCQkJCSA6IE5VTExfVFJFRSk7CisJaWYgKGxhc3Rf YWxsb2NhdG9yICE9IG4tPnUyLmFsbG9jYXRvcikKKwkgIHsKKwkgICAgbG9jYXRpb25fdCBs b2MgPSBpbnB1dF9sb2NhdGlvbjsKKwkgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7CisJ ICAgIGlmIChuLT51Mi5hbGxvY2F0b3IpCisJICAgICAgeworCQlpbnB1dF9sb2NhdGlvbiA9 IGdmY19nZXRfbG9jYXRpb24gKCZuLT51Mi5hbGxvY2F0b3ItPndoZXJlKTsKKwkJZ2ZjX2Nv bnZfZXhwciAoJnNlLCBuLT51Mi5hbGxvY2F0b3IpOworCSAgICAgIH0KKwkgICAgLyogV2Ug bmVlZCB0byBldmFsdWxhdGUgbm9uLWNvbnN0YW50cyAtIGFsc28gdG8gZmluZCB0aGUgbG9j YXRpb24KKwkgICAgICAgYWZ0ZXIgd2hpY2ggdGhlIEdPTVBfYWxsb2MgaGFzIHRvIGJlIGFk ZGVkIHRvIC0gYWxzbyBhcyBCTE9DSworCSAgICAgICBkb2VzIG5vdCB5aWVsZCBhIG5ldyBC SU5EX0VYUFJfQk9EWS4gICovCisJICAgIGlmIChuLT51Mi5hbGxvY2F0b3IKKwkJJiYgKCEo Q09OU1RBTlRfQ0xBU1NfUCAoc2UuZXhwcikgJiYgREVDTF9QIChzZS5leHByKSkKKwkJICAg IHx8IHNlLnByZS5oZWFkIHx8IHNlLnBvc3QuaGVhZCkpCisJICAgICAgeworCQlzdG10Ymxv Y2tfdCB0bXBibG9jazsKKwkJZ2ZjX2luaXRfYmxvY2sgKCZ0bXBibG9jayk7CisJCXNlLmV4 cHIgPSBnZmNfZXZhbHVhdGVfbm93IChzZS5leHByLCAmdG1wYmxvY2spOworCQkvKiBGaXJz dCBwb3N0IHRoZW4gcHJlIGJlY2F1c2UgdGhlIG5ldyBjb2RlIGlzIGluc2VydGVkCisJCSAg IGF0IHRoZSB0b3AuICovCisJCWdmY19hZGRfaW5pdF9jbGVhbnVwIChibG9jaywgZ2ZjX2Zp bmlzaF9ibG9jayAoJnNlLnBvc3QpLCBOVUxMKTsKKwkJZ2ZjX2FkZF9pbml0X2NsZWFudXAg KGJsb2NrLCBnZmNfZmluaXNoX2Jsb2NrICgmdG1wYmxvY2spLAorCQkJCSAgICAgIE5VTEwp OworCQlnZmNfYWRkX2luaXRfY2xlYW51cCAoYmxvY2ssIGdmY19maW5pc2hfYmxvY2sgKCZz ZS5wcmUpLCBOVUxMKTsKKwkgICAgICB9CisJICAgIGxhc3RfYWxsb2NhdG9yID0gbi0+dTIu YWxsb2NhdG9yOworCSAgICBpbnB1dF9sb2NhdGlvbiA9IGxvYzsKKwkgIH0KKworCS8qICdv bXAgYWxsb2NhdGUoIHtwdXJwb3NlOiBhbGxvY2F0b3IsIHZhbHVlOiBhbGlnbn0sCisJCQkg IHtwdXJwb3NlOiBpbml0LXN0bXRsaXN0LCB2YWx1ZTogY2xlYW51cC1zdG10bGlzdH0sCisJ CQkgIHtwdXJwb3NlOiBzaXplLXZhciwgdmFsdWU6IGxhc3Qtc2l6ZS1leHByfX0KKwkgICAg d2hlcmUgaW5pdC1zdG10L2NsZWFudXAtc3RtdCBpcyB0aGUgU1RBVEVNRU5UIGxpc3QgdG8g ZmluZCB0aGUKKwkgICAgdHJ5LWZpbmFsIGJsb2NrOyBsYXN0LXNpemUtZXhwciBpcyB0byBm aW5kIHRoZSBsb2NhdGlvbiBhZnRlcgorCSAgICB3aGljaCB0byBhZGQgdGhlIGNvZGUgYW5k ICdzaXplLXZhcicgaXMgZm9yIHRoZSBwcm9wZXIgc2l6ZSwgY2YuCisJICAgIGdmY190cmFu c19hdXRvX2FycmF5X2FsbG9jYXRpb24gLSBlaXRoZXIgb3IgYm90aCBvZiB0aGUgbGF0dGVy CisJICAgIGNhbiBiZSBOVUxMLiAgKi8KKwl0cmVlIHRtcCA9IGxvb2t1cF9hdHRyaWJ1dGUg KCJvbXAgYWxsb2NhdGUiLAorCQkJCSAgICAgREVDTF9BVFRSSUJVVEVTIChuLT5zeW0tPmJh Y2tlbmRfZGVjbCkpOworCXRtcCA9IFRSRUVfVkFMVUUgKHRtcCk7CisJVFJFRV9QVVJQT1NF ICh0bXApID0gc2UuZXhwcjsJCisJVFJFRV9WQUxVRSAodG1wKSA9IGFsaWduOwkKKwlUUkVF X1BVUlBPU0UgKFRSRUVfQ0hBSU4gKHRtcCkpID0gaW5pdF9zdG10bGlzdDsKKwlUUkVFX1ZB TFVFIChUUkVFX0NIQUlOICh0bXApKSA9IGNsZWFudXBfc3RtdGxpc3Q7CisgICAgICB9Cisg ICAgZWxzZSBpZiAobi0+c3ltLT5hdHRyLmluX2NvbW1vbikKKyAgICAgIHsKKwlnZmNfZXJy b3IgKCJTb3JyeSwgISRPTVAgYWxsb2NhdGUgZm9yIENPTU1PTiBibG9jayB2YXJpYWJsZSAl cXMgYXQgJUwgIgorCQkgICAibm90IHN1cHBvcnRlZCIsIG4tPnN5bS0+Y29tbW9uX2Jsb2Nr LT5uYW1lLAorCQkgICAmbi0+c3ltLT5jb21tb25fYmxvY2stPndoZXJlKTsKKwlicmVhazsK KyAgICAgIH0KKyAgICBlbHNlCisgICAgICB7CisJZ2ZjX2Vycm9yICgiU29ycnksICEkT01Q IGFsbG9jYXRlIGZvciB2YXJpYWJsZSAlcXMgYXQgJUwgd2l0aCBTQVZFICIKKwkJICAgImF0 dHJpYnV0ZSBub3QgeWV0IGltcGxlbWVudGVkIiwgbi0+c3ltLT5uYW1lLAorCQkgICAmbi0+ c3ltLT5kZWNsYXJlZF9hdCk7CisJLyogRklYTUU6IFJlbWVtYmVyIHRvIGhhbmRsZSBsYXN0 X2FsbG9jYXRvci4gICovCisJYnJlYWs7CisgICAgICB9CisKICAgZ2ZjX2luaXRfYmxvY2sg KCZ0bXBibG9jayk7CiAKICAgZm9yIChmID0gZ2ZjX3N5bV9nZXRfZHVtbXlfYXJncyAocHJv Y19zeW0pOyBmOyBmID0gZi0+bmV4dCkKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5z LW9wZW5tcC5jYyBiL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYwppbmRleCAyZjExNmZk NjczOC4uNzkzMGYyZmQ1ZDEgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5t cC5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKQEAgLTI3MzksMzQgKzI3 MzksNDggQEAgZ2ZjX3RyYW5zX29tcF9jbGF1c2VzIChzdG10YmxvY2tfdCAqYmxvY2ssIGdm Y19vbXBfY2xhdXNlcyAqY2xhdXNlcywKIAkgICAgICB9CiAJICBicmVhazsKIAljYXNlIE9N UF9MSVNUX0FMTE9DQVRFOgotCSAgZm9yICg7IG4gIT0gTlVMTDsgbiA9IG4tPm5leHQpCi0J ICAgIGlmIChuLT5zeW0tPmF0dHIucmVmZXJlbmNlZCkKLQkgICAgICB7Ci0JCXRyZWUgdCA9 IGdmY190cmFuc19vbXBfdmFyaWFibGUgKG4tPnN5bSwgZmFsc2UpOwotCQlpZiAodCAhPSBl cnJvcl9tYXJrX25vZGUpCi0JCSAgewotCQkgICAgdHJlZSBub2RlID0gYnVpbGRfb21wX2Ns YXVzZSAoaW5wdXRfbG9jYXRpb24sCi0JCQkJCQkgIE9NUF9DTEFVU0VfQUxMT0NBVEUpOwot CQkgICAgT01QX0NMQVVTRV9ERUNMIChub2RlKSA9IHQ7Ci0JCSAgICBpZiAobi0+dTIuYWxs b2NhdG9yKQotCQkgICAgICB7Ci0JCQl0cmVlIGFsbG9jYXRvcl87Ci0JCQlnZmNfaW5pdF9z ZSAoJnNlLCBOVUxMKTsKLQkJCWdmY19jb252X2V4cHIgKCZzZSwgbi0+dTIuYWxsb2NhdG9y KTsKLQkJCWFsbG9jYXRvcl8gPSBnZmNfZXZhbHVhdGVfbm93IChzZS5leHByLCBibG9jayk7 Ci0JCQlPTVBfQ0xBVVNFX0FMTE9DQVRFX0FMTE9DQVRPUiAobm9kZSkgPSBhbGxvY2F0b3Jf OwotCQkgICAgICB9Ci0JCSAgICBpZiAobi0+dS5hbGlnbikKLQkJICAgICAgewotCQkJdHJl ZSBhbGlnbl87Ci0JCQlnZmNfaW5pdF9zZSAoJnNlLCBOVUxMKTsKLQkJCWdmY19jb252X2V4 cHIgKCZzZSwgbi0+dS5hbGlnbik7Ci0JCQlhbGlnbl8gPSBnZmNfZXZhbHVhdGVfbm93IChz ZS5leHByLCBibG9jayk7Ci0JCQlPTVBfQ0xBVVNFX0FMTE9DQVRFX0FMSUdOIChub2RlKSA9 IGFsaWduXzsKLQkJICAgICAgfQotCQkgICAgb21wX2NsYXVzZXMgPSBnZmNfdHJhbnNfYWRk X2NsYXVzZSAobm9kZSwgb21wX2NsYXVzZXMpOwotCQkgIH0KLQkgICAgICB9CisJICB7CisJ ICAgIHRyZWUgYWxsb2NhdG9yXyA9IE5VTExfVFJFRTsKKwkgICAgZ2ZjX2V4cHIgKmFsbG9j X2V4cHIgPSBOVUxMOworCSAgICBmb3IgKDsgbiAhPSBOVUxMOyBuID0gbi0+bmV4dCkKKwkg ICAgICBpZiAobi0+c3ltLT5hdHRyLnJlZmVyZW5jZWQpCisJCXsKKwkJICB0cmVlIHQgPSBn ZmNfdHJhbnNfb21wX3ZhcmlhYmxlIChuLT5zeW0sIGZhbHNlKTsKKwkJICBpZiAodCAhPSBl cnJvcl9tYXJrX25vZGUpCisJCSAgICB7CisJCSAgICAgIHRyZWUgbm9kZSA9IGJ1aWxkX29t cF9jbGF1c2UgKGlucHV0X2xvY2F0aW9uLAorCQkJCQkJICAgIE9NUF9DTEFVU0VfQUxMT0NB VEUpOworCQkgICAgICBPTVBfQ0xBVVNFX0RFQ0wgKG5vZGUpID0gdDsKKwkJICAgICAgaWYg KG4tPnUyLmFsbG9jYXRvcikKKwkJCXsKKwkJCSAgaWYgKGFsbG9jX2V4cHIgIT0gbi0+dTIu YWxsb2NhdG9yKQorCQkJICAgIHsKKwkJCSAgICAgIGdmY19pbml0X3NlICgmc2UsIE5VTEwp OworCQkJICAgICAgZ2ZjX2NvbnZfZXhwciAoJnNlLCBuLT51Mi5hbGxvY2F0b3IpOworCQkJ ICAgICAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAoYmxvY2ssICZzZS5wcmUpOworCQkJICAg ICAgYWxsb2NhdG9yXyA9IGdmY19ldmFsdWF0ZV9ub3cgKHNlLmV4cHIsIGJsb2NrKTsKKwkJ CSAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucG9zdCk7CisJCQkg ICAgfQorCQkJICBPTVBfQ0xBVVNFX0FMTE9DQVRFX0FMTE9DQVRPUiAobm9kZSkgPSBhbGxv Y2F0b3JfOworCQkJfQorCQkgICAgICBhbGxvY19leHByID0gbi0+dTIuYWxsb2NhdG9yOwor CQkgICAgICBpZiAobi0+dS5hbGlnbikKKwkJCXsKKwkJCSAgdHJlZSBhbGlnbl87CisJCQkg IGdmY19pbml0X3NlICgmc2UsIE5VTEwpOworCQkJICBnZmNfY29udl9leHByICgmc2UsIG4t PnUuYWxpZ24pOworCQkJICBnY2NfYXNzZXJ0IChDT05TVEFOVF9DTEFTU19QIChzZS5leHBy KQorCQkJCSAgICAgICYmIHNlLnByZS5oZWFkID09IE5VTEwKKwkJCQkgICAgICAmJiBzZS5w b3N0LmhlYWQgPT0gTlVMTCk7CisJCQkgIGFsaWduXyA9IHNlLmV4cHI7CisJCQkgIE9NUF9D TEFVU0VfQUxMT0NBVEVfQUxJR04gKG5vZGUpID0gYWxpZ25fOworCQkJfQorCQkgICAgICBv bXBfY2xhdXNlcyA9IGdmY190cmFuc19hZGRfY2xhdXNlIChub2RlLCBvbXBfY2xhdXNlcyk7 CisJCSAgICB9CisJCX0KKwkgICAgICBlbHNlCisJCWFsbG9jX2V4cHIgPSBuLT51Mi5hbGxv Y2F0b3I7CisJICAgIH0KIAkgIGJyZWFrOwogCWNhc2UgT01QX0xJU1RfTElORUFSOgogCSAg ewpAQCAtNzE4NCwxMSArNzE5OCwxNCBAQCBnZmNfdHJhbnNfb21wX3NlY3Rpb25zIChnZmNf Y29kZSAqY29kZSwgZ2ZjX29tcF9jbGF1c2VzICpjbGF1c2VzKQogc3RhdGljIHRyZWUKIGdm Y190cmFuc19vbXBfc2luZ2xlIChnZmNfY29kZSAqY29kZSwgZ2ZjX29tcF9jbGF1c2VzICpj bGF1c2VzKQogewotICB0cmVlIG9tcF9jbGF1c2VzID0gZ2ZjX3RyYW5zX29tcF9jbGF1c2Vz IChOVUxMLCBjbGF1c2VzLCBjb2RlLT5sb2MpOworICBzdG10YmxvY2tfdCBibG9jazsKKyAg Z2ZjX3N0YXJ0X2Jsb2NrICgmYmxvY2spOworICB0cmVlIG9tcF9jbGF1c2VzID0gZ2ZjX3Ry YW5zX29tcF9jbGF1c2VzICgmYmxvY2ssIGNsYXVzZXMsIGNvZGUtPmxvYyk7CiAgIHRyZWUg c3RtdCA9IGdmY190cmFuc19vbXBfY29kZSAoY29kZS0+YmxvY2stPm5leHQsIHRydWUpOwog ICBzdG10ID0gYnVpbGQyX2xvYyAoZ2ZjX2dldF9sb2NhdGlvbiAoJmNvZGUtPmxvYyksIE9N UF9TSU5HTEUsIHZvaWRfdHlwZV9ub2RlLAogCQkgICAgIHN0bXQsIG9tcF9jbGF1c2VzKTsK LSAgcmV0dXJuIHN0bXQ7CisgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJmJsb2NrLCBzdG10 KTsKKyAgcmV0dXJuIGdmY19maW5pc2hfYmxvY2sgKCZibG9jayk7CiB9CiAKIHN0YXRpYyB0 cmVlCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuY2MgYi9nY2MvZ2ltcGxpZnkuY2MKaW5k ZXggOWY0NzIyZjc0NTguLjljNjE3YzIxMzgxIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxpZnku Y2MKKysrIGIvZ2NjL2dpbXBsaWZ5LmNjCkBAIC0xNDA1LDE4ICsxNDA1LDQ1IEBAIGdpbXBs aWZ5X2JpbmRfZXhwciAodHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCkKIAkJCSAg IHx8IGFsbG9jID09IE5VTExfVFJFRQogCQkJICAgfHwgIWludGVnZXJfb25lcCAoYWxsb2Mp KSkKIAkJewotCQkgIHRyZWUgdG1wID0gYnVpbGRfcG9pbnRlcl90eXBlIChUUkVFX1RZUEUg KHQpKTsKLQkJICB0cmVlIHYgPSBjcmVhdGVfdG1wX3ZhciAodG1wLCBnZXRfbmFtZSAodCkp OwotCQkgIERFQ0xfSUdOT1JFRF9QICh2KSA9IDA7Ci0JCSAgdG1wID0gcmVtb3ZlX2F0dHJp YnV0ZSAoIm9tcCBhbGxvY2F0ZSIsIERFQ0xfQVRUUklCVVRFUyAodCkpOwotCQkgIERFQ0xf QVRUUklCVVRFUyAodikKLQkJICAgID0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAoIm9t cCBhbGxvY2F0ZSB2YXIiKSwKLQkJCQkgYnVpbGRfdHJlZV9saXN0IChOVUxMX1RSRUUsIHQp LCB0bXApOwotCQkgIHRtcCA9IGJ1aWxkX2ZvbGRfaW5kaXJlY3RfcmVmICh2KTsKLQkJICBU UkVFX1RISVNfTk9UUkFQICh0bXApID0gMTsKLQkJICBTRVRfREVDTF9WQUxVRV9FWFBSICh0 LCB0bXApOwotCQkgIERFQ0xfSEFTX1ZBTFVFX0VYUFJfUCAodCkgPSAxOwotCQkgIHRyZWUg c3ogPSBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFICh0KSk7CisJCSAgLyogRm9ydHJhbiBt aWdodCBhbHJlYWR5IHVzZSBhIHBvaW50ZXIgdHlwZSBpbnRlcm5hbGx5OworCQkgICAgIHVz ZSB0aGF0IHBvaW50ZXIgZXhjZXB0IGZvciB0eXBlKENfcHRyKSBhbmQgdHlwZShDX2Z1bnB0 cik7CisJCSAgICAgbm90ZSB0aGF0IG5vcm1hbCBwcm9jIHBvaW50ZXJzIGFyZSByZWplY3Rl ZC4gICovCisJCSAgdHJlZSB0eXBlID0gVFJFRV9UWVBFICh0KTsKKwkJICB0cmVlIHRtcCwg djsKKwkJICBpZiAobGFuZ19HTlVfRm9ydHJhbiAoKQorCQkgICAgICAmJiBQT0lOVEVSX1RZ UEVfUCAodHlwZSkKKwkJICAgICAgJiYgVFJFRV9UWVBFICh0eXBlKSAhPSB2b2lkX3R5cGVf bm9kZQorCQkgICAgICAmJiBUUkVFX0NPREUgKFRSRUVfVFlQRSAodHlwZSkpICE9IEZVTkNU SU9OX1RZUEUpCisJCSAgICB7CisJCSAgICAgIHR5cGUgPSBUUkVFX1RZUEUgKHR5cGUpOwor CQkgICAgICB2ID0gdDsKKwkJICAgIH0KKwkJICBlbHNlCisJCSAgICB7CisJCSAgICAgIHRt cCA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAodHlwZSk7CisJCSAgICAgIHYgPSBjcmVhdGVfdG1w X3ZhciAodG1wLCBnZXRfbmFtZSAodCkpOworCQkgICAgICBERUNMX0lHTk9SRURfUCAodikg PSAwOworCQkgICAgICBERUNMX0FUVFJJQlVURVMgKHYpCisJCQk9IHRyZWVfY29ucyAoZ2V0 X2lkZW50aWZpZXIgKCJvbXAgYWxsb2NhdGUgdmFyIiksCisJCQkJICAgICBidWlsZF90cmVl X2xpc3QgKE5VTExfVFJFRSwgdCksCisJCQkJICAgICBERUNMX0FUVFJJQlVURVMgKHQpKTsK KwkJICAgICAgdG1wID0gYnVpbGRfZm9sZF9pbmRpcmVjdF9yZWYgKHYpOworCQkgICAgICBU UkVFX1RISVNfTk9UUkFQICh0bXApID0gMTsKKwkJICAgICAgU0VUX0RFQ0xfVkFMVUVfRVhQ UiAodCwgdG1wKTsKKwkJICAgICAgREVDTF9IQVNfVkFMVUVfRVhQUl9QICh0KSA9IDE7CisJ CSAgICB9CisJCSAgdHJlZSBzeiA9IFRZUEVfU0laRV9VTklUICh0eXBlKTsKKwkJICAvKiBU aGUgc2l6ZSB0byB1c2UgaW4gRm9ydHJhbiBtaWdodCBub3QgbWF0Y2ggVFlQRV9TSVpFX1VO SVQ7CisJCSAgICAgaGVuY2UsIGZvciBzb21lIGRlY2xzLCBhIHNpemUgdmFyaWFibGUgaXMg c2F2ZWQgaW4gdGhlCisJCSAgICAgYXR0cmlidXRlczsgdXNlIGl0LCBpZiBhdmFpbGFibGUu ICAqLworCQkgIGlmIChUUkVFX0NIQUlOIChUUkVFX1ZBTFVFIChhdHRyKSkKKwkJICAgICAg JiYgVFJFRV9DSEFJTiAoVFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAoYXR0cikpKQorCQkgICAg ICAmJiBUUkVFX1BVUlBPU0UgKAorCQkJICAgVFJFRV9DSEFJTiAoVFJFRV9DSEFJTiAoVFJF RV9WQUxVRSAoYXR0cikpKSkpCisJCSAgICB7CisJCSAgICAgIHN6ID0gVFJFRV9DSEFJTiAo VFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAoYXR0cikpKTsKKwkJICAgICAgc3ogPSBUUkVFX1BV UlBPU0UgKHN6KTsKKwkJICAgIH0KIAkJICBpZiAoYWxsb2MgPT0gTlVMTF9UUkVFKQogCQkg ICAgYWxsb2MgPSBidWlsZF96ZXJvX2NzdCAocHRyX3R5cGVfbm9kZSk7CiAJCSAgaWYgKGFs aWduID09IE5VTExfVFJFRSkKQEAgLTE0MjUsMjggKzE0NTIsOTMgQEAgZ2ltcGxpZnlfYmlu ZF9leHByICh0cmVlICpleHByX3AsIGdpbXBsZV9zZXEgKnByZV9wKQogCQkgICAgYWxpZ24g PSBidWlsZF9pbnRfY3N0IChzaXplX3R5cGVfbm9kZSwKIAkJCQkJICAgTUFYICh0cmVlX3Rv X3Vod2kgKGFsaWduKSwKIAkJCQkJCURFQ0xfQUxJR05fVU5JVCAodCkpKTsKKwkJICBsb2Nh dGlvbl90IGxvYyA9IERFQ0xfU09VUkNFX0xPQ0FUSU9OICh0KTsKIAkJICB0bXAgPSBidWls dGluX2RlY2xfZXhwbGljaXQgKEJVSUxUX0lOX0dPTVBfQUxMT0MpOwotCQkgIHRtcCA9IGJ1 aWxkX2NhbGxfZXhwcl9sb2MgKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh0KSwgdG1wLAotCQkJ CQkgICAgIDMsIGFsaWduLCBzeiwgYWxsb2MpOwotCQkgIHRtcCA9IGZvbGRfYnVpbGQyX2xv YyAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHQpLCBNT0RJRllfRVhQUiwKLQkJCQkJIFRSRUVf VFlQRSAodiksIHYsCisJCSAgdG1wID0gYnVpbGRfY2FsbF9leHByX2xvYyAobG9jLCB0bXAs IDMsIGFsaWduLCBzeiwgYWxsb2MpOworCQkgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAobG9j LCBNT0RJRllfRVhQUiwgVFJFRV9UWVBFICh2KSwgdiwKIAkJCQkJIGZvbGRfY29udmVydCAo VFJFRV9UWVBFICh2KSwgdG1wKSk7Ci0JCSAgZ2NjX2Fzc2VydCAoQklORF9FWFBSX0JPRFkg KGJpbmRfZXhwcikgIT0gTlVMTF9UUkVFCi0JCQkgICAgICAmJiAoVFJFRV9DT0RFIChCSU5E X0VYUFJfQk9EWSAoYmluZF9leHByKSkKLQkJCQkgID09IFNUQVRFTUVOVF9MSVNUKSk7Ci0J CSAgdHJlZV9zdG10X2l0ZXJhdG9yIGUgPSB0c2lfc3RhcnQgKEJJTkRfRVhQUl9CT0RZIChi aW5kX2V4cHIpKTsKLQkJICB3aGlsZSAoIXRzaV9lbmRfcCAoZSkpCisJCSAgZ2NjX2Fzc2Vy dCAoQklORF9FWFBSX0JPRFkgKGJpbmRfZXhwcikgIT0gTlVMTF9UUkVFKTsKKwkJICAvKiBF bnN1cmUgdGhhdCBlaXRoZXIgVFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAoYXR0cikgaXMgc2V0 CisJCSAgICAgYW5kIEdPTVBfRlJFRSBhZGRlZCBoZXJlIG9yIHRoYXQgREVDTF9IQVNfVkFM VUVfRVhQUl9QICh0KQorCQkgICAgIGlzIHNldCwgdXNpbmcgaW4gYSBjb25kaXRpb24gbXVj aCBmdXJ0aGVyIGJlbG93LiAgKi8KKwkJICBnY2NfYXNzZXJ0IChERUNMX0hBU19WQUxVRV9F WFBSX1AgKHQpCisJCQkgICAgICB8fCBUUkVFX0NIQUlOIChUUkVFX1ZBTFVFIChhdHRyKSkp OworCQkgIGlmIChUUkVFX0NIQUlOIChUUkVFX1ZBTFVFIChhdHRyKSkpCiAJCSAgICB7Ci0J CSAgICAgIGlmICgoVFJFRV9DT0RFICgqZSkgPT0gREVDTF9FWFBSCi0JCQkgICAmJiBUUkVF X09QRVJBTkQgKCplLCAwKSA9PSB0KQotCQkJICB8fCAoVFJFRV9DT0RFICgqZSkgPT0gQ0xF QU5VUF9QT0lOVF9FWFBSCi0JCQkgICAgICAmJiBUUkVFX0NPREUgKFRSRUVfT1BFUkFORCAo KmUsIDApKSA9PSBERUNMX0VYUFIKLQkJCSAgICAgICYmIFRSRUVfT1BFUkFORCAoVFJFRV9P UEVSQU5EICgqZSwgMCksIDApID09IHQpKQotCQkgICAgICBicmVhazsKKwkJICAgICAgLyog Rm9ydHJhbiBpcyBzcGVjaWFsIGFzIGl0IGRvZXMgbm90IGhhdmUgcHJvcGVybHkgbmVzdAor CQkJIGRlY2xhcmF0aW9ucyBpbiBibG9ja3MuICBBbmQgYXMgdGhlcmUgaXMgbm8KKwkJCSBp bml0aWFsaXplciwgdGhlcmUgaXMgYWxzbyBubyBleHByZXNzaW9uIHRvIGxvb2sgZm9yLgor CQkJIEhlbmNlLCB0aGUgRkUgbWFrZXMgdGhlIHN0YXRlbWVudCBsaXN0IG9mIHRoZQorCQkJ IHRyeS1maW5hbGx5IGJsb2NrIGF2YWlsYWJsZS4gV2UgY2FuIHB1dCB0aGUgR09NUF9hbGxv YworCQkJIGF0IHRoZSB0b3AsIHVubGVzcyBhbiBhbGxvY2F0b3Igb3Igc2l6ZSBleHByZXNz aW9uCisJCQkgcmVxdWlyZXMgdG8gcHV0IGl0IGFmdGVyd2FyZDsgbm90ZSB0aGF0IHRoZSBz aXplIGlzCisJCQkgYWx3YXlzIGxhdGVyIGluIGdlbmVyYXRlZCBjb2RlOyBmb3Igc3RyaW5n cywgbm8KKwkJCSBzaXplIGV4cHIgYnV0IHN0aWxsIGFuIGV4cHIgbWlnaHQgYmUgYXZhaWxh YmxlLiAgKi8KKwkJICAgICAgdHJlZSBzbCA9IFRSRUVfUFVSUE9TRSAoVFJFRV9DSEFJTiAo VFJFRV9WQUxVRSAoYXR0cikpKTsKKwkJICAgICAgdHJlZV9zdG10X2l0ZXJhdG9yIGUgPSB0 c2lfc3RhcnQgKHNsKTsKKwkJICAgICAgdHJlZSBuZWVkbGUgPSBOVUxMX1RSRUU7CisJCSAg ICAgIGlmIChUUkVFX0NIQUlOIChUUkVFX0NIQUlOIChUUkVFX1ZBTFVFIChhdHRyKSkpKQor CQkJeworCQkJICBuZWVkbGUgPSBUUkVFX0NIQUlOIChUUkVFX0NIQUlOIChUUkVFX1ZBTFVF IChhdHRyKSkpOworCQkJICBuZWVkbGUgPSAoVFJFRV9WQUxVRSAobmVlZGxlKSA/IFRSRUVf VkFMVUUgKG5lZWRsZSkKKwkJCQkJCQk6IHN6KTsKKwkJCX0KKwkJICAgICAgZWxzZSBpZiAo VFJFRV9DSEFJTiAoVFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAoYXR0cikpKSkKKwkJCW5lZWRs ZSA9IHN6OworCQkgICAgICBlbHNlIGlmIChERUNMX1AgKGFsbG9jKSAmJiBERUNMX0FSVElG SUNJQUwgKGFsbG9jKSkKKwkJCW5lZWRsZSA9IGFsbG9jOworCisJCSAgICAgIGlmIChuZWVk bGUgIT0gTlVMTF9UUkVFKQorCQkJeworCQkJICB3aGlsZSAoIXRzaV9lbmRfcCAoZSkpCisJ CQkgICAgeworCQkJICAgICAgaWYgKCplID09IG5lZWRsZQorCQkJCSAgfHwgKFRSRUVfQ09E RSAoKmUpID09IE1PRElGWV9FWFBSCisJCQkJICAgICAgJiYgVFJFRV9PUEVSQU5EICgqZSwg MCkgPT0gbmVlZGxlKSkKKwkJCQlicmVhazsKKwkJCSAgICAgICsrZTsKKwkJCSAgICB9CisJ CQkgIGdjY19hc3NlcnQgKCF0c2lfZW5kX3AgKGUpKTsKKwkJCX0KKwkJICAgICAgdHNpX2xp bmtfYWZ0ZXIgKCZlLCB0bXAsIFRTSV9TQU1FX1NUTVQpOworCisJCSAgICAgIC8qIEFzIHRo ZSBjbGVhbnVwIGlzIGluIEJJTkRfRVhQUl9CT0RZLCBHT01QX2ZyZWUgaXMgYWRkZWQKKwkJ CSBoZXJlOyBmb3IgQy9DKysgaXQgd2lsbCBiZSBhZGRlZCBpbiB0aGUgJ2NsZWFudXAnCisJ CQkgc2VjdGlvbiBhZnRlciBnaW1wbGlmaWNhdGlvbi4gQnV0IEZvcnRyYW4gYWxyZWFkeSBo YXMKKwkJCSBhIHRyeS1maW5hbGx5IGJsb2NrLiAgKi8KKwkJICAgICAgc2wgPSBUUkVFX1ZB TFVFIChUUkVFX0NIQUlOIChUUkVFX1ZBTFVFIChhdHRyKSkpOworCQkgICAgICBlID0gdHNp X2xhc3QgKHNsKTsKKwkJICAgICAgdG1wID0gYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlM VF9JTl9HT01QX0ZSRUUpOworCQkgICAgICB0bXAgPSBidWlsZF9jYWxsX2V4cHJfbG9jIChF WFBSX0xPQ0FUSU9OICgqZSksIHRtcCwgMiwgdiwKKwkJCQkJCSBidWlsZF96ZXJvX2NzdCAo cHRyX3R5cGVfbm9kZSkpOworCQkgICAgICB0c2lfbGlua19hZnRlciAoJmUsIHRtcCwgVFNJ X1NBTUVfU1RNVCk7CisJCSAgICAgIHRtcCA9IGJ1aWxkX2Nsb2JiZXIgKFRSRUVfVFlQRSAo diksIENMT0JCRVJfRU9MKTsKKwkJICAgICAgdG1wID0gZm9sZF9idWlsZDJfbG9jIChsb2Ms IE1PRElGWV9FWFBSLCBUUkVFX1RZUEUgKHYpLCB2LAorCQkJCQkgICAgIGZvbGRfY29udmVy dCAoVFJFRV9UWVBFICh2KSwgdG1wKSk7CiAJCSAgICAgICsrZTsKKwkJICAgICAgdHNpX2xp bmtfYWZ0ZXIgKCZlLCB0bXAsIFRTSV9TQU1FX1NUTVQpOwogCQkgICAgfQotCQkgIGdjY19h c3NlcnQgKCF0c2lfZW5kX3AgKGUpKTsKLQkJICB0c2lfbGlua19iZWZvcmUgKCZlLCB0bXAs IFRTSV9TQU1FX1NUTVQpOworCQkgIGVsc2UKKwkJICAgIHsKKwkJICAgICAgZ2NjX2Fzc2Vy dCAoVFJFRV9DT0RFIChCSU5EX0VYUFJfQk9EWSAoYmluZF9leHByKSkKKwkJCQkgID09IFNU QVRFTUVOVF9MSVNUKTsKKwkJICAgICAgdHJlZV9zdG10X2l0ZXJhdG9yIGU7CisJCSAgICAg IGUgPSB0c2lfc3RhcnQgKEJJTkRfRVhQUl9CT0RZIChiaW5kX2V4cHIpKTsKKwkJICAgICAg d2hpbGUgKCF0c2lfZW5kX3AgKGUpKQorCQkJeworCQkJICBpZiAoKFRSRUVfQ09ERSAoKmUp ID09IERFQ0xfRVhQUgorCQkJICAgICAgICYmIFRSRUVfT1BFUkFORCAoKmUsIDApID09IHQp CisJCQkgICAgICB8fCAoVFJFRV9DT0RFICgqZSkgPT0gQ0xFQU5VUF9QT0lOVF9FWFBSCisJ CQkJICAmJiAoVFJFRV9DT0RFIChUUkVFX09QRVJBTkQgKCplLCAwKSkKKwkJCQkgICAgICA9 PSBERUNMX0VYUFIpCisJCQkJICAmJiAoVFJFRV9PUEVSQU5EIChUUkVFX09QRVJBTkQgKCpl LCAwKSwgMCkKKwkJCQkgICAgICA9PSB0KSkpCisJCQkgICAgYnJlYWs7CisJCQkgICsrZTsK KwkJCX0KKwkJICAgICAgZ2NjX2Fzc2VydCAoIXRzaV9lbmRfcCAoZSkpOworCQkgICAgICB0 c2lfbGlua19iZWZvcmUgKCZlLCB0bXAsIFRTSV9TQU1FX1NUTVQpOworCQkgICB9CiAJCX0K IAkgICAgfQogCkBAIC0xNTM5LDE2ICsxNjMxLDI2IEBAIGdpbXBsaWZ5X2JpbmRfZXhwciAo dHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCkKIAkgICYmICFpc19nbG9iYWxfdmFy ICh0KQogCSAgJiYgREVDTF9DT05URVhUICh0KSA9PSBjdXJyZW50X2Z1bmN0aW9uX2RlY2wp CiAJeworCSAgdHJlZSBhdHRyOwogCSAgaWYgKGZsYWdfb3Blbm1wCiAJICAgICAgJiYgREVD TF9IQVNfVkFMVUVfRVhQUl9QICh0KQogCSAgICAgICYmIFRSRUVfVVNFRCAodCkKLQkgICAg ICAmJiBsb29rdXBfYXR0cmlidXRlICgib21wIGFsbG9jYXRlIiwgREVDTF9BVFRSSUJVVEVT ICh0KSkpCisJICAgICAgJiYgKChhdHRyID0gbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBhbGxv Y2F0ZSIsCisJCQkJCSAgICBERUNMX0FUVFJJQlVURVMgKHQpKSkgIT0gTlVMTF9UUkVFKQor CSAgICAgICYmIFRSRUVfQ0hBSU4gKFRSRUVfVkFMVUUgKGF0dHIpKSA9PSBOVUxMX1RSRUUp CiAJICAgIHsKKwkgICAgICAvKiBGb3IgRm9ydHJhbiwgVFJFRV9DSEFJTiAoVFJFRV9WQUxV RSAoYXR0cikpIGlzIHNldCwgd2hpY2gKKwkJIGNhdXNlcyB0aGF0IHRoZSBHT01QX2ZyZWUg Y2FsbCBpcyBhbHJlYWR5IGFkZGVkIGFib3ZlLiAgKi8KKwkgICAgICB0cmVlIHYgPSBUUkVF X09QRVJBTkQgKERFQ0xfVkFMVUVfRVhQUiAodCksIDApOwogCSAgICAgIHRyZWUgdG1wID0g YnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlMVF9JTl9HT01QX0ZSRUUpOwotCSAgICAgIHRt cCA9IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKGVuZF9sb2N1cywgdG1wLCAyLAotCQkJCQkgVFJF RV9PUEVSQU5EIChERUNMX1ZBTFVFX0VYUFIgKHQpLCAwKSwKKwkgICAgICB0bXAgPSBidWls ZF9jYWxsX2V4cHJfbG9jIChlbmRfbG9jdXMsIHRtcCwgMiwgdiwKIAkJCQkJIGJ1aWxkX3pl cm9fY3N0IChwdHJfdHlwZV9ub2RlKSk7CiAJICAgICAgZ2ltcGxpZnlfYW5kX2FkZCAodG1w LCAmY2xlYW51cCk7CisJICAgICAgZ2ltcGxlICpjbG9iYmVyX3N0bXQ7CisJICAgICAgdG1w ID0gYnVpbGRfY2xvYmJlciAoVFJFRV9UWVBFICh2KSwgQ0xPQkJFUl9FT0wpOworCSAgICAg IGNsb2JiZXJfc3RtdCA9IGdpbXBsZV9idWlsZF9hc3NpZ24gKHYsIHRtcCk7CisJICAgICAg Z2ltcGxlX3NldF9sb2NhdGlvbiAoY2xvYmJlcl9zdG10LCBlbmRfbG9jdXMpOworCSAgICAg IGdpbXBsaWZ5X3NlcV9hZGRfc3RtdCAoJmNsZWFudXAsIGNsb2JiZXJfc3RtdCk7CiAJICAg IH0KIAkgIGlmICghREVDTF9IQVJEX1JFR0lTVEVSICh0KQogCSAgICAgICYmICFUUkVFX1RI SVNfVk9MQVRJTEUgKHQpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9nb21wL2FsbG9jYXRlLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21w L2FsbG9jYXRlLTE0LmMKaW5kZXggYjI1ZGE1NDk3YzUuLjg5NDkyMWE3NmQ1IDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTE0LmMKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9hbGxvY2F0ZS0xNC5jCkBAIC0x Nyw3ICsxNyw3IEBAIGggKCkKIHsKICAgI3ByYWdtYSBvbXAgdGFyZ2V0CiAgICAjcHJhZ21h IG9tcCBwYXJhbGxlbAotICAgICNwcmFnbWEgb21wIHNlcmlhbAorICAgICNwcmFnbWEgb21w IHNpbmdsZQogICAgICB7CiAgICAgICAgaW50IHZhcjJbNV07ICAvKiB7IGRnLWVycm9yICIn YWxsb2NhdGUnIGRpcmVjdGl2ZSBmb3IgJ3ZhcjInIGluc2lkZSBhIHRhcmdldCByZWdpb24g bXVzdCBzcGVjaWZ5IGFuICdhbGxvY2F0b3InIGNsYXVzZSIgfSAqLwogICAgICAgICNwcmFn bWEgb21wIGFsbG9jYXRlKHZhcjIpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9nb21wL2FsbG9jYXRlLTE1LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9nb21wL2FsbG9jYXRlLTE1LmMKaW5kZXggMTUxMDViOTEwMmUuLjUyY2I3Njg2YjdiIDEw MDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTE1 LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9hbGxvY2F0ZS0xNS5j CkBAIC0xOSw3ICsxOSw3IEBAIGggKCkKIHsKICAgI3ByYWdtYSBvbXAgdGFyZ2V0CiAgICAj cHJhZ21hIG9tcCBwYXJhbGxlbAotICAgICNwcmFnbWEgb21wIHNlcmlhbAorICAgICNwcmFn bWEgb21wIHNpbmdsZQogICAgICB7CiAgICAgICAgaW50IHZhcjJbNV07CiAgICAgICAgI3By YWdtYSBvbXAgYWxsb2NhdGUodmFyMikKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2dvbXAvYWxsb2NhdGUtOS5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29tcC9hbGxvY2F0ZS05LmMKaW5kZXggM2MxMTA4MGRkMTYuLjMxMzgyNzQ4YmU2IDEw MDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTku YworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTkuYwpA QCAtMjAsNyArMjAsNyBAQCB0eXBlZGVmIGVudW0gb21wX2FsbG9jYXRvcl9oYW5kbGVfdAog c3RhdGljIGludCBBWzVdID0gezEsMiwzLDQsNX07CiBpbnQgQiwgQywgRDsKIAotLyogSWYg dGhlIGZvbGxvd2luZyBmYWlscyBiYWNhdXNlIG9mIGFkZGVkIHByZWRlZmluZWQgYWxsb2Nh dG9ycywgcGxlYXNlIHVwZGF0ZQorLyogSWYgdGhlIGZvbGxvd2luZyBmYWlscyBiZWNhdXNl IG9mIGFkZGVkIHByZWRlZmluZWQgYWxsb2NhdG9ycywgcGxlYXNlIHVwZGF0ZQogICAgLSBj L2MtcGFyc2VyLmMncyBjX3BhcnNlcl9vbXBfYWxsb2NhdGUKICAgIC0gZm9ydHJhbi9vcGVu bXAuY2MncyBpc19wcmVkZWZpbmVkX2FsbG9jYXRvcgogICAgLSBsaWJnb21wL2Vudi5jJ3Mg cGFyc2VfYWxsb2NhdG9yCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L2dvbXAvYWxsb2NhdGUtMTAuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L2FsbG9jYXRlLTEwLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZTUwZGI1M2MxYTgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTAuZjkwCkBAIC0wLDAgKzEsNzUgQEAKKyEgeyBkZy1h ZGRpdGlvbmFsLW9wdGlvbnMgIi1XYWxsIC1mZHVtcC10cmVlLWdpbXBsZSIgfQorCittb2R1 bGUgbQordXNlIGlzb19jX2JpbmRpbmcKK2ludGVnZXIsIHBhcmFtZXRlciA6OiBvbXBfYWxs b2NhdG9yX2hhbmRsZV9raW5kID0gY19pbnRwdHJfdAorICAgICAgICBpbnRlZ2VyIChraW5k PW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFt ZXRlciA6OiBvbXBfbnVsbF9hbGxvY2F0b3IgPSAwCisgICAgICAgIGludGVnZXIgKGtpbmQ9 b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1l dGVyIDo6IG9tcF9kZWZhdWx0X21lbV9hbGxvYyA9IDEKKyAgICAgICAgaW50ZWdlciAoa2lu ZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJh bWV0ZXIgOjogb21wX2xhcmdlX2NhcF9tZW1fYWxsb2MgPSAyCisgICAgICAgIGludGVnZXIg KGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAg cGFyYW1ldGVyIDo6IG9tcF9jb25zdF9tZW1fYWxsb2MgPSAzCisgICAgICAgIGludGVnZXIg KGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAg cGFyYW1ldGVyIDo6IG9tcF9oaWdoX2J3X21lbV9hbGxvYyA9IDQKKyAgICAgICAgaW50ZWdl ciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAg ICBwYXJhbWV0ZXIgOjogb21wX2xvd19sYXRfbWVtX2FsbG9jID0gNQorICAgICAgICBpbnRl Z2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAg ICAgIHBhcmFtZXRlciA6OiBvbXBfY2dyb3VwX21lbV9hbGxvYyA9IDYKKyAgICAgICAgaW50 ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAg ICAgICBwYXJhbWV0ZXIgOjogb21wX3B0ZWFtX21lbV9hbGxvYyA9IDcKKyAgICAgICAgaW50 ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAg ICAgICBwYXJhbWV0ZXIgOjogb21wX3RocmVhZF9tZW1fYWxsb2MgPSA4CitlbmQKKworCish IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfYWxs b2MiIDMgImdpbXBsZSIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiX19idWlsdGluX0dPTVBfZnJlZSIgMyAiZ2ltcGxlIiB9IH0KKworc3Vicm91dGluZSBm CisgIHVzZSBtCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciA6OiBuCisgIGJsb2NrCisg ICAgaW50ZWdlciA6OiBBKG4pICEgeyBkZy13YXJuaW5nICJVbnVzZWQgdmFyaWFibGUgJ2En IGRlY2xhcmVkIiB9CisgIGVuZCBibG9jaworZW5kCisKK3N1YnJvdXRpbmUgZjIKKyAgdXNl IG0KKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyIDo6IG4gICEgeyBkZy1ub3RlICInbicg d2FzIGRlY2xhcmVkIGhlcmUiIH0KKyAgYmxvY2sKKyAgICBpbnRlZ2VyIDo6IEEobikgICEg eyBkZy13YXJuaW5nICInbicgaXMgdXNlZCB1bmluaXRpYWxpemVkIiB9CisgICAgISRvbXAg YWxsb2NhdGUoQSkKKyAgICAhIGJ5IG1hdGNoaW5nICdBJyBhYm92ZSwgVFJFRV9VU0UgaXMg c2V0LiBIZW5jZToKKyAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAi YSA9IF9fYnVpbHRpbl9HT01QX2FsbG9jIFxcKC4sIERcLlxbMC05XF0rLCAwQlxcKTsiIDEg ImdpbXBsZSIgfSB9CisgICAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg Il9fYnVpbHRpbl9HT01QX2ZyZWUgXFwoYSwgMEJcXCk7IiAxICJnaW1wbGUiIH0gfQorICBl bmQgYmxvY2sKK2VuZAorCitzdWJyb3V0aW5lIGgxKCkKKyAgdXNlIG0KKyAgaW1wbGljaXQg bm9uZQorICBpbnRlZ2VyKG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpIG15X2hhbmRsZSAg ISB7IGRnLW5vdGUgIidteV9oYW5kbGUnIHdhcyBkZWNsYXJlZCBoZXJlIiB9CisgIGludGVn ZXIgOjogQjEoMykKKyAgISRvbXAgYWxsb2NhdGUoQjEpIGFsbG9jYXRvcihteV9oYW5kbGUp ICAhIHsgZGctd2FybmluZyAiMzE6J215X2hhbmRsZScgaXMgdXNlZCB1bmluaXRpYWxpemVk IiB9CisgIEIxKDEpID0gNQorICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiYjEuXFswLTlcXSsgPSBfX2J1aWx0aW5fR09NUF9hbGxvYyBcXCg0LCAxMiwgRFwuXFsw LTlcXStcXCk7IiAxICJnaW1wbGUiIH0gfQorICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSBcXChiMS5cWzAtOVxdKywgMEJcXCk7 IiAxICJnaW1wbGUiIH0gfQorZW5kCisKK3N1YnJvdXRpbmUgaDIoKQorICB1c2UgbQorICBp bXBsaWNpdCBub25lCisgIGludGVnZXIob21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCkgbXlf aGFuZGxlICAhIHsgZGctbm90ZSAiJ215X2hhbmRsZScgd2FzIGRlY2xhcmVkIGhlcmUiIH0K KyAgYmxvY2sKKyAgICBpbnRlZ2VyIDo6IEIyKDMpCisgICAgISRvbXAgYWxsb2NhdGUoQjIp IGFsbG9jYXRvcihteV9oYW5kbGUpICAhIHsgZGctd2FybmluZyAiMzM6J215X2hhbmRsZScg aXMgdXNlZCB1bmluaXRpYWxpemVkIiB9CisgICAgISBTaW1pbGFyIGFib3ZlOyBCMiBpcyB1 bnVzZWQgLSBidXQgaW4gZ2ZvcnRyYW4sIHRoZSBtYXRjaCBpbiAnYWxsb2NhdGUoQjIpJyBh bHJlYWR5CisgICAgISBjYXVzZXMgVFJFRV9VU0VEID0gMQorICAgICEgeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJiMi5cWzAtOVxdKyA9IF9fYnVpbHRpbl9HT01QX2Fs bG9jIFxcKDQsIDEyLCBEXC5cWzAtOVxdK1xcKTsiIDEgImdpbXBsZSIgfSB9CisgICAgISB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2ZyZWUg XFwoYjIuXFswLTlcXSssIDBCXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKyAgZW5kIGJsb2NrCitl bmQKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0 ZS0xMS5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTEu ZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YThkOTM5MzBi MAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9h bGxvY2F0ZS0xMS5mOTAKQEAgLTAsMCArMSwzMyBAQAorbW9kdWxlIG0KK3VzZSBpc29fY19i aW5kaW5nCitpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogb21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCA9IGNfaW50cHRyX3QKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hh bmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX251bGxf YWxsb2NhdG9yID0gMAorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFu ZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfZGVmYXVs dF9tZW1fYWxsb2MgPSAxCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9o YW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9sYXJn ZV9jYXBfbWVtX2FsbG9jID0gMgorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0 b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBf Y29uc3RfbWVtX2FsbG9jID0gMworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0 b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBf aGlnaF9id19tZW1fYWxsb2MgPSA0CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9j YXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9t cF9sb3dfbGF0X21lbV9hbGxvYyA9IDUKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxs b2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjog b21wX2Nncm91cF9tZW1fYWxsb2MgPSA2CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2Fs bG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6 IG9tcF9wdGVhbV9tZW1fYWxsb2MgPSA3CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2Fs bG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6 IG9tcF90aHJlYWRfbWVtX2FsbG9jID0gOAorZW5kCisKK3N1YnJvdXRpbmUgZiAoKQorICB1 c2UgbQorICBpbXBsaWNpdCBub25lCisgIGludGVnZXIgOjogaQorICAhJG9tcCBwYXJhbGxl bCBmaXJzdHByaXZhdGUoaSkgYWxsb2NhdGUoYWxsb2NhdG9yKG9tcF9sb3dfbGF0ZW5jeV9t ZW1fYWxsb2MpOiBpKQorICAgICEgeyBkZy1lcnJvciAiU3ltYm9sICdvbXBfbG93X2xhdGVu Y3lfbWVtX2FsbG9jJyBhdCAuMS4gaGFzIG5vIElNUExJQ0lUIHR5cGU7IGRpZCB5b3UgbWVh biAnb21wX2xvd19sYXRfbWVtX2FsbG9jJ1xcXD8iICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0KKyAgICAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGludGVnZXIgZXhwcmVzc2lvbiBvZiB0 aGUgJ29tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQnIGtpbmQgYXQgLjEuIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMiB9CisgICAgaSA9IDQKKyAgISRvbXAgZW5kIHBhcmFsbGVsCitlbmQK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0x Mi5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTIuZjkw Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xODNjMjk0MTgxOQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxv Y2F0ZS0xMi5mOTAKQEAgLTAsMCArMSwyNCBAQAorbW9kdWxlIG0KKyAgaW1wbGljaXQgbm9u ZQorY29udGFpbnMKK3N1YnJvdXRpbmUgZiAoKQorICAhJG9tcCBkZWNsYXJlIHRhcmdldAor ICBpbnRlZ2VyIDo6IHZhciAgISB7IGRnLWVycm9yICInYWxsb2NhdGUnIGRpcmVjdGl2ZSBm b3IgJ3ZhcicgaW5zaWRlIGEgdGFyZ2V0IHJlZ2lvbiBtdXN0IHNwZWNpZnkgYW4gJ2FsbG9j YXRvcicgY2xhdXNlIiB9CisgICEkb21wIGFsbG9jYXRlKHZhcikKKyAgdmFyID0gNQorZW5k CisKK3N1YnJvdXRpbmUgaCAoKQorICAhJG9tcCB0YXJnZXQKKyAgICEkb21wIHBhcmFsbGVs CisgICAgISRvbXAgc2luZ2xlCisgICAgICAgYmxvY2sKKyAgICAgICBpbnRlZ2VyIDo6IHZh cjIoNSkgICEgeyBkZy1lcnJvciAiJ2FsbG9jYXRlJyBkaXJlY3RpdmUgZm9yICd2YXIyJyBp bnNpZGUgYSB0YXJnZXQgcmVnaW9uIG11c3Qgc3BlY2lmeSBhbiAnYWxsb2NhdG9yJyBjbGF1 c2UiIH0KKyAgICAgICAgICEkb21wIGFsbG9jYXRlKHZhcjIpCisgICAgICAgICB2YXIyKDEp ID0gNworICAgICAgIGVuZCBibG9jaworICAgICEkb21wIGVuZCBzaW5nbGUKKyAgICEkb21w IGVuZCBwYXJhbGxlbAorICAhJG9tcCBlbmQgdGFyZ2V0ICAKK2VuZAorZW5kIG1vZHVsZQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTEz LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xMy5mOTAK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJmOGE1YTJiZWUyCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9j YXRlLTEzLmY5MApAQCAtMCwwICsxLDI1IEBACittb2R1bGUgbQorICBpbXBsaWNpdCBub25l CisgICEkb21wIHJlcXVpcmVzIGR5bmFtaWNfYWxsb2NhdG9ycworY29udGFpbnMKK3N1YnJv dXRpbmUgZiAoKQorICAhJG9tcCBkZWNsYXJlIHRhcmdldAorICBpbnRlZ2VyIDo6IHZhcgor ICAhJG9tcCBhbGxvY2F0ZSh2YXIpCisgIHZhciA9IDUKK2VuZAorCitzdWJyb3V0aW5lIGgg KCkKKyAgISRvbXAgdGFyZ2V0CisgICAhJG9tcCBwYXJhbGxlbAorICAgICEkb21wIHNpbmds ZQorICAgICAgYmxvY2sKKyAgICAgICBpbnRlZ2VyIDo6IHZhcjIoNSkKKyAgICAgICAhJG9t cCBhbGxvY2F0ZSh2YXIyKQorICAgICAgIHZhcjIoMSkgPSA3CisgICAgICBlbmQgYmxvY2sK KyAgICAhJG9tcCBlbmQgc2luZ2xlCisgICAhJG9tcCBlbmQgcGFyYWxsZWwKKyAgISRvbXAg ZW5kIHRhcmdldAorZW5kCitlbmQgbW9kdWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTQuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9nb21wL2FsbG9jYXRlLTE0LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uOGZmOWMyNTJlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTQuZjkwCkBAIC0wLDAgKzEsOTUg QEAKKyEgeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mY29hcnJheT1zaW5nbGUgLWZjcmF5 LXBvaW50ZXIiIH0KKworbW9kdWxlIG0KK3VzZSBpc29fY19iaW5kaW5nCitpbnRlZ2VyLCBw YXJhbWV0ZXIgOjogb21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCA9IGNfaW50cHRyX3QKKyAg ICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAg ICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX251bGxfYWxsb2NhdG9yID0gMAorICAg ICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAg ICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfZGVmYXVsdF9tZW1fYWxsb2MgPSAxCisg ICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAg ICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jID0g MgorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAm CisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfY29uc3RfbWVtX2FsbG9jID0g MworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAm CisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfaGlnaF9id19tZW1fYWxsb2Mg PSA0CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCks ICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9sb3dfbGF0X21lbV9hbGxv YyA9IDUKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5k KSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2Nncm91cF9tZW1fYWxs b2MgPSA2CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9wdGVhbV9tZW1fYWxs b2MgPSA3CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF90aHJlYWRfbWVtX2Fs bG9jID0gOAorZW5kCisKK3N1YnJvdXRpbmUgY29hcnJheXMoeCkKKyAgdXNlIG0KKyAgaW1w bGljaXQgbm9uZQorCisgIGludGVnZXIgOjogeFsqXQorICBpbnRlZ2VyLCBhbGxvY2F0YWJs ZSA6OiB5WzpdLCB6KDopWzpdCisKKyAgISRvbXAgYWxsb2NhdGUoeCkgICEgeyBkZy1lcnJv ciAiVW5leHBlY3RlZCBkdW1teSBhcmd1bWVudCAneCcgYXMgYXJndW1lbnQgYXQgLjEuIHRv IGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIiB9CisKKyAgISRvbXAgYWxsb2NhdG9ycyBh bGxvY2F0ZSh5KSAhIHsgZGctZXJyb3IgIjI4OlVuZXhwZWN0ZWQgY29hcnJheSAneScgaW4g J2FsbG9jYXRlJyBhdCAuMS4iIH0KKyAgICBhbGxvY2F0ZSh5WypdKQorCisgICEkb21wIGFs bG9jYXRlKHopICEgeyBkZy1lcnJvciAiMTc6VW5leHBlY3RlZCBjb2FycmF5ICd6JyBpbiAn YWxsb2NhdGUnIGF0IC4xLiIgfQorICAgIGFsbG9jYXRlKHooNSlbKl0pCisgIHggPSA1Citl bmQgCisKKworaW50ZWdlciBmdW5jdGlvbiBmKCkgcmVzdWx0KHJlcykKKyAgISRvbXAgYWxs b2NhdGUoZikgICAhIHsgZGctZXJyb3IgIkFyZ3VtZW50ICdmJyBhdCAuMS4gdG8gZGVjbGFy YXRpdmUgIS5PTVAgQUxMT0NBVEUgZGlyZWN0aXZlIG11c3QgYmUgYSB2YXJpYWJsZSIgfQor ICAhJG9tcCBhbGxvY2F0ZShyZXMpICEgeyBkZy1lcnJvciAiVW5leHBlY3RlZCBmdW5jdGlv bi1yZXN1bHQgdmFyaWFibGUgJ3JlcycgYXQgLjEuIGluIGRlY2xhcmF0aXZlICEuT01QIEFM TE9DQVRFIiB9CisgIHJlcyA9IDUKK2VuZAorCitpbnRlZ2VyIGZ1bmN0aW9uIGcoKSByZXN1 bHQocmVzKQorICBhbGxvY2F0YWJsZSA6OiByZXMKKyAgISRvbXAgYWxsb2NhdG9ycyBhbGxv Y2F0ZShnKSAgICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgdmFyaWFibGUgbGlzdCBhdCAuMS4i IH0KKworICAhJG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlIChyZXMpCisgIGFsbG9jYXRlKHJl cywgc291cmNlPTUpCisgIGRlYWxsb2NhdGUocmVzKQorCisgICEkb21wIGFsbG9jYXRlIChy ZXMpCisgIGFsbG9jYXRlKHJlcywgc291cmNlPTUpCitlbmQKKworCitzdWJyb3V0aW5lIGNy YXlfcHRyKCkKKyAgIHJlYWwgcG9pbnRlZSgxMCkKKyAgIHBvaW50ZXIgKGlwdCwgcG9pbnRl ZSkKKyAgICEkb21wIGFsbG9jYXRlKHBvaW50ZWUpICAhIHsgZGctZXJyb3IgIlNvcnJ5LCBD cmF5IHBvaW50ZXJzIGFuZCBwb2ludGVlcyBzdWNoIGFzICdwb2ludGVlJyBhcmUgbm90IHN1 cHBvcnRlZCB3aXRoICEuT01QIEFMTE9DQVRFIGF0IC4xLiIgfQorICAgISRvbXAgYWxsb2Nh dGUoaXB0KSAgICAgICEgeyBkZy1lcnJvciAiU29ycnksIENyYXkgcG9pbnRlcnMgYW5kIHBv aW50ZWVzIHN1Y2ggYXMgJ2lwdCcgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCAhLk9NUCBBTExP Q0FURSBhdCAuMS4iIH0KK2VuZAorCitzdWJyb3V0aW5lIGVxdWl2CisgIGludGVnZXIgOjog QQorICByZWFsIDo6IEIoMikKKyAgZXF1aXZhbGVuY2UoQSxCKQorICAhJG9tcCBhbGxvY2F0 ZSAoQSkgICEgeyBkZy1lcnJvciAiU29ycnksIEVRVUlWQUxFTkNFIG9iamVjdCAnYScgbm90 IHN1cHBvcnRlZCB3aXRoICEuT01QIEFMTE9DQVRFIGF0IC4xLiIgfQorICAhJG9tcCBhbGxv Y2F0ZSAoQikgICEgeyBkZy1lcnJvciAiU29ycnksIEVRVUlWQUxFTkNFIG9iamVjdCAnYicg bm90IHN1cHBvcnRlZCB3aXRoICEuT01QIEFMTE9DQVRFIGF0IC4xLiIgfQorZW5kCisKK3N1 YnJvdXRpbmUgY29tbW9uCisgIHVzZSBtCisgIGludGVnZXIgOjogYSxiLGMoNSkKKyAgY29t bW9uIC9teS8gYSxiLGMKKyAgISRvbXAgYWxsb2NhdGUoYikgYWxsb2NhdG9yKG9tcF9jZ3Jv dXBfbWVtX2FsbG9jKSAgISB7IGRnLWVycm9yICInYicgYXQgLjEuIGlzIHBhcnQgb2YgdGhl IGNvbW1vbiBibG9jayAnL215LycgYW5kIG1heSBvbmx5IGJlIHNwZWNpZmljZWQgaW1wbGlj aXRseSB2aWEgdGhlIG5hbWVkIGNvbW1vbiBibG9jayIgfQorZW5kCisKK3N1YnJvdXRpbmUg Y19hbmRfZnVuY19wdHJzCisgIHVzZSBpc29fY19iaW5kaW5nCisgIGltcGxpY2l0IG5vbmUK KyAgcHJvY2VkdXJlKCksIHBvaW50ZXIgOjogcAorICB0eXBlKGNfcHRyKSA6OiBjcHRyCisg IHR5cGUoY19wdHIpIDo6IGNmdW5wdHIKKworICAhJG9tcCBhbGxvY2F0ZShjcHRyKSAgISBP SworICAhJG9tcCBhbGxvY2F0ZShjZnVucHRyKSAhIE9LPyBBIG5vcm1hbCBkZXJpdmVkLXR5 cGUgdmFyPworICAhJG9tcCBhbGxvY2F0ZShwKSAgISB7IGRnLWVycm9yICJBcmd1bWVudCAn cCcgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGRpcmVjdGl2ZSBtdXN0 IGJlIGEgdmFyaWFibGUiIH0KK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9nb21wL2FsbG9jYXRlLTE1LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvZ29tcC9hbGxvY2F0ZS0xNS5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmEwNjkwYTU2Mzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTE1LmY5MApAQCAtMCwwICsxLDM4IEBACitt b2R1bGUgbQordXNlIGlzb19jX2JpbmRpbmcKK2ludGVnZXIsIHBhcmFtZXRlciA6OiBvbXBf YWxsb2NhdG9yX2hhbmRsZV9raW5kID0gY19pbnRwdHJfdAorICAgICAgICBpbnRlZ2VyIChr aW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBh cmFtZXRlciA6OiBvbXBfbnVsbF9hbGxvY2F0b3IgPSAwCisgICAgICAgIGludGVnZXIgKGtp bmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFy YW1ldGVyIDo6IG9tcF9kZWZhdWx0X21lbV9hbGxvYyA9IDEKKyAgICAgICAgaW50ZWdlciAo a2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBw YXJhbWV0ZXIgOjogb21wX2xhcmdlX2NhcF9tZW1fYWxsb2MgPSAyCisgICAgICAgIGludGVn ZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAg ICAgcGFyYW1ldGVyIDo6IG9tcF9jb25zdF9tZW1fYWxsb2MgPSAzCisgICAgICAgIGludGVn ZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAg ICAgcGFyYW1ldGVyIDo6IG9tcF9oaWdoX2J3X21lbV9hbGxvYyA9IDQKKyAgICAgICAgaW50 ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAg ICAgICBwYXJhbWV0ZXIgOjogb21wX2xvd19sYXRfbWVtX2FsbG9jID0gNQorICAgICAgICBp bnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAg ICAgICAgIHBhcmFtZXRlciA6OiBvbXBfY2dyb3VwX21lbV9hbGxvYyA9IDYKKyAgICAgICAg aW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAg ICAgICAgICBwYXJhbWV0ZXIgOjogb21wX3B0ZWFtX21lbV9hbGxvYyA9IDcKKyAgICAgICAg aW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAg ICAgICAgICBwYXJhbWV0ZXIgOjogb21wX3RocmVhZF9tZW1fYWxsb2MgPSA4CitlbmQKKwor c3Vicm91dGluZSBjb21tb24KKyAgdXNlIG0KKyAgaW50ZWdlciA6OiBhLGIsYyg1KQorICBj b21tb24gL215LyBhLGIsYyAgISB7IGRnLWVycm9yICJTb3JyeSwgIS5PTVAgYWxsb2NhdGUg Zm9yIENPTU1PTiBibG9jayB2YXJpYWJsZSAnbXknIGF0IC4xLiBub3Qgc3VwcG9ydGVkIiB9 CisgICEkb21wIGFsbG9jYXRlKC9teS8pIGFsbG9jYXRvcihvbXBfY2dyb3VwX21lbV9hbGxv YykKK2VuZAorCitpbnRlZ2VyIGZ1bmN0aW9uIGFsbG9jYXRvcnMoKSByZXN1bHQocmVzKQor ICB1c2UgbQorICBpbnRlZ2VyLCBzYXZlIDo6IGEoNSkgPSBbMSwyLDMsNCw1XSAgISB7IGRn LWVycm9yICJTb3JyeSwgIS5PTVAgYWxsb2NhdGUgZm9yIHZhcmlhYmxlICdhJyBhdCAuMS4g d2l0aCBTQVZFIGF0dHJpYnV0ZSBub3QgeWV0IGltcGxlbWVudGVkIiB9CisgICEkb21wIGFs bG9jYXRlKGEpIGFsbG9jYXRvcihvbXBfaGlnaF9id19tZW1fYWxsb2MpCisgIHJlcyA9IGEo NCkKK2VuZAorCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29t cC9hbGxvY2F0ZS00LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxv Y2F0ZS00LmY5MAppbmRleCBhMmRjZjEwNWVlMS4uYjkzYTM3Yzc4MGMgMTAwNjQ0Ci0tLSBh L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS00LmY5MAorKysgYi9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtNC5mOTAKQEAgLTMzLDEz ICszMywxMyBAQCBpbnRlZ2VyKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksIGlu dGVudChpbikgOjogbXlfYWxsb2MKIAogIXN0YWNrIHZhcmlhYmxlczoKIGludGVnZXIgOjog YSxiLGMobiksZCg1KSxlKDIpCi0hJG9tcCBhbGxvY2F0ZShhKSAgICEgeyBkZy1lcnJvciAi U29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBv cnRlZCIgfQorISRvbXAgYWxsb2NhdGUoYSkKICEkb21wIGFsbG9jYXRlICggYiAsIGMgKSBh bGlnbiAoIDMyKSBhbGxvY2F0b3IgKG15X2FsbG9jKQogISRvbXAgYWxsb2NhdGUgKGQpIGFs aWduKCAxMjggKQogISRvbXAgYWxsb2NhdGUoICAgZSApIGFsbG9jYXRvciggb21wX2hpZ2hf YndfbWVtX2FsbG9jICkKIAogIXNhdmVkIHZhcnMKLWludGVnZXIsIHNhdmUgOjogayxsLG0o NSkscigyKQoraW50ZWdlciwgc2F2ZSA6OiBrLGwsbSg1KSxyKDIpICAhIHsgZGctZXJyb3Ig IlNvcnJ5LCAhLk9NUCBhbGxvY2F0ZSBmb3IgdmFyaWFibGUgJ2snIGF0IC4xLiB3aXRoIFNB VkUgYXR0cmlidXRlIG5vdCB5ZXQgaW1wbGVtZW50ZWQiIH0KICEkb21wIGFsbG9jYXRlKGsp ICBhbGlnbigxNikgLCBhbGxvY2F0b3IgKG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jKQogISRv bXAgYWxsb2NhdGUgKCBsICkgYWxsb2NhdG9yIChvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYykg LCBhbGlnbiAoIDMyKQogISRvbXAgYWxsb2NhdGUgKG0pIGFsaWduKCAxMjggKSxhbGxvY2F0 b3IoIG9tcF9oaWdoX2J3X21lbV9hbGxvYyApCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtNy5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvbXAvYWxsb2NhdGUtNy5mOTAKaW5kZXggYjg1NjIwNGQ0OGEuLmFiODVlMzI3 Nzk1IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2Nh dGUtNy5mOTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRl LTcuZjkwCkBAIC00Nyw3ICs0Nyw2IEBAIGludGVnZXIsIHBvaW50ZXIgOjogcHRyCiBpbnRl Z2VyLCBwYXJhbWV0ZXIgOjogcHJtPTUKIAogISRvbXAgYWxsb2NhdGUocHJtKSBhbGlnbig2 NCkgISB7IGRnLWVycm9yICJBcmd1bWVudCAncHJtJyBhdCAuMS4gdG8gZGVjbGFyYXRpdmUg IS5PTVAgQUxMT0NBVEUgZGlyZWN0aXZlIG11c3QgYmUgYSB2YXJpYWJsZSIgfQotISB7IGRn LWVycm9yICJTb3JyeSwgZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgYXQgLjEuIG5vdCB5 ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CiAKICEkb21wIGFsbG9j YXRlKHVzZWQpIGFsbG9jYXRvcihvbXBfcHRlYW1fbWVtX2FsbG9jKSAgISB7IGRnLWVycm9y ICJBcmd1bWVudCAndXNlZCcgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRF IHNoYWxsIGJlIGluIHRoZSBzYW1lIHNjb3BlIGFzIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlv biIgfQogISRvbXAgYWxsb2NhdGUobikgYWxsb2NhdG9yKG9tcF9wdGVhbV9tZW1fYWxsb2Mp ICEgeyBkZy1lcnJvciAiVW5leHBlY3RlZCBkdW1teSBhcmd1bWVudCAnbicgYXMgYXJndW1l bnQgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIiB9CkBAIC01OSw3ICs1 OCw2IEBAIGNvbnRhaW5zCiAKICAgc3Vicm91dGluZSBpbm5lcgogICAgICEkb21wIGFsbG9j YXRlKGEpIGFsbG9jYXRvcihvbXBfcHRlYW1fbWVtX2FsbG9jKSAgISB7IGRnLWVycm9yICJB cmd1bWVudCAnYScgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIHNoYWxs IGJlIGluIHRoZSBzYW1lIHNjb3BlIGFzIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiIgfQot ISB7IGRnLWVycm9yICJTb3JyeSwgZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgYXQgLjEu IG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CiAgIGVuZAog ZW5kCiAKQEAgLTc0LDcgKzcyLDYgQEAgY29tbW9uIC9jb200LyB5LHoKIGFsbG9jYXRhYmxl IDo6IHEKIHBvaW50ZXIgOjogYgogISRvbXAgYWxsb2NhdGUgKGMsIGQpIGFsbG9jYXRvciAo b21wX3B0ZWFtX21lbV9hbGxvYykKLSEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZl ICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfQogISRvbXAgYWxsb2NhdGUgKC9jb200LykgYWxsb2NhdG9yIChvbXBf cHRlYW1fbWVtX2FsbG9jKQogISRvbXAgYWxsb2NhdGUgKGMpIGFsbG9jYXRvciAob21wX3B0 ZWFtX21lbV9hbGxvYykgISB7IGRnLWVycm9yICJEdXBsaWNhdGVkIHZhcmlhYmxlICdjJyBp biAhLk9NUCBBTExPQ0FURSIgfQogISRvbXAgYWxsb2NhdGUgKC9jb200LykgYWxsb2NhdG9y IChvbXBfcHRlYW1fbWVtX2FsbG9jKSAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgY29tbW9u IGJsb2NrICcvY29tNC8nIGluICEuT01QIEFMTE9DQVRFIiB9CkBAIC04Niw3ICs4Myw2IEBA IGVuZAogc3Vicm91dGluZSBmb3VyKG4pCiAgIGludGVnZXIgOjogcXEsIHJyLCBzcywgdHQs IHV1LCB2dixuCiAhJG9tcCBhbGxvY2F0ZSAocXEpIGFsaWduKDMrbikgISB7IGRnLWVycm9y ICJBTElHTiByZXF1aXJlcyBhIHNjYWxhciBwb3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyIGFs aWdubWVudCBleHByZXNzaW9uIGF0IC4xLiB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIiB9Ci0h IHsgZGctZXJyb3IgIlNvcnJ5LCBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSBhdCAuMS4g bm90IHlldCBzdXBwb3J0ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KICEkb21wIGFs bG9jYXRlIChycikgYWxpZ24oWzRdKSAhIHsgZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEg c2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24g YXQgLjEuIHRoYXQgaXMgYSBwb3dlciBvZiB0d28iIH0KICEkb21wIGFsbG9jYXRlIChzcykg YWxpZ24oWzRdKSAhIHsgZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0 aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQgLjEuIHRoYXQg aXMgYSBwb3dlciBvZiB0d28iIH0KICEkb21wIGFsbG9jYXRlICh0dCkgYWxpZ24oMzIuMCkg ISB7IGRnLWVycm9yICJBTElHTiByZXF1aXJlcyBhIHNjYWxhciBwb3NpdGl2ZSBjb25zdGFu dCBpbnRlZ2VyIGFsaWdubWVudCBleHByZXNzaW9uIGF0IC4xLiB0aGF0IGlzIGEgcG93ZXIg b2YgdHdvIiB9CkBAIC05OSw3ICs5NSw2IEBAIHN1YnJvdXRpbmUgZml2ZShuLG15X2FsbG9j KQogICBpbnRlZ2VyIDo6IHFxLCByciwgc3MsIHR0LCB1dSwgdnYsbgogICBpbnRlZ2VyKG9t cF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpIDo6IG15X2FsbG9jCiAhJG9tcCBhbGxvY2F0ZSAo cXEpIGFsbG9jYXRvcigzLjApICAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGludGVnZXIgZXhw cmVzc2lvbiBvZiB0aGUgJ29tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQnIGtpbmQiIH0KLSEg eyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBu b3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQogISRvbXAgYWxs b2NhdGUgKHJyKSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJFeHBlY3RlZCBpbnRl Z2VyIGV4cHJlc3Npb24gb2YgdGhlICdvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kJyBraW5k IiB9CiAhJG9tcCBhbGxvY2F0ZSAoc3MpIGFsbG9jYXRvcihbb21wX3B0ZWFtX21lbV9hbGxv Y10pICAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGludGVnZXIgZXhwcmVzc2lvbiBvZiB0aGUg J29tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQnIGtpbmQiIH0KICEkb21wIGFsbG9jYXRlICh0 dCkgYWxsb2NhdG9yKG15X2FsbG9jKSAgISBPSwpAQCAtMTEzLDcgKzEwOCw2IEBAIHN1YnJv dXRpbmUgZml2ZV9TYXZlQWxsKG4sbXlfYWxsb2MpCiAgIGludGVnZXIgOjogcXEsIHJyLCBz cywgdHQsIHV1LCB2dixuCiAgIGludGVnZXIob21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCkg OjogbXlfYWxsb2MKICEkb21wIGFsbG9jYXRlIChxcSkgYWxsb2NhdG9yKDMuMCkgICEgeyBk Zy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNs YXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAncXEnIGF0IC4yLiBoYXMgdGhlIFNBVkUg YXR0cmlidXRlIiB9Ci0hIHsgZGctZXJyb3IgIlNvcnJ5LCBkZWNsYXJhdGl2ZSAhLk9NUCBB TExPQ0FURSBhdCAuMS4gbm90IHlldCBzdXBwb3J0ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0g Li0xIH0KICEkb21wIGFsbG9jYXRlIChycikgYWxsb2NhdG9yKDNfMikgICEgeyBkZy1lcnJv ciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBh dCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAncnInIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmli dXRlIiB9CiAhJG9tcCBhbGxvY2F0ZSAoc3MpIGFsbG9jYXRvcihbb21wX3B0ZWFtX21lbV9h bGxvY10pICAhIHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGlu IEFMTE9DQVRPUiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJ3NzJyBhdCAuMi4g aGFzIHRoZSBTQVZFIGF0dHJpYnV0ZSIgfQogISRvbXAgYWxsb2NhdGUgKHR0KSBhbGxvY2F0 b3IobXlfYWxsb2MpICAhIHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVp cmVkIGluIEFMTE9DQVRPUiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJ3R0JyBh dCAuMi4gaGFzIHRoZSBTQVZFIGF0dHJpYnV0ZSIgfQpAQCAtMTI3LDcgKzEyMSw2IEBAIHN1 YnJvdXRpbmUgZml2ZV9TYXZlKG4sbXlfYWxsb2MpCiAgIGludGVnZXIsIHNhdmUgOjogcXEs IHJyLCBzcywgdHQsIHV1LCB2dgogICBpbnRlZ2VyKG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tp bmQpIDo6IG15X2FsbG9jCiAhJG9tcCBhbGxvY2F0ZSAocXEpIGFsbG9jYXRvcigzLjApICAh IHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRP UiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJ3FxJyBhdCAuMi4gaGFzIHRoZSBT QVZFIGF0dHJpYnV0ZSIgfQotISB7IGRnLWVycm9yICJTb3JyeSwgZGVjbGFyYXRpdmUgIS5P TVAgQUxMT0NBVEUgYXQgLjEuIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9CiAhJG9tcCBhbGxvY2F0ZSAocnIpIGFsbG9jYXRvcigzXzIpICAhIHsgZGct ZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1 c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJ3JyJyBhdCAuMi4gaGFzIHRoZSBTQVZFIGF0 dHJpYnV0ZSIgfQogISRvbXAgYWxsb2NhdGUgKHNzKSBhbGxvY2F0b3IoW29tcF9wdGVhbV9t ZW1fYWxsb2NdKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJl ZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdzcycgYXQg LjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KICEkb21wIGFsbG9jYXRlICh0dCkgYWxs b2NhdG9yKG15X2FsbG9jKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciBy ZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICd0 dCcgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KQEAgLTEzOSw3ICsxMzIsNiBA QCBtb2R1bGUgZml2ZV9Nb2R1bGUKICAgaW50ZWdlciwgc2F2ZSA6OiBxcSwgcnIsIHNzLCB0 dCwgdXUsIHZ2LG4KICAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBt eV9hbGxvYwogISRvbXAgYWxsb2NhdGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRnLWVy cm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNl IGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdxcScgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRy aWJ1dGUiIH0KLSEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9D QVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fQogISRvbXAgYWxsb2NhdGUgKHJyKSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJQ cmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4x LiBhcyB0aGUgbGlzdCBpdGVtICdycicgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUi IH0KICEkb21wIGFsbG9jYXRlIChzcykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2FsbG9j XSkgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxM T0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBoYXMg dGhlIFNBVkUgYXR0cmlidXRlIiB9CiAhJG9tcCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRvciht eV9hbGxvYykgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQg aW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0IC4y LiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CkBAIC0xNTEsNyArMTQzLDYgQEAgcHJvZ3Jh bSBmaXZlX3Byb2dyYW0KICAgaW50ZWdlciwgc2F2ZSA6OiBxcSwgcnIsIHNzLCB0dCwgdXUs IHZ2LG4KICAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxv YwogISRvbXAgYWxsb2NhdGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRnLWVycm9yICJQ cmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4x LiBhcyB0aGUgbGlzdCBpdGVtICdxcScgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUi IH0KLSEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0 IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQogISRv bXAgYWxsb2NhdGUgKHJyKSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJQcmVkZWZp bmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0 aGUgbGlzdCBpdGVtICdycicgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KICEk b21wIGFsbG9jYXRlIChzcykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2FsbG9jXSkgICEg eyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9S IGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBoYXMgdGhlIFNB VkUgYXR0cmlidXRlIiB9CiAhJG9tcCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRvcihteV9hbGxv YykgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxM T0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0IC4yLiBoYXMg dGhlIFNBVkUgYXR0cmlidXRlIiB9CkBAIC0xNzAsNyArMTYxLDYgQEAgc3Vicm91dGluZSBz aXgobixteV9hbGxvYykKICAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6 OiBteV9hbGxvYwogCiAhJG9tcCBhbGxvY2F0ZSAoL2NvbTZxcS8pIGFsbG9jYXRvcigzLjAp ICAhIHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9D QVRPUiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJy9jb202cXEvJyBhdCAuMi4g aGFzIHRoZSBTQVZFIGF0dHJpYnV0ZSIgfQotISB7IGRnLWVycm9yICJTb3JyeSwgZGVjbGFy YXRpdmUgIS5PTVAgQUxMT0NBVEUgYXQgLjEuIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRh cmdldCAqLSotKiB9IC4tMSB9CiAhJG9tcCBhbGxvY2F0ZSAoL2NvbTZyci8pIGFsbG9jYXRv cigzXzIpICAhIHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGlu IEFMTE9DQVRPUiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJy9jb202cnIvJyBh dCAuMi4gaGFzIHRoZSBTQVZFIGF0dHJpYnV0ZSIgfQogISRvbXAgYWxsb2NhdGUgKC9jb202 c3MvKSBhbGxvY2F0b3IoW29tcF9wdGVhbV9tZW1fYWxsb2NdKSAgISB7IGRnLWVycm9yICJQ cmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4x LiBhcyB0aGUgbGlzdCBpdGVtICcvY29tNnNzLycgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRy aWJ1dGUiIH0KICEkb21wIGFsbG9jYXRlICgvY29tNnR0LykgYWxsb2NhdG9yKG15X2FsbG9j KSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExP Q0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICcvY29tNnR0LycgYXQgLjIu IGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS04LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29tcC9hbGxvY2F0ZS04LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uYmI0ZDA3ZDBjNzMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtOC5mOTAKQEAgLTAsMCArMSwyOSBAQAor ISB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KKwor bW9kdWxlIG0KKyAgdXNlIGlzb19jX2JpbmRpbmcKKyAgIXVzZSBvbXBfbGliLCBvbmx5OiBv bXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciwg cGFyYW1ldGVyIDo6IG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQgPSBjX2ludHB0cl90Cisg IGludGVnZXIgOjogYSA9IDAsIGIgPSA0MiwgYyA9IDAKKworY29udGFpbnMKKyAgaW50ZWdl cihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSBmdW5jdGlvbiBnZXRfYWxsb2MoKQorICAg IGFsbG9jYXRhYmxlIDo6IGdldF9hbGxvYworICAgIGdldF9hbGxvYyA9IDJfb21wX2FsbG9j YXRvcl9oYW5kbGVfa2luZAorICBlbmQKKyAgc3Vicm91dGluZSBmb28gKCkKKyAgISRvbXAg c2NvcGUgcHJpdmF0ZSAoYSkgZmlyc3Rwcml2YXRlIChiKSByZWR1Y3Rpb24gKCs6IGMpIGFs bG9jYXRlICggZ2V0X2FsbG9jKCkgOiBhICwgYiAsIGMpCisgICAgaWYgKGIgLz0gNDIpICYK KyAgICAgIGVycm9yIHN0b3AKKyAgICBhID0gMzYKKyAgICBiID0gMTUKKyAgICBjID0gYyAr IDEKKyAgISRvbXAgZW5kIHNjb3BlCisgIGVuZAorZW5kCisKKyEgeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wICJvbXAgc2NvcGUgcHJpdmF0ZVxcKGFcXCkgZmlyc3Rwcml2YXRlXFwo YlxcKSByZWR1Y3Rpb25cXChcXCs6Y1xcKSBhbGxvY2F0ZVxcKGFsbG9jYXRvclxcKERcXC5c WzAtOVxdK1xcKTphXFwpIGFsbG9jYXRlXFwoYWxsb2NhdG9yXFwoRFxcLlxbMC05XF0rXFwp OmJcXCkgYWxsb2NhdGVcXChhbGxvY2F0b3JcXChEXFwuXFswLTlcXStcXCk6Y1xcKSIgIm9y aWdpbmFsIiB9IH0KKworISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkRc XC5cWzAtOVxdKyA9IGdldF9hbGxvYyBcXChcXCk7XFtcblxyXF0rICpEXFwuXFswLTlcXSsg PSBcXCpEXFwuXFswLTlcXSs7XFtcblxyXF0rICpfX2J1aWx0aW5fZnJlZSBcXChcXCh2b2lk IFxcKlxcKSBEXFwuXFswLTlcXStcXCk7IiAxICJvcmlnaW5hbCIgfSB9CisKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS05LmY5MCBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS05LmY5MApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGQ5NTUzNjg2YzQKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtOS5mOTAK QEAgLTAsMCArMSwxMTIgQEAKK21vZHVsZSBtCit1c2UgaXNvX2NfYmluZGluZworaW50ZWdl ciwgcGFyYW1ldGVyIDo6IG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQgPSBjX2ludHB0cl90 CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYK KyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9udWxsX2FsbG9jYXRvciA9IDAK KyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgor ICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2RlZmF1bHRfbWVtX2FsbG9jID0g MQorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAm CisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbGFyZ2VfY2FwX21lbV9hbGxv YyA9IDIKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5k KSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2NvbnN0X21lbV9hbGxv YyA9IDMKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5k KSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2hpZ2hfYndfbWVtX2Fs bG9jID0gNAorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tp bmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbG93X2xhdF9tZW1f YWxsb2MgPSA1CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVf a2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9jZ3JvdXBfbWVt X2FsbG9jID0gNgorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxl X2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfcHRlYW1fbWVt X2FsbG9jID0gNworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxl X2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfdGhyZWFkX21l bV9hbGxvYyA9IDgKK2VuZAorCisKK21vZHVsZSBtMgorICB1c2UgbQorICBpbXBsaWNpdCBu b25lCisgIGludGVnZXIgOjogQSg1KSA9IFsxLDIsMyw0LDVdLCBBMiwgQTMsIEE0LCBBNQor ICBpbnRlZ2VyIDo6IEIsIEMsIEQKKworISBJZiB0aGUgZm9sbG93aW5nIGZhaWxzIGJlY2F1 c2Ugb2YgYWRkZWQgcHJlZGVmaW5lZCBhbGxvY2F0b3JzLCBwbGVhc2UgdXBkYXRlCishIC0g Yy9jLXBhcnNlci5jJ3MgY19wYXJzZXJfb21wX2FsbG9jYXRlCishIC0gZm9ydHJhbi9vcGVu bXAuY2MncyBpc19wcmVkZWZpbmVkX2FsbG9jYXRvcgorISAtIGxpYmdvbXAvZW52LmMncyBw YXJzZV9hbGxvY2F0b3IKKyEgLSBsaWJnb21wL2xpYmdvbXAudGV4aSAoZG9jdW1lbnQgdGhl IG5ldyB2YWx1ZXMgLSBtdWx0aXBsZSBsb2NhdGlvbnMpCishICsgZW5zdXJlIHRoYXQgdGhl IG1lbW9yeS1zcGFjZXMgYXJlIGFsc28gdXAgdG8gZGF0ZS4KKworISRvbXAgYWxsb2NhdGUo QSkgYWxpZ24oMzIpIGFsbG9jYXRvcig5X29tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpICAh IHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRP UiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJ2EnIGF0IC4yLiBoYXMgdGhlIFNB VkUgYXR0cmlidXRlIiB9CisKKyEgdHlwbyBpbiBhbGxvY2F0b3IgbmFtZToKKyEkb21wIGFs bG9jYXRlKEEyKSBhbGxvY2F0b3Iob21wX2xvd19sYXRlbmN5X21lbV9hbGxvYykgICEgeyBk Zy1lcnJvciAiU3ltYm9sICdvbXBfbG93X2xhdGVuY3lfbWVtX2FsbG9jJyBhdCAuMS4gaGFz IG5vIElNUExJQ0lUIHR5cGU7IGRpZCB5b3UgbWVhbiAnb21wX2xvd19sYXRfbWVtX2FsbG9j J1xcPyIgfQorISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBp biBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdhMicgYXQgLjIu IGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KKwor ISBhbGlnbiBiZSBjb25zdCBtdWx0aXBsZSBvZiAyCishJG9tcCBhbGxvY2F0ZShBMykgYWxp Z24oMzEpIGFsbG9jYXRvcihvbXBfZGVmYXVsdF9tZW1fYWxsb2MpICEgeyBkZy1lcnJvciAi QUxJR04gcmVxdWlyZXMgYSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGln bm1lbnQgZXhwcmVzc2lvbiBhdCAuMS4gdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQorCish IGFsbG9jYXRvciBtaXNzaW5nIChyZXF1aXJlZCBhcyBBIGlzIHN0YXRpYykKKyEkb21wIGFs bG9jYXRlKEE0KSBhbGlnbigzMikgISB7IGRnLWVycm9yICJBbiBBTExPQ0FUT1IgY2xhdXNl IGlzIHJlcXVpcmVkIGFzIHRoZSBsaXN0IGl0ZW0gJ2E0JyBhdCAuMS4gaGFzIHRoZSBTQVZF IGF0dHJpYnV0ZSIgfQorCishICJleHByZXNzaW9uIGluIHRoZSBjbGF1c2UgbXVzdCBiZSBh IGNvbnN0YW50IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gb25lIG9mIHRoZQorISBw cmVkZWZpbmVkIG1lbW9yeSBhbGxvY2F0b3IgdmFsdWVzIC0+IG9tcF9sb3dfbGF0X21lbV9h bGxvYyIKKyEkb21wIGFsbG9jYXRlKEIpIGFsbG9jYXRvcihvbXBfaGlnaF9id19tZW1fYWxs b2MrMV9vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSBhbGlnbigzMikgISBPSzogb21wX2xv d19sYXRfbWVtX2FsbG9jCisKKyEkb21wIGFsbG9jYXRlKEMpIGFsbG9jYXRvcigyX29tcF9h bGxvY2F0b3JfaGFuZGxlX2tpbmQpICEgT0s6IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jCisK KyEkb21wIGFsbG9jYXRlKEE1KSBhbGlnbigzMikgYWxsb2NhdG9yKG9tcF9udWxsX2FsbG9j YXRvcikgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBB TExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdhNScgYXQgLjIuIGhh cyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKworISRvbXAgYWxsb2NhdGUoQykgYWxpZ24oMzIp IGFsbG9jYXRvcihvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYykgICEgeyBkZy1lcnJvciAiRHVw bGljYXRlZCB2YXJpYWJsZSAnYycgaW4gIS5PTVAgQUxMT0NBVEUgYXQgLjEuIiB9CisKK2Nv bnRhaW5zCisKK2ludGVnZXIgZnVuY3Rpb24gZigpCisgICEkb21wIGFsbG9jYXRlKEQpIGFs aWduKDMyKSBhbGxvY2F0b3Iob21wX2xhcmdlX2NhcF9tZW1fYWxsb2MpICEgeyBkZy1lcnJv ciAiQXJndW1lbnQgJ2QnIGF0IC4xLiB0byBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSBz aGFsbCBiZSBpbiB0aGUgc2FtZSBzY29wZSBhcyB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24i IH0KKyAgZiA9IEEoMSkKK2VuZAorCitpbnRlZ2VyIGZ1bmN0aW9uIGcoKQorICBpbnRlZ2Vy IDo6IGEyLCBiMgorICAhJG9tcCBhbGxvY2F0ZShhMikKKyAgISRvbXAgYWxsb2NhdGUoYTIp ICAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgdmFyaWFibGUgJ2EyJyBpbiAhLk9NUCBBTExP Q0FURSBhdCAuMS4iIH0KKyAgYTI9MTsgYjI9MgorICBibG9jaworICAgIGludGVnZXIgOjog YzIKKyAgICAhJG9tcCBhbGxvY2F0ZShjMiwgYjIpICEgeyBkZy1lcnJvciAiQXJndW1lbnQg J2IyJyBhdCAuMS4gdG8gZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgc2hhbGwgYmUgaW4g dGhlIHNhbWUgc2NvcGUgYXMgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIiB9CisgICAgYzIg PSAzCisgICAgZyA9IGMyK2EyK2IyCisgIGVuZCBibG9jaworZW5kCisKK2ludGVnZXIgZnVu Y3Rpb24gaChxKQorICBpbnRlZ2VyIDo6IHEKKyAgISRvbXAgYWxsb2NhdGUocSkgICEgeyBk Zy1lcnJvciAiVW5leHBlY3RlZCBkdW1teSBhcmd1bWVudCAncScgYXMgYXJndW1lbnQgYXQg LjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIiB9CisgIGggPSBxCitlbmQKKwor aW50ZWdlciBmdW5jdGlvbiBrICgpCisgIGludGVnZXIsIHNhdmUgOjogdmFyMyA9IDgKKyAg ISRvbXAgYWxsb2NhdGUodmFyMykgYWxsb2NhdG9yKC0xX29tcF9hbGxvY2F0b3JfaGFuZGxl X2tpbmQpICAhIHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGlu IEFMTE9DQVRPUiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJ3ZhcjMnIGF0IC4y LiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CisgIGsgPSB2YXIzCitlbmQKK2VuZCBtb2R1 bGUKKworCitzdWJyb3V0aW5lIGZvbworICBpbnRlZ2VyIDo6IGEsIGIKKyAgaW50ZWdlciA6 OiBjLCBkLGgKKyAgISRvbXAgYWxsb2NhdGUoYSxiKQorICBiID0gMTsgZCA9IDUKK2NvbnRh aW5zCitzdWJyb3V0aW5lIGludGVybmFsCisgIGludGVnZXIgOjogZSxmCisgICEkb21wIGFs bG9jYXRlKGMsZCkKKyAgISB7IGRnLWVycm9yICJBcmd1bWVudCAnYycgYXQgLjEuIHRvIGRl Y2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIHNoYWxsIGJlIGluIHRoZSBzYW1lIHNjb3BlIGFz IHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQor ICAhIHsgZGctZXJyb3IgIkFyZ3VtZW50ICdkJyBhdCAuMS4gdG8gZGVjbGFyYXRpdmUgIS5P TVAgQUxMT0NBVEUgc2hhbGwgYmUgaW4gdGhlIHNhbWUgc2NvcGUgYXMgdGhlIHZhcmlhYmxl IGRlY2xhcmF0aW9uIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMiB9CisgICEkb21wIGFsbG9j YXRlKGUpCisgIGEgPSAxOyBjID0gMjsgZSA9IDQKKyAgYmxvY2sKKyAgICAhJG9tcCBhbGxv Y2F0ZShmKSAhIHsgZGctZXJyb3IgIkFyZ3VtZW50ICdmJyBhdCAuMS4gdG8gZGVjbGFyYXRp dmUgIS5PTVAgQUxMT0NBVEUgc2hhbGwgYmUgaW4gdGhlIHNhbWUgc2NvcGUgYXMgdGhlIHZh cmlhYmxlIGRlY2xhcmF0aW9uIiB9CisgICAgISRvbXAgYWxsb2NhdGUoaCkgISB7IGRnLWVy cm9yICJBcmd1bWVudCAnaCcgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRF IHNoYWxsIGJlIGluIHRoZSBzYW1lIHNjb3BlIGFzIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlv biIgfQorICBlbmQgYmxvY2sKK2VuZAorZW5kCmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdv bXAudGV4aSBiL2xpYmdvbXAvbGliZ29tcC50ZXhpCmluZGV4IDZhNzc3MDA4NGQyLi5jMTYz NDExYzUyOSAxMDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLnRleGkKKysrIGIvbGliZ29t cC9saWJnb21wLnRleGkKQEAgLTIyNSw3ICsyMjUsNyBAQCBUaGUgT3Blbk1QIDQuNSBzcGVj aWZpY2F0aW9uIGlzIGZ1bGx5IHN1cHBvcnRlZC4KIEBpdGVtIFByZWRlZmluZWQgbWVtb3J5 IHNwYWNlcywgbWVtb3J5IGFsbG9jYXRvcnMsIGFsbG9jYXRvciB0cmFpdHMKICAgICAgIEB0 YWIgWSBAdGFiIFNlZSBhbHNvIEByZWZ7TWVtb3J5IGFsbG9jYXRpb259CiBAaXRlbSBNZW1v cnkgbWFuYWdlbWVudCByb3V0aW5lcyBAdGFiIFkgQHRhYgotQGl0ZW0gQGNvZGV7YWxsb2Nh dGV9IGRpcmVjdGl2ZSBAdGFiIFAgQHRhYiBPbmx5IEMsIG9ubHkgc3RhY2sgdmFyaWFibGVz CitAaXRlbSBAY29kZXthbGxvY2F0ZX0gZGlyZWN0aXZlIEB0YWIgUCBAdGFiIE9ubHkgQyBh bmQgRm9ydHJhbiwgb25seSBzdGFjayB2YXJpYWJsZXMKIEBpdGVtIEBjb2Rle2FsbG9jYXRl fSBjbGF1c2UgQHRhYiBQIEB0YWIgSW5pdGlhbCBzdXBwb3J0CiBAaXRlbSBAY29kZXt1c2Vf ZGV2aWNlX2FkZHJ9IGNsYXVzZSBvbiBAY29kZXt0YXJnZXQgZGF0YX0gQHRhYiBZIEB0YWIK IEBpdGVtIEBjb2Rle2FuY2VzdG9yfSBtb2RpZmllciBvbiBAY29kZXtkZXZpY2V9IGNsYXVz ZSBAdGFiIFkgQHRhYgpAQCAtMjk3LDcgKzI5Nyw3IEBAIFRoZSBPcGVuTVAgNC41IHNwZWNp ZmljYXRpb24gaXMgZnVsbHkgc3VwcG9ydGVkLgogQGl0ZW0gQGNvZGV7c3RyaWN0fSBtb2Rp ZmllciBpbiB0aGUgQGNvZGV7Z3JhaW5zaXplfSBhbmQgQGNvZGV7bnVtX3Rhc2tzfQogICAg ICAgY2xhdXNlcyBvZiB0aGUgQGNvZGV7dGFza2xvb3B9IGNvbnN0cnVjdCBAdGFiIFkgQHRh YgogQGl0ZW0gQGNvZGV7YWxpZ259IGNsYXVzZSBpbiBAY29kZXthbGxvY2F0ZX0gZGlyZWN0 aXZlIEB0YWIgUAotICAgICAgQHRhYiBPbmx5IEMgKGFuZCBvbmx5IHN0YWNrIHZhcmlhYmxl cykKKyAgICAgIEB0YWIgT25seSBDIGFuZCBGb3J0cmFuIChhbmQgb25seSBzdGFjayB2YXJp YWJsZXMpCiBAaXRlbSBAY29kZXthbGlnbn0gbW9kaWZpZXIgaW4gQGNvZGV7YWxsb2NhdGV9 IGNsYXVzZSBAdGFiIFkgQHRhYgogQGl0ZW0gQGNvZGV7dGhyZWFkX2xpbWl0fSBjbGF1c2Ug dG8gQGNvZGV7dGFyZ2V0fSBjb25zdHJ1Y3QgQHRhYiBZIEB0YWIKIEBpdGVtIEBjb2Rle2hh c19kZXZpY2VfYWRkcn0gY2xhdXNlIHRvIEBjb2Rle3RhcmdldH0gY29uc3RydWN0IEB0YWIg WSBAdGFiCmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4v YWxsb2NhdGUtNS5mOTAgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxs b2NhdGUtNS5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRl OWNkNWEzMDJlCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5mb3J0cmFuL2FsbG9jYXRlLTUuZjkwCkBAIC0wLDAgKzEsODcgQEAKKyEgeyBkZy1hZGRp dGlvbmFsLW9wdGlvbnMgIi1mZHVtcC10cmVlLWdpbXBsZSIgfQorCishIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfYWxsb2MgXFwoIiA1ICJn aW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9fYnVp bHRpbl9HT01QX2ZyZWUgXFwoIiA1ICJnaW1wbGUiIH0gfQorCisKK21vZHVsZSBtCisgIHVz ZSBvbXBfbGliCisgIHVzZSBpc29fY19iaW5kaW5nCisgIGltcGxpY2l0IG5vbmUgKHR5cGUs IGV4dGVybmFsKQorICBpbnRlZ2VyKGNfaW50cHRyX3QpIDo6IGludHB0cgorY29udGFpbnMK KworaW50ZWdlciBmdW5jdGlvbiBvbmUgKCkKKyAgaW50ZWdlciA6OiBzdW0sIGkKKyAgISRv bXAgYWxsb2NhdGUoc3VtKQorICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAic3VtXFwuXFswLTlcXSsgPSBfX2J1aWx0aW5fR09NUF9hbGxvYyBcXCg0LCA0LCAwQlxc KTsiIDEgImdpbXBsZSIgfSB9CisgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRp bWVzICJfX2J1aWx0aW5fR09NUF9mcmVlIFxcKHN1bVxcLlxbMC05XF0rLCAwQlxcKTsiIDEg ImdpbXBsZSIgfSB9CisKKyAgISBOT1RFOiBJbml0aWFsaXplciBjYW5ub3QgYmUgb21wX2lu aXRfYWxsb2NhdG9yIC0gYXMgJ0EnIGlzCisgICEgaW4gdGhlIHNhbWUgc2NvcGUgYW5kIHRo ZSBhdXRvLW9tcF9mcmVlIGNvbWVzIGxhdGVyIHRoYW4KKyAgISBhbnkgb21wX2Rlc3Ryb3lf YWxsb2NhdG9yLgorICBpbnRlZ2VyKG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpIDo6IG15 X2FsbG9jYXRvciA9IG9tcF9sb3dfbGF0X21lbV9hbGxvYworICBpbnRlZ2VyIDo6IG4gPSAy NQorICBzdW0gPSAwCisgYmxvY2sKKyAgdHlwZShvbXBfYWxsb2N0cmFpdCkgOjogdHJhaXRz KDEpID0gWyBvbXBfYWxsb2N0cmFpdChvbXBfYXRrX2FsaWdubWVudCwgNjQpIF0KKyAgaW50 ZWdlciA6OiBBKG4pCisgICEkb21wIGFsbG9jYXRlKEEpIGFsaWduKDEyOCkgYWxsb2NhdG9y KG15X2FsbG9jYXRvcikKKyAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg ImEgPSBfX2J1aWx0aW5fR09NUF9hbGxvYyBcXCgxMjgsIERcXC5cWzAtOVxdKywgRFxcLlxb MC05XF0rXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKyAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2ZyZWUgXFwoYSwgMEJcXCk7IiAxICJnaW1w bGUiIH0gfQorCisgIGlmIChtb2QgKHRyYW5zZmVyKGxvYyhBKSwgaW50cHRyKSwgMTI4X2Nf aW50cHRyX3QpIC89IDApICYKKyAgICBzdG9wIDIKKyAgZG8gaSA9IDEsIG4KKyAgICBBKGkp ID0gaQorICBlbmQgZG8KKworICBteV9hbGxvY2F0b3IgPSBvbXBfaW5pdF9hbGxvY2F0b3Io b21wX2xvd19sYXRfbWVtX3NwYWNlLDEsdHJhaXRzKQorICBibG9jaworICAgIGludGVnZXIg QihuKQorICAgIGludGVnZXIgQyg1KQorICAgICEkb21wIGFsbG9jYXRlKEIsQykgYWxsb2Nh dG9yKG15X2FsbG9jYXRvcikKKyAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAiYiA9IF9fYnVpbHRpbl9HT01QX2FsbG9jIFxcKFxbMC05XF0rLCBEXFwuXFswLTlc XSssIERcXC5cWzAtOVxdK1xcKTsiIDEgImdpbXBsZSIgfSB9CisgICAgISB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImNcXC5cWzAtOVxdKyA9IF9fYnVpbHRpbl9HT01Q X2FsbG9jIFxcKFxbMC05XF0rLCAyMCwgRFxcLlxbMC05XF0rXFwpOyIgMSAiZ2ltcGxlIiB9 IH0KKyAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGlu X0dPTVBfZnJlZSBcXChiLCAwQlxcKTsiIDEgImdpbXBsZSIgfSB9CisgICAgISB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2ZyZWUgXFwoY1xc LlxbMC05XF0rLCAwQlxcKTsiIDEgImdpbXBsZSIgfSB9CisKKyAgICBpbnRlZ2VyIDo6IEQo NSkKKyAgICAhJG9tcCBhbGxvY2F0ZShEKSBhbGlnbigyNTYpCisgICAgISB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImRcXC5cWzAtOVxdKyA9IF9fYnVpbHRpbl9HT01Q X2FsbG9jIFxcKDI1NiwgMjAsIDBCXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKyAgICAhIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSBcXChk XFwuXFswLTlcXSssIDBCXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKworICAgIEIgPSAwCisgICAg QyA9IFsxLDIsMyw0LDVdCisgICAgRCA9IFsxMSwyMiwzMyw0NCw1NV0KKworICAgIGlmICht b2QgKHRyYW5zZmVyKGxvYyhCKSwgaW50cHRyKSwgNjRfY19pbnRwdHJfdCkgLz0gMCkgJgor ICAgICAgc3RvcCAzCisgICAgaWYgKG1vZCAodHJhbnNmZXIobG9jKEMpLCBpbnRwdHIpLCA2 NF9jX2ludHB0cl90KSAvPSAwKSAmCisgICAgICBzdG9wIDQKKyAgICBpZiAobW9kICh0cmFu c2Zlcihsb2MoRCksIGludHB0ciksIDI1Nl9jX2ludHB0cl90KSAvPSAwKSAmCisgICAgICBz dG9wIDUKKworICAgIGRvIGkgPSAxLCA1CisgICAgICBpZiAoQyhpKSAvPSBpKSAmCisgICAg ICAgIHN0b3AgNgorICAgICAgaWYgKEQoaSkgLz0gaSArIDEwKmkpICYKKyAgICAgICAgc3Rv cCA3CisgICAgZW5kIGRvCisKKyAgICBkbyBpID0gMSwgbgorICAgICAgaWYgKEIoaSkgLz0g MCkgJgorICAgICAgICBzdG9wIDkKKyAgICAgIHN1bSA9IHN1bSArIEEoaSkrQihpKStDKG1v ZChpLDUpKzEpK0QobW9kKGksNSkrMSkKKyAgICBlbmQgZG8KKyAgZW5kIGJsb2NrCisgIGNh bGwgb21wX2Rlc3Ryb3lfYWxsb2NhdG9yIChteV9hbGxvY2F0b3IpCisgZW5kIGJsb2NrCisg b25lID0gc3VtCitlbmQKK2VuZCBtb2R1bGUKKwordXNlIG0KK2lmIChvbmUgKCkgLz0gMTIy NSkgJgorICBzdG9wIDEKK2VuZApkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGli Z29tcC5mb3J0cmFuL2FsbG9jYXRlLTYuZjkwIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5mb3J0cmFuL2FsbG9jYXRlLTYuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi41YzMyNjUyZjJhNgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVz dHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS02LmY5MApAQCAtMCwwICsxLDEyMyBA QAorbW9kdWxlIG0KKyAgdXNlIGlzb19jX2JpbmRpbmcKKyAgdXNlIG9tcF9saWIKKyAgaW1w bGljaXQgbm9uZSAodHlwZSwgZXh0ZXJuYWwpCisgIGludGVnZXIoY19pbnRwdHJfdCkgOjog aW50cHRyCisKKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAiX19idWlsdGlu X3N0YWNrX3NhdmUiICJnaW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtbm90ICJfX2J1aWx0aW5fYWxsb2NhIiAiZ2ltcGxlIiB9IH0KKyEgeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLW5vdCAiX19idWlsdGluX3N0YWNrX3Jlc3RvcmUiICJnaW1wbGUi IH0gfQorCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGlu X0dPTVBfYWxsb2MgXFwoIiA1ICJnaW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2ZyZWUgXFwoIiA1ICJnaW1wbGUiIH0g fQorCitjb250YWlucworCitzdWJyb3V0aW5lIG9uZSAoKQorICBpbnRlZ2VyIDo6IHJlc3Vs dCwgbiwgaQorICByZXN1bHQgPSAwCisgIG4gPSAzCisgICEkb21wIHRhcmdldCBtYXAodG9m cm9tOiByZXN1bHQpIGZpcnN0cHJpdmF0ZShuKQorICAgIGJsb2NrCisgICAgICBpbnRlZ2Vy IDo6IHZhciwgdmFyMihuKQorICAgICAgISRvbXAgYWxsb2NhdGUodmFyLHZhcjIpIGFsaWdu KDEyOCkgYWxsb2NhdG9yKG9tcF9sb3dfbGF0X21lbV9hbGxvYykKKyAgICAgIHZhciA9IDUK KyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2YXJcXC5cWzAtOVxdKyA9 IF9fYnVpbHRpbl9HT01QX2FsbG9jIFxcKDEyOCwgNCwgNVxcKTsiIDEgImdpbXBsZSIgfSB9 ICovCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAidmFyMlxcLlxbMC05 XF0rID0gX19idWlsdGluX0dPTVBfYWxsb2MgXFwoMTI4LCBEXFwuXFswLTlcXSssIDVcXCk7 IiAxICJnaW1wbGUiIH0gfSAqLworCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSBcXCh2YXJcXC5cWzAtOVxdKywgMEJcXCk7IiAx ICJnaW1wbGUiIH0gfSAqLworISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg Il9fYnVpbHRpbl9HT01QX2ZyZWUgXFwodmFyMlxcLlxbMC05XF0rLCAwQlxcKTsiIDEgImdp bXBsZSIgfSB9ICovCisKKyAgICAgIGlmIChtb2QodHJhbnNmZXIobG9jKHZhciksIGludHB0 ciksIDEyOF9jX2ludHB0cl90KSAvPSAwKSAmCisgICAgICAgIHN0b3AgMQorICAgICAgaWYg KG1vZCh0cmFuc2Zlcihsb2ModmFyMiksIGludHB0ciksIDEyOF9jX2ludHB0cl90KSAvPSAw KSAmCisgICAgICAgIHN0b3AgMgorICAgICAgaWYgKHZhciAvPSA1KSAmCisgICAgICAgIHN0 b3AgMworCisgICAgICAhJG9tcCBwYXJhbGxlbCBkbworICAgICAgZG8gaSA9IDEsIG4KKyAg ICAgICAgdmFyMihpKSA9IChpKzMyKTsKKyAgICAgIGVuZCBkbworCisgICAgICAhJG9tcCBw YXJhbGxlbCBsb29wIHJlZHVjdGlvbigrOnJlc3VsdCkKKyAgICAgIGRvIGkgPSAxLCBuCisg ICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHZhciArIHZhcjIoaSkKKyAgICAgIGVuZCBkbwor ICAgIGVuZCBibG9jaworICBpZiAocmVzdWx0IC89ICgzKjUgKyAzMyArIDM0ICsgMzUpKSAm CisgICAgc3RvcCA0CitlbmQKKworc3Vicm91dGluZSB0d28gKCkKKyAgdHlwZSBzdAorICAg IGludGVnZXIgOjogYSwgYgorICBlbmQgdHlwZQorICBpbnRlZ2VyIDo6IHNjYWxhciwgYXJy YXkoNSksIGkKKyAgdHlwZShzdCkgcworICAhJG9tcCBhbGxvY2F0ZShzY2FsYXIsIGFycmF5 LCBzKQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInNjYWxhclxcLlxb MC05XF0rID0gX19idWlsdGluX0dPTVBfYWxsb2MgXFwoNCwgNCwgMEJcXCk7IiAxICJnaW1w bGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImFycmF5XFwu XFswLTlcXSsgPSBfX2J1aWx0aW5fR09NUF9hbGxvYyBcXCg0LCAyMCwgMEJcXCk7IiAxICJn aW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInNcXC5c WzAtOVxdKyA9IF9fYnVpbHRpbl9HT01QX2FsbG9jIFxcKDQsIDgsIDBCXFwpOyIgMSAiZ2lt cGxlIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJfX2J1aWx0 aW5fR09NUF9mcmVlIFxcKHNjYWxhclxcLlxbMC05XF0rLCAwQlxcKTsiIDEgImdpbXBsZSIg fSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dP TVBfZnJlZSBcXChhcnJheVxcLlxbMC05XF0rLCAwQlxcKTsiIDEgImdpbXBsZSIgfSB9Cish IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfZnJl ZSBcXChzXFwuXFswLTlcXSssIDBCXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKworICBzY2FsYXIg PSA0NAorICBhcnJheSA9IFsxLDIsMyw0LDVdCisgIHMgPSBzdChhPTExLCBiPTU2KQorCisg ICEkb21wIHBhcmFsbGVsIGZpcnN0cHJpdmF0ZShzY2FsYXIpIGZpcnN0cHJpdmF0ZShhcnJh eSkgZmlyc3Rwcml2YXRlKHMpCisgICAgaWYgKHNjYWxhciAvPSA0NCkgJgorICAgICAgc3Rv cCA1CisgICAgc2NhbGFyID0gMzM7CisgICAgaWYgKGFueSAoYXJyYXkgLz0gWzEsMiwzLDQs NV0pKSAmCisgICAgICBzdG9wIDYKKyAgICBhcnJheSA9IFsxMCwyMCwzMCw0MCw1MF0KKyAg ICBpZiAocyVhIC89IDExIC5vci4gcyViIC89IDU2KSAmCisgICAgICBzdG9wIDcKKyAgICBz JWEgPSA3NAorICAgIHMlYiA9IDY3NAorICAhJG9tcCBlbmQgcGFyYWxsZWwKKworICBpZiAo c2NhbGFyIC89IDQ0KSAmCisgICAgc3RvcCA4CisgIGlmIChhbnkgKGFycmF5IC89IFsxLDIs Myw0LDVdKSkgJgorICAgIHN0b3AgOQorICBpZiAocyVhIC89IDExIC5vci4gcyViIC89IDU2 KSAmCisgICAgc3RvcCAxMAorCisgICEkb21wIHRhcmdldCBkZWZhdWx0bWFwKGZpcnN0cHJp dmF0ZSA6IHNjYWxhcikgZGVmYXVsdG1hcChub25lIDogYWdncmVnYXRlKSBkZWZhdWx0bWFw KG5vbmUgOiBwb2ludGVyKQorICAgIGlmIChzY2FsYXIgLz0gNDQpICYKKyAgICAgIHN0b3Ag MTEKKyAgICBzY2FsYXIgPSAzMzsKKyAgISRvbXAgZW5kIHRhcmdldAorCisgIGlmIChzY2Fs YXIgLz0gNDQpICYKKyAgICBzdG9wIDEyCisKKyAgISRvbXAgdGFyZ2V0IGRlZmF1bHRtYXAo bm9uZSA6IHNjYWxhcikgZGVmYXVsdG1hcChmaXJzdHByaXZhdGUgOiBhZ2dyZWdhdGUpIGRl ZmF1bHRtYXAobm9uZSA6IHBvaW50ZXIpIHByaXZhdGUoaSkKKyAgICBpZiAoYW55IChhcnJh eSAvPSBbMSwyLDMsNCw1XSkpICYKKyAgICAgIHN0b3AgMTMKKyAgICBkbyBpID0gMSwgNQor ICAgICAgYXJyYXkoaSkgPSAxMCppCisgICAgZW5kIGRvCisgICEkb21wIGVuZCB0YXJnZXQK KworICBpZiAoYW55KGFycmF5IC89IFsxLDIsMyw0LDVdKSkgJgorICAgIHN0b3AgMTMKKyAg ISRvbXAgdGFyZ2V0IGRlZmF1bHRtYXAobm9uZSA6IHNjYWxhcikgZGVmYXVsdG1hcChmaXJz dHByaXZhdGUgOiBhZ2dyZWdhdGUpIGRlZmF1bHRtYXAobm9uZSA6IHBvaW50ZXIpCisgICAg aWYgKHMlYSAvPSAxMSAub3IuIHMlYiAvPSA1NikgJgorICAgICAgc3RvcCAxNAorICAgIHMl YSA9IDc0CisgICAgcyViID0gNjc0CisgICEkb21wIGVuZCB0YXJnZXQKKyAgaWYgKHMlYSAv PSAxMSAub3IuIHMlYiAvPSA1NikgJgorICAgIHN0b3AgMTUKK2VuZAorZW5kIG1vZHVsZQor Cit1c2UgbQorICBjYWxsIG9uZSAoKQorICBjYWxsIHR3byAoKQorZW5kCmRpZmYgLS1naXQg YS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNy5mOTAgYi9s aWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNy5mOTAKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgzZjNlYWJmYzNlCi0tLSAvZGV2 L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRl LTcuZjkwCkBAIC0wLDAgKzEsMzQyIEBACishIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICIt ZmR1bXAtdHJlZS1vbXBsb3dlciIgfQorCishIEZvciB0aGUgNCB2YXJzIGluIG9tcF9wYXJh bGxlbCwgNCBpbiBvbXBfdGFyZ2V0IGFuZCAyIGluIG5vX2FsbG9jMl9mdW5jLgorISB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2FsbG9jIFxc KCIgMTAgIm9tcGxvd2VyIiB9IH0gCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSBcXCgiIDEwICJvbXBsb3dlciIgfSB9CisKK21v ZHVsZSBtCisgIHVzZSBpc29fY19iaW5kaW5nCisgIHVzZSBvbXBfbGliCisgIGltcGxpY2l0 IG5vbmUgKHR5cGUsIGV4dGVybmFsKQorICBpbnRlZ2VyKGNfaW50cHRyX3QpIDo6IGludHB0 cgorCitjb250YWlucworCitzdWJyb3V0aW5lIGNoZWNrX2ludCAoeCwgeSkKKyAgaW50ZWdl ciA6OiB4LCB5CisgIHZhbHVlIDo6IHkKKyAgaWYgKHggLz0geSkgJgorICAgIHN0b3AgMQor ZW5kCisKK3N1YnJvdXRpbmUgY2hlY2tfcHRyICh4LCB5KQorICB0eXBlKGNfcHRyKSA6OiB4 CisgIGludGVnZXIoY19pbnRwdHJfdCksIHZhbHVlIDo6IHkKKyAgaWYgKHRyYW5zZmVyKHgs aW50cHRyKSAvPSB5KSAmCisgICAgc3RvcCAyCitlbmQKKworaW50ZWdlciBmdW5jdGlvbiBu b19hbGxvY19mdW5jICgpIHJlc3VsdChyZXMpCisgICEgVGhlcmUgaXMgbm8gX19idWlsdGlu X0dPTVBfYWxsb2MgLyBfX2J1aWx0aW5fR09NUF9mcmVlIGFzCisgICEgYWxsb2NhdG9yID09 IG9tcF9kZWZhdWx0X21lbV9hbGxvYyAoa25vd24gYXQgY29tcGlsZSB0aW1lLgorICBpbnRl Z2VyIDo6IG5vX2FsbG9jCisgICEkb21wIGFsbG9jYXRlKG5vX2FsbG9jKSBhbGxvY2F0b3Io b21wX2RlZmF1bHRfbWVtX2FsbG9jKQorICBub19hbGxvYyA9IDcKKyAgcmVzID0gbm9fYWxs b2MKK2VuZAorCitpbnRlZ2VyIGZ1bmN0aW9uIG5vX2FsbG9jMl9mdW5jKCkgcmVzdWx0KHJl cykKKyAgISBJZiBub19hbGxvYzIgd2VyZSBUUkVFX1VOVVNFRCwgdGhlcmUgd291bGQgYmUg bm8KKyAgISBfX2J1aWx0aW5fR09NUF9hbGxvYyAvIF9fYnVpbHRpbl9HT01QX2ZyZWUKKyAg ISBIb3dldmVyLCBhcyB0aGUgcGFyc2VyIGFscmVhZHkgbWFya3Mgbm9fYWxsb2MyCisgICEg YW5kIGlzX2FsbG9jMiBhcyB1c2VkLCB0aGUgdHJlZSBpcyBnZW5lcmF0ZWQgZm9yIGJvdGgg dmFycy4KKyAgaW50ZWdlciA6OiBub19hbGxvYzIsIGlzX2FsbG9jMgorICAhJG9tcCBhbGxv Y2F0ZShub19hbGxvYzIsIGlzX2FsbG9jMikKKyAgaXNfYWxsb2MyID0gNworICByZXMgPSBp c19hbGxvYzIKK2VuZAorCisKK3N1YnJvdXRpbmUgb21wX3BhcmFsbGVsICgpCisgIGludGVn ZXIgOjogaSwgbiwgaWlpLCBqamooNSkKKyAgdHlwZShjX3B0cikgOjogcHRyCisgICEkb21w IGFsbG9jYXRlKGlpaSwgampqLCBwdHIpCisgIG4gPSA2CisgIGlpaSA9IDUKKyAgcHRyID0g dHJhbnNmZXIgKGludCh6JzEyMzQnLCBjX2ludHB0cl90KSwgcHRyKQorIGJsb2NrCisgIGlu dGVnZXIgOjoga2trKG4pCisgICEkb21wIGFsbG9jYXRlKGtraykKKworICBkbyBpID0gMSwg NQorICAgIGpqaihpKSA9IDMqaQorICBlbmQgZG8KKyAgZG8gaSA9IDEsIDYKKyAgICBra2so aSkgPSA3KmkKKyAgZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZGVmYXVsdChub25lKSBm aXJzdHByaXZhdGUoaWlpLCBqamosIGtraywgcHRyKSBpZiguZmFsc2UuKQorICAgIGlmIChp aWkgLz0gNSkgJgorICAgICAgc3RvcCAzCisgICAgaWlpID0gNworICAgIGNhbGwgY2hlY2tf aW50IChpaWksIDcpCisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGlmIChqamooaSkgLz0gMypp KSAmCisgICAgICAgIHN0b3AgNAorICAgIGVuZCBkbworICAgIGRvIGkgPSAxLCA2CisgICAg ICBpZiAoa2trKGkpIC89IDcqaSkgJgorICAgICAgICBzdG9wIDUKKyAgICBlbmQgZG8KKyAg ICBkbyBpID0gMSwgNQorICAgICAgampqKGkpID0gNCppCisgICAgZW5kIGRvCisgICAgZG8g aSA9IDEsIDYKKyAgICAgIGtrayhpKSA9IDgqaQorICAgIGVuZCBkbworICAgIGRvIGkgPSAx LCA1CisgICAgICBjYWxsIGNoZWNrX2ludCAoampqKGkpLCA0KmkpCisgICAgZW5kIGRvCisg ICAgZG8gaSA9IDEsIDYKKyAgICAgIGNhbGwgY2hlY2tfaW50IChra2soaSksIDgqaSkKKyAg ICBlbmQgZG8KKyAgICBpZiAodHJhbnNmZXIgKHB0ciwgaW50cHRyKSAvPSBpbnQoeicxMjM0 JywgY19pbnRwdHJfdCkpICYKKyAgICAgIHN0b3AgNgorICAgIHB0ciA9IHRyYW5zZmVyIChp bnQoeidhYmNkJywgY19pbnRwdHJfdCksIHB0cikKKyAgICBpZiAodHJhbnNmZXIgKHB0ciwg aW50cHRyKSAvPSBpbnQoeidhYmNkJywgY19pbnRwdHJfdCkpICYKKyAgICAgIHN0b3AgNwor ICAgIGNhbGwgY2hlY2tfcHRyIChwdHIsICBpbnQoeidhYmNkJywgY19pbnRwdHJfdCkpCisg ICEkb21wIGVuZCBwYXJhbGxlbAorCisgIGlmIChpaWkgLz0gNSkgJgorICAgIHN0b3AgOAor ICBjYWxsIGNoZWNrX2ludCAoaWlpLCA1KQorICBkbyBpID0gMSwgNQorICAgIGlmIChqamoo aSkgLz0gMyppKSAmCisgICAgICBzdG9wIDkKKyAgICBjYWxsIGNoZWNrX2ludCAoampqKGkp LCAzKmkpCisgIGVuZCBkbworICBkbyBpID0gMSwgNgorICAgIGlmIChra2soaSkgLz0gNypp KSAmCisgICAgICBzdG9wIDEwCisgICAgY2FsbCBjaGVja19pbnQgKGtrayhpKSwgNyppKQor ICBlbmQgZG8KKyAgaWYgKHRyYW5zZmVyIChwdHIsIGludHB0cikgLz0gaW50KHonMTIzNCcs IGNfaW50cHRyX3QpKSAmCisgICAgc3RvcCAxMQorICBjYWxsIGNoZWNrX3B0ciAocHRyLCBp bnQoeicxMjM0JywgY19pbnRwdHJfdCkpCisKKyAgISRvbXAgcGFyYWxsZWwgZGVmYXVsdChm aXJzdHByaXZhdGUpIGlmKC5mYWxzZS4pCisgICAgaWYgKGlpaSAvPSA1KSAmCisgICAgICBz dG9wIDEyCisgICAgaWlpID0gNworICAgIGNhbGwgY2hlY2tfaW50IChpaWksIDcpCisgICAg ZG8gaSA9IDEsIDUKKyAgICAgIGlmIChqamooaSkgLz0gMyppKSAmCisgICAgICAgIHN0b3Ag MTMKKyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAgICAgaWYgKGtrayhpKSAvPSA3 KmkpICYKKyAgICAgICAgc3RvcCAxNAorICAgIGVuZCBkbworICAgIGRvIGkgPSAxLCA1Cisg ICAgICBqamooaSkgPSA0KmkKKyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAgICAg a2trKGkpID0gOCppCisgICAgZW5kIGRvCisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGNhbGwg Y2hlY2tfaW50IChqamooaSksIDQqaSkKKyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNgor ICAgICAgY2FsbCBjaGVja19pbnQgKGtrayhpKSwgOCppKQorICAgIGVuZCBkbworICAgIGlm ICh0cmFuc2ZlciAocHRyLCBpbnRwdHIpIC89IGludCh6JzEyMzQnLCBjX2ludHB0cl90KSkg JgorICAgICAgc3RvcCAxNQorICAgIHB0ciA9IHRyYW5zZmVyIChpbnQgKHonYWJjZCcsIGNf aW50cHRyX3QpLCBwdHIpCisgICAgaWYgKHRyYW5zZmVyIChwdHIsIGludHB0cikgLz0gaW50 KHonYWJjZCcsIGNfaW50cHRyX3QpKSAmCisgICAgICBzdG9wIDE2CisgICAgY2FsbCBjaGVj a19wdHIgKHB0ciwgaW50ICh6J2FiY2QnLCBjX2ludHB0cl90KSkKKyAgISRvbXAgZW5kIHBh cmFsbGVsCisgIGlmIChpaWkgLz0gNSkgJgorICAgIHN0b3AgMTcKKyAgY2FsbCBjaGVja19p bnQgKGlpaSwgNSkKKyAgZG8gaSA9IDEsIDUKKyAgICBpZiAoampqKGkpIC89IDMqaSkgJgor ICAgICAgc3RvcCAxOAorICAgIGNhbGwgY2hlY2tfaW50IChqamooaSksIDMqaSkKKyAgZW5k IGRvCisgIGRvIGkgPSAxLCA2CisgICAgaWYgKGtrayhpKSAvPSA3KmkpICYKKyAgICAgIHN0 b3AgMTkKKyAgICBjYWxsIGNoZWNrX2ludCAoa2trKGkpLCA3KmkpCisgIGVuZCBkbworICBp ZiAodHJhbnNmZXIgKHB0ciwgaW50cHRyKSAvPSBpbnQoeicxMjM0JywgY19pbnRwdHJfdCkp ICYKKyAgICBzdG9wIDIwCisgIGNhbGwgY2hlY2tfcHRyIChwdHIsIGludCAoeicxMjM0Jywg Y19pbnRwdHJfdCkpCisgZW5kIGJsb2NrCitlbmQKKworc3Vicm91dGluZSBvbXBfdGFyZ2V0 ICgpCisgIGludGVnZXIgOjogaSwgbiwgaWlpLCBqamooNSkKKyAgdHlwZShjX3B0cikgOjog cHRyCisgICEkb21wIGFsbG9jYXRlKGlpaSwgampqLCBwdHIpCisgIG4gPSA2CisgIGlpaSA9 IDUKKyAgcHRyID0gdHJhbnNmZXIgKGludCAoeicxMjM0JywgY19pbnRwdHJfdCksIHB0cikK KyBibG9jaworICBpbnRlZ2VyIDo6IGtrayhuKQorICAhJG9tcCBhbGxvY2F0ZShra2spCisg IGRvIGkgPSAxLCA1CisgICAgampqKGkpID0gMyppCisgIGVuZCBkbworICBkbyBpID0gMSwg NgorICAgIGtrayhpKSA9IDcqaQorICBlbmQgZG8KKworICAhJG9tcCB0YXJnZXQgZGVmYXVs dG1hcChub25lKSBmaXJzdHByaXZhdGUoaWlpLCBqamosIGtraywgcHRyKSBwcml2YXRlKGkp CisgICAgaWYgKGlpaSAvPSA1KSAmCisgICAgICBzdG9wIDIxCisgICAgaWlpID0gNworICAg IGNhbGwgY2hlY2tfaW50IChpaWksIDcpCisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGlmIChq amooaSkgLz0gMyppKSAmCisgICAgICAgIHN0b3AgMjIKKyAgICBlbmQgZG8KKyAgICBkbyBp ID0gMSwgNgorICAgICAgaWYgKGtrayhpKSAvPSA3KmkpICYKKyAgICAgICAgc3RvcCAyMwor ICAgIGVuZCBkbworICAgIGRvIGkgPSAxLCA1CisgICAgICBqamooaSkgPSA0KmkKKyAgICBl bmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAgICAga2trKGkpID0gOCppCisgICAgZW5kIGRv CisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGNhbGwgY2hlY2tfaW50IChqamooaSksIDQqaSkK KyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAgICAgY2FsbCBjaGVja19pbnQgKGtr ayhpKSwgOCppKQorICAgIGVuZCBkbworICAgIGlmICh0cmFuc2ZlciAocHRyLCBpbnRwdHIp IC89IGludCh6JzEyMzQnLCBjX2ludHB0cl90KSkgJgorICAgICAgc3RvcCAyNAorICAgIHB0 ciA9IHRyYW5zZmVyIChpbnQgKHonYWJjZCcsIGNfaW50cHRyX3QpLCBwdHIpCisgICAgaWYg KHRyYW5zZmVyIChwdHIsIGludHB0cikgLz0gaW50KHonYWJjZCcsIGNfaW50cHRyX3QpKSAm CisgICAgICBzdG9wIDI1CisgICAgY2FsbCBjaGVja19wdHIgKHB0ciwgaW50ICh6J2FiY2Qn LCBjX2ludHB0cl90KSkKKyAgISRvbXAgZW5kIHRhcmdldAorCisgIGlmIChpaWkgLz0gNSkg JgorICAgIHN0b3AgMjYKKyAgY2FsbCBjaGVja19pbnQgKGlpaSwgNSkKKyAgZG8gaSA9IDEs IDUKKyAgICBpZiAoampqKGkpIC89IDMqaSkgJgorICAgICAgc3RvcCAyNworICAgIGNhbGwg Y2hlY2tfaW50IChqamooaSksIDMqaSkKKyAgZW5kIGRvCisgIGRvIGkgPSAxLCA2CisgICAg aWYgKGtrayhpKSAvPSA3KmkpICYKKyAgICAgIHN0b3AgMjgKKyAgICBjYWxsIGNoZWNrX2lu dCAoa2trKGkpLCA3KmkpCisgIGVuZCBkbworICBpZiAodHJhbnNmZXIgKHB0ciwgaW50cHRy KSAvPSBpbnQoeicxMjM0JywgY19pbnRwdHJfdCkpICYKKyAgICBzdG9wIDI5CisgIGNhbGwg Y2hlY2tfcHRyIChwdHIsIGludCAoeicxMjM0JywgY19pbnRwdHJfdCkpCisKKyAgISRvbXAg dGFyZ2V0IGRlZmF1bHRtYXAoZmlyc3Rwcml2YXRlKQorICAgIGlmIChpaWkgLz0gNSkgJgor ICAgICAgc3RvcCAzMAorICAgIGlpaSA9IDcKKyAgICBjYWxsIGNoZWNrX2ludCAoaWlpLCA3 KQorICAgIGRvIGkgPSAxLCA1CisgICAgICBpZiAoampqKGkpIC89IDMqaSkgJgorICAgICAg ICBzdG9wIDMxCisgICAgZW5kIGRvCisgICAgZG8gaSA9IDEsIDYKKyAgICAgIGlmIChra2so aSkgLz0gNyppKSAmCisgICAgICAgIHN0b3AgMzIKKyAgICBlbmQgZG8KKyAgICBkbyBpID0g MSwgNQorICAgICAgampqKGkpID0gNCppCisgICAgZW5kIGRvCisgICAgZG8gaSA9IDEsIDYK KyAgICAgIGtrayhpKSA9IDgqaQorICAgIGVuZCBkbworICAgIGRvIGkgPSAxLCA1CisgICAg ICBjYWxsIGNoZWNrX2ludCAoampqKGkpLCA0KmkpCisgICAgZW5kIGRvCisgICAgZG8gaSA9 IDEsIDYKKyAgICAgIGNhbGwgY2hlY2tfaW50IChra2soaSksIDgqaSkKKyAgICBlbmQgZG8K KyAgICBpZiAodHJhbnNmZXIgKHB0ciwgaW50cHRyKSAvPSBpbnQoeicxMjM0JywgY19pbnRw dHJfdCkpICYKKyAgICAgIHN0b3AgMzMKKyAgICBwdHIgPSB0cmFuc2ZlciAoaW50ICh6J2Fi Y2QnLCBjX2ludHB0cl90KSwgcHRyKQorICAgIGlmICh0cmFuc2ZlciAocHRyLCBpbnRwdHIp IC89IGludCh6J2FiY2QnLCBjX2ludHB0cl90KSkgJgorICAgICAgc3RvcCAzNAorICAgIGNh bGwgY2hlY2tfcHRyIChwdHIsIGludCAoeidhYmNkJywgY19pbnRwdHJfdCkpCisgICEkb21w IGVuZCB0YXJnZXQKKyAgaWYgKGlpaSAvPSA1KSAmCisgICAgc3RvcCAzNQorICBjYWxsIGNo ZWNrX2ludCAoaWlpLCA1KQorICBkbyBpID0gMSwgNQorICAgIGlmIChqamooaSkgLz0gMypp KSAmCisgICAgICBzdG9wIDM2CisgICAgY2FsbCBjaGVja19pbnQgKGpqaihpKSwgMyppKQor ICBlbmQgZG8KKyAgZG8gaSA9IDEsIDYKKyAgICBpZiAoa2trKGkpIC89IDcqaSkgJgorICAg ICAgc3RvcCAzNworICAgIGNhbGwgY2hlY2tfaW50IChra2soaSksIDcqaSkKKyAgZW5kIGRv CisgIGlmICh0cmFuc2ZlciAocHRyLCBpbnRwdHIpIC89IGludCh6JzEyMzQnLCBjX2ludHB0 cl90KSkgJgorICAgIHN0b3AgMzgKKyAgY2FsbCBjaGVja19wdHIgKHB0ciwgaW50ICh6JzEy MzQnLCBjX2ludHB0cl90KSkKKworICAhJG9tcCB0YXJnZXQgZGVmYXVsdG1hcCh0b2Zyb20p CisgICAgaWYgKGlpaSAvPSA1KSAmCisgICAgICBzdG9wIDM5CisgICAgaWlpID0gNworICAg IGNhbGwgY2hlY2tfaW50IChpaWksIDcpCisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGlmIChq amooaSkgLz0gMyppKSAmCisgICAgICAgIHN0b3AgNDAKKyAgICBlbmQgZG8KKyAgICBkbyBp ID0gMSwgNgorICAgICAgaWYgKGtrayhpKSAvPSA3KmkpICYKKyAgICAgICAgc3RvcCA0MQor ICAgIGVuZCBkbworICAgIGRvIGkgPSAxLCA1CisgICAgICBqamooaSkgPSA0KmkKKyAgICBl bmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAgICAga2trKGkpID0gOCppCisgICAgZW5kIGRv CisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGNhbGwgY2hlY2tfaW50IChqamooaSksIDQqaSkK KyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAgICAgY2FsbCBjaGVja19pbnQgKGtr ayhpKSwgOCppKQorICAgIGVuZCBkbworICAgIGlmICh0cmFuc2ZlciAocHRyLCBpbnRwdHIp IC89IGludCh6JzEyMzQnLCBjX2ludHB0cl90KSkgJgorICAgICAgc3RvcCA0MgorICAgIHB0 ciA9IHRyYW5zZmVyIChpbnQoeidhYmNkJyxjX2ludHB0cl90KSwgcHRyKQorICAgIGlmICh0 cmFuc2ZlciAocHRyLCBpbnRwdHIpIC89IGludCh6J2FiY2QnLCBjX2ludHB0cl90KSkgJgor ICAgICAgc3RvcCA0MworICAgIGNhbGwgY2hlY2tfcHRyIChwdHIsIGludCAoeidhYmNkJywg Y19pbnRwdHJfdCkpCisgICEkb21wIGVuZCB0YXJnZXQKKworICBpZiAoaWlpIC89IDcpICYK KyAgICBzdG9wIDQ0CisgIGNhbGwgY2hlY2tfaW50IChpaWksIDcpCisgIGRvIGkgPSAxLCA1 CisgICAgaWYgKGpqaihpKSAvPSA0KmkpICYKKyAgICAgIHN0b3AgNDUKKyAgICBjYWxsIGNo ZWNrX2ludCAoampqKGkpLCA0KmkpCisgIGVuZCBkbworICBkbyBpID0gMSwgNgorICAgIGlm IChra2soaSkgLz0gOCppKSAmCisgICAgICBzdG9wIDQ2CisgICAgY2FsbCBjaGVja19pbnQg KGtrayhpKSwgOCppKQorICBlbmQgZG8KKyAgaWYgKHRyYW5zZmVyIChwdHIsIGludHB0cikg Lz0gaW50KHonYWJjZCcsIGNfaW50cHRyX3QpKSAmCisgICAgc3RvcCA0NworICBjYWxsIGNo ZWNrX3B0ciAocHRyLCBpbnQgKHonYWJjZCcsIGNfaW50cHRyX3QpKQorIGVuZCBibG9jawor ZW5kCitlbmQgbW9kdWxlCisKKwordXNlIG0KKyAgY2FsbCBvbXBfcGFyYWxsZWwgKCkKKyAg Y2FsbCBvbXBfdGFyZ2V0ICgpCitlbmQKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRl L2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS04LmY5MCBiL2xpYmdvbXAvdGVzdHN1aXRlL2xp YmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS04LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYjlkZWE2YzUxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21w L3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtOC5mOTAKQEAgLTAsMCArMSw5 OSBAQAorbW9kdWxlIG0KK3VzZSBvbXBfbGliCitpbXBsaWNpdCBub25lCishISRvbXAgcmVx dWlyZXMgZHluYW1pY19hbGxvY2F0b3JzCisKK2ludGVnZXIgOjogZmluYWxfY291bnQKKwor dHlwZSB0CisgIGludGVnZXIgOjogaSA9IDAKKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjog QSg6LDopCitjb250YWlucworICBmaW5hbCA6OiBjb3VudF9maW5hbGl6YXRpb24KK2VuZCB0 eXBlIHQKKworY29udGFpbnMKKworZWxlbWVudGFsIGltcHVyZSBzdWJyb3V0aW5lIGNvdW50 X2ZpbmFsaXphdGlvbihzZWxmKQorICB0eXBlKHQpLCBpbnRlbnQoaW4pIDo6IHNlbGYKKyAg ZmluYWxfY291bnQgPSBmaW5hbF9jb3VudCArIDEKK2VuZAorCitzdWJyb3V0aW5lIHRlc3Qo YWxsb2NhdG9yKQoraW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgb3B0aW9u YWwsIHZhbHVlIDo6IGFsbG9jYXRvcgorY2FsbCB6ZXJvX3NpemUoYWxsb2NhdG9yKQorY2Fs bCBmaW5hbGl6YXRpb25fdGVzdChhbGxvY2F0b3IpCitlbmQgc3Vicm91dGluZSB0ZXN0CisK K3N1YnJvdXRpbmUgZmluYWxpemF0aW9uX3Rlc3QoYWxsb2NhdG9yKQoraW50ZWdlcihvbXBf YWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgb3B0aW9uYWwsIHZhbHVlIDo6IGFsbG9jYXRvcgor aW50ZWdlciA6OiBuID0gNQorCitmaW5hbF9jb3VudCA9IDA7CitibG9jaworICB0eXBlKHQp IDo6IEEKKyEgICEkb21wIGFsbG9jYXRlKEEpIGFsbG9jYXRvcihhbGxvY2F0b3IpCisgIEEl aSA9IDEKK2VuZCBibG9jaworaWYgKGZpbmFsX2NvdW50IC89IDEpICYKKyAgc3RvcCAxMAor CitmaW5hbF9jb3VudCA9IDA7CitibG9jaworICB0eXBlKHQpIDo6IEIoNykKKyAgISRvbXAg YWxsb2NhdGUoQikgYWxsb2NhdG9yKGFsbG9jYXRvcikKKyAgQigxKSVpID0gMQorZW5kIGJs b2NrCitpZiAoZmluYWxfY291bnQgLz0gNykgc3RvcCAxMAorCitmaW5hbF9jb3VudCA9IDA7 CitibG9jaworICB0eXBlKHQpIDo6IEMobikKKyEgICEkb21wIGFsbG9jYXRlKEMpIGFsbG9j YXRvcihhbGxvY2F0b3IpCisgIEMoMSklaSA9IDEKK2VuZCBibG9jaworaWYgKGZpbmFsX2Nv dW50IC89IDUpIHN0b3AgMTAKKworZmluYWxfY291bnQgPSAwOworYmxvY2sKKyAgdHlwZSh0 KSA6OiBEKDApCishICAhJG9tcCBhbGxvY2F0ZShEKSBhbGxvY2F0b3IoYWxsb2NhdG9yKQor ICBEKDE6MCklaSA9IDEKK2VuZCBibG9jaworaWYgKGZpbmFsX2NvdW50IC89IDApIHN0b3Ag MTAKK2VuZCBzdWJyb3V0aW5lCisKK3N1YnJvdXRpbmUgemVyb19zaXplKGFsbG9jYXRvcikK K2ludGVnZXIob21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksIG9wdGlvbmFsLCB2YWx1ZSA6 OiBhbGxvY2F0b3IKK2ludGVnZXIgOjogbgorbiA9IC0zCisKK2Jsb2NrCisgIGludGVnZXIg OjogQShuKQorICBjaGFyYWN0ZXIobGVuPW4pIDo6IEIKKyEgICEkb21wIGFsbG9jYXRlKEEs YikgYWxsb2NhdG9yKGFsbG9jYXRvcikKKyAgaWYgKHNpemUoQSkgLz0gMCAub3IuIGxlbihi KSAvPSAwKSAmCisgICAgc3RvcCAxCisgIEIoMTpsZW4oYikpID0nQScKK2VuZCBibG9jawor CishISRvbXAgdGFyZ2V0CitibG9jaworICBpbnRlZ2VyIDo6IEEobikKKyAgY2hhcmFjdGVy KGxlbj1uKSA6OiBCCishICAhJG9tcCBhbGxvY2F0ZShBLGIpIGFsbG9jYXRvcihhbGxvY2F0 b3IpCisgIGlmIChzaXplKEEpIC89IDAgLm9yLiBsZW4oYikgLz0gMCkgJgorICAgIHN0b3Ag MgorICBCKDE6bGVuKGIpKSA9J0EnCitlbmQgYmxvY2sKK2VuZAorZW5kIG1vZHVsZQorCit1 c2UgbQorY2FsbCB0ZXN0KCkKK2NhbGwgdGVzdChvbXBfZGVmYXVsdF9tZW1fYWxsb2MpCitj YWxsIHRlc3Qob21wX2xhcmdlX2NhcF9tZW1fYWxsb2MpCitjYWxsIHRlc3Qob21wX2hpZ2hf YndfbWVtX2FsbG9jKQorY2FsbCB0ZXN0KG9tcF9sb3dfbGF0X21lbV9hbGxvYykKK2NhbGwg dGVzdChvbXBfY2dyb3VwX21lbV9hbGxvYykKK2VuZAo= --------------t0kzbXjw30FOpk0alaiVx91M--