From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by sourceware.org (Postfix) with ESMTPS id 294C73854831; Thu, 17 Aug 2023 17:18:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 294C73854831 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-98377c5d53eso1032024466b.0; Thu, 17 Aug 2023 10:18:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692292684; x=1692897484; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=/yZY7v9rDF2uyBwLxFuV+YqM4KgJsO0VfrQMxbk3AGY=; b=OAuy5JFfF+SvivFfa7uQIgWNVlD5PP/61nGwt2406Zs5wRL8b28FcizA+csjwEwMlw bAi3U0R4uAeywo/5wdEh4S0BvJbJYoKG2lw4/ztApPQIDk708iMlQn1n2M01sOhzmARI sw5ovtVzGD2Y+BIuzC49ZmBGSZ4RgYOPPgt7ZZhy1kGouG+tFjV4qQGuyTQnEUDin0rp MM4pFf5EIxQkNhuIFlosW+laXhWzwo1vN4aAycBOqU9rBgb04Kct2d9TKrXTFaLdsuJH dSFvc0jcxepC8P/oyXkoUjKH6ajM3ez54riWma0lSyM/vUWCXUx+I8dGOz0sxU/LUEM0 NuFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692292684; x=1692897484; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=/yZY7v9rDF2uyBwLxFuV+YqM4KgJsO0VfrQMxbk3AGY=; b=PqgBVw+iUs6+DZhlFTnPx9m7eNPYqhzhzG4MhM+trObWa/CebI3MYD1M9QqVVsim7S L5IPftf+q06M9lPhZnEqKnUstVld7+v1oxUQ/nQZfNCiYoGFFZq48vOkEddHJixXriJf aeovbwF1VsmqwRV7KELtRW3YRJPsumXS0RD/d7VQ83CR4qzOEk4NQuBQa6igTxXamtsu yEQIXtagqJO7S5LMS42/hgdBhavggdxTUA+muWFSZU86fHhZrII1e0t54rG5nwkJaSDI kYxHQPAPT2oQ+46Tl8waVUH94w65dSaoByN5ohuHRl1M4Ob7FtsvX7PadcGHE7TbnEdh 3rzw== X-Gm-Message-State: AOJu0Yy7y1T+UHD3vMmHohsyCE4r21zUDU8SlXtn1zbVofw+FdlKKkq8 oqXkekm89ZH78PQbd3AWpQiyklL3/Rw= X-Google-Smtp-Source: AGHT+IGewtlfcHmxOHNkgXZdTaXqx4s0T08GCE3M7O/lebf1SJDJ/x95Y8nSbIVZsmMCuve22lVj3w== X-Received: by 2002:a17:906:73c4:b0:974:183a:54b6 with SMTP id n4-20020a17090673c400b00974183a54b6mr72901ejl.33.1692292683532; Thu, 17 Aug 2023 10:18:03 -0700 (PDT) Received: from [10.34.1.57] ([89.207.171.102]) by smtp.gmail.com with ESMTPSA id w20-20020a170906385400b0097404f4a124sm10399409ejc.2.2023.08.17.10.17.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 17 Aug 2023 10:18:02 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------4Mrbc7FnM1NWLGetLZE482kz" Message-ID: <1fbe202f-6c4c-208e-3f31-9b69def61fb9@gmail.com> Date: Thu, 17 Aug 2023 19:17:33 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH] sso-string@gnu-versioned-namespace [PR83077] Content-Language: en-US From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= To: Jonathan Wakely Cc: libstdc++ , gcc-patches References: <1dc681f4-41b7-d171-02ac-b0194617bdee@gmail.com> <91dc6383-6bff-ce6c-b24d-81cd2ab2dce8@gmail.com> <5191c46c-2a2b-750f-b3cc-e4445dc16f8a@gmail.com> In-Reply-To: <5191c46c-2a2b-750f-b3cc-e4445dc16f8a@gmail.com> X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------4Mrbc7FnM1NWLGetLZE482kz Content-Type: multipart/alternative; boundary="------------1GfXlBhJ4Ay9PLvjfSU0jqLf" --------------1GfXlBhJ4Ay9PLvjfSU0jqLf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Another fix to define __cow_string(const std::string&) in cxx11-stdexcept.cc even if ! _GLIBCXX_USE_DUAL_ABI. On 13/08/2023 21:51, François Dumont wrote: > > Here is another version with enhanced sizeof/alignof static_assert in > string-inst.cc for the std::__cow_string definition from . > The assertions in cow-stdexcept.cc are now checking the definition > which is in the same file. > > On 13/08/2023 15:27, François Dumont wrote: >> >> Here is the fixed patch tested in all 3 modes: >> >> - _GLIBCXX_USE_DUAL_ABI >> >> - !_GLIBCXX_USE_DUAL_ABI && !_GLIBCXX_USE_CXX11_ABI >> >> - !_GLIBCXX_USE_DUAL_ABI && _GLIBCXX_USE_CXX11_ABI >> >> I don't know what you have in mind for the change below but I wanted >> to let you know that I tried to put COW std::basic_string into a >> nested __cow namespace when _GLIBCXX_USE_CXX11_ABI. But it had more >> impact on string-inst.cc so I preferred the macro substitution approach. >> >> There are some test failing when !_GLIBCXX_USE_CXX11_ABI that are >> unrelated with my changes. I'll propose fixes in coming days. >> >>     libstdc++: [_GLIBCXX_INLINE_VERSION] Use cxx11 abi [PR83077] >> >>     Use cxx11 abi when activating versioned namespace mode. To do support >>     a new configuration mode where !_GLIBCXX_USE_DUAL_ABI and >> _GLIBCXX_USE_CXX11_ABI. >> >>     The main change is that std::__cow_string is now defined whenever >> _GLIBCXX_USE_DUAL_ABI >>     or _GLIBCXX_USE_CXX11_ABI is true. Implementation is using >> available std::string in >>     case of dual abi and a subset of it when it's not. >> >>     On the other side std::__sso_string is defined only when >> _GLIBCXX_USE_DUAL_ABI is true >>     and _GLIBCXX_USE_CXX11_ABI is false. Meaning that >> std::__sso_string is a typedef for the >>     cow std::string implementation when dual abi is disabled and cow >> string is being used. >> >>     libstdcxx-v3/ChangeLog: >> >>             PR libstdc++/83077 >>             * acinclude.m4 [GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI]: >> Default to "new" libstdcxx abi. >>             * config/locale/dragonfly/monetary_members.cc >> [!_GLIBCXX_USE_DUAL_ABI]: Define money_base >>             members. >>             * config/locale/generic/monetary_members.cc >> [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >>             * config/locale/gnu/monetary_members.cc >> [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >>             * config/locale/gnu/numeric_members.cc >> [!_GLIBCXX_USE_DUAL_ABI](__narrow_multibyte_chars): Define. >>             * configure: Regenerate. >>             * include/bits/c++config >> [_GLIBCXX_INLINE_VERSION](_GLIBCXX_NAMESPACE_CXX11, >> _GLIBCXX_BEGIN_NAMESPACE_CXX11): >>             Define empty. >> [_GLIBCXX_INLINE_VERSION](_GLIBCXX_END_NAMESPACE_CXX11, >> _GLIBCXX_DEFAULT_ABI_TAG): >>             Likewise. >>             * include/bits/cow_string.h [!_GLIBCXX_USE_CXX11_ABI]: >> Define a light version of COW >>             basic_string as __std_cow_string for use in stdexcept. >>             * include/std/stdexcept [_GLIBCXX_USE_CXX11_ABI]: Define >> __cow_string. >>             (__cow_string(const char*)): New. >>             (__cow_string::c_str()): New. >>             * python/libstdcxx/v6/printers.py >> (StdStringPrinter::__init__): Set self.new_string to True >>             when std::__8::basic_string type is found. >>             * src/Makefile.am >> [ENABLE_SYMVERS_GNU_NAMESPACE](ldbl_alt128_compat_sources): Define empty. >>             * src/Makefile.in: Regenerate. >>             * src/c++11/Makefile.am (cxx11_abi_sources): Rename into... >>             (dual_abi_sources): ...this. Also move cow-local_init.cc, >> cxx11-hash_tr1.cc, >>             cxx11-ios_failure.cc entries to... >>             (sources): ...this. >>             (extra_string_inst_sources): Move cow-fstream-inst.cc, >> cow-sstream-inst.cc, cow-string-inst.cc, >>             cow-string-io-inst.cc, cow-wtring-inst.cc, >> cow-wstring-io-inst.cc, cxx11-locale-inst.cc, >>             cxx11-wlocale-inst.cc entries to... >>             (inst_sources): ...this. >>             * src/c++11/Makefile.in: Regenerate. >>             * src/c++11/cow-fstream-inst.cc [_GLIBCXX_USE_CXX11_ABI]: >> Skip definitions. >>             * src/c++11/cow-locale_init.cc [_GLIBCXX_USE_CXX11_ABI]: >> Skip definitions. >>             * src/c++11/cow-sstream-inst.cc [_GLIBCXX_USE_CXX11_ABI]: >> Skip definitions. >>             * src/c++11/cow-stdexcept.cc [_GLIBCXX_USE_CXX11_ABI]: >> Include . >>             [_GLIBCXX_USE_DUAL_ABI || >> _GLIBCXX_USE_CXX11_ABI](__cow_string): Redefine before >>             including . Define >> _GLIBCXX_DEFINE_STDEXCEPT_INSTANTIATIONS so that >>             __cow_string definition in is skipped. >>             [_GLIBCXX_USE_CXX11_ABI]: Skip Transaction Memory TS >> definitions. >>             Move static_assert to check std::_cow_string abi layout to... >>             * src/c++11/string-inst.cc: ...here. >>             (_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS): Define >> following _GLIBCXX_USE_CXX11_ABI >>             value. >>             [_GLIBCXX_USE_CXX11_ABI && >> !_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS]: >>             Define _GLIBCXX_DEFINING_COW_STRING_INSTANTIATIONS. >> Include . >>             Define basic_string as __std_cow_string for the current >> translation unit. >>             * src/c++11/cow-string-inst.cc [_GLIBCXX_USE_CXX11_ABI]: >> Skip definitions. >>             * src/c++11/cow-string-io-inst.cc >> [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>             * src/c++11/cow-wstring-inst.cc [_GLIBCXX_USE_CXX11_ABI]: >> Skip definitions. >>             * src/c++11/cow-wstring-io-inst.cc >> [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>             * src/c++11/cxx11-hash_tr1.cc [!_GLIBCXX_USE_CXX11_ABI]: >> Skip definitions. >>             * src/c++11/cxx11-ios_failure.cc >> [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>             [!_GLIBCXX_USE_DUAL_ABI] (__ios_failure): Remove. >>             * src/c++11/cxx11-locale-inst.cc: Cleanup, just include >> locale-inst.cc. >>             * src/c++11/cxx11-stdexcept.cc [!_GLIBCXX_USE_CXX11_ABI]: >> Skip definitions. >>             * src/c++11/cxx11-wlocale-inst.cc >> [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>             * src/c++11/locale-inst-numeric.h >> [!_GLIBCXX_USE_DUAL_ABI](std::use_facet>, >> std::use_facet>): Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](std::has_facet>, >> std::has_facet>): Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](std::num_get> istreambuf_iterator>): Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](std::num_put> ostreambuf_iterator>): Instantiate. >>             * src/c++11/locale-inst.cc [!_GLIBCXX_USE_DUAL_ABI]: >> Build only when configured >>             _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. >>             [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): >> Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): >> Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](__numpunct_cache): Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](__timepunct): Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](__timepunct_cache): Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](time_put> ostreambuf_iterator>): Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](time_put_byname> ostreambuf_iterator>): Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](__ctype_abstract_base): Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](ctype_byname): Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](__codecvt_abstract_base> mbstate_t>): Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname> mbstate_t>): Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >> Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const >> locale&)): Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](use_facet<__timepunct>(const locale&)): >> Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >> Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >> Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const >> locale&)): Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](has_facet<__timepunct>(const locale&)): >> Instantiate. >> [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >> Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](__add_grouping): Define. >>             [!_GLIBCXX_USE_DUAL_ABI](__pad>): >> Instantiate. >>             [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long, >> const C*, >>             ios_base::fmtflags, bool)): Define. >>             [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long >> long, const C*, >>             ios_base::fmtflags, bool)): Define. >>             * src/c++11/wlocale-inst.cc [!_GLIBCXX_USE_CXX11_ABI]: >> Skip definitions. >>             * src/c++98/Makefile.am (cxx11_abi_sources): Remove, >> unique cow-istream-string.cc entry >>             move to... >>             (inst_sources): ...this. >>             * src/c++98/Makefile.in: Regenerate. >>             * src/c++98/cow-istream-string.cc: Include >> . >>             [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>             * src/c++98/hash_tr1.cc [_GLIBCXX_USE_CXX11_ABI]: Skip >> definitions. >>             * src/c++98/ios_failure.cc >> [_GLIBCXX_USE_CXX11_ABI][_GLIBCXX_USE_DUAL_ABI]: Skip definitions. >>             * src/c++98/istream-string.cc [!_GLIBCXX_USE_DUAL_ABI]: >> Build only when configured >>             _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. >>             * src/c++98/locale_facets.cc >> [_GLIBCXX_USE_CXX11_ABI](__verify_grouping): Remove. >>             * src/c++98/stdexcept.cc >>             [_GLIBCXX_USE_CXX11_ABI](logic_error(const string&): Remove. >>             [_GLIBCXX_USE_CXX11_ABI](domain_error(const string&): Remove. >>             [_GLIBCXX_USE_CXX11_ABI](invalid_argument(const string&): >> Remove. >>             [_GLIBCXX_USE_CXX11_ABI](length_error(const string&): Remove. >>             [_GLIBCXX_USE_CXX11_ABI](out_of_range(const string&): Remove. >>             [_GLIBCXX_USE_CXX11_ABI](runtime_error(const string&): >> Remove. >>             [_GLIBCXX_USE_CXX11_ABI](range_error(const string&): Remove. >>             [_GLIBCXX_USE_CXX11_ABI](overflow_error(const string&): >> Remove. >>             [_GLIBCXX_USE_CXX11_ABI](underflow_error(const string&): >> Remove. >> >> Ok to commit ? >> >> François >> >> On 11/08/2023 09:51, Jonathan Wakely wrote: >>> >>> >>> On Fri, 11 Aug 2023, 06:44 François Dumont via Libstdc++, >>> > wrote: >>> >>> I hadn't tested the most basic default configuration and it is >>> failing, >>> >>> >>> I did wonder about that when you said which configurations you had >>> tested :) >>> >>> >>> >>> >>> I need some more time yet. >>> >>> >>> OK, no problem. >>> >>> I actually have an idea for replacing the __cow_string hack with >>> something better, which I will try to work on next week. That might >>> make things simpler for you, as you won't need the __std_cow_string >>> macro. >>> >>> >>> >>> >>> >>> François >>> >>> >>> On 10/08/2023 07:13, François Dumont wrote: >>> > Hi >>> > >>> > I've eventually completed this work. >>> > >>> > This evolution will allow to build libstdc++ without dual abi and >>> > using cxx11 abi. For the moment such a config is only accessible >>> > through the --enable-symvers=gnu-versioned-namespace >>> configuration. >>> > >>> >     libstdc++: [_GLIBCXX_INLINE_VERSION] Use cxx11 abi [PR83077] >>> > >>> >     Use cxx11 abi when activating versioned namespace mode. >>> > >>> >     libstdcxx-v3/ChangeLog: >>> > >>> >             PR libstdc++/83077 >>> >             * acinclude.m4 [GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI]: >>> > Default to "new" libstdcxx abi. >>> >             * config/locale/dragonfly/monetary_members.cc >>> > [!_GLIBCXX_USE_DUAL_ABI]: Define money_base >>> >             members. >>> >             * config/locale/generic/monetary_members.cc >>> > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >>> >             * config/locale/gnu/monetary_members.cc >>> > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >>> >             * config/locale/gnu/numeric_members.cc >>> > [!_GLIBCXX_USE_DUAL_ABI](__narrow_multibyte_chars): Define. >>> >             * configure: Regenerate. >>> >             * include/bits/c++config >>> > [_GLIBCXX_INLINE_VERSION](_GLIBCXX_NAMESPACE_CXX11, >>> > _GLIBCXX_BEGIN_NAMESPACE_CXX11): >>> >             Define empty. >>> > [_GLIBCXX_INLINE_VERSION](_GLIBCXX_END_NAMESPACE_CXX11, >>> > _GLIBCXX_DEFAULT_ABI_TAG): >>> >             Likewise. >>> >             * include/bits/cow_string.h >>> [!_GLIBCXX_USE_CXX11_ABI]: >>> > Define a light version of COW >>> >             basic_string as __std_cow_string for use in stdexcept. >>> >             * include/std/stdexcept [_GLIBCXX_USE_CXX11_ABI]: >>> Define >>> > __cow_string. >>> >             (__cow_string(const char*)): New. >>> >             (__cow_string::c_str()): New. >>> >             * python/libstdcxx/v6/printers.py >>> > (StdStringPrinter::__init__): Set self.new_string to True >>> >             when std::__8::basic_string type is found. >>> >             * src/Makefile.am >>> > [ENABLE_SYMVERS_GNU_NAMESPACE](ldbl_alt128_compat_sources): >>> Define empty. >>> >             * src/Makefile.in: Regenerate. >>> >             * src/c++11/Makefile.am (cxx11_abi_sources): >>> Rename into... >>> >             (dual_abi_sources): ...this. Also move >>> cow-local_init.cc, >>> > cxx11-hash_tr1.cc, >>> >             cxx11-ios_failure.cc entries to... >>> >             (sources): ...this. >>> >             (extra_string_inst_sources): Move >>> cow-fstream-inst.cc, >>> > cow-sstream-inst.cc, cow-string-inst.cc, >>> >             cow-string-io-inst.cc, cow-wtring-inst.cc, >>> > cow-wstring-io-inst.cc, cxx11-locale-inst.cc, >>> >             cxx11-wlocale-inst.cc entries to... >>> >             (inst_sources): ...this. >>> >             * src/c++11/Makefile.in: Regenerate. >>> >             * src/c++11/cow-fstream-inst.cc >>> [_GLIBCXX_USE_CXX11_ABI]: >>> > Skip definitions. >>> >             * src/c++11/cow-locale_init.cc >>> [_GLIBCXX_USE_CXX11_ABI]: >>> > Skip definitions. >>> >             * src/c++11/cow-sstream-inst.cc >>> [_GLIBCXX_USE_CXX11_ABI]: >>> > Skip definitions. >>> >             * src/c++11/cow-stdexcept.cc >>> [_GLIBCXX_USE_CXX11_ABI]: >>> > Include . >>> >             [_GLIBCXX_USE_DUAL_ABI || >>> > _GLIBCXX_USE_CXX11_ABI](__cow_string): Redefine before including >>> >             . Define >>> > _GLIBCXX_DEFINE_STDEXCEPT_INSTANTIATIONS so that __cow_string >>> definition >>> >             in is skipped. >>> >             [_GLIBCXX_USE_CXX11_ABI]: Skip Transaction Memory TS >>> > definitions. >>> >             * src/c++11/cow-string-inst.cc >>> [_GLIBCXX_USE_CXX11_ABI]: >>> > Skip definitions. >>> >             * src/c++11/cow-string-io-inst.cc >>> > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>> >             * src/c++11/cow-wstring-inst.cc >>> [_GLIBCXX_USE_CXX11_ABI]: >>> > Skip definitions. >>> >             * src/c++11/cow-wstring-io-inst.cc >>> > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>> >             * src/c++11/cxx11-hash_tr1.cc >>> [!_GLIBCXX_USE_CXX11_ABI]: >>> > Skip definitions. >>> >             * src/c++11/cxx11-ios_failure.cc >>> > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>> >             [!_GLIBCXX_USE_DUAL_ABI] (__ios_failure): Remove. >>> >             * src/c++11/cxx11-locale-inst.cc: Cleanup, just >>> include >>> > locale-inst.cc. >>> >             * src/c++11/cxx11-stdexcept.cc >>> [!_GLIBCXX_USE_CXX11_ABI]: >>> > Skip definitions. >>> >             * src/c++11/cxx11-wlocale-inst.cc >>> > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>> >             * src/c++11/locale-inst-numeric.h >>> > [!_GLIBCXX_USE_DUAL_ABI](std::use_facet>, >>> > std::use_facet>): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](std::has_facet>, >>> > std::has_facet>): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](std::num_get>> > istreambuf_iterator>): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](std::num_put>> > ostreambuf_iterator>): Instantiate. >>> >             * src/c++11/locale-inst.cc >>> [!_GLIBCXX_USE_DUAL_ABI]: Build >>> > only when configured >>> >             _GLIBCXX_USE_CXX11_ABI is equal to currently built >>> abi. >>> > [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): >>> > Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): >>> > Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](__numpunct_cache): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](__timepunct): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](__timepunct_cache): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](time_put>> > ostreambuf_iterator>): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](time_put_byname>> > ostreambuf_iterator>): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](__ctype_abstract_base): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](ctype_byname): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](__codecvt_abstract_base>> > mbstate_t>): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname>> > mbstate_t>): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname>> > mbstate_t>): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >>> > Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](use_facet>> > mbstate_t>>(const locale&)): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](use_facet<__timepunct>(const >>> locale&)): >>> > Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >>> > Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >>> > Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](has_facet>> > mbstate_t>>(const locale&)): Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](has_facet<__timepunct>(const >>> locale&)): >>> > Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >>> > Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](__add_grouping): Define. >>> >             [!_GLIBCXX_USE_DUAL_ABI](__pad>): >>> > Instantiate. >>> > [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long, >>> > const C*, >>> >             ios_base::fmtflags, bool)): Define. >>> > [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long >>> > long, const C*, >>> >             ios_base::fmtflags, bool)): Define. >>> >             * src/c++11/string-inst.cc >>> > (_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS): Define following >>> >             _GLIBCXX_USE_CXX11_ABI value. >>> >             [_GLIBCXX_USE_CXX11_ABI && >>> > !_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS]: >>> >             Define _GLIBCXX_DEFINING_COW_STRING_INSTANTIATIONS. >>> > Include . >>> >             Define basic_string as __std_cow_string for the >>> current >>> > translation unit. >>> >             * src/c++11/wlocale-inst.cc >>> [!_GLIBCXX_USE_CXX11_ABI]: >>> > Skip definitions. >>> >             * src/c++98/Makefile.am (cxx11_abi_sources): Remove, >>> > unique cow-istream-string.cc entry >>> >             move to... >>> >             (inst_sources): ...this. >>> >             * src/c++98/Makefile.in: Regenerate. >>> >             * src/c++98/cow-istream-string.cc: Include >>> > . >>> >             [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>> >             * src/c++98/hash_tr1.cc [_GLIBCXX_USE_CXX11_ABI]: >>> Skip >>> > definitions. >>> >             * src/c++98/ios_failure.cc >>> > [_GLIBCXX_USE_CXX11_ABI][_GLIBCXX_USE_DUAL_ABI]: Skip definitions. >>> >             * src/c++98/istream-string.cc >>> [!_GLIBCXX_USE_DUAL_ABI]: >>> > Build only when configured >>> >             _GLIBCXX_USE_CXX11_ABI is equal to currently built >>> abi. >>> >             * src/c++98/locale_facets.cc >>> > [_GLIBCXX_USE_CXX11_ABI](__verify_grouping): Remove. >>> >             * src/c++98/stdexcept.cc >>> > [_GLIBCXX_USE_CXX11_ABI](logic_error(const string&): Remove. >>> > [_GLIBCXX_USE_CXX11_ABI](domain_error(const string&): Remove. >>> > [_GLIBCXX_USE_CXX11_ABI](invalid_argument(const string&): >>> > Remove. >>> > [_GLIBCXX_USE_CXX11_ABI](length_error(const string&): Remove. >>> > [_GLIBCXX_USE_CXX11_ABI](out_of_range(const string&): Remove. >>> > [_GLIBCXX_USE_CXX11_ABI](runtime_error(const string&): >>> > Remove. >>> > [_GLIBCXX_USE_CXX11_ABI](range_error(const string&): Remove. >>> > [_GLIBCXX_USE_CXX11_ABI](overflow_error(const string&): >>> > Remove. >>> > [_GLIBCXX_USE_CXX11_ABI](underflow_error(const string&): >>> > Remove. >>> > >>> > Tested under linux x86_64 with following configs: >>> > >>> > --enable-symvers=gnu-versioned-namespace >>> > >>> > --disable-libstdcxx-dual-abi >>> > >>> > Ok to commit ? >>> > >>> > François >>> > >>> > >>> --------------1GfXlBhJ4Ay9PLvjfSU0jqLf-- --------------4Mrbc7FnM1NWLGetLZE482kz Content-Type: text/x-patch; charset=UTF-8; name="cxx11_gnu-versioned-ns.patch" Content-Disposition: attachment; filename="cxx11_gnu-versioned-ns.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQgYi9saWJz dGRjKystdjMvYWNpbmNsdWRlLm00CmluZGV4IGIyNTM3OGVhYWNlLi4zMjJm MWU0MjYxMSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5t NAorKysgYi9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00CkBAIC00ODc1LDEy ICs0ODc1LDE2IEBAIGRubAogQUNfREVGVU4oW0dMSUJDWFhfRU5BQkxFX0xJ QlNURENYWF9EVUFMX0FCSV0sIFsKICAgR0xJQkNYWF9FTkFCTEUobGlic3Rk Y3h4LWR1YWwtYWJpLCQxLCxbc3VwcG9ydCB0d28gdmVyc2lvbnMgb2Ygc3Rk OjpzdHJpbmddKQogICBpZiB0ZXN0IHgkZW5hYmxlX3N5bXZlcnMgPSB4Z251 LXZlcnNpb25lZC1uYW1lc3BhY2U7IHRoZW4KLSAgICAjIGdudS12ZXJzaW9u ZWQtbmFtZXNwYWNlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBkdWFsIEFC SS4KLSAgICBlbmFibGVfbGlic3RkY3h4X2R1YWxfYWJpPSJubyIKLSAgZmkK LSAgaWYgdGVzdCB4IiRlbmFibGVfbGlic3RkY3h4X2R1YWxfYWJpIiAhPSB4 eWVzOyB0aGVuCisgICAgIyBnbnUtdmVyc2lvbmVkLW5hbWVzcGFjZSBpcyBp bmNvbXBhdGlibGUgd2l0aCB0aGUgZHVhbCBBQkkuLi4KICAgICBBQ19NU0df Tk9USUNFKFtkdWFsIEFCSSBpcyBkaXNhYmxlZF0pCi0gICAgZGVmYXVsdF9s aWJzdGRjeHhfYWJpPSJnY2M0LWNvbXBhdGlibGUiCisgICAgZW5hYmxlX2xp YnN0ZGN4eF9kdWFsX2FiaT0ibm8iCisgICAgIyAuLi4gYW5kIHVzZSB0aGUg Y3h4MTEgb25lLgorICAgIGRlZmF1bHRfbGlic3RkY3h4X2FiaT0ibmV3Igor ICBlbHNlCisgICAgaWYgdGVzdCB4IiRlbmFibGVfbGlic3RkY3h4X2R1YWxf YWJpIiAhPSB4eWVzOyB0aGVuCisgICAgICBBQ19NU0dfTk9USUNFKFtkdWFs IEFCSSBpcyBkaXNhYmxlZF0pCisgICAgICBkZWZhdWx0X2xpYnN0ZGN4eF9h Ymk9ImdjYzQtY29tcGF0aWJsZSIKKyAgICBmaQogICBmaQogICBHTElCQ1hY X0NPTkRJVElPTkFMKEVOQUJMRV9EVUFMX0FCSSwgdGVzdCAkZW5hYmxlX2xp YnN0ZGN4eF9kdWFsX2FiaSA9IHllcykKIF0pCmRpZmYgLS1naXQgYS9saWJz dGRjKystdjMvY29uZmlnL2xvY2FsZS9kcmFnb25mbHkvbW9uZXRhcnlfbWVt YmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2RyYWdvbmZs eS9tb25ldGFyeV9tZW1iZXJzLmNjCmluZGV4IGY1MzRiYmU0YWViLi4zZjk2 ZjJiOWYxMSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2Nh bGUvZHJhZ29uZmx5L21vbmV0YXJ5X21lbWJlcnMuY2MKKysrIGIvbGlic3Rk YysrLXYzL2NvbmZpZy9sb2NhbGUvZHJhZ29uZmx5L21vbmV0YXJ5X21lbWJl cnMuY2MKQEAgLTM5LDcgKzM5LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQ QUNFX1ZFUlNJT04KIAogLy8gVGhpcyBmaWxlIG1pZ2h0IGJlIGNvbXBpbGVk IHR3aWNlLCBidXQgd2Ugb25seSB3YW50IHRvIGRlZmluZSB0aGUgbWVtYmVy cwogLy8gb2YgbW9uZXlfYmFzZSBvbmNlLgotI2lmICEgX0dMSUJDWFhfVVNF X0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAh IF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogCiAgIC8vIENvbnN0cnVjdCBhbmQg cmV0dXJuIHZhbGlkIHBhdHRlcm4gY29uc2lzdGluZyBvZiBzb21lIGNvbWJp bmF0aW9uIG9mOgogICAvLyBzcGFjZSBub25lIHN5bWJvbCBzaWduIHZhbHVl CkBAIC0yMDcsNyArMjA3LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X1ZFUlNJT04KICAgICAgIH0KICAgICByZXR1cm4gX19yZXQ7CiAgIH0KLSNl bmRpZgorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAh IF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogCiAgIHRlbXBsYXRlPD4KICAgICB2 b2lkCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9n ZW5lcmljL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29u ZmlnL2xvY2FsZS9nZW5lcmljL21vbmV0YXJ5X21lbWJlcnMuY2MKaW5kZXgg MmMxY2ZlZmYwOTQuLmExYWUxMzZiZTA0IDEwMDY0NAotLS0gYS9saWJzdGRj KystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL21vbmV0YXJ5X21lbWJlcnMu Y2MKKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9t b25ldGFyeV9tZW1iZXJzLmNjCkBAIC0zNiw3ICszNiw3IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIC8vIFRoaXMgZmlsZSBtaWdo dCBiZSBjb21waWxlZCB0d2ljZSwgYnV0IHdlIG9ubHkgd2FudCB0byBkZWZp bmUgdGhlIG1lbWJlcnMKIC8vIG9mIG1vbmV5X2Jhc2Ugb25jZS4KLSNpZiAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIAogICAvLyBD b25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcg b2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKICAgLy8gc3BhY2Ugbm9uZSBzeW1i b2wgc2lnbiB2YWx1ZQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZp Zy9sb2NhbGUvZ251L21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKyst djMvY29uZmlnL2xvY2FsZS9nbnUvbW9uZXRhcnlfbWVtYmVycy5jYwppbmRl eCAxZjQ2ZWEyZjUzZi4uODc1NjFiY2M4MjEgMTAwNjQ0Ci0tLSBhL2xpYnN0 ZGMrKy12My9jb25maWcvbG9jYWxlL2dudS9tb25ldGFyeV9tZW1iZXJzLmNj CisrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dudS9tb25ldGFy eV9tZW1iZXJzLmNjCkBAIC0zNyw3ICszNyw3IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9WRVJTSU9OCiAKIC8vIFRoaXMgZmlsZSBtaWdodCBiZSBj b21waWxlZCB0d2ljZSwgYnV0IHdlIG9ubHkgd2FudCB0byBkZWZpbmUgdGhl IG1lbWJlcnMKIC8vIG9mIG1vbmV5X2Jhc2Ugb25jZS4KLSNpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIAogICAvLyBDb25zdHJ1 Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcgb2Ygc29t ZSBjb21iaW5hdGlvbiBvZjoKICAgLy8gc3BhY2Ugbm9uZSBzeW1ib2wgc2ln biB2YWx1ZQpAQCAtMjA1LDcgKzIwNSw3IEBAIF9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCiAgICAgICB9CiAgICAgcmV0dXJuIF9fcmV0Owog ICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIAogICBleHRlcm4gY2hh ciBfX25hcnJvd19tdWx0aWJ5dGVfY2hhcnMoY29uc3QgY2hhciogcywgX19s b2NhbGVfdCBjbG9jKTsKIApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2Nv bmZpZy9sb2NhbGUvZ251L251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMr Ky12My9jb25maWcvbG9jYWxlL2dudS9udW1lcmljX21lbWJlcnMuY2MKaW5k ZXggMjIwYTBmOGM1MTAuLmNiODA5NWU2YWM3IDEwMDY0NAotLS0gYS9saWJz dGRjKystdjMvY29uZmlnL2xvY2FsZS9nbnUvbnVtZXJpY19tZW1iZXJzLmNj CisrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dudS9udW1lcmlj X21lbWJlcnMuY2MKQEAgLTM5LDcgKzM5LDcgQEAgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX1ZFUlNJT04KICAgZXh0ZXJuIGNoYXIgX19uYXJyb3dfbXVs dGlieXRlX2NoYXJzKGNvbnN0IGNoYXIqIHMsIF9fbG9jYWxlX3QgY2xvYyk7 CiAKIC8vIFRoaXMgZmlsZSBtaWdodCBiZSBjb21waWxlZCB0d2ljZSwgYnV0 IHdlIG9ubHkgd2FudCB0byBkZWZpbmUgdGhpcyBvbmNlLgotI2lmICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICBjaGFyCiAgIF9f bmFycm93X211bHRpYnl0ZV9jaGFycyhjb25zdCBjaGFyKiBzLCBfX2xvY2Fs ZV90IGNsb2MpCiAgIHsKQEAgLTg0LDcgKzg0LDcgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIH0KICAgICByZXR1cm4gJ1ww JzsKICAgfQotI2VuZGlmCisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAKICAgdGVtcGxh dGU8PgogICAgIHZvaWQKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25m aWd1cmUgYi9saWJzdGRjKystdjMvY29uZmlndXJlCmluZGV4IGM0ZGE1NmMz MDQyLi5mZDQzMWYyODU0NyAxMDA3NTUKLS0tIGEvbGlic3RkYysrLXYzL2Nv bmZpZ3VyZQorKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCkBAIC03MDcw MiwxMyArNzA3MDIsMTggQEAgZmkKIAogCiAgIGlmIHRlc3QgeCRlbmFibGVf c3ltdmVycyA9IHhnbnUtdmVyc2lvbmVkLW5hbWVzcGFjZTsgdGhlbgotICAg ICMgZ251LXZlcnNpb25lZC1uYW1lc3BhY2UgaXMgaW5jb21wYXRpYmxlIHdp dGggdGhlIGR1YWwgQUJJLgotICAgIGVuYWJsZV9saWJzdGRjeHhfZHVhbF9h Ymk9Im5vIgotICBmaQotICBpZiB0ZXN0IHgiJGVuYWJsZV9saWJzdGRjeHhf ZHVhbF9hYmkiICE9IHh5ZXM7IHRoZW4KKyAgICAjIGdudS12ZXJzaW9uZWQt bmFtZXNwYWNlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBkdWFsIEFCSS4u LgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZHVhbCBBQkkgaXMgZGlzYWJsZWQiID4mNQogJGFzX2VjaG8gIiRhc19t ZTogZHVhbCBBQkkgaXMgZGlzYWJsZWQiID4mNjt9Ci0gICAgZGVmYXVsdF9s aWJzdGRjeHhfYWJpPSJnY2M0LWNvbXBhdGlibGUiCisgICAgZW5hYmxlX2xp YnN0ZGN4eF9kdWFsX2FiaT0ibm8iCisgICAgIyAuLi4gYW5kIHVzZSB0aGUg Y3h4MTEgb25lLgorICAgIGRlZmF1bHRfbGlic3RkY3h4X2FiaT0ibmV3Igor ICBlbHNlCisgICAgaWYgdGVzdCB4IiRlbmFibGVfbGlic3RkY3h4X2R1YWxf YWJpIiAhPSB4eWVzOyB0aGVuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGR1YWwgQUJJIGlzIGRpc2FibGVkIiA+ JjUKKyRhc19lY2hvICIkYXNfbWU6IGR1YWwgQUJJIGlzIGRpc2FibGVkIiA+ JjY7fQorICAgICAgZGVmYXVsdF9saWJzdGRjeHhfYWJpPSJnY2M0LWNvbXBh dGlibGUiCisgICAgZmkKICAgZmkKIAogCmRpZmYgLS1naXQgYS9saWJzdGRj KystdjMvaW5jbHVkZS9iaXRzL2MrK2NvbmZpZyBiL2xpYnN0ZGMrKy12My9p bmNsdWRlL2JpdHMvYysrY29uZmlnCmluZGV4IGRkNDdmMjc0ZDVmLi5iOTBl ZmM4MWQzMyAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0 cy9jKytjb25maWcKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9j Kytjb25maWcKQEAgLTMzNywyNiArMzM3LDYgQEAgbmFtZXNwYWNlIHN0ZAog I2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAjZW5kaWYKIAotI2lm IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKLW5hbWVzcGFjZSBzdGQKLXsKLSAg aW5saW5lIG5hbWVzcGFjZSBfX2N4eDExIF9fYXR0cmlidXRlX18oKF9fYWJp X3RhZ19fICgiY3h4MTEiKSkpIHsgfQotfQotbmFtZXNwYWNlIF9fZ251X2N4 eAotewotICBpbmxpbmUgbmFtZXNwYWNlIF9fY3h4MTEgX19hdHRyaWJ1dGVf XygoX19hYmlfdGFnX18gKCJjeHgxMSIpKSkgeyB9Ci19Ci0jIGRlZmluZSBf R0xJQkNYWF9OQU1FU1BBQ0VfQ1hYMTEgX19jeHgxMTo6Ci0jIGRlZmluZSBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ1hYMTEgbmFtZXNwYWNlIF9fY3h4 MTEgewotIyBkZWZpbmUgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9DWFgxMSB9 Ci0jIGRlZmluZSBfR0xJQkNYWF9ERUZBVUxUX0FCSV9UQUcgX0dMSUJDWFhf QUJJX1RBR19DWFgxMQotI2Vsc2UKLSMgZGVmaW5lIF9HTElCQ1hYX05BTUVT UEFDRV9DWFgxMQotIyBkZWZpbmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X0NYWDExCi0jIGRlZmluZSBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0NYWDEx Ci0jIGRlZmluZSBfR0xJQkNYWF9ERUZBVUxUX0FCSV9UQUcKLSNlbmRpZgot CiAvLyBOb24temVybyBpZiBpbmxpbmUgbmFtZXNwYWNlcyBhcmUgdXNlZCBm b3IgdmVyc2lvbmluZyB0aGUgZW50aXJlIGxpYnJhcnkuCiAjZGVmaW5lIF9H TElCQ1hYX0lOTElORV9WRVJTSU9OIAogCkBAIC00MTUsNyArMzk1LDcgQEAg X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgLy8gTm9uLWlu bGluZSBuYW1lc3BhY2UgZm9yIGNvbXBvbmVudHMgcmVwbGFjZWQgYnkgYWx0 ZXJuYXRlcyBpbiBhY3RpdmUgbW9kZS4KICAgbmFtZXNwYWNlIF9fY3h4MTk5 OAogICB7Ci0jIGlmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgaWYgX0dM SUJDWFhfVVNFX0NYWDExX0FCSSAmJiAhIF9HTElCQ1hYX0lOTElORV9WRVJT SU9OCiAgIGlubGluZSBuYW1lc3BhY2UgX19jeHgxMSBfX2F0dHJpYnV0ZV9f KChfX2FiaV90YWdfXyAoImN4eDExIikpKSB7IH0KICMgZW5kaWYKICAgfQpA QCAtNDQ1LDYgKzQyNSwyNiBAQCBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZF UlNJT04KICMgZW5kaWYKICNlbmRpZgogCisjaWYgX0dMSUJDWFhfVVNFX0NY WDExX0FCSSAmJiAhIF9HTElCQ1hYX0lOTElORV9WRVJTSU9OCituYW1lc3Bh Y2Ugc3RkCit7CisgIGlubGluZSBuYW1lc3BhY2UgX19jeHgxMSBfX2F0dHJp YnV0ZV9fKChfX2FiaV90YWdfXyAoImN4eDExIikpKSB7IH0KK30KK25hbWVz cGFjZSBfX2dudV9jeHgKK3sKKyAgaW5saW5lIG5hbWVzcGFjZSBfX2N4eDEx IF9fYXR0cmlidXRlX18oKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpIHsgfQor fQorIyBkZWZpbmUgX0dMSUJDWFhfTkFNRVNQQUNFX0NYWDExIF9fY3h4MTE6 OgorIyBkZWZpbmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX0NYWDExIG5h bWVzcGFjZSBfX2N4eDExIHsKKyMgZGVmaW5lIF9HTElCQ1hYX0VORF9OQU1F U1BBQ0VfQ1hYMTEgfQorIyBkZWZpbmUgX0dMSUJDWFhfREVGQVVMVF9BQklf VEFHIF9HTElCQ1hYX0FCSV9UQUdfQ1hYMTEKKyNlbHNlCisjIGRlZmluZSBf R0xJQkNYWF9OQU1FU1BBQ0VfQ1hYMTEKKyMgZGVmaW5lIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9DWFgxMQorIyBkZWZpbmUgX0dMSUJDWFhfRU5EX05B TUVTUEFDRV9DWFgxMQorIyBkZWZpbmUgX0dMSUJDWFhfREVGQVVMVF9BQklf VEFHCisjZW5kaWYKKwogLy8gTWFjcm9zIGZvciBuYW1lc3BhY2Ugc2NvcGUu IEVpdGhlciBuYW1lc3BhY2Ugc3RkOjogb3IgdGhlIG5hbWUKIC8vIG9mIHNv bWUgbmVzdGVkIG5hbWVzcGFjZSB3aXRoaW4gaXQgY29ycmVzcG9uZGluZyB0 byB0aGUgYWN0aXZlIG1vZGUuCiAvLyBfR0xJQkNYWF9TVERfQQpkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jb3dfc3RyaW5nLmgg Yi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Nvd19zdHJpbmcuaAppbmRl eCBlNWYwOTRmZDEzZS4uZDViOThkMzBhNzAgMTAwNjQ0Ci0tLSBhL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvY293X3N0cmluZy5oCisrKyBiL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvY293X3N0cmluZy5oCkBAIC0zMiw4ICsz Miw2IEBACiAjaWZuZGVmIF9DT1dfU1RSSU5HX0gKICNkZWZpbmUgX0NPV19T VFJJTkdfSCAxCiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKLQog I2luY2x1ZGUgPGV4dC9hdG9taWNpdHkuaD4gLy8gX0F0b21pY193b3JkLCBf X2lzX3NpbmdsZV90aHJlYWRlZAogCiAjaWZkZWYgX19jcHBfbGliX2lzX2Nv bnN0YW50X2V2YWx1YXRlZApAQCAtNDQsNiArNDIsMTAgQEAKICMgZGVmaW5l IF9fY3BwX2xpYl9jb25zdGV4cHJfc3RyaW5nIDIwMTYxMUwKICNlbmRpZgog CisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBkZWZpbmUgYmFzaWNf c3RyaW5nIF9fc3RkX2Nvd19zdHJpbmcKKyNlbmRpZgorCiBuYW1lc3BhY2Ug c3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC04MzUsNiArODM3LDcgQEAg X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIGVuZCgp IGNvbnN0IF9HTElCQ1hYX05PRVhDRVBUCiAgICAgICB7IHJldHVybiBjb25z dF9pdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkpOyB9CiAKKyNp ZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgICAgIC8qKgogICAgICAg ICogIFJldHVybnMgYSByZWFkL3dyaXRlIHJldmVyc2UgaXRlcmF0b3IgdGhh dCBwb2ludHMgdG8gdGhlIGxhc3QKICAgICAgICAqICBjaGFyYWN0ZXIgaW4g dGhlICVzdHJpbmcuICBJdGVyYXRpb24gaXMgZG9uZSBpbiByZXZlcnNlIGVs ZW1lbnQKQEAgLTkwNiw2ICs5MDksNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1F U1BBQ0VfVkVSU0lPTgogICAgICAgY3JlbmQoKSBjb25zdCBub2V4Y2VwdAog ICAgICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcih0aGlzLT5i ZWdpbigpKTsgfQogI2VuZGlmCisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0Vf Q1hYMTFfQUJJCiAKICAgICBwdWJsaWM6CiAgICAgICAvLyBDYXBhY2l0eToK QEAgLTkzMyw2ICs5MzcsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Vf VkVSU0lPTgogICAgICAgbWF4X3NpemUoKSBjb25zdCBfR0xJQkNYWF9OT0VY Q0VQVAogICAgICAgeyByZXR1cm4gX1JlcDo6X1NfbWF4X3NpemU7IH0KIAor I2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICAgICAgLyoqCiAgICAg ICAgKiAgQGJyaWVmICBSZXNpemVzIHRoZSAlc3RyaW5nIHRvIHRoZSBzcGVj aWZpZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCiAgICAgICAgKiAgQHBhcmFt ICBfX24gIE51bWJlciBvZiBjaGFyYWN0ZXJzIHRoZSAlc3RyaW5nIHNob3Vs ZCBjb250YWluLgpAQCAtOTY5LDcgKzk3NCw3IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICB7IHJlc2VydmUoKTsgfQogI3By YWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKICNlbmRpZgotCisjZW5kaWYgLy8g ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgICAgICAvKioKICAgICAgICAq ICBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0 IHRoZSAlc3RyaW5nIGNhbiBob2xkCiAgICAgICAgKiAgYmVmb3JlIG5lZWRp bmcgdG8gYWxsb2NhdGUgbW9yZSBtZW1vcnkuCkBAIC05NzgsNiArOTgzLDcg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIGNh cGFjaXR5KCkgY29uc3QgX0dMSUJDWFhfTk9FWENFUFQKICAgICAgIHsgcmV0 dXJuIF9NX3JlcCgpLT5fTV9jYXBhY2l0eTsgfQogCisjaWYgISBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCiAgICAgICAvKioKICAgICAgICAqICBAYnJpZWYg IEF0dGVtcHQgdG8gcHJlYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3Igc3Bl Y2lmaWVkIG51bWJlciBvZgogICAgICAgICogICAgICAgICAgY2hhcmFjdGVy cy4KQEAgLTEwMjYsNiArMTAzMiw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVT UEFDRV9WRVJTSU9OCiAgICAgICBjbGVhcigpCiAgICAgICB7IF9NX211dGF0 ZSgwLCB0aGlzLT5zaXplKCksIDApOyB9CiAjZW5kaWYKKyNlbmRpZiAvLyAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogICAgICAgLyoqCiAgICAgICAg KiAgUmV0dXJucyB0cnVlIGlmIHRoZSAlc3RyaW5nIGlzIGVtcHR5LiAgRXF1 aXZhbGVudCB0bwpAQCAtMTAzNSw2ICsxMDQyLDcgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIGVtcHR5KCkgY29uc3QgX0dM SUJDWFhfTk9FWENFUFQKICAgICAgIHsgcmV0dXJuIHRoaXMtPnNpemUoKSA9 PSAwOyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgICAg IC8vIEVsZW1lbnQgYWNjZXNzOgogICAgICAgLyoqCiAgICAgICAgKiAgQGJy aWVmICBTdWJzY3JpcHQgYWNjZXNzIHRvIHRoZSBkYXRhIGNvbnRhaW5lZCBp biB0aGUgJXN0cmluZy4KQEAgLTEzNDUsNiArMTM1Myw3IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAJdHJhaXRzX3R5cGU6OmFzc2ln bihfTV9kYXRhKClbdGhpcy0+c2l6ZSgpXSwgX19jKTsKIAlfTV9yZXAoKS0+ X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19sZW4pOwogICAgICAgfQor I2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogCiAgICAgICAv KioKICAgICAgICAqICBAYnJpZWYgIFNldCB2YWx1ZSB0byBjb250ZW50cyBv ZiBhbm90aGVyIHN0cmluZy4KQEAgLTE0ODksNiArMTQ5OCw3IEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAJfQogI2VuZGlmIC8vIEMr KzE3CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgICAgIC8q KgogICAgICAgICogIEBicmllZiAgSW5zZXJ0IG11bHRpcGxlIGNoYXJhY3Rl cnMuCiAgICAgICAgKiAgQHBhcmFtIF9fcCAgSXRlcmF0b3IgcmVmZXJlbmNp bmcgbG9jYXRpb24gaW4gc3RyaW5nIHRvIGluc2VydCBhdC4KQEAgLTIxMDcs NiArMjExNyw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAJICByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxIC0gYmVnaW4oKSwgX19p MiAtIF9faTEsIF9fc3YpOwogCX0KICNlbmRpZiAvLyBDKysxNworI2VuZGlm IC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogCiAgICAgcHJpdmF0ZToK ICAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnRlZ2VyPgpAQCAtMjE3OCw2ICsy MTg5LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAog ICAgIHB1YmxpYzoKIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQog ICAgICAgLyoqCiAgICAgICAgKiAgQGJyaWVmICBDb3B5IHN1YnN0cmluZyBp bnRvIEMgc3RyaW5nLgogICAgICAgICogIEBwYXJhbSBfX3MgIEMgc3RyaW5n IHRvIGNvcHkgdmFsdWUgaW50by4KQEAgLTIxOTIsNiArMjIwNCw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICAqLwogICAg ICAgc2l6ZV90eXBlCiAgICAgICBjb3B5KF9DaGFyVCogX19zLCBzaXplX3R5 cGUgX19uLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdDsKKyNlbmRpZgog CiAgICAgICAvKioKICAgICAgICAqICBAYnJpZWYgIFN3YXAgY29udGVudHMg d2l0aCBhbm90aGVyIHN0cmluZy4KQEAgLTIyNDksNiArMjI2Miw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICBnZXRfYWxs b2NhdG9yKCkgY29uc3QgX0dMSUJDWFhfTk9FWENFUFQKICAgICAgIHsgcmV0 dXJuIF9NX2RhdGFwbHVzOyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKICAgICAgIC8qKgogICAgICAgICogIEBicmllZiAgRmluZCBwb3Np dGlvbiBvZiBhIEMgc3Vic3RyaW5nLgogICAgICAgICogIEBwYXJhbSBfX3Mg IEMgc3RyaW5nIHRvIGxvY2F0ZS4KQEAgLTMwNTQsNiArMzA2OCw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICBjb250YWlu cyhjb25zdCBfQ2hhclQqIF9feCkgY29uc3Qgbm9leGNlcHQKICAgICAgIHsg cmV0dXJuIF9fc3ZfdHlwZSh0aGlzLT5kYXRhKCksIHRoaXMtPnNpemUoKSku Y29udGFpbnMoX194KTsgfQogI2VuZGlmIC8vIEMrKzIzCisjZW5kaWYgLy8g ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAKICMgaWZkZWYgX0dMSUJDWFhf VE1fVFNfSU5URVJOQUwKICAgICAgIGZyaWVuZCB2b2lkCkBAIC0zMjU3LDYg KzMyNzIsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgog CX0KICAgICAgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAg IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg dHlwZW5hbWUgX0FsbG9jPgogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U cmFpdHMsIF9BbGxvYz4mCiAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry YWl0cywgX0FsbG9jPjo6CkBAIC0zNDIwLDYgKzM0MzYsNyBAQCBfR0xJQkNY WF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCSAgIHJldHVybiBfTV9yZXBs YWNlX3NhZmUoX19wb3MsIF9fbjEsIF9fdG1wLl9NX2RhdGEoKSwgX19uMik7 CiAJIH0KICAgICAgfQorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSQogCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgIHZvaWQKQEAgLTM0ODEs NiArMzQ5OCw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAgICAgICBfTV9yZXAoKS0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUo X19uZXdfc2l6ZSk7CiAgICAgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgIHZvaWQKICAgICBiYXNp Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKQEAgLTM1MDYs NiArMzUyNCw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAgICAgICBfTV9yZXAoKS0+X01fZGlzcG9zZShfX2EpOwogICAgICAgX01f ZGF0YShfX3RtcCk7CiAgICAgfQorI2VuZGlmCiAKICAgdGVtcGxhdGU8dHlw ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs b2M+CiAgICAgdm9pZApAQCAtMzYyOSw2ICszNjQ4LDcgQEAgX0dMSUJDWFhf QkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIHJldHVybiBfX3ItPl9N X3JlZmRhdGEoKTsKICAgICB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICAgdm9pZAogICAgIGJhc2lj X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgpAQCAtMzY0Miw2 ICszNjYyLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04K IAl0aGlzLT5lcmFzZShfX24pOwogICAgICAgLy8gZWxzZSBub3RoaW5nIChp biBwYXJ0aWN1bGFyLCBhdm9pZCBjYWxsaW5nIF9NX211dGF0ZSgpIHVubmVj ZXNzYXJpbHkuKQogICAgIH0KKyAgI2VuZGlmCiAKICAgdGVtcGxhdGU8dHlw ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs b2M+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CkBA IC0zNjgyLDYgKzM3MDMsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Vf VkVSU0lPTgogICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAorI2lmICEg X0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICB0ZW1wbGF0ZTx0eXBlbmFtZSBf Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAg ICB2b2lkCiAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs bG9jPjo6CkBAIC0zNzE2LDcgKzM3MzgsMTEgQEAgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIC8vIDIxLjMuNS43IHBhciAzOiBk byBub3QgYXBwZW5kIG51bGwuICAoZ29vZC4pCiAgICAgICByZXR1cm4gX19u OwogICAgIH0KKyNlbmRpZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkK IF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3Bh Y2Ugc3RkCi0jZW5kaWYgIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQor CisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyB1bmRlZiBiYXNpY19z dHJpbmcKKyNlbmRpZgogI2VuZGlmICAvLyBfQ09XX1NUUklOR19ICmRpZmYg LS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvc3RkZXhjZXB0IGIv bGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3N0ZGV4Y2VwdAppbmRleCA2NmM4 NTcyZDBjZC4uMzMzMDY1MDg2OTUgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12 My9pbmNsdWRlL3N0ZC9zdGRleGNlcHQKKysrIGIvbGlic3RkYysrLXYzL2lu Y2x1ZGUvc3RkL3N0ZGV4Y2VwdApAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3Bh Y2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKLSNpZiBfR0xJQkNYWF9V U0VfRFVBTF9BQkkKLSNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYg X0dMSUJDWFhfVVNFX0RVQUxfQUJJIHx8IF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkKKyNpZiAhIF9HTElCQ1hYX0RFRklORV9TVERFWENFUFRfSU5TVEFOVElB VElPTlMKICAgLy8gRW11bGF0ZXMgYW4gb2xkIENPVyBzdHJpbmcgd2hlbiB0 aGUgbmV3IHN0ZDo6c3RyaW5nIGlzIGluIHVzZS4KICAgc3RydWN0IF9fY293 X3N0cmluZwogICB7CkBAIC01NCw2ICs1NCw3IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9WRVJTSU9OCiAKICAgICBfX2Nvd19zdHJpbmcoKTsKICAg ICBfX2Nvd19zdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICBfX2Nv d19zdHJpbmcoY29uc3QgY2hhciopOwogICAgIF9fY293X3N0cmluZyhjb25z dCBjaGFyKiwgc2l6ZV90KTsKICAgICBfX2Nvd19zdHJpbmcoY29uc3QgX19j b3dfc3RyaW5nJikgX0dMSUJDWFhfTk9USFJPVzsKICAgICBfX2Nvd19zdHJp bmcmIG9wZXJhdG9yPShjb25zdCBfX2Nvd19zdHJpbmcmKSBfR0xJQkNYWF9O T1RIUk9XOwpAQCAtNjIsMTIgKzYzLDE0IEBAIF9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCiAgICAgX19jb3dfc3RyaW5nKF9fY293X3N0cmlu ZyYmKSBub2V4Y2VwdDsKICAgICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9yPShf X2Nvd19zdHJpbmcmJikgbm9leGNlcHQ7CiAjZW5kaWYKKyAgICBjb25zdCBj aGFyKiBjX3N0cigpIGNvbnN0IF9HTElCQ1hYX05PRVhDRVBUOwogICB9Owot Ci0gIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXI+IF9fc3NvX3N0cmluZzsK LSNlbHNlIC8vIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNlbmRpZiAvLyAh IF9HTElCQ1hYX0RFRklORV9TVERFWENFUFRfSU5TVEFOVElBVElPTlMKKyNl bHNlCiAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXI+IF9fY293X3N0cmlu ZzsKKyNlbmRpZgogCisjaWYgX0dMSUJDWFhfVVNFX0RVQUxfQUJJICYmICEg X0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICAvLyBFbXVsYXRlcyBhIG5ldyBT U08gc3RyaW5nIHdoZW4gdGhlIG9sZCBzdGQ6OnN0cmluZyBpcyBpbiB1c2Uu CiAgIHN0cnVjdCBfX3Nzb19zdHJpbmcKICAgewpAQCAtOTQsMTAgKzk3LDgg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICBfX3Nz b19zdHJpbmcmIG9wZXJhdG9yPShfX3Nzb19zdHJpbmcmJikgbm9leGNlcHQ7 CiAjZW5kaWYKICAgfTsKLSNlbmRpZiAvLyBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCi0jZWxzZSAgLy8gX0dMSUJDWFhfVVNFX0RVQUxfQUJJCisjZWxzZQog ICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyPiBfX3Nzb19zdHJpbmc7Ci0g IHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXI+IF9fY293X3N0cmluZzsKICNl bmRpZgogCiAgIC8qKgpAQCAtMTI3LDcgKzEyOCw3IEBAIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgbG9naWNfZXJyb3ImIG9wZXJh dG9yPShsb2dpY19lcnJvciYmKSBub2V4Y2VwdDsKICNlbmRpZgogCi0jaWYg X0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCBfR0xJQkNYWF9ERUZJTkVfU1RE RVhDRVBUX0NPUFlfT1BTCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8 fCBfR0xJQkNYWF9ERUZJTkVfU1RERVhDRVBUX0lOU1RBTlRJQVRJT05TCiAg ICAgbG9naWNfZXJyb3IoY29uc3QgbG9naWNfZXJyb3ImKSBfR0xJQkNYWF9O T1RIUk9XOwogICAgIGxvZ2ljX2Vycm9yJiBvcGVyYXRvcj0oY29uc3QgbG9n aWNfZXJyb3ImKSBfR0xJQkNYWF9OT1RIUk9XOwogI2VsaWYgX19jcGx1c3Bs dXMgPj0gMjAxMTAzTApAQCAtMjMzLDcgKzIzNCw3IEBAIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgcnVudGltZV9lcnJvciYgb3Bl cmF0b3I9KHJ1bnRpbWVfZXJyb3ImJikgbm9leGNlcHQ7CiAjZW5kaWYKIAot I2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgX0dMSUJDWFhfREVGSU5F X1NUREVYQ0VQVF9DT1BZX09QUworI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgfHwgX0dMSUJDWFhfREVGSU5FX1NUREVYQ0VQVF9JTlNUQU5USUFUSU9O UwogICAgIHJ1bnRpbWVfZXJyb3IoY29uc3QgcnVudGltZV9lcnJvciYpIF9H TElCQ1hYX05PVEhST1c7CiAgICAgcnVudGltZV9lcnJvciYgb3BlcmF0b3I9 KGNvbnN0IHJ1bnRpbWVfZXJyb3ImKSBfR0xJQkNYWF9OT1RIUk9XOwogI2Vs aWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTApkaWZmIC0tZ2l0IGEvbGlic3Rk YysrLXYzL3B5dGhvbi9saWJzdGRjeHgvdjYvcHJpbnRlcnMucHkgYi9saWJz dGRjKystdjMvcHl0aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQppbmRl eCAwMTg3YzRiNjBlNi4uMzQ3NWFhMjQ2ZWQgMTAwNjQ0Ci0tLSBhL2xpYnN0 ZGMrKy12My9weXRob24vbGlic3RkY3h4L3Y2L3ByaW50ZXJzLnB5CisrKyBi L2xpYnN0ZGMrKy12My9weXRob24vbGlic3RkY3h4L3Y2L3ByaW50ZXJzLnB5 CkBAIC05NjMsNiArOTYzLDggQEAgY2xhc3MgU3RkU3RyaW5nUHJpbnRlcjoK ICAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZW5hbWUsIHZhbCk6CiAgICAg ICAgIHNlbGYudmFsID0gdmFsCiAgICAgICAgIHNlbGYubmV3X3N0cmluZyA9 IHR5cGVuYW1lLmZpbmQoIjo6X19jeHgxMTo6YmFzaWNfc3RyaW5nIikgIT0g LTEKKyAgICAgICAgaWYgbm90IHNlbGYubmV3X3N0cmluZyBhbmQgX3ZlcnNp b25lZF9uYW1lc3BhY2U6CisgICAgICAgICAgICBzZWxmLm5ld19zdHJpbmcg PSB0eXBlbmFtZS5maW5kKCI6OiIgKyBfdmVyc2lvbmVkX25hbWVzcGFjZSAr ICJiYXNpY19zdHJpbmciKSAhPSAtMQogCiAgICAgZGVmIHRvX3N0cmluZyhz ZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgJnN0cmluZyB3b3JrcywgdG9v LgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9NYWtlZmlsZS5hbSBi L2xpYnN0ZGMrKy12My9zcmMvTWFrZWZpbGUuYW0KaW5kZXggNWI5YWY0MWNk YjkuLmVjMGM1MDJlY2IxIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3Jj L01ha2VmaWxlLmFtCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvTWFrZWZpbGUu YW0KQEAgLTg5LDYgKzg5LDkgQEAgZWxzZQogbGRibF9jb21wYXRfc291cmNl cyA9CiBlbmRpZgogCitpZiBFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQQUNF CitsZGJsX2FsdDEyOF9jb21wYXRfc291cmNlcyA9CitlbHNlCiBpZiBHTElC Q1hYX0xEQkxfQUxUMTI4X0NPTVBBVAogaWYgRU5BQkxFX0RVQUxfQUJJCiBs ZGJsX2FsdDEyOF9jb21wYXRfY3h4MTFfc291cmNlcyA9IFwKQEAgLTEwMiw2 ICsxMDUsNyBAQCBsZGJsX2FsdDEyOF9jb21wYXRfc291cmNlcyA9IFwKIGVs c2UKIGxkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0KIGVuZGlmCitlbmRp ZgogCiBpZiBFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQQUNFCiBjeHgweF9j b21wYXRfc291cmNlcyA9CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3Jj L01ha2VmaWxlLmluIGIvbGlic3RkYysrLXYzL3NyYy9NYWtlZmlsZS5pbgpp bmRleCBmNDJkOTU3YWYzNi4uYzljMWI2NWRiNTIgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My9zcmMvTWFrZWZpbGUuaW4KKysrIGIvbGlic3RkYysrLXYz L3NyYy9NYWtlZmlsZS5pbgpAQCAtMTU3LDEwICsxNTcsOSBAQCBhbV9fb2Jq ZWN0c18yID0gY29tcGF0aWJpbGl0eS5sbyBjb21wYXRpYmlsaXR5LWRlYnVn X2xpc3QubG8gXAogQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFM U0VACWNvbXBhdGliaWxpdHktY2hyb25vLmxvIFwKIEBFTkFCTEVfU1lNVkVS U19HTlVfTkFNRVNQQUNFX0ZBTFNFQAljb21wYXRpYmlsaXR5LWNvbmR2YXIu bG8gXAogQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFMU0VACWNv bXBhdGliaWxpdHktdGhyZWFkLWMrKzB4LmxvCi1ARU5BQkxFX0RVQUxfQUJJ X1RSVUVAQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVAYW1fX29i amVjdHNfNCA9IGNvbXBhdGliaWxpdHktbGRibC1hbHQxMjgtY3h4MTEubG8K LUBHTElCQ1hYX0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQGFtX19vYmplY3Rz XzUgPSAgXAotQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVACWNv bXBhdGliaWxpdHktbGRibC1hbHQxMjgubG8gXAotQEdMSUJDWFhfTERCTF9B TFQxMjhfQ09NUEFUX1RSVUVACSQoYW1fX29iamVjdHNfNCkKK0BFTkFCTEVf RFVBTF9BQklfVFJVRUBARU5BQkxFX1NZTVZFUlNfR05VX05BTUVTUEFDRV9G QUxTRUBAR0xJQkNYWF9MREJMX0FMVDEyOF9DT01QQVRfVFJVRUBhbV9fb2Jq ZWN0c180ID0gY29tcGF0aWJpbGl0eS1sZGJsLWFsdDEyOC1jeHgxMS5sbwor QEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFMU0VAQEdMSUJDWFhf TERCTF9BTFQxMjhfQ09NUEFUX1RSVUVAYW1fX29iamVjdHNfNSA9IGNvbXBh dGliaWxpdHktbGRibC1hbHQxMjgubG8gXAorQEVOQUJMRV9TWU1WRVJTX0dO VV9OQU1FU1BBQ0VfRkFMU0VAQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFU X1RSVUVACSQoYW1fX29iamVjdHNfNCkKIGFtX19vYmplY3RzXzYgPSAkKGFt X19vYmplY3RzXzMpICQoYW1fX29iamVjdHNfNSkKIEBHTElCQ1hYX0hPU1RF RF9UUlVFQGFtX2xpYnN0ZGNfX19sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0 c18yKSBcCiBAR0xJQkNYWF9IT1NURURfVFJVRUAJJChhbV9fb2JqZWN0c182 KQpAQCAtNTEwLDE0ICs1MDksMTUgQEAgU1VCRElSUyA9IGMrKzk4IGMrKzEx IGMrKzE3IGMrKzIwICQoZmlsZXN5c3RlbV9kaXIpICQoYmFja3RyYWNlX2Rp cikgJChleHBlcmltZW4KIAogQEdMSUJDWFhfTERCTF9DT01QQVRfRkFMU0VA bGRibF9jb21wYXRfc291cmNlcyA9IAogQEdMSUJDWFhfTERCTF9DT01QQVRf VFJVRUBsZGJsX2NvbXBhdF9zb3VyY2VzID0gY29tcGF0aWJpbGl0eS1sZGJs LmNjCi1ARU5BQkxFX0RVQUxfQUJJX0ZBTFNFQEBHTElCQ1hYX0xEQkxfQUxU MTI4X0NPTVBBVF9UUlVFQGxkYmxfYWx0MTI4X2NvbXBhdF9jeHgxMV9zb3Vy Y2VzID0gCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVAQEdMSUJDWFhfTERCTF9B TFQxMjhfQ09NUEFUX1RSVUVAbGRibF9hbHQxMjhfY29tcGF0X2N4eDExX3Nv dXJjZXMgPSBcCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVAQEdMSUJDWFhfTERC TF9BTFQxMjhfQ09NUEFUX1RSVUVACWNvbXBhdGliaWxpdHktbGRibC1hbHQx MjgtY3h4MTEuY2MKLQotQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX0ZB TFNFQGxkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0gCi1AR0xJQkNYWF9M REJMX0FMVDEyOF9DT01QQVRfVFJVRUBsZGJsX2FsdDEyOF9jb21wYXRfc291 cmNlcyA9IFwKLUBHTElCQ1hYX0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQAlj b21wYXRpYmlsaXR5LWxkYmwtYWx0MTI4LmNjIFwKLUBHTElCQ1hYX0xEQkxf QUxUMTI4X0NPTVBBVF9UUlVFQAkke2xkYmxfYWx0MTI4X2NvbXBhdF9jeHgx MV9zb3VyY2VzfQorQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFM U0VAQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX0ZBTFNFQGxkYmxfYWx0 MTI4X2NvbXBhdF9zb3VyY2VzID0gCitARU5BQkxFX1NZTVZFUlNfR05VX05B TUVTUEFDRV9GQUxTRUBAR0xJQkNYWF9MREJMX0FMVDEyOF9DT01QQVRfVFJV RUBsZGJsX2FsdDEyOF9jb21wYXRfc291cmNlcyA9IFwKK0BFTkFCTEVfU1lN VkVSU19HTlVfTkFNRVNQQUNFX0ZBTFNFQEBHTElCQ1hYX0xEQkxfQUxUMTI4 X0NPTVBBVF9UUlVFQAljb21wYXRpYmlsaXR5LWxkYmwtYWx0MTI4LmNjIFwK K0BFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQQUNFX0ZBTFNFQEBHTElCQ1hY X0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQAkke2xkYmxfYWx0MTI4X2NvbXBh dF9jeHgxMV9zb3VyY2VzfQorCitARU5BQkxFX1NZTVZFUlNfR05VX05BTUVT UEFDRV9UUlVFQGxkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0gCitARU5B QkxFX0RVQUxfQUJJX0ZBTFNFQEBFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQ QUNFX0ZBTFNFQEBHTElCQ1hYX0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQGxk YmxfYWx0MTI4X2NvbXBhdF9jeHgxMV9zb3VyY2VzID0gCitARU5BQkxFX0RV QUxfQUJJX1RSVUVAQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFM U0VAQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVAbGRibF9hbHQx MjhfY29tcGF0X2N4eDExX3NvdXJjZXMgPSBcCitARU5BQkxFX0RVQUxfQUJJ X1RSVUVAQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFMU0VAQEdM SUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVACWNvbXBhdGliaWxpdHkt bGRibC1hbHQxMjgtY3h4MTEuY2MKIAogQEVOQUJMRV9TWU1WRVJTX0dOVV9O QU1FU1BBQ0VfRkFMU0VAY3h4MHhfY29tcGF0X3NvdXJjZXMgPSBcCiBARU5B QkxFX1NZTVZFUlNfR05VX05BTUVTUEFDRV9GQUxTRUAJY29tcGF0aWJpbGl0 eS1hdG9taWMtYysrMHguY2MgXApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYz L3NyYy9jKysxMS9NYWtlZmlsZS5hbSBiL2xpYnN0ZGMrKy12My9zcmMvYysr MTEvTWFrZWZpbGUuYW0KaW5kZXggNjgyYmUxNjY5YTQuLjgyMjI3MzM4Nzk4 IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL01ha2VmaWxl LmFtCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvTWFrZWZpbGUuYW0K QEAgLTQwLDE1ICs0MCwxMSBAQCBjdHlwZV9tZW1iZXJzLmNjOiAke2dsaWJj eHhfc3JjZGlyfS8kKENDVFlQRV9DQykKIAkkKExOX1MpICR7Z2xpYmN4eF9z cmNkaXJ9LyQoQ0NUWVBFX0NDKSAuIHx8IHRydWUKIAogaWYgRU5BQkxFX0RV QUxfQUJJCi1jeHgxMV9hYmlfc291cmNlcyA9IFwKLQljb3ctbG9jYWxlX2lu aXQuY2MgXAorZHVhbF9hYmlfc291cmNlcyA9IFwKIAljb3ctc2hpbV9mYWNl dHMuY2MgXAotCWN4eDExLWhhc2hfdHIxLmNjIFwKLQljeHgxMS1pb3NfZmFp bHVyZS5jYyBcCi0JY3h4MTEtc2hpbV9mYWNldHMuY2MgXAotCWN4eDExLXN0 ZGV4Y2VwdC5jYworCWN4eDExLXNoaW1fZmFjZXRzLmNjCiBlbHNlCi1jeHgx MV9hYmlfc291cmNlcyA9CitkdWFsX2FiaV9zb3VyY2VzID0KIGVuZGlmCiAK IHNvdXJjZXNfZnJlZXN0YW5kaW5nID0gXApAQCAtNTksOCArNTUsMTIgQEAg c291cmNlcyA9IFwKIAljaHJvbm8uY2MgXAogCWNvZGVjdnQuY2MgXAogCWNv bmRpdGlvbl92YXJpYWJsZS5jYyBcCisJY293LWxvY2FsZV9pbml0LmNjIFwK IAljb3ctc3RkZXhjZXB0LmNjIFwKIAljdHlwZS5jYyBcCisJY3h4MTEtaGFz aF90cjEuY2MgXAorCWN4eDExLWlvc19mYWlsdXJlLmNjIFwKKwljeHgxMS1z dGRleGNlcHQuY2MgXAogCWRlYnVnLmNjIFwKIAlmdW5jdGV4Y2VwdC5jYyBc CiAJZnVuY3Rpb25hbC5jYyBcCkBAIC03NywxOSArNzcsMTEgQEAgc291cmNl cyA9IFwKIAlzbnByaW50Zl9saXRlLmNjIFwKIAlzeXN0ZW1fZXJyb3IuY2Mg XAogCXRocmVhZC5jYyBcCi0JJHtjeHgxMV9hYmlfc291cmNlc30gXAorCSR7 ZHVhbF9hYmlfc291cmNlc30gXAogCSR7aG9zdF9zb3VyY2VzfQogCiBpZiBF TkFCTEVfRFVBTF9BQkkKIGV4dHJhX3N0cmluZ19pbnN0X3NvdXJjZXMgPSBc Ci0JY293LWZzdHJlYW0taW5zdC5jYyBcCi0JY293LXNzdHJlYW0taW5zdC5j YyBcCi0JY293LXN0cmluZy1pbnN0LmNjIFwKLQljb3ctc3RyaW5nLWlvLWlu c3QuY2MgXAotCWNvdy13c3RyaW5nLWluc3QuY2MgXAotCWNvdy13c3RyaW5n LWlvLWluc3QuY2MgXAotCWN4eDExLWxvY2FsZS1pbnN0LmNjIFwKLQljeHgx MS13bG9jYWxlLWluc3QuY2MgXAogCXNzb19zdHJpbmcuY2MKIGVsc2UKIGV4 dHJhX3N0cmluZ19pbnN0X3NvdXJjZXMgPQpAQCAtOTksNiArOTEsMTQgQEAg aWYgRU5BQkxFX0VYVEVSTl9URU1QTEFURQogIyBYVEVNUExBVEVfRkxBR1Mg PSAtZm5vLWltcGxpY2l0LXRlbXBsYXRlcwogaW5zdF9zb3VyY2VzID0gXAog CSQoZXh0cmFfc3RyaW5nX2luc3Rfc291cmNlcykgXAorCWNvdy1mc3RyZWFt LWluc3QuY2MgXAorCWNvdy1zc3RyZWFtLWluc3QuY2MgXAorCWNvdy1zdHJp bmctaW5zdC5jYyBcCisJY293LXN0cmluZy1pby1pbnN0LmNjIFwKKwljb3ct d3N0cmluZy1pbnN0LmNjIFwKKwljb3ctd3N0cmluZy1pby1pbnN0LmNjIFwK KwljeHgxMS1sb2NhbGUtaW5zdC5jYyBcCisJY3h4MTEtd2xvY2FsZS1pbnN0 LmNjIFwKIAlleHQxMS1pbnN0LmNjIFwKIAlmc3RyZWFtLWluc3QuY2MgXAog CWlvcy1pbnN0LmNjIFwKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMv YysrMTEvTWFrZWZpbGUuaW4gYi9saWJzdGRjKystdjMvc3JjL2MrKzExL01h a2VmaWxlLmluCmluZGV4IGU3YTA5ZmUzMjQ2Li4yZDk0NDI1NDgwYiAxMDA2 NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9NYWtlZmlsZS5pbgor KysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL01ha2VmaWxlLmluCkBAIC0x MjIsMjUgKzEyMiwyNiBAQCBDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQog TFRMSUJSQVJJRVMgPSAkKG5vaW5zdF9MVExJQlJBUklFUykKIGxpYmNfXzEx Y29udmVuaWVuY2VfbGFfTElCQUREID0KIGFtX19vYmplY3RzXzEgPSBsaW1p dHMubG8gcGxhY2Vob2xkZXJzLmxvCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVA YW1fX29iamVjdHNfMiA9IGNvdy1sb2NhbGVfaW5pdC5sbyBcCi1ARU5BQkxF X0RVQUxfQUJJX1RSVUVACWNvdy1zaGltX2ZhY2V0cy5sbyBjeHgxMS1oYXNo X3RyMS5sbyBcCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVACWN4eDExLWlvc19m YWlsdXJlLmxvIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY3h4MTEtc2hp bV9mYWNldHMubG8gY3h4MTEtc3RkZXhjZXB0LmxvCitARU5BQkxFX0RVQUxf QUJJX1RSVUVAYW1fX29iamVjdHNfMiA9IGNvdy1zaGltX2ZhY2V0cy5sbyBc CitARU5BQkxFX0RVQUxfQUJJX1RSVUVACWN4eDExLXNoaW1fZmFjZXRzLmxv CiBhbV9fb2JqZWN0c18zID0gY3R5cGVfY29uZmlndXJlX2NoYXIubG8gY3R5 cGVfbWVtYmVycy5sbwogYW1fX29iamVjdHNfNCA9IGNocm9uby5sbyBjb2Rl Y3Z0LmxvIGNvbmRpdGlvbl92YXJpYWJsZS5sbyBcCi0JY293LXN0ZGV4Y2Vw dC5sbyBjdHlwZS5sbyBkZWJ1Zy5sbyBmdW5jdGV4Y2VwdC5sbyBcCi0JZnVu Y3Rpb25hbC5sbyBmdXRleC5sbyBmdXR1cmUubG8gaGFzaF9jKysweC5sbyBc CisJY293LWxvY2FsZV9pbml0LmxvIGNvdy1zdGRleGNlcHQubG8gY3R5cGUu bG8gY3h4MTEtaGFzaF90cjEubG8gXAorCWN4eDExLWlvc19mYWlsdXJlLmxv IGN4eDExLXN0ZGV4Y2VwdC5sbyBkZWJ1Zy5sbyBcCisJZnVuY3RleGNlcHQu bG8gZnVuY3Rpb25hbC5sbyBmdXRleC5sbyBmdXR1cmUubG8gaGFzaF9jKysw eC5sbyBcCiAJaGFzaHRhYmxlX2MrKzB4LmxvIGlvcy5sbyBpb3NfZXJyY2F0 LmxvIG11dGV4LmxvIHJhbmRvbS5sbyBcCiAJcmVnZXgubG8gc2hhcmVkX3B0 ci5sbyBzbnByaW50Zl9saXRlLmxvIHN5c3RlbV9lcnJvci5sbyBcCiAJdGhy ZWFkLmxvICQoYW1fX29iamVjdHNfMikgJChhbV9fb2JqZWN0c18zKQotQEVO QUJMRV9EVUFMX0FCSV9UUlVFQGFtX19vYmplY3RzXzUgPSBjb3ctZnN0cmVh bS1pbnN0LmxvIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY293LXNzdHJl YW0taW5zdC5sbyBjb3ctc3RyaW5nLWluc3QubG8gXAotQEVOQUJMRV9EVUFM X0FCSV9UUlVFQAljb3ctc3RyaW5nLWlvLWluc3QubG8gXAotQEVOQUJMRV9E VUFMX0FCSV9UUlVFQAljb3ctd3N0cmluZy1pbnN0LmxvIFwKLUBFTkFCTEVf RFVBTF9BQklfVFJVRUAJY293LXdzdHJpbmctaW8taW5zdC5sbyBcCi1ARU5B QkxFX0RVQUxfQUJJX1RSVUVACWN4eDExLWxvY2FsZS1pbnN0LmxvIFwKLUBF TkFCTEVfRFVBTF9BQklfVFJVRUAJY3h4MTEtd2xvY2FsZS1pbnN0LmxvIHNz b19zdHJpbmcubG8KK0BFTkFCTEVfRFVBTF9BQklfVFJVRUBhbV9fb2JqZWN0 c181ID0gc3NvX3N0cmluZy5sbwogQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVf VFJVRUBhbV9fb2JqZWN0c182ID0gJChhbV9fb2JqZWN0c181KSBcCitARU5B QkxFX0VYVEVSTl9URU1QTEFURV9UUlVFQAljb3ctZnN0cmVhbS1pbnN0Lmxv IFwKK0BFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWNvdy1zc3RyZWFt LWluc3QubG8gXAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY293 LXN0cmluZy1pbnN0LmxvIFwKK0BFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RS VUVACWNvdy1zdHJpbmctaW8taW5zdC5sbyBcCitARU5BQkxFX0VYVEVSTl9U RU1QTEFURV9UUlVFQAljb3ctd3N0cmluZy1pbnN0LmxvIFwKK0BFTkFCTEVf RVhURVJOX1RFTVBMQVRFX1RSVUVACWNvdy13c3RyaW5nLWlvLWluc3QubG8g XAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY3h4MTEtbG9jYWxl LWluc3QubG8gXAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY3h4 MTEtd2xvY2FsZS1pbnN0LmxvIFwKIEBFTkFCTEVfRVhURVJOX1RFTVBMQVRF X1RSVUVACWV4dDExLWluc3QubG8gZnN0cmVhbS1pbnN0LmxvIFwKIEBFTkFC TEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWlvcy1pbnN0LmxvIGlvc3RyZWFt LWluc3QubG8gXAogQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJaXN0 cmVhbS1pbnN0LmxvIGxvY2FsZS1pbnN0LmxvIFwKQEAgLTQ2MSwxNCArNDYy LDEwIEBAIGhvc3Rfc291cmNlcyA9IFwKIAljdHlwZV9jb25maWd1cmVfY2hh ci5jYyBcCiAJY3R5cGVfbWVtYmVycy5jYwogCi1ARU5BQkxFX0RVQUxfQUJJ X0ZBTFNFQGN4eDExX2FiaV9zb3VyY2VzID0gCi1ARU5BQkxFX0RVQUxfQUJJ X1RSVUVAY3h4MTFfYWJpX3NvdXJjZXMgPSBcCi1ARU5BQkxFX0RVQUxfQUJJ X1RSVUVACWNvdy1sb2NhbGVfaW5pdC5jYyBcCitARU5BQkxFX0RVQUxfQUJJ X0ZBTFNFQGR1YWxfYWJpX3NvdXJjZXMgPSAKK0BFTkFCTEVfRFVBTF9BQklf VFJVRUBkdWFsX2FiaV9zb3VyY2VzID0gXAogQEVOQUJMRV9EVUFMX0FCSV9U UlVFQAljb3ctc2hpbV9mYWNldHMuY2MgXAotQEVOQUJMRV9EVUFMX0FCSV9U UlVFQAljeHgxMS1oYXNoX3RyMS5jYyBcCi1ARU5BQkxFX0RVQUxfQUJJX1RS VUVACWN4eDExLWlvc19mYWlsdXJlLmNjIFwKLUBFTkFCTEVfRFVBTF9BQklf VFJVRUAJY3h4MTEtc2hpbV9mYWNldHMuY2MgXAotQEVOQUJMRV9EVUFMX0FC SV9UUlVFQAljeHgxMS1zdGRleGNlcHQuY2MKK0BFTkFCTEVfRFVBTF9BQklf VFJVRUAJY3h4MTEtc2hpbV9mYWNldHMuY2MKIAogc291cmNlc19mcmVlc3Rh bmRpbmcgPSBcCiAJbGltaXRzLmNjIFwKQEAgLTQ3OCw4ICs0NzUsMTIgQEAg c291cmNlcyA9IFwKIAljaHJvbm8uY2MgXAogCWNvZGVjdnQuY2MgXAogCWNv bmRpdGlvbl92YXJpYWJsZS5jYyBcCisJY293LWxvY2FsZV9pbml0LmNjIFwK IAljb3ctc3RkZXhjZXB0LmNjIFwKIAljdHlwZS5jYyBcCisJY3h4MTEtaGFz aF90cjEuY2MgXAorCWN4eDExLWlvc19mYWlsdXJlLmNjIFwKKwljeHgxMS1z dGRleGNlcHQuY2MgXAogCWRlYnVnLmNjIFwKIAlmdW5jdGV4Y2VwdC5jYyBc CiAJZnVuY3Rpb25hbC5jYyBcCkBAIC00OTYsMTkgKzQ5NywxMSBAQCBzb3Vy Y2VzID0gXAogCXNucHJpbnRmX2xpdGUuY2MgXAogCXN5c3RlbV9lcnJvci5j YyBcCiAJdGhyZWFkLmNjIFwKLQkke2N4eDExX2FiaV9zb3VyY2VzfSBcCisJ JHtkdWFsX2FiaV9zb3VyY2VzfSBcCiAJJHtob3N0X3NvdXJjZXN9CiAKIEBF TkFCTEVfRFVBTF9BQklfRkFMU0VAZXh0cmFfc3RyaW5nX2luc3Rfc291cmNl cyA9IAogQEVOQUJMRV9EVUFMX0FCSV9UUlVFQGV4dHJhX3N0cmluZ19pbnN0 X3NvdXJjZXMgPSBcCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVACWNvdy1mc3Ry ZWFtLWluc3QuY2MgXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAljb3ctc3N0 cmVhbS1pbnN0LmNjIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY293LXN0 cmluZy1pbnN0LmNjIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY293LXN0 cmluZy1pby1pbnN0LmNjIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY293 LXdzdHJpbmctaW5zdC5jYyBcCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVACWNv dy13c3RyaW5nLWlvLWluc3QuY2MgXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVF QAljeHgxMS1sb2NhbGUtaW5zdC5jYyBcCi1ARU5BQkxFX0RVQUxfQUJJX1RS VUVACWN4eDExLXdsb2NhbGUtaW5zdC5jYyBcCiBARU5BQkxFX0RVQUxfQUJJ X1RSVUVACXNzb19zdHJpbmcuY2MKIAogIyBYVEVNUExBVEVfRkxBR1MgPQpA QCAtNTE3LDYgKzUxMCwxNCBAQCBzb3VyY2VzID0gXAogIyBYVEVNUExBVEVf RkxBR1MgPSAtZm5vLWltcGxpY2l0LXRlbXBsYXRlcwogQEVOQUJMRV9FWFRF Uk5fVEVNUExBVEVfVFJVRUBpbnN0X3NvdXJjZXMgPSBcCiBARU5BQkxFX0VY VEVSTl9URU1QTEFURV9UUlVFQAkkKGV4dHJhX3N0cmluZ19pbnN0X3NvdXJj ZXMpIFwKK0BFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWNvdy1mc3Ry ZWFtLWluc3QuY2MgXAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJ Y293LXNzdHJlYW0taW5zdC5jYyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFU RV9UUlVFQAljb3ctc3RyaW5nLWluc3QuY2MgXAorQEVOQUJMRV9FWFRFUk5f VEVNUExBVEVfVFJVRUAJY293LXN0cmluZy1pby1pbnN0LmNjIFwKK0BFTkFC TEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWNvdy13c3RyaW5nLWluc3QuY2Mg XAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY293LXdzdHJpbmct aW8taW5zdC5jYyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFURV9UUlVFQAlj eHgxMS1sb2NhbGUtaW5zdC5jYyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFU RV9UUlVFQAljeHgxMS13bG9jYWxlLWluc3QuY2MgXAogQEVOQUJMRV9FWFRF Uk5fVEVNUExBVEVfVFJVRUAJZXh0MTEtaW5zdC5jYyBcCiBARU5BQkxFX0VY VEVSTl9URU1QTEFURV9UUlVFQAlmc3RyZWFtLWluc3QuY2MgXAogQEVOQUJM RV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJaW9zLWluc3QuY2MgXApkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctZnN0cmVhbS1pbnN0 LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctZnN0cmVhbS1pbnN0 LmNjCmluZGV4IDA1NjJiYzZjOWNiLi44MTUzMzg3ZGFlYSAxMDA2NDQKLS0t IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctZnN0cmVhbS1pbnN0LmNj CisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LWZzdHJlYW0taW5z dC5jYwpAQCAtMjksMTAgKzI5LDcgQEAKICNkZWZpbmUgX0dMSUJDWFhfVVNF X0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8ZnN0cmVhbT4KIAotI2lmICEgX0dM SUJDWFhfVVNFX0RVQUxfQUJJCi0jIGVycm9yIFRoaXMgZmlsZSBzaG91bGQg bm90IGJlIGNvbXBpbGVkIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCi0jZW5k aWYKLQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogbmFtZXNwYWNl IHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiBfR0xJQkNY WF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgpAQCAtNzYsMyArNzMsNCBAQCBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCiBfR0xJQkNYWF9F TkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCisjZW5kaWYK ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LWxvY2Fs ZV9pbml0LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctbG9jYWxl X2luaXQuY2MKaW5kZXggODUyNzc3NjM0MjcuLjY4MzNmOTAzZjQ3IDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1sb2NhbGVfaW5p dC5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1sb2NhbGVf aW5pdC5jYwpAQCAtMjQsMTAgKzI0LDcgQEAKICNkZWZpbmUgX0dMSUJDWFhf VVNFX0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8bG9jYWxlPgogCi0jaWYgISBf R0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3Vs ZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNl bmRpZgotCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiBuYW1lc3Bh Y2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC0xNjUsNiArMTYyLDcg QEAgbmFtZXNwYWNlCiAjZW5kaWYKICAgfQogCisjaWYgX0dMSUJDWFhfVVNF X0RVQUxfQUJJCiAvLyBUT0RPIHNob3VsZCBiZSBpbiBhbm90aGVyIGZpbGUK ICAgc3RyaW5nCiAgIGxvY2FsZTo6bmFtZSgpIGNvbnN0CkBAIC0xOTAsNiAr MTg4LDggQEAgbmFtZXNwYWNlCiAgICAgICB9CiAgICAgcmV0dXJuIF9fcmV0 OwogICB9CisjZW5kaWYKIAogX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJT SU9OCiB9CisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCmRp ZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zc3RyZWFt LWluc3QuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zc3RyZWFt LWluc3QuY2MKaW5kZXggMDM1YTI2N2Q5ZDguLjc2OTkxNzBkMTNkIDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zc3RyZWFtLWlu c3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3N0cmVh bS1pbnN0LmNjCkBAIC0yNyw4ICsyNyw4IEBACiAvLwogCiAjZGVmaW5lIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkgMAotI2luY2x1ZGUgInNzdHJlYW0taW5z dC5jYyIKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgogCi0jaWYgISBf R0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3Vs ZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KKyNp ZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgaW5jbHVkZSAic3N0cmVh bS1pbnN0LmNjIgogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMv c3JjL2MrKzExL2Nvdy1zdGRleGNlcHQuY2MgYi9saWJzdGRjKystdjMvc3Jj L2MrKzExL2Nvdy1zdGRleGNlcHQuY2MKaW5kZXggOGQxY2M0NjA1ZDQuLjIz Zjg1M2VhZGFjIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzEx L2Nvdy1zdGRleGNlcHQuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysx MS9jb3ctc3RkZXhjZXB0LmNjCkBAIC00MywxMSArNDMsNTIgQEAgX3R4bmFs X3J1bnRpbWVfZXJyb3JfZ2V0X21zZyh2b2lkKiBlKTsKIAogLy8gQWxsIGV4 Y2VwdGlvbiBjbGFzc2VzIHN0aWxsIHVzZSB0aGUgY2xhc3NpYyBDT1cgc3Rk OjpzdHJpbmcuCiAjZGVmaW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgMAot I2RlZmluZSBfR0xJQkNYWF9ERUZJTkVfU1RERVhDRVBUX0NPUFlfT1BTIDEK LSNkZWZpbmUgX19jb3dfc3RyaW5nIF9fY293X3N0cmluZ3h4eAorI2luY2x1 ZGUgPHN0cmluZz4KKworI2lmIF9HTElCQ1hYX1VTRV9EVUFMX0FCSSB8fCBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjIGlmIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKKyMgIGluY2x1ZGUgPGJpdHMvY293X3N0cmluZy5oPgorIyBlbmRp ZgorCituYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVs dCkKK3sKK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCisKKyMg aWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorICB0eXBlZGVmIHN0ZDo6X19z dGRfY293X3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LAor CQkJCXN0ZDo6YWxsb2NhdG9yPGNoYXI+PiBjb3dzdHI7CisjIGVsc2UKKyAg dHlwZWRlZiBzdGQ6OnN0cmluZyBjb3dzdHI7CisjIGVuZGlmCisKKyAgLy8g UmVkZWZpbmUgX19jb3dfc3RyaW5nIHNvIHRoYXQgd2UgY2FuIGRlZmluZSBh bmQgZXhwb3J0IGl0cyBtZW1iZXJzCisgIC8vIGluIHRlcm1zIG9mIHRoZSBD T1cgc3RkOjpzdHJpbmcuCisgIHN0cnVjdCBfX2Nvd19zdHJpbmcKKyAgewor ICAgIHVuaW9uIHsKKyAgICAgIGNvbnN0IGNoYXIqIF9NX3A7CisgICAgICBj aGFyIF9NX2J5dGVzW3NpemVvZihfTV9wKV07CisgICAgICBjb3dzdHIgX01f c3RyOworICAgIH07CisKKyAgICBfX2Nvd19zdHJpbmcoKTsKKyAgICBfX2Nv d19zdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHMpOworICAgIF9fY293X3N0 cmluZyhjb25zdCBjaGFyKik7CisgICAgX19jb3dfc3RyaW5nKGNvbnN0IGNo YXIqLCBzaXplX3QpOworICAgIF9fY293X3N0cmluZyhjb25zdCBfX2Nvd19z dHJpbmcmKSBub2V4Y2VwdDsKKyAgICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9y PShjb25zdCBfX2Nvd19zdHJpbmcmKSBub2V4Y2VwdDsKKyAgICB+X19jb3df c3RyaW5nKCk7CisgICAgX19jb3dfc3RyaW5nKF9fY293X3N0cmluZyYmKSBu b2V4Y2VwdDsKKyAgICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9yPShfX2Nvd19z dHJpbmcmJikgbm9leGNlcHQ7CisgICAgY29uc3QgY2hhciogY19zdHIoKSBj b25zdCBub2V4Y2VwdDsKKyAgfTsKK19HTElCQ1hYX0VORF9OQU1FU1BBQ0Vf VkVSU0lPTgorfQorI2VuZGlmCisKKyNkZWZpbmUgX0dMSUJDWFhfREVGSU5F X1NUREVYQ0VQVF9JTlNUQU5USUFUSU9OUyAxCiAjaW5jbHVkZSA8c3RkZXhj ZXB0PgogI2luY2x1ZGUgPHN5c3RlbV9lcnJvcj4KLSN1bmRlZiBfX2Nvd19z dHJpbmcKIAogbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRl ZmF1bHQpCiB7CkBAIC0xMTQsMzAgKzE1NSwxNiBAQCBfR0xJQkNYWF9CRUdJ Tl9OQU1FU1BBQ0VfVkVSU0lPTgogICAvLyBDb252ZXJ0aW5nIGNvbnN0cnVj dG9yIGZyb20gQ09XIHN0ZDo6c3RyaW5nIHRvIFNTTyBzdHJpbmcuCiAgIF9f c3NvX3N0cmluZzo6X19zc29fc3RyaW5nKGNvbnN0IHN0cmluZyYgcykKICAg OiBfX3Nzb19zdHJpbmcocy5jX3N0cigpLCBzLmxlbmd0aCgpKSB7IH0KKyNl bmRpZgogCi0gIC8vIFJlZGVmaW5lIF9fY293X3N0cmluZyBzbyB0aGF0IHdl IGNhbiBkZWZpbmUgYW5kIGV4cG9ydCBpdHMgbWVtYmVycwotICAvLyBpbiB0 ZXJtcyBvZiB0aGUgQ09XIHN0ZDo6c3RyaW5nLgotICBzdHJ1Y3QgX19jb3df c3RyaW5nCi0gIHsKLSAgICB1bmlvbiB7Ci0gICAgICBjb25zdCBjaGFyKiBf TV9wOwotICAgICAgY2hhciBfTV9ieXRlc1tzaXplb2YoX01fcCldOwotICAg ICAgc3RkOjpzdHJpbmcgX01fc3RyOwotICAgIH07Ci0KLSAgICBfX2Nvd19z dHJpbmcoKTsKLSAgICBfX2Nvd19zdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcm IHMpOwotICAgIF9fY293X3N0cmluZyhjb25zdCBjaGFyKiwgc2l6ZV90IG4p OwotICAgIF9fY293X3N0cmluZyhjb25zdCBfX2Nvd19zdHJpbmcmKSBub2V4 Y2VwdDsKLSAgICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9yPShjb25zdCBfX2Nv d19zdHJpbmcmKSBub2V4Y2VwdDsKLSAgICB+X19jb3dfc3RyaW5nKCk7Ci0g ICAgX19jb3dfc3RyaW5nKF9fY293X3N0cmluZyYmKSBub2V4Y2VwdDsKLSAg ICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9yPShfX2Nvd19zdHJpbmcmJikgbm9l eGNlcHQ7Ci0gIH07Ci0KKyNpZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkgfHwg X0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICBfX2Nvd19zdHJpbmc6Ol9fY293 X3N0cmluZygpIDogX01fc3RyKCkgeyB9CiAKKyNpZiAhX0dMSUJDWFhfVVNF X0NYWDExX0FCSQogICBfX2Nvd19zdHJpbmc6Ol9fY293X3N0cmluZyhjb25z dCBzdGQ6OnN0cmluZyYgcykgOiBfTV9zdHIocykgeyB9CisjZW5kaWYKKwor ICBfX2Nvd19zdHJpbmc6Ol9fY293X3N0cmluZyhjb25zdCBjaGFyKiBzKSA6 IF9NX3N0cihzKSB7IH0KIAogICBfX2Nvd19zdHJpbmc6Ol9fY293X3N0cmlu Zyhjb25zdCBjaGFyKiBzLCBzaXplX3QgbikgOiBfTV9zdHIocywgbikgeyB9 CiAKQEAgLTE1MSw3ICsxNzgsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BB Q0VfVkVSU0lPTgogICAgIHJldHVybiAqdGhpczsKICAgfQogCi0gIF9fY293 X3N0cmluZzo6fl9fY293X3N0cmluZygpIHsgX01fc3RyLn5iYXNpY19zdHJp bmcoKTsgfQorICBfX2Nvd19zdHJpbmc6On5fX2Nvd19zdHJpbmcoKSB7IF9N X3N0ci5+Y293c3RyKCk7IH0KIAogICBfX2Nvd19zdHJpbmc6Ol9fY293X3N0 cmluZyhfX2Nvd19zdHJpbmcmJiBzKSBub2V4Y2VwdAogICA6IF9NX3N0cihz dGQ6Om1vdmUocy5fTV9zdHIpKSB7IH0KQEAgLTE2MywxMiArMTkwLDE3IEBA IF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgcmV0dXJu ICp0aGlzOwogICB9CiAKLSAgc3RhdGljX2Fzc2VydChzaXplb2YoX19jb3df c3RyaW5nKSA9PSBzaXplb2Yoc3RkOjpzdHJpbmcpLAorICBjb25zdCBjaGFy KgorICBfX2Nvd19zdHJpbmc6OmNfc3RyKCkgY29uc3Qgbm9leGNlcHQKKyAg eyByZXR1cm4gX01fc3RyLmNfc3RyKCk7IH0KKworICBzdGF0aWNfYXNzZXJ0 KHNpemVvZihfX2Nvd19zdHJpbmcpID09IHNpemVvZihjb3dzdHIpLAogICAg ICAgICAgICAgICAgICJzaXplb2Yoc3RkOjpzdHJpbmcpIGhhcyBjaGFuZ2Vk Iik7Ci0gIHN0YXRpY19hc3NlcnQoYWxpZ25vZihfX2Nvd19zdHJpbmcpID09 IGFsaWdub2Yoc3RkOjpzdHJpbmcpLAorICBzdGF0aWNfYXNzZXJ0KGFsaWdu b2YoX19jb3dfc3RyaW5nKSA9PSBhbGlnbm9mKGNvd3N0ciksCiAgICAgICAg ICAgICAgICAgImFsaWdub2Yoc3RkOjpzdHJpbmcpIGhhcyBjaGFuZ2VkIik7 Ci0jZW5kaWYKKyNlbmRpZiAvLyBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAK KyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgLy8gUmV0dXJuIGVy cm9yX2NhdGVnb3J5OjptZXNzYWdlKCkgYXMgYW4gU1NPIHN0cmluZwogICBf X3Nzb19zdHJpbmcKICAgZXJyb3JfY2F0ZWdvcnk6Ol9NX21lc3NhZ2UoaW50 IGkpIGNvbnN0CkBAIC0xNzYsMTAgKzIwOCwxMiBAQCBfR0xJQkNYWF9CRUdJ Tl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgIHN0cmluZyBtc2cgPSB0aGlzLT5t ZXNzYWdlKGkpOwogICAgIHJldHVybiB7bXNnLmNfc3RyKCksIG1zZy5sZW5n dGgoKX07CiAgIH0KKyNlbmRpZgogCiBfR0xJQkNYWF9FTkRfTkFNRVNQQUNF X1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCiAKKyNpZiAhIF9HTElCQ1hYX1VT RV9DWFgxMV9BQkkKIC8vIFN1cHBvcnQgZm9yIHRoZSBUcmFuc2FjdGlvbmFs IE1lbW9yeSBUUyAoTjQ1MTQpLgogLy8KIC8vIGxvZ2ljX2Vycm9yIGFuZCBy dW50aW1lX2Vycm9yIGJvdGggY2FycnkgYSBtZXNzYWdlIGluIHRoZSBmb3Jt IG9mIGEgQ09XCkBAIC00NjMsMyArNDk3LDQgQEAgQ1RPUkRUT1IoMTV1bmRl cmZsb3dfZXJyb3IsIHN0ZDo6dW5kZXJmbG93X2Vycm9yLCBydW50aW1lX2Vy cm9yKQogCiAjZW5kaWYgIC8vIF9HTElCQ1hYX1VTRV9DOTlfU1RESU5UCiAj ZW5kaWYgIC8vIF9HTElCQ1hYX1VTRV9XRUFLX1JFRgorI2VuZGlmICAvLyAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9zcmMvYysrMTEvY293LXN0cmluZy1pbnN0LmNjIGIvbGlic3RkYysr LXYzL3NyYy9jKysxMS9jb3ctc3RyaW5nLWluc3QuY2MKaW5kZXggNWEyYjhm ZmE1NjguLjU3YzI4MTI5ZjAwIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMv c3JjL2MrKzExL2Nvdy1zdHJpbmctaW5zdC5jYworKysgYi9saWJzdGRjKyst djMvc3JjL2MrKzExL2Nvdy1zdHJpbmctaW5zdC5jYwpAQCAtMjksMTAgKzI5 LDcgQEAKICNkZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSAwCiAjaW5j bHVkZSAic3RyaW5nLWluc3QuY2MiCiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9E VUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBjb21w aWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlmCi0KKyNpZiBf R0xJQkNYWF9VU0VfRFVBTF9BQkkgJiYgISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCiAjaW5jbHVkZSA8cmFuZG9tPgogCiBuYW1lc3BhY2Ugc3RkIF9HTElC Q1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKQEAgLTQ1LDMgKzQyLDQgQEAgbmFt ZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiAgIHJh bmRvbV9kZXZpY2U6Ol9NX2luaXRfcHJldHIxKGNvbnN0IHN0ZDo6c3RyaW5n JiB0b2tlbikKICAgeyBfTV9pbml0KHRva2VuLmNfc3RyKCksIHRva2VuLmxl bmd0aCgpKTsgfQogfSAvLyBuYW1lc3BhY2UKKyNlbmRpZgpkaWZmIC0tZ2l0 IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3RyaW5nLWlvLWluc3Qu Y2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zdHJpbmctaW8taW5z dC5jYwppbmRleCA1MDViYzlkZDM4NC4uOWFiYzliNDdlNTIgMTAwNjQ0Ci0t LSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0cmluZy1pby1pbnN0 LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0cmluZy1p by1pbnN0LmNjCkBAIC0zMCwxMCArMzAsNyBAQAogI2luY2x1ZGUgPGlzdHJl YW0+CiAjaW5jbHVkZSA8b3N0cmVhbT4KIAotI2lmICEgX0dMSUJDWFhfVVNF X0RVQUxfQUJJCi0jIGVycm9yIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGNv bXBpbGVkIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCi0jZW5kaWYKLQorI2lm ICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogbmFtZXNwYWNlIHN0ZCBfR0xJ QkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiBfR0xJQkNYWF9CRUdJTl9O QU1FU1BBQ0VfVkVSU0lPTgpAQCAtNTcsMyArNTQsNCBAQCBfR0xJQkNYWF9C RUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCiBfR0xJQkNYWF9FTkRfTkFNRVNQ QUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCisjZW5kaWYKZGlmZiAtLWdp dCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmctaW5zdC5j YyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmctaW5zdC5j YwppbmRleCBjZTUzM2VhOGZhNS4uZDNjM2IwYzI5N2UgMTAwNjQ0Ci0tLSBh L2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmctaW5zdC5jYwor KysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy13c3RyaW5nLWluc3Qu Y2MKQEAgLTI5LDEyICsyOSw5IEBACiAjZGVmaW5lIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkgMAogI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+CiAKKyNp ZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICNpZmRlZiBfR0xJQkNYWF9V U0VfV0NIQVJfVAogI2RlZmluZSBDIHdjaGFyX3QKICNpbmNsdWRlICJzdHJp bmctaW5zdC5jYyIKLQotI2lmICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCi0j IGVycm9yIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGNvbXBpbGVkIGZvciB0 aGlzIGNvbmZpZ3VyYXRpb24uCiAjZW5kaWYKLQogI2VuZGlmCmRpZmYgLS1n aXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy13c3RyaW5nLWlvLWlu c3QuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy13c3RyaW5nLWlv LWluc3QuY2MKaW5kZXggNDkzOTRiMGUyNzUuLjBlNmNjNDkwZmE0IDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy13c3RyaW5nLWlv LWluc3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctd3N0 cmluZy1pby1pbnN0LmNjCkBAIC0yOSwxNCArMjksMTEgQEAKICNkZWZpbmUg X0dMSUJDWFhfVVNFX0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8Yml0cy9jKytj b25maWcuaD4KIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogI2lm ZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCiAjaW5jbHVkZSA8b3N0cmVhbT4K ICNpbmNsdWRlIDxpc3RyZWFtPgogCi0jaWYgISBfR0xJQkNYWF9VU0VfRFVB TF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBub3QgYmUgY29tcGls ZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNlbmRpZgotCiBuYW1lc3Bh Y2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC02MSwzICs1OCw0IEBA IF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiBfR0xJQkNYWF9F TkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCiAjZW5kaWYK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9j eHgxMS1oYXNoX3RyMS5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4 MTEtaGFzaF90cjEuY2MKaW5kZXggMjJhNzY4NWVlY2EuLjBiOWZjMjhjZWFh IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLWhh c2hfdHIxLmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEt aGFzaF90cjEuY2MKQEAgLTI1LDkgKzI1LDcgQEAKICNkZWZpbmUgX0dMSUJD WFhfVVNFX0NYWDExX0FCSSAxCiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaWYg ISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNo b3VsZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4K LSNlbmRpZgorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogI2luY2x1 ZGUgPHRyMS9mdW5jdGlvbmFsPgogbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9W SVNJQklMSVRZKGRlZmF1bHQpCkBAIC01NywzICs1NSw1IEBAIG5hbWVzcGFj ZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQogI2VuZGlmCiAg IH0KIH0KKworI2VuZGlmIC8vIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKZGlm ZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEtaW9zX2Zh aWx1cmUuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLWlvc19m YWlsdXJlLmNjCmluZGV4IGUwZTgxNmI0NTNiLi40NmJmZGEzMjlkZSAxMDA2 NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1pb3NfZmFp bHVyZS5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLWlv c19mYWlsdXJlLmNjCkBAIC0zOCw5ICszOCw3IEBACiAjIGRlZmluZSBfKG1z Z2lkKSAgIChtc2dpZCkKICNlbmRpZgogCi0jaWYgISBfR0xJQkNYWF9VU0Vf RFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBub3QgYmUgY29t cGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNlbmRpZgorI2lmIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogbmFtZXNwYWNlIHN0ZCBfR0xJQkNY WF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CkBAIC02Miw3ICs2MCw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgIGlvc19iYXNlOjpm YWlsdXJlOjp3aGF0KCkgY29uc3QgdGhyb3coKQogICB7IHJldHVybiBydW50 aW1lX2Vycm9yOjp3aGF0KCk7IH0KIAotI2lmIF9fY3BwX3J0dGkKKyNpZiBf R0xJQkNYWF9VU0VfRFVBTF9BQkkgJiYgX19jcHBfcnR0aQogICAvLyBUaGVz ZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaW4gc3JjL2MrKzk4L2lvc19mYWls dXJlLmNjCiAgIGV4dGVybiB2b2lkIF9fY29uc3RydWN0X2lvc19mYWlsdXJl KHZvaWQqLCBjb25zdCBjaGFyKik7CiAgIGV4dGVybiB2b2lkIF9fZGVzdHJv eV9pb3NfZmFpbHVyZSh2b2lkKik7CkBAIC0xMTgsNyArMTE2LDcgQEAgX0dM SUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAvLyBPdGhlcndp c2UgcHJvY2VlZCBhcyBub3JtYWwgdG8gc2VlIGlmIHRoZSBoYW5kbGVyIG1h dGNoZXMuCiAgICAgcmV0dXJuIF9fY2xhc3NfdHlwZV9pbmZvOjpfX2RvX3Vw Y2FzdChkc3RfdHlwZSwgb2JqX3B0cik7CiAgIH0KLSNlbHNlIC8vICEgX19j cHBfcnR0aQorI2Vsc2UgLy8gISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkgfHwg ISBfX2NwcF9ydHRpCiAgIHVzaW5nIF9faW9zX2ZhaWx1cmUgPSBpb3M6OmZh aWx1cmU7CiAjZW5kaWYKIApAQCAtMTM2LDMgKzEzNCw1IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIF9HTElCQ1hYX0VORF9OQU1F U1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My9zcmMvYysrMTEvY3h4MTEtbG9jYWxlLWluc3QuY2MgYi9saWJzdGRjKyst djMvc3JjL2MrKzExL2N4eDExLWxvY2FsZS1pbnN0LmNjCmluZGV4IDk0YjE4 MTg4NmQzLi5lMjFjYzU1NDhiZiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYz L3NyYy9jKysxMS9jeHgxMS1sb2NhbGUtaW5zdC5jYworKysgYi9saWJzdGRj KystdjMvc3JjL2MrKzExL2N4eDExLWxvY2FsZS1pbnN0LmNjCkBAIC0yNywx MSArMjcsNSBAQAogLy8gRmFjZXQgaW5zdGFudGlhdGlvbnMgdXNpbmcgbmV3 IEFCSSBzdHJpbmdzLgogCiAjZGVmaW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgMQotI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0jaWYgISBfR0xJ QkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBu b3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNlbmRp ZgogCi0jZGVmaW5lIEMgY2hhcgotI2RlZmluZSBDX2lzX2NoYXIKLSMgaW5j bHVkZSAibG9jYWxlLWluc3QuY2MiCisjaW5jbHVkZSAibG9jYWxlLWluc3Qu Y2MiCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDEx LXN0ZGV4Y2VwdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEt c3RkZXhjZXB0LmNjCmluZGV4IDc0YzA3MGMwNDM5Li4zOGFiMzU2OTJhMyAx MDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1zdGRl eGNlcHQuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1z dGRleGNlcHQuY2MKQEAgLTI5LDkgKzI5LDcgQEAKICNkZWZpbmUgX0dMSUJD WFhfVVNFX0NYWDExX0FCSSAxCiAjaW5jbHVkZSA8c3RkZXhjZXB0PgogCi0j aWYgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxl IHNob3VsZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlv bi4KLSNlbmRpZgorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogbmFt ZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CkBA IC03NiwzICs3NCw1IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJT SU9OCiAKIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBu YW1lc3BhY2UKKworI2VuZGlmIC8vIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkK ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEtd2xv Y2FsZS1pbnN0LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS13 bG9jYWxlLWluc3QuY2MKaW5kZXggMTFmYjE1ZDk2MDIuLmZhZmYyMzZjMWRm IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLXds b2NhbGUtaW5zdC5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4 eDExLXdsb2NhbGUtaW5zdC5jYwpAQCAtMjgsMTEgKzI4LDEwIEBACiAKICNk ZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSAxCiAjaW5jbHVkZSA8Yml0 cy9jKytjb25maWcuaD4KLSNpZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQot IyBlcnJvciBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBjb21waWxlZCBmb3Ig dGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlmCiAKLSNpZmRlZiBfR0xJQkNY WF9VU0VfV0NIQVJfVAotI2RlZmluZSBDIHdjaGFyX3QKLSNpbmNsdWRlICJs b2NhbGUtaW5zdC5jYyIKKyNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisj IGlmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCisjICBkZWZpbmUgQyB3Y2hh cl90CisjICBpbmNsdWRlICJsb2NhbGUtaW5zdC5jYyIKKyMgZW5kaWYKICNl bmRpZgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9sb2Nh bGUtaW5zdC1udW1lcmljLmggYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2xv Y2FsZS1pbnN0LW51bWVyaWMuaAppbmRleCBiOTE3ZmU1ODAyZS4uMjExZTE5 YzdmZjkgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvbG9j YWxlLWluc3QtbnVtZXJpYy5oCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysr MTEvbG9jYWxlLWluc3QtbnVtZXJpYy5oCkBAIC0zMCw3ICszMCw3IEBACiAK IG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQog ewotI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJD WFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQog Ly8gdXNlX2ZhY2V0IGFuZCBoYXNfZmFjZXQgaW5zdGFudGlhdGlvbnMKIElO U1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09SUyhudW1fZ2V0PEM+KTsKIElOU1RB TlRJQVRFX0ZBQ0VUX0FDQ0VTU09SUyhudW1fcHV0PEM+KTsKQEAgLTM4LDcg KzM4LDcgQEAgSU5TVEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKG51bV9wdXQ8 Qz4pOwogCiBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfTERCTAogCi0jaWYg ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYgISBfR0xJQkNYWF9VU0Vf Q1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAgIHRlbXBs YXRlIGNsYXNzIG51bV9nZXQ8QywgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxDPiA+ OwogICB0ZW1wbGF0ZSBjbGFzcyBudW1fcHV0PEMsIG9zdHJlYW1idWZfaXRl cmF0b3I8Qz4gPjsKICNlbmRpZgpAQCAtODgsNyArODgsNyBAQCBfR0xJQkNY WF9CRUdJTl9OQU1FU1BBQ0VfTERCTAogCQkgICB1bnNpZ25lZCBsb25nIGxv bmcmKSBjb25zdDsKICNlbmRpZgogCi0jaWYgISBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dM SUJDWFhfVVNFX0RVQUxfQUJJCiAgIC8vIG51bV9wdXQgbWVtYmVyIGZ1bmN0 aW9uIHRlbXBsYXRlcwogICB0ZW1wbGF0ZQogICAgIG9zdHJlYW1idWZfaXRl cmF0b3I8Qz4KZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEv bG9jYWxlLWluc3QuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2xvY2Fs ZS1pbnN0LmNjCmluZGV4IDNhNWM2ODQ0ZjFiLi5lZTMzNzVkNzA0MCAxMDA2 NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9sb2NhbGUtaW5zdC5j YworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2xvY2FsZS1pbnN0LmNj CkBAIC0zNSw4ICszNSwxNyBAQAogIyBkZWZpbmUgX0dMSUJDWFhfVVNFX0NY WDExX0FCSSAwCiAjZW5kaWYKIAotI2luY2x1ZGUgPGxvY2FsZT4KKyNpZiBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjIGRlZmluZSBfR0xJQkNYWF9CVUlM RF9DWFgxMV9BQkkgMQorI2Vsc2UKKyMgZGVmaW5lIF9HTElCQ1hYX0JVSUxE X0NYWDExX0FCSSAwCisjZW5kaWYKKworI2luY2x1ZGUgPGJpdHMvYysrY29u ZmlnLmg+CiAKKyNpZiBfR0xJQkNYWF9CVUlMRF9DWFgxMV9BQkkgPT0gX0dM SUJDWFhfVVNFX0NYWDExX0FCSQorCisjaW5jbHVkZSA8bG9jYWxlPgogLy8g SW5zdGFudGlhdGlvbiBjb25maWd1cmF0aW9uLgogI2lmbmRlZiBDCiAjIGRl ZmluZSBDIGNoYXIKQEAgLTUyLDcgKzYxLDcgQEAgbmFtZXNwYWNlIHN0ZCBf R0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiBfR0xJQkNYWF9CRUdJTl9O QU1FU1BBQ0VfVkVSU0lPTgogCiAgIC8vIG1vbmV5cHVuY3QsIG1vbmV5X2dl dCwgYW5kIG1vbmV5X3B1dAotI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FC SQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hY X1VTRV9EVUFMX0FCSQogICB0ZW1wbGF0ZSBzdHJ1Y3QgX19tb25leXB1bmN0 X2NhY2hlPEMsIGZhbHNlPjsKICAgdGVtcGxhdGUgc3RydWN0IF9fbW9uZXlw dW5jdF9jYWNoZTxDLCB0cnVlPjsKICNlbmRpZgpAQCAtNjQsNyArNzMsNyBA QCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ1hYMTEKIF9HTElCQ1hYX0VO RF9OQU1FU1BBQ0VfQ1hYMTEKIAogICAvLyBudW1wdW5jdCwgbnVtcHVuY3Rf YnluYW1lLCBudW1fZ2V0LCBhbmQgbnVtX3B1dAotI2lmICEgX0dMSUJDWFhf VVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8 fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICB0ZW1wbGF0ZSBzdHJ1Y3Qg X19udW1wdW5jdF9jYWNoZTxDPjsKICNlbmRpZgogX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX0NYWDExCkBAIC03Myw3ICs4Miw3IEBAIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9DWFgxMQogX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9D WFgxMQogCiAgIC8vIHRpbWVfZ2V0IGFuZCB0aW1lX3B1dAotI2lmICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICB0ZW1wbGF0ZSBj bGFzcyBfX3RpbWVwdW5jdDxDPjsKICAgdGVtcGxhdGUgc3RydWN0IF9fdGlt ZXB1bmN0X2NhY2hlPEM+OwogICB0ZW1wbGF0ZSBjbGFzcyB0aW1lX3B1dDxD LCBvc3RyZWFtYnVmX2l0ZXJhdG9yPEM+ID47CkBAIC05NywxMyArMTA2LDEz IEBAIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfQ1hYMTEKICAgY3R5cGVfYnlu YW1lPEM+OjpjdHlwZV9ieW5hbWUoY29uc3Qgc3RyaW5nJiBfX3MsIHNpemVf dCBfX3JlZnMpCiAgIDogY3R5cGVfYnluYW1lKF9fcy5jX3N0cigpLCBfX3Jl ZnMpIHsgfQogCi0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYg ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RV QUxfQUJJCiAgIGlubGluZSB0ZW1wbGF0ZSBjbGFzcyBfX2N0eXBlX2Fic3Ry YWN0X2Jhc2U8Qz47CiAgIHRlbXBsYXRlIGNsYXNzIGN0eXBlX2J5bmFtZTxD PjsKICNlbmRpZgogCiAgIC8vIGNvZGVjdnQKLSNpZiAhIF9HTElCQ1hYX1VT RV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwg ISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKICAgaW5saW5lIHRlbXBsYXRlIGNs YXNzIF9fY29kZWN2dF9hYnN0cmFjdF9iYXNlPEMsIGNoYXIsIG1ic3RhdGVf dD47CiAgIHRlbXBsYXRlIGNsYXNzIGNvZGVjdnRfYnluYW1lPEMsIGNoYXIs IG1ic3RhdGVfdD47CiAjZWxzZQpAQCAtMTE4LDcgKzEyNyw3IEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9DWFgxMQogX0dMSUJDWFhfRU5EX05BTUVT UEFDRV9DWFgxMQogCiAvLyB1c2VfZmFjZXQgYW5kIGhhc19mYWNldCBpbnN0 YW50aWF0aW9ucwotI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2lm ICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9E VUFMX0FCSQogSU5TVEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKGN0eXBlPEM+ KTsKIElOU1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09SUyhjb2RlY3Z0PEMsIGNo YXIsIG1ic3RhdGVfdD4pOwogI2VuZGlmCkBAIC0xMjcsMTQgKzEzNiwxNCBA QCBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlMobnVtcHVuY3Q8Qz4pOwog SU5TVEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKG1vbmV5cHVuY3Q8QywgZmFs c2U+KTsKIC8vIE5vIGV4cGxpY2l0IGluc3RhbnRpYXRpb24gb2YgaGFzX2Zh Y2V0PG1vbmV5cHVuY3Q8QywgdHJ1ZT4+IGZvciBzb21lIHJlYXNvbi4KIElO U1RBTlRJQVRFX1VTRV9GQUNFVCAgICAgIChtb25leXB1bmN0PEMsIHRydWU+ KTsKLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkK IElOU1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09SUyhfX3RpbWVwdW5jdDxDPik7 CiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlModGltZV9wdXQ8Qz4pOwog I2VuZGlmCiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlModGltZV9nZXQ8 Qz4pOwogSU5TVEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKG1lc3NhZ2VzPEM+ KTsKIAotI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FC SQogICAvLyBsb2NhbGUgZnVuY3Rpb25zLgogICB0ZW1wbGF0ZQogICAgIEMq CkBAIC0xNjMsMyArMTcyLDUgQEAgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9W RVJTSU9OCiAjaWYgZGVmaW5lZCBfR0xJQkNYWF9MT05HX0RPVUJMRV9DT01Q QVQgJiYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAjaW5jbHVkZSAiY29t cGF0aWJpbGl0eS1sZGJsLWZhY2V0cy1hbGlhc2VzLmgiCiAjZW5kaWYgLy8g X0dMSUJDWFhfTE9OR19ET1VCTEVfQ09NUEFUCisKKyNlbmRpZiAvLyAgX0dM SUJDWFhfQlVJTERfQ1hYMTFfQUJJID09IF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvc3RyaW5n LWluc3QuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL3N0cmluZy1pbnN0 LmNjCmluZGV4IGRkYWFmYzA4MTk5Li5mMjkxNzZkZmM4OCAxMDA2NDQKLS0t IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9zdHJpbmctaW5zdC5jYworKysg Yi9saWJzdGRjKystdjMvc3JjL2MrKzExL3N0cmluZy1pbnN0LmNjCkBAIC0z NSw2ICszNSwxMiBAQAogIyBkZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FC SSAxCiAjZW5kaWYKIAorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMg ZGVmaW5lIF9HTElCQ1hYX0RFRklOSU5HX0NYWDExX0FCSV9JTlNUQU5USUFU SU9OUyAxCisjZWxzZQorIyBkZWZpbmUgX0dMSUJDWFhfREVGSU5JTkdfQ1hY MTFfQUJJX0lOU1RBTlRJQVRJT05TIDAKKyNlbmRpZgorCiAvLyBQcmV2ZW50 IHRoZSBiYXNpY19zdHJpbmcoY29uc3QgX0NoYXJUKiwgY29uc3QgX0FsbG9j JikgYW5kCiAvLyBiYXNpY19zdHJpbmcoc2l6ZV90eXBlLCBfQ2hhclQsIGNv bnN0IF9BbGxvYyYpIGNvbnN0cnVjdG9ycyBmcm9tIGJlaW5nCiAvLyByZXBs YWNlZCBieSBjb25zdHJhaW5lZCBmdW5jdGlvbiB0ZW1wbGF0ZXMsIHNvIHRo YXQgd2UgaW5zdGFudGlhdGUgdGhlCkBAIC00NSw2ICs1MSwyOSBAQAogCiAj aW5jbHVkZSA8c3RyaW5nPgogCisjaWYgX0dMSUJDWFhfVVNFX0RVQUxfQUJJ IHx8IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpbmNsdWRlIDxzdGRleGNl cHQ+CisKKyNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjIGluY2x1ZGUg PGJpdHMvY293X3N0cmluZy5oPgordHlwZWRlZiBzdGQ6Ol9fc3RkX2Nvd19z dHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwKKwkJCSAgICAg IHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiBjb3dzdHI7CisjZWxzZQordHlwZWRl ZiBzdGQ6OnN0cmluZyBjb3dzdHI7CisjZW5kaWYKKworc3RhdGljX2Fzc2Vy dChzaXplb2Yoc3RkOjpfX2Nvd19zdHJpbmcpID09IHNpemVvZihjb3dzdHIp LAorCSAgICAgICJzaXplb2Yoc3RkOjpzdHJpbmcpIGhhcyBjaGFuZ2VkIik7 CitzdGF0aWNfYXNzZXJ0KGFsaWdub2Yoc3RkOjpfX2Nvd19zdHJpbmcpID09 IGFsaWdub2YoY293c3RyKSwKKwkgICAgICAiYWxpZ25vZihzdGQ6OnN0cmlu ZykgaGFzIGNoYW5nZWQiKTsKKyNlbmRpZiAvLyBfR0xJQkNYWF9VU0VfRFVB TF9BQkkgfHwgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorCisjaWYgX0dMSUJD WFhfVVNFX0NYWDExX0FCSSAmJiAhIF9HTElCQ1hYX0RFRklOSU5HX0NYWDEx X0FCSV9JTlNUQU5USUFUSU9OUworIyBkZWZpbmUgX0dMSUJDWFhfREVGSU5J TkdfQ09XX1NUUklOR19JTlNUQU5USUFUSU9OUyAxCisjIGluY2x1ZGUgPGJp dHMvY293X3N0cmluZy5oPgorIyBkZWZpbmUgYmFzaWNfc3RyaW5nIF9fc3Rk X2Nvd19zdHJpbmcKKyNlbmRpZgorCiAvLyBJbnN0YW50aWF0aW9uIGNvbmZp Z3VyYXRpb24uCiAjaWZuZGVmIEMKICMgZGVmaW5lIEMgY2hhcgpAQCAtNTQs MTIgKzgzLDE0IEBAIG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElU WShkZWZhdWx0KQogewogX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJ T04KIAotICB0eXBlZGVmIGJhc2ljX3N0cmluZzxDPiBTOwordHlwZWRlZiBi YXNpY19zdHJpbmc8Qywgc3RkOjpjaGFyX3RyYWl0czxDPiwgc3RkOjphbGxv Y2F0b3I8Qz4+IFM7CiAKLSAgdGVtcGxhdGUgY2xhc3MgYmFzaWNfc3RyaW5n PEM+OworICB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19zdHJpbmc8Qywgc3RkOjpj aGFyX3RyYWl0czxDPiwgc3RkOjphbGxvY2F0b3I8Qz4+OworI2lmICEgX0dM SUJDWFhfREVGSU5JTkdfQ09XX1NUUklOR19JTlNUQU5USUFUSU9OUwogICB0 ZW1wbGF0ZSBTIG9wZXJhdG9yKyhjb25zdCBDKiwgY29uc3QgUyYpOwogICB0 ZW1wbGF0ZSBTIG9wZXJhdG9yKyhDLCBjb25zdCBTJik7CiAgIHRlbXBsYXRl IFMgb3BlcmF0b3IrKGNvbnN0IFMmLCBjb25zdCBTJik7CisjZW5kaWYKIAog ICAvLyBPbmx5IG9uZSB0ZW1wbGF0ZSBrZXl3b3JkIGFsbG93ZWQgaGVyZS4K ICAgLy8gU2VlIGNvcmUgaXNzdWUgIzQ2IChOQUQpCkBAIC03Myw3ICsxMDQs NyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICB0ZW1w bGF0ZQogICAgIFM6OmJhc2ljX3N0cmluZyhTOjppdGVyYXRvciwgUzo6aXRl cmF0b3IsIGNvbnN0IGFsbG9jYXRvcjxDPiYpOwogCi0jaWYgX0dMSUJDWFhf VVNFX0NYWDExX0FCSQorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgJiYg ISBfR0xJQkNYWF9ERUZJTklOR19DT1dfU1RSSU5HX0lOU1RBTlRJQVRJT05T CiAgIHRlbXBsYXRlCiAgICAgdm9pZAogICAgIFM6Ol9NX2NvbnN0cnVjdChT OjppdGVyYXRvciwgUzo6aXRlcmF0b3IsIGZvcndhcmRfaXRlcmF0b3JfdGFn KTsKQEAgLTkxLDcgKzEyMiw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFD RV9WRVJTSU9OCiAgICAgdm9pZAogICAgIFM6Ol9NX2NvbnN0cnVjdChjb25z dCBDKiwgY29uc3QgQyosIGZvcndhcmRfaXRlcmF0b3JfdGFnKTsKIAotI2Vs c2UgLy8gIV9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNlbHNlIC8vICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSSB8fCBfR0xJQkNYWF9ERUZJTklOR19DT1df U1RSSU5HX0lOU1RBTlRJQVRJT05TCiAKICAgdGVtcGxhdGUKICAgICBDKgpA QCAtMTExLDYgKzE0Miw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9W RVJTSU9OCiBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8g bmFtZXNwYWNlCiAKKyNpZiAhIF9HTElCQ1hYX0RFRklOSU5HX0NPV19TVFJJ TkdfSU5TVEFOVElBVElPTlMKIG5hbWVzcGFjZSBfX2dudV9jeHggX0dMSUJD WFhfVklTSUJJTElUWShkZWZhdWx0KQogewogX0dMSUJDWFhfQkVHSU5fTkFN RVNQQUNFX1ZFUlNJT04KQEAgLTEyMSwzICsxNTMsNCBAQCBfR0xJQkNYWF9C RUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCiBfR0xJQkNYWF9FTkRfTkFNRVNQ QUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCisjZW5kaWYKZGlmZiAtLWdp dCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvd2xvY2FsZS1pbnN0LmNjIGIv bGlic3RkYysrLXYzL3NyYy9jKysxMS93bG9jYWxlLWluc3QuY2MKaW5kZXgg ZGMyZDIzNDkwNTUuLmI1Yzc5OGJmZTY0IDEwMDY0NAotLS0gYS9saWJzdGRj KystdjMvc3JjL2MrKzExL3dsb2NhbGUtaW5zdC5jYworKysgYi9saWJzdGRj KystdjMvc3JjL2MrKzExL3dsb2NhbGUtaW5zdC5jYwpAQCAtMzAsNyArMzAs OSBAQAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAKICNpbmNs dWRlIDxiaXRzL2MrK2NvbmZpZy5oPgogCi0jaWZkZWYgX0dMSUJDWFhfVVNF X1dDSEFSX1QKLSNkZWZpbmUgQyB3Y2hhcl90Ci0jaW5jbHVkZSAibG9jYWxl LWluc3QuY2MiCi0jZW5kaWYgLy8gX0dMSUJDWFhfVVNFX1dDSEFSX1QKKyNp ZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgaWZkZWYgX0dMSUJDWFhf VVNFX1dDSEFSX1QKKyMgIGRlZmluZSBDIHdjaGFyX3QKKyMgIGluY2x1ZGUg ImxvY2FsZS1pbnN0LmNjIgorIyBlbmRpZiAvLyBfR0xJQkNYWF9VU0VfV0NI QVJfVAorI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2Mr Kzk4L01ha2VmaWxlLmFtIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9NYWtl ZmlsZS5hbQppbmRleCAyODRmZmRhMzQ0My4uZWIyNDMyNWFmNjcgMTAwNjQ0 Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvTWFrZWZpbGUuYW0KKysr IGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9NYWtlZmlsZS5hbQpAQCAtOTAs MTMgKzkwLDYgQEAgYysrbG9jYWxlLmNjOiAke2dsaWJjeHhfc3JjZGlyfS8k KENMT0NBTEVfQ0MpCiBiYXNpY19maWxlLmNjOiAke2dsaWJjeHhfc3JjZGly fS8kKEJBU0lDX0ZJTEVfQ0MpCiAJJChMTl9TKSAke2dsaWJjeHhfc3JjZGly fS8kKEJBU0lDX0ZJTEVfQ0MpIC4vJEAgfHwgdHJ1ZQogCi1pZiBFTkFCTEVf RFVBTF9BQkkKLWN4eDExX2FiaV9zb3VyY2VzID0gXAotCWNvdy1pc3RyZWFt LXN0cmluZy5jYwotZWxzZQotY3h4MTFfYWJpX3NvdXJjZXMgPQotZW5kaWYK LQogaWYgRU5BQkxFX0VYVEVSTl9URU1QTEFURQogIyBYVEVNUExBVEVfRkxB R1MgPSAtZm5vLWltcGxpY2l0LXRlbXBsYXRlcwogaW5zdF9zb3VyY2VzID0g XApAQCAtMTE4LDYgKzExMSw3IEBAIHNvdXJjZXMgPSBcCiAJbXRfYWxsb2Nh dG9yLmNjIFwKIAljb2RlY3Z0LmNjIFwKIAljb21wbGV4X2lvLmNjIFwKKwlj b3ctaXN0cmVhbS1zdHJpbmcuY2MgXAogCWdsb2JhbHNfaW8uY2MgXAogCWhh c2hfdHIxLmNjIFwKIAloYXNodGFibGVfdHIxLmNjIFwKQEAgLTE0Miw3ICsx MzYsNiBAQCBzb3VyY2VzID0gXAogCWlzdHJlYW0tc3RyaW5nLmNjIFwKIAlz dHJlYW1idWYuY2MgXAogCXZhbGFycmF5LmNjIFwKLQkke2N4eDExX2FiaV9z b3VyY2VzfSBcCiAJJHtob3N0X3NvdXJjZXN9IFwKIAkke2hvc3Rfc291cmNl c19leHRyYX0KIApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKys5 OC9NYWtlZmlsZS5pbiBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvTWFrZWZp bGUuaW4KaW5kZXggYTEwMGRmNzdhNmQuLmQyZWQyYTIyMWYyIDEwMDY0NAot LS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L01ha2VmaWxlLmluCisrKyBi L2xpYnN0ZGMrKy12My9zcmMvYysrOTgvTWFrZWZpbGUuaW4KQEAgLTEyMSwz MSArMTIxLDMwIEBAIENPTkZJR19DTEVBTl9GSUxFUyA9CiBDT05GSUdfQ0xF QU5fVlBBVEhfRklMRVMgPQogTFRMSUJSQVJJRVMgPSAkKG5vaW5zdF9MVExJ QlJBUklFUykKIGxpYmNfXzk4Y29udmVuaWVuY2VfbGFfTElCQUREID0KLUBF TkFCTEVfRFVBTF9BQklfVFJVRUBhbV9fb2JqZWN0c18xID0gY293LWlzdHJl YW0tc3RyaW5nLmxvCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVAYW1fX29iamVj dHNfMiA9IGNvbGxhdGVfbWVtYmVyc19jb3cubG8gXAorQEVOQUJMRV9EVUFM X0FCSV9UUlVFQGFtX19vYmplY3RzXzEgPSBjb2xsYXRlX21lbWJlcnNfY293 LmxvIFwKIEBFTkFCTEVfRFVBTF9BQklfVFJVRUAJbWVzc2FnZXNfbWVtYmVy c19jb3cubG8gXAogQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAltb25ldGFyeV9t ZW1iZXJzX2Nvdy5sbyBcCiBARU5BQkxFX0RVQUxfQUJJX1RSVUVACW51bWVy aWNfbWVtYmVyc19jb3cubG8KLWFtX19vYmplY3RzXzMgPSAkKGFtX19vYmpl Y3RzXzIpIGNvZGVjdnRfbWVtYmVycy5sbyBjb2xsYXRlX21lbWJlcnMubG8g XAorYW1fX29iamVjdHNfMiA9ICQoYW1fX29iamVjdHNfMSkgY29kZWN2dF9t ZW1iZXJzLmxvIGNvbGxhdGVfbWVtYmVycy5sbyBcCiAJbWVzc2FnZXNfbWVt YmVycy5sbyBtb25ldGFyeV9tZW1iZXJzLmxvIG51bWVyaWNfbWVtYmVycy5s byBcCiAJdGltZV9tZW1iZXJzLmxvCi1ARU5BQkxFX0VYVEVSTl9URU1QTEFU RV9UUlVFQGFtX19vYmplY3RzXzQgPSBhbGxvY2F0b3ItaW5zdC5sbyBcCitA RU5BQkxFX0VYVEVSTl9URU1QTEFURV9UUlVFQGFtX19vYmplY3RzXzMgPSBh bGxvY2F0b3ItaW5zdC5sbyBcCiBARU5BQkxFX0VYVEVSTl9URU1QTEFURV9U UlVFQAljb25jZXB0LWluc3QubG8gZXh0LWluc3QubG8gXAogQEVOQUJMRV9F WFRFUk5fVEVNUExBVEVfVFJVRUAJbWlzYy1pbnN0LmxvCi1hbV9fb2JqZWN0 c181ID0gcGFyYWxsZWxfc2V0dGluZ3MubG8KLWFtX19vYmplY3RzXzYgPSBi YXNpY19maWxlLmxvIGMrK2xvY2FsZS5sbyAkKGFtX19vYmplY3RzXzQpIFwK LQkkKGFtX19vYmplY3RzXzUpCi1hbV9fb2JqZWN0c183ID0gYml0bWFwX2Fs bG9jYXRvci5sbyBwb29sX2FsbG9jYXRvci5sbyBtdF9hbGxvY2F0b3IubG8g XAotCWNvZGVjdnQubG8gY29tcGxleF9pby5sbyBnbG9iYWxzX2lvLmxvIGhh c2hfdHIxLmxvIFwKLQloYXNodGFibGVfdHIxLmxvIGlvc19mYWlsdXJlLmxv IGlvc19pbml0LmxvIGlvc19sb2NhbGUubG8gXAotCWxpc3QubG8gbGlzdC1h dXgubG8gbGlzdC1hdXgtMi5sbyBsaXN0X2Fzc29jaWF0ZWQubG8gXAotCWxp c3RfYXNzb2NpYXRlZC0yLmxvIGxvY2FsZS5sbyBsb2NhbGVfaW5pdC5sbyBs b2NhbGVfZmFjZXRzLmxvIFwKLQlsb2NhbGVuYW1lLmxvIG1hdGhfc3R1YnNf ZmxvYXQubG8gbWF0aF9zdHVic19sb25nX2RvdWJsZS5sbyBcCi0Jc3RkZXhj ZXB0LmxvIHN0cnN0cmVhbS5sbyB0cmVlLmxvIGlzdHJlYW0ubG8gaXN0cmVh bS1zdHJpbmcubG8gXAotCXN0cmVhbWJ1Zi5sbyB2YWxhcnJheS5sbyAkKGFt X19vYmplY3RzXzEpICQoYW1fX29iamVjdHNfMykgXAotCSQoYW1fX29iamVj dHNfNikKK2FtX19vYmplY3RzXzQgPSBwYXJhbGxlbF9zZXR0aW5ncy5sbwor YW1fX29iamVjdHNfNSA9IGJhc2ljX2ZpbGUubG8gYysrbG9jYWxlLmxvICQo YW1fX29iamVjdHNfMykgXAorCSQoYW1fX29iamVjdHNfNCkKK2FtX19vYmpl Y3RzXzYgPSBiaXRtYXBfYWxsb2NhdG9yLmxvIHBvb2xfYWxsb2NhdG9yLmxv IG10X2FsbG9jYXRvci5sbyBcCisJY29kZWN2dC5sbyBjb21wbGV4X2lvLmxv IGNvdy1pc3RyZWFtLXN0cmluZy5sbyBnbG9iYWxzX2lvLmxvIFwKKwloYXNo X3RyMS5sbyBoYXNodGFibGVfdHIxLmxvIGlvc19mYWlsdXJlLmxvIGlvc19p bml0LmxvIFwKKwlpb3NfbG9jYWxlLmxvIGxpc3QubG8gbGlzdC1hdXgubG8g bGlzdC1hdXgtMi5sbyBcCisJbGlzdF9hc3NvY2lhdGVkLmxvIGxpc3RfYXNz b2NpYXRlZC0yLmxvIGxvY2FsZS5sbyBcCisJbG9jYWxlX2luaXQubG8gbG9j YWxlX2ZhY2V0cy5sbyBsb2NhbGVuYW1lLmxvIFwKKwltYXRoX3N0dWJzX2Zs b2F0LmxvIG1hdGhfc3R1YnNfbG9uZ19kb3VibGUubG8gc3RkZXhjZXB0Lmxv IFwKKwlzdHJzdHJlYW0ubG8gdHJlZS5sbyBpc3RyZWFtLmxvIGlzdHJlYW0t c3RyaW5nLmxvIHN0cmVhbWJ1Zi5sbyBcCisJdmFsYXJyYXkubG8gJChhbV9f b2JqZWN0c18yKSAkKGFtX19vYmplY3RzXzUpCiBAR0xJQkNYWF9IT1NURURf VFJVRUBhbV9saWJjX185OGNvbnZlbmllbmNlX2xhX09CSkVDVFMgPSAgXAot QEdMSUJDWFhfSE9TVEVEX1RSVUVACSQoYW1fX29iamVjdHNfNykKK0BHTElC Q1hYX0hPU1RFRF9UUlVFQAkkKGFtX19vYmplY3RzXzYpCiBsaWJjX185OGNv bnZlbmllbmNlX2xhX09CSkVDVFMgPSAkKGFtX2xpYmNfXzk4Y29udmVuaWVu Y2VfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkK IGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCkBAIC00 NzEsMTAgKzQ3MCw2IEBAIGhvc3Rfc291cmNlc19leHRyYSA9IFwKIAliYXNp Y19maWxlLmNjIGMrK2xvY2FsZS5jYyBcCiAJJHtpbnN0X3NvdXJjZXN9ICR7 cGFyYWxsZWxfc291cmNlc30KIAotQEVOQUJMRV9EVUFMX0FCSV9GQUxTRUBj eHgxMV9hYmlfc291cmNlcyA9IAotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQGN4 eDExX2FiaV9zb3VyY2VzID0gXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAlj b3ctaXN0cmVhbS1zdHJpbmcuY2MKLQogIyBYVEVNUExBVEVfRkxBR1MgPQog QEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfRkFMU0VAaW5zdF9zb3VyY2VzID0g CiAKQEAgLTQ5NCw2ICs0ODksNyBAQCBzb3VyY2VzID0gXAogCW10X2FsbG9j YXRvci5jYyBcCiAJY29kZWN2dC5jYyBcCiAJY29tcGxleF9pby5jYyBcCisJ Y293LWlzdHJlYW0tc3RyaW5nLmNjIFwKIAlnbG9iYWxzX2lvLmNjIFwKIAlo YXNoX3RyMS5jYyBcCiAJaGFzaHRhYmxlX3RyMS5jYyBcCkBAIC01MTgsNyAr NTE0LDYgQEAgc291cmNlcyA9IFwKIAlpc3RyZWFtLXN0cmluZy5jYyBcCiAJ c3RyZWFtYnVmLmNjIFwKIAl2YWxhcnJheS5jYyBcCi0JJHtjeHgxMV9hYmlf c291cmNlc30gXAogCSR7aG9zdF9zb3VyY2VzfSBcCiAJJHtob3N0X3NvdXJj ZXNfZXh0cmF9CiAKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysr OTgvY293LWlzdHJlYW0tc3RyaW5nLmNjIGIvbGlic3RkYysrLXYzL3NyYy9j Kys5OC9jb3ctaXN0cmVhbS1zdHJpbmcuY2MKaW5kZXggNDA1ZjllY2I3ODEu LmYwMGNiYzA5ZjY5IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2Mr Kzk4L2Nvdy1pc3RyZWFtLXN0cmluZy5jYworKysgYi9saWJzdGRjKystdjMv c3JjL2MrKzk4L2Nvdy1pc3RyZWFtLXN0cmluZy5jYwpAQCAtMjcsNCArMjcs OCBAQAogLy8KIAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAK LSNpbmNsdWRlICJpc3RyZWFtLXN0cmluZy5jYyIKKyNpbmNsdWRlIDxiaXRz L2MrK2NvbmZpZy5oPgorCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ CisjIGluY2x1ZGUgImlzdHJlYW0tc3RyaW5nLmNjIgorI2VuZGlmCmRpZmYg LS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L2hhc2hfdHIxLmNjIGIv bGlic3RkYysrLXYzL3NyYy9jKys5OC9oYXNoX3RyMS5jYwppbmRleCBlMTMy YzAxYmY4ZS4uYTJjZDJjNTA5ZjMgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12 My9zcmMvYysrOTgvaGFzaF90cjEuY2MKKysrIGIvbGlic3RkYysrLXYzL3Ny Yy9jKys5OC9oYXNoX3RyMS5jYwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j bHVkZSAiaGFzaC1sb25nLWRvdWJsZS10cjEtYXV4LmNjIgogCisjaWYgISBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hY X1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKICAgbmFtZXNwYWNlIHRyMQpAQCAt NTcsMyArNTgsNCBAQCBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJ VFkoZGVmYXVsdCkKICNlbmRpZgogICB9CiB9CisjZW5kaWYgLy8gISBfR0xJ QkNYWF9VU0VfQ1hYMTFfQUJJCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMv c3JjL2MrKzk4L2lvc19mYWlsdXJlLmNjIGIvbGlic3RkYysrLXYzL3NyYy9j Kys5OC9pb3NfZmFpbHVyZS5jYwppbmRleCAyNzQ3NmVjY2JkYi4uNDMyOTE4 NzExOTYgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaW9z X2ZhaWx1cmUuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9pb3Nf ZmFpbHVyZS5jYwpAQCAtMjksMjIgKzI5LDI0IEBACiAjZGVmaW5lIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkgMAogI2luY2x1ZGUgPGlvcz4KIAotI2lmIF9H TElCQ1hYX1VTRV9EVUFMX0FCSSAmJiBfX2NwcF9ydHRpCi0jaW5jbHVkZSA8 Y3h4YWJpLmg+Ci0jaW5jbHVkZSA8dHlwZWluZm8+Ci0jZW5kaWYKLQotI2lm ZGVmIF9HTElCQ1hYX1VTRV9OTFMKLSMgaW5jbHVkZSA8bGliaW50bC5oPgot IyBkZWZpbmUgXyhtc2dpZCkgICBnZXR0ZXh0IChtc2dpZCkKLSNlbHNlCi0j IGRlZmluZSBfKG1zZ2lkKSAgIChtc2dpZCkKLSNlbmRpZgorI2lmICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FC SQorIyBpZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkgJiYgX19jcHBfcnR0aQor IyAgaW5jbHVkZSA8Y3h4YWJpLmg+CisjICBpbmNsdWRlIDx0eXBlaW5mbz4K KyMgZW5kaWYKKworIyBpZmRlZiBfR0xJQkNYWF9VU0VfTkxTCisjICBpbmNs dWRlIDxsaWJpbnRsLmg+CisjICBkZWZpbmUgXyhtc2dpZCkgICBnZXR0ZXh0 IChtc2dpZCkKKyMgZWxzZQorIyAgZGVmaW5lIF8obXNnaWQpICAgKG1zZ2lk KQorIyBlbmRpZgogCiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJ VFkoZGVmYXVsdCkKIHsKIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJT SU9OCiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgaW9zX2Jh c2U6OmZhaWx1cmU6OmZhaWx1cmUoY29uc3Qgc3RyaW5nJiBfX3N0cikgdGhy b3coKQogICA6IF9NX21zZyhfX3N0cikgeyB9CiAKQEAgLTU0LDYgKzU2LDcg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgY29uc3Qg Y2hhcioKICAgaW9zX2Jhc2U6OmZhaWx1cmU6OndoYXQoKSBjb25zdCB0aHJv dygpCiAgIHsgcmV0dXJuIF9NX21zZy5jX3N0cigpOyB9CisjZW5kaWYKIAog I2lmIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICAvLyBXaGVuIHRoZSBkdWFs IEFCSSBpcyBlbmFibGVkIF9fdGhyb3dfaW9zX2ZhaWx1cmUoKSBpcyBkZWZp bmVkIGluCkBAIC04Miw3ICs4NSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVT UEFDRV9WRVJTSU9OCiAgIH0KICNlbmRpZiAvLyBfX2NwcF9ydHRpCiAKLSNl bHNlIC8vICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCisjZWxpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkKIAogICB2b2lkCiAgIF9fdGhyb3dfaW9zX2Zh aWx1cmUoY29uc3QgY2hhciogX19zIF9fYXR0cmlidXRlX18oKHVudXNlZCkp KQpAQCAtOTIsNyArOTUsOSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Vf VkVSU0lPTgogICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqIHN0 ciwgaW50KQogICB7IF9fdGhyb3dfaW9zX2ZhaWx1cmUoc3RyKTsgfQogCi0j ZW5kaWYgLy8gX0dMSUJDWFhfVVNFX0RVQUxfQUJJCisjZW5kaWYgLy8gISBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAKIF9HTElCQ1hYX0VORF9OQU1FU1BB Q0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FC SQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9pc3RyZWFt LXN0cmluZy5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaXN0cmVhbS1z dHJpbmcuY2MKaW5kZXggNDg1OTk4N2ZjYzIuLmI2NDM0N2Y3OTZlIDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L2lzdHJlYW0tc3RyaW5n LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaXN0cmVhbS1zdHJp bmcuY2MKQEAgLTMxLDYgKzMxLDE2IEBACiAvLyBieSBhbm90aGVyIGZpbGUg d2hpY2ggZGVmaW5lcyBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJPTAuCiAjIGRl ZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDEKICNlbmRpZgorCisjaWYg X0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBkZWZpbmUgX0dMSUJDWFhfQlVJ TERfQ1hYMTFfQUJJIDEKKyNlbHNlCisjIGRlZmluZSBfR0xJQkNYWF9CVUlM RF9DWFgxMV9BQkkgMAorI2VuZGlmCisKKyNpbmNsdWRlIDxiaXRzL2MrK2Nv bmZpZy5oPgorCisjaWYgX0dMSUJDWFhfQlVJTERfQ1hYMTFfQUJJID09IF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKICNpbmNsdWRlIDxpc3RyZWFtPgogI2lu Y2x1ZGUgPHN0cmluZz4KIApAQCAtMjg5LDMgKzI5OSw0IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIF9HTElCQ1hYX0VORF9OQU1F U1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKKyNlbmRpZiAvLyBfR0xJ QkNYWF9CVUlMRF9DWFgxMV9BQkkgPT0gX0dMSUJDWFhfVVNFX0NYWDExX0FC SQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9sb2NhbGVf ZmFjZXRzLmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9sb2NhbGVfZmFj ZXRzLmNjCmluZGV4IGMwYmI3ZmQxODFkLi43YTkyOWQ1MWJlNCAxMDA2NDQK LS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9sb2NhbGVfZmFjZXRzLmNj CisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvbG9jYWxlX2ZhY2V0cy5j YwpAQCAtMTI1LDYgKzEyNSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFD RV9WRVJTSU9OCiAgICAgcmV0dXJuIF9fdGVzdDsKICAgfQogCisjaWYgISBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIGJvb2wKICAgX192ZXJpZnlfZ3Jv dXBpbmcoY29uc3QgY2hhciogX19ncm91cGluZywgc2l6ZV90IF9fZ3JvdXBp bmdfc2l6ZSwKIAkJICAgIGNvbnN0IHN0cmluZyYgX19ncm91cGluZ190bXAp IHRocm93KCkKQEAgLTEzMyw2ICsxMzQsNyBAQCBfR0xJQkNYWF9CRUdJTl9O QU1FU1BBQ0VfVkVSU0lPTgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9fZ3JvdXBpbmdfdG1wLmNfc3RyKCksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX19ncm91cGluZ190bXAuc2l6ZSgpKTsK ICAgfQorI2VuZGlmCiAKICAgbmFtZXNwYWNlCiAgIHsKZGlmZiAtLWdpdCBh L2xpYnN0ZGMrKy12My9zcmMvYysrOTgvc3RkZXhjZXB0LmNjIGIvbGlic3Rk YysrLXYzL3NyYy9jKys5OC9zdGRleGNlcHQuY2MKaW5kZXggZThjOTFmNWMx Y2QuLmU4MjU1NGUwYWVjIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3Jj L2MrKzk4L3N0ZGV4Y2VwdC5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2Mr Kzk4L3N0ZGV4Y2VwdC5jYwpAQCAtMzUsOCArMzUsMTAgQEAgbmFtZXNwYWNl IHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiBfR0xJQkNY WF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCisjaWYgISBfR0xJQkNYWF9V U0VfQ1hYMTFfQUJJCiAgIGxvZ2ljX2Vycm9yOjpsb2dpY19lcnJvcihjb25z dCBzdHJpbmcmIF9fYXJnKQogICA6IGV4Y2VwdGlvbigpLCBfTV9tc2coX19h cmcpIHsgfQorI2VuZGlmCiAKICAgbG9naWNfZXJyb3I6On5sb2dpY19lcnJv cigpIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCB7IH0KIApAQCAtNDQsMjggKzQ2 LDM4IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgIGxv Z2ljX2Vycm9yOjp3aGF0KCkgY29uc3QgX0dMSUJDWFhfVVNFX05PRVhDRVBU CiAgIHsgcmV0dXJuIF9NX21zZy5jX3N0cigpOyB9CiAKKyNpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkKICAgZG9tYWluX2Vycm9yOjpkb21haW5fZXJy b3IoY29uc3Qgc3RyaW5nJiBfX2FyZykKICAgOiBsb2dpY19lcnJvcihfX2Fy ZykgeyB9CisjZW5kaWYKIAogICBkb21haW5fZXJyb3I6On5kb21haW5fZXJy b3IoKSBfR0xJQkNYWF9VU0VfTk9FWENFUFQgeyB9CiAKKyNpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkKICAgaW52YWxpZF9hcmd1bWVudDo6aW52YWxp ZF9hcmd1bWVudChjb25zdCBzdHJpbmcmIF9fYXJnKQogICA6IGxvZ2ljX2Vy cm9yKF9fYXJnKSB7IH0KKyNlbmRpZgogCiAgIGludmFsaWRfYXJndW1lbnQ6 On5pbnZhbGlkX2FyZ3VtZW50KCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsg fQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIGxlbmd0aF9l cnJvcjo6bGVuZ3RoX2Vycm9yKGNvbnN0IHN0cmluZyYgX19hcmcpCiAgIDog bG9naWNfZXJyb3IoX19hcmcpIHsgfQorI2VuZGlmCiAKICAgbGVuZ3RoX2Vy cm9yOjp+bGVuZ3RoX2Vycm9yKCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsg fQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIG91dF9vZl9y YW5nZTo6b3V0X29mX3JhbmdlKGNvbnN0IHN0cmluZyYgX19hcmcpCiAgIDog bG9naWNfZXJyb3IoX19hcmcpIHsgfQorI2VuZGlmCiAKICAgb3V0X29mX3Jh bmdlOjp+b3V0X29mX3JhbmdlKCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsg fQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIHJ1bnRpbWVf ZXJyb3I6OnJ1bnRpbWVfZXJyb3IoY29uc3Qgc3RyaW5nJiBfX2FyZykKICAg OiBleGNlcHRpb24oKSwgX01fbXNnKF9fYXJnKSB7IH0KKyNlbmRpZgogCiAg IHJ1bnRpbWVfZXJyb3I6On5ydW50aW1lX2Vycm9yKCkgX0dMSUJDWFhfVVNF X05PRVhDRVBUIHsgfQogCkBAIC03MywxOCArODUsMjQgQEAgX0dMSUJDWFhf QkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgcnVudGltZV9lcnJvcjo6d2hh dCgpIGNvbnN0IF9HTElCQ1hYX1VTRV9OT0VYQ0VQVAogICB7IHJldHVybiBf TV9tc2cuY19zdHIoKTsgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCiAgIHJhbmdlX2Vycm9yOjpyYW5nZV9lcnJvcihjb25zdCBzdHJpbmcm IF9fYXJnKQogICA6IHJ1bnRpbWVfZXJyb3IoX19hcmcpIHsgfQorI2VuZGlm CiAKICAgcmFuZ2VfZXJyb3I6On5yYW5nZV9lcnJvcigpIF9HTElCQ1hYX1VT RV9OT0VYQ0VQVCB7IH0KIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FC SQogICBvdmVyZmxvd19lcnJvcjo6b3ZlcmZsb3dfZXJyb3IoY29uc3Qgc3Ry aW5nJiBfX2FyZykKICAgOiBydW50aW1lX2Vycm9yKF9fYXJnKSB7IH0KKyNl bmRpZgogCiAgIG92ZXJmbG93X2Vycm9yOjp+b3ZlcmZsb3dfZXJyb3IoKSBf R0xJQkNYWF9VU0VfTk9FWENFUFQgeyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VT RV9DWFgxMV9BQkkKICAgdW5kZXJmbG93X2Vycm9yOjp1bmRlcmZsb3dfZXJy b3IoY29uc3Qgc3RyaW5nJiBfX2FyZykKICAgOiBydW50aW1lX2Vycm9yKF9f YXJnKSB7IH0KKyNlbmRpZgogCiAgIHVuZGVyZmxvd19lcnJvcjo6fnVuZGVy Zmxvd19lcnJvcigpIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCB7IH0KIAo= --------------4Mrbc7FnM1NWLGetLZE482kz--