/Users/eugenesiegel/btc/bitcoin/src/util/strencodings.h
| Line | Count | Source (jump to first uncovered line) | 
| 1 |  | // Copyright (c) 2009-2010 Satoshi Nakamoto | 
| 2 |  | // Copyright (c) 2009-present The Bitcoin Core developers | 
| 3 |  | // Distributed under the MIT software license, see the accompanying | 
| 4 |  | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | 
| 5 |  |  | 
| 6 |  | /** | 
| 7 |  |  * Utilities for converting data from/to strings. | 
| 8 |  |  */ | 
| 9 |  | #ifndef BITCOIN_UTIL_STRENCODINGS_H | 
| 10 |  | #define BITCOIN_UTIL_STRENCODINGS_H | 
| 11 |  |  | 
| 12 |  | #include <crypto/hex_base.h> // IWYU pragma: export | 
| 13 |  | #include <span.h> | 
| 14 |  | #include <util/string.h> | 
| 15 |  |  | 
| 16 |  | #include <array> | 
| 17 |  | #include <bit> | 
| 18 |  | #include <charconv> | 
| 19 |  | #include <cstddef> | 
| 20 |  | #include <cstdint> | 
| 21 |  | #include <limits> | 
| 22 |  | #include <optional> | 
| 23 |  | #include <string>      // IWYU pragma: export | 
| 24 |  | #include <string_view> // IWYU pragma: export | 
| 25 |  | #include <system_error> | 
| 26 |  | #include <type_traits> | 
| 27 |  | #include <vector> | 
| 28 |  |  | 
| 29 |  | /** Used by SanitizeString() */ | 
| 30 |  | enum SafeChars | 
| 31 |  | { | 
| 32 |  |     SAFE_CHARS_DEFAULT, //!< The full set of allowed chars | 
| 33 |  |     SAFE_CHARS_UA_COMMENT, //!< BIP-0014 subset | 
| 34 |  |     SAFE_CHARS_FILENAME, //!< Chars allowed in filenames | 
| 35 |  |     SAFE_CHARS_URI, //!< Chars allowed in URIs (RFC 3986) | 
| 36 |  | }; | 
| 37 |  |  | 
| 38 |  | /** | 
| 39 |  |  * Used by ParseByteUnits() | 
| 40 |  |  * Lowercase base 1000 | 
| 41 |  |  * Uppercase base 1024 | 
| 42 |  | */ | 
| 43 |  | enum class ByteUnit : uint64_t { | 
| 44 |  |     NOOP = 1ULL, | 
| 45 |  |     k = 1000ULL, | 
| 46 |  |     K = 1024ULL, | 
| 47 |  |     m = 1'000'000ULL, | 
| 48 |  |     M = 1ULL << 20, | 
| 49 |  |     g = 1'000'000'000ULL, | 
| 50 |  |     G = 1ULL << 30, | 
| 51 |  |     t = 1'000'000'000'000ULL, | 
| 52 |  |     T = 1ULL << 40, | 
| 53 |  | }; | 
| 54 |  |  | 
| 55 |  | /** | 
| 56 |  | * Remove unsafe chars. Safe chars chosen to allow simple messages/URLs/email | 
| 57 |  | * addresses, but avoid anything even possibly remotely dangerous like & or > | 
| 58 |  | * @param[in] str    The string to sanitize | 
| 59 |  | * @param[in] rule   The set of safe chars to choose (default: least restrictive) | 
| 60 |  | * @return           A new string without unsafe chars | 
| 61 |  | */ | 
| 62 |  | std::string SanitizeString(std::string_view str, int rule = SAFE_CHARS_DEFAULT); | 
| 63 |  | /** Parse the hex string into bytes (uint8_t or std::byte). Ignores whitespace. Returns nullopt on invalid input. */ | 
| 64 |  | template <typename Byte = std::byte> | 
| 65 |  | std::optional<std::vector<Byte>> TryParseHex(std::string_view str); | 
| 66 |  | /** Like TryParseHex, but returns an empty vector on invalid input. */ | 
| 67 |  | template <typename Byte = uint8_t> | 
| 68 |  | std::vector<Byte> ParseHex(std::string_view hex_str) | 
| 69 | 0 | { | 
| 70 | 0 |     return TryParseHex<Byte>(hex_str).value_or(std::vector<Byte>{}); | 
| 71 | 0 | } Unexecuted instantiation: _Z8ParseHexIhENSt3__16vectorIT_NS0_9allocatorIS2_EEEENS0_17basic_string_viewIcNS0_11char_traitsIcEEEEUnexecuted instantiation: _Z8ParseHexISt4byteENSt3__16vectorIT_NS1_9allocatorIS3_EEEENS1_17basic_string_viewIcNS1_11char_traitsIcEEEE | 
| 72 |  | /* Returns true if each character in str is a hex character, and has an even | 
| 73 |  |  * number of hex digits.*/ | 
| 74 |  | bool IsHex(std::string_view str); | 
| 75 |  | std::optional<std::vector<unsigned char>> DecodeBase64(std::string_view str); | 
| 76 |  | std::string EncodeBase64(std::span<const unsigned char> input); | 
| 77 | 0 | inline std::string EncodeBase64(std::span<const std::byte> input) { return EncodeBase64(MakeUCharSpan(input)); } | 
| 78 | 0 | inline std::string EncodeBase64(std::string_view str) { return EncodeBase64(MakeUCharSpan(str)); } | 
| 79 |  | std::optional<std::vector<unsigned char>> DecodeBase32(std::string_view str); | 
| 80 |  |  | 
| 81 |  | /** | 
| 82 |  |  * Base32 encode. | 
| 83 |  |  * If `pad` is true, then the output will be padded with '=' so that its length | 
| 84 |  |  * is a multiple of 8. | 
| 85 |  |  */ | 
| 86 |  | std::string EncodeBase32(std::span<const unsigned char> input, bool pad = true); | 
| 87 |  |  | 
| 88 |  | /** | 
| 89 |  |  * Base32 encode. | 
| 90 |  |  * If `pad` is true, then the output will be padded with '=' so that its length | 
| 91 |  |  * is a multiple of 8. | 
| 92 |  |  */ | 
| 93 |  | std::string EncodeBase32(std::string_view str, bool pad = true); | 
| 94 |  |  | 
| 95 |  | /** | 
| 96 |  |  * Splits socket address string into host string and port value. | 
| 97 |  |  * Validates port value. | 
| 98 |  |  * | 
| 99 |  |  * @param[in] in        The socket address string to split. | 
| 100 |  |  * @param[out] portOut  Port-portion of the input, if found and parsable. | 
| 101 |  |  * @param[out] hostOut  Host-portion of the input, if found. | 
| 102 |  |  * @return              true if port-portion is absent or within its allowed range, otherwise false | 
| 103 |  |  */ | 
| 104 |  | bool SplitHostPort(std::string_view in, uint16_t& portOut, std::string& hostOut); | 
| 105 |  |  | 
| 106 |  | // LocaleIndependentAtoi is provided for backwards compatibility reasons. | 
| 107 |  | // | 
| 108 |  | // New code should use ToIntegral. | 
| 109 |  | // | 
| 110 |  | // The goal of LocaleIndependentAtoi is to replicate the defined behaviour of | 
| 111 |  | // std::atoi as it behaves under the "C" locale, and remove some undefined | 
| 112 |  | // behavior. If the parsed value is bigger than the integer type's maximum | 
| 113 |  | // value, or smaller than the integer type's minimum value, std::atoi has | 
| 114 |  | // undefined behavior, while this function returns the maximum or minimum | 
| 115 |  | // values, respectively. | 
| 116 |  | template <typename T> | 
| 117 |  | T LocaleIndependentAtoi(std::string_view str) | 
| 118 | 102k | { | 
| 119 | 102k |     static_assert(std::is_integral_v<T>); | 
| 120 | 102k |     T result; | 
| 121 |  |     // Emulate atoi(...) handling of white space and leading +/-. | 
| 122 | 102k |     std::string_view s = util::TrimStringView(str); | 
| 123 | 102k |     if (!s.empty() && s[0] == '+') { | 
| 124 | 0 |         if (s.length() >= 2 && s[1] == '-') { | 
| 125 | 0 |             return 0; | 
| 126 | 0 |         } | 
| 127 | 0 |         s = s.substr(1); | 
| 128 | 0 |     } | 
| 129 | 102k |     auto [_, error_condition] = std::from_chars(s.data(), s.data() + s.size(), result); | 
| 130 | 102k |     if (error_condition == std::errc::result_out_of_range) { | 
| 131 | 0 |         if (s.length() >= 1 && s[0] == '-') { | 
| 132 |  |             // Saturate underflow, per strtoll's behavior. | 
| 133 | 0 |             return std::numeric_limits<T>::min(); | 
| 134 | 0 |         } else { | 
| 135 |  |             // Saturate overflow, per strtoll's behavior. | 
| 136 | 0 |             return std::numeric_limits<T>::max(); | 
| 137 | 0 |         } | 
| 138 | 102k |     } else if (error_condition != std::errc{}) { | 
| 139 | 0 |         return 0; | 
| 140 | 0 |     } | 
| 141 | 102k |     return result; | 
| 142 | 102k | } _Z21LocaleIndependentAtoiIiET_NSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE| Line | Count | Source |  | 118 | 51.2k | { |  | 119 | 51.2k |     static_assert(std::is_integral_v<T>); |  | 120 | 51.2k |     T result; |  | 121 |  |     // Emulate atoi(...) handling of white space and leading +/-. |  | 122 | 51.2k |     std::string_view s = util::TrimStringView(str); |  | 123 | 51.2k |     if (!s.empty() && s[0] == '+') { |  | 124 | 0 |         if (s.length() >= 2 && s[1] == '-') { |  | 125 | 0 |             return 0; |  | 126 | 0 |         } |  | 127 | 0 |         s = s.substr(1); |  | 128 | 0 |     } |  | 129 | 51.2k |     auto [_, error_condition] = std::from_chars(s.data(), s.data() + s.size(), result); |  | 130 | 51.2k |     if (error_condition == std::errc::result_out_of_range) { |  | 131 | 0 |         if (s.length() >= 1 && s[0] == '-') { |  | 132 |  |             // Saturate underflow, per strtoll's behavior. |  | 133 | 0 |             return std::numeric_limits<T>::min(); |  | 134 | 0 |         } else { |  | 135 |  |             // Saturate overflow, per strtoll's behavior. |  | 136 | 0 |             return std::numeric_limits<T>::max(); |  | 137 | 0 |         } |  | 138 | 51.2k |     } else if (error_condition != std::errc{}) { |  | 139 | 0 |         return 0; |  | 140 | 0 |     } |  | 141 | 51.2k |     return result; |  | 142 | 51.2k | } | 
_Z21LocaleIndependentAtoiIxET_NSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE| Line | Count | Source |  | 118 | 51.2k | { |  | 119 | 51.2k |     static_assert(std::is_integral_v<T>); |  | 120 | 51.2k |     T result; |  | 121 |  |     // Emulate atoi(...) handling of white space and leading +/-. |  | 122 | 51.2k |     std::string_view s = util::TrimStringView(str); |  | 123 | 51.2k |     if (!s.empty() && s[0] == '+') { |  | 124 | 0 |         if (s.length() >= 2 && s[1] == '-') { |  | 125 | 0 |             return 0; |  | 126 | 0 |         } |  | 127 | 0 |         s = s.substr(1); |  | 128 | 0 |     } |  | 129 | 51.2k |     auto [_, error_condition] = std::from_chars(s.data(), s.data() + s.size(), result); |  | 130 | 51.2k |     if (error_condition == std::errc::result_out_of_range) { |  | 131 | 0 |         if (s.length() >= 1 && s[0] == '-') { |  | 132 |  |             // Saturate underflow, per strtoll's behavior. |  | 133 | 0 |             return std::numeric_limits<T>::min(); |  | 134 | 0 |         } else { |  | 135 |  |             // Saturate overflow, per strtoll's behavior. |  | 136 | 0 |             return std::numeric_limits<T>::max(); |  | 137 | 0 |         } |  | 138 | 51.2k |     } else if (error_condition != std::errc{}) { |  | 139 | 0 |         return 0; |  | 140 | 0 |     } |  | 141 | 51.2k |     return result; |  | 142 | 51.2k | } | 
 | 
| 143 |  |  | 
| 144 |  | /** | 
| 145 |  |  * Tests if the given character is a decimal digit. | 
| 146 |  |  * @param[in] c     character to test | 
| 147 |  |  * @return          true if the argument is a decimal digit; otherwise false. | 
| 148 |  |  */ | 
| 149 |  | constexpr bool IsDigit(char c) | 
| 150 | 2.35M | { | 
| 151 | 2.35M |     return c >= '0' && c <= '9'2.15M; | 
| 152 | 2.35M | } | 
| 153 |  |  | 
| 154 |  | /** | 
| 155 |  |  * Tests if the given character is a whitespace character. The whitespace characters | 
| 156 |  |  * are: space, form-feed ('\f'), newline ('\n'), carriage return ('\r'), horizontal | 
| 157 |  |  * tab ('\t'), and vertical tab ('\v'). | 
| 158 |  |  * | 
| 159 |  |  * This function is locale independent. Under the C locale this function gives the | 
| 160 |  |  * same result as std::isspace. | 
| 161 |  |  * | 
| 162 |  |  * @param[in] c     character to test | 
| 163 |  |  * @return          true if the argument is a whitespace character; otherwise false | 
| 164 |  |  */ | 
| 165 | 0 | constexpr inline bool IsSpace(char c) noexcept { | 
| 166 | 0 |     return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v'; | 
| 167 | 0 | } | 
| 168 |  |  | 
| 169 |  | /** | 
| 170 |  |  * Convert string to integral type T. Leading whitespace, a leading +, or any | 
| 171 |  |  * trailing character fail the parsing. The required format expressed as regex | 
| 172 |  |  * is `-?[0-9]+`. The minus sign is only permitted for signed integer types. | 
| 173 |  |  * | 
| 174 |  |  * @returns std::nullopt if the entire string could not be parsed, or if the | 
| 175 |  |  *   parsed value is not in the range representable by the type T. | 
| 176 |  |  */ | 
| 177 |  | template <typename T> | 
| 178 |  | std::optional<T> ToIntegral(std::string_view str) | 
| 179 | 12 | { | 
| 180 | 12 |     static_assert(std::is_integral_v<T>); | 
| 181 | 12 |     T result; | 
| 182 | 12 |     const auto [first_nonmatching, error_condition] = std::from_chars(str.data(), str.data() + str.size(), result); | 
| 183 | 12 |     if (first_nonmatching != str.data() + str.size() || error_condition != std::errc{}) { | 
| 184 | 0 |         return std::nullopt; | 
| 185 | 0 |     } | 
| 186 | 12 |     return result; | 
| 187 | 12 | } Unexecuted instantiation: _Z10ToIntegralIxENSt3__18optionalIT_EENS0_17basic_string_viewIcNS0_11char_traitsIcEEEEUnexecuted instantiation: _Z10ToIntegralIaENSt3__18optionalIT_EENS0_17basic_string_viewIcNS0_11char_traitsIcEEEE_Z10ToIntegralIhENSt3__18optionalIT_EENS0_17basic_string_viewIcNS0_11char_traitsIcEEEE| Line | Count | Source |  | 179 | 10 | { |  | 180 | 10 |     static_assert(std::is_integral_v<T>); |  | 181 | 10 |     T result; |  | 182 | 10 |     const auto [first_nonmatching, error_condition] = std::from_chars(str.data(), str.data() + str.size(), result); |  | 183 | 10 |     if (first_nonmatching != str.data() + str.size() || error_condition != std::errc{}) { |  | 184 | 0 |         return std::nullopt; |  | 185 | 0 |     } |  | 186 | 10 |     return result; |  | 187 | 10 | } | 
Unexecuted instantiation: _Z10ToIntegralIsENSt3__18optionalIT_EENS0_17basic_string_viewIcNS0_11char_traitsIcEEEE_Z10ToIntegralItENSt3__18optionalIT_EENS0_17basic_string_viewIcNS0_11char_traitsIcEEEE| Line | Count | Source |  | 179 | 2 | { |  | 180 | 2 |     static_assert(std::is_integral_v<T>); |  | 181 | 2 |     T result; |  | 182 | 2 |     const auto [first_nonmatching, error_condition] = std::from_chars(str.data(), str.data() + str.size(), result); |  | 183 | 2 |     if (first_nonmatching != str.data() + str.size() || error_condition != std::errc{}) { |  | 184 | 0 |         return std::nullopt; |  | 185 | 0 |     } |  | 186 | 2 |     return result; |  | 187 | 2 | } | 
Unexecuted instantiation: _Z10ToIntegralIiENSt3__18optionalIT_EENS0_17basic_string_viewIcNS0_11char_traitsIcEEEEUnexecuted instantiation: _Z10ToIntegralIjENSt3__18optionalIT_EENS0_17basic_string_viewIcNS0_11char_traitsIcEEEEUnexecuted instantiation: _Z10ToIntegralIyENSt3__18optionalIT_EENS0_17basic_string_viewIcNS0_11char_traitsIcEEEEUnexecuted instantiation: _Z10ToIntegralImENSt3__18optionalIT_EENS0_17basic_string_viewIcNS0_11char_traitsIcEEEE | 
| 188 |  |  | 
| 189 |  | /** | 
| 190 |  |  * Format a paragraph of text to a fixed width, adding spaces for | 
| 191 |  |  * indentation to any added line. | 
| 192 |  |  */ | 
| 193 |  | std::string FormatParagraph(std::string_view in, size_t width = 79, size_t indent = 0); | 
| 194 |  |  | 
| 195 |  | /** | 
| 196 |  |  * Timing-attack-resistant comparison. | 
| 197 |  |  * Takes time proportional to length | 
| 198 |  |  * of first argument. | 
| 199 |  |  */ | 
| 200 |  | template <typename T> | 
| 201 |  | bool TimingResistantEqual(const T& a, const T& b) | 
| 202 | 0 | { | 
| 203 | 0 |     if (b.size() == 0) return a.size() == 0; | 
| 204 | 0 |     size_t accumulator = a.size() ^ b.size(); | 
| 205 | 0 |     for (size_t i = 0; i < a.size(); i++) | 
| 206 | 0 |         accumulator |= size_t(a[i] ^ b[i%b.size()]); | 
| 207 | 0 |     return accumulator == 0; | 
| 208 | 0 | } Unexecuted instantiation: _Z20TimingResistantEqualINSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEEbRKT_S9_Unexecuted instantiation: _Z20TimingResistantEqualINSt3__117basic_string_viewIcNS0_11char_traitsIcEEEEEbRKT_S7_ | 
| 209 |  |  | 
| 210 |  | /** Parse number as fixed point according to JSON number syntax. | 
| 211 |  |  * @returns true on success, false on error. | 
| 212 |  |  * @note The result must be in the range (-10^18,10^18), otherwise an overflow error will trigger. | 
| 213 |  |  */ | 
| 214 |  | [[nodiscard]] bool ParseFixedPoint(std::string_view, int decimals, int64_t *amount_out); | 
| 215 |  |  | 
| 216 |  | namespace { | 
| 217 |  | /** Helper class for the default infn argument to ConvertBits (just returns the input). */ | 
| 218 |  | struct IntIdentity | 
| 219 |  | { | 
| 220 | 18.3k |     [[maybe_unused]] int operator()(int x) const { return x; }Unexecuted instantiation: addition_overflow.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: addrman.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: asmap.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: asmap_direct.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: autofile.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: banman.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: base_encode_decode.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: bech32.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: bip324.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: bitdeque.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: bitset.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: block.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: block_header.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: block_index.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: blockfilter.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: bloom_filter.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: buffered_file.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: chain.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: checkqueue.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: cluster_linearize.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: cmpctblock.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: coins_view.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: coinscache_sim.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: connman.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypto.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypto_aes256.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypto_aes256cbc.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypto_chacha20.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypto_chacha20poly1305.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypto_common.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypto_diff_fuzz_chacha20.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypto_hkdf_hmac_sha256_l32.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypto_poly1305.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: cuckoocache.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: decode_tx.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: descriptor_parse.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: deserialize.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: eval_script.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: feefrac.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: fee_rate.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: feeratediagram.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: fees.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: flatfile.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: float.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: golomb_rice.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: headerssync.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: hex.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: http_request.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: i2p.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: integer.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: key.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: key_io.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: kitchen_sink.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: load_external_block_file.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: locale.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: merkle.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: merkleblock.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: message.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: miniscript.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: minisketch.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: mini_miner.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: muhash.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: multiplication_overflow.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: net.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: net_permissions.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: netaddress.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: netbase_dns_lookup.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: node_eviction.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: p2p_handshake.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: p2p_headers_presync.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: p2p_transport_serialization.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: pcp.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: package_eval.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: parse_hd_keypath.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: parse_numbers.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: parse_script.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: parse_univalue.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: partially_downloaded_block.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: policy_estimator.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: policy_estimator_io.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: poolresource.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: pow.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: prevector.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: primitives_transaction.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: process_message.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: process_messages.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: protocol.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: psbt.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: random.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: rbf.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: rolling_bloom_filter.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: rpc.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: script.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: script_assets_test_minimizer.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: script_descriptor_cache.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: script_flags.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: script_format.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: script_interpreter.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: script_ops.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: script_sigcache.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: script_sign.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: scriptnum_ops.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: secp256k1_ec_seckey_import_export_der.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: secp256k1_ecdsa_signature_parse_der_lax.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: signature_checker.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: signet.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: socks5.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: span.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: string.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: strprintf.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: system.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: timeoffsets.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: torcontrol.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: transaction.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txdownloadman.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: tx_in.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: tx_out.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: tx_pool.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txgraph.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txorphan.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txrequest.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: utxo_snapshot.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: utxo_total_supply.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: validation_load_mempool.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: vecdeque.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: versionbits.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: coincontrol.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: coinselection.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: crypter.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: scriptpubkeyman.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: spend.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: wallet_bdb_parser.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: check_globals.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: descriptor.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: mempool.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: threadinterrupt.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: fuzz.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: util.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: addresstype.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: base58.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: chainparams.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: coins.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: args.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: bloom.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: config.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: messages.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: netif.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: signmessage.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: compressor.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: core_read.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: core_write.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: deploymentinfo.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: external_signer.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: common.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: musig.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: net_types.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: netbase.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: outputtype.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: policy.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: rawtransaction_util.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: request.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: sign.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: signingprovider.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: solver.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: batchpriority.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: bip32.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: bytevectorhash.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: exception.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: fs_helpers.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: hasher.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: moneystr.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: sock.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEistrencodings.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEi| Line | Count | Source |  | 220 | 18.3k |     [[maybe_unused]] int operator()(int x) const { return x; } | 
Unexecuted instantiation: thread.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: time.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: logging.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: streams.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: db.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: dump.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: external_signer_scriptpubkeyman.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: feebumper.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: interfaces.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: load.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: migrate.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: receive.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: addresses.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: backup.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: encrypt.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: transactions.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: wallet.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: sqlite.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: walletdb.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: walletutil.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: mining.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: setup_common.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: transaction_utils.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txmempool.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: validation.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: addrdb.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: blockencodings.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: tx_verify.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: dbwrapper.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: httprpc.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: httpserver.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: base.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: blockfilterindex.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: coinstatsindex.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txindex.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: init.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: checks.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: coinstats.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: context.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: disconnected_transactions.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: mapport.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: net_processing.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: netgroup.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: abort.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: blockmanager_args.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: blockstorage.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: caches.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: chainstate.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: chainstatemanager_args.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: coin.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: coins_view_args.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: database_args.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: eviction.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: kernel_notifications.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: mempool_args.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: mempool_persist.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: mempool_persist_args.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: miner.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: peerman_args.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txdownloadman_impl.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txorphanage.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txreconciliation.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: noui.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: ephemeral_policy.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: packages.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: settings.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: truc_policy.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: rest.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: blockchain.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: node.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: output_script.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: rawtransaction.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: server.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: server_util.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txoutproof.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: sigcache.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: txdb.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: validationinterface.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: arith_uint256.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: tx_check.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: hash.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: pubkey.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: interpreter.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: uint256.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEiUnexecuted instantiation: siphash.cpp:_ZNK12_GLOBAL__N_111IntIdentityclEi | 
| 221 |  | }; | 
| 222 |  |  | 
| 223 |  | } // namespace | 
| 224 |  |  | 
| 225 |  | /** Convert from one power-of-2 number base to another. */ | 
| 226 |  | template<int frombits, int tobits, bool pad, typename O, typename It, typename I = IntIdentity> | 
| 227 | 736 | bool ConvertBits(O outfn, It it, It end, I infn = {}) { | 
| 228 | 736 |     size_t acc = 0; | 
| 229 | 736 |     size_t bits = 0; | 
| 230 | 736 |     constexpr size_t maxv = (1 << tobits) - 1; | 
| 231 | 736 |     constexpr size_t max_acc = (1 << (frombits + tobits - 1)) - 1; | 
| 232 | 19.0k |     while (it != end) { | 
| 233 | 18.3k |         int v = infn(*it); | 
| 234 | 18.3k |         if (v < 0) return false0; | 
| 235 | 18.3k |         acc = ((acc << frombits) | v) & max_acc; | 
| 236 | 18.3k |         bits += frombits; | 
| 237 | 47.6k |         while (bits >= tobits) { | 
| 238 | 29.2k |             bits -= tobits; | 
| 239 | 29.2k |             outfn((acc >> bits) & maxv); | 
| 240 | 29.2k |         } | 
| 241 | 18.3k |         ++it; | 
| 242 | 18.3k |     } | 
| 243 | 736 |     if (pad) { | 
| 244 | 736 |         if (bits) outfn((acc << (tobits - bits)) & maxv)227; | 
| 245 | 736 |     } else if (0 bits >= frombits0|| ((acc << (tobits - bits)) & maxv)0) { | 
| 246 | 0 |         return false; | 
| 247 | 0 |     } | 
| 248 | 736 |     return true; | 
| 249 | 736 | } Unexecuted instantiation: bech32.cpp:_Z11ConvertBitsILi8ELi5ELb1EZ28bech32_roundtrip_fuzz_targetNSt3__14spanIKhLm18446744073709551615EEEE3$_0NS0_11__wrap_iterIPhEEN12_GLOBAL__N_111IntIdentityEEbT2_T3_SB_T4_Unexecuted instantiation: key_io.cpp:_Z11ConvertBitsILi8ELi5ELb1EZNK12_GLOBAL__N_118DestinationEncoderclERK19WitnessV0ScriptHashEUlhE_PKhNS0_11IntIdentityEEbT2_T3_SA_T4_Unexecuted instantiation: key_io.cpp:_Z11ConvertBitsILi8ELi5ELb1EZNK12_GLOBAL__N_118DestinationEncoderclERK16WitnessV0KeyHashEUlhE_PKhNS0_11IntIdentityEEbT2_T3_SA_T4_Unexecuted instantiation: key_io.cpp:_Z11ConvertBitsILi8ELi5ELb1EZNK12_GLOBAL__N_118DestinationEncoderclERK16WitnessV1TaprootEUlhE_PKhNS0_11IntIdentityEEbT2_T3_SA_T4_Unexecuted instantiation: key_io.cpp:_Z11ConvertBitsILi8ELi5ELb1EZNK12_GLOBAL__N_118DestinationEncoderclERK14WitnessUnknownEUlhE_NSt3__111__wrap_iterIPKhEENS0_11IntIdentityEEbT2_T3_SD_T4_Unexecuted instantiation: key_io.cpp:_Z11ConvertBitsILi5ELi8ELb0EZN12_GLOBAL__N_117DecodeDestinationERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERK12CChainParamsRS7_PNS1_6vectorIiNS5_IiEEEEE3$_0NS1_11__wrap_iterIPKhEENS0_11IntIdentityEEbT2_T3_SP_T4_Unexecuted instantiation: strencodings.cpp:_Z11ConvertBitsILi8ELi6ELb1EZ12EncodeBase64NSt3__14spanIKhLm18446744073709551615EEEE3$_0NS0_11__wrap_iterIPS2_EEN12_GLOBAL__N_111IntIdentityEEbT2_T3_SB_T4_Unexecuted instantiation: strencodings.cpp:_Z11ConvertBitsILi6ELi8ELb0EZ12DecodeBase64NSt3__117basic_string_viewIcNS0_11char_traitsIcEEEEE3$_0PKcZ12DecodeBase64S4_E3$_1EbT2_T3_SA_T4_strencodings.cpp:_Z11ConvertBitsILi8ELi5ELb1EZ12EncodeBase32NSt3__14spanIKhLm18446744073709551615EEEbE3$_0NS0_11__wrap_iterIPS2_EEN12_GLOBAL__N_111IntIdentityEEbT2_T3_SB_T4_| Line | Count | Source |  | 227 | 736 | bool ConvertBits(O outfn, It it, It end, I infn = {}) { |  | 228 | 736 |     size_t acc = 0; |  | 229 | 736 |     size_t bits = 0; |  | 230 | 736 |     constexpr size_t maxv = (1 << tobits) - 1; |  | 231 | 736 |     constexpr size_t max_acc = (1 << (frombits + tobits - 1)) - 1; |  | 232 | 19.0k |     while (it != end) { |  | 233 | 18.3k |         int v = infn(*it); |  | 234 | 18.3k |         if (v < 0) return false0; |  | 235 | 18.3k |         acc = ((acc << frombits) | v) & max_acc; |  | 236 | 18.3k |         bits += frombits; |  | 237 | 47.6k |         while (bits >= tobits) { |  | 238 | 29.2k |             bits -= tobits; |  | 239 | 29.2k |             outfn((acc >> bits) & maxv); |  | 240 | 29.2k |         } |  | 241 | 18.3k |         ++it; |  | 242 | 18.3k |     } |  | 243 | 736 |     if (pad) { |  | 244 | 736 |         if (bits) outfn((acc << (tobits - bits)) & maxv)227; |  | 245 | 736 |     } else if (0 bits >= frombits0|| ((acc << (tobits - bits)) & maxv)0) { |  | 246 | 0 |         return false; |  | 247 | 0 |     } |  | 248 | 736 |     return true; |  | 249 | 736 | } | 
Unexecuted instantiation: strencodings.cpp:_Z11ConvertBitsILi5ELi8ELb0EZ12DecodeBase32NSt3__117basic_string_viewIcNS0_11char_traitsIcEEEEE3$_0PKcZ12DecodeBase32S4_E3$_1EbT2_T3_SA_T4_ | 
| 250 |  |  | 
| 251 |  | /** | 
| 252 |  |  * Converts the given character to its lowercase equivalent. | 
| 253 |  |  * This function is locale independent. It only converts uppercase | 
| 254 |  |  * characters in the standard 7-bit ASCII range. | 
| 255 |  |  * This is a feature, not a limitation. | 
| 256 |  |  * | 
| 257 |  |  * @param[in] c     the character to convert to lowercase. | 
| 258 |  |  * @return          the lowercase equivalent of c; or the argument | 
| 259 |  |  *                  if no conversion is possible. | 
| 260 |  |  */ | 
| 261 |  | constexpr char ToLower(char c) | 
| 262 | 0 | { | 
| 263 | 0 |     return (c >= 'A' && c <= 'Z' ? (c - 'A') + 'a' : c); | 
| 264 | 0 | } | 
| 265 |  |  | 
| 266 |  | /** | 
| 267 |  |  * Returns the lowercase equivalent of the given string. | 
| 268 |  |  * This function is locale independent. It only converts uppercase | 
| 269 |  |  * characters in the standard 7-bit ASCII range. | 
| 270 |  |  * This is a feature, not a limitation. | 
| 271 |  |  * | 
| 272 |  |  * @param[in] str   the string to convert to lowercase. | 
| 273 |  |  * @returns         lowercased equivalent of str | 
| 274 |  |  */ | 
| 275 |  | std::string ToLower(std::string_view str); | 
| 276 |  |  | 
| 277 |  | /** | 
| 278 |  |  * Converts the given character to its uppercase equivalent. | 
| 279 |  |  * This function is locale independent. It only converts lowercase | 
| 280 |  |  * characters in the standard 7-bit ASCII range. | 
| 281 |  |  * This is a feature, not a limitation. | 
| 282 |  |  * | 
| 283 |  |  * @param[in] c     the character to convert to uppercase. | 
| 284 |  |  * @return          the uppercase equivalent of c; or the argument | 
| 285 |  |  *                  if no conversion is possible. | 
| 286 |  |  */ | 
| 287 |  | constexpr char ToUpper(char c) | 
| 288 | 0 | { | 
| 289 | 0 |     return (c >= 'a' && c <= 'z' ? (c - 'a') + 'A' : c); | 
| 290 | 0 | } | 
| 291 |  |  | 
| 292 |  | /** | 
| 293 |  |  * Returns the uppercase equivalent of the given string. | 
| 294 |  |  * This function is locale independent. It only converts lowercase | 
| 295 |  |  * characters in the standard 7-bit ASCII range. | 
| 296 |  |  * This is a feature, not a limitation. | 
| 297 |  |  * | 
| 298 |  |  * @param[in] str   the string to convert to uppercase. | 
| 299 |  |  * @returns         UPPERCASED EQUIVALENT OF str | 
| 300 |  |  */ | 
| 301 |  | std::string ToUpper(std::string_view str); | 
| 302 |  |  | 
| 303 |  | /** | 
| 304 |  |  * Capitalizes the first character of the given string. | 
| 305 |  |  * This function is locale independent. It only converts lowercase | 
| 306 |  |  * characters in the standard 7-bit ASCII range. | 
| 307 |  |  * This is a feature, not a limitation. | 
| 308 |  |  * | 
| 309 |  |  * @param[in] str   the string to capitalize. | 
| 310 |  |  * @returns         string with the first letter capitalized. | 
| 311 |  |  */ | 
| 312 |  | std::string Capitalize(std::string str); | 
| 313 |  |  | 
| 314 |  | /** | 
| 315 |  |  * Parse a string with suffix unit [k|K|m|M|g|G|t|T]. | 
| 316 |  |  * Must be a whole integer, fractions not allowed (0.5t), no whitespace or +- | 
| 317 |  |  * Lowercase units are 1000 base. Uppercase units are 1024 base. | 
| 318 |  |  * Examples: 2m,27M,19g,41T | 
| 319 |  |  * | 
| 320 |  |  * @param[in] str                  the string to convert into bytes | 
| 321 |  |  * @param[in] default_multiplier   if no unit is found in str use this unit | 
| 322 |  |  * @returns                        optional uint64_t bytes from str or nullopt | 
| 323 |  |  *                                 if ToIntegral is false, str is empty, trailing whitespace or overflow | 
| 324 |  |  */ | 
| 325 |  | std::optional<uint64_t> ParseByteUnits(std::string_view str, ByteUnit default_multiplier); | 
| 326 |  |  | 
| 327 |  | namespace util { | 
| 328 |  | /** consteval version of HexDigit() without the lookup table. */ | 
| 329 |  | consteval uint8_t ConstevalHexDigit(const char c) | 
| 330 |  | { | 
| 331 |  |     if (c >= '0' && c <= '9') return c - '0'; | 
| 332 |  |     if (c >= 'a' && c <= 'f') return c - 'a' + 0xa; | 
| 333 |  |  | 
| 334 |  |     throw "Only lowercase hex digits are allowed, for consistency"; | 
| 335 |  | } | 
| 336 |  |  | 
| 337 |  | namespace detail { | 
| 338 |  | template <size_t N> | 
| 339 |  | struct Hex { | 
| 340 |  |     std::array<std::byte, N / 2> bytes{}; | 
| 341 |  |     consteval Hex(const char (&hex_str)[N]) | 
| 342 |  |         // 2 hex digits required per byte + implicit null terminator | 
| 343 |  |         requires(N % 2 == 1) | 
| 344 |  |     { | 
| 345 |  |         if (hex_str[N - 1]) throw "null terminator required"; | 
| 346 |  |         for (std::size_t i = 0; i < bytes.size(); ++i) { | 
| 347 |  |             bytes[i] = static_cast<std::byte>( | 
| 348 |  |                 (ConstevalHexDigit(hex_str[2 * i]) << 4) | | 
| 349 |  |                  ConstevalHexDigit(hex_str[2 * i + 1])); | 
| 350 |  |         } | 
| 351 |  |     } | 
| 352 |  | }; | 
| 353 |  | } // namespace detail | 
| 354 |  |  | 
| 355 |  | /** | 
| 356 |  |  * ""_hex is a compile-time user-defined literal returning a | 
| 357 |  |  * `std::array<std::byte>`, equivalent to ParseHex(). Variants provided: | 
| 358 |  |  * | 
| 359 |  |  * - ""_hex_v: Returns `std::vector<std::byte>`, useful for heap allocation or | 
| 360 |  |  *   variable-length serialization. | 
| 361 |  |  * | 
| 362 |  |  * - ""_hex_u8: Returns `std::array<uint8_t>`, for cases where `std::byte` is | 
| 363 |  |  *   incompatible. | 
| 364 |  |  * | 
| 365 |  |  * - ""_hex_v_u8: Returns `std::vector<uint8_t>`, combining heap allocation with | 
| 366 |  |  *   `uint8_t`. | 
| 367 |  |  * | 
| 368 |  |  * @warning It could be necessary to use vector instead of array variants when | 
| 369 |  |  *   serializing, or vice versa, because vectors are assumed to be variable- | 
| 370 |  |  *   length and serialized with a size prefix, while arrays are considered fixed | 
| 371 |  |  *   length and serialized with no prefix. | 
| 372 |  |  * | 
| 373 |  |  * @warning It may be preferable to use vector variants to save stack space when | 
| 374 |  |  *   declaring local variables if hex strings are large. Alternatively variables | 
| 375 |  |  *   could be declared constexpr to avoid using stack space. | 
| 376 |  |  * | 
| 377 |  |  * @warning Avoid `uint8_t` variants when not necessary, as the codebase | 
| 378 |  |  *   migrates to use `std::byte` instead of `unsigned char` and `uint8_t`. | 
| 379 |  |  * | 
| 380 |  |  * @note One reason ""_hex uses `std::array` instead of `std::vector` like | 
| 381 |  |  *   ParseHex() does is because heap-based containers cannot cross the compile- | 
| 382 |  |  *   time/runtime barrier. | 
| 383 |  |  */ | 
| 384 |  | inline namespace hex_literals { | 
| 385 |  |  | 
| 386 |  | template <util::detail::Hex str> | 
| 387 | 307k | constexpr auto operator""_hex() { return str.bytes; }_ZN4util12hex_literalsli4_hexITnNS_6detail3HexEXtlNS3_ILm131EEEtlNSt3__15arrayISt4byteLm65EEEtlA65_S7_LS7_4ELS7_103ELS7_138ELS7_253ELS7_176ELS7_254ELS7_85ELS7_72ELS7_39ELS7_25ELS7_103ELS7_241ELS7_166ELS7_113ELS7_48ELS7_183ELS7_16ELS7_92ELS7_214ELS7_168ELS7_40ELS7_224ELS7_57ELS7_9ELS7_166ELS7_121ELS7_98ELS7_224ELS7_234ELS7_31ELS7_97ELS7_222ELS7_182ELS7_73ELS7_246ELS7_188ELS7_63ELS7_76ELS7_239ELS7_56ELS7_196ELS7_243ELS7_85ELS7_4ELS7_229ELS7_30ELS7_193ELS7_18ELS7_222ELS7_92ELS7_56ELS7_77ELS7_247ELS7_186ELS7_11ELS7_141ELS7_87ELS7_138ELS7_76ELS7_112ELS7_43ELS7_107ELS7_241ELS7_29ELS7_95EEEEEEEDav| Line | Count | Source |  | 387 | 256k | constexpr auto operator""_hex() { return str.bytes; } | 
_ZN4util12hex_literalsli4_hexITnNS_6detail3HexEXtlNS3_ILm67EEEEEEEDav| Line | Count | Source |  | 387 | 51.2k | constexpr auto operator""_hex() { return str.bytes; } | 
Unexecuted instantiation: _ZN4util12hex_literalsli4_hexITnNS_6detail3HexEXtlNS3_ILm6109EEEtlNSt3__15arrayISt4byteLm3054EEEtlA3054_S7_LS7_1ELS7_0ELS7_0ELS7_0ELS7_144ELS7_240ELS7_169ELS7_241ELS7_16ELS7_112ELS7_47ELS7_128ELS7_130ELS7_25ELS7_235ELS7_234ELS7_17ELS7_115ELS7_5ELS7_96ELS7_66ELS7_167ELS7_20ELS7_186ELS7_213ELS7_27ELS7_145ELS7_108ELS7_182ELS7_128ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_82ELS7_117ELS7_40ELS7_149ELS7_88ELS7_245ELS7_28ELS7_153ELS7_102ELS7_105ELS7_148ELS7_4ELS7_174ELS7_34ELS7_148ELS7_115ELS7_12ELS7_60ELS7_159ELS7_155ELS7_218ELS7_83ELS7_82ELS7_60ELS7_229ELS7_14ELS7_155ELS7_149ELS7_229ELS7_88ELS7_218ELS7_47ELS7_219ELS7_38ELS7_27ELS7_77ELS7_76ELS7_134ELS7_4ELS7_27ELS7_26ELS7_177ELS7_191ELS7_147ELS7_9ELS7_1ELS7_0ELS7_0ELS7_0ELS7_1ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_255ELS7_255ELS7_255ELS7_255ELS7_7ELS7_4ELS7_76ELS7_134ELS7_4ELS7_27ELS7_1ELS7_70ELS7_255ELS7_255ELS7_255ELS7_255ELS7_1ELS7_0ELS7_242ELS7_5ELS7_42ELS7_1ELS7_0ELS7_0ELS7_0ELS7_67ELS7_65ELS7_4ELS7_225ELS7_143ELS7_122ELS7_251ELS7_228ELS7_114ELS7_21ELS7_128ELS7_232ELS7_30ELS7_132ELS7_20ELS7_252ELS7_140ELS7_36ELS7_215ELS7_207ELS7_172ELS7_242ELS7_84ELS7_187ELS7_92ELS7_123ELS7_148ELS7_148ELS7_80ELS7_195ELS7_233ELS7_151ELS7_194ELS7_220ELS7_18ELS7_66ELS7_72ELS7_122ELS7_129ELS7_105ELS7_80ELS7_123ELS7_99ELS7_30ELS7_179ELS7_119ELS7_31ELS7_43ELS7_66ELS7_84ELS7_131ELS7_251ELS7_19ELS7_16ELS7_44ELS7_78ELS7_181ELS7_216ELS7_88ELS7_238ELS7_242ELS7_96ELS7_254ELS7_112ELS7_251ELS7_250ELS7_224ELS7_172ELS7_0ELS7_0ELS7_0ELS7_0ELS7_1ELS7_0ELS7_0ELS7_0ELS7_1ELS7_150ELS7_96ELS7_140ELS7_203ELS7_175ELS7_161ELS7_106ELS7_186ELS7_218ELS7_144ELS7_39ELS7_128ELS7_218ELS7_77ELS7_195ELS7_93ELS7_175ELS7_215ELS7_175ELS7_5ELS7_250ELS7_13ELS7_160ELS7_140ELS7_248ELS7_51ELS7_87ELS7_95ELS7_140ELS7_249ELS7_232ELS7_54ELS7_0ELS7_0ELS7_0ELS7_0ELS7_74ELS7_73ELS7_48ELS7_70ELS7_2ELS7_33ELS7_0ELS7_218ELS7_178ELS7_72ELS7_137ELS7_33ELS7_60ELS7_175ELS7_67ELS7_174ELS7_106ELS7_220ELS7_65ELS7_207ELS7_28ELS7_147ELS7_150ELS7_192ELS7_130ELS7_64ELS7_193ELS7_153ELS7_245ELS7_34ELS7_90ELS7_207ELS7_69ELS7_65ELS7_99ELS7_48ELS7_253ELS7_125ELS7_189ELS7_2ELS7_33ELS7_0ELS7_254ELS7_55ELS7_144ELS7_14ELS7_6ELS7_68ELS7_191ELS7_87ELS7_68ELS7_147ELS7_160ELS7_127ELS7_197ELS7_237ELS7_186ELS7_6ELS7_219ELS7_192ELS7_124ELS7_49ELS7_27ELS7_148ELS7_117ELS7_32ELS7_194ELS7_213ELS7_20ELS7_188ELS7_87ELS7_37ELS7_220ELS7_180ELS7_1ELS7_255ELS7_255ELS7_255ELS7_255ELS7_1ELS7_0ELS7_242ELS7_5ELS7_42ELS7_1ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_241ELS7_93ELS7_25ELS7_33ELS7_245ELS7_46ELS7_64ELS7_7ELS7_177ELS7_70ELS7_223ELS7_166ELS7_15ELS7_54ELS7_158ELS7_210ELS7_252ELS7_57ELS7_60ELS7_226ELS7_136ELS7_172ELS7_0ELS7_0ELS7_0ELS7_0ELS7_1ELS7_0ELS7_0ELS7_0ELS7_1ELS7_251ELS7_118ELS7_108ELS7_18ELS7_136ELS7_69ELS7_140ELS7_43ELS7_175ELS7_207ELS7_236ELS7_129ELS7_228ELS7_139ELS7_36ELS7_217ELS7_142ELS7_199ELS7_6ELS7_222ELS7_107ELS7_138ELS7_247ELS7_196ELS7_227ELS7_194ELS7_148ELS7_25ELS7_191ELS7_172ELS7_181ELS7_109ELS7_0ELS7_0ELS7_0ELS7_0ELS7_140ELS7_73ELS7_48ELS7_70ELS7_2ELS7_33ELS7_0ELS7_242ELS7_104ELS7_186ELS7_22ELS7_92ELS7_224ELS7_173ELS7_46ELS7_109ELS7_147ELS7_240ELS7_137ELS7_207ELS7_205ELS7_55ELS7_133ELS7_222ELS7_92ELS7_150ELS7_59ELS7_181ELS7_234ELS7_107ELS7_140ELS7_27ELS7_35ELS7_241ELS7_206ELS7_62ELS7_81ELS7_123ELS7_159ELS7_2ELS7_33ELS7_0ELS7_218ELS7_124ELS7_15ELS7_33ELS7_173ELS7_198ELS7_196ELS7_1ELS7_136ELS7_127ELS7_43ELS7_253ELS7_25ELS7_34ELS7_241ELS7_29ELS7_118ELS7_21ELS7_156ELS7_188ELS7_89ELS7_127ELS7_189ELS7_117ELS7_106ELS7_35ELS7_220ELS7_187ELS7_0ELS7_244ELS7_215ELS7_41ELS7_1ELS7_65ELS7_4ELS7_43ELS7_78ELS7_134ELS7_37ELS7_169ELS7_97ELS7_39ELS7_130ELS7_105ELS7_21ELS7_165ELS7_177ELS7_9ELS7_133ELS7_38ELS7_54ELS7_173ELS7_13ELS7_167ELS7_83ELS7_201ELS7_225ELS7_213ELS7_96ELS7_106ELS7_80ELS7_72ELS7_12ELS7_208ELS7_196ELS7_15ELS7_31ELS7_139ELS7_141ELS7_137ELS7_130ELS7_53ELS7_229ELS7_113ELS7_254ELS7_147ELS7_87ELS7_217ELS7_236ELS7_132ELS7_43ELS7_196ELS7_187ELS7_161ELS7_130ELS7_125ELS7_170ELS7_244ELS7_222ELS7_6ELS7_215ELS7_24ELS7_68ELS7_208ELS7_5ELS7_119ELS7_7ELS7_150ELS7_106ELS7_255ELS7_255ELS7_255ELS7_255ELS7_2ELS7_128ELS7_150ELS7_152ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_105ELS7_99ELS7_144ELS7_117ELS7_49ELS7_219ELS7_114ELS7_208ELS7_237ELS7_26ELS7_12ELS7_251ELS7_71ELS7_28ELS7_203ELS7_99ELS7_146ELS7_52ELS7_70ELS7_243ELS7_136ELS7_172ELS7_128ELS7_214ELS7_227ELS7_76ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_240ELS7_104ELS7_139ELS7_161ELS7_192ELS7_209ELS7_206ELS7_24ELS7_44ELS7_122ELS7_246ELS7_116ELS7_30ELS7_2ELS7_101ELS7_140ELS7_125ELS7_77ELS7_252ELS7_211ELS7_136ELS7_172ELS7_0ELS7_0ELS7_0ELS7_0ELS7_1ELS7_0ELS7_0ELS7_0ELS7_2ELS7_196ELS7_2ELS7_151ELS7_247ELS7_48ELS7_221ELS7_123ELS7_90ELS7_153ELS7_86ELS7_126ELS7_184ELS7_210ELS7_123ELS7_120ELS7_117ELS7_143ELS7_96ELS7_117ELS7_7ELS7_197ELS7_34ELS7_146ELS7_208ELS7_45ELS7_64ELS7_49ELS7_137ELS7_91ELS7_82ELS7_242ELS7_255ELS7_1ELS7_0ELS7_0ELS7_0ELS7_139ELS7_72ELS7_48ELS7_69ELS7_2ELS7_33ELS7_0ELS7_247ELS7_237ELS7_253ELS7_75ELS7_10ELS7_172ELS7_64ELS7_78ELS7_91ELS7_171ELS7_79ELS7_211ELS7_136ELS7_158ELS7_12ELS7_108ELS7_65ELS7_170ELS7_141ELS7_14ELS7_111ELS7_161ELS7_34ELS7_49ELS7_111ELS7_104ELS7_237ELS7_221ELS7_10ELS7_101ELS7_1ELS7_57ELS7_2ELS7_32ELS7_91ELS7_9ELS7_204ELS7_139ELS7_45ELS7_86ELS7_225ELS7_205ELS7_31ELS7_127ELS7_47ELS7_175ELS7_214ELS7_10ELS7_18ELS7_158ELS7_217ELS7_69ELS7_4ELS7_196ELS7_172ELS7_123ELS7_220ELS7_103ELS7_181ELS7_111ELS7_230ELS7_117ELS7_18ELS7_101ELS7_139ELS7_62ELS7_1ELS7_65ELS7_4ELS7_115ELS7_32ELS7_18ELS7_203ELS7_150ELS7_42ELS7_250ELS7_144ELS7_211ELS7_27ELS7_37ELS7_216ELS7_251ELS7_14ELS7_50ELS7_201ELS7_78ELS7_81ELS7_58ELS7_183ELS7_161ELS7_120ELS7_5ELS7_193ELS7_76ELS7_164ELS7_195ELS7_66ELS7_62ELS7_24ELS7_180ELS7_251ELS7_93ELS7_14ELS7_103ELS7_104ELS7_65ELS7_115ELS7_60ELS7_184ELS7_58ELS7_186ELS7_249ELS7_117ELS7_132ELS7_92ELS7_159ELS7_111ELS7_42ELS7_128ELS7_151ELS7_183ELS7_208ELS7_79ELS7_73ELS7_8ELS7_177ELS7_131ELS7_104ELS7_214ELS7_252ELS7_45ELS7_104ELS7_236ELS7_255ELS7_255ELS7_255ELS7_255ELS7_202ELS7_80ELS7_101ELS7_255ELS7_150ELS7_23ELS7_203ELS7_203ELS7_164ELS7_94ELS7_178ELS7_55ELS7_38ELS7_223ELS7_100ELS7_152ELS7_169ELS7_185ELS7_202ELS7_254ELS7_212ELS7_245ELS7_76ELS7_186ELS7_185ELS7_210ELS7_39ELS7_176ELS7_3ELS7_93ELS7_222ELS7_251ELS7_0ELS7_0ELS7_0ELS7_0ELS7_138ELS7_71ELS7_48ELS7_68ELS7_2ELS7_32ELS7_104ELS7_1ELS7_3ELS7_98ELS7_161ELS7_60ELS7_127ELS7_153ELS7_25ELS7_250ELS7_131ELS7_43ELS7_45ELS7_238ELS7_78ELS7_120ELS7_143ELS7_97ELS7_246ELS7_245ELS7_211ELS7_68ELS7_167ELS7_194ELS7_160ELS7_218ELS7_106ELS7_231ELS7_64ELS7_96ELS7_86ELS7_88ELS7_2ELS7_32ELS7_6ELS7_209ELS7_175ELS7_82ELS7_91ELS7_154ELS7_20ELS7_163ELS7_92ELS7_0ELS7_59ELS7_120ELS7_183ELS7_43ELS7_213ELS7_151ELS7_56ELS7_205ELS7_103ELS7_111ELS7_132ELS7_93ELS7_31ELS7_243ELS7_252ELS7_37ELS7_4ELS7_158ELS7_1ELS7_0ELS7_54ELS7_20ELS7_1ELS7_65ELS7_4ELS7_115ELS7_32ELS7_18ELS7_203ELS7_150ELS7_42ELS7_250ELS7_144ELS7_211ELS7_27ELS7_37ELS7_216ELS7_251ELS7_14ELS7_50ELS7_201ELS7_78ELS7_81ELS7_58ELS7_183ELS7_161ELS7_120ELS7_5ELS7_193ELS7_76ELS7_164ELS7_195ELS7_66ELS7_62ELS7_24ELS7_180ELS7_251ELS7_93ELS7_14ELS7_103ELS7_104ELS7_65ELS7_115ELS7_60ELS7_184ELS7_58ELS7_186ELS7_249ELS7_117ELS7_132ELS7_92ELS7_159ELS7_111ELS7_42ELS7_128ELS7_151ELS7_183ELS7_208ELS7_79ELS7_73ELS7_8ELS7_177ELS7_131ELS7_104ELS7_214ELS7_252ELS7_45ELS7_104ELS7_236ELS7_255ELS7_255ELS7_255ELS7_255ELS7_1ELS7_0ELS7_30ELS7_196ELS7_17ELS7_2ELS7_0ELS7_0ELS7_0ELS7_67ELS7_65ELS7_4ELS7_105ELS7_171ELS7_65ELS7_129ELS7_236ELS7_235ELS7_40ELS7_152ELS7_91ELS7_155ELS7_78ELS7_137ELS7_92ELS7_19ELS7_250ELS7_94ELS7_104ELS7_216ELS7_87ELS7_97ELS7_183ELS7_238ELS7_227ELS7_17ELS7_219ELS7_90ELS7_221ELS7_239ELS7_118ELS7_250ELS7_134ELS7_33ELS7_134ELS7_81ELS7_52ELS7_162ELS7_33ELS7_189ELS7_1ELS7_242ELS7_142ELS7_201ELS7_153ELS7_158ELS7_227ELS7_224ELS7_33ELS7_230ELS7_7ELS7_102ELS7_233ELS7_209ELS7_243ELS7_69ELS7_140ELS7_17ELS7_95ELS7_178ELS7_134ELS7_80ELS7_96ELS7_95ELS7_17ELS7_201ELS7_172ELS7_0ELS7_0ELS7_0ELS7_0ELS7_1ELS7_0ELS7_0ELS7_0ELS7_1ELS7_205ELS7_175ELS7_47ELS7_117ELS7_142ELS7_145ELS7_197ELS7_20ELS7_101ELS7_94ELS7_45ELS7_197ELS7_6ELS7_51ELS7_209ELS7_228ELS7_200ELS7_73ELS7_137ELS7_248ELS7_170ELS7_144ELS7_160ELS7_219ELS7_200ELS7_131ELS7_240ELS7_210ELS7_62ELS7_213ELS7_194ELS7_250ELS7_1ELS7_0ELS7_0ELS7_0ELS7_139ELS7_72ELS7_48ELS7_69ELS7_2ELS7_32ELS7_122ELS7_181ELS7_27ELS7_230ELS7_241ELS7_42ELS7_25ELS7_98ELS7_186ELS7_10ELS7_170ELS7_242ELS7_74ELS7_32ELS7_224ELS7_182ELS7_155ELS7_39ELS7_169ELS7_79ELS7_172ELS7_90ELS7_223ELS7_69ELS7_170ELS7_125ELS7_45ELS7_24ELS7_255ELS7_217ELS7_35ELS7_97ELS7_2ELS7_33ELS7_0ELS7_134ELS7_174ELS7_114ELS7_139ELS7_55ELS7_14ELS7_83ELS7_41ELS7_238ELS7_173ELS7_154ELS7_204ELS7_216ELS7_128ELS7_208ELS7_203ELS7_7ELS7_10ELS7_234ELS7_12ELS7_150ELS7_37ELS7_95ELS7_174ELS7_108ELS7_79ELS7_29ELS7_220ELS7_206ELS7_31ELS7_213ELS7_110ELS7_1ELS7_65ELS7_4ELS7_70ELS7_46ELS7_118ELS7_253ELS7_64ELS7_103ELS7_179ELS7_160ELS7_170ELS7_66ELS7_7ELS7_0ELS7_130ELS7_220ELS7_176ELS7_191ELS7_47ELS7_56ELS7_139ELS7_100ELS7_149ELS7_207ELS7_51ELS7_215ELS7_137ELS7_144ELS7_79ELS7_7ELS7_208ELS7_245ELS7_92ELS7_64ELS7_251ELS7_212ELS7_184ELS7_41ELS7_99ELS7_198ELS7_155ELS7_61ELS7_195ELS7_24ELS7_149ELS7_208ELS7_199ELS7_114ELS7_200ELS7_18ELS7_177ELS7_213ELS7_251ELS7_202ELS7_222ELS7_21ELS7_49ELS7_46ELS7_241ELS7_192ELS7_232ELS7_235ELS7_187ELS7_18ELS7_220ELS7_212ELS7_255ELS7_255ELS7_255ELS7_255ELS7_2ELS7_64ELS7_75ELS7_76ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_43ELS7_107ELS7_167ELS7_201ELS7_215ELS7_150ELS7_183ELS7_94ELS7_239ELS7_121ELS7_66ELS7_252ELS7_146ELS7_136ELS7_237ELS7_211ELS7_124ELS7_50ELS7_245ELS7_195ELS7_136ELS7_172ELS7_0ELS7_45ELS7_49ELS7_1ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_27ELS7_239ELS7_186ELS7_12ELS7_220ELS7_26ELS7_213ELS7_101ELS7_41ELS7_55ELS7_24ELS7_100ELS7_217ELS7_246ELS7_203ELS7_4ELS7_47ELS7_170ELS7_6ELS7_181ELS7_136ELS7_172ELS7_0ELS7_0ELS7_0ELS7_0ELS7_1ELS7_0ELS7_0ELS7_0ELS7_1ELS7_180ELS7_164ELS7_118ELS7_3ELS7_231ELS7_27ELS7_97ELS7_188ELS7_51ELS7_38ELS7_239ELS7_217ELS7_1ELS7_17ELS7_191ELS7_2ELS7_210ELS7_245ELS7_73ELS7_176ELS7_103ELS7_244ELS7_196ELS7_168ELS7_250ELS7_24ELS7_59ELS7_87ELS7_160ELS7_248ELS7_0ELS7_203ELS7_1ELS7_0ELS7_0ELS7_0ELS7_138ELS7_71ELS7_48ELS7_68ELS7_2ELS7_32ELS7_23ELS7_124ELS7_55ELS7_249ELS7_165ELS7_5ELS7_195ELS7_241ELS7_161ELS7_240ELS7_206ELS7_45ELS7_167ELS7_119ELS7_195ELS7_57ELS7_189ELS7_131ELS7_57ELS7_255ELS7_160ELS7_44ELS7_124ELS7_180ELS7_31ELS7_10ELS7_88ELS7_4ELS7_244ELS7_115ELS7_201ELS7_35ELS7_2ELS7_32ELS7_88ELS7_91ELS7_37ELS7_162ELS7_238ELS7_128ELS7_235ELS7_89ELS7_41ELS7_46ELS7_82ELS7_185ELS7_135ELS7_218ELS7_217ELS7_42ELS7_203ELS7_12ELS7_100ELS7_236ELS7_237ELS7_146ELS7_237ELS7_158ELS7_225ELS7_5ELS7_173ELS7_21ELS7_60ELS7_219ELS7_18ELS7_208ELS7_1ELS7_65ELS7_4ELS7_67ELS7_189ELS7_68ELS7_246ELS7_131ELS7_70ELS7_126ELS7_84ELS7_157ELS7_174ELS7_125ELS7_32ELS7_209ELS7_215ELS7_156ELS7_189ELS7_182ELS7_223ELS7_152ELS7_92ELS7_110ELS7_156ELS7_2ELS7_156ELS7_141ELS7_12ELS7_108ELS7_180ELS7_108ELS7_193ELS7_164ELS7_211ELS7_207ELS7_121ELS7_35ELS7_197ELS7_2ELS7_27ELS7_39ELS7_247ELS7_160ELS7_181ELS7_98ELS7_173ELS7_161ELS7_19ELS7_188ELS7_133ELS7_213ELS7_253ELS7_165ELS7_161ELS7_180ELS7_30ELS7_135ELS7_254ELS7_110ELS7_136ELS7_2ELS7_129ELS7_124ELS7_246ELS7_153ELS7_150ELS7_255ELS7_255ELS7_255ELS7_255ELS7_2ELS7_128ELS7_101ELS7_20ELS7_6ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_85ELS7_5ELS7_97ELS7_72ELS7_89ELS7_100ELS7_58ELS7_183ELS7_181ELS7_71ELS7_205ELS7_127ELS7_31ELS7_94ELS7_126ELS7_42ELS7_18ELS7_50ELS7_45ELS7_55ELS7_136ELS7_172ELS7_0ELS7_170ELS7_2ELS7_113ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_234ELS7_71ELS7_32ELS7_167ELS7_165ELS7_47ELS7_193ELS7_102ELS7_197ELS7_95ELS7_242ELS7_41ELS7_142ELS7_7ELS7_186ELS7_247ELS7_10ELS7_230ELS7_126ELS7_27ELS7_136ELS7_172ELS7_0ELS7_0ELS7_0ELS7_0ELS7_1ELS7_0ELS7_0ELS7_0ELS7_5ELS7_134ELS7_198ELS7_44ELS7_214ELS7_2ELS7_210ELS7_25ELS7_187ELS7_96ELS7_237ELS7_177ELS7_74ELS7_62ELS7_32ELS7_77ELS7_224ELS7_112ELS7_81ELS7_118ELS7_249ELS7_2ELS7_47ELS7_228ELS7_154ELS7_83ELS7_128ELS7_84ELS7_251ELS7_20ELS7_171ELS7_180ELS7_158ELS7_1ELS7_0ELS7_0ELS7_0ELS7_140ELS7_73ELS7_48ELS7_70ELS7_2ELS7_33ELS7_0ELS7_242ELS7_188ELS7_42ELS7_186ELS7_37ELS7_52ELS7_190ELS7_203ELS7_223ELS7_6ELS7_46ELS7_185ELS7_147ELS7_133ELS7_58ELS7_66ELS7_187ELS7_188ELS7_40ELS7_32ELS7_131ELS7_208ELS7_218ELS7_249ELS7_180ELS7_181ELS7_133ELS7_189ELS7_64ELS7_26ELS7_168ELS7_201ELS7_2ELS7_33ELS7_0ELS7_177ELS7_215ELS7_253ELS7_126ELS7_224ELS7_185ELS7_86ELS7_0ELS7_219ELS7_133ELS7_53ELS7_187ELS7_243ELS7_49ELS7_177ELS7_158ELS7_237ELS7_141ELS7_150ELS7_31ELS7_122ELS7_142ELS7_84ELS7_21ELS7_156ELS7_83ELS7_103ELS7_93ELS7_95ELS7_105ELS7_223ELS7_140ELS7_1ELS7_65ELS7_4ELS7_70ELS7_46ELS7_118ELS7_253ELS7_64ELS7_103ELS7_179ELS7_160ELS7_170ELS7_66ELS7_7ELS7_0ELS7_130ELS7_220ELS7_176ELS7_191ELS7_47ELS7_56ELS7_139ELS7_100ELS7_149ELS7_207ELS7_51ELS7_215ELS7_137ELS7_144ELS7_79ELS7_7ELS7_208ELS7_245ELS7_92ELS7_64ELS7_251ELS7_212ELS7_184ELS7_41ELS7_99ELS7_198ELS7_155ELS7_61ELS7_195ELS7_24ELS7_149ELS7_208ELS7_199ELS7_114ELS7_200ELS7_18ELS7_177ELS7_213ELS7_251ELS7_202ELS7_222ELS7_21ELS7_49ELS7_46ELS7_241ELS7_192ELS7_232ELS7_235ELS7_187ELS7_18ELS7_220ELS7_212ELS7_255ELS7_255ELS7_255ELS7_255ELS7_3ELS7_173ELS7_14ELS7_88ELS7_204ELS7_218ELS7_195ELS7_223ELS7_157ELS7_194ELS7_138ELS7_33ELS7_139ELS7_207ELS7_111ELS7_25ELS7_151ELS7_176ELS7_169ELS7_51ELS7_6ELS7_250ELS7_170ELS7_75ELS7_58ELS7_40ELS7_174ELS7_131ELS7_68ELS7_123ELS7_33ELS7_121ELS7_1ELS7_0ELS7_0ELS7_0ELS7_139ELS7_72ELS7_48ELS7_69ELS7_2ELS7_33ELS7_0ELS7_190ELS7_18ELS7_178ELS7_147ELS7_113ELS7_121ELS7_218ELS7_136ELS7_89ELS7_158ELS7_39ELS7_187ELS7_49ELS7_195ELS7_82ELS7_80ELS7_151ELS7_160ELS7_124ELS7_219ELS7_82ELS7_66ELS7_45ELS7_22ELS7_91ELS7_60ELS7_162ELS7_242ELS7_2ELS7_15ELS7_252ELS7_247ELS7_2ELS7_32ELS7_9ELS7_113ELS7_181ELS7_31ELS7_133ELS7_58ELS7_83ELS7_214ELS7_68ELS7_235ELS7_174ELS7_158ELS7_200ELS7_243ELS7_81ELS7_46ELS7_68ELS7_43ELS7_27ELS7_203ELS7_108ELS7_49ELS7_90ELS7_91ELS7_73ELS7_29ELS7_17ELS7_157ELS7_16ELS7_98ELS7_76ELS7_131ELS7_1ELS7_65ELS7_4ELS7_70ELS7_46ELS7_118ELS7_253ELS7_64ELS7_103ELS7_179ELS7_160ELS7_170ELS7_66ELS7_7ELS7_0ELS7_130ELS7_220ELS7_176ELS7_191ELS7_47ELS7_56ELS7_139ELS7_100ELS7_149ELS7_207ELS7_51ELS7_215ELS7_137ELS7_144ELS7_79ELS7_7ELS7_208ELS7_245ELS7_92ELS7_64ELS7_251ELS7_212ELS7_184ELS7_41ELS7_99ELS7_198ELS7_155ELS7_61ELS7_195ELS7_24ELS7_149ELS7_208ELS7_199ELS7_114ELS7_200ELS7_18ELS7_177ELS7_213ELS7_251ELS7_202ELS7_222ELS7_21ELS7_49ELS7_46ELS7_241ELS7_192ELS7_232ELS7_235ELS7_187ELS7_18ELS7_220ELS7_212ELS7_255ELS7_255ELS7_255ELS7_255ELS7_42ELS7_207ELS7_202ELS7_182ELS7_41ELS7_187ELS7_200ELS7_104ELS7_87ELS7_146ELS7_96ELS7_55ELS7_98ELS7_201ELS7_33ELS7_88ELS7_0ELS7_48ELS7_186ELS7_20ELS7_74ELS7_245ELS7_83ELS7_210ELS7_113ELS7_113ELS7_106ELS7_149ELS7_8ELS7_158ELS7_16ELS7_123ELS7_1ELS7_0ELS7_0ELS7_0ELS7_139ELS7_72ELS7_48ELS7_69ELS7_2ELS7_33ELS7_0ELS7_250ELS7_87ELS7_154ELS7_132ELS7_10ELS7_194ELS7_88ELS7_135ELS7_19ELS7_101ELS7_221ELS7_72ELS7_205ELS7_117ELS7_82ELS7_249ELS7_108ELS7_142ELS7_234ELS7_105ELS7_189ELS7_0ELS7_216ELS7_79ELS7_5ELS7_178ELS7_131ELS7_160ELS7_218ELS7_179ELS7_17ELS7_225ELS7_2ELS7_32ELS7_126ELS7_60ELS7_14ELS7_233ELS7_35ELS7_72ELS7_20ELS7_207ELS7_187ELS7_27ELS7_101ELS7_155ELS7_131ELS7_103ELS7_22ELS7_24ELS7_244ELS7_90ELS7_188ELS7_19ELS7_38ELS7_185ELS7_237ELS7_204ELS7_119ELS7_213ELS7_82ELS7_164ELS7_242ELS7_168ELS7_5ELS7_192ELS7_1ELS7_65ELS7_4ELS7_70ELS7_46ELS7_118ELS7_253ELS7_64ELS7_103ELS7_179ELS7_160ELS7_170ELS7_66ELS7_7ELS7_0ELS7_130ELS7_220ELS7_176ELS7_191ELS7_47ELS7_56ELS7_139ELS7_100ELS7_149ELS7_207ELS7_51ELS7_215ELS7_137ELS7_144ELS7_79ELS7_7ELS7_208ELS7_245ELS7_92ELS7_64ELS7_251ELS7_212ELS7_184ELS7_41ELS7_99ELS7_198ELS7_155ELS7_61ELS7_195ELS7_24ELS7_149ELS7_208ELS7_199ELS7_114ELS7_200ELS7_18ELS7_177ELS7_213ELS7_251ELS7_202ELS7_222ELS7_21ELS7_49ELS7_46ELS7_241ELS7_192ELS7_232ELS7_235ELS7_187ELS7_18ELS7_220ELS7_212ELS7_255ELS7_255ELS7_255ELS7_255ELS7_220ELS7_220ELS7_96ELS7_35ELS7_187ELS7_201ELS7_148ELS7_74ELS7_101ELS7_141ELS7_220ELS7_88ELS7_142ELS7_97ELS7_234ELS7_203ELS7_115ELS7_125ELS7_223ELS7_10ELS7_60ELS7_210ELS7_79ELS7_17ELS7_59ELS7_90ELS7_134ELS7_52ELS7_197ELS7_23ELS7_252ELS7_210ELS7_0ELS7_0ELS7_0ELS7_0ELS7_139ELS7_72ELS7_48ELS7_69ELS7_2ELS7_33ELS7_0ELS7_141ELS7_109ELS7_247ELS7_49ELS7_223ELS7_93ELS7_50ELS7_38ELS7_121ELS7_84ELS7_189ELS7_125ELS7_45ELS7_218ELS7_35ELS7_2ELS7_183ELS7_76ELS7_108ELS7_42ELS7_106ELS7_165ELS7_192ELS7_202ELS7_100ELS7_236ELS7_186ELS7_188ELS7_26ELS7_240ELS7_60ELS7_117ELS7_2ELS7_32ELS7_16ELS7_229ELS7_92ELS7_87ELS7_29ELS7_101ELS7_218ELS7_119ELS7_1ELS7_174ELS7_45ELS7_161ELS7_149ELS7_108ELS7_68ELS7_45ELS7_248ELS7_27ELS7_191ELS7_7ELS7_108ELS7_219ELS7_172ELS7_37ELS7_19ELS7_63ELS7_153ELS7_217ELS7_138ELS7_158ELS7_211ELS7_76ELS7_1ELS7_65ELS7_4ELS7_70ELS7_46ELS7_118ELS7_253ELS7_64ELS7_103ELS7_179ELS7_160ELS7_170ELS7_66ELS7_7ELS7_0ELS7_130ELS7_220ELS7_176ELS7_191ELS7_47ELS7_56ELS7_139ELS7_100ELS7_149ELS7_207ELS7_51ELS7_215ELS7_137ELS7_144ELS7_79ELS7_7ELS7_208ELS7_245ELS7_92ELS7_64ELS7_251ELS7_212ELS7_184ELS7_41ELS7_99ELS7_198ELS7_155ELS7_61ELS7_195ELS7_24ELS7_149ELS7_208ELS7_199ELS7_114ELS7_200ELS7_18ELS7_177ELS7_213ELS7_251ELS7_202ELS7_222ELS7_21ELS7_49ELS7_46ELS7_241ELS7_192ELS7_232ELS7_235ELS7_187ELS7_18ELS7_220ELS7_212ELS7_255ELS7_255ELS7_255ELS7_255ELS7_225ELS7_85ELS7_87ELS7_205ELS7_92ELS7_226ELS7_88ELS7_244ELS7_121ELS7_223ELS7_214ELS7_220ELS7_101ELS7_20ELS7_237ELS7_246ELS7_215ELS7_237ELS7_91ELS7_33ELS7_252ELS7_250ELS7_74ELS7_3ELS7_143ELS7_214ELS7_159ELS7_6ELS7_184ELS7_58ELS7_199ELS7_110ELS7_1ELS7_0ELS7_0ELS7_0ELS7_139ELS7_72ELS7_48ELS7_69ELS7_2ELS7_32ELS7_35ELS7_179ELS7_224ELS7_171ELS7_7ELS7_30ELS7_177ELS7_29ELS7_226ELS7_235ELS7_28ELS7_195ELS7_166ELS7_114ELS7_97ELS7_184ELS7_102ELS7_248ELS7_107ELS7_246ELS7_134ELS7_125ELS7_69ELS7_88ELS7_22ELS7_95ELS7_124ELS7_140ELS7_138ELS7_202ELS7_45ELS7_134ELS7_2ELS7_33ELS7_0ELS7_220ELS7_110ELS7_31ELS7_83ELS7_169ELS7_29ELS7_227ELS7_239ELS7_232ELS7_246ELS7_53ELS7_18ELS7_133ELS7_8ELS7_17ELS7_242ELS7_98ELS7_132ELS7_182ELS7_47ELS7_133ELS7_12ELS7_112ELS7_202ELS7_115ELS7_237ELS7_93ELS7_232ELS7_119ELS7_31ELS7_180ELS7_81ELS7_1ELS7_65ELS7_4ELS7_70ELS7_46ELS7_118ELS7_253ELS7_64ELS7_103ELS7_179ELS7_160ELS7_170ELS7_66ELS7_7ELS7_0ELS7_130ELS7_220ELS7_176ELS7_191ELS7_47ELS7_56ELS7_139ELS7_100ELS7_149ELS7_207ELS7_51ELS7_215ELS7_137ELS7_144ELS7_79ELS7_7ELS7_208ELS7_245ELS7_92ELS7_64ELS7_251ELS7_212ELS7_184ELS7_41ELS7_99ELS7_198ELS7_155ELS7_61ELS7_195ELS7_24ELS7_149ELS7_208ELS7_199ELS7_114ELS7_200ELS7_18ELS7_177ELS7_213ELS7_251ELS7_202ELS7_222ELS7_21ELS7_49ELS7_46ELS7_241ELS7_192ELS7_232ELS7_235ELS7_187ELS7_18ELS7_220ELS7_212ELS7_255ELS7_255ELS7_255ELS7_255ELS7_1ELS7_64ELS7_75ELS7_76ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_43ELS7_107ELS7_167ELS7_201ELS7_215ELS7_150ELS7_183ELS7_94ELS7_239ELS7_121ELS7_66ELS7_252ELS7_146ELS7_136ELS7_237ELS7_211ELS7_124ELS7_50ELS7_245ELS7_195ELS7_136ELS7_172ELS7_0ELS7_0ELS7_0ELS7_0ELS7_1ELS7_0ELS7_0ELS7_0ELS7_1ELS7_102ELS7_215ELS7_87ELS7_113ELS7_99ELS7_201ELS7_50ELS7_180ELS7_249ELS7_105ELS7_12ELS7_166ELS7_168ELS7_11ELS7_110ELS7_78ELS7_176ELS7_1ELS7_240ELS7_162ELS7_250ELS7_144ELS7_35ELS7_223ELS7_85ELS7_149ELS7_96ELS7_42ELS7_174ELS7_150ELS7_237ELS7_141ELS7_0ELS7_0ELS7_0ELS7_0ELS7_138ELS7_71ELS7_48ELS7_68ELS7_2ELS7_32ELS7_38ELS7_43ELS7_66ELS7_84ELS7_99ELS7_2ELS7_223ELS7_182ELS7_84ELS7_162ELS7_41ELS7_206ELS7_252ELS7_134ELS7_67ELS7_43ELS7_137ELS7_98ELS7_143ELS7_242ELS7_89ELS7_220ELS7_135ELS7_237ELS7_209ELS7_21ELS7_69ELS7_53ELS7_177ELS7_106ELS7_103ELS7_225ELS7_2ELS7_32ELS7_123ELS7_70ELS7_52ELS7_192ELS7_32ELS7_169ELS7_124ELS7_62ELS7_123ELS7_189ELS7_13ELS7_77ELS7_25ELS7_218ELS7_106ELS7_162ELS7_38ELS7_154ELS7_217ELS7_221ELS7_237ELS7_64ELS7_38ELS7_232ELS7_150ELS7_178ELS7_19ELS7_215ELS7_60ELS7_164ELS7_182ELS7_63ELS7_1ELS7_65ELS7_4ELS7_151ELS7_155ELS7_130ELS7_208ELS7_34ELS7_38ELS7_179ELS7_164ELS7_89ELS7_117ELS7_35ELS7_132ELS7_87ELS7_84ELS7_212ELS7_79ELS7_19ELS7_99ELS7_158ELS7_59ELS7_242ELS7_223ELS7_94ELS7_130ELS7_198ELS7_170ELS7_178ELS7_189ELS7_199ELS7_150ELS7_135ELS7_54ELS7_139ELS7_1ELS7_177ELS7_171ELS7_139ELS7_25ELS7_135ELS7_90ELS7_227ELS7_201ELS7_13ELS7_102ELS7_26ELS7_61ELS7_10ELS7_51ELS7_22ELS7_29ELS7_171ELS7_41ELS7_147ELS7_78ELS7_222ELS7_179ELS7_106ELS7_160ELS7_25ELS7_118ELS7_190ELS7_59ELS7_175ELS7_138ELS7_255ELS7_255ELS7_255ELS7_255ELS7_2ELS7_64ELS7_75ELS7_76ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_72ELS7_84ELS7_230ELS7_149ELS7_160ELS7_42ELS7_240ELS7_174ELS7_172ELS7_184ELS7_35ELS7_204ELS7_188ELS7_39ELS7_33ELS7_52ELS7_86ELS7_30ELS7_10ELS7_22ELS7_136ELS7_172ELS7_64ELS7_66ELS7_15ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_171ELS7_238ELS7_147ELS7_55ELS7_109ELS7_107ELS7_55ELS7_181ELS7_194ELS7_148ELS7_6ELS7_85ELS7_166ELS7_252ELS7_175ELS7_28ELS7_142ELS7_116ELS7_35ELS7_121ELS7_136ELS7_172ELS7_0ELS7_0ELS7_0ELS7_0ELS7_1ELS7_0ELS7_0ELS7_0ELS7_1ELS7_78ELS7_63ELS7_142ELS7_242ELS7_233ELS7_19ELS7_73ELS7_169ELS7_5ELS7_156ELS7_180ELS7_240ELS7_30ELS7_84ELS7_171ELS7_37ELS7_151ELS7_193ELS7_56ELS7_113ELS7_97ELS7_211ELS7_218ELS7_137ELS7_145ELS7_159ELS7_126ELS7_166ELS7_172ELS7_219ELS7_179ELS7_113ELS7_1ELS7_0ELS7_0ELS7_0ELS7_140ELS7_73ELS7_48ELS7_70ELS7_2ELS7_33ELS7_0ELS7_129ELS7_243ELS7_24ELS7_52ELS7_113ELS7_165ELS7_202ELS7_34ELS7_48ELS7_124ELS7_8ELS7_0ELS7_34ELS7_111ELS7_62ELS7_249ELS7_195ELS7_83ELS7_6ELS7_158ELS7_7ELS7_115ELS7_172ELS7_118ELS7_187ELS7_88ELS7_6ELS7_84ELS7_213ELS7_106ELS7_165ELS7_35ELS7_2ELS7_33ELS7_0ELS7_212ELS7_197ELS7_100ELS7_101ELS7_189ELS7_192ELS7_105ELS7_6ELS7_8ELS7_70ELS7_244ELS7_251ELS7_242ELS7_246ELS7_178ELS7_5ELS7_32ELS7_178ELS7_168ELS7_11ELS7_8ELS7_177ELS7_104ELS7_179ELS7_30ELS7_102ELS7_221ELS7_185ELS7_198ELS7_148ELS7_226ELS7_64ELS7_1ELS7_65ELS7_4ELS7_151ELS7_108ELS7_121ELS7_132ELS7_142ELS7_24ELS7_37ELS7_22ELS7_18ELS7_248ELS7_148ELS7_8ELS7_117ELS7_178ELS7_176ELS7_141ELS7_6ELS7_230ELS7_220ELS7_115ELS7_185ELS7_132ELS7_14ELS7_136ELS7_96ELS7_192ELS7_102ELS7_183ELS7_232ELS7_116ELS7_50ELS7_196ELS7_119ELS7_233ELS7_165ELS7_154ELS7_69ELS7_62ELS7_113ELS7_230ELS7_215ELS7_109ELS7_95ELS7_227ELS7_64ELS7_88ELS7_184ELS7_0ELS7_160ELS7_152ELS7_252ELS7_23ELS7_64ELS7_206ELS7_48ELS7_18ELS7_232ELS7_252ELS7_138ELS7_0ELS7_201ELS7_106ELS7_249ELS7_102ELS7_255ELS7_255ELS7_255ELS7_255ELS7_2ELS7_192ELS7_225ELS7_228ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_65ELS7_52ELS7_231ELS7_90ELS7_111ELS7_203ELS7_96ELS7_66ELS7_3ELS7_74ELS7_171ELS7_94ELS7_24ELS7_87ELS7_12ELS7_241ELS7_248ELS7_68ELS7_245ELS7_71ELS7_136ELS7_172ELS7_64ELS7_75ELS7_76ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_25ELS7_118ELS7_169ELS7_20ELS7_43ELS7_107ELS7_167ELS7_201ELS7_215ELS7_150ELS7_183ELS7_94ELS7_239ELS7_121ELS7_66ELS7_252ELS7_146ELS7_136ELS7_237ELS7_211ELS7_124ELS7_50ELS7_245ELS7_195ELS7_136ELS7_172EEEEEEEDavUnexecuted instantiation: _ZN4util12hex_literalsli4_hexITnNS_6detail3HexEXtlNS3_ILm337EEEtlNSt3__15arrayISt4byteLm168EEEtlA168_S7_LS7_96ELS7_1ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_0ELS7_255ELS7_255ELS7_255ELS7_127ELS7_0ELS7_0ELS7_0ELS7_0ELS7_255ELS7_255ELS7_255ELS7_127ELS7_254ELS7_255ELS7_255ELS7_127ELS7_1ELS7_255ELS7_255ELS7_255ELS7_127ELS7_0ELS7_0ELS7_0ELS7_0ELS7_255ELS7_255ELS7_255ELS7_127ELS7_0ELS7_255ELS7_255ELS7_255ELS7_127ELS7_0ELS7_47ELS7_85ELS7_82ELS7_71ELS7_69ELS7_78ELS7_84ELS7_58ELS7_32ELS7_65ELS7_108ELS7_101ELS7_114ELS7_116ELS7_32ELS7_107ELS7_101ELS7_121ELS7_32ELS7_99ELS7_111ELS7_109ELS7_112ELS7_114ELS7_111ELS7_109ELS7_105ELS7_115ELS7_101ELS7_100ELS7_44ELS7_32ELS7_117ELS7_112ELS7_103ELS7_114ELS7_97ELS7_100ELS7_101ELS7_32ELS7_114ELS7_101ELS7_113ELS7_117ELS7_105ELS7_114ELS7_101ELS7_100ELS7_0ELS7_70ELS7_48ELS7_68ELS7_2ELS7_32ELS7_101ELS7_63ELS7_235ELS7_214ELS7_65ELS7_15ELS7_71ELS7_15ELS7_107ELS7_174ELS7_17ELS7_202ELS7_209ELS7_156ELS7_72ELS7_65ELS7_59ELS7_236ELS7_177ELS7_172ELS7_44ELS7_23ELS7_249ELS7_8ELS7_253ELS7_15ELS7_213ELS7_59ELS7_220ELS7_58ELS7_189ELS7_82ELS7_2ELS7_32ELS7_109ELS7_14ELS7_156ELS7_150ELS7_254ELS7_136ELS7_212ELS7_160ELS7_240ELS7_30ELS7_217ELS7_222ELS7_218ELS7_226ELS7_182ELS7_249ELS7_224ELS7_13ELS7_169ELS7_76ELS7_173ELS7_15ELS7_236ELS7_170ELS7_230ELS7_110ELS7_207ELS7_104ELS7_155ELS7_247ELS7_27ELS7_80EEEEEEEDav | 
| 388 |  |  | 
| 389 |  | template <util::detail::Hex str> | 
| 390 | 0 | constexpr auto operator""_hex_u8() { return std::bit_cast<std::array<uint8_t, str.bytes.size()>>(str.bytes); }Unexecuted instantiation: _ZN4util12hex_literalsli7_hex_u8ITnNS_6detail3HexEXtlNS3_ILm65EEEtlNSt3__15arrayISt4byteLm32EEEtlA32_S7_LS7_134ELS7_128ELS7_135ELS7_202ELS7_2ELS7_166ELS7_249ELS7_116ELS7_196ELS7_89ELS7_137ELS7_36ELS7_195ELS7_107ELS7_87ELS7_118ELS7_45ELS7_50ELS7_203ELS7_69ELS7_113ELS7_113ELS7_103ELS7_227ELS7_0ELS7_98ELS7_44ELS7_113ELS7_103ELS7_227ELS7_137ELS7_101EEEEEEEDavUnexecuted instantiation: _ZN4util12hex_literalsli7_hex_u8ITnNS_6detail3HexEXtlNS3_ILm65EEEtlNSt3__15arrayISt4byteLm32EEEtlA32_S7_LS7_80ELS7_146ELS7_155ELS7_116ELS7_193ELS7_160ELS7_73ELS7_84ELS7_183ELS7_139ELS7_75ELS7_96ELS7_53ELS7_233ELS7_122ELS7_94ELS7_7ELS7_138ELS7_90ELS7_15ELS7_40ELS7_236ELS7_150ELS7_213ELS7_71ELS7_191ELS7_238ELS7_154ELS7_206ELS7_128ELS7_58ELS7_192EEEEEEEDav | 
| 391 |  |  | 
| 392 |  | template <util::detail::Hex str> | 
| 393 |  | constexpr auto operator""_hex_v() { return std::vector<std::byte>{str.bytes.begin(), str.bytes.end()}; } | 
| 394 |  |  | 
| 395 |  | template <util::detail::Hex str> | 
| 396 | 51.2k | inline auto operator""_hex_v_u8() { return std::vector<uint8_t>{UCharCast(str.bytes.data()), UCharCast(str.bytes.data() + str.bytes.size())}; } | 
| 397 |  |  | 
| 398 |  | } // inline namespace hex_literals | 
| 399 |  | } // namespace util | 
| 400 |  |  | 
| 401 |  | #endif // BITCOIN_UTIL_STRENCODINGS_H |