From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id A1F6F385828D; Wed, 5 Oct 2022 12:30:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A1F6F385828D 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="5.95,159,1661846400"; d="diff'?scan'208,217";a="84035116" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa3.mentor.iphmx.com with ESMTP; 05 Oct 2022 04:30:03 -0800 IronPort-SDR: JvgLFzx5aUh3lvE6WRmP8Nf6cxbVCLB/YvcUfGhIZPb5OfhY491RwaWfc7RdePOUOYvw2vFPiG b6vyMNB0DdTPc74dMqei45HHAKMNogh0M0pyteWcjWCxBL2GDiQRbbLxhZ72I8VtsymfSzZhgk AfKD8aogiJ++Ybfy26yBd5ENGzYX7l30CUXNB19R+uEurPj4ML8OijJXdg+2/y+8ZAeK8yKc4T F3Orkg0qVwBc+tRh2cum0M8rW3EvwhxRpEpP223cn07e49+QcLaX0mK+TI88Z5JQ/x6YlSV4dt ERM= Content-Type: multipart/mixed; boundary="------------LhbKRAFgR8It8On0TxS40Tx6" Message-ID: <69f9b8f8-070d-97a0-fcbb-f6f31497c368@codesourcery.com> Date: Wed, 5 Oct 2022 14:29:56 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: Re: [Patch] Fortran: Add OpenMP's assume(s) directives Content-Language: en-US From: Tobias Burnus To: Jakub Jelinek CC: gcc-patches , fortran References: <87cbf1bf-53ff-c743-2447-172aecd7852a@codesourcery.com> In-Reply-To: <87cbf1bf-53ff-c743-2447-172aecd7852a@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP 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: --------------LhbKRAFgR8It8On0TxS40Tx6 Content-Type: multipart/alternative; boundary="------------wTZ7Y0cEkfeceRo8wQcsRAyW" --------------wTZ7Y0cEkfeceRo8wQcsRAyW Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable Minor update to just posted patch: the table did not revert all strings whe= re a substring directive name existed, i.e. 'target' vs. 'target update', '= assume' vs. 'assumes'. Now fixed. Otherwise unchanged: Tobias On 05.10.22 13:19, Tobias Burnus wrote: Hi Jakub, On 04.10.22 14:58, Jakub Jelinek via Gcc-patches wrote: On Tue, Oct 04, 2022 at 02:26:13PM +0200, Tobias Burnus wrote: On Sun, Oct 02, 2022 at 07:47:18PM +0200, Tobias Burnus wrote: --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi OK? Ok, thanks. Committed as https://gcc.gnu.org/r13-3063-g8792047470073df0da4a5b91997d6058= 193d7676 Wouldn't this be better table driven (like c_omp_directives in c-family, though guess for Fortran you can just use spaces in the name, don't need 3 strings for the separate tokens)? Because I think absent/contains isn't the only spot where you need directive names, metadirective is another. Now added. I noted that I have different kinds/categories than you used in = c-family/c-omp.c; and my impression that standalone vs. block vs delimited = is a different category than informational/meta/... Maybe =E2=80=93 I think there are already way to many string repetitions. O= ne problem is that metadirectives permit combined/composite constructs whil= e 'assume(s)' does not. I on purpose did not parse them, but probably in li= ght of Metadirectives, I should. I will take a look. It is true that metadirective supports combined/composite constructs, and so do we in the C++ attribute case, still we IMHO can use the C/C++ table as is.and it doesn't need to include combined/composite constructs. The thing is that for the metadirective/C++ attribute case, all we need to know is to discover the directive category (declarative, stand-alone, construct, informational, ...) and for that it is enough to parse the first directive-name in combined/composite constructs. ... else if (popcount (old_n_absent) =3D=3D 1) absent =3D ... sizeof() * (old_n_absent) * 2) Yeah. Or for 0 allocate say 8 and use (pow2p_hwi (old_n_absent) && old_n_absent >=3D 8) in the else if. I used now pow2p_hwi as popcount did not exist (and I didn't want to add an= #include or use __builtin_popcount), not that either variant is clearer an= d it is neither performance critical nor is neither of "(x & -x) =3D=3D x" = and "popcount(x) =3D=3D 1" slow. I don't understand the point of preallocation of gfc_omp_clauses here, ... That's now gone. As I have to check the duplication right after parsing =E2= =80=93 but before merging, I can no longer do it during resolution. Instead= of keeping track of the directives separately, I now moved the checking to= the directive parsing itself. It is not equivalent to that, because while we have the restriction that the same list item can't appear multiple times on the same directive, it can appear multiple times on multiple directives. I am not sure the handling of nested/repeated informational/declarative dir= ectives is very clear, but that's a separate issue. (Namely, OpenMP spec is= sue 3362.) Updated patch enclosed. And thanks for your comments! OK? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------wTZ7Y0cEkfeceRo8wQcsRAyW-- --------------LhbKRAFgR8It8On0TxS40Tx6 Content-Type: text/x-patch; charset="UTF-8"; name="omp-assume-fortran-v2.diff" Content-Disposition: attachment; filename="omp-assume-fortran-v2.diff" Content-Transfer-Encoding: base64 Rm9ydHJhbjogQWRkIE9wZW5NUCdzIGFzc3VtZShzKSBkaXJlY3RpdmVzCgps aWJnb21wL0NoYW5nZUxvZzoKCgkqIGxpYmdvbXAudGV4aSAoT3Blbk1QIDUu MSBJbXBsLiBTdGF0dXMpOiBNYXJrICdhc3N1bWUnIGFzICdZJy4KCmdjYy9m b3J0cmFuL0NoYW5nZUxvZzoKCgkqIGR1bXAtcGFyc2UtdHJlZS5jYyAoc2hv d19vbXBfYXNzdW1lcyk6IE5ldy4KCShzaG93X29tcF9jbGF1c2VzLCBzaG93 X25hbWVzcGFjZSk6IENhbGwgaXQuCgkoc2hvd19vbXBfbm9kZSwgc2hvd19j b2RlX25vZGUpOiBIYW5kbGUgT3Blbk1QIEFTU1VNRS4KCSogZ2ZvcnRyYW4u aCAoZW51bSBnZmNfc3RhdGVtZW50KTogQWRkIFNUX09NUF9BU1NVTUUsCglT VF9PTVBfRU5EX0FTU1VNRSwgU1RfT01QX0FTU1VNRVMgYW5kIFNUX05PVEhJ TkcuCgkoZ2ZjX2V4ZWNfb3ApOiBBZGQgRVhFQ19PTVBfQVNTVU1FLgoJKGdm Y19vbXBfYXNzdW1wdGlvbnMpOiBOZXcgc3RydWN0LgoJKGdmY19nZXRfb21w X2Fzc3VtcHRpb25zKTogTmV3IFhDTkVXICNkZWZpbmUuCgkoZ2ZjX29tcF9j bGF1c2VzLCBnZmNfbmFtZXNwYWNlKTogQWRkIGFzc3VtZSBtZW1iZXIuCgko Z2ZjX3Jlc29sdmVfb21wX2Fzc3VtcHRpb25zKTogTmV3IHByb3RvdHlwZS4K CSogbWF0Y2guaCAoZ2ZjX21hdGNoX29tcF9hc3N1bWUsIGdmY19tYXRjaF9v bXBfYXNzdW1lcyk6IE5ldy4KCSogb3Blbm1wLmNjIChvbXBfY29kZV90b19z dGF0ZW1lbnQpOiBGb3J3YXJkIGRlY2xhcmUuCgkoZW51bSBnZmNfb21wX2Rp cmVjdGl2ZV9raW5kLCBzdHJ1Y3QgZ2ZjX29tcF9kaXJlY3RpdmUpOiBOZXcu CgkoZ2ZjX2ZyZWVfb21wX2NsYXVzZXMpOiBGcmVlIGFzc3VtZSBtZW1iZXIg YW5kIGl0cyBzdHJ1Y3QgZGF0YS4KCShlbnVtIG9tcF9tYXNrMik6IEFkZCBP TVBfQ0xBVVNFX0FTU1VNUFRJT05TLgoJKGdmY19vbXBfYWJzZW50X2NvbnRh aW5zX2NsYXVzZSk6IE5ldy4KCShnZmNfbWF0Y2hfb21wX2NsYXVzZXMpOiBD YWxsIGl0OyBvcHRpb25hbGx5IHVzZSBwYXNzZWQKCW9tcF9jbGF1c2VzIGFy Z3VtZW50LgoJKG9tcF92ZXJpZnlfbWVyZ2VfYWJzZW50X2NvbnRhaW5zLCBn ZmNfbWF0Y2hfb21wX2Fzc3VtZSwKCSBnZmNfbWF0Y2hfb21wX2Fzc3VtZXMs IGdmY19yZXNvbHZlX29tcF9hc3N1bXB0aW9ucyk6IE5ldy4KCShyZXNvbHZl X29tcF9jbGF1c2VzKTogQ2FsbCB0aGUgbGF0dGVyLgoJKGdmY19yZXNvbHZl X29tcF9kaXJlY3RpdmUsIG9tcF9jb2RlX3RvX3N0YXRlbWVudCk6IEhhbmRs ZQoJRVhFQ19PTVBfQVNTVU1FLgoJKiBwYXJzZS5jYyAoZGVjb2RlX29tcF9k aXJlY3RpdmUpOiBQYXJzZSBPcGVuTVAgQVNTVU1FKFMpLgoJKG5leHRfc3Rh dGVtZW50LCBwYXJzZV9leGVjdXRhYmxlLCBwYXJzZV9vbXBfc3RydWN0dXJl ZF9ibG9jayk6CglIYW5kbGUgU1RfT01QX0FTU1VNRS4KCShjYXNlX29tcF9k ZWNsKTogQWRkIFNUX09NUF9BU1NVTUVTLgoJKGdmY19hc2NpaV9zdGF0ZW1l bnQpOiBIYW5kbGUgQXNzdW1lcywgb3B0aW9uYWwgcmV0dXJuCglzdHJpbmcg d2l0aG91dCAnISRPTVAgJy8nISRBQ0MgJyBwcmVmaXguCgkqIHBhcnNlLmgg KGdmY19hc2NpaV9zdGF0ZW1lbnQpOiBBZGQgb3B0aW9uYWwgYm9vbCBhcmcg dG8gcHJvdG90eXBlLgoJKiByZXNvbHZlLmNjIChnZmNfcmVzb2x2ZV9ibG9j a3MsIGdmY19yZXNvbHZlX2NvZGUpOiBBZGQKCUVYRUNfT01QX0FTU1VNRS4K CShnZmNfcmVzb2x2ZSk6IFJlc29sdmUgQVNTVU1FUyBkaXJlY3RpdmUuCgkq IHN5bWJvbC5jYyAoZ2ZjX2ZyZWVfbmFtZXNwYWNlKTogRnJlZSBvbXBfYXNz dW1lcyBtZW1iZXIuCgkqIHN0LmNjIChnZmNfZnJlZV9zdGF0ZW1lbnQpOiBI YW5kbGUgRVhFQ19PTVBfQVNTVU1FLgoJKiB0cmFucy1vcGVubXAuY2MgKGdm Y190cmFuc19vbXBfZGlyZWN0aXZlKTogTGlrZXdpc2UuCgkqIHRyYW5zLmNj ICh0cmFuc19jb2RlKTogTGlrZXdpc2UuCgpnY2MvdGVzdHN1aXRlL0NoYW5n ZUxvZzoKCgkqIGdmb3J0cmFuLmRnL2dvbXAvYXNzdW1lLTEuZjkwOiBOZXcg dGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMi5mOTA6IE5ldyB0 ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2Fzc3VtZXMtMS5mOTA6IE5ldyB0 ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2Fzc3VtZXMtMi5mOTA6IE5ldyB0 ZXN0LgoKIGdjYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYyAgICAgICAg ICAgICAgIHwgIDQxICsrKwogZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCAgICAg ICAgICAgICAgICAgICAgICAgfCAgMjMgKy0KIGdjYy9mb3J0cmFuL21hdGNo LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGdjYy9mb3J0 cmFuL29wZW5tcC5jYyAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAzICsr KysrKysrKysrKysrKysrKysrKysrKysrKwogZ2NjL2ZvcnRyYW4vcGFyc2Uu Y2MgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzEgKystCiBnY2MvZm9y dHJhbi9wYXJzZS5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQogZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDUgKwogZ2NjL2ZvcnRyYW4vc3QuY2MgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogZ2NjL2ZvcnRyYW4vc3ltYm9sLmNjICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIGdjYy9mb3J0cmFuL3Ry YW5zLW9wZW5tcC5jYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIGdjYy9m b3J0cmFuL3RyYW5zLmNjICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMS5m OTAgIHwgIDI0ICsrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAv YXNzdW1lLTIuZjkwICB8ICAyNyArKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb21wL2Fzc3VtZXMtMS5mOTAgfCAgODIgKysrKysrCiBnY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYXNzdW1lcy0yLmY5MCB8ICAxOSAr KwogbGliZ29tcC9saWJnb21wLnRleGkgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDY2NSBpbnNlcnRpb25z KCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFu L2R1bXAtcGFyc2UtdHJlZS5jYyBiL2djYy9mb3J0cmFuL2R1bXAtcGFyc2Ut dHJlZS5jYwppbmRleCA0MGM2OTBjOWFlOC4uMmYwNDJhYjUxNDIgMTAwNjQ0 Ci0tLSBhL2djYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYworKysgYi9n Y2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuY2MKQEAgLTM2LDYgKzM2LDcg QEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElm IG5vdCBzZWUKICNpbmNsdWRlICJnZm9ydHJhbi5oIgogI2luY2x1ZGUgImNv bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUg InBhcnNlLmgiICAvKiBGb3IgZ2ZjX2FzY2lpX3N0YXRlbWVudC4gICovCiAK IC8qIEtlZXAgdHJhY2sgb2YgaW5kZW50YXRpb24gZm9yIHN5bWJvbCB0cmVl IGR1bXBzLiAgKi8KIHN0YXRpYyBpbnQgc2hvd19sZXZlbCA9IDA7CkBAIC0x NDU4LDYgKzE0NTksMzQgQEAgc2hvd19vbXBfbmFtZWxpc3QgKGludCBsaXN0 X3R5cGUsIGdmY19vbXBfbmFtZWxpc3QgKm4pCiAgIGdmY19jdXJyZW50X25z ID0gbnNfY3VycjsKIH0KIAorc3RhdGljIHZvaWQKK3Nob3dfb21wX2Fzc3Vt ZXMgKGdmY19vbXBfYXNzdW1wdGlvbnMgKmFzc3VtZSkKK3sKKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBhc3N1bWUtPm5fYWJzZW50OyBpKyspCisgICAgewor ICAgICAgZnB1dHMgKCIgQUJTRU5UICgiLCBkdW1wZmlsZSk7CisgICAgICBm cHV0cyAoZ2ZjX2FzY2lpX3N0YXRlbWVudCAoYXNzdW1lLT5hYnNlbnRbaV0s IHRydWUpLCBkdW1wZmlsZSk7CisgICAgICBmcHV0YyAoJyknLCBkdW1wZmls ZSk7CisgICAgfQorICBmb3IgKGludCBpID0gMDsgaSA8IGFzc3VtZS0+bl9j b250YWluczsgaSsrKQorICAgIHsKKyAgICAgIGZwdXRzICgiIENPTlRBSU5T ICgiLCBkdW1wZmlsZSk7CisgICAgICBmcHV0cyAoZ2ZjX2FzY2lpX3N0YXRl bWVudCAoYXNzdW1lLT5jb250YWluc1tpXSwgdHJ1ZSksIGR1bXBmaWxlKTsK KyAgICAgIGZwdXRjICgnKScsIGR1bXBmaWxlKTsKKyAgICB9CisgIGZvciAo Z2ZjX2V4cHJfbGlzdCAqZWwgPSBhc3N1bWUtPmhvbGRzOyBlbDsgZWwgPSBl bC0+bmV4dCkKKyAgICB7CisgICAgICBmcHV0cyAoIiBIT0xEUyAoIiwgZHVt cGZpbGUpOworICAgICAgc2hvd19leHByIChlbC0+ZXhwcik7CisgICAgICBm cHV0YyAoJyknLCBkdW1wZmlsZSk7CisgICAgfQorICBpZiAoYXNzdW1lLT5u b19vcGVubXApCisgICAgZnB1dHMgKCIgTk9fT1BFTk1QIiwgZHVtcGZpbGUp OworICBpZiAoYXNzdW1lLT5ub19vcGVubXBfcm91dGluZXMpCisgICAgZnB1 dHMgKCIgTk9fT1BFTk1QX1JPVVRJTkVTIiwgZHVtcGZpbGUpOworICBpZiAo YXNzdW1lLT5ub19wYXJhbGxlbGlzbSkKKyAgICBmcHV0cyAoIiBOT19QQVJB TExFTElTTSIsIGR1bXBmaWxlKTsKK30KIAogLyogU2hvdyBPcGVuTVAgb3Ig T3BlbkFDQyBjbGF1c2VzLiAgKi8KIApAQCAtMTk5OCw2ICsyMDI3LDggQEAg c2hvd19vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICpvbXBfY2xhdXNl cykKICAgICAgIHNob3dfZXhwciAob21wX2NsYXVzZXMtPm1lc3NhZ2UpOwog ICAgICAgZnB1dGMgKCcpJywgZHVtcGZpbGUpOwogICAgIH0KKyAgaWYgKG9t cF9jbGF1c2VzLT5hc3N1bWUpCisgICAgc2hvd19vbXBfYXNzdW1lcyAob21w X2NsYXVzZXMtPmFzc3VtZSk7CiB9CiAKIC8qIFNob3cgYSBzaW5nbGUgT3Bl bk1QIG9yIE9wZW5BQ0MgZGlyZWN0aXZlIG5vZGUgYW5kIGV2ZXJ5dGhpbmcg dW5kZXJuZWF0aCBpdApAQCAtMjAyNyw2ICsyMDU4LDcgQEAgc2hvd19vbXBf bm9kZSAoaW50IGxldmVsLCBnZmNfY29kZSAqYykKICAgICBjYXNlIEVYRUNf T0FDQ19DQUNIRTogbmFtZSA9ICJDQUNIRSI7IGlzX29hY2MgPSB0cnVlOyBi cmVhazsKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9EQVRBOiBuYW1lID0g IkVOVEVSIERBVEEiOyBpc19vYWNjID0gdHJ1ZTsgYnJlYWs7CiAgICAgY2Fz ZSBFWEVDX09BQ0NfRVhJVF9EQVRBOiBuYW1lID0gIkVYSVQgREFUQSI7IGlz X29hY2MgPSB0cnVlOyBicmVhazsKKyAgICBjYXNlIEVYRUNfT01QX0FTU1VN RTogbmFtZSA9ICJBU1NVTUUiOyBicmVhazsKICAgICBjYXNlIEVYRUNfT01Q X0FUT01JQzogbmFtZSA9ICJBVE9NSUMiOyBicmVhazsKICAgICBjYXNlIEVY RUNfT01QX0JBUlJJRVI6IG5hbWUgPSAiQkFSUklFUiI7IGJyZWFrOwogICAg IGNhc2UgRVhFQ19PTVBfQ0FOQ0VMOiBuYW1lID0gIkNBTkNFTCI7IGJyZWFr OwpAQCAtMjEyOCw2ICsyMTYwLDcgQEAgc2hvd19vbXBfbm9kZSAoaW50IGxl dmVsLCBnZmNfY29kZSAqYykKICAgICBjYXNlIEVYRUNfT0FDQ19DQUNIRToK ICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9EQVRBOgogICAgIGNhc2UgRVhF Q19PQUNDX0VYSVRfREFUQToKKyAgICBjYXNlIEVYRUNfT01QX0FTU1VNRToK ICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTDoKICAgICBjYXNlIEVYRUNfT01Q X0NBTkNFTExBVElPTl9QT0lOVDoKICAgICBjYXNlIEVYRUNfT01QX0RJU1RS SUJVVEU6CkBAIC0zMzUzLDYgKzMzODYsNyBAQCBzaG93X2NvZGVfbm9kZSAo aW50IGxldmVsLCBnZmNfY29kZSAqYykKICAgICBjYXNlIEVYRUNfT0FDQ19D QUNIRToKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9EQVRBOgogICAgIGNh c2UgRVhFQ19PQUNDX0VYSVRfREFUQToKKyAgICBjYXNlIEVYRUNfT01QX0FT U1VNRToKICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzoKICAgICBjYXNlIEVY RUNfT01QX0NBTkNFTDoKICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTExBVElP Tl9QT0lOVDoKQEAgLTM1MzEsNiArMzU2NSwxMyBAQCBzaG93X25hbWVzcGFj ZSAoZ2ZjX25hbWVzcGFjZSAqbnMpCiAJfQogICAgIH0KIAorICBpZiAobnMt Pm9tcF9hc3N1bWVzKQorICAgIHsKKyAgICAgIHNob3dfaW5kZW50ICgpOwor ICAgICAgZnByaW50ZiAoZHVtcGZpbGUsICIhJE9NUCBBU1NVTUVTIik7Cisg ICAgICBzaG93X29tcF9hc3N1bWVzIChucy0+b21wX2Fzc3VtZXMpOworICAg IH0KKwogICBmcHV0YyAoJ1xuJywgZHVtcGZpbGUpOwogICBzaG93X2luZGVu dCAoKTsKICAgZnB1dHMgKCJjb2RlOiIsIGR1bXBmaWxlKTsKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmggYi9nY2MvZm9ydHJhbi9nZm9y dHJhbi5oCmluZGV4IDRiYWJkNzc5MjRiLi42MDhkZGE0YmY1NSAxMDA2NDQK LS0tIGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAorKysgYi9nY2MvZm9ydHJh bi9nZm9ydHJhbi5oCkBAIC0zMTYsNyArMzE2LDkgQEAgZW51bSBnZmNfc3Rh dGVtZW50CiAgIFNUX09NUF9FTkRfUEFSQUxMRUxfTUFTS0VEX1RBU0tMT09Q X1NJTUQsIFNUX09NUF9NQVNLRURfVEFTS0xPT1AsCiAgIFNUX09NUF9FTkRf TUFTS0VEX1RBU0tMT09QLCBTVF9PTVBfTUFTS0VEX1RBU0tMT09QX1NJTUQs CiAgIFNUX09NUF9FTkRfTUFTS0VEX1RBU0tMT09QX1NJTUQsIFNUX09NUF9T Q09QRSwgU1RfT01QX0VORF9TQ09QRSwKLSAgU1RfT01QX0VSUk9SLCBTVF9O T05FCisgIFNUX09NUF9FUlJPUiwgU1RfT01QX0FTU1VNRSwgU1RfT01QX0VO RF9BU1NVTUUsIFNUX09NUF9BU1NVTUVTLAorICAvKiBOb3RlOiBnZmNfbWF0 Y2hfb21wX25vdGhpbmcgcmV0dXJucyBTVF9OT05FLiAqLworICBTVF9PTVBf Tk9USElORywgU1RfTk9ORQogfTsKIAogLyogVHlwZXMgb2YgaW50ZXJmYWNl cyB0aGF0IHdlIGNhbiBoYXZlLiAgQXNzaWdubWVudCBpbnRlcmZhY2VzIGFy ZQpAQCAtMTUwNiw2ICsxNTA4LDE4IEBAIGVudW0gZ2ZjX29tcF9iaW5kX3R5 cGUKICAgT01QX0JJTkRfVEhSRUFECiB9OwogCit0eXBlZGVmIHN0cnVjdCBn ZmNfb21wX2Fzc3VtcHRpb25zCit7CisgIGludCBuX2Fic2VudCwgbl9jb250 YWluczsKKyAgZW51bSBnZmNfc3RhdGVtZW50ICphYnNlbnQsICpjb250YWlu czsKKyAgZ2ZjX2V4cHJfbGlzdCAqaG9sZHM7CisgIGJvb2wgbm9fb3Blbm1w OjEsIG5vX29wZW5tcF9yb3V0aW5lczoxLCBub19wYXJhbGxlbGlzbToxOwor fQorZ2ZjX29tcF9hc3N1bXB0aW9uczsKKworI2RlZmluZSBnZmNfZ2V0X29t cF9hc3N1bXB0aW9ucygpIFhDTkVXIChnZmNfb21wX2Fzc3VtcHRpb25zKQor CisKIHR5cGVkZWYgc3RydWN0IGdmY19vbXBfY2xhdXNlcwogewogICBnZmNf b21wX25hbWVsaXN0ICpsaXN0c1tPTVBfTElTVF9OVU1dOwpAQCAtMTUyOSw2 ICsxNTQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2ZjX29tcF9jbGF1c2VzCiAg IHN0cnVjdCBnZmNfZXhwciAqaWZfZXhwcnNbT01QX0lGX0xBU1RdOwogICBz dHJ1Y3QgZ2ZjX2V4cHIgKmRpc3RfY2h1bmtfc2l6ZTsKICAgc3RydWN0IGdm Y19leHByICptZXNzYWdlOworICBzdHJ1Y3QgZ2ZjX29tcF9hc3N1bXB0aW9u cyAqYXNzdW1lOwogICBjb25zdCBjaGFyICpjcml0aWNhbF9uYW1lOwogICBl bnVtIGdmY19vbXBfZGVmYXVsdF9zaGFyaW5nIGRlZmF1bHRfc2hhcmluZzsK ICAgZW51bSBnZmNfb21wX2F0b21pY19vcCBhdG9taWNfb3A7CkBAIC0yMTQ1 LDYgKzIxNjAsOSBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfbmFtZXNwYWNlCiAg IC8qIExpbmtlZCBsaXN0IG9mICEkb21wIGRlY2xhcmUgdmFyaWFudCBjb25z dHJ1Y3RzLiAgKi8KICAgc3RydWN0IGdmY19vbXBfZGVjbGFyZV92YXJpYW50 ICpvbXBfZGVjbGFyZV92YXJpYW50OwogCisgIC8qIE9wZW5NUCBhc3N1bXB0 aW9ucy4gICovCisgIHN0cnVjdCBnZmNfb21wX2Fzc3VtcHRpb25zICpvbXBf YXNzdW1lczsKKwogICAvKiBBIGhhc2ggc2V0IGZvciB0aGUgZ2ZjIGV4cHJl c3Npb25zIHRoYXQgaGF2ZSBhbHJlYWR5CiAgICAgIGJlZW4gZmluYWxpemVk IGluIHRoaXMgbmFtZXNwYWNlLiAgKi8KIApAQCAtMjkxMyw3ICsyOTMxLDcg QEAgZW51bSBnZmNfZXhlY19vcAogICBFWEVDX09NUF9PUkRFUkVELCBFWEVD X09NUF9QQVJBTExFTCwgRVhFQ19PTVBfUEFSQUxMRUxfRE8sCiAgIEVYRUNf T01QX1BBUkFMTEVMX1NFQ1RJT05TLCBFWEVDX09NUF9QQVJBTExFTF9XT1JL U0hBUkUsCiAgIEVYRUNfT01QX1NFQ1RJT05TLCBFWEVDX09NUF9TSU5HTEUs IEVYRUNfT01QX1dPUktTSEFSRSwKLSAgRVhFQ19PTVBfQVRPTUlDLCBFWEVD X09NUF9CQVJSSUVSLCBFWEVDX09NUF9FTkRfTk9XQUlULAorICBFWEVDX09N UF9BU1NVTUUsIEVYRUNfT01QX0FUT01JQywgRVhFQ19PTVBfQkFSUklFUiwg RVhFQ19PTVBfRU5EX05PV0FJVCwKICAgRVhFQ19PTVBfRU5EX1NJTkdMRSwg RVhFQ19PTVBfVEFTSywgRVhFQ19PTVBfVEFTS1dBSVQsCiAgIEVYRUNfT01Q X1RBU0tZSUVMRCwgRVhFQ19PTVBfQ0FOQ0VMLCBFWEVDX09NUF9DQU5DRUxM QVRJT05fUE9JTlQsCiAgIEVYRUNfT01QX1RBU0tHUk9VUCwgRVhFQ19PTVBf U0lNRCwgRVhFQ19PTVBfRE9fU0lNRCwKQEAgLTM1NzYsNiArMzU5NCw3IEBA IHZvaWQgZ2ZjX2ZyZWVfb21wX2RlY2xhcmVfc2ltZCAoZ2ZjX29tcF9kZWNs YXJlX3NpbWQgKik7CiB2b2lkIGdmY19mcmVlX29tcF9kZWNsYXJlX3NpbWRf bGlzdCAoZ2ZjX29tcF9kZWNsYXJlX3NpbWQgKik7CiB2b2lkIGdmY19mcmVl X29tcF91ZHIgKGdmY19vbXBfdWRyICopOwogZ2ZjX29tcF91ZHIgKmdmY19v bXBfdWRyX2ZpbmQgKGdmY19zeW10cmVlICosIGdmY190eXBlc3BlYyAqKTsK K3ZvaWQgZ2ZjX3Jlc29sdmVfb21wX2Fzc3VtcHRpb25zIChnZmNfb21wX2Fz c3VtcHRpb25zICopOwogdm9pZCBnZmNfcmVzb2x2ZV9vbXBfZGlyZWN0aXZl IChnZmNfY29kZSAqLCBnZmNfbmFtZXNwYWNlICopOwogdm9pZCBnZmNfcmVz b2x2ZV9kb19pdGVyYXRvciAoZ2ZjX2NvZGUgKiwgZ2ZjX3N5bWJvbCAqLCBi b29sKTsKIHZvaWQgZ2ZjX3Jlc29sdmVfb21wX2xvY2FsX3ZhcnMgKGdmY19u YW1lc3BhY2UgKik7CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9tYXRjaC5o IGIvZ2NjL2ZvcnRyYW4vbWF0Y2guaAppbmRleCAxZjUzZTBjYjY3ZC4uMmE4 MDU4MTVkOWMgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL21hdGNoLmgKKysr IGIvZ2NjL2ZvcnRyYW4vbWF0Y2guaApAQCAtMTQ5LDYgKzE0OSw4IEBAIG1h dGNoIGdmY19tYXRjaF9vYWNjX3JvdXRpbmUgKHZvaWQpOwogCiAvKiBPcGVu TVAgZGlyZWN0aXZlIG1hdGNoZXJzLiAgKi8KIG1hdGNoIGdmY19tYXRjaF9v bXBfZW9zX2Vycm9yICh2b2lkKTsKK21hdGNoIGdmY19tYXRjaF9vbXBfYXNz dW1lICh2b2lkKTsKK21hdGNoIGdmY19tYXRjaF9vbXBfYXNzdW1lcyAodm9p ZCk7CiBtYXRjaCBnZmNfbWF0Y2hfb21wX2F0b21pYyAodm9pZCk7CiBtYXRj aCBnZmNfbWF0Y2hfb21wX2JhcnJpZXIgKHZvaWQpOwogbWF0Y2ggZ2ZjX21h dGNoX29tcF9jYW5jZWwgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRy YW4vb3Blbm1wLmNjIGIvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCmluZGV4IGNl NzE5YmQ1ZDkyLi5mNTg2NDYwYjYxYSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRy YW4vb3Blbm1wLmNjCisrKyBiL2djYy9mb3J0cmFuL29wZW5tcC5jYwpAQCAt MjksNiArMjksODYgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBD T1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJkaWFnbm9zdGljLmgi CiAjaW5jbHVkZSAiZ29tcC1jb25zdGFudHMuaCIKICNpbmNsdWRlICJ0YXJn ZXQtbWVtb3J5LmgiICAvKiBGb3IgZ2ZjX2VuY29kZV9jaGFyYWN0ZXIuICAq LworI2luY2x1ZGUgImJpdG1hcC5oIgorCisKK3N0YXRpYyBnZmNfc3RhdGVt ZW50IG9tcF9jb2RlX3RvX3N0YXRlbWVudCAoZ2ZjX2NvZGUgKik7CisKK2Vu dW0gZ2ZjX29tcF9kaXJlY3RpdmVfa2luZCB7CisgIEdGQ19PTVBfRElSX0RF Q0xBUkFUSVZFLAorICBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLAorICBHRkNf T01QX0RJUl9JTkZPUk1BVElPTkFMLAorICBHRkNfT01QX0RJUl9NRVRBLAor ICBHRkNfT01QX0RJUl9TVUJTSURJQVJZLAorICBHRkNfT01QX0RJUl9VVElM SVRZCit9OworCitzdHJ1Y3QgZ2ZjX29tcF9kaXJlY3RpdmUgeworICBjb25z dCBjaGFyICpuYW1lOworICBlbnVtIGdmY19vbXBfZGlyZWN0aXZlX2tpbmQg a2luZDsKKyAgZ2ZjX3N0YXRlbWVudCBzdDsKK307CisKKy8qIEFscGhhYmV0 aWNhbGx5IHNvcnRlZCBPcGVuTVAgY2xhdXNlcywgZXhjZXB0IHRoYXQgbG9u Z2VyIHN0cmluZ3MgYXJlIGJlZm9yZQorICAgc3Vic3RyaW5nczsgZXhjbHVk ZXMgY29tYmluZWQvY29tcG9zaXRlIGRpcmVjdGl2ZXMuIFNlZSBub3RlIGZv ciAib3JkZXJlZCIKKyAgIGFuZCAibm90aGluZyIuICAqLworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGdmY19vbXBfZGlyZWN0aXZlIGdmY19vbXBfZGlyZWN0 aXZlc1tdID0geworICAvKiB7ImFsbG9jYXRlIiwgR0ZDX09NUF9ESVJfREVD TEFSQVRJVkUsIFNUX09NUF9BTExPQ0FURX0sICovCisgIC8qIHsiYWxsb2Nh dG9ycyIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9BTExPQ0FU T1JTfSwgKi8KKyAgeyJhc3N1bWVzIiwgR0ZDX09NUF9ESVJfSU5GT1JNQVRJ T05BTCwgU1RfT01QX0FTU1VNRVN9LAorICB7ImFzc3VtZSIsIEdGQ19PTVBf RElSX0lORk9STUFUSU9OQUwsIFNUX09NUF9BU1NVTUV9LAorICB7ImF0b21p YyIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9BVE9NSUN9LAor ICB7ImJhcnJpZXIiLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBf QkFSUklFUn0sCisgIHsiY2FuY2VsbGF0aW9uIHBvaW50IiwgR0ZDX09NUF9E SVJfRVhFQ1VUQUJMRSwgU1RfT01QX0NBTkNFTExBVElPTl9QT0lOVH0sCisg IHsiY2FuY2VsIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX0NB TkNFTH0sCisgIHsiY3JpdGljYWwiLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxF LCBTVF9PTVBfQ1JJVElDQUx9LAorICAvKiB7ImRlY2xhcmUgbWFwcGVyIiwg R0ZDX09NUF9ESVJfREVDTEFSQVRJVkUsIFNUX09NUF9ERUNMQVJFX01BUFBF Un0sICovCisgIHsiZGVjbGFyZSByZWR1Y3Rpb24iLCBHRkNfT01QX0RJUl9E RUNMQVJBVElWRSwgU1RfT01QX0RFQ0xBUkVfUkVEVUNUSU9OfSwKKyAgeyJk ZWNsYXJlIHNpbWQiLCBHRkNfT01QX0RJUl9ERUNMQVJBVElWRSwgU1RfT01Q X0RFQ0xBUkVfU0lNRH0sCisgIHsiZGVjbGFyZSB0YXJnZXQiLCBHRkNfT01Q X0RJUl9ERUNMQVJBVElWRSwgU1RfT01QX0RFQ0xBUkVfVEFSR0VUfSwKKyAg eyJkZWNsYXJlIHZhcmlhbnQiLCBHRkNfT01QX0RJUl9ERUNMQVJBVElWRSwg U1RfT01QX0RFQ0xBUkVfVkFSSUFOVH0sCisgIHsiZGVwb2JqIiwgR0ZDX09N UF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX0RFUE9CSn0sCisgIC8qIHsiZGlz cGF0Y2giLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfRElTUEFU Q0h9LCAqLworICB7ImRpc3RyaWJ1dGUiLCBHRkNfT01QX0RJUl9FWEVDVVRB QkxFLCBTVF9PTVBfRElTVFJJQlVURX0sCisgIHsiZG8iLCBHRkNfT01QX0RJ Ul9FWEVDVVRBQkxFLCBTVF9PTVBfRE99LAorICAvKiAiZXJyb3IiIGJlY29t ZXMgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSB3aXRoIGF0KGV4ZWN1dGlvbikg Ki8KKyAgeyJlcnJvciIsIEdGQ19PTVBfRElSX1VUSUxJVFksIFNUX09NUF9F UlJPUn0sCisgIHsiZmx1c2giLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLCBT VF9PTVBfRkxVU0h9LAorICAvKiB7ImludGVyb3AiLCBHRkNfT01QX0RJUl9F WEVDVVRBQkxFLCBTVF9PTVBfSU5URVJPUH0sICovCisgIHsibG9vcCIsIEdG Q19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9MT09QfSwKKyAgeyJtYXNr ZWQiLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfTUFTS0VEfSwK KyAgLyogeyJtZXRhZGlyZWN0aXZlIiwgR0ZDX09NUF9ESVJfTUVUQSwgU1Rf T01QX01FVEFESVJFQ1RJVkV9LCAqLworICAvKiBOb3RlOiBnZmNfbWF0Y2hf b21wX25vdGhpbmcgcmV0dXJucyBTVF9OT05FLiAgKi8KKyAgeyJub3RoaW5n IiwgR0ZDX09NUF9ESVJfVVRJTElUWSwgU1RfT01QX05PVEhJTkd9LAorICAv KiBTcGVjaWFsIGNhc2U7IGZvciBub3cgbWFwIHRvIHRoZSBmaXJzdCBvbmUu CisgICAgIG9yZGVyZWQtYmxvY2thc3NvYyA9IFNUX09NUF9PUkRFUkVECisg ICAgIG9yZGVyZWQtc3RhbmRhbG9uZSA9IFNUX09NUF9PUkRFUkVEX0RFUEVO RCArIGRlcGVuZC9kb2Fjcm9zcy4gICovCisgIHsib3JkZXJlZCIsIEdGQ19P TVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9PUkRFUkVEfSwKKyAgeyJwYXJh bGxlbCIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9QQVJBTExF TH0sCisgIHsicmVxdWlyZXMiLCBHRkNfT01QX0RJUl9JTkZPUk1BVElPTkFM LCBTVF9PTVBfUkVRVUlSRVN9LAorICB7InNjYW4iLCBHRkNfT01QX0RJUl9T VUJTSURJQVJZLCBTVF9PTVBfU0NBTn0sCisgIHsic2NvcGUiLCBHRkNfT01Q X0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfU0NPUEV9LAorICB7InNlY3Rpb25z IiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1NFQ1RJT05TfSwK KyAgeyJzZWN0aW9uIiwgR0ZDX09NUF9ESVJfU1VCU0lESUFSWSwgU1RfT01Q X1NFQ1RJT059LAorICB7InNpbWQiLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxF LCBTVF9PTVBfU0lNRH0sCisgIHsic2luZ2xlIiwgR0ZDX09NUF9ESVJfRVhF Q1VUQUJMRSwgU1RfT01QX1NJTkdMRX0sCisgIHsidGFyZ2V0IGRhdGEiLCBH RkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfVEFSR0VUX0RBVEF9LAor ICB7InRhcmdldCBlbnRlciBkYXRhIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJM RSwgU1RfT01QX1RBUkdFVF9FTlRFUl9EQVRBfSwKKyAgeyJ0YXJnZXQgZXhp dCBkYXRhIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1RBUkdF VF9FWElUX0RBVEF9LAorICB7InRhcmdldCB1cGRhdGUiLCBHRkNfT01QX0RJ Ul9FWEVDVVRBQkxFLCBTVF9PTVBfVEFSR0VUX1VQREFURX0sCisgIHsidGFy Z2V0IiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1RBUkdFVH0s CisgIHsidGFza2xvb3AiLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9P TVBfVEFTS0xPT1B9LAorICB7InRhc2t3YWl0IiwgR0ZDX09NUF9ESVJfRVhF Q1VUQUJMRSwgU1RfT01QX1RBU0tXQUlUfSwKKyAgeyJ0YXNreWllbGQiLCBH RkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfVEFTS1lJRUxEfSwKKyAg eyJ0YXNrIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1RBU0t9 LAorICB7InRlYW1zIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01Q X1RFQU1TfSwKKyAgeyJ0aHJlYWRwcml2YXRlIiwgR0ZDX09NUF9ESVJfREVD TEFSQVRJVkUsIFNUX09NUF9USFJFQURQUklWQVRFfSwKKyAgLyogeyJ0aWxl IiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1RJTEV9LCAqLwor ICAvKiB7InVucm9sbCIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09N UF9VTlJPTEx9LCAqLworICB7IndvcmtzaGFyZSIsIEdGQ19PTVBfRElSX0VY RUNVVEFCTEUsIFNUX09NUF9XT1JLU0hBUkV9LAorfTsKKwogCiAvKiBNYXRj aCBhbiBlbmQgb2YgT3Blbk1QIGRpcmVjdGl2ZS4gIEVuZCBvZiBPcGVuTVAg ZGlyZWN0aXZlIGlzIG9wdGlvbmFsCiAgICB3aGl0ZXNwYWNlLCBmb2xsb3dl ZCBieSAnXG4nIG9yIGNvbW1lbnQgJyEnLiAgKi8KQEAgLTExMSw2ICsxOTEs MTMgQEAgZ2ZjX2ZyZWVfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAq YykKICAgZ2ZjX2ZyZWVfZXhwcl9saXN0IChjLT53YWl0X2xpc3QpOwogICBn ZmNfZnJlZV9leHByX2xpc3QgKGMtPnRpbGVfbGlzdCk7CiAgIGZyZWUgKENP TlNUX0NBU1QgKGNoYXIgKiwgYy0+Y3JpdGljYWxfbmFtZSkpOworICBpZiAo Yy0+YXNzdW1lKQorICAgIHsKKyAgICAgIGZyZWUgKGMtPmFzc3VtZS0+YWJz ZW50KTsKKyAgICAgIGZyZWUgKGMtPmFzc3VtZS0+Y29udGFpbnMpOworICAg ICAgZ2ZjX2ZyZWVfZXhwcl9saXN0IChjLT5hc3N1bWUtPmhvbGRzKTsKKyAg ICAgIGZyZWUgKGMtPmFzc3VtZSk7CisgICAgfQogICBmcmVlIChjKTsKIH0K IApAQCAtOTkyLDYgKzEwNzksNyBAQCBlbnVtIG9tcF9tYXNrMgogICBPTVBf Q0xBVVNFX0hBU19ERVZJQ0VfQUREUiwgIC8qIE9wZW5NUCA1LjEgICovCiAg IE9NUF9DTEFVU0VfRU5URVIsIC8qIE9wZW5NUCA1LjIgKi8KICAgT01QX0NM QVVTRV9ET0FDUk9TUywgLyogT3Blbk1QIDUuMiAqLworICBPTVBfQ0xBVVNF X0FTU1VNUFRJT05TLCAvKiBPcGVuTVAgNS4xLiAqLwogICAvKiBUaGlzIG11 c3QgY29tZSBsYXN0LiAgKi8KICAgT01QX01BU0syX0xBU1QKIH07CkBAIC0x NDA3LDYgKzE0OTUsMTczIEBAIGdmY19tYXRjaF9vbXBfY2xhdXNlX3JlZHVj dGlvbiAoY2hhciBwYywgZ2ZjX29tcF9jbGF1c2VzICpjLCBib29sIG9wZW5h Y2MsCiAgIHJldHVybiBNQVRDSF9ZRVM7CiB9CiAKK3N0YXRpYyBtYXRjaAor Z2ZjX29tcF9hYnNlbnRfY29udGFpbnNfY2xhdXNlIChnZmNfb21wX2Fzc3Vt cHRpb25zICoqYXNzdW1lLCBib29sIGlzX2Fic2VudCkKK3sKKyAgaWYgKCph c3N1bWUgPT0gTlVMTCkKKyAgICAqYXNzdW1lID0gZ2ZjX2dldF9vbXBfYXNz dW1wdGlvbnMgKCk7CisgIGRvCisgICAgeworICAgICAgZ2ZjX3N0YXRlbWVu dCBzdCA9IFNUX05PTkU7CisgICAgICBnZmNfZ29iYmxlX3doaXRlc3BhY2Ug KCk7CisgICAgICBsb2N1cyBvbGRfbG9jID0gZ2ZjX2N1cnJlbnRfbG9jdXM7 CisgICAgICBjaGFyIGMgPSBnZmNfcGVla19hc2NpaV9jaGFyICgpOworICAg ICAgZW51bSBnZmNfb21wX2RpcmVjdGl2ZV9raW5kIGtpbmQKKwk9IEdGQ19P TVBfRElSX0RFQ0xBUkFUSVZFOyAvKiBTaWxlbmNlIHdhcm5pbmcuICovCisg ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX1NJWkUgKGdmY19v bXBfZGlyZWN0aXZlcyk7IGkrKykKKwl7CisJICBpZiAoZ2ZjX29tcF9kaXJl Y3RpdmVzW2ldLm5hbWVbMF0gPiBjKQorCSAgICBicmVhazsKKwkgIGlmIChn ZmNfb21wX2RpcmVjdGl2ZXNbaV0ubmFtZVswXSAhPSBjKQorCSAgICBjb250 aW51ZTsKKwkgIGlmIChnZmNfbWF0Y2ggKGdmY19vbXBfZGlyZWN0aXZlc1tp XS5uYW1lKSA9PSBNQVRDSF9ZRVMpCisJICAgIHsKKwkgICAgICBzdCA9IGdm Y19vbXBfZGlyZWN0aXZlc1tpXS5zdDsKKwkgICAgICBraW5kID0gZ2ZjX29t cF9kaXJlY3RpdmVzW2ldLmtpbmQ7CisJICAgIH0KKwl9CisgICAgICBnZmNf Z29iYmxlX3doaXRlc3BhY2UgKCk7CisgICAgICBjID0gZ2ZjX3BlZWtfYXNj aWlfY2hhciAoKTsKKyAgICAgIGlmIChzdCA9PSBTVF9OT05FIHx8IChjICE9 ICcsJyAmJiBjICE9ICcpJykpCisJeworCSAgaWYgKHN0ID09IFNUX05PTkUp CisJICAgIGdmY19lcnJvciAoIlVua25vd24gZGlyZWN0aXZlIGF0ICVMIiwg Jm9sZF9sb2MpOworCSAgZWxzZQorCSAgICBnZmNfZXJyb3IgKCJJbnZhbGlk IGNvbWJpbmVkIG9yIGNvbXBvc2l0IGRpcmVjdGl2ZSBhdCAlTCIsCisJCSAg ICAgICAmb2xkX2xvYyk7CisJICByZXR1cm4gTUFUQ0hfRVJST1I7CisJfQor ICAgICAgaWYgKGtpbmQgPT0gR0ZDX09NUF9ESVJfREVDTEFSQVRJVkUKKwkg IHx8IGtpbmQgPT0gR0ZDX09NUF9ESVJfSU5GT1JNQVRJT05BTAorCSAgfHwg a2luZCA9PSBHRkNfT01QX0RJUl9NRVRBKQorCXsKKwkgIGdmY19lcnJvciAo IkludmFsaWQgJXFzIGRpcmVjdGl2ZSBhdCAlTCBpbiAlcyBjbGF1c2U6IGRl Y2xhcmF0aXZlLCAiCisJCSAgICAgImluZm9ybWF0aW9uYWwgYW5kIG1ldGEg ZGlyZWN0aXZlcyBub3QgcGVybWl0dGVkIiwKKwkJICAgICBnZmNfYXNjaWlf c3RhdGVtZW50IChzdCwgdHJ1ZSksICZvbGRfbG9jLAorCQkgICAgIGlzX2Fi c2VudCA/ICJBQlNFTlQiIDogIkNPTlRBSU5TIik7CisJICByZXR1cm4gTUFU Q0hfRVJST1I7CisJfQorICAgICAgaWYgKGlzX2Fic2VudCkKKwl7CisJICAv KiBVc2UgZXhwb25lbnRpYWwgYWxsb2NhdGlvbjsgZXF1aXZhbGVudCB0byBw b3cycCh4KS4gKi8KKwkgIGludCBpID0gKCphc3N1bWUpLT5uX2Fic2VudDsK KwkgIGludCBzaXplID0gKChpID09IDApID8gNAorCQkgICAgICA6IHBvdzJw X2h3aSAoaSkgPT0gMSA/IGkqMiA6IDApOworCSAgaWYgKHNpemUgIT0gMCkK KwkgICAgKCphc3N1bWUpLT5hYnNlbnQgPSBYUkVTSVpFVkVDIChnZmNfc3Rh dGVtZW50LAorCQkJCQkgICAgKCphc3N1bWUpLT5hYnNlbnQsIHNpemUpOwor CSAgKCphc3N1bWUpLT5hYnNlbnRbKCphc3N1bWUpLT5uX2Fic2VudCsrXSA9 IHN0OworCX0KKyAgICAgIGVsc2UKKwl7CisJICBpbnQgaSA9ICgqYXNzdW1l KS0+bl9jb250YWluczsKKwkgIGludCBzaXplID0gKChpID09IDApID8gNAor CQkgICAgICA6IHBvdzJwX2h3aSAoaSkgPT0gMSA/IGkqMiA6IDApOworCSAg aWYgKHNpemUgIT0gMCkKKwkgICAgKCphc3N1bWUpLT5jb250YWlucyA9IFhS RVNJWkVWRUMgKGdmY19zdGF0ZW1lbnQsCisJCQkJCSAgICAgICgqYXNzdW1l KS0+Y29udGFpbnMsIHNpemUpOworCSAgKCphc3N1bWUpLT5jb250YWluc1so KmFzc3VtZSktPm5fY29udGFpbnMrK10gPSBzdDsKKwl9CisgICAgICBnZmNf Z29iYmxlX3doaXRlc3BhY2UgKCk7CisgICAgICBpZiAoZ2ZjX21hdGNoKCIs IikgPT0gTUFUQ0hfWUVTKQorCWNvbnRpbnVlOworICAgICAgaWYgKGdmY19t YXRjaCgiKSIpID09IE1BVENIX1lFUykKKwlicmVhazsKKyAgICAgIGdmY19l cnJvciAoIkV4cGVjdGVkICU8LCU+IG9yICU8KSU+IGF0ICVDIik7CisgICAg ICByZXR1cm4gTUFUQ0hfRVJST1I7CisgICAgfQorICB3aGlsZSAodHJ1ZSk7 CisKKyAgcmV0dXJuIE1BVENIX1lFUzsKK30KKworLyogQ2hlY2sgJ2NoZWNr JyBhcmd1bWVudCBmb3IgZHVwbGljYXRlZCBzdGF0ZW1lbnRzIGluIGFic2Vu dCBhbmQvb3IgY29udGFpbnMKKyAgIGNsYXVzZXMuIElmICdtZXJnZScsIG1l cmdlIHRoZW0gZnJvbSBjaGVjayB0byAnbWVyZ2UnLiAgKi8KKworc3RhdGlj IG1hdGNoCitvbXBfdmVyaWZ5X21lcmdlX2Fic2VudF9jb250YWlucyAoZ2Zj X3N0YXRlbWVudCBzdCwgZ2ZjX29tcF9hc3N1bXB0aW9ucyAqY2hlY2ssCisJ CQkJICBnZmNfb21wX2Fzc3VtcHRpb25zICptZXJnZSwgbG9jdXMgKmxvYykK K3sKKyAgaWYgKGNoZWNrID09IE5VTEwpCisgICAgcmV0dXJuIE1BVENIX1lF UzsKKyAgYml0bWFwX2hlYWQgYWJzZW50X2hlYWQsIGNvbnRhaW5zX2hlYWQ7 CisgIGJpdG1hcF9vYnN0YWNrX2luaXRpYWxpemUgKE5VTEwpOworICBiaXRt YXBfaW5pdGlhbGl6ZSAoJmFic2VudF9oZWFkLCAmYml0bWFwX2RlZmF1bHRf b2JzdGFjayk7CisgIGJpdG1hcF9pbml0aWFsaXplICgmY29udGFpbnNfaGVh ZCwgJmJpdG1hcF9kZWZhdWx0X29ic3RhY2spOworCisgIG1hdGNoIG0gPSBN QVRDSF9ZRVM7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hlY2stPm5fYWJz ZW50OyBpKyspCisgICAgaWYgKCFiaXRtYXBfc2V0X2JpdCAoJmFic2VudF9o ZWFkLCBjaGVjay0+YWJzZW50W2ldKSkKKyAgICAgIHsKKwlnZmNfZXJyb3Ig KCIlcXMgZGlyZWN0aXZlIG1lbnRpb25lZCBtdWx0aXBsZSB0aW1lcyBpbiAl cyBjbGF1c2UgaW4gJXMgIgorCQkgICAiZGlyZWN0aXZlIGF0ICVMIiwKKwkJ ICAgZ2ZjX2FzY2lpX3N0YXRlbWVudCAoY2hlY2stPmFic2VudFtpXSwgdHJ1 ZSksCisJCSAgICJBQlNFTlQiLCBnZmNfYXNjaWlfc3RhdGVtZW50IChzdCks IGxvYyk7CisJbSA9IE1BVENIX0VSUk9SOworICAgICAgfQorICBmb3IgKGlu dCBpID0gMDsgaSA8IGNoZWNrLT5uX2NvbnRhaW5zOyBpKyspCisgICAgewor ICAgICAgaWYgKCFiaXRtYXBfc2V0X2JpdCAoJmNvbnRhaW5zX2hlYWQsIGNo ZWNrLT5jb250YWluc1tpXSkpCisJeworCSAgZ2ZjX2Vycm9yICgiJXFzIGRp cmVjdGl2ZSBtZW50aW9uZWQgbXVsdGlwbGUgdGltZXMgaW4gJXMgY2xhdXNl IGluICVzICIKKwkJICAgICAiZGlyZWN0aXZlIGF0ICVMIiwKKwkJICAgICBn ZmNfYXNjaWlfc3RhdGVtZW50IChjaGVjay0+Y29udGFpbnNbaV0sIHRydWUp LAorCQkgICAgICJDT05UQUlOUyIsIGdmY19hc2NpaV9zdGF0ZW1lbnQgKHN0 KSwgbG9jKTsKKwkgIG0gPSBNQVRDSF9FUlJPUjsKKwl9CisgICAgICBpZiAo Yml0bWFwX2JpdF9wICgmYWJzZW50X2hlYWQsIGNoZWNrLT5jb250YWluc1tp XSkpCisJeworCSAgZ2ZjX2Vycm9yICgiJXFzIGRpcmVjdGl2ZSBtZW50aW9u ZWQgYm90aCB0aW1lcyBpbiBBQlNFTlQgYW5kIENPTlRBSU5TICIKKwkJICAg ICAiY2xhdXNlcyBpbiAlcyBkaXJlY3RpdmUgYXQgJUwiLAorCQkgICAgIGdm Y19hc2NpaV9zdGF0ZW1lbnQgKGNoZWNrLT5hYnNlbnRbaV0sIHRydWUpLAor CQkgICAgIGdmY19hc2NpaV9zdGF0ZW1lbnQgKHN0KSwgbG9jKTsKKwkgIG0g PSBNQVRDSF9FUlJPUjsKKwl9CisgICAgfQorCisgIGlmIChtID09IE1BVENI X0VSUk9SKQorICAgIHJldHVybiBNQVRDSF9FUlJPUjsKKyAgaWYgKG1lcmdl ID09IE5VTEwpCisgICAgcmV0dXJuIE1BVENIX1lFUzsKKyAgaWYgKG1lcmdl LT5hYnNlbnQgPT0gTlVMTCAmJiBjaGVjay0+YWJzZW50KQorICAgIHsKKyAg ICAgIG1lcmdlLT5uX2Fic2VudCA9IGNoZWNrLT5uX2Fic2VudDsKKyAgICAg IG1lcmdlLT5hYnNlbnQgPSBjaGVjay0+YWJzZW50OworICAgICAgY2hlY2st PmFic2VudCA9IE5VTEw7CisgICAgfQorICBlbHNlIGlmIChtZXJnZS0+YWJz ZW50ICYmIGNoZWNrLT5hYnNlbnQpCisgICAgeworICAgICAgY2hlY2stPmFi c2VudCA9IFhSRVNJWkVWRUMgKGdmY19zdGF0ZW1lbnQsIGNoZWNrLT5hYnNl bnQsCisJCQkJICBtZXJnZS0+bl9hYnNlbnQgKyBjaGVjay0+bl9hYnNlbnQp OworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtZXJnZS0+bl9hYnNlbnQ7 IGkrKykKKwlpZiAoIWJpdG1hcF9iaXRfcCAoJmFic2VudF9oZWFkLCBtZXJn ZS0+YWJzZW50W2ldKSkKKwkgIGNoZWNrLT5hYnNlbnRbY2hlY2stPm5fYWJz ZW50KytdID0gbWVyZ2UtPmFic2VudFtpXTsKKyAgICAgIGZyZWUgKG1lcmdl LT5hYnNlbnQpOworICAgICAgbWVyZ2UtPmFic2VudCA9IGNoZWNrLT5hYnNl bnQ7CisgICAgICBtZXJnZS0+bl9hYnNlbnQgPSBjaGVjay0+bl9hYnNlbnQ7 CisgICAgICBjaGVjay0+YWJzZW50ID0gTlVMTDsKKyAgICB9CisgIGlmICht ZXJnZS0+Y29udGFpbnMgPT0gTlVMTCAmJiBjaGVjay0+Y29udGFpbnMpCisg ICAgeworICAgICAgbWVyZ2UtPm5fY29udGFpbnMgPSBjaGVjay0+bl9jb250 YWluczsKKyAgICAgIG1lcmdlLT5jb250YWlucyA9IGNoZWNrLT5jb250YWlu czsKKyAgICAgIGNoZWNrLT5jb250YWlucyA9IE5VTEw7CisgICAgfQorICBl bHNlIGlmIChtZXJnZS0+Y29udGFpbnMgJiYgY2hlY2stPmNvbnRhaW5zKQor ICAgIHsKKyAgICAgIGNoZWNrLT5jb250YWlucyA9IFhSRVNJWkVWRUMgKGdm Y19zdGF0ZW1lbnQsIGNoZWNrLT5jb250YWlucywKKwkJCQkgICAgbWVyZ2Ut Pm5fY29udGFpbnMgKyBjaGVjay0+bl9jb250YWlucyk7CisgICAgICBmb3Ig KGludCBpID0gMDsgaSA8IG1lcmdlLT5uX2NvbnRhaW5zOyBpKyspCisJaWYg KCFiaXRtYXBfYml0X3AgKCZjb250YWluc19oZWFkLCBtZXJnZS0+Y29udGFp bnNbaV0pKQorCSAgY2hlY2stPmNvbnRhaW5zW2NoZWNrLT5uX2NvbnRhaW5z KytdID0gbWVyZ2UtPmNvbnRhaW5zW2ldOworICAgICAgZnJlZSAobWVyZ2Ut PmNvbnRhaW5zKTsKKyAgICAgIG1lcmdlLT5jb250YWlucyA9IGNoZWNrLT5j b250YWluczsKKyAgICAgIG1lcmdlLT5uX2NvbnRhaW5zID0gY2hlY2stPm5f Y29udGFpbnM7CisgICAgICBjaGVjay0+Y29udGFpbnMgPSBOVUxMOworICAg IH0KKyAgcmV0dXJuIE1BVENIX1lFUzsKK30KKwogCiAvKiBNYXRjaCB3aXRo IGR1cGxpY2F0ZSBjaGVjay4gTWF0Y2hlcyAnbmFtZScuIElmIGV4cHIgIT0g TlVMTCwgaXQKICAgIHRoZW4gbWF0Y2hlcyAnKGV4cHIpJywgb3RoZXJ3aXNl LCBpZiBvcGVuX3BhcmVucyBpcyB0cnVlLApAQCAtMTUxMSw2ICsxNzY2LDE0 IEBAIGdmY19tYXRjaF9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoq Y3AsIGNvbnN0IG9tcF9tYXNrIG1hc2ssCiAJY2FzZSAnYSc6CiAJICBlbmRf Y29sb24gPSBmYWxzZTsKIAkgIGhlYWQgPSBOVUxMOworCSAgaWYgKChtYXNr ICYgT01QX0NMQVVTRV9BU1NVTVBUSU9OUykKKwkgICAgICAmJiBnZmNfbWF0 Y2ggKCJhYnNlbnQgKCAiKSA9PSBNQVRDSF9ZRVMpCisJICAgIHsKKwkgICAg ICBpZiAoZ2ZjX29tcF9hYnNlbnRfY29udGFpbnNfY2xhdXNlICgmYy0+YXNz dW1lLCB0cnVlKQorCQkgICE9IE1BVENIX1lFUykKKwkJZ290byBlcnJvcjsK KwkgICAgICBjb250aW51ZTsKKwkgICAgfQogCSAgaWYgKChtYXNrICYgT01Q X0NMQVVTRV9BTElHTkVEKQogCSAgICAgICYmIGdmY19tYXRjaF9vbXBfdmFy aWFibGVfbGlzdCAoImFsaWduZWQgKCIsCiAJCQkJCSAgICAgICZjLT5saXN0 c1tPTVBfTElTVF9BTElHTkVEXSwKQEAgLTE3NDMsNiArMjAwNiwxNCBAQCBn ZmNfbWF0Y2hfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAqKmNwLCBj b25zdCBvbXBfbWFzayBtYXNrLAogCSAgICAgIG5lZWRzX3NwYWNlID0gdHJ1 ZTsKIAkgICAgICBjb250aW51ZTsKIAkgICAgfQorCSAgaWYgKChtYXNrICYg T01QX0NMQVVTRV9BU1NVTVBUSU9OUykKKwkgICAgICAmJiBnZmNfbWF0Y2gg KCJjb250YWlucyAoICIpID09IE1BVENIX1lFUykKKwkgICAgeworCSAgICAg IGlmIChnZmNfb21wX2Fic2VudF9jb250YWluc19jbGF1c2UgKCZjLT5hc3N1 bWUsIGZhbHNlKQorCQkgICE9IE1BVENIX1lFUykKKwkJZ290byBlcnJvcjsK KwkgICAgICBjb250aW51ZTsKKwkgICAgfQogCSAgaWYgKChtYXNrICYgT01Q X0NMQVVTRV9DT1BZKQogCSAgICAgICYmIGdmY19tYXRjaCAoImNvcHkgKCAi KSA9PSBNQVRDSF9ZRVMKIAkgICAgICAmJiBnZmNfbWF0Y2hfb21wX21hcF9j bGF1c2UgKCZjLT5saXN0c1tPTVBfTElTVF9NQVBdLApAQCAtMjI3Nyw2ICsy NTQ4LDIwIEBAIGdmY19tYXRjaF9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1 c2VzICoqY3AsIGNvbnN0IG9tcF9tYXNrIG1hc2ssCiAJCWdvdG8gZXJyb3I7 CiAJICAgICAgY29udGludWU7CiAJICAgIH0KKwkgIGlmICgobWFzayAmIE9N UF9DTEFVU0VfQVNTVU1QVElPTlMpCisJICAgICAgJiYgZ2ZjX21hdGNoICgi aG9sZHMgKCAiKSA9PSBNQVRDSF9ZRVMpCisJICAgIHsKKwkgICAgICBnZmNf ZXhwciAqZTsKKwkgICAgICBpZiAoZ2ZjX21hdGNoICgiJWUgKSIsICZlKSAh PSBNQVRDSF9ZRVMpCisJCWdvdG8gZXJyb3I7CisJICAgICAgaWYgKGMtPmFz c3VtZSA9PSBOVUxMKQorCQljLT5hc3N1bWUgPSBnZmNfZ2V0X29tcF9hc3N1 bXB0aW9ucyAoKTsKKwkgICAgICBnZmNfZXhwcl9saXN0ICplbCA9IFhDTkVX IChnZmNfZXhwcl9saXN0KTsKKwkgICAgICBlbC0+ZXhwciA9IGU7CisJICAg ICAgZWwtPm5leHQgPSBjLT5hc3N1bWUtPmhvbGRzOworCSAgICAgIGMtPmFz c3VtZS0+aG9sZHMgPSBlbDsKKwkgICAgICBjb250aW51ZTsKKwkgICAgfQog CSAgaWYgKChtYXNrICYgT01QX0NMQVVTRV9IT1NUX1NFTEYpCiAJICAgICAg JiYgZ2ZjX21hdGNoICgiaG9zdCAoICIpID09IE1BVENIX1lFUwogCSAgICAg ICYmIGdmY19tYXRjaF9vbXBfbWFwX2NsYXVzZSAoJmMtPmxpc3RzW09NUF9M SVNUX01BUF0sCkBAIC0yNjY0LDYgKzI5NDksNDEgQEAgZ2ZjX21hdGNoX29t cF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKipjcCwgY29uc3Qgb21wX21h c2sgbWFzaywKIAkJCQkJICAgT01QX01BUF9JRl9QUkVTRU5ULCB0cnVlLAog CQkJCQkgICBhbGxvd19kZXJpdmVkKSkKIAkgICAgY29udGludWU7CisJICBp ZiAoKG1hc2sgJiBPTVBfQ0xBVVNFX0FTU1VNUFRJT05TKQorCSAgICAgICYm IChtID0gZ2ZjX21hdGNoX2R1cGxfY2hlY2sgKCFjLT5hc3N1bWUKKwkJCQkJ ICAgIHx8ICFjLT5hc3N1bWUtPm5vX29wZW5tcF9yb3V0aW5lcywKKwkJCQkJ ICAgICJub19vcGVubXBfcm91dGluZXMiKSkgPT0gTUFUQ0hfWUVTKQorCSAg ICB7CisJICAgICAgaWYgKG0gPT0gTUFUQ0hfRVJST1IpCisJCWdvdG8gZXJy b3I7CisJICAgICAgaWYgKGMtPmFzc3VtZSA9PSBOVUxMKQorCQljLT5hc3N1 bWUgPSBnZmNfZ2V0X29tcF9hc3N1bXB0aW9ucyAoKTsKKwkgICAgICBjLT5h c3N1bWUtPm5vX29wZW5tcF9yb3V0aW5lcyA9IG5lZWRzX3NwYWNlID0gdHJ1 ZTsKKwkgICAgICBjb250aW51ZTsKKwkgICAgfQorCSAgaWYgKChtYXNrICYg T01QX0NMQVVTRV9BU1NVTVBUSU9OUykKKwkgICAgICAmJiAobSA9IGdmY19t YXRjaF9kdXBsX2NoZWNrICghYy0+YXNzdW1lIHx8ICFjLT5hc3N1bWUtPm5v X29wZW5tcCwKKwkJCQkJICAgICJub19vcGVubXAiKSkgPT0gTUFUQ0hfWUVT KQorCSAgICB7CisJICAgICAgaWYgKG0gPT0gTUFUQ0hfRVJST1IpCisJCWdv dG8gZXJyb3I7CisJICAgICAgaWYgKGMtPmFzc3VtZSA9PSBOVUxMKQorCQlj LT5hc3N1bWUgPSBnZmNfZ2V0X29tcF9hc3N1bXB0aW9ucyAoKTsKKwkgICAg ICBjLT5hc3N1bWUtPm5vX29wZW5tcCA9IG5lZWRzX3NwYWNlID0gdHJ1ZTsK KwkgICAgICBjb250aW51ZTsKKwkgICAgfQorCSAgaWYgKChtYXNrICYgT01Q X0NMQVVTRV9BU1NVTVBUSU9OUykKKwkgICAgICAmJiAobSA9IGdmY19tYXRj aF9kdXBsX2NoZWNrICghYy0+YXNzdW1lCisJCQkJCSAgICB8fCAhYy0+YXNz dW1lLT5ub19wYXJhbGxlbGlzbSwKKwkJCQkJICAgICJub19wYXJhbGxlbGlz bSIpKSA9PSBNQVRDSF9ZRVMpCisJICAgIHsKKwkgICAgICBpZiAobSA9PSBN QVRDSF9FUlJPUikKKwkJZ290byBlcnJvcjsKKwkgICAgICBpZiAoYy0+YXNz dW1lID09IE5VTEwpCisJCWMtPmFzc3VtZSA9IGdmY19nZXRfb21wX2Fzc3Vt cHRpb25zICgpOworCSAgICAgIGMtPmFzc3VtZS0+bm9fcGFyYWxsZWxpc20g PSBuZWVkc19zcGFjZSA9IHRydWU7CisJICAgICAgY29udGludWU7CisJICAg IH0KIAkgIGlmICgobWFzayAmIE9NUF9DTEFVU0VfTk9HUk9VUCkKIAkgICAg ICAmJiAobSA9IGdmY19tYXRjaF9kdXBsX2NoZWNrICghYy0+bm9ncm91cCwg Im5vZ3JvdXAiKSkKIAkJICE9IE1BVENIX05PKQpAQCAtMzk0MSw2ICs0MjYx LDY5IEBAIG1hdGNoX29tcCAoZ2ZjX2V4ZWNfb3Agb3AsIGNvbnN0IG9tcF9t YXNrIG1hc2spCiB9CiAKIAorbWF0Y2gKK2dmY19tYXRjaF9vbXBfYXNzdW1l ICh2b2lkKQoreworICBnZmNfb21wX2NsYXVzZXMgKmM7CisgIGxvY3VzIGxv YyA9IGdmY19jdXJyZW50X2xvY3VzOworICBpZiAoKGdmY19tYXRjaF9vbXBf Y2xhdXNlcyAoJmMsIG9tcF9tYXNrIChPTVBfQ0xBVVNFX0FTU1VNUFRJT05T KSkKKyAgICAgICAhPSBNQVRDSF9ZRVMpCisgICAgICB8fCAob21wX3Zlcmlm eV9tZXJnZV9hYnNlbnRfY29udGFpbnMgKFNUX09NUF9BU1NVTUUsIGMtPmFz c3VtZSwgTlVMTCwKKwkJCQkJICAgICZsb2MpICE9IE1BVENIX1lFUykpCisg ICAgcmV0dXJuIE1BVENIX0VSUk9SOworICBuZXdfc3Qub3AgPSBFWEVDX09N UF9BU1NVTUU7CisgIG5ld19zdC5leHQub21wX2NsYXVzZXMgPSBjOworICBy ZXR1cm4gTUFUQ0hfWUVTOworfQorCisKK21hdGNoCitnZmNfbWF0Y2hfb21w X2Fzc3VtZXMgKHZvaWQpCit7CisgIGdmY19vbXBfY2xhdXNlcyAqYzsKKyAg bG9jdXMgbG9jID0gZ2ZjX2N1cnJlbnRfbG9jdXM7CisgIGlmICghZ2ZjX2N1 cnJlbnRfbnMtPnByb2NfbmFtZQorICAgICAgfHwgKGdmY19jdXJyZW50X25z LT5wcm9jX25hbWUtPmF0dHIuZmxhdm9yICE9IEZMX01PRFVMRQorCSAgJiYg IWdmY19jdXJyZW50X25zLT5wcm9jX25hbWUtPmF0dHIuc3Vicm91dGluZQor CSAgJiYgIWdmY19jdXJyZW50X25zLT5wcm9jX25hbWUtPmF0dHIuZnVuY3Rp b24pKQorICAgIHsKKyAgICAgIGdmY19lcnJvciAoIiFPTVAgQVNTVU1FUyBh dCAlQyBtdXN0IGJlIGluIHRoZSBzcGVjaWZpY2F0aW9uIHBhcnQgb2YgYSAi CisJCSAic3VicHJvZ3JhbSBvciBtb2R1bGUiKTsKKyAgICAgIHJldHVybiBN QVRDSF9FUlJPUjsKKyAgICB9CisgIGlmICgoZ2ZjX21hdGNoX29tcF9jbGF1 c2VzICgmYywgb21wX21hc2sgKE9NUF9DTEFVU0VfQVNTVU1QVElPTlMpKQor ICAgICAgICE9IE1BVENIX1lFUykKKyAgICAgIHx8IChvbXBfdmVyaWZ5X21l cmdlX2Fic2VudF9jb250YWlucyAoU1RfT01QX0FTU1VNRVMsIGMtPmFzc3Vt ZSwKKwkJCQkJICAgIGdmY19jdXJyZW50X25zLT5vbXBfYXNzdW1lcywgJmxv YykKKwkgICE9IE1BVENIX1lFUykpCisgICAgcmV0dXJuIE1BVENIX0VSUk9S OworICBpZiAoZ2ZjX2N1cnJlbnRfbnMtPm9tcF9hc3N1bWVzID09IE5VTEwp CisgICAgeworICAgICAgZ2ZjX2N1cnJlbnRfbnMtPm9tcF9hc3N1bWVzID0g Yy0+YXNzdW1lOworICAgICAgYy0+YXNzdW1lID0gTlVMTDsKKyAgICB9Cisg IGVsc2UgaWYgKGdmY19jdXJyZW50X25zLT5vbXBfYXNzdW1lcyAmJiBjLT5h c3N1bWUpCisgICAgeworICAgICAgZ2ZjX2N1cnJlbnRfbnMtPm9tcF9hc3N1 bWVzLT5ub19vcGVubXAgfD0gYy0+YXNzdW1lLT5ub19vcGVubXA7CisgICAg ICBnZmNfY3VycmVudF9ucy0+b21wX2Fzc3VtZXMtPm5vX29wZW5tcF9yb3V0 aW5lcworCXw9IGMtPmFzc3VtZS0+bm9fb3Blbm1wX3JvdXRpbmVzOworICAg ICAgZ2ZjX2N1cnJlbnRfbnMtPm9tcF9hc3N1bWVzLT5ub19wYXJhbGxlbGlz bSB8PSBjLT5hc3N1bWUtPm5vX3BhcmFsbGVsaXNtOworICAgICAgaWYgKGdm Y19jdXJyZW50X25zLT5vbXBfYXNzdW1lcy0+aG9sZHMgJiYgYy0+YXNzdW1l LT5ob2xkcykKKwl7CisJICBnZmNfZXhwcl9saXN0ICplbCA9IGdmY19jdXJy ZW50X25zLT5vbXBfYXNzdW1lcy0+aG9sZHM7CisJICBmb3IgKCA7IGVsLT5u ZXh0IDsgZWwgPSBlbC0+bmV4dCkKKwkgICAgOworCSAgZWwtPm5leHQgPSBj LT5hc3N1bWUtPmhvbGRzOworCX0KKyAgICAgIGVsc2UgaWYgKGMtPmFzc3Vt ZS0+aG9sZHMpCisJZ2ZjX2N1cnJlbnRfbnMtPm9tcF9hc3N1bWVzLT5ob2xk cyA9IGMtPmFzc3VtZS0+aG9sZHM7CisgICAgICBjLT5hc3N1bWUtPmhvbGRz ID0gTlVMTDsKKyAgICB9CisgIGdmY19mcmVlX29tcF9jbGF1c2VzIChjKTsK KyAgcmV0dXJuIE1BVENIX1lFUzsKK30KKworCiBtYXRjaAogZ2ZjX21hdGNo X29tcF9jcml0aWNhbCAodm9pZCkKIHsKQEAgLTY1MDUsNiArNjg4OCwyMCBA QCByZXNvbHZlX29tcF91ZHJfY2xhdXNlIChnZmNfb21wX25hbWVsaXN0ICpu LCBnZmNfbmFtZXNwYWNlICpucywKICAgcmV0dXJuIGNvcHk7CiB9CiAKKwor LyogUmVzb2x2ZSBBU1NVTUUncyBhbmQgQVNTVU1FUycgYXNzdW1wdGlvbiBj bGF1c2VzLiAgTm90ZSB0aGF0IGFic2VudC9jb250YWlucworICAgaXMgaGFu ZGxlZCBkdXJpbmcgcGFyc2UgdGltZSBpbiBvbXBfdmVyaWZ5X21lcmdlX2Fi c2VudF9jb250YWlucy4gICAqLworCit2b2lkCitnZmNfcmVzb2x2ZV9vbXBf YXNzdW1wdGlvbnMgKGdmY19vbXBfYXNzdW1wdGlvbnMgKmFzc3VtZSkKK3sK KyAgZm9yIChnZmNfZXhwcl9saXN0ICplbCA9IGFzc3VtZS0+aG9sZHM7IGVs OyBlbCA9IGVsLT5uZXh0KQorICAgIGlmICghZ2ZjX3Jlc29sdmVfZXhwciAo ZWwtPmV4cHIpIHx8IGVsLT5leHByLT50cy50eXBlICE9IEJUX0xPR0lDQUwp CisJZ2ZjX2Vycm9yICgiSE9MRFMgZXhwcmVzc2lvbiBhdCAlTCBtdXN0IGJl IGEgbG9naWNhbCBleHByZXNzaW9uIiwKKwkJICAgJmVsLT5leHByLT53aGVy ZSk7Cit9CisKKwogLyogT3Blbk1QIGRpcmVjdGl2ZSByZXNvbHZpbmcgcm91 dGluZXMuICAqLwogCiBzdGF0aWMgdm9pZApAQCAtNzg4OCw2ICs4Mjg1LDkg QEAgcmVzb2x2ZV9vbXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19v bXBfY2xhdXNlcyAqb21wX2NsYXVzZXMsCiAJZ2ZjX2Vycm9yICgiJTxERVRB Q0glPiBjbGF1c2UgYXQgJUwgbXVzdCBub3QgYmUgdXNlZCB0b2dldGhlciB3 aXRoICIKIAkJICAgIiU8TUVSR0VBQkxFJT4gY2xhdXNlIiwgJm9tcF9jbGF1 c2VzLT5kZXRhY2gtPndoZXJlKTsKICAgICB9CisKKyAgaWYgKG9tcF9jbGF1 c2VzLT5hc3N1bWUpCisgICAgZ2ZjX3Jlc29sdmVfb21wX2Fzc3VtcHRpb25z IChvbXBfY2xhdXNlcy0+YXNzdW1lKTsKIH0KIAogCkBAIC05MTE2LDYgKzk1 MTYsOCBAQCBvbXBfY29kZV90b19zdGF0ZW1lbnQgKGdmY19jb2RlICpjb2Rl KQogICAgICAgcmV0dXJuIFNUX09NUF9ETzsKICAgICBjYXNlIEVYRUNfT01Q X0xPT1A6CiAgICAgICByZXR1cm4gU1RfT01QX0xPT1A7CisgICAgY2FzZSBF WEVDX09NUF9BU1NVTUU6CisgICAgICByZXR1cm4gU1RfT01QX0FTU1VNRTsK ICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzoKICAgICAgIHJldHVybiBTVF9P TVBfQVRPTUlDOwogICAgIGNhc2UgRVhFQ19PTVBfQkFSUklFUjoKQEAgLTk2 MzUsNiArMTAwMzcsNyBAQCBnZmNfcmVzb2x2ZV9vbXBfZGlyZWN0aXZlIChn ZmNfY29kZSAqY29kZSwgZ2ZjX25hbWVzcGFjZSAqbnMpCiAgICAgY2FzZSBF WEVDX09NUF9URUFNU19MT09QOgogICAgICAgcmVzb2x2ZV9vbXBfZG8gKGNv ZGUpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBFWEVDX09NUF9BU1NVTUU6 CiAgICAgY2FzZSBFWEVDX09NUF9DQU5DRUw6CiAgICAgY2FzZSBFWEVDX09N UF9FUlJPUjoKICAgICBjYXNlIEVYRUNfT01QX01BU0tFRDoKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL3BhcnNlLmNjIGIvZ2NjL2ZvcnRyYW4vcGFyc2Uu Y2MKaW5kZXggMmUyZTk3NzA1MjAuLmYwNGZkMTNjYzY5IDEwMDY0NAotLS0g YS9nY2MvZm9ydHJhbi9wYXJzZS5jYworKysgYi9nY2MvZm9ydHJhbi9wYXJz ZS5jYwpAQCAtODg1LDYgKzg4NSw4IEBAIGRlY29kZV9vbXBfZGlyZWN0aXZl ICh2b2lkKQogICBzd2l0Y2ggKGMpCiAgICAgewogICAgIGNhc2UgJ2EnOgor ICAgICAgbWF0Y2hvICgiYXNzdW1lcyIsIGdmY19tYXRjaF9vbXBfYXNzdW1l cywgU1RfT01QX0FTU1VNRVMpOworICAgICAgbWF0Y2hzICgiYXNzdW1lIiwg Z2ZjX21hdGNoX29tcF9hc3N1bWUsIFNUX09NUF9BU1NVTUUpOwogICAgICAg bWF0Y2hvICgiYXRvbWljIiwgZ2ZjX21hdGNoX29tcF9hdG9taWMsIFNUX09N UF9BVE9NSUMpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSAnYic6CkBAIC05 MTMsNiArOTE1LDcgQEAgZGVjb2RlX29tcF9kaXJlY3RpdmUgKHZvaWQpCiAg ICAgICBicmVhazsKICAgICBjYXNlICdlJzoKICAgICAgIG1hdGNobyAoImVy cm9yIiwgZ2ZjX21hdGNoX29tcF9lcnJvciwgU1RfT01QX0VSUk9SKTsKKyAg ICAgIG1hdGNocyAoImVuZCBhc3N1bWUiLCBnZmNfbWF0Y2hfb21wX2Vvc19l cnJvciwgU1RfT01QX0VORF9BU1NVTUUpOwogICAgICAgbWF0Y2hvICgiZW5k IGF0b21pYyIsIGdmY19tYXRjaF9vbXBfZW9zX2Vycm9yLCBTVF9PTVBfRU5E X0FUT01JQyk7CiAgICAgICBtYXRjaG8gKCJlbmQgY3JpdGljYWwiLCBnZmNf bWF0Y2hfb21wX2VuZF9jcml0aWNhbCwgU1RfT01QX0VORF9DUklUSUNBTCk7 CiAgICAgICBtYXRjaHMgKCJlbmQgZGlzdHJpYnV0ZSBwYXJhbGxlbCBkbyBz aW1kIiwgZ2ZjX21hdGNoX29tcF9lb3NfZXJyb3IsCkBAIC0xNzE2LDYgKzE3 MTksNyBAQCBuZXh0X3N0YXRlbWVudCAodm9pZCkKICAgY2FzZSBTVF9PTVBf VEFSR0VUX1NJTUQ6IGNhc2UgU1RfT01QX1RBU0tMT09QOiBjYXNlIFNUX09N UF9UQVNLTE9PUF9TSU1EOiBcCiAgIGNhc2UgU1RfT01QX0xPT1A6IGNhc2Ug U1RfT01QX1BBUkFMTEVMX0xPT1A6IGNhc2UgU1RfT01QX1RFQU1TX0xPT1A6 IFwKICAgY2FzZSBTVF9PTVBfVEFSR0VUX1BBUkFMTEVMX0xPT1A6IGNhc2Ug U1RfT01QX1RBUkdFVF9URUFNU19MT09QOiBcCisgIGNhc2UgU1RfT01QX0FT U1VNRTogXAogICBjYXNlIFNUX0NSSVRJQ0FMOiBcCiAgIGNhc2UgU1RfT0FD Q19QQVJBTExFTF9MT09QOiBjYXNlIFNUX09BQ0NfUEFSQUxMRUw6IGNhc2Ug U1RfT0FDQ19LRVJORUxTOiBcCiAgIGNhc2UgU1RfT0FDQ19EQVRBOiBjYXNl IFNUX09BQ0NfSE9TVF9EQVRBOiBjYXNlIFNUX09BQ0NfTE9PUDogXApAQCAt MTczMyw3ICsxNzM3LDcgQEAgbmV4dF9zdGF0ZW1lbnQgKHZvaWQpCiAKICNk ZWZpbmUgY2FzZV9vbXBfZGVjbCBjYXNlIFNUX09NUF9USFJFQURQUklWQVRF OiBjYXNlIFNUX09NUF9ERUNMQVJFX1NJTUQ6IFwKICAgY2FzZSBTVF9PTVBf REVDTEFSRV9UQVJHRVQ6IGNhc2UgU1RfT01QX0RFQ0xBUkVfUkVEVUNUSU9O OiBcCi0gIGNhc2UgU1RfT01QX0RFQ0xBUkVfVkFSSUFOVDogXAorICBjYXNl IFNUX09NUF9ERUNMQVJFX1ZBUklBTlQ6IGNhc2UgU1RfT01QX0FTU1VNRVM6 IFwKICAgY2FzZSBTVF9PTVBfUkVRVUlSRVM6IGNhc2UgU1RfT0FDQ19ST1VU SU5FOiBjYXNlIFNUX09BQ0NfREVDTEFSRQogCiAvKiBCbG9jayBlbmQgc3Rh dGVtZW50cy4gIEVycm9ycyBhc3NvY2lhdGVkIHdpdGggaW50ZXJjaGFuZ2lu ZyB0aGVzZQpAQCAtMTkyNSwxMCArMTkyOSwxMSBAQCBnZmNfZW5jbG9zaW5n X3VuaXQgKGdmY19jb21waWxlX3N0YXRlICogcmVzdWx0KQogfQogCiAKLS8q IFRyYW5zbGF0ZSBhIHN0YXRlbWVudCBlbnVtIHRvIGEgc3RyaW5nLiAgKi8K Ky8qIFRyYW5zbGF0ZSBhIHN0YXRlbWVudCBlbnVtIHRvIGEgc3RyaW5nLiAg SWYgc3RyaXBfc2VudGluZWwgaXMgdHJ1ZSwKKyAgIHRoZSAhJE9NUC8hJEFD QyBzZW50aW5lbCBpcyBleGNsdWRlZC4gICovCiAKIGNvbnN0IGNoYXIgKgot Z2ZjX2FzY2lpX3N0YXRlbWVudCAoZ2ZjX3N0YXRlbWVudCBzdCkKK2dmY19h c2NpaV9zdGF0ZW1lbnQgKGdmY19zdGF0ZW1lbnQgc3QsIGJvb2wgc3RyaXBf c2VudGluZWwpCiB7CiAgIGNvbnN0IGNoYXIgKnA7CiAKQEAgLTIzNTMsNiAr MjM1OCwxMiBAQCBnZmNfYXNjaWlfc3RhdGVtZW50IChnZmNfc3RhdGVtZW50 IHN0KQogICAgIGNhc2UgU1RfT0FDQ19FTkRfQVRPTUlDOgogICAgICAgcCA9 ICIhJEFDQyBFTkQgQVRPTUlDIjsKICAgICAgIGJyZWFrOworICAgIGNhc2Ug U1RfT01QX0FTU1VNRToKKyAgICAgIHAgPSAiISRPTVAgQVNTVU1FIjsKKyAg ICAgIGJyZWFrOworICAgIGNhc2UgU1RfT01QX0FTU1VNRVM6CisgICAgICBw ID0gIiEkT01QIEFTU1VNRVMiOworICAgICAgYnJlYWs7CiAgICAgY2FzZSBT VF9PTVBfQVRPTUlDOgogICAgICAgcCA9ICIhJE9NUCBBVE9NSUMiOwogICAg ICAgYnJlYWs7CkBAIC0yNDAxLDYgKzI0MTIsOSBAQCBnZmNfYXNjaWlfc3Rh dGVtZW50IChnZmNfc3RhdGVtZW50IHN0KQogICAgIGNhc2UgU1RfT01QX0RP X1NJTUQ6CiAgICAgICBwID0gIiEkT01QIERPIFNJTUQiOwogICAgICAgYnJl YWs7CisgICAgY2FzZSBTVF9PTVBfRU5EX0FTU1VNRToKKyAgICAgIHAgPSAi ISRPTVAgRU5EIEFTU1VNRSI7CisgICAgICBicmVhazsKICAgICBjYXNlIFNU X09NUF9FTkRfQVRPTUlDOgogICAgICAgcCA9ICIhJE9NUCBFTkQgQVRPTUlD IjsKICAgICAgIGJyZWFrOwpAQCAtMjYwMCw2ICsyNjE0LDEwIEBAIGdmY19h c2NpaV9zdGF0ZW1lbnQgKGdmY19zdGF0ZW1lbnQgc3QpCiAgICAgY2FzZSBT VF9PTVBfT1JERVJFRF9ERVBFTkQ6CiAgICAgICBwID0gIiEkT01QIE9SREVS RUQiOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBTVF9PTVBfTk9USElORzoK KyAgICAgIC8qIE5vdGU6IGdmY19tYXRjaF9vbXBfbm90aGluZyByZXR1cm5z IFNUX05PTkUuICovCisgICAgICBwID0gIiEkT01QIE5PVEhJTkciOworICAg ICAgYnJlYWs7CiAgICAgY2FzZSBTVF9PTVBfUEFSQUxMRUw6CiAgICAgICBw ID0gIiEkT01QIFBBUkFMTEVMIjsKICAgICAgIGJyZWFrOwpAQCAtMjc1MSw2 ICsyNzY5LDggQEAgZ2ZjX2FzY2lpX3N0YXRlbWVudCAoZ2ZjX3N0YXRlbWVu dCBzdCkKICAgICAgIGdmY19pbnRlcm5hbF9lcnJvciAoImdmY19hc2NpaV9z dGF0ZW1lbnQoKTogQmFkIHN0YXRlbWVudCBjb2RlIik7CiAgICAgfQogCisg IGlmIChzdHJpcF9zZW50aW5lbCAmJiBwWzBdID09ICchJykKKyAgICByZXR1 cm4gcCArIHN0cmxlbiAoIiEkT01QICIpOwogICByZXR1cm4gcDsKIH0KIApA QCAtNTUxOCw2ICs1NTM4LDkgQEAgcGFyc2Vfb21wX3N0cnVjdHVyZWRfYmxv Y2sgKGdmY19zdGF0ZW1lbnQgb21wX3N0LCBib29sIHdvcmtzaGFyZV9zdG10 c19vbmx5KQogCiAgIHN3aXRjaCAob21wX3N0KQogICAgIHsKKyAgICBjYXNl IFNUX09NUF9BU1NVTUU6CisgICAgICBvbXBfZW5kX3N0ID0gU1RfT01QX0VO RF9BU1NVTUU7CisgICAgICBicmVhazsKICAgICBjYXNlIFNUX09NUF9QQVJB TExFTDoKICAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1BBUkFMTEVM OwogICAgICAgYnJlYWs7CkBAIC01NjUxLDYgKzU2NzQsNyBAQCBwYXJzZV9v bXBfc3RydWN0dXJlZF9ibG9jayAoZ2ZjX3N0YXRlbWVudCBvbXBfc3QsIGJv b2wgd29ya3NoYXJlX3N0bXRzX29ubHkpCiAJCSAgcGFyc2VfZm9yYWxsX2Js b2NrICgpOwogCQkgIGJyZWFrOwogCisJCWNhc2UgU1RfT01QX0FTU1VNRToK IAkJY2FzZSBTVF9PTVBfUEFSQUxMRUw6CiAJCWNhc2UgU1RfT01QX1BBUkFM TEVMX01BU0tFRDoKIAkJY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFTVEVSOgpA QCAtNTg3NCw2ICs1ODk4LDcgQEAgcGFyc2VfZXhlY3V0YWJsZSAoZ2ZjX3N0 YXRlbWVudCBzdCkKIAkgIHBhcnNlX29hY2Nfc3RydWN0dXJlZF9ibG9jayAo c3QpOwogCSAgYnJlYWs7CiAKKwljYXNlIFNUX09NUF9BU1NVTUU6CiAJY2Fz ZSBTVF9PTVBfUEFSQUxMRUw6CiAJY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFT S0VEOgogCWNhc2UgU1RfT01QX1BBUkFMTEVMX01BU1RFUjoKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL3BhcnNlLmggYi9nY2MvZm9ydHJhbi9wYXJzZS5o CmluZGV4IDdkZGVhMTAyMzdmLi4wMTNhZWFlZGMwMyAxMDA2NDQKLS0tIGEv Z2NjL2ZvcnRyYW4vcGFyc2UuaAorKysgYi9nY2MvZm9ydHJhbi9wYXJzZS5o CkBAIC02Niw3ICs2Niw3IEBAIGV4dGVybiBnZmNfc3RhdGVfZGF0YSAqZ2Zj X3N0YXRlX3N0YWNrOwogaW50IGdmY19jaGVja19kb192YXJpYWJsZSAoZ2Zj X3N5bXRyZWUgKik7CiBib29sIGdmY19maW5kX3N0YXRlIChnZmNfY29tcGls ZV9zdGF0ZSk7CiBnZmNfc3RhdGVfZGF0YSAqZ2ZjX2VuY2xvc2luZ191bml0 IChnZmNfY29tcGlsZV9zdGF0ZSAqKTsKLWNvbnN0IGNoYXIgKmdmY19hc2Np aV9zdGF0ZW1lbnQgKGdmY19zdGF0ZW1lbnQpOworY29uc3QgY2hhciAqZ2Zj X2FzY2lpX3N0YXRlbWVudCAoZ2ZjX3N0YXRlbWVudCwgYm9vbCBzdHJpcF9z ZW50aW5lbCA9IGZhbHNlKSA7CiBtYXRjaCBnZmNfbWF0Y2hfZW51bSAodm9p ZCk7CiBtYXRjaCBnZmNfbWF0Y2hfZW51bWVyYXRvcl9kZWYgKHZvaWQpOwog dm9pZCBnZmNfZnJlZV9lbnVtX2hpc3RvcnkgKHZvaWQpOwpkaWZmIC0tZ2l0 IGEvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYyBiL2djYy9mb3J0cmFuL3Jlc29s dmUuY2MKaW5kZXggYWU3ZWJiNjI0ZTQuLmQxMzNiYzJkMDM0IDEwMDY0NAot LS0gYS9nY2MvZm9ydHJhbi9yZXNvbHZlLmNjCisrKyBiL2djYy9mb3J0cmFu L3Jlc29sdmUuY2MKQEAgLTEwOTAyLDYgKzEwOTAyLDcgQEAgZ2ZjX3Jlc29s dmVfYmxvY2tzIChnZmNfY29kZSAqYiwgZ2ZjX25hbWVzcGFjZSAqbnMpCiAJ Y2FzZSBFWEVDX09BQ0NfRU5URVJfREFUQToKIAljYXNlIEVYRUNfT0FDQ19F WElUX0RBVEE6CiAJY2FzZSBFWEVDX09BQ0NfUk9VVElORToKKwljYXNlIEVY RUNfT01QX0FTU1VNRToKIAljYXNlIEVYRUNfT01QX0NSSVRJQ0FMOgogCWNh c2UgRVhFQ19PTVBfRElTVFJJQlVURToKIAljYXNlIEVYRUNfT01QX0RJU1RS SUJVVEVfUEFSQUxMRUxfRE86CkBAIC0xMjM3Niw2ICsxMjM3Nyw3IEBAIHN0 YXJ0OgogCSAgZ2ZjX3Jlc29sdmVfb2FjY19kaXJlY3RpdmUgKGNvZGUsIG5z KTsKIAkgIGJyZWFrOwogCisJY2FzZSBFWEVDX09NUF9BU1NVTUU6CiAJY2Fz ZSBFWEVDX09NUF9BVE9NSUM6CiAJY2FzZSBFWEVDX09NUF9CQVJSSUVSOgog CWNhc2UgRVhFQ19PTVBfQ0FOQ0VMOgpAQCAtMTc2NTEsNiArMTc2NTMsOSBA QCBnZmNfcmVzb2x2ZSAoZ2ZjX25hbWVzcGFjZSAqbnMpCiAgIGNvbXBvbmVu dF9hc3NpZ25tZW50X2xldmVsID0gMDsKICAgcmVzb2x2ZV9jb2RlcyAobnMp OwogCisgIGlmIChucy0+b21wX2Fzc3VtZXMpCisgICAgZ2ZjX3Jlc29sdmVf b21wX2Fzc3VtcHRpb25zIChucy0+b21wX2Fzc3VtZXMpOworCiAgIGdmY19j dXJyZW50X25zID0gb2xkX25zOwogICBjc19iYXNlID0gb2xkX2NzX2Jhc2U7 CiAgIG5zLT5yZXNvbHZlZCA9IDE7CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJh bi9zdC5jYyBiL2djYy9mb3J0cmFuL3N0LmNjCmluZGV4IDczZjMwYzIxMzdm Li4zYzhjYTY2NTU0ZCAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vc3QuY2MK KysrIGIvZ2NjL2ZvcnRyYW4vc3QuY2MKQEAgLTIxNCw2ICsyMTQsNyBAQCBn ZmNfZnJlZV9zdGF0ZW1lbnQgKGdmY19jb2RlICpwKQogICAgIGNhc2UgRVhF Q19PQUNDX0VOVEVSX0RBVEE6CiAgICAgY2FzZSBFWEVDX09BQ0NfRVhJVF9E QVRBOgogICAgIGNhc2UgRVhFQ19PQUNDX1JPVVRJTkU6CisgICAgY2FzZSBF WEVDX09NUF9BU1NVTUU6CiAgICAgY2FzZSBFWEVDX09NUF9BVE9NSUM6CiAg ICAgY2FzZSBFWEVDX09NUF9DQU5DRUw6CiAgICAgY2FzZSBFWEVDX09NUF9D QU5DRUxMQVRJT05fUE9JTlQ6CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9z eW1ib2wuY2MgYi9nY2MvZm9ydHJhbi9zeW1ib2wuY2MKaW5kZXggN2E4MGRm ZDA2M2IuLjYwNTAzNTlkNTIxIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9z eW1ib2wuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vc3ltYm9sLmNjCkBAIC00MDcx LDcgKzQwNzEsMTMgQEAgZ2ZjX2ZyZWVfbmFtZXNwYWNlIChnZmNfbmFtZXNw YWNlICombnMpCiAgICAgICBmID0gZi0+bmV4dDsKICAgICAgIGZyZWUgKGN1 cnJlbnQpOwogICAgIH0KLQorICBpZiAobnMtPm9tcF9hc3N1bWVzKQorICAg IHsKKyAgICAgIGZyZWUgKG5zLT5vbXBfYXNzdW1lcy0+YWJzZW50KTsKKyAg ICAgIGZyZWUgKG5zLT5vbXBfYXNzdW1lcy0+Y29udGFpbnMpOworICAgICAg Z2ZjX2ZyZWVfZXhwcl9saXN0IChucy0+b21wX2Fzc3VtZXMtPmhvbGRzKTsK KyAgICAgIGZyZWUgKG5zLT5vbXBfYXNzdW1lcyk7CisgICAgfQogICBwID0g bnMtPmNvbnRhaW5lZDsKICAgZnJlZSAobnMpOwogICBucyA9IE5VTEw7CmRp ZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MgYi9nY2Mv Zm9ydHJhbi90cmFucy1vcGVubXAuY2MKaW5kZXggOGU5ZDUzNDZiMDUuLjIx MDUzNjk0ZjgxIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1vcGVu bXAuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCkBAIC03 NDg3LDYgKzc0ODcsOCBAQCBnZmNfdHJhbnNfb21wX2RpcmVjdGl2ZSAoZ2Zj X2NvZGUgKmNvZGUpCiB7CiAgIHN3aXRjaCAoY29kZS0+b3ApCiAgICAgewor ICAgIGNhc2UgRVhFQ19PTVBfQVNTVU1FOgorICAgICAgcmV0dXJuIGdmY190 cmFuc19vbXBfY29kZSAoY29kZS0+YmxvY2stPm5leHQsIHRydWUpOwogICAg IGNhc2UgRVhFQ19PTVBfQVRPTUlDOgogICAgICAgcmV0dXJuIGdmY190cmFu c19vbXBfYXRvbWljIChjb2RlKTsKICAgICBjYXNlIEVYRUNfT01QX0JBUlJJ RVI6CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy5jYyBiL2djYy9m b3J0cmFuL3RyYW5zLmNjCmluZGV4IDkxMmEyMDZmMmVkLi44YTY0ODgyZWE5 ZSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMuY2MKKysrIGIvZ2Nj L2ZvcnRyYW4vdHJhbnMuY2MKQEAgLTIxNzQsNiArMjE3NCw3IEBAIHRyYW5z X2NvZGUgKGdmY19jb2RlICogY29kZSwgdHJlZSBjb25kKQogCSAgcmVzID0g Z2ZjX3RyYW5zX2R0X2VuZCAoY29kZSk7CiAJICBicmVhazsKIAorCWNhc2Ug RVhFQ19PTVBfQVNTVU1FOgogCWNhc2UgRVhFQ19PTVBfQVRPTUlDOgogCWNh c2UgRVhFQ19PTVBfQkFSUklFUjoKIAljYXNlIEVYRUNfT01QX0NBTkNFTDoK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9h c3N1bWUtMS5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAv YXNzdW1lLTEuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi44YmQ1YzcyMzA1MQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMS5mOTAKQEAgLTAs MCArMSwyNCBAQAorc3Vicm91dGluZSBmb28gKGksIGEpCisgIGltcGxpY2l0 IG5vbmUKKyAgaW50ZWdlciwgdmFsdWUgOjogaQorICBpbnRlZ2VyIDo6IGEo OikKKyAgaW50ZWdlciA6OiBqCisKKyAgaiA9IDcKKyAgISRvbXAgYXNzdW1l IG5vX29wZW5tcCwgYWJzZW50ICh0YXJnZXQsIHRlYW1zKSBob2xkcyAoaSA8 IDMyKSBob2xkcyAoaSA8IDMyXzIpCisgICEkb21wIGVuZCBhc3N1bWUKKwor ICAhJG9tcCBhc3N1bWUgbm9fb3Blbm1wX3JvdXRpbmVzLCBjb250YWlucyAo c2ltZCkKKyAgYmxvY2sKKyAgICAhJG9tcCBzaW1kCisgICAgZG8gaiA9IDEs IGkKKyAgICAgIGEoaSkgPSBqCisgICAgZW5kIGRvCisgIGVuZCBibG9jawor CisgICEkb21wIGFzc3VtZSBub19wYXJhbGxlbGlzbSwgY29udGFpbnMgKGVy cm9yKQorICBpZiAoaSA+PSAzMikgdGhlbgorICAgICEkb21wIGVycm9yIGF0 IChleGVjdXRpb24pIG1lc3NhZ2UgKCJTaG91bGQgbm90IGhhcHBlbiIpCisg IGVuZCBpZgorICAhJG9tcCBlbmQgYXNzdW1lCitlbmQKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMi5mOTAg Yi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYXNzdW1lLTIuZjkw Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jYTNl MDRkZmU5NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZ29tcC9hc3N1bWUtMi5mOTAKQEAgLTAsMCArMSwyNyBAQAor c3Vicm91dGluZSBmb28gKGksIGEpCisgIGltcGxpY2l0IG5vbmUKKyAgaW50 ZWdlciwgdmFsdWUgOjogaQorICBpbnRlZ2VyIDo6IGEoOikKKyAgaW50ZWdl ciA6OiBqCisKKyAgaiA9IDcKKyAgISRvbXAgYXNzdW1lIG5vX29wZW5tcCwg YWJzZW50ICh0YXJnZXQsIHRlYW1zLHRhcmdldCkgaG9sZHMgKGkgPCAzMikg aG9sZHMgKGkgPCAzMl8yKSAgISB7IGRnLWVycm9yICInVEFSR0VUJyBkaXJl Y3RpdmUgbWVudGlvbmVkIG11bHRpcGxlIHRpbWVzIGluIEFCU0VOVCBjbGF1 c2UgaW4gIS5PTVAgQVNTVU1FIGRpcmVjdGl2ZSIgfQorISAgISRvbXAgZW5k IGFzc3VtZSAgLSBzaWxlbmNlOiAnVW5leHBlY3RlZCAhJE9NUCBFTkQgQVNT VU1FIHN0YXRlbWVudCcKKworICAhJG9tcCBhc3N1bWUgbm9fb3Blbm1wX3Jv dXRpbmVzLCBjb250YWlucyAoc2ltZCkgY29udGFpbnMgKCBzaW1kICkgICEg eyBkZy1lcnJvciAiJ1NJTUQnIGRpcmVjdGl2ZSBtZW50aW9uZWQgbXVsdGlw bGUgdGltZXMgaW4gQ09OVEFJTlMgY2xhdXNlIGluICEuT01QIEFTU1VNRSBk aXJlY3RpdmUiIH0KKyAgYmxvY2sKKyAgICAhJG9tcCBzaW1kCisgICAgZG8g aiA9IDEsIGkKKyAgICAgIGEoaSkgPSBqCisgICAgZW5kIGRvCisgIGVuZCBi bG9jaworCisgICEkb21wIGFzc3VtZSBub19wYXJhbGxlbGlzbSwgY29udGFp bnMgKGVycm9yKSBhYnNlbnQgKGVycm9yKSAgISB7IGRnLWVycm9yICInRVJS T1InIGRpcmVjdGl2ZSBtZW50aW9uZWQgYm90aCB0aW1lcyBpbiBBQlNFTlQg YW5kIENPTlRBSU5TIGNsYXVzZXMgaW4gIS5PTVAgQVNTVU1FIGRpcmVjdGl2 ZSIgfQorICBpZiAoaSA+PSAzMikgdGhlbgorICAgICEkb21wIGVycm9yIGF0 IChleGVjdXRpb24pIG1lc3NhZ2UgKCJTaG91bGQgbm90IGhhcHBlbiIpCisg IGVuZCBpZgorISAgISRvbXAgZW5kIGFzc3VtZSAgLSBzaWxlbmNlOiAnVW5l eHBlY3RlZCAhJE9NUCBFTkQgQVNTVU1FIHN0YXRlbWVudCcKKworICAhJG9t cCBhc3N1bWUgaG9sZHMgKDEuMCkgICEgeyBkZy1lcnJvciAiSE9MRFMgZXhw cmVzc2lvbiBhdCAuMS4gbXVzdCBiZSBhIGxvZ2ljYWwgZXhwcmVzc2lvbiIg fQorICAhJG9tcCBlbmQgYXNzdW1lCitlbmQKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWVzLTEuZjkwIGIvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2Fzc3VtZXMtMS5mOTAKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNkNDY4ZGMx YzgxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb21wL2Fzc3VtZXMtMS5mOTAKQEAgLTAsMCArMSw4MiBAQAorISBB bGwgb2YgdGhlIGZvbGxvd2luZyAodXAgdG8gUFJPR1JBTSkgYXJlIG9rYXk6 CishCitzdWJyb3V0aW5lIHN1YgorICBpbnRlcmZhY2UKKyAgICBzdWJyb3V0 aW5lIHN1Yl9pdGVyZmFjZSgpCisgICAgICAhJG9tcCBhc3N1bWVzIG5vX29w ZW5tcF9yb3V0aW5lcyBhYnNlbnQoc2ltZCkgISAgT0sgaW5mZXJmYWNlIG9m IGFuIGV4dGVybmFsIHN1YnJvdXRpbmUvc3VicHJvZ3JhbQorICAgIGVuZAor ICBlbmQgaW50ZXJmYWNlCisgICEkb21wIGFzc3VtZXMgbm9fb3Blbm1wX3Jv dXRpbmVzIGFic2VudChzaW1kKSAhICBPSyBleHRlcm5hbCBzdWJyb3V0aW5l L3N1YnByb2dyYW0KK2NvbnRhaW5zCisgIHN1YnJvdXRpbmUgaW5uZXJfc3Vi CisgICAgICEkb21wIGFzc3VtZXMgbm9fcGFyYWxsZWxpc20gYWJzZW50KHRl YW1zKSAhIE9LIGludGVybmFsIHN1YnJvdXRpbmUvc3VicHJvZ3JhbQorICBl bmQKK2VuZAorCitpbnRlZ2VyIGZ1bmN0aW9uIGZ1bmMgKCkKKyAgISRvbXAg YXNzdW1lcyBub19vcGVubXBfcm91dGluZXMgYWJzZW50KHNpbWQpICEgIE9L IGV4dGVybmFsIGZ1bmN0aW9uL3N1YnByb2dyYW0KKyAgaW50ZXJmYWNlCisg ICAgaW50ZWdlciBmdW5jdGlvbiBmdW5jX2l0ZXJmYWNlKCkKKyAgICAgICEk b21wIGFzc3VtZXMgbm9fb3Blbm1wX3JvdXRpbmVzIGFic2VudChzaW1kKSAh ICBPSyBpbmZlcmZhY2Ugb2YgYW4gZXh0ZXJuYWwgZnVuY3Rpb24vc3VicHJv Z3JhbQorICAgIGVuZAorICBlbmQgaW50ZXJmYWNlCisgIGZ1bmMgPSAwCitj b250YWlucworICBpbnRlZ2VyIGZ1bmN0aW9uIGlubmVyX2Z1bmMoKQorICAg ICAhJG9tcCBhc3N1bWVzIG5vX3BhcmFsbGVsaXNtIGFic2VudCh0ZWFtcykg ISBPSyBpbnRlcm5hbCBmdW5jdGlvbi9zdWJwcm9ncmFtCisgICAgIGlubmVy X3N1YjIgPSAwCisgIGVuZAorZW5kCisKK21vZHVsZSBtCisgIGludGVnZXIg Ojp4IAorICAhJG9tcCBhc3N1bWVzIGNvbnRhaW5zKHRhcmdldCkgaG9sZHMo eCA+IDAuMCkKKworICAgIGludGVyZmFjZQorICAgICAgc3Vicm91dGluZSBt b2RfbW9kX3N1Yl9pdGVyZmFjZSgpCisgICAgICAgICEkb21wIGFzc3VtZXMg bm9fb3Blbm1wX3JvdXRpbmVzIGFic2VudChzaW1kKSAhICBPSyBpbmZlcmZh Y2Ugb2YgYW4gZXh0ZXJuYWwgc3Vicm91dGluZS9zdWJwcm9ncmFtCisgICAg ICBlbmQKKyAgICAgIGludGVnZXIgZnVuY3Rpb24gbW9kX21vZF9mdW5jX2l0 ZXJmYWNlKCkKKyAgICAgICAgISRvbXAgYXNzdW1lcyBub19vcGVubXBfcm91 dGluZXMgYWJzZW50KGVycm9yKSAhICBPSyBpbmZlcmZhY2Ugb2YgYW4gZXh0 ZXJuYWwgc3Vicm91dGluZS9zdWJwcm9ncmFtCisgICAgICBlbmQKKyAgICBl bmQgaW50ZXJmYWNlCisKK2NvbnRhaW5zCisgIHN1YnJvdXRpbmUgbW9kX3N1 YgorICAgIGludGVyZmFjZQorICAgICAgc3Vicm91dGluZSBtb2Rfc3ViX2l0 ZXJmYWNlKCkKKyAgICAgICAgISRvbXAgYXNzdW1lcyBub19vcGVubXBfcm91 dGluZXMgYWJzZW50KHNpbWQpICEgIE9LIGluZmVyZmFjZSBvZiBhbiBleHRl cm5hbCBzdWJyb3V0aW5lL3N1YnByb2dyYW0KKyAgICAgIGVuZAorICAgIGVu ZCBpbnRlcmZhY2UKKyAgICAhJG9tcCBhc3N1bWVzIG5vX29wZW5tcF9yb3V0 aW5lcyBhYnNlbnQoc2ltZCkgISAgT0sgbW9kdWxlIHN1YnJvdXRpbmUvc3Vi cHJvZ3JhbQorICBjb250YWlucworICAgIHN1YnJvdXRpbmUgbW9kX2lubmVy X3N1YgorICAgICAgICEkb21wIGFzc3VtZXMgbm9fcGFyYWxsZWxpc20gYWJz ZW50KHRlYW1zKSAhIE9LIGludGVybmFsIHN1YnJvdXRpbmUvc3VicHJvZ3Jh bQorICAgIGVuZAorICBlbmQKKworICBpbnRlZ2VyIGZ1bmN0aW9uIG1vZF9m dW5jICgpCisgICAgISRvbXAgYXNzdW1lcyBub19vcGVubXBfcm91dGluZXMg YWJzZW50KHNpbWQpICEgIE9LIG1vZHVsZSBmdW5jdGlvbi9zdWJwcm9ncmFt CisgICAgaW50ZXJmYWNlCisgICAgICBpbnRlZ2VyIGZ1bmN0aW9uIG1vZF9m dW5jX2l0ZXJmYWNlKCkKKyAgICAgICAgISRvbXAgYXNzdW1lcyBub19vcGVu bXBfcm91dGluZXMgYWJzZW50KHNpbWQpICEgIE9LIGluZmVyZmFjZSBvZiBh biBleHRlcm5hbCBmdW5jdGlvbi9zdWJwcm9ncmFtCisgICAgICBlbmQKKyAg ICBlbmQgaW50ZXJmYWNlCisgICAgbW9kX2Z1bmMgPSAwCisgIGNvbnRhaW5z CisgICAgaW50ZWdlciBmdW5jdGlvbiBtb2RfaW5uZXJfZnVuYygpCisgICAg ICAgISRvbXAgYXNzdW1lcyBub19wYXJhbGxlbGlzbSBhYnNlbnQodGVhbXMp ICEgT0sgaW50ZXJuYWwgZnVuY3Rpb24vc3VicHJvZ3JhbQorICAgICAgIG1v ZF9pbm5lcl9zdWIyID0gMAorICAgIGVuZAorICBlbmQKK2VuZCBtb2R1bGUg bQorCisKKyEgUFJPR1JBTSAtIGludmFsaWQgYXM6CishICBtYWluIHByb2dy YW0gaXMgYSBwcm9ncmFtIHVuaXQgdGhhdCBpcyBub3QgYSBzdWJwcm9ncmFt CishJG9tcCBhc3N1bWVzIG5vX29wZW5tcCBhYnNlbnQoc2ltZCkgICEgeyBk Zy1lcnJvciAibXVzdCBiZSBpbiB0aGUgc3BlY2lmaWNhdGlvbiBwYXJ0IG9m IGEgc3VicHJvZ3JhbSBvciBtb2R1bGUiIH0KKyAgYmxvY2sKKyAgICAhIGlu dmFsaWQ6IGJsb2NrCisgICAgISRvbXAgYXNzdW1lcyBub19vcGVubXAgYWJz ZW50KHRhcmdldCkgICEgeyBkZy1lcnJvciAibXVzdCBiZSBpbiB0aGUgc3Bl Y2lmaWNhdGlvbiBwYXJ0IG9mIGEgc3VicHJvZ3JhbSBvciBtb2R1bGUiIH0K KyAgZW5kIGJsb2NrCitlbmQKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWVzLTIuZjkwIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2Fzc3VtZXMtMi5mOTAKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcyOWM5NzM3YTFjCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L2Fzc3VtZXMtMi5mOTAKQEAgLTAsMCArMSwxOSBAQAorbW9kdWxlIG0KKyAg aW50ZWdlciA6OnggCishIE5vbnNlbnNlIGJ1dCBPcGVuTVAtc2VtYW50aWNh bGx5IHZhbGlkOgorICAhJG9tcCBhc3N1bWVzIGNvbnRhaW5zKHRhcmdldCkg aG9sZHMoeCA+IDAuMCkKKyAgISRvbXAgYXNzdW1lcyBhYnNlbnQodGFyZ2V0 KQorICAhJG9tcCBhc3N1bWVzIGhvbGRzKDAuMCkKKyEgeyBkZy1lcnJvciAi SE9MRFMgZXhwcmVzc2lvbiBhdCAuMS4gbXVzdCBiZSBhIGxvZ2ljYWwgZXhw cmVzc2lvbiIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorZW5kIG1vZHVs ZQorCittb2R1bGUgbTIKK2ludGVyZmFjZQorICBzdWJyb3V0aW5lIGZvbwor ICAgICEkb21wIGFzc3VtZXMgY29udGFpbnModGFyZ2V0KSBjb250YWlucyh0 ZWFtcyx0YXJnZXQpICEgeyBkZy1lcnJvciAiJ1RBUkdFVCcgZGlyZWN0aXZl IG1lbnRpb25lZCBtdWx0aXBsZSB0aW1lcyBpbiBDT05UQUlOUyBjbGF1c2Ug aW4gIS5PTVAgQVNTVU1FUyBkaXJlY3RpdmUiIH0KKyAgICAhJG9tcCBhc3N1 bWVzIGFic2VudChkZWNsYXJlIHRhcmdldCkgISB7IGRnLWVycm9yICJJbnZh bGlkICdERUNMQVJFIFRBUkdFVCcgZGlyZWN0aXZlIGF0IC4xLiBpbiBBQlNF TlQgY2xhdXNlOiBkZWNsYXJhdGl2ZSwgaW5mb3JtYXRpb25hbCBhbmQgbWV0 YSBkaXJlY3RpdmVzIG5vdCBwZXJtaXR0ZWQiIH0KKyAgICAhJG9tcCBhc3N1 bWVzIGFic2VudChwYXJhbGxlbCkgYWJzZW50KGRvLHNpbWQscGFyYWxsZWws ZGlzdHJpYnV0ZSkgISB7IGRnLWVycm9yICInUEFSQUxMRUwnIGRpcmVjdGl2 ZSBtZW50aW9uZWQgbXVsdGlwbGUgdGltZXMgaW4gQUJTRU5UIGNsYXVzZSBp biAhLk9NUCBBU1NVTUVTIGRpcmVjdGl2ZSIgfQorICAgICEkb21wIGFzc3Vt ZXMgY29udGFpbnMoYmFycmllcixhdG9taWMpIGFic2VudChjYW5jZWwsc2lt ZCxhdG9taWMsZGlzdHJpYnV0ZSkgISB7IGRnLWVycm9yICInU0lNRCcgZGly ZWN0aXZlIG1lbnRpb25lZCBib3RoIHRpbWVzIGluIEFCU0VOVCBhbmQgQ09O VEFJTlMgY2xhdXNlcyBpbiAhLk9NUCBBU1NVTUVTIGRpcmVjdGl2ZSIgfQor ICBlbmQgc3Vicm91dGluZSBmb28KK2VuZCBpbnRlcmZhY2UKK2VuZCBtb2R1 bGUgbTIKZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcC50ZXhpIGIvbGli Z29tcC9saWJnb21wLnRleGkKaW5kZXggZDE3MDU5NDkyMWYuLmQ4Yzc5OGNm N2ExIDEwMDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAudGV4aQorKysgYi9s aWJnb21wL2xpYmdvbXAudGV4aQpAQCAtMjg3LDcgKzI4Nyw3IEBAIFRoZSBP cGVuTVAgNC41IHNwZWNpZmljYXRpb24gaXMgZnVsbHkgc3VwcG9ydGVkLgog ICAgICAgQGNvZGV7YXBwZW5kX2FyZ3N9IEB0YWIgTiBAdGFiCiBAaXRlbSBA Y29kZXtkaXNwYXRjaH0gY29uc3RydWN0IEB0YWIgTiBAdGFiCiBAaXRlbSBk ZXZpY2Utc3BlY2lmaWMgSUNWIHNldHRpbmdzIHdpdGggZW52aXJvbm1lbnQg dmFyaWFibGVzIEB0YWIgWSBAdGFiCi1AaXRlbSBAY29kZXthc3N1bWV9IGRp cmVjdGl2ZSBAdGFiIFAgQHRhYiBPbmx5IEMvQysrCitAaXRlbSBAY29kZXth c3N1bWV9IGRpcmVjdGl2ZSBAdGFiIFkgQHRhYgogQGl0ZW0gQGNvZGV7bm90 aGluZ30gZGlyZWN0aXZlIEB0YWIgWSBAdGFiCiBAaXRlbSBAY29kZXtlcnJv cn0gZGlyZWN0aXZlIEB0YWIgWSBAdGFiCiBAaXRlbSBAY29kZXttYXNrZWR9 IGNvbnN0cnVjdCBAdGFiIFkgQHRhYgo= --------------LhbKRAFgR8It8On0TxS40Tx6--