From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by sourceware.org (Postfix) with ESMTPS id 1B46938485B4 for ; Tue, 10 May 2022 05:21:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1B46938485B4 Received: by mail-wm1-x333.google.com with SMTP id r1-20020a1c2b01000000b00394398c5d51so685565wmr.2 for ; Mon, 09 May 2022 22:21:32 -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=g0NFg6ZhD1DXhYRXmzWdb8qy+mapCADHzO8oRh8kZZg=; b=cf+XfR62VDl+G57GpXzrLoYuxKBH8zVlhPQWv2x+j6v8R+ssl/huf9z9e03ZQzg53m KnvU+ICmlth/rJTNdILKVibBMo35hLlSh3YtLqNoJIM6s+PvSsS9eww5TifXKPIa7idI Wtyi2LM+F00VvIW1CKCBAj4sPuUkNMHG+8V3vnmRrnea5j3qRt1ZdSdm8ErW2AVRr+Hy 2/nA4h1yxAREJeFnTG7mgVZY3E/MzWlNnc1L1u1bkNADo8LO8Sb1SA9yi59gxrmJILjS aL40I9flrHiqGHS+Km3PYplaQbcnYCdhf21M+12Pf4ufT5BbYrJVRQSY9JXUC7Rx29vk yrtA== X-Gm-Message-State: AOAM532CDtH0tv+o095mtTghDVEwxz6ESdBHvbdGtBHZL6pHxDcLHnO+ pdb4OodwQEJ9zIKqqhTK3wRJ4V7iDyC2Bcz3H8WOySphxQg= X-Google-Smtp-Source: ABdhPJwVsOodeijWRp98BYUYy+BiEgzg5c1SwZM8LRbKn4Z7wYd+I6weUshfttGGwmXy/efHUFCC6gKXExpAxSXeqAw= X-Received: by 2002:a1c:19c3:0:b0:392:9cef:e32b with SMTP id 186-20020a1c19c3000000b003929cefe32bmr19761653wmz.116.1652160090412; Mon, 09 May 2022 22:21:30 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mohamed Atef Date: Tue, 10 May 2022 07:21:18 +0200 Message-ID: Subject: Re: libgompd: ADD OMPD support and global ICV functions To: gcc-patches@gcc.gnu.org, Jakub Jelinek Content-Type: multipart/mixed; boundary="0000000000004d394305dea17fd0" X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, KAM_SHORT, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 May 2022 05:21:39 -0000 --0000000000004d394305dea17fd0 Content-Type: text/plain; charset="UTF-8" Resubmission. libgomp/ChangeLog 2022-05-10 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. (parse_debug): New function. (gompd_enabled): New Variable. (initialize_env): Call gompd_load. (initialize_env): Call parse_debug. *team.c: Include ompd-support.h. (gomp_team_start): Call ompd_bp_parallel_begin. (gomp_team_end): Call ompd_bp_parallel_end. (gomp_thread_start): Call ompd_bp_thread_start. *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, May 10, 2022 at 7:15 AM Mohamed Atef wrote: > This patch adds support to libgomp. I also added global ICV functions if > there are any variables to be added please inform me. > > > > libgomp/ChangeLog > > 2022-05-10 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. > (parse_debug): New function. > (gompd_enabled): New Variable. > (initialize_env): Call gompd_load. > (initialize_env): Call parse_debug. > *team.c: Include ompd-support.h. > (gomp_team_start): Call ompd_bp_parallel_begin. > (gomp_team_end): Call ompd_bp_parallel_end. > (gomp_thread_start): Call ompd_bp_thread_start. > *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. > > --0000000000004d394305dea17fd0 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_l2zpdhmn0 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvQ2hhbmdlTG9nIGIvbGliZ29tcC9DaGFuZ2VMb2cKaW5kZXgg NzkwNTU2NWM0MjAuLmY3MGY2YTkxYmViIDEwMDY0NAotLS0gYS9saWJnb21wL0NoYW5nZUxvZwor KysgYi9saWJnb21wL0NoYW5nZUxvZwpAQCAtODQyOSw3ICs4NDI5LDcgQEAKIAkqIGNvbmZpZy5o LmluOiBMaWtld2lzZS4KIAkqIGNvbmZpZy9wb3NpeC9hZmZpbml0eS5jOiBNb3ZlIHRvLi4uCiAJ KiBhZmZpbml0eS5jOiAuLi5oZXJlIChuZXcgZmlsZSkuICBHdWFyZCB1c2Ugb2YgUHRocmVhZHMt c3BlY2lmaWMKLQlpbnRlcmZhY2UgYnkgTElCR09NUF9VU0VfUFRIUkVBRFMuIAorCWludGVyZmFj ZSBieSBMSUJHT01QX1VTRV9QVEhSRUFEUy4KIAkqIGNyaXRpY2FsLmM6IFNwbGl0IG91dCBHT01Q X2F0b21pY197c3RhcnQsZW5kfSBpbnRvLi4uCiAJKiBhdG9taWMuYzogLi4uaGVyZSAobmV3IGZp bGUpLgogCSogZW52LmM6IFNwbGl0IG91dCBJQ1YgZGVmaW5pdGlvbnMgaW50by4uLgpkaWZmIC0t Z2l0IGEvbGliZ29tcC9NYWtlZmlsZS5hbSBiL2xpYmdvbXAvTWFrZWZpbGUuYW0KaW5kZXggZjhi MmEwNmQ2M2UuLjAxZTQ1OWQyNmMxIDEwMDY0NAotLS0gYS9saWJnb21wL01ha2VmaWxlLmFtCisr KyBiL2xpYmdvbXAvTWFrZWZpbGUuYW0KQEAgLTIwLDcgKzIwLDcgQEAgQU1fQ1BQRkxBR1MgPSAk KGFkZHByZWZpeCAtSSwgJChzZWFyY2hfcGF0aCkpCiBBTV9DRkxBR1MgPSAkKFhDRkxBR1MpCiBB TV9MREZMQUdTID0gJChYTERGTEFHUykgJChTRUNUSU9OX0xERkxBR1MpICQoT1BUX0xERkxBR1Mp CiAKLXRvb2xleGVjbGliX0xUTElCUkFSSUVTID0gbGliZ29tcC5sYQordG9vbGV4ZWNsaWJfTFRM SUJSQVJJRVMgPSBsaWJnb21wLmxhIGxpYmdvbXBkLmxhCiBub2Rpc3RfdG9vbGV4ZWNsaWJfSEVB REVSUyA9IGxpYmdvbXAuc3BlYwogCiBpZiBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQgpA QCAtMzIsMTMgKzMyLDIxIEBAIGxpYmdvbXAudmVyOiAkKHRvcF9zcmNkaXIpL2xpYmdvbXAubWFw CiAJJChFR1JFUCkgLXYgJyMoI3wgfCQkKScgJDwgfCBcCiAJICAkKFBSRVBST0NFU1MpIC1QIC1p bmNsdWRlIGNvbmZpZy5oIC0gPiAkQCB8fCAocm0gLWYgJEAgOyBleGl0IDEpCiAKK2xpYmdvbXBk LnZlcjogJCh0b3Bfc3JjZGlyKS9saWJnb21wZC5tYXAKKwkkKEVHUkVQKSAtdiAnIygjfCB8JCQp JyAkPCB8IFwKKwkgICQoUFJFUFJPQ0VTUykgLVAgLWluY2x1ZGUgY29uZmlnLmggLSA+ICRAIHx8 IChybSAtZiAkQCA7IGV4aXQgMSkKKwogaWYgTElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJf R05VCiBsaWJnb21wX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC0tdmVyc2lvbi1zY3JpcHQsbGliZ29t cC52ZXIKK2xpYmdvbXBkX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC0tdmVyc2lvbi1zY3JpcHQsbGli Z29tcGQudmVyCiBsaWJnb21wX3ZlcnNpb25fZGVwID0gbGliZ29tcC52ZXIKK2xpYmdvbXBkX3Zl cnNpb25fZGVwID0gbGliZ29tcGQudmVyCiBlbmRpZgogaWYgTElCR09NUF9CVUlMRF9WRVJTSU9O RURfU0hMSUJfU1VOCiBsaWJnb21wX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC1NLGxpYmdvbXAudmVy LXN1bgorbGliZ29tcGRfdmVyc2lvbl9zY3JpcHQgPSAtV2wsLU0sbGliZ29tcGQudmVyLXN1bgog bGliZ29tcF92ZXJzaW9uX2RlcCA9IGxpYmdvbXAudmVyLXN1bgorbGliZ29tcGRfdmVyc2lvbl9k ZXAgPSBsaWJnb21wZC52ZXItc3VuCiBsaWJnb21wLnZlci1zdW4gOiBsaWJnb21wLnZlciBcCiAJ CSQodG9wX3NyY2RpcikvLi4vY29udHJpYi9tYWtlX3N1bnZlci5wbCBcCiAJCSQobGliZ29tcF9s YV9PQkpFQ1RTKSAkKGxpYmdvbXBfbGFfTElCQUREKQpAQCAtNDgsMTYgKzU2LDM0IEBAIGxpYmdv bXAudmVyLXN1biA6IGxpYmdvbXAudmVyIFwKIAkgYGVjaG8gJChsaWJnb21wX2xhX0xJQkFERCkg fCBcCiAJICAgIHNlZCAncywvXChbXi8uXSpcKVwubGEsLy5saWJzL1wxLmEsZydgIFwKIAkgPiAk QCB8fCAocm0gLWYgJEAgOyBleGl0IDEpCisKK2xpYmdvbXBkLnZlci1zdW4gOiBsaWJnb21wZC52 ZXIgXAorCQkkKHRvcF9zcmNkaXIpLy4uL2NvbnRyaWIvbWFrZV9zdW52ZXIucGwgXAorCQkkKGxp YmdvbXBkX2xhX09CSkVDVFMpICQobGliZ29tcGRfbGFfTElCQUREKQorCXBlcmwgJCh0b3Bfc3Jj ZGlyKS8uLi9jb250cmliL21ha2Vfc3VudmVyLnBsIFwKKwkgIGxpYmdvbXBkLnZlciBcCisJICAk KGxpYmdvbXBkX2xhX09CSkVDVFM6JS5sbz0ubGlicy8lLm8pIFwKKwkgYGVjaG8gJChsaWJnb21w ZF9sYV9MSUJBREQpIHwgXAorCSAgICBzZWQgJ3MsL1woW14vLl0qXClcLmxhLC8ubGlicy9cMS5h LGcnYCBcCisJID4gJEAgfHwgKHJtIC1mICRAIDsgZXhpdCAxKQorCiBlbmRpZgogZWxzZQogbGli Z29tcF92ZXJzaW9uX3NjcmlwdCA9CitsaWJnb21wZF92ZXJzaW9uX3NjcmlwdCA9CiBsaWJnb21w X3ZlcnNpb25fZGVwID0KK2xpYmdvbXBkX3ZlcnNpb25fZGVwID0KIGVuZGlmCiBsaWJnb21wX3Zl cnNpb25faW5mbyA9IC12ZXJzaW9uLWluZm8gJChsaWJ0b29sX1ZFUlNJT04pCitsaWJnb21wZF92 ZXJzaW9uX2luZm8gPSAtdmVyc2lvbi1pbmZvICQobGlidG9vbF9WRVJTSU9OKQogbGliZ29tcF9s YV9MREZMQUdTID0gJChsaWJnb21wX3ZlcnNpb25faW5mbykgJChsaWJnb21wX3ZlcnNpb25fc2Ny aXB0KSBcCiAgICAgICAgICQobHRfaG9zdF9mbGFncykKK2xpYmdvbXBkX2xhX0xERkxBR1MgPSAk KGxpYmdvbXBkX3ZlcnNpb25faW5mbykgJChsaWJnb21wZF92ZXJzaW9uX3NjcmlwdCkgXAorICAg ICAgICAkKGx0X2hvc3RfZmxhZ3MpCiBsaWJnb21wX2xhX0RFUEVOREVOQ0lFUyA9ICQobGliZ29t cF92ZXJzaW9uX2RlcCkKK2xpYmdvbXBkX2xhX0RFUEVOREVOQ0lFUyA9ICQobGliZ29tcGRfdmVy c2lvbl9kZXApCiBsaWJnb21wX2xhX0xJTksgPSAkKExJTkspICQobGliZ29tcF9sYV9MREZMQUdT KQorbGliZ29tcGRfbGFfTElOSyA9ICQoTElOSykgJChsaWJnb21wZF9sYV9MREZMQUdTKQogCiBs aWJnb21wX2xhX1NPVVJDRVMgPSBhbGxvYy5jIGF0b21pYy5jIGJhcnJpZXIuYyBjcml0aWNhbC5j IGVudi5jIGVycm9yLmMgXAogCWljdi5jIGljdi1kZXZpY2UuYyBpdGVyLmMgaXRlcl91bGwuYyBs b29wLmMgbG9vcF91bGwuYyBvcmRlcmVkLmMgXApAQCAtNjYsOCArOTIsOSBAQCBsaWJnb21wX2xh X1NPVVJDRVMgPSBhbGxvYy5jIGF0b21pYy5jIGJhcnJpZXIuYyBjcml0aWNhbC5jIGVudi5jIGVy cm9yLmMgXAogCXRhcmdldC5jIHNwbGF5LXRyZWUuYyBsaWJnb21wLXBsdWdpbi5jIG9hY2MtcGFy YWxsZWwuYyBvYWNjLWhvc3QuYyBcCiAJb2FjYy1pbml0LmMgb2FjYy1tZW0uYyBvYWNjLWFzeW5j LmMgb2FjYy1wbHVnaW4uYyBvYWNjLWN1ZGEuYyBcCiAJcHJpb3JpdHlfcXVldWUuYyBhZmZpbml0 eS1mbXQuYyB0ZWFtcy5jIGFsbG9jYXRvci5jIG9hY2MtcHJvZmlsaW5nLmMgXAotCW9hY2MtdGFy Z2V0LmMKKwlvYWNjLXRhcmdldC5jIG9tcGQtc3VwcG9ydC5jCiAKK2xpYmdvbXBkX2xhX1NPVVJD RVMgPSBvbXBkLWluaXQuYyBvbXBkLWhlbHBlci5jIG9tcGQtaWN2LmMKIGluY2x1ZGUgJCh0b3Bf c3JjZGlyKS9wbHVnaW4vTWFrZWZyYWcuYW0KIAogaWYgVVNFX0ZPUlRSQU4KQEAgLTc1LDcgKzEw Miw3IEBAIGxpYmdvbXBfbGFfU09VUkNFUyArPSBvcGVuYWNjLmY5MAogZW5kaWYKIAogbm9kaXN0 X25vaW5zdF9IRUFERVJTID0gbGliZ29tcF9mLmgKLW5vZGlzdF9saWJzdWJpbmNsdWRlX0hFQURF UlMgPSBvbXAuaCBvcGVuYWNjLmggYWNjX3Byb2YuaAorbm9kaXN0X2xpYnN1YmluY2x1ZGVfSEVB REVSUyA9IG9tcC5oIG9wZW5hY2MuaCBhY2NfcHJvZi5oIG9tcC10b29scy5oIG9tcGQtdHlwZXMu aAogaWYgVVNFX0ZPUlRSQU4KIG5vZGlzdF9maW5jbHVkZV9IRUFERVJTID0gb21wX2xpYi5oIG9t cF9saWIuZjkwIG9tcF9saWIubW9kIG9tcF9saWJfa2luZHMubW9kIFwKIAlvcGVuYWNjX2xpYi5o IG9wZW5hY2MuZjkwIG9wZW5hY2MubW9kIG9wZW5hY2Nfa2luZHMubW9kCmRpZmYgLS1naXQgYS9s aWJnb21wL01ha2VmaWxlLmluIGIvbGliZ29tcC9NYWtlZmlsZS5pbgppbmRleCAyMmNiMjEzNmEw OC4uMDJiYTVmOGE5YjAgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvTWFrZWZpbGUuaW4KKysrIGIvbGli Z29tcC9NYWtlZmlsZS5pbgpAQCAtMTYsNyArMTYsNyBAQAogCiAjIFBsdWdpbnMgZm9yIG9mZmxv YWQgZXhlY3V0aW9uLCBNYWtlZmlsZS5hbSBmcmFnbWVudC4KICMKLSMgQ29weXJpZ2h0IChDKSAy MDE0LTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykg MjAxNC0yMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBDb250cmlidXRl ZCBieSBNZW50b3IgRW1iZWRkZWQuCiAjCkBAIC0xNDgsNyArMTQ4LDcgQEAgYW1fX0NPTkZJR19E SVNUQ0xFQU5fRklMRVMgPSBjb25maWcuc3RhdHVzIGNvbmZpZy5jYWNoZSBjb25maWcubG9nIFwK IG1raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpLy4uL21raW5zdGFsbGRpcnMK IENPTkZJR19IRUFERVIgPSBjb25maWcuaAogQ09ORklHX0NMRUFOX0ZJTEVTID0gb21wLmggb21w X2xpYi5oIG9tcF9saWIuZjkwIGxpYmdvbXBfZi5oIFwKLQlsaWJnb21wLnNwZWMKKwlvbXAtdG9v bHMuaCBvbXBkLXR5cGVzLmggbGliZ29tcC5zcGVjCiBDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMg PQogYW1fX3ZwYXRoX2Fkal9zZXR1cCA9IHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwg c2VkICdzfC58LnxnJ2A7CiBhbV9fdnBhdGhfYWRqID0gY2FzZSAkJHAgaW4gXApAQCAtMjIwLDgg KzIyMCwxMSBAQCBhbV9saWJnb21wX2xhX09CSkVDVFMgPSBhbGxvYy5sbyBhdG9taWMubG8gYmFy cmllci5sbyBjcml0aWNhbC5sbyBcCiAJb2FjYy1wYXJhbGxlbC5sbyBvYWNjLWhvc3QubG8gb2Fj Yy1pbml0LmxvIG9hY2MtbWVtLmxvIFwKIAlvYWNjLWFzeW5jLmxvIG9hY2MtcGx1Z2luLmxvIG9h Y2MtY3VkYS5sbyBwcmlvcml0eV9xdWV1ZS5sbyBcCiAJYWZmaW5pdHktZm10LmxvIHRlYW1zLmxv IGFsbG9jYXRvci5sbyBvYWNjLXByb2ZpbGluZy5sbyBcCi0Jb2FjYy10YXJnZXQubG8gJChhbV9f b2JqZWN0c18xKQorCW9hY2MtdGFyZ2V0LmxvIG9tcGQtc3VwcG9ydC5sbyAkKGFtX19vYmplY3Rz XzEpCiBsaWJnb21wX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdvbXBfbGFfT0JKRUNUUykKK2xpYmdv bXBkX2xhX0xJQkFERCA9CithbV9saWJnb21wZF9sYV9PQkpFQ1RTID0gb21wZC1pbml0LmxvIG9t cGQtaGVscGVyLmxvIG9tcGQtaWN2LmxvCitsaWJnb21wZF9sYV9PQkpFQ1RTID0gJChhbV9saWJn b21wZF9sYV9PQkpFQ1RTKQogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0g JChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTI2OSw3ICsy NzIsOCBAQCBhbV9fdl9GQ0xEXyA9ICQoYW1fX3ZfRkNMRF9AQU1fREVGQVVMVF9WQCkKIGFtX192 X0ZDTERfMCA9IEBlY2hvICIgIEZDTEQgICAgIiAkQDsKIGFtX192X0ZDTERfMSA9IAogU09VUkNF UyA9ICQobGliZ29tcF9wbHVnaW5fZ2NuX2xhX1NPVVJDRVMpIFwKLQkkKGxpYmdvbXBfcGx1Z2lu X252cHR4X2xhX1NPVVJDRVMpICQobGliZ29tcF9sYV9TT1VSQ0VTKQorCSQobGliZ29tcF9wbHVn aW5fbnZwdHhfbGFfU09VUkNFUykgJChsaWJnb21wX2xhX1NPVVJDRVMpIFwKKwkkKGxpYmdvbXBk X2xhX1NPVVJDRVMpCiBBTV9WX0RWSVBTID0gJChhbV9fdl9EVklQU19AQU1fVkApCiBhbV9fdl9E VklQU18gPSAkKGFtX192X0RWSVBTX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfRFZJUFNfMCA9IEBl Y2hvICIgIERWSVBTICAgIiAkQDsKQEAgLTUzMyw3ICs1MzcsOCBAQCBsaWJzdWJpbmNsdWRlZGly ID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9hbGlhcykvJChnY2NfdmVyc2lvbikvaW5jbHVkZQog QU1fQ1BQRkxBR1MgPSAkKGFkZHByZWZpeCAtSSwgJChzZWFyY2hfcGF0aCkpCiBBTV9DRkxBR1Mg PSAkKFhDRkxBR1MpCiBBTV9MREZMQUdTID0gJChYTERGTEFHUykgJChTRUNUSU9OX0xERkxBR1Mp ICQoT1BUX0xERkxBR1MpCi10b29sZXhlY2xpYl9MVExJQlJBUklFUyA9IGxpYmdvbXAubGEgJChh bV9fYXBwZW5kXzEpICQoYW1fX2FwcGVuZF8yKQordG9vbGV4ZWNsaWJfTFRMSUJSQVJJRVMgPSBs aWJnb21wLmxhIGxpYmdvbXBkLmxhICQoYW1fX2FwcGVuZF8xKSBcCisJJChhbV9fYXBwZW5kXzIp CiBub2Rpc3RfdG9vbGV4ZWNsaWJfSEVBREVSUyA9IGxpYmdvbXAuc3BlYwogCiAjIC1XYyBpcyBv bmx5IGEgbGlidG9vbCBvcHRpb24uCkBAIC01NDIsMTUgKzU0NywyNyBAQCBub2Rpc3RfdG9vbGV4 ZWNsaWJfSEVBREVSUyA9IGxpYmdvbXAuc3BlYwogQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NI TElCX0ZBTFNFQGxpYmdvbXBfdmVyc2lvbl9zY3JpcHQgPSAKIEBMSUJHT01QX0JVSUxEX1ZFUlNJ T05FRF9TSExJQl9HTlVfVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUBs aWJnb21wX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC0tdmVyc2lvbi1zY3JpcHQsbGliZ29tcC52ZXIK IEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9W RVJTSU9ORURfU0hMSUJfVFJVRUBsaWJnb21wX3ZlcnNpb25fc2NyaXB0ID0gLVdsLC1NLGxpYmdv bXAudmVyLXN1bgorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX0ZBTFNFQGxpYmdvbXBk X3ZlcnNpb25fc2NyaXB0ID0gCitATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfR05VX1RS VUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVAbGliZ29tcGRfdmVyc2lvbl9z Y3JpcHQgPSAtV2wsLS12ZXJzaW9uLXNjcmlwdCxsaWJnb21wZC52ZXIKK0BMSUJHT01QX0JVSUxE X1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJf VFJVRUBsaWJnb21wZF92ZXJzaW9uX3NjcmlwdCA9IC1XbCwtTSxsaWJnb21wZC52ZXItc3VuCiBA TElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfRkFMU0VAbGliZ29tcF92ZXJzaW9uX2RlcCA9 IAogQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX0dOVV9UUlVFQEBMSUJHT01QX0JVSUxE X1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBfdmVyc2lvbl9kZXAgPSBsaWJnb21wLnZlcgog QExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01QX0JVSUxEX1ZF UlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBfdmVyc2lvbl9kZXAgPSBsaWJnb21wLnZlci1zdW4K K0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9GQUxTRUBsaWJnb21wZF92ZXJzaW9uX2Rl cCA9IAorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX0dOVV9UUlVFQEBMSUJHT01QX0JV SUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBkX3ZlcnNpb25fZGVwID0gbGliZ29tcGQu dmVyCitATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJ TERfVkVSU0lPTkVEX1NITElCX1RSVUVAbGliZ29tcGRfdmVyc2lvbl9kZXAgPSBsaWJnb21wZC52 ZXItc3VuCiBsaWJnb21wX3ZlcnNpb25faW5mbyA9IC12ZXJzaW9uLWluZm8gJChsaWJ0b29sX1ZF UlNJT04pCitsaWJnb21wZF92ZXJzaW9uX2luZm8gPSAtdmVyc2lvbi1pbmZvICQobGlidG9vbF9W RVJTSU9OKQogbGliZ29tcF9sYV9MREZMQUdTID0gJChsaWJnb21wX3ZlcnNpb25faW5mbykgJChs aWJnb21wX3ZlcnNpb25fc2NyaXB0KSBcCi0gICAgICAgICQobHRfaG9zdF9mbGFncykKKwkkKGx0 X2hvc3RfZmxhZ3MpCisKK2xpYmdvbXBkX2xhX0xERkxBR1MgPSAkKGxpYmdvbXBkX3ZlcnNpb25f aW5mbykgJChsaWJnb21wZF92ZXJzaW9uX3NjcmlwdCkgXAorCSQobHRfaG9zdF9mbGFncykKIAog bGliZ29tcF9sYV9ERVBFTkRFTkNJRVMgPSAkKGxpYmdvbXBfdmVyc2lvbl9kZXApCitsaWJnb21w ZF9sYV9ERVBFTkRFTkNJRVMgPSAkKGxpYmdvbXBkX3ZlcnNpb25fZGVwKQogbGliZ29tcF9sYV9M SU5LID0gJChMSU5LKSAkKGxpYmdvbXBfbGFfTERGTEFHUykKK2xpYmdvbXBkX2xhX0xJTksgPSAk KExJTkspICQobGliZ29tcGRfbGFfTERGTEFHUykKIGxpYmdvbXBfbGFfU09VUkNFUyA9IGFsbG9j LmMgYXRvbWljLmMgYmFycmllci5jIGNyaXRpY2FsLmMgZW52LmMgXAogCWVycm9yLmMgaWN2LmMg aWN2LWRldmljZS5jIGl0ZXIuYyBpdGVyX3VsbC5jIGxvb3AuYyBsb29wX3VsbC5jIFwKIAlvcmRl cmVkLmMgcGFyYWxsZWwuYyBzY29wZS5jIHNlY3Rpb25zLmMgc2luZ2xlLmMgdGFzay5jIHRlYW0u YyBcCkBAIC01NTksNyArNTc2LDggQEAgbGliZ29tcF9sYV9TT1VSQ0VTID0gYWxsb2MuYyBhdG9t aWMuYyBiYXJyaWVyLmMgY3JpdGljYWwuYyBlbnYuYyBcCiAJb2FjYy1wYXJhbGxlbC5jIG9hY2Mt aG9zdC5jIG9hY2MtaW5pdC5jIG9hY2MtbWVtLmMgXAogCW9hY2MtYXN5bmMuYyBvYWNjLXBsdWdp bi5jIG9hY2MtY3VkYS5jIHByaW9yaXR5X3F1ZXVlLmMgXAogCWFmZmluaXR5LWZtdC5jIHRlYW1z LmMgYWxsb2NhdG9yLmMgb2FjYy1wcm9maWxpbmcuYyBcCi0Jb2FjYy10YXJnZXQuYyAkKGFtX19h cHBlbmRfMykKKwlvYWNjLXRhcmdldC5jIG9tcGQtc3VwcG9ydC5jICQoYW1fX2FwcGVuZF8zKQor bGliZ29tcGRfbGFfU09VUkNFUyA9IG9tcGQtaW5pdC5jIG9tcGQtaGVscGVyLmMgb21wZC1pY3Yu YwogCiAjIE52aWRpYSBQVFggT3BlbkFDQyBwbHVnaW4uCiBAUExVR0lOX05WUFRYX1RSVUVAbGli Z29tcF9wbHVnaW5fbnZwdHhfdmVyc2lvbl9pbmZvID0gLXZlcnNpb24taW5mbyAkKGxpYnRvb2xf VkVSU0lPTikKQEAgLTU4Myw3ICs2MDEsNyBAQCBsaWJnb21wX2xhX1NPVVJDRVMgPSBhbGxvYy5j IGF0b21pYy5jIGJhcnJpZXIuYyBjcml0aWNhbC5jIGVudi5jIFwKIEBQTFVHSU5fR0NOX1RSVUVA bGliZ29tcF9wbHVnaW5fZ2NuX2xhX0xJQkFERCA9IGxpYmdvbXAubGEgJChQTFVHSU5fR0NOX0xJ QlMpCiBAUExVR0lOX0dDTl9UUlVFQGxpYmdvbXBfcGx1Z2luX2djbl9sYV9MSUJUT09MRkxBR1Mg PSAtLXRhZz1kaXNhYmxlLXN0YXRpYwogbm9kaXN0X25vaW5zdF9IRUFERVJTID0gbGliZ29tcF9m LmgKLW5vZGlzdF9saWJzdWJpbmNsdWRlX0hFQURFUlMgPSBvbXAuaCBvcGVuYWNjLmggYWNjX3By b2YuaAorbm9kaXN0X2xpYnN1YmluY2x1ZGVfSEVBREVSUyA9IG9tcC5oIG9wZW5hY2MuaCBhY2Nf cHJvZi5oIG9tcC10b29scy5oIG9tcGQtdHlwZXMuaAogQFVTRV9GT1JUUkFOX1RSVUVAbm9kaXN0 X2ZpbmNsdWRlX0hFQURFUlMgPSBvbXBfbGliLmggb21wX2xpYi5mOTAgb21wX2xpYi5tb2Qgb21w X2xpYl9raW5kcy5tb2QgXAogQFVTRV9GT1JUUkFOX1RSVUVACW9wZW5hY2NfbGliLmggb3BlbmFj Yy5mOTAgb3BlbmFjYy5tb2Qgb3BlbmFjY19raW5kcy5tb2QKIApAQCAtNjgwLDYgKzY5OCwxMCBA QCBvbXBfbGliLmY5MDogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL29t cF9saWIuZjkwLmluCiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0 YXR1cyAkQAogbGliZ29tcF9mLmg6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3Jj ZGlyKS9saWJnb21wX2YuaC5pbgogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2Nv bmZpZy5zdGF0dXMgJEAKK29tcC10b29scy5oOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1 cyAkKHNyY2Rpcikvb21wLXRvb2xzLmguaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVM TCkgLi9jb25maWcuc3RhdHVzICRACitvbXBkLXR5cGVzLmg6ICQodG9wX2J1aWxkZGlyKS9jb25m aWcuc3RhdHVzICQoc3JjZGlyKS9vbXBkLXR5cGVzLmguaW4KKwljZCAkKHRvcF9idWlsZGRpcikg JiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRACiBsaWJnb21wLnNwZWM6ICQodG9wX2J1aWxk ZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9saWJnb21wLnNwZWMuaW4KIAljZCAkKHRvcF9i dWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRACiAKQEAgLTcyNyw2ICs3NDks OSBAQCBsaWJnb21wLXBsdWdpbi1udnB0eC5sYTogJChsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9P QkpFQ1RTKSAkKGxpYmdvbXBfcGx1Z2luX252cAogbGliZ29tcC5sYTogJChsaWJnb21wX2xhX09C SkVDVFMpICQobGliZ29tcF9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ29tcF9sYV9ERVBF TkRFTkNJRVMpIAogCSQoQU1fVl9HRU4pJChsaWJnb21wX2xhX0xJTkspIC1ycGF0aCAkKHRvb2xl eGVjbGliZGlyKSAkKGxpYmdvbXBfbGFfT0JKRUNUUykgJChsaWJnb21wX2xhX0xJQkFERCkgJChM SUJTKQogCitsaWJnb21wZC5sYTogJChsaWJnb21wZF9sYV9PQkpFQ1RTKSAkKGxpYmdvbXBkX2xh X0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnb21wZF9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1f Vl9HRU4pJChsaWJnb21wZF9sYV9MSU5LKSAtcnBhdGggJCh0b29sZXhlY2xpYmRpcikgJChsaWJn b21wZF9sYV9PQkpFQ1RTKSAkKGxpYmdvbXBkX2xhX0xJQkFERCkgJChMSUJTKQorCiBtb3N0bHlj bGVhbi1jb21waWxlOgogCS1ybSAtZiAqLiQoT0JKRVhUKQogCkBAIC03NjQsNiArNzg5LDEwIEBA IGRpc3RjbGVhbi1jb21waWxlOgogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3Rl QC4vJChERVBESVIpL29hY2MtcGx1Z2luLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1f X2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvb2FjYy1wcm9maWxpbmcuUGxvQGFtX19x dW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9v YWNjLXRhcmdldC5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1f X3F1b3RlQC4vJChERVBESVIpL29tcGQtaGVscGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJV RUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvb21wZC1pY3YuUGxvQGFtX19x dW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9v bXBkLWluaXQuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19x dW90ZUAuLyQoREVQRElSKS9vbXBkLXN1cHBvcnQuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVF QEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9vcmRlcmVkLlBsb0BhbV9fcXVv dGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvcGFy YWxsZWwuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90 ZUAuLyQoREVQRElSKS9wcmlvcml0eV9xdWV1ZS5QbG9AYW1fX3F1b3RlQApAQCAtMTM2Niw2ICsx Mzk1LDEwIEBAIHZwYXRoICUgJChzdHJpcCAkKHNlYXJjaF9wYXRoKSkKIEBMSUJHT01QX0JVSUxE X1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXAudmVyOiAkKHRvcF9zcmNkaXIpL2xpYmdvbXAu bWFwCiBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJJChFR1JFUCkgLXYgJyMo I3wgfCQkKScgJDwgfCBcCiBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJICAk KFBSRVBST0NFU1MpIC1QIC1pbmNsdWRlIGNvbmZpZy5oIC0gPiAkQCB8fCAocm0gLWYgJEAgOyBl eGl0IDEpCisKK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQGxpYmdvbXBkLnZl cjogJCh0b3Bfc3JjZGlyKS9saWJnb21wZC5tYXAKK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9T SExJQl9UUlVFQAkkKEVHUkVQKSAtdiAnIygjfCB8JCQpJyAkPCB8IFwKK0BMSUJHT01QX0JVSUxE X1ZFUlNJT05FRF9TSExJQl9UUlVFQAkgICQoUFJFUFJPQ0VTUykgLVAgLWluY2x1ZGUgY29uZmln LmggLSA+ICRAIHx8IChybSAtZiAkQCA7IGV4aXQgMSkKIEBMSUJHT01QX0JVSUxEX1ZFUlNJT05F RF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUBsaWJn b21wLnZlci1zdW4gOiBsaWJnb21wLnZlciBcCiBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hM SUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACQkkKHRvcF9z cmNkaXIpLy4uL2NvbnRyaWIvbWFrZV9zdW52ZXIucGwgXAogQExJQkdPTVBfQlVJTERfVkVSU0lP TkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9UUlVFQAkJ JChsaWJnb21wX2xhX09CSkVDVFMpICQobGliZ29tcF9sYV9MSUJBREQpCkBAIC0xMzc2LDYgKzE0 MDksMTYgQEAgdnBhdGggJSAkKHN0cmlwICQoc2VhcmNoX3BhdGgpKQogQExJQkdPTVBfQlVJTERf VkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9U UlVFQAkgICAgc2VkICdzLC9cKFteLy5dKlwpXC5sYSwvLmxpYnMvXDEuYSxnJ2AgXAogQExJQkdP TVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01QX0JVSUxEX1ZFUlNJT05F RF9TSExJQl9UUlVFQAkgPiAkQCB8fCAocm0gLWYgJEAgOyBleGl0IDEpCiAKK0BMSUJHT01QX0JV SUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hM SUJfVFJVRUBsaWJnb21wZC52ZXItc3VuIDogbGliZ29tcGQudmVyIFwKK0BMSUJHT01QX0JVSUxE X1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJf VFJVRUAJCSQodG9wX3NyY2RpcikvLi4vY29udHJpYi9tYWtlX3N1bnZlci5wbCBcCitATElCR09N UF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJQkdPTVBfQlVJTERfVkVSU0lPTkVE X1NITElCX1RSVUVACQkkKGxpYmdvbXBkX2xhX09CSkVDVFMpICQobGliZ29tcGRfbGFfTElCQURE KQorQExJQkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1NVTl9UUlVFQEBMSUJHT01QX0JVSUxE X1ZFUlNJT05FRF9TSExJQl9UUlVFQAlwZXJsICQodG9wX3NyY2RpcikvLi4vY29udHJpYi9tYWtl X3N1bnZlci5wbCBcCitATElCR09NUF9CVUlMRF9WRVJTSU9ORURfU0hMSUJfU1VOX1RSVUVAQExJ QkdPTVBfQlVJTERfVkVSU0lPTkVEX1NITElCX1RSVUVACSAgbGliZ29tcGQudmVyIFwKK0BMSUJH T01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJTSU9O RURfU0hMSUJfVFJVRUAJICAkKGxpYmdvbXBkX2xhX09CSkVDVFM6JS5sbz0ubGlicy8lLm8pIFwK K0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9W RVJTSU9ORURfU0hMSUJfVFJVRUAJIGBlY2hvICQobGliZ29tcGRfbGFfTElCQUREKSB8IFwKK0BM SUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9CVUlMRF9WRVJT SU9ORURfU0hMSUJfVFJVRUAJICAgIHNlZCAncywvXChbXi8uXSpcKVwubGEsLy5saWJzL1wxLmEs ZydgIFwKK0BMSUJHT01QX0JVSUxEX1ZFUlNJT05FRF9TSExJQl9TVU5fVFJVRUBATElCR09NUF9C VUlMRF9WRVJTSU9ORURfU0hMSUJfVFJVRUAJID4gJEAgfHwgKHJtIC1mICRAIDsgZXhpdCAxKQor CiBvbXBfbGliX2tpbmRzLm1vZDogb21wX2xpYi5tb2QKIAk6CiBvcGVuYWNjX2tpbmRzLm1vZDog b3BlbmFjYy5tb2QKZGlmZiAtLWdpdCBhL2xpYmdvbXAvY29uZmlnL2Rhcndpbi9wbHVnaW4tc3Vm Zml4LmggYi9saWJnb21wL2NvbmZpZy9kYXJ3aW4vcGx1Z2luLXN1ZmZpeC5oCmluZGV4IDdjMWFk MzFjOWI0Li41N2YxMjdmNmQzZSAxMDA2NDQKLS0tIGEvbGliZ29tcC9jb25maWcvZGFyd2luL3Bs dWdpbi1zdWZmaXguaAorKysgYi9saWJnb21wL2NvbmZpZy9kYXJ3aW4vcGx1Z2luLXN1ZmZpeC5o CkBAIC0yMyw0ICsyMyw0IEBACiAgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5H LlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKICAgIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCiAKLSNkZWZpbmUgU09OQU1FX1NVRkZJWChuKSAoIi4iICNuICIu ZHlsaWIiKQorI2RlZmluZSBTT05BTUVfU1VGRklYKG4pICIuIiAjbiAiLmR5bGliIgpkaWZmIC0t Z2l0IGEvbGliZ29tcC9jb25maWcvaHB1eC9wbHVnaW4tc3VmZml4LmggYi9saWJnb21wL2NvbmZp Zy9ocHV4L3BsdWdpbi1zdWZmaXguaAppbmRleCBhNGM0OGE0NWRkMS4uY2VhZjJjNmUwNTQgMTAw NjQ0Ci0tLSBhL2xpYmdvbXAvY29uZmlnL2hwdXgvcGx1Z2luLXN1ZmZpeC5oCisrKyBiL2xpYmdv bXAvY29uZmlnL2hwdXgvcGx1Z2luLXN1ZmZpeC5oCkBAIC0yMyw0ICsyMyw0IEBACiAgICBzZWUg dGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYg bm90LCBzZWUKICAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKLSNkZWZp bmUgU09OQU1FX1NVRkZJWChuKSAoIi5zbC4iICNuKQorI2RlZmluZSBTT05BTUVfU1VGRklYKG4p ICIuc2wuIiAjbgpkaWZmIC0tZ2l0IGEvbGliZ29tcC9jb25maWcvcG9zaXgvcGx1Z2luLXN1ZmZp eC5oIGIvbGliZ29tcC9jb25maWcvcG9zaXgvcGx1Z2luLXN1ZmZpeC5oCmluZGV4IGNmMDNmNjRm N2EzLi45OTVkMzRmNTNlYSAxMDA2NDQKLS0tIGEvbGliZ29tcC9jb25maWcvcG9zaXgvcGx1Z2lu LXN1ZmZpeC5oCisrKyBiL2xpYmdvbXAvY29uZmlnL3Bvc2l4L3BsdWdpbi1zdWZmaXguaApAQCAt MjMsNCArMjMsNCBAQAogICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5U SU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCiAgICA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwogCi0jZGVmaW5lIFNPTkFNRV9TVUZGSVgobikgKCIuc28uIiAjbikKKyNk ZWZpbmUgU09OQU1FX1NVRkZJWChuKSAiLnNvLiIgI24KZGlmZiAtLWdpdCBhL2xpYmdvbXAvY29u ZmlndXJlIGIvbGliZ29tcC9jb25maWd1cmUKaW5kZXggYTczYTZkNDQwMDMuLjU5MmYzMjk3NGI2 IDEwMDc1NQotLS0gYS9saWJnb21wL2NvbmZpZ3VyZQorKysgYi9saWJnb21wL2NvbmZpZ3VyZQpA QCAtMTcwNjUsNyArMTcwNjUsNyBAQCBmaQogCiAKIAotYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29u ZmlnX2ZpbGVzIG9tcC5oIG9tcF9saWIuaCBvbXBfbGliLmY5MCBsaWJnb21wX2YuaCIKK2FjX2Nv bmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBvbXAuaCBvbXBfbGliLmggb21wX2xpYi5mOTAg bGliZ29tcF9mLmggb21wLXRvb2xzLmggb21wZC10eXBlcy5oIgogCiBhY19jb25maWdfZmlsZXM9 IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIGxpYmdvbXAuc3Bl YyIKIApAQCAtMTgyMTgsNiArMTgyMTgsOCBAQCBkbwogICAgICJvbXBfbGliLmgiKSBDT05GSUdf RklMRVM9IiRDT05GSUdfRklMRVMgb21wX2xpYi5oIiA7OwogICAgICJvbXBfbGliLmY5MCIpIENP TkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBvbXBfbGliLmY5MCIgOzsKICAgICAibGliZ29tcF9m LmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbGliZ29tcF9mLmgiIDs7CisgICAgIm9t cC10b29scy5oIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG9tcC10b29scy5oIiA7Owor ICAgICJvbXBkLXR5cGVzLmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgb21wZC10eXBl cy5oIiA7OwogICAgICJNYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNYWtl ZmlsZSIgOzsKICAgICAidGVzdHN1aXRlL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklH X0ZJTEVTIHRlc3RzdWl0ZS9NYWtlZmlsZSIgOzsKICAgICAibGliZ29tcC5zcGVjIikgQ09ORklH X0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGxpYmdvbXAuc3BlYyIgOzsKZGlmZiAtLWdpdCBhL2xpYmdv bXAvY29uZmlndXJlLmFjIGIvbGliZ29tcC9jb25maWd1cmUuYWMKaW5kZXggYTliMWYzOTczZjcu LmNkNmMzY2MxYTk2IDEwMDY0NAotLS0gYS9saWJnb21wL2NvbmZpZ3VyZS5hYworKysgYi9saWJn b21wL2NvbmZpZ3VyZS5hYwpAQCAtNDcyLDcgKzQ3Miw3IEBAIENGTEFHUz0iJHNhdmVfQ0ZMQUdT IgogIyBEZXRlcm1pbmUgd2hhdCBHQ0MgdmVyc2lvbiBudW1iZXIgdG8gdXNlIGluIGZpbGVzeXN0 ZW0gcGF0aHMuCiBHQ0NfQkFTRV9WRVIKIAotQUNfQ09ORklHX0ZJTEVTKG9tcC5oIG9tcF9saWIu aCBvbXBfbGliLmY5MCBsaWJnb21wX2YuaCkKK0FDX0NPTkZJR19GSUxFUyhvbXAuaCBvbXBfbGli Lmggb21wX2xpYi5mOTAgbGliZ29tcF9mLmggb21wLXRvb2xzLmggb21wZC10eXBlcy5oKQogQUNf Q09ORklHX0ZJTEVTKE1ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBsaWJnb21wLnNwZWMpCiBB Q19DT05GSUdfRklMRVMoW3Rlc3RzdWl0ZS9saWJnb21wLXRlc3Qtc3VwcG9ydC5wdC5leHA6dGVz dHN1aXRlL2xpYmdvbXAtdGVzdC1zdXBwb3J0LmV4cC5pbl0pCiBBQ19DT05GSUdfRklMRVMoW3Rl c3RzdWl0ZS9saWJnb21wLXNpdGUtZXh0cmEuZXhwXSkKZGlmZiAtLWdpdCBhL2xpYmdvbXAvZW52 LmMgYi9saWJnb21wL2Vudi5jCmluZGV4IDFjNGVlODk0NTE1Li5mYTgwODkzMWE1YSAxMDA2NDQK LS0tIGEvbGliZ29tcC9lbnYuYworKysgYi9saWJnb21wL2Vudi5jCkBAIC0zMyw2ICszMyw3IEBA CiAjaWZuZGVmIExJQkdPTVBfT0ZGTE9BREVEX09OTFkKICNpbmNsdWRlICJsaWJnb21wX2YuaCIK ICNpbmNsdWRlICJvYWNjLWludC5oIgorI2luY2x1ZGUgIm9tcGQtc3VwcG9ydC5oIgogI2luY2x1 ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAg LTg5LDYgKzkwLDcgQEAgdm9pZCAqKmdvbXBfcGxhY2VzX2xpc3Q7CiB1bnNpZ25lZCBsb25nIGdv bXBfcGxhY2VzX2xpc3RfbGVuOwogdWludHB0cl90IGdvbXBfZGVmX2FsbG9jYXRvciA9IG9tcF9k ZWZhdWx0X21lbV9hbGxvYzsKIGludCBnb21wX2RlYnVnX3ZhcjsKK2Jvb2wgZ29tcGRfZW5hYmxl ZDsKIHVuc2lnbmVkIGludCBnb21wX251bV90ZWFtc192YXI7CiBpbnQgZ29tcF9udGVhbXNfdmFy OwogaW50IGdvbXBfdGVhbXNfdGhyZWFkX2xpbWl0X3ZhcjsKQEAgLTQxOCw2ICs0MjAsMzMgQEAg cGFyc2VfdGFyZ2V0X29mZmxvYWQgKGNvbnN0IGNoYXIgKm5hbWUsIGVudW0gZ29tcF90YXJnZXRf b2ZmbG9hZF90ICpvZmZsb2FkKQogICBnb21wX2Vycm9yICgiSW52YWxpZCB2YWx1ZSBmb3IgZW52 aXJvbm1lbnQgdmFyaWFibGUgT01QX1RBUkdFVF9PRkZMT0FEIik7CiB9CiAKKy8qIFBhcnNlIE9N UERfREVCVUcgZW52aXJvbm1lbnQgdmFyaWFibGUuICAqLworCitzdGF0aWMgdm9pZAorcGFyc2Vf ZGVidWcgKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgKmRlYnVnX3ZhbHVlKQoreworICBjb25zdCBj aGFyICplbnY7CisgIGJvb2wgcmV0ID0gZmFsc2U7CisgIGVudiA9IGdldGVudiAobmFtZSk7Cisg IGlmIChlbnYgPT0gTlVMTCkKKyAgICByZXR1cm47CisgIHdoaWxlIChpc3NwYWNlICgodW5zaWdu ZWQgY2hhcikgKmVudikpCisgICAgKytlbnY7CisgIGlmIChzdHJuY2FzZWNtcCAoZW52LCAiZW5h YmxlZCIsIDcpID09IDApCisgICAgeworICAgICAgZW52ICs9IDc7CisgICAgICByZXQgPSB0cnVl OworICAgIH0KKyAgd2hpbGUgKGlzc3BhY2UgKCh1bnNpZ25lZCBjaGFyKSAqZW52KSkKKyAgICAr K2VudjsKKyAgaWYgKHJldCAmJiAqZW52ID09ICdcMCcpCisgICAgeworICAgICAgKmRlYnVnX3Zh bHVlID0gcmV0OworICAgICAgcmV0dXJuOworICAgIH0KKyAgZ29tcF9lcnJvciAoIkludmFsaWQg dmFsdWUgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlIE9NUF9ERUJVRyIpOworfQorCiAvKiBQYXJz ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXQgdG8gYSBib29sZWFuIG9yIGxpc3Qgb2Ygb21wX3By b2NfYmluZF90CiAgICBlbnVtIHZhbHVlcy4gIFJldHVybiB0cnVlIGlmIG9uZSB3YXMgcHJlc2Vu dCBhbmQgaXQgd2FzIHN1Y2Nlc3NmdWxseQogICAgcGFyc2VkLiAgKi8KQEAgLTE0ODMsNiArMTUx Miw5IEBAIGluaXRpYWxpemVfZW52ICh2b2lkKQogCT0gdGhyZWFkX2xpbWl0X3ZhciA+IElOVF9N QVggPyBVSU5UX01BWCA6IHRocmVhZF9saW1pdF92YXI7CiAgICAgfQogICBwYXJzZV9pbnRfc2Vj dXJlICgiR09NUF9ERUJVRyIsICZnb21wX2RlYnVnX3ZhciwgdHJ1ZSk7CisgIHBhcnNlX2RlYnVn ICgiT01QX0RFQlVHIiwgJmdvbXBkX2VuYWJsZWQpOworICBpZiAoZ29tcGRfZW5hYmxlZCkKKyAg ICBnb21wZF9sb2FkICgpOwogI2lmbmRlZiBIQVZFX1NZTkNfQlVJTFRJTlMKICAgZ29tcF9tdXRl eF9pbml0ICgmZ29tcF9tYW5hZ2VkX3RocmVhZHNfbG9jayk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh L2xpYmdvbXAvbGliZ29tcC5tYXAgYi9saWJnb21wL2xpYmdvbXAubWFwCmluZGV4IDJhYzU4MDk0 MTY5Li40NmZlYmEzOTRmNSAxMDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLm1hcAorKysgYi9s aWJnb21wL2xpYmdvbXAubWFwCkBAIC0xMyw3ICsxMyw3IEBAIE9NUF8xLjAgewogI2lmZGVmIEhB VkVfU1lNVkVSX1NZTUJPTF9SRU5BTUlOR19SVU5USU1FX1NVUFBPUlQKICAgICAgICAgIyBJZiB0 aGUgYXNzZW1ibGVyIHVzZWQgbGFja3MgdGhlIC5zeW12ZXIgZGlyZWN0aXZlIG9yIHRoZSBsaW5r ZXIKIAkjIGRvZXNuJ3Qgc3VwcG9ydCBHTlUgc3ltYm9sIHZlcnNpb25pbmcsIHdlIGhhdmUgdGhl IHNhbWUgc3ltYm9sIGluCi0JIyB0d28gdmVyc2lvbnMsIHdoaWNoIFN1biBsZCBjaG9rZXMgb24u IAorCSMgdHdvIHZlcnNpb25zLCB3aGljaCBTdW4gbGQgY2hva2VzIG9uLgogCW9tcF9pbml0X2xv Y2s7CiAJb21wX2luaXRfbmVzdF9sb2NrOwogCW9tcF9kZXN0cm95X2xvY2s7CkBAIC0yMjYsNiAr MjI2LDE0IEBAIE9NUF81LjEgewogCW9tcF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0XzsKIH0gT01Q XzUuMC4yOwogCitPTVBfNS4wLjMgeworICBnbG9iYWw6CisJb21wZF9kbGxfbG9jYXRpb25zOwor CW9tcGRfZGxsX2xvY2F0aW9uc192YWxpZDsKKwlvbXBkX2JwX3BhcmFsbGVsX2JlZ2luOworCW9t cGRfYnBfcGFyYWxsZWxfZW5kOworfSBPTVBfNS4wLjI7CisKIEdPTVBfMS4wIHsKICAgZ2xvYmFs OgogCUdPTVBfYXRvbWljX2VuZDsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcGQubWFwIGIv bGliZ29tcC9saWJnb21wZC5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmZjMWIyMTljZGRlCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9saWJnb21wZC5tYXAK QEAgLTAsMCArMSwyMSBAQAorT01QRF81LjEgeworICBnbG9iYWw6CisgICAgb21wZF9pbml0aWFs aXplOworICAgIG9tcGRfZ2V0X2FwaV92ZXJzaW9uOworICAgIG9tcGRfZ2V0X3ZlcnNpb25fc3Ry aW5nOworICAgIG9tcGRfcHJvY2Vzc19pbml0aWFsaXplOworICAgIG9tcGRfZGV2aWNlX2luaXRp YWxpemU7CisgICAgb21wZF9yZWxfYWRkcmVzc19zcGFjZV9oYW5kbGU7CisgICAgb21wZF9maW5h bGl6ZTsKKyAgICBvbXBkX2VudW1lcmF0ZV9pY3ZzOworICAgIG9tcGRfZ2V0X2ljdl9mcm9tX3Nj b3BlOworICAgIG9tcGRfZ2V0X2ljdl9zdHJpbmdfZnJvbV9zY29wZTsKKyAgICBvbXBkX2dldF90 aHJlYWRfaGFuZGxlOworICAgIG9tcGRfZ2V0X3RocmVhZF9pbl9wYXJhbGxlbDsKKyAgICBvbXBk X3JlbF90aHJlYWRfaGFuZGxlOworICAgIG9tcGRfdGhyZWFkX2hhbmRsZV9jb21wYXJlOworICAg IG9tcGRfZ2V0X3RocmVhZF9pZDsKKyAgICBvbXBkX2dldF9kZXZpY2VfZnJvbV90aHJlYWQ7Cisg ICAgb21wZF9icF90aHJlYWRfYmVnaW47CisgICAgb21wZF9icF90aHJlYWRfZW5kOworfTsKZGlm ZiAtLWdpdCBhL2xpYmdvbXAvb21wLXRvb2xzLmguaW4gYi9saWJnb21wL29tcC10b29scy5oLmlu Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xOGMwYzJhMGI0NgotLS0g L2Rldi9udWxsCisrKyBiL2xpYmdvbXAvb21wLXRvb2xzLmguaW4KQEAgLTAsMCArMSwzMjEgQEAK Ky8qIENvcHlyaWdodCAoQykgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAg IENvbnRyaWJ1dGVkIGJ5IE1vaGFtZWQgQXRlZiA8bW9oYW1lZGF0ZWYxNjk4QGdtYWlsLmNvbT4u CisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9mZmxvYWRpbmcgYW5kIE11bHRpIFBy b2Nlc3NpbmcgTGlicmFyeQorICAgKGxpYmdvbXApLgorICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3Ig KGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisgICBMaWJnb21wIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU IEFOWQorICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUworICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4K KyAgIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRk aXRpb25hbAorICAgcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJy YXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBH Q0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAg IHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHku ICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKwor LyogVGhpcyBmaWxlIGNvbnRhaW5zIGRhdGEgdHlwZXMgYW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9u cyB0aGF0CisgICB0aGF0IGFyZSBkZWZpbmVkIGluIE9NUEQgc3RhbmRhcmQuICAqLworCisjaWZu ZGVmIF9PTVBfVE9PTFNfSAorI2RlZmluZSBfT01QX1RPT0xTX0gKKworI2lmZGVmIF9fY3BsdXNw bHVzCitleHRlcm4gIkMiIHsKKyNkZWZpbmUgX19HT01QRF9OT1RIUk9XIHRocm93ICgpCisjZWxz ZQorI2RlZmluZSBfX0dPTVBEX05PVEhST1cgX19hdHRyaWJ1dGVfXygoX19ub3Rocm93X18pKQor I2VuZGlmCisKK2V4dGVybiBjb25zdCBjaGFyICoqb21wZF9kbGxfbG9jYXRpb25zOworCisjaWZk ZWYgX19FTEZfXworI2RlZmluZSBvbXBkX2RsbF9sb2NhdGlvbnNfdmFsaWQoKSBcCisgIF9fYXNt X18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfZGxsX2xvY2F0aW9uc192YWxpZFxuXHQiIFwK KwkJCSJvbXBkX2RsbF9sb2NhdGlvbnNfdmFsaWQ6IikKKyNlbHNlCitleHRlcm4gdm9pZCBvbXBk X2RsbF9sb2NhdGlvbnNfdmFsaWQgKHZvaWQpIF9fR09NUERfTk9USFJPVzsKKyNlbmRpZiAvKiBf X0VMRl9fICovCisKK3R5cGVkZWYgX19VSU5UNjRfVFlQRV9fIG9tcGRfc2l6ZV90OwordHlwZWRl ZiBfX1VJTlQ2NF9UWVBFX18gb21wZF93YWl0X2lkX3Q7CisKK3R5cGVkZWYgX19VSU5UNjRfVFlQ RV9fIG9tcGRfYWRkcl90OwordHlwZWRlZiBfX0lOVDY0X1RZUEVfXyBvbXBkX3dvcmRfdDsKK3R5 cGVkZWYgX19VSU5UNjRfVFlQRV9fIG9tcGRfc2VnX3Q7CisKK3R5cGVkZWYgc3RydWN0IG9tcGRf YWRkcmVzc190Cit7CisgIG9tcGRfc2VnX3Qgc2VnbWVudDsKKyAgb21wZF9hZGRyX3QgYWRkcmVz czsKK30gb21wZF9hZGRyZXNzX3Q7CisKK3R5cGVkZWYgc3RydWN0IG9tcGRfZnJhbWVfaW5mb190 Cit7CisgIG9tcGRfYWRkcmVzc190IGZyYW1lX2FkZHJlc3M7CisgIG9tcGRfd29yZF90IGZyYW1l X2ZsYWc7Cit9IG9tcGRfZnJhbWVfaW5mb190OworCit0eXBlZGVmIF9fVUlOVDY0X1RZUEVfXyBv bXBkX2RldmljZV90OwordHlwZWRlZiBfX1VJTlQ2NF9UWVBFX18gb21wZF90aHJlYWRfaWRfdDsK KwordHlwZWRlZiBzdHJ1Y3QgX29tcGRfYXNwYWNlX2hhbmRsZSBvbXBkX2FkZHJlc3Nfc3BhY2Vf aGFuZGxlX3Q7Cit0eXBlZGVmIHN0cnVjdCBfb21wZF90aHJlYWRfaGFuZGxlIG9tcGRfdGhyZWFk X2hhbmRsZV90OwordHlwZWRlZiBzdHJ1Y3QgX29tcGRfcGFyYWxsZWxfaGFuZGxlIG9tcGRfcGFy YWxsZWxfaGFuZGxlX3Q7Cit0eXBlZGVmIHN0cnVjdCBfb21wZF90YXNrX2hhbmRsZSBvbXBkX3Rh c2tfaGFuZGxlX3Q7CisKK3R5cGVkZWYgZW51bSBvbXBkX3Njb3BlX3QKK3sKKyAgb21wZF9zY29w ZV9nbG9iYWwgPSAxLAorICBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UgPSAyLAorICBvbXBkX3Nj b3BlX3RocmVhZCA9IDMsCisgIG9tcGRfc2NvcGVfcGFyYWxsZWwgPSA0LAorICBvbXBkX3Njb3Bl X2ltcGxpY2l0X3Rhc2sgPSA1LAorICBvbXBkX3Njb3BlX3Rhc2sgPSA2Cit9IG9tcGRfc2NvcGVf dDsKKwordHlwZWRlZiBfX1VJTlQ2NF9UWVBFX18gb21wZF9pY3ZfaWRfdDsKKwordHlwZWRlZiBz dHJ1Y3QgX29tcGRfYXNwYWNlX2NvbnQgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdDsKK3R5 cGVkZWYgc3RydWN0IF9vbXBkX3RocmVhZF9jb250IG9tcGRfdGhyZWFkX2NvbnRleHRfdDsKKwor dHlwZWRlZiBlbnVtIG9tcGRfcmNfdAoreworICBvbXBkX3JjX29rID0gMCwKKyAgb21wZF9yY191 bmF2YWlsYWJsZSA9IDEsCisgIG9tcGRfcmNfc3RhbGVfaGFuZGxlID0gMiwKKyAgb21wZF9yY19i YWRfaW5wdXQgPSAzLAorICBvbXBkX3JjX2Vycm9yID0gNCwKKyAgb21wZF9yY191bnN1cHBvcnRl ZCA9IDUsCisgIG9tcGRfcmNfbmVlZHNfc3RhdGVfdHJhY2tpbmcgPSA2LAorICBvbXBkX3JjX2lu Y29tcGF0aWJsZSA9IDcsCisgIG9tcGRfcmNfZGV2aWNlX3JlYWRfZXJyb3IgPSA4LAorICBvbXBk X3JjX2RldmljZV93cml0ZV9lcnJvciA9IDksCisgIG9tcGRfcmNfbm9tZW0gPSAxMCwKKyAgb21w ZF9yY19pbmNvbXBsZXRlID0gMTEsCisgIG9tcGRfcmNfY2FsbGJhY2tfZXJyb3IgPSAxMgorfSBv bXBkX3JjX3Q7CisKKwordHlwZWRlZiBzdHJ1Y3Qgb21wZF9kZXZpY2VfdHlwZV9zaXplc190Cit7 CisgIF9fVUlOVDhfVFlQRV9fIHNpemVvZl9jaGFyOworICBfX1VJTlQ4X1RZUEVfXyBzaXplb2Zf c2hvcnQ7CisgIF9fVUlOVDhfVFlQRV9fIHNpemVvZl9pbnQ7CisgIF9fVUlOVDhfVFlQRV9fIHNp emVvZl9sb25nOworICBfX1VJTlQ4X1RZUEVfXyBzaXplb2ZfbG9uZ19sb25nOworICBfX1VJTlQ4 X1RZUEVfXyBzaXplb2ZfcG9pbnRlcjsKK30gb21wZF9kZXZpY2VfdHlwZV9zaXplc190OworCisK K3R5cGVkZWYgb21wZF9yY190ICgqb21wZF9jYWxsYmFja19tZW1vcnlfYWxsb2NfZm5fdCkgKG9t cGRfc2l6ZV90LAorCQkJCQkJICAgICAgdm9pZCAqKik7Cit0eXBlZGVmIG9tcGRfcmNfdCAoKm9t cGRfY2FsbGJhY2tfbWVtb3J5X2ZyZWVfZm5fdCkgKHZvaWQgKik7CisKK3R5cGVkZWYgb21wZF9y Y190ICgqb21wZF9jYWxsYmFja19nZXRfdGhyZWFkX2NvbnRleHRfZm9yX3RocmVhZF9pZF9mbl90 KQorICAob21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqLCBvbXBkX3RocmVhZF9pZF90LAor ICAgb21wZF9zaXplX3QsIGNvbnN0IHZvaWQgKiwgb21wZF90aHJlYWRfY29udGV4dF90ICoqKTsK KworCit0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRfY2FsbGJhY2tfc2l6ZW9mX2ZuX3QpIChvbXBk X2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICosCisJCQkJCQlvbXBkX2RldmljZV90eXBlX3NpemVz X3QgKik7CisKKwordHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX3N5bWJvbF9hZGRy X2ZuX3QpCisgIChvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICosIG9tcGRfdGhyZWFkX2Nv bnRleHRfdCAqLCBjb25zdCBjaGFyICosCisgICBvbXBkX2FkZHJlc3NfdCAqLCBjb25zdCBjaGFy ICopOworCit0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRfY2FsbGJhY2tfbWVtb3J5X3JlYWRfZm5f dCkKKyAgKG9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKiwgb21wZF90aHJlYWRfY29udGV4 dF90ICosCisgICBjb25zdCBvbXBkX2FkZHJlc3NfdCAqLCBvbXBkX3NpemVfdCBuYnl0ZXMsIHZv aWQgKik7CisKKwordHlwZWRlZiBvbXBkX3JjX3QgKCpvbXBkX2NhbGxiYWNrX21lbW9yeV93cml0 ZV9mbl90KQorICAob21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqLCBvbXBkX3RocmVhZF9j b250ZXh0X3QgKiwKKyAgIGNvbnN0IG9tcGRfYWRkcmVzc190ICosIG9tcGRfc2l6ZV90LCBjb25z dCB2b2lkICopOworCit0eXBlZGVmIG9tcGRfcmNfdCAoKm9tcGRfY2FsbGJhY2tfZGV2aWNlX2hv c3RfZm5fdCkKKyAgKG9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKiwgY29uc3Qgdm9pZCAq LAorICAgb21wZF9zaXplX3QsIG9tcGRfc2l6ZV90LCB2b2lkICopOworCit0eXBlZGVmIG9tcGRf cmNfdCAoKm9tcGRfY2FsbGJhY2tfcHJpbnRfc3RyaW5nX2ZuX3QpIChjb25zdCBjaGFyICosIGlu dCk7CisKK3R5cGVkZWYgc3RydWN0IG9tcGRfY2FsbGJhY2tzX3QKK3sKKyAgb21wZF9jYWxsYmFj a19tZW1vcnlfYWxsb2NfZm5fdCBhbGxvY19tZW1vcnk7CisgIG9tcGRfY2FsbGJhY2tfbWVtb3J5 X2ZyZWVfZm5fdCBmcmVlX21lbW9yeTsKKyAgb21wZF9jYWxsYmFja19wcmludF9zdHJpbmdfZm5f dCBwcmludF9zdHJpbmc7CisgIG9tcGRfY2FsbGJhY2tfc2l6ZW9mX2ZuX3Qgc2l6ZW9mX3R5cGU7 CisgIG9tcGRfY2FsbGJhY2tfc3ltYm9sX2FkZHJfZm5fdCBzeW1ib2xfYWRkcl9sb29rdXA7Cisg IG9tcGRfY2FsbGJhY2tfbWVtb3J5X3JlYWRfZm5fdCByZWFkX21lbW9yeTsKKyAgb21wZF9jYWxs YmFja19tZW1vcnlfd3JpdGVfZm5fdCB3cml0ZV9tZW1vcnk7CisgIG9tcGRfY2FsbGJhY2tfbWVt b3J5X3JlYWRfZm5fdCByZWFkX3N0cmluZzsKKyAgb21wZF9jYWxsYmFja19kZXZpY2VfaG9zdF9m bl90IGRldmljZV90b19ob3N0OworICBvbXBkX2NhbGxiYWNrX2RldmljZV9ob3N0X2ZuX3QgaG9z dF90b19kZXZpY2U7CisgIG9tcGRfY2FsbGJhY2tfZ2V0X3RocmVhZF9jb250ZXh0X2Zvcl90aHJl YWRfaWRfZm5fdAorICAgIGdldF90aHJlYWRfY29udGV4dF9mb3JfdGhyZWFkX2lkOworfSBvbXBk X2NhbGxiYWNrc190OworCitvbXBkX3JjX3Qgb21wZF9pbml0aWFsaXplIChvbXBkX3dvcmRfdCwg Y29uc3Qgb21wZF9jYWxsYmFja3NfdCAqKQorCQkJICAgX19HT01QRF9OT1RIUk9XOworCitvbXBk X3JjX3Qgb21wZF9nZXRfYXBpX3ZlcnNpb24gKG9tcGRfd29yZF90ICopIF9fR09NUERfTk9USFJP VzsKK29tcGRfcmNfdCBvbXBkX2dldF92ZXJzaW9uX3N0cmluZyAoY29uc3QgY2hhciAqKikgX19H T01QRF9OT1RIUk9XOworCitvbXBkX3JjX3Qgb21wZF9maW5hbGl6ZSAodm9pZCkgX19HT01QRF9O T1RIUk9XOworCitvbXBkX3JjX3Qgb21wZF9wcm9jZXNzX2luaXRpYWxpemUgKG9tcGRfYWRkcmVz c19zcGFjZV9jb250ZXh0X3QgKiwKKwkJCQkgICBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3Qg KiopCisJCQkJICAgX19HT01QRF9OT1RIUk9XOworCitvbXBkX3JjX3Qgb21wZF9kZXZpY2VfaW5p dGlhbGl6ZSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCisJCQkJICBvbXBkX2FkZHJl c3Nfc3BhY2VfY29udGV4dF90ICosIG9tcGRfZGV2aWNlX3QsCisJCQkJICBvbXBkX3NpemVfdCwg dm9pZCAqLAorCQkJCSAgb21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICoqKQorCQkJCSAgX19H T01QRF9OT1RIUk9XOworCitvbXBkX3JjX3Qgb21wZF9yZWxfYWRkcmVzc19zcGFjZV9oYW5kbGUg KG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKQorCQkJCQkgX19HT01QRF9OT1RIUk9XOwor CitvbXBkX3JjX3Qgb21wZF9nZXRfb21wX3ZlcnNpb24gKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5k bGVfdCAqLAorCQkJCW9tcGRfd29yZF90ICopIF9fR09NUERfTk9USFJPVzsKKworb21wZF9yY190 IG9tcGRfZ2V0X29tcF92ZXJzaW9uX3N0cmluZyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90 ICosCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKiopIF9fR09NUERfTk9USFJPVzsKKworb21wZF9y Y190IG9tcGRfZ2V0X3RocmVhZF9pbl9wYXJhbGxlbCAob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAq LCBpbnQsCisJCQkJICAgICAgIG9tcGRfdGhyZWFkX2hhbmRsZV90ICoqKSBfX0dPTVBEX05PVEhS T1c7CisKK29tcGRfcmNfdCBvbXBkX2dldF90aHJlYWRfaGFuZGxlIChvbXBkX2FkZHJlc3Nfc3Bh Y2VfaGFuZGxlX3QgKiwKKwkJCQkgIG9tcGRfdGhyZWFkX2lkX3QsIG9tcGRfc2l6ZV90LGNvbnN0 IHZvaWQgKiwKKwkJCQkgIG9tcGRfdGhyZWFkX2hhbmRsZV90ICoqKSBfX0dPTVBEX05PVEhST1c7 CisKK29tcGRfcmNfdCBvbXBkX3JlbF90aHJlYWRfaGFuZGxlIChvbXBkX3RocmVhZF9oYW5kbGVf dCAqKSBfX0dPTVBEX05PVEhST1c7CisKK29tcGRfcmNfdCBvbXBkX3RocmVhZF9oYW5kbGVfY29t cGFyZSAob21wZF90aHJlYWRfaGFuZGxlX3QgKiwKKwkJCQkgICAgICBvbXBkX3RocmVhZF9oYW5k bGVfdCAqLAorCQkJCSAgICAgIGludCAqKSBfX0dPTVBEX05PVEhST1c7CisKK29tcGRfcmNfdCBv bXBkX2dldF90aHJlYWRfaWQgKG9tcGRfdGhyZWFkX2hhbmRsZV90ICosIG9tcGRfdGhyZWFkX2lk X3QsCisJCQkgICAgICBvbXBkX3NpemVfdCwgdm9pZCAqKSBfX0dPTVBEX05PVEhST1c7CisKK29t cGRfcmNfdCBvbXBkX2dldF9jdXJyX3BhcmFsbGVsX2hhbmRsZSAob21wZF90aHJlYWRfaGFuZGxl X3QgKiwKKwkJCQkJIG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKiopCisJCQkJCSBfX0dPTVBEX05P VEhST1c7CisKK29tcGRfcmNfdCBvbXBkX2dldF9lbmNsb3NpbmdfcGFyYWxsZWxfaGFuZGxlIChv bXBkX3BhcmFsbGVsX2hhbmRsZV90ICosCisJCQkJCSAgICAgIG9tcGRfcGFyYWxsZWxfaGFuZGxl X3QgKiopCisJCQkJCSAgICAgIF9fR09NUERfTk9USFJPVzsKKworb21wZF9yY190IG9tcGRfZ2V0 X3Rhc2tfcGFyYWxsZWxfaGFuZGxlIChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwKKwkJCQkJIG9tcGRf cGFyYWxsZWxfaGFuZGxlX3QgKiopCisJCQkJCSBfX0dPTVBEX05PVEhST1c7CisKK29tcGRfcmNf dCBvbXBkX3JlbF9wYXJhbGxlbF9oYW5kbGUgKG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKikgX19H T01QRF9OT1RIUk9XOworCitvbXBkX3JjX3Qgb21wZF9wYXJhbGxlbF9oYW5kbGVfY29tcGFyZSAo b21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqLAorCQkJCQlvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICos CisJCQkJCWludCAqKSBfX0dPTVBEX05PVEhST1c7CisKK29tcGRfcmNfdCBvbXBkX2dldF9jdXJy X3Rhc2tfaGFuZGxlIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqLAorCQkJCSAgICAgb21wZF90YXNr X2hhbmRsZV90ICoqKSBfX0dPTVBEX05PVEhST1c7CisKK29tcGRfcmNfdCBvbXBkX2dldF9nZW5l cmF0aW5nX3Rhc2tfaGFuZGxlIChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwKKwkJCQkJICAgb21wZF90 YXNrX2hhbmRsZV90ICoqKQorCQkJCQkgICBfX0dPTVBEX05PVEhST1c7CisKK29tcGRfcmNfdCBv bXBkX2dldF9zY2hlZHVsaW5nX3Rhc2tfaGFuZGxlIChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwKKwkJ CQkJICAgb21wZF90YXNrX2hhbmRsZV90ICoqKQorCQkJCQkgICBfX0dPTVBEX05PVEhST1c7CisK K29tcGRfcmNfdCBvbXBkX2dldF90YXNrX2luX3BhcmFsbGVsIChvbXBkX3BhcmFsbGVsX2hhbmRs ZV90ICosIGludCwKKwkJCQkgICAgIG9tcGRfdGFza19oYW5kbGVfdCAqKikgX19HT01QRF9OT1RI Uk9XOworCitvbXBkX3JjX3Qgb21wZF9yZWxfdGFza19oYW5kbGUgKG9tcGRfdGFza19oYW5kbGVf dCAqKSBfX0dPTVBEX05PVEhST1c7CisKK29tcGRfcmNfdCBvbXBkX3Rhc2tfaGFuZGxlX2NvbXBh cmUgKG9tcGRfdGFza19oYW5kbGVfdCAqLCBvbXBkX3Rhc2tfaGFuZGxlX3QgKiwKKwkJCQkgICAg aW50ICopIF9fR09NUERfTk9USFJPVzsKKworb21wZF9yY190IG9tcGRfZ2V0X3Rhc2tfZnVuY3Rp b24gKG9tcGRfdGFza19oYW5kbGVfdCAqLAorCQkJCSAgb21wZF9hZGRyZXNzX3QgKikgX19HT01Q RF9OT1RIUk9XOworCitvbXBkX3JjX3Qgb21wZF9nZXRfdGFza19mcmFtZSAob21wZF90YXNrX2hh bmRsZV90ICosIG9tcGRfZnJhbWVfaW5mb190ICosCisJCQkgICAgICAgb21wZF9mcmFtZV9pbmZv X3QgKikgX19HT01QRF9OT1RIUk9XOworCitvbXBkX3JjX3Qgb21wZF9lbnVtZXJhdGVfc3RhdGVz IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QsCisJCQkJIG9tcGRf d29yZF90ICosIGNvbnN0IGNoYXIgKiosCisJCQkJIG9tcGRfd29yZF90ICopIF9fR09NUERfTk9U SFJPVzsKKworb21wZF9yY190IG9tcGRfZ2V0X3N0YXRlIChvbXBkX3RocmVhZF9oYW5kbGVfdCAq LCBvbXBkX3dvcmRfdCAqLAorCQkJICBvbXBkX3dhaXRfaWRfdCAqKSBfX0dPTVBEX05PVEhST1c7 CisKK29tcGRfcmNfdCBvbXBkX2dldF9kaXNwbGF5X2NvbnRyb2xfdmFycyAob21wZF9hZGRyZXNz X3NwYWNlX2hhbmRsZV90ICosCisJCQkJCSBjb25zdCBjaGFyICogY29uc3QgKiopIF9fR09NUERf Tk9USFJPVzsKKworb21wZF9yY190IG9tcGRfcmVsX2Rpc3BsYXlfY29udHJvbF92YXJzIChjb25z dCBjaGFyICogY29uc3QgKiopIF9fR09NUERfTk9USFJPVzsKKworb21wZF9yY190IG9tcGRfZW51 bWVyYXRlX2ljdnMgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX2ljdl9pZF90 LAorCQkJICAgICAgIG9tcGRfaWN2X2lkX3QgKiwgY29uc3QgY2hhciAqKiwgb21wZF9zY29wZV90 ICosCisJCQkgICAgICAgaW50ICopIF9fR09NUERfTk9USFJPVzsKKworb21wZF9yY190IG9tcGRf Z2V0X2ljdl9mcm9tX3Njb3BlICh2b2lkICosIG9tcGRfc2NvcGVfdCwgb21wZF9pY3ZfaWRfdCwK KwkJCQkgICBvbXBkX3dvcmRfdCAqKSBfX0dPTVBEX05PVEhST1c7CisKK29tcGRfcmNfdCBvbXBk X2dldF9pY3Zfc3RyaW5nX2Zyb21fc2NvcGUgKHZvaWQgKiwgb21wZF9zY29wZV90LCBvbXBkX2lj dl9pZF90LAorCQkJCQkgIGNvbnN0IGNoYXIgKiopIF9fR09NUERfTk9USFJPVzsKKworb21wZF9y Y190IG9tcGRfZ2V0X3Rvb2xfZGF0YSAodm9pZCAqLCBvbXBkX3Njb3BlX3QsIG9tcGRfd29yZF90 ICosCisJCQkgICAgICBvbXBkX2FkZHJlc3NfdCAqKSBfX0dPTVBEX05PVEhST1c7CisKKyNpZmRl ZiBfX0VMRl9fCisjZGVmaW5lIG9tcGRfYnBfcGFyYWxsZWxfYmVnaW4oKSBcCisgIF9fYXNtX18g X192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBfcGFyYWxsZWxfYmVnaW5cblx0IiBcCisJCQki b21wZF9icF9wYXJhbGxlbF9iZWdpbjoiKQorI2RlZmluZSBvbXBkX2JwX3BhcmFsbGVsX2VuZCgp IFwKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIuZ2xvYmwgb21wZF9icF9wYXJhbGxlbF9lbmRc blx0IiBcCisJCQkib21wZF9icF9wYXJhbGxlbF9lbmQ6IikKKyNkZWZpbmUgb21wZF9icF90YXNr X2JlZ2luKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5nbG9ibCBvbXBkX2JwX3Rhc2tf YmVnaW5cblx0IiBcCisJCQkib21wZF9icF90YXNrX2JlZ2luOiIpCisjZGVmaW5lIG9tcGRfYnBf dGFza19lbmQoKSBcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiLmdsb2JsIG9tcGRfYnBfdGFz a19lbmRcblx0IiBcCisJCQkib21wZF9icF90YXNrX2VuZDoiKQorI2RlZmluZSBvbXBkX2JwX3Ro cmVhZF9iZWdpbigpIFwKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIuZ2xvYmwgb21wZF9icF90 aHJlYWRfYmVnaW5cblx0IiBcCisJCQkib21wZF9icF90aHJlYWRfYmVnaW46IikKKyNkZWZpbmUg b21wZF9icF90aHJlYWRfZW5kKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5nbG9ibCBv bXBkX2JwX3RocmVhZF9lbmRcblx0IiBcCisJCQkib21wZF9icF90aHJlYWRfZW5kOiIpCisjZGVm aW5lIG9tcGRfYnBfZGV2aWNlX2JlZ2luKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5n bG9ibCBvbXBkX2JwX2RldmljZV9iZWdpblxuXHQiIFwKKwkJCSJvbXBkX2JwX2RldmljZV9lbmQ6 IikKKyNkZWZpbmUgb21wZF9icF9kZXZpY2VfZW5kKCkgXAorICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoIi5nbG9ibCBvbXBkX2JwX2RldmljZV9lbmRcblx0IiBcCisJCQkib21wZF9icF9kZXZpY2Vf ZW5kOiIpCisjZWxzZQorCitleHRlcm4gdm9pZCBvbXBkX2JwX3BhcmFsbGVsX2JlZ2luICh2b2lk KSBfX0dPTVBEX05PVEhST1c7CitleHRlcm4gdm9pZCBvbXBkX2JwX3BhcmFsbGVsX2VuZCAodm9p ZCkgX19HT01QRF9OT1RIUk9XOworCitleHRlcm4gdm9pZCBvbXBkX2JwX3Rhc2tfYmVnaW4gKHZv aWQpIF9fR09NUERfTk9USFJPVzsKK2V4dGVybiB2b2lkIG9tcGRfYnBfdGFza19lbmQgKHZvaWQp IF9fR09NUERfTk9USFJPVzsKKworZXh0ZXJuIHZvaWQgb21wZF9icF90aHJlYWRfYmVnaW4gKHZv aWQpIF9fR09NUERfTk9USFJPVzsKK2V4dGVybiB2b2lkIG9tcGRfYnBfdGhyZWFkX2VuZCAodm9p ZCkgX19HT01QRF9OT1RIUk9XOworCitleHRlcm4gdm9pZCBvbXBkX2JwX2RldmljZV9iZWdpbiAo dm9pZCkgX19HT01QRF9OT1RIUk9XOworZXh0ZXJuIHZvaWQgb21wZF9icF9kZXZpY2VfZW5kICh2 b2lkKSBfX0dPTVBEX05PVEhST1c7CisjZW5kaWYgLyogX19FTEZfXyAqLworCisjZGVmaW5lIG9t cGRfc2VnbWVudF9ub25lICAoKG9tcGRfc2VnX3QpIDApCisjZGVmaW5lIG9tcGRfaWN2X3VuZGVm aW5lZCAoKG9tcGRfaWN2X2lkX3QpIDApCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfTsgLy8gZXh0 ZXJuICJDIgorI2VuZGlmCisKKyNlbmRpZiAvKiBfT01QX1RPT0xTX0ggKi8KZGlmZiAtLWdpdCBh L2xpYmdvbXAvb21wZC1oZWxwZXIuYyBiL2xpYmdvbXAvb21wZC1oZWxwZXIuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2VkNTRkMTg2ODkKLS0tIC9kZXYvbnVsbAor KysgYi9saWJnb21wL29tcGQtaGVscGVyLmMKQEAgLTAsMCArMSwyNTIgQEAKKy8qIENvcHlyaWdo dCAoQykgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRyaWJ1dGVk IGJ5IE1vaGFtZWQgQXRlZiA8bW9oYW1lZGF0ZWYxNjk4QGdtYWlsLmNvbT4uCisgICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIE9mZmxvYWRpbmcgYW5kIE11bHRpIFByb2Nlc3NpbmcgTGli cmFyeQorICAgKGxpYmdvbXApLgorICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0 aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisgICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorICAgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUworICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKyAgIFVuZGVyIFNl Y3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorICAg cGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlv biwgdmVyc2lvbgorICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4KKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBM aWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmls ZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNl ZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyogVGhpcyBmaWxl IGNvbnRhaW5zIHRoZSBzb3VyY2UgY29kZSBvZiBmdW5jdGlvbnMKKyAgIGRlY2xhcmVkIGluIG9t cGQtaGVscGVyLmguICAqLworCisjaW5jbHVkZSAib21wZC1oZWxwZXIuaCIKKworb21wZF9kZXZp Y2VfdHlwZV9zaXplc190IHRhcmdldF9zaXplczsKKworLyogR2V0IGdsb2JhbCBJQ1ZzLiAgKi8K K29tcGRfcmNfdAorZ29tcGRfZ2V0X2NhbmNlbGxhdGlvbiAob21wZF9hZGRyZXNzX3NwYWNlX2hh bmRsZV90ICphaCwKKwkJCW9tcGRfd29yZF90ICpjYW5jZWxfdmFyKQoreworICBDSEVDSyAoYWgp OworICBvbXBkX3dvcmRfdCBjYW5jZWwgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2Fk ZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBH RVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF9jYW5jZWxfdmFyIiwgY2FuY2VsLCBj YW5jZWwsCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2NoYXIsIDEsIHJldCwgc3ltYm9sX2Fk ZHIpOworICAqY2FuY2VsX3ZhciA9IGNhbmNlbDsKKyAgcmV0dXJuIHJldDsKK30KKworb21wZF9y Y190Citnb21wZF9nZXRfbWF4X3Rhc2tfcHJpb3JpdHkgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5k bGVfdCAqYWgsCisJCQkgICAgIG9tcGRfd29yZF90ICp0YXNrX3ApCit7CisgIENIRUNLIChhaCk7 CisgIG9tcGRfd29yZF90IHRhc2tfcHJpb3JpdHkgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBv bXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9 OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF9tYXhfdGFza19wcmlvcml0 eV92YXIiLCB0YXNrX3ByaW9yaXR5LAorCSAgICAgdGFza19wcmlvcml0eSwgdGFyZ2V0X3NpemVz LnNpemVvZl9pbnQsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqdGFza19wID0gdGFza19wcmlv cml0eTsKKyAgcmV0dXJuIHJldDsKK30KKworb21wZF9yY190Citnb21wZF9nZXRfc3RhY2tzaXpl IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLCBvbXBkX3dvcmRfdCAqc3RhY2tzaXpl KQoreworICBDSEVDSyAoYWgpOworICBvbXBkX3dvcmRfdCBzdGFja192YXIgPSAwOworICBvbXBk X3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRf VU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAic3RhY2tz aXplIiwgc3RhY2tfdmFyLCBzdGFja192YXIsCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2xv bmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqc3RhY2tzaXplID0gc3RhY2tfdmFyOworICBy ZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK2dvbXBkX2dldF9kZWJ1ZyAob21wZF9hZGRyZXNz X3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKmRlYnVnX3ZhcikKK3sKKyAgQ0hFQ0sg KGFoKTsKKyAgb21wZF93b3JkX3QgZGVidWcgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBk X2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9Owor ICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF9kZWJ1Z192YXIiLCBkZWJ1Zywg ZGVidWcsCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2ludCwgMSwgcmV0LCBzeW1ib2xfYWRk cik7CisgICpkZWJ1Z192YXIgPSBkZWJ1ZzsKKyAgcmV0dXJuIHJldDsKK30KKworb21wZF9yY190 Citnb21wZF9nZXRfZGlzcGxheV9hZmZpbml0eSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90 ICphaCwgb21wZF93b3JkX3QgKmFmZikKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3Qg YWZmaW4gPSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRk ciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGFoLT5jb250 ZXh0LCBOVUxMLCAiZ29tcF9kaXNwbGF5X2FmZmluaXR5X3ZhciIsIGFmZmluLCBhZmZpbiwKKwkg ICAgIHRhcmdldF9zaXplcy5zaXplb2ZfY2hhciwgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisgICph ZmYgPSBhZmZpbjsKKyAgcmV0dXJuIHJldDsKK30KKworb21wZF9yY190Citnb21wZF9nZXRfYWZm aW5pdHlfZm9ybWF0X2xlbiAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaCwKKwkJCSAg ICAgICBvbXBkX3dvcmRfdCAqbGVuKQoreworICBDSEVDSyAoYWgpOworICBvbXBkX3dvcmRfdCBs ZW5fdmFyID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2Fk ZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChhaC0+Y29u dGV4dCwgTlVMTCwgImdvbXBfYWZmaW5pdHlfZm9ybWF0X2xlbiIsIGxlbl92YXIsIGxlbl92YXIs CisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2ludCwgMSwgcmV0LCBzeW1ib2xfYWRkcik7Cisg ICpsZW4gPSBsZW5fdmFyOworICByZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK2dvbXBkX2dl dF9hZmZpbml0eV9mb3JtYXQgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsIGNvbnN0 IGNoYXIgKipzdHJpbmcpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90IGxlbiA9IDEw MDsKKyAgb21wZF9yY190IHJldDsKKyAgY2hhciAqdGVtcF9zdHI7CisgIG9tcGRfd29yZF90IGFk ZHI7CisgIHJldCA9IGNhbGxiYWNrcy0+YWxsb2NfbWVtb3J5IChsZW4gKyAxLCAodm9pZCAqKikg JnRlbXBfc3RyKTsKKyAgdGVtcF9zdHJbbGVuXSA9ICdcMCc7CisgIG9tcGRfYWRkcmVzc190IHN5 bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIHJldCA9IGNhbGxi YWNrcy0+c3ltYm9sX2FkZHJfbG9va3VwIChhaC0+Y29udGV4dCwgTlVMTCwKKwkJCQkgICAgICAg ImdvbXBfYWZmaW5pdHlfZm9ybWF0X3ZhciIsICZzeW1ib2xfYWRkciwKKwkJCQkgICAgICAgTlVM TCk7CisgIENIRUNLX1JFVCAocmV0KTsKKyAgcmV0ID0gY2FsbGJhY2tzLT5yZWFkX21lbW9yeSAo YWgtPmNvbnRleHQsIE5VTEwsICZzeW1ib2xfYWRkciwKKwkJCQl0YXJnZXRfc2l6ZXMuc2l6ZW9m X3BvaW50ZXIsICZhZGRyKTsKKyAgQ0hFQ0tfUkVUIChyZXQpOworICBzeW1ib2xfYWRkci5hZGRy ZXNzID0gYWRkcjsKKyAgcmV0ID0gY2FsbGJhY2tzLT5yZWFkX3N0cmluZyAoYWgtPmNvbnRleHQs IE5VTEwsICZzeW1ib2xfYWRkciwgbGVuLAorCQkJCSh2b2lkICopIHRlbXBfc3RyKTsKKyAgQ0hF Q0tfUkVUIChyZXQpOworICByZXQgPSBjYWxsYmFja3MtPmRldmljZV90b19ob3N0IChhaC0+Y29u dGV4dCwgJnRlbXBfc3RyLAorCQkJCSAgIHRhcmdldF9zaXplcy5zaXplb2ZfY2hhciwgbGVuLCAm dGVtcF9zdHIpOworICAqc3RyaW5nID0gdGVtcF9zdHI7CisgIHJldHVybiByZXQ7Cit9CisKK29t cGRfcmNfdAorZ29tcGRfZ2V0X3dhaXRfcG9saWN5IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxl X3QgKmFoLAorCQkgICAgICAgb21wZF93b3JkX3QgKndhaXRfcG9saWN5KQoreworICBDSEVDSyAo YWgpOworICBvbXBkX3dvcmRfdCB3YWl0X3AgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBk X2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9Owor ICBHRVRfVkFMVUUgKGFoLT5jb250ZXh0LCBOVUxMLCAid2FpdF9wb2xpY3kiLCB3YWl0X3AsIHdh aXRfcCwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfaW50LCAxLCByZXQsIHN5bWJvbF9hZGRy KTsKKyAgKndhaXRfcG9saWN5ID0gd2FpdF9wOworICByZXR1cm4gcmV0OworfQorCitvbXBkX3Jj X3QKK2dvbXBkX2dldF9udW1fdGVhbXMgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgs IG9tcGRfd29yZF90ICpudW1fdGVhbXMpCit7CisgIENIRUNLIChhaCk7CisgIG9tcGRfd29yZF90 IG51bV90ID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2Fk ZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChhaC0+Y29u dGV4dCwgTlVMTCwgImdvbXBfbnVtX3RlYW1zX3ZhciIsIG51bV90LCBudW1fdCwKKwkgICAgIHRh cmdldF9zaXplcy5zaXplb2ZfaW50LCAxLCByZXQsIHN5bWJvbF9hZGRyKTsKKyAgKm51bV90ZWFt cyA9IG51bV90OworICByZXR1cm4gcmV0OworfQorCitvbXBkX3JjX3QKK2dvbXBkX2dldF90ZWFt c190aHJlYWRfbGltaXQgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsCisJCQkgICAg ICBvbXBkX3dvcmRfdCAqdGhyZWFkX2xpbWl0KQoreworICBDSEVDSyAoYWgpOworICBvbXBkX3dv cmRfdCB0aHJfbGltID0gMDsKKyAgb21wZF9yY190IHJldDsKKyAgb21wZF9hZGRyZXNzX3Qgc3lt Ym9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgR0VUX1ZBTFVFIChh aC0+Y29udGV4dCwgTlVMTCwgImdvbXBfdGVhbXNfdGhyZWFkX2xpbWl0X3ZhciIsIHRocl9saW0s IHRocl9saW0sCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2ludCwgMSwgcmV0LCBzeW1ib2xf YWRkcik7CisgICp0aHJlYWRfbGltaXQgPSB0aHJfbGltOworICByZXR1cm4gcmV0OworfQorCitv bXBkX3JjX3QKK2dvbXBkX2dldF9zcGluX2NvdW50IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxl X3QgKmFoLCBvbXBkX3dvcmRfdCAqc3Bpbl9jb3VudCkKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21w ZF93b3JkX3Qgc3BpbnMgPSAwOworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCBz eW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUg KGFoLT5jb250ZXh0LCBOVUxMLCAiZ29tcF9zcGluX2NvdW50X3ZhciIsIHNwaW5zLCBzcGlucywK KwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZ19sb25nLCAxLCByZXQsIHN5bWJvbF9hZGRy KTsKKyAgKnNwaW5fY291bnQgPSBzcGluczsKKyAgcmV0dXJuIHJldDsKK30KKworb21wZF9yY190 Citnb21wZF9nZXRfYXZhaWxhYmxlX2NwdXMgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAq YWgsIG9tcGRfd29yZF90ICpwcm9jcykKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3Qg Y3B1cyA9IDA7CisgIG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRy ID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRl eHQsIE5VTEwsICJnb21wX2F2YWlsYWJsZV9jcHVzIiwgY3B1cywgY3B1cywKKwkgICAgIHRhcmdl dF9zaXplcy5zaXplb2ZfbG9uZywgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisgICpwcm9jcyA9IGNw dXM7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorZ29tcGRfZ2V0X3Rocm90dGxlZF9z cGluX2NvdW50IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoLAorCQkJCW9tcGRfd29y ZF90ICp0aHJvdCkKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3QgdGVtcCA9IDA7Cisg IG9tcGRfcmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VH TUVOVF9VTlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJn b21wX3Rocm90dGxlZF9zcGluX2NvdW50X3ZhciIsIHRlbXAsIHRlbXAsCisJICAgICB0YXJnZXRf c2l6ZXMuc2l6ZW9mX2xvbmdfbG9uZywgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisgICp0aHJvdCA9 IHRlbXA7CisgIHJldHVybiByZXQ7Cit9CisKK29tcGRfcmNfdAorZ29tcGRfZ2V0X21hbmFnZWRf dGhyZWFkcyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaCwgb21wZF93b3JkX3QgKm1h bl90aCkKK3sKKyAgQ0hFQ0sgKGFoKTsKKyAgb21wZF93b3JkX3QgdGVtcCA9IDA7CisgIG9tcGRf cmNfdCByZXQ7CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9V TlNQRUNJRklFRCwgMH07CisgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJnb21wX21h bmFnZWRfdGhyZWFkcyIsIHRlbXAsIHRlbXAsCisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2xv bmcsIDEsIHJldCwgc3ltYm9sX2FkZHIpOworICAqbWFuX3RoID0gdGVtcDsKKyAgcmV0dXJuIHJl dDsKK30KKworLyogRW5kIG9mIGdsb2JhbCBJQ1ZzIGZ1bmN0aW9ucy4gICovCisKK29tcGRfcmNf dAorZ2V0X3NpemVzIChvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpjb250ZXh0KQorewor ICBpZiAoY29udGV4dCA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKwor ICBzdGF0aWMgYm9vbCBpbml0ZWQgPSBmYWxzZTsKKyAgc3RhdGljIG9tcGRfcmNfdCByZXQ7CisK KyAgaWYgKGluaXRlZCkKKyAgICByZXR1cm4gcmV0OworCisgIHJldCA9IGNhbGxiYWNrcy0+c2l6 ZW9mX3R5cGUgKGNvbnRleHQsICZ0YXJnZXRfc2l6ZXMpOworICBpZiAocmV0ICE9IG9tcGRfcmNf b2spCisgICAgcmV0dXJuIHJldDsKKworICBpbml0ZWQgPSB0cnVlOworICByZXR1cm4gcmV0Owor fQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBkLWhlbHBlci5oIGIvbGliZ29tcC9vbXBkLWhlbHBl ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNmExZTA2ZjA3YQot LS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvb21wZC1oZWxwZXIuaApAQCAtMCwwICsxLDE5OSBA QAorLyogQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor ICAgQ29udHJpYnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29t Pi4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkg UHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBv ciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhP VVQgQU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxz LgorICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBh ZGRpdGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExp YnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhl IEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOwor ICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVs eS4gIElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwor CisvKiBUaGlzIGZpbGUgY29udGFpbnMgZGF0YSB0eXBlcyBhbmQgZGVjbGFyYXRpb25zIG9mIGZ1 bmN0aW9ucyB0aGF0IGFyZSBub3QKKyAgIHByb3ZpZGVkIGJ5IHRoZSBib29rIGJ1dCB3ZSBmaW5k IHRoZW0gbmVjZXNzYXJ5LiAgKi8KKworI2lmbmRlZiBfT01QRF9IRUxQRVJfSAorI2RlZmluZSBf T01QRF9IRUxQRVJfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlm CisKKyNpbmNsdWRlICJvbXAtdG9vbHMuaCIKKyNpbmNsdWRlICJvbXBkLXR5cGVzLmgiCisjaW5j bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4K KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRi b29sLmg+CisKKyNkZWZpbmUgc3RyaW5naXplKHgpIHN0cmluZ2l6ZTEoeCkKKyNkZWZpbmUgc3Ry aW5naXplMSh4KSAjeAorCisjZGVmaW5lIE9NUERfVkVSU0lPTiAyMDIwMTEKKworZXh0ZXJuIGNv bnN0IG9tcGRfY2FsbGJhY2tzX3QgKmNhbGxiYWNrczsKK2V4dGVybiBfX1VJTlQ2NF9UWVBFX18g Z29tcGRfc3RhdGU7CitleHRlcm4gb21wZF9kZXZpY2VfdHlwZV9zaXplc190IHRhcmdldF9zaXpl czsKKwordHlwZWRlZiBzdHJ1Y3QgX29tcGRfYXNwYWNlX2hhbmRsZQoreworICBvbXBkX2FkZHJl c3Nfc3BhY2VfY29udGV4dF90ICpjb250ZXh0OworICBvbXBkX2RldmljZV90IGtpbmQ7Cit9IG9t cGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgX29tcGRfdGhyZWFk X2hhbmRsZQoreworICBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoOworICBvbXBkX3Ro cmVhZF9jb250ZXh0X3QgKnRocmVhZF9jb250ZXh0OworICBvbXBkX2FkZHJlc3NfdCB0aDsKK30g b21wZF90aHJlYWRfaGFuZGxlX3Q7CisKK3R5cGVkZWYgc3RydWN0IF9vbXBkX3BhcmFsbGVsX2hh bmRsZQoreworICBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmFoOworICBvbXBkX2FkZHJl c3NfdCB0aDsKK30gb21wZF9wYXJhbGxlbF9oYW5kbGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QgX29t cGRfdGFza19oYW5kbGUKK3sKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaDsKKyAg b21wZF9hZGRyZXNzX3QgdGg7Cit9IG9tcGRfdGFza19oYW5kbGVfdDsKKworI2RlZmluZSBDSEVD S19SRVQocmV0KSBcCisgZG8geyBcCisgICBpZiAocmV0ICE9IG9tcGRfcmNfb2spIFwKKyAgICAg cmV0dXJuIHJldDsgXAorIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgR0VUX1ZBTFVFKGNvbnRleHQs IHRocmVhZF9jb250ZXh0LCBuYW1lLCBvdXRwdXQsIGRpc3RfYnVmLCBzaXplLCBcCisgIGNvdW50 LCByZXQsIHN5bWJvbF9hZGRyKSBcCisgIGRvIHsgXAorICAgIHJldCA9IGNhbGxiYWNrcy0+c3lt Ym9sX2FkZHJfbG9va3VwIChjb250ZXh0LCB0aHJlYWRfY29udGV4dCwgbmFtZSwgXAorCQkJCQkg JnN5bWJvbF9hZGRyLCBOVUxMKTsgXAorICAgIENIRUNLX1JFVCAocmV0KTsgXAorICAgIHJldCA9 IGNhbGxiYWNrcy0+cmVhZF9tZW1vcnkgKGNvbnRleHQsIHRocmVhZF9jb250ZXh0LCAmc3ltYm9s X2FkZHIsIHNpemUsIFwKKwkJCQkgICZkaXN0X2J1Zik7IFwKKyAgICBDSEVDS19SRVQgKHJldCk7 IFwKKyAgICByZXQgPSBjYWxsYmFja3MtPmRldmljZV90b19ob3N0IChjb250ZXh0LCAmZGlzdF9i dWYsIHNpemUsIGNvdW50LCAmb3V0cHV0KTtcCisgICAgQ0hFQ0tfUkVUIChyZXQpOyBcCisgIH0g d2hpbGUgKDApCisKKyNkZWZpbmUgQ0hFQ0soYWgpIFwKKyAgZG8geyAgIFwKKyAgICBpZiAoYWgg PT0gTlVMTCB8fCBhaC0+Y29udGV4dCA9PSBOVUxMKSBcCisgICAgICByZXR1cm4gb21wZF9yY19z dGFsZV9oYW5kbGU7IFwKKyAgICBpZiAoY2FsbGJhY2tzID09IE5VTEwpIFwKKyAgICAgIHJldHVy biBvbXBkX3JjX2NhbGxiYWNrX2Vycm9yOyBcCisgIH0gd2hpbGUgKDApCisKKy8qICh2YXJfbmFt ZSwgc3RyaW5nX25hbWUsIHNjb3BlKS4gICovCisjZGVmaW5lIEZPUkVBQ0hfT01QRF9JQ1Yob21w ZF9pY3YpIFwKKyAgb21wZF9pY3YgKG50aHJlYWRzX3ZhciwgIm50aHJlYWQgdmFyIiwgb21wZF9z Y29wZV90aHJlYWQpIFwKKyAgb21wZF9pY3YgKHRocmVhZF9saW1pdF92YXIsICJ0aHJlYWQgbGlt aXQgdmFyIiwgb21wZF9zY29wZV90YXNrKSBcCisgIG9tcGRfaWN2IChydW5fc2NoZWRfdmFyLCAi cnVuIHNjaGVkIGxpbWl0IHZhciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBvbXBkX2ljdiAocnVu X3NjaGVkX2NodW5rX3NpemUsICJydW4gc2NoZWQgY2h1bmsgc2l6ZSB2YXIiLCBvbXBkX3Njb3Bl X3Rhc2spIFwKKyAgb21wZF9pY3YgKGRlZmF1bHRfZGV2aWNlX3ZhciwgImRlZmF1bHQgZGV2aWNl IHZhciIsIG9tcGRfc2NvcGVfdGhyZWFkKSBcCisgIG9tcGRfaWN2IChkeW5fdmFyLCAiZHluYW1p YyB2YXIiLCBvbXBkX3Njb3BlX3RocmVhZCkgXAorICBvbXBkX2ljdiAobWF4X2FjdGl2ZV9sZXZl bHNfdmFyLCAibWF4IGFjdGl2ZSBsZXZlbCB2YXIiLCBvbXBkX3Njb3BlX3Rhc2spIFwKKyAgb21w ZF9pY3YgKGJpbmRfdmFyLCAicHJvYyBiaW5kIHZhciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBv bXBkX2ljdiAoY2FuY2VsbGF0aW9uX3ZhciwgImNhbmNlbCB2YXIiLCBvbXBkX3Njb3BlX2FkZHJl c3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKG1heF90YXNrX3ByaW9yaXR5X3ZhciwgIm1heCB0YXNr IHByaW9yaXR5IHZhciIsIFwKKwkgICAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBcCisgIG9t cGRfaWN2IChzdGFja3NpemVfdmFyLCAic3RhY2sgc2l6ZSB2YXIiLCBvbXBkX3Njb3BlX2FkZHJl c3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKGRlYnVnX3ZhciwgImRlYnVnIHZhciIsIG9tcGRfc2Nv cGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAoZGlzcGxheV9hZmZpbml0eV92YXIsICJk aXNwbGF5IGFmZmluaXR5IHZhciIsIFwKKwkgICAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBc CisgIG9tcGRfaWN2IChhZmZpbml0eV9mb3JtYXRfdmFyLCAiYWZmaW5pdHkgZm9ybWF0IHZhciIs IFwKKwkgICAgb21wZF9zY29wZV9hZGRyZXNzX3NwYWNlKSBcCisgIG9tcGRfaWN2IChhZmZpbml0 eV9mb3JtYXRfbGVuX3ZhciwgImFmZmluaXR5IGZvcm1hdCBsZW4gdmFyIiwgXAorCSAgICBvbXBk X3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3YgKHdhaXRfcG9saWN5X3ZhciwgIndh aXQgcG9saWN5IHZhciIsIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAo bnVtX3RlYW1zX3ZhciwgIm51bSB0ZWFtcyB2YXIiLCBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2Up IFwKKyAgb21wZF9pY3YgKHRlYW1zX3RocmVhZF9saW1pdF92YXIsICJ0ZWFtcyB0aHJlYWQgbGlt aXQgdmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3Yg KHNwaW5fY291bnRfdmFyLCAic3BpbiBjb3VudCB2YXIiLCBvbXBkX3Njb3BlX2FkZHJlc3Nfc3Bh Y2UpIFwKKyAgb21wZF9pY3YgKG51bV9wcm9jX3ZhciwgIm51bSBwcm9jIHZhciIsIG9tcGRfc2Nv cGVfYWRkcmVzc19zcGFjZSkgXAorICBvbXBkX2ljdiAodGhyb3R0bGVkX3NwaW5fY291bnRfdmFy LCAidGhyb3R0bGVkIHNwaW4gY291bnQgdmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nf c3BhY2UpIFwKKyAgb21wZF9pY3YgKG1hbmFnZWRfdGhyZWFkc192YXIsICJtYW5hZ2VkIHRocmVh ZHMgdmFyIiwgXAorCSAgICBvbXBkX3Njb3BlX2FkZHJlc3Nfc3BhY2UpIFwKKyAgb21wZF9pY3Yg KHRocmVhZF9udW1fdmFyLCAidGhyZWFkIG51bSB2YXIiLCBvbXBkX3Njb3BlX3RocmVhZCkgXAor ICBvbXBkX2ljdiAoZmluYWxfdGFza192YXIsICJmaW5hbCB0YXNrIHZhciIsIG9tcGRfc2NvcGVf dGFzaykgXAorICBvbXBkX2ljdiAoaW1wbGljaXRfdGFza192YXIsICJpbXBsaWNpdCB0YXNrIHZh ciIsIG9tcGRfc2NvcGVfdGFzaykgXAorICBvbXBkX2ljdiAodGVhbV9zaXplX3ZhciwgInRlYW0g c2l6ZSB2YXIiLCBvbXBkX3Njb3BlX3BhcmFsbGVsKQorCitlbnVtIG9tcGRfaWN2Cit7CisgIGdv bXBkX2ljdl91bmRlZmluZWRfdmFyID0gMCwKKyAgI2RlZmluZSBnb21wZF9pY3ZfaXRlcmF0b3Io dmFyX25hbWUsIHN0cmluZ19uYW1lLCBzY29wZSkgZ29tcGRfaWN2XyMjdmFyX25hbWUsCisgICAg Rk9SRUFDSF9PTVBEX0lDViAoZ29tcGRfaWN2X2l0ZXJhdG9yKQorICAjdW5kZWYgZ29tcGRfaWN2 X2l0ZXJhdG9yCisgIGdvbXBkX2xhc3RfaWN2X3ZhcgorfTsKKworI2lmZGVmIEhBVkVfQVRUUklC VVRFX1ZJU0lCSUxJVFkKKyNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaChoaWRkZW4pCisjZW5k aWYKKworb21wZF9yY190IGdldF9zaXplcyAob21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAq KTsKKworLyogR2V0IExvY2FsIGludGVybmFsIGNvbnRyb2wgdmFyaWFibGVzLiAgKi8KK29tcGRf cmNfdCBnb21wZF9nZXRfbnRocmVhZCAob21wZF90aHJlYWRfaGFuZGxlX3QgKiwgb21wZF93b3Jk X3QgKik7CitvbXBkX3JjX3QgZ29tcGRfZ2V0X3RocmVhZF9saW1pdCAob21wZF90YXNrX2hhbmRs ZV90ICosIG9tcGRfd29yZF90ICopOworb21wZF9yY190IGdvbXBkX2dldF9ydW5fc2NoZWQgKG9t cGRfdGFza19oYW5kbGVfdCAqLCAgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3QgZ29tcGRfZ2V0 X3J1bl9zY2hlZF9jaHVua19zaXplIChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwgb21wZF93b3JkX3Qg Kik7CitvbXBkX3JjX3QgZ29tcGRfZ2V0X2RlZmF1bHRfZGV2aWNlIChvbXBkX3RocmVhZF9oYW5k bGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfZHluYW1pYyAob21w ZF90aHJlYWRfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3QgZ29tcGRfZ2V0 X21heF9hY3RpdmVfbGV2ZWxzIChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7 CitvbXBkX3JjX3QgZ29tcGRfZ2V0X3Byb2NfYmluZCAob21wZF90YXNrX2hhbmRsZV90ICosIG9t cGRfd29yZF90ICopOworb21wZF9yY190IGdvbXBkX2lzX2ZpbmFsIChvbXBkX3Rhc2tfaGFuZGxl X3QgKiwgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3QgZ29tcGRfaXNfaW1wbGljaXQgKG9tcGRf dGFza19oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfdGVh bV9zaXplIChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICosIG9tcGRfd29yZF90ICopOworCisvKiBH ZXQgR2xvYmFsIElDVnMuICAqLworb21wZF9yY190IGdvbXBkX2dldF9jYW5jZWxsYXRpb24gKG9t cGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBn b21wZF9nZXRfbWF4X3Rhc2tfcHJpb3JpdHkgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAq LAorICAJCQkJICAgICAgIG9tcGRfd29yZF90ICopOworb21wZF9yY190IGdvbXBkX2dldF9zdGFj a3NpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29t cGRfcmNfdCBnb21wZF9nZXRfZGVidWcgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBv bXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfZGlzcGxheV9hZmZpbml0eSAob21w ZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCisJCQkJICAgICAgb21wZF93b3JkX3QgKik7Citv bXBkX3JjX3QgZ29tcGRfZ2V0X2FmZmluaXR5X2Zvcm1hdCAob21wZF9hZGRyZXNzX3NwYWNlX2hh bmRsZV90ICosCisJCQkJICAgICBjb25zdCBjaGFyICoqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRf YWZmaW5pdHlfZm9ybWF0X2xlbiAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCisJCQkJ CSBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfd2FpdF9wb2xpY3kgKG9tcGRf YWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21w ZF9nZXRfbnVtX3RlYW1zIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwgb21wZF93b3Jk X3QgKik7CitvbXBkX3JjX3QgZ29tcGRfZ2V0X3RlYW1zX3RocmVhZF9saW1pdCAob21wZF9hZGRy ZXNzX3NwYWNlX2hhbmRsZV90ICosCisJCQkJCW9tcGRfd29yZF90ICopOworb21wZF9yY190IGdv bXBkX2dldF9zcGluX2NvdW50IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwgb21wZF93 b3JkX3QgKik7CitvbXBkX3JjX3QgZ29tcGRfZ2V0X2F2YWlsYWJsZV9jcHVzIChvbXBkX2FkZHJl c3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICAgb21wZF93b3JkX3QgKik7CitvbXBkX3JjX3Qg Z29tcGRfZ2V0X3Rocm90dGxlZF9zcGluX2NvdW50IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxl X3QgKiwKKwkJCQkJICBvbXBkX3dvcmRfdCAqKTsKK29tcGRfcmNfdCBnb21wZF9nZXRfbWFuYWdl ZF90aHJlYWRzIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICAgIG9tcGRf d29yZF90ICopOworLypFbmQgb2YgR2xvYmFsIElDVnMuICAqLworCisKKyNpZmRlZiBIQVZFX0FU VFJJQlVURV9WSVNJQklMSVRZCisjcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAorI2VuZGlmCisK KyNpZmRlZiBfX2NwbHVzcGx1cworfSAvLyBleHRlcm4gQworI2VuZGlmCisKKyNlbmRpZiAvKiBf T01QRF9IRUxQRVJfSCAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBkLWljdi5jIGIvbGliZ29t cC9vbXBkLWljdi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYTUz MzM0NDQyNQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvb21wZC1pY3YuYwpAQCAtMCwwICsx LDIwMSBAQAorLyogQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorICAgQ29udHJpYnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21h aWwuY29tPi4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQg TXVsdGkgUHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAg IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdv bXAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 IFdJVEhPVVQgQU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBk ZXRhaWxzLgorICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3Jh bnRlZCBhZGRpdGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50 aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkg b2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOworICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3Bl Y3RpdmVseS4gIElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworCisvKiBUaGlzIGZpbGUgY29udGFpbnMgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25z IGRlZmluZWQgaW4gNS41LjggYW5kIDUuNS45CisgIGluIE9wZW5NUCBBcHBsaWNhdGlvbiBQcm9n cmFtbWluZyBJbnRlcmZhY2UgdjUuMS4gICovCisKKyNpbmNsdWRlICJvbXBkLWhlbHBlci5oIgor CitzdGF0aWMgY29uc3QgY2hhciAqZ29tcGRfaWN2X3N0cmluZ1tdID0geyAidW5kZWZpbmVkIiwK KyAgI2RlZmluZSBnb21wZF9pY3ZfaXRlcmF0b3IodmFyX25hbWUsIHN0cmluZ19uYW1lLCBzY29w ZSkgc3RyaW5nX25hbWUsCisgICAgRk9SRUFDSF9PTVBEX0lDViAoZ29tcGRfaWN2X2l0ZXJhdG9y KQorICAjdW5kZWYgZ29tcGRfaWN2X2l0ZXJhdG9yCit9OworCitzdGF0aWMgY29uc3Qgb21wZF9z Y29wZV90IGdvbXBkX2ljdl9zY29wZVtdID0ge29tcGRfc2NvcGVfZ2xvYmFsLAorICAjZGVmaW5l IGdvbXBkX2ljdl9pdGVyYXRvcih2YXJfbmFtZSwgc3RyaW5nX25hbWUsIHNjb3BlKSBzY29wZSwK KyAgICBGT1JFQUNIX09NUERfSUNWIChnb21wZF9pY3ZfaXRlcmF0b3IpCisgICN1bmRlZiBnb21w ZF9pY3ZfaXRlcmF0b3IKK307CisKK29tcGRfcmNfdAorb21wZF9lbnVtZXJhdGVfaWN2cyAob21w ZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICphaCwKKwkJICAgICBvbXBkX2ljdl9pZF90IGN1cnJl bnQsIG9tcGRfaWN2X2lkX3QgKm5leHRfaWQsCisJCSAgICAgY29uc3QgY2hhciAqKm5leHRfaWN2 X25hbWUsCisJCSAgICAgb21wZF9zY29wZV90ICpuZXh0X3Njb3BlLCBpbnQgKm1vcmUpCit7Cisg IGlmIChhaCA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKyAgaWYg KGN1cnJlbnQgKyAxID49IGdvbXBkX2xhc3RfaWN2X3ZhcgorICAgICAgfHwgbmV4dF9pZCA9PSBO VUxMCisgICAgICB8fCBuZXh0X2ljdl9uYW1lID09IE5VTEwKKyAgICAgIHx8IG5leHRfc2NvcGUg PT0gTlVMTAorICAgICAgfHwgbW9yZSA9PSBOVUxMKQorCXJldHVybiBvbXBkX3JjX2JhZF9pbnB1 dDsKKyAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2NhbGxiYWNr X2Vycm9yOworICAqbmV4dF9pZCA9IGN1cnJlbnQgKyAxOworICBjaGFyICp0ZW1wX25hbWUgPSBO VUxMOworICBvbXBkX3JjX3QgcmV0CisgICAgPSBjYWxsYmFja3MtPmFsbG9jX21lbW9yeSAoc3Ry bGVuIChnb21wZF9pY3Zfc3RyaW5nWypuZXh0X2lkXSkgKyAxLAorCQkJICAgICAgICh2b2lkICoq KSAmdGVtcF9uYW1lKTsKKyAgQ0hFQ0tfUkVUIChyZXQpOworICBzdHJjcHkgKHRlbXBfbmFtZSwg Z29tcGRfaWN2X3N0cmluZ1sqbmV4dF9pZF0pOworICAqbmV4dF9pY3ZfbmFtZSA9IHRlbXBfbmFt ZTsKKyAgKm5leHRfc2NvcGUgPSBnb21wZF9pY3Zfc2NvcGVbKm5leHRfaWRdOworICBpZiAoKCpu ZXh0X2lkKSArIDEgPCBnb21wZF9sYXN0X2ljdl92YXIpCisgICAgKm1vcmUgPSAxOworICBlbHNl CisgICAgKm1vcmUgPSAwOworICByZXR1cm4gb21wZF9yY19vazsKK30KKworb21wZF9yY190Citv bXBkX2dldF9pY3ZfZnJvbV9zY29wZSAodm9pZCAqaGFuZGxlLCBvbXBkX3Njb3BlX3Qgc2NvcGUs IG9tcGRfaWN2X2lkX3QgaWN2X2lkLAorCQkJIG9tcGRfd29yZF90ICppY3ZfdmFsdWUpCit7Cisg IGlmIChoYW5kbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7Cisg IGlmIChpY3ZfdmFsdWUgPT0gTlVMTCB8fCAhaWN2X2lkIHx8IGljdl9pZCA+PSBnb21wZF9sYXN0 X2ljdl92YXIpCisgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworICBpZiAoY2FsbGJhY2tz ID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfY2FsbGJhY2tfZXJyb3I7CisgIG9tcGRfZGV2 aWNlX3QgZGV2aWNlOworICBzd2l0Y2ggKHNjb3BlKQorICAgIHsKKyAgICAgIGNhc2Ugb21wZF9z Y29wZV9hZGRyZXNzX3NwYWNlOgorCWRldmljZSA9ICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICopIGhhbmRsZSktPmtpbmQ7CisJYnJlYWs7CisgICAgICBjYXNlIG9tcGRfc2NvcGVfdGhy ZWFkOgorCWRldmljZSA9ICgob21wZF90aHJlYWRfaGFuZGxlX3QgKikgaGFuZGxlKS0+YWgtPmtp bmQ7CisJYnJlYWs7CisgICAgICBjYXNlIG9tcGRfc2NvcGVfcGFyYWxsZWw6CisJZGV2aWNlID0g KChvbXBkX3BhcmFsbGVsX2hhbmRsZV90ICopIGhhbmRsZSktPmFoLT5raW5kOworCWJyZWFrOwor ICAgICAgY2FzZSBvbXBkX3Njb3BlX3Rhc2s6CisJZGV2aWNlID0gKChvbXBkX3Rhc2tfaGFuZGxl X3QgKikgaGFuZGxlKS0+YWgtPmtpbmQ7CisJYnJlYWs7CisgICAgICBkZWZhdWx0OgorCXJldHVy biBvbXBkX3JjX2JhZF9pbnB1dDsKKyAgICB9CisgIC8qIE5PIGN1ZGEgZm9yIG5vdy4gICovCisg IGlmIChkZXZpY2UgPT0gT01QRF9ERVZJQ0VfS0lORF9IT1NUKQorICAgIHsKKyAgICAgIHN3aXRj aCAoaWN2X2lkKQorCXsKKwkgIGNhc2UgZ29tcGRfaWN2X2NhbmNlbGxhdGlvbl92YXI6CisJICAg IHJldHVybgorCSAgICAgIGdvbXBkX2dldF9jYW5jZWxsYXRpb24gKChvbXBkX2FkZHJlc3Nfc3Bh Y2VfaGFuZGxlX3QgKikgaGFuZGxlLAorCQkJCSAgICAgIGljdl92YWx1ZSk7CisJICBjYXNlIGdv bXBkX2ljdl9tYXhfdGFza19wcmlvcml0eV92YXI6CisJICAgIHJldHVybiBnb21wZF9nZXRfbWF4 X3Rhc2tfcHJpb3JpdHkgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKikKKwkJCQkJCWhh bmRsZSwgaWN2X3ZhbHVlKTsKKwkgIGNhc2UgZ29tcGRfaWN2X3N0YWNrc2l6ZV92YXI6CisJICAg IHJldHVybiBnb21wZF9nZXRfc3RhY2tzaXplICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90 ICopIGhhbmRsZSwKKwkJCQkJaWN2X3ZhbHVlKTsKKwkgIGNhc2UgZ29tcGRfaWN2X2RlYnVnX3Zh cjoKKwkgICAgcmV0dXJuIGdvbXBkX2dldF9kZWJ1ZyAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5k bGVfdCAqKSBoYW5kbGUsCisJCQkJICAgIGljdl92YWx1ZSk7CisJICBjYXNlIGdvbXBkX2ljdl9k aXNwbGF5X2FmZmluaXR5X3ZhcjoKKwkgICAgcmV0dXJuCisJICAgICAgZ29tcGRfZ2V0X2Rpc3Bs YXlfYWZmaW5pdHkgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKikKKwkJCQkJICBoYW5k bGUsIGljdl92YWx1ZSk7CisJICBjYXNlIGdvbXBkX2ljdl9hZmZpbml0eV9mb3JtYXRfdmFyOgor CSAgICByZXR1cm4gb21wZF9yY19pbmNvbXBhdGlibGU7CisJICBjYXNlIGdvbXBkX2ljdl9hZmZp bml0eV9mb3JtYXRfbGVuX3ZhcjoKKwkgICAgcmV0dXJuIGdvbXBkX2dldF9hZmZpbml0eV9mb3Jt YXRfbGVuCisJCSAgICAoKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUsIGlj dl92YWx1ZSk7CisJICAgY2FzZSBnb21wZF9pY3Zfd2FpdF9wb2xpY3lfdmFyOgorCSAgICAgcmV0 dXJuCisJICAgICAgIGdvbXBkX2dldF93YWl0X3BvbGljeSAoKG9tcGRfYWRkcmVzc19zcGFjZV9o YW5kbGVfdCAqKWhhbmRsZSwKKwkJCQkgICAgICBpY3ZfdmFsdWUpOworCSAgIGNhc2UgZ29tcGRf aWN2X251bV90ZWFtc192YXI6CisJICAgICByZXR1cm4gZ29tcGRfZ2V0X251bV90ZWFtcyAoKG9t cGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKWhhbmRsZSwKKwkJCQkJIGljdl92YWx1ZSk7CisJ ICAgY2FzZSBnb21wZF9pY3ZfdGVhbXNfdGhyZWFkX2xpbWl0X3ZhcjoKKwkgICAgIHJldHVybgor CSAgICAgICBnb21wZF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0ICgob21wZF9hZGRyZXNzX3NwYWNl X2hhbmRsZV90ICopCisJCQkJCSAgICAgaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAgIGNhc2UgZ29t cGRfaWN2X3NwaW5fY291bnRfdmFyOgorCSAgICAgcmV0dXJuCisJICAgICAgIGdvbXBkX2dldF9z cGluX2NvdW50ICgob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopIGhhbmRsZSwKKwkJCQkg ICAgIGljdl92YWx1ZSk7CisJICAgY2FzZSBnb21wZF9pY3ZfbnVtX3Byb2NfdmFyOgorCSAgICAg cmV0dXJuCisJICAgICAgIGdvbXBkX2dldF9hdmFpbGFibGVfY3B1cyAoKG9tcGRfYWRkcmVzc19z cGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUsCisJCQkJCSBpY3ZfdmFsdWUpOworCSAgIGNhc2UgZ29t cGRfaWN2X3Rocm90dGxlZF9zcGluX2NvdW50X3ZhcjoKKwkgICAgIHJldHVybgorCSAgICAgICBn b21wZF9nZXRfdGhyb3R0bGVkX3NwaW5fY291bnQgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxl X3QgKikKKwkJCQkJICAgICAgIGhhbmRsZSwgaWN2X3ZhbHVlKTsKKwkgICBjYXNlIGdvbXBkX2lj dl9tYW5hZ2VkX3RocmVhZHNfdmFyOgorCSAgICAgcmV0dXJuCisJICAgICAgIGdvbXBkX2dldF9t YW5hZ2VkX3RocmVhZHMgKChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKikKKwkJCQkJICBo YW5kbGUsIGljdl92YWx1ZSk7CisJICBkZWZhdWx0OgorCSAgICByZXR1cm4gb21wZF9yY191bnN1 cHBvcnRlZDsKKwkgfQorICAgIH0KKyAgICByZXR1cm4gb21wZF9yY19lcnJvcjsKK30KKworb21w ZF9yY190CitvbXBkX2dldF9pY3Zfc3RyaW5nX2Zyb21fc2NvcGUgKHZvaWQgKmhhbmRsZSwgb21w ZF9zY29wZV90IHNjb3BlLAorCQkJCW9tcGRfaWN2X2lkX3QgaWN2X2lkLCBjb25zdCBjaGFyICoq aWN2X3ZhbHVlKQoreworICBpZiAoaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNf c3RhbGVfaGFuZGxlOworICBpZiAoaWN2X3ZhbHVlID09IE5VTEwgfHwgIWljdl9pZCB8fCBpY3Zf aWQgPj0gZ29tcGRfbGFzdF9pY3ZfdmFyKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsK KyAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2NhbGxiYWNrX2Vy cm9yOworICBvbXBkX2RldmljZV90IGRldmljZTsKKyAgc3dpdGNoIChzY29wZSkKKyAgICB7Cisg ICAgICBjYXNlIG9tcGRfc2NvcGVfYWRkcmVzc19zcGFjZToKKwlkZXZpY2UgPSAoKG9tcGRfYWRk cmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5kbGUpLT5raW5kOworCWJyZWFrOworICAgICAgY2Fz ZSBvbXBkX3Njb3BlX3RocmVhZDoKKwlkZXZpY2UgPSAoKG9tcGRfdGhyZWFkX2hhbmRsZV90ICop IGhhbmRsZSktPmFoLT5raW5kOworCWJyZWFrOworICAgICAgY2FzZSBvbXBkX3Njb3BlX3BhcmFs bGVsOgorCWRldmljZSA9ICgob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqKSBoYW5kbGUpLT5haC0+ a2luZDsKKwlicmVhazsKKyAgICAgIGNhc2Ugb21wZF9zY29wZV90YXNrOgorCWRldmljZSA9ICgo b21wZF90YXNrX2hhbmRsZV90ICopIGhhbmRsZSktPmFoLT5raW5kOworCWJyZWFrOworICAgICAg ZGVmYXVsdDoKKwlyZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7CisgICAgfQorICAvKiBObyBjdWRh LiAgKi8KKyAgaWYgKGRldmljZSA9PSBPTVBEX0RFVklDRV9LSU5EX0hPU1QpCisgICAgeworICAg ICAgc3dpdGNoIChpY3ZfaWQpCisJIHsKKwkgIGNhc2UgZ29tcGRfaWN2X2FmZmluaXR5X2Zvcm1h dF92YXI6CisJICAgIHJldHVybgorCSAgICAgIGdvbXBkX2dldF9hZmZpbml0eV9mb3JtYXQgKChv bXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKikgaGFuZGxlLAorCQkJCQkgaWN2X3ZhbHVlKTsK KwkgIGRlZmF1bHQ6CisJICAgIHJldHVybiBvbXBkX3JjX3Vuc3VwcG9ydGVkOworCSB9CisgICAg fQorICByZXR1cm4gb21wZF9yY19lcnJvcjsKK30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvb21wZC1p bml0LmMgYi9saWJnb21wL29tcGQtaW5pdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4zOWZmYjUyNzZlNwotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvb21wZC1p bml0LmMKQEAgLTAsMCArMSwxMzEgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMiBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5IE1vaGFtZWQgQXRlZiA8bW9o YW1lZGF0ZWYxNjk4QGdtYWlsLmNvbT4uCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05V IE9mZmxvYWRpbmcgYW5kIE11bHRpIFByb2Nlc3NpbmcgTGlicmFyeQorICAgKGxpYmdvbXApLgor ICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZl cnNpb24uCisgICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUworICAgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKyAgIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lv biAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorICAgcGVybWlzc2lvbnMgZGVzY3JpYmVk IGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorICAgMy4xLCBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJ TkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBpbXBsZW1l bnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbgorICAgc2VjdGlvbiA1LjUuMSwgNS41LjIu ICAqLworCisjaW5jbHVkZSAib21wZC1oZWxwZXIuaCIKKworLyogUGVyIE9NUEQgaW5pdGlhbGl6 YXRpb24gYW5kIGZpbmFsaXphdGlvbi4gICovCisKK19fVUlOVDY0X1RZUEVfXyBnb21wZF9zdGF0 ZTsKK2NvbnN0IG9tcGRfY2FsbGJhY2tzX3QgKmNhbGxiYWNrczsKKworb21wZF9yY190CitvbXBk X2luaXRpYWxpemUgKG9tcGRfd29yZF90IGFwaV92ZXJzaW9uLAorCQkgY29uc3Qgb21wZF9jYWxs YmFja3NfdCAqY2FsbGJhY2tzX3RhYmxlKQoreworICBpZiAoY2FsbGJhY2tzX3RhYmxlID09IE5V TEwpCisgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworCisgIG9tcGRfd29yZF90IHZlcnNp b247CisgIG9tcGRfcmNfdCByZXQgPSBvbXBkX2dldF9hcGlfdmVyc2lvbiAoJnZlcnNpb24pOwor CisgIGlmICh2ZXJzaW9uICE9IGFwaV92ZXJzaW9uKQorICAgIHJldHVybiBvbXBkX3JjX3Vuc3Vw cG9ydGVkOworCisgIGNhbGxiYWNrcyA9IGNhbGxiYWNrc190YWJsZTsKKyAgcmV0dXJuIHJldDsK K30KKworb21wZF9yY190CitvbXBkX2dldF9hcGlfdmVyc2lvbiAob21wZF93b3JkX3QgKnZlcnNp b24pCit7CisgIGlmICh2ZXJzaW9uID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lu cHV0OworCisgICp2ZXJzaW9uID0gT01QRF9WRVJTSU9OOworICByZXR1cm4gb21wZF9yY19vazsK K30KKworb21wZF9yY190CitvbXBkX2dldF92ZXJzaW9uX3N0cmluZyAoY29uc3QgY2hhciAqKnN0 cmluZykKK3sKKyAgaWYgKHN0cmluZyA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9p bnB1dDsKKyAgc3RhdGljIGNvbnN0IGNoYXIgdG1wX3N0cmluZ1tdCisgICAgPSAiR05VIE9wZW5N UCBydW50aW1lIGltcGxlbWVudGluZyBPTVBEIHZlcnNpb24gIgorICAgICAgc3RyaW5naXplIChP TVBEX1ZFUlNJT04pICIgRGVidWdnaW5nIGxpYnJhcnkiOworICAqc3RyaW5nID0gdG1wX3N0cmlu ZzsKKyAgcmV0dXJuIG9tcGRfcmNfb2s7Cit9CisKK29tcGRfcmNfdAorb21wZF9maW5hbGl6ZSAo KQoreworICByZXR1cm4gb21wZF9yY19vazsKK30KKworLyogUGVyIHByb2Nlc3MgaW5pdGlhbGl6 YXRpb24gYW5kIGZpbmFsaXphdGlvbi4gICovCisKK29tcGRfcmNfdAorb21wZF9wcm9jZXNzX2lu aXRpYWxpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKmNvbnRleHQsCisJCQkgb21w ZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICoqaGFuZGxlKQoreworICBpZiAoY29udGV4dCA9PSBO VUxMIHx8IGhhbmRsZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKwor ICBvbXBkX3JjX3QgcmV0ID0gZ2V0X3NpemVzIChjb250ZXh0KTsKKyAgaWYgKHJldCAhPSBvbXBk X3JjX29rKQorICAgIHJldHVybiByZXQ7CisKKyAgLyogTmFpdmUgd2F5IHRvIHJlYWQgZnJvbSBt ZW1vcnkuICAqLworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRf VU5TUEVDSUZJRUQsIDB9OworICBHRVRfVkFMVUUgKGNvbnRleHQsIE5VTEwsICJnb21wZF9zdGF0 ZSIsIGdvbXBkX3N0YXRlLCBnb21wZF9zdGF0ZSwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2Zf bG9uZ19sb25nLCAxLCByZXQsIHN5bWJvbF9hZGRyKTsKKworICByZXQgPSBjYWxsYmFja3MtPmFs bG9jX21lbW9yeSAoc2l6ZW9mIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QpLAorCQkJCSAo dm9pZCAqKikgKGhhbmRsZSkpOworCisgIGlmIChyZXQgIT0gb21wZF9yY19vaykKKyAgICByZXR1 cm4gcmV0OworCisgIGlmIChoYW5kbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19lcnJv cjsKKworICAoKmhhbmRsZSktPmNvbnRleHQgPSBjb250ZXh0OworICAoKmhhbmRsZSktPmtpbmQg PSBPTVBEX0RFVklDRV9LSU5EX0hPU1Q7CisgIHJldHVybiByZXQ7Cit9CisKKy8qIE9NUEQgd2ls bCBub3Qgc3VwcG9ydCBHUFVzIGZvciBub3cuICAqLworCitvbXBkX3JjX3QKK29tcGRfZGV2aWNl X2luaXRpYWxpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqcHJvY2Vzc19oYW5kbGUs CisJCQlvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpkZXZpY2VfY29udGV4dCwKKwkJCW9t cGRfZGV2aWNlX3Qga2luZCwgb21wZF9zaXplX3Qgc2l6ZW9mX2lkLCB2b2lkICppZCwKKwkJCW9t cGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKmRldmljZV9oYW5kbGUpCit7CisgIGlmIChkZXZp Y2VfY29udGV4dCA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKworICBy ZXR1cm4gb21wZF9yY191bnN1cHBvcnRlZDsKK30KKworCitvbXBkX3JjX3QKK29tcGRfcmVsX2Fk ZHJlc3Nfc3BhY2VfaGFuZGxlIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKmhhbmRsZSkK K3sKKyAgaWYgKGhhbmRsZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRs ZTsKKworICBvbXBkX3JjX3QgcmV0ID0gY2FsbGJhY2tzLT5mcmVlX21lbW9yeSAoKHZvaWQgKikg aGFuZGxlKTsKKyAgcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvb21wZC1zdXBw b3J0LmMgYi9saWJnb21wL29tcGQtc3VwcG9ydC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi42ZTA0MGJjZjU5MwotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvb21w ZC1zdXBwb3J0LmMKQEAgLTAsMCArMSwxMjAgQEAKKy8qIENvcHlyaWdodCAoQykgMjAyMiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5IE1vaGFtZWQgQXRl ZiA8bW9oYW1lZGF0ZWYxNjk4QGdtYWlsLmNvbT4uCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR05VIE9mZmxvYWRpbmcgYW5kIE11bHRpIFByb2Nlc3NpbmcgTGlicmFyeQorICAgKGxpYmdv bXApLgorICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxh dGVyIHZlcnNpb24uCisgICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorICAgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwor ICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKyAgIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwg dmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorICAgcGVybWlzc2lvbnMgZGVz Y3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorICAg My4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlv biBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5k IENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgIm9tcGQtc3VwcG9ydC5oIgor CisjZGVmaW5lIGdvbXBkX2RlY2xhcmVfYWNjZXNzKHQsIG0pIF9fVUlOVDY0X1RZUEVfXyBnb21w ZF9hY2Nlc3NfIyN0IyNfIyNtOworICBHT01QRF9GT1JFQUNIX0FDQ0VTUyAoZ29tcGRfZGVjbGFy ZV9hY2Nlc3MpCisjdW5kZWYgZ29tcGRfZGVjbGFyZV9hY2Nlc3MKKworI2RlZmluZSBnb21wZF9k ZWNsYXJlX3NpemVvZl9tZW1iZXJzKHQsIG0pIFwKKyAgX19VSU5UNjRfVFlQRV9fIGdvbXBkX3Np emVvZl8jI3QjI18jI207CisgIEdPTVBEX0ZPUkVBQ0hfQUNDRVNTIChnb21wZF9kZWNsYXJlX3Np emVvZl9tZW1iZXJzKQorI3VuZGVmIGdvbXBkX2RlY2xhcmVfc2l6ZW9mX21lbWJlcnMKKworI2Rl ZmluZSBnb21wZF9kZWNsYXJlX3NpemVzKHQpIF9fVUlOVDY0X1RZUEVfXyBnb21wZF9zaXplb2Zf IyN0OworICBHT01QRF9TSVpFUyAoZ29tcGRfZGVjbGFyZV9zaXplcykKKyN1bmRlZiBnb21wZF9k ZWNsYXJlX3NpemVzCisKK2NvbnN0IGNoYXIgKipvbXBkX2RsbF9sb2NhdGlvbnMgPSBOVUxMOwor X19VSU5UNjRfVFlQRV9fIGdvbXBkX3N0YXRlOworCit2b2lkCitnb21wZF9sb2FkICgpCit7Cisg IC8qIEdldCB0aGUgb2Zmc2V0IG9mIHRoZSBzdHJ1Y3QgbWVtYmVycy4gICovCisgICNkZWZpbmUg Z29tcGRfaW5pdF9hY2Nlc3ModCwgbSkgIFwKKyAgICBnb21wZF9hY2Nlc3NfIyN0IyNfIyNtID0g KF9fVUlOVDY0X1RZUEVfXykgJiAoKChzdHJ1Y3QgdCAqKSBOVUxMKS0+bSk7CisgICAgR09NUERf Rk9SRUFDSF9BQ0NFU1MgKGdvbXBkX2luaXRfYWNjZXNzKTsKKyAgI3VuZGVmIGdvbXBkX2luaXRf YWNjZXNzCisKKyAgLyogR2V0IHNpemVvZiBtZW1iZXJzLiAgKi8KKworICAjZGVmaW5lIGdvbXBk X2luaXRfc2l6ZW9mX21lbWJlcnModCwgbSkgXAorICAgIGdvbXBkX3NpemVvZl8jI3QjI18jI20g PSBzaXplb2YgKCgoc3RydWN0IHQgKikgTlVMTCktPm0pOworICAgIEdPTVBEX0ZPUkVBQ0hfQUND RVNTIChnb21wZF9pbml0X3NpemVvZl9tZW1iZXJzKTsKKyAgI3VuZGVmIGdvbXBkX2RlY2xhcmVf c2l6ZW9mX21lbWJlcnMKKworICAjZGVmaW5lIGdvbXBkX2luaXRfc2l6ZXModCkgZ29tcGRfc2l6 ZW9mXyMjdCA9IHNpemVvZiAoc3RydWN0IHQpOworICAgIEdPTVBEX1NJWkVTIChnb21wZF9pbml0 X3NpemVzKQorICAjdW5kZWYgZ29tcGRfaW5pdF9zaXplcworCisgICNpZmRlZiBHT01QX05FRURT X1RIUkVBRF9IQU5ETEUKKyAgICBfX1VJTlQ2NF9UWVBFX18gZ29tcGRfYWNjZXNzX2dvbXBfdGhy ZWFkX2hhbmRsZQorICAgICAgPSAoX19VSU5UNjRfVFlQRV9fKSAmICgoKHN0cnVjdCBnb21wX3Ro cmVhZCAqKSBOVUxMKS0+aGFuZGxlKTsKKyAgICBfX1VJTlQ2NF9UWVBFX18gZ29tcGRfc2l6ZW9m X2dvbXBfdGhyZWFkX2hhbmRsZQorICAgICAgPSBzaXplb2YgKCgoc3RydWN0IGdvbXBfdGhyZWFk ICopIE5VTEwpLT5oYW5kbGUpOworICAjZW5kaWYKKyAgZ29tcF9kZWJ1ZyAoMiwgIk9NUCBPTVBE IGFjdGl2ZVxuIik7CisgIHN0YXRpYyBjb25zdCBjaGFyICpvbXBkX2RsbF9sb2NhdGlvbnNfYXJy YXlbMl0KKyAgICA9IHsibGliZ29tcGQiIFNPTkFNRV9TVUZGSVggKDEpICwgTlVMTH07CisgIGdv bXBkX3N0YXRlIHw9IE9NUERfRU5BQkxFRDsKKyAgb21wZF9kbGxfbG9jYXRpb25zID0gJm9tcGRf ZGxsX2xvY2F0aW9uc19hcnJheVswXTsKKyAgb21wZF9kbGxfbG9jYXRpb25zX3ZhbGlkICgpOwor fQorCisjaWZuZGVmIF9fRUxGX18KKy8qIER1bW15IGZ1bmN0aW9ucy4gdGhleSBzaG91ZCBub3Qg YmUgb3B0aW1pemVkLiAgKi8KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pcGEpKQorb21wZF9k bGxfbG9jYXRpb25zX3ZhbGlkICgpCit7Cit9CisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaXBh KSkKK29tcGRfYnBfcGFyYWxsZWxfYmVnaW4gKCkKK3sKK30KKwordm9pZCBfX2F0dHJpYnV0ZV9f ICgobm9pcGEpKQorb21wZF9icF9wYXJhbGxlbF9lbmQgKCkKK3sKK30KKwordm9pZCBfX2F0dHJp YnV0ZV9fICgobm9pcGEpKQorb21wZF9icF90YXNrX2JlZ2luICgpCit7Cit9CisKK3ZvaWQgX19h dHRyaWJ1dGVfXyAoKG5vaXBhKSkKK29tcGRfYnBfdGFza19lbmQgKCkKK3sKK30KKwordm9pZCBf X2F0dHJpYnV0ZV9fICgobm9pcGEpKQorb21wZF9icF90aHJlYWRfYmVnaW4gKCkKK3sKK30KKwor dm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pcGEpKQorb21wZF9icF90aHJlYWRfZW5kICgpCit7Cit9 CisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkKK29tcGRfYnBfZGV2aWNlX2JlZ2luICgp Cit7Cit9CisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkKK29tcGRfYnBfZGV2aWNlX2Vu ZCAoKQoreworfQorI2VuZGlmIC8qIF9fRUxGX18qLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBk LXN1cHBvcnQuaCBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjdkNzIwNzZkYTllCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29t cC9vbXBkLXN1cHBvcnQuaApAQCAtMCwwICsxLDY3IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjIg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIENvbnRyaWJ1dGVkIGJ5IE1vaGFtZWQg QXRlZiA8bW9oYW1lZGF0ZWYxNjk4QGdtYWlsLmNvbT4uCisgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkgUHJvY2Vzc2luZyBMaWJyYXJ5CisgIChsaWJn b21wKS4KKyAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0CisgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgYW55IGxhdGVy IHZlcnNpb24uCisgIExpYmdvbXAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKKyAgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IKKyAgbW9yZSBkZXRhaWxzLgorICBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24g MywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyAgcGVybWlzc2lvbnMgZGVzY3JpYmVkIGlu IHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorICAzLjEsIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQK KyAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsKKyAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5U SU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisKKy8qVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBydW50aW1lIHN1cHBvcnQg Zm9yIGdvbXBkLiAgKi8KKworI2lmbmRlZiBfT01QRF9TVVBQT1JUX0gKKyNkZWZpbmUgX09NUERf U1VQUE9SVF9ICisKKyNpbmNsdWRlICJvbXAtdG9vbHMuaCIKKyNpbmNsdWRlICJwbHVnaW4tc3Vm Zml4LmgiCisjaW5jbHVkZSAibGliZ29tcC5oIgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNs dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgor I2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaWZkZWYgSEFWRV9BVFRSSUJVVEVfVklTSUJJTElUWQor I3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGhpZGRlbikKKyNlbmRpZgorCit2b2lkIGdvbXBk X2xvYWQgKHZvaWQpOworZXh0ZXJuIF9fVUlOVDY0X1RZUEVfXyBnb21wZF9zdGF0ZTsKKworI2Rl ZmluZSBPTVBEX0VOQUJMRUQgMHgxCisKKyNkZWZpbmUgR09NUERfRk9SRUFDSF9BQ0NFU1MoZ29t cGRfYWNjZXNzKSBcCisgIGdvbXBkX2FjY2VzcyAoZ29tcF90YXNrX2ljdiwgbnRocmVhZHNfdmFy KSBcCisgIGdvbXBkX2FjY2VzcyAoZ29tcF90YXNrX2ljdiwgcnVuX3NjaGVkX3ZhcikgXAorICBn b21wZF9hY2Nlc3MgKGdvbXBfdGFza19pY3YsIHJ1bl9zY2hlZF9jaHVua19zaXplKSBcCisgIGdv bXBkX2FjY2VzcyAoZ29tcF90YXNrX2ljdiwgZGVmYXVsdF9kZXZpY2VfdmFyKSBcCisgIGdvbXBk X2FjY2VzcyAoZ29tcF90YXNrX2ljdiwgdGhyZWFkX2xpbWl0X3ZhcikgXAorICBnb21wZF9hY2Nl c3MgKGdvbXBfdGFza19pY3YsIGR5bl92YXIpIFwKKyAgZ29tcGRfYWNjZXNzIChnb21wX3Rhc2tf aWN2LCBiaW5kX3ZhcikgXAorICBnb21wZF9hY2Nlc3MgKGdvbXBfdGhyZWFkLCB0YXNrKSBcCisg IGdvbXBkX2FjY2VzcyAoZ29tcF90aHJlYWRfcG9vbCwgdGhyZWFkcykgXAorICBnb21wZF9hY2Nl c3MgKGdvbXBfdGhyZWFkLCB0cykgXAorICBnb21wZF9hY2Nlc3MgKGdvbXBfdGVhbV9zdGF0ZSwg dGVhbV9pZCkgXAorICBnb21wZF9hY2Nlc3MgKGdvbXBfdGFzaywgaWN2KQorCisjZGVmaW5lIEdP TVBEX1NJWkVTKGdvbXBkX3NpemUpIFwKKyAgZ29tcGRfc2l6ZSAoZ29tcF90aHJlYWQpIFwKKyAg Z29tcGRfc2l6ZSAoZ29tcF90YXNrX2ljdikgXAorICBnb21wZF9zaXplIChnb21wX3Rhc2spCisK KyNpZmRlZiBIQVZFX0FUVFJJQlVURV9WSVNJQklMSVRZCisjcHJhZ21hIEdDQyB2aXNpYmlsaXR5 IHBvcAorI2VuZGlmCisKKyNlbmRpZiAvKiBfT01QRF9TVVBQT1JUX0ggKi8KZGlmZiAtLWdpdCBh L2xpYmdvbXAvb21wZC10eXBlcy5oLmluIGIvbGliZ29tcC9vbXBkLXR5cGVzLmguaW4KbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1YmZiMmYzN2NmCi0tLSAvZGV2L251 bGwKKysrIGIvbGliZ29tcC9vbXBkLXR5cGVzLmguaW4KQEAgLTAsMCArMSw1NCBAQAorLyogQ29w eXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29udHJp YnV0ZWQgYnkgTW9oYW1lZCBBdGVmIDxtb2hhbWVkYXRlZjE2OThAZ21haWwuY29tPi4KKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkgUHJvY2Vzc2lu ZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisgICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91 ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisg ICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgorICAgVW5k ZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFs CisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhj ZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLgorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhlIEdDQyBSdW50 aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAgc2VlIHRo ZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5v dCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisvKiBUaGlz IGZpbGUgY29udGFpbnMgdGhlIHR5cGVzIG5lZWRlZCBmb3IgT01QRCBpbXBsZW1lbnRhdGlvbi4g ICovCisKKyNpZm5kZWYgX09NUERfVFlQRVNfSAorI2RlZmluZSBfT01QRF9UWVBFU19ICisKKyNp ZmRlZiBfX2NwdWxzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmluZSBPTVBEX1RZ UEVTX1ZFUlNJT04gICAyMDE4MDkwNiAvKiBZWVlZTU1ERCBGb3JtYXQuICAqLworCisvKiBLaW5k cyBvZiBkZXZpY2UgdGhyZWFkcy4gICovCisjZGVmaW5lIE9NUERfVEhSRUFEX0lEX1BUSFJFQUQg ICAgICAoKG9tcGRfdGhyZWFkX2lkX3QpMCkKKyNkZWZpbmUgT01QRF9USFJFQURfSURfTFdQICAg ICAgICAgICgob21wZF90aHJlYWRfaWRfdCkxKQorI2RlZmluZSBPTVBEX1RIUkVBRF9JRF9XSU5U SFJFQUQgICAgKChvbXBkX3RocmVhZF9pZF90KTIpCisKKy8qIFRoZSByYW5nZSBvZiBub24tc3Rh bmRhcmQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB2YWx1ZXMuICAqLworI2RlZmluZSBPTVBEX1RI UkVBRF9JRF9MTyAgICAgICAoKG9tcGRfdGhyZWFkX2lkX3QpMTAwMDAwMCkKKyNkZWZpbmUgT01Q RF9USFJFQURfSURfSEkgICAgICAgKChvbXBkX3RocmVhZF9pZF90KTExMDAwMDApCisKKy8qIE1l bW9yeSBBY2Nlc3MgU2VnbWVudCBkZWZpbml0aW9ucyBmb3IgSG9zdCBhbmQgVGFyZ2V0IERldmlj ZXMuICAqLworI2RlZmluZSBPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQgICAgICAgICAgICAgKChv bXBkX3NlZ190KTApCisKKy8qIEtpbmRzIG9mIGRldmljZSBkZXZpY2UgYWRkcmVzcyBzcGFjZXMu ICAqLworI2RlZmluZSBPTVBEX0RFVklDRV9LSU5EX0hPU1QgICAgICgob21wZF9kZXZpY2VfdCkx KQorCisvKiBUaGUgcmFuZ2Ugb2Ygbm9uLXN0YW5kYXJkIGltcGxlbWVudGF0aW9uIGRlZmluZWQg dmFsdWVzLiAgKi8KKyNkZWZpbmUgT01QRF9ERVZJQ0VfSU1QTF9MTyAgICAgICAoKG9tcGRfZGV2 aWNlX3QpMTAwMDAwMCkKKyNkZWZpbmUgT01QRF9ERVZJQ0VfSU1QTF9ISSAgICAgICAoKG9tcGRf ZGV2aWNlX3QpMTEwMDAwMCkKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9IC8vIGV4dGVybiBDCisj ZW5kaWYKKyNlbmRpZiAvKiBfT01QRF9UWVBFU19IICovCmRpZmYgLS1naXQgYS9saWJnb21wL3Rl YW0uYyBiL2xpYmdvbXAvdGVhbS5jCmluZGV4IGNiNjg3NWQ3MGZhLi5kODFkZGMxZjU0ZCAxMDA2 NDQKLS0tIGEvbGliZ29tcC90ZWFtLmMKKysrIGIvbGliZ29tcC90ZWFtLmMKQEAgLTMwLDYgKzMw LDcgQEAKICNpbmNsdWRlICJwb29sLmgiCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8 c3RyaW5nLmg+CisjaW5jbHVkZSAib21wZC1zdXBwb3J0LmgiCiAKICNpZmRlZiBMSUJHT01QX1VT RV9QVEhSRUFEUwogcHRocmVhZF9hdHRyX3QgZ29tcF90aHJlYWRfYXR0cjsKQEAgLTc0LDcgKzc1 LDcgQEAgZ29tcF90aHJlYWRfc3RhcnQgKHZvaWQgKnhkYXRhKQogICBzdHJ1Y3QgZ29tcF90aHJl YWRfcG9vbCAqcG9vbDsKICAgdm9pZCAoKmxvY2FsX2ZuKSAodm9pZCAqKTsKICAgdm9pZCAqbG9j YWxfZGF0YTsKLQorICBvbXBkX2JwX3RocmVhZF9iZWdpbiAoKTsKICNpZiBkZWZpbmVkIEhBVkVf VExTIHx8IGRlZmluZWQgVVNFX0VNVVRMUwogICB0aHIgPSAmZ29tcF90bHNfZGF0YTsKICNlbHNl CkBAIC0zMjEsNiArMzIyLDcgQEAgZ29tcF90ZWFtX3N0YXJ0ICh2b2lkICgqZm4pICh2b2lkICop LCB2b2lkICpkYXRhLCB1bnNpZ25lZCBudGhyZWFkcywKIAkJIHVuc2lnbmVkIGZsYWdzLCBzdHJ1 Y3QgZ29tcF90ZWFtICp0ZWFtLAogCQkgc3RydWN0IGdvbXBfdGFza2dyb3VwICp0YXNrZ3JvdXAp CiB7CisgIG9tcGRfYnBfcGFyYWxsZWxfYmVnaW4gKCk7CiAgIHN0cnVjdCBnb21wX3RocmVhZF9z dGFydF9kYXRhICpzdGFydF9kYXRhID0gTlVMTDsKICAgc3RydWN0IGdvbXBfdGhyZWFkICp0aHIs ICpudGhyOwogICBzdHJ1Y3QgZ29tcF90YXNrICp0YXNrOwpAQCAtMTAxMSw2ICsxMDEzLDcgQEAg Z29tcF90ZWFtX2VuZCAodm9pZCkKICAgICAgIHBvb2wtPmxhc3RfdGVhbSA9IHRlYW07CiAgICAg ICBnb21wX3JlbGVhc2VfdGhyZWFkX3Bvb2wgKHBvb2wpOwogICAgIH0KKyAgb21wZF9icF9wYXJh bGxlbF9lbmQgKCk7CiB9CiAKICNpZmRlZiBMSUJHT01QX1VTRV9QVEhSRUFEUwo= --0000000000004d394305dea17fd0--