From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by sourceware.org (Postfix) with ESMTPS id 8665F3858CDA for ; Wed, 28 Feb 2024 18:37:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8665F3858CDA Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8665F3858CDA Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::332 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709145458; cv=none; b=HW6FoytiLgrUr0m4yi0J4O5iN3rLbuWKkj0s0bsCHsdFXBuLsXPJgTDRJ27WAZPILG28lwaF/G6z5LbklUmslGjvHySlhnUPUqxKDnRECDWN34qkK0kDDE500clnYYr9cRVRD58Vap8YhFvMaUFRZuqLXbCct+sbUpQ8hveSEPY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709145458; c=relaxed/simple; bh=C9qzilCwOtOZ9BtPSfuhnknDNDcAqRr+vGPdQWs0Dew=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=u4qeq2InMPP8r0YC96HhDJ7Kiw87C9pHWUofhMuD+/+UndSsohz5KYw3rV+NLbCiVoX15RBPHU5i44QyqKHesL0sI3Fu7g58jcLpSQ4x94kASgqgr5kvzxAagJJnfhl7bjYynK8czZ7bJcIapCzpg4gstnBaA1H8K1MinMbonGA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-412b3a69f67so576585e9.0 for ; Wed, 28 Feb 2024 10:37:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709145451; x=1709750251; darn=gcc.gnu.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=8zWf27j0BrUIJ6/2wYcuaQ23m+Ex/TLKItJA7TbhqI4=; b=df7FFUFOgrDDNyaN3X21TSTvMVN1/l4d5kXZpL4voto4x99oxYDUmDU7g38VvLzMl9 Pca2oesxErVm08e0DmGjOKXfLFtgTEqAyVlxSqekN/ps+8Mha55ckAAx7TGFOoF51odp rgEqlZRZHbjeZDx/wbmu9v3/84g+0DCuFdXKwwFLlV1XH3sH5ffQHFigwTLwdAhaEe85 iKUsoSH+AyWbxYG6MXcU+tNFCWm/RHjsEu2Xl7RdyRqFaPutB5DatQhqjpnWIxbG8eHS kva+tt97lzFWqR4YoSpCujJ6sDMGHFDFvzD4SX0RTamvjH1jc+nCT+6pdf3GcHN9Wryg jgcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709145451; x=1709750251; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=8zWf27j0BrUIJ6/2wYcuaQ23m+Ex/TLKItJA7TbhqI4=; b=BDTndH6YbrmF6osR/cgVm0dtbc/7s2STA4iW7on2qHsrpadnyt8XkitgQFBmjNsdgj I47uxvwIUZKJQ2ghkSYNZO8914+WuFpW00MsDEI652QINfCPxNGscc5zjPBpi+DQ5VKz dB39Jvc8yPYVjGO4hlWDkimkc4+0RYia7BW5voY+W2yLw1Iq/O2kIqKCwqN2NEMz7HLL TtWhDUoeE28Jqncp2eBDac88THhuMiIcxTJkMb6p1/SZJ1owxH6bu/DhXzzwFtSTFbI2 k+9GlZv/Gn8olbH4yHM71BG+ymnL69o1c77WXyTTspjRyCjkHb1GVxg31m2Nm+M2vZf/ W6lA== X-Forwarded-Encrypted: i=1; AJvYcCV6qFdzDnZ96iQ5XJ+GF8X8hJ+oaiDv8TuzmwpDB8a601nKmKuixwWY7kENqdPdl5PqYvDOM4L8F8dfZDLypJPKPL/rFXw= X-Gm-Message-State: AOJu0Ywp2SaYjZL2CjFKZb8bO1ZxYlSjc4iKKHiWV0rmMwFHglu9OPdH XOCWXGnj0NxcoKsksjJtu14UACc1fgHjwk5oNfkRfsX0swE2gu9Y X-Google-Smtp-Source: AGHT+IHHcnXgdh+fJt4fj/kadGEc6OPh7FVtr2expF9f8jYYQfPL6u9vKif1dYJFhJzjPoeaARwTHg== X-Received: by 2002:adf:eb01:0:b0:33d:d358:19f6 with SMTP id s1-20020adfeb01000000b0033dd35819f6mr321925wrn.11.1709145450748; Wed, 28 Feb 2024 10:37:30 -0800 (PST) Received: from [10.60.0.241] ([89.207.171.133]) by smtp.gmail.com with ESMTPSA id b14-20020a05600003ce00b0033dd06e628asm12013826wrg.27.2024.02.28.10.37.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 28 Feb 2024 10:37:29 -0800 (PST) Content-Type: multipart/mixed; boundary="------------SgO0y4cCwRt0suwKOBfeuj7O" Message-ID: Date: Wed, 28 Feb 2024 19:37:27 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] sso-string@gnu-versioned-namespace [PR83077] To: Jonathan Wakely Cc: Jonathan Wakely , libstdc++ References: <1dc681f4-41b7-d171-02ac-b0194617bdee@gmail.com> <91dc6383-6bff-ce6c-b24d-81cd2ab2dce8@gmail.com> Content-Language: en-US From: =?UTF-8?Q?Fran=C3=A7ois_Dumont?= In-Reply-To: X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.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. --------------SgO0y4cCwRt0suwKOBfeuj7O Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Another version with the major enhancement that COW string is not explicitly instantiated anymore. That's ~100ko saved in resulting lib, not too bad. Note that this patch is also smaller cause I removed the regenerated parts from it. We got time but can you confirmed that when approved I'll also have to commit the regenerated files ? François On 17/08/2023 19:22, Jonathan Wakely wrote: > On Sun, 13 Aug 2023 at 14:27, François Dumont via Libstdc++ > 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. > I was thinking of implementing the necessary special members functions > of __cow_string directly, so they are ABI compatible with the COW > std::basic_string but don't actually reuse the code. That would mean > we don't need to compile and instantiate the whole COW string just to > use a few members from it. But that can be done later, the macro > approach seems OK for now. > >> There are some test failing when !_GLIBCXX_USE_CXX11_ABI that are >> unrelated with my changes. I'll propose fixes in coming days. > Which tests? I run the entire testsuite with > -D_GLIBCXX_USE_CXX11_ABI=0 several times per day and I'm not seeing > failures. > > I'll review the patch ASAP, thanks for working on it. > --------------SgO0y4cCwRt0suwKOBfeuj7O Content-Type: text/plain; charset=UTF-8; name="gnu_versioned_ns_cxx11_patch.txt" Content-Disposition: attachment; filename="gnu_versioned_ns_cxx11_patch.txt" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQgYi9saWJzdGRjKystdjMv YWNpbmNsdWRlLm00CmluZGV4IGY3MmJkMGY0NWI4Li4yOGQyNDU3N2M1NyAxMDA2NDQKLS0t IGEvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAorKysgYi9saWJzdGRjKystdjMvYWNpbmNs dWRlLm00CkBAIC00ODc1LDEzICs0ODc1LDE3IEBAIGRubAogQUNfREVGVU4oW0dMSUJDWFhf RU5BQkxFX0xJQlNURENYWF9EVUFMX0FCSV0sIFsKICAgR0xJQkNYWF9FTkFCTEUobGlic3Rk Y3h4LWR1YWwtYWJpLCQxLCxbc3VwcG9ydCB0d28gdmVyc2lvbnMgb2Ygc3RkOjpzdHJpbmdd KQogICBpZiB0ZXN0IHgkZW5hYmxlX3N5bXZlcnMgPSB4Z251LXZlcnNpb25lZC1uYW1lc3Bh Y2U7IHRoZW4KLSAgICAjIGdudS12ZXJzaW9uZWQtbmFtZXNwYWNlIGlzIGluY29tcGF0aWJs ZSB3aXRoIHRoZSBkdWFsIEFCSS4KKyAgICAjIGdudS12ZXJzaW9uZWQtbmFtZXNwYWNlIGlz IGluY29tcGF0aWJsZSB3aXRoIHRoZSBkdWFsIEFCSS4uLgorICAgIEFDX01TR19OT1RJQ0Uo W2R1YWwgQUJJIGlzIGRpc2FibGVkXSkKICAgICBlbmFibGVfbGlic3RkY3h4X2R1YWxfYWJp PSJubyIKLSAgZmkKKyAgICAjIC4uLiBhbmQgdXNlIHRoZSBjeHgxMSBvbmUuCisgICAgZGVm YXVsdF9saWJzdGRjeHhfYWJpPSJuZXciCisgIGVsc2UKICAgICBpZiB0ZXN0IHgiJGVuYWJs ZV9saWJzdGRjeHhfZHVhbF9hYmkiICE9IHh5ZXM7IHRoZW4KICAgICAgIEFDX01TR19OT1RJ Q0UoW2R1YWwgQUJJIGlzIGRpc2FibGVkXSkKICAgICAgIGRlZmF1bHRfbGlic3RkY3h4X2Fi aT0iZ2NjNC1jb21wYXRpYmxlIgogICAgIGZpCisgIGZpCiAgIEdMSUJDWFhfQ09ORElUSU9O QUwoRU5BQkxFX0RVQUxfQUJJLCB0ZXN0ICRlbmFibGVfbGlic3RkY3h4X2R1YWxfYWJpID0g eWVzKQogXSkKIApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZHJh Z29uZmx5L21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2Fs ZS9kcmFnb25mbHkvbW9uZXRhcnlfbWVtYmVycy5jYwppbmRleCA2ZTQ4ZTQ1YjNlNy4uMGIw YzQyNzc3MTggMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2RyYWdv bmZseS9tb25ldGFyeV9tZW1iZXJzLmNjCisrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9j YWxlL2RyYWdvbmZseS9tb25ldGFyeV9tZW1iZXJzLmNjCkBAIC0zOSw3ICszOSw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIC8vIFRoaXMgZmlsZSBtaWdodCBi ZSBjb21waWxlZCB0d2ljZSwgYnV0IHdlIG9ubHkgd2FudCB0byBkZWZpbmUgdGhlIG1lbWJl cnMKIC8vIG9mIG1vbmV5X2Jhc2Ugb25jZS4KLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVB TF9BQkkKIAogICAvLyBDb25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNp c3Rpbmcgb2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKICAgLy8gc3BhY2Ugbm9uZSBzeW1ib2wg c2lnbiB2YWx1ZQpAQCAtMjA3LDcgKzIwNyw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFD RV9WRVJTSU9OCiAgICAgICB9CiAgICAgcmV0dXJuIF9fcmV0OwogICB9Ci0jZW5kaWYKKyNl bmRpZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVB TF9BQkkKIAogICB0ZW1wbGF0ZTw+CiAgICAgdm9pZApkaWZmIC0tZ2l0IGEvbGlic3RkYysr LXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3Rk YysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9tb25ldGFyeV9tZW1iZXJzLmNjCmluZGV4 IDAxOTJjYjg4MmVmLi5lNzI1ZTg3OTBkNSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2Nv bmZpZy9sb2NhbGUvZ2VuZXJpYy9tb25ldGFyeV9tZW1iZXJzLmNjCisrKyBiL2xpYnN0ZGMr Ky12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvbW9uZXRhcnlfbWVtYmVycy5jYwpAQCAtMzYs NyArMzYsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCiAvLyBUaGlz IGZpbGUgbWlnaHQgYmUgY29tcGlsZWQgdHdpY2UsIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gZGVm aW5lIHRoZSBtZW1iZXJzCiAvLyBvZiBtb25leV9iYXNlIG9uY2UuCi0jaWYgISBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dM SUJDWFhfVVNFX0RVQUxfQUJJCiAKICAgLy8gQ29uc3RydWN0IGFuZCByZXR1cm4gdmFsaWQg cGF0dGVybiBjb25zaXN0aW5nIG9mIHNvbWUgY29tYmluYXRpb24gb2Y6CiAgIC8vIHNwYWNl IG5vbmUgc3ltYm9sIHNpZ24gdmFsdWUKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25m aWcvbG9jYWxlL2dudS9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZp Zy9sb2NhbGUvZ251L21vbmV0YXJ5X21lbWJlcnMuY2MKaW5kZXggNzVhZjhlM2NlNDIuLjQ2 YjJmMWZjOGQxIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nbnUv bW9uZXRhcnlfbWVtYmVycy5jYworKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9n bnUvbW9uZXRhcnlfbWVtYmVycy5jYwpAQCAtMzcsNyArMzcsNyBAQCBfR0xJQkNYWF9CRUdJ Tl9OQU1FU1BBQ0VfVkVSU0lPTgogCiAvLyBUaGlzIGZpbGUgbWlnaHQgYmUgY29tcGlsZWQg dHdpY2UsIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gZGVmaW5lIHRoZSBtZW1iZXJzCiAvLyBvZiBt b25leV9iYXNlIG9uY2UuCi0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYgISBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAKICAg Ly8gQ29uc3RydWN0IGFuZCByZXR1cm4gdmFsaWQgcGF0dGVybiBjb25zaXN0aW5nIG9mIHNv bWUgY29tYmluYXRpb24gb2Y6CiAgIC8vIHNwYWNlIG5vbmUgc3ltYm9sIHNpZ24gdmFsdWUK QEAgLTIwNSw3ICsyMDUsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgog ICAgICAgfQogICAgIHJldHVybiBfX3JldDsKICAgfQotI2VuZGlmCisjZW5kaWYgLy8gISBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAKICAg ZXh0ZXJuIGNoYXIgX19uYXJyb3dfbXVsdGlieXRlX2NoYXJzKGNvbnN0IGNoYXIqIHMsIF9f bG9jYWxlX3QgY2xvYyk7CiAKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9j YWxlL2dudS9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2Fs ZS9nbnUvbnVtZXJpY19tZW1iZXJzLmNjCmluZGV4IDNkMWE4OGFlODMyLi5lOThmNTQ4YTFj NCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ251L251bWVyaWNf bWVtYmVycy5jYworKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nbnUvbnVtZXJp Y19tZW1iZXJzLmNjCkBAIC0zOSw3ICszOSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFD RV9WRVJTSU9OCiAgIGV4dGVybiBjaGFyIF9fbmFycm93X211bHRpYnl0ZV9jaGFycyhjb25z dCBjaGFyKiBzLCBfX2xvY2FsZV90IGNsb2MpOwogCiAvLyBUaGlzIGZpbGUgbWlnaHQgYmUg Y29tcGlsZWQgdHdpY2UsIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gZGVmaW5lIHRoaXMgb25jZS4K LSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKICAgY2hhcgogICBfX25hcnJvd19t dWx0aWJ5dGVfY2hhcnMoY29uc3QgY2hhciogcywgX19sb2NhbGVfdCBjbG9jKQogICB7CkBA IC04NCw3ICs4NCw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAg ICB9CiAgICAgcmV0dXJuICdcMCc7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8vICEgX0dMSUJD WFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogCiAgIHRlbXBs YXRlPD4KICAgICB2b2lkCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRz L2MrK2NvbmZpZyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvYysrY29uZmlnCmluZGV4 IGI1N2UzZjMzOGU5Li4xNDJhZTJmZjUyMCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2lu Y2x1ZGUvYml0cy9jKytjb25maWcKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9j Kytjb25maWcKQEAgLTMzNywyNiArMzM3LDYgQEAgbmFtZXNwYWNlIHN0ZAogI2RlZmluZSBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAjZW5kaWYKIAotI2lmIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKLW5hbWVzcGFjZSBzdGQKLXsKLSAgaW5saW5lIG5hbWVzcGFjZSBfX2N4eDExIF9f YXR0cmlidXRlX18oKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpIHsgfQotfQotbmFtZXNwYWNl IF9fZ251X2N4eAotewotICBpbmxpbmUgbmFtZXNwYWNlIF9fY3h4MTEgX19hdHRyaWJ1dGVf XygoX19hYmlfdGFnX18gKCJjeHgxMSIpKSkgeyB9Ci19Ci0jIGRlZmluZSBfR0xJQkNYWF9O QU1FU1BBQ0VfQ1hYMTEgX19jeHgxMTo6Ci0jIGRlZmluZSBfR0xJQkNYWF9CRUdJTl9OQU1F U1BBQ0VfQ1hYMTEgbmFtZXNwYWNlIF9fY3h4MTEgewotIyBkZWZpbmUgX0dMSUJDWFhfRU5E X05BTUVTUEFDRV9DWFgxMSB9Ci0jIGRlZmluZSBfR0xJQkNYWF9ERUZBVUxUX0FCSV9UQUcg X0dMSUJDWFhfQUJJX1RBR19DWFgxMQotI2Vsc2UKLSMgZGVmaW5lIF9HTElCQ1hYX05BTUVT UEFDRV9DWFgxMQotIyBkZWZpbmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX0NYWDExCi0j IGRlZmluZSBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0NYWDExCi0jIGRlZmluZSBfR0xJQkNY WF9ERUZBVUxUX0FCSV9UQUcKLSNlbmRpZgotCiAvLyBOb24temVybyBpZiBpbmxpbmUgbmFt ZXNwYWNlcyBhcmUgdXNlZCBmb3IgdmVyc2lvbmluZyB0aGUgZW50aXJlIGxpYnJhcnkuCiAj ZGVmaW5lIF9HTElCQ1hYX0lOTElORV9WRVJTSU9OIAogCkBAIC00MTUsNyArMzk1LDcgQEAg X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgLy8gTm9uLWlubGluZSBuYW1l c3BhY2UgZm9yIGNvbXBvbmVudHMgcmVwbGFjZWQgYnkgYWx0ZXJuYXRlcyBpbiBhY3RpdmUg bW9kZS4KICAgbmFtZXNwYWNlIF9fY3h4MTk5OAogICB7Ci0jIGlmIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkKKyMgaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSAmJiAhIF9HTElCQ1hYX0lO TElORV9WRVJTSU9OCiAgIGlubGluZSBuYW1lc3BhY2UgX19jeHgxMSBfX2F0dHJpYnV0ZV9f KChfX2FiaV90YWdfXyAoImN4eDExIikpKSB7IH0KICMgZW5kaWYKICAgfQpAQCAtNDQ1LDYg KzQyNSwyNiBAQCBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KICMgZW5kaWYKICNl bmRpZgogCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSAmJiAhIF9HTElCQ1hYX0lOTElO RV9WRVJTSU9OCituYW1lc3BhY2Ugc3RkCit7CisgIGlubGluZSBuYW1lc3BhY2UgX19jeHgx MSBfX2F0dHJpYnV0ZV9fKChfX2FiaV90YWdfXyAoImN4eDExIikpKSB7IH0KK30KK25hbWVz cGFjZSBfX2dudV9jeHgKK3sKKyAgaW5saW5lIG5hbWVzcGFjZSBfX2N4eDExIF9fYXR0cmli dXRlX18oKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpIHsgfQorfQorIyBkZWZpbmUgX0dMSUJD WFhfTkFNRVNQQUNFX0NYWDExIF9fY3h4MTE6OgorIyBkZWZpbmUgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX0NYWDExIG5hbWVzcGFjZSBfX2N4eDExIHsKKyMgZGVmaW5lIF9HTElCQ1hY X0VORF9OQU1FU1BBQ0VfQ1hYMTEgfQorIyBkZWZpbmUgX0dMSUJDWFhfREVGQVVMVF9BQklf VEFHIF9HTElCQ1hYX0FCSV9UQUdfQ1hYMTEKKyNlbHNlCisjIGRlZmluZSBfR0xJQkNYWF9O QU1FU1BBQ0VfQ1hYMTEKKyMgZGVmaW5lIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9DWFgx MQorIyBkZWZpbmUgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9DWFgxMQorIyBkZWZpbmUgX0dM SUJDWFhfREVGQVVMVF9BQklfVEFHCisjZW5kaWYKKwogLy8gTWFjcm9zIGZvciBuYW1lc3Bh Y2Ugc2NvcGUuIEVpdGhlciBuYW1lc3BhY2Ugc3RkOjogb3IgdGhlIG5hbWUKIC8vIG9mIHNv bWUgbmVzdGVkIG5hbWVzcGFjZSB3aXRoaW4gaXQgY29ycmVzcG9uZGluZyB0byB0aGUgYWN0 aXZlIG1vZGUuCiAvLyBfR0xJQkNYWF9TVERfQQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYz L2luY2x1ZGUvYml0cy9jb3dfc3RyaW5nLmggYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRz L2Nvd19zdHJpbmcuaAppbmRleCA1ZDgxYmZjMTIzMC4uYzYyZDExODBlMjMgMTAwNjQ0Ci0t LSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvY293X3N0cmluZy5oCisrKyBiL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvY293X3N0cmluZy5oCkBAIC0zMiwxMyArMzIsMTQgQEAK ICNpZm5kZWYgX0NPV19TVFJJTkdfSAogI2RlZmluZSBfQ09XX1NUUklOR19IIDEKIAotI2lm ICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQotCiAjaW5jbHVkZSA8ZXh0L2F0b21pY2l0eS5o PiAvLyBfQXRvbWljX3dvcmQsIF9faXNfc2luZ2xlX3RocmVhZGVkCiAKIG5hbWVzcGFjZSBz dGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQogewotX0dMSUJDWFhfQkVHSU5fTkFN RVNQQUNFX1ZFUlNJT04KKyNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisgIG5hbWVzcGFj ZSBfX2RldGFpbAorICB7CisjZW5kaWYKIAogICAvKioKICAgICogIEBjbGFzcyBiYXNpY19z dHJpbmcgYmFzaWNfc3RyaW5nLmggPHN0cmluZz4KQEAgLTM1MTUsNiArMzUxNiw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICBfTV9yZXAoKS0+X01fc2V0 X2xlbmd0aF9hbmRfc2hhcmFibGUoX19uZXdfc2l6ZSk7CiAgICAgfQogCisKICAgdGVtcGxh dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+ CiAgICAgdm9pZAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46 OgpAQCAtMzc5Nyw4ICszNzk5LDggQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJ T04KICAgICB9CiAjZW5kaWYgLy8gQysrMTEKIAotCi1fR0xJQkNYWF9FTkRfTkFNRVNQQUNF X1ZFUlNJT04KKyNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCit9IC8vIG5hbWVzcGFjZSBf X2RldGFpbAorI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBzdGQKLSNlbmRpZiAgLy8gISBfR0xJ QkNYWF9VU0VfQ1hYMTFfQUJJCiAjZW5kaWYgIC8vIF9DT1dfU1RSSU5HX0gKZGlmZiAtLWdp dCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC9zdGRleGNlcHQgYi9saWJzdGRjKystdjMv aW5jbHVkZS9zdGQvc3RkZXhjZXB0CmluZGV4IGI1NWMxOWJiZmUyLi5iNjM3ZTMzZWU3ZSAx MDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3N0ZGV4Y2VwdAorKysgYi9s aWJzdGRjKystdjMvaW5jbHVkZS9zdGQvc3RkZXhjZXB0CkBAIC00Miw4ICs0Miw4IEBAIG5h bWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQogewogX0dMSUJDWFhf QkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAotI2lmIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQot I2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkg fHwgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfREVGSU5FX1NUREVY Q0VQVF9JTlNUQU5USUFUSU9OUwogICAvLyBFbXVsYXRlcyBhbiBvbGQgQ09XIHN0cmluZyB3 aGVuIHRoZSBuZXcgc3RkOjpzdHJpbmcgaXMgaW4gdXNlLgogICBzdHJ1Y3QgX19jb3dfc3Ry aW5nCiAgIHsKQEAgLTYyLDEyICs2MiwxNCBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Vf VkVSU0lPTgogICAgIF9fY293X3N0cmluZyhfX2Nvd19zdHJpbmcmJikgbm9leGNlcHQ7CiAg ICAgX19jb3dfc3RyaW5nJiBvcGVyYXRvcj0oX19jb3dfc3RyaW5nJiYpIG5vZXhjZXB0Owog I2VuZGlmCisgICAgY29uc3QgY2hhciogY19zdHIoKSBjb25zdCBfR0xJQkNYWF9OT0VYQ0VQ VDsKICAgfTsKLQotICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyPiBfX3Nzb19zdHJpbmc7 Ci0jZWxzZSAvLyBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjZW5kaWYgLy8gISBfR0xJQkNY WF9ERUZJTkVfU1RERVhDRVBUX0lOU1RBTlRJQVRJT05TCisjZWxzZQogICB0eXBlZGVmIGJh c2ljX3N0cmluZzxjaGFyPiBfX2Nvd19zdHJpbmc7CisjZW5kaWYKIAorI2lmIF9HTElCQ1hY X1VTRV9EVUFMX0FCSSAmJiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgLy8gRW11bGF0 ZXMgYSBuZXcgU1NPIHN0cmluZyB3aGVuIHRoZSBvbGQgc3RkOjpzdHJpbmcgaXMgaW4gdXNl LgogICBzdHJ1Y3QgX19zc29fc3RyaW5nCiAgIHsKQEAgLTk0LDEwICs5Niw4IEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgX19zc29fc3RyaW5nJiBvcGVyYXRv cj0oX19zc29fc3RyaW5nJiYpIG5vZXhjZXB0OwogI2VuZGlmCiAgIH07Ci0jZW5kaWYgLy8g X0dMSUJDWFhfVVNFX0NYWDExX0FCSQotI2Vsc2UgIC8vIF9HTElCQ1hYX1VTRV9EVUFMX0FC SQorI2Vsc2UKICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8Y2hhcj4gX19zc29fc3RyaW5nOwot ICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyPiBfX2Nvd19zdHJpbmc7CiAjZW5kaWYKIAog ICAvKioKQEAgLTEyNyw3ICsxMjcsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVS U0lPTgogICAgIGxvZ2ljX2Vycm9yJiBvcGVyYXRvcj0obG9naWNfZXJyb3ImJikgbm9leGNl cHQ7CiAjZW5kaWYKIAotI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgX0dMSUJDWFhf REVGSU5FX1NUREVYQ0VQVF9DT1BZX09QUworI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkg fHwgX0dMSUJDWFhfREVGSU5FX1NUREVYQ0VQVF9JTlNUQU5USUFUSU9OUwogICAgIGxvZ2lj X2Vycm9yKGNvbnN0IGxvZ2ljX2Vycm9yJikgX0dMSUJDWFhfTk9USFJPVzsKICAgICBsb2dp Y19lcnJvciYgb3BlcmF0b3I9KGNvbnN0IGxvZ2ljX2Vycm9yJikgX0dMSUJDWFhfTk9USFJP VzsKICNlbGlmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wKQEAgLTIzMyw3ICsyMzMsNyBAQCBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgIHJ1bnRpbWVfZXJyb3ImIG9w ZXJhdG9yPShydW50aW1lX2Vycm9yJiYpIG5vZXhjZXB0OwogI2VuZGlmCiAKLSNpZiBfR0xJ QkNYWF9VU0VfQ1hYMTFfQUJJIHx8IF9HTElCQ1hYX0RFRklORV9TVERFWENFUFRfQ09QWV9P UFMKKyNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8IF9HTElCQ1hYX0RFRklORV9TVERF WENFUFRfSU5TVEFOVElBVElPTlMKICAgICBydW50aW1lX2Vycm9yKGNvbnN0IHJ1bnRpbWVf ZXJyb3ImKSBfR0xJQkNYWF9OT1RIUk9XOwogICAgIHJ1bnRpbWVfZXJyb3ImIG9wZXJhdG9y PShjb25zdCBydW50aW1lX2Vycm9yJikgX0dMSUJDWFhfTk9USFJPVzsKICNlbGlmIF9fY3Bs dXNwbHVzID49IDIwMTEwM0wKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9weXRob24vbGli c3RkY3h4L3Y2L3ByaW50ZXJzLnB5IGIvbGlic3RkYysrLXYzL3B5dGhvbi9saWJzdGRjeHgv djYvcHJpbnRlcnMucHkKaW5kZXggYTZjMmVkNDU5OWYuLjM4NzBmOWQxMGZjIDEwMDY0NAot LS0gYS9saWJzdGRjKystdjMvcHl0aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQorKysg Yi9saWJzdGRjKystdjMvcHl0aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQpAQCAtMTAy OSw2ICsxMDI5LDggQEAgY2xhc3MgU3RkU3RyaW5nUHJpbnRlcihwcmludGVyX2Jhc2UpOgog ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlbmFtZSwgdmFsKToKICAgICAgICAgc2VsZi5f dmFsID0gdmFsCiAgICAgICAgIHNlbGYuX25ld19zdHJpbmcgPSB0eXBlbmFtZS5maW5kKCI6 Ol9fY3h4MTE6OmJhc2ljX3N0cmluZyIpICE9IC0xCisgICAgICAgIGlmIG5vdCBzZWxmLl9u ZXdfc3RyaW5nOgorICAgICAgICAgICAgc2VsZi5fbmV3X3N0cmluZyA9IHR5cGVuYW1lLmZp bmQoIjo6IiArIF92ZXJzaW9uZWRfbmFtZXNwYWNlICsgImJhc2ljX3N0cmluZyIpICE9IC0x CiAKICAgICBkZWYgdG9fc3RyaW5nKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSAmc3Ry aW5nIHdvcmtzLCB0b28uCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL01ha2VmaWxl LmFtIGIvbGlic3RkYysrLXYzL3NyYy9NYWtlZmlsZS5hbQppbmRleCAzN2JhMTQ5MWRlYS4u NTlkM2RkNDRlNDggMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvTWFrZWZpbGUuYW0K KysrIGIvbGlic3RkYysrLXYzL3NyYy9NYWtlZmlsZS5hbQpAQCAtOTIsNiArOTIsOSBAQCBl bHNlCiBsZGJsX2NvbXBhdF9zb3VyY2VzID0KIGVuZGlmCiAKK2lmIEVOQUJMRV9TWU1WRVJT X0dOVV9OQU1FU1BBQ0UKK2xkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0KK2Vsc2UKIGlm IEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUCiBpZiBFTkFCTEVfRFVBTF9BQkkKIGxkYmxf YWx0MTI4X2NvbXBhdF9jeHgxMV9zb3VyY2VzID0gXApAQCAtMTA1LDYgKzEwOCw3IEBAIGxk YmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0gXAogZWxzZQogbGRibF9hbHQxMjhfY29tcGF0 X3NvdXJjZXMgPQogZW5kaWYKK2VuZGlmCiAKIGlmIEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1F U1BBQ0UKIGN4eDB4X2NvbXBhdF9zb3VyY2VzID0KZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My9zcmMvYysrMTEvTWFrZWZpbGUuYW0gYi9saWJzdGRjKystdjMvc3JjL2MrKzExL01ha2Vm aWxlLmFtCmluZGV4IDg5ZTIwY2EzYjA2Li40NGJiNzllM2QxNyAxMDA2NDQKLS0tIGEvbGli c3RkYysrLXYzL3NyYy9jKysxMS9NYWtlZmlsZS5hbQorKysgYi9saWJzdGRjKystdjMvc3Jj L2MrKzExL01ha2VmaWxlLmFtCkBAIC00OCwxNSArNDgsMTEgQEAgYmFzaWNfZmlsZS5jYzog JHtnbGliY3h4X3NyY2Rpcn0vJChCQVNJQ19GSUxFX0NDKQogCSQoTE5fUykgJHtnbGliY3h4 X3NyY2Rpcn0vJChCQVNJQ19GSUxFX0NDKSAuLyRAIHx8IHRydWUKIAogaWYgRU5BQkxFX0RV QUxfQUJJCi1jeHgxMV9hYmlfc291cmNlcyA9IFwKLQljb3ctbG9jYWxlX2luaXQuY2MgXAor ZHVhbF9hYmlfc291cmNlcyA9IFwKIAljb3ctc2hpbV9mYWNldHMuY2MgXAotCWN4eDExLWhh c2hfdHIxLmNjIFwKLQljeHgxMS1pb3NfZmFpbHVyZS5jYyBcCi0JY3h4MTEtc2hpbV9mYWNl dHMuY2MgXAotCWN4eDExLXN0ZGV4Y2VwdC5jYworCWN4eDExLXNoaW1fZmFjZXRzLmNjCiBl bHNlCi1jeHgxMV9hYmlfc291cmNlcyA9CitkdWFsX2FiaV9zb3VyY2VzID0KIGVuZGlmCiAK IHNvdXJjZXNfZnJlZXN0YW5kaW5nID0gXApAQCAtNjgsOCArNjQsMTIgQEAgc291cmNlcyA9 IFwKIAljaHJvbm8uY2MgXAogCWNvZGVjdnQuY2MgXAogCWNvbmRpdGlvbl92YXJpYWJsZS5j YyBcCisJY293LWxvY2FsZV9pbml0LmNjIFwKIAljb3ctc3RkZXhjZXB0LmNjIFwKIAljdHlw ZS5jYyBcCisJY3h4MTEtaGFzaF90cjEuY2MgXAorCWN4eDExLWlvc19mYWlsdXJlLmNjIFwK KwljeHgxMS1zdGRleGNlcHQuY2MgXAogCWRlYnVnLmNjIFwKIAlmdW5jdGV4Y2VwdC5jYyBc CiAJZnVuY3Rpb25hbC5jYyBcCkBAIC04OCwyMCArODgsMTIgQEAgc291cmNlcyA9IFwKIAlz bnByaW50Zl9saXRlLmNjIFwKIAlzeXN0ZW1fZXJyb3IuY2MgXAogCXRocmVhZC5jYyBcCi0J JHtjeHgxMV9hYmlfc291cmNlc30gXAorCSR7ZHVhbF9hYmlfc291cmNlc30gXAogCSR7aG9z dF9zb3VyY2VzfSBcCiAJJHtob3N0X3NvdXJjZXNfZXh0cmF9CiAKIGlmIEVOQUJMRV9EVUFM X0FCSQogZXh0cmFfc3RyaW5nX2luc3Rfc291cmNlcyA9IFwKLQljb3ctZnN0cmVhbS1pbnN0 LmNjIFwKLQljb3ctc3N0cmVhbS1pbnN0LmNjIFwKLQljb3ctc3RyaW5nLWluc3QuY2MgXAot CWNvdy1zdHJpbmctaW8taW5zdC5jYyBcCi0JY293LXdzdHJpbmctaW5zdC5jYyBcCi0JY293 LXdzdHJpbmctaW8taW5zdC5jYyBcCi0JY3h4MTEtbG9jYWxlLWluc3QuY2MgXAotCWN4eDEx LXdsb2NhbGUtaW5zdC5jYyBcCiAJc3NvX3N0cmluZy5jYwogZWxzZQogZXh0cmFfc3RyaW5n X2luc3Rfc291cmNlcyA9CkBAIC0xMTEsNiArMTAzLDE0IEBAIGlmIEVOQUJMRV9FWFRFUk5f VEVNUExBVEUKICMgWFRFTVBMQVRFX0ZMQUdTID0gLWZuby1pbXBsaWNpdC10ZW1wbGF0ZXMK IGluc3Rfc291cmNlcyA9IFwKIAkkKGV4dHJhX3N0cmluZ19pbnN0X3NvdXJjZXMpIFwKKwlj b3ctZnN0cmVhbS1pbnN0LmNjIFwKKwljb3ctc3N0cmVhbS1pbnN0LmNjIFwKKwljb3ctc3Ry aW5nLWluc3QuY2MgXAorCWNvdy1zdHJpbmctaW8taW5zdC5jYyBcCisJY293LXdzdHJpbmct aW5zdC5jYyBcCisJY293LXdzdHJpbmctaW8taW5zdC5jYyBcCisJY3h4MTEtbG9jYWxlLWlu c3QuY2MgXAorCWN4eDExLXdsb2NhbGUtaW5zdC5jYyBcCiAJZXh0MTEtaW5zdC5jYyBcCiAJ ZnN0cmVhbS1pbnN0LmNjIFwKIAlpb3MtaW5zdC5jYyBcCmRpZmYgLS1naXQgYS9saWJzdGRj KystdjMvc3JjL2MrKzExL2Nvdy1mc3RyZWFtLWluc3QuY2MgYi9saWJzdGRjKystdjMvc3Jj L2MrKzExL2Nvdy1mc3RyZWFtLWluc3QuY2MKaW5kZXggYmJlZDVhNGI4OTMuLjAwODkyZDcw NGVkIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1mc3RyZWFtLWlu c3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctZnN0cmVhbS1pbnN0LmNj CkBAIC0yOSwxMCArMjksNyBAQAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAK ICNpbmNsdWRlIDxmc3RyZWFtPgogCi0jaWYgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMg ZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmln dXJhdGlvbi4KLSNlbmRpZgotCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiBuYW1l c3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC03NiwzICs3Myw0IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9WRVJTSU9OCiAKIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgog fSAvLyBuYW1lc3BhY2UKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9j KysxMS9jb3ctbG9jYWxlX2luaXQuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1s b2NhbGVfaW5pdC5jYwppbmRleCBjMWVhM2Y0ZjVjNC4uZDFkOTQ3YzEyYTUgMTAwNjQ0Ci0t LSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LWxvY2FsZV9pbml0LmNjCisrKyBiL2xp YnN0ZGMrKy12My9zcmMvYysrMTEvY293LWxvY2FsZV9pbml0LmNjCkBAIC0yNCwxMCArMjQs NyBAQAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAKICNpbmNsdWRlIDxsb2Nh bGU+CiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUg c2hvdWxkIG5vdCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlm Ci0KKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIG5hbWVzcGFjZSBzdGQgX0dMSUJD WFhfVklTSUJJTElUWShkZWZhdWx0KQogewogX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZF UlNJT04KQEAgLTE2Niw2ICsxNjMsNyBAQCBuYW1lc3BhY2UKICNlbmRpZgogICB9CiAKKyNp ZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIC8vIFRPRE8gc2hvdWxkIGJlIGluIGFub3RoZXIg ZmlsZQogICBzdHJpbmcKICAgbG9jYWxlOjpuYW1lKCkgY29uc3QKQEAgLTE5MSw2ICsxODks OCBAQCBuYW1lc3BhY2UKICAgICAgIH0KICAgICByZXR1cm4gX19yZXQ7CiAgIH0KKyNlbmRp ZgogCiBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0KKyNlbmRpZiAvLyAhIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysr MTEvY293LXNzdHJlYW0taW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXNz dHJlYW0taW5zdC5jYwppbmRleCBmMTQyMzc2YzliNi4uNzEwYTM2MDk3ZTEgMTAwNjQ0Ci0t LSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXNzdHJlYW0taW5zdC5jYworKysgYi9s aWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zc3RyZWFtLWluc3QuY2MKQEAgLTI3LDggKzI3 LDggQEAKIC8vCiAKICNkZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSAwCi0jaW5jbHVk ZSAic3N0cmVhbS1pbnN0LmNjIgorI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+CiAKLSNp ZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUgc2hvdWxkIG5v dCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgorI2lmICEgX0dMSUJDWFhf VVNFX0NYWDExX0FCSQorIyBpbmNsdWRlICJzc3RyZWFtLWluc3QuY2MiCiAjZW5kaWYKZGlm ZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0ZGV4Y2VwdC5jYyBiL2xp YnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0ZGV4Y2VwdC5jYwppbmRleCA2YWY4OGYyM2Zj YS4uNmQxZWU1ZjM2MWYgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293 LXN0ZGV4Y2VwdC5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zdGRleGNl cHQuY2MKQEAgLTQzLDExICs0Myw1MiBAQCBfdHhuYWxfcnVudGltZV9lcnJvcl9nZXRfbXNn KHZvaWQqIGUpOwogCiAvLyBBbGwgZXhjZXB0aW9uIGNsYXNzZXMgc3RpbGwgdXNlIHRoZSBj bGFzc2ljIENPVyBzdGQ6OnN0cmluZy4KICNkZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FC SSAwCi0jZGVmaW5lIF9HTElCQ1hYX0RFRklORV9TVERFWENFUFRfQ09QWV9PUFMgMQotI2Rl ZmluZSBfX2Nvd19zdHJpbmcgX19jb3dfc3RyaW5neHh4CisjaW5jbHVkZSA8c3RyaW5nPgor CisjaWYgX0dMSUJDWFhfVVNFX0RVQUxfQUJJIHx8IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkK KyMgaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyAgaW5jbHVkZSA8Yml0cy9jb3dfc3Ry aW5nLmg+CisjIGVuZGlmCisKK25hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShk ZWZhdWx0KQoreworX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KKworIyBpZiBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisgIHR5cGVkZWYgc3RkOjpfX2RldGFpbDo6YmFzaWNf c3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sCisJCQkJICAgICAgc3RkOjph bGxvY2F0b3I8Y2hhcj4+IGNvd3N0cjsKKyMgZWxzZQorICB0eXBlZGVmIHN0ZDo6c3RyaW5n IGNvd3N0cjsKKyMgZW5kaWYKKworICAvLyBSZWRlZmluZSBfX2Nvd19zdHJpbmcgc28gdGhh dCB3ZSBjYW4gZGVmaW5lIGFuZCBleHBvcnQgaXRzIG1lbWJlcnMKKyAgLy8gaW4gdGVybXMg b2YgdGhlIENPVyBzdGQ6OnN0cmluZy4KKyAgc3RydWN0IF9fY293X3N0cmluZworICB7Cisg ICAgdW5pb24geworICAgICAgY29uc3QgY2hhciogX01fcDsKKyAgICAgIGNoYXIgX01fYnl0 ZXNbc2l6ZW9mKF9NX3ApXTsKKyAgICAgIGNvd3N0ciBfTV9zdHI7CisgICAgfTsKKworICAg IF9fY293X3N0cmluZygpOworICAgIF9fY293X3N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYg cyk7CisgICAgX19jb3dfc3RyaW5nKGNvbnN0IGNoYXIqKTsKKyAgICBfX2Nvd19zdHJpbmco Y29uc3QgY2hhciosIHNpemVfdCk7CisgICAgX19jb3dfc3RyaW5nKGNvbnN0IF9fY293X3N0 cmluZyYpIG5vZXhjZXB0OworICAgIF9fY293X3N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IF9f Y293X3N0cmluZyYpIG5vZXhjZXB0OworICAgIH5fX2Nvd19zdHJpbmcoKTsKKyAgICBfX2Nv d19zdHJpbmcoX19jb3dfc3RyaW5nJiYpIG5vZXhjZXB0OworICAgIF9fY293X3N0cmluZyYg b3BlcmF0b3I9KF9fY293X3N0cmluZyYmKSBub2V4Y2VwdDsKKyAgICBjb25zdCBjaGFyKiBj X3N0cigpIGNvbnN0IG5vZXhjZXB0OworICB9OworX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9W RVJTSU9OCit9CisjZW5kaWYKKworI2RlZmluZSBfR0xJQkNYWF9ERUZJTkVfU1RERVhDRVBU X0lOU1RBTlRJQVRJT05TIDEKICNpbmNsdWRlIDxzdGRleGNlcHQ+CiAjaW5jbHVkZSA8c3lz dGVtX2Vycm9yPgotI3VuZGVmIF9fY293X3N0cmluZwogCiBuYW1lc3BhY2Ugc3RkIF9HTElC Q1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKQEAgLTExNCwzMCArMTU1LDE2IEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgIC8vIENvbnZlcnRpbmcgY29uc3RydWN0 b3IgZnJvbSBDT1cgc3RkOjpzdHJpbmcgdG8gU1NPIHN0cmluZy4KICAgX19zc29fc3RyaW5n OjpfX3Nzb19zdHJpbmcoY29uc3Qgc3RyaW5nJiBzKQogICA6IF9fc3NvX3N0cmluZyhzLmNf c3RyKCksIHMubGVuZ3RoKCkpIHsgfQorI2VuZGlmCiAKLSAgLy8gUmVkZWZpbmUgX19jb3df c3RyaW5nIHNvIHRoYXQgd2UgY2FuIGRlZmluZSBhbmQgZXhwb3J0IGl0cyBtZW1iZXJzCi0g IC8vIGluIHRlcm1zIG9mIHRoZSBDT1cgc3RkOjpzdHJpbmcuCi0gIHN0cnVjdCBfX2Nvd19z dHJpbmcKLSAgewotICAgIHVuaW9uIHsKLSAgICAgIGNvbnN0IGNoYXIqIF9NX3A7Ci0gICAg ICBjaGFyIF9NX2J5dGVzW3NpemVvZihfTV9wKV07Ci0gICAgICBzdGQ6OnN0cmluZyBfTV9z dHI7Ci0gICAgfTsKLQotICAgIF9fY293X3N0cmluZygpOwotICAgIF9fY293X3N0cmluZyhj b25zdCBzdGQ6OnN0cmluZyYgcyk7Ci0gICAgX19jb3dfc3RyaW5nKGNvbnN0IGNoYXIqLCBz aXplX3Qgbik7Ci0gICAgX19jb3dfc3RyaW5nKGNvbnN0IF9fY293X3N0cmluZyYpIG5vZXhj ZXB0OwotICAgIF9fY293X3N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IF9fY293X3N0cmluZyYp IG5vZXhjZXB0OwotICAgIH5fX2Nvd19zdHJpbmcoKTsKLSAgICBfX2Nvd19zdHJpbmcoX19j b3dfc3RyaW5nJiYpIG5vZXhjZXB0OwotICAgIF9fY293X3N0cmluZyYgb3BlcmF0b3I9KF9f Y293X3N0cmluZyYmKSBub2V4Y2VwdDsKLSAgfTsKLQorI2lmIF9HTElCQ1hYX1VTRV9EVUFM X0FCSSB8fCBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIF9fY293X3N0cmluZzo6X19jb3df c3RyaW5nKCkgOiBfTV9zdHIoKSB7IH0KIAorI2lmICFfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ CiAgIF9fY293X3N0cmluZzo6X19jb3dfc3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSA6 IF9NX3N0cihzKSB7IH0KKyNlbmRpZgorCisgIF9fY293X3N0cmluZzo6X19jb3dfc3RyaW5n KGNvbnN0IGNoYXIqIHMpIDogX01fc3RyKHMpIHsgfQogCiAgIF9fY293X3N0cmluZzo6X19j b3dfc3RyaW5nKGNvbnN0IGNoYXIqIHMsIHNpemVfdCBuKSA6IF9NX3N0cihzLCBuKSB7IH0K IApAQCAtMTUxLDcgKzE3OCw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKLSAgX19jb3dfc3RyaW5nOjp+X19jb3dfc3Ry aW5nKCkgeyBfTV9zdHIufmJhc2ljX3N0cmluZygpOyB9CisgIF9fY293X3N0cmluZzo6fl9f Y293X3N0cmluZygpIHsgX01fc3RyLn5jb3dzdHIoKTsgfQogCiAgIF9fY293X3N0cmluZzo6 X19jb3dfc3RyaW5nKF9fY293X3N0cmluZyYmIHMpIG5vZXhjZXB0CiAgIDogX01fc3RyKHN0 ZDo6bW92ZShzLl9NX3N0cikpIHsgfQpAQCAtMTYzLDEyICsxOTAsMTcgQEAgX0dMSUJDWFhf QkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIAotICBz dGF0aWNfYXNzZXJ0KHNpemVvZihfX2Nvd19zdHJpbmcpID09IHNpemVvZihzdGQ6OnN0cmlu ZyksCisgIGNvbnN0IGNoYXIqCisgIF9fY293X3N0cmluZzo6Y19zdHIoKSBjb25zdCBub2V4 Y2VwdAorICB7IHJldHVybiBfTV9zdHIuY19zdHIoKTsgfQorCisgIHN0YXRpY19hc3NlcnQo c2l6ZW9mKF9fY293X3N0cmluZykgPT0gc2l6ZW9mKGNvd3N0ciksCiAgICAgICAgICAgICAg ICAgInNpemVvZihzdGQ6OnN0cmluZykgaGFzIGNoYW5nZWQiKTsKLSAgc3RhdGljX2Fzc2Vy dChhbGlnbm9mKF9fY293X3N0cmluZykgPT0gYWxpZ25vZihzdGQ6OnN0cmluZyksCisgIHN0 YXRpY19hc3NlcnQoYWxpZ25vZihfX2Nvd19zdHJpbmcpID09IGFsaWdub2YoY293c3RyKSwK ICAgICAgICAgICAgICAgICAiYWxpZ25vZihzdGQ6OnN0cmluZykgaGFzIGNoYW5nZWQiKTsK LSNlbmRpZgorI2VuZGlmIC8vIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIAorI2lmICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSQogICAvLyBSZXR1cm4gZXJyb3JfY2F0ZWdvcnk6Om1lc3Nh Z2UoKSBhcyBhbiBTU08gc3RyaW5nCiAgIF9fc3NvX3N0cmluZwogICBlcnJvcl9jYXRlZ29y eTo6X01fbWVzc2FnZShpbnQgaSkgY29uc3QKQEAgLTE3NiwxMCArMjA4LDEyIEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgc3RyaW5nIG1zZyA9IHRoaXMtPm1l c3NhZ2UoaSk7CiAgICAgcmV0dXJuIHttc2cuY19zdHIoKSwgbXNnLmxlbmd0aCgpfTsKICAg fQorI2VuZGlmCiAKIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1l c3BhY2UKIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogLy8gU3VwcG9ydCBmb3Ig dGhlIFRyYW5zYWN0aW9uYWwgTWVtb3J5IFRTIChONDUxNCkuCiAvLwogLy8gbG9naWNfZXJy b3IgYW5kIHJ1bnRpbWVfZXJyb3IgYm90aCBjYXJyeSBhIG1lc3NhZ2UgaW4gdGhlIGZvcm0g b2YgYSBDT1cKQEAgLTQ2MywzICs0OTcsNCBAQCBDVE9SRFRPUigxNXVuZGVyZmxvd19lcnJv ciwgc3RkOjp1bmRlcmZsb3dfZXJyb3IsIHJ1bnRpbWVfZXJyb3IpCiAKICNlbmRpZiAgLy8g X0dMSUJDWFhfVVNFX0M5OV9TVERJTlQKICNlbmRpZiAgLy8gX0dMSUJDWFhfVVNFX1dFQUtf UkVGCisjZW5kaWYgIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQpkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3RyaW5nLWluc3QuY2MgYi9saWJzdGRjKyst djMvc3JjL2MrKzExL2Nvdy1zdHJpbmctaW5zdC5jYwppbmRleCAxNGE5YTk5YjQ2MC4uODU4 ZTgxYjk3NmYgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0cmlu Zy1pbnN0LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0cmluZy1pbnN0 LmNjCkBAIC0yOSwxMCArMjksNyBAQAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ IDAKICNpbmNsdWRlICJzdHJpbmctaW5zdC5jYyIKIAotI2lmICEgX0dMSUJDWFhfVVNFX0RV QUxfQUJJCi0jIGVycm9yIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGNvbXBpbGVkIGZvciB0 aGlzIGNvbmZpZ3VyYXRpb24uCi0jZW5kaWYKLQorI2lmIF9HTElCQ1hYX1VTRV9EVUFMX0FC SSAmJiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICNpbmNsdWRlIDxyYW5kb20+CiAKIG5h bWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQpAQCAtNDUsMyArNDIs NCBAQCBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKICAgcmFu ZG9tX2RldmljZTo6X01faW5pdF9wcmV0cjEoY29uc3Qgc3RkOjpzdHJpbmcmIHRva2VuKQog ICB7IF9NX2luaXQodG9rZW4uY19zdHIoKSwgdG9rZW4ubGVuZ3RoKCkpOyB9CiB9IC8vIG5h bWVzcGFjZQorI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nv dy1zdHJpbmctaW8taW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0cmlu Zy1pby1pbnN0LmNjCmluZGV4IGExNjc4OTRiMTU3Li42YmU3Mzg3YzFhOSAxMDA2NDQKLS0t IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3RyaW5nLWlvLWluc3QuY2MKKysrIGIv bGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3RyaW5nLWlvLWluc3QuY2MKQEAgLTMwLDEw ICszMCw3IEBACiAjaW5jbHVkZSA8aXN0cmVhbT4KICNpbmNsdWRlIDxvc3RyZWFtPgogCi0j aWYgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBu b3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNlbmRpZgotCisjaWYg ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lC SUxJVFkoZGVmYXVsdCkKIHsKIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBA IC01NywzICs1NCw0IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIF9H TElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKKyNlbmRpZgpk aWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctd3N0cmluZy1pbnN0LmNj IGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctd3N0cmluZy1pbnN0LmNjCmluZGV4IDJh YWJjMDUyMTRmLi45ODViNGRmNzEwZiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9j KysxMS9jb3ctd3N0cmluZy1pbnN0LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEv Y293LXdzdHJpbmctaW5zdC5jYwpAQCAtMjksMTIgKzI5LDkgQEAKICNkZWZpbmUgX0dMSUJD WFhfVVNFX0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KIAorI2lm ICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9U CiAjZGVmaW5lIEMgd2NoYXJfdAogI2luY2x1ZGUgInN0cmluZy1pbnN0LmNjIgotCi0jaWYg ISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBub3Qg YmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KICNlbmRpZgotCiAjZW5kaWYK ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmctaW8taW5z dC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmctaW8taW5zdC5jYwpp bmRleCA0MWVmOTZiYTg1Yi4uNjcxZmExM2YwMzkgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12 My9zcmMvYysrMTEvY293LXdzdHJpbmctaW8taW5zdC5jYworKysgYi9saWJzdGRjKystdjMv c3JjL2MrKzExL2Nvdy13c3RyaW5nLWlvLWluc3QuY2MKQEAgLTI5LDE0ICsyOSwxMSBAQAog I2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAKICNpbmNsdWRlIDxiaXRzL2MrK2Nv bmZpZy5oPgogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAjaWZkZWYgX0dMSUJD WFhfVVNFX1dDSEFSX1QKICNpbmNsdWRlIDxvc3RyZWFtPgogI2luY2x1ZGUgPGlzdHJlYW0+ CiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUgc2hv dWxkIG5vdCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlmCi0K IG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQogewogX0dMSUJD WFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KQEAgLTYxLDMgKzU4LDQgQEAgX0dMSUJDWFhf QkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lP TgogfSAvLyBuYW1lc3BhY2UKICNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRj KystdjMvc3JjL2MrKzExL2N4eDExLWhhc2hfdHIxLmNjIGIvbGlic3RkYysrLXYzL3NyYy9j KysxMS9jeHgxMS1oYXNoX3RyMS5jYwppbmRleCAwMTBkOWRiZGI5Ny4uYTkwZjBkOWE0MjUg MTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEtaGFzaF90cjEuY2MK KysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1oYXNoX3RyMS5jYwpAQCAtMjUs OSArMjUsNyBAQAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDEKICNpbmNsdWRl IDxzdHJpbmc+CiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlz IGZpbGUgc2hvdWxkIG5vdCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgot I2VuZGlmCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogCiAjaW5jbHVkZSA8dHIxL2Z1 bmN0aW9uYWw+CiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkK QEAgLTU3LDMgKzU1LDUgQEAgbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRl ZmF1bHQpCiAjZW5kaWYKICAgfQogfQorCisjZW5kaWYgLy8gX0dMSUJDWFhfVVNFX0NYWDEx X0FCSQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1pb3NfZmFp bHVyZS5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEtaW9zX2ZhaWx1cmUuY2MK aW5kZXggYmQzZmQ1NTZiZDQuLjcwOTViZjk2ODY1IDEwMDY0NAotLS0gYS9saWJzdGRjKyst djMvc3JjL2MrKzExL2N4eDExLWlvc19mYWlsdXJlLmNjCisrKyBiL2xpYnN0ZGMrKy12My9z cmMvYysrMTEvY3h4MTEtaW9zX2ZhaWx1cmUuY2MKQEAgLTM4LDkgKzM4LDcgQEAKICMgZGVm aW5lIF8obXNnaWQpICAgKG1zZ2lkKQogI2VuZGlmCiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9E VUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBjb21waWxlZCBmb3Ig dGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlmCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FC SQogCiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKQEAg LTYyLDcgKzYwLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgaW9z X2Jhc2U6OmZhaWx1cmU6OndoYXQoKSBjb25zdCB0aHJvdygpCiAgIHsgcmV0dXJuIHJ1bnRp bWVfZXJyb3I6OndoYXQoKTsgfQogCi0jaWYgX19jcHBfcnR0aQorI2lmIF9HTElCQ1hYX1VT RV9EVUFMX0FCSSAmJiBfX2NwcF9ydHRpCiAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVm aW5lZCBpbiBzcmMvYysrOTgvaW9zX2ZhaWx1cmUuY2MKICAgZXh0ZXJuIHZvaWQgX19jb25z dHJ1Y3RfaW9zX2ZhaWx1cmUodm9pZCosIGNvbnN0IGNoYXIqKTsKICAgZXh0ZXJuIHZvaWQg X19kZXN0cm95X2lvc19mYWlsdXJlKHZvaWQqKTsKQEAgLTExOCw3ICsxMTYsNyBAQCBfR0xJ QkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgIC8vIE90aGVyd2lzZSBwcm9jZWVk IGFzIG5vcm1hbCB0byBzZWUgaWYgdGhlIGhhbmRsZXIgbWF0Y2hlcy4KICAgICByZXR1cm4g X19jbGFzc190eXBlX2luZm86Ol9fZG9fdXBjYXN0KGRzdF90eXBlLCBvYmpfcHRyKTsKICAg fQotI2Vsc2UgLy8gISBfX2NwcF9ydHRpCisjZWxzZSAvLyAhIF9HTElCQ1hYX1VTRV9EVUFM X0FCSSB8fCAhIF9fY3BwX3J0dGkKICAgdXNpbmcgX19pb3NfZmFpbHVyZSA9IGlvczo6ZmFp bHVyZTsKICNlbmRpZgogCkBAIC0xMzYsMyArMTM0LDUgQEAgX0dMSUJDWFhfQkVHSU5fTkFN RVNQQUNFX1ZFUlNJT04KIAogX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCiB9IC8v IG5hbWVzcGFjZQorCisjZW5kaWYgLy8gX0dMSUJDWFhfVVNFX0NYWDExX0FCSQpkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1sb2NhbGUtaW5zdC5jYyBiL2xp YnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEtbG9jYWxlLWluc3QuY2MKaW5kZXggMTMwMzZh ZTlmNmUuLjM3MDQyMzU0ZTRmIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzEx L2N4eDExLWxvY2FsZS1pbnN0LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4 MTEtbG9jYWxlLWluc3QuY2MKQEAgLTI3LDExICsyNyw1IEBACiAvLyBGYWNldCBpbnN0YW50 aWF0aW9ucyB1c2luZyBuZXcgQUJJIHN0cmluZ3MuCiAKICNkZWZpbmUgX0dMSUJDWFhfVVNF X0NYWDExX0FCSSAxCi0jaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSNpZiAhIF9HTElC Q1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBjb21w aWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlmCiAKLSNkZWZpbmUgQyBjaGFy Ci0jZGVmaW5lIENfaXNfY2hhcgotIyBpbmNsdWRlICJsb2NhbGUtaW5zdC5jYyIKKyNpbmNs dWRlICJsb2NhbGUtaW5zdC5jYyIKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysr MTEvY3h4MTEtc3RkZXhjZXB0LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1z dGRleGNlcHQuY2MKaW5kZXggMDczNjhjN2MzZjIuLjE4NDNmZDY3MTkxIDEwMDY0NAotLS0g YS9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLXN0ZGV4Y2VwdC5jYworKysgYi9saWJz dGRjKystdjMvc3JjL2MrKzExL2N4eDExLXN0ZGV4Y2VwdC5jYwpAQCAtMjksOSArMjksNyBA QAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDEKICNpbmNsdWRlIDxzdGRleGNl cHQ+CiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUg c2hvdWxkIG5vdCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlm CisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogCiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hY X1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKQEAgLTc2LDMgKzc0LDUgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX1ZFUlNJT04KIAogX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9O CiB9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gX0dMSUJDWFhfVVNFX0NYWDExX0FCSQpk aWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS13bG9jYWxlLWluc3Qu Y2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLXdsb2NhbGUtaW5zdC5jYwppbmRl eCA4MGIwMzM5YTFjNC4uMjEwYzAwMTc3ZDEgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9z cmMvYysrMTEvY3h4MTEtd2xvY2FsZS1pbnN0LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMv YysrMTEvY3h4MTEtd2xvY2FsZS1pbnN0LmNjCkBAIC0yOCwxMSArMjgsMTAgQEAKIAogI2Rl ZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDEKICNpbmNsdWRlIDxiaXRzL2MrK2NvbmZp Zy5oPgotI2lmICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCi0jIGVycm9yIFRoaXMgZmlsZSBz aG91bGQgbm90IGJlIGNvbXBpbGVkIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCi0jZW5kaWYK IAotI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0jZGVmaW5lIEMgd2NoYXJfdAotI2lu Y2x1ZGUgImxvY2FsZS1pbnN0LmNjIgorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMg aWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKKyMgIGRlZmluZSBDIHdjaGFyX3QKKyMgIGlu Y2x1ZGUgImxvY2FsZS1pbnN0LmNjIgorIyBlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9s aWJzdGRjKystdjMvc3JjL2MrKzExL2xvY2FsZS1pbnN0LW51bWVyaWMuaCBiL2xpYnN0ZGMr Ky12My9zcmMvYysrMTEvbG9jYWxlLWluc3QtbnVtZXJpYy5oCmluZGV4IGIxNWFkMmU4OTVj Li4yZTgyNzBlMjdiMyAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9sb2Nh bGUtaW5zdC1udW1lcmljLmgKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9sb2NhbGUt aW5zdC1udW1lcmljLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIHN0ZCBfR0xJ QkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7Ci0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RV QUxfQUJJCiAvLyB1c2VfZmFjZXQgYW5kIGhhc19mYWNldCBpbnN0YW50aWF0aW9ucwogSU5T VEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKG51bV9nZXQ8Qz4pOwogSU5TVEFOVElBVEVfRkFD RVRfQUNDRVNTT1JTKG51bV9wdXQ8Qz4pOwpAQCAtMzgsNyArMzgsNyBAQCBJTlNUQU5USUFU RV9GQUNFVF9BQ0NFU1NPUlMobnVtX3B1dDxDPik7CiAKIF9HTElCQ1hYX0JFR0lOX05BTUVT UEFDRV9MREJMCiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKICAgdGVtcGxh dGUgY2xhc3MgbnVtX2dldDxDLCBpc3RyZWFtYnVmX2l0ZXJhdG9yPEM+ID47CiAgIHRlbXBs YXRlIGNsYXNzIG51bV9wdXQ8Qywgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxDPiA+OwogI2VuZGlm CkBAIC04OCw3ICs4OCw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9MREJMCiAJCSAg IHVuc2lnbmVkIGxvbmcgbG9uZyYpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiAhIF9HTElCQ1hY X1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJ QkNYWF9VU0VfRFVBTF9BQkkKICAgLy8gbnVtX3B1dCBtZW1iZXIgZnVuY3Rpb24gdGVtcGxh dGVzCiAgIHRlbXBsYXRlCiAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxDPgpkaWZmIC0tZ2l0 IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9sb2NhbGUtaW5zdC5jYyBiL2xpYnN0ZGMrKy12 My9zcmMvYysrMTEvbG9jYWxlLWluc3QuY2MKaW5kZXggYTg0ZmQ5YzczMmEuLmNlNWVlYWQ1 OTliIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2xvY2FsZS1pbnN0LmNj CisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvbG9jYWxlLWluc3QuY2MKQEAgLTM1LDgg KzM1LDE3IEBACiAjIGRlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAKICNlbmRpZgog Ci0jaW5jbHVkZSA8bG9jYWxlPgorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgZGVm aW5lIF9HTElCQ1hYX0JVSUxEX0NYWDExX0FCSSAxCisjZWxzZQorIyBkZWZpbmUgX0dMSUJD WFhfQlVJTERfQ1hYMTFfQUJJIDAKKyNlbmRpZgorCisjaW5jbHVkZSA8Yml0cy9jKytjb25m aWcuaD4KIAorI2lmIF9HTElCQ1hYX0JVSUxEX0NYWDExX0FCSSA9PSBfR0xJQkNYWF9VU0Vf Q1hYMTFfQUJJCisKKyNpbmNsdWRlIDxsb2NhbGU+CiAvLyBJbnN0YW50aWF0aW9uIGNvbmZp Z3VyYXRpb24uCiAjaWZuZGVmIEMKICMgZGVmaW5lIEMgY2hhcgpAQCAtNTIsNyArNjEsNyBA QCBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKICAgLy8gbW9uZXlwdW5jdCwgbW9uZXlfZ2V0 LCBhbmQgbW9uZXlfcHV0Ci0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYgISBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAgIHRl bXBsYXRlIHN0cnVjdCBfX21vbmV5cHVuY3RfY2FjaGU8QywgZmFsc2U+OwogICB0ZW1wbGF0 ZSBzdHJ1Y3QgX19tb25leXB1bmN0X2NhY2hlPEMsIHRydWU+OwogI2VuZGlmCkBAIC02NCw3 ICs3Myw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9DWFgxMQogX0dMSUJDWFhfRU5E X05BTUVTUEFDRV9DWFgxMQogCiAgIC8vIG51bXB1bmN0LCBudW1wdW5jdF9ieW5hbWUsIG51 bV9nZXQsIGFuZCBudW1fcHV0Ci0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYg ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAg IHRlbXBsYXRlIHN0cnVjdCBfX251bXB1bmN0X2NhY2hlPEM+OwogI2VuZGlmCiBfR0xJQkNY WF9CRUdJTl9OQU1FU1BBQ0VfQ1hYMTEKQEAgLTczLDcgKzgyLDcgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX0NYWDExCiBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0NYWDExCiAKICAg Ly8gdGltZV9nZXQgYW5kIHRpbWVfcHV0Ci0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ CisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxf QUJJCiAgIHRlbXBsYXRlIGNsYXNzIF9fdGltZXB1bmN0PEM+OwogICB0ZW1wbGF0ZSBzdHJ1 Y3QgX190aW1lcHVuY3RfY2FjaGU8Qz47CiAgIHRlbXBsYXRlIGNsYXNzIHRpbWVfcHV0PEMs IG9zdHJlYW1idWZfaXRlcmF0b3I8Qz4gPjsKQEAgLTk3LDEzICsxMDYsMTMgQEAgX0dMSUJD WFhfRU5EX05BTUVTUEFDRV9DWFgxMQogICBjdHlwZV9ieW5hbWU8Qz46OmN0eXBlX2J5bmFt ZShjb25zdCBzdHJpbmcmIF9fcywgc2l6ZV90IF9fcmVmcykKICAgOiBjdHlwZV9ieW5hbWUo X19zLmNfc3RyKCksIF9fcmVmcykgeyB9CiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVB TF9BQkkKICAgaW5saW5lIHRlbXBsYXRlIGNsYXNzIF9fY3R5cGVfYWJzdHJhY3RfYmFzZTxD PjsKICAgdGVtcGxhdGUgY2xhc3MgY3R5cGVfYnluYW1lPEM+OwogI2VuZGlmCiAKICAgLy8g Y29kZWN2dAotI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhf VVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICBpbmxpbmUgdGVt cGxhdGUgY2xhc3MgX19jb2RlY3Z0X2Fic3RyYWN0X2Jhc2U8QywgY2hhciwgbWJzdGF0ZV90 PjsKICAgdGVtcGxhdGUgY2xhc3MgY29kZWN2dF9ieW5hbWU8QywgY2hhciwgbWJzdGF0ZV90 PjsKICNlbHNlCkBAIC0xMTgsNyArMTI3LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X0NYWDExCiBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0NYWDExCiAKIC8vIHVzZV9mYWNldCBh bmQgaGFzX2ZhY2V0IGluc3RhbnRpYXRpb25zCi0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RV QUxfQUJJCiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlMoY3R5cGU8Qz4pOwogSU5TVEFO VElBVEVfRkFDRVRfQUNDRVNTT1JTKGNvZGVjdnQ8QywgY2hhciwgbWJzdGF0ZV90Pik7CiAj ZW5kaWYKQEAgLTEyNywxNCArMTM2LDE0IEBAIElOU1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09S UyhudW1wdW5jdDxDPik7CiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlMobW9uZXlwdW5j dDxDLCBmYWxzZT4pOwogLy8gTm8gZXhwbGljaXQgaW5zdGFudGlhdGlvbiBvZiBoYXNfZmFj ZXQ8bW9uZXlwdW5jdDxDLCB0cnVlPj4gZm9yIHNvbWUgcmVhc29uLgogSU5TVEFOVElBVEVf VVNFX0ZBQ0VUICAgICAgKG1vbmV5cHVuY3Q8QywgdHJ1ZT4pOwotI2lmICEgX0dMSUJDWFhf VVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElC Q1hYX1VTRV9EVUFMX0FCSQogSU5TVEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKF9fdGltZXB1 bmN0PEM+KTsKIElOU1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09SUyh0aW1lX3B1dDxDPik7CiAj ZW5kaWYKIElOU1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09SUyh0aW1lX2dldDxDPik7CiBJTlNU QU5USUFURV9GQUNFVF9BQ0NFU1NPUlMobWVzc2FnZXM8Qz4pOwogCi0jaWYgISBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dM SUJDWFhfVVNFX0RVQUxfQUJJCiAgIC8vIGxvY2FsZSBmdW5jdGlvbnMuCiAgIHRlbXBsYXRl CiAgICAgQyoKQEAgLTE2MywzICsxNzIsNSBAQCBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZF UlNJT04KICNpZiBkZWZpbmVkIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVCAmJiAhIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKICNpbmNsdWRlICJjb21wYXRpYmlsaXR5LWxkYmwtZmFj ZXRzLWFsaWFzZXMuaCIKICNlbmRpZiAvLyBfR0xJQkNYWF9MT05HX0RPVUJMRV9DT01QQVQK KworI2VuZGlmIC8vICBfR0xJQkNYWF9CVUlMRF9DWFgxMV9BQkkgPT0gX0dMSUJDWFhfVVNF X0NYWDExX0FCSQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9zdHJpbmct aW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvc3RyaW5nLWluc3QuY2MKaW5kZXgg ZWM1YmE0MWViY2QuLmYzNWI3Zjg0MzNkIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3Jj L2MrKzExL3N0cmluZy1pbnN0LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvc3Ry aW5nLWluc3QuY2MKQEAgLTM1LDYgKzM1LDEyIEBACiAjIGRlZmluZSBfR0xJQkNYWF9VU0Vf Q1hYMTFfQUJJIDEKICNlbmRpZgogCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBk ZWZpbmUgX0dMSUJDWFhfQlVJTERfQ1hYMTFfQUJJIDEKKyNlbHNlCisjIGRlZmluZSBfR0xJ QkNYWF9CVUlMRF9DWFgxMV9BQkkgMAorI2VuZGlmCisKIC8vIFByZXZlbnQgdGhlIGJhc2lj X3N0cmluZyhjb25zdCBfQ2hhclQqLCBjb25zdCBfQWxsb2MmKSBhbmQKIC8vIGJhc2ljX3N0 cmluZyhzaXplX3R5cGUsIF9DaGFyVCwgY29uc3QgX0FsbG9jJikgY29uc3RydWN0b3JzIGZy b20gYmVpbmcKIC8vIHJlcGxhY2VkIGJ5IGNvbnN0cmFpbmVkIGZ1bmN0aW9uIHRlbXBsYXRl cywgc28gdGhhdCB3ZSBpbnN0YW50aWF0ZSB0aGUKQEAgLTQ1LDE0ICs1MSwzOCBAQAogCiAj aW5jbHVkZSA8c3RyaW5nPgogCisjaWYgX0dMSUJDWFhfVVNFX0RVQUxfQUJJIHx8IF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkKKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisKKyNpZiBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCisjIGluY2x1ZGUgPGJpdHMvY293X3N0cmluZy5oPgordHlwZWRl ZiBzdGQ6Ol9fZGV0YWlsOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxj aGFyPiwKKwkJCQkgICAgc3RkOjphbGxvY2F0b3I8Y2hhcj4+IGNvd3N0cjsKKyNlbHNlCit0 eXBlZGVmIHN0ZDo6c3RyaW5nIGNvd3N0cjsKKyNlbmRpZgorCitzdGF0aWNfYXNzZXJ0KHNp emVvZihzdGQ6Ol9fY293X3N0cmluZykgPT0gc2l6ZW9mKGNvd3N0ciksCisJICAgICAgInNp emVvZihzdGQ6OnN0cmluZykgaGFzIGNoYW5nZWQiKTsKK3N0YXRpY19hc3NlcnQoYWxpZ25v ZihzdGQ6Ol9fY293X3N0cmluZykgPT0gYWxpZ25vZihjb3dzdHIpLAorCSAgICAgICJhbGln bm9mKHN0ZDo6c3RyaW5nKSBoYXMgY2hhbmdlZCIpOworI2VuZGlmIC8vIF9HTElCQ1hYX1VT RV9EVUFMX0FCSSB8fCBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisKKyNpZiBfR0xJQkNYWF9V U0VfQ1hYMTFfQUJJICYmICEgX0dMSUJDWFhfQlVJTERfQ1hYMTFfQUJJCisjIGluY2x1ZGUg PGJpdHMvY293X3N0cmluZy5oPgorI2VuZGlmCisKIC8vIEluc3RhbnRpYXRpb24gY29uZmln dXJhdGlvbi4KICNpZm5kZWYgQwogIyBkZWZpbmUgQyBjaGFyCiAjZW5kaWYKIAorI2lmIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkgPT0gX0dMSUJDWFhfQlVJTERfQ1hYMTFfQUJJCiBuYW1l c3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKKyNpZiBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCiBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgorI2Vu ZGlmCiAKICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8Qz4gUzsKIApAQCAtMTA4LDcgKzEzOCw5 IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAJCSAgICBmb3J3YXJkX2l0 ZXJhdG9yX3RhZyk7CiAjZW5kaWYKIAorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIF9H TElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgorI2VuZGlmCiB9IC8vIG5hbWVzcGFjZQog CiBuYW1lc3BhY2UgX19nbnVfY3h4IF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKQEAg LTEyMSwzICsxNTMsMTMgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAog X0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCiB9IC8vIG5hbWVzcGFjZQorI2VsaWYg ISBfR0xJQkNYWF9CVUlMRF9DWFgxMV9BQkkKK25hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklT SUJJTElUWShkZWZhdWx0KQoreworICBuYW1lc3BhY2UgX19kZXRhaWwKKyAgeworICAgIHRl bXBsYXRlIGJhc2ljX3N0cmluZzxDLCBzdGQ6OmNoYXJfdHJhaXRzPEM+LCBzdGQ6OmFsbG9j YXRvcjxDPj46OnNpemVfdHlwZQorICAgICAgYmFzaWNfc3RyaW5nPEMsIHN0ZDo6Y2hhcl90 cmFpdHM8Qz4sIHN0ZDo6YWxsb2NhdG9yPEM+Pjo6X1JlcDo6X1NfZW1wdHlfcmVwX3N0b3Jh Z2VbXTsKKyAgfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2Mr KzExL3dsb2NhbGUtaW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvd2xvY2FsZS1p bnN0LmNjCmluZGV4IDI4NGQ1NjZhOTlhLi5kOWM4ZTg3OGFhOCAxMDA2NDQKLS0tIGEvbGli c3RkYysrLXYzL3NyYy9jKysxMS93bG9jYWxlLWluc3QuY2MKKysrIGIvbGlic3RkYysrLXYz L3NyYy9jKysxMS93bG9jYWxlLWluc3QuY2MKQEAgLTMwLDcgKzMwLDkgQEAKICNkZWZpbmUg X0dMSUJDWFhfVVNFX0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4K IAotI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0jZGVmaW5lIEMgd2NoYXJfdAotI2lu Y2x1ZGUgImxvY2FsZS1pbnN0LmNjIgotI2VuZGlmIC8vIF9HTElCQ1hYX1VTRV9XQ0hBUl9U CisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjIGlmZGVmIF9HTElCQ1hYX1VTRV9X Q0hBUl9UCisjICBkZWZpbmUgQyB3Y2hhcl90CisjICBpbmNsdWRlICJsb2NhbGUtaW5zdC5j YyIKKyMgZW5kaWYgLy8gX0dMSUJDWFhfVVNFX1dDSEFSX1QKKyNlbmRpZgpkaWZmIC0tZ2l0 IGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9NYWtlZmlsZS5hbSBiL2xpYnN0ZGMrKy12My9z cmMvYysrOTgvTWFrZWZpbGUuYW0KaW5kZXggZDEyZmRmMGYxMjEuLmEyZGZmOTkyYTZiIDEw MDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L01ha2VmaWxlLmFtCisrKyBiL2xp YnN0ZGMrKy12My9zcmMvYysrOTgvTWFrZWZpbGUuYW0KQEAgLTg2LDEyICs4Niw4IEBAIGhv c3Rfc291cmNlc19leHRyYSA9IFwKIGMrK2xvY2FsZS5jYzogJHtnbGliY3h4X3NyY2Rpcn0v JChDTE9DQUxFX0NDKQogCSQoTE5fUykgJHtnbGliY3h4X3NyY2Rpcn0vJChDTE9DQUxFX0ND KSAuLyRAIHx8IHRydWUKIAotaWYgRU5BQkxFX0RVQUxfQUJJCi1jeHgxMV9hYmlfc291cmNl cyA9IFwKLQljb3ctaXN0cmVhbS1zdHJpbmcuY2MKLWVsc2UKLWN4eDExX2FiaV9zb3VyY2Vz ID0KLWVuZGlmCitiYXNpY19maWxlLmNjOiAke2dsaWJjeHhfc3JjZGlyfS8kKEJBU0lDX0ZJ TEVfQ0MpCisJJChMTl9TKSAke2dsaWJjeHhfc3JjZGlyfS8kKEJBU0lDX0ZJTEVfQ0MpIC4v JEAgfHwgdHJ1ZQogCiBpZiBFTkFCTEVfRVhURVJOX1RFTVBMQVRFCiAjIFhURU1QTEFURV9G TEFHUyA9IC1mbm8taW1wbGljaXQtdGVtcGxhdGVzCkBAIC0xMTQsNiArMTEwLDcgQEAgc291 cmNlcyA9IFwKIAltdF9hbGxvY2F0b3IuY2MgXAogCWNvZGVjdnQuY2MgXAogCWNvbXBsZXhf aW8uY2MgXAorCWNvdy1pc3RyZWFtLXN0cmluZy5jYyBcCiAJZ2xvYmFsc19pby5jYyBcCiAJ aGFzaF90cjEuY2MgXAogCWhhc2h0YWJsZV90cjEuY2MgXApAQCAtMTM2LDcgKzEzMyw2IEBA IHNvdXJjZXMgPSBcCiAJaXN0cmVhbS1zdHJpbmcuY2MgXAogCXN0cmVhbWJ1Zi5jYyBcCiAJ dmFsYXJyYXkuY2MgXAotCSR7Y3h4MTFfYWJpX3NvdXJjZXN9IFwKIAkke2hvc3Rfc291cmNl c30gXAogCSR7aG9zdF9zb3VyY2VzX2V4dHJhfSBcCiAJJHtpbnN0X3NvdXJjZXN9IFwKZGlm ZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvY29tcGF0aWJpbGl0eS5jYyBiL2xp YnN0ZGMrKy12My9zcmMvYysrOTgvY29tcGF0aWJpbGl0eS5jYwppbmRleCAzZjA5NzNlNzQx Zi4uNTg2YTdiNGNiODMgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvY29t cGF0aWJpbGl0eS5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzk4L2NvbXBhdGliaWxp dHkuY2MKQEAgLTI1LDcgKzI1LDggQEAKICNkZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FC SSAwCiAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KIAotI2lmIGRlZmluZWQoX0dMSUJD WFhfU1lNVkVSX0dOVSkgJiYgZGVmaW5lZChfR0xJQkNYWF9TSEFSRUQpIFwKKyNpZiAhIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkgXAorICAgICYmIGRlZmluZWQoX0dMSUJDWFhfU1lNVkVS X0dOVSkgJiYgZGVmaW5lZChfR0xJQkNYWF9TSEFSRUQpCVwKICAgICAmJiBkZWZpbmVkKF9H TElCQ1hYX0hBVkVfQVNfU1lNVkVSX0RJUkVDVElWRSlcCiAgICAgJiYgZGVmaW5lZChfR0xJ QkNYWF9IQVZFX1NZTVZFUl9TWU1CT0xfUkVOQU1JTkdfUlVOVElNRV9TVVBQT1JUKQogI2Rl ZmluZSBpc3RyZWFtYnVmX2l0ZXJhdG9yIGlzdHJlYW1idWZfaXRlcmF0b3JYWApAQCAtMjIw LDcgKzIyMSw4IEBAIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogCiAvLyBOQjog VGhlc2Ugc3ltYm9scyByZW5hbWVzIHNob3VsZCBnbyBpbnRvIHRoZSBzaGFyZWQgbGlicmFy eSBvbmx5LAogLy8gYW5kIG9ubHkgdGhvc2Ugc2hhcmVkIGxpYnJhcmllcyB0aGF0IHN1cHBv cnQgdmVyc2lvbmluZy4KLSNpZiBkZWZpbmVkKF9HTElCQ1hYX1NZTVZFUl9HTlUpICYmIGRl ZmluZWQoX0dMSUJDWFhfU0hBUkVEKSBcCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ IFwKKyAgICAmJiBkZWZpbmVkKF9HTElCQ1hYX1NZTVZFUl9HTlUpICYmIGRlZmluZWQoX0dM SUJDWFhfU0hBUkVEKQlcCiAgICAgJiYgZGVmaW5lZChfR0xJQkNYWF9IQVZFX0FTX1NZTVZF Ul9ESVJFQ1RJVkUpIFwKICAgICAmJiBkZWZpbmVkKF9HTElCQ1hYX0hBVkVfU1lNVkVSX1NZ TUJPTF9SRU5BTUlOR19SVU5USU1FX1NVUFBPUlQpCiAKQEAgLTUyNSw3ICs1MjcsNyBAQCBf R0xJQkNYWF9NQVRITF9XUkFQUEVSMSAodGFuLCBHTElCQ1hYXzMuNCk7CiAjZW5kaWYKICNl bmRpZiAvLyBfR0xJQkNYWF9MT05HX0RPVUJMRV9DT01QQVQKIAotI2VuZGlmCisjZW5kaWYg Ly8gISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAKICNpZmRlZiBfR0xJQkNYWF9MT05HX0RP VUJMRV9DT01QQVQKIGV4dGVybiB2b2lkICpfWlRWTjEwX19jeHhhYml2MTIzX19mdW5kYW1l bnRhbF90eXBlX2luZm9FW107CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzk4 L2Nvdy1pc3RyZWFtLXN0cmluZy5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvY293LWlz dHJlYW0tc3RyaW5nLmNjCmluZGV4IGEzNmI4NGZmMzMzLi4xYzYwMWI3ZTRhZCAxMDA2NDQK LS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9jb3ctaXN0cmVhbS1zdHJpbmcuY2MKKysr IGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9jb3ctaXN0cmVhbS1zdHJpbmcuY2MKQEAgLTI3 LDQgKzI3LDggQEAKIC8vCiAKICNkZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSAwCi0j aW5jbHVkZSAiaXN0cmVhbS1zdHJpbmcuY2MiCisjaW5jbHVkZSA8Yml0cy9jKytjb25maWcu aD4KKworI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBpbmNsdWRlICJpc3RyZWFt LXN0cmluZy5jYyIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKys5 OC9oYXNoX3RyMS5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaGFzaF90cjEuY2MKaW5k ZXggZWUzMTNjZTVkNjIuLmQ4NWMyOGM1NWE3IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMv c3JjL2MrKzk4L2hhc2hfdHIxLmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaGFz aF90cjEuY2MKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgImhhc2gtbG9uZy1kb3Vi bGUtdHIxLWF1eC5jYyIKIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogbmFtZXNw YWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiAgIG5hbWVzcGFjZSB0 cjEKQEAgLTU3LDMgKzU4LDQgQEAgbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZ KGRlZmF1bHQpCiAjZW5kaWYKICAgfQogfQorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NY WDExX0FCSQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9pb3NfZmFpbHVy ZS5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaW9zX2ZhaWx1cmUuY2MKaW5kZXggMDQ2 NzEwOWM5NmYuLmFkMGNkNjA5N2VjIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2Mr Kzk4L2lvc19mYWlsdXJlLmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaW9zX2Zh aWx1cmUuY2MKQEAgLTI5LDIyICsyOSwyNCBAQAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJIDAKICNpbmNsdWRlIDxpb3M+CiAKLSNpZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkg JiYgX19jcHBfcnR0aQotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2luY2x1ZGUgPHR5cGVpbmZv PgotI2VuZGlmCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhf VVNFX0RVQUxfQUJJCisjIGlmIF9HTElCQ1hYX1VTRV9EVUFMX0FCSSAmJiBfX2NwcF9ydHRp CisjICBpbmNsdWRlIDxjeHhhYmkuaD4KKyMgIGluY2x1ZGUgPHR5cGVpbmZvPgorIyBlbmRp ZgogCi0jaWZkZWYgX0dMSUJDWFhfVVNFX05MUworIyBpZmRlZiBfR0xJQkNYWF9VU0VfTkxT CiAjICBpbmNsdWRlIDxsaWJpbnRsLmg+CiAjICBkZWZpbmUgXyhtc2dpZCkgICBnZXR0ZXh0 IChtc2dpZCkKLSNlbHNlCisjIGVsc2UKICMgIGRlZmluZSBfKG1zZ2lkKSAgIChtc2dpZCkK LSNlbmRpZgorIyBlbmRpZgogCiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFko ZGVmYXVsdCkKIHsKIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKKyNpZiAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgaW9zX2Jhc2U6OmZhaWx1cmU6OmZhaWx1cmUo Y29uc3Qgc3RyaW5nJiBfX3N0cikgdGhyb3coKQogICA6IF9NX21zZyhfX3N0cikgeyB9CiAK QEAgLTU0LDYgKzU2LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAg Y29uc3QgY2hhcioKICAgaW9zX2Jhc2U6OmZhaWx1cmU6OndoYXQoKSBjb25zdCB0aHJvdygp CiAgIHsgcmV0dXJuIF9NX21zZy5jX3N0cigpOyB9CisjZW5kaWYKIAogI2lmIF9HTElCQ1hY X1VTRV9EVUFMX0FCSQogICAvLyBXaGVuIHRoZSBkdWFsIEFCSSBpcyBlbmFibGVkIF9fdGhy b3dfaW9zX2ZhaWx1cmUoKSBpcyBkZWZpbmVkIGluCkBAIC04Miw3ICs4NSw3IEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgIH0KICNlbmRpZiAvLyBfX2NwcF9ydHRp CiAKLSNlbHNlIC8vICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCisjZWxpZiAhIF9HTElCQ1hY X1VTRV9DWFgxMV9BQkkKIAogICB2b2lkCiAgIF9fdGhyb3dfaW9zX2ZhaWx1cmUoY29uc3Qg Y2hhciogX19zIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQpAQCAtOTIsNyArOTUsOSBAQCBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICBfX3Rocm93X2lvc19mYWlsdXJl KGNvbnN0IGNoYXIqIHN0ciwgaW50KQogICB7IF9fdGhyb3dfaW9zX2ZhaWx1cmUoc3RyKTsg fQogCi0jZW5kaWYgLy8gX0dMSUJDWFhfVVNFX0RVQUxfQUJJCisjZW5kaWYgLy8gISBfR0xJ QkNYWF9VU0VfQ1hYMTFfQUJJCiAKIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgog fSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8 fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Ny Yy9jKys5OC9pc3RyZWFtLXN0cmluZy5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaXN0 cmVhbS1zdHJpbmcuY2MKaW5kZXggN2IzZTllODY1Y2UuLmYxZTcxZmZjODUzIDEwMDY0NAot LS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L2lzdHJlYW0tc3RyaW5nLmNjCisrKyBiL2xp YnN0ZGMrKy12My9zcmMvYysrOTgvaXN0cmVhbS1zdHJpbmcuY2MKQEAgLTMxLDYgKzMxLDE2 IEBACiAvLyBieSBhbm90aGVyIGZpbGUgd2hpY2ggZGVmaW5lcyBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJPTAuCiAjIGRlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDEKICNlbmRpZgor CisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBkZWZpbmUgX0dMSUJDWFhfQlVJTERf Q1hYMTFfQUJJIDEKKyNlbHNlCisjIGRlZmluZSBfR0xJQkNYWF9CVUlMRF9DWFgxMV9BQkkg MAorI2VuZGlmCisKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgorCisjaWYgX0dMSUJD WFhfQlVJTERfQ1hYMTFfQUJJID09IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICNpbmNsdWRl IDxpc3RyZWFtPgogI2luY2x1ZGUgPHN0cmluZz4KIApAQCAtMjg5LDMgKzI5OSw0IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIF9HTElCQ1hYX0VORF9OQU1FU1BB Q0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKKyNlbmRpZiAvLyBfR0xJQkNYWF9CVUlMRF9D WFgxMV9BQkkgPT0gX0dMSUJDWFhfVVNFX0NYWDExX0FCSQpkaWZmIC0tZ2l0IGEvbGlic3Rk YysrLXYzL3NyYy9jKys5OC9sb2NhbGVfZmFjZXRzLmNjIGIvbGlic3RkYysrLXYzL3NyYy9j Kys5OC9sb2NhbGVfZmFjZXRzLmNjCmluZGV4IGZhNDY5YjFiODcyLi40NDA2YjdlMmUzYyAx MDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9sb2NhbGVfZmFjZXRzLmNjCisr KyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvbG9jYWxlX2ZhY2V0cy5jYwpAQCAtMTI1LDYg KzEyNSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgcmV0dXJu IF9fdGVzdDsKICAgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIGJvb2wK ICAgX192ZXJpZnlfZ3JvdXBpbmcoY29uc3QgY2hhciogX19ncm91cGluZywgc2l6ZV90IF9f Z3JvdXBpbmdfc2l6ZSwKIAkJICAgIGNvbnN0IHN0cmluZyYgX19ncm91cGluZ190bXApIHRo cm93KCkKQEAgLTEzMyw2ICsxMzQsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVS U0lPTgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ3JvdXBpbmdfdG1w LmNfc3RyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ncm91cGlu Z190bXAuc2l6ZSgpKTsKICAgfQorI2VuZGlmCiAKICAgbmFtZXNwYWNlCiAgIHsKZGlmZiAt LWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvc3RkZXhjZXB0LmNjIGIvbGlic3RkYysr LXYzL3NyYy9jKys5OC9zdGRleGNlcHQuY2MKaW5kZXggZGY1YmY5Y2EwY2EuLmE3NzNhMjhl OWJiIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L3N0ZGV4Y2VwdC5jYwor KysgYi9saWJzdGRjKystdjMvc3JjL2MrKzk4L3N0ZGV4Y2VwdC5jYwpAQCAtMzUsOCArMzUs MTAgQEAgbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCisjaWYgISBfR0xJQkNYWF9VU0Vf Q1hYMTFfQUJJCiAgIGxvZ2ljX2Vycm9yOjpsb2dpY19lcnJvcihjb25zdCBzdHJpbmcmIF9f YXJnKQogICA6IGV4Y2VwdGlvbigpLCBfTV9tc2coX19hcmcpIHsgfQorI2VuZGlmCiAKICAg bG9naWNfZXJyb3I6On5sb2dpY19lcnJvcigpIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCB7IH0K IApAQCAtNDQsMjggKzQ2LDM4IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAgIGxvZ2ljX2Vycm9yOjp3aGF0KCkgY29uc3QgX0dMSUJDWFhfVVNFX05PRVhDRVBUCiAg IHsgcmV0dXJuIF9NX21zZy5jX3N0cigpOyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKICAgZG9tYWluX2Vycm9yOjpkb21haW5fZXJyb3IoY29uc3Qgc3RyaW5nJiBfX2Fy ZykKICAgOiBsb2dpY19lcnJvcihfX2FyZykgeyB9CisjZW5kaWYKIAogICBkb21haW5fZXJy b3I6On5kb21haW5fZXJyb3IoKSBfR0xJQkNYWF9VU0VfTk9FWENFUFQgeyB9CiAKKyNpZiAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgaW52YWxpZF9hcmd1bWVudDo6aW52YWxpZF9h cmd1bWVudChjb25zdCBzdHJpbmcmIF9fYXJnKQogICA6IGxvZ2ljX2Vycm9yKF9fYXJnKSB7 IH0KKyNlbmRpZgogCiAgIGludmFsaWRfYXJndW1lbnQ6On5pbnZhbGlkX2FyZ3VtZW50KCkg X0dMSUJDWFhfVVNFX05PRVhDRVBUIHsgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCiAgIGxlbmd0aF9lcnJvcjo6bGVuZ3RoX2Vycm9yKGNvbnN0IHN0cmluZyYgX19hcmcp CiAgIDogbG9naWNfZXJyb3IoX19hcmcpIHsgfQorI2VuZGlmCiAKICAgbGVuZ3RoX2Vycm9y Ojp+bGVuZ3RoX2Vycm9yKCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsgfQogCisjaWYgISBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIG91dF9vZl9yYW5nZTo6b3V0X29mX3JhbmdlKGNv bnN0IHN0cmluZyYgX19hcmcpCiAgIDogbG9naWNfZXJyb3IoX19hcmcpIHsgfQorI2VuZGlm CiAKICAgb3V0X29mX3JhbmdlOjp+b3V0X29mX3JhbmdlKCkgX0dMSUJDWFhfVVNFX05PRVhD RVBUIHsgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIHJ1bnRpbWVfZXJy b3I6OnJ1bnRpbWVfZXJyb3IoY29uc3Qgc3RyaW5nJiBfX2FyZykKICAgOiBleGNlcHRpb24o KSwgX01fbXNnKF9fYXJnKSB7IH0KKyNlbmRpZgogCiAgIHJ1bnRpbWVfZXJyb3I6On5ydW50 aW1lX2Vycm9yKCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsgfQogCkBAIC03MywxOCArODUs MjQgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgcnVudGltZV9lcnJv cjo6d2hhdCgpIGNvbnN0IF9HTElCQ1hYX1VTRV9OT0VYQ0VQVAogICB7IHJldHVybiBfTV9t c2cuY19zdHIoKTsgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIHJhbmdl X2Vycm9yOjpyYW5nZV9lcnJvcihjb25zdCBzdHJpbmcmIF9fYXJnKQogICA6IHJ1bnRpbWVf ZXJyb3IoX19hcmcpIHsgfQorI2VuZGlmCiAKICAgcmFuZ2VfZXJyb3I6On5yYW5nZV9lcnJv cigpIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCB7IH0KIAorI2lmICEgX0dMSUJDWFhfVVNFX0NY WDExX0FCSQogICBvdmVyZmxvd19lcnJvcjo6b3ZlcmZsb3dfZXJyb3IoY29uc3Qgc3RyaW5n JiBfX2FyZykKICAgOiBydW50aW1lX2Vycm9yKF9fYXJnKSB7IH0KKyNlbmRpZgogCiAgIG92 ZXJmbG93X2Vycm9yOjp+b3ZlcmZsb3dfZXJyb3IoKSBfR0xJQkNYWF9VU0VfTk9FWENFUFQg eyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgdW5kZXJmbG93X2Vycm9y Ojp1bmRlcmZsb3dfZXJyb3IoY29uc3Qgc3RyaW5nJiBfX2FyZykKICAgOiBydW50aW1lX2Vy cm9yKF9fYXJnKSB7IH0KKyNlbmRpZgogCiAgIHVuZGVyZmxvd19lcnJvcjo6fnVuZGVyZmxv d19lcnJvcigpIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCB7IH0KIAo= --------------SgO0y4cCwRt0suwKOBfeuj7O--