From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 81FC53858C5F; Fri, 26 May 2023 19:04:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 81FC53858C5F 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-IronPort-AV: E=Sophos;i="6.00,195,1681200000"; d="diff'?scan'208";a="6826673" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 26 May 2023 11:04:22 -0800 IronPort-SDR: Rq3MVXux/ixT1g2VImmcw5ulsy3NFNYb/jNab3h2h3WhJCmXUcWG2tQH9Ru+PczZT3Zl8cZcIF Z1gguWxtIbNScrA74h1hVlYfFX5KqifNdsxCeYxkMG+5toCZfU5xa9N4EtF5jr36Es8b5n3C61 t0D3kB6ex9s0zZ3jZE6WjzjHrI6mwooSebX4V/qVsYLhkObgty0x+NRylAl0g5R/uycJG1nErU 7SFu4sXAwtdcqyiSl7TBPiyx8Uw6JTjgh0m8tT8jwL8P6cI1Hv3TFSrKe7lTb7A7nLW+qt/wpP HIU= Content-Type: multipart/mixed; boundary="------------1drnjTw0Jzy1zaDoUfYftLTG" Message-ID: <62df6b76-56ad-4e8b-802f-5f70bba4f198@codesourcery.com> Date: Fri, 26 May 2023 21:04:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: [committed][Patch] Fortran/OpenMP: Add parsing support for allocators/allocate directives Content-Language: en-US From: Tobias Burnus To: gcc-patches , Jakub Jelinek , fortran References: <11d6c8f4-cdb1-ddb6-8d48-f76c4c8e6382@codesourcery.com> <7839f6c0-2ea2-eab5-4660-111dec7cfcb2@codesourcery.com> In-Reply-To: <7839f6c0-2ea2-eab5-4660-111dec7cfcb2@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: --------------1drnjTw0Jzy1zaDoUfYftLTG Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable I have now re-diffed the patch and cleaned up some comments, and spend some time proof reading it myself. And have now committed it as r14-1301-gd64e8e1224708e7f5b87c531aeb26f1ed07f91ff As the subject line states, it adds parsing support for "!$omp allocate" as declarative directive and (if preceded by an executable statement/directive) as deprecated alias for '!$omp allocators', which is also supported. =E2=80=94 After successful checking, it fails with the u= sual "sorry, not yet implemented". Like always, comments and suggestions are welcome. Tobias PS: The real challenge will be to get 'allocators' working as gfortran currently calls malloc/free/realloc directly and this will not work well if memory is allocated differently, e.g., by omp_alloc and friends. But that's a separate issue, unrelated this parsing + error-diagnostic patch. Probably simpler, especially for stack variables, would be the support for the declarative 'allocate' directive (in C/C++/Fortran. Except for some C++ template-handling polishing, the parsing support is there, but middle-end wiring is still required.) PPS: I filed a PR regarding the handling of 'structure elements' with allocators, https://gcc.gnu.org/PR109998 PPPS: I remarked before: On 21.12.22 16:51, Tobias Burnus wrote: > On 14.12.22 11:47, Tobias Burnus wrote: > >> This patch adds parsing/argument-checking support for >> '!$omp allocators allocate([align(int),allocator(a) :] list)' > > This follow-up patch additionally adds parsing support for both > declarative and allocate-stmt-associated '!$omp allocate' directives =E2= =80=93 > and replaces my previous patch. > > OK for mainline? > > * * * > > The code requires in line with OpenMP 5.1 that an executable statement > comes before an '!$omp allocate' that is associated with a Fortran > ALLOCATE stmt, which is diagnosed. > > Note: There is a spec change/regression related to permitting structure > elements; while OpenMP 5.0/5.1 did permit them in the > allocate-stmt-associated "!$omp allocate", OpenMP 5.2 stopped doing =E2= =80=93 > and '!$omp allocators' never permitted it. =E2=80=94 For allocate that's = seems > to be the accidental result from "permitted unless stated otherwise" to > "rejected unless stated otherwise". For 'allocators', it is the result > of the original 'allocate' clause which should have been extended for > 'allocators' - or should not. > > In any case, that's tracked now in OpenMP's spec issue #3437. > > Thoughts? =E2=80=93 The code rejects var%comp and var(1)%comp etc. for no= w =E2=80=93 > besides the unclear spec status, I admittedly did this also to make > checking easier (like for duplicated entries, entry same as in ALLOCATE > except for tailing array spec etc.). > > * * * > > This patch replaced both my previous patch in this thread and also > Abid's patch > >> "[PATCH 1/5] [gfortran] Add parsing support for allocate directive >> (OpenMP 5.0)." >> https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603258.html > > In his patch set, later patches actually add allocater support for > allocatables/pointers, only =E2=80=93 but there issues with regards to th= e used > allocator (see patches + patch review). > > As my attached patch raises a sorry, it neither addresses that issue nor > is it affected by that issue. ----------------- 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 --------------1drnjTw0Jzy1zaDoUfYftLTG Content-Type: text/x-patch; charset="UTF-8"; name="committed.diff" Content-Disposition: attachment; filename="committed.diff" Content-Transfer-Encoding: base64 Y29tbWl0IGQ2NGU4ZTEyMjQ3MDhlN2Y1Yjg3YzUzMWFlYjI2ZjFlZDA3ZjkxZmYKQXV0aG9y OiBUb2JpYXMgQnVybnVzIDx0b2JpYXNAY29kZXNvdXJjZXJ5LmNvbT4KRGF0ZTogICBGcmkg TWF5IDI2IDIwOjM5OjMzIDIwMjMgKzAyMDAKCiAgICBGb3J0cmFuL09wZW5NUDogQWRkIHBh cnNpbmcgc3VwcG9ydCBmb3IgYWxsb2NhdG9ycy9hbGxvY2F0ZSBkaXJlY3RpdmVzCiAgICAK ICAgIGdjYy9mb3J0cmFuL0NoYW5nZUxvZzoKICAgIAogICAgICAgICAgICAqIGR1bXAtcGFy c2UtdHJlZS5jYyAoc2hvd19vbXBfbmFtZWxpc3QpOiBVcGRhdGUgYWxsb2NhdG9yLCBmaXgK ICAgICAgICAgICAgYWxpZ24gZHVtcC4KICAgICAgICAgICAgKHNob3dfb21wX25vZGUsIHNo b3dfY29kZV9ub2RlKTogSGFuZGxlIEVYRUNfT01QX0FMTE9DQVRFLgogICAgICAgICAgICAq IGdmb3J0cmFuLmggKGVudW0gZ2ZjX3N0YXRlbWVudCk6IEFkZCBTVF9PTVBfQUxMT0NBVEUg YW5kIC4uLl9FWEVDLgogICAgICAgICAgICAoZW51bSBnZmNfZXhlY19vcCk6IEFkZCBFWEVD X09NUF9BTExPQ0FURS4KICAgICAgICAgICAgKHN0cnVjdCBnZmNfb21wX25hbWVsaXN0KTog QWRkICdhbGxvY2F0b3InIHRvICd1MicgdW5pb24uCiAgICAgICAgICAgIChzdHJ1Y3QgZ2Zj X25hbWVzcGFjZSk6IEFkZCBvbXBfYWxsb2NhdGUuCiAgICAgICAgICAgIChnZmNfcmVzb2x2 ZV9vbXBfYWxsb2NhdGUpOiBOZXcuCiAgICAgICAgICAgICogbWF0Y2guY2MgKGdmY19mcmVl X29tcF9uYW1lbGlzdCk6IEZyZWUgJ3UyLmFsbG9jYXRvcicuCiAgICAgICAgICAgICogbWF0 Y2guaCAoZ2ZjX21hdGNoX29tcF9hbGxvY2F0ZSwgZ2ZjX21hdGNoX29tcF9hbGxvY2F0b3Jz KTogTmV3LgogICAgICAgICAgICAqIG9wZW5tcC5jYyAoZ2ZjX29tcF9kaXJlY3RpdmVzKTog VW5jb21tZW50IGFsbG9jYXRlL2FsbG9jYXRvcnMuCiAgICAgICAgICAgIChnZmNfbWF0Y2hf b21wX3ZhcmlhYmxlX2xpc3QpOiBBZGQgYm9vbCBhcmcgZm9yCiAgICAgICAgICAgIHJlamVj dGluZyBsaXN0ZW5pbmcgY29tbW9uLWJsb2NrIHZhcnMgc2VwYXJhdGVseS4KICAgICAgICAg ICAgKGdmY19tYXRjaF9vbXBfY2xhdXNlcyk6IFVwZGF0ZSBmb3IgdTIuYWxsb2NhdG9ycy4K ICAgICAgICAgICAgKE9NUF9BTExPQ0FUT1JTX0NMQVVTRVMsIGdmY19tYXRjaF9vbXBfYWxs b2NhdGUsCiAgICAgICAgICAgIGdmY19tYXRjaF9vbXBfYWxsb2NhdG9ycywgaXNfcHJlZGVm aW5lZF9hbGxvY2F0b3IsCiAgICAgICAgICAgIGdmY19yZXNvbHZlX29tcF9hbGxvY2F0ZSk6 IE5ldy4KICAgICAgICAgICAgKHJlc29sdmVfb21wX2NsYXVzZXMpOiBVcGRhdGUgJ2FsbG9j YXRlJyBjbGF1c2UgY2hlY2tzLgogICAgICAgICAgICAob21wX2NvZGVfdG9fc3RhdGVtZW50 LCBnZmNfcmVzb2x2ZV9vbXBfZGlyZWN0aXZlKTogSGFuZGxlCiAgICAgICAgICAgIE9NUCBB TExPQ0FURS9BTExPQ0FUT1JTLgogICAgICAgICAgICAqIHBhcnNlLmNjIChpbl9leGVjX3Bh cnQpOiBOZXcgZ2xvYmFsIHZhci4KICAgICAgICAgICAgKGNoZWNrX29tcF9hbGxvY2F0ZV9z dG10LCBwYXJzZV9vcGVubXBfYWxsb2NhdGVfYmxvY2spOiBOZXcuCiAgICAgICAgICAgIChk ZWNvZGVfb21wX2RpcmVjdGl2ZSwgY2FzZV9leGVjX21hcmtlcnMsIGNhc2Vfb21wX2RlY2ws CiAgICAgICAgICAgIGdmY19hc2NpaV9zdGF0ZW1lbnQsIHBhcnNlX29tcF9zdHJ1Y3R1cmVk X2Jsb2NrKTogSGFuZGxlCiAgICAgICAgICAgIE9NUCBhbGxvY2F0ZS9hbGxvY2F0b3JzLgog ICAgICAgICAgICAodmVyaWZ5X3N0X29yZGVyLCBwYXJzZV9leGVjdXRhYmxlKTogU2V0IGlu X2V4ZWNfcGFydC4KICAgICAgICAgICAgKiByZXNvbHZlLmNjIChnZmNfcmVzb2x2ZV9ibG9j a3MsIHJlc29sdmVfY29kZXMpOiBIYW5kbGUKICAgICAgICAgICAgYWxsb2NhdGUvYWxsb2Nh dG9ycy4KICAgICAgICAgICAgKiBzdC5jYyAoZ2ZjX2ZyZWVfc3RhdGVtZW50KTogTGlrZXdp c2UuCiAgICAgICAgICAgICogdHJhbnMuY2MgKHRyYW5zX2NvZGUpOiBMaWtld2lzZS4KICAg ICAgICAgICAgKiB0cmFucy1vcGVubXAuY2MgKGdmY190cmFuc19vbXBfZGlyZWN0aXZlKTog TGlrZXdpc2UuCiAgICAgICAgICAgIChnZmNfdHJhbnNfb21wX2NsYXVzZXMsIGdmY19zcGxp dF9vbXBfY2xhdXNlcyk6IFVwZGF0ZSBmb3IKICAgICAgICAgICAgdTIuYWxsb2NhdG9yLCBm aXggZm9yIHUuYWxpZ24uCiAgICAKICAgIGxpYmdvbXAvQ2hhbmdlTG9nOgogICAgCiAgICAg ICAgICAgICogdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS00LmY5MDogVXBk YXRlIGRnLWVycm9yLgogICAgCiAgICBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKICAgIAog ICAgICAgICAgICAqIGdmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMi5mOTA6IFVwZGF0ZSBk Zy1lcnJvci4KICAgICAgICAgICAgKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTQuZjkw OiBOZXcgdGVzdC4KICAgICAgICAgICAgKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTUu ZjkwOiBOZXcgdGVzdC4KICAgICAgICAgICAgKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRl LTYuZjkwOiBOZXcgdGVzdC4KICAgICAgICAgICAgKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9j YXRlLTcuZjkwOiBOZXcgdGVzdC4KICAgICAgICAgICAgKiBnZm9ydHJhbi5kZy9nb21wL2Fs bG9jYXRvcnMtMS5mOTA6IE5ldyB0ZXN0LgogICAgICAgICAgICAqIGdmb3J0cmFuLmRnL2dv bXAvYWxsb2NhdG9ycy0yLmY5MDogTmV3IHRlc3QuCi0tLQogZ2NjL2ZvcnRyYW4vZHVtcC1w YXJzZS10cmVlLmNjICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBnY2MvZm9ydHJhbi9n Zm9ydHJhbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIGdjYy9mb3J0 cmFuL21hdGNoLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQogZ2Nj L2ZvcnRyYW4vbWF0Y2guaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsK IGdjYy9mb3J0cmFuL29wZW5tcC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMz MyArKysrKysrKysrKysrKysrKysrKystLQogZ2NjL2ZvcnRyYW4vcGFyc2UuY2MgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMTg0ICsrKysrKysrKysrKy0KIGdjYy9mb3J0cmFu L3Jlc29sdmUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBnY2MvZm9y dHJhbi9zdC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogZ2Nj L2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjICAgICAgICAgICAgICAgICAgICAgIHwgIDExICst CiBnY2MvZm9ydHJhbi90cmFucy5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTIuZjkwICAg IHwgICA0ICstCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtNC5m OTAgICAgfCAgNTQgKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9j YXRlLTUuZjkwICAgIHwgIDkzICsrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv Z29tcC9hbGxvY2F0ZS02LmY5MCAgICB8IDEwMyArKysrKysrCiBnY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtNy5mOTAgICAgfCAyMzEgKysrKysrKysrKysrKysr KwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRvcnMtMS5mOTAgIHwg IDI4ICsrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdG9ycy0yLmY5 MCAgfCAgMjIgKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0 ZS00LmY5MCB8ICAxMiArLQogMTggZmlsZXMgY2hhbmdlZCwgMTA2OCBpbnNlcnRpb25zKCsp LCA0MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9kdW1wLXBhcnNl LXRyZWUuY2MgYi9nY2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuY2MKaW5kZXggNjQ0Zjhm MzdkNjMuLjZkNzVjYzI5ZjYwIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9kdW1wLXBhcnNl LXRyZWUuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjCkBAIC0xMzc3 LDE0ICsxMzc3LDE0IEBAIHNob3dfb21wX25hbWVsaXN0IChpbnQgbGlzdF90eXBlLCBnZmNf b21wX25hbWVsaXN0ICpuKQogCSAgaWYgKG4tPmV4cHIpCiAJICAgIHsKIAkgICAgICBmcHV0 cyAoImFsbG9jYXRvcigiLCBkdW1wZmlsZSk7Ci0JICAgICAgc2hvd19leHByIChuLT5leHBy KTsKKwkgICAgICBzaG93X2V4cHIgKG4tPnUyLmFsbG9jYXRvcik7CiAJICAgICAgZnB1dGMg KCcpJywgZHVtcGZpbGUpOwogCSAgICB9CiAJICBpZiAobi0+ZXhwciAmJiBuLT51LmFsaWdu KQogCSAgICBmcHV0YyAoJywnLCBkdW1wZmlsZSk7CiAJICBpZiAobi0+dS5hbGlnbikKIAkg ICAgewotCSAgICAgIGZwdXRzICgiYWxsb2NhdG9yKCIsIGR1bXBmaWxlKTsKKwkgICAgICBm cHV0cyAoImFsaWduKCIsIGR1bXBmaWxlKTsKIAkgICAgICBzaG93X2V4cHIgKG4tPnUuYWxp Z24pOwogCSAgICAgIGZwdXRjICgnKScsIGR1bXBmaWxlKTsKIAkgICAgfQpAQCAtMjA5Niw2 ICsyMDk2LDggQEAgc2hvd19vbXBfbm9kZSAoaW50IGxldmVsLCBnZmNfY29kZSAqYykKICAg ICBjYXNlIEVYRUNfT0FDQ19DQUNIRTogbmFtZSA9ICJDQUNIRSI7IGlzX29hY2MgPSB0cnVl OyBicmVhazsKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9EQVRBOiBuYW1lID0gIkVOVEVS IERBVEEiOyBpc19vYWNjID0gdHJ1ZTsgYnJlYWs7CiAgICAgY2FzZSBFWEVDX09BQ0NfRVhJ VF9EQVRBOiBuYW1lID0gIkVYSVQgREFUQSI7IGlzX29hY2MgPSB0cnVlOyBicmVhazsKKyAg ICBjYXNlIEVYRUNfT01QX0FMTE9DQVRFOiBuYW1lID0gIkFMTE9DQVRFIjsgYnJlYWs7Cisg ICAgY2FzZSBFWEVDX09NUF9BTExPQ0FUT1JTOiBuYW1lID0gIkFMTE9DQVRPUlMiOyBicmVh azsKICAgICBjYXNlIEVYRUNfT01QX0FTU1VNRTogbmFtZSA9ICJBU1NVTUUiOyBicmVhazsK ICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzogbmFtZSA9ICJBVE9NSUMiOyBicmVhazsKICAg ICBjYXNlIEVYRUNfT01QX0JBUlJJRVI6IG5hbWUgPSAiQkFSUklFUiI7IGJyZWFrOwpAQCAt MzQyNCw2ICszNDI2LDggQEAgc2hvd19jb2RlX25vZGUgKGludCBsZXZlbCwgZ2ZjX2NvZGUg KmMpCiAgICAgY2FzZSBFWEVDX09BQ0NfQ0FDSEU6CiAgICAgY2FzZSBFWEVDX09BQ0NfRU5U RVJfREFUQToKICAgICBjYXNlIEVYRUNfT0FDQ19FWElUX0RBVEE6CisgICAgY2FzZSBFWEVD X09NUF9BTExPQ0FURToKKyAgICBjYXNlIEVYRUNfT01QX0FMTE9DQVRPUlM6CiAgICAgY2Fz ZSBFWEVDX09NUF9BU1NVTUU6CiAgICAgY2FzZSBFWEVDX09NUF9BVE9NSUM6CiAgICAgY2Fz ZSBFWEVDX09NUF9DQU5DRUw6CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5o IGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAppbmRleCA4Y2ZhOGZkM2FmZC4uM2U1Zjk0MmQ3 ZmQgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKKysrIGIvZ2NjL2ZvcnRy YW4vZ2ZvcnRyYW4uaApAQCAtMzE4LDYgKzMxOCw4IEBAIGVudW0gZ2ZjX3N0YXRlbWVudAog ICBTVF9PTVBfRU5EX01BU0tFRF9UQVNLTE9PUCwgU1RfT01QX01BU0tFRF9UQVNLTE9PUF9T SU1ELAogICBTVF9PTVBfRU5EX01BU0tFRF9UQVNLTE9PUF9TSU1ELCBTVF9PTVBfU0NPUEUs IFNUX09NUF9FTkRfU0NPUEUsCiAgIFNUX09NUF9FUlJPUiwgU1RfT01QX0FTU1VNRSwgU1Rf T01QX0VORF9BU1NVTUUsIFNUX09NUF9BU1NVTUVTLAorICBTVF9PTVBfQUxMT0NBVEUsIFNU X09NUF9BTExPQ0FURV9FWEVDLAorICBTVF9PTVBfQUxMT0NBVE9SUywgU1RfT01QX0VORF9B TExPQ0FUT1JTLAogICAvKiBOb3RlOiBnZmNfbWF0Y2hfb21wX25vdGhpbmcgcmV0dXJucyBT VF9OT05FLiAqLwogICBTVF9PTVBfTk9USElORywgU1RfTk9ORQogfTsKQEAgLTEzNjUsNiAr MTM2Nyw3IEBAIHR5cGVkZWYgc3RydWN0IGdmY19vbXBfbmFtZWxpc3QKICAgICB7CiAgICAg ICBzdHJ1Y3QgZ2ZjX29tcF9uYW1lbGlzdF91ZHIgKnVkcjsKICAgICAgIGdmY19uYW1lc3Bh Y2UgKm5zOworICAgICAgZ2ZjX2V4cHIgKmFsbG9jYXRvcjsKICAgICB9IHUyOwogICBzdHJ1 Y3QgZ2ZjX29tcF9uYW1lbGlzdCAqbmV4dDsKICAgbG9jdXMgd2hlcmU7CkBAIC0yMTc3LDgg KzIxODAsOSBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfbmFtZXNwYWNlCiAgIC8qIExpbmtlZCBs aXN0IG9mICEkb21wIGRlY2xhcmUgdmFyaWFudCBjb25zdHJ1Y3RzLiAgKi8KICAgc3RydWN0 IGdmY19vbXBfZGVjbGFyZV92YXJpYW50ICpvbXBfZGVjbGFyZV92YXJpYW50OwogCi0gIC8q IE9wZW5NUCBhc3N1bXB0aW9ucy4gICovCisgIC8qIE9wZW5NUCBhc3N1bXB0aW9ucyBhbmQg YWxsb2NhdGUgZm9yIHN0YXRpYy9zdGFjayB2YXJzLiAgKi8KICAgc3RydWN0IGdmY19vbXBf YXNzdW1wdGlvbnMgKm9tcF9hc3N1bWVzOworICBzdHJ1Y3QgZ2ZjX29tcF9uYW1lbGlzdCAq b21wX2FsbG9jYXRlOwogCiAgIC8qIEEgaGFzaCBzZXQgZm9yIHRoZSBnZmMgZXhwcmVzc2lv bnMgdGhhdCBoYXZlIGFscmVhZHkKICAgICAgYmVlbiBmaW5hbGl6ZWQgaW4gdGhpcyBuYW1l c3BhY2UuICAqLwpAQCAtMjk3NCw3ICsyOTc4LDcgQEAgZW51bSBnZmNfZXhlY19vcAogICBF WEVDX09NUF9UQVJHRVRfVEVBTVNfTE9PUCwgRVhFQ19PTVBfTUFTS0VELCBFWEVDX09NUF9Q QVJBTExFTF9NQVNLRUQsCiAgIEVYRUNfT01QX1BBUkFMTEVMX01BU0tFRF9UQVNLTE9PUCwg RVhFQ19PTVBfUEFSQUxMRUxfTUFTS0VEX1RBU0tMT09QX1NJTUQsCiAgIEVYRUNfT01QX01B U0tFRF9UQVNLTE9PUCwgRVhFQ19PTVBfTUFTS0VEX1RBU0tMT09QX1NJTUQsIEVYRUNfT01Q X1NDT1BFLAotICBFWEVDX09NUF9FUlJPUgorICBFWEVDX09NUF9FUlJPUiwgRVhFQ19PTVBf QUxMT0NBVEUsIEVYRUNfT01QX0FMTE9DQVRPUlMKIH07CiAKIHR5cGVkZWYgc3RydWN0IGdm Y19jb2RlCkBAIC0zNjEzLDYgKzM2MTcsNyBAQCB2b2lkIGdmY19mcmVlX29tcF9kZWNsYXJl X3NpbWQgKGdmY19vbXBfZGVjbGFyZV9zaW1kICopOwogdm9pZCBnZmNfZnJlZV9vbXBfZGVj bGFyZV9zaW1kX2xpc3QgKGdmY19vbXBfZGVjbGFyZV9zaW1kICopOwogdm9pZCBnZmNfZnJl ZV9vbXBfdWRyIChnZmNfb21wX3VkciAqKTsKIGdmY19vbXBfdWRyICpnZmNfb21wX3Vkcl9m aW5kIChnZmNfc3ltdHJlZSAqLCBnZmNfdHlwZXNwZWMgKik7Cit2b2lkIGdmY19yZXNvbHZl X29tcF9hbGxvY2F0ZSAoZ2ZjX25hbWVzcGFjZSAqLCBnZmNfb21wX25hbWVsaXN0ICopOwog dm9pZCBnZmNfcmVzb2x2ZV9vbXBfYXNzdW1wdGlvbnMgKGdmY19vbXBfYXNzdW1wdGlvbnMg Kik7CiB2b2lkIGdmY19yZXNvbHZlX29tcF9kaXJlY3RpdmUgKGdmY19jb2RlICosIGdmY19u YW1lc3BhY2UgKik7CiB2b2lkIGdmY19yZXNvbHZlX2RvX2l0ZXJhdG9yIChnZmNfY29kZSAq LCBnZmNfc3ltYm9sICosIGJvb2wpOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vbWF0Y2gu Y2MgYi9nY2MvZm9ydHJhbi9tYXRjaC5jYwppbmRleCBkNTlkYWY1YTU4MS4uZTdiZTdmZGRj NjQgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL21hdGNoLmNjCisrKyBiL2djYy9mb3J0cmFu L21hdGNoLmNjCkBAIC01NTM0LDE3ICs1NTM0LDIwIEBAIGdmY19mcmVlX25hbWVsaXN0IChn ZmNfbmFtZWxpc3QgKm5hbWUpCiAvKiBGcmVlIGFuIE9wZW5NUCBuYW1lbGlzdCBzdHJ1Y3R1 cmUuICAqLwogCiB2b2lkCi1nZmNfZnJlZV9vbXBfbmFtZWxpc3QgKGdmY19vbXBfbmFtZWxp c3QgKm5hbWUsIGJvb2wgZnJlZV9ucywgYm9vbCBmcmVlX2FsaWduKQorZ2ZjX2ZyZWVfb21w X25hbWVsaXN0IChnZmNfb21wX25hbWVsaXN0ICpuYW1lLCBib29sIGZyZWVfbnMsCisJCSAg ICAgICBib29sIGZyZWVfYWxpZ25fYWxsb2NhdG9yKQogewogICBnZmNfb21wX25hbWVsaXN0 ICpuOwogCiAgIGZvciAoOyBuYW1lOyBuYW1lID0gbikKICAgICB7CiAgICAgICBnZmNfZnJl ZV9leHByIChuYW1lLT5leHByKTsKLSAgICAgIGlmIChmcmVlX2FsaWduKQorICAgICAgaWYg KGZyZWVfYWxpZ25fYWxsb2NhdG9yKQogCWdmY19mcmVlX2V4cHIgKG5hbWUtPnUuYWxpZ24p OwogICAgICAgaWYgKGZyZWVfbnMpCiAJZ2ZjX2ZyZWVfbmFtZXNwYWNlIChuYW1lLT51Mi5u cyk7CisgICAgICBlbHNlIGlmIChmcmVlX2FsaWduX2FsbG9jYXRvcikKKwlnZmNfZnJlZV9l eHByIChuYW1lLT51Mi5hbGxvY2F0b3IpOwogICAgICAgZWxzZSBpZiAobmFtZS0+dTIudWRy KQogCXsKIAkgIGlmIChuYW1lLT51Mi51ZHItPmNvbWJpbmVyKQpkaWZmIC0tZ2l0IGEvZ2Nj L2ZvcnRyYW4vbWF0Y2guaCBiL2djYy9mb3J0cmFuL21hdGNoLmgKaW5kZXggNDQzMGFmZjAw MWMuLjdkNzI3MjVlZDNjIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9tYXRjaC5oCisrKyBi L2djYy9mb3J0cmFuL21hdGNoLmgKQEAgLTE0OSw2ICsxNDksOCBAQCBtYXRjaCBnZmNfbWF0 Y2hfb2FjY19yb3V0aW5lICh2b2lkKTsKIAogLyogT3Blbk1QIGRpcmVjdGl2ZSBtYXRjaGVy cy4gICovCiBtYXRjaCBnZmNfbWF0Y2hfb21wX2Vvc19lcnJvciAodm9pZCk7CittYXRjaCBn ZmNfbWF0Y2hfb21wX2FsbG9jYXRlICh2b2lkKTsKK21hdGNoIGdmY19tYXRjaF9vbXBfYWxs b2NhdG9ycyAodm9pZCk7CiBtYXRjaCBnZmNfbWF0Y2hfb21wX2Fzc3VtZSAodm9pZCk7CiBt YXRjaCBnZmNfbWF0Y2hfb21wX2Fzc3VtZXMgKHZvaWQpOwogbWF0Y2ggZ2ZjX21hdGNoX29t cF9hdG9taWMgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjIGIv Z2NjL2ZvcnRyYW4vb3Blbm1wLmNjCmluZGV4IDgxY2RmMWI0MmU1Li40YzMwNTQ4NTY3ZiAx MDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCisrKyBiL2djYy9mb3J0cmFuL29w ZW5tcC5jYwpAQCAtNTQsOCArNTQsOCBAQCBzdHJ1Y3QgZ2ZjX29tcF9kaXJlY3RpdmUgewog ICAgYW5kICJub3RoaW5nIi4gICovCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2ZjX29tcF9k aXJlY3RpdmUgZ2ZjX29tcF9kaXJlY3RpdmVzW10gPSB7Ci0gIC8qIHsiYWxsb2NhdGUiLCBH RkNfT01QX0RJUl9ERUNMQVJBVElWRSwgU1RfT01QX0FMTE9DQVRFfSwgKi8KLSAgLyogeyJh bGxvY2F0b3JzIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX0FMTE9DQVRPUlN9 LCAqLworICB7ImFsbG9jYXRlIiwgR0ZDX09NUF9ESVJfREVDTEFSQVRJVkUsIFNUX09NUF9B TExPQ0FURX0sCisgIHsiYWxsb2NhdG9ycyIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNU X09NUF9BTExPQ0FUT1JTfSwKICAgeyJhc3N1bWVzIiwgR0ZDX09NUF9ESVJfSU5GT1JNQVRJ T05BTCwgU1RfT01QX0FTU1VNRVN9LAogICB7ImFzc3VtZSIsIEdGQ19PTVBfRElSX0lORk9S TUFUSU9OQUwsIFNUX09NUF9BU1NVTUV9LAogICB7ImF0b21pYyIsIEdGQ19PTVBfRElSX0VY RUNVVEFCTEUsIFNUX09NUF9BVE9NSUN9LApAQCAtMzk0LDcgKzM5NCw4IEBAIGdmY19tYXRj aF9vbXBfdmFyaWFibGVfbGlzdCAoY29uc3QgY2hhciAqc3RyLCBnZmNfb21wX25hbWVsaXN0 ICoqbGlzdCwKIAkJCSAgICAgZ2ZjX29tcF9uYW1lbGlzdCAqKipoZWFkcCA9IE5VTEwsCiAJ CQkgICAgIGJvb2wgYWxsb3dfc2VjdGlvbnMgPSBmYWxzZSwKIAkJCSAgICAgYm9vbCBhbGxv d19kZXJpdmVkID0gZmFsc2UsCi0JCQkgICAgIGJvb2wgKmhhc19hbGxfbWVtb3J5ID0gTlVM TCkKKwkJCSAgICAgYm9vbCAqaGFzX2FsbF9tZW1vcnkgPSBOVUxMLAorCQkJICAgICBib29s IHJlamVjdF9jb21tb25fdmFycyA9IGZhbHNlKQogewogICBnZmNfb21wX25hbWVsaXN0ICpo ZWFkLCAqdGFpbCwgKnA7CiAgIGxvY3VzIG9sZF9sb2MsIGN1cl9sb2M7CkBAIC00ODIsNiAr NDgzLDE1IEBAIGdmY19tYXRjaF9vbXBfdmFyaWFibGVfbGlzdCAoY29uc3QgY2hhciAqc3Ry LCBnZmNfb21wX25hbWVsaXN0ICoqbGlzdCwKIAkgIHRhaWwtPnN5bSA9IHN5bTsKIAkgIHRh aWwtPmV4cHIgPSBleHByOwogCSAgdGFpbC0+d2hlcmUgPSBjdXJfbG9jOworCSAgaWYgKHJl amVjdF9jb21tb25fdmFycyAmJiBzeW0tPmF0dHIuaW5fY29tbW9uKQorCSAgICB7CisJICAg ICAgZ2NjX2Fzc2VydCAoYWxsb3dfY29tbW9uKTsKKwkgICAgICBnZmNfZXJyb3IgKCIlcXMg YXQgJUwgaXMgcGFydCBvZiB0aGUgY29tbW9uIGJsb2NrICU8LyVzLyU+IGFuZCAiCisJCQkg Im1heSBvbmx5IGJlIHNwZWNpZmljZWQgaW1wbGljaXRseSB2aWEgdGhlIG5hbWVkICIKKwkJ CSAiY29tbW9uIGJsb2NrIiwgc3ltLT5uYW1lLCAmY3VyX2xvYywKKwkJCSBzeW0tPmNvbW1v bl9oZWFkLT5uYW1lKTsKKwkgICAgICBnb3RvIGNsZWFudXA7CisJICAgIH0KIAkgIGdvdG8g bmV4dF9pdGVtOwogCWNhc2UgTUFUQ0hfTk86CiAJICBicmVhazsKQEAgLTE4OTUsNyArMTkw NSw4IEBAIGdmY19tYXRjaF9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoqY3AsIGNv bnN0IG9tcF9tYXNrIG1hc2ssCiAKIAkgICAgICBmb3IgKGdmY19vbXBfbmFtZWxpc3QgKm4g PSAqaGVhZDsgbjsgbiA9IG4tPm5leHQpCiAJCXsKLQkJICBuLT5leHByID0gKGFsbG9jYXRv cikgPyBnZmNfY29weV9leHByIChhbGxvY2F0b3IpIDogTlVMTDsKKwkJICBuLT51Mi5hbGxv Y2F0b3IgPSAoKGFsbG9jYXRvcikKKwkJCQkgICAgID8gZ2ZjX2NvcHlfZXhwciAoYWxsb2Nh dG9yKSA6IE5VTEwpOwogCQkgIG4tPnUuYWxpZ24gPSAoYWxpZ24pID8gZ2ZjX2NvcHlfZXhw ciAoYWxpZ24pIDogTlVMTDsKIAkJfQogCSAgICAgIGdmY19mcmVlX2V4cHIgKGFsbG9jYXRv cik7CkBAIC00MjcwLDYgKzQyODEsOCBAQCBjbGVhbnVwOgogICAob21wX21hc2sgKE9NUF9D TEFVU0VfQVQpIHwgT01QX0NMQVVTRV9NRVNTQUdFIHwgT01QX0NMQVVTRV9TRVZFUklUWSkK ICNkZWZpbmUgT01QX1dPUktTSEFSRV9DTEFVU0VTIFwKICAgb21wX21hc2sgKE9NUF9DTEFV U0VfTk9XQUlUKQorI2RlZmluZSBPTVBfQUxMT0NBVE9SU19DTEFVU0VTIFwKKyAgb21wX21h c2sgKE9NUF9DTEFVU0VfQUxMT0NBVEUpCiAKIAogc3RhdGljIG1hdGNoCkBAIC00Mjg0LDYg KzQyOTcsMTEzIEBAIG1hdGNoX29tcCAoZ2ZjX2V4ZWNfb3Agb3AsIGNvbnN0IG9tcF9tYXNr IG1hc2spCiAgIHJldHVybiBNQVRDSF9ZRVM7CiB9CiAKKy8qIEhhbmRsZXMgYm90aCBkZWNs YXJhdGl2ZSBhbmQgKGRlcHJlY2F0ZWQpIGV4ZWN1dGFibGUgQUxMT0NBVEUgZGlyZWN0aXZl OworICAgYWNjZXB0cyBvcHRpb25hbCBsaXN0IChmb3IgZXhlY3V0YWJsZSkgYW5kIGNvbW1v biBibG9ja3MuCisgICBJZiBubyB2YXJpYWJsZXMgaGF2ZSBiZWVuIHByb3ZpZGVkLCB0aGUg c2luZ2xlIG9tcCBuYW1lbGlzdCBoYXMgc3ltID09IE5VTEwuCisKKyAgIE5vdGUgdGhhdCB0 aGUgZXhlY3V0YWJsZSBBTExPQ0FURSBkaXJlY3RpdmUgcGVybWl0cyBzdHJ1Y3R1cmUgZWxl bWVudHMgb25seQorICAgaW4gT3Blbk1QIDUuMCBhbmQgNS4xIGJ1dCBub3QgbG9uZ2VyIGlu IDUuMi4gIFNlZSBhbHNvIHRoZSBjb21tZW50IG9uIHRoZQorICAgJ29tcCBhbGxvY2F0b3Jz JyBkaXJlY3RpdmUgYmVsb3cuIFRoZSBhY2NpZGVudGFsIGNoYW5nZSB3YXMgcmV2ZXJ0ZWQg Zm9yCisgICBPcGVuTVAgVFIxMiwgcGVybWl0dGluZyB0aGVtIGFnYWluLiBTZWUgYWxzbyBn ZmNfbWF0Y2hfb21wX2FsbG9jYXRvcnMuCisKKyAgIEhlbmNlLCBzdHJ1Y3R1cmUgZWxlbWVu dHMgYXJlIHJlamVjdGVkIGZvciBub3csIGFsc28gdG8gbWFrZSByZXNvbHZpbmcKKyAgIE9N UF9MSVNUX0FMTE9DQVRFIHNpbXBsZXIgKGNoZWNrIGZvciBkdXBsaWNhdGVzLCBzYW1lIHN5 bWJvbCBpbgorICAgRm9ydHJhbiBhbGxvY2F0ZSBzdG10KS4gIFRPRE86IFBlcm1pdCBzdHJ1 Y3R1cmUgZWxlbWVudHMuICAqLworCittYXRjaAorZ2ZjX21hdGNoX29tcF9hbGxvY2F0ZSAo dm9pZCkKK3sKKyAgbWF0Y2ggbTsKKyAgYm9vbCBmaXJzdCA9IHRydWU7CisgIGdmY19vbXBf bmFtZWxpc3QgKnZhcnMgPSBOVUxMOworICBnZmNfZXhwciAqYWxpZ24gPSBOVUxMOworICBn ZmNfZXhwciAqYWxsb2NhdG9yID0gTlVMTDsKKyAgbG9jdXMgbG9jID0gZ2ZjX2N1cnJlbnRf bG9jdXM7CisKKyAgbSA9IGdmY19tYXRjaF9vbXBfdmFyaWFibGVfbGlzdCAoIiAoIiwgJnZh cnMsIHRydWUsIE5VTEwsIE5VTEwsIHRydWUsIHRydWUsCisJCQkJICAgTlVMTCwgdHJ1ZSk7 CisKKyAgaWYgKG0gPT0gTUFUQ0hfRVJST1IpCisgICAgcmV0dXJuIG07CisKKyAgd2hpbGUg KHRydWUpCisgICAgeworICAgICAgZ2ZjX2dvYmJsZV93aGl0ZXNwYWNlICgpOworICAgICAg aWYgKGdmY19tYXRjaF9vbXBfZW9zICgpID09IE1BVENIX1lFUykKKwlicmVhazsKKyAgICAg IGlmICghZmlyc3QpCisJZ2ZjX21hdGNoICgiLCAiKTsKKyAgICAgIGZpcnN0ID0gZmFsc2U7 CisgICAgICBpZiAoKG0gPSBnZmNfbWF0Y2hfZHVwbF9jaGVjayAoIWFsaWduLCAiYWxpZ24i LCB0cnVlLCAmYWxpZ24pKQorCSAgIT0gTUFUQ0hfTk8pCisJeworCSAgaWYgKG0gPT0gTUFU Q0hfRVJST1IpCisJICAgIGdvdG8gZXJyb3I7CisJICBjb250aW51ZTsKKwl9CisgICAgICBp ZiAoKG0gPSBnZmNfbWF0Y2hfZHVwbF9jaGVjayAoIWFsbG9jYXRvciwgImFsbG9jYXRvciIs CisJCQkJICAgICB0cnVlLCAmYWxsb2NhdG9yKSkgIT0gTUFUQ0hfTk8pCisJeworCSAgaWYg KG0gPT0gTUFUQ0hfRVJST1IpCisJICAgIGdvdG8gZXJyb3I7CisJICBjb250aW51ZTsKKwl9 CisgICAgICBnZmNfZXJyb3IgKCJFeHBlY3RlZCBBTElHTiBvciBBTExPQ0FUT1IgY2xhdXNl IGF0ICVDIik7CisgICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CisgICAgfQorICBmb3IgKGdm Y19vbXBfbmFtZWxpc3QgKm4gPSB2YXJzOyBuOyBuID0gbi0+bmV4dCkKKyAgICBpZiAobi0+ ZXhwcikKKyAgICAgIHsKKwlpZiAoKG4tPmV4cHItPnJlZiAmJiBuLT5leHByLT5yZWYtPnR5 cGUgPT0gUkVGX0NPTVBPTkVOVCkKKwkgICAgfHwgKG4tPmV4cHItPnJlZi0+bmV4dCAmJiBu LT5leHByLT5yZWYtPnR5cGUgPT0gUkVGX0NPTVBPTkVOVCkpCisJICBnZmNfZXJyb3IgKCJT b3JyeSwgc3RydWN0dXJlLWVsZW1lbnQgbGlzdCBpdGVtIGF0ICVMIGluIEFMTE9DQVRFICIK KwkJICAgICAiZGlyZWN0aXZlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiwgJm4tPmV4cHItPndo ZXJlKTsKKwllbHNlCisJICBnZmNfZXJyb3IgKCJVbmV4cGVjdGVkIGV4cHJlc3Npb24gYXMg bGlzdCBpdGVtIGF0ICVMIGluIEFMTE9DQVRFICIKKwkJICAgICAiZGlyZWN0aXZlIiwgJm4t PmV4cHItPndoZXJlKTsKKworCWdmY19mcmVlX29tcF9uYW1lbGlzdCAodmFycywgZmFsc2Us IHRydWUpOworCWdvdG8gZXJyb3I7CisgICAgICB9CisKKyAgbmV3X3N0Lm9wID0gRVhFQ19P TVBfQUxMT0NBVEU7CisgIG5ld19zdC5leHQub21wX2NsYXVzZXMgPSBnZmNfZ2V0X29tcF9j bGF1c2VzICgpOworICBpZiAodmFycyA9PSBOVUxMKQorICAgIHsKKyAgICAgIHZhcnMgPSBn ZmNfZ2V0X29tcF9uYW1lbGlzdCAoKTsKKyAgICAgIHZhcnMtPndoZXJlID0gbG9jOworICAg ICAgdmFycy0+dS5hbGlnbiA9IGFsaWduOworICAgICAgdmFycy0+dTIuYWxsb2NhdG9yID0g YWxsb2NhdG9yOworICAgICAgbmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJ U1RfQUxMT0NBVEVdID0gdmFyczsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBuZXdf c3QuZXh0Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV0gPSB2YXJzOwor ICAgICAgZm9yICg7IHZhcnM7IHZhcnMgPSB2YXJzLT5uZXh0KQorCXsKKwkgIHZhcnMtPnUu YWxpZ24gPSAoYWxpZ24pID8gZ2ZjX2NvcHlfZXhwciAoYWxpZ24pIDogTlVMTDsKKwkgIHZh cnMtPnUyLmFsbG9jYXRvciA9ICgoYWxsb2NhdG9yKSA/IGdmY19jb3B5X2V4cHIgKGFsbG9j YXRvcikgOiBOVUxMKTsKKwl9CisgICAgICBnZmNfZnJlZV9leHByIChhbGxvY2F0b3IpOwor ICAgICAgZ2ZjX2ZyZWVfZXhwciAoYWxpZ24pOworICAgIH0KKyAgcmV0dXJuIE1BVENIX1lF UzsKKworZXJyb3I6CisgIGdmY19mcmVlX2V4cHIgKGFsaWduKTsKKyAgZ2ZjX2ZyZWVfZXhw ciAoYWxsb2NhdG9yKTsKKyAgcmV0dXJuIE1BVENIX0VSUk9SOworfQorCisvKiBJbiBsaW5l IHdpdGggT3Blbk1QIDUuMiBkZXJpdmVkLXR5cGUgY29tcG9uZW50cyBhcmUgcmVqZWN0ZWQu CisgICBTZWUgYWxzbyBjb21tZW50IGJlZm9yZSBnZmNfbWF0Y2hfb21wX2FsbG9jYXRlLiAg Ki8KKworbWF0Y2gKK2dmY19tYXRjaF9vbXBfYWxsb2NhdG9ycyAodm9pZCkKK3sKKyAgcmV0 dXJuIG1hdGNoX29tcCAoRVhFQ19PTVBfQUxMT0NBVE9SUywgT01QX0FMTE9DQVRPUlNfQ0xB VVNFUyk7Cit9CisKIAogbWF0Y2gKIGdmY19tYXRjaF9vbXBfYXNzdW1lICh2b2lkKQpAQCAt NjkwMyw2ICs3MDIzLDEyOCBAQCByZXNvbHZlX29tcF91ZHJfY2xhdXNlIChnZmNfb21wX25h bWVsaXN0ICpuLCBnZmNfbmFtZXNwYWNlICpucywKICAgcmV0dXJuIGNvcHk7CiB9CiAKKy8q IEFzc3VtZSB0aGF0IGEgY29uc3RhbnQgZXhwcmVzc2lvbiBpbiB0aGUgcmFuZ2UgMSAob21w X2RlZmF1bHRfbWVtX2FsbG9jKQorICAgdG8gOCAob21wX3RocmVhZF9tZW1fYWxsb2MpIHJh bmdlIGlzIGZpbmUuICBUaGUgb3JpZ2luYWwgc3ltYm9sIG5hbWUgaXMKKyAgIGFscmVhZHkg bG9zdCBkdXJpbmcgbWF0Y2hpbmcgdmlhIGdmY19tYXRjaF9leHByLiAgKi8KK2Jvb2wKK2lz X3ByZWRlZmluZWRfYWxsb2NhdG9yIChnZmNfZXhwciAqZXhwcikKK3sKKyAgcmV0dXJuIChn ZmNfcmVzb2x2ZV9leHByIChleHByKQorCSAgJiYgZXhwci0+cmFuayA9PSAwCisJICAmJiBl eHByLT50cy50eXBlID09IEJUX0lOVEVHRVIKKwkgICYmIGV4cHItPnRzLmtpbmQgPT0gZ2Zj X2NfaW50cHRyX2tpbmQKKwkgICYmIGV4cHItPmV4cHJfdHlwZSA9PSBFWFBSX0NPTlNUQU5U CisJICAmJiBtcHpfc2duIChleHByLT52YWx1ZS5pbnRlZ2VyKSA+IDAKKwkgICYmIG1wel9j bXBfc2kgKGV4cHItPnZhbHVlLmludGVnZXIsIDgpIDw9IDApOworfQorCisvKiBSZXNvbHZl IGRlY2xhcmF0aXZlIEFMTE9DQVRFIHN0YXRlbWVudC4gTm90ZTogQ29tbW9uIGJsb2NrIHZh cnMgb25seSBhcHBlYXIKKyAgIGFzIC9ibG9jay8gbm90IGluZGl2aWR1YWwsIHdoaWNoIGlz IGVuc3VyZWQgZHVyaW5nIHBhcnNpbmcuICAqLworCit2b2lkCitnZmNfcmVzb2x2ZV9vbXBf YWxsb2NhdGUgKGdmY19uYW1lc3BhY2UgKm5zLCBnZmNfb21wX25hbWVsaXN0ICpsaXN0KQor eworICBmb3IgKGdmY19vbXBfbmFtZWxpc3QgKm4gPSBsaXN0OyBuOyBuID0gbi0+bmV4dCkK KyAgICBuLT5zeW0tPm1hcmsgPSAwOworICBmb3IgKGdmY19vbXBfbmFtZWxpc3QgKm4gPSBs aXN0OyBuOyBuID0gbi0+bmV4dCkKKyAgICB7CisgICAgICBpZiAobi0+c3ltLT5hdHRyLmZs YXZvciAhPSBGTF9WQVJJQUJMRSkKKwl7CisJICBnZmNfZXJyb3IgKCJBcmd1bWVudCAlcXMg YXQgJUwgdG8gZGVjbGFyYXRpdmUgISRPTVAgQUxMT0NBVEUgIgorCQkgICAgICJkaXJlY3Rp dmUgbXVzdCBiZSBhIHZhcmlhYmxlIiwgbi0+c3ltLT5uYW1lLAorCQkgICAgICZuLT53aGVy ZSk7CisJICBjb250aW51ZTsKKwl9CisgICAgICBpZiAobnMgIT0gbi0+c3ltLT5ucyB8fCBu LT5zeW0tPmF0dHIudXNlX2Fzc29jCisJICB8fCBuLT5zeW0tPmF0dHIuaG9zdF9hc3NvYyB8 fCBuLT5zeW0tPmF0dHIuaW1wb3J0ZWQpCisJeworCSAgZ2ZjX2Vycm9yICgiQXJndW1lbnQg JXFzIGF0ICVMIHRvIGRlY2xhcmF0aXZlICEkT01QIEFMTE9DQVRFIHNoYWxsIGJlIgorCQkg ICAgICIgaW4gdGhlIHNhbWUgc2NvcGUgYXMgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIiwK KwkJICAgICBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CisJICBjb250aW51ZTsKKwl9Cisg ICAgICBpZiAobi0+c3ltLT5hdHRyLmR1bW15KQorCXsKKwkgIGdmY19lcnJvciAoIlVuZXhw ZWN0ZWQgZHVtbXkgYXJndW1lbnQgJXFzIGFzIGFyZ3VtZW50IGF0ICVMIHRvICIKKwkJICAg ICAiZGVjbGFyYXRpdmUgISRPTVAgQUxMT0NBVEUiLCBuLT5zeW0tPm5hbWUsICZuLT53aGVy ZSk7CisJICBjb250aW51ZTsKKwl9CisgICAgICBpZiAobi0+c3ltLT5tYXJrKQorCXsKKwkg IGlmIChuLT5zeW0tPmF0dHIuaW5fY29tbW9uKQorCSAgICB7CisJICAgICAgZ2ZjX2Vycm9y ICgiRHVwbGljYXRlZCBjb21tb24gYmxvY2sgJTwvJXMvJT4gaW4gISRPTVAgQUxMT0NBVEUg IgorCQkJICJhdCAlTCIsIG4tPnN5bS0+Y29tbW9uX2hlYWQtPm5hbWUsICZuLT53aGVyZSk7 CisJICAgICAgd2hpbGUgKG4tPm5leHQgJiYgbi0+bmV4dC0+c3ltCisJCSAgICAgJiYgbi0+ c3ltLT5jb21tb25faGVhZCA9PSBuLT5uZXh0LT5zeW0tPmNvbW1vbl9oZWFkKQorCQluID0g bi0+bmV4dDsKKwkgICAgfQorCSAgZWxzZQorCSAgICBnZmNfZXJyb3IgKCJEdXBsaWNhdGVk IHZhcmlhYmxlICVxcyBpbiAhJE9NUCBBTExPQ0FURSBhdCAlTCIsCisJCSAgICAgICBuLT5z eW0tPm5hbWUsICZuLT53aGVyZSk7CisJICBjb250aW51ZTsKKwl9CisgICAgICBuLT5zeW0t Pm1hcmsgPSAxOworICAgICAgaWYgKChuLT5zeW0tPnRzLnR5cGUgPT0gQlRfQ0xBU1MgJiYg bi0+c3ltLT5hdHRyLmNsYXNzX29rCisJICAgJiYgQ0xBU1NfREFUQSAobi0+c3ltKS0+YXR0 ci5hbGxvY2F0YWJsZSkKKwkgIHx8IChuLT5zeW0tPnRzLnR5cGUgIT0gQlRfQ0xBU1MgJiYg bi0+c3ltLT5hdHRyLmFsbG9jYXRhYmxlKSkKKwlnZmNfZXJyb3IgKCJVbmV4cGVjdGVkIGFs bG9jYXRhYmxlIHZhcmlhYmxlICVxcyBhdCAlTCBpbiBkZWNsYXJhdGl2ZSAiCisJCSAgICIh JE9NUCBBTExPQ0FURSBkaXJlY3RpdmUiLCBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7Cisg ICAgICBlbHNlIGlmICgobi0+c3ltLT50cy50eXBlID09IEJUX0NMQVNTICYmIG4tPnN5bS0+ YXR0ci5jbGFzc19vaworCQkmJiBDTEFTU19EQVRBIChuLT5zeW0pLT5hdHRyLmNsYXNzX3Bv aW50ZXIpCisJICAgICAgIHx8IChuLT5zeW0tPnRzLnR5cGUgIT0gQlRfQ0xBU1MgJiYgbi0+ c3ltLT5hdHRyLnBvaW50ZXIpKQorCWdmY19lcnJvciAoIlVuZXhwZWN0ZWQgcG9pbnRlciB2 YXJpYWJsZSAlcXMgYXQgJUwgaW4gZGVjbGFyYXRpdmUgIgorCQkgICAiISRPTVAgQUxMT0NB VEUgZGlyZWN0aXZlIiwgbi0+c3ltLT5uYW1lLCAmbi0+d2hlcmUpOworICAgICAgSE9TVF9X SURFX0lOVCBhbGlnbm1lbnQgPSAwOworICAgICAgaWYgKG4tPnUuYWxpZ24KKwkgICYmICgh Z2ZjX3Jlc29sdmVfZXhwciAobi0+dS5hbGlnbikKKwkgICAgICB8fCBuLT51LmFsaWduLT50 cy50eXBlICE9IEJUX0lOVEVHRVIKKwkgICAgICB8fCBuLT51LmFsaWduLT5yYW5rICE9IDAK KwkgICAgICB8fCBuLT51LmFsaWduLT5leHByX3R5cGUgIT0gRVhQUl9DT05TVEFOVAorCSAg ICAgIHx8IGdmY19leHRyYWN0X2h3aSAobi0+dS5hbGlnbiwgJmFsaWdubWVudCkKKwkgICAg ICB8fCAhcG93MnBfaHdpIChhbGlnbm1lbnQpKSkKKwl7CisJICBnZmNfZXJyb3IgKCJBTElH TiByZXF1aXJlcyBhIHNjYWxhciBwb3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyICIKKwkJICAg ICAiYWxpZ25tZW50IGV4cHJlc3Npb24gYXQgJUwgdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIs CisJCSAgICAgJm4tPnUuYWxpZ24tPndoZXJlKTsKKwkgIHdoaWxlIChuLT5zeW0tPmF0dHIu aW5fY29tbW9uICYmIG4tPm5leHQgJiYgbi0+bmV4dC0+c3ltCisJCSAmJiBuLT5zeW0tPmNv bW1vbl9oZWFkID09IG4tPm5leHQtPnN5bS0+Y29tbW9uX2hlYWQpCisJICAgIG4gPSBuLT5u ZXh0OworCSAgY29udGludWU7CisJfQorICAgICAgaWYgKG4tPnN5bS0+YXR0ci5pbl9jb21t b24gfHwgbi0+c3ltLT5hdHRyLnNhdmUgfHwgbi0+c3ltLT5ucy0+c2F2ZV9hbGwKKwkgIHx8 IChuLT5zeW0tPm5zLT5wcm9jX25hbWUKKwkgICAgICAmJiAobi0+c3ltLT5ucy0+cHJvY19u YW1lLT5hdHRyLmZsYXZvciA9PSBGTF9QUk9HUkFNCisJCSAgfHwgbi0+c3ltLT5ucy0+cHJv Y19uYW1lLT5hdHRyLmZsYXZvciA9PSBGTF9NT0RVTEUpKSkKKwl7CisJICBib29sIGNvbSA9 IG4tPnN5bS0+YXR0ci5pbl9jb21tb247CisJICBpZiAoIW4tPnUyLmFsbG9jYXRvcikKKwkg ICAgZ2ZjX2Vycm9yICgiQW4gQUxMT0NBVE9SIGNsYXVzZSBpcyByZXF1aXJlZCBhcyB0aGUg bGlzdCBpdGVtICIKKwkJICAgICAgICIlPCVzJXMlcyU+IGF0ICVMIGhhcyB0aGUgU0FWRSBh dHRyaWJ1dGUiLCBjb20gPyAiLyIgOiAiIiwKKwkJICAgICAgIGNvbSA/IG4tPnN5bS0+Y29t bW9uX2hlYWQtPm5hbWUgOiBuLT5zeW0tPm5hbWUsCisJCSAgICAgICBjb20gPyAiLyIgOiAi IiwgJm4tPndoZXJlKTsKKwkgIGVsc2UgaWYgKCFpc19wcmVkZWZpbmVkX2FsbG9jYXRvciAo bi0+dTIuYWxsb2NhdG9yKSkKKwkgICAgZ2ZjX2Vycm9yICgiUHJlZGVmaW5lZCBhbGxvY2F0 b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAlTCIKKwkJICAgICAgICIgYXMg dGhlIGxpc3QgaXRlbSAlPCVzJXMlcyU+IGF0ICVMIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUi LAorCQkgICAgICAgJm4tPnUyLmFsbG9jYXRvci0+d2hlcmUsIGNvbSA/ICIvIiA6ICIiLAor CQkgICAgICAgY29tID8gbi0+c3ltLT5jb21tb25faGVhZC0+bmFtZSA6IG4tPnN5bS0+bmFt ZSwKKwkJICAgICAgIGNvbSA/ICIvIiA6ICIiLCAmbi0+d2hlcmUpOworCSAgd2hpbGUgKG4t PnN5bS0+YXR0ci5pbl9jb21tb24gJiYgbi0+bmV4dCAmJiBuLT5uZXh0LT5zeW0KKwkJICYm IG4tPnN5bS0+Y29tbW9uX2hlYWQgPT0gbi0+bmV4dC0+c3ltLT5jb21tb25faGVhZCkKKwkg ICAgbiA9IG4tPm5leHQ7CisJfQorICAgICAgZWxzZSBpZiAobi0+dTIuYWxsb2NhdG9yCisJ ICAmJiAoIWdmY19yZXNvbHZlX2V4cHIgKG4tPnUyLmFsbG9jYXRvcikKKwkgICAgICB8fCBu LT51Mi5hbGxvY2F0b3ItPnRzLnR5cGUgIT0gQlRfSU5URUdFUgorCSAgICAgIHx8IG4tPnUy LmFsbG9jYXRvci0+cmFuayAhPSAwCisJICAgICAgfHwgbi0+dTIuYWxsb2NhdG9yLT50cy5r aW5kICE9IGdmY19jX2ludHB0cl9raW5kKSkKKwlnZmNfZXJyb3IgKCJFeHBlY3RlZCBpbnRl Z2VyIGV4cHJlc3Npb24gb2YgdGhlICIKKwkJICAgIiU8b21wX2FsbG9jYXRvcl9oYW5kbGVf a2luZCU+IGtpbmQgYXQgJUwiLAorCQkgICAmbi0+dTIuYWxsb2NhdG9yLT53aGVyZSk7Cisg ICAgfQorICBnZmNfZXJyb3IgKCJTb3JyeSwgZGVjbGFyYXRpdmUgISRPTVAgQUxMT0NBVEUg YXQgJUwgbm90IHlldCBzdXBwb3J0ZWQiLAorCSAgICAgJmxpc3QtPndoZXJlKTsKK30KIAog LyogUmVzb2x2ZSBBU1NVTUUncyBhbmQgQVNTVU1FUycgYXNzdW1wdGlvbiBjbGF1c2VzLiAg Tm90ZSB0aGF0IGFic2VudC9jb250YWlucwogICAgaXMgaGFuZGxlZCBkdXJpbmcgcGFyc2Ug dGltZSBpbiBvbXBfdmVyaWZ5X21lcmdlX2Fic2VudF9jb250YWlucy4gICAqLwpAQCAtNzM3 NiwyOCArNzYxOCwzMSBAQCByZXNvbHZlX29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwg Z2ZjX29tcF9jbGF1c2VzICpvbXBfY2xhdXNlcywKICAgICB7CiAgICAgICBmb3IgKG4gPSBv bXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxMT0NBVEVdOyBuOyBuID0gbi0+bmV4dCkK IAl7Ci0JICBpZiAobi0+ZXhwciAmJiAoIWdmY19yZXNvbHZlX2V4cHIgKG4tPmV4cHIpCi0J CQkgIHx8IG4tPmV4cHItPnRzLnR5cGUgIT0gQlRfSU5URUdFUgotCQkJICB8fCBuLT5leHBy LT50cy5raW5kICE9IGdmY19jX2ludHB0cl9raW5kKSkKKwkgIGlmIChuLT51Mi5hbGxvY2F0 b3IKKwkgICAgICAmJiAoIWdmY19yZXNvbHZlX2V4cHIgKG4tPnUyLmFsbG9jYXRvcikKKwkJ ICB8fCBuLT51Mi5hbGxvY2F0b3ItPnRzLnR5cGUgIT0gQlRfSU5URUdFUgorCQkgIHx8IG4t PnUyLmFsbG9jYXRvci0+cmFuayAhPSAwCisJCSAgfHwgbi0+dTIuYWxsb2NhdG9yLT50cy5r aW5kICE9IGdmY19jX2ludHB0cl9raW5kKSkKIAkgICAgewogCSAgICAgIGdmY19lcnJvciAo IkV4cGVjdGVkIGludGVnZXIgZXhwcmVzc2lvbiBvZiB0aGUgIgogCQkJICIlPG9tcF9hbGxv Y2F0b3JfaGFuZGxlX2tpbmQlPiBraW5kIGF0ICVMIiwKLQkJCSAmbi0+ZXhwci0+d2hlcmUp OworCQkJICZuLT51Mi5hbGxvY2F0b3ItPndoZXJlKTsKIAkgICAgICBicmVhazsKIAkgICAg fQogCSAgaWYgKCFuLT51LmFsaWduKQogCSAgICBjb250aW51ZTsKLQkgIGludCBhbGlnbm1l bnQgPSAwOworCSAgSE9TVF9XSURFX0lOVCBhbGlnbm1lbnQgPSAwOwogCSAgaWYgKCFnZmNf cmVzb2x2ZV9leHByIChuLT51LmFsaWduKQogCSAgICAgIHx8IG4tPnUuYWxpZ24tPnRzLnR5 cGUgIT0gQlRfSU5URUdFUgogCSAgICAgIHx8IG4tPnUuYWxpZ24tPnJhbmsgIT0gMAotCSAg ICAgIHx8IGdmY19leHRyYWN0X2ludCAobi0+dS5hbGlnbiwgJmFsaWdubWVudCkKKwkgICAg ICB8fCBuLT51LmFsaWduLT5leHByX3R5cGUgIT0gRVhQUl9DT05TVEFOVAorCSAgICAgIHx8 IGdmY19leHRyYWN0X2h3aSAobi0+dS5hbGlnbiwgJmFsaWdubWVudCkKIAkgICAgICB8fCBh bGlnbm1lbnQgPD0gMAogCSAgICAgIHx8ICFwb3cycF9od2kgKGFsaWdubWVudCkpCiAJICAg IHsKLQkgICAgICBnZmNfZXJyb3IgKCJBTElHTiBtb2RpZmllciByZXF1aXJlcyBhdCAlTCBh IHNjYWxhciBwb3NpdGl2ZSAiCi0JCQkgImNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4 cHJlc3Npb24gdGhhdCBpcyBhICIKLQkJCSAicG93ZXIgb2YgdHdvIiwgJm4tPnUuYWxpZ24t PndoZXJlKTsKKwkgICAgICBnZmNfZXJyb3IgKCJBTElHTiByZXF1aXJlcyBhIHNjYWxhciBw b3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyICIKKwkJCSAiYWxpZ25tZW50IGV4cHJlc3Npb24g YXQgJUwgdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIsCisJCQkgJm4tPnUuYWxpZ24tPndoZXJl KTsKIAkgICAgICBicmVhazsKIAkgICAgfQogCX0KQEAgLTc0MDcsMTUgKzc2NTIsMjEgQEAg cmVzb2x2ZV9vbXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAq b21wX2NsYXVzZXMsCiAJIDIuICBWYXJpYWJsZSBpbiBhbGxvY2F0ZSBjbGF1c2UgYXJlIGFs c28gcHJlc2VudCBpbiBzb21lCiAJICAgICBwcml2YXRpemF0aW9uIGNsYXNlIChub24tY29t cG9zaXRlIGNhc2UpLiAgKi8KICAgICAgIGZvciAobiA9IG9tcF9jbGF1c2VzLT5saXN0c1tP TVBfTElTVF9BTExPQ0FURV07IG47IG4gPSBuLT5uZXh0KQotCW4tPnN5bS0+bWFyayA9IDA7 CisJaWYgKG4tPnN5bSkKKwkgIG4tPnN5bS0+bWFyayA9IDA7CiAKICAgICAgIGdmY19vbXBf bmFtZWxpc3QgKnByZXYgPSBOVUxMOwotICAgICAgZm9yIChuID0gb21wX2NsYXVzZXMtPmxp c3RzW09NUF9MSVNUX0FMTE9DQVRFXTsgbjspCisgICAgICBmb3IgKG4gPSBvbXBfY2xhdXNl cy0+bGlzdHNbT01QX0xJU1RfQUxMT0NBVEVdOyBuOyApCiAJeworCSAgaWYgKG4tPnN5bSA9 PSBOVUxMKQorCSAgICB7CisJICAgICAgbiA9IG4tPm5leHQ7CisJICAgICAgY29udGludWU7 CisJICAgIH0KIAkgIGlmIChuLT5zeW0tPm1hcmsgPT0gMSkKIAkgICAgewogCSAgICAgIGdm Y193YXJuaW5nICgwLCAiJXFzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gJTxhbGxvY2F0 ZSU+ICIKLQkJCSAgICJjbGF1c2VzIGF0ICVMIiAsIG4tPnN5bS0+bmFtZSwgJm4tPndoZXJl KTsKKwkJCSAgICJhdCAlTCIgLCBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CiAJICAgICAg LyogV2UgaGF2ZSBhbHJlYWR5IHNlZW4gdGhpcyB2YXJpYWJsZSBzbyBpdCBpcyBhIGR1cGxp Y2F0ZS4KIAkJIFJlbW92ZSBpdC4gICovCiAJICAgICAgaWYgKHByZXYgIT0gTlVMTCAmJiBw cmV2LT5uZXh0ID09IG4pCkBAIC03NDYwLDYgKzc3MTEsMjggQEAgcmVzb2x2ZV9vbXBfY2xh dXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqb21wX2NsYXVzZXMsCiAJ CQkgImluIGFuIGV4cGxpY2l0IHByaXZhdGl6YXRpb24gY2xhdXNlIiwKIAkJCSBuLT5zeW0t Pm5hbWUsICZuLT53aGVyZSk7CiAJfQorICAgICAgaWYgKGNvZGUKKwkgICYmIChjb2RlLT5v cCA9PSBFWEVDX09NUF9BTExPQ0FUT1JTIHx8IGNvZGUtPm9wID09IEVYRUNfT01QX0FMTE9D QVRFKQorCSAgJiYgY29kZS0+YmxvY2sKKwkgICYmIGNvZGUtPmJsb2NrLT5uZXh0CisJICAm JiBjb2RlLT5ibG9jay0+bmV4dC0+b3AgPT0gRVhFQ19BTExPQ0FURSkKKwl7CisJICBnZmNf YWxsb2MgKmE7CisJICBmb3IgKG4gPSBvbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxM T0NBVEVdOyBuOyBuID0gbi0+bmV4dCkKKwkgICAgeworCSAgICAgIGlmIChuLT5zeW0gPT0g TlVMTCkKKwkJY29udGludWU7CisJICAgICAgZm9yIChhID0gY29kZS0+YmxvY2stPm5leHQt PmV4dC5hbGxvYy5saXN0OyBhOyBhID0gYS0+bmV4dCkKKwkJaWYgKGEtPmV4cHItPmV4cHJf dHlwZSA9PSBFWFBSX1ZBUklBQkxFCisJCSAgICAmJiBhLT5leHByLT5zeW10cmVlLT5uLnN5 bSA9PSBuLT5zeW0pCisJCSAgYnJlYWs7CisJICAgICAgaWYgKGEgPT0gTlVMTCkKKwkJZ2Zj X2Vycm9yICgiJXFzIHNwZWNpZmllZCBpbiAlPGFsbG9jYXRlJT4gYXQgJUwgYnV0IG5vdCAi CisJCQkgICAiaW4gdGhlIGFzc29jaWF0ZWQgQUxMT0NBVEUgc3RhdGVtZW50IiwKKwkJCSAg IG4tPnN5bS0+bmFtZSwgJm4tPndoZXJlKTsKKwkgICAgfQorCX0KKwogICAgIH0KIAogICAv KiBPcGVuQUNDIHJlZHVjdGlvbnMuICAqLwpAQCAtNzU2MywxNSArNzgzNiwxMyBAQCByZXNv bHZlX29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwgZ2ZjX29tcF9jbGF1c2VzICpvbXBf Y2xhdXNlcywKIAkJCSAgICAgbi0+c3ltLT5uYW1lLCAmbi0+d2hlcmUpOwogCQllbHNlIGlm IChuLT5leHByKQogCQkgIHsKLQkJICAgIGdmY19leHByICpleHByID0gbi0+ZXhwcjsKLQkJ ICAgIGludCBhbGlnbm1lbnQgPSAwOwotCQkgICAgaWYgKCFnZmNfcmVzb2x2ZV9leHByIChl eHByKQotCQkJfHwgZXhwci0+dHMudHlwZSAhPSBCVF9JTlRFR0VSCi0JCQl8fCBleHByLT5y YW5rICE9IDAKLQkJCXx8IGdmY19leHRyYWN0X2ludCAoZXhwciwgJmFsaWdubWVudCkKLQkJ CXx8IGFsaWdubWVudCA8PSAwKQotCQkgICAgICBnZmNfZXJyb3IgKCIlcXMgaW4gQUxJR05F RCBjbGF1c2UgYXQgJUwgcmVxdWlyZXMgYSBzY2FsYXIgIgotCQkJCSAicG9zaXRpdmUgY29u c3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgIgorCQkgICAgaWYgKCFnZmNfcmVzb2x2ZV9leHBy IChuLT5leHByKQorCQkJfHwgbi0+ZXhwci0+dHMudHlwZSAhPSBCVF9JTlRFR0VSCisJCQl8 fCBuLT5leHByLT5yYW5rICE9IDAKKwkJCXx8IG4tPmV4cHItPmV4cHJfdHlwZSAhPSBFWFBS X0NPTlNUQU5UCisJCQl8fCBtcHpfc2duIChuLT5leHByLT52YWx1ZS5pbnRlZ2VyKSA8PSAw KQorCQkgICAgICBnZmNfZXJyb3IgKCIlcXMgaW4gQUxJR05FRCBjbGF1c2UgYXQgJUwgcmVx dWlyZXMgYSBzY2FsYXIiCisJCQkJICIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGln bm1lbnQgIgogCQkJCSAiZXhwcmVzc2lvbiIsIG4tPnN5bS0+bmFtZSwgJm4tPndoZXJlKTsK IAkJICB9CiAJICAgICAgfQpAQCAtNzk1MSw2ICs4MjIyLDEyIEBAIHJlc29sdmVfb21wX2Ns YXVzZXMgKGdmY19jb2RlICpjb2RlLCBnZmNfb21wX2NsYXVzZXMgKm9tcF9jbGF1c2VzLAog CSAgZGVmYXVsdDoKIAkgICAgZm9yICg7IG4gIT0gTlVMTDsgbiA9IG4tPm5leHQpCiAJICAg ICAgeworCQlpZiAobi0+c3ltID09IE5VTEwpCisJCSAgeworCQkgICAgZ2NjX2Fzc2VydCAo Y29kZS0+b3AgPT0gRVhFQ19PTVBfQUxMT0NBVE9SUworCQkJCXx8IGNvZGUtPm9wID09IEVY RUNfT01QX0FMTE9DQVRFKTsKKwkJICAgIGNvbnRpbnVlOworCQkgIH0KIAkJYm9vbCBiYWQg PSBmYWxzZTsKIAkJYm9vbCBpc19yZWR1Y3Rpb24gPSAobGlzdCA9PSBPTVBfTElTVF9SRURV Q1RJT04KIAkJCQkgICAgIHx8IGxpc3QgPT0gT01QX0xJU1RfUkVEVUNUSU9OX0lOU0NBTgpA QCAtOTY2Nyw2ICs5OTQ0LDEwIEBAIG9tcF9jb2RlX3RvX3N0YXRlbWVudCAoZ2ZjX2NvZGUg KmNvZGUpCiAgICAgICByZXR1cm4gU1RfT01QX0RPOwogICAgIGNhc2UgRVhFQ19PTVBfTE9P UDoKICAgICAgIHJldHVybiBTVF9PTVBfTE9PUDsKKyAgICBjYXNlIEVYRUNfT01QX0FMTE9D QVRFOgorICAgICAgcmV0dXJuIFNUX09NUF9BTExPQ0FURV9FWEVDOworICAgIGNhc2UgRVhF Q19PTVBfQUxMT0NBVE9SUzoKKyAgICAgIHJldHVybiBTVF9PTVBfQUxMT0NBVE9SUzsKICAg ICBjYXNlIEVYRUNfT01QX0FTU1VNRToKICAgICAgIHJldHVybiBTVF9PTVBfQVNTVU1FOwog ICAgIGNhc2UgRVhFQ19PTVBfQVRPTUlDOgpAQCAtMTAxODgsNiArMTA0NjksOCBAQCBnZmNf cmVzb2x2ZV9vbXBfZGlyZWN0aXZlIChnZmNfY29kZSAqY29kZSwgZ2ZjX25hbWVzcGFjZSAq bnMpCiAgICAgY2FzZSBFWEVDX09NUF9URUFNU19MT09QOgogICAgICAgcmVzb2x2ZV9vbXBf ZG8gKGNvZGUpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBFWEVDX09NUF9BTExPQ0FURToK KyAgICBjYXNlIEVYRUNfT01QX0FMTE9DQVRPUlM6CiAgICAgY2FzZSBFWEVDX09NUF9BU1NV TUU6CiAgICAgY2FzZSBFWEVDX09NUF9DQU5DRUw6CiAgICAgY2FzZSBFWEVDX09NUF9FUlJP UjoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3BhcnNlLmNjIGIvZ2NjL2ZvcnRyYW4vcGFy c2UuY2MKaW5kZXggNWUyYTk1Njg4ZDIuLjk3MzBhYjA5NWUyIDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi9wYXJzZS5jYworKysgYi9nY2MvZm9ydHJhbi9wYXJzZS5jYwpAQCAtMzksNiAr MzksNyBAQCBzdGF0aWMgam1wX2J1ZiBlb2ZfYnVmOwogCiBnZmNfc3RhdGVfZGF0YSAqZ2Zj X3N0YXRlX3N0YWNrOwogc3RhdGljIGJvb2wgbGFzdF93YXNfdXNlX3N0bXQgPSBmYWxzZTsK K2Jvb2wgaW5fZXhlY19wYXJ0OwogCiAvKiBUT0RPOiBSZS1vcmRlciBmdW5jdGlvbnMgdG8g a2lsbCB0aGVzZSBmb3J3YXJkIGRlY2xzLiAgKi8KIHN0YXRpYyB2b2lkIGNoZWNrX3N0YXRl bWVudF9sYWJlbCAoZ2ZjX3N0YXRlbWVudCk7CkBAIC03NDUsNiArNzQ2LDgyIEBAIGRlY29k ZV9vYWNjX2RpcmVjdGl2ZSAodm9pZCkKICAgcmV0dXJuIFNUX0dFVF9GQ05fQ0hBUkFDVEVS SVNUSUNTOwogfQogCisvKiBDaGVja3MgZm9yIHRoZSBTVF9PTVBfQUxMT0NBVEUuIEZpcnN0 LCBjaGVjayB3aGV0aGVyIGFsbCBsaXN0IGl0ZW1zCisgICBhcmUgYWxsb2NhdGFibGVzL3Bv aW50ZXJzIC0gYW5kIGlmIHNvLCBhc3N1bWUgaXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgRm9y dHJhbgorICAgQUxMT0NBVEUgc3RtdC4gIElmIG5vdCwgZG8gc29tZSBpbml0aWFsIHBhcnNp bmctcmVsYXRlZCBjaGVja3MgYW5kIGFwcGVuZAorICAgbmFtZWxpc3QgdG8gbmFtZXNwYWNl LgorICAgVGhlIGNoZWNrIGZvbGxvd3MgT3Blbk1QIDUuMSBieSByZXF1aXJpbmcgYW4gZXhl Y3V0YWJsZSBzdG10IG9yIE9wZW5NUAorICAgY29uc3RydWN0IGJlZm9yZSBhIGRpcmVjdGl2 ZSBhc3NvY2lhdGVkIHdpdGggYW4gYWxsb2NhdGUgc3RhdGVtZW50CisgICAoLT4gU1RfT01Q X0FMTE9DQVRFX0VYRUMpOyBpbnN0ZWFkIG9mIHNob3dpbmcgYW4gZXJyb3IsIGNvbnZlcnNp b24gb2YKKyAgIFNUX09NUF9BTExPQ0FURSAtPiBTVF9PTVBfQUxMT0NBVEVfRVhFQyB3b3Vs ZCBiZSBhbiBhbHRlcm5hdGl2ZS4gICovCisKK2Jvb2wKK2NoZWNrX29tcF9hbGxvY2F0ZV9z dG10IChsb2N1cyAqbG9jKQoreworICBnZmNfb21wX25hbWVsaXN0ICpuOworCisgIGlmIChu ZXdfc3QuZXh0Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV0tPnN5bSA9 PSBOVUxMKQorICAgIHsKKyAgICAgIGdmY19lcnJvciAoIiVxcyBkaXJlY3RpdmUgYXQgJUwg bXVzdCBlaXRoZXIgaGF2ZSBhIHZhcmlhYmxlIGFyZ3VtZW50IG9yLCAiCisJCSAiaWYgYXNz b2NpYXRlZCB3aXRoIGFuIEFMTE9DQVRFIHN0bXQsIG11c3QgYmUgcHJlY2VkZWQgYnkgYW4g IgorCQkgImV4ZWN1dGFibGUgc3RhdGVtZW50IG9yIE9wZW5NUCBjb25zdHJ1Y3QiLAorCQkg Z2ZjX2FzY2lpX3N0YXRlbWVudCAoU1RfT01QX0FMTE9DQVRFKSwgbG9jKTsKKyAgICAgIHJl dHVybiBmYWxzZTsKKyAgICB9CisgIGJvb2wgaGFzX2FsbG9jYXRhYmxlID0gZmFsc2U7Cisg IGJvb2wgaGFzX25vbl9hbGxvY2F0YWJsZSA9IGZhbHNlOworICBmb3IgKG4gPSBuZXdfc3Qu ZXh0Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV07IG47IG4gPSBuLT5u ZXh0KQorICAgIHsKKyAgICAgIGlmIChuLT5leHByKQorCXsKKwkgIGdmY19lcnJvciAoIlN0 cnVjdHVyZS1jb21wb25lbnQgZXhwcmVzc2lvbiBhdCAlTCBpbiAlcXMgZGlyZWN0aXZlIG5v dCIKKwkJICAgICAiIHBlcm1pdHRlZCBpbiBkZWNsYXJhdGl2ZSBkaXJlY3RpdmU7IGFzIGRp cmVjdGl2ZSAiCisJCSAgICAgImFzc29jaWF0ZWQgd2l0aCBhbiBBTExPQ0FURSBzdG10IGl0 IG11c3QgYmUgcHJlY2VkZWQgYnkgIgorCQkgICAgICJhbiBleGVjdXRhYmxlIHN0YXRlbWVu dCBvciBPcGVuTVAgY29uc3RydWN0IiwKKwkJICAgICAgJm4tPmV4cHItPndoZXJlLCBnZmNf YXNjaWlfc3RhdGVtZW50IChTVF9PTVBfQUxMT0NBVEUpKTsKKwkgIHJldHVybiBmYWxzZTsK Kwl9CisgICAgICBib29sIGFsbG9jX3B0cjsKKyAgICAgIGlmIChuLT5zeW0tPnRzLnR5cGUg PT0gQlRfQ0xBU1MgJiYgbi0+c3ltLT5hdHRyLmNsYXNzX29rKQorCWFsbG9jX3B0ciA9IChD TEFTU19EQVRBIChuLT5zeW0pLT5hdHRyLmFsbG9jYXRhYmxlCisJCSAgICAgfHwgQ0xBU1Nf REFUQSAobi0+c3ltKS0+YXR0ci5jbGFzc19wb2ludGVyKTsKKyAgICAgIGVsc2UKKwlhbGxv Y19wdHIgPSAobi0+c3ltLT5hdHRyLmFsbG9jYXRhYmxlIHx8IG4tPnN5bS0+YXR0ci5wb2lu dGVyCisJCSAgICAgfHwgbi0+c3ltLT5hdHRyLnByb2NfcG9pbnRlcik7CisgICAgICBpZiAo YWxsb2NfcHRyCisJICB8fCAobi0+c3ltLT5ucyAmJiBuLT5zeW0tPm5zLT5wcm9jX25hbWUK KwkgICAgICAmJiAobi0+c3ltLT5ucy0+cHJvY19uYW1lLT5hdHRyLmFsbG9jYXRhYmxlCisJ CSAgfHwgbi0+c3ltLT5ucy0+cHJvY19uYW1lLT5hdHRyLnBvaW50ZXIKKwkJICB8fCBuLT5z eW0tPm5zLT5wcm9jX25hbWUtPmF0dHIucHJvY19wb2ludGVyKSkpCisJaGFzX2FsbG9jYXRh YmxlID0gdHJ1ZTsKKyAgICAgIGVsc2UKKwloYXNfbm9uX2FsbG9jYXRhYmxlID0gdHJ1ZTsK KyAgICB9CisgIC8qIEFsbCBhbGxvY2F0YWJsZXMgLSBhc3N1bWUgaXQgaXMgYWxsb2NhdGVk IHdpdGggYW4gQUxMT0NBVEUgc3RtdC4gICovCisgIGlmIChoYXNfYWxsb2NhdGFibGUgJiYg IWhhc19ub25fYWxsb2NhdGFibGUpCisgICAgeworICAgICAgZ2ZjX2Vycm9yICgiJXFzIGRp cmVjdGl2ZSBhdCAlTCBhc3NvY2lhdGVkIHdpdGggYW4gQUxMT0NBVEUgc3RtdCBtdXN0IGJl ICIKKwkJICJwcmVjZWRlZCBieSBhbiBleGVjdXRhYmxlIHN0YXRlbWVudCBvciBPcGVuTVAg Y29uc3RydWN0OyAiCisJCSAibm90ZSB0aGUgdmFyaWFibGVzIGluIHRoZSBsaXN0IGFsbCBo YXZlIHRoZSBhbGxvY2F0YWJsZSBvciAiCisJCSAicG9pbnRlciBhdHRyaWJ1dGUiLCBnZmNf YXNjaWlfc3RhdGVtZW50IChTVF9PTVBfQUxMT0NBVEUpLAorCQkgbG9jKTsKKyAgICAgIHJl dHVybiBmYWxzZTsKKyAgICB9CisgIGlmICghZ2ZjX2N1cnJlbnRfbnMtPm9tcF9hbGxvY2F0 ZSkKKyAgICBnZmNfY3VycmVudF9ucy0+b21wX2FsbG9jYXRlCisgICAgICA9IG5ld19zdC5l eHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0FMTE9DQVRFXTsKKyAgZWxzZQorICAg IHsKKyAgICAgIGZvciAobiA9IGdmY19jdXJyZW50X25zLT5vbXBfYWxsb2NhdGU7IG4tPm5l eHQ7IG4gPSBuLT5uZXh0KQorCTsKKyAgICAgIG4tPm5leHQgPSBuZXdfc3QuZXh0Lm9tcF9j bGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV07CisgICAgfQorICBuZXdfc3QuZXh0 Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV0gPSBOVUxMOworICBnZmNf ZnJlZV9vbXBfY2xhdXNlcyAobmV3X3N0LmV4dC5vbXBfY2xhdXNlcyk7CisgIHJldHVybiB0 cnVlOworfQorCisKIC8qIExpa2UgbWF0Y2gsIGJ1dCBzZXQgYSBmbGFnIHNpbWRfbWF0Y2hl ZCBpZiBrZXl3b3JkIG1hdGNoZWQKICAgIGFuZCBpZiBzcGVjX29ubHksIGdvdG8gZG9fc3Bl Y19vbmx5IHdpdGhvdXQgYWN0dWFsbHkgbWF0Y2hpbmcuICAqLwogI2RlZmluZSBtYXRjaHMo a2V5d29yZCwgc3Viciwgc3QpCQkJCVwKQEAgLTg4NSw2ICs5NjIsMTEgQEAgZGVjb2RlX29t cF9kaXJlY3RpdmUgKHZvaWQpCiAgIHN3aXRjaCAoYykKICAgICB7CiAgICAgY2FzZSAnYSc6 CisgICAgICBpZiAoaW5fZXhlY19wYXJ0KQorCW1hdGNobyAoImFsbG9jYXRlIiwgZ2ZjX21h dGNoX29tcF9hbGxvY2F0ZSwgU1RfT01QX0FMTE9DQVRFX0VYRUMpOworICAgICAgZWxzZQor CW1hdGNobyAoImFsbG9jYXRlIiwgZ2ZjX21hdGNoX29tcF9hbGxvY2F0ZSwgU1RfT01QX0FM TE9DQVRFKTsKKyAgICAgIG1hdGNobyAoImFsbG9jYXRvcnMiLCBnZmNfbWF0Y2hfb21wX2Fs bG9jYXRvcnMsIFNUX09NUF9BTExPQ0FUT1JTKTsKICAgICAgIC8qIEZvciAtZm9wZW5tcC1z aW1kLCBpZ25vcmUgJ2Fzc3VtZXMnOyBub3RlIG5vIGNsYXVzZSBzdGFydHMgd2l0aCAncycu ICovCiAgICAgICBpZiAoIWZsYWdfb3Blbm1wICYmIGdmY19tYXRjaCAoImFzc3VtZXMiKSA9 PSBNQVRDSF9ZRVMpCiAJYnJlYWs7CkBAIC05MTgsNiArMTAwMCw3IEBAIGRlY29kZV9vbXBf ZGlyZWN0aXZlICh2b2lkKQogICAgICAgYnJlYWs7CiAgICAgY2FzZSAnZSc6CiAgICAgICBt YXRjaG8gKCJlcnJvciIsIGdmY19tYXRjaF9vbXBfZXJyb3IsIFNUX09NUF9FUlJPUik7Cisg ICAgICBtYXRjaG8gKCJlbmQgYWxsb2NhdG9ycyIsIGdmY19tYXRjaF9vbXBfZW9zX2Vycm9y LCBTVF9PTVBfRU5EX0FMTE9DQVRPUlMpOwogICAgICAgbWF0Y2hzICgiZW5kIGFzc3VtZSIs IGdmY19tYXRjaF9vbXBfZW9zX2Vycm9yLCBTVF9PTVBfRU5EX0FTU1VNRSk7CiAgICAgICBt YXRjaG8gKCJlbmQgYXRvbWljIiwgZ2ZjX21hdGNoX29tcF9lb3NfZXJyb3IsIFNUX09NUF9F TkRfQVRPTUlDKTsKICAgICAgIG1hdGNobyAoImVuZCBjcml0aWNhbCIsIGdmY19tYXRjaF9v bXBfZW5kX2NyaXRpY2FsLCBTVF9PTVBfRU5EX0NSSVRJQ0FMKTsKQEAgLTExNzQsNiArMTI1 Nyw5IEBAIGRlY29kZV9vbXBfZGlyZWN0aXZlICh2b2lkKQogCSAgcmV0dXJuIFNUX05PTkU7 CiAJfQogICAgIH0KKyAgaWYgKHJldCA9PSBTVF9PTVBfQUxMT0NBVEUgJiYgIWNoZWNrX29t cF9hbGxvY2F0ZV9zdG10ICgmb2xkX2xvY3VzKSkKKyAgICBnb3RvIGVycm9yX2hhbmRsaW5n OworCiAgIHN3aXRjaCAocmV0KQogICAgIHsKICAgICAvKiBTZXQgb21wX3RhcmdldF9zZWVu OyBleGNsdWRlIFNUX09NUF9ERUNMQVJFX1RBUkdFVC4KQEAgLTE3MjMsNyArMTgwOSw3IEBA IG5leHRfc3RhdGVtZW50ICh2b2lkKQogICBjYXNlIFNUX09NUF9UQVJHRVRfU0lNRDogY2Fz ZSBTVF9PTVBfVEFTS0xPT1A6IGNhc2UgU1RfT01QX1RBU0tMT09QX1NJTUQ6IFwKICAgY2Fz ZSBTVF9PTVBfTE9PUDogY2FzZSBTVF9PTVBfUEFSQUxMRUxfTE9PUDogY2FzZSBTVF9PTVBf VEVBTVNfTE9PUDogXAogICBjYXNlIFNUX09NUF9UQVJHRVRfUEFSQUxMRUxfTE9PUDogY2Fz ZSBTVF9PTVBfVEFSR0VUX1RFQU1TX0xPT1A6IFwKLSAgY2FzZSBTVF9PTVBfQVNTVU1FOiBc CisgIGNhc2UgU1RfT01QX0FMTE9DQVRFX0VYRUM6IGNhc2UgU1RfT01QX0FMTE9DQVRPUlM6 IGNhc2UgU1RfT01QX0FTU1VNRTogXAogICBjYXNlIFNUX0NSSVRJQ0FMOiBcCiAgIGNhc2Ug U1RfT0FDQ19QQVJBTExFTF9MT09QOiBjYXNlIFNUX09BQ0NfUEFSQUxMRUw6IGNhc2UgU1Rf T0FDQ19LRVJORUxTOiBcCiAgIGNhc2UgU1RfT0FDQ19EQVRBOiBjYXNlIFNUX09BQ0NfSE9T VF9EQVRBOiBjYXNlIFNUX09BQ0NfTE9PUDogXApAQCAtMTc0MSw3ICsxODI3LDcgQEAgbmV4 dF9zdGF0ZW1lbnQgKHZvaWQpCiAKICNkZWZpbmUgY2FzZV9vbXBfZGVjbCBjYXNlIFNUX09N UF9USFJFQURQUklWQVRFOiBjYXNlIFNUX09NUF9ERUNMQVJFX1NJTUQ6IFwKICAgY2FzZSBT VF9PTVBfREVDTEFSRV9UQVJHRVQ6IGNhc2UgU1RfT01QX0RFQ0xBUkVfUkVEVUNUSU9OOiBc Ci0gIGNhc2UgU1RfT01QX0RFQ0xBUkVfVkFSSUFOVDogY2FzZSBTVF9PTVBfQVNTVU1FUzog XAorICBjYXNlIFNUX09NUF9ERUNMQVJFX1ZBUklBTlQ6IGNhc2UgU1RfT01QX0FMTE9DQVRF OiBjYXNlIFNUX09NUF9BU1NVTUVTOiBcCiAgIGNhc2UgU1RfT01QX1JFUVVJUkVTOiBjYXNl IFNUX09BQ0NfUk9VVElORTogY2FzZSBTVF9PQUNDX0RFQ0xBUkUKIAogLyogQmxvY2sgZW5k IHN0YXRlbWVudHMuICBFcnJvcnMgYXNzb2NpYXRlZCB3aXRoIGludGVyY2hhbmdpbmcgdGhl c2UKQEAgLTIzNjIsNiArMjQ0OCwxMyBAQCBnZmNfYXNjaWlfc3RhdGVtZW50IChnZmNfc3Rh dGVtZW50IHN0LCBib29sIHN0cmlwX3NlbnRpbmVsKQogICAgIGNhc2UgU1RfT0FDQ19FTkRf QVRPTUlDOgogICAgICAgcCA9ICIhJEFDQyBFTkQgQVRPTUlDIjsKICAgICAgIGJyZWFrOwor ICAgIGNhc2UgU1RfT01QX0FMTE9DQVRFOgorICAgIGNhc2UgU1RfT01QX0FMTE9DQVRFX0VY RUM6CisgICAgICBwID0gIiEkT01QIEFMTE9DQVRFIjsKKyAgICAgIGJyZWFrOworICAgIGNh c2UgU1RfT01QX0FMTE9DQVRPUlM6CisgICAgICBwID0gIiEkT01QIEFMTE9DQVRPUlMiOwor ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTVF9PTVBfQVNTVU1FOgogICAgICAgcCA9ICIhJE9N UCBBU1NVTUUiOwogICAgICAgYnJlYWs7CkBAIC0yNDE2LDYgKzI1MDksOSBAQCBnZmNfYXNj aWlfc3RhdGVtZW50IChnZmNfc3RhdGVtZW50IHN0LCBib29sIHN0cmlwX3NlbnRpbmVsKQog ICAgIGNhc2UgU1RfT01QX0RPX1NJTUQ6CiAgICAgICBwID0gIiEkT01QIERPIFNJTUQiOwog ICAgICAgYnJlYWs7CisgICAgY2FzZSBTVF9PTVBfRU5EX0FMTE9DQVRPUlM6CisgICAgICBw ID0gIiEkT01QIEVORCBBTExPQ0FUT1JTIjsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgU1Rf T01QX0VORF9BU1NVTUU6CiAgICAgICBwID0gIiEkT01QIEVORCBBU1NVTUUiOwogICAgICAg YnJlYWs7CkBAIC0yOTgzLDYgKzMwNzksNyBAQCB2ZXJpZnlfc3Rfb3JkZXIgKHN0X3N0YXRl ICpwLCBnZmNfc3RhdGVtZW50IHN0LCBib29sIHNpbGVudCkKICAgICB7CiAgICAgY2FzZSBT VF9OT05FOgogICAgICAgcC0+c3RhdGUgPSBPUkRFUl9TVEFSVDsKKyAgICAgIGluX2V4ZWNf cGFydCA9IGZhbHNlOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNUX1VTRToKQEAgLTMw NTYsNiArMzE1Myw3IEBAIHZlcmlmeV9zdF9vcmRlciAoc3Rfc3RhdGUgKnAsIGdmY19zdGF0 ZW1lbnQgc3QsIGJvb2wgc2lsZW50KQogICAgIGNhc2VfZXhlY19tYXJrZXJzOgogICAgICAg aWYgKHAtPnN0YXRlIDwgT1JERVJfRVhFQykKIAlwLT5zdGF0ZSA9IE9SREVSX0VYRUM7Cisg ICAgICBpbl9leGVjX3BhcnQgPSB0cnVlOwogICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0 OgpAQCAtNTUzMiw2ICs1NjMwLDc3IEBAIHBhcnNlX29hY2NfbG9vcCAoZ2ZjX3N0YXRlbWVu dCBhY2Nfc3QpCiB9CiAKIAorLyogUGFyc2UgYW4gT3Blbk1QIGFsbG9jYXRlIGJsb2NrLCBp bmNsdWRpbmcgb3B0aW9uYWwgQUxMT0NBVE9SUworICAgZW5kIGRpcmVjdGl2ZS4gICovCisK K3N0YXRpYyBnZmNfc3RhdGVtZW50CitwYXJzZV9vcGVubXBfYWxsb2NhdGVfYmxvY2sgKGdm Y19zdGF0ZW1lbnQgb21wX3N0KQoreworICBnZmNfc3RhdGVtZW50IHN0OworICBnZmNfY29k ZSAqY3AsICpucDsKKyAgZ2ZjX3N0YXRlX2RhdGEgczsKKyAgYm9vbCBlbXB0eV9saXN0ID0g ZmFsc2U7CisgIGxvY3VzIGVtcHR5X2xpc3RfbG9jOworICBnZmNfb21wX25hbWVsaXN0ICpu X2ZpcnN0ID0gbmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxMT0NB VEVdOworCisgIGlmIChvbXBfc3QgPT0gU1RfT01QX0FMTE9DQVRFX0VYRUMKKyAgICAgICYm IG5ld19zdC5leHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0FMTE9DQVRFXS0+c3lt ID09IE5VTEwpCisgICAgeworICAgICAgZW1wdHlfbGlzdCA9IHRydWU7CisgICAgICBlbXB0 eV9saXN0X2xvYyA9IG5ld19zdC5leHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0FM TE9DQVRFXS0+d2hlcmU7CisgICAgfQorCisgIGFjY2VwdF9zdGF0ZW1lbnQgKG9tcF9zdCk7 CisKKyAgY3AgPSBnZmNfc3RhdGVfc3RhY2stPnRhaWw7CisgIHB1c2hfc3RhdGUgKCZzLCBD T01QX09NUF9TVFJVQ1RVUkVEX0JMT0NLLCBOVUxMKTsKKyAgbnAgPSBuZXdfbGV2ZWwgKGNw KTsKKyAgbnAtPm9wID0gY3AtPm9wOworICBucC0+YmxvY2sgPSBOVUxMOworCisgIHN0ID0g bmV4dF9zdGF0ZW1lbnQgKCk7CisgIHdoaWxlIChvbXBfc3QgPT0gU1RfT01QX0FMTE9DQVRF X0VYRUMgJiYgc3QgPT0gU1RfT01QX0FMTE9DQVRFX0VYRUMpCisgICAgeworICAgICAgaWYg KGVtcHR5X2xpc3QgJiYgIW5ld19zdC5leHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNU X0FMTE9DQVRFXS0+c3ltKQorCXsKKwkgIGxvY3VzICpsb2MgPSAmbmV3X3N0LmV4dC5vbXBf Y2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxMT0NBVEVdLT53aGVyZTsKKwkgIGdmY19lcnJv cl9ub3cgKCIlcyBzdGF0ZW1lbnRzIGF0ICVMIGFuZCAlTCBoYXZlIGJvdGggbm8gbGlzdCBp dGVtIGJ1dCIKKwkJCSAiIG9ubHkgb25lIG1heSIsIGdmY19hc2NpaV9zdGF0ZW1lbnQgKHN0 KSwKKwkJCSAmZW1wdHlfbGlzdF9sb2MsIGxvYyk7CisJICBlbXB0eV9saXN0ID0gZmFsc2U7 CisJfQorICAgICAgaWYgKCFuZXdfc3QuZXh0Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElT VF9BTExPQ0FURV0tPnN5bSkKKwl7CisJICBlbXB0eV9saXN0ID0gdHJ1ZTsKKwkgIGVtcHR5 X2xpc3RfbG9jID0gbmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxM T0NBVEVdLT53aGVyZTsKKwl9CisgICAgICBmb3IgKCA7IG5fZmlyc3QtPm5leHQ7IG5fZmly c3QgPSBuX2ZpcnN0LT5uZXh0KQorCTsKKyAgICAgIG5fZmlyc3QtPm5leHQgPSBuZXdfc3Qu ZXh0Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV07CisgICAgICBuZXdf c3QuZXh0Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV0gPSBOVUxMOwor ICAgICAgZ2ZjX2ZyZWVfb21wX2NsYXVzZXMgKG5ld19zdC5leHQub21wX2NsYXVzZXMpOwor CisgICAgICBhY2NlcHRfc3RhdGVtZW50IChTVF9OT05FKTsKKyAgICAgIHN0ID0gbmV4dF9z dGF0ZW1lbnQgKCk7CisgICAgfQorICBpZiAoc3QgIT0gU1RfQUxMT0NBVEUgJiYgb21wX3N0 ID09IFNUX09NUF9BTExPQ0FURV9FWEVDKQorICAgIGdmY19lcnJvcl9ub3cgKCJVbmV4cGVj dGVkICVzIGF0ICVDOyBleHBlY3RlZCBBTExPQ0FURSBvciAlcyBzdGF0ZW1lbnQiLAorCQkg ICBnZmNfYXNjaWlfc3RhdGVtZW50IChzdCksIGdmY19hc2NpaV9zdGF0ZW1lbnQgKG9tcF9z dCkpOworICBlbHNlIGlmIChzdCAhPSBTVF9BTExPQ0FURSkKKyAgICBnZmNfZXJyb3Jfbm93 ICgiVW5leHBlY3RlZCAlcyBhdCAlQzsgZXhwZWN0ZWQgQUxMT0NBVEUgc3RhdGVtZW50IGFm dGVyICVzIiwKKwkJICAgZ2ZjX2FzY2lpX3N0YXRlbWVudCAoc3QpLCBnZmNfYXNjaWlfc3Rh dGVtZW50IChvbXBfc3QpKTsKKyAgYWNjZXB0X3N0YXRlbWVudCAoc3QpOworICBwb3Bfc3Rh dGUgKCk7CisgIHN0ID0gbmV4dF9zdGF0ZW1lbnQgKCk7CisgIGlmIChvbXBfc3QgPT0gU1Rf T01QX0FMTE9DQVRPUlMgJiYgc3QgPT0gU1RfT01QX0VORF9BTExPQ0FUT1JTKQorICAgIHsK KyAgICAgIGFjY2VwdF9zdGF0ZW1lbnQgKHN0KTsKKyAgICAgIHN0ID0gbmV4dF9zdGF0ZW1l bnQgKCk7CisgICAgfQorICByZXR1cm4gc3Q7Cit9CisKKwogLyogUGFyc2UgdGhlIHN0YXRl bWVudHMgb2YgYW4gT3Blbk1QIHN0cnVjdHVyZWQgYmxvY2suICAqLwogCiBzdGF0aWMgZ2Zj X3N0YXRlbWVudApAQCAtNTY4Nyw2ICs1ODU2LDExIEBAIHBhcnNlX29tcF9zdHJ1Y3R1cmVk X2Jsb2NrIChnZmNfc3RhdGVtZW50IG9tcF9zdCwgYm9vbCB3b3Jrc2hhcmVfc3RtdHNfb25s eSkKIAkJICBwYXJzZV9mb3JhbGxfYmxvY2sgKCk7CiAJCSAgYnJlYWs7CiAKKwkJY2FzZSBT VF9PTVBfQUxMT0NBVEVfRVhFQzoKKwkJY2FzZSBTVF9PTVBfQUxMT0NBVE9SUzoKKwkJICBz dCA9IHBhcnNlX29wZW5tcF9hbGxvY2F0ZV9ibG9jayAoc3QpOworCQkgIGNvbnRpbnVlOwor CiAJCWNhc2UgU1RfT01QX0FTU1VNRToKIAkJY2FzZSBTVF9PTVBfUEFSQUxMRUw6CiAJCWNh c2UgU1RfT01QX1BBUkFMTEVMX01BU0tFRDoKQEAgLTU4MTksNiArNTk5Myw3IEBAIHN0YXRp YyBnZmNfc3RhdGVtZW50CiBwYXJzZV9leGVjdXRhYmxlIChnZmNfc3RhdGVtZW50IHN0KQog ewogICBpbnQgY2xvc2VfZmxhZzsKKyAgaW5fZXhlY19wYXJ0ID0gdHJ1ZTsKIAogICBpZiAo c3QgPT0gU1RfTk9ORSkKICAgICBzdCA9IG5leHRfc3RhdGVtZW50ICgpOwpAQCAtNTkyOSw2 ICs2MTA0LDExIEBAIHBhcnNlX2V4ZWN1dGFibGUgKGdmY19zdGF0ZW1lbnQgc3QpCiAJICBw YXJzZV9vYWNjX3N0cnVjdHVyZWRfYmxvY2sgKHN0KTsKIAkgIGJyZWFrOwogCisJY2FzZSBT VF9PTVBfQUxMT0NBVEVfRVhFQzoKKwljYXNlIFNUX09NUF9BTExPQ0FUT1JTOgorCSAgc3Qg PSBwYXJzZV9vcGVubXBfYWxsb2NhdGVfYmxvY2sgKHN0KTsKKwkgIGNvbnRpbnVlOworCiAJ Y2FzZSBTVF9PTVBfQVNTVU1FOgogCWNhc2UgU1RfT01QX1BBUkFMTEVMOgogCWNhc2UgU1Rf T01QX1BBUkFMTEVMX01BU0tFRDoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3Jlc29sdmUu Y2MgYi9nY2MvZm9ydHJhbi9yZXNvbHZlLmNjCmluZGV4IDgzZTQ1ZjFiNjkzLi43NWQ2MWEx ODg1NiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYworKysgYi9nY2MvZm9y dHJhbi9yZXNvbHZlLmNjCkBAIC0xMTA0NCw2ICsxMTA0NCw4IEBAIGdmY19yZXNvbHZlX2Js b2NrcyAoZ2ZjX2NvZGUgKmIsIGdmY19uYW1lc3BhY2UgKm5zKQogCWNhc2UgRVhFQ19PQUND X0VOVEVSX0RBVEE6CiAJY2FzZSBFWEVDX09BQ0NfRVhJVF9EQVRBOgogCWNhc2UgRVhFQ19P QUNDX1JPVVRJTkU6CisJY2FzZSBFWEVDX09NUF9BTExPQ0FURToKKwljYXNlIEVYRUNfT01Q X0FMTE9DQVRPUlM6CiAJY2FzZSBFWEVDX09NUF9BU1NVTUU6CiAJY2FzZSBFWEVDX09NUF9D UklUSUNBTDoKIAljYXNlIEVYRUNfT01QX0RJU1RSSUJVVEU6CkBAIC0xMjcxMiw2ICsxMjcx NCw4IEBAIHN0YXJ0OgogCSAgZ2ZjX3Jlc29sdmVfb2FjY19kaXJlY3RpdmUgKGNvZGUsIG5z KTsKIAkgIGJyZWFrOwogCisJY2FzZSBFWEVDX09NUF9BTExPQ0FURToKKwljYXNlIEVYRUNf T01QX0FMTE9DQVRPUlM6CiAJY2FzZSBFWEVDX09NUF9BU1NVTUU6CiAJY2FzZSBFWEVDX09N UF9BVE9NSUM6CiAJY2FzZSBFWEVDX09NUF9CQVJSSUVSOgpAQCAtMTgwMDcsNiArMTgwMTEs OCBAQCByZXNvbHZlX2NvZGVzIChnZmNfbmFtZXNwYWNlICpucykKICAgZ2ZjX3Jlc29sdmVf b2FjY19kZWNsYXJlIChucyk7CiAgIGdmY19yZXNvbHZlX29hY2Nfcm91dGluZXMgKG5zKTsK ICAgZ2ZjX3Jlc29sdmVfb21wX2xvY2FsX3ZhcnMgKG5zKTsKKyAgaWYgKG5zLT5vbXBfYWxs b2NhdGUpCisgICAgZ2ZjX3Jlc29sdmVfb21wX2FsbG9jYXRlIChucywgbnMtPm9tcF9hbGxv Y2F0ZSk7CiAgIGdmY19yZXNvbHZlX2NvZGUgKG5zLT5jb2RlLCBucyk7CiAKICAgYml0bWFw X29ic3RhY2tfcmVsZWFzZSAoJmxhYmVsc19vYnN0YWNrKTsKZGlmZiAtLWdpdCBhL2djYy9m b3J0cmFuL3N0LmNjIGIvZ2NjL2ZvcnRyYW4vc3QuY2MKaW5kZXggNjU3YmM5ZGVlYmYuLjU1 ZGViY2E4ZTBiIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9zdC5jYworKysgYi9nY2MvZm9y dHJhbi9zdC5jYwpAQCAtMjE0LDYgKzIxNCw4IEBAIGdmY19mcmVlX3N0YXRlbWVudCAoZ2Zj X2NvZGUgKnApCiAgICAgY2FzZSBFWEVDX09BQ0NfRU5URVJfREFUQToKICAgICBjYXNlIEVY RUNfT0FDQ19FWElUX0RBVEE6CiAgICAgY2FzZSBFWEVDX09BQ0NfUk9VVElORToKKyAgICBj YXNlIEVYRUNfT01QX0FMTE9DQVRFOgorICAgIGNhc2UgRVhFQ19PTVBfQUxMT0NBVE9SUzoK ICAgICBjYXNlIEVYRUNfT01QX0FTU1VNRToKICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzoK ICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTDoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3Ry YW5zLW9wZW5tcC5jYyBiL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYwppbmRleCBjNjZi ZWRkOWY3YS4uNDJiNjA4ZjNkMzYgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLW9w ZW5tcC5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKQEAgLTI3NDgsMTEg KzI3NDgsMTEgQEAgZ2ZjX3RyYW5zX29tcF9jbGF1c2VzIChzdG10YmxvY2tfdCAqYmxvY2ss IGdmY19vbXBfY2xhdXNlcyAqY2xhdXNlcywKIAkJICAgIHRyZWUgbm9kZSA9IGJ1aWxkX29t cF9jbGF1c2UgKGlucHV0X2xvY2F0aW9uLAogCQkJCQkJICBPTVBfQ0xBVVNFX0FMTE9DQVRF KTsKIAkJICAgIE9NUF9DTEFVU0VfREVDTCAobm9kZSkgPSB0OwotCQkgICAgaWYgKG4tPmV4 cHIpCisJCSAgICBpZiAobi0+dTIuYWxsb2NhdG9yKQogCQkgICAgICB7CiAJCQl0cmVlIGFs bG9jYXRvcl87CiAJCQlnZmNfaW5pdF9zZSAoJnNlLCBOVUxMKTsKLQkJCWdmY19jb252X2V4 cHIgKCZzZSwgbi0+ZXhwcik7CisJCQlnZmNfY29udl9leHByICgmc2UsIG4tPnUyLmFsbG9j YXRvcik7CiAJCQlhbGxvY2F0b3JfID0gZ2ZjX2V2YWx1YXRlX25vdyAoc2UuZXhwciwgYmxv Y2spOwogCQkJT01QX0NMQVVTRV9BTExPQ0FURV9BTExPQ0FUT1IgKG5vZGUpID0gYWxsb2Nh dG9yXzsKIAkJICAgICAgfQpAQCAtNjg2MSw2ICs2ODYxLDggQEAgZ2ZjX3NwbGl0X29tcF9j bGF1c2VzIChnZmNfY29kZSAqY29kZSwKIAkJCSAgICAgcCA9IGdmY19nZXRfb21wX25hbWVs aXN0ICgpOwogCQkJICAgICBwLT5zeW0gPSBhbGxvY19ubC0+c3ltOwogCQkJICAgICBwLT5l eHByID0gYWxsb2NfbmwtPmV4cHI7CisJCQkgICAgIHAtPnUuYWxpZ24gPSBhbGxvY19ubC0+ dS5hbGlnbjsKKwkJCSAgICAgcC0+dTIuYWxsb2NhdG9yID0gYWxsb2NfbmwtPnUyLmFsbG9j YXRvcjsKIAkJCSAgICAgcC0+d2hlcmUgPSBhbGxvY19ubC0+d2hlcmU7CiAJCQkgICAgIGlm IChjbGF1c2VzYVtpXS5saXN0c1tPTVBfTElTVF9BTExPQ0FURV0gPT0gTlVMTCkKIAkJCSAg ICAgICB7CkBAIC03OTEyLDYgKzc5MTQsMTEgQEAgZ2ZjX3RyYW5zX29tcF9kaXJlY3RpdmUg KGdmY19jb2RlICpjb2RlKQogewogICBzd2l0Y2ggKGNvZGUtPm9wKQogICAgIHsKKyAgICBj YXNlIEVYRUNfT01QX0FMTE9DQVRFOgorICAgIGNhc2UgRVhFQ19PTVBfQUxMT0NBVE9SUzoK KyAgICAgIHNvcnJ5ICgiJTwhJE9NUCAlcyU+IG5vdCB5ZXQgc3VwcG9ydGVkIiwKKwkgICAg IGNvZGUtPm9wID09IEVYRUNfT01QX0FMTE9DQVRFID8gIkFMTE9DQVRFIiA6ICJBTExPQ0FU T1JTIik7CisgICAgICByZXR1cm4gTlVMTF9UUkVFOwogICAgIGNhc2UgRVhFQ19PTVBfQVNT VU1FOgogICAgICAgcmV0dXJuIGdmY190cmFuc19vbXBfYXNzdW1lIChjb2RlKTsKICAgICBj YXNlIEVYRUNfT01QX0FUT01JQzoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLmNj IGIvZ2NjL2ZvcnRyYW4vdHJhbnMuY2MKaW5kZXggMGIzMmI2ODk2Y2QuLjdhZDg1YWVlOWU3 IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy5jYworKysgYi9nY2MvZm9ydHJhbi90 cmFucy5jYwpAQCAtMjQ1Myw2ICsyNDUzLDggQEAgdHJhbnNfY29kZSAoZ2ZjX2NvZGUgKiBj b2RlLCB0cmVlIGNvbmQpCiAJICByZXMgPSBnZmNfdHJhbnNfZHRfZW5kIChjb2RlKTsKIAkg IGJyZWFrOwogCisJY2FzZSBFWEVDX09NUF9BTExPQ0FURToKKwljYXNlIEVYRUNfT01QX0FM TE9DQVRPUlM6CiAJY2FzZSBFWEVDX09NUF9BU1NVTUU6CiAJY2FzZSBFWEVDX09NUF9BVE9N SUM6CiAJY2FzZSBFWEVDX09NUF9CQVJSSUVSOgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTIuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9nb21wL2FsbG9jYXRlLTIuZjkwCmluZGV4IDY1N2ZmNDRkMDIzLi5jYzgzYjVl ZGJjZSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9j YXRlLTIuZjkwCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0 ZS0yLmY5MApAQCAtMjUsMTEgKzI1LDExIEBAIHN1YnJvdXRpbmUgZm9vKHgpCiAgIHg9Mwog ICAhJG9tcCBlbmQgcGFyYWxsZWwKIAotICAhJG9tcCBwYXJhbGxlbCBwcml2YXRlICh4KSBh bGxvY2F0ZSAoeCkgYWxsb2NhdGUgKHgpICEgeyBkZy13YXJuaW5nICIneCcgYXBwZWFycyBt b3JlIHRoYW4gb25jZSBpbiAnYWxsb2NhdGUnIGNsYXVzZXMgYXQgLjEuIiB9CisgICEkb21w IHBhcmFsbGVsIHByaXZhdGUgKHgpIGFsbG9jYXRlICh4KSBhbGxvY2F0ZSAoeCkgISB7IGRn LXdhcm5pbmcgIid4JyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluICdhbGxvY2F0ZScgYXQg LjEuIiB9CiAgIHg9NAogICAhJG9tcCBlbmQgcGFyYWxsZWwKIAotICAhJG9tcCBwYXJhbGxl bCBwcml2YXRlICh4KSBhbGxvY2F0ZSAoeCwgeCkgISB7IGRnLXdhcm5pbmcgIid4JyBhcHBl YXJzIG1vcmUgdGhhbiBvbmNlIGluICdhbGxvY2F0ZScgY2xhdXNlcyBhdCAuMS4iIH0gCisg ICEkb21wIHBhcmFsbGVsIHByaXZhdGUgKHgpIGFsbG9jYXRlICh4LCB4KSAhIHsgZGctd2Fy bmluZyAiJ3gnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gJ2FsbG9jYXRlJyBhdCAuMS4i IH0gCiAgIHg9NQogICAhJG9tcCBlbmQgcGFyYWxsZWwKIApkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTQuZjkwIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTQuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5hMmRjZjEwNWVlMQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS00LmY5MApAQCAtMCwwICsx LDU0IEBACittb2R1bGUgbXlfb21wX2xpYgorICB1c2UgaXNvX2NfYmluZGluZywgb25seTog Y19pbnRwdHJfdAorICAhdXNlIG9tcF9saWIKKyAgaW1wbGljaXQgbm9uZQorICAgICAgICBp bnRlZ2VyLCBwYXJhbWV0ZXIgOjogb21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCA9IGNfaW50 cHRyX3QKKworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tp bmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbnVsbF9hbGxvY2F0 b3IgPSAwCisKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9r aW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2RlZmF1bHRfbWVt X2FsbG9jID0gMQorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxl X2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbGFyZ2VfY2Fw X21lbV9hbGxvYyA9IDIKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hh bmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2NvbnN0 X21lbV9hbGxvYyA9IDMKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hh bmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2hpZ2hf YndfbWVtX2FsbG9jID0gNAorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3Jf aGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbG93 X2xhdF9tZW1fYWxsb2MgPSA1CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRv cl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9j Z3JvdXBfbWVtX2FsbG9jID0gNgorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0 b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBf cHRlYW1fbWVtX2FsbG9jID0gNworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0 b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBf dGhyZWFkX21lbV9hbGxvYyA9IDgKK2VuZCBtb2R1bGUgbXlfb21wX2xpYgorCitzdWJyb3V0 aW5lIG9uZShuLCBteV9hbGxvYykKKyAgdXNlIG15X29tcF9saWIKKyAgaW1wbGljaXQgbm9u ZQoraW50ZWdlciA6OiBuCitpbnRlZ2VyKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksIGludGVudChpbikgOjogbXlfYWxsb2MKKworIXN0YWNrIHZhcmlhYmxlczoKK2ludGVn ZXIgOjogYSxiLGMobiksZCg1KSxlKDIpCishJG9tcCBhbGxvY2F0ZShhKSAgICEgeyBkZy1l cnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0 IHN1cHBvcnRlZCIgfQorISRvbXAgYWxsb2NhdGUgKCBiICwgYyApIGFsaWduICggMzIpIGFs bG9jYXRvciAobXlfYWxsb2MpCishJG9tcCBhbGxvY2F0ZSAoZCkgYWxpZ24oIDEyOCApCish JG9tcCBhbGxvY2F0ZSggICBlICkgYWxsb2NhdG9yKCBvbXBfaGlnaF9id19tZW1fYWxsb2Mg KQorCishc2F2ZWQgdmFycworaW50ZWdlciwgc2F2ZSA6OiBrLGwsbSg1KSxyKDIpCishJG9t cCBhbGxvY2F0ZShrKSAgYWxpZ24oMTYpICwgYWxsb2NhdG9yIChvbXBfbGFyZ2VfY2FwX21l bV9hbGxvYykKKyEkb21wIGFsbG9jYXRlICggbCApIGFsbG9jYXRvciAob21wX2xhcmdlX2Nh cF9tZW1fYWxsb2MpICwgYWxpZ24gKCAzMikKKyEkb21wIGFsbG9jYXRlIChtKSBhbGlnbigg MTI4ICksYWxsb2NhdG9yKCBvbXBfaGlnaF9id19tZW1fYWxsb2MgKQorISRvbXAgYWxsb2Nh dGUoICAgciApIGFsbG9jYXRvciggb21wX2hpZ2hfYndfbWVtX2FsbG9jICkKKworIWNvbW1v biAvYmxvY2svCitpbnRlZ2VyIDo6IHEseCx5KDIpLHooNSkKK2NvbW1vbiAvY29tMS8gcSx4 Citjb21tb24gL2NvbTIvIHksegorISRvbXAgYWxsb2NhdGUgKCAvIGNvbTEvKSBhbGlnbigg MTI4ICkgYWxsb2NhdG9yKCBvbXBfaGlnaF9id19tZW1fYWxsb2MgKQorISRvbXAgYWxsb2Nh dGUoL2NvbTIgLyApIGFsbG9jYXRvciggb21wX2hpZ2hfYndfbWVtX2FsbG9jICkKK2VuZApk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTUu ZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTUuZjkwCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iZjljNzgxZGNjNQotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0 ZS01LmY5MApAQCAtMCwwICsxLDkzIEBACittb2R1bGUgbXlfb21wX2xpYgorICB1c2UgaXNv X2NfYmluZGluZywgb25seTogY19pbnRwdHJfdAorICAhdXNlIG9tcF9saWIKKyAgaW1wbGlj aXQgbm9uZQorICAgICAgICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogb21wX2FsbG9jYXRvcl9o YW5kbGVfa2luZCA9IGNfaW50cHRyX3QKKworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9h bGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6 OiBvbXBfbnVsbF9hbGxvY2F0b3IgPSAwCisKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBf YWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIg Ojogb21wX2RlZmF1bHRfbWVtX2FsbG9jID0gMQorICAgICAgICBpbnRlZ2VyIChraW5kPW9t cF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRl ciA6OiBvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYyA9IDIKKyAgICAgICAgaW50ZWdlciAoa2lu ZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJh bWV0ZXIgOjogb21wX2NvbnN0X21lbV9hbGxvYyA9IDMKKyAgICAgICAgaW50ZWdlciAoa2lu ZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJh bWV0ZXIgOjogb21wX2hpZ2hfYndfbWVtX2FsbG9jID0gNAorICAgICAgICBpbnRlZ2VyIChr aW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBh cmFtZXRlciA6OiBvbXBfbG93X2xhdF9tZW1fYWxsb2MgPSA1CisgICAgICAgIGludGVnZXIg KGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAg cGFyYW1ldGVyIDo6IG9tcF9jZ3JvdXBfbWVtX2FsbG9jID0gNgorICAgICAgICBpbnRlZ2Vy IChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAg IHBhcmFtZXRlciA6OiBvbXBfcHRlYW1fbWVtX2FsbG9jID0gNworICAgICAgICBpbnRlZ2Vy IChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAg IHBhcmFtZXRlciA6OiBvbXBfdGhyZWFkX21lbV9hbGxvYyA9IDgKKyAgdHlwZSB0CisgICAg aW50ZWdlciA6OiBhCisgIGVuZCB0eXBlIHQKK2VuZCBtb2R1bGUgbXlfb21wX2xpYgorCitz dWJyb3V0aW5lIHplcm8oKQorICAhJG9tcCBhc3N1bWVzIGFic2VudCAoYWxsb2NhdG9ycykK KworICAhJG9tcCBhc3N1bWUgYWJzZW50IChhbGxvY2F0b3JzKQorICAhJG9tcCBlbmQgYXNz dW1lCitlbmQKKworc3Vicm91dGluZSB0d28oYyx4Mix5MikKKyAgdXNlIG15X29tcF9saWIK KyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBhLCBiKDopLCBj KDosOikKKyAgdHlwZSh0KSwgYWxsb2NhdGFibGUgOjogeDEKKyAgdHlwZSh0KSwgcG9pbnRl ciA6OiB4Mig6KQorICBjbGFzcyh0KSwgYWxsb2NhdGFibGUgOjogeTEKKyAgY2xhc3ModCks IHBvaW50ZXIgOjogeTIoOikKKworICAhJG9tcCBmbHVzaCAgISBzb21lIGV4ZWN1dGFibGUg c3RhdGVtZW50CisgICEkb21wIGFsbG9jYXRlKGEpICAhIHsgZGctbWVzc2FnZSAibm90IHll dCBzdXBwb3J0ZWQiIH0KKyAgYWxsb2NhdGUoYSxiKDQpLGMoMyw0KSkKKyAgZGVhbGxvY2F0 ZShhLGIsYykKKworICAhJG9tcCBhbGxvY2F0ZSh4MSx5MSx4Mix5MikgICEgeyBkZy1tZXNz YWdlICJub3QgeWV0IHN1cHBvcnRlZCIgfQorICBhbGxvY2F0ZSh4MSx5MSx4Mig1KSx5Mig1 KSkKKyAgZGVhbGxvY2F0ZSh4MSx5MSx4Mix5MikKKworICAhJG9tcCBhbGxvY2F0ZShiLGEp IGFsaWduICggMTI4ICkgICEgeyBkZy1tZXNzYWdlICJub3QgeWV0IHN1cHBvcnRlZCIgfQor ICAhJG9tcCBhbGxvY2F0ZSBhbGlnbiAoIDY0ICkKKyAgYWxsb2NhdGUoYSxiKDQpLGMoMyw0 KSkKKyAgZGVhbGxvY2F0ZShhLGIsYykKK2VuZAorCitzdWJyb3V0aW5lIHRocmVlKGMpCisg IHVzZSBteV9vbXBfbGliCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciA6OiBxCisgIGlu dGVnZXIsIGFsbG9jYXRhYmxlIDo6IGEsIGIoOiksIGMoOiw6KQorCisgIGNhbGwgZm9vKCkg ICEgZXhlY3V0YWJsZSBzdG10CisgICEkb21wIGFsbG9jYXRlIGFsbG9jYXRvciggb21wX2xh cmdlX2NhcF9tZW1fYWxsb2MgKSAsIGFsaWduKDY0KSAgISB7IGRnLW1lc3NhZ2UgIm5vdCB5 ZXQgc3VwcG9ydGVkIiB9CisgICEkb21wIGFsbG9jYXRlKGIpIGFsbG9jYXRvciggb21wX2hp Z2hfYndfbWVtX2FsbG9jICkKKyAgISRvbXAgYWxsb2NhdGUoYykgYWxsb2NhdG9yKCBvbXBf aGlnaF9id19tZW1fYWxsb2MgKQorICBhbGxvY2F0ZShhLGIoNCksYygzLDQpKQorICBkZWFs bG9jYXRlKGEsYixjKQorCisgIGJsb2NrCisgICAgcSA9IDUgICEgZXhlY3V0YWJsZSBzdG10 CisgICAgISRvbXAgYWxsb2NhdGUoYSkgYWxpZ24oNjQpICAhIHsgZGctbWVzc2FnZSAibm90 IHlldCBzdXBwb3J0ZWQiIH0KKyAgICAhJG9tcCBhbGxvY2F0ZShiKSBhbGxvY2F0b3IoIG9t cF9oaWdoX2J3X21lbV9hbGxvYyApLCBhbGlnbigzMikKKyAgICAhJG9tcCBhbGxvY2F0ZShj KSBhbGxvY2F0b3IoIG9tcF90aHJlYWRfbWVtX2FsbG9jICkKKyAgICBhbGxvY2F0ZShhLGIo NCksYygzLDQpKQorICAgIGRlYWxsb2NhdGUoYSxiLGMpCisgIGVuZCBibG9jaworICBjYWxs IGlubmVyCitjb250YWlucworICBzdWJyb3V0aW5lIGlubmVyCisgICAgY2FsbCBmb28oKSAg ISBleGVjdXRhYmxlIHN0bXQKKyAgICAhJG9tcCBhbGxvY2F0ZShhKSBhbGlnbig2NCkgICEg eyBkZy1tZXNzYWdlICJub3QgeWV0IHN1cHBvcnRlZCIgfQorICAgICEkb21wIGFsbG9jYXRl KGIpIGFsbG9jYXRvciggb21wX2hpZ2hfYndfbWVtX2FsbG9jICksIGFsaWduKDMyKQorICAg ICEkb21wIGFsbG9jYXRlKGMpIGFsbG9jYXRvciggb21wX3RocmVhZF9tZW1fYWxsb2MgKQor ICAgIGFsbG9jYXRlKGEsYig0KSxjKDMsNCkpCisgICAgZGVhbGxvY2F0ZShhLGIsYykKKyAg ZW5kIHN1YnJvdXRpbmUgaW5uZXIKK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTYuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb21wL2FsbG9jYXRlLTYuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi43M2U1YmJjZjcxYgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS02LmY5MApAQCAtMCwwICsxLDEwMyBAQAor bW9kdWxlIG15X29tcF9saWIKKyAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNfaW50cHRy X3QKKyAgIXVzZSBvbXBfbGliCisgIGltcGxpY2l0IG5vbmUKKyAgICAgICAgaW50ZWdlciwg cGFyYW1ldGVyIDo6IG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQgPSBjX2ludHB0cl90CisK KyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgor ICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX251bGxfYWxsb2NhdG9yID0gMAor CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYK KyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9kZWZhdWx0X21lbV9hbGxvYyA9 IDEKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwg JgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2xhcmdlX2NhcF9tZW1fYWxs b2MgPSAyCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9jb25zdF9tZW1fYWxs b2MgPSAzCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9oaWdoX2J3X21lbV9h bGxvYyA9IDQKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9r aW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2xvd19sYXRfbWVt X2FsbG9jID0gNQorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxl X2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfY2dyb3VwX21l bV9hbGxvYyA9IDYKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRs ZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX3B0ZWFtX21l bV9hbGxvYyA9IDcKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRs ZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX3RocmVhZF9t ZW1fYWxsb2MgPSA4CisgICB0eXBlIHQKKyAgICAgaW50ZWdlcixhbGxvY2F0YWJsZSA6OiBh CisgICAgIGludGVnZXIscG9pbnRlciA6OiBiKDosOikKKyAgIGVuZCB0eXBlIHQKK2VuZCBt b2R1bGUgbXlfb21wX2xpYgorCitzdWJyb3V0aW5lIHplcm8oKQorICAhJG9tcCBhc3N1bWVz IGFic2VudCAoYWxsb2NhdGUpICAhIHsgZGctZXJyb3IgIkludmFsaWQgJ0FMTE9DQVRFJyBk aXJlY3RpdmUgYXQgLjEuIGluIEFCU0VOVCBjbGF1c2U6IGRlY2xhcmF0aXZlLCBpbmZvcm1h dGlvbmFsIGFuZCBtZXRhIGRpcmVjdGl2ZXMgbm90IHBlcm1pdHRlZCIgfQorCisgICEkb21w IGFzc3VtZSBhYnNlbnQgKGFsbG9jYXRlKSAgISB7IGRnLWVycm9yICJJbnZhbGlkICdBTExP Q0FURScgZGlyZWN0aXZlIGF0IC4xLiBpbiBBQlNFTlQgY2xhdXNlOiBkZWNsYXJhdGl2ZSwg aW5mb3JtYXRpb25hbCBhbmQgbWV0YSBkaXJlY3RpdmVzIG5vdCBwZXJtaXR0ZWQiIH0KKyAg ISEkb21wIGVuZCBhc3N1bWUKK2VuZAorCitzdWJyb3V0aW5lIGFsbG9jKGMseDIseTIpCisg IHVzZSBteV9vbXBfbGliCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciwgYWxsb2NhdGFi bGUgOjogYSwgYig6KSwgYyg6LDopCisgIHR5cGUodCkgOjogeDEseDIKKyAgY2xhc3ModCkg OjogeTEseTIKKyAgYWxsb2NhdGFibGUgOjogeDEsIHkxCisKKyAgISRvbXAgZmx1c2ggICEg c29tZSBleGVjdXRhYmxlIHN0YXRlbWVudAorCisgICEkb21wIGFsbG9jYXRlKHgyJWEseDIl Yix5MiVhLHkyJWIpIGFsbG9jYXRvcihvbXBfcHRlYW1fbWVtX2FsbG9jKSBhbGlnbig2NCkg ICEgeyBkZy1lcnJvciAiU29ycnksIHN0cnVjdHVyZS1lbGVtZW50IGxpc3QgaXRlbSBhdCAu MS4gaW4gQUxMT0NBVEUgZGlyZWN0aXZlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiB9CisgIGFs bG9jYXRlKHgyJWEseDIlYigzLDQpLHkyJWEseTIlYigzLDQpKQorCisgICEkb21wIGFsbG9j YXRlKGIoMykpIGFsaWduICggNjQgKSAhIHsgZGctZXJyb3IgIlVuZXhwZWN0ZWQgZXhwcmVz c2lvbiBhcyBsaXN0IGl0ZW0gYXQgLjEuIGluIEFMTE9DQVRFIGRpcmVjdGl2ZSIgfQorICBh bGxvY2F0ZShiKDMpKQorZW5kCisKK3N1YnJvdXRpbmUgb25lKG4sIG15X2FsbG9jKQorICB1 c2UgbXlfb21wX2xpYgorICBpbXBsaWNpdCBub25lCitpbnRlZ2VyIDo6IG4KK2ludGVnZXIo a2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgaW50ZW50KGluKSA6OiBteV9hbGxv YworCitpbnRlZ2VyIDo6IGEsYixjKG4pLGQoNSksZSgyKQoraW50ZWdlciwgc2F2ZSA6OiBr LGwsbSg1KSxyKDIpCitpbnRlZ2VyIDo6IHEseCx5KDIpLHooNSkKK2NvbW1vbiAvY29tMS8g cSx4Citjb21tb24gL2NvbTIvIHksegoraW50ZWdlciwgYWxsb2NhdGFibGUgOjogYWxsb2MK K2ludGVnZXIsIHBvaW50ZXIgOjogcHRyCisKKyEkb21wIGFsbG9jYXRlKHEpICEgeyBkZy1l cnJvciAiJ3EnIGF0IC4xLiBpcyBwYXJ0IG9mIHRoZSBjb21tb24gYmxvY2sgJy9jb20xLycg YW5kIG1heSBvbmx5IGJlIHNwZWNpZmljZWQgaW1wbGljaXRseSB2aWEgdGhlIG5hbWVkIGNv bW1vbiBibG9jayIgfQorCishJG9tcCBhbGxvY2F0ZShkKDopKSAhIHsgZGctZXJyb3IgIlVu ZXhwZWN0ZWQgZXhwcmVzc2lvbiBhcyBsaXN0IGl0ZW0gYXQgLjEuIGluIEFMTE9DQVRFIGRp cmVjdGl2ZSIgfQorISRvbXAgYWxsb2NhdGUoYSkgYWxpZ24oNCksIGFsaWduKDQpICAhIHsg ZGctZXJyb3IgIkR1cGxpY2F0ZWQgJ2FsaWduJyBjbGF1c2UiIH0KKyEkb21wIGFsbG9jYXRl KCAgIGUgKSBhbGxvY2F0b3IoIG9tcF9oaWdoX2J3X21lbV9hbGxvYyApLCBhbGlnbigzMiks YWxsb2NhdG9yKCBvbXBfaGlnaF9id19tZW1fYWxsb2MgKSAgISB7IGRnLWVycm9yICJEdXBs aWNhdGVkICdhbGxvY2F0b3InIGNsYXVzZSIgfQorCishJG9tcCBhbGxvY2F0ZSBhbGlnbigz MikgISB7IGRnLWVycm9yICInIS5PTVAgQUxMT0NBVEUnIGRpcmVjdGl2ZSBhdCAuMS4gbXVz dCBlaXRoZXIgaGF2ZSBhIHZhcmlhYmxlIGFyZ3VtZW50IG9yLCBpZiBhc3NvY2lhdGVkIHdp dGggYW4gQUxMT0NBVEUgc3RtdCwgbXVzdCBiZSBwcmVjZWRlZCBieSBhbiBleGVjdXRhYmxl IHN0YXRlbWVudCBvciBPcGVuTVAgY29uc3RydWN0IiB9CisKKyEkb21wIGFsbG9jYXRlKGFs bG9jKSBhbGlnbigxMjgpICAhIHsgZGctZXJyb3IgIichLk9NUCBBTExPQ0FURScgZGlyZWN0 aXZlIGF0IC4xLiBhc3NvY2lhdGVkIHdpdGggYW4gQUxMT0NBVEUgc3RtdCBtdXN0IGJlIHBy ZWNlZGVkIGJ5IGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IG9yIE9wZW5NUCBjb25zdHJ1Y3Q7 IG5vdGUgdGhlIHZhcmlhYmxlcyBpbiB0aGUgbGlzdCBhbGwgaGF2ZSB0aGUgYWxsb2NhdGFi bGUgb3IgcG9pbnRlciBhdHRyaWJ1dGUiIH0KKyEkb21wIGFsbG9jYXRlKHB0cikgYWxpZ24o MTI4KSAgISB7IGRnLWVycm9yICInIS5PTVAgQUxMT0NBVEUnIGRpcmVjdGl2ZSBhdCAuMS4g YXNzb2NpYXRlZCB3aXRoIGFuIEFMTE9DQVRFIHN0bXQgbXVzdCBiZSBwcmVjZWRlZCBieSBh biBleGVjdXRhYmxlIHN0YXRlbWVudCBvciBPcGVuTVAgY29uc3RydWN0OyBub3RlIHRoZSB2 YXJpYWJsZXMgaW4gdGhlIGxpc3QgYWxsIGhhdmUgdGhlIGFsbG9jYXRhYmxlIG9yIHBvaW50 ZXIgYXR0cmlidXRlIiB9CisKKyEkb21wIGFsbG9jYXRlKGUpIGFsbG9jYXRlKG9tcF90aHJl YWRfbWVtX2FsbG9jKSAgISB7IGRnLWVycm9yICJFeHBlY3RlZCBBTElHTiBvciBBTExPQ0FU T1IgY2xhdXNlIiB9CitlbmQKKworc3Vicm91dGluZSB0d28oKQorICBpbnRlZ2VyLCBhbGxv Y2F0YWJsZSA6OiBhLGIsYworCisgIGNhbGwgZm9vKCkKKyAgISRvbXAgYWxsb2NhdGUoYSkK KyAgYSA9IDUgICEgeyBkZy1lcnJvciAiVW5leHBlY3RlZCBhc3NpZ25tZW50IGF0IC4xLjsg ZXhwZWN0ZWQgQUxMT0NBVEUgb3IgIS5PTVAgQUxMT0NBVEUgc3RhdGVtZW50IiB9CisKKyAg ISRvbXAgYWxsb2NhdGUgICEgeyBkZy1lcnJvciAiIS5PTVAgQUxMT0NBVEUgc3RhdGVtZW50 cyBhdCAuMS4gYW5kIC4yLiBoYXZlIGJvdGggbm8gbGlzdCBpdGVtIGJ1dCBvbmx5IG9uZSBt YXkiIH0KKyAgISRvbXAgYWxsb2NhdGUoYikKKyAgISRvbXAgYWxsb2NhdGUgICEgeyBkZy1l cnJvciAiIS5PTVAgQUxMT0NBVEUgc3RhdGVtZW50cyBhdCAuMS4gYW5kIC4yLiBoYXZlIGJv dGggbm8gbGlzdCBpdGVtIGJ1dCBvbmx5IG9uZSBtYXkiIH0KKyAgIGFsbG9jYXRlKGEsYixj KQorCisgICEkb21wIGFsbG9jYXRlCisgICBhbGxvY2F0ZShhLGIsYykgICEgYWxsb2NhdGUg aXMgbm8gYmxvY2sgY29uc3RydWN0LCBoZW5jZToKKyAgISRvbXAgZW5kIGFsbG9jYXRlICAh IHsgZGctZXJyb3IgIlVuY2xhc3NpZmlhYmxlIE9wZW5NUCBkaXJlY3RpdmUiIH0KKworICAh JG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlKGFsaWduKDY0KSA6IGEsIGIpCisgICEkb21wIGFs bG9jYXRvcnMgYWxsb2NhdGUoYWxpZ24oMTI4KSA6IGMpICAhIHsgZGctZXJyb3IgIlVuZXhw ZWN0ZWQgIS5PTVAgQUxMT0NBVE9SUyBhdCAuMS47IGV4cGVjdGVkIEFMTE9DQVRFIHN0YXRl bWVudCBhZnRlciAhLk9NUCBBTExPQ0FUT1JTIiB9CisgICBhbGxvY2F0ZShhLGIsYykKK2Vu ZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRl LTcuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTcuZjkw Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iODU2MjA0ZDQ4YQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxv Y2F0ZS03LmY5MApAQCAtMCwwICsxLDIzMSBAQAorISB7IGRnLWFkZGl0aW9uYWwtb3B0aW9u cyAiLWZtYXgtZXJyb3JzPTEwMDAiIH0KK21vZHVsZSBteV9vbXBfbGliCisgIHVzZSBpc29f Y19iaW5kaW5nLCBvbmx5OiBjX2ludHB0cl90CisgICF1c2Ugb21wX2xpYgorICBpbXBsaWNp dCBub25lCisgICAgICAgIGludGVnZXIsIHBhcmFtZXRlciA6OiBvbXBfYWxsb2NhdG9yX2hh bmRsZV9raW5kID0gY19pbnRwdHJfdAorCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2Fs bG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6 IG9tcF9udWxsX2FsbG9jYXRvciA9IDAKKworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9h bGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6 OiBvbXBfZGVmYXVsdF9tZW1fYWxsb2MgPSAxCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21w X2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVy IDo6IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jID0gMgorICAgICAgICBpbnRlZ2VyIChraW5k PW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFt ZXRlciA6OiBvbXBfY29uc3RfbWVtX2FsbG9jID0gMworICAgICAgICBpbnRlZ2VyIChraW5k PW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFt ZXRlciA6OiBvbXBfaGlnaF9id19tZW1fYWxsb2MgPSA0CisgICAgICAgIGludGVnZXIgKGtp bmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFy YW1ldGVyIDo6IG9tcF9sb3dfbGF0X21lbV9hbGxvYyA9IDUKKyAgICAgICAgaW50ZWdlciAo a2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBw YXJhbWV0ZXIgOjogb21wX2Nncm91cF9tZW1fYWxsb2MgPSA2CisgICAgICAgIGludGVnZXIg KGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAg cGFyYW1ldGVyIDo6IG9tcF9wdGVhbV9tZW1fYWxsb2MgPSA3CisgICAgICAgIGludGVnZXIg KGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAg cGFyYW1ldGVyIDo6IG9tcF90aHJlYWRfbWVtX2FsbG9jID0gOAorICAgdHlwZSB0CisgICAg IGludGVnZXIsYWxsb2NhdGFibGUgOjogYQorICAgICBpbnRlZ2VyLHBvaW50ZXIgOjogYig6 LDopCisgICBlbmQgdHlwZSB0CisgICBpbnRlZ2VyIDo6IHVzZWQKK2VuZCBtb2R1bGUgbXlf b21wX2xpYgorCitzdWJyb3V0aW5lIG9uZShuLCBteV9hbGxvYykKKyAgdXNlIG15X29tcF9s aWIKKyAgaW1wbGljaXQgbm9uZQoraW50ZWdlciA6OiBuCitpbnRlZ2VyKGtpbmQ9b21wX2Fs bG9jYXRvcl9oYW5kbGVfa2luZCksIGludGVudChpbikgOjogbXlfYWxsb2MKKworaW50ZWdl ciA6OiBhLGIsYyhuKSxkKDUpLGUoMikKK2ludGVnZXIsIHNhdmUgOjogayxsLG0oNSkscigy KQoraW50ZWdlciA6OiBxLHgseSgyKSx6KDUpCitjb21tb24gL2NvbTEvIHEseAorY29tbW9u IC9jb20yLyB5LHoKK2ludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGFsbG9jCitpbnRlZ2VyLCBw b2ludGVyIDo6IHB0cgoraW50ZWdlciwgcGFyYW1ldGVyIDo6IHBybT01CisKKyEkb21wIGFs bG9jYXRlKHBybSkgYWxpZ24oNjQpICEgeyBkZy1lcnJvciAiQXJndW1lbnQgJ3BybScgYXQg LjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGRpcmVjdGl2ZSBtdXN0IGJlIGEg dmFyaWFibGUiIH0KKyEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFM TE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfQorCishJG9tcCBhbGxvY2F0ZSh1c2VkKSBhbGxvY2F0b3Iob21wX3B0ZWFtX21lbV9h bGxvYykgICEgeyBkZy1lcnJvciAiQXJndW1lbnQgJ3VzZWQnIGF0IC4xLiB0byBkZWNsYXJh dGl2ZSAhLk9NUCBBTExPQ0FURSBzaGFsbCBiZSBpbiB0aGUgc2FtZSBzY29wZSBhcyB0aGUg dmFyaWFibGUgZGVjbGFyYXRpb24iIH0KKyEkb21wIGFsbG9jYXRlKG4pIGFsbG9jYXRvcihv bXBfcHRlYW1fbWVtX2FsbG9jKSAhIHsgZGctZXJyb3IgIlVuZXhwZWN0ZWQgZHVtbXkgYXJn dW1lbnQgJ24nIGFzIGFyZ3VtZW50IGF0IC4xLiB0byBkZWNsYXJhdGl2ZSAhLk9NUCBBTExP Q0FURSIgfQorCishJG9tcCBhbGxvY2F0ZSAoeCkgYWxpZ24oMTI4KSAhIHsgZGctZXJyb3Ig Iid4JyBhdCAuMS4gaXMgcGFydCBvZiB0aGUgY29tbW9uIGJsb2NrICcvY29tMS8nIGFuZCBt YXkgb25seSBiZSBzcGVjaWZpY2VkIGltcGxpY2l0bHkgdmlhIHRoZSBuYW1lZCBjb21tb24g YmxvY2siIH0KKworISRvbXAgYWxsb2NhdGUgKGEsIGIsIGEpIGFsbG9jYXRvciAob21wX3B0 ZWFtX21lbV9hbGxvYykgISB7IGRnLWVycm9yICJEdXBsaWNhdGVkIHZhcmlhYmxlICdhJyBp biAhLk9NUCBBTExPQ0FURSIgfQorY29udGFpbnMKKworICBzdWJyb3V0aW5lIGlubmVyCisg ICAgISRvbXAgYWxsb2NhdGUoYSkgYWxsb2NhdG9yKG9tcF9wdGVhbV9tZW1fYWxsb2MpICAh IHsgZGctZXJyb3IgIkFyZ3VtZW50ICdhJyBhdCAuMS4gdG8gZGVjbGFyYXRpdmUgIS5PTVAg QUxMT0NBVEUgc2hhbGwgYmUgaW4gdGhlIHNhbWUgc2NvcGUgYXMgdGhlIHZhcmlhYmxlIGRl Y2xhcmF0aW9uIiB9CishIHsgZGctZXJyb3IgIlNvcnJ5LCBkZWNsYXJhdGl2ZSAhLk9NUCBB TExPQ0FURSBhdCAuMS4gbm90IHlldCBzdXBwb3J0ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0g Li0xIH0KKyAgZW5kCitlbmQKKworc3Vicm91dGluZSB0aHJlZShuKQorICB1c2UgbXlfb21w X2xpYgorICBpbXBsaWNpdCBub25lCitpbnRlZ2VyLHZhbHVlIDo6IG4KK2ludGVnZXIgOjog YSxiLGMobiksZCg1KSxlKDIpCitpbnRlZ2VyLCBzYXZlIDo6IGssbCxtKDUpCitpbnRlZ2Vy IDo6IHEseCx5KDIpLHooNSkscgorY29tbW9uIC9jb200LyB5LHoKK2FsbG9jYXRhYmxlIDo6 IHEKK3BvaW50ZXIgOjogYgorISRvbXAgYWxsb2NhdGUgKGMsIGQpIGFsbG9jYXRvciAob21w X3B0ZWFtX21lbV9hbGxvYykKKyEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEu T01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0q LSogfSAuLTEgfQorISRvbXAgYWxsb2NhdGUgKC9jb200LykgYWxsb2NhdG9yIChvbXBfcHRl YW1fbWVtX2FsbG9jKQorISRvbXAgYWxsb2NhdGUgKGMpIGFsbG9jYXRvciAob21wX3B0ZWFt X21lbV9hbGxvYykgISB7IGRnLWVycm9yICJEdXBsaWNhdGVkIHZhcmlhYmxlICdjJyBpbiAh Lk9NUCBBTExPQ0FURSIgfQorISRvbXAgYWxsb2NhdGUgKC9jb200LykgYWxsb2NhdG9yIChv bXBfcHRlYW1fbWVtX2FsbG9jKSAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgY29tbW9uIGJs b2NrICcvY29tNC8nIGluICEuT01QIEFMTE9DQVRFIiB9CisKKyEkb21wIGFsbG9jYXRlKHEs eCkgICEgeyBkZy1lcnJvciAiVW5leHBlY3RlZCBhbGxvY2F0YWJsZSB2YXJpYWJsZSAncScg YXQgLjEuIGluIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGRpcmVjdGl2ZSIgfQorISRv bXAgYWxsb2NhdGUoYixlKSAgISB7IGRnLWVycm9yICJVbmV4cGVjdGVkIHBvaW50ZXIgdmFy aWFibGUgJ2InIGF0IC4xLiBpbiBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSBkaXJlY3Rp dmUiIH0KK2VuZAorCitzdWJyb3V0aW5lIGZvdXIobikKKyAgaW50ZWdlciA6OiBxcSwgcnIs IHNzLCB0dCwgdXUsIHZ2LG4KKyEkb21wIGFsbG9jYXRlIChxcSkgYWxpZ24oMytuKSAhIHsg ZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGlu dGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQgLjEuIHRoYXQgaXMgYSBwb3dlciBvZiB0 d28iIH0KKyEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRF IGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQor ISRvbXAgYWxsb2NhdGUgKHJyKSBhbGlnbihbNF0pICEgeyBkZy1lcnJvciAiQUxJR04gcmVx dWlyZXMgYSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgZXhw cmVzc2lvbiBhdCAuMS4gdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQorISRvbXAgYWxsb2Nh dGUgKHNzKSBhbGlnbihbNF0pICEgeyBkZy1lcnJvciAiQUxJR04gcmVxdWlyZXMgYSBzY2Fs YXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lvbiBhdCAu MS4gdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQorISRvbXAgYWxsb2NhdGUgKHR0KSBhbGln bigzMi4wKSAhIHsgZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZl IGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQgLjEuIHRoYXQgaXMg YSBwb3dlciBvZiB0d28iIH0KKyEkb21wIGFsbG9jYXRlICh1dSkgYWxpZ24oMzEpICEgeyBk Zy1lcnJvciAiQUxJR04gcmVxdWlyZXMgYSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50 ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lvbiBhdCAuMS4gdGhhdCBpcyBhIHBvd2VyIG9mIHR3 byIgfQorZW5kCisKK3N1YnJvdXRpbmUgZml2ZShuLG15X2FsbG9jKQorICB1c2UgbXlfb21w X2xpYgorICBpbXBsaWNpdCBub25lCisgIGludGVnZXIgOjogcXEsIHJyLCBzcywgdHQsIHV1 LCB2dixuCisgIGludGVnZXIob21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCkgOjogbXlfYWxs b2MKKyEkb21wIGFsbG9jYXRlIChxcSkgYWxsb2NhdG9yKDMuMCkgICEgeyBkZy1lcnJvciAi RXhwZWN0ZWQgaW50ZWdlciBleHByZXNzaW9uIG9mIHRoZSAnb21wX2FsbG9jYXRvcl9oYW5k bGVfa2luZCcga2luZCIgfQorISB7IGRnLWVycm9yICJTb3JyeSwgZGVjbGFyYXRpdmUgIS5P TVAgQUxMT0NBVEUgYXQgLjEuIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9CishJG9tcCBhbGxvY2F0ZSAocnIpIGFsbG9jYXRvcigzXzIpICAhIHsgZGct ZXJyb3IgIkV4cGVjdGVkIGludGVnZXIgZXhwcmVzc2lvbiBvZiB0aGUgJ29tcF9hbGxvY2F0 b3JfaGFuZGxlX2tpbmQnIGtpbmQiIH0KKyEkb21wIGFsbG9jYXRlIChzcykgYWxsb2NhdG9y KFtvbXBfcHRlYW1fbWVtX2FsbG9jXSkgICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgaW50ZWdl ciBleHByZXNzaW9uIG9mIHRoZSAnb21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCcga2luZCIg fQorISRvbXAgYWxsb2NhdGUgKHR0KSBhbGxvY2F0b3IobXlfYWxsb2MpICAhIE9LCitlbmQK KworCitzdWJyb3V0aW5lIGZpdmVfU2F2ZUFsbChuLG15X2FsbG9jKQorICB1c2UgbXlfb21w X2xpYgorICBpbXBsaWNpdCBub25lCisgIHNhdmUKKyAgaW50ZWdlciA6OiBxcSwgcnIsIHNz LCB0dCwgdXUsIHZ2LG4KKyAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6 OiBteV9hbGxvYworISRvbXAgYWxsb2NhdGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRn LWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xh dXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdxcScgYXQgLjIuIGhhcyB0aGUgU0FWRSBh dHRyaWJ1dGUiIH0KKyEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFM TE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfQorISRvbXAgYWxsb2NhdGUgKHJyKSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9y ICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0 IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdycicgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1 dGUiIH0KKyEkb21wIGFsbG9jYXRlIChzcykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2Fs bG9jXSkgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4g QUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBo YXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CishJG9tcCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRv cihteV9hbGxvYykgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWly ZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0 IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CitlbmQKKworCitzdWJyb3V0aW5lIGZp dmVfU2F2ZShuLG15X2FsbG9jKQorICB1c2UgbXlfb21wX2xpYgorICBpbXBsaWNpdCBub25l CisgIGludGVnZXIgOjogbgorICBpbnRlZ2VyLCBzYXZlIDo6IHFxLCByciwgc3MsIHR0LCB1 dSwgdnYKKyAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxv YworISRvbXAgYWxsb2NhdGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRnLWVycm9yICJQ cmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4x LiBhcyB0aGUgbGlzdCBpdGVtICdxcScgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUi IH0KKyEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0 IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorISRv bXAgYWxsb2NhdGUgKHJyKSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJQcmVkZWZp bmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0 aGUgbGlzdCBpdGVtICdycicgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEk b21wIGFsbG9jYXRlIChzcykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2FsbG9jXSkgICEg eyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9S IGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBoYXMgdGhlIFNB VkUgYXR0cmlidXRlIiB9CishJG9tcCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRvcihteV9hbGxv YykgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxM T0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0IC4yLiBoYXMg dGhlIFNBVkUgYXR0cmlidXRlIiB9CitlbmQKKworbW9kdWxlIGZpdmVfTW9kdWxlCisgIHVz ZSBteV9vbXBfbGliCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciwgc2F2ZSA6OiBxcSwg cnIsIHNzLCB0dCwgdXUsIHZ2LG4KKyAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9r aW5kKSA6OiBteV9hbGxvYworISRvbXAgYWxsb2NhdGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAg ISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FU T1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdxcScgYXQgLjIuIGhhcyB0aGUg U0FWRSBhdHRyaWJ1dGUiIH0KKyEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEu T01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0q LSogfSAuLTEgfQorISRvbXAgYWxsb2NhdGUgKHJyKSBhbGxvY2F0b3IoM18yKSAgISB7IGRn LWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xh dXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdycicgYXQgLjIuIGhhcyB0aGUgU0FWRSBh dHRyaWJ1dGUiIH0KKyEkb21wIGFsbG9jYXRlIChzcykgYWxsb2NhdG9yKFtvbXBfcHRlYW1f bWVtX2FsbG9jXSkgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWly ZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0 IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CishJG9tcCBhbGxvY2F0ZSAodHQpIGFs bG9jYXRvcihteV9hbGxvYykgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3Ig cmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAn dHQnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CitlbmQgbW9kdWxlCisKK3By b2dyYW0gZml2ZV9wcm9ncmFtCisgIHVzZSBteV9vbXBfbGliCisgIGltcGxpY2l0IG5vbmUK KyAgaW50ZWdlciwgc2F2ZSA6OiBxcSwgcnIsIHNzLCB0dCwgdXUsIHZ2LG4KKyAgaW50ZWdl cihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYworISRvbXAgYWxsb2Nh dGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9j YXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBp dGVtICdxcScgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEgeyBkZy1lcnJv ciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1 cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorISRvbXAgYWxsb2NhdGUgKHJy KSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciBy ZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdy cicgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEkb21wIGFsbG9jYXRlIChz cykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2FsbG9jXSkgICEgeyBkZy1lcnJvciAiUHJl ZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4g YXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9 CishJG9tcCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRvcihteV9hbGxvYykgICEgeyBkZy1lcnJv ciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBh dCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmli dXRlIiB9CitlbmQgcHJvZ3JhbQorCisKKworc3Vicm91dGluZSBzaXgobixteV9hbGxvYykK KyAgdXNlIG15X29tcF9saWIKKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyIDo6IHFxLCBy ciwgc3MsIHR0LCB1dSwgdnYsbgorICBjb21tb24gL2NvbTZxcS8gcXEKKyAgY29tbW9uIC9j b202cnIvIHJyCisgIGNvbW1vbiAvY29tNnNzLyBzcworICBjb21tb24gL2NvbTZ0dC8gdHQK KyAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYworCish JG9tcCBhbGxvY2F0ZSAoL2NvbTZxcS8pIGFsbG9jYXRvcigzLjApICAhIHsgZGctZXJyb3Ig IlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1c2UgYXQg LjEuIGFzIHRoZSBsaXN0IGl0ZW0gJy9jb202cXEvJyBhdCAuMi4gaGFzIHRoZSBTQVZFIGF0 dHJpYnV0ZSIgfQorISB7IGRnLWVycm9yICJTb3JyeSwgZGVjbGFyYXRpdmUgIS5PTVAgQUxM T0NBVEUgYXQgLjEuIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9CishJG9tcCBhbGxvY2F0ZSAoL2NvbTZyci8pIGFsbG9jYXRvcigzXzIpICAhIHsgZGct ZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1 c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJy9jb202cnIvJyBhdCAuMi4gaGFzIHRoZSBT QVZFIGF0dHJpYnV0ZSIgfQorISRvbXAgYWxsb2NhdGUgKC9jb202c3MvKSBhbGxvY2F0b3Io W29tcF9wdGVhbV9tZW1fYWxsb2NdKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9j YXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBp dGVtICcvY29tNnNzLycgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEkb21w IGFsbG9jYXRlICgvY29tNnR0LykgYWxsb2NhdG9yKG15X2FsbG9jKSAgISB7IGRnLWVycm9y ICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0 IC4xLiBhcyB0aGUgbGlzdCBpdGVtICcvY29tNnR0LycgYXQgLjIuIGhhcyB0aGUgU0FWRSBh dHRyaWJ1dGUiIH0KK2VuZAorCisKK3N1YnJvdXRpbmUgdHdvKCkKKyAgdXNlIG15X29tcF9s aWIKKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyLGFsbG9jYXRhYmxlIDo6IHFxLCByciwg c3MsIHR0LCB1dSwgdnYsbgorICBpbnRlZ2VyKG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQp IDo6IG15X2FsbG9jCisKKyAgY2FsbCBmb28oKQorISRvbXAgYWxsb2NhdGUgKHFxKSBhbGxv Y2F0b3IoMy4wKSAgISB7IGRnLWVycm9yICJFeHBlY3RlZCBpbnRlZ2VyIGV4cHJlc3Npb24g b2YgdGhlICdvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kJyBraW5kIiB9CithbGxvY2F0ZShx cSkKKyEkb21wIGFsbG9jYXRlIChycikgYWxsb2NhdG9yKDNfMikgICEgeyBkZy1lcnJvciAi RXhwZWN0ZWQgaW50ZWdlciBleHByZXNzaW9uIG9mIHRoZSAnb21wX2FsbG9jYXRvcl9oYW5k bGVfa2luZCcga2luZCIgfQorYWxsb2NhdGUocnIpCishJG9tcCBhbGxvY2F0ZSAoc3MpIGFs bG9jYXRvcihbb21wX3B0ZWFtX21lbV9hbGxvY10pICAhIHsgZGctZXJyb3IgIkV4cGVjdGVk IGludGVnZXIgZXhwcmVzc2lvbiBvZiB0aGUgJ29tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQn IGtpbmQiIH0KK2FsbG9jYXRlKHNzKQorISRvbXAgYWxsb2NhdGUgKHR0KSBhbGxvY2F0b3Io bXlfYWxsb2MpICAhIE9LCithbGxvY2F0ZSh0dCkKK2VuZAorCitzdWJyb3V0aW5lIHR3b19w dHIoKQorICB1c2UgbXlfb21wX2xpYgorICBpbXBsaWNpdCBub25lCisgIGludGVnZXIscG9p bnRlciA6OiBxcSwgcnIsIHNzLCB0dCwgdXUsIHZ2LG4KKyAgaW50ZWdlcihvbXBfYWxsb2Nh dG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYworCisgIGNhbGwgZm9vKCkKKyEkb21wIGFs bG9jYXRlIChxcSkgYWxpZ24oMytuKSAhIHsgZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEg c2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24g YXQgLjEuIHRoYXQgaXMgYSBwb3dlciBvZiB0d28iIH0KK2FsbG9jYXRlKHFxKQorISRvbXAg YWxsb2NhdGUgKHJyKSBhbGlnbihbNF0pICEgeyBkZy1lcnJvciAiQUxJR04gcmVxdWlyZXMg YSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lv biBhdCAuMS4gdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQorYWxsb2NhdGUocnIpCishJG9t cCBhbGxvY2F0ZSAoc3MpIGFsaWduKFs0XSkgISB7IGRnLWVycm9yICJBTElHTiByZXF1aXJl cyBhIHNjYWxhciBwb3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyIGFsaWdubWVudCBleHByZXNz aW9uIGF0IC4xLiB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIiB9CithbGxvY2F0ZShzcykKKyEk b21wIGFsbG9jYXRlICh0dCkgYWxpZ24oMzIuMCkgISB7IGRnLWVycm9yICJBTElHTiByZXF1 aXJlcyBhIHNjYWxhciBwb3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyIGFsaWdubWVudCBleHBy ZXNzaW9uIGF0IC4xLiB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIiB9CithbGxvY2F0ZSh0dCkK KyEkb21wIGFsbG9jYXRlICh1dSkgYWxpZ24oMzEpICEgeyBkZy1lcnJvciAiQUxJR04gcmVx dWlyZXMgYSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgZXhw cmVzc2lvbiBhdCAuMS4gdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQorYWxsb2NhdGUodXUp CitlbmQKKworc3Vicm91dGluZSBuZXh0KCkKKyAgdXNlIG15X29tcF9saWIKKyAgaW1wbGlj aXQgbm9uZQorICBpbnRlZ2VyLGFsbG9jYXRhYmxlIDo6IHFxLCByciwgc3MsIHR0LCB1dSwg dnYsbgorICBpbnRlZ2VyKG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpIDo6IG15X2FsbG9j CisKKyAgISRvbXAgYWxsb2NhdGUocXEpICAhIHsgZGctZXJyb3IgIichLk9NUCBBTExPQ0FU RScgZGlyZWN0aXZlIGF0IC4xLiBhc3NvY2lhdGVkIHdpdGggYW4gQUxMT0NBVEUgc3RtdCBt dXN0IGJlIHByZWNlZGVkIGJ5IGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IG9yIE9wZW5NUCBj b25zdHJ1Y3Q7IG5vdGUgdGhlIHZhcmlhYmxlcyBpbiB0aGUgbGlzdCBhbGwgaGF2ZSB0aGUg YWxsb2NhdGFibGUgb3IgcG9pbnRlciBhdHRyaWJ1dGUiIH0KKyAgIGFsbG9jYXRlKHFxLHJy KQorCisgICEkb21wIGFsbG9jYXRlKHV1LHR0KQorICAhJG9tcCBhbGxvY2F0ZSh0dCkgICEg eyBkZy13YXJuaW5nICIndHQnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gJ2FsbG9jYXRl IiB9CisgICBhbGxvY2F0ZSh1dSx0dCkKKworICAhJG9tcCBhbGxvY2F0ZSh1dSx2dikgISB7 IGRnLWVycm9yICIndXUnIHNwZWNpZmllZCBpbiAnYWxsb2NhdGUnIGF0IC4xLiBidXQgbm90 IGluIHRoZSBhc3NvY2lhdGVkIEFMTE9DQVRFIHN0YXRlbWVudCIgfQorICAgYWxsb2NhdGUo dnYpCitlbmQKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9h bGxvY2F0b3JzLTEuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9j YXRvcnMtMS5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIz OWY2ZDI3MmMxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9nb21wL2FsbG9jYXRvcnMtMS5mOTAKQEAgLTAsMCArMSwyOCBAQAoraW1wbGljaXQgbm9u ZQoraW50ZWdlciwgYWxsb2NhdGFibGUgOjogYSwgYgoraW50ZWdlciA6OiBxCitpbnRlZ2Vy IDo6IGFycigyKQorCishJG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlKGFsaWduKDY0KTogYSkK K2Jsb2NrICAhIHsgZGctZXJyb3IgImV4cGVjdGVkIEFMTE9DQVRFIHN0YXRlbWVudCBhZnRl ciAhLk9NUCBBTExPQ0FUT1JTIiB9CitlbmQgYmxvY2sgISB7IGRnLWVycm9yICJFeHBlY3Rp bmcgRU5EIFBST0dSQU0gc3RhdGVtZW50IiB9CisKKworISRvbXAgYWxsb2NhdG9ycyBhbGxv Y2F0ZShhbGlnbig2NCk6IGEpCisgIGFsbG9jYXRlKGEsIGIpICAhIE9LCishJG9tcCBlbmQg YWxsb2NhdG9ycworCishJG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlKGFsaWduKDEyOCk6IGIp CisgIGFsbG9jYXRlKGEsIGIpICAhIE9LIChhc3N1bWluZyBub3QgYWxsb2NhdGVkKQorCisK KyEkb21wIGFsbG9jYXRvcnMgYWxsb2NhdGUoYWxpZ24oNjQpOiBhKQorICBhbGxvY2F0ZShh LCBiLCBzdGF0PWFycikgICEgeyBkZy1lcnJvciAiU3RhdC12YXJpYWJsZSBhdCAuMS4gbXVz dCBiZSBhIHNjYWxhciBJTlRFR0VSIHZhcmlhYmxlIiB9CishJG9tcCBlbmQgYWxsb2NhdG9y cworCisKKyEkb21wIGFsbG9jYXRvcnMgYWxsb2NhdGUoYWxpZ24oNjQpOiBhKQorICBhbGxv Y2F0ZShxKSAgISB7IGRnLWVycm9yICJpcyBuZWl0aGVyIGEgZGF0YSBwb2ludGVyIG5vciBh biBhbGxvY2F0YWJsZSB2YXJpYWJsZSIgfQorISRvbXAgZW5kIGFsbG9jYXRvcnMgISB7IGRn LWVycm9yICJVbmV4cGVjdGVkICEuT01QIEVORCBBTExPQ0FUT1JTIiB9CisKK2VuZApkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRvcnMtMi5m OTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdG9ycy0yLmY5MApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmZiODA4NzllZjcKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2Nh dG9ycy0yLmY5MApAQCAtMCwwICsxLDIyIEBACitpbXBsaWNpdCBub25lCitpbnRlZ2VyLCBh bGxvY2F0YWJsZSA6OiBhLCBiCitpbnRlZ2VyIDo6IHEKK2ludGVnZXIgOjogYXJyKDIpCisK KyEkb21wIGFsbG9jYXRvcnMgYWxsb2NhdGUoYWxpZ24oNjQpOiBhKQorICBhbGxvY2F0ZShh LCBiKSAgISBPSworISRvbXAgZW5kIGFsbG9jYXRvcnMKKworISRvbXAgYWxsb2NhdG9ycyBh bGxvY2F0ZShhbGlnbigxMjgpOiBiKQorICBhbGxvY2F0ZShhLCBiKSAgISBPSyAoYXNzdW1p bmcgbm90IGFsbG9jYXRlZCkKKworCishJG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlKGFsaWdu KDYyLjApOiBhKSAhIHsgZGctZXJyb3IgImEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGlu dGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24iIH0KKyBhbGxvY2F0ZShhKQorCisKKyEkb21w IGFsbG9jYXRvcnMgYWxsb2NhdGUoYWxpZ24oNjQpOiBhLCBiKSAgISB7IGRnLWVycm9yICIn Yicgc3BlY2lmaWVkIGluICdhbGxvY2F0ZScgYXQgXFwoMVxcKSBidXQgbm90IGluIHRoZSBh c3NvY2lhdGVkIEFMTE9DQVRFIHN0YXRlbWVudCIgfQorIGFsbG9jYXRlKGEpCishJG9tcCBl bmQgYWxsb2NhdG9ycworCitlbmQKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xp YmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS00LmY5MCBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdv bXAuZm9ydHJhbi9hbGxvY2F0ZS00LmY5MAppbmRleCBkZGI1MDdiYThlNC4uMWY4MzNiNmU3 MGYgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxv Y2F0ZS00LmY5MAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxs b2NhdGUtNC5mOTAKQEAgLTE2LDI3ICsxNiwyNyBAQCBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjog Y25zdCgyKSA9IFs2NCwgMTAxXQogISRvbXAgcGFyYWxsZWwgYWxsb2NhdGUoIGFsbG9jYXRv ciAob21wX2hpZ2hfYndfbWVtX2FsbG9jKSA6IHgpICBmaXJzdHByaXZhdGUoeCkgISB7IGRn LWVycm9yICJFeHBlY3RlZCBpbnRlZ2VyIGV4cHJlc3Npb24gb2YgdGhlICdvbXBfYWxsb2Nh dG9yX2hhbmRsZV9raW5kJyBraW5kIiB9CiAhJG9tcCBlbmQgcGFyYWxsZWwKIAotISRvbXAg cGFyYWxsZWwgYWxsb2NhdGUoIGFsaWduIChxKSA6IHgpICBmaXJzdHByaXZhdGUoeCkgISB7 IGRnLWVycm9yICIzMjpBTElHTiBtb2RpZmllciByZXF1aXJlcyBhdCBcXCgxXFwpIGEgc2Nh bGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gdGhh dCBpcyBhIHBvd2VyIG9mIHR3byIgfQorISRvbXAgcGFyYWxsZWwgYWxsb2NhdGUoIGFsaWdu IChxKSA6IHgpICBmaXJzdHByaXZhdGUoeCkgISB7IGRnLWVycm9yICIzMjpBTElHTiByZXF1 aXJlcyBhIHNjYWxhciBwb3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyIGFsaWdubWVudCBleHBy ZXNzaW9uIGF0IFxcKDFcXCkgdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQogISRvbXAgZW5k IHBhcmFsbGVsCiAKICEkb21wIHBhcmFsbGVsIGFsbG9jYXRlKCBhbGlnbiAoMzIpIDogeCkg IGZpcnN0cHJpdmF0ZSh4KSAhIE9LCiAhJG9tcCBlbmQgcGFyYWxsZWwKIAotISRvbXAgcGFy YWxsZWwgYWxsb2NhdGUoIGFsaWduKHEpIDogeCkgZmlyc3Rwcml2YXRlKHgpICEgeyBkZy1l cnJvciAiMzE6QUxJR04gbW9kaWZpZXIgcmVxdWlyZXMgYXQgXFwoMVxcKSBhIHNjYWxhciBw b3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyIGFsaWdubWVudCBleHByZXNzaW9uIHRoYXQgaXMg YSBwb3dlciBvZiB0d28iIH0KKyEkb21wIHBhcmFsbGVsIGFsbG9jYXRlKCBhbGlnbihxKSA6 IHgpIGZpcnN0cHJpdmF0ZSh4KSAhIHsgZGctZXJyb3IgIjMxOkFMSUdOIHJlcXVpcmVzIGEg c2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24g YXQgXFwoMVxcKSB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIiB9CiAhJG9tcCBlbmQgcGFyYWxs ZWwKIAogISRvbXAgcGFyYWxsZWwgYWxsb2NhdGUoIGFsaWduKGNuc3QoMSkpIDogeCApIGZp cnN0cHJpdmF0ZSh4KSAhIE9LCiAhJG9tcCBlbmQgcGFyYWxsZWwKIAotISRvbXAgcGFyYWxs ZWwgYWxsb2NhdGUoIGFsaWduKGNuc3QoMikpIDogeCkgZmlyc3Rwcml2YXRlKHgpICAhIHsg ZGctZXJyb3IgIjMxOkFMSUdOIG1vZGlmaWVyIHJlcXVpcmVzIGF0IFxcKDFcXCkgYSBzY2Fs YXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lvbiB0aGF0 IGlzIGEgcG93ZXIgb2YgdHdvIiB9CishJG9tcCBwYXJhbGxlbCBhbGxvY2F0ZSggYWxpZ24o Y25zdCgyKSkgOiB4KSBmaXJzdHByaXZhdGUoeCkgICEgeyBkZy1lcnJvciAiMzE6QUxJR04g cmVxdWlyZXMgYSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQg ZXhwcmVzc2lvbiBhdCBcXCgxXFwpIHRoYXQgaXMgYSBwb3dlciBvZiB0d28iIH0KICEkb21w IGVuZCBwYXJhbGxlbAogCi0hJG9tcCBwYXJhbGxlbCBhbGxvY2F0ZSggYWxpZ24oIDMxKSA6 eCkgZmlyc3Rwcml2YXRlKHgpICAhIHsgZGctZXJyb3IgIjMyOkFMSUdOIG1vZGlmaWVyIHJl cXVpcmVzIGF0IFxcKDFcXCkgYSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBh bGlnbm1lbnQgZXhwcmVzc2lvbiB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIiB9CishJG9tcCBw YXJhbGxlbCBhbGxvY2F0ZSggYWxpZ24oIDMxKSA6eCkgZmlyc3Rwcml2YXRlKHgpICAhIHsg ZGctZXJyb3IgIjMyOkFMSUdOIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50 IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQgXFwoMVxcKSB0aGF0IGlzIGEgcG93 ZXIgb2YgdHdvIiB9CiAhJG9tcCBlbmQgcGFyYWxsZWwKIAotISRvbXAgcGFyYWxsZWwgYWxs b2NhdGUoIGFsaWduICgzMi4wKTogeCkgZmlyc3Rwcml2YXRlKHgpICAhIHsgZGctZXJyb3Ig IjMyOkFMSUdOIG1vZGlmaWVyIHJlcXVpcmVzIGF0IFxcKDFcXCkgYSBzY2FsYXIgcG9zaXRp dmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lvbiB0aGF0IGlzIGEgcG93 ZXIgb2YgdHdvIiB9CishJG9tcCBwYXJhbGxlbCBhbGxvY2F0ZSggYWxpZ24gKDMyLjApOiB4 KSBmaXJzdHByaXZhdGUoeCkgICEgeyBkZy1lcnJvciAiMzI6QUxJR04gcmVxdWlyZXMgYSBz Y2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lvbiBh dCBcXCgxXFwpIHRoYXQgaXMgYSBwb3dlciBvZiB0d28iIH0KICEkb21wIGVuZCBwYXJhbGxl bAogCi0hJG9tcCBwYXJhbGxlbCBhbGxvY2F0ZSggYWxpZ24oY25zdCApIDogeCApIGZpcnN0 cHJpdmF0ZSh4KSAgISB7IGRnLWVycm9yICIzMTpBTElHTiBtb2RpZmllciByZXF1aXJlcyBh dCBcXCgxXFwpIGEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50 IGV4cHJlc3Npb24gdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQorISRvbXAgcGFyYWxsZWwg YWxsb2NhdGUoIGFsaWduKGNuc3QgKSA6IHggKSBmaXJzdHByaXZhdGUoeCkgICEgeyBkZy1l cnJvciAiMzE6QUxJR04gcmVxdWlyZXMgYSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50 ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lvbiBhdCBcXCgxXFwpIHRoYXQgaXMgYSBwb3dlciBv ZiB0d28iIH0KICEkb21wIGVuZCBwYXJhbGxlbAogZW5kCg== --------------1drnjTw0Jzy1zaDoUfYftLTG--