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 906FC3858D32; Sun, 2 Oct 2022 17:47:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 906FC3858D32 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.93,363,1654588800"; d="diff'?scan'208,217";a="83874911" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa3.mentor.iphmx.com with ESMTP; 02 Oct 2022 09:47:26 -0800 IronPort-SDR: YZ6q1PAOZpG8EFwbtaJiytYw0phOJdSB8cxtReT1nXL1JwdHU8Kl/UPPzMj+c7HqsP6t6tmRqI CATELFA/+InyYlDlidufKZk5mZcpcAEO3PhAhOdf5XMrD87awIWv0GbWWG8shJgC9LLHZ+VWuU 54V2IN+HFVKCByQxR7m+3A3gAb937ZxxNoPPDJ3rwTmttVl786jJOfY6z/Tbb6V/jAA5U0opGz D2NoGfhEODtfZ+er3bW9obKXyrawpW2EoXROZQBrA56m3QuKwnGB7dkS3Rvf9GmeQ/iVDRb0Az ipA= Content-Type: multipart/mixed; boundary="------------NQ0bFQkDEt405QgYTJ470Hvz" Message-ID: Date: Sun, 2 Oct 2022 19:47:18 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Content-Language: en-US To: gcc-patches , fortran , Jakub Jelinek From: Tobias Burnus Subject: [Patch] Fortran: Add OpenMP's assume(s) directives 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.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,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: --------------NQ0bFQkDEt405QgYTJ470Hvz Content-Type: multipart/alternative; boundary="------------61KD89GrQ2YrwXUL06t5kb0k" --------------61KD89GrQ2YrwXUL06t5kb0k Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable This patch adds '!$omp assume' and '!$omp assumes' support. None of the directives is used after resolution. When we actually start using for 'assumes', it has to be stored in .mod files. The other question is how to handle 'holds()' expressions with 'assu= mes'. -fopenmp-simd: I used a longer wording to imply that not only the 'simd' but all SIMD directives are enabled. OK for mainline? Tobias PS: For 'assume' with holds clause, the same applies as for Jakub's commit/= patch: "openmp: Add OpenMP assume, assumes and begin/end assumes support" https://gcc.gnu.org/r13-3020-gd01bd0b0f3b8f4c33c437ff10f0b949200627f56 Namely, it requires that the following - now half-approved - patch is commi= tted: "[PATCH] c= ++, c: Implement C++23 P1774R8 - Portable assumptions [PR106654]" https://gcc.gnu.org/pipermail/gcc-patches/2022-September/601991.html PPS: I intent to take care in a separate patch the new rules for where OpenMP specification part directives be placed (i.e. after USE/INTENT/IMPOR= T) for all delarative + informational routines, the latter includes the 'assum= es' directive. ----------------- 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 --------------61KD89GrQ2YrwXUL06t5kb0k-- --------------NQ0bFQkDEt405QgYTJ470Hvz Content-Type: text/x-patch; charset="UTF-8"; name="omp-assume-fortran.diff" Content-Disposition: attachment; filename="omp-assume-fortran.diff" Content-Transfer-Encoding: base64 Rm9ydHJhbjogQWRkIE9wZW5NUCdzIGFzc3VtZShzKSBkaXJlY3RpdmVzCgpn Y2MvQ2hhbmdlTG9nOgoKCSogZG9jL2ludm9rZS50ZXhpICgtZm9wZW5tcC1z aW1kKTogRG9jdW1lbnQgdGhhdCBhbHNvICdhc3N1bWUnCglpcyBlbmFibGVk LgoKbGliZ29tcC9DaGFuZ2VMb2c6CgoJKiBsaWJnb21wLnRleGkgKE9wZW5N UCA1LjEgSW1wbC4gU3RhdHVzKTogTWFyayAnYXNzdW1lJyBhcyAnWScuCgpn Y2MvZm9ydHJhbi9DaGFuZ2VMb2c6CgoJKiBkdW1wLXBhcnNlLXRyZWUuY2Mg KHNob3dfb21wX2Fzc3VtZXMpOiBOZXcuCgkoc2hvd19vbXBfY2xhdXNlcywg c2hvd19uYW1lc3BhY2UpOiBDYWxsIGl0LgoJKHNob3dfb21wX25vZGUsIHNo b3dfY29kZV9ub2RlKTogSGFuZGxlIE9wZW5NUCBBU1NVTUUuCgkqIGdmb3J0 cmFuLmggKGVudW0gZ2ZjX3N0YXRlbWVudCk6IEFkZCBTVF9PTVBfQVNTVU1F LAoJU1RfT01QX0VORF9BU1NVTUUgYW5kIFNUX09NUF9BU1NVTUVTLgoJKGdm Y19leGVjX29wKTogQWRkIEVYRUNfT01QX0FTU1VNRS4KCShnZmNfb21wX2Fz c3VtcHRpb25zKTogTmV3IHN0cnVjdC4KCShnZmNfZ2V0X29tcF9hc3N1bXB0 aW9ucyk6IE5ldyBYQ05FVyAjZGVmaW5lLgoJKGdmY19vbXBfY2xhdXNlcywg Z2ZjX25hbWVzcGFjZSk6IEFkZCBhc3N1bWUgbWVtYmVyLgoJKGdmY19yZXNv bHZlX29tcF9hc3N1bXB0aW9ucyk6IE5ldyBwcm90b3R5cGUuCgkqIG1hdGNo LmggKGdmY19tYXRjaF9vbXBfYXNzdW1lLCBnZmNfbWF0Y2hfb21wX2Fzc3Vt ZXMpOiBOZXcuCgkqIG9wZW5tcC5jYyAob21wX2NvZGVfdG9fc3RhdGVtZW50 KTogRGVjbGFyZS4KCShnZmNfZnJlZV9vbXBfY2xhdXNlcyk6IEZyZWUgYXNz dW1lIG1lbWJlciBhbmQgaXRzIHN0cnVjdCBkYXRhLgoJKGVudW0gb21wX21h c2syKTogQWRkIE9NUF9DTEFVU0VfQVNTVU1QVElPTlMuCgkoZ2ZjX29tcF9h YnNlbnRfY29udGFpbnNfY2xhdXNlKTogTmV3LgoJKGdmY19tYXRjaF9vbXBf Y2xhdXNlcyk6IENhbGwgaXQ7IG9wdGlvbmFsbHkgdXNlIHBhc3NlZAoJb21w X2NsYXVzZXMgYXJndW1lbnQuCgkoZ2ZjX21hdGNoX29tcF9hc3N1bWUsIGdm Y19tYXRjaF9vbXBfYXNzdW1lcyk6IE5ldy4KCShnZmNfcmVzb2x2ZV9vbXBf YXNzdW1wdGlvbnMpOiBOZXcuCgkocmVzb2x2ZV9vbXBfY2xhdXNlcyk6IENh bGwgaXQuCgkoZ2ZjX3Jlc29sdmVfb21wX2RpcmVjdGl2ZSwgb21wX2NvZGVf dG9fc3RhdGVtZW50KTogSGFuZGxlCglFWEVDX09NUF9BU1NVTUUuCgkqIHBh cnNlLmNjIChkZWNvZGVfb21wX2RpcmVjdGl2ZSk6IFBhcnNlIE9wZW5NUCBB U1NVTUUoUykuCgkobmV4dF9zdGF0ZW1lbnQsIHBhcnNlX2V4ZWN1dGFibGUs IHBhcnNlX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKToKCUhhbmRsZSBTVF9PTVBf QVNTVU1FLgoJKGNhc2Vfb21wX2RlY2wpOiBBZGQgU1RfT01QX0FTU1VNRVMu CgkoZ2ZjX2FzY2lpX3N0YXRlbWVudCk6IEhhbmRsZSBBc3N1bWVzLCBvcHRp b25hbCByZXR1cm4KCXN0cmluZyB3aXRob3V0ICchJE9NUCAnLychJEFDQyAn IHByZWZpeC4KCShpc19vbXBfZGVjbGFyYXRpdmVfc3RtdCwgaXNfb21wX2lu Zm9ybWF0aW9uYWxfc3RtdCk6IE5ldy4KCSogcGFyc2UuaCAoZ2ZjX2FzY2lp X3N0YXRlbWVudCk6IEFkZCBvcHRpb25hbCBib29sIGFyZyB0byBwcm90b3R5 cGUuCgkoaXNfb21wX2RlY2xhcmF0aXZlX3N0bXQsIGlzX29tcF9pbmZvcm1h dGlvbmFsX3N0bXQpOiBOZXcgcHJvdG90eXBlLgoJKiByZXNvbHZlLmNjIChn ZmNfcmVzb2x2ZV9ibG9ja3MsIGdmY19yZXNvbHZlX2NvZGUpOiBBZGQKCUVY RUNfT01QX0FTU1VNRS4KCShnZmNfcmVzb2x2ZSk6IFJlc29sdmUgQVNTVU1F UyBkaXJlY3RpdmUuCgkqIHN5bWJvbC5jYyAoZ2ZjX2ZyZWVfbmFtZXNwYWNl KTogRnJlZSBvbXBfYXNzdW1lcyBtZW1iZXIuCgkqIHN0LmNjIChnZmNfZnJl ZV9zdGF0ZW1lbnQpOiBIYW5kbGUgRVhFQ19PTVBfQVNTVU1FLgoJKiB0cmFu cy1vcGVubXAuY2MgKGdmY190cmFuc19vbXBfZGlyZWN0aXZlKTogTGlrZXdp c2UuCgkqIHRyYW5zLmNjICh0cmFuc19jb2RlKTogTGlrZXdpc2UuCgpnY2Mv dGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGdmb3J0cmFuLmRnL2dvbXAvYXNz dW1lLTEuZjkwOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1 bWUtMi5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2Fzc3Vt ZXMtMS5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2Fzc3Vt ZXMtMi5mOTA6IE5ldyB0ZXN0LgoKIGdjYy9kb2MvaW52b2tlLnRleGkgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBnY2MvZm9ydHJhbi9k dW1wLXBhcnNlLXRyZWUuY2MgICAgICAgICAgICAgICB8ICA0MiArKysrCiBn Y2MvZm9ydHJhbi9nZm9ydHJhbi5oICAgICAgICAgICAgICAgICAgICAgICB8 ICAyMiArLQogZ2NjL2ZvcnRyYW4vbWF0Y2guaCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKwogZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjICAgICAg ICAgICAgICAgICAgICAgICAgfCAzMzEgKysrKysrKysrKysrKysrKysrKysr KysrKystCiBnY2MvZm9ydHJhbi9wYXJzZS5jYyAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA1MyArKysrLQogZ2NjL2ZvcnRyYW4vcGFyc2UuaCAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIGdjYy9mb3J0cmFuL3Jl c29sdmUuY2MgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGdjYy9m b3J0cmFuL3N0LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIGdjYy9mb3J0cmFuL3N5bWJvbC5jYyAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA4ICstCiBnY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MgICAg ICAgICAgICAgICAgICB8ICAgMiArCiBnY2MvZm9ydHJhbi90cmFucy5jYyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBnY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvYXNzdW1lLTEuZjkwICB8ICAyNCArKwogZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2Fzc3VtZS0yLmY5MCAgfCAg MjcgKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYXNzdW1l cy0xLmY5MCB8ICA4NCArKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL2dvbXAvYXNzdW1lcy0yLmY5MCB8ICAgNyArCiBsaWJnb21wL2xpYmdv bXAudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogMTcg ZmlsZXMgY2hhbmdlZCwgNjA4IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2Mv ZG9jL2ludm9rZS50ZXhpCmluZGV4IGE1ZGM2Mzc3ODM1Li5lMzcwMTU1NWYx MiAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysgYi9nY2Mv ZG9jL2ludm9rZS50ZXhpCkBAIC0yNzQ5LDkgKzI3NDksOSBAQCBoYXZlIHN1 cHBvcnQgZm9yIEBvcHRpb257LXB0aHJlYWR9LiBAb3B0aW9uey1mb3Blbm1w fSBpbXBsaWVzCiBAb3BpbmRleCBmb3Blbm1wLXNpbWQKIEBjaW5kZXggT3Bl bk1QIFNJTUQKIEBjaW5kZXggU0lNRAotRW5hYmxlIGhhbmRsaW5nIG9mIE9w ZW5NUCdzIFNJTUQgZGlyZWN0aXZlcyB3aXRoIEBjb2RleyNwcmFnbWEgb21w fQotaW4gQy9DKysgYW5kIEBjb2RleyEkb21wfSBpbiBGb3J0cmFuLiBPdGhl ciBPcGVuTVAgZGlyZWN0aXZlcwotYXJlIGlnbm9yZWQuCitFbmFibGUgaGFu ZGxpbmcgb2YgT3Blbk1QJ3MgU0lNRCBkaXJlY3RpdmVzIGFuZCBPUEVOTVAn cyBAY29kZXthc3N1bWV9IGRpcmVjdGl2ZQord2l0aCBAY29kZXsjcHJhZ21h IG9tcH0gaW4gQy9DKysgYW5kIEBjb2RleyEkb21wfSBpbiBGb3J0cmFuLiAg T3RoZXIgT3Blbk1QCitkaXJlY3RpdmVzIGFyZSBpZ25vcmVkLgogCiBAaXRl bSAtZnBlcm1pdHRlZC1mbHQtZXZhbC1tZXRob2RzPUB2YXJ7c3R5bGV9CiBA b3BpbmRleCBmcGVybWl0dGVkLWZsdC1ldmFsLW1ldGhvZHMKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYyBiL2djYy9mb3J0 cmFuL2R1bXAtcGFyc2UtdHJlZS5jYwppbmRleCA0MGM2OTBjOWFlOC4uYmQx ZmI0YmRmZDQgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2R1bXAtcGFyc2Ut dHJlZS5jYworKysgYi9nY2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuY2MK QEAgLTM2LDYgKzM2LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmls ZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJnZm9ydHJhbi5o IgogI2luY2x1ZGUgImNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAidmVyc2lv bi5oIgorI2luY2x1ZGUgInBhcnNlLmgiICAvKiBGb3IgZ2ZjX2FzY2lpX3N0 YXRlbWVudC4gICovCiAKIC8qIEtlZXAgdHJhY2sgb2YgaW5kZW50YXRpb24g Zm9yIHN5bWJvbCB0cmVlIGR1bXBzLiAgKi8KIHN0YXRpYyBpbnQgc2hvd19s ZXZlbCA9IDA7CkBAIC0xNDU4LDYgKzE0NTksMzQgQEAgc2hvd19vbXBfbmFt ZWxpc3QgKGludCBsaXN0X3R5cGUsIGdmY19vbXBfbmFtZWxpc3QgKm4pCiAg IGdmY19jdXJyZW50X25zID0gbnNfY3VycjsKIH0KIAorc3RhdGljIHZvaWQK K3Nob3dfb21wX2Fzc3VtZXMgKGdmY19vbXBfYXNzdW1wdGlvbnMgKmFzc3Vt ZSkKK3sKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBhc3N1bWUtPm5fYWJzZW50 OyBpKyspCisgICAgeworICAgICAgZnB1dHMgKCIgQUJTRU5UICgiLCBkdW1w ZmlsZSk7CisgICAgICBmcHV0cyAoZ2ZjX2FzY2lpX3N0YXRlbWVudCAoYXNz dW1lLT5hYnNlbnRbaV0sIHRydWUpLCBkdW1wZmlsZSk7CisgICAgICBmcHV0 YyAoJyknLCBkdW1wZmlsZSk7CisgICAgfQorICBmb3IgKGludCBpID0gMDsg aSA8IGFzc3VtZS0+bl9jb250YWluczsgaSsrKQorICAgIHsKKyAgICAgIGZw dXRzICgiIENPTlRBSU5TICgiLCBkdW1wZmlsZSk7CisgICAgICBmcHV0cyAo Z2ZjX2FzY2lpX3N0YXRlbWVudCAoYXNzdW1lLT5jb250YWluc1tpXSwgdHJ1 ZSksIGR1bXBmaWxlKTsKKyAgICAgIGZwdXRjICgnKScsIGR1bXBmaWxlKTsK KyAgICB9CisgIGZvciAoZ2ZjX2V4cHJfbGlzdCAqZWwgPSBhc3N1bWUtPmhv bGRzOyBlbDsgZWwgPSBlbC0+bmV4dCkKKyAgICB7CisgICAgICBmcHV0cyAo IiBIT0xEUyAoIiwgZHVtcGZpbGUpOworICAgICAgc2hvd19leHByIChlbC0+ ZXhwcik7CisgICAgICBmcHV0YyAoJyknLCBkdW1wZmlsZSk7CisgICAgfQor ICBpZiAoYXNzdW1lLT5ub19vcGVubXApCisgICAgZnB1dHMgKCIgTk9fT1BF Tk1QIiwgZHVtcGZpbGUpOworICBpZiAoYXNzdW1lLT5ub19vcGVubXBfcm91 dGluZXMpCisgICAgZnB1dHMgKCIgTk9fT1BFTk1QX1JPVVRJTkVTIiwgZHVt cGZpbGUpOworICBpZiAoYXNzdW1lLT5ub19wYXJhbGxlbGlzbSkKKyAgICBm cHV0cyAoIiBOT19QQVJBTExFTElTTSIsIGR1bXBmaWxlKTsKK30KIAogLyog U2hvdyBPcGVuTVAgb3IgT3BlbkFDQyBjbGF1c2VzLiAgKi8KIApAQCAtMTk5 OCw2ICsyMDI3LDggQEAgc2hvd19vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1 c2VzICpvbXBfY2xhdXNlcykKICAgICAgIHNob3dfZXhwciAob21wX2NsYXVz ZXMtPm1lc3NhZ2UpOwogICAgICAgZnB1dGMgKCcpJywgZHVtcGZpbGUpOwog ICAgIH0KKyAgaWYgKG9tcF9jbGF1c2VzLT5hc3N1bWUpCisgICAgc2hvd19v bXBfYXNzdW1lcyAob21wX2NsYXVzZXMtPmFzc3VtZSk7CiB9CiAKIC8qIFNo b3cgYSBzaW5nbGUgT3Blbk1QIG9yIE9wZW5BQ0MgZGlyZWN0aXZlIG5vZGUg YW5kIGV2ZXJ5dGhpbmcgdW5kZXJuZWF0aCBpdApAQCAtMjAyNyw2ICsyMDU4 LDcgQEAgc2hvd19vbXBfbm9kZSAoaW50IGxldmVsLCBnZmNfY29kZSAqYykK ICAgICBjYXNlIEVYRUNfT0FDQ19DQUNIRTogbmFtZSA9ICJDQUNIRSI7IGlz X29hY2MgPSB0cnVlOyBicmVhazsKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRF Ul9EQVRBOiBuYW1lID0gIkVOVEVSIERBVEEiOyBpc19vYWNjID0gdHJ1ZTsg YnJlYWs7CiAgICAgY2FzZSBFWEVDX09BQ0NfRVhJVF9EQVRBOiBuYW1lID0g IkVYSVQgREFUQSI7IGlzX29hY2MgPSB0cnVlOyBicmVhazsKKyAgICBjYXNl IEVYRUNfT01QX0FTU1VNRTogbmFtZSA9ICJBU1NVTUUiOyBicmVhazsKICAg ICBjYXNlIEVYRUNfT01QX0FUT01JQzogbmFtZSA9ICJBVE9NSUMiOyBicmVh azsKICAgICBjYXNlIEVYRUNfT01QX0JBUlJJRVI6IG5hbWUgPSAiQkFSUklF UiI7IGJyZWFrOwogICAgIGNhc2UgRVhFQ19PTVBfQ0FOQ0VMOiBuYW1lID0g IkNBTkNFTCI7IGJyZWFrOwpAQCAtMjEyOCw2ICsyMTYwLDcgQEAgc2hvd19v bXBfbm9kZSAoaW50IGxldmVsLCBnZmNfY29kZSAqYykKICAgICBjYXNlIEVY RUNfT0FDQ19DQUNIRToKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9EQVRB OgogICAgIGNhc2UgRVhFQ19PQUNDX0VYSVRfREFUQToKKyAgICBjYXNlIEVY RUNfT01QX0FTU1VNRToKICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTDoKICAg ICBjYXNlIEVYRUNfT01QX0NBTkNFTExBVElPTl9QT0lOVDoKICAgICBjYXNl IEVYRUNfT01QX0RJU1RSSUJVVEU6CkBAIC0zMzUzLDYgKzMzODYsNyBAQCBz aG93X2NvZGVfbm9kZSAoaW50IGxldmVsLCBnZmNfY29kZSAqYykKICAgICBj YXNlIEVYRUNfT0FDQ19DQUNIRToKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRF Ul9EQVRBOgogICAgIGNhc2UgRVhFQ19PQUNDX0VYSVRfREFUQToKKyAgICBj YXNlIEVYRUNfT01QX0FTU1VNRToKICAgICBjYXNlIEVYRUNfT01QX0FUT01J QzoKICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTDoKICAgICBjYXNlIEVYRUNf T01QX0NBTkNFTExBVElPTl9QT0lOVDoKQEAgLTM1MzEsNiArMzU2NSwxNCBA QCBzaG93X25hbWVzcGFjZSAoZ2ZjX25hbWVzcGFjZSAqbnMpCiAJfQogICAg IH0KIAorICBpZiAobnMtPm9tcF9hc3N1bWVzKQorICAgIHsKKyAgICAgIHNo b3dfaW5kZW50ICgpOworICAgICAgZnByaW50ZiAoZHVtcGZpbGUsICIhJE9N UCBBU1NVTUVTIik7CisgICAgICBzaG93X29tcF9hc3N1bWVzIChucy0+b21w X2Fzc3VtZXMpOworICAgIH0KKworCiAgIGZwdXRjICgnXG4nLCBkdW1wZmls ZSk7CiAgIHNob3dfaW5kZW50ICgpOwogICBmcHV0cyAoImNvZGU6IiwgZHVt cGZpbGUpOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCBi L2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKaW5kZXggNGJhYmQ3NzkyNGIuLjI5 YTQ0M2RjZDQ0IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5o CisrKyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKQEAgLTMxNiw3ICszMTYs NyBAQCBlbnVtIGdmY19zdGF0ZW1lbnQKICAgU1RfT01QX0VORF9QQVJBTExF TF9NQVNLRURfVEFTS0xPT1BfU0lNRCwgU1RfT01QX01BU0tFRF9UQVNLTE9P UCwKICAgU1RfT01QX0VORF9NQVNLRURfVEFTS0xPT1AsIFNUX09NUF9NQVNL RURfVEFTS0xPT1BfU0lNRCwKICAgU1RfT01QX0VORF9NQVNLRURfVEFTS0xP T1BfU0lNRCwgU1RfT01QX1NDT1BFLCBTVF9PTVBfRU5EX1NDT1BFLAotICBT VF9PTVBfRVJST1IsIFNUX05PTkUKKyAgU1RfT01QX0VSUk9SLCBTVF9PTVBf QVNTVU1FLCBTVF9PTVBfRU5EX0FTU1VNRSwgU1RfT01QX0FTU1VNRVMsIFNU X05PTkUKIH07CiAKIC8qIFR5cGVzIG9mIGludGVyZmFjZXMgdGhhdCB3ZSBj YW4gaGF2ZS4gIEFzc2lnbm1lbnQgaW50ZXJmYWNlcyBhcmUKQEAgLTE1MDYs NiArMTUwNiwxOSBAQCBlbnVtIGdmY19vbXBfYmluZF90eXBlCiAgIE9NUF9C SU5EX1RIUkVBRAogfTsKIAordHlwZWRlZiBzdHJ1Y3QgZ2ZjX29tcF9hc3N1 bXB0aW9ucworeworICBpbnQgbl9hYnNlbnQsIG5fY29udGFpbnM7CisgIGVu dW0gZ2ZjX3N0YXRlbWVudCAqYWJzZW50LCAqY29udGFpbnM7CisgIGdmY19l eHByX2xpc3QgKmhvbGRzOworICBsb2N1cyB3aGVyZTsKKyAgYm9vbCBub19v cGVubXA6MSwgbm9fb3Blbm1wX3JvdXRpbmVzOjEsIG5vX3BhcmFsbGVsaXNt OjE7Cit9CitnZmNfb21wX2Fzc3VtcHRpb25zOworCisjZGVmaW5lIGdmY19n ZXRfb21wX2Fzc3VtcHRpb25zKCkgWENORVcgKGdmY19vbXBfYXNzdW1wdGlv bnMpCisKKwogdHlwZWRlZiBzdHJ1Y3QgZ2ZjX29tcF9jbGF1c2VzCiB7CiAg IGdmY19vbXBfbmFtZWxpc3QgKmxpc3RzW09NUF9MSVNUX05VTV07CkBAIC0x NTI5LDYgKzE1NDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfb21wX2NsYXVz ZXMKICAgc3RydWN0IGdmY19leHByICppZl9leHByc1tPTVBfSUZfTEFTVF07 CiAgIHN0cnVjdCBnZmNfZXhwciAqZGlzdF9jaHVua19zaXplOwogICBzdHJ1 Y3QgZ2ZjX2V4cHIgKm1lc3NhZ2U7CisgIHN0cnVjdCBnZmNfb21wX2Fzc3Vt cHRpb25zICphc3N1bWU7CiAgIGNvbnN0IGNoYXIgKmNyaXRpY2FsX25hbWU7 CiAgIGVudW0gZ2ZjX29tcF9kZWZhdWx0X3NoYXJpbmcgZGVmYXVsdF9zaGFy aW5nOwogICBlbnVtIGdmY19vbXBfYXRvbWljX29wIGF0b21pY19vcDsKQEAg LTIxNDUsNiArMjE1OSw5IEBAIHR5cGVkZWYgc3RydWN0IGdmY19uYW1lc3Bh Y2UKICAgLyogTGlua2VkIGxpc3Qgb2YgISRvbXAgZGVjbGFyZSB2YXJpYW50 IGNvbnN0cnVjdHMuICAqLwogICBzdHJ1Y3QgZ2ZjX29tcF9kZWNsYXJlX3Zh cmlhbnQgKm9tcF9kZWNsYXJlX3ZhcmlhbnQ7CiAKKyAgLyogT3Blbk1QIGFz c3VtcHRpb25zLiAgKi8KKyAgc3RydWN0IGdmY19vbXBfYXNzdW1wdGlvbnMg Km9tcF9hc3N1bWVzOworCiAgIC8qIEEgaGFzaCBzZXQgZm9yIHRoZSBnZmMg ZXhwcmVzc2lvbnMgdGhhdCBoYXZlIGFscmVhZHkKICAgICAgYmVlbiBmaW5h bGl6ZWQgaW4gdGhpcyBuYW1lc3BhY2UuICAqLwogCkBAIC0yOTEzLDcgKzI5 MzAsNyBAQCBlbnVtIGdmY19leGVjX29wCiAgIEVYRUNfT01QX09SREVSRUQs IEVYRUNfT01QX1BBUkFMTEVMLCBFWEVDX09NUF9QQVJBTExFTF9ETywKICAg RVhFQ19PTVBfUEFSQUxMRUxfU0VDVElPTlMsIEVYRUNfT01QX1BBUkFMTEVM X1dPUktTSEFSRSwKICAgRVhFQ19PTVBfU0VDVElPTlMsIEVYRUNfT01QX1NJ TkdMRSwgRVhFQ19PTVBfV09SS1NIQVJFLAotICBFWEVDX09NUF9BVE9NSUMs IEVYRUNfT01QX0JBUlJJRVIsIEVYRUNfT01QX0VORF9OT1dBSVQsCisgIEVY RUNfT01QX0FTU1VNRSwgRVhFQ19PTVBfQVRPTUlDLCBFWEVDX09NUF9CQVJS SUVSLCBFWEVDX09NUF9FTkRfTk9XQUlULAogICBFWEVDX09NUF9FTkRfU0lO R0xFLCBFWEVDX09NUF9UQVNLLCBFWEVDX09NUF9UQVNLV0FJVCwKICAgRVhF Q19PTVBfVEFTS1lJRUxELCBFWEVDX09NUF9DQU5DRUwsIEVYRUNfT01QX0NB TkNFTExBVElPTl9QT0lOVCwKICAgRVhFQ19PTVBfVEFTS0dST1VQLCBFWEVD X09NUF9TSU1ELCBFWEVDX09NUF9ET19TSU1ELApAQCAtMzU3Niw2ICszNTkz LDcgQEAgdm9pZCBnZmNfZnJlZV9vbXBfZGVjbGFyZV9zaW1kIChnZmNfb21w X2RlY2xhcmVfc2ltZCAqKTsKIHZvaWQgZ2ZjX2ZyZWVfb21wX2RlY2xhcmVf c2ltZF9saXN0IChnZmNfb21wX2RlY2xhcmVfc2ltZCAqKTsKIHZvaWQgZ2Zj X2ZyZWVfb21wX3VkciAoZ2ZjX29tcF91ZHIgKik7CiBnZmNfb21wX3VkciAq Z2ZjX29tcF91ZHJfZmluZCAoZ2ZjX3N5bXRyZWUgKiwgZ2ZjX3R5cGVzcGVj ICopOwordm9pZCBnZmNfcmVzb2x2ZV9vbXBfYXNzdW1wdGlvbnMgKGdmY19v bXBfYXNzdW1wdGlvbnMgKiwgY29uc3QgY2hhciAqLCBsb2N1cyAqKTsKIHZv aWQgZ2ZjX3Jlc29sdmVfb21wX2RpcmVjdGl2ZSAoZ2ZjX2NvZGUgKiwgZ2Zj X25hbWVzcGFjZSAqKTsKIHZvaWQgZ2ZjX3Jlc29sdmVfZG9faXRlcmF0b3Ig KGdmY19jb2RlICosIGdmY19zeW1ib2wgKiwgYm9vbCk7CiB2b2lkIGdmY19y ZXNvbHZlX29tcF9sb2NhbF92YXJzIChnZmNfbmFtZXNwYWNlICopOwpkaWZm IC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vbWF0Y2guaCBiL2djYy9mb3J0cmFuL21h dGNoLmgKaW5kZXggMWY1M2UwY2I2N2QuLjJhODA1ODE1ZDljIDEwMDY0NAot LS0gYS9nY2MvZm9ydHJhbi9tYXRjaC5oCisrKyBiL2djYy9mb3J0cmFuL21h dGNoLmgKQEAgLTE0OSw2ICsxNDksOCBAQCBtYXRjaCBnZmNfbWF0Y2hfb2Fj Y19yb3V0aW5lICh2b2lkKTsKIAogLyogT3Blbk1QIGRpcmVjdGl2ZSBtYXRj aGVycy4gICovCiBtYXRjaCBnZmNfbWF0Y2hfb21wX2Vvc19lcnJvciAodm9p ZCk7CittYXRjaCBnZmNfbWF0Y2hfb21wX2Fzc3VtZSAodm9pZCk7CittYXRj aCBnZmNfbWF0Y2hfb21wX2Fzc3VtZXMgKHZvaWQpOwogbWF0Y2ggZ2ZjX21h dGNoX29tcF9hdG9taWMgKHZvaWQpOwogbWF0Y2ggZ2ZjX21hdGNoX29tcF9i YXJyaWVyICh2b2lkKTsKIG1hdGNoIGdmY19tYXRjaF9vbXBfY2FuY2VsICh2 b2lkKTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL29wZW5tcC5jYyBiL2dj Yy9mb3J0cmFuL29wZW5tcC5jYwppbmRleCBjZTcxOWJkNWQ5Mi4uZGYxZjA0 NjE3MGQgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL29wZW5tcC5jYworKysg Yi9nY2MvZm9ydHJhbi9vcGVubXAuY2MKQEAgLTMwLDYgKzMwLDkgQEAgYWxv bmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBz ZWUKICNpbmNsdWRlICJnb21wLWNvbnN0YW50cy5oIgogI2luY2x1ZGUgInRh cmdldC1tZW1vcnkuaCIgIC8qIEZvciBnZmNfZW5jb2RlX2NoYXJhY3Rlci4g ICovCiAKKworc3RhdGljIGdmY19zdGF0ZW1lbnQgb21wX2NvZGVfdG9fc3Rh dGVtZW50IChnZmNfY29kZSAqKTsKKwogLyogTWF0Y2ggYW4gZW5kIG9mIE9w ZW5NUCBkaXJlY3RpdmUuICBFbmQgb2YgT3Blbk1QIGRpcmVjdGl2ZSBpcyBv cHRpb25hbAogICAgd2hpdGVzcGFjZSwgZm9sbG93ZWQgYnkgJ1xuJyBvciBj b21tZW50ICchJy4gICovCiAKQEAgLTExMSw2ICsxMTQsMTMgQEAgZ2ZjX2Zy ZWVfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAqYykKICAgZ2ZjX2Zy ZWVfZXhwcl9saXN0IChjLT53YWl0X2xpc3QpOwogICBnZmNfZnJlZV9leHBy X2xpc3QgKGMtPnRpbGVfbGlzdCk7CiAgIGZyZWUgKENPTlNUX0NBU1QgKGNo YXIgKiwgYy0+Y3JpdGljYWxfbmFtZSkpOworICBpZiAoYy0+YXNzdW1lKQor ICAgIHsKKyAgICAgIGZyZWUgKGMtPmFzc3VtZS0+YWJzZW50KTsKKyAgICAg IGZyZWUgKGMtPmFzc3VtZS0+Y29udGFpbnMpOworICAgICAgZ2ZjX2ZyZWVf ZXhwcl9saXN0IChjLT5hc3N1bWUtPmhvbGRzKTsKKyAgICAgIGZyZWUgKGMt PmFzc3VtZSk7CisgICAgfQogICBmcmVlIChjKTsKIH0KIApAQCAtOTkyLDYg KzEwMDIsNyBAQCBlbnVtIG9tcF9tYXNrMgogICBPTVBfQ0xBVVNFX0hBU19E RVZJQ0VfQUREUiwgIC8qIE9wZW5NUCA1LjEgICovCiAgIE9NUF9DTEFVU0Vf RU5URVIsIC8qIE9wZW5NUCA1LjIgKi8KICAgT01QX0NMQVVTRV9ET0FDUk9T UywgLyogT3Blbk1QIDUuMiAqLworICBPTVBfQ0xBVVNFX0FTU1VNUFRJT05T LCAvKiBPcGVuTVAgNS4xLiAqLwogICAvKiBUaGlzIG11c3QgY29tZSBsYXN0 LiAgKi8KICAgT01QX01BU0syX0xBU1QKIH07CkBAIC0xNDA3LDYgKzE0MTgs MTY3IEBAIGdmY19tYXRjaF9vbXBfY2xhdXNlX3JlZHVjdGlvbiAoY2hhciBw YywgZ2ZjX29tcF9jbGF1c2VzICpjLCBib29sIG9wZW5hY2MsCiAgIHJldHVy biBNQVRDSF9ZRVM7CiB9CiAKK3N0YXRpYyBtYXRjaAorZ2ZjX29tcF9hYnNl bnRfY29udGFpbnNfY2xhdXNlIChnZmNfb21wX2Fzc3VtcHRpb25zICoqYXNz dW1lLCBib29sIGlzX2Fic2VudCkKK3sKKyAgaWYgKCphc3N1bWUgPT0gTlVM TCkKKyAgICAqYXNzdW1lID0gZ2ZjX2dldF9vbXBfYXNzdW1wdGlvbnMgKCk7 CisgIGRvCisgICAgeworICAgICAgZ2ZjX3N0YXRlbWVudCBzdCA9IFNUX05P TkU7CisgICAgICBnZmNfZ29iYmxlX3doaXRlc3BhY2UgKCk7CisgICAgICBs b2N1cyBvbGRfbG9jID0gZ2ZjX2N1cnJlbnRfbG9jdXM7CisgICAgICBzd2l0 Y2ggKGdmY19wZWVrX2FzY2lpX2NoYXIgKCkpCisJeworCWNhc2UgJ2EnOgor CSAgaWYgKGdmY19tYXRjaCAoImFzc3VtZXMiKSA9PSBNQVRDSF9ZRVMpCisJ ICAgIHN0ID0gU1RfT01QX0FTU1VNRVM7CisJICBlbHNlIGlmIChnZmNfbWF0 Y2ggKCJhc3N1bWUiKSA9PSBNQVRDSF9ZRVMpCisJICAgIHN0ID0gU1RfT01Q X0FTU1VNRTsKKwkgIGVsc2UgaWYgKGdmY19tYXRjaCAoImF0b21pYyIpID09 IE1BVENIX1lFUykKKwkgICAgc3QgPSBTVF9PTVBfQVRPTUlDOworCSAgYnJl YWs7CisJY2FzZSAnYic6CisJICBpZiAoZ2ZjX21hdGNoICgiYmFycmllciIp ID09IE1BVENIX1lFUykKKwkgICAgc3QgPSBTVF9PTVBfQkFSUklFUjsKKwkg IGJyZWFrOworCWNhc2UgJ2MnOgorCSAgaWYgKGdmY19tYXRjaCAoImNhbmNl bCIpID09IE1BVENIX1lFUykKKwkgICAgc3QgPSBTVF9PTVBfQ0FOQ0VMOwor CSAgZWxzZSBpZiAoZ2ZjX21hdGNoICgiY2FuY2VsbGF0aW9uIHBvaW50Iikg PT0gTUFUQ0hfWUVTKQorCSAgICBzdCA9IFNUX09NUF9DQU5DRUxMQVRJT05f UE9JTlQ7CisJICBlbHNlIGlmIChnZmNfbWF0Y2ggKCJjcml0aWNhbCIpID09 IE1BVENIX1lFUykKKwkgICAgc3QgPSBTVF9PTVBfQ1JJVElDQUw7CisJICBi cmVhazsKKwljYXNlICdkJzoKKwkgIGlmIChnZmNfbWF0Y2ggKCJkZWNsYXJl IHJlZHVjdGlvbiIpID09IE1BVENIX1lFUykKKwkgICAgc3QgPSBTVF9PTVBf REVDTEFSRV9SRURVQ1RJT047CisJICBlbHNlIGlmIChnZmNfbWF0Y2ggKCJk ZWNsYXJlIHNpbWQiKSA9PSBNQVRDSF9ZRVMpCisJICAgIHN0ID0gU1RfT01Q X0RFQ0xBUkVfU0lNRDsKKwkgIGVsc2UgaWYgKGdmY19tYXRjaCAoImRlY2xh cmUgdGFyZ2V0IikgPT0gTUFUQ0hfWUVTKQorCSAgICBzdCA9IFNUX09NUF9E RUNMQVJFX1RBUkdFVDsKKwkgIGVsc2UgaWYgKGdmY19tYXRjaCAoImRlY2xh cmUgdmFyaWFudCIpID09IE1BVENIX1lFUykKKwkgICAgc3QgPSBTVF9PTVBf REVDTEFSRV9WQVJJQU5UOworCSAgZWxzZSBpZiAoZ2ZjX21hdGNoICgiZGVw b2JqIikgPT0gTUFUQ0hfWUVTKQorCSAgICBzdCA9IFNUX09NUF9ERVBPQko7 CisJICBlbHNlIGlmIChnZmNfbWF0Y2ggKCJkaXN0cmlidXRlIikgPT0gTUFU Q0hfWUVTKQorCSAgICBzdCA9IFNUX09NUF9ESVNUUklCVVRFOworCSAgZWxz ZSBpZiAoZ2ZjX21hdGNoICgiZG8iKSA9PSBNQVRDSF9ZRVMpCisJICAgIHN0 ID0gU1RfT01QX0RPOworCSAgYnJlYWs7CisJY2FzZSAnZSc6CisJICBpZiAo Z2ZjX21hdGNoICgiZXJyb3IiKSA9PSBNQVRDSF9ZRVMpCisJICAgIHN0ID0g U1RfT01QX0VSUk9SOworCSAgYnJlYWs7CisJY2FzZSAnZic6CisJICBpZiAo Z2ZjX21hdGNoICgiZmx1c2giKSA9PSBNQVRDSF9ZRVMpCisJICAgIHN0ID0g U1RfT01QX0ZMVVNIOworCSAgYnJlYWs7CisJY2FzZSAnbCc6CisJICBpZiAo Z2ZjX21hdGNoICgibG9vcCIpID09IE1BVENIX1lFUykKKwkgICAgc3QgPSBT VF9PTVBfTE9PUDsKKwkgIGJyZWFrOworCWNhc2UgJ20nOgorCSAgaWYgKGdm Y19tYXRjaCAoIm1hc2tlZCIpID09IE1BVENIX1lFUykKKwkgICAgc3QgPSBT VF9PTVBfTUFTS0VEOworCSAgYnJlYWs7CisJY2FzZSAncCc6CisJICBpZiAo Z2ZjX21hdGNoICgicGFyYWxsZWwiKSA9PSBNQVRDSF9ZRVMpCisJICAgIHN0 ID0gU1RfT01QX1BBUkFMTEVMOworCSAgYnJlYWs7CisJY2FzZSAncic6CisJ ICBpZiAoZ2ZjX21hdGNoICgicmVxdWlyZXMiKSA9PSBNQVRDSF9ZRVMpCisJ ICAgIHN0ID0gU1RfT01QX1JFUVVJUkVTOworCSAgYnJlYWs7CisJY2FzZSAn cyc6CisJICBpZiAoZ2ZjX21hdGNoICgic2NhbiIpID09IE1BVENIX1lFUykK KwkgICAgc3QgPSBTVF9PTVBfU0NBTjsKKwkgIGVsc2UgaWYgKGdmY19tYXRj aCAoInNjb3BlIikgPT0gTUFUQ0hfWUVTKQorCSAgICBzdCA9IFNUX09NUF9T Q09QRTsKKwkgIGVsc2UgaWYgKGdmY19tYXRjaCAoInNlY3Rpb25zIikgPT0g TUFUQ0hfWUVTKQorCSAgICBzdCA9IFNUX09NUF9TRUNUSU9OUzsKKwkgIGVs c2UgaWYgKGdmY19tYXRjaCAoInNlY3Rpb24iKSA9PSBNQVRDSF9ZRVMpCisJ ICAgIHN0ID0gU1RfT01QX1NFQ1RJT047CisJICBlbHNlIGlmIChnZmNfbWF0 Y2ggKCJzaW1kIikgPT0gTUFUQ0hfWUVTKQorCSAgICBzdCA9IFNUX09NUF9T SU1EOworCSAgZWxzZSBpZiAoZ2ZjX21hdGNoICgic2luZ2xlIikgPT0gTUFU Q0hfWUVTKQorCSAgICBzdCA9IFNUX09NUF9TSU5HTEU7CisJICBicmVhazsK KwljYXNlICd0JzoKKwkgIGlmIChnZmNfbWF0Y2ggKCJ0YXJnZXQgZGF0YSIp ID09IE1BVENIX1lFUykKKwkgICAgc3QgPSBTVF9PTVBfVEFSR0VUX0RBVEE7 CisJICBpZiAoZ2ZjX21hdGNoICgidGFyZ2V0IGVudGVyIGRhdGEiKSA9PSBN QVRDSF9ZRVMpCisJICAgIHN0ID0gU1RfT01QX1RBUkdFVF9FTlRFUl9EQVRB OworCSAgaWYgKGdmY19tYXRjaCAoInRhcmdldCBleGl0IGRhdGEiKSA9PSBN QVRDSF9ZRVMpCisJICAgIHN0ID0gU1RfT01QX1RBUkdFVF9FWElUX0RBVEE7 CisJICBpZiAoZ2ZjX21hdGNoICgidGFyZ2V0IHVwZGF0ZSIpID09IE1BVENI X1lFUykKKwkgICAgc3QgPSBTVF9PTVBfVEFSR0VUX1VQREFURTsKKwkgIGlm IChnZmNfbWF0Y2ggKCJ0YXJnZXQiKSA9PSBNQVRDSF9ZRVMpCisJICAgIHN0 ID0gU1RfT01QX1RBUkdFVDsKKwkgIGlmIChnZmNfbWF0Y2ggKCJ0YXNrZ3Jv dXAiKSA9PSBNQVRDSF9ZRVMpCisJICAgIHN0ID0gU1RfT01QX1RBU0tHUk9V UDsKKwkgIGlmIChnZmNfbWF0Y2ggKCJ0YXNrbG9vcCIpID09IE1BVENIX1lF UykKKwkgICAgc3QgPSBTVF9PTVBfVEFTS0xPT1A7CisJICBpZiAoZ2ZjX21h dGNoICgidGFzayIpID09IE1BVENIX1lFUykKKwkgICAgc3QgPSBTVF9PTVBf VEFTSzsKKwkgIGlmIChnZmNfbWF0Y2ggKCJ0YXNrd2FpdCIpID09IE1BVENI X1lFUykKKwkgICAgc3QgPSBTVF9PTVBfVEFTS1dBSVQ7CisJICBpZiAoZ2Zj X21hdGNoICgidGFza3lpZWxkIikgPT0gTUFUQ0hfWUVTKQorCSAgICBzdCA9 IFNUX09NUF9UQVNLWUlFTEQ7CisJICBpZiAoZ2ZjX21hdGNoICgidGVhbXMi KSA9PSBNQVRDSF9ZRVMpCisJICAgIHN0ID0gU1RfT01QX1RFQU1TOworCSAg aWYgKGdmY19tYXRjaCAoInRocmVhZHByaXZhdGUiKSA9PSBNQVRDSF9ZRVMp CisJICAgIHN0ID0gU1RfT01QX1RIUkVBRFBSSVZBVEU7CisJICBicmVhazsK KwljYXNlICd3JzoKKwkgIGlmIChnZmNfbWF0Y2ggKCJ3b3Jrc2hhcmUiKSA9 PSBNQVRDSF9ZRVMpCisJICAgIHN0ID0gU1RfT01QX1dPUktTSEFSRTsKKwlk ZWZhdWx0OgorCSAgYnJlYWs7CisJfQorICAgICAgaWYgKHN0ID09IFNUX05P TkUpCisJeworCSAgZ2ZjX2Vycm9yICgiVW5rbm93biBkaXJlY3RpdmUgYXQg JUwiLCAmb2xkX2xvYyk7CisJICByZXR1cm4gTUFUQ0hfRVJST1I7CisJfQor ICAgICAgaWYgKGlzX29tcF9kZWNsYXJhdGl2ZV9zdG10IChzdCkgfHwgaXNf b21wX2luZm9ybWF0aW9uYWxfc3RtdCAoc3QpKQorCXsKKwkgIGdmY19lcnJv ciAoIkludmFsaWQgJXFzIGRpcmVjdGl2ZSBhdCAlTCBpbiAlcyBjbGF1c2U6 IGRlY2xhcmF0aXZlLCAiCisJCSAgICAgImluZm9ybWF0aW9uYWwgYW5kIG1l dGEgZGlyZWN0aXZlcyBub3QgcGVybWl0dGVkIiwKKwkJICAgICBnZmNfYXNj aWlfc3RhdGVtZW50IChzdCwgdHJ1ZSksICZvbGRfbG9jLAorCQkgICAgIGlz X2Fic2VudCA/ICJBQlNFTlQiIDogIkNPTlRBSU5TIik7CisJICByZXR1cm4g TUFUQ0hfRVJST1I7CisJfQorICAgICAgaWYgKGlzX2Fic2VudCkKKwl7CisJ ICAoKmFzc3VtZSktPm5fYWJzZW50Kys7CisJICAoKmFzc3VtZSktPmFic2Vu dAorCSAgICA9IChnZmNfc3RhdGVtZW50ICopIHhyZWFsbG9jICgoKmFzc3Vt ZSktPmFic2VudCwKKwkJCQkJICBzaXplb2YgKGdmY19zdGF0ZW1lbnQpCisJ CQkJCSAgKiAoKmFzc3VtZSktPm5fYWJzZW50KTsKKwkgICgqYXNzdW1lKS0+ YWJzZW50WygqYXNzdW1lKS0+bl9hYnNlbnQgLSAxXSA9IHN0OworCX0KKyAg ICAgIGVsc2UKKwl7CisJICAoKmFzc3VtZSktPm5fY29udGFpbnMrKzsKKwkg ICgqYXNzdW1lKS0+Y29udGFpbnMKKwkgICAgPSAoZ2ZjX3N0YXRlbWVudCAq KSB4cmVhbGxvYyAoKCphc3N1bWUpLT5jb250YWlucywKKwkJCQkJICBzaXpl b2YgKGdmY19zdGF0ZW1lbnQpCisJCQkJCSAgKiAoKmFzc3VtZSktPm5fY29u dGFpbnMpOworCSAgKCphc3N1bWUpLT5jb250YWluc1soKmFzc3VtZSktPm5f Y29udGFpbnMgLSAxXSA9IHN0OworCX0KKyAgICAgIGdmY19nb2JibGVfd2hp dGVzcGFjZSAoKTsKKyAgICAgIGlmIChnZmNfbWF0Y2goIiwiKSA9PSBNQVRD SF9ZRVMpCisJY29udGludWU7CisgICAgICBpZiAoZ2ZjX21hdGNoKCIpIikg PT0gTUFUQ0hfWUVTKQorCWJyZWFrOworICAgICAgZ2ZjX2Vycm9yICgiRXhw ZWN0ZWQgJTwsJT4gb3IgJTwpJT4gYXQgJUMiKTsKKyAgICAgIHJldHVybiBN QVRDSF9FUlJPUjsKKyAgICB9CisgIHdoaWxlICh0cnVlKTsKKworICByZXR1 cm4gTUFUQ0hfWUVTOworfQogCiAvKiBNYXRjaCB3aXRoIGR1cGxpY2F0ZSBj aGVjay4gTWF0Y2hlcyAnbmFtZScuIElmIGV4cHIgIT0gTlVMTCwgaXQKICAg IHRoZW4gbWF0Y2hlcyAnKGV4cHIpJywgb3RoZXJ3aXNlLCBpZiBvcGVuX3Bh cmVucyBpcyB0cnVlLApAQCAtMTQ3MiwxMCArMTY0NCwxMCBAQCBzdGF0aWMg bWF0Y2gKIGdmY19tYXRjaF9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2Vz ICoqY3AsIGNvbnN0IG9tcF9tYXNrIG1hc2ssCiAJCSAgICAgICBib29sIGZp cnN0ID0gdHJ1ZSwgYm9vbCBuZWVkc19zcGFjZSA9IHRydWUsCiAJCSAgICAg ICBib29sIG9wZW5hY2MgPSBmYWxzZSwgYm9vbCBjb250ZXh0X3NlbGVjdG9y ID0gZmFsc2UsCi0JCSAgICAgICBib29sIG9wZW5tcF90YXJnZXQgPSBmYWxz ZSkKKwkJICAgICAgIGJvb2wgb3Blbm1wX3RhcmdldCA9IGZhbHNlLCBib29s IGFsbG9jX2NwID0gdHJ1ZSkKIHsKICAgYm9vbCBlcnJvciA9IGZhbHNlOwot ICBnZmNfb21wX2NsYXVzZXMgKmMgPSBnZmNfZ2V0X29tcF9jbGF1c2VzICgp OworICBnZmNfb21wX2NsYXVzZXMgKmM7CiAgIGxvY3VzIG9sZF9sb2M7CiAg IC8qIERldGVybWluZSB3aGV0aGVyIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBP cGVuQUNDIGRpcmVjdGl2ZSB0aGF0IHBlcm1pdHMKICAgICAgZGVyaXZlZCB0 eXBlIG1lbWJlciBhY2Nlc3Nlcy4gIFRoaXMgaW4gcGFydGljdWxhciBkaXNh bGxvd3MKQEAgLTE0ODcsNyArMTY1OSwxMyBAQCBnZmNfbWF0Y2hfb21wX2Ns YXVzZXMgKGdmY19vbXBfY2xhdXNlcyAqKmNwLCBjb25zdCBvbXBfbWFzayBt YXNrLAogCQkJICAgIHx8IChtYXNrICYgT01QX0NMQVVTRV9IT1NUX1NFTEYp KSk7CiAKICAgZ2NjX2NoZWNraW5nX2Fzc2VydCAoT01QX01BU0sxX0xBU1Qg PD0gNjQgJiYgT01QX01BU0syX0xBU1QgPD0gNjQpOwotICAqY3AgPSBOVUxM OworICBpZiAoYWxsb2NfY3ApCisgICAgeworICAgICAgYyA9IGdmY19nZXRf b21wX2NsYXVzZXMgKCk7CisgICAgICAqY3AgPSBOVUxMOworICAgIH0KKyAg ZWxzZQorICAgIGMgPSAqY3A7CiAgIHdoaWxlICgxKQogICAgIHsKICAgICAg IG1hdGNoIG0gPSBNQVRDSF9OTzsKQEAgLTE1MTEsNiArMTY4OSwxNCBAQCBn ZmNfbWF0Y2hfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAqKmNwLCBj b25zdCBvbXBfbWFzayBtYXNrLAogCWNhc2UgJ2EnOgogCSAgZW5kX2NvbG9u ID0gZmFsc2U7CiAJICBoZWFkID0gTlVMTDsKKwkgIGlmICgobWFzayAmIE9N UF9DTEFVU0VfQVNTVU1QVElPTlMpCisJICAgICAgJiYgZ2ZjX21hdGNoICgi YWJzZW50ICggIikgPT0gTUFUQ0hfWUVTKQorCSAgICB7CisJICAgICAgaWYg KGdmY19vbXBfYWJzZW50X2NvbnRhaW5zX2NsYXVzZSAoJmMtPmFzc3VtZSwg dHJ1ZSkKKwkJICAhPSBNQVRDSF9ZRVMpCisJCWdvdG8gZXJyb3I7CisJICAg ICAgY29udGludWU7CisJICAgIH0KIAkgIGlmICgobWFzayAmIE9NUF9DTEFV U0VfQUxJR05FRCkKIAkgICAgICAmJiBnZmNfbWF0Y2hfb21wX3ZhcmlhYmxl X2xpc3QgKCJhbGlnbmVkICgiLAogCQkJCQkgICAgICAmYy0+bGlzdHNbT01Q X0xJU1RfQUxJR05FRF0sCkBAIC0xNzQzLDYgKzE5MjksMTQgQEAgZ2ZjX21h dGNoX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKipjcCwgY29uc3Qg b21wX21hc2sgbWFzaywKIAkgICAgICBuZWVkc19zcGFjZSA9IHRydWU7CiAJ ICAgICAgY29udGludWU7CiAJICAgIH0KKwkgIGlmICgobWFzayAmIE9NUF9D TEFVU0VfQVNTVU1QVElPTlMpCisJICAgICAgJiYgZ2ZjX21hdGNoICgiY29u dGFpbnMgKCAiKSA9PSBNQVRDSF9ZRVMpCisJICAgIHsKKwkgICAgICBpZiAo Z2ZjX29tcF9hYnNlbnRfY29udGFpbnNfY2xhdXNlICgmYy0+YXNzdW1lLCBm YWxzZSkKKwkJICAhPSBNQVRDSF9ZRVMpCisJCWdvdG8gZXJyb3I7CisJICAg ICAgY29udGludWU7CisJICAgIH0KIAkgIGlmICgobWFzayAmIE9NUF9DTEFV U0VfQ09QWSkKIAkgICAgICAmJiBnZmNfbWF0Y2ggKCJjb3B5ICggIikgPT0g TUFUQ0hfWUVTCiAJICAgICAgJiYgZ2ZjX21hdGNoX29tcF9tYXBfY2xhdXNl ICgmYy0+bGlzdHNbT01QX0xJU1RfTUFQXSwKQEAgLTIyNzcsNiArMjQ3MSwy MCBAQCBnZmNfbWF0Y2hfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAq KmNwLCBjb25zdCBvbXBfbWFzayBtYXNrLAogCQlnb3RvIGVycm9yOwogCSAg ICAgIGNvbnRpbnVlOwogCSAgICB9CisJICBpZiAoKG1hc2sgJiBPTVBfQ0xB VVNFX0FTU1VNUFRJT05TKQorCSAgICAgICYmIGdmY19tYXRjaCAoImhvbGRz ICggIikgPT0gTUFUQ0hfWUVTKQorCSAgICB7CisJICAgICAgZ2ZjX2V4cHIg KmU7CisJICAgICAgaWYgKGdmY19tYXRjaCAoIiVlICkiLCAmZSkgIT0gTUFU Q0hfWUVTKQorCQlnb3RvIGVycm9yOworCSAgICAgIGlmIChjLT5hc3N1bWUg PT0gTlVMTCkKKwkJYy0+YXNzdW1lID0gZ2ZjX2dldF9vbXBfYXNzdW1wdGlv bnMgKCk7CisJICAgICAgZ2ZjX2V4cHJfbGlzdCAqZWwgPSBYQ05FVyAoZ2Zj X2V4cHJfbGlzdCk7CisJICAgICAgZWwtPmV4cHIgPSBlOworCSAgICAgIGVs LT5uZXh0ID0gYy0+YXNzdW1lLT5ob2xkczsKKwkgICAgICBjLT5hc3N1bWUt PmhvbGRzID0gZWw7CisJICAgICAgY29udGludWU7CisJICAgIH0KIAkgIGlm ICgobWFzayAmIE9NUF9DTEFVU0VfSE9TVF9TRUxGKQogCSAgICAgICYmIGdm Y19tYXRjaCAoImhvc3QgKCAiKSA9PSBNQVRDSF9ZRVMKIAkgICAgICAmJiBn ZmNfbWF0Y2hfb21wX21hcF9jbGF1c2UgKCZjLT5saXN0c1tPTVBfTElTVF9N QVBdLApAQCAtMjY2NCw2ICsyODcyLDQxIEBAIGdmY19tYXRjaF9vbXBfY2xh dXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoqY3AsIGNvbnN0IG9tcF9tYXNrIG1h c2ssCiAJCQkJCSAgIE9NUF9NQVBfSUZfUFJFU0VOVCwgdHJ1ZSwKIAkJCQkJ ICAgYWxsb3dfZGVyaXZlZCkpCiAJICAgIGNvbnRpbnVlOworCSAgaWYgKCht YXNrICYgT01QX0NMQVVTRV9BU1NVTVBUSU9OUykKKwkgICAgICAmJiAobSA9 IGdmY19tYXRjaF9kdXBsX2NoZWNrICghYy0+YXNzdW1lCisJCQkJCSAgICB8 fCAhYy0+YXNzdW1lLT5ub19vcGVubXBfcm91dGluZXMsCisJCQkJCSAgICAi bm9fb3Blbm1wX3JvdXRpbmVzIikpID09IE1BVENIX1lFUykKKwkgICAgewor CSAgICAgIGlmIChtID09IE1BVENIX0VSUk9SKQorCQlnb3RvIGVycm9yOwor CSAgICAgIGlmIChjLT5hc3N1bWUgPT0gTlVMTCkKKwkJYy0+YXNzdW1lID0g Z2ZjX2dldF9vbXBfYXNzdW1wdGlvbnMgKCk7CisJICAgICAgYy0+YXNzdW1l LT5ub19vcGVubXBfcm91dGluZXMgPSBuZWVkc19zcGFjZSA9IHRydWU7CisJ ICAgICAgY29udGludWU7CisJICAgIH0KKwkgIGlmICgobWFzayAmIE9NUF9D TEFVU0VfQVNTVU1QVElPTlMpCisJICAgICAgJiYgKG0gPSBnZmNfbWF0Y2hf ZHVwbF9jaGVjayAoIWMtPmFzc3VtZSB8fCAhYy0+YXNzdW1lLT5ub19vcGVu bXAsCisJCQkJCSAgICAibm9fb3Blbm1wIikpID09IE1BVENIX1lFUykKKwkg ICAgeworCSAgICAgIGlmIChtID09IE1BVENIX0VSUk9SKQorCQlnb3RvIGVy cm9yOworCSAgICAgIGlmIChjLT5hc3N1bWUgPT0gTlVMTCkKKwkJYy0+YXNz dW1lID0gZ2ZjX2dldF9vbXBfYXNzdW1wdGlvbnMgKCk7CisJICAgICAgYy0+ YXNzdW1lLT5ub19vcGVubXAgPSBuZWVkc19zcGFjZSA9IHRydWU7CisJICAg ICAgY29udGludWU7CisJICAgIH0KKwkgIGlmICgobWFzayAmIE9NUF9DTEFV U0VfQVNTVU1QVElPTlMpCisJICAgICAgJiYgKG0gPSBnZmNfbWF0Y2hfZHVw bF9jaGVjayAoIWMtPmFzc3VtZQorCQkJCQkgICAgfHwgIWMtPmFzc3VtZS0+ bm9fcGFyYWxsZWxpc20sCisJCQkJCSAgICAibm9fcGFyYWxsZWxpc20iKSkg PT0gTUFUQ0hfWUVTKQorCSAgICB7CisJICAgICAgaWYgKG0gPT0gTUFUQ0hf RVJST1IpCisJCWdvdG8gZXJyb3I7CisJICAgICAgaWYgKGMtPmFzc3VtZSA9 PSBOVUxMKQorCQljLT5hc3N1bWUgPSBnZmNfZ2V0X29tcF9hc3N1bXB0aW9u cyAoKTsKKwkgICAgICBjLT5hc3N1bWUtPm5vX3BhcmFsbGVsaXNtID0gbmVl ZHNfc3BhY2UgPSB0cnVlOworCSAgICAgIGNvbnRpbnVlOworCSAgICB9CiAJ ICBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNFX05PR1JPVVApCiAJICAgICAgJiYg KG0gPSBnZmNfbWF0Y2hfZHVwbF9jaGVjayAoIWMtPm5vZ3JvdXAsICJub2dy b3VwIikpCiAJCSAhPSBNQVRDSF9OTykKQEAgLTM5NDEsNiArNDE4NCw0MiBA QCBtYXRjaF9vbXAgKGdmY19leGVjX29wIG9wLCBjb25zdCBvbXBfbWFzayBt YXNrKQogfQogCiAKK21hdGNoCitnZmNfbWF0Y2hfb21wX2Fzc3VtZSAodm9p ZCkKK3sKKyAgcmV0dXJuIG1hdGNoX29tcCAoRVhFQ19PTVBfQVNTVU1FLCBv bXBfbWFzayAoT01QX0NMQVVTRV9BU1NVTVBUSU9OUykpOworfQorCisKK21h dGNoCitnZmNfbWF0Y2hfb21wX2Fzc3VtZXMgKHZvaWQpCit7CisgIGxvY3Vz IGxvYyA9IGdmY19jdXJyZW50X2xvY3VzOworICBnZmNfb21wX2NsYXVzZXMg KmMgPSBnZmNfZ2V0X29tcF9jbGF1c2VzICgpOworICBjLT5hc3N1bWUgPSBn ZmNfY3VycmVudF9ucy0+b21wX2Fzc3VtZXM7CisgIGlmICghZ2ZjX2N1cnJl bnRfbnMtPnByb2NfbmFtZQorICAgICAgfHwgKGdmY19jdXJyZW50X25zLT5w cm9jX25hbWUtPmF0dHIuZmxhdm9yICE9IEZMX01PRFVMRQorCSAgJiYgIWdm Y19jdXJyZW50X25zLT5wcm9jX25hbWUtPmF0dHIuc3Vicm91dGluZQorCSAg JiYgIWdmY19jdXJyZW50X25zLT5wcm9jX25hbWUtPmF0dHIuZnVuY3Rpb24p KQorICAgIHsKKyAgICAgIGdmY19lcnJvciAoIiFPTVAgQVNTVU1FUyBhdCAl QyBtdXN0IGJlIGluIHRoZSBzcGVjaWZpY2F0aW9uIHBhcnQgb2YgYSAiCisJ CSAic3VicHJvZ3JhbSBvciBtb2R1bGUiKTsKKyAgICAgIHJldHVybiBNQVRD SF9FUlJPUjsKKyAgICB9CisgIGlmIChnZmNfbWF0Y2hfb21wX2NsYXVzZXMg KCZjLCBvbXBfbWFzayAoT01QX0NMQVVTRV9BU1NVTVBUSU9OUyksIHRydWUs IHRydWUsCisJCQkgICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSAh PSBNQVRDSF9ZRVMpCisgICAgeworICAgICAgZ2ZjX2N1cnJlbnRfbnMtPm9t cF9hc3N1bWVzID0gTlVMTDsKKyAgICAgIHJldHVybiBNQVRDSF9FUlJPUjsK KyAgICB9CisgIGMtPmFzc3VtZS0+d2hlcmUgPSBsb2M7CisgIGdmY19jdXJy ZW50X25zLT5vbXBfYXNzdW1lcyA9IGMtPmFzc3VtZTsKKyAgYy0+YXNzdW1l ID0gTlVMTDsKKyAgZ2ZjX2ZyZWVfb21wX2NsYXVzZXMgKGMpOworICByZXR1 cm4gTUFUQ0hfWUVTOworfQorCisKIG1hdGNoCiBnZmNfbWF0Y2hfb21wX2Ny aXRpY2FsICh2b2lkKQogewpAQCAtNjUwNSw2ICs2Nzg0LDQyIEBAIHJlc29s dmVfb21wX3Vkcl9jbGF1c2UgKGdmY19vbXBfbmFtZWxpc3QgKm4sIGdmY19u YW1lc3BhY2UgKm5zLAogICByZXR1cm4gY29weTsKIH0KIAorCisvKiBSZXNv bHZlIEFTU1VNRSdzIGFuZCBBU1NVTUVTJyBhc3N1bXB0aW9uIGNsYXVzZXMu ICAqLworCit2b2lkCitnZmNfcmVzb2x2ZV9vbXBfYXNzdW1wdGlvbnMgKGdm Y19vbXBfYXNzdW1wdGlvbnMgKmFzc3VtZSwgY29uc3QgY2hhciAqZGlyZWN0 aXZlLAorCQkJICAgICBsb2N1cyAqbG9jKQoreworICBmb3IgKGdmY19leHBy X2xpc3QgKmVsID0gYXNzdW1lLT5ob2xkczsgZWw7IGVsID0gZWwtPm5leHQp CisgICAgaWYgKCFnZmNfcmVzb2x2ZV9leHByIChlbC0+ZXhwcikgfHwgZWwt PmV4cHItPnRzLnR5cGUgIT0gQlRfTE9HSUNBTCkKKwlnZmNfZXJyb3IgKCJI T0xEUyBleHByZXNzaW9uIGF0ICVMIG11c3QgYmUgYSBsb2dpY2FsIGV4cHJl c3Npb24iLAorCQkgICAmZWwtPmV4cHItPndoZXJlKTsKKyAgZm9yIChpbnQg aSA9IDA7IGkgPCBhc3N1bWUtPm5fYWJzZW50OyBpKyspCisgICAgeworICAg ICAgZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwgYXNzdW1lLT5uX2Fic2VudDsg aisrKQorCWlmIChhc3N1bWUtPmFic2VudFtpXSA9PSBhc3N1bWUtPmFic2Vu dFtqXSkKKwkgIGdmY19lcnJvciAoIiVxcyBkaXJlY3RpdmUgbWVudGlvbmVk IG11bHRpcGxlIHRpbWVzIGluICVzIGNsYXVzZSBpbiAlcyIKKwkJICAgICAi IGRpcmVjdGl2ZSBhdCAlTCIsCisJCSAgICAgZ2ZjX2FzY2lpX3N0YXRlbWVu dCAoYXNzdW1lLT5hYnNlbnRbaV0sIHRydWUpLAorCQkgICAgICJBQlNFTlQi LCBkaXJlY3RpdmUsIGxvYyk7CisgICAgICBmb3IgKGludCBqID0gMDsgaiA8 IGFzc3VtZS0+bl9jb250YWluczsgaisrKQorCWlmIChhc3N1bWUtPmFic2Vu dFtpXSA9PSBhc3N1bWUtPmNvbnRhaW5zW2pdKQorCSAgZ2ZjX2Vycm9yICgi JXFzIGRpcmVjdGl2ZSBtZW50aW9uZWQgYm90aCB0aW1lcyBpbiBBQlNFTlQg YW5kIENPTlRBSU5TIgorCQkgICAgICIgY2xhdXNlcyBpbiAlcyBkaXJlY3Rp dmUgYXQgJUwiLAorCQkgICAgIGdmY19hc2NpaV9zdGF0ZW1lbnQgKGFzc3Vt ZS0+YWJzZW50W2ldLCB0cnVlKSwKKwkJICAgICBkaXJlY3RpdmUsIGxvYyk7 CisgICAgfQorICBmb3IgKGludCBpID0gMDsgaSA8IGFzc3VtZS0+bl9jb250 YWluczsgaSsrKQorICAgIGZvciAoaW50IGogPSBpICsgMTsgaiA8IGFzc3Vt ZS0+bl9jb250YWluczsgaisrKQorICAgICAgaWYgKGFzc3VtZS0+Y29udGFp bnNbaV0gPT0gYXNzdW1lLT5jb250YWluc1tqXSkKKwlnZmNfZXJyb3IgKCIl cXMgZGlyZWN0aXZlIG1lbnRpb25lZCBtdWx0aXBsZSB0aW1lcyBpbiAlcyBj bGF1c2UgaW4gJXMgIgorCQkgICAiZGlyZWN0aXZlIGF0ICVMIiwKKwkJICAg Z2ZjX2FzY2lpX3N0YXRlbWVudCAoYXNzdW1lLT5jb250YWluc1tpXSwgdHJ1 ZSksCisJCSAgICJDT05UQUlOUyIsIGRpcmVjdGl2ZSwgbG9jKTsKK30KKwor CiAvKiBPcGVuTVAgZGlyZWN0aXZlIHJlc29sdmluZyByb3V0aW5lcy4gICov CiAKIHN0YXRpYyB2b2lkCkBAIC03ODg4LDYgKzgyMDMsMTMgQEAgcmVzb2x2 ZV9vbXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNl cyAqb21wX2NsYXVzZXMsCiAJZ2ZjX2Vycm9yICgiJTxERVRBQ0glPiBjbGF1 c2UgYXQgJUwgbXVzdCBub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoICIKIAkJ ICAgIiU8TUVSR0VBQkxFJT4gY2xhdXNlIiwgJm9tcF9jbGF1c2VzLT5kZXRh Y2gtPndoZXJlKTsKICAgICB9CisKKyAgaWYgKG9tcF9jbGF1c2VzLT5hc3N1 bWUpCisgICAgeworICAgICAgY29uc3QgY2hhciAqbmFtZSA9IGdmY19hc2Np aV9zdGF0ZW1lbnQgKG9tcF9jb2RlX3RvX3N0YXRlbWVudCAoY29kZSksCisJ CQkJCSAgICAgIHRydWUpOworICAgICAgZ2ZjX3Jlc29sdmVfb21wX2Fzc3Vt cHRpb25zIChvbXBfY2xhdXNlcy0+YXNzdW1lLCBuYW1lLCAmY29kZS0+bG9j KTsKKyAgICB9CiB9CiAKIApAQCAtOTExNiw2ICs5NDM4LDggQEAgb21wX2Nv ZGVfdG9fc3RhdGVtZW50IChnZmNfY29kZSAqY29kZSkKICAgICAgIHJldHVy biBTVF9PTVBfRE87CiAgICAgY2FzZSBFWEVDX09NUF9MT09QOgogICAgICAg cmV0dXJuIFNUX09NUF9MT09QOworICAgIGNhc2UgRVhFQ19PTVBfQVNTVU1F OgorICAgICAgcmV0dXJuIFNUX09NUF9BU1NVTUU7CiAgICAgY2FzZSBFWEVD X09NUF9BVE9NSUM6CiAgICAgICByZXR1cm4gU1RfT01QX0FUT01JQzsKICAg ICBjYXNlIEVYRUNfT01QX0JBUlJJRVI6CkBAIC05NjM1LDYgKzk5NTksNyBA QCBnZmNfcmVzb2x2ZV9vbXBfZGlyZWN0aXZlIChnZmNfY29kZSAqY29kZSwg Z2ZjX25hbWVzcGFjZSAqbnMpCiAgICAgY2FzZSBFWEVDX09NUF9URUFNU19M T09QOgogICAgICAgcmVzb2x2ZV9vbXBfZG8gKGNvZGUpOwogICAgICAgYnJl YWs7CisgICAgY2FzZSBFWEVDX09NUF9BU1NVTUU6CiAgICAgY2FzZSBFWEVD X09NUF9DQU5DRUw6CiAgICAgY2FzZSBFWEVDX09NUF9FUlJPUjoKICAgICBj YXNlIEVYRUNfT01QX01BU0tFRDoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFu L3BhcnNlLmNjIGIvZ2NjL2ZvcnRyYW4vcGFyc2UuY2MKaW5kZXggNWIxMzQ0 MTkxMmEuLmNiNWQ5MTdiODg2IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9w YXJzZS5jYworKysgYi9nY2MvZm9ydHJhbi9wYXJzZS5jYwpAQCAtODg1LDYg Kzg4NSw4IEBAIGRlY29kZV9vbXBfZGlyZWN0aXZlICh2b2lkKQogICBzd2l0 Y2ggKGMpCiAgICAgewogICAgIGNhc2UgJ2EnOgorICAgICAgbWF0Y2hvICgi YXNzdW1lcyIsIGdmY19tYXRjaF9vbXBfYXNzdW1lcywgU1RfT01QX0FTU1VN RVMpOworICAgICAgbWF0Y2hzICgiYXNzdW1lIiwgZ2ZjX21hdGNoX29tcF9h c3N1bWUsIFNUX09NUF9BU1NVTUUpOwogICAgICAgbWF0Y2hvICgiYXRvbWlj IiwgZ2ZjX21hdGNoX29tcF9hdG9taWMsIFNUX09NUF9BVE9NSUMpOwogICAg ICAgYnJlYWs7CiAgICAgY2FzZSAnYic6CkBAIC05MTMsNiArOTE1LDcgQEAg ZGVjb2RlX29tcF9kaXJlY3RpdmUgKHZvaWQpCiAgICAgICBicmVhazsKICAg ICBjYXNlICdlJzoKICAgICAgIG1hdGNobyAoImVycm9yIiwgZ2ZjX21hdGNo X29tcF9lcnJvciwgU1RfT01QX0VSUk9SKTsKKyAgICAgIG1hdGNocyAoImVu ZCBhc3N1bWUiLCBnZmNfbWF0Y2hfb21wX2Vvc19lcnJvciwgU1RfT01QX0VO RF9BU1NVTUUpOwogICAgICAgbWF0Y2hvICgiZW5kIGF0b21pYyIsIGdmY19t YXRjaF9vbXBfZW9zX2Vycm9yLCBTVF9PTVBfRU5EX0FUT01JQyk7CiAgICAg ICBtYXRjaG8gKCJlbmQgY3JpdGljYWwiLCBnZmNfbWF0Y2hfb21wX2VuZF9j cml0aWNhbCwgU1RfT01QX0VORF9DUklUSUNBTCk7CiAgICAgICBtYXRjaHMg KCJlbmQgZGlzdHJpYnV0ZSBwYXJhbGxlbCBkbyBzaW1kIiwgZ2ZjX21hdGNo X29tcF9lb3NfZXJyb3IsCkBAIC0xNzE2LDYgKzE3MTksNyBAQCBuZXh0X3N0 YXRlbWVudCAodm9pZCkKICAgY2FzZSBTVF9PTVBfVEFSR0VUX1NJTUQ6IGNh c2UgU1RfT01QX1RBU0tMT09QOiBjYXNlIFNUX09NUF9UQVNLTE9PUF9TSU1E OiBcCiAgIGNhc2UgU1RfT01QX0xPT1A6IGNhc2UgU1RfT01QX1BBUkFMTEVM X0xPT1A6IGNhc2UgU1RfT01QX1RFQU1TX0xPT1A6IFwKICAgY2FzZSBTVF9P TVBfVEFSR0VUX1BBUkFMTEVMX0xPT1A6IGNhc2UgU1RfT01QX1RBUkdFVF9U RUFNU19MT09QOiBcCisgIGNhc2UgU1RfT01QX0FTU1VNRTogXAogICBjYXNl IFNUX0NSSVRJQ0FMOiBcCiAgIGNhc2UgU1RfT0FDQ19QQVJBTExFTF9MT09Q OiBjYXNlIFNUX09BQ0NfUEFSQUxMRUw6IGNhc2UgU1RfT0FDQ19LRVJORUxT OiBcCiAgIGNhc2UgU1RfT0FDQ19EQVRBOiBjYXNlIFNUX09BQ0NfSE9TVF9E QVRBOiBjYXNlIFNUX09BQ0NfTE9PUDogXApAQCAtMTczMyw3ICsxNzM3LDcg QEAgbmV4dF9zdGF0ZW1lbnQgKHZvaWQpCiAKICNkZWZpbmUgY2FzZV9vbXBf ZGVjbCBjYXNlIFNUX09NUF9USFJFQURQUklWQVRFOiBjYXNlIFNUX09NUF9E RUNMQVJFX1NJTUQ6IFwKICAgY2FzZSBTVF9PTVBfREVDTEFSRV9UQVJHRVQ6 IGNhc2UgU1RfT01QX0RFQ0xBUkVfUkVEVUNUSU9OOiBcCi0gIGNhc2UgU1Rf T01QX0RFQ0xBUkVfVkFSSUFOVDogXAorICBjYXNlIFNUX09NUF9ERUNMQVJF X1ZBUklBTlQ6IGNhc2UgU1RfT01QX0FTU1VNRVM6IFwKICAgY2FzZSBTVF9P TVBfUkVRVUlSRVM6IGNhc2UgU1RfT0FDQ19ST1VUSU5FOiBjYXNlIFNUX09B Q0NfREVDTEFSRQogCiAvKiBCbG9jayBlbmQgc3RhdGVtZW50cy4gIEVycm9y cyBhc3NvY2lhdGVkIHdpdGggaW50ZXJjaGFuZ2luZyB0aGVzZQpAQCAtMTky NSwxMCArMTkyOSwxMSBAQCBnZmNfZW5jbG9zaW5nX3VuaXQgKGdmY19jb21w aWxlX3N0YXRlICogcmVzdWx0KQogfQogCiAKLS8qIFRyYW5zbGF0ZSBhIHN0 YXRlbWVudCBlbnVtIHRvIGEgc3RyaW5nLiAgKi8KKy8qIFRyYW5zbGF0ZSBh IHN0YXRlbWVudCBlbnVtIHRvIGEgc3RyaW5nLiAgSWYgc3RyaXBfc2VudGlu ZWwgaXMgdHJ1ZSwKKyAgIHRoZSAhJE9NUC8hJEFDQyBzZW50aW5lbCBpcyBl eGNsdWRlZC4gICovCiAKIGNvbnN0IGNoYXIgKgotZ2ZjX2FzY2lpX3N0YXRl bWVudCAoZ2ZjX3N0YXRlbWVudCBzdCkKK2dmY19hc2NpaV9zdGF0ZW1lbnQg KGdmY19zdGF0ZW1lbnQgc3QsIGJvb2wgc3RyaXBfc2VudGluZWwpCiB7CiAg IGNvbnN0IGNoYXIgKnA7CiAKQEAgLTIzNTMsNiArMjM1OCwxMiBAQCBnZmNf YXNjaWlfc3RhdGVtZW50IChnZmNfc3RhdGVtZW50IHN0KQogICAgIGNhc2Ug U1RfT0FDQ19FTkRfQVRPTUlDOgogICAgICAgcCA9ICIhJEFDQyBFTkQgQVRP TUlDIjsKICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RfT01QX0FTU1VNRToK KyAgICAgIHAgPSAiISRPTVAgQVNTVU1FIjsKKyAgICAgIGJyZWFrOworICAg IGNhc2UgU1RfT01QX0FTU1VNRVM6CisgICAgICBwID0gIiEkT01QIEFTU1VN RVMiOworICAgICAgYnJlYWs7CiAgICAgY2FzZSBTVF9PTVBfQVRPTUlDOgog ICAgICAgcCA9ICIhJE9NUCBBVE9NSUMiOwogICAgICAgYnJlYWs7CkBAIC0y NDAxLDYgKzI0MTIsOSBAQCBnZmNfYXNjaWlfc3RhdGVtZW50IChnZmNfc3Rh dGVtZW50IHN0KQogICAgIGNhc2UgU1RfT01QX0RPX1NJTUQ6CiAgICAgICBw ID0gIiEkT01QIERPIFNJTUQiOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBT VF9PTVBfRU5EX0FTU1VNRToKKyAgICAgIHAgPSAiISRPTVAgRU5EIEFTU1VN RSI7CisgICAgICBicmVhazsKICAgICBjYXNlIFNUX09NUF9FTkRfQVRPTUlD OgogICAgICAgcCA9ICIhJE9NUCBFTkQgQVRPTUlDIjsKICAgICAgIGJyZWFr OwpAQCAtMjc1MSw2ICsyNzY1LDggQEAgZ2ZjX2FzY2lpX3N0YXRlbWVudCAo Z2ZjX3N0YXRlbWVudCBzdCkKICAgICAgIGdmY19pbnRlcm5hbF9lcnJvciAo ImdmY19hc2NpaV9zdGF0ZW1lbnQoKTogQmFkIHN0YXRlbWVudCBjb2RlIik7 CiAgICAgfQogCisgIGlmIChzdHJpcF9zZW50aW5lbCAmJiBwWzBdID09ICch JykKKyAgICByZXR1cm4gcCArIHN0cmxlbiAoIiEkT01QICIpOwogICByZXR1 cm4gcDsKIH0KIApAQCAtNTUxOCw2ICs1NTM0LDkgQEAgcGFyc2Vfb21wX3N0 cnVjdHVyZWRfYmxvY2sgKGdmY19zdGF0ZW1lbnQgb21wX3N0LCBib29sIHdv cmtzaGFyZV9zdG10c19vbmx5KQogCiAgIHN3aXRjaCAob21wX3N0KQogICAg IHsKKyAgICBjYXNlIFNUX09NUF9BU1NVTUU6CisgICAgICBvbXBfZW5kX3N0 ID0gU1RfT01QX0VORF9BU1NVTUU7CisgICAgICBicmVhazsKICAgICBjYXNl IFNUX09NUF9QQVJBTExFTDoKICAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBf RU5EX1BBUkFMTEVMOwogICAgICAgYnJlYWs7CkBAIC01NjUxLDYgKzU2NzAs NyBAQCBwYXJzZV9vbXBfc3RydWN0dXJlZF9ibG9jayAoZ2ZjX3N0YXRlbWVu dCBvbXBfc3QsIGJvb2wgd29ya3NoYXJlX3N0bXRzX29ubHkpCiAJCSAgcGFy c2VfZm9yYWxsX2Jsb2NrICgpOwogCQkgIGJyZWFrOwogCisJCWNhc2UgU1Rf T01QX0FTU1VNRToKIAkJY2FzZSBTVF9PTVBfUEFSQUxMRUw6CiAJCWNhc2Ug U1RfT01QX1BBUkFMTEVMX01BU0tFRDoKIAkJY2FzZSBTVF9PTVBfUEFSQUxM RUxfTUFTVEVSOgpAQCAtNTg3NCw2ICs1ODk0LDcgQEAgcGFyc2VfZXhlY3V0 YWJsZSAoZ2ZjX3N0YXRlbWVudCBzdCkKIAkgIHBhcnNlX29hY2Nfc3RydWN0 dXJlZF9ibG9jayAoc3QpOwogCSAgYnJlYWs7CiAKKwljYXNlIFNUX09NUF9B U1NVTUU6CiAJY2FzZSBTVF9PTVBfUEFSQUxMRUw6CiAJY2FzZSBTVF9PTVBf UEFSQUxMRUxfTUFTS0VEOgogCWNhc2UgU1RfT01QX1BBUkFMTEVMX01BU1RF UjoKQEAgLTY5OTYsNiArNzAxNywzMiBAQCBkdXBsaWNhdGVfbWFpbjoKICAg cmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wKK2lzX29tcF9kZWNsYXJhdGl2ZV9z dG10IChnZmNfc3RhdGVtZW50IHN0KQoreworICBzd2l0Y2ggKHN0KQorICAg IHsKKyAgICBjYXNlX29tcF9kZWNsOgorICAgICAgcmV0dXJuIHRydWU7Cisg ICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisK K2Jvb2wKK2lzX29tcF9pbmZvcm1hdGlvbmFsX3N0bXQgKGdmY19zdGF0ZW1l bnQgc3QpCit7CisgIHN3aXRjaCAoc3QpCisgICAgeworICAgIGNhc2UgU1Rf T01QX0FTU1VNRToKKyAgICBjYXNlIFNUX09NUF9BU1NVTUVTOgorICAgIGNh c2UgU1RfT01QX1JFUVVJUkVTOgorICAgICAgcmV0dXJuIHRydWU7CisgICAg ZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIC8q IFJldHVybiB0cnVlIGlmIHRoaXMgc3RhdGUgZGF0YSByZXByZXNlbnRzIGFu IE9wZW5BQ0MgcmVnaW9uLiAgKi8KIGJvb2wKIGlzX29hY2MgKGdmY19zdGF0 ZV9kYXRhICpzZCkKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3BhcnNlLmgg Yi9nY2MvZm9ydHJhbi9wYXJzZS5oCmluZGV4IDdkZGVhMTAyMzdmLi41YmNh MDlkMDMxNSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vcGFyc2UuaAorKysg Yi9nY2MvZm9ydHJhbi9wYXJzZS5oCkBAIC02NiwxMSArNjYsMTMgQEAgZXh0 ZXJuIGdmY19zdGF0ZV9kYXRhICpnZmNfc3RhdGVfc3RhY2s7CiBpbnQgZ2Zj X2NoZWNrX2RvX3ZhcmlhYmxlIChnZmNfc3ltdHJlZSAqKTsKIGJvb2wgZ2Zj X2ZpbmRfc3RhdGUgKGdmY19jb21waWxlX3N0YXRlKTsKIGdmY19zdGF0ZV9k YXRhICpnZmNfZW5jbG9zaW5nX3VuaXQgKGdmY19jb21waWxlX3N0YXRlICop OwotY29uc3QgY2hhciAqZ2ZjX2FzY2lpX3N0YXRlbWVudCAoZ2ZjX3N0YXRl bWVudCk7Citjb25zdCBjaGFyICpnZmNfYXNjaWlfc3RhdGVtZW50IChnZmNf c3RhdGVtZW50LCBib29sIHN0cmlwX3NlbnRpbmVsID0gZmFsc2UpIDsKIG1h dGNoIGdmY19tYXRjaF9lbnVtICh2b2lkKTsKIG1hdGNoIGdmY19tYXRjaF9l bnVtZXJhdG9yX2RlZiAodm9pZCk7CiB2b2lkIGdmY19mcmVlX2VudW1faGlz dG9yeSAodm9pZCk7CiBleHRlcm4gYm9vbCBnZmNfbWF0Y2hpbmdfZnVuY3Rp b247CiBtYXRjaCBnZmNfbWF0Y2hfcHJlZml4IChnZmNfdHlwZXNwZWMgKik7 Citib29sIGlzX29tcF9kZWNsYXJhdGl2ZV9zdG10IChnZmNfc3RhdGVtZW50 KTsKK2Jvb2wgaXNfb21wX2luZm9ybWF0aW9uYWxfc3RtdCAoZ2ZjX3N0YXRl bWVudCk7CiBib29sIGlzX29hY2MgKGdmY19zdGF0ZV9kYXRhICopOwogI2Vu ZGlmICAvKiBHRkNfUEFSU0VfSCAgKi8KZGlmZiAtLWdpdCBhL2djYy9mb3J0 cmFuL3Jlc29sdmUuY2MgYi9nY2MvZm9ydHJhbi9yZXNvbHZlLmNjCmluZGV4 IGFlN2ViYjYyNGU0Li4xZTAxMWVlNzRmYyAxMDA2NDQKLS0tIGEvZ2NjL2Zv cnRyYW4vcmVzb2x2ZS5jYworKysgYi9nY2MvZm9ydHJhbi9yZXNvbHZlLmNj CkBAIC0xMDkwMiw2ICsxMDkwMiw3IEBAIGdmY19yZXNvbHZlX2Jsb2NrcyAo Z2ZjX2NvZGUgKmIsIGdmY19uYW1lc3BhY2UgKm5zKQogCWNhc2UgRVhFQ19P QUNDX0VOVEVSX0RBVEE6CiAJY2FzZSBFWEVDX09BQ0NfRVhJVF9EQVRBOgog CWNhc2UgRVhFQ19PQUNDX1JPVVRJTkU6CisJY2FzZSBFWEVDX09NUF9BU1NV TUU6CiAJY2FzZSBFWEVDX09NUF9DUklUSUNBTDoKIAljYXNlIEVYRUNfT01Q X0RJU1RSSUJVVEU6CiAJY2FzZSBFWEVDX09NUF9ESVNUUklCVVRFX1BBUkFM TEVMX0RPOgpAQCAtMTIzNzYsNiArMTIzNzcsNyBAQCBzdGFydDoKIAkgIGdm Y19yZXNvbHZlX29hY2NfZGlyZWN0aXZlIChjb2RlLCBucyk7CiAJICBicmVh azsKIAorCWNhc2UgRVhFQ19PTVBfQVNTVU1FOgogCWNhc2UgRVhFQ19PTVBf QVRPTUlDOgogCWNhc2UgRVhFQ19PTVBfQkFSUklFUjoKIAljYXNlIEVYRUNf T01QX0NBTkNFTDoKQEAgLTE3NjUxLDYgKzE3NjUzLDEwIEBAIGdmY19yZXNv bHZlIChnZmNfbmFtZXNwYWNlICpucykKICAgY29tcG9uZW50X2Fzc2lnbm1l bnRfbGV2ZWwgPSAwOwogICByZXNvbHZlX2NvZGVzIChucyk7CiAKKyAgaWYg KG5zLT5vbXBfYXNzdW1lcykKKyAgICBnZmNfcmVzb2x2ZV9vbXBfYXNzdW1w dGlvbnMgKG5zLT5vbXBfYXNzdW1lcywgIkFTU1VNRVMiLAorCQkJCSAmbnMt Pm9tcF9hc3N1bWVzLT53aGVyZSk7CisKICAgZ2ZjX2N1cnJlbnRfbnMgPSBv bGRfbnM7CiAgIGNzX2Jhc2UgPSBvbGRfY3NfYmFzZTsKICAgbnMtPnJlc29s dmVkID0gMTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3N0LmNjIGIvZ2Nj L2ZvcnRyYW4vc3QuY2MKaW5kZXggNzNmMzBjMjEzN2YuLjNjOGNhNjY1NTRk IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9zdC5jYworKysgYi9nY2MvZm9y dHJhbi9zdC5jYwpAQCAtMjE0LDYgKzIxNCw3IEBAIGdmY19mcmVlX3N0YXRl bWVudCAoZ2ZjX2NvZGUgKnApCiAgICAgY2FzZSBFWEVDX09BQ0NfRU5URVJf REFUQToKICAgICBjYXNlIEVYRUNfT0FDQ19FWElUX0RBVEE6CiAgICAgY2Fz ZSBFWEVDX09BQ0NfUk9VVElORToKKyAgICBjYXNlIEVYRUNfT01QX0FTU1VN RToKICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzoKICAgICBjYXNlIEVYRUNf T01QX0NBTkNFTDoKICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTExBVElPTl9Q T0lOVDoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3N5bWJvbC5jYyBiL2dj Yy9mb3J0cmFuL3N5bWJvbC5jYwppbmRleCA3YTgwZGZkMDYzYi4uNjA1MDM1 OWQ1MjEgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3N5bWJvbC5jYworKysg Yi9nY2MvZm9ydHJhbi9zeW1ib2wuY2MKQEAgLTQwNzEsNyArNDA3MSwxMyBA QCBnZmNfZnJlZV9uYW1lc3BhY2UgKGdmY19uYW1lc3BhY2UgKiZucykKICAg ICAgIGYgPSBmLT5uZXh0OwogICAgICAgZnJlZSAoY3VycmVudCk7CiAgICAg fQotCisgIGlmIChucy0+b21wX2Fzc3VtZXMpCisgICAgeworICAgICAgZnJl ZSAobnMtPm9tcF9hc3N1bWVzLT5hYnNlbnQpOworICAgICAgZnJlZSAobnMt Pm9tcF9hc3N1bWVzLT5jb250YWlucyk7CisgICAgICBnZmNfZnJlZV9leHBy X2xpc3QgKG5zLT5vbXBfYXNzdW1lcy0+aG9sZHMpOworICAgICAgZnJlZSAo bnMtPm9tcF9hc3N1bWVzKTsKKyAgICB9CiAgIHAgPSBucy0+Y29udGFpbmVk OwogICBmcmVlIChucyk7CiAgIG5zID0gTlVMTDsKZGlmZiAtLWdpdCBhL2dj Yy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYyBiL2djYy9mb3J0cmFuL3RyYW5z LW9wZW5tcC5jYwppbmRleCA4ZTlkNTM0NmIwNS4uMjEwNTM2OTRmODEgMTAw NjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYworKysgYi9n Y2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKQEAgLTc0ODcsNiArNzQ4Nyw4 IEBAIGdmY190cmFuc19vbXBfZGlyZWN0aXZlIChnZmNfY29kZSAqY29kZSkK IHsKICAgc3dpdGNoIChjb2RlLT5vcCkKICAgICB7CisgICAgY2FzZSBFWEVD X09NUF9BU1NVTUU6CisgICAgICByZXR1cm4gZ2ZjX3RyYW5zX29tcF9jb2Rl IChjb2RlLT5ibG9jay0+bmV4dCwgdHJ1ZSk7CiAgICAgY2FzZSBFWEVDX09N UF9BVE9NSUM6CiAgICAgICByZXR1cm4gZ2ZjX3RyYW5zX29tcF9hdG9taWMg KGNvZGUpOwogICAgIGNhc2UgRVhFQ19PTVBfQkFSUklFUjoKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL3RyYW5zLmNjIGIvZ2NjL2ZvcnRyYW4vdHJhbnMu Y2MKaW5kZXggOTEyYTIwNmYyZWQuLjhhNjQ4ODJlYTllIDEwMDY0NAotLS0g YS9nY2MvZm9ydHJhbi90cmFucy5jYworKysgYi9nY2MvZm9ydHJhbi90cmFu cy5jYwpAQCAtMjE3NCw2ICsyMTc0LDcgQEAgdHJhbnNfY29kZSAoZ2ZjX2Nv ZGUgKiBjb2RlLCB0cmVlIGNvbmQpCiAJICByZXMgPSBnZmNfdHJhbnNfZHRf ZW5kIChjb2RlKTsKIAkgIGJyZWFrOwogCisJY2FzZSBFWEVDX09NUF9BU1NV TUU6CiAJY2FzZSBFWEVDX09NUF9BVE9NSUM6CiAJY2FzZSBFWEVDX09NUF9C QVJSSUVSOgogCWNhc2UgRVhFQ19PTVBfQ0FOQ0VMOgpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2Fzc3VtZS0xLmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMS5mOTAK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhiZDVj NzIzMDUxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9nb21wL2Fzc3VtZS0xLmY5MApAQCAtMCwwICsxLDI0IEBACitz dWJyb3V0aW5lIGZvbyAoaSwgYSkKKyAgaW1wbGljaXQgbm9uZQorICBpbnRl Z2VyLCB2YWx1ZSA6OiBpCisgIGludGVnZXIgOjogYSg6KQorICBpbnRlZ2Vy IDo6IGoKKworICBqID0gNworICAhJG9tcCBhc3N1bWUgbm9fb3Blbm1wLCBh YnNlbnQgKHRhcmdldCwgdGVhbXMpIGhvbGRzIChpIDwgMzIpIGhvbGRzIChp IDwgMzJfMikKKyAgISRvbXAgZW5kIGFzc3VtZQorCisgICEkb21wIGFzc3Vt ZSBub19vcGVubXBfcm91dGluZXMsIGNvbnRhaW5zIChzaW1kKQorICBibG9j aworICAgICEkb21wIHNpbWQKKyAgICBkbyBqID0gMSwgaQorICAgICAgYShp KSA9IGoKKyAgICBlbmQgZG8KKyAgZW5kIGJsb2NrCisKKyAgISRvbXAgYXNz dW1lIG5vX3BhcmFsbGVsaXNtLCBjb250YWlucyAoZXJyb3IpCisgIGlmIChp ID49IDMyKSB0aGVuCisgICAgISRvbXAgZXJyb3IgYXQgKGV4ZWN1dGlvbikg bWVzc2FnZSAoIlNob3VsZCBub3QgaGFwcGVuIikKKyAgZW5kIGlmCisgICEk b21wIGVuZCBhc3N1bWUKK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2Fzc3VtZS0yLmY5MCBiL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMi5mOTAKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNiODAwNjc2MDIwCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L2Fzc3VtZS0yLmY5MApAQCAtMCwwICsxLDI3IEBACitzdWJyb3V0aW5lIGZv byAoaSwgYSkKKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyLCB2YWx1ZSA6 OiBpCisgIGludGVnZXIgOjogYSg6KQorICBpbnRlZ2VyIDo6IGoKKworICBq ID0gNworICAhJG9tcCBhc3N1bWUgbm9fb3Blbm1wLCBhYnNlbnQgKHRhcmdl dCwgdGVhbXMsdGFyZ2V0KSBob2xkcyAoaSA8IDMyKSBob2xkcyAoaSA8IDMy XzIpICAhIHsgZGctZXJyb3IgIidUQVJHRVQnIGRpcmVjdGl2ZSBtZW50aW9u ZWQgbXVsdGlwbGUgdGltZXMgaW4gQUJTRU5UIGNsYXVzZSBpbiBBU1NVTUUg ZGlyZWN0aXZlIiB9CisgICEkb21wIGVuZCBhc3N1bWUKKworICAhJG9tcCBh c3N1bWUgbm9fb3Blbm1wX3JvdXRpbmVzLCBjb250YWlucyAoc2ltZCkgY29u dGFpbnMgKCBzaW1kICkgICEgeyBkZy1lcnJvciAiJ1NJTUQnIGRpcmVjdGl2 ZSBtZW50aW9uZWQgbXVsdGlwbGUgdGltZXMgaW4gQ09OVEFJTlMgY2xhdXNl IGluIEFTU1VNRSBkaXJlY3RpdmUiIH0KKyAgYmxvY2sKKyAgICAhJG9tcCBz aW1kCisgICAgZG8gaiA9IDEsIGkKKyAgICAgIGEoaSkgPSBqCisgICAgZW5k IGRvCisgIGVuZCBibG9jaworCisgICEkb21wIGFzc3VtZSBub19wYXJhbGxl bGlzbSwgY29udGFpbnMgKGVycm9yKSBhYnNlbnQgKGVycm9yKSAgISB7IGRn LWVycm9yICInRVJST1InIGRpcmVjdGl2ZSBtZW50aW9uZWQgYm90aCB0aW1l cyBpbiBBQlNFTlQgYW5kIENPTlRBSU5TIGNsYXVzZXMgaW4gQVNTVU1FIGRp cmVjdGl2ZSIgfQorICBpZiAoaSA+PSAzMikgdGhlbgorICAgICEkb21wIGVy cm9yIGF0IChleGVjdXRpb24pIG1lc3NhZ2UgKCJTaG91bGQgbm90IGhhcHBl biIpCisgIGVuZCBpZgorICAhJG9tcCBlbmQgYXNzdW1lCisKKyAgISRvbXAg YXNzdW1lIGhvbGRzICgxLjApICAhIHsgZGctZXJyb3IgIkhPTERTIGV4cHJl c3Npb24gYXQgLjEuIG11c3QgYmUgYSBsb2dpY2FsIGV4cHJlc3Npb24iIH0K KyAgISRvbXAgZW5kIGFzc3VtZQorZW5kCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYXNzdW1lcy0xLmY5MCBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWVzLTEuZjkwCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YTUwOTE0ZjE4 NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvZ29tcC9hc3N1bWVzLTEuZjkwCkBAIC0wLDAgKzEsODQgQEAKKyEgQWxs IG9mIHRoZSBmb2xsb3dpbmcgKHVwIHRvIFBST0dSQU0pIGFyZSBva2F5Ogor IQorc3Vicm91dGluZSBzdWIKKyAgaW50ZXJmYWNlCisgICAgc3Vicm91dGlu ZSBzdWJfaXRlcmZhY2UoKQorICAgICAgISRvbXAgYXNzdW1lcyBub19vcGVu bXBfcm91dGluZXMgYWJzZW50KHNpbWQpICEgIE9LIGluZmVyZmFjZSBvZiBh biBleHRlcm5hbCBzdWJyb3V0aW5lL3N1YnByb2dyYW0KKyAgICBlbmQKKyAg ZW5kIGludGVyZmFjZQorICAhJG9tcCBhc3N1bWVzIG5vX29wZW5tcF9yb3V0 aW5lcyBhYnNlbnQoc2ltZCkgISAgT0sgZXh0ZXJuYWwgc3Vicm91dGluZS9z dWJwcm9ncmFtCitjb250YWlucworICBzdWJyb3V0aW5lIGlubmVyX3N1Ygor ICAgICAhJG9tcCBhc3N1bWVzIG5vX3BhcmFsbGVsaXNtIGFic2VudCh0ZWFt cykgISBPSyBpbnRlcm5hbCBzdWJyb3V0aW5lL3N1YnByb2dyYW0KKyAgZW5k CitlbmQKKworaW50ZWdlciBmdW5jdGlvbiBmdW5jICgpCisgICEkb21wIGFz c3VtZXMgbm9fb3Blbm1wX3JvdXRpbmVzIGFic2VudChzaW1kKSAhICBPSyBl eHRlcm5hbCBmdW5jdGlvbi9zdWJwcm9ncmFtCisgIGludGVyZmFjZQorICAg IGludGVnZXIgZnVuY3Rpb24gZnVuY19pdGVyZmFjZSgpCisgICAgICAhJG9t cCBhc3N1bWVzIG5vX29wZW5tcF9yb3V0aW5lcyBhYnNlbnQoc2ltZCkgISAg T0sgaW5mZXJmYWNlIG9mIGFuIGV4dGVybmFsIGZ1bmN0aW9uL3N1YnByb2dy YW0KKyAgICBlbmQKKyAgZW5kIGludGVyZmFjZQorICBmdW5jID0gMAorY29u dGFpbnMKKyAgaW50ZWdlciBmdW5jdGlvbiBpbm5lcl9mdW5jKCkKKyAgICAg ISRvbXAgYXNzdW1lcyBub19wYXJhbGxlbGlzbSBhYnNlbnQodGVhbXMpICEg T0sgaW50ZXJuYWwgZnVuY3Rpb24vc3VicHJvZ3JhbQorICAgICBpbm5lcl9z dWIyID0gMAorICBlbmQKK2VuZAorCittb2R1bGUgbQorICBpbnRlZ2VyIDo6 eCAKKyAgISRvbXAgYXNzdW1lcyBjb250YWlucyh0YXJnZXQpIGhvbGRzKHgg PiAwLjApCisKKyAgICBpbnRlcmZhY2UKKyAgICAgIHN1YnJvdXRpbmUgbW9k X21vZF9zdWJfaXRlcmZhY2UoKQorICAgICAgICAhJG9tcCBhc3N1bWVzIG5v X29wZW5tcF9yb3V0aW5lcyBhYnNlbnQoc2ltZCkgISAgT0sgaW5mZXJmYWNl IG9mIGFuIGV4dGVybmFsIHN1YnJvdXRpbmUvc3VicHJvZ3JhbQorICAgICAg ZW5kCisgICAgICBpbnRlZ2VyIGZ1bmN0aW9uIG1vZF9tb2RfZnVuY19pdGVy ZmFjZSgpCisgICAgICAgICEkb21wIGFzc3VtZXMgbm9fb3Blbm1wX3JvdXRp bmVzIGFic2VudChlcnJvcikgISAgT0sgaW5mZXJmYWNlIG9mIGFuIGV4dGVy bmFsIHN1YnJvdXRpbmUvc3VicHJvZ3JhbQorICAgICAgZW5kCisgICAgZW5k IGludGVyZmFjZQorCitjb250YWlucworICBzdWJyb3V0aW5lIG1vZF9zdWIK KyAgICBpbnRlcmZhY2UKKyAgICAgIHN1YnJvdXRpbmUgbW9kX3N1Yl9pdGVy ZmFjZSgpCisgICAgICAgICEkb21wIGFzc3VtZXMgbm9fb3Blbm1wX3JvdXRp bmVzIGFic2VudChzaW1kKSAhICBPSyBpbmZlcmZhY2Ugb2YgYW4gZXh0ZXJu YWwgc3Vicm91dGluZS9zdWJwcm9ncmFtCisgICAgICBlbmQKKyAgICBlbmQg aW50ZXJmYWNlCisgICAgISRvbXAgYXNzdW1lcyBub19vcGVubXBfcm91dGlu ZXMgYWJzZW50KHNpbWQpICEgIE9LIG1vZHVsZSBzdWJyb3V0aW5lL3N1YnBy b2dyYW0KKyAgY29udGFpbnMKKyAgICBzdWJyb3V0aW5lIG1vZF9pbm5lcl9z dWIKKyAgICAgICAhJG9tcCBhc3N1bWVzIG5vX3BhcmFsbGVsaXNtIGFic2Vu dCh0ZWFtcykgISBPSyBpbnRlcm5hbCBzdWJyb3V0aW5lL3N1YnByb2dyYW0K KyAgICBlbmQKKyAgZW5kCisKKyAgaW50ZWdlciBmdW5jdGlvbiBtb2RfZnVu YyAoKQorICAgICEkb21wIGFzc3VtZXMgbm9fb3Blbm1wX3JvdXRpbmVzIGFi c2VudChzaW1kKSAhICBPSyBtb2R1bGUgZnVuY3Rpb24vc3VicHJvZ3JhbQor ICAgIGludGVyZmFjZQorICAgICAgaW50ZWdlciBmdW5jdGlvbiBtb2RfZnVu Y19pdGVyZmFjZSgpCisgICAgICAgICEkb21wIGFzc3VtZXMgbm9fb3Blbm1w X3JvdXRpbmVzIGFic2VudChzaW1kKSAhICBPSyBpbmZlcmZhY2Ugb2YgYW4g ZXh0ZXJuYWwgZnVuY3Rpb24vc3VicHJvZ3JhbQorICAgICAgZW5kCisgICAg ZW5kIGludGVyZmFjZQorICAgIG1vZF9mdW5jID0gMAorICBjb250YWlucwor ICAgIGludGVnZXIgZnVuY3Rpb24gbW9kX2lubmVyX2Z1bmMoKQorICAgICAg ICEkb21wIGFzc3VtZXMgbm9fcGFyYWxsZWxpc20gYWJzZW50KHRlYW1zKSAh IE9LIGludGVybmFsIGZ1bmN0aW9uL3N1YnByb2dyYW0KKyAgICAgICBtb2Rf aW5uZXJfc3ViMiA9IDAKKyAgICBlbmQKKyAgZW5kCitlbmQgbW9kdWxlIG0K KworCishIFBST0dSQU0gLSBpbnZhbGlkIGFzOgorISAgbWFpbiBwcm9ncmFt IGlzIGEgcHJvZ3JhbSB1bml0IHRoYXQgaXMgbm90IGEgc3VicHJvZ3JhbQor ISRvbXAgYXNzdW1lcyBub19vcGVubXAgYWJzZW50KHNpbWQpICAhIHsgZGct ZXJyb3IgIm11c3QgYmUgaW4gdGhlIHNwZWNpZmljYXRpb24gcGFydCBvZiBh IHN1YnByb2dyYW0gb3IgbW9kdWxlIiB9CisgIGJsb2NrCisgICAgISBpbnZh bGlkOiBibG9jaworICAgICEkb21wIGFzc3VtZXMgbm9fb3Blbm1wIGFic2Vu dCh0YXJnZXQpICAhIHsgZGctZXJyb3IgIm11c3QgYmUgaW4gdGhlIHNwZWNp ZmljYXRpb24gcGFydCBvZiBhIHN1YnByb2dyYW0gb3IgbW9kdWxlIiB9Cisg IGVuZCBibG9jaworZW5kCisKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2Fzc3VtZXMtMi5mOTAgYi9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2dvbXAvYXNzdW1lcy0yLmY5MApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWU0ZWFiZDQ5NzcKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvYXNzdW1lcy0yLmY5MApAQCAtMCwwICsxLDcgQEAKK21vZHVsZSBtCisg IGludGVnZXIgOjp4IAorICAhJG9tcCBhc3N1bWVzIGNvbnRhaW5zKHRhcmdl dCkgaG9sZHMoeCA+IDAuMCkKKyAgISRvbXAgYXNzdW1lcyBhYnNlbnQodGFy Z2V0KSBob2xkcygwLjApCishIHsgZGctZXJyb3IgIkhPTERTIGV4cHJlc3Np b24gYXQgLjEuIG11c3QgYmUgYSBsb2dpY2FsIGV4cHJlc3Npb24iICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0xIH0KKyEgeyBkZy1lcnJvciAiJ1RBUkdFVCcg ZGlyZWN0aXZlIG1lbnRpb25lZCBib3RoIHRpbWVzIGluIEFCU0VOVCBhbmQg Q09OVEFJTlMgY2xhdXNlcyBpbiBBU1NVTUVTIGRpcmVjdGl2ZSBhdCAuMS4i ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0yIH0KK2VuZCBtb2R1bGUKZGlmZiAt LWdpdCBhL2xpYmdvbXAvbGliZ29tcC50ZXhpIGIvbGliZ29tcC9saWJnb21w LnRleGkKaW5kZXggMmIxMWYzMDQ0MDkuLjEyYjZlZGMwMDI2IDEwMDY0NAot LS0gYS9saWJnb21wL2xpYmdvbXAudGV4aQorKysgYi9saWJnb21wL2xpYmdv bXAudGV4aQpAQCAtMjg3LDcgKzI4Nyw3IEBAIFRoZSBPcGVuTVAgNC41IHNw ZWNpZmljYXRpb24gaXMgZnVsbHkgc3VwcG9ydGVkLgogICAgICAgQGNvZGV7 YXBwZW5kX2FyZ3N9IEB0YWIgTiBAdGFiCiBAaXRlbSBAY29kZXtkaXNwYXRj aH0gY29uc3RydWN0IEB0YWIgTiBAdGFiCiBAaXRlbSBkZXZpY2Utc3BlY2lm aWMgSUNWIHNldHRpbmdzIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGVzIEB0 YWIgWSBAdGFiCi1AaXRlbSBAY29kZXthc3N1bWV9IGRpcmVjdGl2ZSBAdGFi IFAgQHRhYiBPbmx5IEMvQysrCitAaXRlbSBAY29kZXthc3N1bWV9IGRpcmVj dGl2ZSBAdGFiIFkgQHRhYgogQGl0ZW0gQGNvZGV7bm90aGluZ30gZGlyZWN0 aXZlIEB0YWIgWSBAdGFiCiBAaXRlbSBAY29kZXtlcnJvcn0gZGlyZWN0aXZl IEB0YWIgWSBAdGFiCiBAaXRlbSBAY29kZXttYXNrZWR9IGNvbnN0cnVjdCBA dGFiIFkgQHRhYgo= --------------NQ0bFQkDEt405QgYTJ470Hvz--