From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id 19A5A3858D20; Wed, 31 May 2023 17:39:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 19A5A3858D20 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-wr1-x42a.google.com with SMTP id ffacd0b85a97d-30af86a96b4so1776811f8f.3; Wed, 31 May 2023 10:39:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685554776; x=1688146776; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=aboXIouKF8HexavfApNxanwNKi15eeADXOlcTVfP7O8=; b=V3Lkr4RlF3OMDfKjQ/v6258l9K7OnDN6n4muniH5EZoJJIg7lwPH6ccRLLHkdF79IN +bO40ppU1IChgmcRZ6oUuanoS6AePw0mnswQUghmZFLwHxNuUXRh1zxlUqX5itAIbyct dZsoON0rdtbXb7PVcBsfSqHfb4JUyj8ihTKx0Fx62bmSY3e3TPM2IEQEg4mJnLug7M2q 9M/9WSbU6AM+3VJXZpowrSCZKfBCHYlns7Ifb6SQvNC7iBBvRS5vpCvagwBewpWwXn9J TbVxicXreVY7RtXbe7J41qFBGDaNsGKmEvpbb5i2csEAI3j9edrwcjnQ1WD48tJ+ZaL/ WSmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685554776; x=1688146776; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aboXIouKF8HexavfApNxanwNKi15eeADXOlcTVfP7O8=; b=hhlB5yvn4ulcpwaX4jU+Yn033363LiAfcdagrbI5s9AoL9X22D88eWxS3Blx4FGvCC cFHyFMOUgoKzio3aG2ethpsidQlBgtDrlehJkRzdMehF7m8K6aNOefiiHTOjmhNUKEV6 bMquv2xfDN2rx8rENkyW41mXdOQcOg+Nlq7cJ5DCtzSRz+sUTlxt89tyQb9Z/JiKxE0D ZFPfdSQfjZ2hMtEDnh6Wve40YyB4fh2W+bbmIvj8xkuxR9z+voDWMOcm5745P9Hpm6MM PaN5tCNYf/h1KUbF69Wjr0+h6M4sy68lpeGYv1tyLcPsybg42xUXPyGobJXERhj2tAzs 3luQ== X-Gm-Message-State: AC+VfDw/G/kvSIDtR2O72DfQfBBWl1cIGOO7cOxvub0+5bX5KQUBijSh M853OQYSrSL/hm8Tqg0w62XblAmS8bU= X-Google-Smtp-Source: ACHHUZ5FUtX7vhUQcKq6dg5JCuiDUdxC8eoWkJJm61zQOJQp96bwn7DgBVT62fUQ1nXWUdtHYZV97g== X-Received: by 2002:adf:f547:0:b0:30a:ea8b:447d with SMTP id j7-20020adff547000000b0030aea8b447dmr4342178wrp.40.1685554776166; Wed, 31 May 2023 10:39:36 -0700 (PDT) Received: from [10.16.2.152] ([89.207.171.98]) by smtp.gmail.com with ESMTPSA id f15-20020adff58f000000b002fae7408544sm7381429wro.108.2023.05.31.10.39.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 31 May 2023 10:39:35 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------Vo0ctiSIoYLtsNE0SKuxRmiu" Message-ID: <01f2b9e7-14e8-12a7-c275-7e48e3bd94df@gmail.com> Date: Wed, 31 May 2023 19:39:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Content-Language: en-US To: libstdc++ Cc: gcc-patches From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= Subject: [PATCH] Move std::search into algobase.h X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,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. --------------Vo0ctiSIoYLtsNE0SKuxRmiu Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit libstdc++: Reduce inclusion to Move the std::search definition from stl_algo.h to stl_algobase.h and use the later in . For consistency also move std::__parallel::search and associated helpers from to so that std::__parallel::search is accessible along with std::search. libstdc++-v3/ChangeLog:             * include/bits/stl_algo.h             (std::__search, std::search(_FwdIt1, _FwdIt1, _FwdIt2, _FwdIt2, _BinPred)): Move...             * include/bits/stl_algobase.h: ...here.             * include/std/functional: Replace include by .             * include/parallel/algo.h (std::__parallel::search<_FIt1, _FIt2, _BinaryPred>)             (std::__parallel::__search_switch<_FIt1, _FIt2, _BinaryPred, _ItTag1, _ItTag2>):             Move...             * include/parallel/algobase.h: ...here.             * include/std/functional: Remove and             includes. Include . Tested under Linux x86_64. Ok to commit ? François --------------Vo0ctiSIoYLtsNE0SKuxRmiu Content-Type: text/x-patch; charset=UTF-8; name="search_algo.patch" Content-Disposition: attachment; filename="search_algo.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2FsZ28uaCBiL2xp YnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2FsZ28uaAppbmRleCA1NDY5NTQ5MDE2Ni4u MmM1MmVkNTE0MDIgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3Rs X2FsZ28uaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3N0bF9hbGdvLmgKQEAg LTE0MCw1NCArMTQwLDYgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAg Ly8gY291bnQKICAgLy8gY291bnRfaWYKICAgLy8gc2VhcmNoCi0KLSAgdGVtcGxhdGU8dHlw ZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IyLAot CSAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+Ci0gICAgX0dMSUJDWFgyMF9DT05TVEVY UFIKLSAgICBfRm9yd2FyZEl0ZXJhdG9yMQotICAgIF9fc2VhcmNoKF9Gb3J3YXJkSXRlcmF0 b3IxIF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXJhdG9yMSBfX2xhc3QxLAotCSAgICAgX0Zvcndh cmRJdGVyYXRvcjIgX19maXJzdDIsIF9Gb3J3YXJkSXRlcmF0b3IyIF9fbGFzdDIsCi0JICAg ICBfQmluYXJ5UHJlZGljYXRlICBfX3ByZWRpY2F0ZSkKLSAgICB7Ci0gICAgICAvLyBUZXN0 IGZvciBlbXB0eSByYW5nZXMKLSAgICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxIHx8IF9f Zmlyc3QyID09IF9fbGFzdDIpCi0JcmV0dXJuIF9fZmlyc3QxOwotCi0gICAgICAvLyBUZXN0 IGZvciBhIHBhdHRlcm4gb2YgbGVuZ3RoIDEuCi0gICAgICBfRm9yd2FyZEl0ZXJhdG9yMiBf X3AxKF9fZmlyc3QyKTsKLSAgICAgIGlmICgrK19fcDEgPT0gX19sYXN0MikKLQlyZXR1cm4g c3RkOjpfX2ZpbmRfaWYoX19maXJzdDEsIF9fbGFzdDEsCi0JCV9fZ251X2N4eDo6X19vcHM6 Ol9faXRlcl9jb21wX2l0ZXIoX19wcmVkaWNhdGUsIF9fZmlyc3QyKSk7Ci0KLSAgICAgIC8v IEdlbmVyYWwgY2FzZS4KLSAgICAgIF9Gb3J3YXJkSXRlcmF0b3IxIF9fY3VycmVudCA9IF9f Zmlyc3QxOwotCi0gICAgICBmb3IgKDs7KQotCXsKLQkgIF9fZmlyc3QxID0KLQkgICAgc3Rk OjpfX2ZpbmRfaWYoX19maXJzdDEsIF9fbGFzdDEsCi0JCV9fZ251X2N4eDo6X19vcHM6Ol9f aXRlcl9jb21wX2l0ZXIoX19wcmVkaWNhdGUsIF9fZmlyc3QyKSk7Ci0KLQkgIGlmIChfX2Zp cnN0MSA9PSBfX2xhc3QxKQotCSAgICByZXR1cm4gX19sYXN0MTsKLQotCSAgX0ZvcndhcmRJ dGVyYXRvcjIgX19wID0gX19wMTsKLQkgIF9fY3VycmVudCA9IF9fZmlyc3QxOwotCSAgaWYg KCsrX19jdXJyZW50ID09IF9fbGFzdDEpCi0JICAgIHJldHVybiBfX2xhc3QxOwotCi0JICB3 aGlsZSAoX19wcmVkaWNhdGUoX19jdXJyZW50LCBfX3ApKQotCSAgICB7Ci0JICAgICAgaWYg KCsrX19wID09IF9fbGFzdDIpCi0JCXJldHVybiBfX2ZpcnN0MTsKLQkgICAgICBpZiAoKytf X2N1cnJlbnQgPT0gX19sYXN0MSkKLQkJcmV0dXJuIF9fbGFzdDE7Ci0JICAgIH0KLQkgICsr X19maXJzdDE7Ci0JfQotICAgICAgcmV0dXJuIF9fZmlyc3QxOwotICAgIH0KLQogICAvLyBz ZWFyY2hfbgogCiAgIC8qKgpAQCAtNDE0Nyw0OCArNDA5OSw2IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9BTEdPCiAJCQkgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfZXF1YWxf dG9faXRlcigpKTsKICAgICB9CiAKLSAgLyoqCi0gICAqICBAYnJpZWYgU2VhcmNoIGEgc2Vx dWVuY2UgZm9yIGEgbWF0Y2hpbmcgc3ViLXNlcXVlbmNlIHVzaW5nIGEgcHJlZGljYXRlLgot ICAgKiAgQGluZ3JvdXAgbm9uX211dGF0aW5nX2FsZ29yaXRobXMKLSAgICogIEBwYXJhbSAg X19maXJzdDEgICAgIEEgZm9yd2FyZCBpdGVyYXRvci4KLSAgICogIEBwYXJhbSAgX19sYXN0 MSAgICAgIEEgZm9yd2FyZCBpdGVyYXRvci4KLSAgICogIEBwYXJhbSAgX19maXJzdDIgICAg IEEgZm9yd2FyZCBpdGVyYXRvci4KLSAgICogIEBwYXJhbSAgX19sYXN0MiAgICAgIEEgZm9y d2FyZCBpdGVyYXRvci4KLSAgICogIEBwYXJhbSAgX19wcmVkaWNhdGUgIEEgYmluYXJ5IHBy ZWRpY2F0ZS4KLSAgICogIEByZXR1cm4gICBUaGUgZmlyc3QgaXRlcmF0b3IgQGMgaSBpbiB0 aGUgcmFuZ2UKLSAgICogIEBwIFtfX2ZpcnN0MSxfX2xhc3QxLShfX2xhc3QyLV9fZmlyc3Qy KSkgc3VjaCB0aGF0Ci0gICAqICBAcCBfX3ByZWRpY2F0ZSgqKGkrTiksKihfX2ZpcnN0MitO KSkgaXMgdHJ1ZSBmb3IgZWFjaCBAYyBOIGluIHRoZSByYW5nZQotICAgKiAgQHAgWzAsX19s YXN0Mi1fX2ZpcnN0MiksIG9yIEBwIF9fbGFzdDEgaWYgbm8gc3VjaCBpdGVyYXRvciBleGlz dHMuCi0gICAqCi0gICAqICBTZWFyY2hlcyB0aGUgcmFuZ2UgQHAgW19fZmlyc3QxLF9fbGFz dDEpIGZvciBhIHN1Yi1zZXF1ZW5jZSB0aGF0Ci0gICAqICBjb21wYXJlcyBlcXVhbCB2YWx1 ZS1ieS12YWx1ZSB3aXRoIHRoZSBzZXF1ZW5jZSBnaXZlbiBieSBAcAotICAgKiAgW19fZmly c3QyLF9fbGFzdDIpLCB1c2luZyBAcCBfX3ByZWRpY2F0ZSB0byBkZXRlcm1pbmUgZXF1YWxp dHksCi0gICAqICBhbmQgcmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgZmlyc3QgZWxlbWVu dCBvZiB0aGUKLSAgICogIHN1Yi1zZXF1ZW5jZSwgb3IgQHAgX19sYXN0MSBpZiBubyBzdWNo IGl0ZXJhdG9yIGV4aXN0cy4KLSAgICoKLSAgICogIEBzZWUgc2VhcmNoKF9Gb3J3YXJkSXRl cjEsIF9Gb3J3YXJkSXRlcjEsIF9Gb3J3YXJkSXRlcjIsIF9Gb3J3YXJkSXRlcjIpCi0gICov Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBfRm9y d2FyZEl0ZXJhdG9yMiwKLQkgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgotICAgIF9H TElCQ1hYMjBfQ09OU1RFWFBSCi0gICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IxCi0gICAg c2VhcmNoKF9Gb3J3YXJkSXRlcmF0b3IxIF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXJhdG9yMSBf X2xhc3QxLAotCSAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXJh dG9yMiBfX2xhc3QyLAotCSAgIF9CaW5hcnlQcmVkaWNhdGUgIF9fcHJlZGljYXRlKQotICAg IHsKLSAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzCi0gICAgICBfX2dsaWJjeHhfZnVu Y3Rpb25fcmVxdWlyZXMoX0ZvcndhcmRJdGVyYXRvckNvbmNlcHQ8X0ZvcndhcmRJdGVyYXRv cjE+KQotICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9Gb3J3YXJkSXRlcmF0 b3JDb25jZXB0PF9Gb3J3YXJkSXRlcmF0b3IyPikKLSAgICAgIF9fZ2xpYmN4eF9mdW5jdGlv bl9yZXF1aXJlcyhfQmluYXJ5UHJlZGljYXRlQ29uY2VwdDxfQmluYXJ5UHJlZGljYXRlLAot CSAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcjE+Ojp2YWx1 ZV90eXBlLAotCSAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRv cjI+Ojp2YWx1ZV90eXBlPikKLSAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5n ZShfX2ZpcnN0MSwgX19sYXN0MSk7Ci0gICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRf cmFuZ2UoX19maXJzdDIsIF9fbGFzdDIpOwotCi0gICAgICByZXR1cm4gc3RkOjpfX3NlYXJj aChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIsCi0JCQkgICBfX2dudV9j eHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fcHJlZGljYXRlKSk7Ci0gICAgfQotCiAg IC8qKgogICAgKiAgQGJyaWVmIFNlYXJjaCBhIHNlcXVlbmNlIGZvciBhIG51bWJlciBvZiBj b25zZWN1dGl2ZSB2YWx1ZXMuCiAgICAqICBAaW5ncm91cCBub25fbXV0YXRpbmdfYWxnb3Jp dGhtcwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9zdGxfYWxnb2Jh c2UuaCBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2FsZ29iYXNlLmgKaW5kZXgg NGE2ZjgxOTVkOTguLmRkOTVlOTRmN2U5IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5j bHVkZS9iaXRzL3N0bF9hbGdvYmFzZS5oCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Jp dHMvc3RsX2FsZ29iYXNlLmgKQEAgLTIxNTAsNiArMjE1MCw1MyBAQCBfR0xJQkNYWF9FTkRf TkFNRVNQQUNFX0FMR08KICAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgICB9CiAKKyAgdGVt cGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRl cmF0b3IyLAorCSAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CisgICAgX0dMSUJDWFgy MF9DT05TVEVYUFIKKyAgICBfRm9yd2FyZEl0ZXJhdG9yMQorICAgIF9fc2VhcmNoKF9Gb3J3 YXJkSXRlcmF0b3IxIF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXJhdG9yMSBfX2xhc3QxLAorCSAg ICAgX0ZvcndhcmRJdGVyYXRvcjIgX19maXJzdDIsIF9Gb3J3YXJkSXRlcmF0b3IyIF9fbGFz dDIsCisJICAgICBfQmluYXJ5UHJlZGljYXRlICBfX3ByZWRpY2F0ZSkKKyAgICB7CisgICAg ICAvLyBUZXN0IGZvciBlbXB0eSByYW5nZXMKKyAgICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xh c3QxIHx8IF9fZmlyc3QyID09IF9fbGFzdDIpCisJcmV0dXJuIF9fZmlyc3QxOworCisgICAg ICAvLyBUZXN0IGZvciBhIHBhdHRlcm4gb2YgbGVuZ3RoIDEuCisgICAgICBfRm9yd2FyZEl0 ZXJhdG9yMiBfX3AxKF9fZmlyc3QyKTsKKyAgICAgIGlmICgrK19fcDEgPT0gX19sYXN0MikK KwlyZXR1cm4gc3RkOjpfX2ZpbmRfaWYoX19maXJzdDEsIF9fbGFzdDEsCisJCV9fZ251X2N4 eDo6X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19wcmVkaWNhdGUsIF9fZmlyc3QyKSk7CisK KyAgICAgIC8vIEdlbmVyYWwgY2FzZS4KKyAgICAgIF9Gb3J3YXJkSXRlcmF0b3IxIF9fY3Vy cmVudCA9IF9fZmlyc3QxOworCisgICAgICBmb3IgKDs7KQorCXsKKwkgIF9fZmlyc3QxID0K KwkgICAgc3RkOjpfX2ZpbmRfaWYoX19maXJzdDEsIF9fbGFzdDEsCisJCV9fZ251X2N4eDo6 X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19wcmVkaWNhdGUsIF9fZmlyc3QyKSk7CisKKwkg IGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQorCSAgICByZXR1cm4gX19sYXN0MTsKKworCSAg X0ZvcndhcmRJdGVyYXRvcjIgX19wID0gX19wMTsKKwkgIF9fY3VycmVudCA9IF9fZmlyc3Qx OworCSAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEpCisJICAgIHJldHVybiBfX2xhc3Qx OworCisJICB3aGlsZSAoX19wcmVkaWNhdGUoX19jdXJyZW50LCBfX3ApKQorCSAgICB7CisJ ICAgICAgaWYgKCsrX19wID09IF9fbGFzdDIpCisJCXJldHVybiBfX2ZpcnN0MTsKKwkgICAg ICBpZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkKKwkJcmV0dXJuIF9fbGFzdDE7CisJICAg IH0KKwkgICsrX19maXJzdDE7CisJfQorICAgICAgcmV0dXJuIF9fZmlyc3QxOworICAgIH0K KwogI2lmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv cndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IyLAogCSAgIHR5cGVu YW1lIF9CaW5hcnlQcmVkaWNhdGU+CkBAIC0yMjIwLDYgKzIyNjcsNTEgQEAgX0dMSUJDWFhf RU5EX05BTUVTUEFDRV9BTEdPCiAgICAgfQogI2VuZGlmIC8vIEMrKzExCiAKK19HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9BTEdPCisKKyAgLyoqCisgICAqICBAYnJpZWYgU2VhcmNoIGEg c2VxdWVuY2UgZm9yIGEgbWF0Y2hpbmcgc3ViLXNlcXVlbmNlIHVzaW5nIGEgcHJlZGljYXRl LgorICAgKiAgQGluZ3JvdXAgbm9uX211dGF0aW5nX2FsZ29yaXRobXMKKyAgICogIEBwYXJh bSAgX19maXJzdDEgICAgIEEgZm9yd2FyZCBpdGVyYXRvci4KKyAgICogIEBwYXJhbSAgX19s YXN0MSAgICAgIEEgZm9yd2FyZCBpdGVyYXRvci4KKyAgICogIEBwYXJhbSAgX19maXJzdDIg ICAgIEEgZm9yd2FyZCBpdGVyYXRvci4KKyAgICogIEBwYXJhbSAgX19sYXN0MiAgICAgIEEg Zm9yd2FyZCBpdGVyYXRvci4KKyAgICogIEBwYXJhbSAgX19wcmVkaWNhdGUgIEEgYmluYXJ5 IHByZWRpY2F0ZS4KKyAgICogIEByZXR1cm4gICBUaGUgZmlyc3QgaXRlcmF0b3IgQGMgaSBp biB0aGUgcmFuZ2UKKyAgICogIEBwIFtfX2ZpcnN0MSxfX2xhc3QxLShfX2xhc3QyLV9fZmly c3QyKSkgc3VjaCB0aGF0CisgICAqICBAcCBfX3ByZWRpY2F0ZSgqKGkrTiksKihfX2ZpcnN0 MitOKSkgaXMgdHJ1ZSBmb3IgZWFjaCBAYyBOIGluIHRoZSByYW5nZQorICAgKiAgQHAgWzAs X19sYXN0Mi1fX2ZpcnN0MiksIG9yIEBwIF9fbGFzdDEgaWYgbm8gc3VjaCBpdGVyYXRvciBl eGlzdHMuCisgICAqCisgICAqICBTZWFyY2hlcyB0aGUgcmFuZ2UgQHAgW19fZmlyc3QxLF9f bGFzdDEpIGZvciBhIHN1Yi1zZXF1ZW5jZSB0aGF0CisgICAqICBjb21wYXJlcyBlcXVhbCB2 YWx1ZS1ieS12YWx1ZSB3aXRoIHRoZSBzZXF1ZW5jZSBnaXZlbiBieSBAcAorICAgKiAgW19f Zmlyc3QyLF9fbGFzdDIpLCB1c2luZyBAcCBfX3ByZWRpY2F0ZSB0byBkZXRlcm1pbmUgZXF1 YWxpdHksCisgICAqICBhbmQgcmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgZmlyc3QgZWxl bWVudCBvZiB0aGUKKyAgICogIHN1Yi1zZXF1ZW5jZSwgb3IgQHAgX19sYXN0MSBpZiBubyBz dWNoIGl0ZXJhdG9yIGV4aXN0cy4KKyAgICoKKyAgICogIEBzZWUgc2VhcmNoKF9Gb3J3YXJk SXRlcjEsIF9Gb3J3YXJkSXRlcjEsIF9Gb3J3YXJkSXRlcjIsIF9Gb3J3YXJkSXRlcjIpCisg ICovCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBf Rm9yd2FyZEl0ZXJhdG9yMiwKKwkgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgorICAg IF9HTElCQ1hYMjBfQ09OU1RFWFBSCisgICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IxCisg ICAgc2VhcmNoKF9Gb3J3YXJkSXRlcmF0b3IxIF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXJhdG9y MSBfX2xhc3QxLAorCSAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3QyLCBfRm9yd2FyZEl0 ZXJhdG9yMiBfX2xhc3QyLAorCSAgIF9CaW5hcnlQcmVkaWNhdGUgIF9fcHJlZGljYXRlKQor ICAgIHsKKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzCisgICAgICBfX2dsaWJjeHhf ZnVuY3Rpb25fcmVxdWlyZXMoX0ZvcndhcmRJdGVyYXRvckNvbmNlcHQ8X0ZvcndhcmRJdGVy YXRvcjE+KQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9Gb3J3YXJkSXRl cmF0b3JDb25jZXB0PF9Gb3J3YXJkSXRlcmF0b3IyPikKKyAgICAgIF9fZ2xpYmN4eF9mdW5j dGlvbl9yZXF1aXJlcyhfQmluYXJ5UHJlZGljYXRlQ29uY2VwdDxfQmluYXJ5UHJlZGljYXRl LAorCSAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcjE+Ojp2 YWx1ZV90eXBlLAorCSAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVy YXRvcjI+Ojp2YWx1ZV90eXBlPikKKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9y YW5nZShfX2ZpcnN0MSwgX19sYXN0MSk7CisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFs aWRfcmFuZ2UoX19maXJzdDIsIF9fbGFzdDIpOworCisgICAgICByZXR1cm4gc3RkOjpfX3Nl YXJjaChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIsCisJCQkgICBfX2du dV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fcHJlZGljYXRlKSk7CisgICAgfQor CitfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0FMR08KIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0Vf VkVSU0lPTgogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My9pbmNsdWRlL2V4cGVyaW1lbnRhbC9mdW5jdGlvbmFsIGIvbGlic3RkYysrLXYzL2luY2x1 ZGUvZXhwZXJpbWVudGFsL2Z1bmN0aW9uYWwKaW5kZXggY2U5ZDRlMGZlY2UuLjI2YjhkZDUx YWVjIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9leHBlcmltZW50YWwvZnVu Y3Rpb25hbAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9leHBlcmltZW50YWwvZnVuY3Rp b25hbApAQCAtNDIsMTAgKzQyLDcgQEAKICNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgogI2lu Y2x1ZGUgPHZlY3Rvcj4KICNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxiaXRzL3N0bF9h bGdvLmg+Ci0jaWZkZWYgX0dMSUJDWFhfUEFSQUxMRUwKLSMgaW5jbHVkZSA8cGFyYWxsZWwv YWxnb3JpdGhtPiAvLyBGb3Igc3RkOjpfX3BhcmFsbGVsOjpzZWFyY2gKLSNlbmRpZgorI2lu Y2x1ZGUgPGJpdHMvc3RsX2FsZ29iYXNlLmg+IC8vIHN0ZDo6bWF4LCBzdGQ6OnNlYXJjaAog I2luY2x1ZGUgPGV4cGVyaW1lbnRhbC9iaXRzL2xmdHNfY29uZmlnLmg+CiAKIG5hbWVzcGFj ZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQpkaWZmIC0tZ2l0IGEvbGlic3Rk YysrLXYzL2luY2x1ZGUvcGFyYWxsZWwvYWxnby5oIGIvbGlic3RkYysrLXYzL2luY2x1ZGUv cGFyYWxsZWwvYWxnby5oCmluZGV4IDQzZWQ2YzU1OGVlLi4xM2FlNzYyMmFhNiAxMDA2NDQK LS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvcGFyYWxsZWwvYWxnby5oCisrKyBiL2xpYnN0 ZGMrKy12My9pbmNsdWRlL3BhcmFsbGVsL2FsZ28uaApAQCAtOTk2LDU5ICs5OTYsNiBAQCBu YW1lc3BhY2UgX19wYXJhbGxlbAogCQkJICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnko X19iZWdpbjIpKTsKICAgICB9CiAKLSAgLy8gUHVibGljIGludGVyZmFjZS4KLSAgdGVtcGxh dGU8dHlwZW5hbWUgX0ZJdGVyYXRvcjEsIHR5cGVuYW1lIF9GSXRlcmF0b3IyLAotCSAgIHR5 cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+Ci0gICAgaW5saW5lIF9GSXRlcmF0b3IxCi0gICAg c2VhcmNoKF9GSXRlcmF0b3IxIF9fYmVnaW4xLCBfRkl0ZXJhdG9yMSBfX2VuZDEsCi0JICAg X0ZJdGVyYXRvcjIgX19iZWdpbjIsIF9GSXRlcmF0b3IyIF9fZW5kMiwKLQkgICBfQmluYXJ5 UHJlZGljYXRlIF9fcHJlZCwgX19nbnVfcGFyYWxsZWw6OnNlcXVlbnRpYWxfdGFnKQotICAg IHsgcmV0dXJuIF9HTElCQ1hYX1NURF9BOjpzZWFyY2goCi0JCQkgICAgICAgX19iZWdpbjEs IF9fZW5kMSwgX19iZWdpbjIsIF9fZW5kMiwgX19wcmVkKTsgfQotCi0gIC8vIFBhcmFsbGVs IGFsZ29yaXRobSBmb3IgcmFuZG9tIGFjY2VzcyBpdGVyYXRvci4KLSAgdGVtcGxhdGU8dHlw ZW5hbWUgX1JBSXRlcjEsIHR5cGVuYW1lIF9SQUl0ZXIyLAotCSAgIHR5cGVuYW1lIF9CaW5h cnlQcmVkaWNhdGU+Ci0gICAgX1JBSXRlcjEKLSAgICBfX3NlYXJjaF9zd2l0Y2goX1JBSXRl cjEgX19iZWdpbjEsIF9SQUl0ZXIxIF9fZW5kMSwKLQkJICAgIF9SQUl0ZXIyIF9fYmVnaW4y LCBfUkFJdGVyMiBfX2VuZDIsCi0JCSAgICBfQmluYXJ5UHJlZGljYXRlIF9fcHJlZCwKLQkJ ICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9y X3RhZykKLSAgICB7Ci0gICAgICBpZiAoX0dMSUJDWFhfUEFSQUxMRUxfQ09ORElUSU9OKAot CQlzdGF0aWNfY2FzdDxfX2dudV9wYXJhbGxlbDo6X1NlcXVlbmNlSW5kZXg+KF9fZW5kMSAt IF9fYmVnaW4xKQotCSAgICA+PSBfX2dudV9wYXJhbGxlbDo6X1NldHRpbmdzOjpnZXQoKS5z ZWFyY2hfbWluaW1hbF9uKSkKLQlyZXR1cm4gX19nbnVfcGFyYWxsZWw6Ol9fc2VhcmNoX3Rl bXBsYXRlKF9fYmVnaW4xLCBfX2VuZDEsCi0JCQkJCSAgICAgICBfX2JlZ2luMiwgX19lbmQy LCBfX3ByZWQpOwotICAgICAgZWxzZQotCXJldHVybiBzZWFyY2goX19iZWdpbjEsIF9fZW5k MSwgX19iZWdpbjIsIF9fZW5kMiwgX19wcmVkLAotCQkgICAgICBfX2dudV9wYXJhbGxlbDo6 c2VxdWVudGlhbF90YWcoKSk7Ci0gICAgfQotCi0gIC8vIFNlcXVlbnRpYWwgZmFsbGJhY2sg Zm9yIGlucHV0IGl0ZXJhdG9yIGNhc2UKLSAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyYXRv cjEsIHR5cGVuYW1lIF9GSXRlcmF0b3IyLAotCSAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNh dGUsIHR5cGVuYW1lIF9JdGVyYXRvclRhZzEsCi0JICAgdHlwZW5hbWUgX0l0ZXJhdG9yVGFn Mj4KLSAgICBpbmxpbmUgX0ZJdGVyYXRvcjEKLSAgICBfX3NlYXJjaF9zd2l0Y2goX0ZJdGVy YXRvcjEgX19iZWdpbjEsIF9GSXRlcmF0b3IxIF9fZW5kMSwKLQkJICAgIF9GSXRlcmF0b3Iy IF9fYmVnaW4yLCBfRkl0ZXJhdG9yMiBfX2VuZDIsCi0JCSAgICBfQmluYXJ5UHJlZGljYXRl IF9fcHJlZCwgX0l0ZXJhdG9yVGFnMSwgX0l0ZXJhdG9yVGFnMikKLSAgICB7IHJldHVybiBz ZWFyY2goX19iZWdpbjEsIF9fZW5kMSwgX19iZWdpbjIsIF9fZW5kMiwgX19wcmVkLAotCQkg ICAgX19nbnVfcGFyYWxsZWw6OnNlcXVlbnRpYWxfdGFnKCkpOyB9Ci0KLSAgLy8gUHVibGlj IGludGVyZmFjZQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXJhdG9yMSwgdHlwZW5hbWUg X0ZJdGVyYXRvcjIsCi0JICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KLSAgICBpbmxp bmUgX0ZJdGVyYXRvcjEKLSAgICBzZWFyY2goX0ZJdGVyYXRvcjEgX19iZWdpbjEsIF9GSXRl cmF0b3IxIF9fZW5kMSwKLQkgICBfRkl0ZXJhdG9yMiBfX2JlZ2luMiwgX0ZJdGVyYXRvcjIg X19lbmQyLAotCSAgIF9CaW5hcnlQcmVkaWNhdGUgIF9fcHJlZCkKLSAgICB7Ci0gICAgICBy ZXR1cm4gX19zZWFyY2hfc3dpdGNoKF9fYmVnaW4xLCBfX2VuZDEsIF9fYmVnaW4yLCBfX2Vu ZDIsIF9fcHJlZCwKLQkJCSAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fYmVnaW4x KSwKLQkJCSAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fYmVnaW4yKSk7Ci0gICAg fQotCiAjaWYgX19jcGx1c3BsdXMgPj0gMjAxNzAzTAogICAvKiogQGJyaWVmIFNlYXJjaCBh IHNlcXVlbmNlIHVzaW5nIGEgU2VhcmNoZXIgb2JqZWN0LgogICAgKgpkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL2luY2x1ZGUvcGFyYWxsZWwvYWxnb2Jhc2UuaCBiL2xpYnN0ZGMrKy12 My9pbmNsdWRlL3BhcmFsbGVsL2FsZ29iYXNlLmgKaW5kZXggMGJjMjVhNjlmOGEuLjRlNGNj MGZhMGYyIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9wYXJhbGxlbC9hbGdv YmFzZS5oCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL3BhcmFsbGVsL2FsZ29iYXNlLmgK QEAgLTQ3MCw3ICs0NzAsNjAgQEAgbmFtZXNwYWNlIF9fcGFyYWxsZWwKICNpZiBfX2NwcF9s aWJfdGhyZWVfd2F5X2NvbXBhcmlzb24KICAgdXNpbmcgX0dMSUJDWFhfU1REX0E6OmxleGlj b2dyYXBoaWNhbF9jb21wYXJlX3RocmVlX3dheTsKICNlbmRpZgotfSAvLyBlbmQgbmFtZXNw YWNlCi19IC8vIGVuZCBuYW1lc3BhY2UKKworICAvLyBQdWJsaWMgaW50ZXJmYWNlLgorICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXJhdG9yMSwgdHlwZW5hbWUgX0ZJdGVyYXRvcjIsCisJ ICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KKyAgICBpbmxpbmUgX0ZJdGVyYXRvcjEK KyAgICBzZWFyY2goX0ZJdGVyYXRvcjEgX19iZWdpbjEsIF9GSXRlcmF0b3IxIF9fZW5kMSwK KwkgICBfRkl0ZXJhdG9yMiBfX2JlZ2luMiwgX0ZJdGVyYXRvcjIgX19lbmQyLAorCSAgIF9C aW5hcnlQcmVkaWNhdGUgX19wcmVkLCBfX2dudV9wYXJhbGxlbDo6c2VxdWVudGlhbF90YWcp CisgICAgeyByZXR1cm4gX0dMSUJDWFhfU1REX0E6OnNlYXJjaCgKKwkJCSAgICAgICBfX2Jl Z2luMSwgX19lbmQxLCBfX2JlZ2luMiwgX19lbmQyLCBfX3ByZWQpOyB9CisKKyAgLy8gUGFy YWxsZWwgYWxnb3JpdGhtIGZvciByYW5kb20gYWNjZXNzIGl0ZXJhdG9yLgorICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfUkFJdGVyMSwgdHlwZW5hbWUgX1JBSXRlcjIsCisJICAgdHlwZW5hbWUg X0JpbmFyeVByZWRpY2F0ZT4KKyAgICBfUkFJdGVyMQorICAgIF9fc2VhcmNoX3N3aXRjaChf UkFJdGVyMSBfX2JlZ2luMSwgX1JBSXRlcjEgX19lbmQxLAorCQkgICAgX1JBSXRlcjIgX19i ZWdpbjIsIF9SQUl0ZXIyIF9fZW5kMiwKKwkJICAgIF9CaW5hcnlQcmVkaWNhdGUgX19wcmVk LAorCQkgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIHJhbmRvbV9hY2Nlc3NfaXRl cmF0b3JfdGFnKQorICAgIHsKKyAgICAgIGlmIChfR0xJQkNYWF9QQVJBTExFTF9DT05ESVRJ T04oCisJCXN0YXRpY19jYXN0PF9fZ251X3BhcmFsbGVsOjpfU2VxdWVuY2VJbmRleD4oX19l bmQxIC0gX19iZWdpbjEpCisJICAgID49IF9fZ251X3BhcmFsbGVsOjpfU2V0dGluZ3M6Omdl dCgpLnNlYXJjaF9taW5pbWFsX24pKQorCXJldHVybiBfX2dudV9wYXJhbGxlbDo6X19zZWFy Y2hfdGVtcGxhdGUoX19iZWdpbjEsIF9fZW5kMSwKKwkJCQkJICAgICAgIF9fYmVnaW4yLCBf X2VuZDIsIF9fcHJlZCk7CisgICAgICBlbHNlCisJcmV0dXJuIHNlYXJjaChfX2JlZ2luMSwg X19lbmQxLCBfX2JlZ2luMiwgX19lbmQyLCBfX3ByZWQsCisJCSAgICAgIF9fZ251X3BhcmFs bGVsOjpzZXF1ZW50aWFsX3RhZygpKTsKKyAgICB9CisKKyAgLy8gU2VxdWVudGlhbCBmYWxs YmFjayBmb3IgaW5wdXQgaXRlcmF0b3IgY2FzZQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0 ZXJhdG9yMSwgdHlwZW5hbWUgX0ZJdGVyYXRvcjIsCisJICAgdHlwZW5hbWUgX0JpbmFyeVBy ZWRpY2F0ZSwgdHlwZW5hbWUgX0l0ZXJhdG9yVGFnMSwKKwkgICB0eXBlbmFtZSBfSXRlcmF0 b3JUYWcyPgorICAgIGlubGluZSBfRkl0ZXJhdG9yMQorICAgIF9fc2VhcmNoX3N3aXRjaChf Rkl0ZXJhdG9yMSBfX2JlZ2luMSwgX0ZJdGVyYXRvcjEgX19lbmQxLAorCQkgICAgX0ZJdGVy YXRvcjIgX19iZWdpbjIsIF9GSXRlcmF0b3IyIF9fZW5kMiwKKwkJICAgIF9CaW5hcnlQcmVk aWNhdGUgX19wcmVkLCBfSXRlcmF0b3JUYWcxLCBfSXRlcmF0b3JUYWcyKQorICAgIHsgcmV0 dXJuIHNlYXJjaChfX2JlZ2luMSwgX19lbmQxLCBfX2JlZ2luMiwgX19lbmQyLCBfX3ByZWQs CisJCSAgICBfX2dudV9wYXJhbGxlbDo6c2VxdWVudGlhbF90YWcoKSk7IH0KKworICAvLyBQ dWJsaWMgaW50ZXJmYWNlCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlcmF0b3IxLCB0eXBl bmFtZSBfRkl0ZXJhdG9yMiwKKwkgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgorICAg IGlubGluZSBfRkl0ZXJhdG9yMQorICAgIHNlYXJjaChfRkl0ZXJhdG9yMSBfX2JlZ2luMSwg X0ZJdGVyYXRvcjEgX19lbmQxLAorCSAgIF9GSXRlcmF0b3IyIF9fYmVnaW4yLCBfRkl0ZXJh dG9yMiBfX2VuZDIsCisJICAgX0JpbmFyeVByZWRpY2F0ZSAgX19wcmVkKQorICAgIHsKKyAg ICAgIHJldHVybiBfX3NlYXJjaF9zd2l0Y2goX19iZWdpbjEsIF9fZW5kMSwgX19iZWdpbjIs IF9fZW5kMiwgX19wcmVkLAorCQkJICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19i ZWdpbjEpLAorCQkJICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19iZWdpbjIpKTsK KyAgICB9Cit9IC8vIGVuZCBuYW1lc3BhY2UgX19wYXJhbGxlbAorfSAvLyBlbmQgbmFtZXNw YWNlIHN0ZAogCiAjZW5kaWYgLyogX0dMSUJDWFhfUEFSQUxMRUxfQUxHT0JBU0VfSCAqLwpk aWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL2Z1bmN0aW9uYWwgYi9saWJz dGRjKystdjMvaW5jbHVkZS9zdGQvZnVuY3Rpb25hbAppbmRleCBjN2M2YTVhNzkyNC4uNGE0 YjhiMmIyZTYgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC9mdW5jdGlv bmFsCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC9mdW5jdGlvbmFsCkBAIC02NCw3 ICs2NCw3IEBACiAjICBpbmNsdWRlIDx2ZWN0b3I+CiAjICBpbmNsdWRlIDxhcnJheT4KICMg ZW5kaWYKLSMgaW5jbHVkZSA8Yml0cy9zdGxfYWxnby5oPiAvLyBzdGQ6OnNlYXJjaAorIyBp bmNsdWRlIDxiaXRzL3N0bF9hbGdvYmFzZS5oPiAvLyBzdGQ6OnNlYXJjaAogI2VuZGlmCiAj aWYgX19jcGx1c3BsdXMgPj0gMjAyMDAyTAogIyBpbmNsdWRlIDxiaXRzL3Jhbmdlc19jbXAu aD4gLy8gc3RkOjppZGVudGl0eSwgcmFuZ2VzOjplcXVhbF90byBldGMuCg== --------------Vo0ctiSIoYLtsNE0SKuxRmiu--