From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by sourceware.org (Postfix) with ESMTPS id 107373858426 for ; Tue, 15 Mar 2022 21:33:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 107373858426 Received: by mail-wr1-x434.google.com with SMTP id i8so366276wrr.8 for ; Tue, 15 Mar 2022 14:33:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=R1tcpDT3oSk7OxQYxRpoHr+YpL67mIpdG5pCJQQdtMs=; b=hlU7CD4zu+T+QfC/WHTmi0/1V/Ig4yVHsTqc1Xxyu0VCTYlwp1Y/Ooqh8F6ohmkA4h k93af0IYhQOwYCLM74UMJ1I8S6CQ/AahtZeIDA9DA9PMFjUtqMkMA3bOQEIjjgqBfkAc agKGdbz0QQYHPHB2ihc2sKBKaErK667+DFDK4zFzbxRdXdtH8+gsMm+iciGg6RD3Yjqh pjv1hd0ucV1RjITOQYY7EyxXjad82YkT4cqwOefPv3lKXMm0evHCkaoh1JnXdRiCd3H3 bRizD3bfztGRbxPVqIaq5KCoVL4Z6m+u80qjfxs3uuKIMuwtJoPMR2WAgHZwPAnQeZPr 0t/A== X-Gm-Message-State: AOAM531Zg3NyifytTbZLEkyW7JfTgc655i1xove/8tnlyPNQckMk/rn4 pElW5JZlI1XfsBb7Vphx68o7OJU3YKAkmVnLJbFpq9fcagA= X-Google-Smtp-Source: ABdhPJwKb5V6A1mggCYJ2R61VNvq/Ehtu5oHAz/NSGI8tSCBD20ErIRtQPTlBj5mmAMNcHOmO4BZ5oaPOOFVfMJ2aXg= X-Received: by 2002:adf:d4c8:0:b0:1f0:22df:d67c with SMTP id w8-20020adfd4c8000000b001f022dfd67cmr21735559wrk.510.1647379985368; Tue, 15 Mar 2022 14:33:05 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mohamed Atef Date: Tue, 15 Mar 2022 23:32:53 +0200 Message-ID: Subject: Re: [PATCH] libgompd: add OMPD support, libgompd initialization and global ICVs functions To: gcc-patches@gcc.gnu.org, Jakub Jelinek , tobias@codesourcery.com, Martin Jambor Content-Type: multipart/mixed; boundary="000000000000d6aa8c05da488a94" X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, KAM_SHORT, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Mar 2022 21:33:13 -0000 --000000000000d6aa8c05da488a94 Content-Type: text/plain; charset="UTF-8" On Tue, Mar 15, 2022 at 11:32 PM Mohamed Atef wrote: > This patch added OMPD support to libgomp, api version funcitos and global > ICVs functions. > I hope you review it as soon as possible, to fix the problems. > I tried as much as I could to follow GNU standards. > We have a seminar at the college next week, so we need this to be reviewed. > Thanks > > > libgomp/ChangeLog > > 2022-03-15 Mohamed Atef > > *config/darwin/plugin-suffix.h (SONAME_SUFFIX): Remove ()s. > *config/hpux/plugin-suffix.h (SONAME_SUFFIX): Remove ()s. > *config/posix/plugin-suffix.h (SONAME_SUFFIX): Remove ()s. > *configure: Regenerate. > * Makefile.am (toolexeclib_LTLIBRARIES): Add libgompd.la > (libgompd_la_LDFLAGS, libgompd_la_DEPENDENCIES, libgompd_la_LINK, > libgompd_la_SOURCES, libgompd_version_dep, libgompd_version_script, > libgompd.ver-sun, libgompd.ver, libgompd_version_info): New. > *Makefile.in: Regenerate. > *aclocal.m4: Regenerate. > *env.c: Include ompd-support.h. > (initialize_env): Call gompd_load. > *team.c: Include ompd-support.h. > (gomp_team_start): Call ompd_bp_parallel_begin. > (gomp_team_end): Call ompd_bp_parallel_end. > *libgomp.map: Add OMP_5.0.3 symbol versions. > *libgompd.map: New. > *omp-tools.h.in: New. > *ompd-types.h.in: New. > *ompd-support.h: New. > *ompd-support.c: New. > *ompd-helper.h: New. > *ompd-helper.c: New. > *ompd-init.c: New. > *ompd-icv.c: New. > *configure.ac (AC_CONFIG_FILES): Add omp-tools.h and ompd-types.h. > --000000000000d6aa8c05da488a94 Content-Type: text/plain; charset="US-ASCII"; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l0sni0p50 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvTWFrZWZpbGUuYW0gYi9saWJnb21wL01ha2VmaWxlLmFtCmlu ZGV4IGY4YjJhMDZkNjNlLi5mNTMwYTczMGVhOCAxMDA2NDQKLS0tIGEvbGliZ29tcC9NYWtlZmls ZS5hbQorKysgYi9saWJnb21wL01ha2VmaWxlLmFtCkBAIC0yMCw3ICsyMCw3IEBAIEFNX0NQUEZM QUdTID0gJChhZGRwcmVmaXggLUksICQoc2VhcmNoX3BhdGgpKQogQU1fQ0ZMQUdTID0gJChYQ0ZM QUdTKQogQU1fTERGTEFHUyA9ICQoWExERkxBR1MpICQoU0VDVElPTl9MREZMQUdTKSAkKE9QVF9M REZMQUdTKQoKLXRvb2xleGVjbGliX0xUTElCUkFSSUVTID0gbGliZ29tcC5sYQordG9vbGV4ZWNs aWJfTFRMSUJSQVJJRVMgPSBsaWJnb21wLmxhIGxpYmdvbXBkLmxhCiBub2Rpc3RfdG9vbGV4ZWNs aWJfSEVBREVSUyA9IGxpYmdvbXAuc3BlYwoKIGlmIExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NI TElCCkBAIC0zMiwxMyArMzIsMjEgQEAgbGliZ29tcC52ZXI6ICQodG9wX3NyY2RpcikvbGliZ29t cC5tYXAKIAkkKEVHUkVQKSAtdiAnIygjfCB8JCQpJyAkPCB8IFwKIAkgICQoUFJFUFJPQ0VTUykg LVAgLWluY2x1ZGUgY29uZmlnLmggLSA+ICRAIHx8IChybSAtZiAkQCA7IGV4aXQgMSkKCitsaWJn b21wZC52ZXI6ICQodG9wX3NyY2RpcikvbGliZ29tcGQubWFwCisJJChFR1JFUCkgLXYgJyMoI3wg fCQkKScgJDwgfCBcCisJCSQoUFJFUFJPQ0VTUykgLVAgLWluY2x1ZGUgY29uZmlnLmggLSA+ICRA IHx8IChybSAtZiAkQCA7IGV4aXQgMSkKKwogaWYgTElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hM SUJfR05VCiBsaWJnb21wX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC0tdmVyc2lvbi1zY3JpcHQsbGli Z29tcC52ZXIKK2xpYmdvbXBkX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC0tdmVyc2lvbi1zY3JpcHQs bGliZ29tcGQudmVyCiBsaWJnb21wX3ZlcnNpb25fZGVwID0gbGliZ29tcC52ZXIKK2xpYmdvbXBk X3ZlcnNpb25fZGVwID0gbGliZ29tcGQudmVyCiBlbmRpZgogaWYgTElCR09NUF9CVUlMRF9WRVJT SU9ORURfU0hMSUJfU1VOCiBsaWJnb21wX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC1NLGxpYmdvbXAu dmVyLXN1bgorbGliZ29tcGRfdmVyc2lvbl9zY3JpcHQgPSAtV2wsLU0sbGliZ29tcGQudmVyLXN1 bgogbGliZ29tcF92ZXJzaW9uX2RlcCA9IGxpYmdvbXAudmVyLXN1bgorbGliZ29tcGRfdmVyc2lv bl9kZXAgPSBsaWJnb21wZC52ZXItc3VuCiBsaWJnb21wLnZlci1zdW4gOiBsaWJnb21wLnZlciBc CiAJCSQodG9wX3NyY2RpcikvLi4vY29udHJpYi9tYWtlX3N1bnZlci5wbCBcCiAJCSQobGliZ29t cF9sYV9PQkpFQ1RTKSAkKGxpYmdvbXBfbGFfTElCQUREKQpAQCAtNDgsMTYgKzU2LDM0IEBAIGxp YmdvbXAudmVyLXN1biA6IGxpYmdvbXAudmVyIFwKIAkgYGVjaG8gJChsaWJnb21wX2xhX0xJQkFE RCkgfCBcCiAJICAgIHNlZCAncywvXChbXi8uXSpcKVwubGEsLy5saWJzL1wxLmEsZydgIFwKIAkg PiAkQCB8fCAocm0gLWYgJEAgOyBleGl0IDEpCisKK2xpYmdvbXBkLnZlci1zdW4gOiBsaWJnb21w ZC52ZXIgXAorCQkkKHRvcF9zcmNkaXIpLy4uL2NvbnRyaWIvbWFrZV9zdW52ZXIucGwgXAorCQkk KGxpYmdvbXBkX2xhX09CSkVDVFMpICQobGliZ29tcGRfbGFfTElCQUREKQorCXBlcmwgJCh0b3Bf c3JjZGlyKS8uLi9jb250cmliL21ha2Vfc3VudmVyLnBsIFwKKwkJbGliZ29tcGQudmVyIFwKKwkJ JChsaWJnb21wZF9sYV9PQkpFQ1RTOiUubG89LmxpYnMvJS5vKSBcCisJCWBlY2hvICQobGliZ29t cGRfbGFfTElCQUREKSB8IFwKKwkJCXNlZCAncywvXChbXi8uXSpcKVwubGEsLy5saWJzL1wxLmEs ZydgIFwKKwkJPiAkQCB8fCAocm0gLWYgJEAgOyBleGl0IDEpCisKIGVuZGlmCiBlbHNlCiBsaWJn b21wX3ZlcnNpb25fc2NyaXB0ID0KK2xpYmdvbXBkX3ZlcnNpb25fc2NyaXB0ID0KIGxpYmdvbXBf dmVyc2lvbl9kZXAgPQorbGliZ29tcGRfdmVyc2lvbl9kZXAgPQogZW5kaWYKIGxpYmdvbXBfdmVy c2lvbl9pbmZvID0gLXZlcnNpb24taW5mbyAkKGxpYnRvb2xfVkVSU0lPTikKK2xpYmdvbXBkX3Zl cnNpb25faW5mbyA9IC12ZXJzaW9uLWluZm8gJChsaWJ0b29sX1ZFUlNJT04pCiBsaWJnb21wX2xh X0xERkxBR1MgPSAkKGxpYmdvbXBfdmVyc2lvbl9pbmZvKSAkKGxpYmdvbXBfdmVyc2lvbl9zY3Jp cHQpIFwKICAgICAgICAgJChsdF9ob3N0X2ZsYWdzKQorbGliZ29tcGRfbGFfTERGTEFHUyA9ICQo bGliZ29tcGRfdmVyc2lvbl9pbmZvKSAkKGxpYmdvbXBkX3ZlcnNpb25fc2NyaXB0KSBcCisJCQkJ JChsdF9ob3N0X2ZsYWdzKQogbGliZ29tcF9sYV9ERVBFTkRFTkNJRVMgPSAkKGxpYmdvbXBfdmVy c2lvbl9kZXApCitsaWJnb21wZF9sYV9ERVBFTkRFTkNJRVMgPSAkKGxpYmdvbXBkX3ZlcnNpb25f ZGVwKQogbGliZ29tcF9sYV9MSU5LID0gJChMSU5LKSAkKGxpYmdvbXBfbGFfTERGTEFHUykKK2xp YmdvbXBkX2xhX0xJTksgPSAkKExJTkspICQobGliZ29tcGRfbGFfTERGTEFHUykKCiBsaWJnb21w X2xhX1NPVVJDRVMgPSBhbGxvYy5jIGF0b21pYy5jIGJhcnJpZXIuYyBjcml0aWNhbC5jIGVudi5j IGVycm9yLmMgXAogCWljdi5jIGljdi1kZXZpY2UuYyBpdGVyLmMgaXRlcl91bGwuYyBsb29wLmMg bG9vcF91bGwuYyBvcmRlcmVkLmMgXApAQCAtNjYsOCArOTIsOSBAQCBsaWJnb21wX2xhX1NPVVJD RVMgPSBhbGxvYy5jIGF0b21pYy5jIGJhcnJpZXIuYyBjcml0aWNhbC5jIGVudi5jIGVycm9yLmMg XAogCXRhcmdldC5jIHNwbGF5LXRyZWUuYyBsaWJnb21wLXBsdWdpbi5jIG9hY2MtcGFyYWxsZWwu YyBvYWNjLWhvc3QuYyBcCiAJb2FjYy1pbml0LmMgb2FjYy1tZW0uYyBvYWNjLWFzeW5jLmMgb2Fj Yy1wbHVnaW4uYyBvYWNjLWN1ZGEuYyBcCiAJcHJpb3JpdHlfcXVldWUuYyBhZmZpbml0eS1mbXQu YyB0ZWFtcy5jIGFsbG9jYXRvci5jIG9hY2MtcHJvZmlsaW5nLmMgXAotCW9hY2MtdGFyZ2V0LmMK KwlvYWNjLXRhcmdldC5jIG9tcGQtc3VwcG9ydC5jCgorbGliZ29tcGRfbGFfU09VUkNFUyA9IG9t cGQtaW5pdC5jIG9tcGQtaGVscGVyLmMgb21wZC1pY3YuYwogaW5jbHVkZSAkKHRvcF9zcmNkaXIp L3BsdWdpbi9NYWtlZnJhZy5hbQoKIGlmIFVTRV9GT1JUUkFOCkBAIC03NSw3ICsxMDIsNyBAQCBs aWJnb21wX2xhX1NPVVJDRVMgKz0gb3BlbmFjYy5mOTAKIGVuZGlmCgogbm9kaXN0X25vaW5zdF9I RUFERVJTID0gbGliZ29tcF9mLmgKLW5vZGlzdF9saWJzdWJpbmNsdWRlX0hFQURFUlMgPSBvbXAu aCBvcGVuYWNjLmggYWNjX3Byb2YuaAorbm9kaXN0X2xpYnN1YmluY2x1ZGVfSEVBREVSUyA9IG9t cC5oIG9wZW5hY2MuaCBhY2NfcHJvZi5oIG9tcC10b29scy5oIG9tcGQtdHlwZXMuaAogaWYgVVNF X0ZPUlRSQU4KIG5vZGlzdF9maW5jbHVkZV9IRUFERVJTID0gb21wX2xpYi5oIG9tcF9saWIuZjkw IG9tcF9saWIubW9kIG9tcF9saWJfa2luZHMubW9kIFwKIAlvcGVuYWNjX2xpYi5oIG9wZW5hY2Mu ZjkwIG9wZW5hY2MubW9kIG9wZW5hY2Nfa2luZHMubW9kCmRpZmYgLS1naXQgYS9saWJnb21wL01h a2VmaWxlLmluIGIvbGliZ29tcC9NYWtlZmlsZS5pbgppbmRleCAyMmNiMjEzNmEwOC4uYWZlYjk2 NGIwMWYgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvTWFrZWZpbGUuaW4KKysrIGIvbGliZ29tcC9NYWtl ZmlsZS5pbgpAQCAtMTYsNyArMTYsNyBAQAoKICMgUGx1Z2lucyBmb3Igb2ZmbG9hZCBleGVjdXRp b24sIE1ha2VmaWxlLmFtIGZyYWdtZW50LgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMjIg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIENvbnRyaWJ1dGVkIGJ5IE1lbnRv ciBFbWJlZGRlZC4KICMKQEAgLTE0OCw3ICsxNDgsNyBAQCBhbV9fQ09ORklHX0RJU1RDTEVBTl9G SUxFUyA9IGNvbmZpZy5zdGF0dXMgY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgXAogbWtpbnN0YWxs ZGlycyA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvLi4vbWtpbnN0YWxsZGlycwogQ09ORklHX0hF QURFUiA9IGNvbmZpZy5oCiBDT05GSUdfQ0xFQU5fRklMRVMgPSBvbXAuaCBvbXBfbGliLmggb21w X2xpYi5mOTAgbGliZ29tcF9mLmggXAotCWxpYmdvbXAuc3BlYworCW9tcC10b29scy5oIG9tcGQt dHlwZXMuaCBsaWJnb21wLnNwZWMKIENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CiBhbV9fdnBh dGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8Lnwu fGcnYDsKIGFtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCkBAIC0yMjAsOCArMjIwLDExIEBA IGFtX2xpYmdvbXBfbGFfT0JKRUNUUyA9IGFsbG9jLmxvIGF0b21pYy5sbyBiYXJyaWVyLmxvIGNy aXRpY2FsLmxvIFwKIAlvYWNjLXBhcmFsbGVsLmxvIG9hY2MtaG9zdC5sbyBvYWNjLWluaXQubG8g b2FjYy1tZW0ubG8gXAogCW9hY2MtYXN5bmMubG8gb2FjYy1wbHVnaW4ubG8gb2FjYy1jdWRhLmxv IHByaW9yaXR5X3F1ZXVlLmxvIFwKIAlhZmZpbml0eS1mbXQubG8gdGVhbXMubG8gYWxsb2NhdG9y LmxvIG9hY2MtcHJvZmlsaW5nLmxvIFwKLQlvYWNjLXRhcmdldC5sbyAkKGFtX19vYmplY3RzXzEp CisJb2FjYy10YXJnZXQubG8gb21wZC1zdXBwb3J0LmxvICQoYW1fX29iamVjdHNfMSkKIGxpYmdv bXBfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ29tcF9sYV9PQkpFQ1RTKQorbGliZ29tcGRfbGFfTElC QUREID0KK2FtX2xpYmdvbXBkX2xhX09CSkVDVFMgPSBvbXBkLWluaXQubG8gb21wZC1oZWxwZXIu bG8gb21wZC1pY3YubG8KK2xpYmdvbXBkX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdvbXBkX2xhX09C SkVDVFMpCiBBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1Bf QEFNX0RFRkFVTFRfVkApCiBhbV9fdl9QXzAgPSBmYWxzZQpAQCAtMjY5LDcgKzI3Miw4IEBAIGFt X192X0ZDTERfID0gJChhbV9fdl9GQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfRkNMRF8wID0g QGVjaG8gIiAgRkNMRCAgICAiICRAOwogYW1fX3ZfRkNMRF8xID0KIFNPVVJDRVMgPSAkKGxpYmdv bXBfcGx1Z2luX2djbl9sYV9TT1VSQ0VTKSBcCi0JJChsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9T T1VSQ0VTKSAkKGxpYmdvbXBfbGFfU09VUkNFUykKKwkkKGxpYmdvbXBfcGx1Z2luX252cHR4X2xh X1NPVVJDRVMpICQobGliZ29tcF9sYV9TT1VSQ0VTKSBcCisJJChsaWJnb21wZF9sYV9TT1VSQ0VT KQogQU1fVl9EVklQUyA9ICQoYW1fX3ZfRFZJUFNfQEFNX1ZAKQogYW1fX3ZfRFZJUFNfID0gJChh bV9fdl9EVklQU19AQU1fREVGQVVMVF9WQCkKIGFtX192X0RWSVBTXzAgPSBAZWNobyAiICBEVklQ UyAgICIgJEA7CkBAIC01MzMsNyArNTM3LDggQEAgbGlic3ViaW5jbHVkZWRpciA9ICQobGliZGly KS9nY2MvJCh0YXJnZXRfYWxpYXMpLyQoZ2NjX3ZlcnNpb24pL2luY2x1ZGUKIEFNX0NQUEZMQUdT ID0gJChhZGRwcmVmaXggLUksICQoc2VhcmNoX3BhdGgpKQogQU1fQ0ZMQUdTID0gJChYQ0ZMQUdT KQogQU1fTERGTEFHUyA9ICQoWExERkxBR1MpICQoU0VDVElPTl9MREZMQUdTKSAkKE9QVF9MREZM QUdTKQotdG9vbGV4ZWNsaWJfTFRMSUJSQVJJRVMgPSBsaWJnb21wLmxhICQoYW1fX2FwcGVuZF8x KSAkKGFtX19hcHBlbmRfMikKK3Rvb2xleGVjbGliX0xUTElCUkFSSUVTID0gbGliZ29tcC5sYSBs aWJnb21wZC5sYSAkKGFtX19hcHBlbmRfMSkgXAorCSQoYW1fX2FwcGVuZF8yKQogbm9kaXN0X3Rv b2xleGVjbGliX0hFQURFUlMgPSBsaWJnb21wLnNwZWMKCiAjIC1XYyBpcyBvbmx5IGEgbGlidG9v bCBvcHRpb24uCkBAIC01NDIsMTUgKzU0NywyNyBAQCBub2Rpc3RfdG9vbGV4ZWNsaWJfSEVBREVS UyA9IGxpYmdvbXAuc3BlYwogQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX0ZBTFNFQGxp YmdvbXBfdmVyc2lvbl9zY3JpcHQgPQogQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX0dO VV9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBfdmVyc2lv bl9zY3JpcHQgPSAtV2wsLS12ZXJzaW9uLXNjcmlwdCxsaWJnb21wLnZlcgogQExJQkdPTVBfQlVJ TERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJ Ql9UUlVFQGxpYmdvbXBfdmVyc2lvbl9zY3JpcHQgPSAtV2wsLU0sbGliZ29tcC52ZXItc3VuCitA TElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfRkFMU0VAbGliZ29tcGRfdmVyc2lvbl9zY3Jp cHQgPQorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX0dOVV9UUlVFQEBMSUJHT01QX0JV SUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBkX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC0t dmVyc2lvbi1zY3JpcHQsbGliZ29tcGQudmVyCitATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hM SUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVAbGliZ29tcGRf dmVyc2lvbl9zY3JpcHQgPSAtV2wsLU0sbGliZ29tcGQudmVyLXN1bgogQExJQkdPTVBfQlVJTERf VkVSU0lPTkVEX1NITElCX0ZBTFNFQGxpYmdvbXBfdmVyc2lvbl9kZXAgPQogQExJQkdPTVBfQlVJ TERfVkVSU0lPTkVEX1NITElCX0dOVV9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJ Ql9UUlVFQGxpYmdvbXBfdmVyc2lvbl9kZXAgPSBsaWJnb21wLnZlcgogQExJQkdPTVBfQlVJTERf VkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9U UlVFQGxpYmdvbXBfdmVyc2lvbl9kZXAgPSBsaWJnb21wLnZlci1zdW4KK0BMSUJHT01QX0JVSUxE X1ZFUlNJT05FRF9TSExJQl9GQUxTRUBsaWJnb21wZF92ZXJzaW9uX2RlcCA9CitATElCR09NUF9C VUlMRF9WRVJTSU9ORURfU0hMSUJfR05VX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NI TElCX1RSVUVAbGliZ29tcGRfdmVyc2lvbl9kZXAgPSBsaWJnb21wZC52ZXIKK0BMSUJHT01QX0JV SUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hM SUJfVFJVRUBsaWJnb21wZF92ZXJzaW9uX2RlcCA9IGxpYmdvbXBkLnZlci1zdW4KIGxpYmdvbXBf dmVyc2lvbl9pbmZvID0gLXZlcnNpb24taW5mbyAkKGxpYnRvb2xfVkVSU0lPTikKK2xpYmdvbXBk X3ZlcnNpb25faW5mbyA9IC12ZXJzaW9uLWluZm8gJChsaWJ0b29sX1ZFUlNJT04pCiBsaWJnb21w X2xhX0xERkxBR1MgPSAkKGxpYmdvbXBfdmVyc2lvbl9pbmZvKSAkKGxpYmdvbXBfdmVyc2lvbl9z Y3JpcHQpIFwKICAgICAgICAgJChsdF9ob3N0X2ZsYWdzKQoKK2xpYmdvbXBkX2xhX0xERkxBR1Mg PSAkKGxpYmdvbXBkX3ZlcnNpb25faW5mbykgJChsaWJnb21wZF92ZXJzaW9uX3NjcmlwdCkgXAor CQkJCSQobHRfaG9zdF9mbGFncykKKwogbGliZ29tcF9sYV9ERVBFTkRFTkNJRVMgPSAkKGxpYmdv bXBfdmVyc2lvbl9kZXApCitsaWJnb21wZF9sYV9ERVBFTkRFTkNJRVMgPSAkKGxpYmdvbXBkX3Zl cnNpb25fZGVwKQogbGliZ29tcF9sYV9MSU5LID0gJChMSU5LKSAkKGxpYmdvbXBfbGFfTERGTEFH UykKK2xpYmdvbXBkX2xhX0xJTksgPSAkKExJTkspICQobGliZ29tcGRfbGFfTERGTEFHUykKIGxp YmdvbXBfbGFfU09VUkNFUyA9IGFsbG9jLmMgYXRvbWljLmMgYmFycmllci5jIGNyaXRpY2FsLmMg ZW52LmMgXAogCWVycm9yLmMgaWN2LmMgaWN2LWRldmljZS5jIGl0ZXIuYyBpdGVyX3VsbC5jIGxv b3AuYyBsb29wX3VsbC5jIFwKIAlvcmRlcmVkLmMgcGFyYWxsZWwuYyBzY29wZS5jIHNlY3Rpb25z LmMgc2luZ2xlLmMgdGFzay5jIHRlYW0uYyBcCkBAIC01NTksNyArNTc2LDggQEAgbGliZ29tcF9s YV9TT1VSQ0VTID0gYWxsb2MuYyBhdG9taWMuYyBiYXJyaWVyLmMgY3JpdGljYWwuYyBlbnYuYyBc CiAJb2FjYy1wYXJhbGxlbC5jIG9hY2MtaG9zdC5jIG9hY2MtaW5pdC5jIG9hY2MtbWVtLmMgXAog CW9hY2MtYXN5bmMuYyBvYWNjLXBsdWdpbi5jIG9hY2MtY3VkYS5jIHByaW9yaXR5X3F1ZXVlLmMg XAogCWFmZmluaXR5LWZtdC5jIHRlYW1zLmMgYWxsb2NhdG9yLmMgb2FjYy1wcm9maWxpbmcuYyBc Ci0Jb2FjYy10YXJnZXQuYyAkKGFtX19hcHBlbmRfMykKKwlvYWNjLXRhcmdldC5jIG9tcGQtc3Vw cG9ydC5jICQoYW1fX2FwcGVuZF8zKQorbGliZ29tcGRfbGFfU09VUkNFUyA9IG9tcGQtaW5pdC5j IG9tcGQtaGVscGVyLmMgb21wZC1pY3YuYwoKICMgTnZpZGlhIFBUWCBPcGVuQUNDIHBsdWdpbi4K IEBQTFVHSU5fTlZQVFhfVFJVRUBsaWJnb21wX3BsdWdpbl9udnB0eF92ZXJzaW9uX2luZm8gPSAt dmVyc2lvbi1pbmZvICQobGlidG9vbF9WRVJTSU9OKQpAQCAtNTgzLDcgKzYwMSw3IEBAIGxpYmdv bXBfbGFfU09VUkNFUyA9IGFsbG9jLmMgYXRvbWljLmMgYmFycmllci5jIGNyaXRpY2FsLmMgZW52 LmMgXAogQFBMVUdJTl9HQ05fVFJVRUBsaWJnb21wX3BsdWdpbl9nY25fbGFfTElCQUREID0gbGli Z29tcC5sYSAkKFBMVUdJTl9HQ05fTElCUykKIEBQTFVHSU5fR0NOX1RSVUVAbGliZ29tcF9wbHVn aW5fZ2NuX2xhX0xJQlRPT0xGTEFHUyA9IC0tdGFnPWRpc2FibGUtc3RhdGljCiBub2Rpc3Rfbm9p bnN0X0hFQURFUlMgPSBsaWJnb21wX2YuaAotbm9kaXN0X2xpYnN1YmluY2x1ZGVfSEVBREVSUyA9 IG9tcC5oIG9wZW5hY2MuaCBhY2NfcHJvZi5oCitub2Rpc3RfbGlic3ViaW5jbHVkZV9IRUFERVJT ID0gb21wLmggb3BlbmFjYy5oIGFjY19wcm9mLmggb21wLXRvb2xzLmggb21wZC10eXBlcy5oCiBA VVNFX0ZPUlRSQU5fVFJVRUBub2Rpc3RfZmluY2x1ZGVfSEVBREVSUyA9IG9tcF9saWIuaCBvbXBf bGliLmY5MCBvbXBfbGliLm1vZCBvbXBfbGliX2tpbmRzLm1vZCBcCiBAVVNFX0ZPUlRSQU5fVFJV RUAJb3BlbmFjY19saWIuaCBvcGVuYWNjLmY5MCBvcGVuYWNjLm1vZCBvcGVuYWNjX2tpbmRzLm1v ZAoKQEAgLTY4MCw2ICs2OTgsMTAgQEAgb21wX2xpYi5mOTA6ICQodG9wX2J1aWxkZGlyKS9jb25m aWcuc3RhdHVzICQoc3JjZGlyKS9vbXBfbGliLmY5MC5pbgogCWNkICQodG9wX2J1aWxkZGlyKSAm JiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAKIGxpYmdvbXBfZi5oOiAkKHRvcF9idWlsZGRp cikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvbGliZ29tcF9mLmguaW4KIAljZCAkKHRvcF9idWls ZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRACitvbXAtdG9vbHMuaDogJCh0b3Bf YnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL29tcC10b29scy5oLmluCisJY2QgJCh0 b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQAorb21wZC10eXBlcy5o OiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2Rpcikvb21wZC10eXBlcy5oLmlu CisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQAogbGli Z29tcC5zcGVjOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvbGliZ29t cC5zcGVjLmluCiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1 cyAkQAoKQEAgLTcyNyw2ICs3NDksOSBAQCBsaWJnb21wLXBsdWdpbi1udnB0eC5sYTogJChsaWJn b21wX3BsdWdpbl9udnB0eF9sYV9PQkpFQ1RTKSAkKGxpYmdvbXBfcGx1Z2luX252cAogbGliZ29t cC5sYTogJChsaWJnb21wX2xhX09CSkVDVFMpICQobGliZ29tcF9sYV9ERVBFTkRFTkNJRVMpICQo RVhUUkFfbGliZ29tcF9sYV9ERVBFTkRFTkNJRVMpCiAJJChBTV9WX0dFTikkKGxpYmdvbXBfbGFf TElOSykgLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpICQobGliZ29tcF9sYV9PQkpFQ1RTKSAkKGxp YmdvbXBfbGFfTElCQUREKSAkKExJQlMpCgorbGliZ29tcGQubGE6ICQobGliZ29tcGRfbGFfT0JK RUNUUykgJChsaWJnb21wZF9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ29tcGRfbGFfREVQ RU5ERU5DSUVTKQorCSQoQU1fVl9HRU4pJChsaWJnb21wZF9sYV9MSU5LKSAtcnBhdGggJCh0b29s ZXhlY2xpYmRpcikgJChsaWJnb21wZF9sYV9PQkpFQ1RTKSAkKGxpYmdvbXBkX2xhX0xJQkFERCkg JChMSUJTKQorCiBtb3N0bHljbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLiQoT0JKRVhUKQoKQEAg LTc2NCw2ICs3ODksMTAgQEAgZGlzdGNsZWFuLWNvbXBpbGU6CiBAQU1ERVBfVFJVRUBAYW1fX2lu Y2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvb2FjYy1wbHVnaW4uUGxvQGFtX19xdW90ZUAK IEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9vYWNjLXBy b2ZpbGluZy5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1 b3RlQC4vJChERVBESVIpL29hY2MtdGFyZ2V0LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBA YW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvb21wZC1oZWxwZXIuUGxvQGFtX19x dW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9v bXBkLWljdi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1 b3RlQC4vJChERVBESVIpL29tcGQtaW5pdC5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFt X19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL29tcGQtc3VwcG9ydC5QbG9AYW1fX3F1 b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL29y ZGVyZWQuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90 ZUAuLyQoREVQRElSKS9wYXJhbGxlbC5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19p bmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3ByaW9yaXR5X3F1ZXVlLlBsb0BhbV9fcXVv dGVACkBAIC0xMzY2LDYgKzEzOTUsMTAgQEAgdnBhdGggJSAkKHN0cmlwICQoc2VhcmNoX3BhdGgp KQogQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVAbGliZ29tcC52ZXI6ICQodG9w X3NyY2RpcikvbGliZ29tcC5tYXAKIEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVF QAkkKEVHUkVQKSAtdiAnIygjfCB8JCQpJyAkPCB8IFwKIEBMSUJHT01QX0JVSUxEX1ZFUlNJT05F RF9TSExJQl9UUlVFQAkgICQoUFJFUFJPQ0VTUykgLVAgLWluY2x1ZGUgY29uZmlnLmggLSA+ICRA IHx8IChybSAtZiAkQCA7IGV4aXQgMSkKKworQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElC X1RSVUVAbGliZ29tcGQudmVyOiAkKHRvcF9zcmNkaXIpL2xpYmdvbXBkLm1hcAorQExJQkdPTVBf QlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACSQoRUdSRVApIC12ICcjKCN8IHwkJCknICQ8IHwg XAorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACQkkKFBSRVBST0NFU1MpIC1Q IC1pbmNsdWRlIGNvbmZpZy5oIC0gPiAkQCB8fCAocm0gLWYgJEAgOyBleGl0IDEpCiBATElCR09N UF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVE X1NITElCX1RSVUVAbGliZ29tcC52ZXItc3VuIDogbGliZ29tcC52ZXIgXAogQExJQkdPTVBfQlVJ TERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJ Ql9UUlVFQAkJJCh0b3Bfc3JjZGlyKS8uLi9jb250cmliL21ha2Vfc3VudmVyLnBsIFwKIEBMSUJH T01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9O RURfU0hMSUJfVFJVRUAJCSQobGliZ29tcF9sYV9PQkpFQ1RTKSAkKGxpYmdvbXBfbGFfTElCQURE KQpAQCAtMTM3Niw2ICsxNDA5LDE2IEBAIHZwYXRoICUgJChzdHJpcCAkKHNlYXJjaF9wYXRoKSkK IEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9W RVJTSU9ORURfU0hMSUJfVFJVRUAJICAgIHNlZCAncywvXChbXi8uXSpcKVwubGEsLy5saWJzL1wx LmEsZydgIFwKIEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09N UF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJID4gJEAgfHwgKHJtIC1mICRAIDsgZXhpdCAx KQoKK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlM RF9WRVJTSU9ORURfU0hMSUJfVFJVRUBsaWJnb21wZC52ZXItc3VuIDogbGliZ29tcGQudmVyIFwK K0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9W RVJTSU9ORURfU0hMSUJfVFJVRUAJCSQodG9wX3NyY2RpcikvLi4vY29udHJpYi9tYWtlX3N1bnZl ci5wbCBcCitATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJQkdPTVBf QlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACQkkKGxpYmdvbXBkX2xhX09CSkVDVFMpICQobGli Z29tcGRfbGFfTElCQUREKQorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVF QEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQAlwZXJsICQodG9wX3NyY2Rpcikv Li4vY29udHJpYi9tYWtlX3N1bnZlci5wbCBcCitATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hM SUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACQlsaWJnb21w ZC52ZXIgXAorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01Q X0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQAkJJChsaWJnb21wZF9sYV9PQkpFQ1RTOiUubG89 LmxpYnMvJS5vKSBcCitATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJ QkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACQlgZWNobyAkKGxpYmdvbXBkX2xhX0xJ QkFERCkgfCBcCitATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJQkdP TVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACQkJc2VkICdzLC9cKFteLy5dKlwpXC5sYSwv LmxpYnMvXDEuYSxnJ2AgXAorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVF QEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQAkJPiAkQCB8fCAocm0gLWYgJEAg OyBleGl0IDEpCisKIG9tcF9saWJfa2luZHMubW9kOiBvbXBfbGliLm1vZAogCToKIG9wZW5hY2Nf a2luZHMubW9kOiBvcGVuYWNjLm1vZApkaWZmIC0tZ2l0IGEvbGliZ29tcC9jb25maWcvZGFyd2lu L3BsdWdpbi1zdWZmaXguaCBiL2xpYmdvbXAvY29uZmlnL2Rhcndpbi9wbHVnaW4tc3VmZml4LmgK aW5kZXggN2MxYWQzMWM5YjQuLjU3ZjEyN2Y2ZDNlIDEwMDY0NAotLS0gYS9saWJnb21wL2NvbmZp Zy9kYXJ3aW4vcGx1Z2luLXN1ZmZpeC5oCisrKyBiL2xpYmdvbXAvY29uZmlnL2Rhcndpbi9wbHVn aW4tc3VmZml4LmgKQEAgLTIzLDQgKzIzLDQgQEAKICAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMg YW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQogICAgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KCi0jZGVmaW5lIFNPTkFNRV9TVUZGSVgobikg KCIuIiAjbiAiLmR5bGliIikKKyNkZWZpbmUgU09OQU1FX1NVRkZJWChuKSAiLiIgI24gIi5keWxp YiIKZGlmZiAtLWdpdCBhL2xpYmdvbXAvY29uZmlnL2hwdXgvcGx1Z2luLXN1ZmZpeC5oIGIvbGli Z29tcC9jb25maWcvaHB1eC9wbHVnaW4tc3VmZml4LmgKaW5kZXggYTRjNDhhNDVkZDEuLmNlYWYy YzZlMDU0IDEwMDY0NAotLS0gYS9saWJnb21wL2NvbmZpZy9ocHV4L3BsdWdpbi1zdWZmaXguaAor KysgYi9saWJnb21wL2NvbmZpZy9ocHV4L3BsdWdpbi1zdWZmaXguaApAQCAtMjMsNCArMjMsNCBA QAogICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3Rp dmVseS4gIElmIG5vdCwgc2VlCiAgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwoKLSNkZWZpbmUgU09OQU1FX1NVRkZJWChuKSAoIi5zbC4iICNuKQorI2RlZmluZSBTT05BTUVf U1VGRklYKG4pICIuc2wuIiAjbgpkaWZmIC0tZ2l0IGEvbGliZ29tcC9jb25maWcvcG9zaXgvcGx1 Z2luLXN1ZmZpeC5oIGIvbGliZ29tcC9jb25maWcvcG9zaXgvcGx1Z2luLXN1ZmZpeC5oCmluZGV4 IGNmMDNmNjRmN2EzLi45OTVkMzRmNTNlYSAxMDA2NDQKLS0tIGEvbGliZ29tcC9jb25maWcvcG9z aXgvcGx1Z2luLXN1ZmZpeC5oCisrKyBiL2xpYmdvbXAvY29uZmlnL3Bvc2l4L3BsdWdpbi1zdWZm aXguaApAQCAtMjMsNCArMjMsNCBAQAogICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09Q WUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCiAgICA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLwoKLSNkZWZpbmUgU09OQU1FX1NVRkZJWChuKSAoIi5zby4i ICNuKQorI2RlZmluZSBTT05BTUVfU1VGRklYKG4pICIuc28uIiAjbgpkaWZmIC0tZ2l0IGEvbGli Z29tcC9jb25maWd1cmUgYi9saWJnb21wL2NvbmZpZ3VyZQppbmRleCBhNzNhNmQ0NDAwMy4uNTky ZjMyOTc0YjYgMTAwNzU1Ci0tLSBhL2xpYmdvbXAvY29uZmlndXJlCisrKyBiL2xpYmdvbXAvY29u ZmlndXJlCkBAIC0xNzA2NSw3ICsxNzA2NSw3IEBAIGZpCgoKCi1hY19jb25maWdfZmlsZXM9IiRh Y19jb25maWdfZmlsZXMgb21wLmggb21wX2xpYi5oIG9tcF9saWIuZjkwIGxpYmdvbXBfZi5oIgor YWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIG9tcC5oIG9tcF9saWIuaCBvbXBfbGli LmY5MCBsaWJnb21wX2YuaCBvbXAtdG9vbHMuaCBvbXBkLXR5cGVzLmgiCgogYWNfY29uZmlnX2Zp bGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBsaWJnb21w LnNwZWMiCgpAQCAtMTgyMTgsNiArMTgyMTgsOCBAQCBkbwogICAgICJvbXBfbGliLmgiKSBDT05G SUdfRklMRVM9IiRDT05GSUdfRklMRVMgb21wX2xpYi5oIiA7OwogICAgICJvbXBfbGliLmY5MCIp IENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBvbXBfbGliLmY5MCIgOzsKICAgICAibGliZ29t cF9mLmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbGliZ29tcF9mLmgiIDs7CisgICAg Im9tcC10b29scy5oIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG9tcC10b29scy5oIiA7 OworICAgICJvbXBkLXR5cGVzLmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgb21wZC10 eXBlcy5oIiA7OwogICAgICJNYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBN YWtlZmlsZSIgOzsKICAgICAidGVzdHN1aXRlL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09O RklHX0ZJTEVTIHRlc3RzdWl0ZS9NYWtlZmlsZSIgOzsKICAgICAibGliZ29tcC5zcGVjIikgQ09O RklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGxpYmdvbXAuc3BlYyIgOzsKZGlmZiAtLWdpdCBhL2xp YmdvbXAvY29uZmlndXJlLmFjIGIvbGliZ29tcC9jb25maWd1cmUuYWMKaW5kZXggYTliMWYzOTcz ZjcuLmNkNmMzY2MxYTk2IDEwMDY0NAotLS0gYS9saWJnb21wL2NvbmZpZ3VyZS5hYworKysgYi9s aWJnb21wL2NvbmZpZ3VyZS5hYwpAQCAtNDcyLDcgKzQ3Miw3IEBAIENGTEFHUz0iJHNhdmVfQ0ZM QUdTIgogIyBEZXRlcm1pbmUgd2hhdCBHQ0MgdmVyc2lvbiBudW1iZXIgdG8gdXNlIGluIGZpbGVz eXN0ZW0gcGF0aHMuCiBHQ0NfQkFTRV9WRVIKCi1BQ19DT05GSUdfRklMRVMob21wLmggb21wX2xp Yi5oIG9tcF9saWIuZjkwIGxpYmdvbXBfZi5oKQorQUNfQ09ORklHX0ZJTEVTKG9tcC5oIG9tcF9s aWIuaCBvbXBfbGliLmY5MCBsaWJnb21wX2YuaCBvbXAtdG9vbHMuaCBvbXBkLXR5cGVzLmgpCiBB Q19DT05GSUdfRklMRVMoTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIGxpYmdvbXAuc3BlYykK IEFDX0NPTkZJR19GSUxFUyhbdGVzdHN1aXRlL2xpYmdvbXAtdGVzdC1zdXBwb3J0LnB0LmV4cDp0 ZXN0c3VpdGUvbGliZ29tcC10ZXN0LXN1cHBvcnQuZXhwLmluXSkKIEFDX0NPTkZJR19GSUxFUyhb dGVzdHN1aXRlL2xpYmdvbXAtc2l0ZS1leHRyYS5leHBdKQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9l bnYuYyBiL2xpYmdvbXAvZW52LmMKaW5kZXggMWM0ZWU4OTQ1MTUuLmMwZjIwNTIzNWU5IDEwMDY0 NAotLS0gYS9saWJnb21wL2Vudi5jCisrKyBiL2xpYmdvbXAvZW52LmMKQEAgLTMzLDYgKzMzLDcg QEAKICNpZm5kZWYgTElCR09NUF9PRkZMT0FERURfT05MWQogI2luY2x1ZGUgImxpYmdvbXBfZi5o IgogI2luY2x1ZGUgIm9hY2MtaW50LmgiCisjaW5jbHVkZSAib21wZC1zdXBwb3J0LmgiCiAjaW5j bHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpA QCAtMTQ4Myw2ICsxNDg0LDcgQEAgaW5pdGlhbGl6ZV9lbnYgKHZvaWQpCiAJPSB0aHJlYWRfbGlt aXRfdmFyID4gSU5UX01BWCA/IFVJTlRfTUFYIDogdGhyZWFkX2xpbWl0X3ZhcjsKICAgICB9CiAg IHBhcnNlX2ludF9zZWN1cmUgKCJHT01QX0RFQlVHIiwgJmdvbXBfZGVidWdfdmFyLCB0cnVlKTsK KyAgZ29tcGRfbG9hZCAoKTsKICNpZm5kZWYgSEFWRV9TWU5DX0JVSUxUSU5TCiAgIGdvbXBfbXV0 ZXhfaW5pdCAoJmdvbXBfbWFuYWdlZF90aHJlYWRzX2xvY2spOwogI2VuZGlmCmRpZmYgLS1naXQg YS9saWJnb21wL2xpYmdvbXAubWFwIGIvbGliZ29tcC9saWJnb21wLm1hcAppbmRleCAyYWM1ODA5 NDE2OS4uNDZmZWJhMzk0ZjUgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvbGliZ29tcC5tYXAKKysrIGIv bGliZ29tcC9saWJnb21wLm1hcApAQCAtMTMsNyArMTMsNyBAQCBPTVBfMS4wIHsKICNpZmRlZiBI QVZFX1NZTVZFUl9TWU1CT0xfUkVOQU1JTkdfUlVOVElNRV9TVVBQT1JUCiAgICAgICAgICMgSWYg dGhlIGFzc2VtYmxlciB1c2VkIGxhY2tzIHRoZSAuc3ltdmVyIGRpcmVjdGl2ZSBvciB0aGUgbGlu a2VyCiAJIyBkb2Vzbid0IHN1cHBvcnQgR05VIHN5bWJvbCB2ZXJzaW9uaW5nLCB3ZSBoYXZlIHRo ZSBzYW1lIHN5bWJvbCBpbgotCSMgdHdvIHZlcnNpb25zLCB3aGljaCBTdW4gbGQgY2hva2VzIG9u LgorCSMgdHdvIHZlcnNpb25zLCB3aGljaCBTdW4gbGQgY2hva2VzIG9uLgogCW9tcF9pbml0X2xv Y2s7CiAJb21wX2luaXRfbmVzdF9sb2NrOwogCW9tcF9kZXN0cm95X2xvY2s7CkBAIC0yMjYsNiAr MjI2LDE0IEBAIE9NUF81LjEgewogCW9tcF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0XzsKIH0gT01Q XzUuMC4yOwoKK09NUF81LjAuMyB7CisgIGdsb2JhbDoKKwlvbXBkX2RsbF9sb2NhdGlvbnM7CisJ b21wZF9kbGxfbG9jYXRpb25zX3ZhbGlkOworCW9tcGRfYnBfcGFyYWxsZWxfYmVnaW47CisJb21w ZF9icF9wYXJhbGxlbF9lbmQ7Cit9IE9NUF81LjAuMjsKKwogR09NUF8xLjAgewogICBnbG9iYWw6 CiAJR09NUF9hdG9taWNfZW5kOwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wZC5tYXAgYi9s aWJnb21wL2xpYmdvbXBkLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZmMxYjIxOWNkZGUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL2xpYmdvbXBkLm1hcApA QCAtMCwwICsxLDIxIEBACitPTVBEXzUuMSB7CisgIGdsb2JhbDoKKyAgICBvbXBkX2luaXRpYWxp emU7CisgICAgb21wZF9nZXRfYXBpX3ZlcnNpb247CisgICAgb21wZF9nZXRfdmVyc2lvbl9zdHJp bmc7CisgICAgb21wZF9wcm9jZXNzX2luaXRpYWxpemU7CisgICAgb21wZF9kZXZpY2VfaW5pdGlh bGl6ZTsKKyAgICBvbXBkX3JlbF9hZGRyZXNzX3NwYWNlX2hhbmRsZTsKKyAgICBvbXBkX2ZpbmFs aXplOworICAgIG9tcGRfZW51bWVyYXRlX2ljdnM7CisgICAgb21wZF9nZXRfaWN2X2Zyb21fc2Nv cGU7CisgICAgb21wZF9nZXRfaWN2X3N0cmluZ19mcm9tX3Njb3BlOworICAgIG9tcGRfZ2V0X3Ro cmVhZF9oYW5kbGU7CisgICAgb21wZF9nZXRfdGhyZWFkX2luX3BhcmFsbGVsOworICAgIG9tcGRf cmVsX3RocmVhZF9oYW5kbGU7CisgICAgb21wZF90aHJlYWRfaGFuZGxlX2NvbXBhcmU7CisgICAg b21wZF9nZXRfdGhyZWFkX2lkOworICAgIG9tcGRfZ2V0X2RldmljZV9mcm9tX3RocmVhZDsKKyAg ICBvbXBkX2JwX3RocmVhZF9iZWdpbjsKKyAgICBvbXBkX2JwX3RocmVhZF9lbmQ7Cit9OwpkaWZm IC0tZ2l0IGEvbGliZ29tcC9vbXAtdG9vbHMuaC5pbiBiL2xpYmdvbXAvb21wLXRvb2xzLmguaW4K bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNiNGUwNjFlZWI1Ci0tLSAv ZGV2L251bGwKKysrIGIvbGliZ29tcC9vbXAtdG9vbHMuaC5pbgpAQCAtMCwwICsxLDMwMyBAQAor LyogQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAg Q29udHJpYnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29tPi4K KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkgUHJv Y2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAo YXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQg QU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgor ICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRp dGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJh cnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhlIEdD QyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAg c2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4g IElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisv KiBUaGlzIGZpbGUgY29udGFpbnMgZGF0YSB0eXBlcyBhbmQgZnVuY3Rpb24gZGVjbGFyYXRpb25z IHRoYXQKKyAgIHRoYXQgYXJlIGRlZmluZWQgaW4gT01QRCBzdGFuZGFyZC4gICovCisKKyNpZm5k ZWYgX09NUF9UT09MU19ICisjZGVmaW5lIF9PTVBfVE9PTFNfSAorCisjaWZkZWYgX19jcGx1c3Bs dXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2V4dGVybiBjb25zdCBjaGFyICoqb21wZF9kbGxf bG9jYXRpb25zOworCisjaWZkZWYgX19FTEZfXworI2RlZmluZSBvbXBkX2RsbF9sb2NhdGlvbnNf dmFsaWQoKSBcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfZGxsX2xvY2F0 aW9uc192YWxpZFxuXHQiIFwKKwkJCSJvbXBkX2RsbF9sb2NhdGlvbnNfdmFsaWQ6IikKKyNlbHNl CitleHRlcm4gdm9pZCBvbXBkX2RsbF9sb2NhdGlvbnNfdmFsaWQgKHZvaWQpOworI2VuZGlmIC8q IF9fRUxGX18gKi8KKwordHlwZWRlZiBfX1VJTlQ2NF9UWVBFX18gb21wZF9zaXplX3Q7Cit0eXBl ZGVmIF9fVUlOVDY0X1RZUEVfXyBvbXBkX3dhaXRfaWRfdDsKKwordHlwZWRlZiBfX1VJTlQ2NF9U WVBFX18gb21wZF9hZGRyX3Q7Cit0eXBlZGVmIF9fSU5UNjRfVFlQRV9fIG9tcGRfd29yZF90Owor dHlwZWRlZiBfX1VJTlQ2NF9UWVBFX18gb21wZF9zZWdfdDsKKwordHlwZWRlZiBzdHJ1Y3Qgb21w ZF9hZGRyZXNzX3QKK3sKKyAgb21wZF9zZWdfdCBzZWdtZW50OworICBvbXBkX2FkZHJfdCBhZGRy ZXNzOworfSBvbXBkX2FkZHJlc3NfdDsKKwordHlwZWRlZiBzdHJ1Y3Qgb21wZF9mcmFtZV9pbmZv X3QKK3sKKyAgb21wZF9hZGRyZXNzX3QgZnJhbWVfYWRkcmVzczsKKyAgb21wZF93b3JkX3QgZnJh bWVfZmxhZzsKK30gb21wZF9mcmFtZV9pbmZvX3Q7CisKK3R5cGVkZWYgX19VSU5UNjRfVFlQRV9f IG9tcGRfZGV2aWNlX3Q7Cit0eXBlZGVmIF9fVUlOVDY0X1RZUEVfXyBvbXBkX3RocmVhZF9pZF90 OworCit0eXBlZGVmIHN0cnVjdCBfb21wZF9hc3BhY2VfaGFuZGxlIG9tcGRfYWRkcmVzc19zcGFj ZV9oYW5kbGVfdDsKK3R5cGVkZWYgc3RydWN0IF9vbXBkX3RocmVhZF9oYW5kbGUgb21wZF90aHJl YWRfaGFuZGxlX3Q7Cit0eXBlZGVmIHN0cnVjdCBfb21wZF9wYXJhbGxlbF9oYW5kbGUgb21wZF9w YXJhbGxlbF9oYW5kbGVfdDsKK3R5cGVkZWYgc3RydWN0IF9vbXBkX3Rhc2tfaGFuZGxlIG9tcGRf dGFza19oYW5kbGVfdDsKKwordHlwZWRlZiBlbnVtIG9tcGRfc2NvcGVfdAoreworICBvbXBkX3Nj b3BlX2dsb2JhbCA9IDEsCisgIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSA9IDIsCisgIG9tcGRf c2NvcGVfdGhyZWFkID0gMywKKyAgb21wZF9zY29wZV9wYXJhbGxlbCA9IDQsCisgIG9tcGRfc2Nv cGVfaW1wbGljaXRfdGFzayA9IDUsCisgIG9tcGRfc2NvcGVfdGFzayA9IDYKK30gb21wZF9zY29w ZV90OworCit0eXBlZGVmIF9fVUlOVDY0X1RZUEVfXyBvbXBkX2ljdl9pZF90OworCit0eXBlZGVm IHN0cnVjdCBfb21wZF9hc3BhY2VfY29udCBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90Owor dHlwZWRlZiBzdHJ1Y3QgX29tcGRfdGhyZWFkX2NvbnQgb21wZF90aHJlYWRfY29udGV4dF90Owor Cit0eXBlZGVmIGVudW0gb21wZF9yY190Cit7CisgIG9tcGRfcmNfb2sgPSAwLAorICBvbXBkX3Jj X3VuYXZhaWxhYmxlID0gMSwKKyAgb21wZF9yY19zdGFsZV9oYW5kbGUgPSAyLAorICBvbXBkX3Jj X2JhZF9pbnB1dCA9IDMsCisgIG9tcGRfcmNfZXJyb3IgPSA0LAorICBvbXBkX3JjX3Vuc3VwcG9y dGVkID0gNSwKKyAgb21wZF9yY19uZWVkc19zdGF0ZV90cmFja2luZyA9IDYsCisgIG9tcGRfcmNf aW5jb21wYXRpYmxlID0gNywKKyAgb21wZF9yY19kZXZpY2VfcmVhZF9lcnJvciA9IDgsCisgIG9t cGRfcmNfZGV2aWNlX3dyaXRlX2Vycm9yID0gOSwKKyAgb21wZF9yY19ub21lbSA9IDEwLAorICBv bXBkX3JjX2luY29tcGxldGUgPSAxMSwKKyAgb21wZF9yY19jYWxsYmFja19lcnJvciA9IDEyCit9 IG9tcGRfcmNfdDsKKworCit0eXBlZGVmIHN0cnVjdCBvbXBkX2RldmljZV90eXBlX3NpemVzX3QK K3sKKyAgX19VSU5UOF9UWVBFX18gc2l6ZW9mX2NoYXI7CisgIF9fVUlOVDhfVFlQRV9fIHNpemVv Zl9zaG9ydDsKKyAgX19VSU5UOF9UWVBFX18gc2l6ZW9mX2ludDsKKyAgX19VSU5UOF9UWVBFX18g c2l6ZW9mX2xvbmc7CisgIF9fVUlOVDhfVFlQRV9fIHNpemVvZl9sb25nX2xvbmc7CisgIF9fVUlO VDhfVFlQRV9fIHNpemVvZl9wb2ludGVyOworfSBvbXBkX2RldmljZV90eXBlX3NpemVzX3Q7CisK KwordHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX21lbW9yeV9hbGxvY19mbl90KSAo b21wZF9zaXplX3QsIHZvaWQgKiopOwordHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNr X21lbW9yeV9mcmVlX2ZuX3QpICh2b2lkICopOworCit0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRf Y2FsbGJhY2tfZ2V0X3RocmVhZF9jb250ZXh0X2Zvcl90aHJlYWRfaWRfZm5fdCkKKyAgKG9tcGRf YWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKiwgb21wZF90aHJlYWRfaWRfdCwKKyAgIG9tcGRfc2l6 ZV90LCBjb25zdCB2b2lkICosIG9tcGRfdGhyZWFkX2NvbnRleHRfdCAqKik7CisKKwordHlwZWRl ZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX3NpemVvZl9mbl90KSAob21wZF9hZGRyZXNzX3Nw YWNlX2NvbnRleHRfdCAqLAorCQkgICBvbXBkX2RldmljZV90eXBlX3NpemVzX3QgKik7CisKKwor dHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX3N5bWJvbF9hZGRyX2ZuX3QpCisgIChv bXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICosIG9tcGRfdGhyZWFkX2NvbnRleHRfdCAqLCBj b25zdCBjaGFyICosCisgICBvbXBkX2FkZHJlc3NfdCAqLCBjb25zdCBjaGFyICopOworCit0eXBl ZGVmIG9tcGRfcmNfdCAoKm9tcGRfY2FsbGJhY2tfbWVtb3J5X3JlYWRfZm5fdCkKKyAgKG9tcGRf YWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKiwgb21wZF90aHJlYWRfY29udGV4dF90ICosCisgICBj b25zdCBvbXBkX2FkZHJlc3NfdCAqLCBvbXBkX3NpemVfdCBuYnl0ZXMsIHZvaWQgKik7CisKKwor dHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX21lbW9yeV93cml0ZV9mbl90KQorICAo b21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqLCBvbXBkX3RocmVhZF9jb250ZXh0X3QgKiwK KyAgIGNvbnN0IG9tcGRfYWRkcmVzc190ICosIG9tcGRfc2l6ZV90LCBjb25zdCB2b2lkICopOwor Cit0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRfY2FsbGJhY2tfZGV2aWNlX2hvc3RfZm5fdCkKKyAg KG9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKiwgY29uc3Qgdm9pZCAqLAorICAgb21wZF9z aXplX3QsIG9tcGRfc2l6ZV90LCB2b2lkICopOworCit0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRf Y2FsbGJhY2tfcHJpbnRfc3RyaW5nX2ZuX3QpIChjb25zdCBjaGFyICosIGludCk7CisKK3R5cGVk ZWYgc3RydWN0IG9tcGRfY2FsbGJhY2tzX3QKK3sKKyAgb21wZF9jYWxsYmFja19tZW1vcnlfYWxs b2NfZm5fdCBhbGxvY19tZW1vcnk7CisgIG9tcGRfY2FsbGJhY2tfbWVtb3J5X2ZyZWVfZm5fdCBm cmVlX21lbW9yeTsKKyAgb21wZF9jYWxsYmFja19wcmludF9zdHJpbmdfZm5fdCBwcmludF9zdHJp bmc7CisgIG9tcGRfY2FsbGJhY2tfc2l6ZW9mX2ZuX3Qgc2l6ZW9mX3R5cGU7CisgIG9tcGRfY2Fs bGJhY2tfc3ltYm9sX2FkZHJfZm5fdCBzeW1ib2xfYWRkcl9sb29rdXA7CisgIG9tcGRfY2FsbGJh Y2tfbWVtb3J5X3JlYWRfZm5fdCByZWFkX21lbW9yeTsKKyAgb21wZF9jYWxsYmFja19tZW1vcnlf d3JpdGVfZm5fdCB3cml0ZV9tZW1vcnk7CisgIG9tcGRfY2FsbGJhY2tfbWVtb3J5X3JlYWRfZm5f dCByZWFkX3N0cmluZzsKKyAgb21wZF9jYWxsYmFja19kZXZpY2VfaG9zdF9mbl90IGRldmljZV90 b19ob3N0OworICBvbXBkX2NhbGxiYWNrX2RldmljZV9ob3N0X2ZuX3QgaG9zdF90b19kZXZpY2U7 CisgIG9tcGRfY2FsbGJhY2tfZ2V0X3RocmVhZF9jb250ZXh0X2Zvcl90aHJlYWRfaWRfZm5fdAor ICAgIGdldF90aHJlYWRfY29udGV4dF9mb3JfdGhyZWFkX2lkOworfSBvbXBkX2NhbGxiYWNrc190 OworCitvbXBkX3JjX3Qgb21wZF9pbml0aWFsaXplIChvbXBkX3dvcmRfdCwgY29uc3Qgb21wZF9j YWxsYmFja3NfdCAqKTsKKworb21wZF9yY190IG9tcGRfZ2V0X2FwaV92ZXJzaW9uIChvbXBkX3dv cmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF92ZXJzaW9uX3N0cmluZyAoY29uc3QgY2hhciAq Kik7CisKK29tcGRfcmNfdCBvbXBkX2ZpbmFsaXplICh2b2lkKTsKKworb21wZF9yY190IG9tcGRf cHJvY2Vzc19pbml0aWFsaXplIChvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICosCisJCQkJ ICAgb21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICoqKTsKKworb21wZF9yY190IG9tcGRfZGV2 aWNlX2luaXRpYWxpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLAorCQkJCSAgb21w ZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqLCBvbXBkX2RldmljZV90LAorCQkJCSAgb21wZF9z aXplX3QsIHZvaWQgKiwKKwkJCQkgIG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKik7CisK K29tcGRfcmNfdCBvbXBkX3JlbF9hZGRyZXNzX3NwYWNlX2hhbmRsZSAob21wZF9hZGRyZXNzX3Nw YWNlX2hhbmRsZV90ICopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfb21wX3ZlcnNpb24gKG9tcGRf YWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKKworb21wZF9yY190IG9t cGRfZ2V0X29tcF92ZXJzaW9uX3N0cmluZyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICos CisJCQkJICAgICAgIGNvbnN0IGNoYXIgKiopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGhyZWFk X2luX3BhcmFsbGVsIChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICosIGludCwKKwkJCQkgICAgICAg b21wZF90aHJlYWRfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGhyZWFkX2hh bmRsZSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCisJCQkJICBvbXBkX3RocmVhZF9p ZF90LCBvbXBkX3NpemVfdCxjb25zdCB2b2lkICosCisJCQkJICBvbXBkX3RocmVhZF9oYW5kbGVf dCAqKik7CisKK29tcGRfcmNfdCBvbXBkX3JlbF90aHJlYWRfaGFuZGxlIChvbXBkX3RocmVhZF9o YW5kbGVfdCAqKTsKKworb21wZF9yY190IG9tcGRfdGhyZWFkX2hhbmRsZV9jb21wYXJlIChvbXBk X3RocmVhZF9oYW5kbGVfdCAqLAorCQkJCSAgICAgIG9tcGRfdGhyZWFkX2hhbmRsZV90ICosaW50 ICopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGhyZWFkX2lkIChvbXBkX3RocmVhZF9oYW5kbGVf dCAqLCBvbXBkX3RocmVhZF9pZF90LAorCQkJICAgICAgb21wZF9zaXplX3QsIHZvaWQgKik7CisK K29tcGRfcmNfdCBvbXBkX2dldF9jdXJyX3BhcmFsbGVsX2hhbmRsZSAob21wZF90aHJlYWRfaGFu ZGxlX3QgKiwKKwkJCQkJIG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qg b21wZF9nZXRfZW5jbG9zaW5nX3BhcmFsbGVsX2hhbmRsZSAob21wZF9wYXJhbGxlbF9oYW5kbGVf dCAqLAorCQkJCQkgICAgICBvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICoqKTsKKworb21wZF9yY190 IG9tcGRfZ2V0X3Rhc2tfcGFyYWxsZWxfaGFuZGxlIChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwKKwkJ CQkJIG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9yZWxfcGFy YWxsZWxfaGFuZGxlIChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICopOworCitvbXBkX3JjX3Qgb21w ZF9wYXJhbGxlbF9oYW5kbGVfY29tcGFyZSAob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqLAorCQkJ CQlvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICosIGludCAqKTsKKworb21wZF9yY190IG9tcGRfZ2V0 X2N1cnJfdGFza19oYW5kbGUgKG9tcGRfdGhyZWFkX2hhbmRsZV90ICosCisJCQkJICAgICBvbXBk X3Rhc2tfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfZ2VuZXJhdGluZ190YXNr X2hhbmRsZSAob21wZF90YXNrX2hhbmRsZV90ICosCisJCQkJCSAgIG9tcGRfdGFza19oYW5kbGVf dCAqKik7CisKK29tcGRfcmNfdCBvbXBkX2dldF9zY2hlZHVsaW5nX3Rhc2tfaGFuZGxlIChvbXBk X3Rhc2tfaGFuZGxlX3QgKiwKKwkJCQkJICAgb21wZF90YXNrX2hhbmRsZV90ICoqKTsKKworb21w ZF9yY190IG9tcGRfZ2V0X3Rhc2tfaW5fcGFyYWxsZWwgKG9tcGRfcGFyYWxsZWxfaGFuZGxlX3Qg KiwgaW50LAorCQkJCSAgICAgb21wZF90YXNrX2hhbmRsZV90ICoqKTsKKworb21wZF9yY190IG9t cGRfcmVsX3Rhc2tfaGFuZGxlIChvbXBkX3Rhc2tfaGFuZGxlX3QgKik7CisKK29tcGRfcmNfdCBv bXBkX3Rhc2tfaGFuZGxlX2NvbXBhcmUgKG9tcGRfdGFza19oYW5kbGVfdCAqLCBvbXBkX3Rhc2tf aGFuZGxlX3QgKiwKKwkJCQkgICAgaW50ICopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGFza19m dW5jdGlvbiAob21wZF90YXNrX2hhbmRsZV90ICosIG9tcGRfYWRkcmVzc190ICopOworCitvbXBk X3JjX3Qgb21wZF9nZXRfdGFza19mcmFtZSAob21wZF90YXNrX2hhbmRsZV90ICosIG9tcGRfZnJh bWVfaW5mb190ICosCisJCQkgICAgICAgb21wZF9mcmFtZV9pbmZvX3QgKik7CisKK29tcGRfcmNf dCBvbXBkX2VudW1lcmF0ZV9zdGF0ZXMgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBv bXBkX3dvcmRfdCwKKwkJCQkgb21wZF93b3JkX3QgKiwgY29uc3QgY2hhciAqKiwgb21wZF93b3Jk X3QgKik7CisKK29tcGRfcmNfdCBvbXBkX2dldF9zdGF0ZSAob21wZF90aHJlYWRfaGFuZGxlX3Qg Kiwgb21wZF93b3JkX3QgKiwKKwkJCSAgb21wZF93YWl0X2lkX3QgKik7CisKK29tcGRfcmNfdCBv bXBkX2dldF9kaXNwbGF5X2NvbnRyb2xfdmFycyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90 ICosCisJCQkJCSBjb25zdCBjaGFyICogY29uc3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9yZWxf ZGlzcGxheV9jb250cm9sX3ZhcnMgKGNvbnN0IGNoYXIgKiBjb25zdCAqKik7CisKK29tcGRfcmNf dCBvbXBkX2VudW1lcmF0ZV9pY3ZzIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwgb21w ZF9pY3ZfaWRfdCwKKwkJCSAgICAgICBvbXBkX2ljdl9pZF90ICosIGNvbnN0IGNoYXIgKiosIG9t cGRfc2NvcGVfdCAqLAorCQkJICAgICAgIGludCAqKTsKKworb21wZF9yY190IG9tcGRfZ2V0X2lj dl9mcm9tX3Njb3BlICh2b2lkICosIG9tcGRfc2NvcGVfdCwgb21wZF9pY3ZfaWRfdCwKKwkJCQkg ICBvbXBkX3dvcmRfdCAqKTsKKworb21wZF9yY190IG9tcGRfZ2V0X2ljdl9zdHJpbmdfZnJvbV9z Y29wZSAodm9pZCAqLCBvbXBkX3Njb3BlX3QsIG9tcGRfaWN2X2lkX3QsCisJCQkJCSAgY29uc3Qg Y2hhciAqKik7CisKK29tcGRfcmNfdCBvbXBkX2dldF90b29sX2RhdGEgKHZvaWQgKiwgb21wZF9z Y29wZV90LCBvbXBkX3dvcmRfdCAqLAorCQkJICAgICAgb21wZF9hZGRyZXNzX3QgKik7CisKKyNp ZmRlZiBfX0VMRl9fCisjZGVmaW5lIG9tcGRfYnBfcGFyYWxsZWxfYmVnaW4oKSBcCisgIF9fYXNt X18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBfcGFyYWxsZWxfYmVnaW5cblx0IiBcCisJ CQkib21wZF9icF9wYXJhbGxlbF9iZWdpbjoiKQorI2RlZmluZSBvbXBkX2JwX3BhcmFsbGVsX2Vu ZCgpIFwKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIuZ2xvYmwgb21wZF9icF9wYXJhbGxlbF9l bmRcblx0IiBcCisJCQkib21wZF9icF9wYXJhbGxlbF9lbmQ6IikKKyNkZWZpbmUgb21wZF9icF90 YXNrX2JlZ2luKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5nbG9ibCBvbXBkX2JwX3Rh c2tfYmVnaW5cblx0IiBcCisJCQkib21wZF9icF90YXNrX2JlZ2luOiIpCisjZGVmaW5lIG9tcGRf YnBfdGFza19lbmQoKSBcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBf dGFza19lbmRcblx0IiBcCisJCQkib21wZF9icF90YXNrX2VuZDoiKQorI2RlZmluZSBvbXBkX2Jw X3RocmVhZF9iZWdpbigpIFwKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIuZ2xvYmwgb21wZF9i cF90aHJlYWRfYmVnaW5cblx0IiBcCisJCQkib21wZF9icF90aHJlYWRfYmVnaW46IikKKyNkZWZp bmUgb21wZF9icF90aHJlYWRfZW5kKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5nbG9i bCBvbXBkX2JwX3RocmVhZF9lbmRcblx0IiBcCisJCQkib21wZF9icF90aHJlYWRfZW5kOiIpCisj ZGVmaW5lIG9tcGRfYnBfZGV2aWNlX2JlZ2luKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo Ii5nbG9ibCBvbXBkX2JwX2RldmljZV9iZWdpblxuXHQiIFwKKwkJCSJvbXBkX2JwX2RldmljZV9l bmQ6IikKKyNkZWZpbmUgb21wZF9icF9kZXZpY2VfZW5kKCkgXAorICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoIi5nbG9ibCBvbXBkX2JwX2RldmljZV9lbmRcblx0IiBcCisJCQkib21wZF9icF9kZXZp Y2VfZW5kOiIpCisjZWxzZQorCitleHRlcm4gdm9pZCBvbXBkX2JwX3BhcmFsbGVsX2JlZ2luICh2 b2lkKTsKK2V4dGVybiB2b2lkIG9tcGRfYnBfcGFyYWxsZWxfZW5kICh2b2lkKTsKKworZXh0ZXJu IHZvaWQgb21wZF9icF90YXNrX2JlZ2luICh2b2lkKTsKK2V4dGVybiB2b2lkIG9tcGRfYnBfdGFz a19lbmQgKHZvaWQpOworCitleHRlcm4gdm9pZCBvbXBkX2JwX3RocmVhZF9iZWdpbiAodm9pZCk7 CitleHRlcm4gdm9pZCBvbXBkX2JwX3RocmVhZF9lbmQgKHZvaWQpOworCitleHRlcm4gdm9pZCBv bXBkX2JwX2RldmljZV9iZWdpbiAodm9pZCk7CitleHRlcm4gdm9pZCBvbXBkX2JwX2RldmljZV9l bmQgKHZvaWQpOworI2VuZGlmIC8qIF9fRUxGX18gKi8KKworI2RlZmluZSBvbXBkX3NlZ21lbnRf bm9uZSAgKChvbXBkX3NlZ190KSAwKQorI2RlZmluZSBvbXBkX2ljdl91bmRlZmluZWQgKChvbXBk X2ljdl9pZF90KSAwKQorCisjaWZkZWYgX19jcGx1c3BsdXMKK307IC8vIGV4dGVybiAiQyIKKyNl bmRpZgorCisjZW5kaWYgLyogX09NUF9UT09MU19IICovCmRpZmYgLS1naXQgYS9saWJnb21wL29t cGQtaGVscGVyLmMgYi9saWJnb21wL29tcGQtaGVscGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmU0MzA1ZGZlZTc2Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29t cC9vbXBkLWhlbHBlci5jCkBAIC0wLDAgKzEsMjQ5IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjIg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb250cmlidXRlZCBieSBNb2hhbWVk IEF0ZWYgPG1vaGFtZWRhdGVmMTY5OEBnbWFpbC5jb20+LgorICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIEdOVSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChs aWJnb21wKS4KKyAgIExpYmdvbXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFu eSBsYXRlciB2ZXJzaW9uLgorICAgTGliZ29tcCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKKyAgIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MKKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yCisgICBtb3JlIGRldGFpbHMuCisgICBVbmRlciBTZWN0aW9uIDcgb2Yg R1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25z IGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24K KyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNl cHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkcz IGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIFRoaXMgZmlsZSBjb250YWlucyB0 aGUgc291cmNlIGNvZGUgb2YgZnVuY3Rpb25zCisgIGRlY2xhcmVkIGluIG9tcGQtaGVscGVyLmgu ICAqLworCisjaW5jbHVkZSAib21wZC1oZWxwZXIuaCIKKworb21wZF9kZXZpY2VfdHlwZV9zaXpl c190IHRhcmdldF9zaXplczsKKworLyogR2V0IGdsb2JhbCBJQ1ZzLiAgKi8KK29tcGRfcmNfdAor b21wZF9nZXRfY2FuY2VsbGF0aW9uIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLCBv bXBkX3dvcmRfdCAqY2FuY2VsX3ZhcikKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3Qg Y2FuY2VsID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2Fk ZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChhaC0+Y29u dGV4dCwgTlVMTCwgImdvbXBfY2FuY2VsX3ZhciIsIGNhbmNlbCwgY2FuY2VsLAorCSAgICAgdGFy Z2V0X3NpemVzLnNpemVvZl9jaGFyLCAxLCByZXQsIHN5bWJvbF9hZGRyKTsKKyAgKmNhbmNlbF92 YXIgPSBjYW5jZWw7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorb21wZF9nZXRfbWF4 X3Rhc2tfcHJpb3JpdHkgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsCisgIG9tcGRf d29yZF90ICp0YXNrX3ApCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IHRhc2tfcHJp b3JpdHkgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRk ciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250 ZXh0LCBOVUxMLCAiZ29tcF9tYXhfdGFza19wcmlvcml0eV92YXIiLCB0YXNrX3ByaW9yaXR5LAor CSAgICAgdGFza19wcmlvcml0eSwgdGFyZ2V0X3NpemVzLnNpemVvZl9pbnQsIDEsIHJldCwgc3lt Ym9sX2FkZHIpOworICAqdGFza19wID0gdGFza19wcmlvcml0eTsKKyAgcmV0dXJuIHJldDsKK30K Kworb21wZF9yY190CitvbXBkX2dldF9zdGFja3NpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5k bGVfdCAqYWgsIG9tcGRfd29yZF90ICpzdGFja3NpemUpCit7CisgIENIRUNLIChhaCk7CisgIG9t cGRfd29yZF90IHN0YWNrX3ZhciA9IDA7CisgIG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVz c190IHN5bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9W QUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJzdGFja3NpemUiLCBzdGFja192YXIsIHN0YWNrX3Zh ciwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZywgMSwgcmV0LCBzeW1ib2xfYWRkcik7 CisgICpzdGFja3NpemUgPSBzdGFja192YXI7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNf dAorb21wZF9nZXRfZGVidWcgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsIG9tcGRf d29yZF90ICpkZWJ1Z192YXIpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IGRlYnVn ID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB7 T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChhaC0+Y29udGV4dCwg TlVMTCwgImdvbXBfZGVidWdfdmFyIiwgZGVidWcsIGRlYnVnLAorCSAgICAgdGFyZ2V0X3NpemVz LnNpemVvZl9pbnQsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqZGVidWdfdmFyID0gZGVidWc7 CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorb21wZF9nZXRfZGlzcGxheV9hZmZpbml0 eSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKmFmZikKK3sK KyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3QgYWZmaW4gPSAwOworICBvbXBkX3JjX3QgcmV0 OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJ RUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF9kaXNwbGF5X2Fm ZmluaXR5X3ZhciIsIGFmZmluLCBhZmZpbiwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfY2hh ciwgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisgICphZmYgPSBhZmZpbjsKKyAgcmV0dXJuIHJldDsK K30KKworb21wZF9yY190CitvbXBkX2dldF9hZmZpbml0eV9mb3JtYXRfbGVuIChvbXBkX2FkZHJl c3Nfc3BhY2VfaGFuZGxlX3QgKmFoLCBvbXBkX3dvcmRfdCAqbGVuKQoreworICBDSEVDSyAoYWgp OworICBvbXBkX3dvcmRfdCBsZW5fdmFyID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9h ZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAg R0VUX1ZBTFVFIChhaC0+Y29udGV4dCwgTlVMTCwgImdvbXBfYWZmaW5pdHlfZm9ybWF0X2xlbiIs IGxlbl92YXIsIGxlbl92YXIsCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2ludCwgMSwgcmV0 LCBzeW1ib2xfYWRkcik7CisgICpsZW4gPSBsZW5fdmFyOworICByZXR1cm4gcmV0OworfQorCitv bXBkX3JjX3QKK29tcGRfZ2V0X2FmZmluaXR5X2Zvcm1hdCAob21wZF9hZGRyZXNzX3NwYWNlX2hh bmRsZV90ICphaCwgY29uc3QgY2hhciAqKnN0cmluZykKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21w ZF93b3JkX3QgbGVuID0gMTAwOworICBvbXBkX3JjX3QgcmV0OworICBjaGFyICp0ZW1wX3N0cjsK KyAgb21wZF93b3JkX3QgYWRkcjsKKyAgcmV0ID0gY2FsbGJhY2tzLT5hbGxvY19tZW1vcnkgKGxl biArIDEsICh2b2lkICoqKSAmdGVtcF9zdHIpOworICB0ZW1wX3N0cltsZW5dID0gJ1wwJzsKKyAg b21wZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAw fTsKKyAgcmV0ID0gY2FsbGJhY2tzLT5zeW1ib2xfYWRkcl9sb29rdXAgKGFoLT5jb250ZXh0LCBO VUxMLAorCQkJCSAgICAgICAiZ29tcF9hZmZpbml0eV9mb3JtYXRfdmFyIiwgJnN5bWJvbF9hZGRy LAorCQkJCSAgICAgICBOVUxMKTsKKyAgQ0hFQ0tfUkVUIChyZXQpOworICByZXQgPSBjYWxsYmFj a3MtPnJlYWRfbWVtb3J5IChhaC0+Y29udGV4dCwgTlVMTCwgJnN5bWJvbF9hZGRyLAorCQkJCXRh cmdldF9zaXplcy5zaXplb2ZfcG9pbnRlciwgJmFkZHIpOworICBDSEVDS19SRVQgKHJldCk7Cisg IHN5bWJvbF9hZGRyLmFkZHJlc3MgPSBhZGRyOworICByZXQgPSBjYWxsYmFja3MtPnJlYWRfc3Ry aW5nIChhaC0+Y29udGV4dCwgTlVMTCwgJnN5bWJvbF9hZGRyLCBsZW4sCisJCQkJKHZvaWQgKikg dGVtcF9zdHIpOworICBDSEVDS19SRVQgKHJldCk7CisgIHJldCA9IGNhbGxiYWNrcy0+ZGV2aWNl X3RvX2hvc3QgKGFoLT5jb250ZXh0LCAmdGVtcF9zdHIsCisJCQkJICAgdGFyZ2V0X3NpemVzLnNp emVvZl9jaGFyLCBsZW4sICZ0ZW1wX3N0cik7CisgICpzdHJpbmcgPSB0ZW1wX3N0cjsKKyAgcmV0 dXJuIHJldDsKK30KKworb21wZF9yY190CitvbXBkX2dldF93YWl0X3BvbGljeSAob21wZF9hZGRy ZXNzX3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKndhaXRfcG9saWN5KQoreworICBD SEVDSyAoYWgpOworICBvbXBkX3dvcmRfdCB3YWl0X3AgPSAwOworICBvbXBkX3JjX3QgcmV0Owor ICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQs IDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAid2FpdF9wb2xpY3kiLCB3YWl0 X3AsIHdhaXRfcCwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfaW50LCAxLCByZXQsIHN5bWJv bF9hZGRyKTsKKyAgKndhaXRfcG9saWN5ID0gd2FpdF9wOworICByZXR1cm4gcmV0OworfQorCitv bXBkX3JjX3QKK29tcGRfZ2V0X251bV90ZWFtcyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90 ICphaCwgb21wZF93b3JkX3QgKm51bV90ZWFtcykKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93 b3JkX3QgbnVtX3QgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1i b2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFo LT5jb250ZXh0LCBOVUxMLCAiZ29tcF9udW1fdGVhbXNfdmFyIiwgbnVtX3QsIG51bV90LAorCSAg ICAgdGFyZ2V0X3NpemVzLnNpemVvZl9pbnQsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqbnVt X3RlYW1zID0gbnVtX3Q7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorb21wZF9nZXRf dGVhbXNfdGhyZWFkX2xpbWl0IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLAorICBv bXBkX3dvcmRfdCAqdGhyZWFkX2xpbWl0KQoreworICBDSEVDSyAoYWgpOworICBvbXBkX3dvcmRf dCB0aHJfbGltID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9s X2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChhaC0+ Y29udGV4dCwgTlVMTCwgImdvbXBfdGVhbXNfdGhyZWFkX2xpbWl0X3ZhciIsIHRocl9saW0sIHRo cl9saW0sCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2ludCwgMSwgcmV0LCBzeW1ib2xfYWRk cik7CisgICp0aHJlYWRfbGltaXQgPSB0aHJfbGltOworICByZXR1cm4gcmV0OworfQorCitvbXBk X3JjX3QKK29tcGRfZ2V0X3NwaW5fY291bnQgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAq YWgsIG9tcGRfd29yZF90ICpzcGluX2NvdW50KQoreworICBDSEVDSyAoYWgpOworICBvbXBkX3dv cmRfdCBzcGlucyA9IDA7CisgIG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJv bF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgt PmNvbnRleHQsIE5VTEwsICJnb21wX3NwaW5fY291bnRfdmFyIiwgc3BpbnMsIHNwaW5zLAorCSAg ICAgdGFyZ2V0X3NpemVzLnNpemVvZl9sb25nX2xvbmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOwor ICAqc3Bpbl9jb3VudCA9IHNwaW5zOworICByZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK29t cGRfZ2V0X2F2YWlsYWJsZV9jcHVzIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLCBv bXBkX3dvcmRfdCAqcHJvY3MpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IGNwdXMg PSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtP TVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBO VUxMLCAiZ29tcF9hdmFpbGFibGVfY3B1cyIsIGNwdXMsIGNwdXMsCisJICAgICB0YXJnZXRfc2l6 ZXMuc2l6ZW9mX2xvbmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqcHJvY3MgPSBjcHVzOwor ICByZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK29tcGRfZ2V0X3Rocm90dGxlZF9zcGluX2Nv dW50IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLAorICBvbXBkX3dvcmRfdCAqdGhy b3QpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IHRlbXAgPSAwOworICBvbXBkX3Jj X3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5T UEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF90aHJv dHRsZWRfc3Bpbl9jb3VudF92YXIiLCB0ZW1wLCB0ZW1wLAorCSAgICAgdGFyZ2V0X3NpemVzLnNp emVvZl9sb25nX2xvbmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqdGhyb3QgPSB0ZW1wOwor ICByZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK29tcGRfZ2V0X21hbmFnZWRfdGhyZWFkcyAo b21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKm1hbl90aCkKK3sK KyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3QgdGVtcCA9IDA7CisgIG9tcGRfcmNfdCByZXQ7 CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklF RCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJnb21wX21hbmFnZWRfdGhy ZWFkcyIsIHRlbXAsIHRlbXAsCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2xvbmcsIDEsIHJl dCwgc3ltYm9sX2FkZHIpOworICAqbWFuX3RoID0gdGVtcDsKKyAgcmV0dXJuIHJldDsKK30KKwor LyogRW5kIG9mIGdsb2JhbCBJQ1ZzIGZ1bmN0aW9ucy4gICovCisKK29tcGRfcmNfdAorZ2V0X3Np emVzIChvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpjb250ZXh0KQoreworICBpZiAoY29u dGV4dCA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKworICBzdGF0aWMg Ym9vbCBpbml0ZWQgPSBmYWxzZTsKKyAgc3RhdGljIG9tcGRfcmNfdCByZXQ7CisKKyAgaWYgKGlu aXRlZCkKKyAgICByZXR1cm4gcmV0OworCisgIHJldCA9IGNhbGxiYWNrcy0+c2l6ZW9mX3R5cGUg KGNvbnRleHQsICZ0YXJnZXRfc2l6ZXMpOworICBpZiAocmV0ICE9IG9tcGRfcmNfb2spCisgICAg cmV0dXJuIHJldDsKKworICBpbml0ZWQgPSB0cnVlOworICByZXR1cm4gcmV0OworfQpkaWZmIC0t Z2l0IGEvbGliZ29tcC9vbXBkLWhlbHBlci5oIGIvbGliZ29tcC9vbXBkLWhlbHBlci5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNzAwYjA5ZTZjOQotLS0gL2Rldi9u dWxsCisrKyBiL2xpYmdvbXAvb21wZC1oZWxwZXIuaApAQCAtMCwwICsxLDE4OCBAQAorLyogQ29w eXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29udHJp YnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29tPi4KKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkgUHJvY2Vzc2lu ZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91 ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisg ICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgorICAgVW5k ZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFs CisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhj ZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhlIEdDQyBSdW50 aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAgc2VlIHRo ZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5v dCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisvKiBUaGlz IGZpbGUgY29udGFpbnMgZGF0YSB0eXBlcyBhbmQgZGVjbGFyYXRpb25zIG9mIGZ1bmN0aW9ucyB0 aGF0IGFyZSBub3QKKyAgIHByb3ZpZGVkIGJ5IHRoZSBib29rIGJ1dCB3ZSBmaW5kIHRoZW0gbmVj ZXNzYXJ5LiAgKi8KKworI2lmbmRlZiBfT01QRF9IRUxQRVJfSAorI2RlZmluZSBfT01QRF9IRUxQ RVJfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpbmNs dWRlICJvbXAtdG9vbHMuaCIKKyNpbmNsdWRlICJvbXBkLXR5cGVzLmgiCisjaW5jbHVkZSA8c3Rk aW8uaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRl IDxzdGRib29sLmg+CisKKyNkZWZpbmUgc3RyaW5naXplKHgpIHN0cmluZ2l6ZTEoeCkKKyNkZWZp bmUgc3RyaW5naXplMSh4KSAjeAorCisjZGVmaW5lIFZFUlNJT04gMjAyMDExCisKK2V4dGVybiBj b25zdCBvbXBkX2NhbGxiYWNrc190ICpjYWxsYmFja3M7CitleHRlcm4gX19VSU5UNjRfVFlQRV9f IGdvbXBkX3N0YXRlOworZXh0ZXJuIG9tcGRfZGV2aWNlX3R5cGVfc2l6ZXNfdCB0YXJnZXRfc2l6 ZXM7CisKK3R5cGVkZWYgc3RydWN0IF9vbXBkX2FzcGFjZV9oYW5kbGUKK3sKKyAgb21wZF9hZGRy ZXNzX3NwYWNlX2NvbnRleHRfdCAqY29udGV4dDsKKyAgb21wZF9kZXZpY2VfdCBraW5kOworfSBv bXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3Q7CisKK3R5cGVkZWYgc3RydWN0IF9vbXBkX3RocmVh ZF9oYW5kbGUKK3sKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaDsKKyAgb21wZF90 aHJlYWRfY29udGV4dF90ICp0aHJlYWRfY29udGV4dDsKKyAgb21wZF9hZGRyZXNzX3QgdGg7Cit9 IG9tcGRfdGhyZWFkX2hhbmRsZV90OworCit0eXBlZGVmIHN0cnVjdCBfb21wZF9wYXJhbGxlbF9o YW5kbGUKK3sKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaDsKKyAgb21wZF9hZGRy ZXNzX3QgdGg7Cit9IG9tcGRfcGFyYWxsZWxfaGFuZGxlX3Q7CisKK3R5cGVkZWYgc3RydWN0IF9v bXBkX3Rhc2tfaGFuZGxlCit7CisgIG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWg7Cisg IG9tcGRfYWRkcmVzc190IHRoOworfSBvbXBkX3Rhc2tfaGFuZGxlX3Q7CisKKyNkZWZpbmUgQ0hF Q0tfUkVUKHJldCkgXAorIGRvIHsgXAorICAgaWYgKHJldCAhPSBvbXBkX3JjX29rKSBcCisgICAg IHJldHVybiByZXQ7IFwKKyB9IHdoaWxlICgwKQorCisjZGVmaW5lIEdFVF9WQUxVRShjb250ZXh0 LCB0aHJlYWRfY29udGV4dCwgbmFtZSwgb3V0cHV0LCBkaXN0X2J1Ziwgc2l6ZSwgXAorICBjb3Vu dCwgcmV0LCBzeW1ib2xfYWRkcikgXAorICBkbyB7IFwKKyAgICByZXQgPSBjYWxsYmFja3MtPnN5 bWJvbF9hZGRyX2xvb2t1cCAoY29udGV4dCwgdGhyZWFkX2NvbnRleHQsIG5hbWUsIFwKKwkJCQkJ ICZzeW1ib2xfYWRkciwgTlVMTCk7IFwKKyAgICBDSEVDS19SRVQgKHJldCk7IFwKKyAgICByZXQg PSBjYWxsYmFja3MtPnJlYWRfbWVtb3J5IChjb250ZXh0LCB0aHJlYWRfY29udGV4dCwgJnN5bWJv bF9hZGRyLCBzaXplLCBcCisJCQkJICAmZGlzdF9idWYpOyBcCisgICAgQ0hFQ0tfUkVUIChyZXQp OyBcCisgICAgcmV0ID0gY2FsbGJhY2tzLT5kZXZpY2VfdG9faG9zdCAoY29udGV4dCwgJmRpc3Rf YnVmLCBzaXplLCBjb3VudCwgJm91dHB1dCk7XAorICAgIENIRUNLX1JFVCAocmV0KTsgXAorICB9 IHdoaWxlICgwKQorCisjZGVmaW5lIENIRUNLKGFoKSBcCisgIGRvIHsgICBcCisgICAgaWYgKGFo ID09IE5VTEwgfHwgYWgtPmNvbnRleHQgPT0gTlVMTCkgXAorICAgICAgcmV0dXJuIG9tcGRfcmNf c3RhbGVfaGFuZGxlOyBcCisgICAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKSBcCisgICAgICByZXR1 cm4gb21wZF9yY19jYWxsYmFja19lcnJvcjsgXAorICB9IHdoaWxlICgwKQorCisvKiAodmFyX25h bWUsIHN0cmluZ19uYW1lLCBzY29wZSkuICAqLworI2RlZmluZSBGT1JFQUNIX09NUERfSUNWKG9t cGRfaWN2KSBcCisgIG9tcGRfaWN2IChudGhyZWFkX3ZhciwgIm50aHJlYWQgdmFyIiwgb21wZF9z Y29wZV90aHJlYWQpIFwKKyAgb21wZF9pY3YgKHRocmVhZF9saW1pdF92YXIsICJ0aHJlYWQgbGlt aXQgdmFyIiwgb21wZF9zY29wZV90YXNrKSBcCisgIG9tcGRfaWN2IChydW5fc2NoZWRfdmFyLCAi cnVuIHNjaGVkIGxpbWl0IHZhciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBvbXBkX2ljdiAocnVu X3NjaGVkX2NodW5rX3NpemUsICJydW4gc2NoZWQgY2h1bmsgc2l6ZSB2YXIiLCBvbXBkX3Njb3Bl X3Rhc2spIFwKKyAgb21wZF9pY3YgKGRlZmF1bHRfZGV2aWNlX3ZhciwgImRlZmF1bHQgZGV2aWNl IHZhciIsIG9tcGRfc2NvcGVfdGhyZWFkKSBcCisgIG9tcGRfaWN2IChkeW5fdmFyLCAiZHluYW1p YyB2YXIiLCBvbXBkX3Njb3BlX3RocmVhZCkgXAorICBvbXBkX2ljdiAobWF4X2FjdGl2ZV9sZXZl bHNfdmFyLCAibWF4IGFjdGl2ZSBsZXZlbCB2YXIiLCBvbXBkX3Njb3BlX3Rhc2spIFwKKyAgb21w ZF9pY3YgKGJpbmRfdmFyLCAicHJvYyBiaW5kIHZhciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBv bXBkX2ljdiAoY2FuY2VsbGF0aW9uX3ZhciwgImNhbmNlbCB2YXIiLCBvbXBkX3Njb3BlX2FkZHJl c3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKG1heF90YXNrX3ByaW9yaXR5X3ZhciwgIm1heCB0YXNr IHByaW9yaXR5IHZhciIsIFwKKwkgICAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBcCisgIG9t cGRfaWN2IChzdGFja3NpemVfdmFyLCAic3RhY2sgc2l6ZSB2YXIiLCBvbXBkX3Njb3BlX2FkZHJl c3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKGRlYnVnX3ZhciwgImRlYnVnIHZhciIsIG9tcGRfc2Nv cGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAoZGlzcGxheV9hZmZpbml0eV92YXIsICJk aXNwbGF5IGFmZmluaXR5IHZhciIsIFwKKwkgICAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBc CisgIG9tcGRfaWN2IChhZmZpbml0eV9mb3JtYXRfdmFyLCAiYWZmaW5pdHkgZm9ybWF0IHZhciIs IFwKKwkgICAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBcCisgIG9tcGRfaWN2IChhZmZpbml0 eV9mb3JtYXRfbGVuX3ZhciwgImFmZmluaXR5IGZvcm1hdCBsZW4gdmFyIiwgXAorCSAgICBvbXBk X3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKHdhaXRfcG9saWN5X3ZhciwgIndh aXQgcG9saWN5IHZhciIsIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAo bnVtX3RlYW1zX3ZhciwgIm51bSB0ZWFtcyB2YXIiLCBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2Up IFwKKyAgb21wZF9pY3YgKHRlYW1zX3RocmVhZF9saW1pdF92YXIsICJ0ZWFtcyB0aHJlYWQgbGlt aXQgdmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3Yg KHNwaW5fY291bnRfdmFyLCAic3BpbiBjb3VudCB2YXIiLCBvbXBkX3Njb3BlX2FkZHJlc3Nfc3Bh Y2UpIFwKKyAgb21wZF9pY3YgKG51bV9wcm9jX3ZhciwgIm51bSBwcm9jIHZhciIsIG9tcGRfc2Nv cGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAodGhyb3R0bGVkX3NwaW5fY291bnRfdmFy LCAidGhyb3R0bGVkIHNwaW4gY291bnQgdmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nf c3BhY2UpIFwKKyAgb21wZF9pY3YgKG1hbmFnZWRfdGhyZWFkc192YXIsICJtYW5hZ2VkIHRocmVh ZHMgdmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3Yg KHRocmVhZF9udW1fdmFyLCAidGhyZWFkIG51bSB2YXIiLCBvbXBkX3Njb3BlX3RocmVhZCkgXAor ICBvbXBkX2ljdiAoZmluYWxfdGFza192YXIsICJmaW5hbCB0YXNrIHZhciIsIG9tcGRfc2NvcGVf dGFzaykgXAorICBvbXBkX2ljdiAoaW1wbGljaXRfdGFza192YXIsICJpbXBsaWNpdCB0YXNrIHZh ciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBvbXBkX2ljdiAodGVhbV9zaXplX3ZhciwgInRlYW0g c2l6ZSB2YXIiLCBvbXBkX3Njb3BlX3BhcmFsbGVsKQorCitlbnVtIG9tcGRfaWN2Cit7CisgIG9t cGRfaWN2X3VuZGVmaW5lZF92YXIgPSAwLAorICAjZGVmaW5lIG9tcGRfaWN2X2l0ZXJhdG9yKHZh cl9uYW1lLCBzdHJpbmdfbmFtZSwgc2NvcGUpIG9tcGRfaWN2XyMjdmFyX25hbWUsCisgICAgRk9S RUFDSF9PTVBEX0lDViAob21wZF9pY3ZfaXRlcmF0b3IpCisgICN1bmRlZiBvbXBkX2ljdl9pdGVy YXRvcgorICBvbXBkX2xhc3RfaWN2X3ZhcgorfTsKKworb21wZF9yY190IGdldF9zaXplcyAob21w ZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqKTsKKworLyogR2V0IExvY2FsIGludGVybmFsIGNv bnRyb2wgdmFyaWFibGVzLiAgKi8KK29tcGRfcmNfdCBvbXBkX2dldF9udGhyZWFkIChvbXBkX3Ro cmVhZF9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF90aHJl YWRfbGltaXQgKG9tcGRfdGFza19oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNf dCBvbXBkX2dldF9ydW5fc2NoZWQgKG9tcGRfdGFza19oYW5kbGVfdCAqLCAgb21wZF93b3JkX3Qg Kik7CitvbXBkX3JjX3Qgb21wZF9nZXRfcnVuX3NjaGVkX2NodW5rX3NpemUgKG9tcGRfdGFza19o YW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF9kZWZhdWx0X2Rl dmljZSAob21wZF90aHJlYWRfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3Qg b21wZF9nZXRfZHluYW1pYyAob21wZF90aHJlYWRfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7 CitvbXBkX3JjX3Qgb21wZF9nZXRfbWF4X2FjdGl2ZV9sZXZlbHMgKG9tcGRfdGFza19oYW5kbGVf dCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF9wcm9jX2JpbmQgKG9tcGRf dGFza19oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2lzX2ZpbmFs IChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3Qgb21wZF9p c19pbXBsaWNpdCAob21wZF90YXNrX2hhbmRsZV90ICosIG9tcGRfd29yZF90ICopOworb21wZF9y Y190IG9tcGRfZ2V0X3RlYW1fc2l6ZSAob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqLCBvbXBkX3dv cmRfdCAqKTsKKworLyogR2V0IEdsb2JhbCBJQ1ZzLiAgKi8KK29tcGRfcmNfdCBvbXBkX2dldF9j YW5jZWxsYXRpb24gKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAq KTsKK29tcGRfcmNfdCBvbXBkX2dldF9tYXhfdGFza19wcmlvcml0eSAob21wZF9hZGRyZXNzX3Nw YWNlX2hhbmRsZV90ICosCisgIAkJCQkgICAgICBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBv bXBkX2dldF9zdGFja3NpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dv cmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF9kZWJ1ZyAob21wZF9hZGRyZXNzX3NwYWNlX2hh bmRsZV90ICosIG9tcGRfd29yZF90ICopOworb21wZF9yY190IG9tcGRfZ2V0X2Rpc3BsYXlfYWZm aW5pdHkgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLAorCQkJCSAgICAgb21wZF93b3Jk X3QgKik7CitvbXBkX3JjX3Qgb21wZF9nZXRfYWZmaW5pdHlfZm9ybWF0IChvbXBkX2FkZHJlc3Nf c3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICAgY29uc3QgY2hhciAqKik7CitvbXBkX3JjX3Qgb21w ZF9nZXRfYWZmaW5pdHlfZm9ybWF0X2xlbiAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICos CisJCQkJCW9tcGRfd29yZF90ICopOworb21wZF9yY190IG9tcGRfZ2V0X3dhaXRfcG9saWN5IChv bXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3Qg b21wZF9nZXRfbnVtX3RlYW1zIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwgb21wZF93 b3JkX3QgKik7CitvbXBkX3JjX3Qgb21wZF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0IChvbXBkX2Fk ZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICAgICAgb21wZF93b3JkX3QgKik7CitvbXBk X3JjX3Qgb21wZF9nZXRfc3Bpbl9jb3VudCAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICos IG9tcGRfd29yZF90ICopOworb21wZF9yY190IG9tcGRfZ2V0X2F2YWlsYWJsZV9jcHVzIChvbXBk X2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICBvbXBkX3dvcmRfdCAqKTsKK29tcGRf cmNfdCBvbXBkX2dldF90aHJvdHRsZWRfc3Bpbl9jb3VudCAob21wZF9hZGRyZXNzX3NwYWNlX2hh bmRsZV90ICosCisJCQkJCSBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF9tYW5h Z2VkX3RocmVhZHMgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLAorCQkJCSAgICBvbXBk X3dvcmRfdCAqKTsKKy8qRW5kIG9mIEdsb2JhbCBJQ1ZzLiAgKi8KKworI2lmZGVmIF9fY3BsdXNw bHVzCit9IC8vIGV4dGVybiBDCisjZW5kaWYKKworI2VuZGlmIC8qIF9PTVBEX0hFTFBFUl9IICov CmRpZmYgLS1naXQgYS9saWJnb21wL29tcGQtaWN2LmMgYi9saWJnb21wL29tcGQtaWN2LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlmZjg0N2YyNGIyCi0tLSAvZGV2 L251bGwKKysrIGIvbGliZ29tcC9vbXBkLWljdi5jCkBAIC0wLDAgKzEsMTk0IEBACisvKiBDb3B5 cmlnaHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb250cmli dXRlZCBieSBNb2hhbWVkIEF0ZWYgPG1vaGFtZWRhdGVmMTY5OEBnbWFpbC5jb20+LgorICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNzaW5n IExpYnJhcnkKKyAgIChsaWJnb21wKS4KKyAgIExpYmdvbXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3Vy IG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorICAgTGliZ29tcCBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKKyAg IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MKKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgICBtb3JlIGRldGFpbHMuCisgICBVbmRl ciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwK KyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNl cHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0NDIFJ1bnRp bWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07CisgICBzZWUgdGhl IGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90 LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIFRoaXMg ZmlsZSBjb250YWlucyBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiA1LjUu OCBhbmQgNS41LjkKKyAgaW4gT3Blbk1QIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFj ZSB2NS4xLiAgKi8KKworI2luY2x1ZGUgIm9tcGQtaGVscGVyLmgiCisKK3N0YXRpYyBjb25zdCBj aGFyICpvbXBkX2ljdl9zdHJpbmdbXSA9IHsgInVuZGVmaW5lZCIsCisgICNkZWZpbmUgb21wZF9p Y3ZfaXRlcmF0b3IodmFyX25hbWUsIHN0cmluZ19uYW1lLCBzY29wZSkgc3RyaW5nX25hbWUsCisg ICAgRk9SRUFDSF9PTVBEX0lDViAob21wZF9pY3ZfaXRlcmF0b3IpCisgICN1bmRlZiBvbXBkX2lj dl9pdGVyYXRvcgorfTsKKworc3RhdGljIGNvbnN0IG9tcGRfc2NvcGVfdCBvbXBkX2ljdl9zY29w ZVtdID0ge29tcGRfc2NvcGVfZ2xvYmFsLAorICAjZGVmaW5lIG9tcGRfaWN2X2l0ZXJhdG9yKHZh cl9uYW1lLCBzdHJpbmdfbmFtZSwgc2NvcGUpIHNjb3BlLAorICAgIEZPUkVBQ0hfT01QRF9JQ1Yg KG9tcGRfaWN2X2l0ZXJhdG9yKQorICAjdW5kZWYgb21wZF9pY3ZfaXRlcmF0b3IKK307CisKK29t cGRfcmNfdAorb21wZF9lbnVtZXJhdGVfaWN2cyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90 ICphaCwKKyAgb21wZF9pY3ZfaWRfdCBjdXJyZW50LCBvbXBkX2ljdl9pZF90ICpuZXh0X2lkLCBj b25zdCBjaGFyICoqbmV4dF9pY3ZfbmFtZSwKKyAgb21wZF9zY29wZV90ICpuZXh0X3Njb3BlLCBp bnQgKm1vcmUpCit7CisgIGlmIChhaCA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxl X2hhbmRsZTsKKyAgaWYgKGN1cnJlbnQgKyAxID49IG9tcGRfbGFzdF9pY3ZfdmFyIHx8IG5leHRf aWQgPT0gTlVMTAorICAgIHx8IG5leHRfaWN2X25hbWUgPT0gTlVMTCB8fCBuZXh0X3Njb3BlID09 IE5VTEwgfHwgbW9yZSA9PSBOVUxMKQorICAgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0Owor ICBpZiAoY2FsbGJhY2tzID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfY2FsbGJhY2tfZXJy b3I7CisgICpuZXh0X2lkID0gY3VycmVudCArIDE7CisgIGNoYXIgKnRlbXBfbmFtZSA9IE5VTEw7 CisgIG9tcGRfcmNfdCByZXQKKyAgICA9IGNhbGxiYWNrcy0+YWxsb2NfbWVtb3J5IChzdHJsZW4g KG9tcGRfaWN2X3N0cmluZ1sqbmV4dF9pZF0pICsgMSwKKwkJCSAgICAgICAodm9pZCAqKikgJnRl bXBfbmFtZSk7CisgIENIRUNLX1JFVCAocmV0KTsKKyAgc3RyY3B5ICh0ZW1wX25hbWUsIG9tcGRf aWN2X3N0cmluZ1sqbmV4dF9pZF0pOworICAqbmV4dF9pY3ZfbmFtZSA9IHRlbXBfbmFtZTsKKyAg Km5leHRfc2NvcGUgPSBvbXBkX2ljdl9zY29wZVsqbmV4dF9pZF07CisgIGlmICgoKm5leHRfaWQp ICsgMSA8IG9tcGRfbGFzdF9pY3ZfdmFyKQorICAgICptb3JlID0gMTsKKyAgZWxzZQorICAgICpt b3JlID0gMDsKKyAgcmV0dXJuIG9tcGRfcmNfb2s7Cit9CisKK29tcGRfcmNfdAorb21wZF9nZXRf aWN2X2Zyb21fc2NvcGUgKHZvaWQgKmhhbmRsZSwgb21wZF9zY29wZV90IHNjb3BlLCBvbXBkX2lj dl9pZF90IGljdl9pZCwKKyAgb21wZF93b3JkX3QgKmljdl92YWx1ZSkKK3sKKyAgaWYgKGhhbmRs ZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKyAgaWYgKGljdl92 YWx1ZSA9PSBOVUxMIHx8ICFpY3ZfaWQgfHwgaWN2X2lkID49IG9tcGRfbGFzdF9pY3ZfdmFyKQor ICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKyAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKQor ICAgIHJldHVybiBvbXBkX3JjX2NhbGxiYWNrX2Vycm9yOworICBvbXBkX2RldmljZV90IGRldmlj ZTsKKyAgc3dpdGNoIChzY29wZSkKKyAgICB7CisgICAgICBjYXNlIG9tcGRfc2NvcGVfYWRkcmVz c19zcGFjZToKKwlkZXZpY2UgPSAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5k bGUpLT5raW5kOworCWJyZWFrOworICAgICAgY2FzZSBvbXBkX3Njb3BlX3RocmVhZDoKKwlkZXZp Y2UgPSAoKG9tcGRfdGhyZWFkX2hhbmRsZV90ICopIGhhbmRsZSktPmFoLT5raW5kOworCWJyZWFr OworICAgICAgY2FzZSBvbXBkX3Njb3BlX3BhcmFsbGVsOgorCWRldmljZSA9ICgob21wZF9wYXJh bGxlbF9oYW5kbGVfdCAqKSBoYW5kbGUpLT5haC0+a2luZDsKKwlicmVhazsKKyAgICAgIGNhc2Ug b21wZF9zY29wZV90YXNrOgorCWRldmljZSA9ICgob21wZF90YXNrX2hhbmRsZV90ICopIGhhbmRs ZSktPmFoLT5raW5kOworCWJyZWFrOworICAgICAgZGVmYXVsdDoKKwlyZXR1cm4gb21wZF9yY19i YWRfaW5wdXQ7CisgICAgfQorICAvKiBOTyBjdWRhIGZvciBub3cuICAqLworICBpZiAoZGV2aWNl ID09IE9NUERfREVWSUNFX0tJTkRfSE9TVCkKKyAgICB7CisgICAgICBzd2l0Y2ggKGljdl9pZCkK Kwl7CisJICBjYXNlIG9tcGRfaWN2X2NhbmNlbGxhdGlvbl92YXI6CisJICAgIHJldHVybgorCSAg ICAgIG9tcGRfZ2V0X2NhbmNlbGxhdGlvbiAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAq KSBoYW5kbGUsCisJCQkJICAgICBpY3ZfdmFsdWUpOworCSAgY2FzZSBvbXBkX2ljdl9tYXhfdGFz a19wcmlvcml0eV92YXI6CisJICAgIHJldHVybiBvbXBkX2dldF9tYXhfdGFza19wcmlvcml0eSAo KG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKQorCQkJCQkgICAgICAgaGFuZGxlLCBpY3Zf dmFsdWUpOworCSAgY2FzZSBvbXBkX2ljdl9zdGFja3NpemVfdmFyOgorCSAgICByZXR1cm4gb21w ZF9nZXRfc3RhY2tzaXplICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopIGhhbmRsZSwK KwkJCQkgICAgICAgaWN2X3ZhbHVlKTsKKwkgIGNhc2Ugb21wZF9pY3ZfZGVidWdfdmFyOgorCSAg ICByZXR1cm4gb21wZF9nZXRfZGVidWcgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKikg aGFuZGxlLAorCQkJCSAgIGljdl92YWx1ZSk7CisJICBjYXNlIG9tcGRfaWN2X2Rpc3BsYXlfYWZm aW5pdHlfdmFyOgorCSAgICByZXR1cm4KKwkgICAgICBvbXBkX2dldF9kaXNwbGF5X2FmZmluaXR5 ICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopIGhhbmRsZSwKKwkJCQkJIGljdl92YWx1 ZSk7CisJICBjYXNlIG9tcGRfaWN2X2FmZmluaXR5X2Zvcm1hdF92YXI6CisJICAgIHJldHVybiBv bXBkX3JjX2luY29tcGF0aWJsZTsKKwkgIGNhc2Ugb21wZF9pY3ZfYWZmaW5pdHlfZm9ybWF0X2xl bl92YXI6CisJICAgIHJldHVybiBvbXBkX2dldF9hZmZpbml0eV9mb3JtYXRfbGVuICgob21wZF9h ZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopCisJCQkJCQkgaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAg IGNhc2Ugb21wZF9pY3Zfd2FpdF9wb2xpY3lfdmFyOgorCSAgICAgcmV0dXJuIG9tcGRfZ2V0X3dh aXRfcG9saWN5ICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopaGFuZGxlLAorCQkJCQkg IGljdl92YWx1ZSk7CisJICAgY2FzZSBvbXBkX2ljdl9udW1fdGVhbXNfdmFyOgorCSAgICAgcmV0 dXJuIG9tcGRfZ2V0X251bV90ZWFtcyAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKWhh bmRsZSwKKwkJCQkJaWN2X3ZhbHVlKTsKKwkgICBjYXNlIG9tcGRfaWN2X3RlYW1zX3RocmVhZF9s aW1pdF92YXI6CisJICAgICByZXR1cm4gb21wZF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0ICgob21w ZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopCisJCQkJCQkgaGFuZGxlLCBpY3ZfdmFsdWUpOwor CSAgIGNhc2Ugb21wZF9pY3Zfc3Bpbl9jb3VudF92YXI6CisJICAgICByZXR1cm4gb21wZF9nZXRf c3Bpbl9jb3VudCAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUsCisJCQkJ CSBpY3ZfdmFsdWUpOworCSAgIGNhc2Ugb21wZF9pY3ZfbnVtX3Byb2NfdmFyOgorCSAgICAgcmV0 dXJuCisJCW9tcGRfZ2V0X2F2YWlsYWJsZV9jcHVzICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICopIGhhbmRsZSwKKwkJCQkJIGljdl92YWx1ZSk7CisJICAgY2FzZSBvbXBkX2ljdl90aHJv dHRsZWRfc3Bpbl9jb3VudF92YXI6CisJICAgICByZXR1cm4KKwkJb21wZF9nZXRfdGhyb3R0bGVk X3NwaW5fY291bnQgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKikKKwkJCQkJICAgICAg IGhhbmRsZSwgaWN2X3ZhbHVlKTsKKwkgICBjYXNlIG9tcGRfaWN2X21hbmFnZWRfdGhyZWFkc192 YXI6CisJICAgICByZXR1cm4KKwkJb21wZF9nZXRfbWFuYWdlZF90aHJlYWRzICgob21wZF9hZGRy ZXNzX3NwYWNlX2hhbmRsZV90ICopCisJCQkJCSAgaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAgZGVm YXVsdDoKKwkgICAgIHJldHVybiBvbXBkX3JjX3Vuc3VwcG9ydGVkOworCSB9CisgICAgfQorICAg IHJldHVybiBvbXBkX3JjX2Vycm9yOworfQorCitvbXBkX3JjX3QKK29tcGRfZ2V0X2ljdl9zdHJp bmdfZnJvbV9zY29wZSAodm9pZCAqaGFuZGxlLCBvbXBkX3Njb3BlX3Qgc2NvcGUsCisgIG9tcGRf aWN2X2lkX3QgaWN2X2lkLCBjb25zdCBjaGFyICoqaWN2X3ZhbHVlKQoreworICBpZiAoaGFuZGxl ID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxlOworICBpZiAoaWN2X3Zh bHVlID09IE5VTEwgfHwgIWljdl9pZCB8fCBpY3ZfaWQgPj0gb21wZF9sYXN0X2ljdl92YXIpCisg ICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworICBpZiAoY2FsbGJhY2tzID09IE5VTEwpCisg ICAgcmV0dXJuIG9tcGRfcmNfY2FsbGJhY2tfZXJyb3I7CisgIG9tcGRfZGV2aWNlX3QgZGV2aWNl OworICBzd2l0Y2ggKHNjb3BlKQorICAgIHsKKyAgICAgIGNhc2Ugb21wZF9zY29wZV9hZGRyZXNz X3NwYWNlOgorCSBkZXZpY2UgPSAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5k bGUpLT5raW5kOworCSBicmVhazsKKyAgICAgIGNhc2Ugb21wZF9zY29wZV90aHJlYWQ6CisJIGRl dmljZSA9ICgob21wZF90aHJlYWRfaGFuZGxlX3QgKikgaGFuZGxlKS0+YWgtPmtpbmQ7CisJIGJy ZWFrOworICAgICAgY2FzZSBvbXBkX3Njb3BlX3BhcmFsbGVsOgorCSBkZXZpY2UgPSAoKG9tcGRf cGFyYWxsZWxfaGFuZGxlX3QgKikgaGFuZGxlKS0+YWgtPmtpbmQ7CisJIGJyZWFrOworICAgICAg Y2FzZSBvbXBkX3Njb3BlX3Rhc2s6CisJIGRldmljZSA9ICgob21wZF90YXNrX2hhbmRsZV90ICop IGhhbmRsZSktPmFoLT5raW5kOworCSBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisJIHJldHVybiBv bXBkX3JjX2JhZF9pbnB1dDsKKyAgICB9CisgIC8qIE5vIGN1ZGEuICAqLworICBpZiAoZGV2aWNl ID09IE9NUERfREVWSUNFX0tJTkRfSE9TVCkKKyAgICB7CisgICAgICBzd2l0Y2ggKGljdl9pZCkK KwkgeworCSAgY2FzZSBvbXBkX2ljdl9hZmZpbml0eV9mb3JtYXRfdmFyOgorCSAgICByZXR1cm4K KwkgICAgICBvbXBkX2dldF9hZmZpbml0eV9mb3JtYXQgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFu ZGxlX3QgKikgaGFuZGxlLAorCQkJCQlpY3ZfdmFsdWUpOworCSAgZGVmYXVsdDoKKwkgICAgcmV0 dXJuIG9tcGRfcmNfdW5zdXBwb3J0ZWQ7CisJIH0KKyAgICB9CisgIHJldHVybiBvbXBkX3JjX2Vy cm9yOworfQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBkLWluaXQuYyBiL2xpYmdvbXAvb21wZC1p bml0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA5ODQwYmQxZGRj Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9vbXBkLWluaXQuYwpAQCAtMCwwICsxLDEzMiBA QAorLyogQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor ICAgQ29udHJpYnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29t Pi4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkg UHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBv ciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhP VVQgQU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxz LgorICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBh ZGRpdGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExp YnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhl IEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOwor ICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVs eS4gIElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwor CisvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBk ZWZpbmVkIGluCisgICBzZWN0aW9uIDUuNS4xLCA1LjUuMi4gICovCisKKyNpbmNsdWRlICJvbXBk LWhlbHBlci5oIgorCisvKiBQZXIgT01QRCBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9u LiAgKi8KKworX19VSU5UNjRfVFlQRV9fIGdvbXBkX3N0YXRlOworY29uc3Qgb21wZF9jYWxsYmFj a3NfdCAqY2FsbGJhY2tzOworCitvbXBkX3JjX3QKK29tcGRfaW5pdGlhbGl6ZSAob21wZF93b3Jk X3QgYXBpX3ZlcnNpb24sCisgIGNvbnN0IG9tcGRfY2FsbGJhY2tzX3QgKmNhbGxiYWNrc190YWJs ZSkKK3sKKyAgaWYgKGNhbGxiYWNrc190YWJsZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3Jj X2JhZF9pbnB1dDsKKworICBvbXBkX3dvcmRfdCB2ZXJzaW9uOworICBvbXBkX3JjX3QgcmV0ID0g b21wZF9nZXRfYXBpX3ZlcnNpb24gKCZ2ZXJzaW9uKTsKKworICBpZiAodmVyc2lvbiAhPSBhcGlf dmVyc2lvbikKKyAgICByZXR1cm4gb21wZF9yY191bnN1cHBvcnRlZDsKKworICBjYWxsYmFja3Mg PSBjYWxsYmFja3NfdGFibGU7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorb21wZF9n ZXRfYXBpX3ZlcnNpb24gKG9tcGRfd29yZF90ICp2ZXJzaW9uKQoreworICBpZiAodmVyc2lvbiA9 PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKworICAqdmVyc2lvbiA9IFZF UlNJT047CisgIHJldHVybiBvbXBkX3JjX29rOworfQorCitvbXBkX3JjX3QKK29tcGRfZ2V0X3Zl cnNpb25fc3RyaW5nIChjb25zdCBjaGFyICoqc3RyaW5nKQoreworICBpZiAoc3RyaW5nID09IE5V TEwpCisgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworICBzdGF0aWMgY29uc3QgY2hhciB0 bXBfc3RyaW5nW10KKyAgICA9ICJHTlUgT3Blbk1QIHJ1bnRpbWUgaW1wbGVtZW50aW5nIE9NUEQg dmVyc2lvbiAiCisgICAgICBzdHJpbmdpemUgKFZFUlNJT04pICIgRGVidWdnaW5nIGxpYnJhcnki OworICAqc3RyaW5nID0gdG1wX3N0cmluZzsKKyAgcmV0dXJuIG9tcGRfcmNfb2s7Cit9CisKK29t cGRfcmNfdAorb21wZF9maW5hbGl6ZSAoKQoreworICByZXR1cm4gb21wZF9yY19vazsKK30KKwor LyogUGVyIHByb2Nlc3MgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbi4gICovCisKK29t cGRfcmNfdAorb21wZF9wcm9jZXNzX2luaXRpYWxpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9jb250 ZXh0X3QgKmNvbnRleHQsCisgIG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKmhhbmRsZSkK K3sKKyAgaWYgKGNvbnRleHQgPT0gTlVMTCB8fCBoYW5kbGUgPT0gTlVMTCkKKyAgICByZXR1cm4g b21wZF9yY19iYWRfaW5wdXQ7CisKKyAgb21wZF9yY190IHJldCA9IGdldF9zaXplcyAoY29udGV4 dCk7CisgIGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0OworCisgIC8qIE5h aXZlIHdheSB0byByZWFkIGZyb20gbWVtb3J5LiAgKi8KKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9s X2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChjb250 ZXh0LCBOVUxMLCAiZ29tcGRfc3RhdGUiLCBnb21wZF9zdGF0ZSwgZ29tcGRfc3RhdGUsCisJICAg ICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2xvbmdfbG9uZywgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisK KyAgcmV0ID0gY2FsbGJhY2tzLT5hbGxvY19tZW1vcnkgKHNpemVvZiAob21wZF9hZGRyZXNzX3Nw YWNlX2hhbmRsZV90KSwKKwkJCQkgKHZvaWQgKiopIChoYW5kbGUpKTsKKworICBpZiAocmV0ICE9 IG9tcGRfcmNfb2spCisgICAgcmV0dXJuIHJldDsKKworICBpZiAoaGFuZGxlID09IE5VTEwpCisg ICAgcmV0dXJuIG9tcGRfcmNfZXJyb3I7CisKKyAgKCpoYW5kbGUpLT5jb250ZXh0ID0gY29udGV4 dDsKKyAgKCpoYW5kbGUpLT5raW5kID0gT01QRF9ERVZJQ0VfS0lORF9IT1NUOworICByZXR1cm4g cmV0OworfQorCisvKiBPTVBEIHdpbGwgbm90IHN1cHBvcnQgR1BVcyBmb3Igbm93LiAgKi8KKwor b21wZF9yY190CitvbXBkX2RldmljZV9pbml0aWFsaXplIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFu ZGxlX3QgKnByb2Nlc3NfaGFuZGxlLAorICBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpk ZXZpY2VfY29udGV4dCwgb21wZF9kZXZpY2VfdCBraW5kLAorICBvbXBkX3NpemVfdCBzaXplb2Zf aWQsIHZvaWQgKmlkLAorICBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKipkZXZpY2VfaGFu ZGxlKQorCit7CisgIGlmIChkZXZpY2VfY29udGV4dCA9PSBOVUxMKQorICAgIHJldHVybiBvbXBk X3JjX2JhZF9pbnB1dDsKKworICByZXR1cm4gb21wZF9yY191bnN1cHBvcnRlZDsKK30KKworCitv bXBkX3JjX3QKK29tcGRfcmVsX2FkZHJlc3Nfc3BhY2VfaGFuZGxlIChvbXBkX2FkZHJlc3Nfc3Bh Y2VfaGFuZGxlX3QgKmhhbmRsZSkKK3sKKyAgaWYgKGhhbmRsZSA9PSBOVUxMKQorICAgIHJldHVy biBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKworICBvbXBkX3JjX3QgcmV0ID0gY2FsbGJhY2tzLT5m cmVlX21lbW9yeSAoKHZvaWQgKikgaGFuZGxlKTsKKyAgcmV0dXJuIHJldDsKK30KZGlmZiAtLWdp dCBhL2xpYmdvbXAvb21wZC1zdXBwb3J0LmMgYi9saWJnb21wL29tcGQtc3VwcG9ydC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MTYwMDcxNDg4NgotLS0gL2Rldi9u dWxsCisrKyBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmMKQEAgLTAsMCArMSwxMjcgQEAKKy8qIENv cHlyaWdodCAoQykgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRy aWJ1dGVkIGJ5IE1vaGFtZWQgQXRlZiA8bW9oYW1lZGF0ZWYxNjk4QGdtYWlsLmNvbT4uCisgICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9mZmxvYWRpbmcgYW5kIE11bHRpIFByb2Nlc3Np bmcgTGlicmFyeQorICAgKGxpYmdvbXApLgorICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlv dXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisgICBMaWJnb21wIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQor ICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUworICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKyAgIFVu ZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25h bAorICAgcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4 Y2VwdGlvbiwgdmVyc2lvbgorICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbi4KKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVu dGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0 aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBu b3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1 ZGUgIm9tcGQtc3VwcG9ydC5oIgorCisjZGVmaW5lIGdvbXBkX2RlY2xhcmVfYWNjZXNzKHQsIG0p IF9fVUlOVDY0X1RZUEVfXyBnb21wZF9hY2Nlc3NfIyN0IyNfIyNtOworICBHT01QRF9GT1JFQUNI X0FDQ0VTUyAoZ29tcGRfZGVjbGFyZV9hY2Nlc3MpCisjdW5kZWYgZ29tcGRfZGVjbGFyZV9hY2Nl c3MKKworI2RlZmluZSBnb21wZF9kZWNsYXJlX3NpemVvZl9tZW1iZXJzKHQsIG0pIFwKKyAgX19V SU5UNjRfVFlQRV9fIGdvbXBkX3NpemVvZl8jI3QjI18jI207CisgIEdPTVBEX0ZPUkVBQ0hfQUND RVNTIChnb21wZF9kZWNsYXJlX3NpemVvZl9tZW1iZXJzKQorI3VuZGVmIGdvbXBkX2RlY2xhcmVf c2l6ZW9mX21lbWJlcnMKKworI2RlZmluZSBnb21wZF9kZWNsYXJlX3NpemVzKHQpIF9fVUlOVDY0 X1RZUEVfXyBnb21wZF9zaXplb2ZfIyN0OworICBHT01QRF9TSVpFUyAoZ29tcGRfZGVjbGFyZV9z aXplcykKKyN1bmRlZiBnb21wZF9kZWNsYXJlX3NpemVzCisKK2NvbnN0IGNoYXIgKipvbXBkX2Rs bF9sb2NhdGlvbnMgPSBOVUxMOworX19VSU5UNjRfVFlQRV9fIGdvbXBkX3N0YXRlOworCit2b2lk Citnb21wZF9sb2FkICgpCit7CisgIGNvbnN0IGNoYXIgKm9tcGRfZW52X3ZhciA9IGdldGVudiAo Ik9NUF9ERUJVRyIpOworICBpZiAob21wZF9lbnZfdmFyID09IE5VTEwgfHwgc3RyY21wIChvbXBk X2Vudl92YXIsICJlbmFibGVkIikpCisgICAgcmV0dXJuOworCisgIC8qIEdldCB0aGUgb2Zmc2V0 IG9mIHRoZSBzdHJ1Y3QgbWVtYmVycy4gICovCisgICNkZWZpbmUgZ29tcGRfaW5pdF9hY2Nlc3Mo dCwgbSkgIFwKKyAgICBnb21wZF9hY2Nlc3NfIyN0IyNfIyNtID0gKF9fVUlOVDY0X1RZUEVfXykg JiAoKChzdHJ1Y3QgdCAqKSBOVUxMKS0+bSk7CisgICAgR09NUERfRk9SRUFDSF9BQ0NFU1MgKGdv bXBkX2luaXRfYWNjZXNzKTsKKyAgI3VuZGVmIGdvbXBkX2luaXRfYWNjZXNzCisKKyAgLyogR2V0 IHNpemVvZiBtZW1iZXJzLiAgKi8KKworICAjZGVmaW5lIGdvbXBkX2luaXRfc2l6ZW9mX21lbWJl cnModCwgbSkgXAorICAgIGdvbXBkX3NpemVvZl8jI3QjI18jI20gPSBzaXplb2YgKCgoc3RydWN0 IHQgKikgTlVMTCktPm0pOworICAgIEdPTVBEX0ZPUkVBQ0hfQUNDRVNTIChnb21wZF9pbml0X3Np emVvZl9tZW1iZXJzKTsKKyAgI3VuZGVmIGdvbXBkX2RlY2xhcmVfc2l6ZW9mX21lbWJlcnMKKwor ICAjZGVmaW5lIGdvbXBkX2luaXRfc2l6ZXModCkgZ29tcGRfc2l6ZW9mXyMjdCA9IHNpemVvZiAo c3RydWN0IHQpOworICAgIEdPTVBEX1NJWkVTIChnb21wZF9pbml0X3NpemVzKQorICAjdW5kZWYg Z29tcGRfaW5pdF9zaXplcworCisgIGdvbXBfZGVidWcgKDIsICJPTVAgT01QRCBhY3RpdmVcbiIp OworICBzdGF0aWMgY29uc3QgY2hhciAqb21wZF9kbGxfbG9jYXRpb25zX2FycmF5WzJdCisgICAg PSB7ImxpYmdvbXBkIiBTT05BTUVfU1VGRklYICgxKSAsIE5VTEx9OworICBnb21wZF9zdGF0ZSB8 PSBPTVBEX0VOQUJMRUQ7CisgIG9tcGRfZGxsX2xvY2F0aW9ucyA9ICZvbXBkX2RsbF9sb2NhdGlv bnNfYXJyYXlbMF07CisgIG9tcGRfZGxsX2xvY2F0aW9uc192YWxpZCAoKTsKK30KKworI2lmbmRl ZiBfX0VMRl9fCisvKiBEdW1teSBmdW5jdGlvbnMuIHRoZXkgc2hvdWQgbm90IGJlIG9wdGltaXpl ZC4gICovCisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKK29tcGRfZGxsX2xvY2F0 aW9uc192YWxpZCAoKQoreworICBhc20gKCIiKTsKK30KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgo bm9pbmxpbmUpKQorb21wZF9icF9wYXJhbGxlbF9iZWdpbiAoKQoreworICBhc20gKCIiKTsKK30K Kwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorb21wZF9icF9wYXJhbGxlbF9lbmQg KCkKK3sKKyAgYXNtICgiIik7Cit9CisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkK K29tcGRfYnBfdGFza19iZWdpbiAoKQoreworICBhc20gKCIiKTsKK30KKwordm9pZCBfX2F0dHJp YnV0ZV9fICgobm9pbmxpbmUpKQorb21wZF9icF90YXNrX2VuZCAoKQoreworICBhc20gKCIiKTsK K30KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorb21wZF9icF90aHJlYWRfYmVn aW4gKCkKK3sKKyAgYXNtICgiIik7Cit9CisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5l KSkKK29tcGRfYnBfdGhyZWFkX2VuZCAoKQoreworICBhc20gKCIiKTsKK30KKwordm9pZCBfX2F0 dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorb21wZF9icF9kZXZpY2VfYmVnaW4gKCkKK3sKKyAgYXNt ICgiIik7Cit9CisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKK29tcGRfYnBfZGV2 aWNlX2VuZCAoKQoreworICBhc20gKCIiKTsKK30KKyNlbmRpZiAvKiBfX0VMRl9fKi8KZGlmZiAt LWdpdCBhL2xpYmdvbXAvb21wZC1zdXBwb3J0LmggYi9saWJnb21wL29tcGQtc3VwcG9ydC5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kNjBmYzU1ODRlOQotLS0gL2Rl di9udWxsCisrKyBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmgKQEAgLTAsMCArMSw1NyBAQAorLyog Q29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29u dHJpYnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29tPi4KKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkgUHJvY2Vz c2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQg eW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5Z CisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgorICAg VW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlv bmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkg RXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhlIEdDQyBS dW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAgc2Vl IHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElm IG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisvKlRo aXMgZmlsZSBjb250YWlucyB0aGUgcnVudGltZSBzdXBwb3J0IGZvciBnb21wZC4gICovCisKKyNp Zm5kZWYgX09NUERfU1VQUE9SVF9ICisjZGVmaW5lIF9PTVBEX1NVUFBPUlRfSAorCisjaW5jbHVk ZSAib21wLXRvb2xzLmgiCisjaW5jbHVkZSAicGx1Z2luLXN1ZmZpeC5oIgorI2luY2x1ZGUgImxp YmdvbXAuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCit2b2lkIGdvbXBkX2xvYWQgKCk7 CitleHRlcm4gX19VSU5UNjRfVFlQRV9fIGdvbXBkX3N0YXRlOworCisjZGVmaW5lIE9NUERfRU5B QkxFRCAweDEKKworI2RlZmluZSBHT01QRF9GT1JFQUNIX0FDQ0VTUyhnb21wZF9hY2Nlc3MpIFwK KyAgIGdvbXBkX2FjY2VzcyAoZ29tcF90YXNrX2ljdiwgbnRocmVhZHNfdmFyKSBcCisgICBnb21w ZF9hY2Nlc3MgKGdvbXBfdGFza19pY3YsIHJ1bl9zY2hlZF92YXIpIFwKKyAgIGdvbXBkX2FjY2Vz cyAoZ29tcF90YXNrX2ljdiwgcnVuX3NjaGVkX2NodW5rX3NpemUpIFwKKyAgIGdvbXBkX2FjY2Vz cyAoZ29tcF90YXNrX2ljdiwgZGVmYXVsdF9kZXZpY2VfdmFyKSBcCisgICBnb21wZF9hY2Nlc3Mg KGdvbXBfdGFza19pY3YsIHRocmVhZF9saW1pdF92YXIpIFwKKyAgIGdvbXBkX2FjY2VzcyAoZ29t cF90YXNrX2ljdiwgZHluX3ZhcikgXAorICAgZ29tcGRfYWNjZXNzIChnb21wX3Rhc2tfaWN2LCBi aW5kX3ZhcikgXAorICAgZ29tcGRfYWNjZXNzIChnb21wX3RocmVhZCwgdGFzaykgXAorICAgZ29t cGRfYWNjZXNzIChnb21wX3RocmVhZF9wb29sLCB0aHJlYWRzKSBcCisgICBnb21wZF9hY2Nlc3Mg KGdvbXBfdGhyZWFkLCB0cykgXAorICAgZ29tcGRfYWNjZXNzIChnb21wX3RlYW1fc3RhdGUsIHRl YW1faWQpIFwKKworI2RlZmluZSBHT01QRF9TSVpFUyhnb21wZF9zaXplKSBcCisgICBnb21wZF9z aXplIChnb21wX3RocmVhZCkgXAorICAgZ29tcGRfc2l6ZSAoZ29tcF90YXNrX2ljdikgXAorICAg Z29tcGRfc2l6ZSAoZ29tcF90YXNrKQorCisjZW5kaWYgLyogX09NUERfU1VQUE9SVF9IICovCmRp ZmYgLS1naXQgYS9saWJnb21wL29tcGQtdHlwZXMuaC5pbiBiL2xpYmdvbXAvb21wZC10eXBlcy5o LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNWJmYjJmMzdjZgot LS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvb21wZC10eXBlcy5oLmluCkBAIC0wLDAgKzEsNTQg QEAKKy8qIENvcHlyaWdodCAoQykgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KyAgIENvbnRyaWJ1dGVkIGJ5IE1vaGFtZWQgQXRlZiA8bW9oYW1lZGF0ZWYxNjk4QGdtYWlsLmNv bT4uCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9mZmxvYWRpbmcgYW5kIE11bHRp IFByb2Nlc3NpbmcgTGlicmFyeQorICAgKGxpYmdvbXApLgorICAgTGliZ29tcCBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywg b3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisgICBMaWJnb21wIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRI T1VUIEFOWQorICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUworICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWls cy4KKyAgIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQg YWRkaXRpb25hbAorICAgcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBM aWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRo ZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsK KyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZl bHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K KworLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0eXBlcyBuZWVkZWQgZm9yIE9NUEQgaW1wbGVt ZW50YXRpb24uICAqLworCisjaWZuZGVmIF9PTVBEX1RZUEVTX0gKKyNkZWZpbmUgX09NUERfVFlQ RVNfSAorCisjaWZkZWYgX19jcHVsc3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNkZWZp bmUgT01QRF9UWVBFU19WRVJTSU9OICAgMjAxODA5MDYgLyogWVlZWU1NREQgRm9ybWF0LiAgKi8K KworLyogS2luZHMgb2YgZGV2aWNlIHRocmVhZHMuICAqLworI2RlZmluZSBPTVBEX1RIUkVBRF9J RF9QVEhSRUFEICAgICAgKChvbXBkX3RocmVhZF9pZF90KTApCisjZGVmaW5lIE9NUERfVEhSRUFE X0lEX0xXUCAgICAgICAgICAoKG9tcGRfdGhyZWFkX2lkX3QpMSkKKyNkZWZpbmUgT01QRF9USFJF QURfSURfV0lOVEhSRUFEICAgICgob21wZF90aHJlYWRfaWRfdCkyKQorCisvKiBUaGUgcmFuZ2Ug b2Ygbm9uLXN0YW5kYXJkIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdmFsdWVzLiAgKi8KKyNkZWZp bmUgT01QRF9USFJFQURfSURfTE8gICAgICAgKChvbXBkX3RocmVhZF9pZF90KTEwMDAwMDApCisj ZGVmaW5lIE9NUERfVEhSRUFEX0lEX0hJICAgICAgICgob21wZF90aHJlYWRfaWRfdCkxMTAwMDAw KQorCisvKiBNZW1vcnkgQWNjZXNzIFNlZ21lbnQgZGVmaW5pdGlvbnMgZm9yIEhvc3QgYW5kIFRh cmdldCBEZXZpY2VzLiAgKi8KKyNkZWZpbmUgT01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVEICAgICAg ICAgICAgICgob21wZF9zZWdfdCkwKQorCisvKiBLaW5kcyBvZiBkZXZpY2UgZGV2aWNlIGFkZHJl c3Mgc3BhY2VzLiAgKi8KKyNkZWZpbmUgT01QRF9ERVZJQ0VfS0lORF9IT1NUICAgICAoKG9tcGRf ZGV2aWNlX3QpMSkKKworLyogVGhlIHJhbmdlIG9mIG5vbi1zdGFuZGFyZCBpbXBsZW1lbnRhdGlv biBkZWZpbmVkIHZhbHVlcy4gICovCisjZGVmaW5lIE9NUERfREVWSUNFX0lNUExfTE8gICAgICAg KChvbXBkX2RldmljZV90KTEwMDAwMDApCisjZGVmaW5lIE9NUERfREVWSUNFX0lNUExfSEkgICAg ICAgKChvbXBkX2RldmljZV90KTExMDAwMDApCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfSAvLyBl eHRlcm4gQworI2VuZGlmCisjZW5kaWYgLyogX09NUERfVFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEv bGliZ29tcC90ZWFtLmMgYi9saWJnb21wL3RlYW0uYwppbmRleCBjYjY4NzVkNzBmYS4uMjk5ODRi YWZiYmUgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGVhbS5jCisrKyBiL2xpYmdvbXAvdGVhbS5jCkBA IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAicG9vbC5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgog I2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgIm9tcGQtc3VwcG9ydC5oIgoKICNpZmRlZiBM SUJHT01QX1VTRV9QVEhSRUFEUwogcHRocmVhZF9hdHRyX3QgZ29tcF90aHJlYWRfYXR0cjsKQEAg LTMyMSw2ICszMjIsNyBAQCBnb21wX3RlYW1fc3RhcnQgKHZvaWQgKCpmbikgKHZvaWQgKiksIHZv aWQgKmRhdGEsIHVuc2lnbmVkIG50aHJlYWRzLAogCQkgdW5zaWduZWQgZmxhZ3MsIHN0cnVjdCBn b21wX3RlYW0gKnRlYW0sCiAJCSBzdHJ1Y3QgZ29tcF90YXNrZ3JvdXAgKnRhc2tncm91cCkKIHsK KyAgb21wZF9icF9wYXJhbGxlbF9iZWdpbiAoKTsKICAgc3RydWN0IGdvbXBfdGhyZWFkX3N0YXJ0 X2RhdGEgKnN0YXJ0X2RhdGEgPSBOVUxMOwogICBzdHJ1Y3QgZ29tcF90aHJlYWQgKnRociwgKm50 aHI7CiAgIHN0cnVjdCBnb21wX3Rhc2sgKnRhc2s7CkBAIC0xMDExLDYgKzEwMTMsNyBAQCBnb21w X3RlYW1fZW5kICh2b2lkKQogICAgICAgcG9vbC0+bGFzdF90ZWFtID0gdGVhbTsKICAgICAgIGdv bXBfcmVsZWFzZV90aHJlYWRfcG9vbCAocG9vbCk7CiAgICAgfQorICBvbXBkX2JwX3BhcmFsbGVs X2VuZCAoKTsKIH0KCiAjaWZkZWYgTElCR09NUF9VU0VfUFRIUkVBRFMK --000000000000d6aa8c05da488a94--