From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by sourceware.org (Postfix) with ESMTPS id 58EEF3858C53 for ; Wed, 16 Mar 2022 03:48:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 58EEF3858C53 Received: by mail-wr1-x42b.google.com with SMTP id j17so1243354wrc.0 for ; Tue, 15 Mar 2022 20:48:33 -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=ACYgH35dOhqPMsTiUR1dmmjC2bBIu59I0WoGMIPEZyQ=; b=S4RfIHe+QhA7UlZPCXU4pYWfH09G0rNG7ZqgC5nFKNmiHDbPKyFUaWReymQ/ik3HOF xEHz2EmJN4g+JFHhi8bzLSDJHm1Akbwkd/hqplDSG+PYVbEPFQ76gT+fBheYrzczNNC/ aEC/bSUXB564uswyIKusVxsH+60oUlTzxNamp60Cs3GeLI4tdR4JP7wu9A0KaRE+yebz qAqamWJRBV9OFMN6sCXcQsUTqnErmqb4G0WUTPpaxkQwdoqoATPzLpHZT7RQT9YlcCln ip3dNzoTovBCgw4lW2ooJVcLIfiWXk8pw/udUa3Bj9Bii7KLfSe9ZW7qYYrF82hoaoJk T53Q== X-Gm-Message-State: AOAM532bKd72T52uROlhvOIk16qKoKMyxDdTmw4gufDB4I58Wjhuf7SO prFJUxukTIwJsuZUa/eCXNx3lp0zDYL85yeL0QmNjwE9Y78= X-Google-Smtp-Source: ABdhPJwo3FzG4+M/OwCyerLwKPI4TpZaLvS18pWzAvAG1UuVJdUTQ6bbS5H7FzLyJpyp77bPPKPZmxQKvL39n+gVZVw= X-Received: by 2002:a5d:648d:0:b0:203:d7aa:83d2 with SMTP id o13-20020a5d648d000000b00203d7aa83d2mr3955904wri.422.1647402511631; Tue, 15 Mar 2022 20:48:31 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mohamed Atef Date: Wed, 16 Mar 2022 05:48:20 +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="00000000000082350605da4dc949" X-Spam-Status: No, score=-7.1 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: Wed, 16 Mar 2022 03:48:40 -0000 --00000000000082350605da4dc949 Content-Type: text/plain; charset="UTF-8" Hi, we found some typos in the ChangeLog and some wrong spaces (nightmare) in the files. So here's the best we can do. and please don't be disappointed and trust us we're doing our best. I hope you could review it by Sunday night. 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. On Tue, Mar 15, 2022 at 11:32 PM Mohamed Atef wrote: > > > 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. >> > --00000000000082350605da4dc949 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_l0t0whcj0 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 bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU2MDdkODQzMGRlCi0tLSAv 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 YWNlX2NvbnRleHRfdCAqLAorCQkJCQkJb21wZF9kZXZpY2VfdHlwZV9zaXplc190ICopOworCisK K3R5cGVkZWYgb21wZF9yY190ICgqb21wZF9jYWxsYmFja19zeW1ib2xfYWRkcl9mbl90KQorICAo b21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqLCBvbXBkX3RocmVhZF9jb250ZXh0X3QgKiwg Y29uc3QgY2hhciAqLAorICAgb21wZF9hZGRyZXNzX3QgKiwgY29uc3QgY2hhciAqKTsKKwordHlw ZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX21lbW9yeV9yZWFkX2ZuX3QpCisgIChvbXBk X2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICosIG9tcGRfdGhyZWFkX2NvbnRleHRfdCAqLAorICAg Y29uc3Qgb21wZF9hZGRyZXNzX3QgKiwgb21wZF9zaXplX3QgbmJ5dGVzLCB2b2lkICopOworCisK K3R5cGVkZWYgb21wZF9yY190ICgqb21wZF9jYWxsYmFja19tZW1vcnlfd3JpdGVfZm5fdCkKKyAg KG9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKiwgb21wZF90aHJlYWRfY29udGV4dF90ICos CisgICBjb25zdCBvbXBkX2FkZHJlc3NfdCAqLCBvbXBkX3NpemVfdCwgY29uc3Qgdm9pZCAqKTsK KwordHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX2RldmljZV9ob3N0X2ZuX3QpCisg IChvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICosIGNvbnN0IHZvaWQgKiwKKyAgIG9tcGRf c2l6ZV90LCBvbXBkX3NpemVfdCwgdm9pZCAqKTsKKwordHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBk X2NhbGxiYWNrX3ByaW50X3N0cmluZ19mbl90KSAoY29uc3QgY2hhciAqLCBpbnQpOworCit0eXBl ZGVmIHN0cnVjdCBvbXBkX2NhbGxiYWNrc190Cit7CisgIG9tcGRfY2FsbGJhY2tfbWVtb3J5X2Fs bG9jX2ZuX3QgYWxsb2NfbWVtb3J5OworICBvbXBkX2NhbGxiYWNrX21lbW9yeV9mcmVlX2ZuX3Qg ZnJlZV9tZW1vcnk7CisgIG9tcGRfY2FsbGJhY2tfcHJpbnRfc3RyaW5nX2ZuX3QgcHJpbnRfc3Ry aW5nOworICBvbXBkX2NhbGxiYWNrX3NpemVvZl9mbl90IHNpemVvZl90eXBlOworICBvbXBkX2Nh bGxiYWNrX3N5bWJvbF9hZGRyX2ZuX3Qgc3ltYm9sX2FkZHJfbG9va3VwOworICBvbXBkX2NhbGxi YWNrX21lbW9yeV9yZWFkX2ZuX3QgcmVhZF9tZW1vcnk7CisgIG9tcGRfY2FsbGJhY2tfbWVtb3J5 X3dyaXRlX2ZuX3Qgd3JpdGVfbWVtb3J5OworICBvbXBkX2NhbGxiYWNrX21lbW9yeV9yZWFkX2Zu X3QgcmVhZF9zdHJpbmc7CisgIG9tcGRfY2FsbGJhY2tfZGV2aWNlX2hvc3RfZm5fdCBkZXZpY2Vf dG9faG9zdDsKKyAgb21wZF9jYWxsYmFja19kZXZpY2VfaG9zdF9mbl90IGhvc3RfdG9fZGV2aWNl OworICBvbXBkX2NhbGxiYWNrX2dldF90aHJlYWRfY29udGV4dF9mb3JfdGhyZWFkX2lkX2ZuX3QK KyAgICBnZXRfdGhyZWFkX2NvbnRleHRfZm9yX3RocmVhZF9pZDsKK30gb21wZF9jYWxsYmFja3Nf dDsKKworb21wZF9yY190IG9tcGRfaW5pdGlhbGl6ZSAob21wZF93b3JkX3QsIGNvbnN0IG9tcGRf Y2FsbGJhY2tzX3QgKik7CisKK29tcGRfcmNfdCBvbXBkX2dldF9hcGlfdmVyc2lvbiAob21wZF93 b3JkX3QgKik7CitvbXBkX3JjX3Qgb21wZF9nZXRfdmVyc2lvbl9zdHJpbmcgKGNvbnN0IGNoYXIg KiopOworCitvbXBkX3JjX3Qgb21wZF9maW5hbGl6ZSAodm9pZCk7CisKK29tcGRfcmNfdCBvbXBk X3Byb2Nlc3NfaW5pdGlhbGl6ZSAob21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqLAorCQkJ CSAgIG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKik7CisKK29tcGRfcmNfdCBvbXBkX2Rl dmljZV9pbml0aWFsaXplIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKyAgb21wZF9h ZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqLCBvbXBkX2RldmljZV90LAorCQkJCSAgb21wZF9zaXpl X3QsIHZvaWQgKiwKKwkJCQkgIG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKik7CisKK29t cGRfcmNfdCBvbXBkX3JlbF9hZGRyZXNzX3NwYWNlX2hhbmRsZSAob21wZF9hZGRyZXNzX3NwYWNl X2hhbmRsZV90ICopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfb21wX3ZlcnNpb24gKG9tcGRfYWRk cmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKKworb21wZF9yY190IG9tcGRf Z2V0X29tcF92ZXJzaW9uX3N0cmluZyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCisJ CQkJICAgICAgIGNvbnN0IGNoYXIgKiopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGhyZWFkX2lu X3BhcmFsbGVsIChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICosIGludCwKKwkJCQkgICAgICAgb21w ZF90aHJlYWRfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGhyZWFkX2hhbmRs ZSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCisJCQkJICBvbXBkX3RocmVhZF9pZF90 LCBvbXBkX3NpemVfdCxjb25zdCB2b2lkICosCisJCQkJICBvbXBkX3RocmVhZF9oYW5kbGVfdCAq Kik7CisKK29tcGRfcmNfdCBvbXBkX3JlbF90aHJlYWRfaGFuZGxlIChvbXBkX3RocmVhZF9oYW5k bGVfdCAqKTsKKworb21wZF9yY190IG9tcGRfdGhyZWFkX2hhbmRsZV9jb21wYXJlIChvbXBkX3Ro cmVhZF9oYW5kbGVfdCAqLAorCQkJCSAgICAgIG9tcGRfdGhyZWFkX2hhbmRsZV90ICosaW50ICop OworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGhyZWFkX2lkIChvbXBkX3RocmVhZF9oYW5kbGVfdCAq LCBvbXBkX3RocmVhZF9pZF90LAorCQkJICAgICAgb21wZF9zaXplX3QsIHZvaWQgKik7CisKK29t cGRfcmNfdCBvbXBkX2dldF9jdXJyX3BhcmFsbGVsX2hhbmRsZSAob21wZF90aHJlYWRfaGFuZGxl X3QgKiwKKwkJCQkJIG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21w ZF9nZXRfZW5jbG9zaW5nX3BhcmFsbGVsX2hhbmRsZSAob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAq LAorCQkJCQkgICAgICBvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICoqKTsKKworb21wZF9yY190IG9t cGRfZ2V0X3Rhc2tfcGFyYWxsZWxfaGFuZGxlIChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwKKwkJCQkJ IG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9yZWxfcGFyYWxs ZWxfaGFuZGxlIChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICopOworCitvbXBkX3JjX3Qgb21wZF9w YXJhbGxlbF9oYW5kbGVfY29tcGFyZSAob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqLAorCQkJCQlv bXBkX3BhcmFsbGVsX2hhbmRsZV90ICosIGludCAqKTsKKworb21wZF9yY190IG9tcGRfZ2V0X2N1 cnJfdGFza19oYW5kbGUgKG9tcGRfdGhyZWFkX2hhbmRsZV90ICosCisJCQkJICAgICBvbXBkX3Rh c2tfaGFuZGxlX3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfZ2VuZXJhdGluZ190YXNrX2hh bmRsZSAob21wZF90YXNrX2hhbmRsZV90ICosCisJCQkJCSAgIG9tcGRfdGFza19oYW5kbGVfdCAq Kik7CisKK29tcGRfcmNfdCBvbXBkX2dldF9zY2hlZHVsaW5nX3Rhc2tfaGFuZGxlIChvbXBkX3Rh c2tfaGFuZGxlX3QgKiwKKwkJCQkJICAgb21wZF90YXNrX2hhbmRsZV90ICoqKTsKKworb21wZF9y Y190IG9tcGRfZ2V0X3Rhc2tfaW5fcGFyYWxsZWwgKG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKiwg aW50LAorCQkJCSAgICAgb21wZF90YXNrX2hhbmRsZV90ICoqKTsKKworb21wZF9yY190IG9tcGRf cmVsX3Rhc2tfaGFuZGxlIChvbXBkX3Rhc2tfaGFuZGxlX3QgKik7CisKK29tcGRfcmNfdCBvbXBk X3Rhc2tfaGFuZGxlX2NvbXBhcmUgKG9tcGRfdGFza19oYW5kbGVfdCAqLCBvbXBkX3Rhc2tfaGFu ZGxlX3QgKiwKKwkJCQkgICAgaW50ICopOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGFza19mdW5j dGlvbiAob21wZF90YXNrX2hhbmRsZV90ICosIG9tcGRfYWRkcmVzc190ICopOworCitvbXBkX3Jj X3Qgb21wZF9nZXRfdGFza19mcmFtZSAob21wZF90YXNrX2hhbmRsZV90ICosIG9tcGRfZnJhbWVf aW5mb190ICosCisJCQkgICAgICAgb21wZF9mcmFtZV9pbmZvX3QgKik7CisKK29tcGRfcmNfdCBv bXBkX2VudW1lcmF0ZV9zdGF0ZXMgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBk X3dvcmRfdCwKKwkJCQkgb21wZF93b3JkX3QgKiwgY29uc3QgY2hhciAqKiwgb21wZF93b3JkX3Qg Kik7CisKK29tcGRfcmNfdCBvbXBkX2dldF9zdGF0ZSAob21wZF90aHJlYWRfaGFuZGxlX3QgKiwg b21wZF93b3JkX3QgKiwKKwkJCSAgb21wZF93YWl0X2lkX3QgKik7CisKK29tcGRfcmNfdCBvbXBk X2dldF9kaXNwbGF5X2NvbnRyb2xfdmFycyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICos CisJCQkJCSBjb25zdCBjaGFyICogY29uc3QgKiopOworCitvbXBkX3JjX3Qgb21wZF9yZWxfZGlz cGxheV9jb250cm9sX3ZhcnMgKGNvbnN0IGNoYXIgKiBjb25zdCAqKik7CisKK29tcGRfcmNfdCBv bXBkX2VudW1lcmF0ZV9pY3ZzIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwgb21wZF9p Y3ZfaWRfdCwKKwkJCSAgICAgICBvbXBkX2ljdl9pZF90ICosIGNvbnN0IGNoYXIgKiosIG9tcGRf c2NvcGVfdCAqLAorCQkJICAgICAgIGludCAqKTsKKworb21wZF9yY190IG9tcGRfZ2V0X2ljdl9m cm9tX3Njb3BlICh2b2lkICosIG9tcGRfc2NvcGVfdCwgb21wZF9pY3ZfaWRfdCwKKwkJCQkgICBv bXBkX3dvcmRfdCAqKTsKKworb21wZF9yY190IG9tcGRfZ2V0X2ljdl9zdHJpbmdfZnJvbV9zY29w ZSAodm9pZCAqLCBvbXBkX3Njb3BlX3QsIG9tcGRfaWN2X2lkX3QsCisJCQkJCSAgY29uc3QgY2hh ciAqKik7CisKK29tcGRfcmNfdCBvbXBkX2dldF90b29sX2RhdGEgKHZvaWQgKiwgb21wZF9zY29w ZV90LCBvbXBkX3dvcmRfdCAqLAorCQkJICAgICAgb21wZF9hZGRyZXNzX3QgKik7CisKKyNpZmRl ZiBfX0VMRl9fCisjZGVmaW5lIG9tcGRfYnBfcGFyYWxsZWxfYmVnaW4oKSBcCisgIF9fYXNtX18g X192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBfcGFyYWxsZWxfYmVnaW5cblx0IiBcCisJCQki b21wZF9icF9wYXJhbGxlbF9iZWdpbjoiKQorI2RlZmluZSBvbXBkX2JwX3BhcmFsbGVsX2VuZCgp IFwKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIuZ2xvYmwgb21wZF9icF9wYXJhbGxlbF9lbmRc blx0IiBcCisJCQkib21wZF9icF9wYXJhbGxlbF9lbmQ6IikKKyNkZWZpbmUgb21wZF9icF90YXNr X2JlZ2luKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5nbG9ibCBvbXBkX2JwX3Rhc2tf YmVnaW5cblx0IiBcCisJCQkib21wZF9icF90YXNrX2JlZ2luOiIpCisjZGVmaW5lIG9tcGRfYnBf dGFza19lbmQoKSBcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBfdGFz a19lbmRcblx0IiBcCisJCQkib21wZF9icF90YXNrX2VuZDoiKQorI2RlZmluZSBvbXBkX2JwX3Ro cmVhZF9iZWdpbigpIFwKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIuZ2xvYmwgb21wZF9icF90 aHJlYWRfYmVnaW5cblx0IiBcCisJCQkib21wZF9icF90aHJlYWRfYmVnaW46IikKKyNkZWZpbmUg b21wZF9icF90aHJlYWRfZW5kKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5nbG9ibCBv bXBkX2JwX3RocmVhZF9lbmRcblx0IiBcCisJCQkib21wZF9icF90aHJlYWRfZW5kOiIpCisjZGVm aW5lIG9tcGRfYnBfZGV2aWNlX2JlZ2luKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5n bG9ibCBvbXBkX2JwX2RldmljZV9iZWdpblxuXHQiIFwKKwkJCSJvbXBkX2JwX2RldmljZV9lbmQ6 IikKKyNkZWZpbmUgb21wZF9icF9kZXZpY2VfZW5kKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoIi5nbG9ibCBvbXBkX2JwX2RldmljZV9lbmRcblx0IiBcCisJCQkib21wZF9icF9kZXZpY2Vf ZW5kOiIpCisjZWxzZQorCitleHRlcm4gdm9pZCBvbXBkX2JwX3BhcmFsbGVsX2JlZ2luICh2b2lk KTsKK2V4dGVybiB2b2lkIG9tcGRfYnBfcGFyYWxsZWxfZW5kICh2b2lkKTsKKworZXh0ZXJuIHZv aWQgb21wZF9icF90YXNrX2JlZ2luICh2b2lkKTsKK2V4dGVybiB2b2lkIG9tcGRfYnBfdGFza19l bmQgKHZvaWQpOworCitleHRlcm4gdm9pZCBvbXBkX2JwX3RocmVhZF9iZWdpbiAodm9pZCk7Citl eHRlcm4gdm9pZCBvbXBkX2JwX3RocmVhZF9lbmQgKHZvaWQpOworCitleHRlcm4gdm9pZCBvbXBk X2JwX2RldmljZV9iZWdpbiAodm9pZCk7CitleHRlcm4gdm9pZCBvbXBkX2JwX2RldmljZV9lbmQg KHZvaWQpOworI2VuZGlmIC8qIF9fRUxGX18gKi8KKworI2RlZmluZSBvbXBkX3NlZ21lbnRfbm9u ZSAgKChvbXBkX3NlZ190KSAwKQorI2RlZmluZSBvbXBkX2ljdl91bmRlZmluZWQgKChvbXBkX2lj dl9pZF90KSAwKQorCisjaWZkZWYgX19jcGx1c3BsdXMKK307IC8vIGV4dGVybiAiQyIKKyNlbmRp ZgorCisjZW5kaWYgLyogX09NUF9UT09MU19IICovCmRpZmYgLS1naXQgYS9saWJnb21wL29tcGQt aGVscGVyLmMgYi9saWJnb21wL29tcGQtaGVscGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmU0MzA1ZGZlZTc2Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9v bXBkLWhlbHBlci5jCkBAIC0wLDAgKzEsMjQ5IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb250cmlidXRlZCBieSBNb2hhbWVkIEF0 ZWYgPG1vaGFtZWRhdGVmMTY5OEBnbWFpbC5jb20+LgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIEdOVSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJn b21wKS4KKyAgIExpYmdvbXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBs YXRlciB2ZXJzaW9uLgorICAgTGliZ29tcCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKKyAgIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MK KyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yCisgICBtb3JlIGRldGFpbHMuCisgICBVbmRlciBTZWN0aW9uIDcgb2YgR1BM IHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25zIGRl c2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKyAg IDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRp b24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFu ZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUg c291cmNlIGNvZGUgb2YgZnVuY3Rpb25zCisgIGRlY2xhcmVkIGluIG9tcGQtaGVscGVyLmguICAq LworCisjaW5jbHVkZSAib21wZC1oZWxwZXIuaCIKKworb21wZF9kZXZpY2VfdHlwZV9zaXplc190 IHRhcmdldF9zaXplczsKKworLyogR2V0IGdsb2JhbCBJQ1ZzLiAgKi8KK29tcGRfcmNfdAorb21w ZF9nZXRfY2FuY2VsbGF0aW9uIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLCBvbXBk X3dvcmRfdCAqY2FuY2VsX3ZhcikKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3QgY2Fu Y2VsID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIg PSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChhaC0+Y29udGV4 dCwgTlVMTCwgImdvbXBfY2FuY2VsX3ZhciIsIGNhbmNlbCwgY2FuY2VsLAorCSAgICAgdGFyZ2V0 X3NpemVzLnNpemVvZl9jaGFyLCAxLCByZXQsIHN5bWJvbF9hZGRyKTsKKyAgKmNhbmNlbF92YXIg PSBjYW5jZWw7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorb21wZF9nZXRfbWF4X3Rh c2tfcHJpb3JpdHkgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsCisgIG9tcGRfd29y ZF90ICp0YXNrX3ApCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IHRhc2tfcHJpb3Jp dHkgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9 IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0 LCBOVUxMLCAiZ29tcF9tYXhfdGFza19wcmlvcml0eV92YXIiLCB0YXNrX3ByaW9yaXR5LAorCSAg ICAgdGFza19wcmlvcml0eSwgdGFyZ2V0X3NpemVzLnNpemVvZl9pbnQsIDEsIHJldCwgc3ltYm9s X2FkZHIpOworICAqdGFza19wID0gdGFza19wcmlvcml0eTsKKyAgcmV0dXJuIHJldDsKK30KKwor b21wZF9yY190CitvbXBkX2dldF9zdGFja3NpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVf dCAqYWgsIG9tcGRfd29yZF90ICpzdGFja3NpemUpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRf d29yZF90IHN0YWNrX3ZhciA9IDA7CisgIG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190 IHN5bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxV RSAoYWgtPmNvbnRleHQsIE5VTEwsICJzdGFja3NpemUiLCBzdGFja192YXIsIHN0YWNrX3ZhciwK KwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZywgMSwgcmV0LCBzeW1ib2xfYWRkcik7Cisg ICpzdGFja3NpemUgPSBzdGFja192YXI7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAor b21wZF9nZXRfZGVidWcgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsIG9tcGRfd29y ZF90ICpkZWJ1Z192YXIpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IGRlYnVnID0g MDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB7T01Q RF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChhaC0+Y29udGV4dCwgTlVM TCwgImdvbXBfZGVidWdfdmFyIiwgZGVidWcsIGRlYnVnLAorCSAgICAgdGFyZ2V0X3NpemVzLnNp emVvZl9pbnQsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqZGVidWdfdmFyID0gZGVidWc7Cisg IHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorb21wZF9nZXRfZGlzcGxheV9hZmZpbml0eSAo b21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKmFmZikKK3sKKyAg Q0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3QgYWZmaW4gPSAwOworICBvbXBkX3JjX3QgcmV0Owor ICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQs IDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF9kaXNwbGF5X2FmZmlu aXR5X3ZhciIsIGFmZmluLCBhZmZpbiwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfY2hhciwg MSwgcmV0LCBzeW1ib2xfYWRkcik7CisgICphZmYgPSBhZmZpbjsKKyAgcmV0dXJuIHJldDsKK30K Kworb21wZF9yY190CitvbXBkX2dldF9hZmZpbml0eV9mb3JtYXRfbGVuIChvbXBkX2FkZHJlc3Nf c3BhY2VfaGFuZGxlX3QgKmFoLCBvbXBkX3dvcmRfdCAqbGVuKQoreworICBDSEVDSyAoYWgpOwor ICBvbXBkX3dvcmRfdCBsZW5fdmFyID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRy ZXNzX3Qgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VU X1ZBTFVFIChhaC0+Y29udGV4dCwgTlVMTCwgImdvbXBfYWZmaW5pdHlfZm9ybWF0X2xlbiIsIGxl bl92YXIsIGxlbl92YXIsCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2ludCwgMSwgcmV0LCBz eW1ib2xfYWRkcik7CisgICpsZW4gPSBsZW5fdmFyOworICByZXR1cm4gcmV0OworfQorCitvbXBk X3JjX3QKK29tcGRfZ2V0X2FmZmluaXR5X2Zvcm1hdCAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICphaCwgY29uc3QgY2hhciAqKnN0cmluZykKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93 b3JkX3QgbGVuID0gMTAwOworICBvbXBkX3JjX3QgcmV0OworICBjaGFyICp0ZW1wX3N0cjsKKyAg b21wZF93b3JkX3QgYWRkcjsKKyAgcmV0ID0gY2FsbGJhY2tzLT5hbGxvY19tZW1vcnkgKGxlbiAr IDEsICh2b2lkICoqKSAmdGVtcF9zdHIpOworICB0ZW1wX3N0cltsZW5dID0gJ1wwJzsKKyAgb21w ZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsK KyAgcmV0ID0gY2FsbGJhY2tzLT5zeW1ib2xfYWRkcl9sb29rdXAgKGFoLT5jb250ZXh0LCBOVUxM LAorCQkJCSAgICAgICAiZ29tcF9hZmZpbml0eV9mb3JtYXRfdmFyIiwgJnN5bWJvbF9hZGRyLAor CQkJCSAgICAgICBOVUxMKTsKKyAgQ0hFQ0tfUkVUIChyZXQpOworICByZXQgPSBjYWxsYmFja3Mt PnJlYWRfbWVtb3J5IChhaC0+Y29udGV4dCwgTlVMTCwgJnN5bWJvbF9hZGRyLAorCQkJCXRhcmdl dF9zaXplcy5zaXplb2ZfcG9pbnRlciwgJmFkZHIpOworICBDSEVDS19SRVQgKHJldCk7CisgIHN5 bWJvbF9hZGRyLmFkZHJlc3MgPSBhZGRyOworICByZXQgPSBjYWxsYmFja3MtPnJlYWRfc3RyaW5n IChhaC0+Y29udGV4dCwgTlVMTCwgJnN5bWJvbF9hZGRyLCBsZW4sCisJCQkJKHZvaWQgKikgdGVt cF9zdHIpOworICBDSEVDS19SRVQgKHJldCk7CisgIHJldCA9IGNhbGxiYWNrcy0+ZGV2aWNlX3Rv X2hvc3QgKGFoLT5jb250ZXh0LCAmdGVtcF9zdHIsCisJCQkJICAgdGFyZ2V0X3NpemVzLnNpemVv Zl9jaGFyLCBsZW4sICZ0ZW1wX3N0cik7CisgICpzdHJpbmcgPSB0ZW1wX3N0cjsKKyAgcmV0dXJu IHJldDsKK30KKworb21wZF9yY190CitvbXBkX2dldF93YWl0X3BvbGljeSAob21wZF9hZGRyZXNz X3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKndhaXRfcG9saWN5KQoreworICBDSEVD SyAoYWgpOworICBvbXBkX3dvcmRfdCB3YWl0X3AgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBv bXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9 OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAid2FpdF9wb2xpY3kiLCB3YWl0X3As IHdhaXRfcCwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfaW50LCAxLCByZXQsIHN5bWJvbF9h ZGRyKTsKKyAgKndhaXRfcG9saWN5ID0gd2FpdF9wOworICByZXR1cm4gcmV0OworfQorCitvbXBk X3JjX3QKK29tcGRfZ2V0X251bV90ZWFtcyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICph aCwgb21wZF93b3JkX3QgKm51bV90ZWFtcykKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3Jk X3QgbnVtX3QgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xf YWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5j b250ZXh0LCBOVUxMLCAiZ29tcF9udW1fdGVhbXNfdmFyIiwgbnVtX3QsIG51bV90LAorCSAgICAg dGFyZ2V0X3NpemVzLnNpemVvZl9pbnQsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqbnVtX3Rl YW1zID0gbnVtX3Q7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorb21wZF9nZXRfdGVh bXNfdGhyZWFkX2xpbWl0IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLAorICBvbXBk X3dvcmRfdCAqdGhyZWFkX2xpbWl0KQoreworICBDSEVDSyAoYWgpOworICBvbXBkX3dvcmRfdCB0 aHJfbGltID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2Fk ZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChhaC0+Y29u dGV4dCwgTlVMTCwgImdvbXBfdGVhbXNfdGhyZWFkX2xpbWl0X3ZhciIsIHRocl9saW0sIHRocl9s aW0sCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2ludCwgMSwgcmV0LCBzeW1ib2xfYWRkcik7 CisgICp0aHJlYWRfbGltaXQgPSB0aHJfbGltOworICByZXR1cm4gcmV0OworfQorCitvbXBkX3Jj X3QKK29tcGRfZ2V0X3NwaW5fY291bnQgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgs IG9tcGRfd29yZF90ICpzcGluX2NvdW50KQoreworICBDSEVDSyAoYWgpOworICBvbXBkX3dvcmRf dCBzcGlucyA9IDA7CisgIG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9h ZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNv bnRleHQsIE5VTEwsICJnb21wX3NwaW5fY291bnRfdmFyIiwgc3BpbnMsIHNwaW5zLAorCSAgICAg dGFyZ2V0X3NpemVzLnNpemVvZl9sb25nX2xvbmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAq c3Bpbl9jb3VudCA9IHNwaW5zOworICByZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK29tcGRf Z2V0X2F2YWlsYWJsZV9jcHVzIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLCBvbXBk X3dvcmRfdCAqcHJvY3MpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IGNwdXMgPSAw OworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBE X1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxM LCAiZ29tcF9hdmFpbGFibGVfY3B1cyIsIGNwdXMsIGNwdXMsCisJICAgICB0YXJnZXRfc2l6ZXMu c2l6ZW9mX2xvbmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqcHJvY3MgPSBjcHVzOworICBy ZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK29tcGRfZ2V0X3Rocm90dGxlZF9zcGluX2NvdW50 IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLAorICBvbXBkX3dvcmRfdCAqdGhyb3Qp Cit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IHRlbXAgPSAwOworICBvbXBkX3JjX3Qg cmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVD SUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF90aHJvdHRs ZWRfc3Bpbl9jb3VudF92YXIiLCB0ZW1wLCB0ZW1wLAorCSAgICAgdGFyZ2V0X3NpemVzLnNpemVv Zl9sb25nX2xvbmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqdGhyb3QgPSB0ZW1wOworICBy ZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK29tcGRfZ2V0X21hbmFnZWRfdGhyZWFkcyAob21w ZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKm1hbl90aCkKK3sKKyAg Q0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3QgdGVtcCA9IDA7CisgIG9tcGRfcmNfdCByZXQ7Cisg IG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwg MH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJnb21wX21hbmFnZWRfdGhyZWFk cyIsIHRlbXAsIHRlbXAsCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2xvbmcsIDEsIHJldCwg c3ltYm9sX2FkZHIpOworICAqbWFuX3RoID0gdGVtcDsKKyAgcmV0dXJuIHJldDsKK30KKworLyog RW5kIG9mIGdsb2JhbCBJQ1ZzIGZ1bmN0aW9ucy4gICovCisKK29tcGRfcmNfdAorZ2V0X3NpemVz IChvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpjb250ZXh0KQoreworICBpZiAoY29udGV4 dCA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKworICBzdGF0aWMgYm9v bCBpbml0ZWQgPSBmYWxzZTsKKyAgc3RhdGljIG9tcGRfcmNfdCByZXQ7CisKKyAgaWYgKGluaXRl ZCkKKyAgICByZXR1cm4gcmV0OworCisgIHJldCA9IGNhbGxiYWNrcy0+c2l6ZW9mX3R5cGUgKGNv bnRleHQsICZ0YXJnZXRfc2l6ZXMpOworICBpZiAocmV0ICE9IG9tcGRfcmNfb2spCisgICAgcmV0 dXJuIHJldDsKKworICBpbml0ZWQgPSB0cnVlOworICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0 IGEvbGliZ29tcC9vbXBkLWhlbHBlci5oIGIvbGliZ29tcC9vbXBkLWhlbHBlci5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNzAwYjA5ZTZjOQotLS0gL2Rldi9udWxs CisrKyBiL2xpYmdvbXAvb21wZC1oZWxwZXIuaApAQCAtMCwwICsxLDE4OCBAQAorLyogQ29weXJp Z2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29udHJpYnV0 ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29tPi4KKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkgUHJvY2Vzc2luZyBM aWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBv cHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisgICBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgorICAgVW5kZXIg U2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFsCisg ICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0 aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1l IExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAgc2VlIHRoZSBm aWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwg c2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisvKiBUaGlzIGZp bGUgY29udGFpbnMgZGF0YSB0eXBlcyBhbmQgZGVjbGFyYXRpb25zIG9mIGZ1bmN0aW9ucyB0aGF0 IGFyZSBub3QKKyAgIHByb3ZpZGVkIGJ5IHRoZSBib29rIGJ1dCB3ZSBmaW5kIHRoZW0gbmVjZXNz YXJ5LiAgKi8KKworI2lmbmRlZiBfT01QRF9IRUxQRVJfSAorI2RlZmluZSBfT01QRF9IRUxQRVJf SAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpbmNsdWRl ICJvbXAtdG9vbHMuaCIKKyNpbmNsdWRlICJvbXBkLXR5cGVzLmgiCisjaW5jbHVkZSA8c3RkaW8u aD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxz dGRib29sLmg+CisKKyNkZWZpbmUgc3RyaW5naXplKHgpIHN0cmluZ2l6ZTEoeCkKKyNkZWZpbmUg c3RyaW5naXplMSh4KSAjeAorCisjZGVmaW5lIFZFUlNJT04gMjAyMDExCisKK2V4dGVybiBjb25z dCBvbXBkX2NhbGxiYWNrc190ICpjYWxsYmFja3M7CitleHRlcm4gX19VSU5UNjRfVFlQRV9fIGdv bXBkX3N0YXRlOworZXh0ZXJuIG9tcGRfZGV2aWNlX3R5cGVfc2l6ZXNfdCB0YXJnZXRfc2l6ZXM7 CisKK3R5cGVkZWYgc3RydWN0IF9vbXBkX2FzcGFjZV9oYW5kbGUKK3sKKyAgb21wZF9hZGRyZXNz X3NwYWNlX2NvbnRleHRfdCAqY29udGV4dDsKKyAgb21wZF9kZXZpY2VfdCBraW5kOworfSBvbXBk X2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3Q7CisKK3R5cGVkZWYgc3RydWN0IF9vbXBkX3RocmVhZF9o YW5kbGUKK3sKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaDsKKyAgb21wZF90aHJl YWRfY29udGV4dF90ICp0aHJlYWRfY29udGV4dDsKKyAgb21wZF9hZGRyZXNzX3QgdGg7Cit9IG9t cGRfdGhyZWFkX2hhbmRsZV90OworCit0eXBlZGVmIHN0cnVjdCBfb21wZF9wYXJhbGxlbF9oYW5k bGUKK3sKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaDsKKyAgb21wZF9hZGRyZXNz X3QgdGg7Cit9IG9tcGRfcGFyYWxsZWxfaGFuZGxlX3Q7CisKK3R5cGVkZWYgc3RydWN0IF9vbXBk X3Rhc2tfaGFuZGxlCit7CisgIG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWg7CisgIG9t cGRfYWRkcmVzc190IHRoOworfSBvbXBkX3Rhc2tfaGFuZGxlX3Q7CisKKyNkZWZpbmUgQ0hFQ0tf UkVUKHJldCkgXAorIGRvIHsgXAorICAgaWYgKHJldCAhPSBvbXBkX3JjX29rKSBcCisgICAgIHJl dHVybiByZXQ7IFwKKyB9IHdoaWxlICgwKQorCisjZGVmaW5lIEdFVF9WQUxVRShjb250ZXh0LCB0 aHJlYWRfY29udGV4dCwgbmFtZSwgb3V0cHV0LCBkaXN0X2J1Ziwgc2l6ZSwgXAorICBjb3VudCwg cmV0LCBzeW1ib2xfYWRkcikgXAorICBkbyB7IFwKKyAgICByZXQgPSBjYWxsYmFja3MtPnN5bWJv bF9hZGRyX2xvb2t1cCAoY29udGV4dCwgdGhyZWFkX2NvbnRleHQsIG5hbWUsIFwKKwkJCQkJICZz eW1ib2xfYWRkciwgTlVMTCk7IFwKKyAgICBDSEVDS19SRVQgKHJldCk7IFwKKyAgICByZXQgPSBj YWxsYmFja3MtPnJlYWRfbWVtb3J5IChjb250ZXh0LCB0aHJlYWRfY29udGV4dCwgJnN5bWJvbF9h ZGRyLCBzaXplLCBcCisJCQkJICAmZGlzdF9idWYpOyBcCisgICAgQ0hFQ0tfUkVUIChyZXQpOyBc CisgICAgcmV0ID0gY2FsbGJhY2tzLT5kZXZpY2VfdG9faG9zdCAoY29udGV4dCwgJmRpc3RfYnVm LCBzaXplLCBjb3VudCwgJm91dHB1dCk7XAorICAgIENIRUNLX1JFVCAocmV0KTsgXAorICB9IHdo aWxlICgwKQorCisjZGVmaW5lIENIRUNLKGFoKSBcCisgIGRvIHsgICBcCisgICAgaWYgKGFoID09 IE5VTEwgfHwgYWgtPmNvbnRleHQgPT0gTlVMTCkgXAorICAgICAgcmV0dXJuIG9tcGRfcmNfc3Rh bGVfaGFuZGxlOyBcCisgICAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKSBcCisgICAgICByZXR1cm4g b21wZF9yY19jYWxsYmFja19lcnJvcjsgXAorICB9IHdoaWxlICgwKQorCisvKiAodmFyX25hbWUs IHN0cmluZ19uYW1lLCBzY29wZSkuICAqLworI2RlZmluZSBGT1JFQUNIX09NUERfSUNWKG9tcGRf aWN2KSBcCisgIG9tcGRfaWN2IChudGhyZWFkX3ZhciwgIm50aHJlYWQgdmFyIiwgb21wZF9zY29w ZV90aHJlYWQpIFwKKyAgb21wZF9pY3YgKHRocmVhZF9saW1pdF92YXIsICJ0aHJlYWQgbGltaXQg dmFyIiwgb21wZF9zY29wZV90YXNrKSBcCisgIG9tcGRfaWN2IChydW5fc2NoZWRfdmFyLCAicnVu IHNjaGVkIGxpbWl0IHZhciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBvbXBkX2ljdiAocnVuX3Nj aGVkX2NodW5rX3NpemUsICJydW4gc2NoZWQgY2h1bmsgc2l6ZSB2YXIiLCBvbXBkX3Njb3BlX3Rh c2spIFwKKyAgb21wZF9pY3YgKGRlZmF1bHRfZGV2aWNlX3ZhciwgImRlZmF1bHQgZGV2aWNlIHZh ciIsIG9tcGRfc2NvcGVfdGhyZWFkKSBcCisgIG9tcGRfaWN2IChkeW5fdmFyLCAiZHluYW1pYyB2 YXIiLCBvbXBkX3Njb3BlX3RocmVhZCkgXAorICBvbXBkX2ljdiAobWF4X2FjdGl2ZV9sZXZlbHNf dmFyLCAibWF4IGFjdGl2ZSBsZXZlbCB2YXIiLCBvbXBkX3Njb3BlX3Rhc2spIFwKKyAgb21wZF9p Y3YgKGJpbmRfdmFyLCAicHJvYyBiaW5kIHZhciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBvbXBk X2ljdiAoY2FuY2VsbGF0aW9uX3ZhciwgImNhbmNlbCB2YXIiLCBvbXBkX3Njb3BlX2FkZHJlc3Nf c3BhY2UpIFwKKyAgb21wZF9pY3YgKG1heF90YXNrX3ByaW9yaXR5X3ZhciwgIm1heCB0YXNrIHBy aW9yaXR5IHZhciIsIFwKKwkgICAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBcCisgIG9tcGRf aWN2IChzdGFja3NpemVfdmFyLCAic3RhY2sgc2l6ZSB2YXIiLCBvbXBkX3Njb3BlX2FkZHJlc3Nf c3BhY2UpIFwKKyAgb21wZF9pY3YgKGRlYnVnX3ZhciwgImRlYnVnIHZhciIsIG9tcGRfc2NvcGVf YWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAoZGlzcGxheV9hZmZpbml0eV92YXIsICJkaXNw bGF5IGFmZmluaXR5IHZhciIsIFwKKwkgICAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBcCisg IG9tcGRfaWN2IChhZmZpbml0eV9mb3JtYXRfdmFyLCAiYWZmaW5pdHkgZm9ybWF0IHZhciIsIFwK KwkgICAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBcCisgIG9tcGRfaWN2IChhZmZpbml0eV9m b3JtYXRfbGVuX3ZhciwgImFmZmluaXR5IGZvcm1hdCBsZW4gdmFyIiwgXAorCSAgICBvbXBkX3Nj b3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKHdhaXRfcG9saWN5X3ZhciwgIndhaXQg cG9saWN5IHZhciIsIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAobnVt X3RlYW1zX3ZhciwgIm51bSB0ZWFtcyB2YXIiLCBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwK KyAgb21wZF9pY3YgKHRlYW1zX3RocmVhZF9saW1pdF92YXIsICJ0ZWFtcyB0aHJlYWQgbGltaXQg dmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKHNw aW5fY291bnRfdmFyLCAic3BpbiBjb3VudCB2YXIiLCBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2Up IFwKKyAgb21wZF9pY3YgKG51bV9wcm9jX3ZhciwgIm51bSBwcm9jIHZhciIsIG9tcGRfc2NvcGVf YWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAodGhyb3R0bGVkX3NwaW5fY291bnRfdmFyLCAi dGhyb3R0bGVkIHNwaW4gY291bnQgdmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nfc3Bh Y2UpIFwKKyAgb21wZF9pY3YgKG1hbmFnZWRfdGhyZWFkc192YXIsICJtYW5hZ2VkIHRocmVhZHMg dmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKHRo cmVhZF9udW1fdmFyLCAidGhyZWFkIG51bSB2YXIiLCBvbXBkX3Njb3BlX3RocmVhZCkgXAorICBv bXBkX2ljdiAoZmluYWxfdGFza192YXIsICJmaW5hbCB0YXNrIHZhciIsIG9tcGRfc2NvcGVfdGFz aykgXAorICBvbXBkX2ljdiAoaW1wbGljaXRfdGFza192YXIsICJpbXBsaWNpdCB0YXNrIHZhciIs IG9tcGRfc2NvcGVfdGFzaykgXAorICBvbXBkX2ljdiAodGVhbV9zaXplX3ZhciwgInRlYW0gc2l6 ZSB2YXIiLCBvbXBkX3Njb3BlX3BhcmFsbGVsKQorCitlbnVtIG9tcGRfaWN2Cit7CisgIG9tcGRf aWN2X3VuZGVmaW5lZF92YXIgPSAwLAorICAjZGVmaW5lIG9tcGRfaWN2X2l0ZXJhdG9yKHZhcl9u YW1lLCBzdHJpbmdfbmFtZSwgc2NvcGUpIG9tcGRfaWN2XyMjdmFyX25hbWUsCisgICAgRk9SRUFD SF9PTVBEX0lDViAob21wZF9pY3ZfaXRlcmF0b3IpCisgICN1bmRlZiBvbXBkX2ljdl9pdGVyYXRv cgorICBvbXBkX2xhc3RfaWN2X3ZhcgorfTsKKworb21wZF9yY190IGdldF9zaXplcyAob21wZF9h ZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqKTsKKworLyogR2V0IExvY2FsIGludGVybmFsIGNvbnRy b2wgdmFyaWFibGVzLiAgKi8KK29tcGRfcmNfdCBvbXBkX2dldF9udGhyZWFkIChvbXBkX3RocmVh ZF9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF90aHJlYWRf bGltaXQgKG9tcGRfdGFza19oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBv bXBkX2dldF9ydW5fc2NoZWQgKG9tcGRfdGFza19oYW5kbGVfdCAqLCAgb21wZF93b3JkX3QgKik7 CitvbXBkX3JjX3Qgb21wZF9nZXRfcnVuX3NjaGVkX2NodW5rX3NpemUgKG9tcGRfdGFza19oYW5k bGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF9kZWZhdWx0X2Rldmlj ZSAob21wZF90aHJlYWRfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3Qgb21w ZF9nZXRfZHluYW1pYyAob21wZF90aHJlYWRfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7Citv bXBkX3JjX3Qgb21wZF9nZXRfbWF4X2FjdGl2ZV9sZXZlbHMgKG9tcGRfdGFza19oYW5kbGVfdCAq LCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF9wcm9jX2JpbmQgKG9tcGRfdGFz a19oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2lzX2ZpbmFsIChv bXBkX3Rhc2tfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3Qgb21wZF9pc19p bXBsaWNpdCAob21wZF90YXNrX2hhbmRsZV90ICosIG9tcGRfd29yZF90ICopOworb21wZF9yY190 IG9tcGRfZ2V0X3RlYW1fc2l6ZSAob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqLCBvbXBkX3dvcmRf dCAqKTsKKworLyogR2V0IEdsb2JhbCBJQ1ZzLiAgKi8KK29tcGRfcmNfdCBvbXBkX2dldF9jYW5j ZWxsYXRpb24gKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsK K29tcGRfcmNfdCBvbXBkX2dldF9tYXhfdGFza19wcmlvcml0eSAob21wZF9hZGRyZXNzX3NwYWNl X2hhbmRsZV90ICosCisgIAkJCQkgICAgICBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBk X2dldF9zdGFja3NpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dvcmRf dCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF9kZWJ1ZyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICosIG9tcGRfd29yZF90ICopOworb21wZF9yY190IG9tcGRfZ2V0X2Rpc3BsYXlfYWZmaW5p dHkgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLAorCQkJCSAgICAgb21wZF93b3JkX3Qg Kik7CitvbXBkX3JjX3Qgb21wZF9nZXRfYWZmaW5pdHlfZm9ybWF0IChvbXBkX2FkZHJlc3Nfc3Bh Y2VfaGFuZGxlX3QgKiwKKwkJCQkgICAgY29uc3QgY2hhciAqKik7CitvbXBkX3JjX3Qgb21wZF9n ZXRfYWZmaW5pdHlfZm9ybWF0X2xlbiAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCisJ CQkJCW9tcGRfd29yZF90ICopOworb21wZF9yY190IG9tcGRfZ2V0X3dhaXRfcG9saWN5IChvbXBk X2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3Qgb21w ZF9nZXRfbnVtX3RlYW1zIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwgb21wZF93b3Jk X3QgKik7CitvbXBkX3JjX3Qgb21wZF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0IChvbXBkX2FkZHJl c3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICAgICAgb21wZF93b3JkX3QgKik7CitvbXBkX3Jj X3Qgb21wZF9nZXRfc3Bpbl9jb3VudCAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosIG9t cGRfd29yZF90ICopOworb21wZF9yY190IG9tcGRfZ2V0X2F2YWlsYWJsZV9jcHVzIChvbXBkX2Fk ZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNf dCBvbXBkX2dldF90aHJvdHRsZWRfc3Bpbl9jb3VudCAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICosCisJCQkJCSBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBvbXBkX2dldF9tYW5hZ2Vk X3RocmVhZHMgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLAorCQkJCSAgICBvbXBkX3dv cmRfdCAqKTsKKy8qRW5kIG9mIEdsb2JhbCBJQ1ZzLiAgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVz Cit9IC8vIGV4dGVybiBDCisjZW5kaWYKKworI2VuZGlmIC8qIF9PTVBEX0hFTFBFUl9IICovCmRp ZmYgLS1naXQgYS9saWJnb21wL29tcGQtaWN2LmMgYi9saWJnb21wL29tcGQtaWN2LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcyODJmZmNmZjZlCi0tLSAvZGV2L251 bGwKKysrIGIvbGliZ29tcC9vbXBkLWljdi5jCkBAIC0wLDAgKzEsMTk0IEBACisvKiBDb3B5cmln aHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb250cmlidXRl ZCBieSBNb2hhbWVkIEF0ZWYgPG1vaGFtZWRhdGVmMTY5OEBnbWFpbC5jb20+LgorICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNzaW5nIExp YnJhcnkKKyAgIChsaWJnb21wKS4KKyAgIExpYmdvbXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9w dGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorICAgTGliZ29tcCBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKKyAgIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MKKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgICBtb3JlIGRldGFpbHMuCisgICBVbmRlciBT ZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyAg IHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRp b24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0NDIFJ1bnRpbWUg TGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07CisgICBzZWUgdGhlIGZp bGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBz ZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIFRoaXMgZmls ZSBjb250YWlucyBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiA1LjUuOCBh bmQgNS41LjkKKyAgaW4gT3Blbk1QIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZSB2 NS4xLiAgKi8KKworI2luY2x1ZGUgIm9tcGQtaGVscGVyLmgiCisKK3N0YXRpYyBjb25zdCBjaGFy ICpvbXBkX2ljdl9zdHJpbmdbXSA9IHsgInVuZGVmaW5lZCIsCisgICNkZWZpbmUgb21wZF9pY3Zf aXRlcmF0b3IodmFyX25hbWUsIHN0cmluZ19uYW1lLCBzY29wZSkgc3RyaW5nX25hbWUsCisgICAg Rk9SRUFDSF9PTVBEX0lDViAob21wZF9pY3ZfaXRlcmF0b3IpCisgICN1bmRlZiBvbXBkX2ljdl9p dGVyYXRvcgorfTsKKworc3RhdGljIGNvbnN0IG9tcGRfc2NvcGVfdCBvbXBkX2ljdl9zY29wZVtd ID0ge29tcGRfc2NvcGVfZ2xvYmFsLAorICAjZGVmaW5lIG9tcGRfaWN2X2l0ZXJhdG9yKHZhcl9u YW1lLCBzdHJpbmdfbmFtZSwgc2NvcGUpIHNjb3BlLAorICAgIEZPUkVBQ0hfT01QRF9JQ1YgKG9t cGRfaWN2X2l0ZXJhdG9yKQorICAjdW5kZWYgb21wZF9pY3ZfaXRlcmF0b3IKK307CisKK29tcGRf cmNfdAorb21wZF9lbnVtZXJhdGVfaWN2cyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICph aCwKKyAgb21wZF9pY3ZfaWRfdCBjdXJyZW50LCBvbXBkX2ljdl9pZF90ICpuZXh0X2lkLCBjb25z dCBjaGFyICoqbmV4dF9pY3ZfbmFtZSwKKyAgb21wZF9zY29wZV90ICpuZXh0X3Njb3BlLCBpbnQg Km1vcmUpCit7CisgIGlmIChhaCA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hh bmRsZTsKKyAgaWYgKGN1cnJlbnQgKyAxID49IG9tcGRfbGFzdF9pY3ZfdmFyIHx8IG5leHRfaWQg PT0gTlVMTAorICAgIHx8IG5leHRfaWN2X25hbWUgPT0gTlVMTCB8fCBuZXh0X3Njb3BlID09IE5V TEwgfHwgbW9yZSA9PSBOVUxMKQorICAgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworICBp ZiAoY2FsbGJhY2tzID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfY2FsbGJhY2tfZXJyb3I7 CisgICpuZXh0X2lkID0gY3VycmVudCArIDE7CisgIGNoYXIgKnRlbXBfbmFtZSA9IE5VTEw7Cisg IG9tcGRfcmNfdCByZXQKKyAgICA9IGNhbGxiYWNrcy0+YWxsb2NfbWVtb3J5IChzdHJsZW4gKG9t cGRfaWN2X3N0cmluZ1sqbmV4dF9pZF0pICsgMSwKKwkJCSAgICAgICAodm9pZCAqKikgJnRlbXBf bmFtZSk7CisgIENIRUNLX1JFVCAocmV0KTsKKyAgc3RyY3B5ICh0ZW1wX25hbWUsIG9tcGRfaWN2 X3N0cmluZ1sqbmV4dF9pZF0pOworICAqbmV4dF9pY3ZfbmFtZSA9IHRlbXBfbmFtZTsKKyAgKm5l eHRfc2NvcGUgPSBvbXBkX2ljdl9zY29wZVsqbmV4dF9pZF07CisgIGlmICgoKm5leHRfaWQpICsg MSA8IG9tcGRfbGFzdF9pY3ZfdmFyKQorICAgICptb3JlID0gMTsKKyAgZWxzZQorICAgICptb3Jl ID0gMDsKKyAgcmV0dXJuIG9tcGRfcmNfb2s7Cit9CisKK29tcGRfcmNfdAorb21wZF9nZXRfaWN2 X2Zyb21fc2NvcGUgKHZvaWQgKmhhbmRsZSwgb21wZF9zY29wZV90IHNjb3BlLCBvbXBkX2ljdl9p ZF90IGljdl9pZCwKKyAgb21wZF93b3JkX3QgKmljdl92YWx1ZSkKK3sKKyAgaWYgKGhhbmRsZSA9 PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKyAgaWYgKGljdl92YWx1 ZSA9PSBOVUxMIHx8ICFpY3ZfaWQgfHwgaWN2X2lkID49IG9tcGRfbGFzdF9pY3ZfdmFyKQorICAg IHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKyAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKQorICAg IHJldHVybiBvbXBkX3JjX2NhbGxiYWNrX2Vycm9yOworICBvbXBkX2RldmljZV90IGRldmljZTsK KyAgc3dpdGNoIChzY29wZSkKKyAgICB7CisgICAgICBjYXNlIG9tcGRfc2NvcGVfYWRkcmVzc19z cGFjZToKKwlkZXZpY2UgPSAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUp LT5raW5kOworCWJyZWFrOworICAgICAgY2FzZSBvbXBkX3Njb3BlX3RocmVhZDoKKwlkZXZpY2Ug PSAoKG9tcGRfdGhyZWFkX2hhbmRsZV90ICopIGhhbmRsZSktPmFoLT5raW5kOworCWJyZWFrOwor ICAgICAgY2FzZSBvbXBkX3Njb3BlX3BhcmFsbGVsOgorCWRldmljZSA9ICgob21wZF9wYXJhbGxl bF9oYW5kbGVfdCAqKSBoYW5kbGUpLT5haC0+a2luZDsKKwlicmVhazsKKyAgICAgIGNhc2Ugb21w ZF9zY29wZV90YXNrOgorCWRldmljZSA9ICgob21wZF90YXNrX2hhbmRsZV90ICopIGhhbmRsZSkt PmFoLT5raW5kOworCWJyZWFrOworICAgICAgZGVmYXVsdDoKKwlyZXR1cm4gb21wZF9yY19iYWRf aW5wdXQ7CisgICAgfQorICAvKiBOTyBjdWRhIGZvciBub3cuICAqLworICBpZiAoZGV2aWNlID09 IE9NUERfREVWSUNFX0tJTkRfSE9TVCkKKyAgICB7CisgICAgICBzd2l0Y2ggKGljdl9pZCkKKwl7 CisJICBjYXNlIG9tcGRfaWN2X2NhbmNlbGxhdGlvbl92YXI6CisJICAgIHJldHVybgorCSAgICAg IG9tcGRfZ2V0X2NhbmNlbGxhdGlvbiAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBo YW5kbGUsCisJCQkJICAgICBpY3ZfdmFsdWUpOworCSAgY2FzZSBvbXBkX2ljdl9tYXhfdGFza19w cmlvcml0eV92YXI6CisJICAgIHJldHVybiBvbXBkX2dldF9tYXhfdGFza19wcmlvcml0eSAoKG9t cGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKQorCQkJCQkgICAgICAgaGFuZGxlLCBpY3ZfdmFs dWUpOworCSAgY2FzZSBvbXBkX2ljdl9zdGFja3NpemVfdmFyOgorCSAgICByZXR1cm4gb21wZF9n ZXRfc3RhY2tzaXplICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopIGhhbmRsZSwKKwkJ CQkgICAgICAgaWN2X3ZhbHVlKTsKKwkgIGNhc2Ugb21wZF9pY3ZfZGVidWdfdmFyOgorCSAgICBy ZXR1cm4gb21wZF9nZXRfZGVidWcgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKikgaGFu ZGxlLAorCQkJCSAgIGljdl92YWx1ZSk7CisJICBjYXNlIG9tcGRfaWN2X2Rpc3BsYXlfYWZmaW5p dHlfdmFyOgorCSAgICByZXR1cm4KKwkgICAgICBvbXBkX2dldF9kaXNwbGF5X2FmZmluaXR5ICgo b21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopIGhhbmRsZSwKKwkJCQkJIGljdl92YWx1ZSk7 CisJICBjYXNlIG9tcGRfaWN2X2FmZmluaXR5X2Zvcm1hdF92YXI6CisJICAgIHJldHVybiBvbXBk X3JjX2luY29tcGF0aWJsZTsKKwkgIGNhc2Ugb21wZF9pY3ZfYWZmaW5pdHlfZm9ybWF0X2xlbl92 YXI6CisJICAgIHJldHVybiBvbXBkX2dldF9hZmZpbml0eV9mb3JtYXRfbGVuICgob21wZF9hZGRy ZXNzX3NwYWNlX2hhbmRsZV90ICopCisJCQkJCQkgaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAgIGNh c2Ugb21wZF9pY3Zfd2FpdF9wb2xpY3lfdmFyOgorCSAgICAgcmV0dXJuIG9tcGRfZ2V0X3dhaXRf cG9saWN5ICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopaGFuZGxlLAorCQkJCQkgIGlj dl92YWx1ZSk7CisJICAgY2FzZSBvbXBkX2ljdl9udW1fdGVhbXNfdmFyOgorCSAgICAgcmV0dXJu IG9tcGRfZ2V0X251bV90ZWFtcyAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKWhhbmRs ZSwKKwkJCQkJaWN2X3ZhbHVlKTsKKwkgICBjYXNlIG9tcGRfaWN2X3RlYW1zX3RocmVhZF9saW1p dF92YXI6CisJICAgICByZXR1cm4gb21wZF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0ICgob21wZF9h ZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopCisJCQkJCQkgaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAg IGNhc2Ugb21wZF9pY3Zfc3Bpbl9jb3VudF92YXI6CisJICAgICByZXR1cm4gb21wZF9nZXRfc3Bp bl9jb3VudCAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUsCisJCQkJCSBp Y3ZfdmFsdWUpOworCSAgIGNhc2Ugb21wZF9pY3ZfbnVtX3Byb2NfdmFyOgorCSAgICAgcmV0dXJu CisJICAgICAgIG9tcGRfZ2V0X2F2YWlsYWJsZV9jcHVzICgob21wZF9hZGRyZXNzX3NwYWNlX2hh bmRsZV90ICopIGhhbmRsZSwKKwkJCQkJaWN2X3ZhbHVlKTsKKwkgICBjYXNlIG9tcGRfaWN2X3Ro cm90dGxlZF9zcGluX2NvdW50X3ZhcjoKKwkgICAgIHJldHVybgorCSAgICAgICBvbXBkX2dldF90 aHJvdHRsZWRfc3Bpbl9jb3VudCAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKQorCQkJ CQkgICAgICBoYW5kbGUsIGljdl92YWx1ZSk7CisJICAgY2FzZSBvbXBkX2ljdl9tYW5hZ2VkX3Ro cmVhZHNfdmFyOgorCSAgICAgcmV0dXJuCisJICAgICAgIG9tcGRfZ2V0X21hbmFnZWRfdGhyZWFk cyAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKQorCQkJCQkgaGFuZGxlLCBpY3ZfdmFs dWUpOworCSAgZGVmYXVsdDoKKwkgICAgcmV0dXJuIG9tcGRfcmNfdW5zdXBwb3J0ZWQ7CisJIH0K KyAgICB9CisgICAgcmV0dXJuIG9tcGRfcmNfZXJyb3I7Cit9CisKK29tcGRfcmNfdAorb21wZF9n ZXRfaWN2X3N0cmluZ19mcm9tX3Njb3BlICh2b2lkICpoYW5kbGUsIG9tcGRfc2NvcGVfdCBzY29w ZSwKKyAgb21wZF9pY3ZfaWRfdCBpY3ZfaWQsIGNvbnN0IGNoYXIgKippY3ZfdmFsdWUpCit7Cisg IGlmIChoYW5kbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7Cisg IGlmIChpY3ZfdmFsdWUgPT0gTlVMTCB8fCAhaWN2X2lkIHx8IGljdl9pZCA+PSBvbXBkX2xhc3Rf aWN2X3ZhcikKKyAgICByZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7CisgIGlmIChjYWxsYmFja3Mg PT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19jYWxsYmFja19lcnJvcjsKKyAgb21wZF9kZXZp Y2VfdCBkZXZpY2U7CisgIHN3aXRjaCAoc2NvcGUpCisgICAgeworICAgICAgY2FzZSBvbXBkX3Nj b3BlX2FkZHJlc3Nfc3BhY2U6CisJIGRldmljZSA9ICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICopIGhhbmRsZSktPmtpbmQ7CisJIGJyZWFrOworICAgICAgY2FzZSBvbXBkX3Njb3BlX3Ro cmVhZDoKKwkgZGV2aWNlID0gKChvbXBkX3RocmVhZF9oYW5kbGVfdCAqKSBoYW5kbGUpLT5haC0+ a2luZDsKKwkgYnJlYWs7CisgICAgICBjYXNlIG9tcGRfc2NvcGVfcGFyYWxsZWw6CisJIGRldmlj ZSA9ICgob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqKSBoYW5kbGUpLT5haC0+a2luZDsKKwkgYnJl YWs7CisgICAgICBjYXNlIG9tcGRfc2NvcGVfdGFzazoKKwkgZGV2aWNlID0gKChvbXBkX3Rhc2tf aGFuZGxlX3QgKikgaGFuZGxlKS0+YWgtPmtpbmQ7CisJIGJyZWFrOworICAgICAgZGVmYXVsdDoK KwkgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworICAgIH0KKyAgLyogTm8gY3VkYS4gICovCisg IGlmIChkZXZpY2UgPT0gT01QRF9ERVZJQ0VfS0lORF9IT1NUKQorICAgIHsKKyAgICAgIHN3aXRj aCAoaWN2X2lkKQorCSB7CisJICBjYXNlIG9tcGRfaWN2X2FmZmluaXR5X2Zvcm1hdF92YXI6CisJ ICAgIHJldHVybgorCSAgICAgIG9tcGRfZ2V0X2FmZmluaXR5X2Zvcm1hdCAoKG9tcGRfYWRkcmVz c19zcGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUsCisJCQkJCWljdl92YWx1ZSk7CisJICBkZWZhdWx0 OgorCSAgICByZXR1cm4gb21wZF9yY191bnN1cHBvcnRlZDsKKwkgfQorICAgIH0KKyAgcmV0dXJu IG9tcGRfcmNfZXJyb3I7Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL29tcGQtaW5pdC5jIGIvbGli Z29tcC9vbXBkLWluaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MDk4NDBiZDFkZGMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL29tcGQtaW5pdC5jCkBAIC0w LDAgKzEsMTMyIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisgICBDb250cmlidXRlZCBieSBNb2hhbWVkIEF0ZWYgPG1vaGFtZWRhdGVmMTY5 OEBnbWFpbC5jb20+LgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPZmZsb2FkaW5n IGFuZCBNdWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJnb21wKS4KKyAgIExpYmdvbXAg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBp dAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorICAg TGliZ29tcCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQgV0lUSE9VVCBBTlkKKyAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKKyAgIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgICBt b3JlIGRldGFpbHMuCisgICBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFy ZSBncmFudGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0ND IFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEg Y29weSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUg cmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisKKy8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaW1wbGVtZW50YXRpb24gb2Yg ZnVuY3Rpb25zIGRlZmluZWQgaW4KKyAgIHNlY3Rpb24gNS41LjEsIDUuNS4yLiAgKi8KKworI2lu Y2x1ZGUgIm9tcGQtaGVscGVyLmgiCisKKy8qIFBlciBPTVBEIGluaXRpYWxpemF0aW9uIGFuZCBm aW5hbGl6YXRpb24uICAqLworCitfX1VJTlQ2NF9UWVBFX18gZ29tcGRfc3RhdGU7Citjb25zdCBv bXBkX2NhbGxiYWNrc190ICpjYWxsYmFja3M7CisKK29tcGRfcmNfdAorb21wZF9pbml0aWFsaXpl IChvbXBkX3dvcmRfdCBhcGlfdmVyc2lvbiwKKyAgY29uc3Qgb21wZF9jYWxsYmFja3NfdCAqY2Fs bGJhY2tzX3RhYmxlKQoreworICBpZiAoY2FsbGJhY2tzX3RhYmxlID09IE5VTEwpCisgICAgcmV0 dXJuIG9tcGRfcmNfYmFkX2lucHV0OworCisgIG9tcGRfd29yZF90IHZlcnNpb247CisgIG9tcGRf cmNfdCByZXQgPSBvbXBkX2dldF9hcGlfdmVyc2lvbiAoJnZlcnNpb24pOworCisgIGlmICh2ZXJz aW9uICE9IGFwaV92ZXJzaW9uKQorICAgIHJldHVybiBvbXBkX3JjX3Vuc3VwcG9ydGVkOworCisg IGNhbGxiYWNrcyA9IGNhbGxiYWNrc190YWJsZTsKKyAgcmV0dXJuIHJldDsKK30KKworb21wZF9y Y190CitvbXBkX2dldF9hcGlfdmVyc2lvbiAob21wZF93b3JkX3QgKnZlcnNpb24pCit7CisgIGlm ICh2ZXJzaW9uID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworCisgICp2 ZXJzaW9uID0gVkVSU0lPTjsKKyAgcmV0dXJuIG9tcGRfcmNfb2s7Cit9CisKK29tcGRfcmNfdAor b21wZF9nZXRfdmVyc2lvbl9zdHJpbmcgKGNvbnN0IGNoYXIgKipzdHJpbmcpCit7CisgIGlmIChz dHJpbmcgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7CisgIHN0YXRpYyBj b25zdCBjaGFyIHRtcF9zdHJpbmdbXQorICAgID0gIkdOVSBPcGVuTVAgcnVudGltZSBpbXBsZW1l bnRpbmcgT01QRCB2ZXJzaW9uICIKKyAgICAgIHN0cmluZ2l6ZSAoVkVSU0lPTikgIiBEZWJ1Z2dp bmcgbGlicmFyeSI7CisgICpzdHJpbmcgPSB0bXBfc3RyaW5nOworICByZXR1cm4gb21wZF9yY19v azsKK30KKworb21wZF9yY190CitvbXBkX2ZpbmFsaXplICgpCit7CisgIHJldHVybiBvbXBkX3Jj X29rOworfQorCisvKiBQZXIgcHJvY2VzcyBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9u LiAgKi8KKworb21wZF9yY190CitvbXBkX3Byb2Nlc3NfaW5pdGlhbGl6ZSAob21wZF9hZGRyZXNz X3NwYWNlX2NvbnRleHRfdCAqY29udGV4dCwKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90 ICoqaGFuZGxlKQoreworICBpZiAoY29udGV4dCA9PSBOVUxMIHx8IGhhbmRsZSA9PSBOVUxMKQor ICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKworICBvbXBkX3JjX3QgcmV0ID0gZ2V0X3Np emVzIChjb250ZXh0KTsKKyAgaWYgKHJldCAhPSBvbXBkX3JjX29rKQorICAgIHJldHVybiByZXQ7 CisKKyAgLyogTmFpdmUgd2F5IHRvIHJlYWQgZnJvbSBtZW1vcnkuICAqLworICBvbXBkX2FkZHJl c3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBHRVRf VkFMVUUgKGNvbnRleHQsIE5VTEwsICJnb21wZF9zdGF0ZSIsIGdvbXBkX3N0YXRlLCBnb21wZF9z dGF0ZSwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZ19sb25nLCAxLCByZXQsIHN5bWJv bF9hZGRyKTsKKworICByZXQgPSBjYWxsYmFja3MtPmFsbG9jX21lbW9yeSAoc2l6ZW9mIChvbXBk X2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QpLAorCQkJCSAodm9pZCAqKikgKGhhbmRsZSkpOworCisg IGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1cm4gcmV0OworCisgIGlmIChoYW5kbGUg PT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19lcnJvcjsKKworICAoKmhhbmRsZSktPmNvbnRl eHQgPSBjb250ZXh0OworICAoKmhhbmRsZSktPmtpbmQgPSBPTVBEX0RFVklDRV9LSU5EX0hPU1Q7 CisgIHJldHVybiByZXQ7Cit9CisKKy8qIE9NUEQgd2lsbCBub3Qgc3VwcG9ydCBHUFVzIGZvciBu b3cuICAqLworCitvbXBkX3JjX3QKK29tcGRfZGV2aWNlX2luaXRpYWxpemUgKG9tcGRfYWRkcmVz c19zcGFjZV9oYW5kbGVfdCAqcHJvY2Vzc19oYW5kbGUsCisgIG9tcGRfYWRkcmVzc19zcGFjZV9j b250ZXh0X3QgKmRldmljZV9jb250ZXh0LCBvbXBkX2RldmljZV90IGtpbmQsCisgIG9tcGRfc2l6 ZV90IHNpemVvZl9pZCwgdm9pZCAqaWQsCisgIG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAq KmRldmljZV9oYW5kbGUpCisKK3sKKyAgaWYgKGRldmljZV9jb250ZXh0ID09IE5VTEwpCisgICAg cmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworCisgIHJldHVybiBvbXBkX3JjX3Vuc3VwcG9ydGVk OworfQorCisKK29tcGRfcmNfdAorb21wZF9yZWxfYWRkcmVzc19zcGFjZV9oYW5kbGUgKG9tcGRf YWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqaGFuZGxlKQoreworICBpZiAoaGFuZGxlID09IE5VTEwp CisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxlOworCisgIG9tcGRfcmNfdCByZXQgPSBj YWxsYmFja3MtPmZyZWVfbWVtb3J5ICgodm9pZCAqKSBoYW5kbGUpOworICByZXR1cm4gcmV0Owor fQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBkLXN1cHBvcnQuYyBiL2xpYmdvbXAvb21wZC1zdXBw b3J0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxNjAwNzE0ODg2 Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9vbXBkLXN1cHBvcnQuYwpAQCAtMCwwICsxLDEy NyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorICAgQ29udHJpYnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwu Y29tPi4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVs dGkgUHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz LCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJ VEhPVVQgQU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRh aWxzLgorICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRl ZCBhZGRpdGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1l IExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2Yg dGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OworICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3Rp dmVseS4gIElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LworCisjaW5jbHVkZSAib21wZC1zdXBwb3J0LmgiCisKKyNkZWZpbmUgZ29tcGRfZGVjbGFyZV9h Y2Nlc3ModCwgbSkgX19VSU5UNjRfVFlQRV9fIGdvbXBkX2FjY2Vzc18jI3QjI18jI207CisgIEdP TVBEX0ZPUkVBQ0hfQUNDRVNTIChnb21wZF9kZWNsYXJlX2FjY2VzcykKKyN1bmRlZiBnb21wZF9k ZWNsYXJlX2FjY2VzcworCisjZGVmaW5lIGdvbXBkX2RlY2xhcmVfc2l6ZW9mX21lbWJlcnModCwg bSkgXAorICBfX1VJTlQ2NF9UWVBFX18gZ29tcGRfc2l6ZW9mXyMjdCMjXyMjbTsKKyAgR09NUERf Rk9SRUFDSF9BQ0NFU1MgKGdvbXBkX2RlY2xhcmVfc2l6ZW9mX21lbWJlcnMpCisjdW5kZWYgZ29t cGRfZGVjbGFyZV9zaXplb2ZfbWVtYmVycworCisjZGVmaW5lIGdvbXBkX2RlY2xhcmVfc2l6ZXMo dCkgX19VSU5UNjRfVFlQRV9fIGdvbXBkX3NpemVvZl8jI3Q7CisgIEdPTVBEX1NJWkVTIChnb21w ZF9kZWNsYXJlX3NpemVzKQorI3VuZGVmIGdvbXBkX2RlY2xhcmVfc2l6ZXMKKworY29uc3QgY2hh ciAqKm9tcGRfZGxsX2xvY2F0aW9ucyA9IE5VTEw7CitfX1VJTlQ2NF9UWVBFX18gZ29tcGRfc3Rh dGU7CisKK3ZvaWQKK2dvbXBkX2xvYWQgKCkKK3sKKyAgY29uc3QgY2hhciAqb21wZF9lbnZfdmFy ID0gZ2V0ZW52ICgiT01QX0RFQlVHIik7CisgIGlmIChvbXBkX2Vudl92YXIgPT0gTlVMTCB8fCBz dHJjbXAgKG9tcGRfZW52X3ZhciwgImVuYWJsZWQiKSkKKyAgICByZXR1cm47CisKKyAgLyogR2V0 IHRoZSBvZmZzZXQgb2YgdGhlIHN0cnVjdCBtZW1iZXJzLiAgKi8KKyAgI2RlZmluZSBnb21wZF9p bml0X2FjY2Vzcyh0LCBtKSAgXAorICAgIGdvbXBkX2FjY2Vzc18jI3QjI18jI20gPSAoX19VSU5U NjRfVFlQRV9fKSAmICgoKHN0cnVjdCB0ICopIE5VTEwpLT5tKTsKKyAgICBHT01QRF9GT1JFQUNI X0FDQ0VTUyAoZ29tcGRfaW5pdF9hY2Nlc3MpOworICAjdW5kZWYgZ29tcGRfaW5pdF9hY2Nlc3MK KworICAvKiBHZXQgc2l6ZW9mIG1lbWJlcnMuICAqLworCisgICNkZWZpbmUgZ29tcGRfaW5pdF9z aXplb2ZfbWVtYmVycyh0LCBtKSBcCisgICAgZ29tcGRfc2l6ZW9mXyMjdCMjXyMjbSA9IHNpemVv ZiAoKChzdHJ1Y3QgdCAqKSBOVUxMKS0+bSk7CisgICAgR09NUERfRk9SRUFDSF9BQ0NFU1MgKGdv bXBkX2luaXRfc2l6ZW9mX21lbWJlcnMpOworICAjdW5kZWYgZ29tcGRfZGVjbGFyZV9zaXplb2Zf bWVtYmVycworCisgICNkZWZpbmUgZ29tcGRfaW5pdF9zaXplcyh0KSBnb21wZF9zaXplb2ZfIyN0 ID0gc2l6ZW9mIChzdHJ1Y3QgdCk7CisgICAgR09NUERfU0laRVMgKGdvbXBkX2luaXRfc2l6ZXMp CisgICN1bmRlZiBnb21wZF9pbml0X3NpemVzCisKKyAgZ29tcF9kZWJ1ZyAoMiwgIk9NUCBPTVBE IGFjdGl2ZVxuIik7CisgIHN0YXRpYyBjb25zdCBjaGFyICpvbXBkX2RsbF9sb2NhdGlvbnNfYXJy YXlbMl0KKyAgICA9IHsibGliZ29tcGQiIFNPTkFNRV9TVUZGSVggKDEpICwgTlVMTH07CisgIGdv bXBkX3N0YXRlIHw9IE9NUERfRU5BQkxFRDsKKyAgb21wZF9kbGxfbG9jYXRpb25zID0gJm9tcGRf ZGxsX2xvY2F0aW9uc19hcnJheVswXTsKKyAgb21wZF9kbGxfbG9jYXRpb25zX3ZhbGlkICgpOwor fQorCisjaWZuZGVmIF9fRUxGX18KKy8qIER1bW15IGZ1bmN0aW9ucy4gdGhleSBzaG91ZCBub3Qg YmUgb3B0aW1pemVkLiAgKi8KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorb21w ZF9kbGxfbG9jYXRpb25zX3ZhbGlkICgpCit7CisgIGFzbSAoIiIpOworfQorCit2b2lkIF9fYXR0 cmlidXRlX18gKChub2lubGluZSkpCitvbXBkX2JwX3BhcmFsbGVsX2JlZ2luICgpCit7CisgIGFz bSAoIiIpOworfQorCit2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCitvbXBkX2JwX3Bh cmFsbGVsX2VuZCAoKQoreworICBhc20gKCIiKTsKK30KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgo bm9pbmxpbmUpKQorb21wZF9icF90YXNrX2JlZ2luICgpCit7CisgIGFzbSAoIiIpOworfQorCit2 b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCitvbXBkX2JwX3Rhc2tfZW5kICgpCit7Cisg IGFzbSAoIiIpOworfQorCit2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCitvbXBkX2Jw X3RocmVhZF9iZWdpbiAoKQoreworICBhc20gKCIiKTsKK30KKwordm9pZCBfX2F0dHJpYnV0ZV9f ICgobm9pbmxpbmUpKQorb21wZF9icF90aHJlYWRfZW5kICgpCit7CisgIGFzbSAoIiIpOworfQor Cit2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCitvbXBkX2JwX2RldmljZV9iZWdpbiAo KQoreworICBhc20gKCIiKTsKK30KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQor b21wZF9icF9kZXZpY2VfZW5kICgpCit7CisgIGFzbSAoIiIpOworfQorI2VuZGlmIC8qIF9fRUxG X18qLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBkLXN1cHBvcnQuaCBiL2xpYmdvbXAvb21wZC1z dXBwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ2MGZjNTU4 NGU5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9vbXBkLXN1cHBvcnQuaApAQCAtMCwwICsx LDU3IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisgICBDb250cmlidXRlZCBieSBNb2hhbWVkIEF0ZWYgPG1vaGFtZWRhdGVmMTY5OEBnbWFp bC5jb20+LgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPZmZsb2FkaW5nIGFuZCBN dWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJnb21wKS4KKyAgIExpYmdvbXAgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorICAgTGliZ29t cCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg V0lUSE9VVCBBTlkKKyAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgICBtb3JlIGRl dGFpbHMuCisgICBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFu dGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRp bWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBv ZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVj dGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisKKy8qVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBydW50aW1lIHN1cHBvcnQgZm9yIGdvbXBk LiAgKi8KKworI2lmbmRlZiBfT01QRF9TVVBQT1JUX0gKKyNkZWZpbmUgX09NUERfU1VQUE9SVF9I CisKKyNpbmNsdWRlICJvbXAtdG9vbHMuaCIKKyNpbmNsdWRlICJwbHVnaW4tc3VmZml4LmgiCisj aW5jbHVkZSAibGliZ29tcC5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxp Yi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKK3ZvaWQgZ29t cGRfbG9hZCAoKTsKK2V4dGVybiBfX1VJTlQ2NF9UWVBFX18gZ29tcGRfc3RhdGU7CisKKyNkZWZp bmUgT01QRF9FTkFCTEVEIDB4MQorCisjZGVmaW5lIEdPTVBEX0ZPUkVBQ0hfQUNDRVNTKGdvbXBk X2FjY2VzcykgXAorICAgZ29tcGRfYWNjZXNzIChnb21wX3Rhc2tfaWN2LCBudGhyZWFkc192YXIp IFwKKyAgIGdvbXBkX2FjY2VzcyAoZ29tcF90YXNrX2ljdiwgcnVuX3NjaGVkX3ZhcikgXAorICAg Z29tcGRfYWNjZXNzIChnb21wX3Rhc2tfaWN2LCBydW5fc2NoZWRfY2h1bmtfc2l6ZSkgXAorICAg Z29tcGRfYWNjZXNzIChnb21wX3Rhc2tfaWN2LCBkZWZhdWx0X2RldmljZV92YXIpIFwKKyAgIGdv bXBkX2FjY2VzcyAoZ29tcF90YXNrX2ljdiwgdGhyZWFkX2xpbWl0X3ZhcikgXAorICAgZ29tcGRf YWNjZXNzIChnb21wX3Rhc2tfaWN2LCBkeW5fdmFyKSBcCisgICBnb21wZF9hY2Nlc3MgKGdvbXBf dGFza19pY3YsIGJpbmRfdmFyKSBcCisgICBnb21wZF9hY2Nlc3MgKGdvbXBfdGhyZWFkLCB0YXNr KSBcCisgICBnb21wZF9hY2Nlc3MgKGdvbXBfdGhyZWFkX3Bvb2wsIHRocmVhZHMpIFwKKyAgIGdv bXBkX2FjY2VzcyAoZ29tcF90aHJlYWQsIHRzKSBcCisgICBnb21wZF9hY2Nlc3MgKGdvbXBfdGVh bV9zdGF0ZSwgdGVhbV9pZCkgXAorCisjZGVmaW5lIEdPTVBEX1NJWkVTKGdvbXBkX3NpemUpIFwK KyAgIGdvbXBkX3NpemUgKGdvbXBfdGhyZWFkKSBcCisgICBnb21wZF9zaXplIChnb21wX3Rhc2tf aWN2KSBcCisgICBnb21wZF9zaXplIChnb21wX3Rhc2spCisKKyNlbmRpZiAvKiBfT01QRF9TVVBQ T1JUX0ggKi8KZGlmZiAtLWdpdCBhL2xpYmdvbXAvb21wZC10eXBlcy5oLmluIGIvbGliZ29tcC9v bXBkLXR5cGVzLmguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1 YmZiMmYzN2NmCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9vbXBkLXR5cGVzLmguaW4KQEAg LTAsMCArMSw1NCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorICAgQ29udHJpYnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2 OThAZ21haWwuY29tPi4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGlu ZyBhbmQgTXVsdGkgUHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21w IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAg IExpYmdvbXAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgYnV0IFdJVEhPVVQgQU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAg bW9yZSBkZXRhaWxzLgorICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBh cmUgZ3JhbnRlZCBhZGRpdGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdD QyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBh IGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOworICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1F IHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworCisvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHR5cGVzIG5lZWRlZCBmb3Ig T01QRCBpbXBsZW1lbnRhdGlvbi4gICovCisKKyNpZm5kZWYgX09NUERfVFlQRVNfSAorI2RlZmlu ZSBfT01QRF9UWVBFU19ICisKKyNpZmRlZiBfX2NwdWxzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k aWYKKworI2RlZmluZSBPTVBEX1RZUEVTX1ZFUlNJT04gICAyMDE4MDkwNiAvKiBZWVlZTU1ERCBG b3JtYXQuICAqLworCisvKiBLaW5kcyBvZiBkZXZpY2UgdGhyZWFkcy4gICovCisjZGVmaW5lIE9N UERfVEhSRUFEX0lEX1BUSFJFQUQgICAgICAoKG9tcGRfdGhyZWFkX2lkX3QpMCkKKyNkZWZpbmUg T01QRF9USFJFQURfSURfTFdQICAgICAgICAgICgob21wZF90aHJlYWRfaWRfdCkxKQorI2RlZmlu ZSBPTVBEX1RIUkVBRF9JRF9XSU5USFJFQUQgICAgKChvbXBkX3RocmVhZF9pZF90KTIpCisKKy8q IFRoZSByYW5nZSBvZiBub24tc3RhbmRhcmQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB2YWx1ZXMu ICAqLworI2RlZmluZSBPTVBEX1RIUkVBRF9JRF9MTyAgICAgICAoKG9tcGRfdGhyZWFkX2lkX3Qp MTAwMDAwMCkKKyNkZWZpbmUgT01QRF9USFJFQURfSURfSEkgICAgICAgKChvbXBkX3RocmVhZF9p ZF90KTExMDAwMDApCisKKy8qIE1lbW9yeSBBY2Nlc3MgU2VnbWVudCBkZWZpbml0aW9ucyBmb3Ig SG9zdCBhbmQgVGFyZ2V0IERldmljZXMuICAqLworI2RlZmluZSBPTVBEX1NFR01FTlRfVU5TUEVD SUZJRUQgICAgICAgICAgICAgKChvbXBkX3NlZ190KTApCisKKy8qIEtpbmRzIG9mIGRldmljZSBk ZXZpY2UgYWRkcmVzcyBzcGFjZXMuICAqLworI2RlZmluZSBPTVBEX0RFVklDRV9LSU5EX0hPU1Qg ICAgICgob21wZF9kZXZpY2VfdCkxKQorCisvKiBUaGUgcmFuZ2Ugb2Ygbm9uLXN0YW5kYXJkIGlt cGxlbWVudGF0aW9uIGRlZmluZWQgdmFsdWVzLiAgKi8KKyNkZWZpbmUgT01QRF9ERVZJQ0VfSU1Q TF9MTyAgICAgICAoKG9tcGRfZGV2aWNlX3QpMTAwMDAwMCkKKyNkZWZpbmUgT01QRF9ERVZJQ0Vf SU1QTF9ISSAgICAgICAoKG9tcGRfZGV2aWNlX3QpMTEwMDAwMCkKKworI2lmZGVmIF9fY3BsdXNw bHVzCit9IC8vIGV4dGVybiBDCisjZW5kaWYKKyNlbmRpZiAvKiBfT01QRF9UWVBFU19IICovCmRp ZmYgLS1naXQgYS9saWJnb21wL3RlYW0uYyBiL2xpYmdvbXAvdGVhbS5jCmluZGV4IGNiNjg3NWQ3 MGZhLi4yOTk4NGJhZmJiZSAxMDA2NDQKLS0tIGEvbGliZ29tcC90ZWFtLmMKKysrIGIvbGliZ29t cC90ZWFtLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJwb29sLmgiCiAjaW5jbHVkZSA8 c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAib21wZC1zdXBwb3J0Lmgi CgogI2lmZGVmIExJQkdPTVBfVVNFX1BUSFJFQURTCiBwdGhyZWFkX2F0dHJfdCBnb21wX3RocmVh ZF9hdHRyOwpAQCAtMzIxLDYgKzMyMiw3IEBAIGdvbXBfdGVhbV9zdGFydCAodm9pZCAoKmZuKSAo dm9pZCAqKSwgdm9pZCAqZGF0YSwgdW5zaWduZWQgbnRocmVhZHMsCiAJCSB1bnNpZ25lZCBmbGFn cywgc3RydWN0IGdvbXBfdGVhbSAqdGVhbSwKIAkJIHN0cnVjdCBnb21wX3Rhc2tncm91cCAqdGFz a2dyb3VwKQogeworICBvbXBkX2JwX3BhcmFsbGVsX2JlZ2luICgpOwogICBzdHJ1Y3QgZ29tcF90 aHJlYWRfc3RhcnRfZGF0YSAqc3RhcnRfZGF0YSA9IE5VTEw7CiAgIHN0cnVjdCBnb21wX3RocmVh ZCAqdGhyLCAqbnRocjsKICAgc3RydWN0IGdvbXBfdGFzayAqdGFzazsKQEAgLTEwMTEsNiArMTAx Myw3IEBAIGdvbXBfdGVhbV9lbmQgKHZvaWQpCiAgICAgICBwb29sLT5sYXN0X3RlYW0gPSB0ZWFt OwogICAgICAgZ29tcF9yZWxlYXNlX3RocmVhZF9wb29sIChwb29sKTsKICAgICB9CisgIG9tcGRf YnBfcGFyYWxsZWxfZW5kICgpOwogfQoKICNpZmRlZiBMSUJHT01QX1VTRV9QVEhSRUFEUwo= --00000000000082350605da4dc949--