_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12is_discardedEv:
32970|  3.54k|    {
32971|  3.54k|        return m_data.m_type == value_t::discarded;
32972|  3.54k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dumpEicbNS0_6detail15error_handler_tE:
32842|  13.7k|    {
32843|  13.7k|        string_t result;
32844|  13.7k|        detail::output_string_adapter<char, string_t> string_adapter(result);
32845|       |
32846|  13.7k|        if (indent >= 0)
  ------------------
  |  Branch (32846:13): [True: 0, False: 13.7k]
  ------------------
32847|      0|        {
32848|      0|            serializer s(string_adapter, indent_char,
32849|      0|                         true, ensure_ascii, static_cast<std::size_t>(indent), error_handler);
32850|      0|            s.dump(*this);
32851|      0|        }
32852|  13.7k|        else
32853|  13.7k|        {
32854|  13.7k|            serializer s(string_adapter, indent_char,
32855|  13.7k|                         false, ensure_ascii, 0, error_handler);
32856|  13.7k|            s.dump(*this);
32857|  13.7k|        }
32858|       |
32859|  13.7k|        return result;
32860|  13.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEC2ERS9_:
22821|  13.7k|        : str(s)
22822|  13.7k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcEC2Ev:
22716|  13.7k|    output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcED2Ev:
22714|  13.7k|    virtual ~output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEE16write_charactersEPKcm:
22830|  14.7k|    {
22831|  14.7k|        str.append(s, length);
22832|  14.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEC2ERNS1_23output_adapter_protocolIcEEcbbmNS1_15error_handler_tE:
28044|  13.7k|        : o(&s)
28045|  13.7k|        , indent_char(ichar)
28046|  13.7k|        , pretty_print(pretty_print_)
28047|  13.7k|        , ensure_ascii(ensure_ascii_)
28048|  13.7k|        , indent_step(indent_step_)
28049|  13.7k|        , error_handler(error_handler_)
28050|  13.7k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE4dumpERKSG_m:
28079|  13.7k|    {
28080|  13.7k|        dump_internal(val, current_indent);
28081|  13.7k|        flush();
28082|  13.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13dump_internalERKSG_mm:
28105|  89.3k|    {
28106|  89.3k|        switch (val.m_data.m_type)
28107|  89.3k|        {
28108|  16.1k|            case value_t::object:
  ------------------
  |  Branch (28108:13): [True: 16.1k, False: 73.1k]
  ------------------
28109|  16.1k|            {
28110|  16.1k|                if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1667|  16.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 16.1k]
  |  |  ------------------
  ------------------
28111|      0|                {
28112|      0|                    dump_iteratively(val, current_indent);
28113|      0|                    return;
28114|      0|                }
28115|       |
28116|  16.1k|                if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (28116:21): [True: 1.61k, False: 14.5k]
  ------------------
28117|  1.61k|                {
28118|  1.61k|                    put_literal("{}");
28119|  1.61k|                    return;
28120|  1.61k|                }
28121|       |
28122|  14.5k|                if (pretty_print)
  ------------------
  |  Branch (28122:21): [True: 0, False: 14.5k]
  ------------------
28123|      0|                {
28124|      0|                    put_literal("{\n");
28125|       |
28126|       |                    // variable to hold indentation for recursive calls
28127|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28128|       |
28129|       |                    // first n-1 elements
28130|      0|                    auto i = val.m_data.m_value.object->cbegin();
28131|      0|                    for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (28131:47): [True: 0, False: 0]
  ------------------
28132|      0|                    {
28133|      0|                        put_indent(new_indent);
28134|      0|                        put_char('"');
28135|      0|                        dump_escaped(i->first);
28136|      0|                        put_literal("\": ");
28137|      0|                        dump_internal(i->second, new_indent, depth + 1);
28138|      0|                        put_literal(",\n");
28139|      0|                    }
28140|       |
28141|       |                    // last element
28142|      0|                    JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28142:21): [True: 0, False: 0]
  ------------------
28143|      0|                    JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28143:21): [True: 0, False: 0]
  ------------------
28144|      0|                    put_indent(new_indent);
28145|      0|                    put_char('"');
28146|      0|                    dump_escaped(i->first);
28147|      0|                    put_literal("\": ");
28148|      0|                    dump_internal(i->second, new_indent, depth + 1);
28149|       |
28150|      0|                    put_char('\n');
28151|      0|                    put_indent(current_indent);
28152|      0|                    put_char('}');
28153|      0|                }
28154|  14.5k|                else
28155|  14.5k|                {
28156|  14.5k|                    put_char('{');
28157|       |
28158|       |                    // first n-1 elements
28159|  14.5k|                    auto i = val.m_data.m_value.object->cbegin();
28160|  52.7k|                    for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (28160:47): [True: 38.1k, False: 14.5k]
  ------------------
28161|  38.1k|                    {
28162|  38.1k|                        put_char('"');
28163|  38.1k|                        dump_escaped(i->first);
28164|  38.1k|                        put_literal("\":");
28165|  38.1k|                        dump_internal(i->second, current_indent, depth + 1);
28166|  38.1k|                        put_char(',');
28167|  38.1k|                    }
28168|       |
28169|       |                    // last element
28170|  14.5k|                    JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|  14.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28170:21): [True: 14.5k, False: 0]
  ------------------
28171|  14.5k|                    JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|  14.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28171:21): [True: 14.5k, False: 0]
  ------------------
28172|  14.5k|                    put_char('"');
28173|  14.5k|                    dump_escaped(i->first);
28174|  14.5k|                    put_literal("\":");
28175|  14.5k|                    dump_internal(i->second, current_indent, depth + 1);
28176|       |
28177|  14.5k|                    put_char('}');
28178|  14.5k|                }
28179|       |
28180|  14.5k|                return;
28181|  14.5k|            }
28182|       |
28183|  14.5k|            case value_t::array:
  ------------------
  |  Branch (28183:13): [True: 4.12k, False: 85.2k]
  ------------------
28184|  4.12k|            {
28185|  4.12k|                if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.12k]
  |  |  ------------------
  ------------------
28186|      0|                {
28187|      0|                    dump_iteratively(val, current_indent);
28188|      0|                    return;
28189|      0|                }
28190|       |
28191|  4.12k|                if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (28191:21): [True: 2.33k, False: 1.78k]
  ------------------
28192|  2.33k|                {
28193|  2.33k|                    put_literal("[]");
28194|  2.33k|                    return;
28195|  2.33k|                }
28196|       |
28197|  1.78k|                if (pretty_print)
  ------------------
  |  Branch (28197:21): [True: 0, False: 1.78k]
  ------------------
28198|      0|                {
28199|      0|                    put_literal("[\n");
28200|       |
28201|       |                    // variable to hold indentation for recursive calls
28202|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28203|       |
28204|       |                    // first n-1 elements
28205|      0|                    for (auto i = val.m_data.m_value.array->cbegin();
28206|      0|                            i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (28206:29): [True: 0, False: 0]
  ------------------
28207|      0|                    {
28208|      0|                        put_indent(new_indent);
28209|      0|                        dump_internal(*i, new_indent, depth + 1);
28210|      0|                        put_literal(",\n");
28211|      0|                    }
28212|       |
28213|       |                    // last element
28214|      0|                    JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28214:21): [True: 0, False: 0]
  ------------------
28215|      0|                    put_indent(new_indent);
28216|      0|                    dump_internal(val.m_data.m_value.array->back(), new_indent, depth + 1);
28217|       |
28218|      0|                    put_char('\n');
28219|      0|                    put_indent(current_indent);
28220|      0|                    put_char(']');
28221|      0|                }
28222|  1.78k|                else
28223|  1.78k|                {
28224|  1.78k|                    put_char('[');
28225|       |
28226|       |                    // first n-1 elements
28227|  1.78k|                    for (auto i = val.m_data.m_value.array->cbegin();
28228|  22.9k|                            i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (28228:29): [True: 21.1k, False: 1.78k]
  ------------------
28229|  21.1k|                    {
28230|  21.1k|                        dump_internal(*i, current_indent, depth + 1);
28231|  21.1k|                        put_char(',');
28232|  21.1k|                    }
28233|       |
28234|       |                    // last element
28235|  1.78k|                    JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2591|  1.78k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28235:21): [True: 1.78k, False: 0]
  ------------------
28236|  1.78k|                    dump_internal(val.m_data.m_value.array->back(), current_indent, depth + 1);
28237|       |
28238|  1.78k|                    put_char(']');
28239|  1.78k|                }
28240|       |
28241|  1.78k|                return;
28242|  1.78k|            }
28243|       |
28244|  1.78k|            case value_t::string:
  ------------------
  |  Branch (28244:13): [True: 1.32k, False: 88.0k]
  ------------------
28245|  5.16k|            case value_t::binary:
  ------------------
  |  Branch (28245:13): [True: 3.84k, False: 85.5k]
  ------------------
28246|  9.56k|            case value_t::boolean:
  ------------------
  |  Branch (28246:13): [True: 4.40k, False: 84.9k]
  ------------------
28247|  15.3k|            case value_t::number_integer:
  ------------------
  |  Branch (28247:13): [True: 5.76k, False: 83.6k]
  ------------------
28248|  19.7k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28248:13): [True: 4.43k, False: 84.9k]
  ------------------
28249|  27.7k|            case value_t::number_float:
  ------------------
  |  Branch (28249:13): [True: 8.03k, False: 81.3k]
  ------------------
28250|  27.7k|            case value_t::discarded:
  ------------------
  |  Branch (28250:13): [True: 0, False: 89.3k]
  ------------------
28251|  69.0k|            case value_t::null:
  ------------------
  |  Branch (28251:13): [True: 41.2k, False: 48.1k]
  ------------------
28252|  69.0k|            default:
  ------------------
  |  Branch (28252:13): [True: 0, False: 89.3k]
  ------------------
28253|  69.0k|                dump_scalar(val, current_indent);
28254|  69.0k|                return;
28255|  89.3k|        }
28256|  89.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21recursion_depth_limitEv:
 8044|  69.8k|{
 8045|  69.8k|    return 128;
 8046|  69.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm3EEEvRAT__Kc:
29090|  56.6k|    {
29091|  56.6k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  56.6k|        constexpr std::size_t length = N - 1;
29094|  56.6k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  56.6k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  56.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 90, False: 56.5k]
  |  |  ------------------
  ------------------
29097|     90|        {
29098|     90|            flush();
29099|     90|        }
29100|  56.6k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  56.6k|        write_buffer_pos += length;
29102|  56.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE8put_charEc:
29019|   169k|    {
29020|   169k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos == write_buffer.size()))
  ------------------
  |  | 1667|   169k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 306, False: 168k]
  |  |  ------------------
  ------------------
29021|    306|        {
29022|    306|            flush();
29023|    306|        }
29024|   169k|        write_buffer[write_buffer_pos++] = c;
29025|   169k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_escapedERKSC_:
28657|  54.0k|    {
28658|       |        // dispatch once here rather than test the flag inside the loop: it does
28659|       |        // not change while a string is written, and folding it lets each of the
28660|       |        // two scanners be inlined into a loop of its own
28661|  54.0k|        if (ensure_ascii)
  ------------------
  |  Branch (28661:13): [True: 0, False: 54.0k]
  ------------------
28662|      0|        {
28663|      0|            dump_escaped_impl<true>(s);
28664|      0|        }
28665|  54.0k|        else
28666|  54.0k|        {
28667|  54.0k|            dump_escaped_impl<false>(s);
28668|  54.0k|        }
28669|  54.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail16read_eight_bytesEPKh:
 9376|   294k|{
 9377|   294k|#if defined(_MSC_VER) || defined(__x86_64__) || defined(__i386__) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
 9378|       |    // the byte order already matches (all MSVC targets are little-endian)
 9379|   294k|    std::uint64_t result = 0;
 9380|   294k|    std::memcpy(&result, b, sizeof(result));
 9381|   294k|    return result;
 9382|       |#else
 9383|       |    return static_cast<std::uint64_t>(b[0]) | (static_cast<std::uint64_t>(b[1]) << 8u)
 9384|       |           | (static_cast<std::uint64_t>(b[2]) << 16u) | (static_cast<std::uint64_t>(b[3]) << 24u)
 9385|       |           | (static_cast<std::uint64_t>(b[4]) << 32u) | (static_cast<std::uint64_t>(b[5]) << 40u)
 9386|       |           | (static_cast<std::uint64_t>(b[6]) << 48u) | (static_cast<std::uint64_t>(b[7]) << 56u);
 9387|       |#endif
 9388|   294k|}
_ZN8nlohmann16json_abi_v3_12_06detail20count_trailing_zerosEm:
 9319|   294k|{
 9320|   294k|#if defined(__GNUC__) || defined(__clang__)
 9321|   294k|    return __builtin_ctzll(x);
 9322|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 9323|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 9324|       |    _BitScanForward64(&index, x);
 9325|       |    return static_cast<int>(index);
 9326|       |#else
 9327|       |    int n = 0;
 9328|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9329|       |    {
 9330|       |        if ((x << (64 - shift)) == 0)
 9331|       |        {
 9332|       |            n += shift;
 9333|       |            x >>= shift;
 9334|       |        }
 9335|       |    }
 9336|       |    return n;
 9337|       |#endif
 9338|   294k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_bufferILm512EEEvRKNS4_5arrayIcXT_EEEm:
29141|  54.1k|    {
29142|  54.1k|        put_string(buffer, 0, length);
29143|  54.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringINS4_5arrayIcLm512EEEEEvRKT_mm:
29115|  54.1k|    {
29116|  54.1k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2591|  54.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29116:9): [True: 54.1k, False: 0]
  ------------------
29117|  54.1k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2591|  54.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29117:9): [True: 54.1k, False: 0]
  ------------------
29118|       |
29119|  54.1k|        const char* const s = str.data() + start;
29120|  54.1k|        const std::size_t length = end - start;
29121|       |
29122|  54.1k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1667|  54.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 54.1k]
  |  |  ------------------
  ------------------
29123|      0|        {
29124|      0|            flush();
29125|      0|            o->write_characters(s, length);
29126|      0|            return;
29127|      0|        }
29128|  54.1k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  54.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 30, False: 54.1k]
  |  |  ------------------
  ------------------
29129|     30|        {
29130|     30|            flush();
29131|     30|        }
29132|  54.1k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29133|  54.1k|        write_buffer_pos += length;
29134|  54.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringISC_EEvRKT_mm:
29115|  44.7k|    {
29116|  44.7k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2591|  44.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29116:9): [True: 44.7k, False: 0]
  ------------------
29117|  44.7k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2591|  44.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29117:9): [True: 44.7k, False: 0]
  ------------------
29118|       |
29119|  44.7k|        const char* const s = str.data() + start;
29120|  44.7k|        const std::size_t length = end - start;
29121|       |
29122|  44.7k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1667|  44.7k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 44.7k]
  |  |  ------------------
  ------------------
29123|      0|        {
29124|      0|            flush();
29125|      0|            o->write_characters(s, length);
29126|      0|            return;
29127|      0|        }
29128|  44.7k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  44.7k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 30, False: 44.7k]
  |  |  ------------------
  ------------------
29129|     30|        {
29130|     30|            flush();
29131|     30|        }
29132|  44.7k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29133|  44.7k|        write_buffer_pos += length;
29134|  44.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13ascii_escapesEv:
29208|   250k|    {
29209|   250k|        static const std::array<std::array<char, 8>, 0x60> escapes =
29210|   250k|        {
29211|   250k|            {
29212|   250k|                {{'\\', 'u', '0', '0', '0', '0', 0, 6}}, // 0x00
29213|   250k|                {{'\\', 'u', '0', '0', '0', '1', 0, 6}}, // 0x01
29214|   250k|                {{'\\', 'u', '0', '0', '0', '2', 0, 6}}, // 0x02
29215|   250k|                {{'\\', 'u', '0', '0', '0', '3', 0, 6}}, // 0x03
29216|   250k|                {{'\\', 'u', '0', '0', '0', '4', 0, 6}}, // 0x04
29217|   250k|                {{'\\', 'u', '0', '0', '0', '5', 0, 6}}, // 0x05
29218|   250k|                {{'\\', 'u', '0', '0', '0', '6', 0, 6}}, // 0x06
29219|   250k|                {{'\\', 'u', '0', '0', '0', '7', 0, 6}}, // 0x07
29220|   250k|                {{'\\', 'b', 0, 0, 0, 0, 0, 2}}, // 0x08
29221|   250k|                {{'\\', 't', 0, 0, 0, 0, 0, 2}}, // 0x09
29222|   250k|                {{'\\', 'n', 0, 0, 0, 0, 0, 2}}, // 0x0A
29223|   250k|                {{'\\', 'u', '0', '0', '0', 'b', 0, 6}}, // 0x0B
29224|   250k|                {{'\\', 'f', 0, 0, 0, 0, 0, 2}}, // 0x0C
29225|   250k|                {{'\\', 'r', 0, 0, 0, 0, 0, 2}}, // 0x0D
29226|   250k|                {{'\\', 'u', '0', '0', '0', 'e', 0, 6}}, // 0x0E
29227|   250k|                {{'\\', 'u', '0', '0', '0', 'f', 0, 6}}, // 0x0F
29228|   250k|                {{'\\', 'u', '0', '0', '1', '0', 0, 6}}, // 0x10
29229|   250k|                {{'\\', 'u', '0', '0', '1', '1', 0, 6}}, // 0x11
29230|   250k|                {{'\\', 'u', '0', '0', '1', '2', 0, 6}}, // 0x12
29231|   250k|                {{'\\', 'u', '0', '0', '1', '3', 0, 6}}, // 0x13
29232|   250k|                {{'\\', 'u', '0', '0', '1', '4', 0, 6}}, // 0x14
29233|   250k|                {{'\\', 'u', '0', '0', '1', '5', 0, 6}}, // 0x15
29234|   250k|                {{'\\', 'u', '0', '0', '1', '6', 0, 6}}, // 0x16
29235|   250k|                {{'\\', 'u', '0', '0', '1', '7', 0, 6}}, // 0x17
29236|   250k|                {{'\\', 'u', '0', '0', '1', '8', 0, 6}}, // 0x18
29237|   250k|                {{'\\', 'u', '0', '0', '1', '9', 0, 6}}, // 0x19
29238|   250k|                {{'\\', 'u', '0', '0', '1', 'a', 0, 6}}, // 0x1A
29239|   250k|                {{'\\', 'u', '0', '0', '1', 'b', 0, 6}}, // 0x1B
29240|   250k|                {{'\\', 'u', '0', '0', '1', 'c', 0, 6}}, // 0x1C
29241|   250k|                {{'\\', 'u', '0', '0', '1', 'd', 0, 6}}, // 0x1D
29242|   250k|                {{'\\', 'u', '0', '0', '1', 'e', 0, 6}}, // 0x1E
29243|   250k|                {{'\\', 'u', '0', '0', '1', 'f', 0, 6}}, // 0x1F
29244|   250k|                {{' ', 0, 0, 0, 0, 0, 0, 1}}, // 0x20
29245|   250k|                {{'!', 0, 0, 0, 0, 0, 0, 1}}, // 0x21
29246|   250k|                {{'\\', '"', 0, 0, 0, 0, 0, 2}}, // 0x22
29247|   250k|                {{'#', 0, 0, 0, 0, 0, 0, 1}}, // 0x23
29248|   250k|                {{'$', 0, 0, 0, 0, 0, 0, 1}}, // 0x24
29249|   250k|                {{'%', 0, 0, 0, 0, 0, 0, 1}}, // 0x25
29250|   250k|                {{'&', 0, 0, 0, 0, 0, 0, 1}}, // 0x26
29251|   250k|                {{'\'', 0, 0, 0, 0, 0, 0, 1}}, // 0x27
29252|   250k|                {{'(', 0, 0, 0, 0, 0, 0, 1}}, // 0x28
29253|   250k|                {{')', 0, 0, 0, 0, 0, 0, 1}}, // 0x29
29254|   250k|                {{'*', 0, 0, 0, 0, 0, 0, 1}}, // 0x2A
29255|   250k|                {{'+', 0, 0, 0, 0, 0, 0, 1}}, // 0x2B
29256|   250k|                {{',', 0, 0, 0, 0, 0, 0, 1}}, // 0x2C
29257|   250k|                {{'-', 0, 0, 0, 0, 0, 0, 1}}, // 0x2D
29258|   250k|                {{'.', 0, 0, 0, 0, 0, 0, 1}}, // 0x2E
29259|   250k|                {{'/', 0, 0, 0, 0, 0, 0, 1}}, // 0x2F
29260|   250k|                {{'0', 0, 0, 0, 0, 0, 0, 1}}, // 0x30
29261|   250k|                {{'1', 0, 0, 0, 0, 0, 0, 1}}, // 0x31
29262|   250k|                {{'2', 0, 0, 0, 0, 0, 0, 1}}, // 0x32
29263|   250k|                {{'3', 0, 0, 0, 0, 0, 0, 1}}, // 0x33
29264|   250k|                {{'4', 0, 0, 0, 0, 0, 0, 1}}, // 0x34
29265|   250k|                {{'5', 0, 0, 0, 0, 0, 0, 1}}, // 0x35
29266|   250k|                {{'6', 0, 0, 0, 0, 0, 0, 1}}, // 0x36
29267|   250k|                {{'7', 0, 0, 0, 0, 0, 0, 1}}, // 0x37
29268|   250k|                {{'8', 0, 0, 0, 0, 0, 0, 1}}, // 0x38
29269|   250k|                {{'9', 0, 0, 0, 0, 0, 0, 1}}, // 0x39
29270|   250k|                {{':', 0, 0, 0, 0, 0, 0, 1}}, // 0x3A
29271|   250k|                {{';', 0, 0, 0, 0, 0, 0, 1}}, // 0x3B
29272|   250k|                {{'<', 0, 0, 0, 0, 0, 0, 1}}, // 0x3C
29273|   250k|                {{'=', 0, 0, 0, 0, 0, 0, 1}}, // 0x3D
29274|   250k|                {{'>', 0, 0, 0, 0, 0, 0, 1}}, // 0x3E
29275|   250k|                {{'?', 0, 0, 0, 0, 0, 0, 1}}, // 0x3F
29276|   250k|                {{'@', 0, 0, 0, 0, 0, 0, 1}}, // 0x40
29277|   250k|                {{'A', 0, 0, 0, 0, 0, 0, 1}}, // 0x41
29278|   250k|                {{'B', 0, 0, 0, 0, 0, 0, 1}}, // 0x42
29279|   250k|                {{'C', 0, 0, 0, 0, 0, 0, 1}}, // 0x43
29280|   250k|                {{'D', 0, 0, 0, 0, 0, 0, 1}}, // 0x44
29281|   250k|                {{'E', 0, 0, 0, 0, 0, 0, 1}}, // 0x45
29282|   250k|                {{'F', 0, 0, 0, 0, 0, 0, 1}}, // 0x46
29283|   250k|                {{'G', 0, 0, 0, 0, 0, 0, 1}}, // 0x47
29284|   250k|                {{'H', 0, 0, 0, 0, 0, 0, 1}}, // 0x48
29285|   250k|                {{'I', 0, 0, 0, 0, 0, 0, 1}}, // 0x49
29286|   250k|                {{'J', 0, 0, 0, 0, 0, 0, 1}}, // 0x4A
29287|   250k|                {{'K', 0, 0, 0, 0, 0, 0, 1}}, // 0x4B
29288|   250k|                {{'L', 0, 0, 0, 0, 0, 0, 1}}, // 0x4C
29289|   250k|                {{'M', 0, 0, 0, 0, 0, 0, 1}}, // 0x4D
29290|   250k|                {{'N', 0, 0, 0, 0, 0, 0, 1}}, // 0x4E
29291|   250k|                {{'O', 0, 0, 0, 0, 0, 0, 1}}, // 0x4F
29292|   250k|                {{'P', 0, 0, 0, 0, 0, 0, 1}}, // 0x50
29293|   250k|                {{'Q', 0, 0, 0, 0, 0, 0, 1}}, // 0x51
29294|   250k|                {{'R', 0, 0, 0, 0, 0, 0, 1}}, // 0x52
29295|   250k|                {{'S', 0, 0, 0, 0, 0, 0, 1}}, // 0x53
29296|   250k|                {{'T', 0, 0, 0, 0, 0, 0, 1}}, // 0x54
29297|   250k|                {{'U', 0, 0, 0, 0, 0, 0, 1}}, // 0x55
29298|   250k|                {{'V', 0, 0, 0, 0, 0, 0, 1}}, // 0x56
29299|   250k|                {{'W', 0, 0, 0, 0, 0, 0, 1}}, // 0x57
29300|   250k|                {{'X', 0, 0, 0, 0, 0, 0, 1}}, // 0x58
29301|   250k|                {{'Y', 0, 0, 0, 0, 0, 0, 1}}, // 0x59
29302|   250k|                {{'Z', 0, 0, 0, 0, 0, 0, 1}}, // 0x5A
29303|   250k|                {{'[', 0, 0, 0, 0, 0, 0, 1}}, // 0x5B
29304|   250k|                {{'\\', '\\', 0, 0, 0, 0, 0, 2}}, // 0x5C
29305|   250k|                {{']', 0, 0, 0, 0, 0, 0, 1}}, // 0x5D
29306|   250k|                {{'^', 0, 0, 0, 0, 0, 0, 1}}, // 0x5E
29307|   250k|                {{'_', 0, 0, 0, 0, 0, 0, 1}}, // 0x5F
29308|   250k|            }
29309|   250k|        };
29310|   250k|        return escapes;
29311|   250k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6decodeERhRjh:
 6798|   199k|{
 6799|   199k|    static const std::array<std::uint8_t, 400> utf8d =
 6800|   199k|    {
 6801|   199k|        {
 6802|   199k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F
 6803|   199k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F
 6804|   199k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F
 6805|   199k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F
 6806|   199k|            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F
 6807|   199k|            7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF
 6808|   199k|            8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF
 6809|   199k|            0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
 6810|   199k|            0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
 6811|   199k|            0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
 6812|   199k|            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2
 6813|   199k|            1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4
 6814|   199k|            1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6
 6815|   199k|            1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8
 6816|   199k|        }
 6817|   199k|    };
 6818|       |
 6819|   199k|    JSON_ASSERT(static_cast<std::size_t>(byte) < utf8d.size());
  ------------------
  |  | 2591|   199k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (6819:5): [True: 199k, False: 0]
  ------------------
 6820|   199k|    const std::uint8_t type = utf8d[byte];
 6821|       |
 6822|   199k|    codep = (state != UTF8_ACCEPT)
  ------------------
  |  Branch (6822:13): [True: 71.3k, False: 127k]
  ------------------
 6823|   199k|            ? (byte & 0x3fu) | (codep << 6u)
 6824|   199k|            : (0xFFu >> type) & (byte);
 6825|       |
 6826|   199k|    const std::size_t index = 256u + (static_cast<std::size_t>(state) * 16u) + static_cast<std::size_t>(type);
 6827|   199k|    JSON_ASSERT(index < utf8d.size());
  ------------------
  |  | 2591|   199k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (6827:5): [True: 199k, False: 0]
  ------------------
 6828|   199k|    state = utf8d[index];
 6829|   199k|    return state;
 6830|   199k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_EEEmRKT_DpRKT0_:
 5228|  7.52k|{
 5229|  7.52k|    return str.size() + concat_length(rest...);
 5230|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJEEEmRKT_DpRKT0_:
 5228|  23.0k|{
 5229|  23.0k|    return str.size() + concat_length(rest...);
 5230|  23.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthEv:
 5204|  31.5k|{
 5205|  31.5k|    return 0;
 5206|  31.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5281|  15.0k|{
 5282|  15.0k|    out.append(std::forward<Arg>(arg));
 5283|  15.0k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  15.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvRT_:
 5234|  31.5k|{}
_ZN8nlohmann16json_abi_v3_12_06detail9exception4nameERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEi:
 5446|  7.52k|    {
 5447|  7.52k|        return concat("[json.exception.", ename, '.', std::to_string(id_), "] ");
 5448|  7.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA17_KcRKS9_cS9_RA3_SA_EEET_DpOT0_:
 5318|  7.52k|{
 5319|  7.52k|    OutStringType str;
 5320|  7.52k|    str.reserve(concat_length(args...));
 5321|  7.52k|    concat_into(str, std::forward<Args>(args)...);
 5322|  7.52k|    return str;
 5323|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcS9_A3_cEEEmPKcDpRKT_:
 5222|  7.52k|{
 5223|  7.52k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cEEEmRKT_DpRKT0_:
 5228|  7.52k|{
 5229|  7.52k|    return str.size() + concat_length(rest...);
 5230|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cEEEmcDpRKT_:
 5216|  7.52k|{
 5217|  7.52k|    return 1 + concat_length(rest...);
 5218|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cEEEmRKT_DpRKT0_:
 5228|  7.52k|{
 5229|  7.52k|    return str.size() + concat_length(rest...);
 5230|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJEEEmPKcDpRKT_:
 5222|  8.46k|{
 5223|  8.46k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  8.46k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA17_KcJRKS9_cS9_RA3_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JcS9_RA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcJS9_RA3_KcETnNS3_9enable_ifIXaantsr24detect_string_can_appendIT_T0_EE5valuesr27detect_string_can_append_opISE_SF_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5290|  7.52k|{
 5291|  7.52k|    out += std::forward<Arg>(arg);
 5292|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5293|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail9exception11diagnosticsEDn:
 5451|  7.52k|    {
 5452|  7.52k|        return "";
 5453|  7.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exceptionC2EiPKc:
 5443|  7.52k|    exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing)
_ZNK8nlohmann16json_abi_v3_12_06detail9exception4whatEv:
 5434|  5.01k|    {
 5435|  5.01k|        return m.what();
 5436|  5.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|  15.5k|{
 5223|  15.5k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  15.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSB_OSC_DpOT1_:
 5281|  8.02k|{
 5282|  8.02k|    out.append(std::forward<Arg>(arg));
 5283|  8.02k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  8.02k|}
_ZN8nlohmann16json_abi_v3_12_06detail8hex_byteEh:
 6692|  2.40k|{
 6693|  2.40k|    std::string result = "00";
 6694|  2.40k|    constexpr const char* nibble_to_hex = "0123456789ABCDEF";
 6695|  2.40k|    result[0] = nibble_to_hex[byte / 16];
 6696|  2.40k|    result[1] = nibble_to_hex[byte % 16];
 6697|  2.40k|    return result;
 6698|  2.40k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_escaped_implILb0EEEvRKSC_:
28684|  54.0k|    {
28685|  54.0k|        std::uint32_t codepoint{};
28686|  54.0k|        std::uint8_t state = UTF8_ACCEPT;
28687|  54.0k|        std::size_t bytes = 0;  // number of bytes written to string_buffer
28688|       |
28689|       |        // number of bytes written at the point of the last valid byte
28690|  54.0k|        std::size_t bytes_after_last_accept = 0;
28691|  54.0k|        std::size_t undumped_chars = 0;
28692|       |
28693|   504k|        for (std::size_t i = 0; i < s.size(); ++i)
  ------------------
  |  Branch (28693:33): [True: 465k, False: 39.1k]
  ------------------
28694|   465k|        {
28695|       |            // Fast path: at a character boundary (state == UTF8_ACCEPT),
28696|       |            // bulk-copy the longest run of bytes that need no escaping using a
28697|       |            // SWAR scanner shared with the lexer's contiguous path. The scanner
28698|       |            // stops exactly at the first byte dump_escaped would handle
28699|       |            // individually, so that byte is left to the byte-at-a-time path
28700|       |            // below, keeping escaping output and error diagnostics unchanged.
28701|       |            //
28702|       |            // - EnsureAscii == false: string_bulk_run() copies ordinary bytes
28703|       |            //   and complete well-formed UTF-8, stopping at a quote, backslash,
28704|       |            //   control character (< 0x20), or ill-formed/truncated sequence.
28705|       |            // - EnsureAscii == true: only printable ASCII may be copied
28706|       |            //   verbatim; find_ascii_copyable_run() additionally stops at 0x7F
28707|       |            //   and every non-ASCII byte (>= 0x80), which must be \u-escaped.
28708|   465k|            if (state == UTF8_ACCEPT)
  ------------------
  |  Branch (28708:17): [True: 393k, False: 71.3k]
  ------------------
28709|   393k|            {
28710|   393k|                const auto* const data = reinterpret_cast<const unsigned char*>(s.data());
28711|       |                // A run can only be non-empty when the very first byte is one
28712|       |                // the scanner may copy, so test that single byte before paying
28713|       |                // for the scan. Without it, text whose characters all have to be
28714|       |                // escaped - CJK under ensure_ascii, where every byte is >= 0x80 -
28715|       |                // runs the scanner once per character only to be told zero.
28716|   393k|                std::size_t run = 0;
28717|   393k|                if (!EnsureAscii)
  ------------------
  |  Branch (28717:21): [True: 393k, Folded]
  ------------------
28718|   393k|                {
28719|   393k|                    run = string_bulk_run(data + i, s.size() - i);
28720|   393k|                }
28721|      0|                else if (is_ascii_copyable(data[i]))
  ------------------
  |  Branch (28721:26): [True: 0, False: 0]
  ------------------
28722|      0|                {
28723|      0|                    run = find_ascii_copyable_run(data + i, s.size() - i);
28724|      0|                }
28725|   393k|                if (run != 0)
  ------------------
  |  Branch (28725:21): [True: 44.7k, False: 349k]
  ------------------
28726|  44.7k|                {
28727|       |                    // emit any bytes still pending in string_buffer first to
28728|       |                    // preserve output order, then write the run directly
28729|  44.7k|                    if (bytes != 0)
  ------------------
  |  Branch (28729:25): [True: 15.1k, False: 29.6k]
  ------------------
28730|  15.1k|                    {
28731|  15.1k|                        put_buffer(string_buffer, bytes);
28732|  15.1k|                        bytes = 0;
28733|  15.1k|                    }
28734|  44.7k|                    put_string(s, i, i + run);
28735|  44.7k|                    bytes_after_last_accept = 0;
28736|  44.7k|                    undumped_chars = 0;
28737|  44.7k|                    i += run;
28738|  44.7k|                    if (i >= s.size())
  ------------------
  |  Branch (28738:25): [True: 14.9k, False: 29.7k]
  ------------------
28739|  14.9k|                    {
28740|  14.9k|                        break;
28741|  14.9k|                    }
28742|  44.7k|                }
28743|       |
28744|       |                // A byte below 0x60 is a complete code point and needs no
28745|       |                // UTF-8 decoding. The scanner stops only at a control
28746|       |                // character, a quote, or a backslash in that range, so look up
28747|       |                // its escape sequence and write all 8 bytes of the table entry
28748|       |                // straight into the write buffer; only the length stored in the
28749|       |                // last byte of the entry is kept.
28750|   378k|                if (data[i] < 0x60)
  ------------------
  |  Branch (28750:21): [True: 250k, False: 127k]
  ------------------
28751|   250k|                {
28752|       |                    // emit any bytes still pending in string_buffer first to
28753|       |                    // preserve output order
28754|   250k|                    if (bytes != 0)
  ------------------
  |  Branch (28754:25): [True: 22.8k, False: 227k]
  ------------------
28755|  22.8k|                    {
28756|  22.8k|                        put_buffer(string_buffer, bytes);
28757|  22.8k|                        bytes = 0;
28758|  22.8k|                    }
28759|   250k|                    const auto& escape = ascii_escapes()[data[i]];
28760|   250k|                    if (JSON_HEDLEY_UNLIKELY(write_buffer.size() - write_buffer_pos < escape.size()))
  ------------------
  |  | 1667|   250k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 102, False: 250k]
  |  |  ------------------
  ------------------
28761|    102|                    {
28762|    102|                        flush();
28763|    102|                    }
28764|   250k|                    std::memcpy(write_buffer.data() + write_buffer_pos, escape.data(), escape.size());
28765|   250k|                    write_buffer_pos += static_cast<std::size_t>(escape[7]);
28766|   250k|                    bytes_after_last_accept = 0;
28767|   250k|                    undumped_chars = 0;
28768|   250k|                    continue;
28769|   250k|                }
28770|   378k|            }
28771|       |
28772|   199k|            const auto byte = static_cast<std::uint8_t>(s[i]);
28773|       |
28774|   199k|            switch (decode(state, codepoint, byte))
28775|   199k|            {
28776|      0|                case UTF8_ACCEPT:  // decode found a new code point
  ------------------
  |  Branch (28776:17): [True: 0, False: 199k]
  ------------------
28777|      0|                {
28778|       |                    // the code point is at least 0x60 (smaller ones are handled
28779|       |                    // above) and is not printable ASCII (which the scanner
28780|       |                    // copies): it is DEL (0x7F) under EnsureAscii or a non-ASCII
28781|       |                    // character
28782|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (28782:25): [Folded, False: 0]
  ------------------
28783|      0|                    {
28784|      0|                        JSON_ASSERT(codepoint >= 0x7F);
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28784:25): [True: 0, False: 0]
  ------------------
28785|      0|                        if (error_handler == error_handler_t::keep)
  ------------------
  |  Branch (28785:29): [True: 0, False: 0]
  ------------------
28786|      0|                        {
28787|       |                            // this character was buffered as raw bytes below
28788|       |                            // in case it turned out to be part of an
28789|       |                            // ill-formed sequence (which is kept as is); now
28790|       |                            // that it decoded to a well-formed code point,
28791|       |                            // undo that and \u-escape it like any other
28792|       |                            // character instead
28793|      0|                            bytes = bytes_after_last_accept;
28794|      0|                        }
28795|      0|                        if (codepoint <= 0xFFFF)
  ------------------
  |  Branch (28795:29): [True: 0, False: 0]
  ------------------
28796|      0|                        {
28797|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(codepoint));
28798|      0|                        }
28799|      0|                        else
28800|      0|                        {
28801|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)));
28802|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
28803|      0|                        }
28804|      0|                    }
28805|      0|                    else
28806|      0|                    {
28807|       |                        // copy byte to buffer (all previous bytes of the
28808|       |                        // sequence have been copied in the default case below)
28809|      0|                        string_buffer[bytes++] = s[i];
28810|      0|                    }
28811|       |
28812|       |                    // write buffer and reset index; there must be 13 bytes
28813|       |                    // left, as this is the maximal number of bytes to be
28814|       |                    // written ("\uxxxx\uxxxx\0") for one code point
28815|      0|                    if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28815:25): [True: 0, False: 0]
  ------------------
28816|      0|                    {
28817|      0|                        put_buffer(string_buffer, bytes);
28818|      0|                        bytes = 0;
28819|      0|                    }
28820|       |
28821|       |                    // remember the byte position of this accept
28822|      0|                    bytes_after_last_accept = bytes;
28823|      0|                    undumped_chars = 0;
28824|      0|                    break;
28825|      0|                }
28826|       |
28827|   122k|                case UTF8_REJECT:  // decode found invalid UTF-8 byte
  ------------------
  |  Branch (28827:17): [True: 122k, False: 77.3k]
  ------------------
28828|   122k|                {
28829|   122k|                    switch (error_handler)
28830|   122k|                    {
28831|      0|                        case error_handler_t::strict:
  ------------------
  |  Branch (28831:25): [True: 0, False: 122k]
  ------------------
28832|      0|                        {
28833|      0|                            JSON_THROW(type_error::create(exception_id::invalid_utf8, concat("invalid UTF-8 byte at index ", std::to_string(i), ": 0x", detail::hex_byte(byte)), nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
28834|      0|                        }
28835|       |
28836|      0|                        case error_handler_t::ignore:
  ------------------
  |  Branch (28836:25): [True: 0, False: 122k]
  ------------------
28837|      0|                        case error_handler_t::replace:
  ------------------
  |  Branch (28837:25): [True: 0, False: 122k]
  ------------------
28838|      0|                        {
28839|       |                            // in case we saw this character the first time, we
28840|       |                            // would like to read it again, because the byte
28841|       |                            // may be OK for itself, but just not OK for the
28842|       |                            // previous sequence
28843|      0|                            if (undumped_chars > 0)
  ------------------
  |  Branch (28843:33): [True: 0, False: 0]
  ------------------
28844|      0|                            {
28845|      0|                                --i;
28846|      0|                            }
28847|       |
28848|       |                            // reset length buffer to the last accepted index;
28849|       |                            // thus removing/ignoring the invalid characters
28850|      0|                            bytes = bytes_after_last_accept;
28851|       |
28852|      0|                            if (error_handler == error_handler_t::replace)
  ------------------
  |  Branch (28852:33): [True: 0, False: 0]
  ------------------
28853|      0|                            {
28854|       |                                // add a replacement character
28855|      0|                                if (EnsureAscii)
  ------------------
  |  Branch (28855:37): [Folded, False: 0]
  ------------------
28856|      0|                                {
28857|      0|                                    string_buffer[bytes++] = '\\';
28858|      0|                                    string_buffer[bytes++] = 'u';
28859|      0|                                    string_buffer[bytes++] = 'f';
28860|      0|                                    string_buffer[bytes++] = 'f';
28861|      0|                                    string_buffer[bytes++] = 'f';
28862|      0|                                    string_buffer[bytes++] = 'd';
28863|      0|                                }
28864|      0|                                else
28865|      0|                                {
28866|      0|                                    string_buffer[bytes++] = '\xEF';
28867|      0|                                    string_buffer[bytes++] = '\xBF';
28868|      0|                                    string_buffer[bytes++] = '\xBD';
28869|      0|                                }
28870|       |
28871|       |                                // write buffer and reset index; there must be 13 bytes
28872|       |                                // left, as this is the maximal number of bytes to be
28873|       |                                // written ("\uxxxx\uxxxx\0") for one code point
28874|      0|                                if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28874:37): [True: 0, False: 0]
  ------------------
28875|      0|                                {
28876|      0|                                    put_buffer(string_buffer, bytes);
28877|      0|                                    bytes = 0;
28878|      0|                                }
28879|       |
28880|      0|                                bytes_after_last_accept = bytes;
28881|      0|                            }
28882|       |
28883|      0|                            undumped_chars = 0;
28884|       |
28885|       |                            // continue processing the string
28886|      0|                            state = UTF8_ACCEPT;
28887|      0|                            break;
28888|      0|                        }
28889|       |
28890|   122k|                        case error_handler_t::keep:
  ------------------
  |  Branch (28890:25): [True: 122k, False: 0]
  ------------------
28891|   122k|                        {
28892|       |                            // the bytes of this (now abandoned) ill-formed
28893|       |                            // sequence seen so far are already buffered below
28894|       |                            // and are kept unchanged in the output
28895|   122k|                            if (undumped_chars > 0)
  ------------------
  |  Branch (28895:33): [True: 59.2k, False: 62.7k]
  ------------------
28896|  59.2k|                            {
28897|       |                                // the byte that ended the sequence may be OK
28898|       |                                // for itself (e.g., a quote that must still be
28899|       |                                // escaped, or the lead byte of a well-formed
28900|       |                                // code point), so read it again
28901|  59.2k|                                --i;
28902|  59.2k|                            }
28903|  62.7k|                            else
28904|  62.7k|                            {
28905|       |                                // a byte that cannot start a sequence (e.g.,
28906|       |                                // 0xFF or a stray continuation byte) is kept
28907|       |                                // as well
28908|  62.7k|                                string_buffer[bytes++] = s[i];
28909|  62.7k|                            }
28910|       |
28911|       |                            // write buffer and reset index; there must be 13 bytes
28912|       |                            // left, as this is the maximal number of bytes to be
28913|       |                            // written ("\uxxxx\uxxxx\0") for one code point
28914|   122k|                            if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28914:33): [True: 0, False: 122k]
  ------------------
28915|      0|                            {
28916|      0|                                put_buffer(string_buffer, bytes);
28917|      0|                                bytes = 0;
28918|      0|                            }
28919|       |
28920|   122k|                            bytes_after_last_accept = bytes;
28921|   122k|                            undumped_chars = 0;
28922|       |
28923|       |                            // continue processing the string
28924|   122k|                            state = UTF8_ACCEPT;
28925|   122k|                            break;
28926|      0|                        }
28927|       |
28928|      0|                        default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (28928:25): [True: 0, False: 122k]
  ------------------
28929|      0|                            JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28929:29): [Folded, False: 0]
  ------------------
28930|   122k|                    }
28931|   122k|                    break;
28932|   122k|                }
28933|       |
28934|   122k|                default:  // decode found yet incomplete multibyte code point
  ------------------
  |  Branch (28934:17): [True: 77.3k, False: 122k]
  ------------------
28935|  77.3k|                {
28936|  77.3k|                    if (!EnsureAscii || error_handler == error_handler_t::keep)
  ------------------
  |  Branch (28936:25): [True: 77.3k, Folded]
  |  Branch (28936:41): [True: 0, False: 0]
  ------------------
28937|  77.3k|                    {
28938|       |                        // code point will not be escaped (or will be kept as
28939|       |                        // is if it turns out to be ill-formed) - copy byte to
28940|       |                        // buffer; dropped again above if it decodes to a
28941|       |                        // well-formed code point that needs \u-escaping
28942|  77.3k|                        string_buffer[bytes++] = s[i];
28943|  77.3k|                    }
28944|  77.3k|                    ++undumped_chars;
28945|  77.3k|                    break;
28946|   122k|                }
28947|   199k|            }
28948|   199k|        }
28949|       |
28950|       |        // we finished processing the string
28951|  54.0k|        if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT))
  ------------------
  |  | 1666|  54.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 48.1k, False: 5.94k]
  |  |  ------------------
  ------------------
28952|  48.1k|        {
28953|       |            // write buffer
28954|  48.1k|            if (bytes > 0)
  ------------------
  |  Branch (28954:17): [True: 10.2k, False: 37.8k]
  ------------------
28955|  10.2k|            {
28956|  10.2k|                put_buffer(string_buffer, bytes);
28957|  10.2k|            }
28958|  48.1k|        }
28959|  5.94k|        else
28960|  5.94k|        {
28961|       |            // we finish reading, but do not accept: string was incomplete
28962|  5.94k|            switch (error_handler)
28963|  5.94k|            {
28964|      0|                case error_handler_t::strict:
  ------------------
  |  Branch (28964:17): [True: 0, False: 5.94k]
  ------------------
28965|      0|                {
28966|      0|                    JSON_THROW(type_error::create(exception_id::invalid_utf8, concat("incomplete UTF-8 string; last byte: 0x", detail::hex_byte(static_cast<std::uint8_t>(s[s.size() - 1]))), nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
28967|      0|                }
28968|       |
28969|      0|                case error_handler_t::ignore:
  ------------------
  |  Branch (28969:17): [True: 0, False: 5.94k]
  ------------------
28970|      0|                {
28971|       |                    // write all accepted bytes
28972|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
28973|      0|                    break;
28974|      0|                }
28975|       |
28976|      0|                case error_handler_t::replace:
  ------------------
  |  Branch (28976:17): [True: 0, False: 5.94k]
  ------------------
28977|      0|                {
28978|       |                    // write all accepted bytes
28979|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
28980|       |                    // add a replacement character
28981|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (28981:25): [Folded, False: 0]
  ------------------
28982|      0|                    {
28983|      0|                        put_literal("\\ufffd");
28984|      0|                    }
28985|      0|                    else
28986|      0|                    {
28987|      0|                        put_literal("\xEF\xBF\xBD");
28988|      0|                    }
28989|      0|                    break;
28990|      0|                }
28991|       |
28992|  5.94k|                case error_handler_t::keep:
  ------------------
  |  Branch (28992:17): [True: 5.94k, False: 0]
  ------------------
28993|  5.94k|                {
28994|       |                    // write the ill-formed trailing bytes as is; they were
28995|       |                    // buffered above regardless of EnsureAscii
28996|  5.94k|                    put_buffer(string_buffer, bytes);
28997|  5.94k|                    break;
28998|      0|                }
28999|       |
29000|      0|                default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (29000:17): [True: 0, False: 5.94k]
  ------------------
29001|       |                    JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29001:21): [Folded, False: 0]
  ------------------
29002|  5.94k|            }
29003|  5.94k|        }
29004|  54.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail15string_bulk_runEPKhm:
11148|   393k|{
11149|       |#if defined(JSON_USE_SIMDUTF) && defined(JSON_HAS_CPP_17)
11150|       |    const std::size_t run = find_string_delimiter(data, n);
11151|       |    if (run != 0 && simdutf::validate_utf8(reinterpret_cast<const char*>(data), run))
11152|       |    {
11153|       |        return run;
11154|       |    }
11155|       |#endif
11156|   393k|    return scalar_string_bulk_run(data, n);
11157|   393k|}
_ZN8nlohmann16json_abi_v3_12_06detail22scalar_string_bulk_runEPKhm:
11084|   393k|{
11085|   393k|    std::size_t pos = 0;
11086|   396k|    while (pos < n)
  ------------------
  |  Branch (11086:12): [True: 395k, False: 798]
  ------------------
11087|   395k|    {
11088|   395k|        pos += find_string_special(data + pos, n - pos);
11089|   395k|        if (pos >= n || data[pos] < 0x80u)
  ------------------
  |  Branch (11089:13): [True: 14.1k, False: 381k]
  |  Branch (11089:25): [True: 250k, False: 130k]
  ------------------
11090|   264k|        {
11091|   264k|            break; // end of buffer, or a quote/escape/control byte
11092|   264k|        }
11093|       |        // a run of multi-byte sequences (e.g. CJK text) is validated sequence
11094|       |        // by sequence without searching for the next special byte in between
11095|   130k|        do
11096|   134k|        {
11097|   134k|            const std::size_t seq = validate_one_utf8(data + pos, n - pos);
11098|   134k|            if (seq == 0)
  ------------------
  |  Branch (11098:17): [True: 127k, False: 6.84k]
  ------------------
11099|   127k|            {
11100|   127k|                return pos; // ill-formed or truncated: let the byte path diagnose it
11101|   127k|            }
11102|  6.84k|            pos += seq;
11103|  6.84k|        }
11104|   130k|        while (pos < n && data[pos] >= 0x80u);
  ------------------
  |  Branch (11104:16): [True: 6.04k, False: 798]
  |  Branch (11104:27): [True: 4.37k, False: 1.66k]
  ------------------
11105|   130k|    }
11106|   265k|    return pos;
11107|   393k|}
_ZN8nlohmann16json_abi_v3_12_06detail19find_string_specialEPKhm:
10910|   395k|{
10911|   395k|    std::size_t i = 0;
10912|   396k|    for (; i + 8 <= n; i += 8)
  ------------------
  |  Branch (10912:12): [True: 294k, False: 102k]
  ------------------
10913|   294k|    {
10914|   294k|        const std::uint64_t special = swar_string_special(read_eight_bytes(data + i));
10915|   294k|        if (special != 0)
  ------------------
  |  Branch (10915:13): [True: 292k, False: 1.39k]
  ------------------
10916|   292k|        {
10917|       |            // the lowest flagged byte is the first special one: the borrows of
10918|       |            // the subtractions can only flag bytes above a true hit
10919|   292k|            return i + (static_cast<std::size_t>(count_trailing_zeros(special)) / 8);
10920|   292k|        }
10921|   294k|    }
10922|   126k|    for (; i < n; ++i)
  ------------------
  |  Branch (10922:12): [True: 112k, False: 14.1k]
  ------------------
10923|   112k|    {
10924|   112k|        if (is_string_special(data[i]))
  ------------------
  |  Branch (10924:13): [True: 88.5k, False: 24.1k]
  ------------------
10925|  88.5k|        {
10926|  88.5k|            return i;
10927|  88.5k|        }
10928|   112k|    }
10929|  14.1k|    return n;
10930|   102k|}
_ZN8nlohmann16json_abi_v3_12_06detail19swar_string_specialEm:
10895|   294k|{
10896|   294k|    constexpr std::uint64_t ones = 0x0101010101010101ull;
10897|   294k|    constexpr std::uint64_t high = 0x8080808080808080ull;
10898|   294k|    const std::uint64_t q = v ^ 0x2222222222222222ull; // '"'  (0x22)
10899|   294k|    const std::uint64_t b = v ^ 0x5C5C5C5C5C5C5C5Cull; // '\\' (0x5C)
10900|   294k|    const std::uint64_t has_quote     = (q - ones) & ~q & high;
10901|   294k|    const std::uint64_t has_backslash = (b - ones) & ~b & high;
10902|   294k|    const std::uint64_t has_control   = (v - 0x2020202020202020ull) & ~v & high; // < 0x20
10903|   294k|    const std::uint64_t has_non_ascii = v & high;                                // >= 0x80
10904|   294k|    return has_quote | has_backslash | has_control | has_non_ascii;
10905|   294k|}
_ZN8nlohmann16json_abi_v3_12_06detail17is_string_specialEh:
10888|   112k|{
10889|   112k|    return c == '\"' || c == '\\' || c < 0x20u || c >= 0x80u;
  ------------------
  |  Branch (10889:12): [True: 1.12k, False: 111k]
  |  Branch (10889:25): [True: 996, False: 110k]
  |  Branch (10889:38): [True: 45.3k, False: 65.3k]
  |  Branch (10889:51): [True: 41.1k, False: 24.1k]
  ------------------
10890|   112k|}
_ZN8nlohmann16json_abi_v3_12_06detail17validate_one_utf8EPKhm:
10987|   134k|{
10988|   134k|    const unsigned char c0 = data[0];
10989|   134k|    if (c0 >= 0xC2 && c0 <= 0xDF)  // U+0080..U+07FF
  ------------------
  |  Branch (10989:9): [True: 107k, False: 26.8k]
  |  Branch (10989:23): [True: 14.7k, False: 93.1k]
  ------------------
10990|  14.7k|    {
10991|  14.7k|        if (avail >= 2 && data[1] >= 0x80 && data[1] <= 0xBF)
  ------------------
  |  Branch (10991:13): [True: 12.6k, False: 2.12k]
  |  Branch (10991:27): [True: 8.80k, False: 3.82k]
  |  Branch (10991:46): [True: 2.26k, False: 6.54k]
  ------------------
10992|  2.26k|        {
10993|  2.26k|            return 2;
10994|  2.26k|        }
10995|  14.7k|    }
10996|   120k|    else if (c0 == 0xE0)  // U+0800..U+0FFF
  ------------------
  |  Branch (10996:14): [True: 5.91k, False: 114k]
  ------------------
10997|  5.91k|    {
10998|  5.91k|        if (avail >= 3 && data[1] >= 0xA0 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (10998:13): [True: 5.31k, False: 594]
  |  Branch (10998:27): [True: 4.09k, False: 1.21k]
  |  Branch (10998:46): [True: 1.38k, False: 2.71k]
  |  Branch (10998:65): [True: 672, False: 708]
  |  Branch (10998:84): [True: 414, False: 258]
  ------------------
10999|    414|        {
11000|    414|            return 3;
11001|    414|        }
11002|  5.91k|    }
11003|   114k|    else if ((c0 >= 0xE1 && c0 <= 0xEC) || c0 == 0xEE || c0 == 0xEF)  // U+1000..U+CFFF, U+E000..U+FFFF
  ------------------
  |  Branch (11003:15): [True: 87.2k, False: 26.8k]
  |  Branch (11003:29): [True: 9.03k, False: 78.2k]
  |  Branch (11003:44): [True: 5.58k, False: 99.5k]
  |  Branch (11003:58): [True: 4.17k, False: 95.3k]
  ------------------
11004|  18.7k|    {
11005|  18.7k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (11005:13): [True: 16.0k, False: 2.69k]
  |  Branch (11005:27): [True: 12.7k, False: 3.33k]
  |  Branch (11005:46): [True: 2.00k, False: 10.7k]
  |  Branch (11005:65): [True: 1.61k, False: 390]
  |  Branch (11005:84): [True: 528, False: 1.08k]
  ------------------
11006|    528|        {
11007|    528|            return 3;
11008|    528|        }
11009|  18.7k|    }
11010|  95.3k|    else if (c0 == 0xED)  // U+D000..U+D7FF (excludes surrogates)
  ------------------
  |  Branch (11010:14): [True: 6.72k, False: 88.6k]
  ------------------
11011|  6.72k|    {
11012|  6.72k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0x9F && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (11012:13): [True: 5.86k, False: 858]
  |  Branch (11012:27): [True: 5.18k, False: 684]
  |  Branch (11012:46): [True: 2.32k, False: 2.85k]
  |  Branch (11012:65): [True: 2.10k, False: 228]
  |  Branch (11012:84): [True: 1.40k, False: 696]
  ------------------
11013|  1.40k|        {
11014|  1.40k|            return 3;
11015|  1.40k|        }
11016|  6.72k|    }
11017|  88.6k|    else if (c0 == 0xF0)  // U+10000..U+3FFFF
  ------------------
  |  Branch (11017:14): [True: 8.44k, False: 80.1k]
  ------------------
11018|  8.44k|    {
11019|  8.44k|        if (avail >= 4 && data[1] >= 0x90 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11019:13): [True: 7.67k, False: 768]
  |  Branch (11019:27): [True: 5.91k, False: 1.76k]
  |  Branch (11019:46): [True: 1.98k, False: 3.92k]
  |  Branch (11019:65): [True: 1.66k, False: 318]
  |  Branch (11019:84): [True: 1.24k, False: 426]
  |  Branch (11019:103): [True: 888, False: 354]
  |  Branch (11019:122): [True: 492, False: 396]
  ------------------
11020|    492|        {
11021|    492|            return 4;
11022|    492|        }
11023|  8.44k|    }
11024|  80.1k|    else if (c0 >= 0xF1 && c0 <= 0xF3)  // U+40000..U+FFFFF
  ------------------
  |  Branch (11024:14): [True: 53.2k, False: 26.8k]
  |  Branch (11024:28): [True: 10.2k, False: 43.0k]
  ------------------
11025|  10.2k|    {
11026|  10.2k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11026:13): [True: 9.15k, False: 1.08k]
  |  Branch (11026:27): [True: 7.16k, False: 1.98k]
  |  Branch (11026:46): [True: 4.18k, False: 2.97k]
  |  Branch (11026:65): [True: 3.87k, False: 312]
  |  Branch (11026:84): [True: 2.83k, False: 1.03k]
  |  Branch (11026:103): [True: 2.59k, False: 246]
  |  Branch (11026:122): [True: 1.32k, False: 1.26k]
  ------------------
11027|  1.32k|        {
11028|  1.32k|            return 4;
11029|  1.32k|        }
11030|  10.2k|    }
11031|  69.9k|    else if (c0 == 0xF4)  // U+100000..U+10FFFF
  ------------------
  |  Branch (11031:14): [True: 7.18k, False: 62.7k]
  ------------------
11032|  7.18k|    {
11033|  7.18k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0x8F && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11033:13): [True: 6.81k, False: 372]
  |  Branch (11033:27): [True: 5.89k, False: 918]
  |  Branch (11033:46): [True: 1.92k, False: 3.97k]
  |  Branch (11033:65): [True: 1.59k, False: 330]
  |  Branch (11033:84): [True: 792, False: 804]
  |  Branch (11033:103): [True: 588, False: 204]
  |  Branch (11033:122): [True: 414, False: 174]
  ------------------
11034|    414|        {
11035|    414|            return 4;
11036|    414|        }
11037|  7.18k|    }
11038|   127k|    return 0; // invalid, incomplete, or must be diagnosed by the byte path
11039|   134k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11dump_scalarERKSG_m:
28497|  69.0k|    {
28498|  69.0k|        switch (val.m_data.m_type)
28499|  69.0k|        {
28500|  1.32k|            case value_t::string:
  ------------------
  |  Branch (28500:13): [True: 1.32k, False: 67.7k]
  ------------------
28501|  1.32k|            {
28502|  1.32k|                put_char('"');
28503|  1.32k|                dump_escaped(*val.m_data.m_value.string);
28504|  1.32k|                put_char('"');
28505|  1.32k|                return;
28506|      0|            }
28507|       |
28508|  3.84k|            case value_t::binary:
  ------------------
  |  Branch (28508:13): [True: 3.84k, False: 65.2k]
  ------------------
28509|  3.84k|            {
28510|  3.84k|                if (pretty_print)
  ------------------
  |  Branch (28510:21): [True: 0, False: 3.84k]
  ------------------
28511|      0|                {
28512|      0|                    put_literal("{\n");
28513|       |
28514|       |                    // variable to hold indentation for the bytes
28515|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28516|       |
28517|      0|                    put_indent(new_indent);
28518|       |
28519|      0|                    put_literal("\"bytes\": [");
28520|       |
28521|      0|                    if (!val.m_data.m_value.binary->empty())
  ------------------
  |  Branch (28521:25): [True: 0, False: 0]
  ------------------
28522|      0|                    {
28523|      0|                        for (auto i = val.m_data.m_value.binary->cbegin();
28524|      0|                                i != val.m_data.m_value.binary->cend() - 1; ++i)
  ------------------
  |  Branch (28524:33): [True: 0, False: 0]
  ------------------
28525|      0|                        {
28526|      0|                            dump_byte(*i);
28527|      0|                            put_literal(", ");
28528|      0|                        }
28529|      0|                        dump_byte(val.m_data.m_value.binary->back());
28530|      0|                    }
28531|       |
28532|      0|                    put_literal("],\n");
28533|      0|                    put_indent(new_indent);
28534|       |
28535|      0|                    put_literal("\"subtype\": ");
28536|      0|                    if (val.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (28536:25): [True: 0, False: 0]
  ------------------
28537|      0|                    {
28538|      0|                        dump_integer(val.m_data.m_value.binary->subtype());
28539|      0|                    }
28540|      0|                    else
28541|      0|                    {
28542|      0|                        put_literal("null");
28543|      0|                    }
28544|      0|                    put_char('\n');
28545|      0|                    put_indent(current_indent);
28546|      0|                    put_char('}');
28547|      0|                }
28548|  3.84k|                else
28549|  3.84k|                {
28550|  3.84k|                    put_literal("{\"bytes\":[");
28551|       |
28552|  3.84k|                    if (!val.m_data.m_value.binary->empty())
  ------------------
  |  Branch (28552:25): [True: 2.06k, False: 1.77k]
  ------------------
28553|  2.06k|                    {
28554|  2.06k|                        for (auto i = val.m_data.m_value.binary->cbegin();
28555|  17.9k|                                i != val.m_data.m_value.binary->cend() - 1; ++i)
  ------------------
  |  Branch (28555:33): [True: 15.8k, False: 2.06k]
  ------------------
28556|  15.8k|                        {
28557|  15.8k|                            dump_byte(*i);
28558|  15.8k|                            put_char(',');
28559|  15.8k|                        }
28560|  2.06k|                        dump_byte(val.m_data.m_value.binary->back());
28561|  2.06k|                    }
28562|       |
28563|  3.84k|                    put_literal("],\"subtype\":");
28564|  3.84k|                    if (val.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (28564:25): [True: 3.84k, False: 0]
  ------------------
28565|  3.84k|                    {
28566|  3.84k|                        dump_integer(val.m_data.m_value.binary->subtype());
28567|  3.84k|                        put_char('}');
28568|  3.84k|                    }
28569|      0|                    else
28570|      0|                    {
28571|      0|                        put_literal("null}");
28572|      0|                    }
28573|  3.84k|                }
28574|  3.84k|                return;
28575|      0|            }
28576|       |
28577|  4.40k|            case value_t::boolean:
  ------------------
  |  Branch (28577:13): [True: 4.40k, False: 64.6k]
  ------------------
28578|  4.40k|            {
28579|  4.40k|                if (val.m_data.m_value.boolean)
  ------------------
  |  Branch (28579:21): [True: 3.53k, False: 870]
  ------------------
28580|  3.53k|                {
28581|  3.53k|                    put_literal("true");
28582|  3.53k|                }
28583|    870|                else
28584|    870|                {
28585|    870|                    put_literal("false");
28586|    870|                }
28587|  4.40k|                return;
28588|      0|            }
28589|       |
28590|  5.76k|            case value_t::number_integer:
  ------------------
  |  Branch (28590:13): [True: 5.76k, False: 63.2k]
  ------------------
28591|  5.76k|            {
28592|  5.76k|                dump_integer(val.m_data.m_value.number_integer);
28593|  5.76k|                return;
28594|      0|            }
28595|       |
28596|  4.43k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28596:13): [True: 4.43k, False: 64.6k]
  ------------------
28597|  4.43k|            {
28598|  4.43k|                dump_integer(val.m_data.m_value.number_unsigned);
28599|  4.43k|                return;
28600|      0|            }
28601|       |
28602|  8.03k|            case value_t::number_float:
  ------------------
  |  Branch (28602:13): [True: 8.03k, False: 61.0k]
  ------------------
28603|  8.03k|            {
28604|  8.03k|                dump_float(val.m_data.m_value.number_float);
28605|  8.03k|                return;
28606|      0|            }
28607|       |
28608|      0|            case value_t::discarded:
  ------------------
  |  Branch (28608:13): [True: 0, False: 69.0k]
  ------------------
28609|      0|            {
28610|      0|                put_literal("<discarded>");
28611|      0|                return;
28612|      0|            }
28613|       |
28614|  41.2k|            case value_t::null:
  ------------------
  |  Branch (28614:13): [True: 41.2k, False: 27.7k]
  ------------------
28615|  41.2k|            {
28616|  41.2k|                put_literal("null");
28617|  41.2k|                return;
28618|      0|            }
28619|       |
28620|      0|            case value_t::object: // LCOV_EXCL_LINE
  ------------------
  |  Branch (28620:13): [True: 0, False: 69.0k]
  ------------------
28621|      0|            case value_t::array:  // LCOV_EXCL_LINE
  ------------------
  |  Branch (28621:13): [True: 0, False: 69.0k]
  ------------------
28622|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (28622:13): [True: 0, False: 69.0k]
  ------------------
28623|       |                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28623:17): [Folded, False: 0]
  ------------------
28624|  69.0k|        }
28625|  69.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm11EEEvRAT__Kc:
29090|  3.84k|    {
29091|  3.84k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  3.84k|        constexpr std::size_t length = N - 1;
29094|  3.84k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  3.84k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  3.84k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 36, False: 3.80k]
  |  |  ------------------
  ------------------
29097|     36|        {
29098|     36|            flush();
29099|     36|        }
29100|  3.84k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  3.84k|        write_buffer_pos += length;
29102|  3.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9dump_byteIhEEvT_:
29380|  17.9k|    {
29381|  17.9k|        dump_byte(value, std::integral_constant < bool,
29382|  17.9k|                  std::is_unsigned<ByteType>::value && sizeof(ByteType) == 1
29383|  17.9k|                  && !std::is_same<ByteType, bool>::value > {});
29384|  17.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9dump_byteIhEEvT_NS4_17integral_constantIbLb1EEE:
29394|  17.9k|    {
29395|  17.9k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + 3 > write_buffer.size()))
  ------------------
  |  | 1667|  17.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 54, False: 17.8k]
  |  |  ------------------
  ------------------
29396|     54|        {
29397|     54|            flush();
29398|     54|        }
29399|       |
29400|  17.9k|        const auto byte = static_cast<unsigned>(value);
29401|       |        // Accumulate the offset in a local and store it back once. Writing
29402|       |        // through write_buffer[] is a char write, which may alias any object,
29403|       |        // so with the member updated in place the compiler has to reload and
29404|       |        // store it around every digit - measured 2.4x slower on a dump of a
29405|       |        // multi-megabyte binary value.
29406|  17.9k|        std::size_t pos = write_buffer_pos;
29407|       |
29408|  17.9k|        if (byte >= 100)
  ------------------
  |  Branch (29408:13): [True: 5.26k, False: 12.6k]
  ------------------
29409|  5.26k|        {
29410|  5.26k|            write_buffer[pos++] = static_cast<char>('0' + (byte / 100));
29411|  5.26k|            write_buffer[pos++] = static_cast<char>('0' + ((byte / 10) % 10));
29412|  5.26k|        }
29413|  12.6k|        else if (byte >= 10)
  ------------------
  |  Branch (29413:18): [True: 5.26k, False: 7.41k]
  ------------------
29414|  5.26k|        {
29415|  5.26k|            write_buffer[pos++] = static_cast<char>('0' + (byte / 10));
29416|  5.26k|        }
29417|       |
29418|  17.9k|        write_buffer[pos++] = static_cast<char>('0' + (byte % 10));
29419|       |
29420|  17.9k|        write_buffer_pos = pos;
29421|  17.9k|    }
_ZNK8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEE11has_subtypeEv:
 7962|  6.40k|    {
 7963|  6.40k|        return m_has_subtype;
 7964|  6.40k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_integerImTnNS4_9enable_ifIXoooosr3std11is_integralIT_EE5valuesr3std7is_sameISK_mEE5valuesr3std7is_sameISK_lEE5valueEiE4typeELi0EEEvSK_:
29439|  8.27k|    {
29440|  8.27k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
29441|  8.27k|        {
29442|  8.27k|            {
29443|  8.27k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
29444|  8.27k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
29445|  8.27k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
29446|  8.27k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
29447|  8.27k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
29448|  8.27k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
29449|  8.27k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
29450|  8.27k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
29451|  8.27k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
29452|  8.27k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
29453|  8.27k|            }
29454|  8.27k|        };
29455|       |
29456|       |        // special case for "0"
29457|  8.27k|        if (x == 0)
  ------------------
  |  Branch (29457:13): [True: 1.73k, False: 6.54k]
  ------------------
29458|  1.73k|        {
29459|  1.73k|            put_char('0');
29460|  1.73k|            return;
29461|  1.73k|        }
29462|       |
29463|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
29464|  6.54k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  6.54k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 66, False: 6.47k]
  |  |  ------------------
  ------------------
29465|     66|        {
29466|     66|            flush();
29467|     66|        }
29468|  6.54k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
29469|       |
29470|  6.54k|        number_magnitude_t abs_value;
29471|       |
29472|       |        // one byte for the minus sign
29473|  6.54k|        unsigned int n_chars = 0;
29474|       |
29475|  6.54k|        if (is_negative_number(x))
  ------------------
  |  Branch (29475:13): [True: 0, False: 6.54k]
  ------------------
29476|      0|        {
29477|      0|            *buffer_ptr = '-';
29478|      0|            abs_value = remove_sign(static_cast<number_integer_t>(x));
29479|      0|            n_chars = 1;
29480|      0|        }
29481|  6.54k|        else
29482|  6.54k|        {
29483|  6.54k|            abs_value = static_cast<number_magnitude_t>(x);
29484|  6.54k|        }
29485|       |
29486|       |        // up to 16 digits: eight at a time (as the digits of floats), written
29487|       |        // without leading zeros
29488|  6.54k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (29488:13): [True: 3.48k, False: 3.05k]
  ------------------
29489|  3.48k|        {
29490|  3.48k|            const std::uint64_t value = abs_value;
29491|  3.48k|            const std::uint64_t upper = value / 100000000u;
29492|  3.48k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (29492:70): [True: 1.18k, False: 2.29k]
  ------------------
29493|  3.48k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
29494|  3.48k|            char* const p = buffer_ptr + n_chars;
29495|  3.48k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
29496|  3.48k|            n_chars += 8 - leading;
29497|  3.48k|            if (upper != 0)
  ------------------
  |  Branch (29497:17): [True: 1.18k, False: 2.29k]
  ------------------
29498|  1.18k|            {
29499|  1.18k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
29500|  1.18k|                n_chars += 8;
29501|  1.18k|            }
29502|  3.48k|            write_buffer_pos += n_chars;
29503|  3.48k|            return;
29504|  3.48k|        }
29505|       |
29506|  3.05k|        n_chars += count_digits(abs_value);
29507|       |
29508|       |        // spare 1 byte for '\0'
29509|  3.05k|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2591|  3.05k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29509:9): [True: 3.05k, False: 0]
  ------------------
29510|       |
29511|       |        // jump to the end to generate the string from backward,
29512|       |        // so we later avoid reversing the result
29513|  3.05k|        buffer_ptr += n_chars;
29514|       |
29515|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
29516|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
29517|  29.8k|        while (abs_value >= 100)
  ------------------
  |  Branch (29517:16): [True: 26.7k, False: 3.05k]
  ------------------
29518|  26.7k|        {
29519|  26.7k|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
29520|  26.7k|            abs_value /= 100;
29521|  26.7k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29522|  26.7k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29523|  26.7k|        }
29524|       |
29525|  3.05k|        if (abs_value >= 10)
  ------------------
  |  Branch (29525:13): [True: 1.71k, False: 1.33k]
  ------------------
29526|  1.71k|        {
29527|  1.71k|            const auto digits_index = static_cast<unsigned>(abs_value);
29528|  1.71k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29529|  1.71k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29530|  1.71k|        }
29531|  1.33k|        else
29532|  1.33k|        {
29533|  1.33k|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
29534|  1.33k|        }
29535|       |
29536|  3.05k|        write_buffer_pos += n_chars;
29537|  3.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18is_negative_numberImTnNS4_9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEEbSK_:
29361|  6.54k|    {
29362|  6.54k|        return false;
29363|  6.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11remove_signEl:
29661|  2.06k|    {
29662|  2.06k|        JSON_ASSERT(x < 0);
  ------------------
  |  | 2591|  2.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29662:9): [True: 2.06k, False: 0]
  ------------------
29663|  2.06k|        return static_cast<number_magnitude_t>(-(x + 1)) + 1;
29664|  2.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl17eight_digit_bytesEm:
27559|  14.0k|{
27560|  14.0k|    const std::uint64_t abcd_efgh = abcdefgh + (((std::uint64_t{1} << 32u) - 10000u) * ((abcdefgh * (((std::uint64_t{1} << 40u) / 10000u) + 1u)) >> 40u));
27561|  14.0k|    const std::uint64_t ab_cd_ef_gh = abcd_efgh + (((std::uint64_t{1} << 16u) - 100u) * (((abcd_efgh * (((std::uint64_t{1} << 19u) / 100u) + 1u)) >> 19u) & 0x7F0000007Fu));
27562|  14.0k|    return ab_cd_ef_gh + (((std::uint64_t{1} << 8u) - 10u) * (((ab_cd_ef_gh * (((std::uint64_t{1} << 10u) / 10u) + 1u)) >> 10u) & 0x000F000F000F000Fu));
27563|  14.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail19count_leading_zerosEm:
 9296|  14.9k|{
 9297|  14.9k|#if defined(__GNUC__) || defined(__clang__)
 9298|  14.9k|    return __builtin_clzll(x);
 9299|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 9300|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 9301|       |    _BitScanReverse64(&index, x);
 9302|       |    return 63 - static_cast<int>(index);
 9303|       |#else
 9304|       |    int n = 0;
 9305|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9306|       |    {
 9307|       |        if ((x >> (64 - shift)) == 0)
 9308|       |        {
 9309|       |            n += shift;
 9310|       |            x <<= shift;
 9311|       |        }
 9312|       |    }
 9313|       |    return n;
 9314|       |#endif
 9315|  14.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl15store_msb_firstEPcm:
27569|  15.6k|{
27570|  15.6k|#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
27571|  15.6k|    v = __builtin_bswap64(v);
27572|  15.6k|    std::memcpy(p, &v, sizeof(v));
27573|       |#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
27574|       |    std::memcpy(p, &v, sizeof(v));
27575|       |#elif defined(_MSC_VER) // (little-endian on all its targets)
27576|       |    v = _byteswap_uint64(v);
27577|       |    std::memcpy(p, &v, sizeof(v));
27578|       |#else
27579|       |    for (unsigned i = 0; i < 8; ++i)
27580|       |    {
27581|       |        p[i] = static_cast<char>(v >> (56u - (8u * i)));
27582|       |    }
27583|       |#endif
27584|  15.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12count_digitsEm:
29173|  4.74k|    {
29174|  4.74k|        unsigned int n_digits = 1;
29175|  4.74k|        for (;;)
29176|  23.7k|        {
29177|  23.7k|            if (x < 10)
  ------------------
  |  Branch (29177:17): [True: 648, False: 23.0k]
  ------------------
29178|    648|            {
29179|    648|                return n_digits;
29180|    648|            }
29181|  23.0k|            if (x < 100)
  ------------------
  |  Branch (29181:17): [True: 618, False: 22.4k]
  ------------------
29182|    618|            {
29183|    618|                return n_digits + 1;
29184|    618|            }
29185|  22.4k|            if (x < 1000)
  ------------------
  |  Branch (29185:17): [True: 2.13k, False: 20.3k]
  ------------------
29186|  2.13k|            {
29187|  2.13k|                return n_digits + 2;
29188|  2.13k|            }
29189|  20.3k|            if (x < 10000)
  ------------------
  |  Branch (29189:17): [True: 1.34k, False: 18.9k]
  ------------------
29190|  1.34k|            {
29191|  1.34k|                return n_digits + 3;
29192|  1.34k|            }
29193|  18.9k|            x = x / 10000u;
29194|  18.9k|            n_digits += 4;
29195|  18.9k|        }
29196|  4.74k|    }
_ZNK8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEE7subtypeEv:
 7955|  6.40k|    {
 7956|  6.40k|        return m_has_subtype ? m_subtype : static_cast<subtype_type>(-1);
  ------------------
  |  Branch (7956:16): [True: 6.40k, False: 0]
  ------------------
 7957|  6.40k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm5EEEvRAT__Kc:
29090|  45.0k|    {
29091|  45.0k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  45.0k|        constexpr std::size_t length = N - 1;
29094|  45.0k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  45.0k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  45.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 138, False: 44.8k]
  |  |  ------------------
  ------------------
29097|    138|        {
29098|    138|            flush();
29099|    138|        }
29100|  45.0k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  45.0k|        write_buffer_pos += length;
29102|  45.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm13EEEvRAT__Kc:
29090|  3.84k|    {
29091|  3.84k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  3.84k|        constexpr std::size_t length = N - 1;
29094|  3.84k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  3.84k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  3.84k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 36, False: 3.80k]
  |  |  ------------------
  ------------------
29097|     36|        {
29098|     36|            flush();
29099|     36|        }
29100|  3.84k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  3.84k|        write_buffer_pos += length;
29102|  3.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm6EEEvRAT__Kc:
29090|    870|    {
29091|    870|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|    870|        constexpr std::size_t length = N - 1;
29094|    870|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|    870|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|    870|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 24, False: 846]
  |  |  ------------------
  ------------------
29097|     24|        {
29098|     24|            flush();
29099|     24|        }
29100|    870|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|    870|        write_buffer_pos += length;
29102|    870|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_integerIlTnNS4_9enable_ifIXoooosr3std11is_integralIT_EE5valuesr3std7is_sameISK_mEE5valuesr3std7is_sameISK_lEE5valueEiE4typeELi0EEEvSK_:
29439|  5.76k|    {
29440|  5.76k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
29441|  5.76k|        {
29442|  5.76k|            {
29443|  5.76k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
29444|  5.76k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
29445|  5.76k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
29446|  5.76k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
29447|  5.76k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
29448|  5.76k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
29449|  5.76k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
29450|  5.76k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
29451|  5.76k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
29452|  5.76k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
29453|  5.76k|            }
29454|  5.76k|        };
29455|       |
29456|       |        // special case for "0"
29457|  5.76k|        if (x == 0)
  ------------------
  |  Branch (29457:13): [True: 240, False: 5.52k]
  ------------------
29458|    240|        {
29459|    240|            put_char('0');
29460|    240|            return;
29461|    240|        }
29462|       |
29463|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
29464|  5.52k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  5.52k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 60, False: 5.46k]
  |  |  ------------------
  ------------------
29465|     60|        {
29466|     60|            flush();
29467|     60|        }
29468|  5.52k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
29469|       |
29470|  5.52k|        number_magnitude_t abs_value;
29471|       |
29472|       |        // one byte for the minus sign
29473|  5.52k|        unsigned int n_chars = 0;
29474|       |
29475|  5.52k|        if (is_negative_number(x))
  ------------------
  |  Branch (29475:13): [True: 2.06k, False: 3.45k]
  ------------------
29476|  2.06k|        {
29477|  2.06k|            *buffer_ptr = '-';
29478|  2.06k|            abs_value = remove_sign(static_cast<number_integer_t>(x));
29479|  2.06k|            n_chars = 1;
29480|  2.06k|        }
29481|  3.45k|        else
29482|  3.45k|        {
29483|  3.45k|            abs_value = static_cast<number_magnitude_t>(x);
29484|  3.45k|        }
29485|       |
29486|       |        // up to 16 digits: eight at a time (as the digits of floats), written
29487|       |        // without leading zeros
29488|  5.52k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (29488:13): [True: 3.82k, False: 1.69k]
  ------------------
29489|  3.82k|        {
29490|  3.82k|            const std::uint64_t value = abs_value;
29491|  3.82k|            const std::uint64_t upper = value / 100000000u;
29492|  3.82k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (29492:70): [True: 2.41k, False: 1.41k]
  ------------------
29493|  3.82k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
29494|  3.82k|            char* const p = buffer_ptr + n_chars;
29495|  3.82k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
29496|  3.82k|            n_chars += 8 - leading;
29497|  3.82k|            if (upper != 0)
  ------------------
  |  Branch (29497:17): [True: 2.41k, False: 1.41k]
  ------------------
29498|  2.41k|            {
29499|  2.41k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
29500|  2.41k|                n_chars += 8;
29501|  2.41k|            }
29502|  3.82k|            write_buffer_pos += n_chars;
29503|  3.82k|            return;
29504|  3.82k|        }
29505|       |
29506|  1.69k|        n_chars += count_digits(abs_value);
29507|       |
29508|       |        // spare 1 byte for '\0'
29509|  1.69k|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2591|  1.69k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29509:9): [True: 1.69k, False: 0]
  ------------------
29510|       |
29511|       |        // jump to the end to generate the string from backward,
29512|       |        // so we later avoid reversing the result
29513|  1.69k|        buffer_ptr += n_chars;
29514|       |
29515|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
29516|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
29517|  16.3k|        while (abs_value >= 100)
  ------------------
  |  Branch (29517:16): [True: 14.6k, False: 1.69k]
  ------------------
29518|  14.6k|        {
29519|  14.6k|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
29520|  14.6k|            abs_value /= 100;
29521|  14.6k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29522|  14.6k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29523|  14.6k|        }
29524|       |
29525|  1.69k|        if (abs_value >= 10)
  ------------------
  |  Branch (29525:13): [True: 246, False: 1.44k]
  ------------------
29526|    246|        {
29527|    246|            const auto digits_index = static_cast<unsigned>(abs_value);
29528|    246|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29529|    246|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29530|    246|        }
29531|  1.44k|        else
29532|  1.44k|        {
29533|  1.44k|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
29534|  1.44k|        }
29535|       |
29536|  1.69k|        write_buffer_pos += n_chars;
29537|  1.69k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18is_negative_numberIlTnNS4_9enable_ifIXsr9is_signedIT_EE5valueEiE4typeELi0EEEbSK_:
29355|  5.52k|    {
29356|  5.52k|        return x < 0;
29357|  5.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEd:
29547|  8.03k|    {
29548|       |        // NaN / inf
29549|  8.03k|        if (!std::isfinite(x))
  ------------------
  |  Branch (29549:13): [True: 234, False: 7.80k]
  ------------------
29550|    234|        {
29551|    234|            put_literal("null");
29552|    234|            return;
29553|    234|        }
29554|       |
29555|       |        // If number_float_t is an IEEE-754 single or double precision number,
29556|       |        // use the Grisu2 algorithm to produce short numbers which are
29557|       |        // guaranteed to round-trip, using strtof and strtod, resp.
29558|       |        //
29559|       |        // NB: The test below works if <long double> == <double>.
29560|  7.80k|        static constexpr bool is_ieee_single_or_double
29561|  7.80k|            = (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 24 && std::numeric_limits<number_float_t>::max_exponent == 128) ||
  ------------------
  |  Branch (29561:16): [True: 0, Folded]
  |  Branch (29561:66): [Folded, False: 0]
  |  Branch (29561:119): [Folded, False: 0]
  ------------------
29562|      0|              (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 53 && std::numeric_limits<number_float_t>::max_exponent == 1024);
  ------------------
  |  Branch (29562:16): [True: 0, Folded]
  |  Branch (29562:66): [True: 0, Folded]
  |  Branch (29562:119): [True: 0, Folded]
  ------------------
29563|       |
29564|  7.80k|        dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
29565|  7.80k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEdNS4_17integral_constantIbLb1EEE:
29568|  7.80k|    {
29569|       |        // directly into the write buffer: copying the text from number_buffer
29570|       |        // right after to_chars() wrote it waits until its stores are done
29571|  7.80k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  7.80k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 60, False: 7.74k]
  |  |  ------------------
  ------------------
29572|     60|        {
29573|     60|            flush();
29574|     60|        }
29575|  7.80k|        auto* begin = write_buffer.data() + write_buffer_pos;
29576|  7.80k|        auto* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
29577|  7.80k|        write_buffer_pos += static_cast<std::size_t>(end - begin);
29578|  7.80k|    }
_ZN8nlohmann16json_abi_v3_12_06detail8to_charsIdEEPcS3_PKcT_:
27946|  7.80k|{
27947|  7.80k|    JSON_ASSERT(std::isfinite(value));
  ------------------
  |  | 2591|  7.80k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27947:5): [True: 7.80k, False: 0]
  ------------------
27948|       |
27949|       |    // Use signbit(value) instead of (value < 0) since signbit works for -0.
27950|  7.80k|    if (std::signbit(value))
  ------------------
  |  Branch (27950:9): [True: 1.48k, False: 6.31k]
  ------------------
27951|  1.48k|    {
27952|  1.48k|        value = -value;
27953|  1.48k|        *first++ = '-';
27954|  1.48k|    }
27955|       |
27956|  7.80k|#ifdef __GNUC__
27957|  7.80k|    JSON_HEDLEY_DIAGNOSTIC_PUSH
27958|  7.80k|    JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
27959|  7.80k|#endif
27960|  7.80k|    if (value == 0) // +-0
  ------------------
  |  Branch (27960:9): [True: 162, False: 7.63k]
  ------------------
27961|    162|    {
27962|    162|        *first++ = '0';
27963|       |        // Make it look like a floating-point number (#362, #378)
27964|    162|        *first++ = '.';
27965|    162|        *first++ = '0';
27966|    162|        return first;
27967|    162|    }
27968|  7.63k|#ifdef __GNUC__
27969|  7.63k|    JSON_HEDLEY_DIAGNOSTIC_POP
27970|  7.63k|#endif
27971|       |
27972|  7.63k|    return dtoa_impl::write_positive(first, last, value);
27973|  7.80k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_:
27926|  7.63k|{
27927|  7.63k|    return write_positive(first, last, value, is_binary64<FloatType> {});
27928|  7.63k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_NSt3__117integral_constantIbLb1EEE:
27908|  7.63k|{
27909|  7.63k|    return write_positive_zmij(first, last, value);
27910|  7.63k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl19write_positive_zmijIdEEPcS4_PKcT_:
27885|  7.63k|{
27886|  7.63k|    static_assert(is_binary64<FloatType>::value,
27887|  7.63k|                  "internal error: the conversion of Zmij needs IEEE 754 binary64 numbers");
27888|  7.63k|    std::uint64_t bits = 0;
27889|  7.63k|    std::memcpy(&bits, &value, sizeof(bits));
27890|  7.63k|    const zmij::shortest_decimal d = zmij::to_shortest(bits);
27891|  7.63k|    if (JSON_HEDLEY_LIKELY(last - first >= 41))
  ------------------
  |  | 1666|  7.63k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 7.63k, False: 0]
  |  |  ------------------
  ------------------
27892|  7.63k|    {
27893|  7.63k|        return write_shortest(first, d);
27894|  7.63k|    }
27895|      0|    std::array<char, 64> buf; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27896|      0|    const auto len = static_cast<std::size_t>(write_shortest(buf.data(), d) - buf.data());
27897|      0|    JSON_ASSERT(last - first >= static_cast<std::ptrdiff_t>(len));
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27897:5): [True: 0, False: 0]
  ------------------
27898|      0|    std::memcpy(first, buf.data(), len);
27899|      0|    return first + len;
27900|      0|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11to_shortestEm:
26468|  7.63k|{
26469|  7.63k|    constexpr int extra_shift = 9;
26470|  7.63k|    const auto raw_exp = static_cast<int>((bits >> 52u) & 0x7FFu);
26471|  7.63k|    std::uint64_t bin_sig = bits & ((std::uint64_t{1} << 52u) - 1);
26472|       |    // a power of two has a narrower interval below (except the smallest normal)
26473|  7.63k|    const bool regular = bin_sig != 0 || raw_exp <= 1;
  ------------------
  |  Branch (26473:26): [True: 6.85k, False: 786]
  |  Branch (26473:42): [True: 0, False: 786]
  ------------------
26474|  7.63k|    const int bin_exp = (raw_exp == 0 ? 1 : raw_exp) - 1075;
  ------------------
  |  Branch (26474:26): [True: 2.29k, False: 5.34k]
  ------------------
26475|  7.63k|    if (raw_exp != 0)
  ------------------
  |  Branch (26475:9): [True: 5.34k, False: 2.29k]
  ------------------
26476|  5.34k|    {
26477|  5.34k|        bin_sig |= std::uint64_t{1} << 52u;
26478|  5.34k|    }
26479|       |    // floor(log10(2^bin_exp)), or floor(log10(3/4 * 2^bin_exp)) for the irregular case
26480|  7.63k|    const int dec_exp = ((bin_exp * 315653) - (regular ? 0 : 131072)) >> 20;
  ------------------
  |  Branch (26480:48): [True: 6.85k, False: 786]
  ------------------
26481|       |    // scaled by 10^(-dec_exp - 1): the integral part is the shorter candidate
26482|  7.63k|    const int shift = bin_exp + ((-(dec_exp + 1) * 217707) >> 16) + 1 + extra_shift;
26483|  7.63k|    const uint128_parts p10 = pow10(-dec_exp - 1);
26484|  7.63k|    const uint128_parts p = umul192_hi128(p10.high, p10.low, bin_sig << static_cast<unsigned>(shift));
26485|  7.63k|    std::uint64_t integral = p.high >> static_cast<unsigned>(extra_shift);
26486|       |    // (no casts in the shifts: MSVC 2015 warns C4554 on them despite the parentheses)
26487|  7.63k|    constexpr auto fractional_low_shift = static_cast<unsigned>(extra_shift);
26488|  7.63k|    constexpr unsigned fractional_high_shift = 64u - fractional_low_shift;
26489|  7.63k|    const std::uint64_t fractional = (p.high << fractional_high_shift) | (p.low >> fractional_low_shift);
26490|  7.63k|    std::uint64_t digit = 0;
26491|  7.63k|    bool round_up = false;
26492|  7.63k|    bool round_down = false;
26493|  7.63k|    if (JSON_HEDLEY_LIKELY(regular))
  ------------------
  |  | 1666|  7.63k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 6.85k, False: 786]
  |  |  ------------------
  ------------------
26494|  6.85k|    {
26495|  6.85k|        const std::uint64_t half_ulp = (p10.high >> static_cast<unsigned>(extra_shift + 1 - shift)) + (1 - (bin_sig & 1u));
26496|  6.85k|        round_up = fractional + half_ulp < fractional;
26497|  6.85k|        round_down = half_ulp > fractional;
26498|       |        // the last digit of the longer candidate, rounded to nearest
26499|  6.85k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) + 6);
26500|  6.85k|        if (fractional == (std::uint64_t{1} << 62u))
  ------------------
  |  Branch (26500:13): [True: 132, False: 6.72k]
  ------------------
26501|    132|        {
26502|    132|            digit = 2; // 2.5 rounds to 2
26503|    132|        }
26504|  6.85k|    }
26505|    786|    else
26506|    786|    {
26507|    786|        const std::uint64_t half_ulp = p10.high >> static_cast<unsigned>(extra_shift + 1 - shift);
26508|    786|        round_up = half_ulp > ~std::uint64_t{0} - fractional;
26509|    786|        round_down = (half_ulp >> 1u) > fractional;
26510|    786|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) - 1);
26511|    786|        const std::uint64_t lowest = umul128_add_hi64(fractional - (half_ulp >> 1u), 10, ~std::uint64_t{0});
26512|    786|        digit = digit < lowest ? lowest : digit;
  ------------------
  |  Branch (26512:17): [True: 294, False: 492]
  ------------------
26513|    786|    }
26514|  7.63k|    integral += round_up ? 1u : 0u;
  ------------------
  |  Branch (26514:17): [True: 1.58k, False: 6.05k]
  ------------------
26515|       |    // if the shorter candidate is outside the rounding interval: one digit more
26516|  7.63k|    return shortest_decimal{integral, dec_exp, static_cast<unsigned char>(digit), !round_up && !round_down};
  ------------------
  |  Branch (26516:83): [True: 6.05k, False: 1.58k]
  |  Branch (26516:96): [True: 4.38k, False: 1.66k]
  ------------------
26517|  7.63k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij5pow10Ei:
26422|  7.63k|{
26423|  7.63k|    if (k > pow5_128_largest_power)
  ------------------
  |  Branch (26423:9): [True: 3.34k, False: 4.29k]
  ------------------
26424|  3.34k|    {
26425|  3.34k|        return compute_pow10(k); // (only for the smallest doubles)
26426|  3.34k|    }
26427|  4.29k|    const auto i = 2 * static_cast<std::size_t>(k - pow5_128_smallest_power);
26428|  4.29k|    uint128_parts r{pow5_128()[i + 1], pow5_128()[i]};
26429|  4.29k|    const std::uint64_t adjust = static_cast<unsigned>(k + 27) < 27u ? 1u : 0u;
  ------------------
  |  Branch (26429:34): [True: 210, False: 4.08k]
  ------------------
26430|  4.29k|    r.high -= r.low < adjust ? 1u : 0u;
  ------------------
  |  Branch (26430:15): [True: 0, False: 4.29k]
  ------------------
26431|  4.29k|    r.low -= adjust;
26432|  4.29k|    return r;
26433|  7.63k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13compute_pow10Ei:
26392|  3.34k|{
26393|  3.34k|    const auto i = static_cast<unsigned>(k + 307);
26394|  3.34k|    const std::uint64_t m = pow10_minor()[(i + 24) % 28];
26395|  3.34k|    const std::size_t j = 2 * static_cast<std::size_t>((i + 24) / 28);
26396|  3.34k|    const std::uint64_t h_hi = pow10_major()[j];
26397|  3.34k|    const std::uint64_t h_lo = pow10_major()[j + 1];
26398|  3.34k|    const std::uint64_t h1 = full_multiplication(h_lo, m).high;
26399|  3.34k|    const std::uint64_t c0 = h_lo * m;
26400|  3.34k|    const std::uint64_t c1 = h1 + (h_hi * m);
26401|  3.34k|    const std::uint64_t c2 = (c1 < h1 ? 1u : 0u) + full_multiplication(h_hi, m).high;
  ------------------
  |  Branch (26401:31): [True: 66, False: 3.27k]
  ------------------
26402|  3.34k|    uint128_parts r{};
26403|  3.34k|    if ((c2 >> 63u) != 0)
  ------------------
  |  Branch (26403:9): [True: 906, False: 2.43k]
  ------------------
26404|    906|    {
26405|    906|        r.high = c2;
26406|    906|        r.low = c1;
26407|    906|    }
26408|  2.43k|    else
26409|  2.43k|    {
26410|  2.43k|        r.high = (c2 << 1u) | (c1 >> 63u);
26411|  2.43k|        r.low = (c1 << 1u) | (c0 >> 63u);
26412|  2.43k|    }
26413|  3.34k|    r.low -= (pow10_fixups()[i >> 5u] >> (i & 31u)) & 1u;
26414|  3.34k|    return r;
26415|  3.34k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_minorEv:
26340|  3.34k|{
26341|  3.34k|    static const std::array<std::uint64_t, 28> table =
26342|  3.34k|    {
26343|  3.34k|        {
26344|  3.34k|            0x8000000000000000u, 0xa000000000000000u, 0xc800000000000000u, 0xfa00000000000000u, 0x9c40000000000000u,
26345|  3.34k|            0xc350000000000000u, 0xf424000000000000u, 0x9896800000000000u, 0xbebc200000000000u, 0xee6b280000000000u,
26346|  3.34k|            0x9502f90000000000u, 0xba43b74000000000u, 0xe8d4a51000000000u, 0x9184e72a00000000u, 0xb5e620f480000000u,
26347|  3.34k|            0xe35fa931a0000000u, 0x8e1bc9bf04000000u, 0xb1a2bc2ec5000000u, 0xde0b6b3a76400000u, 0x8ac7230489e80000u,
26348|  3.34k|            0xad78ebc5ac620000u, 0xd8d726b7177a8000u, 0x878678326eac9000u, 0xa968163f0a57b400u, 0xd3c21bcecceda100u,
26349|  3.34k|            0x84595161401484a0u, 0xa56fa5b99019a5c8u, 0xcecb8f27f4200f3au
26350|  3.34k|        }
26351|  3.34k|    };
26352|  3.34k|    return table;
26353|  3.34k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_majorEv:
26357|  6.68k|{
26358|  6.68k|    static const std::array<std::uint64_t, 50> table =
26359|  6.68k|    {
26360|  6.68k|        {
26361|  6.68k|            0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3eu, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44ddau, 0xb1442798f49ffb4au, 0x99cd11cfdf41779du,
26362|  6.68k|            0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u, 0xb4bca50b065abe63u, 0x0fed077a756b53aau, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d543u,
26363|  6.68k|            0xb84687c269ef3bfbu, 0x3d5d514f40eea742u, 0xba121a4650e4ddebu, 0x92f34d62616ce413u, 0xbbe226efb628afeau, 0x890489f70a55368cu,
26364|  6.68k|            0xbdb6b8e905cb600fu, 0x5400e987bbc1c921u, 0xbf8fdb78849a5f96u, 0xde98520472bdd034u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
26365|  6.68k|            0xc350000000000000u, 0x0000000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef6u,
26366|  6.68k|            0xc913936dd571c84cu, 0x03bc3a19cd1e38eau, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc6u, 0xcd036837130890a1u, 0x36dba887c37a8c10u,
26367|  6.68k|            0xcf02b2c21207ef2eu, 0x94f967e45e03f4bcu, 0xd106f86e69d785c7u, 0xe13336d701beba52u, 0xd31045a8341ca07cu, 0x1ede48111209a051u,
26368|  6.68k|            0xd51ea6fa85785631u, 0x552a74227f3ea566u, 0xd732290fbacaf133u, 0xa97c177947ad4096u, 0xd94ad8b1c7380874u, 0x18375281ae7822bdu,
26369|  6.68k|            0xdb68c2ca82ed2a05u, 0xa67398db9f6820e1u
26370|  6.68k|        }
26371|  6.68k|    };
26372|  6.68k|    return table;
26373|  6.68k|}
_ZN8nlohmann16json_abi_v3_12_06detail19full_multiplicationEmm:
 9348|  30.3k|{
 9349|  30.3k|#if defined(__SIZEOF_INT128__)
 9350|  30.3k|    __extension__ using uint128 = unsigned __int128;
 9351|  30.3k|    const uint128 r = static_cast<uint128>(a) * b;
 9352|  30.3k|    return {static_cast<std::uint64_t>(r), static_cast<std::uint64_t>(r >> 64u)};
 9353|       |#elif defined(_MSC_VER) && defined(_M_X64)
 9354|       |    std::uint64_t high = 0;
 9355|       |    const std::uint64_t low = _umul128(a, b, &high);
 9356|       |    return {low, high};
 9357|       |#elif defined(_MSC_VER) && defined(_M_ARM64)
 9358|       |    return {a * b, __umulh(a, b)};
 9359|       |#else
 9360|       |    const std::uint64_t a_lo = a & 0xFFFFFFFFu;
 9361|       |    const std::uint64_t a_hi = a >> 32u;
 9362|       |    const std::uint64_t b_lo = b & 0xFFFFFFFFu;
 9363|       |    const std::uint64_t b_hi = b >> 32u;
 9364|       |    const std::uint64_t lo_lo = a_lo * b_lo;
 9365|       |    const std::uint64_t hi_lo = a_hi * b_lo;
 9366|       |    const std::uint64_t lo_hi = a_lo * b_hi;
 9367|       |    const std::uint64_t hi_hi = a_hi * b_hi;
 9368|       |    const std::uint64_t cross = (lo_lo >> 32u) + (hi_lo & 0xFFFFFFFFu) + lo_hi;
 9369|       |    return {(cross << 32u) | (lo_lo & 0xFFFFFFFFu), (hi_lo >> 32u) + (cross >> 32u) + hi_hi};
 9370|       |#endif
 9371|  30.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij12pow10_fixupsEv:
26377|  3.34k|{
26378|  3.34k|    static const std::array<std::uint32_t, 21> table =
26379|  3.34k|    {
26380|  3.34k|        {
26381|  3.34k|            0x8d8fc810u, 0x06100293u, 0x19000000u, 0x00100000u, 0x00000908u, 0x00000000u, 0x04e00300u, 0x3807e0b2u, 0x3d83d793u, 0x0006f5ccu,
26382|  3.34k|            0x00000000u, 0xffff0000u, 0x8076337du, 0x4ff45ba0u, 0x09405033u, 0x034376d9u, 0x09000000u, 0x4e100501u, 0x076d14dcu, 0xf964f45eu,
26383|  3.34k|            0x0000003du
26384|  3.34k|        }
26385|  3.34k|    };
26386|  3.34k|    return table;
26387|  3.34k|}
_ZN8nlohmann16json_abi_v3_12_06detail8pow5_128Ev:
 9468|  8.59k|{
 9469|  8.59k|    static const std::array<std::uint64_t, 1302> table =
 9470|  8.59k|    {
 9471|  8.59k|        {
 9472|  8.59k|            0xeef453d6923bd65au, 0x113faa2906a13b3fu, 0x9558b4661b6565f8u, 0x4ac7ca59a424c507u,
 9473|  8.59k|            0xbaaee17fa23ebf76u, 0x5d79bcf00d2df649u, 0xe95a99df8ace6f53u, 0xf4d82c2c107973dcu,
 9474|  8.59k|            0x91d8a02bb6c10594u, 0x79071b9b8a4be869u, 0xb64ec836a47146f9u, 0x9748e2826cdee284u,
 9475|  8.59k|            0xe3e27a444d8d98b7u, 0xfd1b1b2308169b25u, 0x8e6d8c6ab0787f72u, 0xfe30f0f5e50e20f7u,
 9476|  8.59k|            0xb208ef855c969f4fu, 0xbdbd2d335e51a935u, 0xde8b2b66b3bc4723u, 0xad2c788035e61382u,
 9477|  8.59k|            0x8b16fb203055ac76u, 0x4c3bcb5021afcc31u, 0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3du,
 9478|  8.59k|            0xd953e8624b85dd78u, 0xd71d6dad34a2af0du, 0x87d4713d6f33aa6bu, 0x8672648c40e5ad68u,
 9479|  8.59k|            0xa9c98d8ccb009506u, 0x680efdaf511f18c2u, 0xd43bf0effdc0ba48u, 0x0212bd1b2566def2u,
 9480|  8.59k|            0x84a57695fe98746du, 0x014bb630f7604b57u, 0xa5ced43b7e3e9188u, 0x419ea3bd35385e2du,
 9481|  8.59k|            0xcf42894a5dce35eau, 0x52064cac828675b9u, 0x818995ce7aa0e1b2u, 0x7343efebd1940993u,
 9482|  8.59k|            0xa1ebfb4219491a1fu, 0x1014ebe6c5f90bf8u, 0xca66fa129f9b60a6u, 0xd41a26e077774ef6u,
 9483|  8.59k|            0xfd00b897478238d0u, 0x8920b098955522b4u, 0x9e20735e8cb16382u, 0x55b46e5f5d5535b0u,
 9484|  8.59k|            0xc5a890362fddbc62u, 0xeb2189f734aa831du, 0xf712b443bbd52b7bu, 0xa5e9ec7501d523e4u,
 9485|  8.59k|            0x9a6bb0aa55653b2du, 0x47b233c92125366eu, 0xc1069cd4eabe89f8u, 0x999ec0bb696e840au,
 9486|  8.59k|            0xf148440a256e2c76u, 0xc00670ea43ca250du, 0x96cd2a865764dbcau, 0x380406926a5e5728u,
 9487|  8.59k|            0xbc807527ed3e12bcu, 0xc605083704f5ecf2u, 0xeba09271e88d976bu, 0xf7864a44c633682eu,
 9488|  8.59k|            0x93445b8731587ea3u, 0x7ab3ee6afbe0211du, 0xb8157268fdae9e4cu, 0x5960ea05bad82964u,
 9489|  8.59k|            0xe61acf033d1a45dfu, 0x6fb92487298e33bdu, 0x8fd0c16206306babu, 0xa5d3b6d479f8e056u,
 9490|  8.59k|            0xb3c4f1ba87bc8696u, 0x8f48a4899877186cu, 0xe0b62e2929aba83cu, 0x331acdabfe94de87u,
 9491|  8.59k|            0x8c71dcd9ba0b4925u, 0x9ff0c08b7f1d0b14u, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44dd9u,
 9492|  8.59k|            0xdb71e91432b1a24au, 0xc9e82cd9f69d6150u, 0x892731ac9faf056eu, 0xbe311c083a225cd2u,
 9493|  8.59k|            0xab70fe17c79ac6cau, 0x6dbd630a48aaf406u, 0xd64d3d9db981787du, 0x092cbbccdad5b108u,
 9494|  8.59k|            0x85f0468293f0eb4eu, 0x25bbf56008c58ea5u, 0xa76c582338ed2621u, 0xaf2af2b80af6f24eu,
 9495|  8.59k|            0xd1476e2c07286faau, 0x1af5af660db4aee1u, 0x82cca4db847945cau, 0x50d98d9fc890ed4du,
 9496|  8.59k|            0xa37fce126597973cu, 0xe50ff107bab528a0u, 0xcc5fc196fefd7d0cu, 0x1e53ed49a96272c8u,
 9497|  8.59k|            0xff77b1fcbebcdc4fu, 0x25e8e89c13bb0f7au, 0x9faacf3df73609b1u, 0x77b191618c54e9acu,
 9498|  8.59k|            0xc795830d75038c1du, 0xd59df5b9ef6a2417u, 0xf97ae3d0d2446f25u, 0x4b0573286b44ad1du,
 9499|  8.59k|            0x9becce62836ac577u, 0x4ee367f9430aec32u, 0xc2e801fb244576d5u, 0x229c41f793cda73fu,
 9500|  8.59k|            0xf3a20279ed56d48au, 0x6b43527578c1110fu, 0x9845418c345644d6u, 0x830a13896b78aaa9u,
 9501|  8.59k|            0xbe5691ef416bd60cu, 0x23cc986bc656d553u, 0xedec366b11c6cb8fu, 0x2cbfbe86b7ec8aa8u,
 9502|  8.59k|            0x94b3a202eb1c3f39u, 0x7bf7d71432f3d6a9u, 0xb9e08a83a5e34f07u, 0xdaf5ccd93fb0cc53u,
 9503|  8.59k|            0xe858ad248f5c22c9u, 0xd1b3400f8f9cff68u, 0x91376c36d99995beu, 0x23100809b9c21fa1u,
 9504|  8.59k|            0xb58547448ffffb2du, 0xabd40a0c2832a78au, 0xe2e69915b3fff9f9u, 0x16c90c8f323f516cu,
 9505|  8.59k|            0x8dd01fad907ffc3bu, 0xae3da7d97f6792e3u, 0xb1442798f49ffb4au, 0x99cd11cfdf41779cu,
 9506|  8.59k|            0xdd95317f31c7fa1du, 0x40405643d711d583u, 0x8a7d3eef7f1cfc52u, 0x482835ea666b2572u,
 9507|  8.59k|            0xad1c8eab5ee43b66u, 0xda3243650005eecfu, 0xd863b256369d4a40u, 0x90bed43e40076a82u,
 9508|  8.59k|            0x873e4f75e2224e68u, 0x5a7744a6e804a291u, 0xa90de3535aaae202u, 0x711515d0a205cb36u,
 9509|  8.59k|            0xd3515c2831559a83u, 0x0d5a5b44ca873e03u, 0x8412d9991ed58091u, 0xe858790afe9486c2u,
 9510|  8.59k|            0xa5178fff668ae0b6u, 0x626e974dbe39a872u, 0xce5d73ff402d98e3u, 0xfb0a3d212dc8128fu,
 9511|  8.59k|            0x80fa687f881c7f8eu, 0x7ce66634bc9d0b99u, 0xa139029f6a239f72u, 0x1c1fffc1ebc44e80u,
 9512|  8.59k|            0xc987434744ac874eu, 0xa327ffb266b56220u, 0xfbe9141915d7a922u, 0x4bf1ff9f0062baa8u,
 9513|  8.59k|            0x9d71ac8fada6c9b5u, 0x6f773fc3603db4a9u, 0xc4ce17b399107c22u, 0xcb550fb4384d21d3u,
 9514|  8.59k|            0xf6019da07f549b2bu, 0x7e2a53a146606a48u, 0x99c102844f94e0fbu, 0x2eda7444cbfc426du,
 9515|  8.59k|            0xc0314325637a1939u, 0xfa911155fefb5308u, 0xf03d93eebc589f88u, 0x793555ab7eba27cau,
 9516|  8.59k|            0x96267c7535b763b5u, 0x4bc1558b2f3458deu, 0xbbb01b9283253ca2u, 0x9eb1aaedfb016f16u,
 9517|  8.59k|            0xea9c227723ee8bcbu, 0x465e15a979c1cadcu, 0x92a1958a7675175fu, 0x0bfacd89ec191ec9u,
 9518|  8.59k|            0xb749faed14125d36u, 0xcef980ec671f667bu, 0xe51c79a85916f484u, 0x82b7e12780e7401au,
 9519|  8.59k|            0x8f31cc0937ae58d2u, 0xd1b2ecb8b0908810u, 0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u,
 9520|  8.59k|            0xdfbdcece67006ac9u, 0x67a791e093e1d49au, 0x8bd6a141006042bdu, 0xe0c8bb2c5c6d24e0u,
 9521|  8.59k|            0xaecc49914078536du, 0x58fae9f773886e18u, 0xda7f5bf590966848u, 0xaf39a475506a899eu,
 9522|  8.59k|            0x888f99797a5e012du, 0x6d8406c952429603u, 0xaab37fd7d8f58178u, 0xc8e5087ba6d33b83u,
 9523|  8.59k|            0xd5605fcdcf32e1d6u, 0xfb1e4a9a90880a64u, 0x855c3be0a17fcd26u, 0x5cf2eea09a55067fu,
 9524|  8.59k|            0xa6b34ad8c9dfc06fu, 0xf42faa48c0ea481eu, 0xd0601d8efc57b08bu, 0xf13b94daf124da26u,
 9525|  8.59k|            0x823c12795db6ce57u, 0x76c53d08d6b70858u, 0xa2cb1717b52481edu, 0x54768c4b0c64ca6eu,
 9526|  8.59k|            0xcb7ddcdda26da268u, 0xa9942f5dcf7dfd09u, 0xfe5d54150b090b02u, 0xd3f93b35435d7c4cu,
 9527|  8.59k|            0x9efa548d26e5a6e1u, 0xc47bc5014a1a6dafu, 0xc6b8e9b0709f109au, 0x359ab6419ca1091bu,
 9528|  8.59k|            0xf867241c8cc6d4c0u, 0xc30163d203c94b62u, 0x9b407691d7fc44f8u, 0x79e0de63425dcf1du,
 9529|  8.59k|            0xc21094364dfb5636u, 0x985915fc12f542e4u, 0xf294b943e17a2bc4u, 0x3e6f5b7b17b2939du,
 9530|  8.59k|            0x979cf3ca6cec5b5au, 0xa705992ceecf9c42u, 0xbd8430bd08277231u, 0x50c6ff782a838353u,
 9531|  8.59k|            0xece53cec4a314ebdu, 0xa4f8bf5635246428u, 0x940f4613ae5ed136u, 0x871b7795e136be99u,
 9532|  8.59k|            0xb913179899f68584u, 0x28e2557b59846e3fu, 0xe757dd7ec07426e5u, 0x331aeada2fe589cfu,
 9533|  8.59k|            0x9096ea6f3848984fu, 0x3ff0d2c85def7621u, 0xb4bca50b065abe63u, 0x0fed077a756b53a9u,
 9534|  8.59k|            0xe1ebce4dc7f16dfbu, 0xd3e8495912c62894u, 0x8d3360f09cf6e4bdu, 0x64712dd7abbbd95cu,
 9535|  8.59k|            0xb080392cc4349decu, 0xbd8d794d96aacfb3u, 0xdca04777f541c567u, 0xecf0d7a0fc5583a0u,
 9536|  8.59k|            0x89e42caaf9491b60u, 0xf41686c49db57244u, 0xac5d37d5b79b6239u, 0x311c2875c522ced5u,
 9537|  8.59k|            0xd77485cb25823ac7u, 0x7d633293366b828bu, 0x86a8d39ef77164bcu, 0xae5dff9c02033197u,
 9538|  8.59k|            0xa8530886b54dbdebu, 0xd9f57f830283fdfcu, 0xd267caa862a12d66u, 0xd072df63c324fd7bu,
 9539|  8.59k|            0x8380dea93da4bc60u, 0x4247cb9e59f71e6du, 0xa46116538d0deb78u, 0x52d9be85f074e608u,
 9540|  8.59k|            0xcd795be870516656u, 0x67902e276c921f8bu, 0x806bd9714632dff6u, 0x00ba1cd8a3db53b6u,
 9541|  8.59k|            0xa086cfcd97bf97f3u, 0x80e8a40eccd228a4u, 0xc8a883c0fdaf7df0u, 0x6122cd128006b2cdu,
 9542|  8.59k|            0xfad2a4b13d1b5d6cu, 0x796b805720085f81u, 0x9cc3a6eec6311a63u, 0xcbe3303674053bb0u,
 9543|  8.59k|            0xc3f490aa77bd60fcu, 0xbedbfc4411068a9cu, 0xf4f1b4d515acb93bu, 0xee92fb5515482d44u,
 9544|  8.59k|            0x991711052d8bf3c5u, 0x751bdd152d4d1c4au, 0xbf5cd54678eef0b6u, 0xd262d45a78a0635du,
 9545|  8.59k|            0xef340a98172aace4u, 0x86fb897116c87c34u, 0x9580869f0e7aac0eu, 0xd45d35e6ae3d4da0u,
 9546|  8.59k|            0xbae0a846d2195712u, 0x8974836059cca109u, 0xe998d258869facd7u, 0x2bd1a438703fc94bu,
 9547|  8.59k|            0x91ff83775423cc06u, 0x7b6306a34627ddcfu, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d542u,
 9548|  8.59k|            0xe41f3d6a7377eecau, 0x20caba5f1d9e4a93u, 0x8e938662882af53eu, 0x547eb47b7282ee9cu,
 9549|  8.59k|            0xb23867fb2a35b28du, 0xe99e619a4f23aa43u, 0xdec681f9f4c31f31u, 0x6405fa00e2ec94d4u,
 9550|  8.59k|            0x8b3c113c38f9f37eu, 0xde83bc408dd3dd04u, 0xae0b158b4738705eu, 0x9624ab50b148d445u,
 9551|  8.59k|            0xd98ddaee19068c76u, 0x3badd624dd9b0957u, 0x87f8a8d4cfa417c9u, 0xe54ca5d70a80e5d6u,
 9552|  8.59k|            0xa9f6d30a038d1dbcu, 0x5e9fcf4ccd211f4cu, 0xd47487cc8470652bu, 0x7647c3200069671fu,
 9553|  8.59k|            0x84c8d4dfd2c63f3bu, 0x29ecd9f40041e073u, 0xa5fb0a17c777cf09u, 0xf468107100525890u,
 9554|  8.59k|            0xcf79cc9db955c2ccu, 0x7182148d4066eeb4u, 0x81ac1fe293d599bfu, 0xc6f14cd848405530u,
 9555|  8.59k|            0xa21727db38cb002fu, 0xb8ada00e5a506a7cu, 0xca9cf1d206fdc03bu, 0xa6d90811f0e4851cu,
 9556|  8.59k|            0xfd442e4688bd304au, 0x908f4a166d1da663u, 0x9e4a9cec15763e2eu, 0x9a598e4e043287feu,
 9557|  8.59k|            0xc5dd44271ad3cdbau, 0x40eff1e1853f29fdu, 0xf7549530e188c128u, 0xd12bee59e68ef47cu,
 9558|  8.59k|            0x9a94dd3e8cf578b9u, 0x82bb74f8301958ceu, 0xc13a148e3032d6e7u, 0xe36a52363c1faf01u,
 9559|  8.59k|            0xf18899b1bc3f8ca1u, 0xdc44e6c3cb279ac1u, 0x96f5600f15a7b7e5u, 0x29ab103a5ef8c0b9u,
 9560|  8.59k|            0xbcb2b812db11a5deu, 0x7415d448f6b6f0e7u, 0xebdf661791d60f56u, 0x111b495b3464ad21u,
 9561|  8.59k|            0x936b9fcebb25c995u, 0xcab10dd900beec34u, 0xb84687c269ef3bfbu, 0x3d5d514f40eea742u,
 9562|  8.59k|            0xe65829b3046b0afau, 0x0cb4a5a3112a5112u, 0x8ff71a0fe2c2e6dcu, 0x47f0e785eaba72abu,
 9563|  8.59k|            0xb3f4e093db73a093u, 0x59ed216765690f56u, 0xe0f218b8d25088b8u, 0x306869c13ec3532cu,
 9564|  8.59k|            0x8c974f7383725573u, 0x1e414218c73a13fbu, 0xafbd2350644eeacfu, 0xe5d1929ef90898fau,
 9565|  8.59k|            0xdbac6c247d62a583u, 0xdf45f746b74abf39u, 0x894bc396ce5da772u, 0x6b8bba8c328eb783u,
 9566|  8.59k|            0xab9eb47c81f5114fu, 0x066ea92f3f326564u, 0xd686619ba27255a2u, 0xc80a537b0efefebdu,
 9567|  8.59k|            0x8613fd0145877585u, 0xbd06742ce95f5f36u, 0xa798fc4196e952e7u, 0x2c48113823b73704u,
 9568|  8.59k|            0xd17f3b51fca3a7a0u, 0xf75a15862ca504c5u, 0x82ef85133de648c4u, 0x9a984d73dbe722fbu,
 9569|  8.59k|            0xa3ab66580d5fdaf5u, 0xc13e60d0d2e0ebbau, 0xcc963fee10b7d1b3u, 0x318df905079926a8u,
 9570|  8.59k|            0xffbbcfe994e5c61fu, 0xfdf17746497f7052u, 0x9fd561f1fd0f9bd3u, 0xfeb6ea8bedefa633u,
 9571|  8.59k|            0xc7caba6e7c5382c8u, 0xfe64a52ee96b8fc0u, 0xf9bd690a1b68637bu, 0x3dfdce7aa3c673b0u,
 9572|  8.59k|            0x9c1661a651213e2du, 0x06bea10ca65c084eu, 0xc31bfa0fe5698db8u, 0x486e494fcff30a62u,
 9573|  8.59k|            0xf3e2f893dec3f126u, 0x5a89dba3c3efccfau, 0x986ddb5c6b3a76b7u, 0xf89629465a75e01cu,
 9574|  8.59k|            0xbe89523386091465u, 0xf6bbb397f1135823u, 0xee2ba6c0678b597fu, 0x746aa07ded582e2cu,
 9575|  8.59k|            0x94db483840b717efu, 0xa8c2a44eb4571cdcu, 0xba121a4650e4ddebu, 0x92f34d62616ce413u,
 9576|  8.59k|            0xe896a0d7e51e1566u, 0x77b020baf9c81d17u, 0x915e2486ef32cd60u, 0x0ace1474dc1d122eu,
 9577|  8.59k|            0xb5b5ada8aaff80b8u, 0x0d819992132456bau, 0xe3231912d5bf60e6u, 0x10e1fff697ed6c69u,
 9578|  8.59k|            0x8df5efabc5979c8fu, 0xca8d3ffa1ef463c1u, 0xb1736b96b6fd83b3u, 0xbd308ff8a6b17cb2u,
 9579|  8.59k|            0xddd0467c64bce4a0u, 0xac7cb3f6d05ddbdeu, 0x8aa22c0dbef60ee4u, 0x6bcdf07a423aa96bu,
 9580|  8.59k|            0xad4ab7112eb3929du, 0x86c16c98d2c953c6u, 0xd89d64d57a607744u, 0xe871c7bf077ba8b7u,
 9581|  8.59k|            0x87625f056c7c4a8bu, 0x11471cd764ad4972u, 0xa93af6c6c79b5d2du, 0xd598e40d3dd89bcfu,
 9582|  8.59k|            0xd389b47879823479u, 0x4aff1d108d4ec2c3u, 0x843610cb4bf160cbu, 0xcedf722a585139bau,
 9583|  8.59k|            0xa54394fe1eedb8feu, 0xc2974eb4ee658828u, 0xce947a3da6a9273eu, 0x733d226229feea32u,
 9584|  8.59k|            0x811ccc668829b887u, 0x0806357d5a3f525fu, 0xa163ff802a3426a8u, 0xca07c2dcb0cf26f7u,
 9585|  8.59k|            0xc9bcff6034c13052u, 0xfc89b393dd02f0b5u, 0xfc2c3f3841f17c67u, 0xbbac2078d443ace2u,
 9586|  8.59k|            0x9d9ba7832936edc0u, 0xd54b944b84aa4c0du, 0xc5029163f384a931u, 0x0a9e795e65d4df11u,
 9587|  8.59k|            0xf64335bcf065d37du, 0x4d4617b5ff4a16d5u, 0x99ea0196163fa42eu, 0x504bced1bf8e4e45u,
 9588|  8.59k|            0xc06481fb9bcf8d39u, 0xe45ec2862f71e1d6u, 0xf07da27a82c37088u, 0x5d767327bb4e5a4cu,
 9589|  8.59k|            0x964e858c91ba2655u, 0x3a6a07f8d510f86fu, 0xbbe226efb628afeau, 0x890489f70a55368bu,
 9590|  8.59k|            0xeadab0aba3b2dbe5u, 0x2b45ac74ccea842eu, 0x92c8ae6b464fc96fu, 0x3b0b8bc90012929du,
 9591|  8.59k|            0xb77ada0617e3bbcbu, 0x09ce6ebb40173744u, 0xe55990879ddcaabdu, 0xcc420a6a101d0515u,
 9592|  8.59k|            0x8f57fa54c2a9eab6u, 0x9fa946824a12232du, 0xb32df8e9f3546564u, 0x47939822dc96abf9u,
 9593|  8.59k|            0xdff9772470297ebdu, 0x59787e2b93bc56f7u, 0x8bfbea76c619ef36u, 0x57eb4edb3c55b65au,
 9594|  8.59k|            0xaefae51477a06b03u, 0xede622920b6b23f1u, 0xdab99e59958885c4u, 0xe95fab368e45ecedu,
 9595|  8.59k|            0x88b402f7fd75539bu, 0x11dbcb0218ebb414u, 0xaae103b5fcd2a881u, 0xd652bdc29f26a119u,
 9596|  8.59k|            0xd59944a37c0752a2u, 0x4be76d3346f0495fu, 0x857fcae62d8493a5u, 0x6f70a4400c562ddbu,
 9597|  8.59k|            0xa6dfbd9fb8e5b88eu, 0xcb4ccd500f6bb952u, 0xd097ad07a71f26b2u, 0x7e2000a41346a7a7u,
 9598|  8.59k|            0x825ecc24c873782fu, 0x8ed400668c0c28c8u, 0xa2f67f2dfa90563bu, 0x728900802f0f32fau,
 9599|  8.59k|            0xcbb41ef979346bcau, 0x4f2b40a03ad2ffb9u, 0xfea126b7d78186bcu, 0xe2f610c84987bfa8u,
 9600|  8.59k|            0x9f24b832e6b0f436u, 0x0dd9ca7d2df4d7c9u, 0xc6ede63fa05d3143u, 0x91503d1c79720dbbu,
 9601|  8.59k|            0xf8a95fcf88747d94u, 0x75a44c6397ce912au, 0x9b69dbe1b548ce7cu, 0xc986afbe3ee11abau,
 9602|  8.59k|            0xc24452da229b021bu, 0xfbe85badce996168u, 0xf2d56790ab41c2a2u, 0xfae27299423fb9c3u,
 9603|  8.59k|            0x97c560ba6b0919a5u, 0xdccd879fc967d41au, 0xbdb6b8e905cb600fu, 0x5400e987bbc1c920u,
 9604|  8.59k|            0xed246723473e3813u, 0x290123e9aab23b68u, 0x9436c0760c86e30bu, 0xf9a0b6720aaf6521u,
 9605|  8.59k|            0xb94470938fa89bceu, 0xf808e40e8d5b3e69u, 0xe7958cb87392c2c2u, 0xb60b1d1230b20e04u,
 9606|  8.59k|            0x90bd77f3483bb9b9u, 0xb1c6f22b5e6f48c2u, 0xb4ecd5f01a4aa828u, 0x1e38aeb6360b1af3u,
 9607|  8.59k|            0xe2280b6c20dd5232u, 0x25c6da63c38de1b0u, 0x8d590723948a535fu, 0x579c487e5a38ad0eu,
 9608|  8.59k|            0xb0af48ec79ace837u, 0x2d835a9df0c6d851u, 0xdcdb1b2798182244u, 0xf8e431456cf88e65u,
 9609|  8.59k|            0x8a08f0f8bf0f156bu, 0x1b8e9ecb641b58ffu, 0xac8b2d36eed2dac5u, 0xe272467e3d222f3fu,
 9610|  8.59k|            0xd7adf884aa879177u, 0x5b0ed81dcc6abb0fu, 0x86ccbb52ea94baeau, 0x98e947129fc2b4e9u,
 9611|  8.59k|            0xa87fea27a539e9a5u, 0x3f2398d747b36224u, 0xd29fe4b18e88640eu, 0x8eec7f0d19a03aadu,
 9612|  8.59k|            0x83a3eeeef9153e89u, 0x1953cf68300424acu, 0xa48ceaaab75a8e2bu, 0x5fa8c3423c052dd7u,
 9613|  8.59k|            0xcdb02555653131b6u, 0x3792f412cb06794du, 0x808e17555f3ebf11u, 0xe2bbd88bbee40bd0u,
 9614|  8.59k|            0xa0b19d2ab70e6ed6u, 0x5b6aceaeae9d0ec4u, 0xc8de047564d20a8bu, 0xf245825a5a445275u,
 9615|  8.59k|            0xfb158592be068d2eu, 0xeed6e2f0f0d56712u, 0x9ced737bb6c4183du, 0x55464dd69685606bu,
 9616|  8.59k|            0xc428d05aa4751e4cu, 0xaa97e14c3c26b886u, 0xf53304714d9265dfu, 0xd53dd99f4b3066a8u,
 9617|  8.59k|            0x993fe2c6d07b7fabu, 0xe546a8038efe4029u, 0xbf8fdb78849a5f96u, 0xde98520472bdd033u,
 9618|  8.59k|            0xef73d256a5c0f77cu, 0x963e66858f6d4440u, 0x95a8637627989aadu, 0xdde7001379a44aa8u,
 9619|  8.59k|            0xbb127c53b17ec159u, 0x5560c018580d5d52u, 0xe9d71b689dde71afu, 0xaab8f01e6e10b4a6u,
 9620|  8.59k|            0x9226712162ab070du, 0xcab3961304ca70e8u, 0xb6b00d69bb55c8d1u, 0x3d607b97c5fd0d22u,
 9621|  8.59k|            0xe45c10c42a2b3b05u, 0x8cb89a7db77c506au, 0x8eb98a7a9a5b04e3u, 0x77f3608e92adb242u,
 9622|  8.59k|            0xb267ed1940f1c61cu, 0x55f038b237591ed3u, 0xdf01e85f912e37a3u, 0x6b6c46dec52f6688u,
 9623|  8.59k|            0x8b61313bbabce2c6u, 0x2323ac4b3b3da015u, 0xae397d8aa96c1b77u, 0xabec975e0a0d081au,
 9624|  8.59k|            0xd9c7dced53c72255u, 0x96e7bd358c904a21u, 0x881cea14545c7575u, 0x7e50d64177da2e54u,
 9625|  8.59k|            0xaa242499697392d2u, 0xdde50bd1d5d0b9e9u, 0xd4ad2dbfc3d07787u, 0x955e4ec64b44e864u,
 9626|  8.59k|            0x84ec3c97da624ab4u, 0xbd5af13bef0b113eu, 0xa6274bbdd0fadd61u, 0xecb1ad8aeacdd58eu,
 9627|  8.59k|            0xcfb11ead453994bau, 0x67de18eda5814af2u, 0x81ceb32c4b43fcf4u, 0x80eacf948770ced7u,
 9628|  8.59k|            0xa2425ff75e14fc31u, 0xa1258379a94d028du, 0xcad2f7f5359a3b3eu, 0x096ee45813a04330u,
 9629|  8.59k|            0xfd87b5f28300ca0du, 0x8bca9d6e188853fcu, 0x9e74d1b791e07e48u, 0x775ea264cf55347eu,
 9630|  8.59k|            0xc612062576589ddau, 0x95364afe032a819eu, 0xf79687aed3eec551u, 0x3a83ddbd83f52205u,
 9631|  8.59k|            0x9abe14cd44753b52u, 0xc4926a9672793543u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
 9632|  8.59k|            0xf1c90080baf72cb1u, 0x5324c68b12dd6339u, 0x971da05074da7beeu, 0xd3f6fc16ebca5e04u,
 9633|  8.59k|            0xbce5086492111aeau, 0x88f4bb1ca6bcf585u, 0xec1e4a7db69561a5u, 0x2b31e9e3d06c32e6u,
 9634|  8.59k|            0x9392ee8e921d5d07u, 0x3aff322e62439fd0u, 0xb877aa3236a4b449u, 0x09befeb9fad487c3u,
 9635|  8.59k|            0xe69594bec44de15bu, 0x4c2ebe687989a9b4u, 0x901d7cf73ab0acd9u, 0x0f9d37014bf60a11u,
 9636|  8.59k|            0xb424dc35095cd80fu, 0x538484c19ef38c95u, 0xe12e13424bb40e13u, 0x2865a5f206b06fbau,
 9637|  8.59k|            0x8cbccc096f5088cbu, 0xf93f87b7442e45d4u, 0xafebff0bcb24aafeu, 0xf78f69a51539d749u,
 9638|  8.59k|            0xdbe6fecebdedd5beu, 0xb573440e5a884d1cu, 0x89705f4136b4a597u, 0x31680a88f8953031u,
 9639|  8.59k|            0xabcc77118461cefcu, 0xfdc20d2b36ba7c3eu, 0xd6bf94d5e57a42bcu, 0x3d32907604691b4du,
 9640|  8.59k|            0x8637bd05af6c69b5u, 0xa63f9a49c2c1b110u, 0xa7c5ac471b478423u, 0x0fcf80dc33721d54u,
 9641|  8.59k|            0xd1b71758e219652bu, 0xd3c36113404ea4a9u, 0x83126e978d4fdf3bu, 0x645a1cac083126eau,
 9642|  8.59k|            0xa3d70a3d70a3d70au, 0x3d70a3d70a3d70a4u, 0xccccccccccccccccu, 0xcccccccccccccccdu,
 9643|  8.59k|            0x8000000000000000u, 0x0000000000000000u, 0xa000000000000000u, 0x0000000000000000u,
 9644|  8.59k|            0xc800000000000000u, 0x0000000000000000u, 0xfa00000000000000u, 0x0000000000000000u,
 9645|  8.59k|            0x9c40000000000000u, 0x0000000000000000u, 0xc350000000000000u, 0x0000000000000000u,
 9646|  8.59k|            0xf424000000000000u, 0x0000000000000000u, 0x9896800000000000u, 0x0000000000000000u,
 9647|  8.59k|            0xbebc200000000000u, 0x0000000000000000u, 0xee6b280000000000u, 0x0000000000000000u,
 9648|  8.59k|            0x9502f90000000000u, 0x0000000000000000u, 0xba43b74000000000u, 0x0000000000000000u,
 9649|  8.59k|            0xe8d4a51000000000u, 0x0000000000000000u, 0x9184e72a00000000u, 0x0000000000000000u,
 9650|  8.59k|            0xb5e620f480000000u, 0x0000000000000000u, 0xe35fa931a0000000u, 0x0000000000000000u,
 9651|  8.59k|            0x8e1bc9bf04000000u, 0x0000000000000000u, 0xb1a2bc2ec5000000u, 0x0000000000000000u,
 9652|  8.59k|            0xde0b6b3a76400000u, 0x0000000000000000u, 0x8ac7230489e80000u, 0x0000000000000000u,
 9653|  8.59k|            0xad78ebc5ac620000u, 0x0000000000000000u, 0xd8d726b7177a8000u, 0x0000000000000000u,
 9654|  8.59k|            0x878678326eac9000u, 0x0000000000000000u, 0xa968163f0a57b400u, 0x0000000000000000u,
 9655|  8.59k|            0xd3c21bcecceda100u, 0x0000000000000000u, 0x84595161401484a0u, 0x0000000000000000u,
 9656|  8.59k|            0xa56fa5b99019a5c8u, 0x0000000000000000u, 0xcecb8f27f4200f3au, 0x0000000000000000u,
 9657|  8.59k|            0x813f3978f8940984u, 0x4000000000000000u, 0xa18f07d736b90be5u, 0x5000000000000000u,
 9658|  8.59k|            0xc9f2c9cd04674edeu, 0xa400000000000000u, 0xfc6f7c4045812296u, 0x4d00000000000000u,
 9659|  8.59k|            0x9dc5ada82b70b59du, 0xf020000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u,
 9660|  8.59k|            0xf684df56c3e01bc6u, 0xc732000000000000u, 0x9a130b963a6c115cu, 0x3c7f400000000000u,
 9661|  8.59k|            0xc097ce7bc90715b3u, 0x4b9f100000000000u, 0xf0bdc21abb48db20u, 0x1e86d40000000000u,
 9662|  8.59k|            0x96769950b50d88f4u, 0x1314448000000000u, 0xbc143fa4e250eb31u, 0x17d955a000000000u,
 9663|  8.59k|            0xeb194f8e1ae525fdu, 0x5dcfab0800000000u, 0x92efd1b8d0cf37beu, 0x5aa1cae500000000u,
 9664|  8.59k|            0xb7abc627050305adu, 0xf14a3d9e40000000u, 0xe596b7b0c643c719u, 0x6d9ccd05d0000000u,
 9665|  8.59k|            0x8f7e32ce7bea5c6fu, 0xe4820023a2000000u, 0xb35dbf821ae4f38bu, 0xdda2802c8a800000u,
 9666|  8.59k|            0xe0352f62a19e306eu, 0xd50b2037ad200000u, 0x8c213d9da502de45u, 0x4526f422cc340000u,
 9667|  8.59k|            0xaf298d050e4395d6u, 0x9670b12b7f410000u, 0xdaf3f04651d47b4cu, 0x3c0cdd765f114000u,
 9668|  8.59k|            0x88d8762bf324cd0fu, 0xa5880a69fb6ac800u, 0xab0e93b6efee0053u, 0x8eea0d047a457a00u,
 9669|  8.59k|            0xd5d238a4abe98068u, 0x72a4904598d6d880u, 0x85a36366eb71f041u, 0x47a6da2b7f864750u,
 9670|  8.59k|            0xa70c3c40a64e6c51u, 0x999090b65f67d924u, 0xd0cf4b50cfe20765u, 0xfff4b4e3f741cf6du,
 9671|  8.59k|            0x82818f1281ed449fu, 0xbff8f10e7a8921a4u, 0xa321f2d7226895c7u, 0xaff72d52192b6a0du,
 9672|  8.59k|            0xcbea6f8ceb02bb39u, 0x9bf4f8a69f764490u, 0xfee50b7025c36a08u, 0x02f236d04753d5b4u,
 9673|  8.59k|            0x9f4f2726179a2245u, 0x01d762422c946590u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef5u,
 9674|  8.59k|            0xf8ebad2b84e0d58bu, 0xd2e0898765a7deb2u, 0x9b934c3b330c8577u, 0x63cc55f49f88eb2fu,
 9675|  8.59k|            0xc2781f49ffcfa6d5u, 0x3cbf6b71c76b25fbu, 0xf316271c7fc3908au, 0x8bef464e3945ef7au,
 9676|  8.59k|            0x97edd871cfda3a56u, 0x97758bf0e3cbb5acu, 0xbde94e8e43d0c8ecu, 0x3d52eeed1cbea317u,
 9677|  8.59k|            0xed63a231d4c4fb27u, 0x4ca7aaa863ee4bddu, 0x945e455f24fb1cf8u, 0x8fe8caa93e74ef6au,
 9678|  8.59k|            0xb975d6b6ee39e436u, 0xb3e2fd538e122b44u, 0xe7d34c64a9c85d44u, 0x60dbbca87196b616u,
 9679|  8.59k|            0x90e40fbeea1d3a4au, 0xbc8955e946fe31cdu, 0xb51d13aea4a488ddu, 0x6babab6398bdbe41u,
 9680|  8.59k|            0xe264589a4dcdab14u, 0xc696963c7eed2dd1u, 0x8d7eb76070a08aecu, 0xfc1e1de5cf543ca2u,
 9681|  8.59k|            0xb0de65388cc8ada8u, 0x3b25a55f43294bcbu, 0xdd15fe86affad912u, 0x49ef0eb713f39ebeu,
 9682|  8.59k|            0x8a2dbf142dfcc7abu, 0x6e3569326c784337u, 0xacb92ed9397bf996u, 0x49c2c37f07965404u,
 9683|  8.59k|            0xd7e77a8f87daf7fbu, 0xdc33745ec97be906u, 0x86f0ac99b4e8dafdu, 0x69a028bb3ded71a3u,
 9684|  8.59k|            0xa8acd7c0222311bcu, 0xc40832ea0d68ce0cu, 0xd2d80db02aabd62bu, 0xf50a3fa490c30190u,
 9685|  8.59k|            0x83c7088e1aab65dbu, 0x792667c6da79e0fau, 0xa4b8cab1a1563f52u, 0x577001b891185938u,
 9686|  8.59k|            0xcde6fd5e09abcf26u, 0xed4c0226b55e6f86u, 0x80b05e5ac60b6178u, 0x544f8158315b05b4u,
 9687|  8.59k|            0xa0dc75f1778e39d6u, 0x696361ae3db1c721u, 0xc913936dd571c84cu, 0x03bc3a19cd1e38e9u,
 9688|  8.59k|            0xfb5878494ace3a5fu, 0x04ab48a04065c723u, 0x9d174b2dcec0e47bu, 0x62eb0d64283f9c76u,
 9689|  8.59k|            0xc45d1df942711d9au, 0x3ba5d0bd324f8394u, 0xf5746577930d6500u, 0xca8f44ec7ee36479u,
 9690|  8.59k|            0x9968bf6abbe85f20u, 0x7e998b13cf4e1ecbu, 0xbfc2ef456ae276e8u, 0x9e3fedd8c321a67eu,
 9691|  8.59k|            0xefb3ab16c59b14a2u, 0xc5cfe94ef3ea101eu, 0x95d04aee3b80ece5u, 0xbba1f1d158724a12u,
 9692|  8.59k|            0xbb445da9ca61281fu, 0x2a8a6e45ae8edc97u, 0xea1575143cf97226u, 0xf52d09d71a3293bdu,
 9693|  8.59k|            0x924d692ca61be758u, 0x593c2626705f9c56u, 0xb6e0c377cfa2e12eu, 0x6f8b2fb00c77836cu,
 9694|  8.59k|            0xe498f455c38b997au, 0x0b6dfb9c0f956447u, 0x8edf98b59a373fecu, 0x4724bd4189bd5eacu,
 9695|  8.59k|            0xb2977ee300c50fe7u, 0x58edec91ec2cb657u, 0xdf3d5e9bc0f653e1u, 0x2f2967b66737e3edu,
 9696|  8.59k|            0x8b865b215899f46cu, 0xbd79e0d20082ee74u, 0xae67f1e9aec07187u, 0xecd8590680a3aa11u,
 9697|  8.59k|            0xda01ee641a708de9u, 0xe80e6f4820cc9495u, 0x884134fe908658b2u, 0x3109058d147fdcddu,
 9698|  8.59k|            0xaa51823e34a7eedeu, 0xbd4b46f0599fd415u, 0xd4e5e2cdc1d1ea96u, 0x6c9e18ac7007c91au,
 9699|  8.59k|            0x850fadc09923329eu, 0x03e2cf6bc604ddb0u, 0xa6539930bf6bff45u, 0x84db8346b786151cu,
 9700|  8.59k|            0xcfe87f7cef46ff16u, 0xe612641865679a63u, 0x81f14fae158c5f6eu, 0x4fcb7e8f3f60c07eu,
 9701|  8.59k|            0xa26da3999aef7749u, 0xe3be5e330f38f09du, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc5u,
 9702|  8.59k|            0xfdcb4fa002162a63u, 0x73d9732fc7c8f7f6u, 0x9e9f11c4014dda7eu, 0x2867e7fddcdd9afau,
 9703|  8.59k|            0xc646d63501a1511du, 0xb281e1fd541501b8u, 0xf7d88bc24209a565u, 0x1f225a7ca91a4226u,
 9704|  8.59k|            0x9ae757596946075fu, 0x3375788de9b06958u, 0xc1a12d2fc3978937u, 0x0052d6b1641c83aeu,
 9705|  8.59k|            0xf209787bb47d6b84u, 0xc0678c5dbd23a49au, 0x9745eb4d50ce6332u, 0xf840b7ba963646e0u,
 9706|  8.59k|            0xbd176620a501fbffu, 0xb650e5a93bc3d898u, 0xec5d3fa8ce427affu, 0xa3e51f138ab4cebeu,
 9707|  8.59k|            0x93ba47c980e98cdfu, 0xc66f336c36b10137u, 0xb8a8d9bbe123f017u, 0xb80b0047445d4184u,
 9708|  8.59k|            0xe6d3102ad96cec1du, 0xa60dc059157491e5u, 0x9043ea1ac7e41392u, 0x87c89837ad68db2fu,
 9709|  8.59k|            0xb454e4a179dd1877u, 0x29babe4598c311fbu, 0xe16a1dc9d8545e94u, 0xf4296dd6fef3d67au,
 9710|  8.59k|            0x8ce2529e2734bb1du, 0x1899e4a65f58660cu, 0xb01ae745b101e9e4u, 0x5ec05dcff72e7f8fu,
 9711|  8.59k|            0xdc21a1171d42645du, 0x76707543f4fa1f73u, 0x899504ae72497ebau, 0x6a06494a791c53a8u,
 9712|  8.59k|            0xabfa45da0edbde69u, 0x0487db9d17636892u, 0xd6f8d7509292d603u, 0x45a9d2845d3c42b6u,
 9713|  8.59k|            0x865b86925b9bc5c2u, 0x0b8a2392ba45a9b2u, 0xa7f26836f282b732u, 0x8e6cac7768d7141eu,
 9714|  8.59k|            0xd1ef0244af2364ffu, 0x3207d795430cd926u, 0x8335616aed761f1fu, 0x7f44e6bd49e807b8u,
 9715|  8.59k|            0xa402b9c5a8d3a6e7u, 0x5f16206c9c6209a6u, 0xcd036837130890a1u, 0x36dba887c37a8c0fu,
 9716|  8.59k|            0x802221226be55a64u, 0xc2494954da2c9789u, 0xa02aa96b06deb0fdu, 0xf2db9baa10b7bd6cu,
 9717|  8.59k|            0xc83553c5c8965d3du, 0x6f92829494e5acc7u, 0xfa42a8b73abbf48cu, 0xcb772339ba1f17f9u,
 9718|  8.59k|            0x9c69a97284b578d7u, 0xff2a760414536efbu, 0xc38413cf25e2d70du, 0xfef5138519684abau,
 9719|  8.59k|            0xf46518c2ef5b8cd1u, 0x7eb258665fc25d69u, 0x98bf2f79d5993802u, 0xef2f773ffbd97a61u,
 9720|  8.59k|            0xbeeefb584aff8603u, 0xaafb550ffacfd8fau, 0xeeaaba2e5dbf6784u, 0x95ba2a53f983cf38u,
 9721|  8.59k|            0x952ab45cfa97a0b2u, 0xdd945a747bf26183u, 0xba756174393d88dfu, 0x94f971119aeef9e4u,
 9722|  8.59k|            0xe912b9d1478ceb17u, 0x7a37cd5601aab85du, 0x91abb422ccb812eeu, 0xac62e055c10ab33au,
 9723|  8.59k|            0xb616a12b7fe617aau, 0x577b986b314d6009u, 0xe39c49765fdf9d94u, 0xed5a7e85fda0b80bu,
 9724|  8.59k|            0x8e41ade9fbebc27du, 0x14588f13be847307u, 0xb1d219647ae6b31cu, 0x596eb2d8ae258fc8u,
 9725|  8.59k|            0xde469fbd99a05fe3u, 0x6fca5f8ed9aef3bbu, 0x8aec23d680043beeu, 0x25de7bb9480d5854u,
 9726|  8.59k|            0xada72ccc20054ae9u, 0xaf561aa79a10ae6au, 0xd910f7ff28069da4u, 0x1b2ba1518094da04u,
 9727|  8.59k|            0x87aa9aff79042286u, 0x90fb44d2f05d0842u, 0xa99541bf57452b28u, 0x353a1607ac744a53u,
 9728|  8.59k|            0xd3fa922f2d1675f2u, 0x42889b8997915ce8u, 0x847c9b5d7c2e09b7u, 0x69956135febada11u,
 9729|  8.59k|            0xa59bc234db398c25u, 0x43fab9837e699095u, 0xcf02b2c21207ef2eu, 0x94f967e45e03f4bbu,
 9730|  8.59k|            0x8161afb94b44f57du, 0x1d1be0eebac278f5u, 0xa1ba1ba79e1632dcu, 0x6462d92a69731732u,
 9731|  8.59k|            0xca28a291859bbf93u, 0x7d7b8f7503cfdcfeu, 0xfcb2cb35e702af78u, 0x5cda735244c3d43eu,
 9732|  8.59k|            0x9defbf01b061adabu, 0x3a0888136afa64a7u, 0xc56baec21c7a1916u, 0x088aaa1845b8fdd0u,
 9733|  8.59k|            0xf6c69a72a3989f5bu, 0x8aad549e57273d45u, 0x9a3c2087a63f6399u, 0x36ac54e2f678864bu,
 9734|  8.59k|            0xc0cb28a98fcf3c7fu, 0x84576a1bb416a7ddu, 0xf0fdf2d3f3c30b9fu, 0x656d44a2a11c51d5u,
 9735|  8.59k|            0x969eb7c47859e743u, 0x9f644ae5a4b1b325u, 0xbc4665b596706114u, 0x873d5d9f0dde1feeu,
 9736|  8.59k|            0xeb57ff22fc0c7959u, 0xa90cb506d155a7eau, 0x9316ff75dd87cbd8u, 0x09a7f12442d588f2u,
 9737|  8.59k|            0xb7dcbf5354e9beceu, 0x0c11ed6d538aeb2fu, 0xe5d3ef282a242e81u, 0x8f1668c8a86da5fau,
 9738|  8.59k|            0x8fa475791a569d10u, 0xf96e017d694487bcu, 0xb38d92d760ec4455u, 0x37c981dcc395a9acu,
 9739|  8.59k|            0xe070f78d3927556au, 0x85bbe253f47b1417u, 0x8c469ab843b89562u, 0x93956d7478ccec8eu,
 9740|  8.59k|            0xaf58416654a6babbu, 0x387ac8d1970027b2u, 0xdb2e51bfe9d0696au, 0x06997b05fcc0319eu,
 9741|  8.59k|            0x88fcf317f22241e2u, 0x441fece3bdf81f03u, 0xab3c2fddeeaad25au, 0xd527e81cad7626c3u,
 9742|  8.59k|            0xd60b3bd56a5586f1u, 0x8a71e223d8d3b074u, 0x85c7056562757456u, 0xf6872d5667844e49u,
 9743|  8.59k|            0xa738c6bebb12d16cu, 0xb428f8ac016561dbu, 0xd106f86e69d785c7u, 0xe13336d701beba52u,
 9744|  8.59k|            0x82a45b450226b39cu, 0xecc0024661173473u, 0xa34d721642b06084u, 0x27f002d7f95d0190u,
 9745|  8.59k|            0xcc20ce9bd35c78a5u, 0x31ec038df7b441f4u, 0xff290242c83396ceu, 0x7e67047175a15271u,
 9746|  8.59k|            0x9f79a169bd203e41u, 0x0f0062c6e984d386u, 0xc75809c42c684dd1u, 0x52c07b78a3e60868u,
 9747|  8.59k|            0xf92e0c3537826145u, 0xa7709a56ccdf8a82u, 0x9bbcc7a142b17ccbu, 0x88a66076400bb691u,
 9748|  8.59k|            0xc2abf989935ddbfeu, 0x6acff893d00ea435u, 0xf356f7ebf83552feu, 0x0583f6b8c4124d43u,
 9749|  8.59k|            0x98165af37b2153deu, 0xc3727a337a8b704au, 0xbe1bf1b059e9a8d6u, 0x744f18c0592e4c5cu,
 9750|  8.59k|            0xeda2ee1c7064130cu, 0x1162def06f79df73u, 0x9485d4d1c63e8be7u, 0x8addcb5645ac2ba8u,
 9751|  8.59k|            0xb9a74a0637ce2ee1u, 0x6d953e2bd7173692u, 0xe8111c87c5c1ba99u, 0xc8fa8db6ccdd0437u,
 9752|  8.59k|            0x910ab1d4db9914a0u, 0x1d9c9892400a22a2u, 0xb54d5e4a127f59c8u, 0x2503beb6d00cab4bu,
 9753|  8.59k|            0xe2a0b5dc971f303au, 0x2e44ae64840fd61du, 0x8da471a9de737e24u, 0x5ceaecfed289e5d2u,
 9754|  8.59k|            0xb10d8e1456105dadu, 0x7425a83e872c5f47u, 0xdd50f1996b947518u, 0xd12f124e28f77719u,
 9755|  8.59k|            0x8a5296ffe33cc92fu, 0x82bd6b70d99aaa6fu, 0xace73cbfdc0bfb7bu, 0x636cc64d1001550bu,
 9756|  8.59k|            0xd8210befd30efa5au, 0x3c47f7e05401aa4eu, 0x8714a775e3e95c78u, 0x65acfaec34810a71u,
 9757|  8.59k|            0xa8d9d1535ce3b396u, 0x7f1839a741a14d0du, 0xd31045a8341ca07cu, 0x1ede48111209a050u,
 9758|  8.59k|            0x83ea2b892091e44du, 0x934aed0aab460432u, 0xa4e4b66b68b65d60u, 0xf81da84d5617853fu,
 9759|  8.59k|            0xce1de40642e3f4b9u, 0x36251260ab9d668eu, 0x80d2ae83e9ce78f3u, 0xc1d72b7c6b426019u,
 9760|  8.59k|            0xa1075a24e4421730u, 0xb24cf65b8612f81fu, 0xc94930ae1d529cfcu, 0xdee033f26797b627u,
 9761|  8.59k|            0xfb9b7cd9a4a7443cu, 0x169840ef017da3b1u, 0x9d412e0806e88aa5u, 0x8e1f289560ee864eu,
 9762|  8.59k|            0xc491798a08a2ad4eu, 0xf1a6f2bab92a27e2u, 0xf5b5d7ec8acb58a2u, 0xae10af696774b1dbu,
 9763|  8.59k|            0x9991a6f3d6bf1765u, 0xacca6da1e0a8ef29u, 0xbff610b0cc6edd3fu, 0x17fd090a58d32af3u,
 9764|  8.59k|            0xeff394dcff8a948eu, 0xddfc4b4cef07f5b0u, 0x95f83d0a1fb69cd9u, 0x4abdaf101564f98eu,
 9765|  8.59k|            0xbb764c4ca7a4440fu, 0x9d6d1ad41abe37f1u, 0xea53df5fd18d5513u, 0x84c86189216dc5edu,
 9766|  8.59k|            0x92746b9be2f8552cu, 0x32fd3cf5b4e49bb4u, 0xb7118682dbb66a77u, 0x3fbc8c33221dc2a1u,
 9767|  8.59k|            0xe4d5e82392a40515u, 0x0fabaf3feaa5334au, 0x8f05b1163ba6832du, 0x29cb4d87f2a7400eu,
 9768|  8.59k|            0xb2c71d5bca9023f8u, 0x743e20e9ef511012u, 0xdf78e4b2bd342cf6u, 0x914da9246b255416u,
 9769|  8.59k|            0x8bab8eefb6409c1au, 0x1ad089b6c2f7548eu, 0xae9672aba3d0c320u, 0xa184ac2473b529b1u,
 9770|  8.59k|            0xda3c0f568cc4f3e8u, 0xc9e5d72d90a2741eu, 0x8865899617fb1871u, 0x7e2fa67c7a658892u,
 9771|  8.59k|            0xaa7eebfb9df9de8du, 0xddbb901b98feeab7u, 0xd51ea6fa85785631u, 0x552a74227f3ea565u,
 9772|  8.59k|            0x8533285c936b35deu, 0xd53a88958f87275fu, 0xa67ff273b8460356u, 0x8a892abaf368f137u,
 9773|  8.59k|            0xd01fef10a657842cu, 0x2d2b7569b0432d85u, 0x8213f56a67f6b29bu, 0x9c3b29620e29fc73u,
 9774|  8.59k|            0xa298f2c501f45f42u, 0x8349f3ba91b47b8fu, 0xcb3f2f7642717713u, 0x241c70a936219a73u,
 9775|  8.59k|            0xfe0efb53d30dd4d7u, 0xed238cd383aa0110u, 0x9ec95d1463e8a506u, 0xf4363804324a40aau,
 9776|  8.59k|            0xc67bb4597ce2ce48u, 0xb143c6053edcd0d5u, 0xf81aa16fdc1b81dau, 0xdd94b7868e94050au,
 9777|  8.59k|            0x9b10a4e5e9913128u, 0xca7cf2b4191c8326u, 0xc1d4ce1f63f57d72u, 0xfd1c2f611f63a3f0u,
 9778|  8.59k|            0xf24a01a73cf2dccfu, 0xbc633b39673c8cecu, 0x976e41088617ca01u, 0xd5be0503e085d813u,
 9779|  8.59k|            0xbd49d14aa79dbc82u, 0x4b2d8644d8a74e18u, 0xec9c459d51852ba2u, 0xddf8e7d60ed1219eu,
 9780|  8.59k|            0x93e1ab8252f33b45u, 0xcabb90e5c942b503u, 0xb8da1662e7b00a17u, 0x3d6a751f3b936243u,
 9781|  8.59k|            0xe7109bfba19c0c9du, 0x0cc512670a783ad4u, 0x906a617d450187e2u, 0x27fb2b80668b24c5u,
 9782|  8.59k|            0xb484f9dc9641e9dau, 0xb1f9f660802dedf6u, 0xe1a63853bbd26451u, 0x5e7873f8a0396973u,
 9783|  8.59k|            0x8d07e33455637eb2u, 0xdb0b487b6423e1e8u, 0xb049dc016abc5e5fu, 0x91ce1a9a3d2cda62u,
 9784|  8.59k|            0xdc5c5301c56b75f7u, 0x7641a140cc7810fbu, 0x89b9b3e11b6329bau, 0xa9e904c87fcb0a9du,
 9785|  8.59k|            0xac2820d9623bf429u, 0x546345fa9fbdcd44u, 0xd732290fbacaf133u, 0xa97c177947ad4095u,
 9786|  8.59k|            0x867f59a9d4bed6c0u, 0x49ed8eabcccc485du, 0xa81f301449ee8c70u, 0x5c68f256bfff5a74u,
 9787|  8.59k|            0xd226fc195c6a2f8cu, 0x73832eec6fff3111u, 0x83585d8fd9c25db7u, 0xc831fd53c5ff7eabu,
 9788|  8.59k|            0xa42e74f3d032f525u, 0xba3e7ca8b77f5e55u, 0xcd3a1230c43fb26fu, 0x28ce1bd2e55f35ebu,
 9789|  8.59k|            0x80444b5e7aa7cf85u, 0x7980d163cf5b81b3u, 0xa0555e361951c366u, 0xd7e105bcc332621fu,
 9790|  8.59k|            0xc86ab5c39fa63440u, 0x8dd9472bf3fefaa7u, 0xfa856334878fc150u, 0xb14f98f6f0feb951u,
 9791|  8.59k|            0x9c935e00d4b9d8d2u, 0x6ed1bf9a569f33d3u, 0xc3b8358109e84f07u, 0x0a862f80ec4700c8u,
 9792|  8.59k|            0xf4a642e14c6262c8u, 0xcd27bb612758c0fau, 0x98e7e9cccfbd7dbdu, 0x8038d51cb897789cu,
 9793|  8.59k|            0xbf21e44003acdd2cu, 0xe0470a63e6bd56c3u, 0xeeea5d5004981478u, 0x1858ccfce06cac74u,
 9794|  8.59k|            0x95527a5202df0ccbu, 0x0f37801e0c43ebc8u, 0xbaa718e68396cffdu, 0xd30560258f54e6bau,
 9795|  8.59k|            0xe950df20247c83fdu, 0x47c6b82ef32a2069u, 0x91d28b7416cdd27eu, 0x4cdc331d57fa5441u,
 9796|  8.59k|            0xb6472e511c81471du, 0xe0133fe4adf8e952u, 0xe3d8f9e563a198e5u, 0x58180fddd97723a6u,
 9797|  8.59k|            0x8e679c2f5e44ff8fu, 0x570f09eaa7ea7648u,
 9798|  8.59k|        }
 9799|  8.59k|    };
 9800|  8.59k|    return table;
 9801|  8.59k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13umul192_hi128Emmm:
26437|  7.63k|{
26438|  7.63k|    const uint128_parts p = full_multiplication(x_hi, y);
26439|  7.63k|    uint128_parts r{};
26440|  7.63k|    r.low = p.low + full_multiplication(x_lo, y).high;
26441|  7.63k|    r.high = p.high + (r.low < p.low ? 1u : 0u);
  ------------------
  |  Branch (26441:24): [True: 162, False: 7.47k]
  ------------------
26442|  7.63k|    return r;
26443|  7.63k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij16umul128_add_hi64Emmm:
26447|  8.42k|{
26448|  8.42k|    const uint128_parts p = full_multiplication(x, y);
26449|  8.42k|    return p.high + (p.low + c < p.low ? 1u : 0u);
  ------------------
  |  Branch (26449:22): [True: 4.58k, False: 3.84k]
  ------------------
26450|  8.42k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalE:
27689|  7.63k|{
27690|  7.63k|    const std::uint64_t sig = d.integral;
27691|  7.63k|    if (JSON_HEDLEY_UNLIKELY(sig < 100000000000000u || sig >= 10000000000000000u))
  ------------------
  |  | 1667|  13.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 1.58k, False: 6.05k]
  |  |  |  Branch (1667:94): [True: 1.58k, False: 6.05k]
  |  |  |  Branch (1667:94): [True: 0, False: 6.05k]
  |  |  ------------------
  ------------------
27692|  1.58k|    {
27693|       |        // (subnormals)
27694|  1.58k|        return d.has_digit ? write_decimal(first, (sig * 10) + d.digit, d.exponent) : write_decimal(first, sig, d.exponent + 1);
  ------------------
  |  Branch (27694:16): [True: 912, False: 672]
  ------------------
27695|  1.58k|    }
27696|  6.05k|    const bool sixteen = sig >= 1000000000000000u; // (else 15 digits)
27697|  6.05k|    const int last = d.has_digit ? d.digit : 0;
  ------------------
  |  Branch (27697:22): [True: 3.47k, False: 2.58k]
  ------------------
27698|  6.05k|    const std::uint64_t upper = sig / 100000000u;
27699|  6.05k|#if JSON_DTOA_SSE2
27700|       |    // NOLINTBEGIN(portability-simd-intrinsics)
27701|       |    // the two halves in the 64-bit lanes, each as abcd * 2^32 + efgh, then as
27702|       |    // bytes (as eight_digit_bytes(), one lane each)
27703|  6.05k|    const __m128i x = _mm_set_epi64x(static_cast<long long>(sig - (upper * 100000000u)), static_cast<long long>(upper)); // NOLINT(runtime/int)
27704|  6.05k|    const __m128i abcd = _mm_srli_epi64(_mm_mul_epu32(x, _mm_set1_epi64x(109951163)), 40); // 2^40 / 10000 + 1
27705|  6.05k|    const __m128i abcd_efgh = _mm_add_epi64(x, _mm_mul_epu32(abcd, _mm_set1_epi64x(4294957296))); // 2^32 - 10000
27706|       |    // 32-bit lanes in the order of the text: abcd, efgh of both halves
27707|  6.05k|    const __m128i fours = _mm_shuffle_epi32(abcd_efgh, _MM_SHUFFLE(2, 3, 0, 1));
27708|  6.05k|    const __m128i ab = _mm_srli_epi16(_mm_mulhi_epu16(fours, _mm_set1_epi32(5243)), 3);
27709|  6.05k|    const __m128i ab_cd = _mm_or_si128(_mm_slli_epi32(_mm_sub_epi16(fours, _mm_mullo_epi16(ab, _mm_set1_epi32(100))), 16), ab);
27710|       |    // 16-bit lanes ab (< 100) -> bytes a, b: 256 * ab - 2559 * (ab / 10)
27711|  6.05k|    const __m128i bytes = _mm_sub_epi16(_mm_slli_epi16(ab_cd, 8), _mm_mullo_epi16(_mm_set1_epi16(2559), _mm_mulhi_epu16(ab_cd, _mm_set1_epi16(6554))));
27712|       |    // the last digit that is not 0 (sig is not 0)
27713|  6.05k|    const auto nonzero = static_cast<std::uint64_t>(_mm_movemask_epi8(_mm_cmpgt_epi8(bytes, _mm_setzero_si128())));
27714|  6.05k|    const int digits = 63 - count_leading_zeros(nonzero) + (sixteen ? 1 : 0); // without trailing zeros
  ------------------
  |  Branch (27714:61): [True: 3.93k, False: 2.11k]
  ------------------
27715|  6.05k|    const __m128i chars = _mm_add_epi8(bytes, _mm_set1_epi8('0'));
27716|       |    // the 16 characters from the first digit
27717|  6.05k|    const __m128i s = sixteen ? chars : _mm_or_si128(_mm_srli_si128(chars, 1), _mm_slli_si128(_mm_cvtsi32_si128('0' + last), 15));
  ------------------
  |  Branch (27717:23): [True: 3.93k, False: 2.11k]
  ------------------
27718|  6.05k|    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
  ------------------
  |  Branch (27718:40): [True: 3.93k, False: 2.11k]
  ------------------
27719|  6.05k|    const auto store_16 = [&s](char* p) noexcept
27720|  6.05k|    {
27721|  6.05k|        std::memcpy(p, &s, 16);
27722|  6.05k|    };
27723|  6.05k|    const char first_digit = static_cast<char>(_mm_cvtsi128_si32(s));
27724|       |    // NOLINTEND(portability-simd-intrinsics)
27725|       |#elif JSON_DTOA_NEON
27726|       |    // as with SSE2: the halves in 32-bit lanes, then abcd, efgh of both
27727|       |    const uint32x2_t halves = vcreate_u32(upper | ((sig - (upper * 100000000u)) << 32u));
27728|       |    const uint32x2_t abcd = vmovn_u64(vshrq_n_u64(vmull_n_u32(halves, static_cast<std::uint32_t>(((std::uint64_t{1} << 40u) / 10000u) + 1u)), 40));
27729|       |    const uint32x2_t efgh = vmls_n_u32(halves, abcd, 10000u);
27730|       |    const uint32x4_t fours = vcombine_u32(vzip1_u32(abcd, efgh), vzip2_u32(abcd, efgh));
27731|       |    const uint32x4_t ab = vshrq_n_u32(vmulq_n_u32(fours, 5243u), 19);
27732|       |    const uint16x8_t ab_cd = vreinterpretq_u16_u32(vorrq_u32(ab, vshlq_n_u32(vmlsq_n_u32(fours, ab, 100u), 16)));
27733|       |    const uint16x8_t tens = vshrq_n_u16(vmulq_n_u16(ab_cd, 103u), 10);
27734|       |    const uint8x16_t bytes = vreinterpretq_u8_u16(vorrq_u16(tens, vshlq_n_u16(vmlsq_n_u16(ab_cd, tens, 10u), 8)));
27735|       |    // the last digit that is not 0 (sig is not 0): a nibble per byte
27736|       |    const std::uint64_t nonzero = vget_lane_u64(vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(vtstq_u8(bytes, bytes)), 4)), 0);
27737|       |    const int digits = ((63 - count_leading_zeros(nonzero)) / 4) + (sixteen ? 1 : 0); // without trailing zeros
27738|       |    const uint8x16_t chars = vaddq_u8(bytes, vdupq_n_u8('0'));
27739|       |    // the 16 characters from the first digit
27740|       |    const uint8x16_t s = sixteen ? chars : vextq_u8(chars, vdupq_n_u8(static_cast<std::uint8_t>('0' + last)), 1);
27741|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
27742|       |    const auto store_16 = [&s](char* p) noexcept
27743|       |    {
27744|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(p), s); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
27745|       |    };
27746|       |    const auto first_digit = static_cast<char>(vgetq_lane_u8(s, 0));
27747|       |#else
27748|       |    const std::uint64_t hi = eight_digit_bytes(upper);
27749|       |    const std::uint64_t lo = eight_digit_bytes(sig - (upper * 100000000u));
27750|       |    // trailing zero digits: zero bytes (sig is not 0)
27751|       |    const int zeros = lo != 0 ? count_trailing_zeros(lo) / 8 : 8 + (count_trailing_zeros(hi) / 8);
27752|       |    const int digits = 15 - zeros + (sixteen ? 1 : 0); // without trailing zeros
27753|       |    // the 16 characters from the first digit
27754|       |    const std::uint64_t s_hi = (sixteen ? hi : (hi << 8u) | (lo >> 56u)) + 0x3030303030303030u;
27755|       |    const std::uint64_t s_lo = (sixteen ? lo : (lo << 8u) | static_cast<std::uint64_t>(last)) + 0x3030303030303030u;
27756|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
27757|       |    const auto store_16 = [s_hi, s_lo](char* p) noexcept
27758|       |    {
27759|       |        store_msb_first(p, s_hi);
27760|       |        store_msb_first(p + 8, s_lo);
27761|       |    };
27762|       |    const auto first_digit = static_cast<char>(s_hi >> 56u);
27763|       |#endif
27764|  6.05k|    const int len = d.has_digit ? 16 + (sixteen ? 1 : 0) : digits; // significant digits
  ------------------
  |  Branch (27764:21): [True: 3.47k, False: 2.58k]
  |  Branch (27764:41): [True: 1.94k, False: 1.53k]
  ------------------
27765|  6.05k|    const int n = 16 + (sixteen ? 1 : 0) + d.exponent;           // digits before the point
  ------------------
  |  Branch (27765:25): [True: 3.93k, False: 2.11k]
  ------------------
27766|       |
27767|  6.05k|    if (JSON_HEDLEY_LIKELY(n >= 1 && n <= 15))
  ------------------
  |  | 1666|  8.43k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.02k, False: 5.03k]
  |  |  |  Branch (1666:94): [True: 2.37k, False: 3.67k]
  |  |  |  Branch (1666:94): [True: 1.02k, False: 1.35k]
  |  |  ------------------
  ------------------
27768|  1.02k|    {
27769|       |        // "dig.its" and "digits[000].0": the digits after the point move by
27770|       |        // one byte ('0's follow the digits)
27771|  1.02k|#if JSON_DTOA_SSE2
27772|       |        // NOLINTBEGIN(portability-simd-intrinsics)
27773|       |        // (in the register: reading the digits back from memory right after
27774|       |        // storing them waits until the stores are done)
27775|  1.02k|        const __m128i at = _mm_set1_epi8(static_cast<char>(n));
27776|  1.02k|        const __m128i index = _mm_setr_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
27777|  1.02k|        const __m128i before = _mm_cmpgt_epi8(at, index);
27778|  1.02k|        const __m128i after = _mm_cmpgt_epi8(index, at);
27779|  1.02k|        const __m128i text = _mm_or_si128(_mm_or_si128(_mm_and_si128(s, before), _mm_and_si128(_mm_slli_si128(s, 1), after)),
27780|  1.02k|                                          _mm_andnot_si128(_mm_or_si128(before, after), _mm_set1_epi8('.')));
27781|  1.02k|        std::memcpy(first, &text, 16);
27782|  1.02k|        first[16] = static_cast<char>(_mm_extract_epi16(s, 7) >> 8);
27783|  1.02k|        first[17] = s16;
27784|       |        // NOLINTEND(portability-simd-intrinsics)
27785|       |#elif JSON_DTOA_NEON
27786|       |        const uint8x16_t index = vcombine_u8(vcreate_u8(0x0706050403020100u), vcreate_u8(0x0F0E0D0C0B0A0908u));
27787|       |        const uint8x16_t at = vdupq_n_u8(static_cast<std::uint8_t>(n));
27788|       |        const uint8x16_t after_point = vbslq_u8(vcgtq_u8(index, at), vextq_u8(vdupq_n_u8(0), s, 15), vdupq_n_u8('.'));
27789|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(first), vbslq_u8(vcltq_u8(index, at), s, after_point)); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
27790|       |        first[16] = static_cast<char>(vgetq_lane_u8(s, 15));
27791|       |        first[17] = s16;
27792|       |#else
27793|       |        store_16(first);
27794|       |        first[16] = s16;
27795|       |        std::uint64_t after_point[2]; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27796|       |        std::memcpy(after_point, first + n, 16);
27797|       |        std::memcpy(first + n + 1, after_point, 16);
27798|       |        first[n] = '.';
27799|       |#endif
27800|  1.02k|        return first + (n >= len ? n + 2 : len + 1);
  ------------------
  |  Branch (27800:25): [True: 312, False: 708]
  ------------------
27801|  1.02k|    }
27802|  5.03k|    if (n <= 0 && n > -4)
  ------------------
  |  Branch (27802:9): [True: 3.67k, False: 1.35k]
  |  Branch (27802:19): [True: 288, False: 3.39k]
  ------------------
27803|    288|    {
27804|       |        // "0.[000]digits"
27805|    288|        std::memset(first, '0', 8);
27806|    288|        first[1] = '.';
27807|    288|        store_16(first + 2 - n);
27808|    288|        first[18 - n] = s16;
27809|    288|        return first + 2 - n + len;
27810|    288|    }
27811|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
27812|  4.74k|    store_16(first + 1);
27813|  4.74k|    first[17] = s16;
27814|  4.74k|    first[0] = first_digit;
27815|  4.74k|    first[1] = '.';
27816|  4.74k|    char* const end = first + (len == 1 ? 1 : len + 1);
  ------------------
  |  Branch (27816:32): [True: 0, False: 4.74k]
  ------------------
27817|  4.74k|    const int e = n - 1;
27818|  4.74k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (27818:21): [True: 3.39k, False: 1.35k]
  ------------------
27819|  4.74k|    const bool three = ea >= 100;
27820|  4.74k|    end[0] = 'e';
27821|  4.74k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (27821:14): [True: 3.39k, False: 1.35k]
  ------------------
27822|  4.74k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (27822:39): [True: 3.64k, False: 1.09k]
  ------------------
27823|  4.74k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (27823:39): [True: 3.64k, False: 1.09k]
  ------------------
27824|  4.74k|    end[4] = static_cast<char>('0' + (ea % 10));
27825|  4.74k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (27825:19): [True: 3.64k, False: 1.09k]
  ------------------
27826|  5.03k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl13write_decimalEPcmi:
27601|  1.58k|{
27602|  1.58k|    JSON_ASSERT(digits != 0 && digits < 100000000000000000u);
  ------------------
  |  | 2591|  1.58k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27602:5): [True: 1.58k, False: 0]
  |  Branch (27602:5): [True: 1.58k, False: 0]
  |  Branch (27602:5): [True: 1.58k, False: 0]
  ------------------
27603|  1.58k|    const std::uint64_t upper = digits / 100000000u;
27604|  1.58k|    const std::uint64_t b0 = upper / 100000000u; // (one digit: it is its own byte)
27605|  1.58k|    const std::uint64_t b1 = eight_digit_bytes(upper % 100000000u);
27606|  1.58k|    const std::uint64_t b2 = eight_digit_bytes(digits % 100000000u);
27607|       |    // leading and trailing zero digits: zero bytes, counted without division
27608|  1.58k|    int leading = 16;
27609|  1.58k|    int zeros = 16;
27610|  1.58k|    if (b0 != 0)
  ------------------
  |  Branch (27610:9): [True: 0, False: 1.58k]
  ------------------
27611|      0|    {
27612|      0|        leading = count_leading_zeros(b0) / 8;
27613|      0|    }
27614|  1.58k|    else if (b1 != 0)
  ------------------
  |  Branch (27614:14): [True: 1.00k, False: 576]
  ------------------
27615|  1.00k|    {
27616|  1.00k|        leading = 8 + (count_leading_zeros(b1) / 8);
27617|  1.00k|    }
27618|    576|    else
27619|    576|    {
27620|    576|        leading += count_leading_zeros(b2) / 8;
27621|    576|    }
27622|  1.58k|    if (b2 != 0)
  ------------------
  |  Branch (27622:9): [True: 1.58k, False: 0]
  ------------------
27623|  1.58k|    {
27624|  1.58k|        zeros = count_trailing_zeros(b2) / 8;
27625|  1.58k|    }
27626|      0|    else if (b1 != 0)
  ------------------
  |  Branch (27626:14): [True: 0, False: 0]
  ------------------
27627|      0|    {
27628|      0|        zeros = 8 + (count_trailing_zeros(b1) / 8);
27629|      0|    }
27630|       |    // (else: 16, b0 is the one digit that is not 0)
27631|       |    // the digits as text at text + leading, then '0's, so that fixed-size
27632|       |    // moves need not check how many digits there are
27633|  1.58k|    std::array<char, 64> text; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27634|  1.58k|    store_msb_first(text.data(), b0 + 0x3030303030303030u);
27635|  1.58k|    store_msb_first(text.data() + 8, b1 + 0x3030303030303030u);
27636|  1.58k|    store_msb_first(text.data() + 16, b2 + 0x3030303030303030u);
27637|  1.58k|    std::memset(text.data() + 24, '0', 40);
27638|  1.58k|    const int k = 24 - leading - zeros; // significant digits
27639|  1.58k|    const int n = k + exp + zeros;      // position of the decimal point after the first digit
27640|  1.58k|    const char* const s0 = text.data() + leading;
27641|       |
27642|  1.58k|    if (-4 < n && n <= 15)
  ------------------
  |  Branch (27642:9): [True: 0, False: 1.58k]
  |  Branch (27642:19): [True: 0, False: 0]
  ------------------
27643|      0|    {
27644|       |        // "0.[000]digits" (n <= 0) is the digits after 1 - n leading '0's
27645|       |        // with the point after the first; "digits[000].0" (n >= k) and
27646|       |        // "dig.its" put the point after n characters
27647|      0|        const int pad = n <= 0 ? 1 - n : 0;
  ------------------
  |  Branch (27647:25): [True: 0, False: 0]
  ------------------
27648|      0|        const char* const s = s0 - pad;
27649|      0|        const int len = k + pad;
27650|      0|        const int point = n + pad;
27651|      0|        std::memcpy(first, s, 16);
27652|      0|        std::memcpy(first + point + 1, s + point, 24);
27653|      0|        first[point] = '.';
27654|      0|        return first + (point >= len ? point + 2 : len + 1);
  ------------------
  |  Branch (27654:25): [True: 0, False: 0]
  ------------------
27655|      0|    }
27656|       |
27657|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
27658|  1.58k|    std::memcpy(first, s0, 16);
27659|  1.58k|    std::memcpy(first + 2, s0 + 1, 16);
27660|  1.58k|    first[1] = '.';
27661|  1.58k|    char* const end = first + (k == 1 ? 1 : k + 1);
  ------------------
  |  Branch (27661:32): [True: 216, False: 1.36k]
  ------------------
27662|  1.58k|    const int e = n - 1;
27663|  1.58k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (27663:21): [True: 1.58k, False: 0]
  ------------------
27664|  1.58k|    const bool three = ea >= 100;
27665|  1.58k|    end[0] = 'e';
27666|  1.58k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (27666:14): [True: 1.58k, False: 0]
  ------------------
27667|  1.58k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (27667:39): [True: 1.58k, False: 0]
  ------------------
27668|  1.58k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (27668:39): [True: 1.58k, False: 0]
  ------------------
27669|  1.58k|    end[4] = static_cast<char>('0' + (ea % 10));
27670|  1.58k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (27670:19): [True: 1.58k, False: 0]
  ------------------
27671|  1.58k|}
_ZZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalEENKUlS3_E_clES3_:
27720|  5.03k|    {
27721|  5.03k|        std::memcpy(p, &s, 16);
27722|  5.03k|    };
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE5flushEv:
29158|  14.7k|    {
29159|  14.7k|        o->write_characters(write_buffer.data(), write_buffer_pos);
29160|  14.7k|        write_buffer_pos = 0;
29161|  14.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail35binary_writer_default_error_handlerEv:
 6658|  4.57k|{
 6659|       |#if JSON_STRICT_BINARY_UTF8
 6660|       |    return error_handler_t::strict;
 6661|       |#else
 6662|  4.57k|    return error_handler_t::keep;
 6663|  4.57k|#endif
 6664|  4.57k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvED2Ev:
32820|   443k|    {
32821|   443k|        assert_invariant(false);
32822|   443k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16assert_invariantEb:
31150|  1.30M|    {
31151|  1.30M|        JSON_ASSERT(m_data.m_type != value_t::object || m_data.m_value.object != nullptr);
  ------------------
  |  | 2591|  1.30M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31151:9): [True: 1.18M, False: 124k]
  |  Branch (31151:9): [True: 124k, False: 0]
  |  Branch (31151:9): [True: 1.30M, False: 0]
  ------------------
31152|  1.30M|        JSON_ASSERT(m_data.m_type != value_t::array || m_data.m_value.array != nullptr);
  ------------------
  |  | 2591|  1.30M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31152:9): [True: 1.27M, False: 37.2k]
  |  Branch (31152:9): [True: 37.2k, False: 0]
  |  Branch (31152:9): [True: 1.30M, False: 0]
  ------------------
31153|  1.30M|        JSON_ASSERT(m_data.m_type != value_t::string || m_data.m_value.string != nullptr);
  ------------------
  |  | 2591|  1.30M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31153:9): [True: 1.28M, False: 28.3k]
  |  Branch (31153:9): [True: 28.3k, False: 0]
  |  Branch (31153:9): [True: 1.30M, False: 0]
  ------------------
31154|  1.30M|        JSON_ASSERT(m_data.m_type != value_t::binary || m_data.m_value.binary != nullptr);
  ------------------
  |  | 2591|  1.30M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31154:9): [True: 1.25M, False: 49.4k]
  |  Branch (31154:9): [True: 49.4k, False: 0]
  |  Branch (31154:9): [True: 1.30M, False: 0]
  ------------------
31155|       |
31156|       |#if JSON_DIAGNOSTICS
31157|       |        JSON_TRY
31158|       |        {
31159|       |            JSON_ASSERT(!check_parents || !is_structured() || std::all_of(begin(), end(), [this](const basic_json & j)
31160|       |            {
31161|       |                return j.m_parent == this;
31162|       |            }));
31163|       |        }
31164|       |        JSON_CATCH(...) {} // LCOV_EXCL_LINE
31165|       |#endif
31166|  1.30M|        static_cast<void>(check_parents);
31167|  1.30M|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataD2Ev:
36341|   443k|        {
36342|   443k|            m_value.destroy(m_type);
36343|   443k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value7destroyENS0_6detail7value_tE:
31094|   504k|        {
31095|   504k|            if (JSON_HEDLEY_UNLIKELY(detail::owns_memory(t)))
  ------------------
  |  | 1667|   504k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 41.6k, False: 462k]
  |  |  ------------------
  ------------------
31096|  41.6k|            {
31097|  41.6k|                destroy_owned(t);
31098|  41.6k|            }
31099|   504k|        }
_ZN8nlohmann16json_abi_v3_12_06detail11owns_memoryENS1_7value_tE:
 3350|   504k|{
 3351|   504k|    switch (t)
 3352|   504k|    {
 3353|  24.9k|        case value_t::object:
  ------------------
  |  Branch (3353:9): [True: 24.9k, False: 479k]
  ------------------
 3354|  26.7k|        case value_t::array:
  ------------------
  |  Branch (3354:9): [True: 1.82k, False: 502k]
  ------------------
 3355|  32.2k|        case value_t::string:
  ------------------
  |  Branch (3355:9): [True: 5.48k, False: 498k]
  ------------------
 3356|  41.6k|        case value_t::binary:
  ------------------
  |  Branch (3356:9): [True: 9.41k, False: 495k]
  ------------------
 3357|  41.6k|            return true;
 3358|       |
 3359|   415k|        case value_t::null:
  ------------------
  |  Branch (3359:9): [True: 415k, False: 88.9k]
  ------------------
 3360|   430k|        case value_t::boolean:
  ------------------
  |  Branch (3360:9): [True: 15.4k, False: 488k]
  ------------------
 3361|   441k|        case value_t::number_integer:
  ------------------
  |  Branch (3361:9): [True: 10.9k, False: 493k]
  ------------------
 3362|   449k|        case value_t::number_unsigned:
  ------------------
  |  Branch (3362:9): [True: 7.81k, False: 496k]
  ------------------
 3363|   461k|        case value_t::number_float:
  ------------------
  |  Branch (3363:9): [True: 11.8k, False: 492k]
  ------------------
 3364|   462k|        case value_t::discarded:
  ------------------
  |  Branch (3364:9): [True: 1.25k, False: 503k]
  ------------------
 3365|   462k|        default:
  ------------------
  |  Branch (3365:9): [True: 0, False: 504k]
  ------------------
 3366|   462k|            return false;
 3367|   504k|    }
 3368|   504k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13destroy_ownedENS0_6detail7value_tE:
31102|  41.6k|        {
31103|  41.6k|            switch (t)
31104|  41.6k|            {
31105|  5.48k|                case value_t::string:
  ------------------
  |  Branch (31105:17): [True: 5.48k, False: 36.1k]
  ------------------
31106|  5.48k|                    destroy_string();
31107|  5.48k|                    break;
31108|       |
31109|  9.41k|                case value_t::binary:
  ------------------
  |  Branch (31109:17): [True: 9.41k, False: 32.2k]
  ------------------
31110|  9.41k|                    destroy_binary();
31111|  9.41k|                    break;
31112|       |
31113|  24.9k|                case value_t::object:
  ------------------
  |  Branch (31113:17): [True: 24.9k, False: 16.7k]
  ------------------
31114|  26.7k|                case value_t::array:
  ------------------
  |  Branch (31114:17): [True: 1.82k, False: 39.8k]
  ------------------
31115|  26.7k|                    destroy_container(t);
31116|  26.7k|                    break;
31117|       |
31118|      0|                case value_t::null:
  ------------------
  |  Branch (31118:17): [True: 0, False: 41.6k]
  ------------------
31119|      0|                case value_t::boolean:
  ------------------
  |  Branch (31119:17): [True: 0, False: 41.6k]
  ------------------
31120|      0|                case value_t::number_integer:
  ------------------
  |  Branch (31120:17): [True: 0, False: 41.6k]
  ------------------
31121|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (31121:17): [True: 0, False: 41.6k]
  ------------------
31122|      0|                case value_t::number_float:
  ------------------
  |  Branch (31122:17): [True: 0, False: 41.6k]
  ------------------
31123|      0|                case value_t::discarded:
  ------------------
  |  Branch (31123:17): [True: 0, False: 41.6k]
  ------------------
31124|      0|                default:
  ------------------
  |  Branch (31124:17): [True: 0, False: 41.6k]
  ------------------
31125|      0|                    break;
31126|  41.6k|            }
31127|  41.6k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14destroy_stringEv:
30920|  5.48k|        {
30921|  5.48k|            if (string == nullptr)
  ------------------
  |  Branch (30921:17): [True: 0, False: 5.48k]
  ------------------
30922|      0|            {
30923|       |                // not initialized (e.g., due to exception in the ctor)
30924|      0|                return;
30925|      0|            }
30926|  5.48k|            AllocatorType<string_t> alloc;
30927|  5.48k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
30928|  5.48k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
30929|  5.48k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14destroy_binaryEv:
30932|  9.41k|        {
30933|  9.41k|            if (binary == nullptr)
  ------------------
  |  Branch (30933:17): [True: 0, False: 9.41k]
  ------------------
30934|      0|            {
30935|       |                // not initialized (e.g., due to exception in the ctor)
30936|      0|                return;
30937|      0|            }
30938|  9.41k|            AllocatorType<binary_t> alloc;
30939|  9.41k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, binary);
30940|  9.41k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, binary, 1);
30941|  9.41k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value17destroy_containerENS0_6detail7value_tE:
30945|  26.7k|        {
30946|  26.7k|            if (
30947|  26.7k|                (t == value_t::object && object == nullptr) ||
  ------------------
  |  Branch (30947:18): [True: 24.9k, False: 1.82k]
  |  Branch (30947:42): [True: 0, False: 24.9k]
  ------------------
30948|  26.7k|                (t == value_t::array && array == nullptr)
  ------------------
  |  Branch (30948:18): [True: 1.82k, False: 24.9k]
  |  Branch (30948:41): [True: 0, False: 1.82k]
  ------------------
30949|  26.7k|            )
30950|      0|            {
30951|       |                // not initialized (e.g., due to exception in the ctor)
30952|      0|                return;
30953|      0|            }
30954|       |
30955|       |            // This json_value is not itself a basic_json, so the top-level
30956|       |            // container is first moved into a local stand-in ("cur"); a
30957|       |            // default-constructed basic_json has a null pointer in its
30958|       |            // m_value (see data::m_value's initializer), so swapping it
30959|       |            // with *this leaves this union's own pointer null, and it is
30960|       |            // never looked at or freed a second time.
30961|  26.7k|            basic_json cur;
30962|  26.7k|            cur.m_data.m_type = t;
30963|  26.7k|            using std::swap;
30964|  26.7k|            swap(cur.m_data.m_value, *this);
30965|       |
30966|  26.7k|            destroy_bounded(cur, 0);
30967|  26.7k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EDn:
32392|   235k|    {
32393|   235k|        assert_invariant();
32394|   235k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2Ev:
36334|   296k|        data() noexcept = default;
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15destroy_boundedERSE_m:
30974|  49.5k|        {
30975|  49.5k|            if (JSON_HEDLEY_UNLIKELY(depth >= detail::recursion_depth_limit()))
  ------------------
  |  | 1667|  49.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 49.5k]
  |  |  ------------------
  ------------------
30976|      0|            {
30977|      0|                destroy_walk(v);
30978|      0|                return;
30979|      0|            }
30980|       |
30981|  49.5k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30981:17): [True: 16.4k, False: 33.0k]
  ------------------
30982|  16.4k|            {
30983|  16.4k|                for (auto& child : *v.m_data.m_value.array)
  ------------------
  |  Branch (30983:34): [True: 75.7k, False: 16.4k]
  ------------------
30984|  75.7k|                {
30985|  75.7k|                    if (child.m_data.m_type == value_t::array || child.m_data.m_type == value_t::object)
  ------------------
  |  Branch (30985:25): [True: 9.76k, False: 66.0k]
  |  Branch (30985:66): [True: 2.29k, False: 63.7k]
  ------------------
30986|  12.0k|                    {
30987|  12.0k|                        destroy_bounded(child, depth + 1);
30988|  12.0k|                    }
30989|  75.7k|                }
30990|  16.4k|            }
30991|  33.0k|            else
30992|  33.0k|            {
30993|  33.0k|                for (auto& child : *v.m_data.m_value.object)
  ------------------
  |  Branch (30993:34): [True: 88.5k, False: 33.0k]
  ------------------
30994|  88.5k|                {
30995|  88.5k|                    if (child.second.m_data.m_type == value_t::array || child.second.m_data.m_type == value_t::object)
  ------------------
  |  Branch (30995:25): [True: 4.84k, False: 83.7k]
  |  Branch (30995:73): [True: 5.87k, False: 77.8k]
  ------------------
30996|  10.7k|                    {
30997|  10.7k|                        destroy_bounded(child.second, depth + 1);
30998|  10.7k|                    }
30999|  88.5k|                }
31000|  33.0k|            }
31001|       |
31002|       |            // only leaves and already destroyed (null) children remain
31003|  49.5k|            free_container(v);
31004|  49.5k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15has_no_childrenERKSE_:
30797|   213k|        {
30798|   213k|            switch (v.m_data.m_type)
30799|   213k|            {
30800|  16.4k|                case value_t::array:
  ------------------
  |  Branch (30800:17): [True: 16.4k, False: 197k]
  ------------------
30801|  16.4k|                    return v.m_data.m_value.array->empty();
30802|  33.0k|                case value_t::object:
  ------------------
  |  Branch (30802:17): [True: 33.0k, False: 180k]
  ------------------
30803|  33.0k|                    return v.m_data.m_value.object->empty();
30804|   113k|                case value_t::null:
  ------------------
  |  Branch (30804:17): [True: 113k, False: 100k]
  ------------------
30805|   116k|                case value_t::string:
  ------------------
  |  Branch (30805:17): [True: 3.82k, False: 210k]
  ------------------
30806|   129k|                case value_t::boolean:
  ------------------
  |  Branch (30806:17): [True: 13.0k, False: 200k]
  ------------------
30807|   139k|                case value_t::number_integer:
  ------------------
  |  Branch (30807:17): [True: 9.52k, False: 204k]
  ------------------
30808|   145k|                case value_t::number_unsigned:
  ------------------
  |  Branch (30808:17): [True: 6.54k, False: 207k]
  ------------------
30809|   157k|                case value_t::number_float:
  ------------------
  |  Branch (30809:17): [True: 11.2k, False: 202k]
  ------------------
30810|   164k|                case value_t::binary:
  ------------------
  |  Branch (30810:17): [True: 7.11k, False: 206k]
  ------------------
30811|   164k|                case value_t::discarded:
  ------------------
  |  Branch (30811:17): [True: 0, False: 213k]
  ------------------
30812|   164k|                default:
  ------------------
  |  Branch (30812:17): [True: 0, False: 213k]
  ------------------
30813|   164k|                    return true;
30814|   213k|            }
30815|   213k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_:
30822|  38.8k|        {
30823|       |            // array_t only needs forward iterators (see custom_array_type)
30824|  38.8k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30824:17): [True: 10.9k, False: 27.8k]
  ------------------
30825|  10.9k|            {
30826|  10.9k|                const auto& a = *v.m_data.m_value.array;
30827|  10.9k|                return std::all_of(a.begin(), a.end(), [](const basic_json & el)
30828|  10.9k|                {
30829|  10.9k|                    return has_no_children(el);
30830|  10.9k|                });
30831|  10.9k|            }
30832|  27.8k|            const auto& o = *v.m_data.m_value.object;
30833|  27.8k|            return std::all_of(o.begin(), o.end(), [](const typename object_t::value_type & el)
30834|  27.8k|            {
30835|  27.8k|                return has_no_children(el.second);
30836|  27.8k|            });
30837|  38.8k|        }
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_ENKUlSH_E_clESH_:
30828|  75.7k|                {
30829|  75.7k|                    return has_no_children(el);
30830|  75.7k|                });
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_ENKUlRKNS2_4pairIKSA_SE_EEE_clESM_:
30834|  88.5k|            {
30835|  88.5k|                return has_no_children(el.second);
30836|  88.5k|            });
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14free_containerERSE_:
30900|  49.5k|        {
30901|  49.5k|            JSON_ASSERT(has_no_children(v) || all_children_leaves(v));
  ------------------
  |  | 2591|  49.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30901:13): [True: 10.6k, False: 38.8k]
  |  Branch (30901:13): [True: 38.8k, False: 0]
  |  Branch (30901:13): [True: 49.5k, False: 0]
  ------------------
30902|  49.5k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30902:17): [True: 16.4k, False: 33.0k]
  ------------------
30903|  16.4k|            {
30904|  16.4k|                AllocatorType<array_t> alloc;
30905|  16.4k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_data.m_value.array);
30906|  16.4k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_data.m_value.array, 1);
30907|  16.4k|            }
30908|  33.0k|            else
30909|  33.0k|            {
30910|  33.0k|                JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|  33.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30910:17): [True: 33.0k, False: 0]
  ------------------
30911|  33.0k|                AllocatorType<object_t> alloc;
30912|  33.0k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_data.m_value.object);
30913|  33.0k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_data.m_value.object, 1);
30914|  33.0k|            }
30915|  49.5k|            v.m_data.m_type = value_t::null; // avoid a double free if v is later destructed
30916|  49.5k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bsonIRKSD_EESE_OT_bbNS0_6detail15error_handler_tE:
36818|  9.37k|    {
36819|  9.37k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::bson, strict, allow_exceptions, error_handler);
36820|  9.37k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail22iterator_input_adapterIPKhSJ_EEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  12.9k|    {
36386|  12.9k|        basic_json result;
36387|  12.9k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  12.9k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  12.9k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 1.25k, False: 11.6k]
  ------------------
36390|  1.25k|        {
36391|  1.25k|            result = value_t::discarded;
36392|  1.25k|        }
36393|  12.9k|        return result;
36394|  12.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEEC2ERSG_bPNS1_5lexerISG_SK_EE:
13873|  12.9k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  12.9k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEEC2EOSK_NS1_14input_format_tENS1_15error_handler_tE:
14944|  12.9k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  12.9k|    {
14946|  12.9k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  12.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE3eofEv:
 4299|   294k|    {
 4300|   294k|        return static_cast<int_type>(std::char_traits<char>::eof());
 4301|   294k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17little_endiannessEi:
14882|  28.1k|{
14883|  28.1k|    return *reinterpret_cast<char*>(&num) == 1;
14884|  28.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9sax_parseEPSM_bNS1_18cbor_tag_handler_tE:
14969|  12.9k|    {
14970|  12.9k|        sax = sax_;
14971|  12.9k|        container_stack.clear();
14972|  12.9k|        bon8_pushback_size = 0;
14973|  12.9k|        bool result = false;
14974|       |
14975|  12.9k|        switch (input_format)
14976|  12.9k|        {
14977|  12.9k|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 12.9k, False: 0]
  ------------------
14978|  12.9k|                result = parse_bson_internal();
14979|  12.9k|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 12.9k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 12.9k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 12.9k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 12.9k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 12.9k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 12.9k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 12.9k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  12.9k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  10.4k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 9.18k, False: 1.24k]
  |  Branch (15004:23): [True: 9.18k, False: 0]
  ------------------
15005|  9.18k|        {
15006|  9.18k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 9.18k]
  |  Branch (15006:59): [True: 0, False: 9.18k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  9.18k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 9.18k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  9.18k|            else
15016|  9.18k|            {
15017|  9.18k|                get();
15018|  9.18k|            }
15019|       |
15020|  9.18k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  9.18k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 33, False: 9.15k]
  |  |  ------------------
  ------------------
15021|     33|            {
15022|     33|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     33|            }
15024|  9.18k|        }
15025|       |
15026|  10.3k|        return result;
15027|  10.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE19parse_bson_internalEv:
15186|  12.9k|    {
15187|  12.9k|        if (JSON_HEDLEY_UNLIKELY(!open_bson_document(/*is_object*/true)))
  ------------------
  |  | 1667|  12.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3, False: 12.9k]
  |  |  ------------------
  ------------------
15188|      3|        {
15189|      3|            return false;
15190|      3|        }
15191|       |
15192|       |        // the key currently being read; hoisted out of the loop so that its
15193|       |        // capacity is reused across elements and across nesting levels
15194|  12.9k|        string_t key;
15195|       |
15196|   120k|        while (true)
  ------------------
  |  Branch (15196:16): [True: 117k, Folded]
  ------------------
15197|   117k|        {
15198|   117k|            const auto element_type = get();
15199|       |
15200|   117k|            if (element_type == 0) // end of the innermost document
  ------------------
  |  Branch (15200:17): [True: 16.7k, False: 101k]
  ------------------
15201|  16.7k|            {
15202|       |                // a copy, not a reference: it must stay valid across the
15203|       |                // pop_back() inside leave_container() below, which destroys
15204|       |                // the container_stack element it would otherwise alias
15205|  16.7k|                const container_frame top = container_stack.back();
15206|       |
15207|  16.7k|                if (JSON_HEDLEY_UNLIKELY(!check_bson_document_size(top.start_position, top.declared_size)))
  ------------------
  |  | 1667|  16.7k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 156, False: 16.5k]
  |  |  ------------------
  ------------------
15208|    156|                {
15209|    156|                    return false;
15210|    156|                }
15211|       |
15212|  16.5k|                if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  16.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 16.5k]
  |  |  ------------------
  ------------------
15213|      0|                {
15214|      0|                    return false;
15215|      0|                }
15216|       |                // the document begun here is complete once it is not inside one
15217|  16.5k|                if (container_stack.empty())
  ------------------
  |  Branch (15217:21): [True: 9.18k, False: 7.41k]
  ------------------
15218|  9.18k|                {
15219|  9.18k|                    return true;
15220|  9.18k|                }
15221|  7.41k|                continue;
15222|  16.5k|            }
15223|       |
15224|   101k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("element list")))
  ------------------
  |  | 1667|   101k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 489, False: 100k]
  |  |  ------------------
  ------------------
15225|    489|            {
15226|    489|                return false;
15227|    489|            }
15228|       |
15229|   100k|            const std::size_t element_type_parse_position = chars_read;
15230|   100k|            key.clear();
15231|   100k|            if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key)))
  ------------------
  |  | 1667|   100k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 76, False: 100k]
  |  |  ------------------
  ------------------
15232|     76|            {
15233|     76|                return false;
15234|     76|            }
15235|       |
15236|       |            // an array's elements are named "0", "1", ... in the wire format,
15237|       |            // and those names are not passed on
15238|   100k|            if (container_stack.back().is_object && !sax->key(key))
  ------------------
  |  Branch (15238:17): [True: 59.5k, False: 41.0k]
  |  Branch (15238:53): [True: 0, False: 59.5k]
  ------------------
15239|      0|            {
15240|      0|                return false;
15241|      0|            }
15242|       |
15243|   100k|            if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position)))
  ------------------
  |  | 1667|   100k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 519, False: 100k]
  |  |  ------------------
  ------------------
15244|    519|            {
15245|    519|                return false;
15246|    519|            }
15247|   100k|        }
15248|  12.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE18open_bson_documentEb:
15154|  26.5k|    {
15155|       |        // recorded before the size prefix is read, because
15156|       |        // check_bson_document_size() measures the document from here
15157|  26.5k|        const std::size_t document_start = chars_read;
15158|  26.5k|        std::int32_t document_size{};
15159|  26.5k|        if (!get_number<std::int32_t, true>(document_size))
  ------------------
  |  Branch (15159:13): [True: 30, False: 26.5k]
  ------------------
15160|     30|        {
15161|     30|            return false;
15162|     30|        }
15163|       |
15164|  26.5k|        if (JSON_HEDLEY_UNLIKELY(!enter_container(is_object, detail::unknown_size())))
  ------------------
  |  | 1667|  26.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 26.5k]
  |  |  ------------------
  ------------------
15165|      0|        {
15166|      0|            return false;
15167|      0|        }
15168|       |
15169|  26.5k|        container_frame& frame = container_stack.back();
15170|  26.5k|        frame.start_position = document_start;
15171|  26.5k|        frame.declared_size = document_size;
15172|  26.5k|        return true;
15173|  26.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIiLb1EEEbRT_:
18739|  38.8k|    {
18740|       |        // read in the original format
18741|       |
18742|  38.8k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  38.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 68, False: 38.8k]
  |  |  ------------------
  ------------------
18743|     68|        {
18744|     68|            return false;
18745|     68|        }
18746|  38.8k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 38.8k]
  |  Branch (18746:34): [True: 38.8k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  38.8k|        return true;
18751|  38.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIiEEbRT_PKc:
18667|  38.8k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  38.8k|        auto new_chars_read = ia.get_elements(&dest);
18671|  38.8k|        chars_read += new_chars_read;
18672|  38.8k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  38.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 204, False: 38.6k]
  |  |  ------------------
  ------------------
18673|    204|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|    204|            ++chars_read;
18676|    204|            static_cast<void>(report_eof(context));
18677|    204|            return false;
18678|    204|        }
18679|  38.6k|        return true;
18680|  38.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIiEEmPT_m:
 8644|  38.8k|    {
 8645|  38.8k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  38.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIiEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  38.8k|    {
 8703|  38.8k|        const std::size_t wanted = count * sizeof(T);
 8704|  38.8k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  38.8k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  38.8k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  38.8k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 38.7k, False: 102]
  |  |  ------------------
  ------------------
 8707|  38.7k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  38.7k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  38.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 38.7k, False: 0]
  ------------------
 8712|  38.7k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  38.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 38.7k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  38.7k|            std::memcpy(dest, &*current, copied);
 8716|  38.7k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  38.7k|        }
 8718|  38.8k|        return copied;
 8719|  38.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E15remaining_countEv:
 8663|   169k|    {
 8664|       |#if JSON_HAS_RANGES && defined(__cpp_lib_concepts) && defined(JSON_HAS_CPP_20)
 8665|       |        // std::ranges::distance also supports sized sentinels of a different
 8666|       |        // type (e.g. std::counted_iterator + std::default_sentinel_t)
 8667|       |        return static_cast<std::size_t>(std::ranges::distance(current, end));
 8668|       |#else
 8669|   169k|        return static_cast<std::size_t>(std::distance(current, end));
 8670|   169k|#endif
 8671|   169k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10report_eofEPKc:
19058|  2.59k|    {
19059|  2.59k|        return sax->parse_error(chars_read, "<end of file>",
19060|  2.59k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  2.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  3.76k|    {
14005|  3.76k|        errored = true;
14006|  3.76k|        static_cast<void>(ex);
14007|  3.76k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 2.50k, False: 1.25k]
  ------------------
14008|  2.50k|        {
14009|  2.50k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  2.50k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  2.50k|        }
14011|  1.25k|        return false;
14012|  3.76k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idEmRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5585|  7.52k|    {
 5586|  7.52k|        return create(static_cast<int>(id_), byte_, what_arg, context);
 5587|  7.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_imRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5570|  7.52k|    {
 5571|  7.52k|        const std::string w = concat(exception::name("parse_error", id_), "parse error",
 5572|  7.52k|                                     (byte_ != 0 ? (concat(" at byte ", std::to_string(byte_))) : ""),
  ------------------
  |  Branch (5572:39): [True: 7.52k, False: 0]
  ------------------
 5573|  7.52k|                                     ": ", exception::diagnostics(context), what_arg);
 5574|  7.52k|        return {id_, byte_, w.c_str()};
 5575|  7.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_RA12_KcS9_RA3_SA_S9_RKS9_EEET_DpOT0_:
 5318|  7.52k|{
 5319|  7.52k|    OutStringType str;
 5320|  7.52k|    str.reserve(concat_length(args...));
 5321|  7.52k|    concat_into(str, std::forward<Args>(args)...);
 5322|  7.52k|    return str;
 5323|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA12_cS9_A3_cS9_S9_EEEmRKT_DpRKT0_:
 5228|  7.52k|{
 5229|  7.52k|    return str.size() + concat_length(rest...);
 5230|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_S9_EEEmPKcDpRKT_:
 5222|  7.52k|{
 5223|  7.52k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_S9_EEEmRKT_DpRKT0_:
 5228|  7.52k|{
 5229|  7.52k|    return str.size() + concat_length(rest...);
 5230|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_EEEmPKcDpRKT_:
 5222|  7.52k|{
 5223|  7.52k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA12_KcS9_RA3_SA_S9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA12_KcJS9_RA3_SA_S9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA10_KcS9_EEET_DpOT0_:
 5318|  7.52k|{
 5319|  7.52k|    OutStringType str;
 5320|  7.52k|    str.reserve(concat_length(args...));
 5321|  7.52k|    concat_into(str, std::forward<Args>(args)...);
 5322|  7.52k|    return str;
 5323|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA10_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  7.52k|{
 5282|  7.52k|    out.append(std::forward<Arg>(arg));
 5283|  7.52k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  7.52k|}
_ZN8nlohmann16json_abi_v3_12_06detail11parse_errorC2EimPKc:
 5602|  7.52k|        : exception(id_, what_arg), byte(byte_) {}
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE17exception_messageERKSC_SP_:
19163|  3.37k|    {
19164|  3.37k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  3.37k|        switch (input_format)
19167|  3.37k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 3.37k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 3.37k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 3.37k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|  3.37k|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 3.37k, False: 0]
  ------------------
19181|  3.37k|                error_msg += "BSON";
19182|  3.37k|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 3.37k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 3.37k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 3.37k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 3.37k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  3.37k|        }
19196|       |
19197|  3.37k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  3.37k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRS9_cRKS9_RA3_KcSC_EEET_DpOT0_:
 5318|  6.75k|{
 5319|  6.75k|    OutStringType str;
 5320|  6.75k|    str.reserve(concat_length(args...));
 5321|  6.75k|    concat_into(str, std::forward<Args>(args)...);
 5322|  6.75k|    return str;
 5323|  6.75k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cS9_EEEmRKT_DpRKT0_:
 5228|  6.75k|{
 5229|  6.75k|    return str.size() + concat_length(rest...);
 5230|  6.75k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_EEEmcDpRKT_:
 5216|  6.75k|{
 5217|  6.75k|    return 1 + concat_length(rest...);
 5218|  6.75k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_EEEmRKT_DpRKT0_:
 5228|  6.75k|{
 5229|  6.75k|    return str.size() + concat_length(rest...);
 5230|  6.75k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERS9_JcRKS9_RA3_KcSC_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSH_OSI_DpOT1_:
 5281|  6.75k|{
 5282|  6.75k|    out.append(std::forward<Arg>(arg));
 5283|  6.75k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  6.75k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcJRKS9_RA3_KcSB_ETnNS3_9enable_ifIXaantsr24detect_string_can_appendIT_T0_EE5valuesr27detect_string_can_append_opISG_SH_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5290|  6.75k|{
 5291|  6.75k|    out += std::forward<Arg>(arg);
 5292|  6.75k|    concat_into(out, std::forward<Args>(rest)...);
 5293|  6.75k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRA3_KcSB_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  6.75k|{
 5282|  6.75k|    out.append(std::forward<Arg>(arg));
 5283|  6.75k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  6.75k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  6.75k|{
 5282|  6.75k|    out.append(std::forward<Arg>(arg));
 5283|  6.75k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  6.75k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15enter_containerEbmm:
15082|  26.4k|    {
15083|  26.4k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|  52.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 26.4k]
  |  |  |  Branch (1667:94): [True: 17.8k, False: 8.55k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|  26.4k|        container_stack.emplace_back(len, is_object, type_marker);
15089|  26.4k|        return true;
15090|  26.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12start_objectEm:
13930|  17.8k|    {
13931|  17.8k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  17.8k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  17.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|  26.4k|    {
14031|  26.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 12.9k, False: 13.5k]
  ------------------
14032|  12.9k|        {
14033|  12.9k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  12.9k|            return &root;
14040|  12.9k|        }
14041|       |
14042|  13.5k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  13.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 6.24k, False: 7.29k]
  |  Branch (14042:9): [True: 7.29k, False: 0]
  |  Branch (14042:9): [True: 13.5k, False: 0]
  ------------------
14043|       |
14044|  13.5k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 6.24k, False: 7.29k]
  ------------------
14045|  6.24k|        {
14046|  6.24k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  6.24k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  6.24k|        }
14054|       |
14055|  7.29k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  7.29k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 7.29k, False: 0]
  ------------------
14056|  7.29k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  7.29k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 7.29k, False: 0]
  ------------------
14057|  7.29k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  7.29k|        return object_element;
14064|  7.29k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8is_arrayEv:
32946|   429k|    {
32947|   429k|        return m_data.m_type == value_t::array;
32948|   429k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9is_objectEv:
32938|   432k|    {
32939|   432k|        return m_data.m_type == value_t::object;
32940|   432k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EOSE_:
32765|  96.6k|        : json_base_class_t(std::move(static_cast<json_base_class_t&>(other))),
32766|  96.6k|          m_data(std::move(other.m_data))
32767|       |#if JSON_DIAGNOSTIC_POSITIONS
32768|       |        , start_position(other.start_position)
32769|       |        , end_position(other.end_position)
32770|       |#endif
32771|  96.6k|    {
32772|       |        // check that the passed value is valid
32773|  96.6k|        other.assert_invariant(false);
32774|       |
32775|       |        // invalidate payload
32776|  96.6k|        other.m_data.m_type = value_t::null;
32777|  96.6k|        other.m_data.m_value = {};
32778|       |
32779|       |#if JSON_DIAGNOSTIC_POSITIONS
32780|       |        other.start_position = std::string::npos;
32781|       |        other.end_position = std::string::npos;
32782|       |#endif
32783|       |
32784|  96.6k|        set_parents();
32785|  96.6k|        assert_invariant();
32786|  96.6k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11set_parentsEv:
31170|   379k|    {
31171|       |#if JSON_DIAGNOSTICS
31172|       |        switch (m_data.m_type)
31173|       |        {
31174|       |            case value_t::array:
31175|       |            {
31176|       |                for (auto& element : *m_data.m_value.array)
31177|       |                {
31178|       |                    element.m_parent = this;
31179|       |                }
31180|       |                break;
31181|       |            }
31182|       |
31183|       |            case value_t::object:
31184|       |            {
31185|       |                for (auto& element : *m_data.m_value.object)
31186|       |                {
31187|       |                    element.second.m_parent = this;
31188|       |                }
31189|       |                break;
31190|       |            }
31191|       |
31192|       |            case value_t::null:
31193|       |            case value_t::string:
31194|       |            case value_t::boolean:
31195|       |            case value_t::number_integer:
31196|       |            case value_t::number_unsigned:
31197|       |            case value_t::number_float:
31198|       |            case value_t::binary:
31199|       |            case value_t::discarded:
31200|       |            default:
31201|       |                break;
31202|       |        }
31203|       |#endif
31204|   379k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterIPKhSK_EEEESH_EEbRT_mPKcPT0_:
13724|  26.4k|{
13725|  26.4k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|  26.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 26.4k]
  |  |  |  Branch (1667:94): [True: 0, False: 26.4k]
  |  |  |  Branch (1667:94): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|  26.4k|    return true;
13730|  26.4k|}
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4sizeEv:
34627|  4.57k|    {
34628|  4.57k|        switch (m_data.m_type)
34629|  4.57k|        {
34630|      0|            case value_t::null:
  ------------------
  |  Branch (34630:13): [True: 0, False: 4.57k]
  ------------------
34631|      0|            {
34632|       |                // null values are empty
34633|      0|                return 0;
34634|      0|            }
34635|       |
34636|      0|            case value_t::array:
  ------------------
  |  Branch (34636:13): [True: 0, False: 4.57k]
  ------------------
34637|      0|            {
34638|       |                // delegate call to array_t::size()
34639|      0|                return m_data.m_value.array->size();
34640|      0|            }
34641|       |
34642|  4.57k|            case value_t::object:
  ------------------
  |  Branch (34642:13): [True: 4.57k, False: 0]
  ------------------
34643|  4.57k|            {
34644|       |                // delegate call to object_t::size()
34645|  4.57k|                return m_data.m_value.object->size();
34646|      0|            }
34647|       |
34648|      0|            case value_t::string:
  ------------------
  |  Branch (34648:13): [True: 0, False: 4.57k]
  ------------------
34649|      0|            case value_t::boolean:
  ------------------
  |  Branch (34649:13): [True: 0, False: 4.57k]
  ------------------
34650|      0|            case value_t::number_integer:
  ------------------
  |  Branch (34650:13): [True: 0, False: 4.57k]
  ------------------
34651|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (34651:13): [True: 0, False: 4.57k]
  ------------------
34652|      0|            case value_t::number_float:
  ------------------
  |  Branch (34652:13): [True: 0, False: 4.57k]
  ------------------
34653|      0|            case value_t::binary:
  ------------------
  |  Branch (34653:13): [True: 0, False: 4.57k]
  ------------------
34654|      0|            case value_t::discarded:
  ------------------
  |  Branch (34654:13): [True: 0, False: 4.57k]
  ------------------
34655|      0|            default:
  ------------------
  |  Branch (34655:13): [True: 0, False: 4.57k]
  ------------------
34656|      0|            {
34657|       |                // all other types have size 1
34658|      0|                return 1;
34659|      0|            }
34660|  4.57k|        }
34661|  4.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11start_arrayEm:
13966|  8.55k|    {
13967|  8.55k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  8.55k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  8.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 8.55k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  8.55k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 0, False: 8.55k]
  ------------------
13980|      0|        {
13981|      0|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|      0|        }
13983|       |
13984|  8.55k|        return true;
13985|  8.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15container_frameC2Embm:
15051|  26.4k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail12unknown_sizeEv:
13677|   115k|{
13678|   115k|    return (std::numeric_limits<std::size_t>::max)();
13679|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE24check_bson_document_sizeEmi:
15141|  16.7k|    {
15142|  16.7k|        if (JSON_HEDLEY_UNLIKELY(document_size < 0 || static_cast<std::size_t>(document_size) != chars_read - document_start))
  ------------------
  |  | 1667|  33.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 468, False: 16.2k]
  |  |  |  Branch (1667:94): [True: 114, False: 16.6k]
  |  |  |  Branch (1667:94): [True: 354, False: 16.2k]
  |  |  ------------------
  ------------------
15143|    468|        {
15144|    468|            return bson_document_size_error(document_size, chars_read - document_start);
15145|    468|        }
15146|  16.2k|        return true;
15147|  16.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE24bson_document_size_errorEim:
19094|    468|    {
19095|    468|        return last_byte_error(exception_id::unexpected_byte, concat("document size ", std::to_string(document_size), " does not match the number of bytes read (", std::to_string(bytes_read), ")"), "document");
19096|    468|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA15_KcS9_RA43_SA_S9_RA2_SA_EEET_DpOT0_:
 5318|    936|{
 5319|    936|    OutStringType str;
 5320|    936|    str.reserve(concat_length(args...));
 5321|    936|    concat_into(str, std::forward<Args>(args)...);
 5322|    936|    return str;
 5323|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA43_cS9_A2_cEEEmPKcDpRKT_:
 5222|    936|{
 5223|    936|    return ::strlen(cstr) + concat_length(rest...);
 5224|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA43_cS9_A2_cEEEmRKT_DpRKT0_:
 5228|    936|{
 5229|    936|    return str.size() + concat_length(rest...);
 5230|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA2_cEEEmPKcDpRKT_:
 5222|    936|{
 5223|    936|    return ::strlen(cstr) + concat_length(rest...);
 5224|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA2_cEEEmRKT_DpRKT0_:
 5228|    936|{
 5229|    936|    return str.size() + concat_length(rest...);
 5230|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA15_KcJS9_RA43_SA_S9_RA2_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|    936|{
 5282|    936|    out.append(std::forward<Arg>(arg));
 5283|    936|    concat_into(out, std::forward<Args>(rest)...);
 5284|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA43_KcS9_RA2_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|    936|{
 5282|    936|    out.append(std::forward<Arg>(arg));
 5283|    936|    concat_into(out, std::forward<Args>(rest)...);
 5284|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA43_KcJS9_RA2_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|    936|{
 5282|    936|    out.append(std::forward<Arg>(arg));
 5283|    936|    concat_into(out, std::forward<Args>(rest)...);
 5284|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA2_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|    936|{
 5282|    936|    out.append(std::forward<Arg>(arg));
 5283|    936|    concat_into(out, std::forward<Args>(rest)...);
 5284|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA2_KcJETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|    936|{
 5282|    936|    out.append(std::forward<Arg>(arg));
 5283|    936|    concat_into(out, std::forward<Args>(rest)...);
 5284|    936|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15leave_containerEv:
15114|  16.2k|    {
15115|  16.2k|        const bool is_object = container_stack.back().is_object;
15116|  16.2k|        container_stack.pop_back();
15117|  16.2k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 12.1k, False: 4.13k]
  ------------------
15118|  16.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE10end_objectEv:
13952|  12.1k|    {
13953|  12.1k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  12.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 12.1k, False: 0]
  ------------------
13954|  12.1k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  12.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 12.1k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  12.1k|        ref_stack.back()->set_parents();
13961|  12.1k|        ref_stack.pop_back();
13962|  12.1k|        return true;
13963|  12.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE9end_arrayEv:
13988|  4.13k|    {
13989|  4.13k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  4.13k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 4.13k, False: 0]
  ------------------
13990|  4.13k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  4.13k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 4.13k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  4.13k|        ref_stack.back()->set_parents();
13997|  4.13k|        ref_stack.pop_back();
13998|  4.13k|        return true;
13999|  4.13k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE12unexpect_eofEPKc:
19041|   103k|    {
19042|   103k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|   103k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.13k, False: 101k]
  |  |  ------------------
  ------------------
19043|  2.13k|        {
19044|  2.13k|            return report_eof(context);
19045|  2.13k|        }
19046|   101k|        return true;
19047|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13get_bson_cstrERSC_:
15258|  99.7k|    {
15259|  99.7k|        if (get_bson_cstr_bulk(result, std::integral_constant<bool, bulk_scan> {}))
  ------------------
  |  Branch (15259:13): [True: 99.4k, False: 228]
  ------------------
15260|  99.4k|        {
15261|  99.4k|            return check_string_utf8(result, "key");
15262|  99.4k|        }
15263|       |
15264|    228|        auto out = std::back_inserter(result);
15265|  2.07k|        while (true)
  ------------------
  |  Branch (15265:16): [True: 1.92k, Folded]
  ------------------
15266|  1.92k|        {
15267|  1.92k|            get();
15268|  1.92k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("cstring")))
  ------------------
  |  | 1667|  1.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 76, False: 1.85k]
  |  |  ------------------
  ------------------
15269|     76|            {
15270|     76|                return false;
15271|     76|            }
15272|  1.85k|            if (current == 0x00)
  ------------------
  |  Branch (15272:17): [True: 0, False: 1.85k]
  ------------------
15273|      0|            {
15274|      0|                return check_string_utf8(result, "key");
15275|      0|            }
15276|  1.85k|            *out++ = static_cast<typename string_t::value_type>(current);
15277|  1.85k|        }
15278|    228|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE18get_bson_cstr_bulkERSC_NS4_17integral_constantIbLb1EEE:
15288|  99.7k|    {
15289|  99.7k|        const std::size_t remaining = ia.bulk_remaining();
15290|  99.7k|        if (remaining == 0)
  ------------------
  |  Branch (15290:13): [True: 111, False: 99.5k]
  ------------------
15291|    111|        {
15292|    111|            return false;
15293|    111|        }
15294|  99.5k|        const auto* const data = reinterpret_cast<const unsigned char*>(ia.bulk_data());
15295|       |        // a plain loop rather than std::memchr: most keys are short (array
15296|       |        // indices are keys, too), and the call would cost more than it saves
15297|  99.5k|        std::size_t length = 0;
15298|   451k|        while (length < remaining && data[length] != 0x00)
  ------------------
  |  Branch (15298:16): [True: 451k, False: 117]
  |  Branch (15298:38): [True: 351k, False: 99.4k]
  ------------------
15299|   351k|        {
15300|   351k|            ++length;
15301|   351k|        }
15302|  99.5k|        if (length == remaining)
  ------------------
  |  Branch (15302:13): [True: 117, False: 99.4k]
  ------------------
15303|    117|        {
15304|    117|            return false;
15305|    117|        }
15306|  99.4k|        result.append(reinterpret_cast<const typename string_t::value_type*>(data), length);
15307|       |        // consume the string and its \x00-byte, as the byte-wise path does
15308|  99.4k|        ia.bulk_skip(length + 1);
15309|  99.4k|        chars_read += length + 1;
15310|  99.4k|        current = 0x00;
15311|  99.4k|        return true;
15312|  99.5k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E14bulk_remainingEv:
 8688|  99.7k|    {
 8689|  99.7k|        return remaining_count();
 8690|  99.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E9bulk_dataEv:
 8682|  99.5k|    {
 8683|  99.5k|        return &*current;
 8684|  99.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E9bulk_skipEm:
 8694|  99.4k|    {
 8695|  99.4k|        std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(n));
 8696|  99.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE17check_string_utf8ERSC_PKc:
18941|   102k|    {
18942|   102k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 102k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|   102k|        {
18944|   102k|            return true;
18945|   102k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE3keyERSC_:
13942|  59.5k|    {
13943|  59.5k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  59.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 59.5k, False: 0]
  ------------------
13944|  59.5k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  59.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 59.5k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  59.5k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  59.5k|        return true;
13949|  59.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE27parse_bson_element_internalEmm:
15392|  99.4k|    {
15393|  99.4k|        switch (element_type)
15394|  99.4k|        {
15395|  6.64k|            case 0x01: // double
  ------------------
  |  Branch (15395:13): [True: 6.64k, False: 92.8k]
  ------------------
15396|  6.64k|            {
15397|  6.64k|                double number{};
15398|  6.64k|                return get_number<double, true>(number) && emit_float(number);
  ------------------
  |  Branch (15398:24): [True: 6.59k, False: 57]
  |  Branch (15398:60): [True: 6.59k, False: 0]
  ------------------
15399|      0|            }
15400|       |
15401|  3.26k|            case 0x02: // string
  ------------------
  |  Branch (15401:13): [True: 3.26k, False: 96.2k]
  ------------------
15402|  3.26k|            {
15403|  3.26k|                std::int32_t len{};
15404|  3.26k|                string_t value;
15405|  3.26k|                return get_number<std::int32_t, true>(len) && get_bson_string(len, value) && sax->string(value);
  ------------------
  |  Branch (15405:24): [True: 3.22k, False: 36]
  |  Branch (15405:63): [True: 2.85k, False: 375]
  |  Branch (15405:94): [True: 2.85k, False: 0]
  ------------------
15406|      0|            }
15407|       |
15408|  5.03k|            case 0x03: // object
  ------------------
  |  Branch (15408:13): [True: 5.03k, False: 94.4k]
  ------------------
15409|  5.03k|            {
15410|  5.03k|                return open_bson_document(/*is_object*/true);
15411|      0|            }
15412|       |
15413|  8.58k|            case 0x04: // array
  ------------------
  |  Branch (15413:13): [True: 8.58k, False: 90.8k]
  ------------------
15414|  8.58k|            {
15415|  8.58k|                return open_bson_document(/*is_object*/false);
15416|      0|            }
15417|       |
15418|  5.43k|            case 0x05: // binary
  ------------------
  |  Branch (15418:13): [True: 5.43k, False: 94.0k]
  ------------------
15419|  5.43k|            {
15420|  5.43k|                std::int32_t len{};
15421|  5.43k|                binary_t value;
15422|  5.43k|                return get_number<std::int32_t, true>(len) && get_bson_binary(len, value) && sax->binary(value);
  ------------------
  |  Branch (15422:24): [True: 5.39k, False: 36]
  |  Branch (15422:63): [True: 5.02k, False: 369]
  |  Branch (15422:94): [True: 5.02k, False: 0]
  ------------------
15423|      0|            }
15424|       |
15425|  8.12k|            case 0x08: // boolean
  ------------------
  |  Branch (15425:13): [True: 8.12k, False: 91.3k]
  ------------------
15426|  8.12k|            {
15427|  8.12k|                std::uint8_t value{};
15428|  8.12k|                return get_number<std::uint8_t>(value) && sax->boolean(value != 0);
  ------------------
  |  Branch (15428:24): [True: 8.09k, False: 39]
  |  Branch (15428:59): [True: 8.09k, False: 0]
  ------------------
15429|      0|            }
15430|       |
15431|  51.5k|            case 0x0A: // null
  ------------------
  |  Branch (15431:13): [True: 51.5k, False: 47.8k]
  ------------------
15432|  51.5k|            {
15433|  51.5k|                return sax->null();
15434|      0|            }
15435|       |
15436|  3.64k|            case 0x10: // int32
  ------------------
  |  Branch (15436:13): [True: 3.64k, False: 95.8k]
  ------------------
15437|  3.64k|            {
15438|  3.64k|                std::int32_t value{};
15439|  3.64k|                return get_number<std::int32_t, true>(value) && emit_signed(value);
  ------------------
  |  Branch (15439:24): [True: 3.60k, False: 42]
  |  Branch (15439:65): [True: 3.60k, False: 0]
  ------------------
15440|      0|            }
15441|       |
15442|  2.65k|            case 0x12: // int64
  ------------------
  |  Branch (15442:13): [True: 2.65k, False: 96.8k]
  ------------------
15443|  2.65k|            {
15444|  2.65k|                std::int64_t value{};
15445|  2.65k|                return get_number<std::int64_t, true>(value) && emit_signed(value);
  ------------------
  |  Branch (15445:24): [True: 2.60k, False: 42]
  |  Branch (15445:65): [True: 2.60k, False: 0]
  ------------------
15446|      0|            }
15447|       |
15448|  4.11k|            case 0x11: // uint64
  ------------------
  |  Branch (15448:13): [True: 4.11k, False: 95.3k]
  ------------------
15449|  4.11k|            {
15450|  4.11k|                std::uint64_t value{};
15451|  4.11k|                return get_number<std::uint64_t, true>(value) && emit_unsigned(value);
  ------------------
  |  Branch (15451:24): [True: 4.02k, False: 96]
  |  Branch (15451:66): [True: 4.02k, False: 0]
  ------------------
15452|      0|            }
15453|       |
15454|    384|            default: // anything else is not supported (yet)
  ------------------
  |  Branch (15454:13): [True: 384, False: 99.0k]
  ------------------
15455|    384|            {
15456|    384|                return bson_unsupported_type_error(element_type_parse_position, element_type);
15457|      0|            }
15458|  99.4k|        }
15459|  99.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIdLb1EEEbRT_:
18739|  6.64k|    {
18740|       |        // read in the original format
18741|       |
18742|  6.64k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  6.64k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 6.63k]
  |  |  ------------------
  ------------------
18743|     19|        {
18744|     19|            return false;
18745|     19|        }
18746|  6.63k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 6.63k]
  |  Branch (18746:34): [True: 6.63k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  6.63k|        return true;
18751|  6.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIdEEbRT_PKc:
18667|  6.64k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  6.64k|        auto new_chars_read = ia.get_elements(&dest);
18671|  6.64k|        chars_read += new_chars_read;
18672|  6.64k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  6.64k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 57, False: 6.59k]
  |  |  ------------------
  ------------------
18673|     57|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     57|            ++chars_read;
18676|     57|            static_cast<void>(report_eof(context));
18677|     57|            return false;
18678|     57|        }
18679|  6.59k|        return true;
18680|  6.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIdEEmPT_m:
 8644|  6.64k|    {
 8645|  6.64k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  6.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIdEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  6.64k|    {
 8703|  6.64k|        const std::size_t wanted = count * sizeof(T);
 8704|  6.64k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  6.64k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  6.64k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  6.64k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 6.63k, False: 15]
  |  |  ------------------
  ------------------
 8707|  6.63k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  6.63k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  6.63k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 6.63k, False: 0]
  ------------------
 8712|  6.63k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  6.63k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 6.63k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  6.63k|            std::memcpy(dest, &*current, copied);
 8716|  6.63k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  6.63k|        }
 8718|  6.64k|        return copied;
 8719|  6.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10emit_floatIdEEbT_:
18825|  6.59k|    {
18826|  6.59k|        const auto result = static_cast<number_float_t>(number);
18827|  6.59k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  13.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 6.59k]
  |  |  |  Branch (1667:94): [True: 6.42k, False: 168]
  |  |  |  Branch (1667:94): [True: 0, False: 6.42k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  6.59k|        return sax->number_float(result, "");
18832|  6.59k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE16get_token_stringEv:
19152|    816|    {
19153|    816|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    816|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12number_floatEdRKSC_:
13908|  6.59k|    {
13909|  6.59k|        handle_value(val);
13910|  6.59k|        return true;
13911|  6.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRdEEPSG_OT_:
14030|  6.59k|    {
14031|  6.59k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 6.59k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  6.59k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  6.59k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.06k, False: 4.52k]
  |  Branch (14042:9): [True: 4.52k, False: 0]
  |  Branch (14042:9): [True: 6.59k, False: 0]
  ------------------
14043|       |
14044|  6.59k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.06k, False: 4.52k]
  ------------------
14045|  2.06k|        {
14046|  2.06k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.06k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.06k|        }
14054|       |
14055|  4.52k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.52k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 4.52k, False: 0]
  ------------------
14056|  4.52k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  4.52k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 4.52k, False: 0]
  ------------------
14057|  4.52k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  4.52k|        return object_element;
14064|  4.52k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRddTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  11.8k|    {
32411|  11.8k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  11.8k|        set_parents();
32413|  11.8k|        assert_invariant();
32414|  11.8k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIdvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERdEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  11.8k|    {
 7869|  11.8k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  11.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERdEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  11.8k|    {
 7813|  11.8k|        return to_json(j, std::forward<T>(val));
 7814|  11.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEdTnNS4_9enable_ifIXsr3std17is_floating_pointIT0_EE5valueEiE4typeELi0EEEvRT_SI_:
 7505|  11.8k|{
 7506|  11.8k|    external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
 7507|  11.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE7EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_14number_float_tE:
 7295|  11.8k|    {
 7296|  11.8k|        j.replace_value(value_t::number_float, val);
 7297|  11.8k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13replace_valueENS0_6detail7value_tERKNSE_10json_valueE:
31210|  60.9k|    {
31211|  60.9k|        m_data.m_value.destroy(m_data.m_type);
31212|  60.9k|        m_data.m_value = v;
31213|  60.9k|        m_data.m_type = t;
31214|  60.9k|        set_parents();
31215|  60.9k|        assert_invariant();
31216|  60.9k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Ed:
30661|  11.8k|        json_value(number_float_t v) noexcept : number_float(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15get_bson_stringIiEEbT_RSC_:
15333|  3.22k|    {
15334|  3.22k|        if (JSON_HEDLEY_UNLIKELY(len < 1))
  ------------------
  |  | 1667|  3.22k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 99, False: 3.12k]
  |  |  ------------------
  ------------------
15335|     99|        {
15336|     99|            return bson_length_error("string length must be at least 1, is ", len, "string");
15337|     99|        }
15338|       |
15339|  3.12k|        if (JSON_HEDLEY_UNLIKELY(!get_string(len - static_cast<NumberType>(1), result)))
  ------------------
  |  | 1667|  3.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 71, False: 3.05k]
  |  |  ------------------
  ------------------
15340|     71|        {
15341|     71|            return false;
15342|     71|        }
15343|       |
15344|  3.05k|        if (JSON_HEDLEY_UNLIKELY(get() != 0x00))
  ------------------
  |  | 1667|  3.05k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 63, False: 2.99k]
  |  |  ------------------
  ------------------
15345|     63|        {
15346|     63|            return last_byte_error(exception_id::unexpected_byte, "BSON string is not null-terminated", "string");
15347|     63|        }
15348|       |
15349|  2.99k|        return check_string_utf8(result, "string");
15350|  3.05k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE17bson_length_errorIiEEbPKcT_SQ_:
19088|    219|    {
19089|    219|        return last_byte_error(exception_id::unexpected_byte, concat(prefix, std::to_string(len)), context);
19090|    219|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRPKcS9_EEET_DpOT0_:
 5318|    438|{
 5319|    438|    OutStringType str;
 5320|    438|    str.reserve(concat_length(args...));
 5321|    438|    concat_into(str, std::forward<Args>(args)...);
 5322|    438|    return str;
 5323|    438|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|    438|{
 5282|    438|    out.append(std::forward<Arg>(arg));
 5283|    438|    concat_into(out, std::forward<Args>(rest)...);
 5284|    438|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_stringIiEEbT_RSC_:
18910|  3.12k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  3.12k|        return get_bytes(len, "string", result);
18921|  3.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIiSC_EEbT_PKcRT0_:
18998|  3.12k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  3.12k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  4.54k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 1.62k, False: 2.91k]
  ------------------
19003|  1.62k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  1.62k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.49k, False: 132]
  ------------------
19007|  1.62k|                                       ? static_cast<std::size_t>(len)
19008|  1.62k|                                       : chunk_size;
19009|  1.62k|            const std::size_t old_size = result.size();
19010|  1.62k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  1.62k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  1.62k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 1.62k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  1.62k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  1.62k|            chars_read += bytes_read;
19018|  1.62k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  1.62k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 213, False: 1.41k]
  |  |  ------------------
  ------------------
19019|    213|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    213|                result.resize(old_size + bytes_read);
19024|    213|                ++chars_read;
19025|    213|                current = char_traits<char_type>::eof();
19026|    213|                return unexpect_eof(context);
19027|    213|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  1.41k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  1.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 1.41k, False: 0]
  ------------------
19030|  1.41k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  1.41k|        }
19032|  2.91k|        return true;
19033|  3.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIcEEmPT_m:
 8644|  1.62k|    {
 8645|  1.62k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIcEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  1.62k|    {
 8703|  1.62k|        const std::size_t wanted = count * sizeof(T);
 8704|  1.62k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  1.62k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  1.62k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  1.62k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.48k, False: 141]
  |  |  ------------------
  ------------------
 8707|  1.48k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  1.48k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  1.48k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 1.48k, False: 0]
  ------------------
 8712|  1.48k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  1.48k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 1.48k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  1.48k|            std::memcpy(dest, &*current, copied);
 8716|  1.48k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  1.48k|        }
 8718|  1.62k|        return copied;
 8719|  1.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE6stringERSC_:
13914|  2.85k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  2.85k|        handle_value(std::move(val));
13918|  2.85k|        return true;
13919|  2.85k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueISC_EEPSG_OT_:
14030|  2.85k|    {
14031|  2.85k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 2.85k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  2.85k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.85k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.60k, False: 1.24k]
  |  Branch (14042:9): [True: 1.24k, False: 0]
  |  Branch (14042:9): [True: 2.85k, False: 0]
  ------------------
14043|       |
14044|  2.85k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.60k, False: 1.24k]
  ------------------
14045|  1.60k|        {
14046|  1.60k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.60k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.60k|        }
14054|       |
14055|  1.24k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.24k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.24k, False: 0]
  ------------------
14056|  1.24k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.24k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.24k, False: 0]
  ------------------
14057|  1.24k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.24k|        return object_element;
14064|  1.24k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ISA_SA_TnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SH_EE5valueEiE4typeELi0EEEOT_:
32410|  5.48k|    {
32411|  5.48k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  5.48k|        set_parents();
32413|  5.48k|        assert_invariant();
32414|  5.48k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvE7to_jsonINS0_10basic_jsonINS2_3mapENS2_6vectorES8_blmdS6_S1_NSD_IhNS6_IhEEEEvEES8_EEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSI_:
 7868|  5.48k|    {
 7869|  5.48k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  5.48k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEESD_EEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSI_:
 7812|  5.48k|    {
 7813|  5.48k|        return to_json(j, std::forward<T>(val));
 7814|  5.48k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_ONSH_8string_tE:
 7498|  5.48k|{
 7499|  5.48k|    external_constructor<value_t::string>::construct(j, std::move(s));
 7500|  5.48k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE3EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_ONSK_8string_tE:
 7257|  5.48k|    {
 7258|  5.48k|        const typename BasicJsonType::json_value value(std::move(s));
 7259|  5.48k|        j.replace_value(value_t::string, value);
 7260|  5.48k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2EOSA_:
30752|  5.48k|        json_value(string_t&& value) : string(create<string_t>(std::move(value))) {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createISA_JSA_EEEPT_DpOT0_:
30589|  5.48k|    {
30590|  5.48k|        AllocatorType<T> alloc;
30591|  5.48k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|  5.48k|        auto deleter = [&](T * obj)
30594|  5.48k|        {
30595|  5.48k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|  5.48k|        };
30597|  5.48k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|  5.48k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|  5.48k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|  5.48k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 5.48k, False: 0]
  ------------------
30600|  5.48k|        return obj.release();
30601|  5.48k|    }
_ZN8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEEC2Ev:
 7906|  10.2k|        : container_type()
 7907|  10.2k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15get_bson_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
15363|  5.39k|    {
15364|  5.39k|        if (JSON_HEDLEY_UNLIKELY(len < 0))
  ------------------
  |  | 1667|  5.39k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 120, False: 5.27k]
  |  |  ------------------
  ------------------
15365|    120|        {
15366|    120|            return bson_length_error("byte array length cannot be negative, is ", len, "binary");
15367|    120|        }
15368|       |
15369|       |        // All BSON binary values have a subtype
15370|  5.27k|        std::uint8_t subtype{};
15371|  5.27k|        if (JSON_HEDLEY_UNLIKELY(!get_number<std::uint8_t>(subtype)))
  ------------------
  |  | 1667|  5.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 9, False: 5.26k]
  |  |  ------------------
  ------------------
15372|      9|        {
15373|      9|            return false;
15374|      9|        }
15375|  5.26k|        result.set_subtype(subtype);
15376|       |
15377|  5.26k|        return get_binary(len, result);
15378|  5.27k|    }
_ZN8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEE11set_subtypeEm:
 7947|  9.86k|    {
 7948|  9.86k|        m_subtype = subtype_;
 7949|  9.86k|        m_has_subtype = true;
 7950|  9.86k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  5.25k|    {
18973|  5.25k|        return get_bytes(len, "binary", result);
18974|  5.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIiNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  5.25k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  5.25k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  7.13k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 2.10k, False: 5.02k]
  ------------------
19003|  2.10k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  2.10k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.98k, False: 117]
  ------------------
19007|  2.10k|                                       ? static_cast<std::size_t>(len)
19008|  2.10k|                                       : chunk_size;
19009|  2.10k|            const std::size_t old_size = result.size();
19010|  2.10k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  2.10k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  2.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 2.10k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  2.10k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  2.10k|            chars_read += bytes_read;
19018|  2.10k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  2.10k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 222, False: 1.88k]
  |  |  ------------------
  ------------------
19019|    222|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    222|                result.resize(old_size + bytes_read);
19024|    222|                ++chars_read;
19025|    222|                current = char_traits<char_type>::eof();
19026|    222|                return unexpect_eof(context);
19027|    222|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  1.88k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  1.88k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 1.88k, False: 0]
  ------------------
19030|  1.88k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  1.88k|        }
19032|  5.02k|        return true;
19033|  5.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIhEEmPT_m:
 8644|  15.5k|    {
 8645|  15.5k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  15.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIhEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  15.5k|    {
 8703|  15.5k|        const std::size_t wanted = count * sizeof(T);
 8704|  15.5k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  15.5k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  15.5k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  15.5k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 15.2k, False: 210]
  |  |  ------------------
  ------------------
 8707|  15.2k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  15.2k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  15.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 15.2k, False: 0]
  ------------------
 8712|  15.2k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  15.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 15.2k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  15.2k|            std::memcpy(dest, &*current, copied);
 8716|  15.2k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  15.2k|        }
 8718|  15.5k|        return copied;
 8719|  15.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  5.02k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  5.02k|        handle_value(std::move(val));
13926|  5.02k|        return true;
13927|  5.02k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
14030|  5.02k|    {
14031|  5.02k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 5.02k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  5.02k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  5.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.47k, False: 2.55k]
  |  Branch (14042:9): [True: 2.55k, False: 0]
  |  Branch (14042:9): [True: 5.02k, False: 0]
  ------------------
14043|       |
14044|  5.02k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.47k, False: 2.55k]
  ------------------
14045|  2.47k|        {
14046|  2.47k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.47k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.47k|        }
14054|       |
14055|  2.55k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.55k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.55k, False: 0]
  ------------------
14056|  2.55k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.55k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.55k, False: 0]
  ------------------
14057|  2.55k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.55k|        return object_element;
14064|  2.55k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2INS0_27byte_container_with_subtypeISD_EESH_TnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SJ_EE5valueEiE4typeELi0EEEOT_:
32410|  9.41k|    {
32411|  9.41k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  9.41k|        set_parents();
32413|  9.41k|        assert_invariant();
32414|  9.41k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerINS0_27byte_container_with_subtypeINSt3__16vectorIhNS3_9allocatorIhEEEEEEvE7to_jsonINS0_10basic_jsonINS3_3mapES4_NS3_12basic_stringIcNS3_11char_traitsIcEENS5_IcEEEEblmdS5_S1_S7_vEES8_EEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSK_:
 7868|  9.41k|    {
 7869|  9.41k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  9.41k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS0_27byte_container_with_subtypeISG_EEEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSK_:
 7812|  9.41k|    {
 7813|  9.41k|        return to_json(j, std::forward<T>(val));
 7814|  9.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_RKNSH_8binary_tE:
 7637|  9.41k|{
 7638|  9.41k|    external_constructor<value_t::binary>::construct(j, bin);
 7639|  9.41k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE8EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_RKNSK_8binary_tE:
 7277|  9.41k|    {
 7278|  9.41k|        const typename BasicJsonType::json_value value(b);
 7279|  9.41k|        j.replace_value(value_t::binary, value);
 7280|  9.41k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ERKNS0_27byte_container_with_subtypeISD_EE:
30773|  9.41k|        json_value(const binary_t& value) : binary(create<binary_t>(value)) {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS0_27byte_container_with_subtypeISD_EEJRKSH_EEEPT_DpOT0_:
30589|  9.41k|    {
30590|  9.41k|        AllocatorType<T> alloc;
30591|  9.41k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|  9.41k|        auto deleter = [&](T * obj)
30594|  9.41k|        {
30595|  9.41k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|  9.41k|        };
30597|  9.41k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|  9.41k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|  9.41k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|  9.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 9.41k, False: 0]
  ------------------
30600|  9.41k|        return obj.release();
30601|  9.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIhLb0EEEbRT_:
18739|  13.4k|    {
18740|       |        // read in the original format
18741|       |
18742|  13.4k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  13.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 22, False: 13.3k]
  |  |  ------------------
  ------------------
18743|     22|        {
18744|     22|            return false;
18745|     22|        }
18746|  13.3k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 13.3k, False: 44]
  |  Branch (18746:34): [Folded, False: 13.3k]
  |  Branch (18746:57): [True: 0, False: 13.3k]
  ------------------
18747|  13.3k|        {
18748|  13.3k|            byte_swap(result);
18749|  13.3k|        }
18750|  13.3k|        return true;
18751|  13.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIhEEbRT_PKc:
18667|  13.4k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  13.4k|        auto new_chars_read = ia.get_elements(&dest);
18671|  13.4k|        chars_read += new_chars_read;
18672|  13.4k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  13.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 66, False: 13.3k]
  |  |  ------------------
  ------------------
18673|     66|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     66|            ++chars_read;
18676|     66|            static_cast<void>(report_eof(context));
18677|     66|            return false;
18678|     66|        }
18679|  13.3k|        return true;
18680|  13.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIhEEvRT_:
18698|  13.3k|    {
18699|  13.3k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  13.3k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  13.3k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 13.3k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  13.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE7booleanEb:
13890|  8.09k|    {
13891|  8.09k|        handle_value(val);
13892|  8.09k|        return true;
13893|  8.09k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRbEEPSG_OT_:
14030|  8.09k|    {
14031|  8.09k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 8.09k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  8.09k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.09k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 5.16k, False: 2.92k]
  |  Branch (14042:9): [True: 2.92k, False: 0]
  |  Branch (14042:9): [True: 8.09k, False: 0]
  ------------------
14043|       |
14044|  8.09k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 5.16k, False: 2.92k]
  ------------------
14045|  5.16k|        {
14046|  5.16k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  5.16k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  5.16k|        }
14054|       |
14055|  2.92k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.92k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.92k, False: 0]
  ------------------
14056|  2.92k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.92k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.92k, False: 0]
  ------------------
14057|  2.92k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.92k|        return object_element;
14064|  2.92k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRbbTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  15.4k|    {
32411|  15.4k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  15.4k|        set_parents();
32413|  15.4k|        assert_invariant();
32414|  15.4k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIbvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERbEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  15.4k|    {
 7869|  15.4k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  15.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERbEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  15.4k|    {
 7813|  15.4k|        return to_json(j, std::forward<T>(val));
 7814|  15.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEbTnNS4_9enable_ifIXsr3std7is_sameIT0_NT_9boolean_tEEE5valueEiE4typeELi0EEEvRSJ_SI_:
 7472|  15.4k|{
 7473|  15.4k|    external_constructor<value_t::boolean>::construct(j, b);
 7474|  15.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE4EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_9boolean_tE:
 7240|  15.4k|    {
 7241|  15.4k|        j.replace_value(value_t::boolean, b);
 7242|  15.4k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Eb:
30655|  15.4k|        json_value(boolean_t v) noexcept : boolean(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE4nullEv:
13884|  51.5k|    {
13885|  51.5k|        handle_value(nullptr);
13886|  51.5k|        return true;
13887|  51.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIDnEEPSG_OT_:
14030|  51.5k|    {
14031|  51.5k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 51.5k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  51.5k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  51.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 18.7k, False: 32.8k]
  |  Branch (14042:9): [True: 32.8k, False: 0]
  |  Branch (14042:9): [True: 51.5k, False: 0]
  ------------------
14043|       |
14044|  51.5k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 18.7k, False: 32.8k]
  ------------------
14045|  18.7k|        {
14046|  18.7k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  18.7k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  18.7k|        }
14054|       |
14055|  32.8k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  32.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 32.8k, False: 0]
  ------------------
14056|  32.8k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  32.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 32.8k, False: 0]
  ------------------
14057|  32.8k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  32.8k|        return object_element;
14064|  32.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE11emit_signedIiEEbT_:
18771|  3.60k|    {
18772|  3.60k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  3.60k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.60k, False: 0]
  |  |  ------------------
  ------------------
18773|  3.60k|        {
18774|  3.60k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  3.60k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIliEEbT0_:
 5101|  6.56k|{
 5102|  6.56k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  6.56k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IliLb1EvE4testEi:
 5094|  6.56k|    {
 5095|  6.56k|        return true;
 5096|  6.56k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE14number_integerEl:
13896|  6.21k|    {
13897|  6.21k|        handle_value(val);
13898|  6.21k|        return true;
13899|  6.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRlEEPSG_OT_:
14030|  6.21k|    {
14031|  6.21k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 6.21k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  6.21k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  6.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.18k, False: 4.03k]
  |  Branch (14042:9): [True: 4.03k, False: 0]
  |  Branch (14042:9): [True: 6.21k, False: 0]
  ------------------
14043|       |
14044|  6.21k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.18k, False: 4.03k]
  ------------------
14045|  2.18k|        {
14046|  2.18k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.18k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.18k|        }
14054|       |
14055|  4.03k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.03k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 4.03k, False: 0]
  ------------------
14056|  4.03k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  4.03k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 4.03k, False: 0]
  ------------------
14057|  4.03k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  4.03k|        return object_element;
14064|  4.03k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRllTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  10.9k|    {
32411|  10.9k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  10.9k|        set_parents();
32413|  10.9k|        assert_invariant();
32414|  10.9k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIlvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERlEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  10.9k|    {
 7869|  10.9k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  10.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERlEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  10.9k|    {
 7813|  10.9k|        return to_json(j, std::forward<T>(val));
 7814|  10.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEElTnNS4_9enable_ifIXsr33is_compatible_number_integer_typeIT_T0_EE5valueEiE4typeELi0EEEvRSI_SJ_:
 7519|  10.9k|{
 7520|  10.9k|    external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
 7521|  10.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE5EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_16number_integer_tE:
 7315|  10.9k|    {
 7316|  10.9k|        j.replace_value(value_t::number_integer, val);
 7317|  10.9k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2El:
30657|  10.9k|        json_value(number_integer_t v) noexcept : number_integer(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE15number_unsignedEm:
13902|  4.02k|    {
13903|  4.02k|        handle_value(val);
13904|  4.02k|        return true;
13905|  4.02k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRmEEPSG_OT_:
14030|  4.02k|    {
14031|  4.02k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 4.02k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  4.02k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.34k, False: 2.67k]
  |  Branch (14042:9): [True: 2.67k, False: 0]
  |  Branch (14042:9): [True: 4.02k, False: 0]
  ------------------
14043|       |
14044|  4.02k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.34k, False: 2.67k]
  ------------------
14045|  1.34k|        {
14046|  1.34k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.34k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.34k|        }
14054|       |
14055|  2.67k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.67k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.67k, False: 0]
  ------------------
14056|  2.67k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.67k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.67k, False: 0]
  ------------------
14057|  2.67k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.67k|        return object_element;
14064|  2.67k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRmmTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  7.81k|    {
32411|  7.81k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  7.81k|        set_parents();
32413|  7.81k|        assert_invariant();
32414|  7.81k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerImvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERmEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  7.81k|    {
 7869|  7.81k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  7.81k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERmEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  7.81k|    {
 7813|  7.81k|        return to_json(j, std::forward<T>(val));
 7814|  7.81k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEmTnNS4_9enable_ifIXsr26is_compatible_integer_typeINS4_11conditionalIXsr3std7is_sameINT_16number_integer_tENSJ_17number_unsigned_tEEE5valueENS1_27same_as_number_integer_typeESL_E4typeET0_EE5valueEiE4typeELi0EEEvRSJ_SP_:
 7512|  7.81k|{
 7513|  7.81k|    external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
 7514|  7.81k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE6EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_17number_unsigned_tE:
 7305|  7.81k|    {
 7306|  7.81k|        j.replace_value(value_t::number_unsigned, val);
 7307|  7.81k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Em:
30659|  7.81k|        json_value(detail::number_unsigned_overload_type<NumberIntegerType, NumberUnsignedType> v) noexcept : number_unsigned(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIlLb1EEEbRT_:
18739|  2.65k|    {
18740|       |        // read in the original format
18741|       |
18742|  2.65k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  2.65k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 14, False: 2.63k]
  |  |  ------------------
  ------------------
18743|     14|        {
18744|     14|            return false;
18745|     14|        }
18746|  2.63k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 2.63k]
  |  Branch (18746:34): [True: 2.63k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  2.63k|        return true;
18751|  2.65k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIlEEbRT_PKc:
18667|  2.65k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  2.65k|        auto new_chars_read = ia.get_elements(&dest);
18671|  2.65k|        chars_read += new_chars_read;
18672|  2.65k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  2.65k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 42, False: 2.60k]
  |  |  ------------------
  ------------------
18673|     42|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     42|            ++chars_read;
18676|     42|            static_cast<void>(report_eof(context));
18677|     42|            return false;
18678|     42|        }
18679|  2.60k|        return true;
18680|  2.65k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIlEEmPT_m:
 8644|  2.65k|    {
 8645|  2.65k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  2.65k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIlEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  2.65k|    {
 8703|  2.65k|        const std::size_t wanted = count * sizeof(T);
 8704|  2.65k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  2.65k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  2.65k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  2.65k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.63k, False: 15]
  |  |  ------------------
  ------------------
 8707|  2.63k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  2.63k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  2.63k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 2.63k, False: 0]
  ------------------
 8712|  2.63k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  2.63k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 2.63k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  2.63k|            std::memcpy(dest, &*current, copied);
 8716|  2.63k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  2.63k|        }
 8718|  2.65k|        return copied;
 8719|  2.65k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE11emit_signedIlEEbT_:
18771|  2.60k|    {
18772|  2.60k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  2.60k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.60k, False: 0]
  |  |  ------------------
  ------------------
18773|  2.60k|        {
18774|  2.60k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  2.60k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIllEEbT0_:
 5101|  4.39k|{
 5102|  4.39k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  4.39k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IllLb1EvE4testEl:
 5094|  4.39k|    {
 5095|  4.39k|        return true;
 5096|  4.39k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberImLb1EEEbRT_:
18739|  4.11k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.11k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.11k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 32, False: 4.08k]
  |  |  ------------------
  ------------------
18743|     32|        {
18744|     32|            return false;
18745|     32|        }
18746|  4.08k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 4.08k]
  |  Branch (18746:34): [True: 4.08k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  4.08k|        return true;
18751|  4.11k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toImEEbRT_PKc:
18667|  4.11k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.11k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.11k|        chars_read += new_chars_read;
18672|  4.11k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.11k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 96, False: 4.02k]
  |  |  ------------------
  ------------------
18673|     96|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     96|            ++chars_read;
18676|     96|            static_cast<void>(report_eof(context));
18677|     96|            return false;
18678|     96|        }
18679|  4.02k|        return true;
18680|  4.11k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsImEEmPT_m:
 8644|  4.11k|    {
 8645|  4.11k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  4.11k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implImEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  4.11k|    {
 8703|  4.11k|        const std::size_t wanted = count * sizeof(T);
 8704|  4.11k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  4.11k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  4.11k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  4.11k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 4.07k, False: 48]
  |  |  ------------------
  ------------------
 8707|  4.07k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  4.07k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  4.07k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 4.07k, False: 0]
  ------------------
 8712|  4.07k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  4.07k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 4.07k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  4.07k|            std::memcpy(dest, &*current, copied);
 8716|  4.07k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  4.07k|        }
 8718|  4.11k|        return copied;
 8719|  4.11k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13emit_unsignedImEEbT_:
18799|  4.02k|    {
18800|  4.02k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  4.02k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 4.02k, False: 0]
  |  |  ------------------
  ------------------
18801|  4.02k|        {
18802|  4.02k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  4.02k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  4.02k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImmEEbT0_:
 5101|  7.81k|{
 5102|  7.81k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  7.81k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImmLb1EvE4testEm:
 5094|  7.81k|    {
 5095|  7.81k|        return true;
 5096|  7.81k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE27bson_unsupported_type_errorEmm:
19100|    384|    {
19101|    384|        const std::string cr_str = hex_byte(static_cast<std::uint8_t>(element_type));
19102|    384|        return sax->parse_error(position, cr_str,
19103|    384|                                parse_error::create(exception_id::bson_unsupported_type, position, concat("Unsupported BSON record type 0x", cr_str), nullptr));
19104|    384|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA32_KcRKS9_EEET_DpOT0_:
 5318|    768|{
 5319|    768|    OutStringType str;
 5320|    768|    str.reserve(concat_length(args...));
 5321|    768|    concat_into(str, std::forward<Args>(args)...);
 5322|    768|    return str;
 5323|    768|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA32_KcJRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|    768|{
 5282|    768|    out.append(std::forward<Arg>(arg));
 5283|    768|    concat_into(out, std::forward<Args>(rest)...);
 5284|    768|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA16_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|     66|{
 5223|     66|    return ::strlen(cstr) + concat_length(rest...);
 5224|     66|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|     66|{
 5282|     66|    out.append(std::forward<Arg>(arg));
 5283|     66|    concat_into(out, std::forward<Args>(rest)...);
 5284|     66|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA16_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|     66|{
 5282|     66|    out.append(std::forward<Arg>(arg));
 5283|     66|    concat_into(out, std::forward<Args>(rest)...);
 5284|     66|}
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castImmTnNSt3__19enable_ifIXsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 4994|  1.94k|{
 4995|  1.94k|    return value;
 4996|  1.94k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE3getEv:
18652|   131k|    {
18653|   131k|        ++chars_read;
18654|   131k|        return current = ia.get_character();
18655|   131k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E13get_characterEv:
 8590|   131k|    {
 8591|   131k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|   131k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 121k, False: 10.8k]
  |  |  ------------------
  ------------------
 8592|   121k|        {
 8593|   121k|            auto result = char_traits<char_type>::to_int_type(*current);
 8594|   121k|            std::advance(current, 1);
 8595|   121k|            return result;
 8596|   121k|        }
 8597|       |
 8598|  10.8k|        ++eof_reads;
 8599|  10.8k|        return char_traits<char_type>::eof();
 8600|   131k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE11to_int_typeEh:
 4289|   274k|    {
 4290|   274k|        return static_cast<int_type>(c);
 4291|   274k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSS_:
19116|    783|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    783|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    783|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 750, False: 33]
  ------------------
19120|    783|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRKS9_RPKcRA16_SC_S9_EEET_DpOT0_:
 5318|     66|{
 5319|     66|    OutStringType str;
 5320|     66|    str.reserve(concat_length(args...));
 5321|     66|    concat_into(str, std::forward<Args>(args)...);
 5322|     66|    return str;
 5323|     66|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJPKcA16_cS9_EEEmRKT_DpRKT0_:
 5228|     66|{
 5229|     66|    return str.size() + concat_length(rest...);
 5230|     66|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRPKcRA16_SC_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|     66|{
 5282|     66|    out.append(std::forward<Arg>(arg));
 5283|     66|    concat_into(out, std::forward<Args>(rest)...);
 5284|     66|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ENS0_6detail7value_tE:
32384|  50.7k|        : m_data(stored_kind(v))
32385|  50.7k|    {
32386|  50.7k|        assert_invariant();
32387|  50.7k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11stored_kindENS0_6detail7value_tE:
30581|  50.7k|    {
30582|  50.7k|        return (std::is_same<number_integer_t, number_unsigned_t>::value && t == value_t::number_unsigned) ? value_t::number_integer : t;
  ------------------
  |  Branch (30582:17): [Folded, False: 50.7k]
  |  Branch (30582:77): [True: 0, False: 0]
  ------------------
30583|  50.7k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2ENS0_6detail7value_tE:
36324|  50.7k|            : m_type(v), m_value(v)
36325|  50.7k|        {
36326|  50.7k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ENS0_6detail7value_tE:
30664|  50.7k|        {
30665|  50.7k|            switch (t)
30666|  50.7k|            {
30667|  33.0k|                case value_t::object:
  ------------------
  |  Branch (30667:17): [True: 33.0k, False: 17.6k]
  ------------------
30668|  49.5k|                case value_t::array:
  ------------------
  |  Branch (30668:17): [True: 16.4k, False: 34.3k]
  ------------------
30669|  49.5k|                case value_t::string:
  ------------------
  |  Branch (30669:17): [True: 0, False: 50.7k]
  ------------------
30670|  49.5k|                case value_t::binary:
  ------------------
  |  Branch (30670:17): [True: 0, False: 50.7k]
  ------------------
30671|  49.5k|                {
30672|       |                    // allocating: kept out of line, so the scalar cases below inline
30673|  49.5k|                    init_owned(t);
30674|  49.5k|                    break;
30675|  49.5k|                }
30676|       |
30677|      0|                case value_t::boolean:
  ------------------
  |  Branch (30677:17): [True: 0, False: 50.7k]
  ------------------
30678|      0|                {
30679|      0|                    boolean = static_cast<boolean_t>(false);
30680|      0|                    break;
30681|  49.5k|                }
30682|       |
30683|      0|                case value_t::number_integer:
  ------------------
  |  Branch (30683:17): [True: 0, False: 50.7k]
  ------------------
30684|      0|                {
30685|      0|                    number_integer = static_cast<number_integer_t>(0);
30686|      0|                    break;
30687|  49.5k|                }
30688|       |
30689|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (30689:17): [True: 0, False: 50.7k]
  ------------------
30690|      0|                {
30691|      0|                    number_unsigned = static_cast<number_unsigned_t>(0);
30692|      0|                    break;
30693|  49.5k|                }
30694|       |
30695|      0|                case value_t::number_float:
  ------------------
  |  Branch (30695:17): [True: 0, False: 50.7k]
  ------------------
30696|      0|                {
30697|      0|                    number_float = static_cast<number_float_t>(0.0);
30698|      0|                    break;
30699|  49.5k|                }
30700|       |
30701|      0|                case value_t::null:
  ------------------
  |  Branch (30701:17): [True: 0, False: 50.7k]
  ------------------
30702|      0|                {
30703|      0|                    object = nullptr;  // silence warning, see #821
30704|      0|                    break;
30705|  49.5k|                }
30706|       |
30707|  1.25k|                case value_t::discarded:
  ------------------
  |  Branch (30707:17): [True: 1.25k, False: 49.5k]
  ------------------
30708|  1.25k|                default:
  ------------------
  |  Branch (30708:17): [True: 0, False: 50.7k]
  ------------------
30709|  1.25k|                {
30710|  1.25k|                    object = nullptr;  // silence warning, see #821
30711|  1.25k|                    if (JSON_HEDLEY_UNLIKELY(t == value_t::null))
  ------------------
  |  | 1667|  1.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.25k]
  |  |  ------------------
  ------------------
30712|      0|                    {
30713|      0|                        detail::throw_literal<other_error>(detail::exception_id::internal_error, "961c151d2e87f2686a955a9be24d316f1362bf21 3.12.0", nullptr); // LCOV_EXCL_LINE
30714|      0|                    }
30715|  1.25k|                    break;
30716|  1.25k|                }
30717|  50.7k|            }
30718|  50.7k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10init_ownedENS0_6detail7value_tE:
30722|  49.5k|        {
30723|  49.5k|            switch (t)
30724|  49.5k|            {
30725|  33.0k|                case value_t::object:
  ------------------
  |  Branch (30725:17): [True: 33.0k, False: 16.4k]
  ------------------
30726|  33.0k|                    object = create<object_t>();
30727|  33.0k|                    break;
30728|  16.4k|                case value_t::array:
  ------------------
  |  Branch (30728:17): [True: 16.4k, False: 33.0k]
  ------------------
30729|  16.4k|                    array = create<array_t>();
30730|  16.4k|                    break;
30731|      0|                case value_t::string:
  ------------------
  |  Branch (30731:17): [True: 0, False: 49.5k]
  ------------------
30732|      0|                    string = create<string_t>("");
30733|      0|                    break;
30734|      0|                case value_t::binary:
  ------------------
  |  Branch (30734:17): [True: 0, False: 49.5k]
  ------------------
30735|      0|                    binary = create<binary_t>();
30736|      0|                    break;
30737|      0|                case value_t::null:
  ------------------
  |  Branch (30737:17): [True: 0, False: 49.5k]
  ------------------
30738|      0|                case value_t::boolean:
  ------------------
  |  Branch (30738:17): [True: 0, False: 49.5k]
  ------------------
30739|      0|                case value_t::number_integer:
  ------------------
  |  Branch (30739:17): [True: 0, False: 49.5k]
  ------------------
30740|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (30740:17): [True: 0, False: 49.5k]
  ------------------
30741|      0|                case value_t::number_float:
  ------------------
  |  Branch (30741:17): [True: 0, False: 49.5k]
  ------------------
30742|      0|                case value_t::discarded:
  ------------------
  |  Branch (30742:17): [True: 0, False: 49.5k]
  ------------------
30743|      0|                default:
  ------------------
  |  Branch (30743:17): [True: 0, False: 49.5k]
  ------------------
30744|      0|                    break;
30745|  49.5k|            }
30746|  49.5k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEJEEEPT_DpOT0_:
30589|  33.0k|    {
30590|  33.0k|        AllocatorType<T> alloc;
30591|  33.0k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|  33.0k|        auto deleter = [&](T * obj)
30594|  33.0k|        {
30595|  33.0k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|  33.0k|        };
30597|  33.0k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|  33.0k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|  33.0k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|  33.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 33.0k, False: 0]
  ------------------
30600|  33.0k|        return obj.release();
30601|  33.0k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS4_ISE_NS8_ISE_EEEEJEEEPT_DpOT0_:
30589|  16.4k|    {
30590|  16.4k|        AllocatorType<T> alloc;
30591|  16.4k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|  16.4k|        auto deleter = [&](T * obj)
30594|  16.4k|        {
30595|  16.4k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|  16.4k|        };
30597|  16.4k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|  16.4k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|  16.4k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|  16.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 16.4k, False: 0]
  ------------------
30600|  16.4k|        return obj.release();
30601|  16.4k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEaSESE_:
32797|   132k|    {
32798|       |        // check that the passed value is valid
32799|   132k|        other.assert_invariant();
32800|       |
32801|   132k|        using std::swap;
32802|   132k|        swap(m_data.m_type, other.m_data.m_type);
32803|   132k|        swap(m_data.m_value, other.m_data.m_value);
32804|       |
32805|       |#if JSON_DIAGNOSTIC_POSITIONS
32806|       |        swap(start_position, other.start_position);
32807|       |        swap(end_position, other.end_position);
32808|       |#endif
32809|       |
32810|   132k|        json_base_class_t::operator=(std::move(other));
32811|       |
32812|   132k|        set_parents();
32813|   132k|        assert_invariant();
32814|   132k|        return *this;
32815|   132k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEED2Ev:
14954|  12.9k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEED2Ev:
13881|  12.9k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__16vectorIhNS3_9allocatorIhEEEETnNS3_9enable_ifIXsr28is_contiguous_byte_containerIT_EE5valueEiE4typeELi0EEEDTcl13input_adaptercldtfp_4dataEplcldtfp_4dataEcldtfp_4sizeEEERKS9_:
 9104|  9.37k|{
 9105|  9.37k|    return input_adapter(container.data(), container.data() + container.size());
 9106|  9.37k|}
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterIPKhS4_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES6_S7_:
 9007|  12.9k|{
 9008|  12.9k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
 9009|  12.9k|    return factory_type::create(first, last);
 9010|  12.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryIPKhS4_vE6createES4_S4_:
 8935|  12.9k|    {
 8936|  12.9k|        return adapter_type(std::move(first), std::move(last));
 8937|  12.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_EC2ES4_S4_:
 8586|  12.9k|        : begin(first), current(std::move(first)), end(std::move(last))
 8587|  12.9k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE7to_bsonERKSE_NS0_6detail15error_handler_tE:
36527|  4.57k|    {
36528|  4.57k|        std::vector<std::uint8_t> result;
36529|  4.57k|        result.reserve(detail::binary_reserve_hint(j));
36530|  4.57k|        vector_writer(result, error_handler).write_bson(j);
36531|  4.57k|        return result;
36532|  4.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19binary_reserve_hintINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEmRKT_:
23013|  4.57k|{
23014|  4.57k|    if (j.is_array())
  ------------------
  |  Branch (23014:9): [True: 0, False: 4.57k]
  ------------------
23015|      0|    {
23016|      0|        return j.size() + 1;
23017|      0|    }
23018|       |
23019|  4.57k|    if (j.is_object())
  ------------------
  |  Branch (23019:9): [True: 4.57k, False: 0]
  ------------------
23020|  4.57k|    {
23021|  4.57k|        return (j.size() * 2) + 1;
23022|  4.57k|    }
23023|       |
23024|      0|    return 0;
23025|  4.57k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13vector_writerIhEENS0_6detail13binary_writerISE_T_NSG_18output_vector_sinkISI_NS8_ISI_EEEEEERNS4_ISI_SK_EENSG_15error_handler_tE:
30271|  4.57k|    {
30272|  4.57k|        return vector_binary_writer<CharType>(::nlohmann::detail::output_vector_sink<CharType>(v), error_handler);
30273|  4.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEEC2ERNS3_6vectorIhS5_EE:
22740|  4.57k|        : v(vec)
22741|  4.57k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEEC2ESI_NS1_15error_handler_tE:
23055|  4.57k|        : oa(std::move(sink)), error_handler(error_handler_)
23056|  4.57k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE10write_bsonERKSG_:
23086|  4.57k|    {
23087|  4.57k|        switch (j.type())
23088|  4.57k|        {
23089|  4.57k|            case value_t::object:
  ------------------
  |  Branch (23089:13): [True: 4.57k, False: 0]
  ------------------
23090|  4.57k|            {
23091|  4.57k|                write_bson_document(j);
23092|  4.57k|                break;
23093|      0|            }
23094|       |
23095|      0|            case value_t::null:
  ------------------
  |  Branch (23095:13): [True: 0, False: 4.57k]
  ------------------
23096|      0|            case value_t::array:
  ------------------
  |  Branch (23096:13): [True: 0, False: 4.57k]
  ------------------
23097|      0|            case value_t::string:
  ------------------
  |  Branch (23097:13): [True: 0, False: 4.57k]
  ------------------
23098|      0|            case value_t::boolean:
  ------------------
  |  Branch (23098:13): [True: 0, False: 4.57k]
  ------------------
23099|      0|            case value_t::number_integer:
  ------------------
  |  Branch (23099:13): [True: 0, False: 4.57k]
  ------------------
23100|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (23100:13): [True: 0, False: 4.57k]
  ------------------
23101|      0|            case value_t::number_float:
  ------------------
  |  Branch (23101:13): [True: 0, False: 4.57k]
  ------------------
23102|      0|            case value_t::binary:
  ------------------
  |  Branch (23102:13): [True: 0, False: 4.57k]
  ------------------
23103|      0|            case value_t::discarded:
  ------------------
  |  Branch (23103:13): [True: 0, False: 4.57k]
  ------------------
23104|      0|            default:
  ------------------
  |  Branch (23104:13): [True: 0, False: 4.57k]
  ------------------
23105|      0|            {
23106|      0|                JSON_THROW(type_error::create(exception_id::type_not_serializable, concat("to serialize to BSON, top-level type must be object, but is ", j.type_name()), &j));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
23107|      0|            }
23108|  4.57k|        }
23109|  4.57k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4typeEv:
32866|  50.6k|    {
32867|  50.6k|        return m_data.m_type;
32868|  50.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE19write_bson_documentERKSG_:
24775|  4.57k|    {
24776|  4.57k|        std::vector<std::size_t> nested_sizes;
24777|  4.57k|        const std::size_t document_size = calc_bson_sizes(document, nested_sizes);
24778|  4.57k|        write_number<std::int32_t>(to_bson_length(document_size), true);
24779|       |
24780|       |        // the object or array whose entries are being written, and the ones
24781|       |        // it is in
24782|  4.57k|        bson_frame current(&document);
24783|  4.57k|        std::vector<bson_frame> parents;
24784|  4.57k|        std::size_t next_size = 0;
24785|       |        // string_t need not be default constructible
24786|  4.57k|        string_t index_name("", 0);
24787|       |
24788|  8.96k|        while (true)
  ------------------
  |  Branch (24788:16): [True: 8.96k, Folded]
  ------------------
24789|  8.96k|        {
24790|       |            // write entries until the current object or array is done, or an
24791|       |            // entry is an object or array itself
24792|  8.96k|            const BasicJsonType* nested = nullptr;
24793|  8.96k|            if (current.value->is_object())
  ------------------
  |  Branch (24793:17): [True: 6.70k, False: 2.25k]
  ------------------
24794|  6.70k|            {
24795|  6.70k|                const auto& object = *current.value->m_data.m_value.object;
24796|  24.2k|                while (nested == nullptr && current.member != object.cend())
  ------------------
  |  Branch (24796:24): [True: 22.9k, False: 1.31k]
  |  Branch (24796:24): [True: 17.5k, False: 6.70k]
  |  Branch (24796:45): [True: 17.5k, False: 5.39k]
  ------------------
24797|  17.5k|                {
24798|  17.5k|                    const auto& el = *current.member;
24799|  17.5k|                    ++current.member;
24800|  17.5k|                    if (el.second.is_structured())
  ------------------
  |  Branch (24800:25): [True: 1.31k, False: 16.2k]
  ------------------
24801|  1.31k|                    {
24802|  1.31k|                        write_bson_nested_head(el.first, el.second, nested_sizes[next_size++]);
24803|  1.31k|                        nested = &el.second;
24804|  1.31k|                    }
24805|  16.2k|                    else
24806|  16.2k|                    {
24807|  16.2k|                        write_bson_value(el.first, el.second);
24808|  16.2k|                    }
24809|  17.5k|                }
24810|  6.70k|            }
24811|  2.25k|            else
24812|  2.25k|            {
24813|  2.25k|                const auto& array = *current.value->m_data.m_value.array;
24814|  9.89k|                while (nested == nullptr && current.index < array.size())
  ------------------
  |  Branch (24814:24): [True: 9.00k, False: 882]
  |  Branch (24814:45): [True: 7.63k, False: 1.37k]
  ------------------
24815|  7.63k|                {
24816|  7.63k|                    const BasicJsonType& el = array[current.index];
24817|  7.63k|                    create_bson_index_name(current.index, index_name);
24818|  7.63k|                    ++current.index;
24819|  7.63k|                    if (el.is_structured())
  ------------------
  |  Branch (24819:25): [True: 882, False: 6.75k]
  ------------------
24820|    882|                    {
24821|    882|                        write_bson_nested_head(index_name, el, nested_sizes[next_size++]);
24822|    882|                        nested = &el;
24823|    882|                    }
24824|  6.75k|                    else
24825|  6.75k|                    {
24826|  6.75k|                        write_bson_value(index_name, el);
24827|  6.75k|                    }
24828|  7.63k|                }
24829|  2.25k|            }
24830|       |
24831|  8.96k|            if (nested != nullptr)
  ------------------
  |  Branch (24831:17): [True: 2.19k, False: 6.77k]
  ------------------
24832|  2.19k|            {
24833|  2.19k|                parents.push_back(std::move(current));
24834|  2.19k|                current = bson_frame(nested);
24835|  2.19k|                continue;
24836|  2.19k|            }
24837|       |
24838|  6.77k|            oa.write_character(to_char_type(0x00));
24839|  6.77k|            if (parents.empty())
  ------------------
  |  Branch (24839:17): [True: 4.57k, False: 2.19k]
  ------------------
24840|  4.57k|            {
24841|       |                // calc_bson_sizes() and write_bson_document() are two
24842|       |                // hand-synchronized passes over the same structure, linked
24843|       |                // only by nested_sizes' visiting order; this checks that the
24844|       |                // write pass consumed exactly the sizes the size pass
24845|       |                // produced, so a future change that desyncs them (skips or
24846|       |                // rejects an entry in only one pass) is caught immediately
24847|       |                // instead of silently writing wrong length prefixes.
24848|  4.57k|                JSON_ASSERT(next_size == nested_sizes.size());
  ------------------
  |  | 2591|  4.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (24848:17): [True: 4.57k, False: 0]
  ------------------
24849|  4.57k|                return;
24850|  4.57k|            }
24851|  2.19k|            current = std::move(parents.back());
24852|  2.19k|            parents.pop_back();
24853|  2.19k|        }
24854|  4.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE15calc_bson_sizesERKSG_RNS6_ImNSA_ImEEEE:
24691|  4.57k|    {
24692|       |        // the object or array whose entries are being sized, and the ones it
24693|       |        // is in; nothing is allocated unless the document nests
24694|  4.57k|        bson_frame current(&document);
24695|  4.57k|        std::vector<bson_frame> parents;
24696|       |        // string_t need not be default constructible
24697|  4.57k|        string_t index_name("", 0);
24698|       |
24699|  8.96k|        while (true)
  ------------------
  |  Branch (24699:16): [True: 8.96k, Folded]
  ------------------
24700|  8.96k|        {
24701|       |            // size entries until the current object or array is done, or an
24702|       |            // entry is an object or array itself
24703|  8.96k|            const BasicJsonType* nested = nullptr;
24704|  8.96k|            if (current.value->is_object())
  ------------------
  |  Branch (24704:17): [True: 6.70k, False: 2.25k]
  ------------------
24705|  6.70k|            {
24706|  6.70k|                const auto& object = *current.value->m_data.m_value.object;
24707|  24.2k|                while (nested == nullptr && current.member != object.cend())
  ------------------
  |  Branch (24707:24): [True: 22.9k, False: 1.31k]
  |  Branch (24707:24): [True: 17.5k, False: 6.70k]
  |  Branch (24707:45): [True: 17.5k, False: 5.39k]
  ------------------
24708|  17.5k|                {
24709|  17.5k|                    const auto& el = *current.member;
24710|  17.5k|                    ++current.member;
24711|  17.5k|                    current.entries_size += calc_bson_entry_header_size(el.first, el.second);
24712|  17.5k|                    if (el.second.is_structured())
  ------------------
  |  Branch (24712:25): [True: 1.31k, False: 16.2k]
  ------------------
24713|  1.31k|                    {
24714|  1.31k|                        nested = &el.second;
24715|  1.31k|                    }
24716|  16.2k|                    else
24717|  16.2k|                    {
24718|  16.2k|                        current.entries_size += calc_bson_value_size(el.second);
24719|  16.2k|                    }
24720|  17.5k|                }
24721|  6.70k|            }
24722|  2.25k|            else
24723|  2.25k|            {
24724|  2.25k|                const auto& array = *current.value->m_data.m_value.array;
24725|  9.89k|                while (nested == nullptr && current.index < array.size())
  ------------------
  |  Branch (24725:24): [True: 9.00k, False: 882]
  |  Branch (24725:45): [True: 7.63k, False: 1.37k]
  ------------------
24726|  7.63k|                {
24727|  7.63k|                    const BasicJsonType& el = array[current.index];
24728|  7.63k|                    create_bson_index_name(current.index, index_name);
24729|  7.63k|                    current.entries_size += calc_bson_entry_header_size(index_name, el);
24730|  7.63k|                    ++current.index;
24731|  7.63k|                    if (el.is_structured())
  ------------------
  |  Branch (24731:25): [True: 882, False: 6.75k]
  ------------------
24732|    882|                    {
24733|    882|                        nested = &el;
24734|    882|                    }
24735|  6.75k|                    else
24736|  6.75k|                    {
24737|  6.75k|                        current.entries_size += calc_bson_value_size(el);
24738|  6.75k|                    }
24739|  7.63k|                }
24740|  2.25k|            }
24741|       |
24742|  8.96k|            if (nested != nullptr)
  ------------------
  |  Branch (24742:17): [True: 2.19k, False: 6.77k]
  ------------------
24743|  2.19k|            {
24744|       |                // its size is added to the current one's once it is done
24745|  2.19k|                nested_sizes.push_back(0);
24746|  2.19k|                parents.push_back(std::move(current));
24747|  2.19k|                current = bson_frame(nested, nested_sizes.size() - 1);
24748|  2.19k|                continue;
24749|  2.19k|            }
24750|       |
24751|       |            // the int32 size, the entries, and the terminating null byte
24752|  6.77k|            const std::size_t size = sizeof(std::int32_t) + current.entries_size + 1ul;
24753|  6.77k|            if (parents.empty())
  ------------------
  |  Branch (24753:17): [True: 4.57k, False: 2.19k]
  ------------------
24754|  4.57k|            {
24755|  4.57k|                return size;
24756|  4.57k|            }
24757|  2.19k|            nested_sizes[current.size_slot] = size;
24758|  2.19k|            current = std::move(parents.back());
24759|  2.19k|            parents.pop_back();
24760|  2.19k|            current.entries_size += size;
24761|  2.19k|        }
24762|  4.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE27calc_bson_entry_header_sizeERKSC_RKSG_:
24293|  25.2k|    {
24294|  25.2k|        const auto it = name.find(static_cast<typename string_t::value_type>(0));
24295|  25.2k|        if (JSON_HEDLEY_UNLIKELY(it != BasicJsonType::string_t::npos))
  ------------------
  |  | 1667|  25.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 25.2k]
  |  |  ------------------
  ------------------
24296|      0|        {
24297|      0|            JSON_THROW(out_of_range::create(exception_id::bson_key_with_null, concat("BSON key cannot contain code point U+0000 (at byte ", std::to_string(it), ")"), &j));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
24298|      0|        }
24299|       |
24300|  25.2k|        string_t storage;
24301|  25.2k|        const string_t& sanitized = sanitize_utf8_for_write(name, j, storage);
24302|       |
24303|  25.2k|        return /*id*/ 1ul + sanitized.size() + /*zero-terminator*/1u;
24304|  25.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE23sanitize_utf8_for_writeERKSC_RKSG_RSC_:
25865|  25.6k|    {
25866|  25.6k|        switch (error_handler)
25867|  25.6k|        {
25868|  25.6k|            case error_handler_t::keep:
  ------------------
  |  Branch (25868:13): [True: 25.6k, False: 0]
  ------------------
25869|  25.6k|                return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
25870|       |
25871|      0|            case error_handler_t::strict:
  ------------------
  |  Branch (25871:13): [True: 0, False: 25.6k]
  ------------------
25872|      0|                check_utf8(s, context);
25873|      0|                return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
25874|       |
25875|      0|            case error_handler_t::replace:
  ------------------
  |  Branch (25875:13): [True: 0, False: 25.6k]
  ------------------
25876|      0|            case error_handler_t::ignore:
  ------------------
  |  Branch (25876:13): [True: 0, False: 25.6k]
  ------------------
25877|      0|            default:
  ------------------
  |  Branch (25877:13): [True: 0, False: 25.6k]
  ------------------
25878|      0|                if (is_valid_utf8(s))
  ------------------
  |  Branch (25878:21): [True: 0, False: 0]
  ------------------
25879|      0|                {
25880|      0|                    return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
25881|      0|                }
25882|      0|                storage = sanitize_utf8(s, error_handler);
25883|      0|                return storage;
25884|  25.6k|        }
25885|  25.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE20calc_bson_value_sizeERKSG_:
24534|  23.0k|    {
24535|  23.0k|        switch (j.type())
24536|  23.0k|        {
24537|  1.28k|            case value_t::binary:
  ------------------
  |  Branch (24537:13): [True: 1.28k, False: 21.7k]
  ------------------
24538|  1.28k|                return calc_bson_binary_size(j);
24539|       |
24540|  1.46k|            case value_t::boolean:
  ------------------
  |  Branch (24540:13): [True: 1.46k, False: 21.5k]
  ------------------
24541|  1.46k|                return 1ul;
24542|       |
24543|  2.67k|            case value_t::number_float:
  ------------------
  |  Branch (24543:13): [True: 2.67k, False: 20.3k]
  ------------------
24544|  2.67k|                return 8ul;
24545|       |
24546|  2.42k|            case value_t::number_integer:
  ------------------
  |  Branch (24546:13): [True: 2.42k, False: 20.5k]
  ------------------
24547|  2.42k|                return calc_bson_integer_size(j.m_data.m_value.number_integer);
24548|       |
24549|    973|            case value_t::number_unsigned:
  ------------------
  |  Branch (24549:13): [True: 973, False: 22.0k]
  ------------------
24550|    973|                return calc_bson_unsigned_size(conditional_static_cast<std::uint64_t>(j.m_data.m_value.number_unsigned));
24551|       |
24552|    440|            case value_t::string:
  ------------------
  |  Branch (24552:13): [True: 440, False: 22.5k]
  ------------------
24553|    440|                return calc_bson_string_size(*j.m_data.m_value.string, j);
24554|       |
24555|  13.7k|            case value_t::null:
  ------------------
  |  Branch (24555:13): [True: 13.7k, False: 9.26k]
  ------------------
24556|  13.7k|                return 0ul;
24557|       |
24558|      0|            case value_t::discarded:
  ------------------
  |  Branch (24558:13): [True: 0, False: 23.0k]
  ------------------
24559|      0|                throw_on_discarded(j, "BSON");
24560|       |
24561|       |            // LCOV_EXCL_START
24562|      0|            case value_t::object:
  ------------------
  |  Branch (24562:13): [True: 0, False: 23.0k]
  ------------------
24563|      0|            case value_t::array:
  ------------------
  |  Branch (24563:13): [True: 0, False: 23.0k]
  ------------------
24564|      0|            default:
  ------------------
  |  Branch (24564:13): [True: 0, False: 23.0k]
  ------------------
24565|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert)
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (24565:17): [Folded, False: 0]
  ------------------
24566|      0|                return 0ul;
24567|       |                // LCOV_EXCL_STOP
24568|  23.0k|        }
24569|  23.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE21calc_bson_binary_sizeERKSG_:
24496|  1.28k|    {
24497|  1.28k|        const auto& value = *j.m_data.m_value.binary;
24498|       |
24499|  1.28k|        if (value.has_subtype() && JSON_HEDLEY_UNLIKELY(value.subtype() > (std::numeric_limits<std::uint8_t>::max)()))
  ------------------
  |  | 1667|  1.28k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.28k]
  |  |  ------------------
  ------------------
  |  Branch (24499:13): [True: 1.28k, False: 0]
  ------------------
24500|      0|        {
24501|      0|            JSON_THROW(out_of_range::create(exception_id::subtype_out_of_range, concat("subtype ", std::to_string(value.subtype()), " is too large for the BSON binary subtype (max 255)"), &j));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
24502|      0|        }
24503|       |
24504|  1.28k|        return sizeof(std::int32_t) + value.size() + 1ul;
24505|  1.28k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE22calc_bson_integer_sizeEl:
24433|  2.42k|    {
24434|  2.42k|        return (std::numeric_limits<std::int32_t>::min)() <= value && value <= (std::numeric_limits<std::int32_t>::max)()
  ------------------
  |  Branch (24434:16): [True: 2.00k, False: 416]
  |  Branch (24434:71): [True: 1.16k, False: 845]
  ------------------
24435|  2.42k|               ? sizeof(std::int32_t)
24436|  2.42k|               : sizeof(std::int64_t);
24437|  2.42k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE23calc_bson_unsigned_sizeEm:
24461|    973|    {
24462|    973|        return (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
  ------------------
  |  Branch (24462:16): [True: 124, False: 849]
  ------------------
24463|    973|               ? sizeof(std::int32_t)
24464|    973|               : sizeof(std::int64_t);
24465|    973|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE21calc_bson_string_sizeERKSC_RKSG_:
24382|    440|    {
24383|    440|        if (JSON_HEDLEY_LIKELY(value_in_range_of<std::int32_t>(value.size())))
  ------------------
  |  | 1666|    440|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 440, False: 0]
  |  |  ------------------
  ------------------
24384|    440|        {
24385|    440|            string_t storage;
24386|    440|            const string_t& sanitized = sanitize_utf8_for_write(value, j, storage);
24387|    440|            return sizeof(std::int32_t) + sanitized.size() + 1ul;
24388|    440|        }
24389|      0|        return sizeof(std::int32_t) + value.size() + 1ul;
24390|    440|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIimEEbT0_:
 5101|  8.93k|{
 5102|  8.93k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  8.93k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IimLb0EvE4testEm:
 5085|  8.93k|    {
 5086|  8.93k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5087|  8.93k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2IimLb1ELb0EE4testEm:
 5049|  8.93k|    {
 5050|  8.93k|        using CommonType = typename std::common_type<OfType, T>::type;
 5051|  8.93k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5052|  8.93k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIiEEvT_b:
26103|  9.77k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  9.77k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  9.77k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  9.77k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 0, False: 9.77k]
  ------------------
26110|      0|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|      0|            reverse_bytes(vec);
26113|      0|        }
26114|       |
26115|  9.77k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  9.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE16write_charactersEPKhm:
22753|  42.7k|    {
22754|  42.7k|        v.insert(v.end(), s, s + length);
22755|  42.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE14to_bson_lengthEm:
24312|  8.49k|    {
24313|  8.49k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::int32_t>(size)))
  ------------------
  |  | 1667|  8.49k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 8.49k]
  |  |  ------------------
  ------------------
24314|      0|        {
24315|      0|            JSON_THROW(out_of_range::create(exception_id::length_too_large, concat("BSON length ", std::to_string(size), " exceeds maximum of ", std::to_string((std::numeric_limits<std::int32_t>::max)())), nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
24316|      0|        }
24317|       |
24318|  8.49k|        return static_cast<std::int32_t>(size);
24319|  8.49k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE10bson_frameC2EPKSG_m:
24632|  13.5k|            : value(value_)
24633|  13.5k|            , size_slot(size_slot_)
24634|  13.5k|        {
24635|  13.5k|            if (value->is_object())
  ------------------
  |  Branch (24635:17): [True: 10.7k, False: 2.74k]
  ------------------
24636|  10.7k|            {
24637|  10.7k|                member = value->m_data.m_value.object->cbegin();
24638|  10.7k|            }
24639|  13.5k|        }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13is_structuredEv:
32882|  50.4k|    {
32883|  50.4k|        return is_array() || is_object();
  ------------------
  |  Branch (32883:16): [True: 2.74k, False: 47.6k]
  |  Branch (32883:30): [True: 1.64k, False: 46.0k]
  ------------------
32884|  50.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE22write_bson_nested_headERKSC_RKSG_m:
24623|  2.19k|    {
24624|  2.19k|        write_bson_entry_header(name, j.is_object() ? 0x03 : 0x04);
  ------------------
  |  Branch (24624:39): [True: 820, False: 1.37k]
  ------------------
24625|  2.19k|        write_number<std::int32_t>(to_bson_length(size), true);
24626|  2.19k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE23write_bson_entry_headerERKSC_h:
24332|  25.2k|    {
24333|  25.2k|        oa.write_character(to_char_type(element_type));
24334|       |
24335|  25.2k|        if (error_handler == error_handler_t::keep || error_handler == error_handler_t::strict || is_valid_utf8(name))
  ------------------
  |  Branch (24335:13): [True: 25.2k, False: 0]
  |  Branch (24335:55): [True: 0, False: 0]
  |  Branch (24335:99): [True: 0, False: 0]
  ------------------
24336|  25.2k|        {
24337|  25.2k|            oa.write_characters(reinterpret_cast<const CharType*>(name.data()), name.size());
24338|  25.2k|        }
24339|      0|        else
24340|      0|        {
24341|      0|            const string_t sanitized = sanitize_utf8(name, error_handler);
24342|      0|            oa.write_characters(reinterpret_cast<const CharType*>(sanitized.data()), sanitized.size());
24343|      0|        }
24344|       |
24345|       |        // the terminating null byte is written explicitly rather than taken
24346|       |        // from the buffer, so that string_t::data() need not be null-terminated
24347|  25.2k|        oa.write_character(to_char_type(0x00));
24348|  25.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bson_valueERKSC_RKSG_:
24576|  23.0k|    {
24577|  23.0k|        switch (j.type())
24578|  23.0k|        {
24579|  1.28k|            case value_t::binary:
  ------------------
  |  Branch (24579:13): [True: 1.28k, False: 21.7k]
  ------------------
24580|  1.28k|                return write_bson_binary(name, *j.m_data.m_value.binary);
24581|       |
24582|  1.46k|            case value_t::boolean:
  ------------------
  |  Branch (24582:13): [True: 1.46k, False: 21.5k]
  ------------------
24583|  1.46k|                return write_bson_boolean(name, j.m_data.m_value.boolean);
24584|       |
24585|  2.67k|            case value_t::number_float:
  ------------------
  |  Branch (24585:13): [True: 2.67k, False: 20.3k]
  ------------------
24586|  2.67k|                return write_bson_double(name, j.m_data.m_value.number_float);
24587|       |
24588|  2.42k|            case value_t::number_integer:
  ------------------
  |  Branch (24588:13): [True: 2.42k, False: 20.5k]
  ------------------
24589|  2.42k|                return write_bson_integer(name, j.m_data.m_value.number_integer);
24590|       |
24591|    973|            case value_t::number_unsigned:
  ------------------
  |  Branch (24591:13): [True: 973, False: 22.0k]
  ------------------
24592|    973|                return write_bson_unsigned(name, conditional_static_cast<std::uint64_t>(j.m_data.m_value.number_unsigned));
24593|       |
24594|    440|            case value_t::string:
  ------------------
  |  Branch (24594:13): [True: 440, False: 22.5k]
  ------------------
24595|    440|                return write_bson_string(name, *j.m_data.m_value.string);
24596|       |
24597|  13.7k|            case value_t::null:
  ------------------
  |  Branch (24597:13): [True: 13.7k, False: 9.26k]
  ------------------
24598|  13.7k|                return write_bson_null(name);
24599|       |
24600|      0|            case value_t::discarded:
  ------------------
  |  Branch (24600:13): [True: 0, False: 23.0k]
  ------------------
24601|      0|                throw_on_discarded(j, "BSON");
24602|       |
24603|       |            // LCOV_EXCL_START
24604|      0|            case value_t::object:
  ------------------
  |  Branch (24604:13): [True: 0, False: 23.0k]
  ------------------
24605|      0|            case value_t::array:
  ------------------
  |  Branch (24605:13): [True: 0, False: 23.0k]
  ------------------
24606|      0|            default:
  ------------------
  |  Branch (24606:13): [True: 0, False: 23.0k]
  ------------------
24607|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert)
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (24607:17): [Folded, False: 0]
  ------------------
24608|      0|                return;
24609|       |                // LCOV_EXCL_STOP
24610|  23.0k|        }
24611|  23.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_bson_binaryERKSC_RKNS0_27byte_container_with_subtypeISF_EE:
24514|  1.28k|    {
24515|  1.28k|        write_bson_entry_header(name, 0x05);
24516|       |
24517|  1.28k|        write_number<std::int32_t>(to_bson_length(value.size()), true);
24518|       |
24519|  1.28k|        write_number(value.has_subtype() ? static_cast<std::uint8_t>(value.subtype()) : static_cast<std::uint8_t>(0x00));
  ------------------
  |  Branch (24519:22): [True: 1.28k, False: 0]
  ------------------
24520|       |
24521|  1.28k|        oa.write_characters(reinterpret_cast<const CharType*>(value.data()), value.size());
24522|  1.28k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIhEEvT_b:
26103|  1.28k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  1.28k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  1.28k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  1.28k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 1.28k, False: 0]
  ------------------
26110|  1.28k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  1.28k|            reverse_bytes(vec);
26113|  1.28k|        }
26114|       |
26115|  1.28k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  1.28k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesILm1EEEvRNS4_5arrayIhXT_EEE:
26084|  1.28k|    {
26085|  1.28k|        std::reverse(a.begin(), a.end());
26086|  1.28k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE18write_bson_booleanERKSC_b:
24355|  1.46k|    {
24356|  1.46k|        write_bson_entry_header(name, 0x08);
24357|  1.46k|        oa.write_character(value ? to_char_type(0x01) : to_char_type(0x00));
  ------------------
  |  Branch (24357:28): [True: 1.17k, False: 290]
  ------------------
24358|  1.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_bson_doubleERKSC_d:
24365|  2.67k|    {
24366|  2.67k|        write_bson_entry_header(name, 0x01);
24367|  2.67k|        write_number<double>(value, true);
24368|  2.67k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIdEEvT_b:
26103|  2.67k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  2.67k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  2.67k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  2.67k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 0, False: 2.67k]
  ------------------
26110|      0|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|      0|            reverse_bytes(vec);
26113|      0|        }
26114|       |
26115|  2.67k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  2.67k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE18write_bson_integerERKSC_l:
24444|  2.42k|    {
24445|  2.42k|        if ((std::numeric_limits<std::int32_t>::min)() <= value && value <= (std::numeric_limits<std::int32_t>::max)())
  ------------------
  |  Branch (24445:13): [True: 2.00k, False: 416]
  |  Branch (24445:68): [True: 1.16k, False: 845]
  ------------------
24446|  1.16k|        {
24447|  1.16k|            write_bson_entry_header(name, 0x10); // int32
24448|  1.16k|            write_number<std::int32_t>(static_cast<std::int32_t>(value), true);
24449|  1.16k|        }
24450|  1.26k|        else
24451|  1.26k|        {
24452|  1.26k|            write_bson_entry_header(name, 0x12); // int64
24453|  1.26k|            write_number<std::int64_t>(static_cast<std::int64_t>(value), true);
24454|  1.26k|        }
24455|  2.42k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIlEEvT_b:
26103|  1.64k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  1.64k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  1.64k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  1.64k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 0, False: 1.64k]
  ------------------
26110|      0|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|      0|            reverse_bytes(vec);
26113|      0|        }
26114|       |
26115|  1.64k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  1.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE19write_bson_unsignedERKSC_m:
24472|    973|    {
24473|    973|        if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
  ------------------
  |  Branch (24473:13): [True: 124, False: 849]
  ------------------
24474|    124|        {
24475|    124|            write_bson_entry_header(name, 0x10 /* int32 */);
24476|    124|            write_number<std::int32_t>(static_cast<std::int32_t>(value), true);
24477|    124|        }
24478|    849|        else if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
  ------------------
  |  Branch (24478:18): [True: 381, False: 468]
  ------------------
24479|    381|        {
24480|    381|            write_bson_entry_header(name, 0x12 /* int64 */);
24481|    381|            write_number<std::int64_t>(static_cast<std::int64_t>(value), true);
24482|    381|        }
24483|    468|        else
24484|    468|        {
24485|    468|            write_bson_entry_header(name, 0x11 /* uint64 */);
24486|    468|            write_number<std::uint64_t>(value, true);
24487|    468|        }
24488|    973|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberImEEvT_b:
26103|    468|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|    468|        std::array<CharType, sizeof(NumberType)> vec{};
26106|    468|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|    468|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 0, False: 468]
  ------------------
26110|      0|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|      0|            reverse_bytes(vec);
26113|      0|        }
26114|       |
26115|    468|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|    468|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_bson_stringERKSC_SL_:
24403|    440|    {
24404|    440|        write_bson_entry_header(name, 0x02);
24405|       |
24406|    440|        const bool sanitize = error_handler != error_handler_t::keep
  ------------------
  |  Branch (24406:31): [True: 0, False: 440]
  ------------------
24407|      0|                              && error_handler != error_handler_t::strict
  ------------------
  |  Branch (24407:34): [True: 0, False: 0]
  ------------------
24408|      0|                              && !is_valid_utf8(value);
  ------------------
  |  Branch (24408:34): [True: 0, False: 0]
  ------------------
24409|    440|        const string_t sanitized = sanitize ? sanitize_utf8(value, error_handler) : string_t{};
  ------------------
  |  Branch (24409:36): [True: 0, False: 440]
  ------------------
24410|    440|        const string_t& written = sanitize ? sanitized : value;
  ------------------
  |  Branch (24410:35): [True: 0, False: 440]
  ------------------
24411|       |
24412|    440|        write_number<std::int32_t>(to_bson_length(written.size() + 1ul), true);
24413|    440|        oa.write_characters(
24414|    440|              reinterpret_cast<const CharType*>(written.data()),
24415|    440|              written.size());
24416|       |        // the terminating null byte is written explicitly rather than taken
24417|       |        // from the buffer, so that string_t::data() need not be null-terminated
24418|    440|        oa.write_character(to_char_type(0x00));
24419|    440|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE15write_bson_nullERKSC_:
24425|  13.7k|    {
24426|  13.7k|        write_bson_entry_header(name, 0x0A);
24427|  13.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE22create_bson_index_nameEmRSC_:
24658|  15.2k|    {
24659|       |        // the index is built as a std::string; convert explicitly, as the
24660|       |        // two are only implicitly convertible for some string types
24661|  15.2k|        const auto key = std::to_string(index);
24662|  15.2k|        name = string_t(key.data(), key.size());
24663|  15.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE15write_characterEh:
22744|  59.1k|    {
22745|  59.1k|        v.push_back(c);
22746|  59.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12to_char_typeIhTnPNS4_9enable_ifIXsr3std11is_unsignedIT_EE5valueEvE4typeELPv0EEEhh:
26198|  60.5k|    {
26199|  60.5k|        return x;
26200|  60.5k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bsonIPKhSH_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SJ_SK_bbNS0_6detail15error_handler_tE:
36831|  3.54k|    {
36832|  3.54k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::bson, strict, allow_exceptions, error_handler);
36833|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bsonIRNS2_19basic_istringstreamIcS7_S9_EEEESE_OT_bbNS0_6detail15error_handler_tE:
36818|  3.54k|    {
36819|  3.54k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::bson, strict, allow_exceptions, error_handler);
36820|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail20input_stream_adapterEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  3.54k|    {
36386|  3.54k|        basic_json result;
36387|  3.54k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  3.54k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  3.54k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 3.54k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  3.54k|        return result;
36394|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEEC2ERSG_bPNS1_5lexerISG_SH_EE:
13873|  3.54k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  3.54k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
14944|  3.54k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  3.54k|    {
14946|  3.54k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2EOS2_:
 8481|  3.54k|        : is(rhs.is), sb(rhs.sb)
 8482|  3.54k|    {
 8483|  3.54k|        rhs.is = nullptr;
 8484|  3.54k|        rhs.sb = nullptr;
 8485|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
14969|  3.54k|    {
14970|  3.54k|        sax = sax_;
14971|  3.54k|        container_stack.clear();
14972|  3.54k|        bon8_pushback_size = 0;
14973|  3.54k|        bool result = false;
14974|       |
14975|  3.54k|        switch (input_format)
14976|  3.54k|        {
14977|  3.54k|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 3.54k, False: 0]
  ------------------
14978|  3.54k|                result = parse_bson_internal();
14979|  3.54k|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 3.54k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 3.54k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 3.54k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 3.54k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 3.54k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 3.54k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 3.54k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  3.54k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  2.29k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 2.29k, False: 0]
  |  Branch (15004:23): [True: 2.29k, False: 0]
  ------------------
15005|  2.29k|        {
15006|  2.29k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 2.29k]
  |  Branch (15006:59): [True: 0, False: 2.29k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  2.29k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 2.29k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  2.29k|            else
15016|  2.29k|            {
15017|  2.29k|                get();
15018|  2.29k|            }
15019|       |
15020|  2.29k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  2.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 11, False: 2.28k]
  |  |  ------------------
  ------------------
15021|     11|            {
15022|     11|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     11|            }
15024|  2.29k|        }
15025|       |
15026|  2.28k|        return result;
15027|  2.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE19parse_bson_internalEv:
15186|  3.54k|    {
15187|  3.54k|        if (JSON_HEDLEY_UNLIKELY(!open_bson_document(/*is_object*/true)))
  ------------------
  |  | 1667|  3.54k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 3.54k]
  |  |  ------------------
  ------------------
15188|      0|        {
15189|      0|            return false;
15190|      0|        }
15191|       |
15192|       |        // the key currently being read; hoisted out of the loop so that its
15193|       |        // capacity is reused across elements and across nesting levels
15194|  3.54k|        string_t key;
15195|       |
15196|  35.2k|        while (true)
  ------------------
  |  Branch (15196:16): [True: 33.9k, Folded]
  ------------------
15197|  33.9k|        {
15198|  33.9k|            const auto element_type = get();
15199|       |
15200|  33.9k|            if (element_type == 0) // end of the innermost document
  ------------------
  |  Branch (15200:17): [True: 4.45k, False: 29.5k]
  ------------------
15201|  4.45k|            {
15202|       |                // a copy, not a reference: it must stay valid across the
15203|       |                // pop_back() inside leave_container() below, which destroys
15204|       |                // the container_stack element it would otherwise alias
15205|  4.45k|                const container_frame top = container_stack.back();
15206|       |
15207|  4.45k|                if (JSON_HEDLEY_UNLIKELY(!check_bson_document_size(top.start_position, top.declared_size)))
  ------------------
  |  | 1667|  4.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.45k]
  |  |  ------------------
  ------------------
15208|      0|                {
15209|      0|                    return false;
15210|      0|                }
15211|       |
15212|  4.45k|                if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  4.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.45k]
  |  |  ------------------
  ------------------
15213|      0|                {
15214|      0|                    return false;
15215|      0|                }
15216|       |                // the document begun here is complete once it is not inside one
15217|  4.45k|                if (container_stack.empty())
  ------------------
  |  Branch (15217:21): [True: 2.29k, False: 2.15k]
  ------------------
15218|  2.29k|                {
15219|  2.29k|                    return true;
15220|  2.29k|                }
15221|  2.15k|                continue;
15222|  4.45k|            }
15223|       |
15224|  29.5k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("element list")))
  ------------------
  |  | 1667|  29.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 29.5k]
  |  |  ------------------
  ------------------
15225|      0|            {
15226|      0|                return false;
15227|      0|            }
15228|       |
15229|  29.5k|            const std::size_t element_type_parse_position = chars_read;
15230|  29.5k|            key.clear();
15231|  29.5k|            if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key)))
  ------------------
  |  | 1667|  29.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 29.5k]
  |  |  ------------------
  ------------------
15232|      0|            {
15233|      0|                return false;
15234|      0|            }
15235|       |
15236|       |            // an array's elements are named "0", "1", ... in the wire format,
15237|       |            // and those names are not passed on
15238|  29.5k|            if (container_stack.back().is_object && !sax->key(key))
  ------------------
  |  Branch (15238:17): [True: 16.9k, False: 12.5k]
  |  Branch (15238:53): [True: 0, False: 16.9k]
  ------------------
15239|      0|            {
15240|      0|                return false;
15241|      0|            }
15242|       |
15243|  29.5k|            if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position)))
  ------------------
  |  | 1667|  29.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 29.5k]
  |  |  ------------------
  ------------------
15244|      0|            {
15245|      0|                return false;
15246|      0|            }
15247|  29.5k|        }
15248|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE18open_bson_documentEb:
15154|  7.71k|    {
15155|       |        // recorded before the size prefix is read, because
15156|       |        // check_bson_document_size() measures the document from here
15157|  7.71k|        const std::size_t document_start = chars_read;
15158|  7.71k|        std::int32_t document_size{};
15159|  7.71k|        if (!get_number<std::int32_t, true>(document_size))
  ------------------
  |  Branch (15159:13): [True: 0, False: 7.71k]
  ------------------
15160|      0|        {
15161|      0|            return false;
15162|      0|        }
15163|       |
15164|  7.71k|        if (JSON_HEDLEY_UNLIKELY(!enter_container(is_object, detail::unknown_size())))
  ------------------
  |  | 1667|  7.71k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.71k]
  |  |  ------------------
  ------------------
15165|      0|        {
15166|      0|            return false;
15167|      0|        }
15168|       |
15169|  7.71k|        container_frame& frame = container_stack.back();
15170|  7.71k|        frame.start_position = document_start;
15171|  7.71k|        frame.declared_size = document_size;
15172|  7.71k|        return true;
15173|  7.71k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIiLb1EEEbRT_:
18739|  11.3k|    {
18740|       |        // read in the original format
18741|       |
18742|  11.3k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  11.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 11.3k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  11.3k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 11.3k]
  |  Branch (18746:34): [True: 11.3k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  11.3k|        return true;
18751|  11.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIiEEbRT_PKc:
18667|  11.3k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  11.3k|        auto new_chars_read = ia.get_elements(&dest);
18671|  11.3k|        chars_read += new_chars_read;
18672|  11.3k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  11.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 68, False: 11.2k]
  |  |  ------------------
  ------------------
18673|     68|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     68|            ++chars_read;
18676|     68|            static_cast<void>(report_eof(context));
18677|     68|            return false;
18678|     68|        }
18679|  11.2k|        return true;
18680|  11.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIiEEmPT_m:
 8507|  11.3k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  11.3k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  11.3k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  11.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 68, False: 11.2k]
  |  |  ------------------
  ------------------
 8513|     68|        {
 8514|     68|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     68|        }
 8516|  11.3k|        return res;
 8517|  11.3k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10report_eofEPKc:
19058|    865|    {
19059|    865|        return sax->parse_error(chars_read, "<end of file>",
19060|    865|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|    865|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  1.25k|    {
14005|  1.25k|        errored = true;
14006|  1.25k|        static_cast<void>(ex);
14007|  1.25k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 1.25k, False: 0]
  ------------------
14008|  1.25k|        {
14009|  1.25k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  1.25k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  1.25k|        }
14011|      0|        return false;
14012|  1.25k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17exception_messageERKSC_SM_:
19163|  1.12k|    {
19164|  1.12k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  1.12k|        switch (input_format)
19167|  1.12k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 1.12k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 1.12k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 1.12k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|  1.12k|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 1.12k, False: 0]
  ------------------
19181|  1.12k|                error_msg += "BSON";
19182|  1.12k|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 1.12k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 1.12k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 1.12k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 1.12k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  1.12k|        }
19196|       |
19197|  1.12k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  1.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15enter_containerEbmi:
15082|  7.68k|    {
15083|  7.68k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|  15.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.68k]
  |  |  |  Branch (1667:94): [True: 5.06k, False: 2.62k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|  7.68k|        container_stack.emplace_back(len, is_object, type_marker);
15089|  7.68k|        return true;
15090|  7.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12start_objectEm:
13930|  5.06k|    {
13931|  5.06k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  5.06k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  5.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|  7.68k|    {
14031|  7.68k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 3.53k, False: 4.14k]
  ------------------
14032|  3.53k|        {
14033|  3.53k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  3.53k|            return &root;
14040|  3.53k|        }
14041|       |
14042|  4.14k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.14k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.93k, False: 2.21k]
  |  Branch (14042:9): [True: 2.21k, False: 0]
  |  Branch (14042:9): [True: 4.14k, False: 0]
  ------------------
14043|       |
14044|  4.14k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.93k, False: 2.21k]
  ------------------
14045|  1.93k|        {
14046|  1.93k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.93k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.93k|        }
14054|       |
14055|  2.21k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.21k, False: 0]
  ------------------
14056|  2.21k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.21k, False: 0]
  ------------------
14057|  2.21k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.21k|        return object_element;
14064|  2.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_20input_stream_adapterEEESH_EEbRT_mPKcPT0_:
13724|  7.68k|{
13725|  7.68k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|  7.68k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.68k]
  |  |  |  Branch (1667:94): [True: 0, False: 7.68k]
  |  |  |  Branch (1667:94): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|  7.68k|    return true;
13730|  7.68k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11start_arrayEm:
13966|  2.62k|    {
13967|  2.62k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  2.62k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  2.62k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 2.62k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  2.62k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 0, False: 2.62k]
  ------------------
13980|      0|        {
13981|      0|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|      0|        }
13983|       |
13984|  2.62k|        return true;
13985|  2.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15container_frameC2Embi:
15051|  7.68k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE24check_bson_document_sizeEmi:
15141|  4.45k|    {
15142|  4.45k|        if (JSON_HEDLEY_UNLIKELY(document_size < 0 || static_cast<std::size_t>(document_size) != chars_read - document_start))
  ------------------
  |  | 1667|  8.87k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 156, False: 4.30k]
  |  |  |  Branch (1667:94): [True: 38, False: 4.41k]
  |  |  |  Branch (1667:94): [True: 118, False: 4.30k]
  |  |  ------------------
  ------------------
15143|    156|        {
15144|    156|            return bson_document_size_error(document_size, chars_read - document_start);
15145|    156|        }
15146|  4.30k|        return true;
15147|  4.45k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE24bson_document_size_errorEim:
19094|    156|    {
19095|    156|        return last_byte_error(exception_id::unexpected_byte, concat("document size ", std::to_string(document_size), " does not match the number of bytes read (", std::to_string(bytes_read), ")"), "document");
19096|    156|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15leave_containerEv:
15114|  4.30k|    {
15115|  4.30k|        const bool is_object = container_stack.back().is_object;
15116|  4.30k|        container_stack.pop_back();
15117|  4.30k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 3.15k, False: 1.15k]
  ------------------
15118|  4.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE10end_objectEv:
13952|  3.15k|    {
13953|  3.15k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  3.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 3.15k, False: 0]
  ------------------
13954|  3.15k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 3.15k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  3.15k|        ref_stack.back()->set_parents();
13961|  3.15k|        ref_stack.pop_back();
13962|  3.15k|        return true;
13963|  3.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE9end_arrayEv:
13988|  1.15k|    {
13989|  1.15k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  1.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 1.15k, False: 0]
  ------------------
13990|  1.15k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  1.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 1.15k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  1.15k|        ref_stack.back()->set_parents();
13997|  1.15k|        ref_stack.pop_back();
13998|  1.15k|        return true;
13999|  1.15k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE12unexpect_eofEPKc:
19041|   148k|    {
19042|   148k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|   148k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 710, False: 148k]
  |  |  ------------------
  ------------------
19043|    710|        {
19044|    710|            return report_eof(context);
19045|    710|        }
19046|   148k|        return true;
19047|   148k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13get_bson_cstrERSC_:
15258|  29.0k|    {
15259|  29.0k|        if (get_bson_cstr_bulk(result, std::integral_constant<bool, bulk_scan> {}))
  ------------------
  |  Branch (15259:13): [True: 0, False: 29.0k]
  ------------------
15260|      0|        {
15261|      0|            return check_string_utf8(result, "key");
15262|      0|        }
15263|       |
15264|  29.0k|        auto out = std::back_inserter(result);
15265|   119k|        while (true)
  ------------------
  |  Branch (15265:16): [True: 119k, Folded]
  ------------------
15266|   119k|        {
15267|   119k|            get();
15268|   119k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("cstring")))
  ------------------
  |  | 1667|   119k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 119k]
  |  |  ------------------
  ------------------
15269|      0|            {
15270|      0|                return false;
15271|      0|            }
15272|   119k|            if (current == 0x00)
  ------------------
  |  Branch (15272:17): [True: 28.9k, False: 90.1k]
  ------------------
15273|  28.9k|            {
15274|  28.9k|                return check_string_utf8(result, "key");
15275|  28.9k|            }
15276|  90.1k|            *out++ = static_cast<typename string_t::value_type>(current);
15277|  90.1k|        }
15278|  29.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE18get_bson_cstr_bulkERSC_NS4_17integral_constantIbLb0EEE:
15316|  29.0k|    {
15317|  29.0k|        return false;
15318|  29.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17check_string_utf8ERSC_PKc:
18941|  29.8k|    {
18942|  29.8k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 29.8k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|  29.8k|        {
18944|  29.8k|            return true;
18945|  29.8k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE3keyERSC_:
13942|  16.9k|    {
13943|  16.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  16.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 16.9k, False: 0]
  ------------------
13944|  16.9k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  16.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 16.9k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  16.9k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  16.9k|        return true;
13949|  16.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE27parse_bson_element_internalEim:
15392|  28.9k|    {
15393|  28.9k|        switch (element_type)
15394|  28.9k|        {
15395|  1.77k|            case 0x01: // double
  ------------------
  |  Branch (15395:13): [True: 1.77k, False: 27.1k]
  ------------------
15396|  1.77k|            {
15397|  1.77k|                double number{};
15398|  1.77k|                return get_number<double, true>(number) && emit_float(number);
  ------------------
  |  Branch (15398:24): [True: 1.75k, False: 19]
  |  Branch (15398:60): [True: 1.75k, False: 0]
  ------------------
15399|      0|            }
15400|       |
15401|  1.01k|            case 0x02: // string
  ------------------
  |  Branch (15401:13): [True: 1.01k, False: 27.9k]
  ------------------
15402|  1.01k|            {
15403|  1.01k|                std::int32_t len{};
15404|  1.01k|                string_t value;
15405|  1.01k|                return get_number<std::int32_t, true>(len) && get_bson_string(len, value) && sax->string(value);
  ------------------
  |  Branch (15405:24): [True: 1.00k, False: 12]
  |  Branch (15405:63): [True: 877, False: 125]
  |  Branch (15405:94): [True: 877, False: 0]
  ------------------
15406|      0|            }
15407|       |
15408|  1.54k|            case 0x03: // object
  ------------------
  |  Branch (15408:13): [True: 1.54k, False: 27.4k]
  ------------------
15409|  1.54k|            {
15410|  1.54k|                return open_bson_document(/*is_object*/true);
15411|      0|            }
15412|       |
15413|  2.63k|            case 0x04: // array
  ------------------
  |  Branch (15413:13): [True: 2.63k, False: 26.3k]
  ------------------
15414|  2.63k|            {
15415|  2.63k|                return open_bson_document(/*is_object*/false);
15416|      0|            }
15417|       |
15418|  1.59k|            case 0x05: // binary
  ------------------
  |  Branch (15418:13): [True: 1.59k, False: 27.3k]
  ------------------
15419|  1.59k|            {
15420|  1.59k|                std::int32_t len{};
15421|  1.59k|                binary_t value;
15422|  1.59k|                return get_number<std::int32_t, true>(len) && get_bson_binary(len, value) && sax->binary(value);
  ------------------
  |  Branch (15422:24): [True: 1.58k, False: 12]
  |  Branch (15422:63): [True: 1.46k, False: 123]
  |  Branch (15422:94): [True: 1.46k, False: 0]
  ------------------
15423|      0|            }
15424|       |
15425|  2.46k|            case 0x08: // boolean
  ------------------
  |  Branch (15425:13): [True: 2.46k, False: 26.4k]
  ------------------
15426|  2.46k|            {
15427|  2.46k|                std::uint8_t value{};
15428|  2.46k|                return get_number<std::uint8_t>(value) && sax->boolean(value != 0);
  ------------------
  |  Branch (15428:24): [True: 2.45k, False: 13]
  |  Branch (15428:59): [True: 2.45k, False: 0]
  ------------------
15429|      0|            }
15430|       |
15431|  14.9k|            case 0x0A: // null
  ------------------
  |  Branch (15431:13): [True: 14.9k, False: 14.0k]
  ------------------
15432|  14.9k|            {
15433|  14.9k|                return sax->null();
15434|      0|            }
15435|       |
15436|  1.00k|            case 0x10: // int32
  ------------------
  |  Branch (15436:13): [True: 1.00k, False: 27.9k]
  ------------------
15437|  1.00k|            {
15438|  1.00k|                std::int32_t value{};
15439|  1.00k|                return get_number<std::int32_t, true>(value) && emit_signed(value);
  ------------------
  |  Branch (15439:24): [True: 987, False: 14]
  |  Branch (15439:65): [True: 987, False: 0]
  ------------------
15440|      0|            }
15441|       |
15442|    610|            case 0x12: // int64
  ------------------
  |  Branch (15442:13): [True: 610, False: 28.3k]
  ------------------
15443|    610|            {
15444|    610|                std::int64_t value{};
15445|    610|                return get_number<std::int64_t, true>(value) && emit_signed(value);
  ------------------
  |  Branch (15445:24): [True: 596, False: 14]
  |  Branch (15445:65): [True: 596, False: 0]
  ------------------
15446|      0|            }
15447|       |
15448|  1.29k|            case 0x11: // uint64
  ------------------
  |  Branch (15448:13): [True: 1.29k, False: 27.6k]
  ------------------
15449|  1.29k|            {
15450|  1.29k|                std::uint64_t value{};
15451|  1.29k|                return get_number<std::uint64_t, true>(value) && emit_unsigned(value);
  ------------------
  |  Branch (15451:24): [True: 1.26k, False: 32]
  |  Branch (15451:66): [True: 1.26k, False: 0]
  ------------------
15452|      0|            }
15453|       |
15454|    128|            default: // anything else is not supported (yet)
  ------------------
  |  Branch (15454:13): [True: 128, False: 28.8k]
  ------------------
15455|    128|            {
15456|    128|                return bson_unsupported_type_error(element_type_parse_position, element_type);
15457|      0|            }
15458|  28.9k|        }
15459|  28.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIdLb1EEEbRT_:
18739|  1.77k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.77k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.77k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.77k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.77k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 1.77k]
  |  Branch (18746:34): [True: 1.77k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  1.77k|        return true;
18751|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIdEEbRT_PKc:
18667|  1.77k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.77k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.77k|        chars_read += new_chars_read;
18672|  1.77k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.77k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.75k]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|  1.75k|        return true;
18680|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIdEEmPT_m:
 8507|  1.77k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.77k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.77k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.77k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.75k]
  |  |  ------------------
  ------------------
 8513|     19|        {
 8514|     19|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     19|        }
 8516|  1.77k|        return res;
 8517|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIdEEbT_:
18825|  1.75k|    {
18826|  1.75k|        const auto result = static_cast<number_float_t>(number);
18827|  1.75k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  3.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.75k]
  |  |  |  Branch (1667:94): [True: 1.70k, False: 43]
  |  |  |  Branch (1667:94): [True: 0, False: 1.70k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.75k|        return sax->number_float(result, "");
18832|  1.75k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_token_stringEv:
19152|    272|    {
19153|    272|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    272|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12number_floatEdRKSC_:
13908|  1.75k|    {
13909|  1.75k|        handle_value(val);
13910|  1.75k|        return true;
13911|  1.75k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRdEEPSG_OT_:
14030|  1.75k|    {
14031|  1.75k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.75k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.75k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.75k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 585, False: 1.16k]
  |  Branch (14042:9): [True: 1.16k, False: 0]
  |  Branch (14042:9): [True: 1.75k, False: 0]
  ------------------
14043|       |
14044|  1.75k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 585, False: 1.16k]
  ------------------
14045|    585|        {
14046|    585|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    585|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    585|        }
14054|       |
14055|  1.16k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.16k, False: 0]
  ------------------
14056|  1.16k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.16k, False: 0]
  ------------------
14057|  1.16k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.16k|        return object_element;
14064|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_bson_stringIiEEbT_RSC_:
15333|  1.00k|    {
15334|  1.00k|        if (JSON_HEDLEY_UNLIKELY(len < 1))
  ------------------
  |  | 1667|  1.00k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 33, False: 969]
  |  |  ------------------
  ------------------
15335|     33|        {
15336|     33|            return bson_length_error("string length must be at least 1, is ", len, "string");
15337|     33|        }
15338|       |
15339|    969|        if (JSON_HEDLEY_UNLIKELY(!get_string(len - static_cast<NumberType>(1), result)))
  ------------------
  |  | 1667|    969|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 969]
  |  |  ------------------
  ------------------
15340|      0|        {
15341|      0|            return false;
15342|      0|        }
15343|       |
15344|    969|        if (JSON_HEDLEY_UNLIKELY(get() != 0x00))
  ------------------
  |  | 1667|    969|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 21, False: 948]
  |  |  ------------------
  ------------------
15345|     21|        {
15346|     21|            return last_byte_error(exception_id::unexpected_byte, "BSON string is not null-terminated", "string");
15347|     21|        }
15348|       |
15349|    948|        return check_string_utf8(result, "string");
15350|    969|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17bson_length_errorIiEEbPKcT_SN_:
19088|     73|    {
19089|     73|        return last_byte_error(exception_id::unexpected_byte, concat(prefix, std::to_string(len)), context);
19090|     73|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIiEEbT_RSC_:
18910|    969|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|    969|        return get_bytes(len, "string", result);
18921|    969|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIiSC_EEbT_PKcRT0_:
18998|    969|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    969|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.38k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 488, False: 898]
  ------------------
19003|    488|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    488|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 444, False: 44]
  ------------------
19007|    488|                                       ? static_cast<std::size_t>(len)
19008|    488|                                       : chunk_size;
19009|    488|            const std::size_t old_size = result.size();
19010|    488|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    488|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    488|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 488, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    488|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    488|            chars_read += bytes_read;
19018|    488|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    488|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 71, False: 417]
  |  |  ------------------
  ------------------
19019|     71|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     71|                result.resize(old_size + bytes_read);
19024|     71|                ++chars_read;
19025|     71|                current = char_traits<char_type>::eof();
19026|     71|                return unexpect_eof(context);
19027|     71|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    417|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    417|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 417, False: 0]
  ------------------
19030|    417|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    417|        }
19032|    898|        return true;
19033|    969|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIcEEmPT_m:
 8507|    488|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|    488|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|    488|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|    488|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 71, False: 417]
  |  |  ------------------
  ------------------
 8513|     71|        {
 8514|     71|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     71|        }
 8516|    488|        return res;
 8517|    488|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE6stringERSC_:
13914|    877|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|    877|        handle_value(std::move(val));
13918|    877|        return true;
13919|    877|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueISC_EEPSG_OT_:
14030|    877|    {
14031|    877|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 877]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|    877|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|    877|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 483, False: 394]
  |  Branch (14042:9): [True: 394, False: 0]
  |  Branch (14042:9): [True: 877, False: 0]
  ------------------
14043|       |
14044|    877|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 483, False: 394]
  ------------------
14045|    483|        {
14046|    483|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    483|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    483|        }
14054|       |
14055|    394|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    394|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 394, False: 0]
  ------------------
14056|    394|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    394|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 394, False: 0]
  ------------------
14057|    394|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    394|        return object_element;
14064|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_bson_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
15363|  1.58k|    {
15364|  1.58k|        if (JSON_HEDLEY_UNLIKELY(len < 0))
  ------------------
  |  | 1667|  1.58k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 40, False: 1.54k]
  |  |  ------------------
  ------------------
15365|     40|        {
15366|     40|            return bson_length_error("byte array length cannot be negative, is ", len, "binary");
15367|     40|        }
15368|       |
15369|       |        // All BSON binary values have a subtype
15370|  1.54k|        std::uint8_t subtype{};
15371|  1.54k|        if (JSON_HEDLEY_UNLIKELY(!get_number<std::uint8_t>(subtype)))
  ------------------
  |  | 1667|  1.54k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.54k]
  |  |  ------------------
  ------------------
15372|      0|        {
15373|      0|            return false;
15374|      0|        }
15375|  1.54k|        result.set_subtype(subtype);
15376|       |
15377|  1.54k|        return get_binary(len, result);
15378|  1.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  1.53k|    {
18973|  1.53k|        return get_bytes(len, "binary", result);
18974|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIiNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  1.53k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.53k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  2.04k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 586, False: 1.46k]
  ------------------
19003|    586|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    586|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 547, False: 39]
  ------------------
19007|    586|                                       ? static_cast<std::size_t>(len)
19008|    586|                                       : chunk_size;
19009|    586|            const std::size_t old_size = result.size();
19010|    586|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    586|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    586|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 586, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    586|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    586|            chars_read += bytes_read;
19018|    586|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    586|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 74, False: 512]
  |  |  ------------------
  ------------------
19019|     74|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     74|                result.resize(old_size + bytes_read);
19024|     74|                ++chars_read;
19025|     74|                current = char_traits<char_type>::eof();
19026|     74|                return unexpect_eof(context);
19027|     74|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    512|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    512|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 512, False: 0]
  ------------------
19030|    512|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    512|        }
19032|  1.46k|        return true;
19033|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIhEEmPT_m:
 8507|  4.59k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  4.59k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  4.59k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  4.59k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 96, False: 4.50k]
  |  |  ------------------
  ------------------
 8513|     96|        {
 8514|     96|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     96|        }
 8516|  4.59k|        return res;
 8517|  4.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  1.46k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  1.46k|        handle_value(std::move(val));
13926|  1.46k|        return true;
13927|  1.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
14030|  1.46k|    {
14031|  1.46k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.46k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.46k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 717, False: 746]
  |  Branch (14042:9): [True: 746, False: 0]
  |  Branch (14042:9): [True: 1.46k, False: 0]
  ------------------
14043|       |
14044|  1.46k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 717, False: 746]
  ------------------
14045|    717|        {
14046|    717|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    717|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    717|        }
14054|       |
14055|    746|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    746|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 746, False: 0]
  ------------------
14056|    746|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    746|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 746, False: 0]
  ------------------
14057|    746|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    746|        return object_element;
14064|    746|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIhLb0EEEbRT_:
18739|  4.01k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.01k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.01k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.01k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  4.01k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 3.98k, False: 22]
  |  Branch (18746:34): [Folded, False: 3.98k]
  |  Branch (18746:57): [True: 0, False: 3.98k]
  ------------------
18747|  3.98k|        {
18748|  3.98k|            byte_swap(result);
18749|  3.98k|        }
18750|  4.01k|        return true;
18751|  4.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIhEEbRT_PKc:
18667|  4.01k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.01k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.01k|        chars_read += new_chars_read;
18672|  4.01k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.01k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 22, False: 3.98k]
  |  |  ------------------
  ------------------
18673|     22|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     22|            ++chars_read;
18676|     22|            static_cast<void>(report_eof(context));
18677|     22|            return false;
18678|     22|        }
18679|  3.98k|        return true;
18680|  4.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIhEEvRT_:
18698|  3.98k|    {
18699|  3.98k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  3.98k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.98k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 3.98k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  3.98k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE7booleanEb:
13890|  2.45k|    {
13891|  2.45k|        handle_value(val);
13892|  2.45k|        return true;
13893|  2.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRbEEPSG_OT_:
14030|  2.45k|    {
14031|  2.45k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 2.45k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  2.45k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.45k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.58k, False: 867]
  |  Branch (14042:9): [True: 867, False: 0]
  |  Branch (14042:9): [True: 2.45k, False: 0]
  ------------------
14043|       |
14044|  2.45k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.58k, False: 867]
  ------------------
14045|  1.58k|        {
14046|  1.58k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.58k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.58k|        }
14054|       |
14055|    867|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    867|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 867, False: 0]
  ------------------
14056|    867|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    867|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 867, False: 0]
  ------------------
14057|    867|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    867|        return object_element;
14064|    867|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE4nullEv:
13884|  14.9k|    {
13885|  14.9k|        handle_value(nullptr);
13886|  14.9k|        return true;
13887|  14.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIDnEEPSG_OT_:
14030|  14.9k|    {
14031|  14.9k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 14.9k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  14.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  14.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 5.66k, False: 9.23k]
  |  Branch (14042:9): [True: 9.23k, False: 0]
  |  Branch (14042:9): [True: 14.9k, False: 0]
  ------------------
14043|       |
14044|  14.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 5.66k, False: 9.23k]
  ------------------
14045|  5.66k|        {
14046|  5.66k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  5.66k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  5.66k|        }
14054|       |
14055|  9.23k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.23k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 9.23k, False: 0]
  ------------------
14056|  9.23k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  9.23k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 9.23k, False: 0]
  ------------------
14057|  9.23k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  9.23k|        return object_element;
14064|  9.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIiEEbT_:
18771|    987|    {
18772|    987|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    987|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 987, False: 0]
  |  |  ------------------
  ------------------
18773|    987|        {
18774|    987|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    987|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE14number_integerEl:
13896|  1.58k|    {
13897|  1.58k|        handle_value(val);
13898|  1.58k|        return true;
13899|  1.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRlEEPSG_OT_:
14030|  1.58k|    {
14031|  1.58k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.58k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.58k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.58k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 593, False: 990]
  |  Branch (14042:9): [True: 990, False: 0]
  |  Branch (14042:9): [True: 1.58k, False: 0]
  ------------------
14043|       |
14044|  1.58k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 593, False: 990]
  ------------------
14045|    593|        {
14046|    593|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    593|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    593|        }
14054|       |
14055|    990|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    990|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 990, False: 0]
  ------------------
14056|    990|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    990|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 990, False: 0]
  ------------------
14057|    990|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    990|        return object_element;
14064|    990|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE15number_unsignedEm:
13902|  1.26k|    {
13903|  1.26k|        handle_value(val);
13904|  1.26k|        return true;
13905|  1.26k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRmEEPSG_OT_:
14030|  1.26k|    {
14031|  1.26k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.26k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.26k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.26k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 432, False: 831]
  |  Branch (14042:9): [True: 831, False: 0]
  |  Branch (14042:9): [True: 1.26k, False: 0]
  ------------------
14043|       |
14044|  1.26k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 432, False: 831]
  ------------------
14045|    432|        {
14046|    432|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    432|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    432|        }
14054|       |
14055|    831|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    831|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 831, False: 0]
  ------------------
14056|    831|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    831|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 831, False: 0]
  ------------------
14057|    831|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    831|        return object_element;
14064|    831|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIlLb1EEEbRT_:
18739|    610|    {
18740|       |        // read in the original format
18741|       |
18742|    610|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    610|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 610]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    610|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 610]
  |  Branch (18746:34): [True: 610, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|    610|        return true;
18751|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIlEEbRT_PKc:
18667|    610|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    610|        auto new_chars_read = ia.get_elements(&dest);
18671|    610|        chars_read += new_chars_read;
18672|    610|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    610|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 14, False: 596]
  |  |  ------------------
  ------------------
18673|     14|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     14|            ++chars_read;
18676|     14|            static_cast<void>(report_eof(context));
18677|     14|            return false;
18678|     14|        }
18679|    596|        return true;
18680|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIlEEmPT_m:
 8507|    610|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|    610|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|    610|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|    610|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 14, False: 596]
  |  |  ------------------
  ------------------
 8513|     14|        {
 8514|     14|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     14|        }
 8516|    610|        return res;
 8517|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIlEEbT_:
18771|    596|    {
18772|    596|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    596|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 596, False: 0]
  |  |  ------------------
  ------------------
18773|    596|        {
18774|    596|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    596|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberImLb1EEEbRT_:
18739|  1.29k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.29k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.29k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.29k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 1.29k]
  |  Branch (18746:34): [True: 1.29k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  1.29k|        return true;
18751|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toImEEbRT_PKc:
18667|  1.29k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.29k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.29k|        chars_read += new_chars_read;
18672|  1.29k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 32, False: 1.26k]
  |  |  ------------------
  ------------------
18673|     32|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     32|            ++chars_read;
18676|     32|            static_cast<void>(report_eof(context));
18677|     32|            return false;
18678|     32|        }
18679|  1.26k|        return true;
18680|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsImEEmPT_m:
 8507|  1.29k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.29k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.29k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 32, False: 1.26k]
  |  |  ------------------
  ------------------
 8513|     32|        {
 8514|     32|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     32|        }
 8516|  1.29k|        return res;
 8517|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedImEEbT_:
18799|  1.26k|    {
18800|  1.26k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  1.26k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.26k, False: 0]
  |  |  ------------------
  ------------------
18801|  1.26k|        {
18802|  1.26k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  1.26k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  1.26k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE27bson_unsupported_type_errorEmi:
19100|    128|    {
19101|    128|        const std::string cr_str = hex_byte(static_cast<std::uint8_t>(element_type));
19102|    128|        return sax->parse_error(position, cr_str,
19103|    128|                                parse_error::create(exception_id::bson_unsupported_type, position, concat("Unsupported BSON record type 0x", cr_str), nullptr));
19104|    128|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE3getEv:
18652|   156k|    {
18653|   156k|        ++chars_read;
18654|   156k|        return current = ia.get_character();
18655|   156k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter13get_characterEv:
 8494|   156k|    {
 8495|   156k|        auto res = sb->sbumpc();
 8496|       |        // set eof manually, as we don't use the istream interface.
 8497|   156k|        if (JSON_HEDLEY_UNLIKELY(res == std::char_traits<char>::eof()))
  ------------------
  |  | 1667|   156k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.86k, False: 153k]
  |  |  ------------------
  ------------------
 8498|  2.86k|        {
 8499|  2.86k|            is->clear(is->rdstate() | std::ios::eofbit);
 8500|  2.86k|        }
 8501|   156k|        return res;
 8502|   156k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
19116|    261|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    261|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    261|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 250, False: 11]
  ------------------
19120|    261|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEED2Ev:
14954|  3.54k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEED2Ev:
13881|  3.54k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEE:
 9123|  3.54k|{
 9124|  3.54k|    if (stream.rdbuf() == nullptr)
  ------------------
  |  Branch (9124:9): [True: 0, False: 3.54k]
  ------------------
 9125|      0|    {
 9126|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
 9127|      0|    }
 9128|  3.54k|    return input_stream_adapter(stream);
 9129|  3.54k|}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2ERNSt3__113basic_istreamIcNS3_11char_traitsIcEEEE:
 8420|  3.54k|        : is(&i), sb(i.rdbuf())
 8421|  3.54k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterD2Ev:
 8399|  7.08k|    {
 8400|       |        // clear stream flags; we use underlying streambuf I/O, do not
 8401|       |        // maintain ifstream flags, except eof
 8402|  7.08k|        if (is != nullptr)
  ------------------
  |  Branch (8402:13): [True: 3.54k, False: 3.54k]
  ------------------
 8403|  3.54k|        {
 8404|       |#if JSON_PRECISE_STREAM_POSITION
 8405|       |            // consume the character last returned by get_character() unless it
 8406|       |            // was given back with release_lookahead()
 8407|       |            commit_lookahead();
 8408|       |#endif
 8409|       |            // only call clear() if there is something to clear: it throws
 8410|       |            // std::ios_base::failure if the stream has exceptions() enabled
 8411|       |            // for a state bit that remains set, and a destructor must not throw
 8412|  3.54k|            if ((is->rdstate() & ~std::ios::eofbit) != 0)
  ------------------
  |  Branch (8412:17): [True: 0, False: 3.54k]
  ------------------
 8413|      0|            {
 8414|      0|                is->clear(is->rdstate() & std::ios::eofbit);
 8415|      0|            }
 8416|  3.54k|        }
 8417|  7.08k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bsonINS2_21__list_const_iteratorIhPvEESI_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SK_SL_bbNS0_6detail15error_handler_tE:
36831|  3.54k|    {
36832|  3.54k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::bson, strict, allow_exceptions, error_handler);
36833|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail22iterator_input_adapterINS2_21__list_const_iteratorIhPvEESK_EEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  3.54k|    {
36386|  3.54k|        basic_json result;
36387|  3.54k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  3.54k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  3.54k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 3.54k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  3.54k|        return result;
36394|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEEC2ERSG_bPNS1_5lexerISG_SL_EE:
13873|  3.54k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  3.54k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEEC2EOSL_NS1_14input_format_tENS1_15error_handler_tE:
14944|  3.54k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  3.54k|    {
14946|  3.54k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9sax_parseEPSN_bNS1_18cbor_tag_handler_tE:
14969|  3.54k|    {
14970|  3.54k|        sax = sax_;
14971|  3.54k|        container_stack.clear();
14972|  3.54k|        bon8_pushback_size = 0;
14973|  3.54k|        bool result = false;
14974|       |
14975|  3.54k|        switch (input_format)
14976|  3.54k|        {
14977|  3.54k|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 3.54k, False: 0]
  ------------------
14978|  3.54k|                result = parse_bson_internal();
14979|  3.54k|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 3.54k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 3.54k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 3.54k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 3.54k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 3.54k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 3.54k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 3.54k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  3.54k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  2.29k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 2.29k, False: 0]
  |  Branch (15004:23): [True: 2.29k, False: 0]
  ------------------
15005|  2.29k|        {
15006|  2.29k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 2.29k]
  |  Branch (15006:59): [True: 0, False: 2.29k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  2.29k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 2.29k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  2.29k|            else
15016|  2.29k|            {
15017|  2.29k|                get();
15018|  2.29k|            }
15019|       |
15020|  2.29k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  2.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 11, False: 2.28k]
  |  |  ------------------
  ------------------
15021|     11|            {
15022|     11|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     11|            }
15024|  2.29k|        }
15025|       |
15026|  2.28k|        return result;
15027|  2.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE19parse_bson_internalEv:
15186|  3.54k|    {
15187|  3.54k|        if (JSON_HEDLEY_UNLIKELY(!open_bson_document(/*is_object*/true)))
  ------------------
  |  | 1667|  3.54k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 3.54k]
  |  |  ------------------
  ------------------
15188|      0|        {
15189|      0|            return false;
15190|      0|        }
15191|       |
15192|       |        // the key currently being read; hoisted out of the loop so that its
15193|       |        // capacity is reused across elements and across nesting levels
15194|  3.54k|        string_t key;
15195|       |
15196|  35.2k|        while (true)
  ------------------
  |  Branch (15196:16): [True: 33.9k, Folded]
  ------------------
15197|  33.9k|        {
15198|  33.9k|            const auto element_type = get();
15199|       |
15200|  33.9k|            if (element_type == 0) // end of the innermost document
  ------------------
  |  Branch (15200:17): [True: 4.45k, False: 29.5k]
  ------------------
15201|  4.45k|            {
15202|       |                // a copy, not a reference: it must stay valid across the
15203|       |                // pop_back() inside leave_container() below, which destroys
15204|       |                // the container_stack element it would otherwise alias
15205|  4.45k|                const container_frame top = container_stack.back();
15206|       |
15207|  4.45k|                if (JSON_HEDLEY_UNLIKELY(!check_bson_document_size(top.start_position, top.declared_size)))
  ------------------
  |  | 1667|  4.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.45k]
  |  |  ------------------
  ------------------
15208|      0|                {
15209|      0|                    return false;
15210|      0|                }
15211|       |
15212|  4.45k|                if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  4.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.45k]
  |  |  ------------------
  ------------------
15213|      0|                {
15214|      0|                    return false;
15215|      0|                }
15216|       |                // the document begun here is complete once it is not inside one
15217|  4.45k|                if (container_stack.empty())
  ------------------
  |  Branch (15217:21): [True: 2.29k, False: 2.15k]
  ------------------
15218|  2.29k|                {
15219|  2.29k|                    return true;
15220|  2.29k|                }
15221|  2.15k|                continue;
15222|  4.45k|            }
15223|       |
15224|  29.5k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("element list")))
  ------------------
  |  | 1667|  29.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 29.5k]
  |  |  ------------------
  ------------------
15225|      0|            {
15226|      0|                return false;
15227|      0|            }
15228|       |
15229|  29.5k|            const std::size_t element_type_parse_position = chars_read;
15230|  29.5k|            key.clear();
15231|  29.5k|            if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key)))
  ------------------
  |  | 1667|  29.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 29.5k]
  |  |  ------------------
  ------------------
15232|      0|            {
15233|      0|                return false;
15234|      0|            }
15235|       |
15236|       |            // an array's elements are named "0", "1", ... in the wire format,
15237|       |            // and those names are not passed on
15238|  29.5k|            if (container_stack.back().is_object && !sax->key(key))
  ------------------
  |  Branch (15238:17): [True: 16.9k, False: 12.5k]
  |  Branch (15238:53): [True: 0, False: 16.9k]
  ------------------
15239|      0|            {
15240|      0|                return false;
15241|      0|            }
15242|       |
15243|  29.5k|            if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position)))
  ------------------
  |  | 1667|  29.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 29.5k]
  |  |  ------------------
  ------------------
15244|      0|            {
15245|      0|                return false;
15246|      0|            }
15247|  29.5k|        }
15248|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE18open_bson_documentEb:
15154|  7.71k|    {
15155|       |        // recorded before the size prefix is read, because
15156|       |        // check_bson_document_size() measures the document from here
15157|  7.71k|        const std::size_t document_start = chars_read;
15158|  7.71k|        std::int32_t document_size{};
15159|  7.71k|        if (!get_number<std::int32_t, true>(document_size))
  ------------------
  |  Branch (15159:13): [True: 0, False: 7.71k]
  ------------------
15160|      0|        {
15161|      0|            return false;
15162|      0|        }
15163|       |
15164|  7.71k|        if (JSON_HEDLEY_UNLIKELY(!enter_container(is_object, detail::unknown_size())))
  ------------------
  |  | 1667|  7.71k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.71k]
  |  |  ------------------
  ------------------
15165|      0|        {
15166|      0|            return false;
15167|      0|        }
15168|       |
15169|  7.71k|        container_frame& frame = container_stack.back();
15170|  7.71k|        frame.start_position = document_start;
15171|  7.71k|        frame.declared_size = document_size;
15172|  7.71k|        return true;
15173|  7.71k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIiLb1EEEbRT_:
18739|  11.3k|    {
18740|       |        // read in the original format
18741|       |
18742|  11.3k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  11.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 11.3k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  11.3k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 11.3k]
  |  Branch (18746:34): [True: 11.3k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  11.3k|        return true;
18751|  11.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIiEEbRT_PKc:
18667|  11.3k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  11.3k|        auto new_chars_read = ia.get_elements(&dest);
18671|  11.3k|        chars_read += new_chars_read;
18672|  11.3k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  11.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 68, False: 11.2k]
  |  |  ------------------
  ------------------
18673|     68|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     68|            ++chars_read;
18676|     68|            static_cast<void>(report_eof(context));
18677|     68|            return false;
18678|     68|        }
18679|  11.2k|        return true;
18680|  11.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIiEEmPT_m:
 8644|  11.3k|    {
 8645|  11.3k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  11.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIiEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  11.3k|    {
 8725|  11.3k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  56.4k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 45.1k, False: 11.2k]
  ------------------
 8727|  45.1k|        {
 8728|  45.1k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  45.1k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 45.1k, False: 68]
  |  |  ------------------
  ------------------
 8729|  45.1k|            {
 8730|  45.1k|                ptr[read_index] = static_cast<char>(*current);
 8731|  45.1k|                std::advance(current, 1);
 8732|  45.1k|            }
 8733|     68|            else
 8734|     68|            {
 8735|     68|                return read_index;
 8736|     68|            }
 8737|  45.1k|        }
 8738|  11.2k|        return count * sizeof(T);
 8739|  11.3k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10report_eofEPKc:
19058|    865|    {
19059|    865|        return sax->parse_error(chars_read, "<end of file>",
19060|    865|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|    865|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  1.25k|    {
14005|  1.25k|        errored = true;
14006|  1.25k|        static_cast<void>(ex);
14007|  1.25k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 1.25k, False: 0]
  ------------------
14008|  1.25k|        {
14009|  1.25k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  1.25k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  1.25k|        }
14011|      0|        return false;
14012|  1.25k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE17exception_messageERKSC_SQ_:
19163|  1.12k|    {
19164|  1.12k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  1.12k|        switch (input_format)
19167|  1.12k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 1.12k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 1.12k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 1.12k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|  1.12k|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 1.12k, False: 0]
  ------------------
19181|  1.12k|                error_msg += "BSON";
19182|  1.12k|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 1.12k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 1.12k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 1.12k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 1.12k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  1.12k|        }
19196|       |
19197|  1.12k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  1.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15enter_containerEbmm:
15082|  7.68k|    {
15083|  7.68k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|  15.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.68k]
  |  |  |  Branch (1667:94): [True: 5.06k, False: 2.62k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|  7.68k|        container_stack.emplace_back(len, is_object, type_marker);
15089|  7.68k|        return true;
15090|  7.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12start_objectEm:
13930|  5.06k|    {
13931|  5.06k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  5.06k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  5.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|  7.68k|    {
14031|  7.68k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 3.53k, False: 4.14k]
  ------------------
14032|  3.53k|        {
14033|  3.53k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  3.53k|            return &root;
14040|  3.53k|        }
14041|       |
14042|  4.14k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.14k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.93k, False: 2.21k]
  |  Branch (14042:9): [True: 2.21k, False: 0]
  |  Branch (14042:9): [True: 4.14k, False: 0]
  ------------------
14043|       |
14044|  4.14k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.93k, False: 2.21k]
  ------------------
14045|  1.93k|        {
14046|  1.93k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.93k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.93k|        }
14054|       |
14055|  2.21k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.21k, False: 0]
  ------------------
14056|  2.21k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.21k, False: 0]
  ------------------
14057|  2.21k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.21k|        return object_element;
14064|  2.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterINS5_21__list_const_iteratorIhPvEESL_EEEESH_EEbRT_mPKcPT0_:
13724|  7.68k|{
13725|  7.68k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|  7.68k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.68k]
  |  |  |  Branch (1667:94): [True: 0, False: 7.68k]
  |  |  |  Branch (1667:94): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|  7.68k|    return true;
13730|  7.68k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11start_arrayEm:
13966|  2.62k|    {
13967|  2.62k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  2.62k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  2.62k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 2.62k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  2.62k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 0, False: 2.62k]
  ------------------
13980|      0|        {
13981|      0|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|      0|        }
13983|       |
13984|  2.62k|        return true;
13985|  2.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15container_frameC2Embm:
15051|  7.68k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE24check_bson_document_sizeEmi:
15141|  4.45k|    {
15142|  4.45k|        if (JSON_HEDLEY_UNLIKELY(document_size < 0 || static_cast<std::size_t>(document_size) != chars_read - document_start))
  ------------------
  |  | 1667|  8.87k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 156, False: 4.30k]
  |  |  |  Branch (1667:94): [True: 38, False: 4.41k]
  |  |  |  Branch (1667:94): [True: 118, False: 4.30k]
  |  |  ------------------
  ------------------
15143|    156|        {
15144|    156|            return bson_document_size_error(document_size, chars_read - document_start);
15145|    156|        }
15146|  4.30k|        return true;
15147|  4.45k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE24bson_document_size_errorEim:
19094|    156|    {
19095|    156|        return last_byte_error(exception_id::unexpected_byte, concat("document size ", std::to_string(document_size), " does not match the number of bytes read (", std::to_string(bytes_read), ")"), "document");
19096|    156|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15leave_containerEv:
15114|  4.30k|    {
15115|  4.30k|        const bool is_object = container_stack.back().is_object;
15116|  4.30k|        container_stack.pop_back();
15117|  4.30k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 3.15k, False: 1.15k]
  ------------------
15118|  4.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE10end_objectEv:
13952|  3.15k|    {
13953|  3.15k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  3.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 3.15k, False: 0]
  ------------------
13954|  3.15k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 3.15k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  3.15k|        ref_stack.back()->set_parents();
13961|  3.15k|        ref_stack.pop_back();
13962|  3.15k|        return true;
13963|  3.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE9end_arrayEv:
13988|  1.15k|    {
13989|  1.15k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  1.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 1.15k, False: 0]
  ------------------
13990|  1.15k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  1.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 1.15k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  1.15k|        ref_stack.back()->set_parents();
13997|  1.15k|        ref_stack.pop_back();
13998|  1.15k|        return true;
13999|  1.15k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE12unexpect_eofEPKc:
19041|   148k|    {
19042|   148k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|   148k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 710, False: 148k]
  |  |  ------------------
  ------------------
19043|    710|        {
19044|    710|            return report_eof(context);
19045|    710|        }
19046|   148k|        return true;
19047|   148k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE13get_bson_cstrERSC_:
15258|  29.0k|    {
15259|  29.0k|        if (get_bson_cstr_bulk(result, std::integral_constant<bool, bulk_scan> {}))
  ------------------
  |  Branch (15259:13): [True: 0, False: 29.0k]
  ------------------
15260|      0|        {
15261|      0|            return check_string_utf8(result, "key");
15262|      0|        }
15263|       |
15264|  29.0k|        auto out = std::back_inserter(result);
15265|   119k|        while (true)
  ------------------
  |  Branch (15265:16): [True: 119k, Folded]
  ------------------
15266|   119k|        {
15267|   119k|            get();
15268|   119k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("cstring")))
  ------------------
  |  | 1667|   119k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 119k]
  |  |  ------------------
  ------------------
15269|      0|            {
15270|      0|                return false;
15271|      0|            }
15272|   119k|            if (current == 0x00)
  ------------------
  |  Branch (15272:17): [True: 28.9k, False: 90.1k]
  ------------------
15273|  28.9k|            {
15274|  28.9k|                return check_string_utf8(result, "key");
15275|  28.9k|            }
15276|  90.1k|            *out++ = static_cast<typename string_t::value_type>(current);
15277|  90.1k|        }
15278|  29.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE18get_bson_cstr_bulkERSC_NS4_17integral_constantIbLb0EEE:
15316|  29.0k|    {
15317|  29.0k|        return false;
15318|  29.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE17check_string_utf8ERSC_PKc:
18941|  29.8k|    {
18942|  29.8k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 29.8k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|  29.8k|        {
18944|  29.8k|            return true;
18945|  29.8k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE3keyERSC_:
13942|  16.9k|    {
13943|  16.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  16.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 16.9k, False: 0]
  ------------------
13944|  16.9k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  16.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 16.9k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  16.9k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  16.9k|        return true;
13949|  16.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE27parse_bson_element_internalEmm:
15392|  28.9k|    {
15393|  28.9k|        switch (element_type)
15394|  28.9k|        {
15395|  1.77k|            case 0x01: // double
  ------------------
  |  Branch (15395:13): [True: 1.77k, False: 27.1k]
  ------------------
15396|  1.77k|            {
15397|  1.77k|                double number{};
15398|  1.77k|                return get_number<double, true>(number) && emit_float(number);
  ------------------
  |  Branch (15398:24): [True: 1.75k, False: 19]
  |  Branch (15398:60): [True: 1.75k, False: 0]
  ------------------
15399|      0|            }
15400|       |
15401|  1.01k|            case 0x02: // string
  ------------------
  |  Branch (15401:13): [True: 1.01k, False: 27.9k]
  ------------------
15402|  1.01k|            {
15403|  1.01k|                std::int32_t len{};
15404|  1.01k|                string_t value;
15405|  1.01k|                return get_number<std::int32_t, true>(len) && get_bson_string(len, value) && sax->string(value);
  ------------------
  |  Branch (15405:24): [True: 1.00k, False: 12]
  |  Branch (15405:63): [True: 877, False: 125]
  |  Branch (15405:94): [True: 877, False: 0]
  ------------------
15406|      0|            }
15407|       |
15408|  1.54k|            case 0x03: // object
  ------------------
  |  Branch (15408:13): [True: 1.54k, False: 27.4k]
  ------------------
15409|  1.54k|            {
15410|  1.54k|                return open_bson_document(/*is_object*/true);
15411|      0|            }
15412|       |
15413|  2.63k|            case 0x04: // array
  ------------------
  |  Branch (15413:13): [True: 2.63k, False: 26.3k]
  ------------------
15414|  2.63k|            {
15415|  2.63k|                return open_bson_document(/*is_object*/false);
15416|      0|            }
15417|       |
15418|  1.59k|            case 0x05: // binary
  ------------------
  |  Branch (15418:13): [True: 1.59k, False: 27.3k]
  ------------------
15419|  1.59k|            {
15420|  1.59k|                std::int32_t len{};
15421|  1.59k|                binary_t value;
15422|  1.59k|                return get_number<std::int32_t, true>(len) && get_bson_binary(len, value) && sax->binary(value);
  ------------------
  |  Branch (15422:24): [True: 1.58k, False: 12]
  |  Branch (15422:63): [True: 1.46k, False: 123]
  |  Branch (15422:94): [True: 1.46k, False: 0]
  ------------------
15423|      0|            }
15424|       |
15425|  2.46k|            case 0x08: // boolean
  ------------------
  |  Branch (15425:13): [True: 2.46k, False: 26.4k]
  ------------------
15426|  2.46k|            {
15427|  2.46k|                std::uint8_t value{};
15428|  2.46k|                return get_number<std::uint8_t>(value) && sax->boolean(value != 0);
  ------------------
  |  Branch (15428:24): [True: 2.45k, False: 13]
  |  Branch (15428:59): [True: 2.45k, False: 0]
  ------------------
15429|      0|            }
15430|       |
15431|  14.9k|            case 0x0A: // null
  ------------------
  |  Branch (15431:13): [True: 14.9k, False: 14.0k]
  ------------------
15432|  14.9k|            {
15433|  14.9k|                return sax->null();
15434|      0|            }
15435|       |
15436|  1.00k|            case 0x10: // int32
  ------------------
  |  Branch (15436:13): [True: 1.00k, False: 27.9k]
  ------------------
15437|  1.00k|            {
15438|  1.00k|                std::int32_t value{};
15439|  1.00k|                return get_number<std::int32_t, true>(value) && emit_signed(value);
  ------------------
  |  Branch (15439:24): [True: 987, False: 14]
  |  Branch (15439:65): [True: 987, False: 0]
  ------------------
15440|      0|            }
15441|       |
15442|    610|            case 0x12: // int64
  ------------------
  |  Branch (15442:13): [True: 610, False: 28.3k]
  ------------------
15443|    610|            {
15444|    610|                std::int64_t value{};
15445|    610|                return get_number<std::int64_t, true>(value) && emit_signed(value);
  ------------------
  |  Branch (15445:24): [True: 596, False: 14]
  |  Branch (15445:65): [True: 596, False: 0]
  ------------------
15446|      0|            }
15447|       |
15448|  1.29k|            case 0x11: // uint64
  ------------------
  |  Branch (15448:13): [True: 1.29k, False: 27.6k]
  ------------------
15449|  1.29k|            {
15450|  1.29k|                std::uint64_t value{};
15451|  1.29k|                return get_number<std::uint64_t, true>(value) && emit_unsigned(value);
  ------------------
  |  Branch (15451:24): [True: 1.26k, False: 32]
  |  Branch (15451:66): [True: 1.26k, False: 0]
  ------------------
15452|      0|            }
15453|       |
15454|    128|            default: // anything else is not supported (yet)
  ------------------
  |  Branch (15454:13): [True: 128, False: 28.8k]
  ------------------
15455|    128|            {
15456|    128|                return bson_unsupported_type_error(element_type_parse_position, element_type);
15457|      0|            }
15458|  28.9k|        }
15459|  28.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIdLb1EEEbRT_:
18739|  1.77k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.77k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.77k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.77k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.77k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 1.77k]
  |  Branch (18746:34): [True: 1.77k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  1.77k|        return true;
18751|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIdEEbRT_PKc:
18667|  1.77k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.77k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.77k|        chars_read += new_chars_read;
18672|  1.77k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.77k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.75k]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|  1.75k|        return true;
18680|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIdEEmPT_m:
 8644|  1.77k|    {
 8645|  1.77k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIdEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.77k|    {
 8725|  1.77k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  15.8k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 14.0k, False: 1.75k]
  ------------------
 8727|  14.0k|        {
 8728|  14.0k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  14.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 14.0k, False: 19]
  |  |  ------------------
  ------------------
 8729|  14.0k|            {
 8730|  14.0k|                ptr[read_index] = static_cast<char>(*current);
 8731|  14.0k|                std::advance(current, 1);
 8732|  14.0k|            }
 8733|     19|            else
 8734|     19|            {
 8735|     19|                return read_index;
 8736|     19|            }
 8737|  14.0k|        }
 8738|  1.75k|        return count * sizeof(T);
 8739|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10emit_floatIdEEbT_:
18825|  1.75k|    {
18826|  1.75k|        const auto result = static_cast<number_float_t>(number);
18827|  1.75k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  3.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.75k]
  |  |  |  Branch (1667:94): [True: 1.70k, False: 43]
  |  |  |  Branch (1667:94): [True: 0, False: 1.70k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.75k|        return sax->number_float(result, "");
18832|  1.75k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE16get_token_stringEv:
19152|    272|    {
19153|    272|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    272|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12number_floatEdRKSC_:
13908|  1.75k|    {
13909|  1.75k|        handle_value(val);
13910|  1.75k|        return true;
13911|  1.75k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRdEEPSG_OT_:
14030|  1.75k|    {
14031|  1.75k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.75k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.75k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.75k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 585, False: 1.16k]
  |  Branch (14042:9): [True: 1.16k, False: 0]
  |  Branch (14042:9): [True: 1.75k, False: 0]
  ------------------
14043|       |
14044|  1.75k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 585, False: 1.16k]
  ------------------
14045|    585|        {
14046|    585|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    585|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    585|        }
14054|       |
14055|  1.16k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.16k, False: 0]
  ------------------
14056|  1.16k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.16k, False: 0]
  ------------------
14057|  1.16k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.16k|        return object_element;
14064|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15get_bson_stringIiEEbT_RSC_:
15333|  1.00k|    {
15334|  1.00k|        if (JSON_HEDLEY_UNLIKELY(len < 1))
  ------------------
  |  | 1667|  1.00k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 33, False: 969]
  |  |  ------------------
  ------------------
15335|     33|        {
15336|     33|            return bson_length_error("string length must be at least 1, is ", len, "string");
15337|     33|        }
15338|       |
15339|    969|        if (JSON_HEDLEY_UNLIKELY(!get_string(len - static_cast<NumberType>(1), result)))
  ------------------
  |  | 1667|    969|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 969]
  |  |  ------------------
  ------------------
15340|      0|        {
15341|      0|            return false;
15342|      0|        }
15343|       |
15344|    969|        if (JSON_HEDLEY_UNLIKELY(get() != 0x00))
  ------------------
  |  | 1667|    969|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 21, False: 948]
  |  |  ------------------
  ------------------
15345|     21|        {
15346|     21|            return last_byte_error(exception_id::unexpected_byte, "BSON string is not null-terminated", "string");
15347|     21|        }
15348|       |
15349|    948|        return check_string_utf8(result, "string");
15350|    969|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE17bson_length_errorIiEEbPKcT_SR_:
19088|     73|    {
19089|     73|        return last_byte_error(exception_id::unexpected_byte, concat(prefix, std::to_string(len)), context);
19090|     73|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_stringIiEEbT_RSC_:
18910|    969|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|    969|        return get_bytes(len, "string", result);
18921|    969|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesIiSC_EEbT_PKcRT0_:
18998|    969|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    969|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.38k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 488, False: 898]
  ------------------
19003|    488|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    488|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 444, False: 44]
  ------------------
19007|    488|                                       ? static_cast<std::size_t>(len)
19008|    488|                                       : chunk_size;
19009|    488|            const std::size_t old_size = result.size();
19010|    488|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    488|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    488|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 488, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    488|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    488|            chars_read += bytes_read;
19018|    488|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    488|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 71, False: 417]
  |  |  ------------------
  ------------------
19019|     71|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     71|                result.resize(old_size + bytes_read);
19024|     71|                ++chars_read;
19025|     71|                current = char_traits<char_type>::eof();
19026|     71|                return unexpect_eof(context);
19027|     71|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    417|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    417|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 417, False: 0]
  ------------------
19030|    417|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    417|        }
19032|    898|        return true;
19033|    969|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIcEEmPT_m:
 8644|    488|    {
 8645|    488|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|    488|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIcEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|    488|    {
 8725|    488|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  6.06k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 5.65k, False: 417]
  ------------------
 8727|  5.65k|        {
 8728|  5.65k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  5.65k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 5.58k, False: 71]
  |  |  ------------------
  ------------------
 8729|  5.58k|            {
 8730|  5.58k|                ptr[read_index] = static_cast<char>(*current);
 8731|  5.58k|                std::advance(current, 1);
 8732|  5.58k|            }
 8733|     71|            else
 8734|     71|            {
 8735|     71|                return read_index;
 8736|     71|            }
 8737|  5.65k|        }
 8738|    417|        return count * sizeof(T);
 8739|    488|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE6stringERSC_:
13914|    877|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|    877|        handle_value(std::move(val));
13918|    877|        return true;
13919|    877|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueISC_EEPSG_OT_:
14030|    877|    {
14031|    877|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 877]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|    877|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|    877|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 483, False: 394]
  |  Branch (14042:9): [True: 394, False: 0]
  |  Branch (14042:9): [True: 877, False: 0]
  ------------------
14043|       |
14044|    877|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 483, False: 394]
  ------------------
14045|    483|        {
14046|    483|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    483|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    483|        }
14054|       |
14055|    394|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    394|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 394, False: 0]
  ------------------
14056|    394|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    394|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 394, False: 0]
  ------------------
14057|    394|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    394|        return object_element;
14064|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15get_bson_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
15363|  1.58k|    {
15364|  1.58k|        if (JSON_HEDLEY_UNLIKELY(len < 0))
  ------------------
  |  | 1667|  1.58k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 40, False: 1.54k]
  |  |  ------------------
  ------------------
15365|     40|        {
15366|     40|            return bson_length_error("byte array length cannot be negative, is ", len, "binary");
15367|     40|        }
15368|       |
15369|       |        // All BSON binary values have a subtype
15370|  1.54k|        std::uint8_t subtype{};
15371|  1.54k|        if (JSON_HEDLEY_UNLIKELY(!get_number<std::uint8_t>(subtype)))
  ------------------
  |  | 1667|  1.54k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.54k]
  |  |  ------------------
  ------------------
15372|      0|        {
15373|      0|            return false;
15374|      0|        }
15375|  1.54k|        result.set_subtype(subtype);
15376|       |
15377|  1.54k|        return get_binary(len, result);
15378|  1.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  1.53k|    {
18973|  1.53k|        return get_bytes(len, "binary", result);
18974|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesIiNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  1.53k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.53k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  2.04k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 586, False: 1.46k]
  ------------------
19003|    586|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    586|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 547, False: 39]
  ------------------
19007|    586|                                       ? static_cast<std::size_t>(len)
19008|    586|                                       : chunk_size;
19009|    586|            const std::size_t old_size = result.size();
19010|    586|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    586|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    586|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 586, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    586|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    586|            chars_read += bytes_read;
19018|    586|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    586|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 74, False: 512]
  |  |  ------------------
  ------------------
19019|     74|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     74|                result.resize(old_size + bytes_read);
19024|     74|                ++chars_read;
19025|     74|                current = char_traits<char_type>::eof();
19026|     74|                return unexpect_eof(context);
19027|     74|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    512|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    512|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 512, False: 0]
  ------------------
19030|    512|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    512|        }
19032|  1.46k|        return true;
19033|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIhEEmPT_m:
 8644|  4.59k|    {
 8645|  4.59k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  4.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIhEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  4.59k|    {
 8725|  4.59k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  13.5k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 9.04k, False: 4.50k]
  ------------------
 8727|  9.04k|        {
 8728|  9.04k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  9.04k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 8.94k, False: 96]
  |  |  ------------------
  ------------------
 8729|  8.94k|            {
 8730|  8.94k|                ptr[read_index] = static_cast<char>(*current);
 8731|  8.94k|                std::advance(current, 1);
 8732|  8.94k|            }
 8733|     96|            else
 8734|     96|            {
 8735|     96|                return read_index;
 8736|     96|            }
 8737|  9.04k|        }
 8738|  4.50k|        return count * sizeof(T);
 8739|  4.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  1.46k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  1.46k|        handle_value(std::move(val));
13926|  1.46k|        return true;
13927|  1.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
14030|  1.46k|    {
14031|  1.46k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.46k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.46k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 717, False: 746]
  |  Branch (14042:9): [True: 746, False: 0]
  |  Branch (14042:9): [True: 1.46k, False: 0]
  ------------------
14043|       |
14044|  1.46k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 717, False: 746]
  ------------------
14045|    717|        {
14046|    717|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    717|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    717|        }
14054|       |
14055|    746|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    746|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 746, False: 0]
  ------------------
14056|    746|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    746|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 746, False: 0]
  ------------------
14057|    746|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    746|        return object_element;
14064|    746|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIhLb0EEEbRT_:
18739|  4.01k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.01k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.01k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.01k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  4.01k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 3.98k, False: 22]
  |  Branch (18746:34): [Folded, False: 3.98k]
  |  Branch (18746:57): [True: 0, False: 3.98k]
  ------------------
18747|  3.98k|        {
18748|  3.98k|            byte_swap(result);
18749|  3.98k|        }
18750|  4.01k|        return true;
18751|  4.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIhEEbRT_PKc:
18667|  4.01k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.01k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.01k|        chars_read += new_chars_read;
18672|  4.01k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.01k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 22, False: 3.98k]
  |  |  ------------------
  ------------------
18673|     22|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     22|            ++chars_read;
18676|     22|            static_cast<void>(report_eof(context));
18677|     22|            return false;
18678|     22|        }
18679|  3.98k|        return true;
18680|  4.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIhEEvRT_:
18698|  3.98k|    {
18699|  3.98k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  3.98k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.98k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 3.98k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  3.98k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE7booleanEb:
13890|  2.45k|    {
13891|  2.45k|        handle_value(val);
13892|  2.45k|        return true;
13893|  2.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRbEEPSG_OT_:
14030|  2.45k|    {
14031|  2.45k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 2.45k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  2.45k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.45k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.58k, False: 867]
  |  Branch (14042:9): [True: 867, False: 0]
  |  Branch (14042:9): [True: 2.45k, False: 0]
  ------------------
14043|       |
14044|  2.45k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.58k, False: 867]
  ------------------
14045|  1.58k|        {
14046|  1.58k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.58k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.58k|        }
14054|       |
14055|    867|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    867|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 867, False: 0]
  ------------------
14056|    867|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    867|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 867, False: 0]
  ------------------
14057|    867|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    867|        return object_element;
14064|    867|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE4nullEv:
13884|  14.9k|    {
13885|  14.9k|        handle_value(nullptr);
13886|  14.9k|        return true;
13887|  14.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIDnEEPSG_OT_:
14030|  14.9k|    {
14031|  14.9k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 14.9k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  14.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  14.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 5.66k, False: 9.23k]
  |  Branch (14042:9): [True: 9.23k, False: 0]
  |  Branch (14042:9): [True: 14.9k, False: 0]
  ------------------
14043|       |
14044|  14.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 5.66k, False: 9.23k]
  ------------------
14045|  5.66k|        {
14046|  5.66k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  5.66k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  5.66k|        }
14054|       |
14055|  9.23k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.23k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 9.23k, False: 0]
  ------------------
14056|  9.23k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  9.23k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 9.23k, False: 0]
  ------------------
14057|  9.23k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  9.23k|        return object_element;
14064|  9.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE11emit_signedIiEEbT_:
18771|    987|    {
18772|    987|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    987|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 987, False: 0]
  |  |  ------------------
  ------------------
18773|    987|        {
18774|    987|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    987|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE14number_integerEl:
13896|  1.58k|    {
13897|  1.58k|        handle_value(val);
13898|  1.58k|        return true;
13899|  1.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRlEEPSG_OT_:
14030|  1.58k|    {
14031|  1.58k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.58k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.58k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.58k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 593, False: 990]
  |  Branch (14042:9): [True: 990, False: 0]
  |  Branch (14042:9): [True: 1.58k, False: 0]
  ------------------
14043|       |
14044|  1.58k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 593, False: 990]
  ------------------
14045|    593|        {
14046|    593|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    593|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    593|        }
14054|       |
14055|    990|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    990|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 990, False: 0]
  ------------------
14056|    990|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    990|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 990, False: 0]
  ------------------
14057|    990|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    990|        return object_element;
14064|    990|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE15number_unsignedEm:
13902|  1.26k|    {
13903|  1.26k|        handle_value(val);
13904|  1.26k|        return true;
13905|  1.26k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRmEEPSG_OT_:
14030|  1.26k|    {
14031|  1.26k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.26k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.26k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.26k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 432, False: 831]
  |  Branch (14042:9): [True: 831, False: 0]
  |  Branch (14042:9): [True: 1.26k, False: 0]
  ------------------
14043|       |
14044|  1.26k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 432, False: 831]
  ------------------
14045|    432|        {
14046|    432|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    432|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    432|        }
14054|       |
14055|    831|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    831|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 831, False: 0]
  ------------------
14056|    831|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    831|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 831, False: 0]
  ------------------
14057|    831|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    831|        return object_element;
14064|    831|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIlLb1EEEbRT_:
18739|    610|    {
18740|       |        // read in the original format
18741|       |
18742|    610|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    610|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 610]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    610|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 610]
  |  Branch (18746:34): [True: 610, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|    610|        return true;
18751|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIlEEbRT_PKc:
18667|    610|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    610|        auto new_chars_read = ia.get_elements(&dest);
18671|    610|        chars_read += new_chars_read;
18672|    610|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    610|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 14, False: 596]
  |  |  ------------------
  ------------------
18673|     14|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     14|            ++chars_read;
18676|     14|            static_cast<void>(report_eof(context));
18677|     14|            return false;
18678|     14|        }
18679|    596|        return true;
18680|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIlEEmPT_m:
 8644|    610|    {
 8645|    610|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIlEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|    610|    {
 8725|    610|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  5.41k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 4.81k, False: 596]
  ------------------
 8727|  4.81k|        {
 8728|  4.81k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  4.81k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 4.80k, False: 14]
  |  |  ------------------
  ------------------
 8729|  4.80k|            {
 8730|  4.80k|                ptr[read_index] = static_cast<char>(*current);
 8731|  4.80k|                std::advance(current, 1);
 8732|  4.80k|            }
 8733|     14|            else
 8734|     14|            {
 8735|     14|                return read_index;
 8736|     14|            }
 8737|  4.81k|        }
 8738|    596|        return count * sizeof(T);
 8739|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE11emit_signedIlEEbT_:
18771|    596|    {
18772|    596|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    596|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 596, False: 0]
  |  |  ------------------
  ------------------
18773|    596|        {
18774|    596|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    596|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberImLb1EEEbRT_:
18739|  1.29k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.29k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.29k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.29k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 1.29k]
  |  Branch (18746:34): [True: 1.29k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  1.29k|        return true;
18751|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toImEEbRT_PKc:
18667|  1.29k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.29k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.29k|        chars_read += new_chars_read;
18672|  1.29k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 32, False: 1.26k]
  |  |  ------------------
  ------------------
18673|     32|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     32|            ++chars_read;
18676|     32|            static_cast<void>(report_eof(context));
18677|     32|            return false;
18678|     32|        }
18679|  1.26k|        return true;
18680|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsImEEmPT_m:
 8644|  1.29k|    {
 8645|  1.29k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implImEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.29k|    {
 8725|  1.29k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  11.4k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 10.1k, False: 1.26k]
  ------------------
 8727|  10.1k|        {
 8728|  10.1k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  10.1k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 10.1k, False: 32]
  |  |  ------------------
  ------------------
 8729|  10.1k|            {
 8730|  10.1k|                ptr[read_index] = static_cast<char>(*current);
 8731|  10.1k|                std::advance(current, 1);
 8732|  10.1k|            }
 8733|     32|            else
 8734|     32|            {
 8735|     32|                return read_index;
 8736|     32|            }
 8737|  10.1k|        }
 8738|  1.26k|        return count * sizeof(T);
 8739|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE13emit_unsignedImEEbT_:
18799|  1.26k|    {
18800|  1.26k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  1.26k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.26k, False: 0]
  |  |  ------------------
  ------------------
18801|  1.26k|        {
18802|  1.26k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  1.26k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  1.26k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE27bson_unsupported_type_errorEmm:
19100|    128|    {
19101|    128|        const std::string cr_str = hex_byte(static_cast<std::uint8_t>(element_type));
19102|    128|        return sax->parse_error(position, cr_str,
19103|    128|                                parse_error::create(exception_id::bson_unsupported_type, position, concat("Unsupported BSON record type 0x", cr_str), nullptr));
19104|    128|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE3getEv:
18652|   156k|    {
18653|   156k|        ++chars_read;
18654|   156k|        return current = ia.get_character();
18655|   156k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E13get_characterEv:
 8590|   156k|    {
 8591|   156k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|   156k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 153k, False: 2.86k]
  |  |  ------------------
  ------------------
 8592|   153k|        {
 8593|   153k|            auto result = char_traits<char_type>::to_int_type(*current);
 8594|   153k|            std::advance(current, 1);
 8595|   153k|            return result;
 8596|   153k|        }
 8597|       |
 8598|  2.86k|        ++eof_reads;
 8599|  2.86k|        return char_traits<char_type>::eof();
 8600|   156k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15last_byte_errorENS1_12exception_idERKSC_PKcST_:
19116|    261|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    261|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    261|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 250, False: 11]
  ------------------
19120|    261|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEED2Ev:
14954|  3.54k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEED2Ev:
13881|  3.54k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__121__list_const_iteratorIhPvEES6_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES8_S9_:
 9007|  3.54k|{
 9008|  3.54k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
 9009|  3.54k|    return factory_type::create(first, last);
 9010|  3.54k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryINSt3__121__list_const_iteratorIhPvEES6_vE6createES6_S6_:
 8935|  3.54k|    {
 8936|  3.54k|        return adapter_type(std::move(first), std::move(last));
 8937|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_EC2ES6_S6_:
 8586|  3.54k|        : begin(first), current(std::move(first)), end(std::move(last))
 8587|  3.54k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bsonIRP8_IO_FILEEESE_OT_bbNS0_6detail15error_handler_tE:
36818|  3.54k|    {
36819|  3.54k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::bson, strict, allow_exceptions, error_handler);
36820|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail18file_input_adapterEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  3.54k|    {
36386|  3.54k|        basic_json result;
36387|  3.54k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  3.54k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  3.54k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 3.54k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  3.54k|        return result;
36394|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEEC2ERSG_bPNS1_5lexerISG_SH_EE:
13873|  3.54k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  3.54k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
14944|  3.54k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  3.54k|    {
14946|  3.54k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
14969|  3.54k|    {
14970|  3.54k|        sax = sax_;
14971|  3.54k|        container_stack.clear();
14972|  3.54k|        bon8_pushback_size = 0;
14973|  3.54k|        bool result = false;
14974|       |
14975|  3.54k|        switch (input_format)
14976|  3.54k|        {
14977|  3.54k|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 3.54k, False: 0]
  ------------------
14978|  3.54k|                result = parse_bson_internal();
14979|  3.54k|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 3.54k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 3.54k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 3.54k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 3.54k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 3.54k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 3.54k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 3.54k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  3.54k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  2.29k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 2.29k, False: 0]
  |  Branch (15004:23): [True: 2.29k, False: 0]
  ------------------
15005|  2.29k|        {
15006|  2.29k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 2.29k]
  |  Branch (15006:59): [True: 0, False: 2.29k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  2.29k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 2.29k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  2.29k|            else
15016|  2.29k|            {
15017|  2.29k|                get();
15018|  2.29k|            }
15019|       |
15020|  2.29k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  2.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 11, False: 2.28k]
  |  |  ------------------
  ------------------
15021|     11|            {
15022|     11|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     11|            }
15024|  2.29k|        }
15025|       |
15026|  2.28k|        return result;
15027|  2.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE19parse_bson_internalEv:
15186|  3.54k|    {
15187|  3.54k|        if (JSON_HEDLEY_UNLIKELY(!open_bson_document(/*is_object*/true)))
  ------------------
  |  | 1667|  3.54k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 3.54k]
  |  |  ------------------
  ------------------
15188|      0|        {
15189|      0|            return false;
15190|      0|        }
15191|       |
15192|       |        // the key currently being read; hoisted out of the loop so that its
15193|       |        // capacity is reused across elements and across nesting levels
15194|  3.54k|        string_t key;
15195|       |
15196|  35.2k|        while (true)
  ------------------
  |  Branch (15196:16): [True: 33.9k, Folded]
  ------------------
15197|  33.9k|        {
15198|  33.9k|            const auto element_type = get();
15199|       |
15200|  33.9k|            if (element_type == 0) // end of the innermost document
  ------------------
  |  Branch (15200:17): [True: 4.45k, False: 29.5k]
  ------------------
15201|  4.45k|            {
15202|       |                // a copy, not a reference: it must stay valid across the
15203|       |                // pop_back() inside leave_container() below, which destroys
15204|       |                // the container_stack element it would otherwise alias
15205|  4.45k|                const container_frame top = container_stack.back();
15206|       |
15207|  4.45k|                if (JSON_HEDLEY_UNLIKELY(!check_bson_document_size(top.start_position, top.declared_size)))
  ------------------
  |  | 1667|  4.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.45k]
  |  |  ------------------
  ------------------
15208|      0|                {
15209|      0|                    return false;
15210|      0|                }
15211|       |
15212|  4.45k|                if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  4.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.45k]
  |  |  ------------------
  ------------------
15213|      0|                {
15214|      0|                    return false;
15215|      0|                }
15216|       |                // the document begun here is complete once it is not inside one
15217|  4.45k|                if (container_stack.empty())
  ------------------
  |  Branch (15217:21): [True: 2.29k, False: 2.15k]
  ------------------
15218|  2.29k|                {
15219|  2.29k|                    return true;
15220|  2.29k|                }
15221|  2.15k|                continue;
15222|  4.45k|            }
15223|       |
15224|  29.5k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("element list")))
  ------------------
  |  | 1667|  29.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 29.5k]
  |  |  ------------------
  ------------------
15225|      0|            {
15226|      0|                return false;
15227|      0|            }
15228|       |
15229|  29.5k|            const std::size_t element_type_parse_position = chars_read;
15230|  29.5k|            key.clear();
15231|  29.5k|            if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key)))
  ------------------
  |  | 1667|  29.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 29.5k]
  |  |  ------------------
  ------------------
15232|      0|            {
15233|      0|                return false;
15234|      0|            }
15235|       |
15236|       |            // an array's elements are named "0", "1", ... in the wire format,
15237|       |            // and those names are not passed on
15238|  29.5k|            if (container_stack.back().is_object && !sax->key(key))
  ------------------
  |  Branch (15238:17): [True: 16.9k, False: 12.5k]
  |  Branch (15238:53): [True: 0, False: 16.9k]
  ------------------
15239|      0|            {
15240|      0|                return false;
15241|      0|            }
15242|       |
15243|  29.5k|            if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position)))
  ------------------
  |  | 1667|  29.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 29.5k]
  |  |  ------------------
  ------------------
15244|      0|            {
15245|      0|                return false;
15246|      0|            }
15247|  29.5k|        }
15248|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE18open_bson_documentEb:
15154|  7.71k|    {
15155|       |        // recorded before the size prefix is read, because
15156|       |        // check_bson_document_size() measures the document from here
15157|  7.71k|        const std::size_t document_start = chars_read;
15158|  7.71k|        std::int32_t document_size{};
15159|  7.71k|        if (!get_number<std::int32_t, true>(document_size))
  ------------------
  |  Branch (15159:13): [True: 0, False: 7.71k]
  ------------------
15160|      0|        {
15161|      0|            return false;
15162|      0|        }
15163|       |
15164|  7.71k|        if (JSON_HEDLEY_UNLIKELY(!enter_container(is_object, detail::unknown_size())))
  ------------------
  |  | 1667|  7.71k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.71k]
  |  |  ------------------
  ------------------
15165|      0|        {
15166|      0|            return false;
15167|      0|        }
15168|       |
15169|  7.71k|        container_frame& frame = container_stack.back();
15170|  7.71k|        frame.start_position = document_start;
15171|  7.71k|        frame.declared_size = document_size;
15172|  7.71k|        return true;
15173|  7.71k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIiLb1EEEbRT_:
18739|  11.3k|    {
18740|       |        // read in the original format
18741|       |
18742|  11.3k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  11.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 11.3k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  11.3k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 11.3k]
  |  Branch (18746:34): [True: 11.3k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  11.3k|        return true;
18751|  11.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIiEEbRT_PKc:
18667|  11.3k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  11.3k|        auto new_chars_read = ia.get_elements(&dest);
18671|  11.3k|        chars_read += new_chars_read;
18672|  11.3k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  11.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 68, False: 11.2k]
  |  |  ------------------
  ------------------
18673|     68|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     68|            ++chars_read;
18676|     68|            static_cast<void>(report_eof(context));
18677|     68|            return false;
18678|     68|        }
18679|  11.2k|        return true;
18680|  11.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIiEEmPT_m:
 8374|  11.3k|    {
 8375|  11.3k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  11.3k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10report_eofEPKc:
19058|    865|    {
19059|    865|        return sax->parse_error(chars_read, "<end of file>",
19060|    865|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|    865|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  1.25k|    {
14005|  1.25k|        errored = true;
14006|  1.25k|        static_cast<void>(ex);
14007|  1.25k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 1.25k, False: 0]
  ------------------
14008|  1.25k|        {
14009|  1.25k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  1.25k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  1.25k|        }
14011|      0|        return false;
14012|  1.25k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17exception_messageERKSC_SM_:
19163|  1.12k|    {
19164|  1.12k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  1.12k|        switch (input_format)
19167|  1.12k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 1.12k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 1.12k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 1.12k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|  1.12k|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 1.12k, False: 0]
  ------------------
19181|  1.12k|                error_msg += "BSON";
19182|  1.12k|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 1.12k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 1.12k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 1.12k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 1.12k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  1.12k|        }
19196|       |
19197|  1.12k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  1.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15enter_containerEbmi:
15082|  7.68k|    {
15083|  7.68k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|  15.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.68k]
  |  |  |  Branch (1667:94): [True: 5.06k, False: 2.62k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|  7.68k|        container_stack.emplace_back(len, is_object, type_marker);
15089|  7.68k|        return true;
15090|  7.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12start_objectEm:
13930|  5.06k|    {
13931|  5.06k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  5.06k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  5.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|  7.68k|    {
14031|  7.68k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 3.53k, False: 4.14k]
  ------------------
14032|  3.53k|        {
14033|  3.53k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  3.53k|            return &root;
14040|  3.53k|        }
14041|       |
14042|  4.14k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  4.14k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.93k, False: 2.21k]
  |  Branch (14042:9): [True: 2.21k, False: 0]
  |  Branch (14042:9): [True: 4.14k, False: 0]
  ------------------
14043|       |
14044|  4.14k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.93k, False: 2.21k]
  ------------------
14045|  1.93k|        {
14046|  1.93k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.93k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.93k|        }
14054|       |
14055|  2.21k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.21k, False: 0]
  ------------------
14056|  2.21k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.21k, False: 0]
  ------------------
14057|  2.21k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.21k|        return object_element;
14064|  2.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_18file_input_adapterEEESH_EEbRT_mPKcPT0_:
13724|  7.68k|{
13725|  7.68k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|  7.68k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.68k]
  |  |  |  Branch (1667:94): [True: 0, False: 7.68k]
  |  |  |  Branch (1667:94): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|  7.68k|    return true;
13730|  7.68k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11start_arrayEm:
13966|  2.62k|    {
13967|  2.62k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  2.62k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  2.62k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 2.62k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  2.62k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 0, False: 2.62k]
  ------------------
13980|      0|        {
13981|      0|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|      0|        }
13983|       |
13984|  2.62k|        return true;
13985|  2.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15container_frameC2Embi:
15051|  7.68k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE24check_bson_document_sizeEmi:
15141|  4.45k|    {
15142|  4.45k|        if (JSON_HEDLEY_UNLIKELY(document_size < 0 || static_cast<std::size_t>(document_size) != chars_read - document_start))
  ------------------
  |  | 1667|  8.87k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 156, False: 4.30k]
  |  |  |  Branch (1667:94): [True: 38, False: 4.41k]
  |  |  |  Branch (1667:94): [True: 118, False: 4.30k]
  |  |  ------------------
  ------------------
15143|    156|        {
15144|    156|            return bson_document_size_error(document_size, chars_read - document_start);
15145|    156|        }
15146|  4.30k|        return true;
15147|  4.45k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE24bson_document_size_errorEim:
19094|    156|    {
19095|    156|        return last_byte_error(exception_id::unexpected_byte, concat("document size ", std::to_string(document_size), " does not match the number of bytes read (", std::to_string(bytes_read), ")"), "document");
19096|    156|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15leave_containerEv:
15114|  4.30k|    {
15115|  4.30k|        const bool is_object = container_stack.back().is_object;
15116|  4.30k|        container_stack.pop_back();
15117|  4.30k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 3.15k, False: 1.15k]
  ------------------
15118|  4.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE10end_objectEv:
13952|  3.15k|    {
13953|  3.15k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  3.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 3.15k, False: 0]
  ------------------
13954|  3.15k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 3.15k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  3.15k|        ref_stack.back()->set_parents();
13961|  3.15k|        ref_stack.pop_back();
13962|  3.15k|        return true;
13963|  3.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE9end_arrayEv:
13988|  1.15k|    {
13989|  1.15k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  1.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 1.15k, False: 0]
  ------------------
13990|  1.15k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  1.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 1.15k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  1.15k|        ref_stack.back()->set_parents();
13997|  1.15k|        ref_stack.pop_back();
13998|  1.15k|        return true;
13999|  1.15k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE12unexpect_eofEPKc:
19041|   148k|    {
19042|   148k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|   148k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 710, False: 148k]
  |  |  ------------------
  ------------------
19043|    710|        {
19044|    710|            return report_eof(context);
19045|    710|        }
19046|   148k|        return true;
19047|   148k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13get_bson_cstrERSC_:
15258|  29.0k|    {
15259|  29.0k|        if (get_bson_cstr_bulk(result, std::integral_constant<bool, bulk_scan> {}))
  ------------------
  |  Branch (15259:13): [True: 0, False: 29.0k]
  ------------------
15260|      0|        {
15261|      0|            return check_string_utf8(result, "key");
15262|      0|        }
15263|       |
15264|  29.0k|        auto out = std::back_inserter(result);
15265|   119k|        while (true)
  ------------------
  |  Branch (15265:16): [True: 119k, Folded]
  ------------------
15266|   119k|        {
15267|   119k|            get();
15268|   119k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("cstring")))
  ------------------
  |  | 1667|   119k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 119k]
  |  |  ------------------
  ------------------
15269|      0|            {
15270|      0|                return false;
15271|      0|            }
15272|   119k|            if (current == 0x00)
  ------------------
  |  Branch (15272:17): [True: 28.9k, False: 90.1k]
  ------------------
15273|  28.9k|            {
15274|  28.9k|                return check_string_utf8(result, "key");
15275|  28.9k|            }
15276|  90.1k|            *out++ = static_cast<typename string_t::value_type>(current);
15277|  90.1k|        }
15278|  29.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE18get_bson_cstr_bulkERSC_NS4_17integral_constantIbLb0EEE:
15316|  29.0k|    {
15317|  29.0k|        return false;
15318|  29.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17check_string_utf8ERSC_PKc:
18941|  29.8k|    {
18942|  29.8k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 29.8k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|  29.8k|        {
18944|  29.8k|            return true;
18945|  29.8k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE3keyERSC_:
13942|  16.9k|    {
13943|  16.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  16.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 16.9k, False: 0]
  ------------------
13944|  16.9k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  16.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 16.9k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  16.9k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  16.9k|        return true;
13949|  16.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE27parse_bson_element_internalEim:
15392|  28.9k|    {
15393|  28.9k|        switch (element_type)
15394|  28.9k|        {
15395|  1.77k|            case 0x01: // double
  ------------------
  |  Branch (15395:13): [True: 1.77k, False: 27.1k]
  ------------------
15396|  1.77k|            {
15397|  1.77k|                double number{};
15398|  1.77k|                return get_number<double, true>(number) && emit_float(number);
  ------------------
  |  Branch (15398:24): [True: 1.75k, False: 19]
  |  Branch (15398:60): [True: 1.75k, False: 0]
  ------------------
15399|      0|            }
15400|       |
15401|  1.01k|            case 0x02: // string
  ------------------
  |  Branch (15401:13): [True: 1.01k, False: 27.9k]
  ------------------
15402|  1.01k|            {
15403|  1.01k|                std::int32_t len{};
15404|  1.01k|                string_t value;
15405|  1.01k|                return get_number<std::int32_t, true>(len) && get_bson_string(len, value) && sax->string(value);
  ------------------
  |  Branch (15405:24): [True: 1.00k, False: 12]
  |  Branch (15405:63): [True: 877, False: 125]
  |  Branch (15405:94): [True: 877, False: 0]
  ------------------
15406|      0|            }
15407|       |
15408|  1.54k|            case 0x03: // object
  ------------------
  |  Branch (15408:13): [True: 1.54k, False: 27.4k]
  ------------------
15409|  1.54k|            {
15410|  1.54k|                return open_bson_document(/*is_object*/true);
15411|      0|            }
15412|       |
15413|  2.63k|            case 0x04: // array
  ------------------
  |  Branch (15413:13): [True: 2.63k, False: 26.3k]
  ------------------
15414|  2.63k|            {
15415|  2.63k|                return open_bson_document(/*is_object*/false);
15416|      0|            }
15417|       |
15418|  1.59k|            case 0x05: // binary
  ------------------
  |  Branch (15418:13): [True: 1.59k, False: 27.3k]
  ------------------
15419|  1.59k|            {
15420|  1.59k|                std::int32_t len{};
15421|  1.59k|                binary_t value;
15422|  1.59k|                return get_number<std::int32_t, true>(len) && get_bson_binary(len, value) && sax->binary(value);
  ------------------
  |  Branch (15422:24): [True: 1.58k, False: 12]
  |  Branch (15422:63): [True: 1.46k, False: 123]
  |  Branch (15422:94): [True: 1.46k, False: 0]
  ------------------
15423|      0|            }
15424|       |
15425|  2.46k|            case 0x08: // boolean
  ------------------
  |  Branch (15425:13): [True: 2.46k, False: 26.4k]
  ------------------
15426|  2.46k|            {
15427|  2.46k|                std::uint8_t value{};
15428|  2.46k|                return get_number<std::uint8_t>(value) && sax->boolean(value != 0);
  ------------------
  |  Branch (15428:24): [True: 2.45k, False: 13]
  |  Branch (15428:59): [True: 2.45k, False: 0]
  ------------------
15429|      0|            }
15430|       |
15431|  14.9k|            case 0x0A: // null
  ------------------
  |  Branch (15431:13): [True: 14.9k, False: 14.0k]
  ------------------
15432|  14.9k|            {
15433|  14.9k|                return sax->null();
15434|      0|            }
15435|       |
15436|  1.00k|            case 0x10: // int32
  ------------------
  |  Branch (15436:13): [True: 1.00k, False: 27.9k]
  ------------------
15437|  1.00k|            {
15438|  1.00k|                std::int32_t value{};
15439|  1.00k|                return get_number<std::int32_t, true>(value) && emit_signed(value);
  ------------------
  |  Branch (15439:24): [True: 987, False: 14]
  |  Branch (15439:65): [True: 987, False: 0]
  ------------------
15440|      0|            }
15441|       |
15442|    610|            case 0x12: // int64
  ------------------
  |  Branch (15442:13): [True: 610, False: 28.3k]
  ------------------
15443|    610|            {
15444|    610|                std::int64_t value{};
15445|    610|                return get_number<std::int64_t, true>(value) && emit_signed(value);
  ------------------
  |  Branch (15445:24): [True: 596, False: 14]
  |  Branch (15445:65): [True: 596, False: 0]
  ------------------
15446|      0|            }
15447|       |
15448|  1.29k|            case 0x11: // uint64
  ------------------
  |  Branch (15448:13): [True: 1.29k, False: 27.6k]
  ------------------
15449|  1.29k|            {
15450|  1.29k|                std::uint64_t value{};
15451|  1.29k|                return get_number<std::uint64_t, true>(value) && emit_unsigned(value);
  ------------------
  |  Branch (15451:24): [True: 1.26k, False: 32]
  |  Branch (15451:66): [True: 1.26k, False: 0]
  ------------------
15452|      0|            }
15453|       |
15454|    128|            default: // anything else is not supported (yet)
  ------------------
  |  Branch (15454:13): [True: 128, False: 28.8k]
  ------------------
15455|    128|            {
15456|    128|                return bson_unsupported_type_error(element_type_parse_position, element_type);
15457|      0|            }
15458|  28.9k|        }
15459|  28.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIdLb1EEEbRT_:
18739|  1.77k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.77k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.77k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.77k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.77k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 1.77k]
  |  Branch (18746:34): [True: 1.77k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  1.77k|        return true;
18751|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIdEEbRT_PKc:
18667|  1.77k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.77k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.77k|        chars_read += new_chars_read;
18672|  1.77k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.77k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 1.75k]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|  1.75k|        return true;
18680|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIdEEmPT_m:
 8374|  1.77k|    {
 8375|  1.77k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIdEEbT_:
18825|  1.75k|    {
18826|  1.75k|        const auto result = static_cast<number_float_t>(number);
18827|  1.75k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  3.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.75k]
  |  |  |  Branch (1667:94): [True: 1.70k, False: 43]
  |  |  |  Branch (1667:94): [True: 0, False: 1.70k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.75k|        return sax->number_float(result, "");
18832|  1.75k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_token_stringEv:
19152|    272|    {
19153|    272|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    272|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12number_floatEdRKSC_:
13908|  1.75k|    {
13909|  1.75k|        handle_value(val);
13910|  1.75k|        return true;
13911|  1.75k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRdEEPSG_OT_:
14030|  1.75k|    {
14031|  1.75k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.75k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.75k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.75k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 585, False: 1.16k]
  |  Branch (14042:9): [True: 1.16k, False: 0]
  |  Branch (14042:9): [True: 1.75k, False: 0]
  ------------------
14043|       |
14044|  1.75k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 585, False: 1.16k]
  ------------------
14045|    585|        {
14046|    585|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    585|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    585|        }
14054|       |
14055|  1.16k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.16k, False: 0]
  ------------------
14056|  1.16k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.16k, False: 0]
  ------------------
14057|  1.16k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.16k|        return object_element;
14064|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_bson_stringIiEEbT_RSC_:
15333|  1.00k|    {
15334|  1.00k|        if (JSON_HEDLEY_UNLIKELY(len < 1))
  ------------------
  |  | 1667|  1.00k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 33, False: 969]
  |  |  ------------------
  ------------------
15335|     33|        {
15336|     33|            return bson_length_error("string length must be at least 1, is ", len, "string");
15337|     33|        }
15338|       |
15339|    969|        if (JSON_HEDLEY_UNLIKELY(!get_string(len - static_cast<NumberType>(1), result)))
  ------------------
  |  | 1667|    969|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 969]
  |  |  ------------------
  ------------------
15340|      0|        {
15341|      0|            return false;
15342|      0|        }
15343|       |
15344|    969|        if (JSON_HEDLEY_UNLIKELY(get() != 0x00))
  ------------------
  |  | 1667|    969|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 21, False: 948]
  |  |  ------------------
  ------------------
15345|     21|        {
15346|     21|            return last_byte_error(exception_id::unexpected_byte, "BSON string is not null-terminated", "string");
15347|     21|        }
15348|       |
15349|    948|        return check_string_utf8(result, "string");
15350|    969|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17bson_length_errorIiEEbPKcT_SN_:
19088|     73|    {
19089|     73|        return last_byte_error(exception_id::unexpected_byte, concat(prefix, std::to_string(len)), context);
19090|     73|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIiEEbT_RSC_:
18910|    969|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|    969|        return get_bytes(len, "string", result);
18921|    969|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIiSC_EEbT_PKcRT0_:
18998|    969|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    969|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.38k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 488, False: 898]
  ------------------
19003|    488|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    488|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 444, False: 44]
  ------------------
19007|    488|                                       ? static_cast<std::size_t>(len)
19008|    488|                                       : chunk_size;
19009|    488|            const std::size_t old_size = result.size();
19010|    488|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    488|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    488|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 488, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    488|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    488|            chars_read += bytes_read;
19018|    488|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    488|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 71, False: 417]
  |  |  ------------------
  ------------------
19019|     71|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     71|                result.resize(old_size + bytes_read);
19024|     71|                ++chars_read;
19025|     71|                current = char_traits<char_type>::eof();
19026|     71|                return unexpect_eof(context);
19027|     71|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    417|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    417|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 417, False: 0]
  ------------------
19030|    417|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    417|        }
19032|    898|        return true;
19033|    969|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIcEEmPT_m:
 8374|    488|    {
 8375|    488|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|    488|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE6stringERSC_:
13914|    877|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|    877|        handle_value(std::move(val));
13918|    877|        return true;
13919|    877|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueISC_EEPSG_OT_:
14030|    877|    {
14031|    877|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 877]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|    877|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|    877|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 483, False: 394]
  |  Branch (14042:9): [True: 394, False: 0]
  |  Branch (14042:9): [True: 877, False: 0]
  ------------------
14043|       |
14044|    877|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 483, False: 394]
  ------------------
14045|    483|        {
14046|    483|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    483|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    483|        }
14054|       |
14055|    394|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    394|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 394, False: 0]
  ------------------
14056|    394|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    394|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 394, False: 0]
  ------------------
14057|    394|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    394|        return object_element;
14064|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_bson_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
15363|  1.58k|    {
15364|  1.58k|        if (JSON_HEDLEY_UNLIKELY(len < 0))
  ------------------
  |  | 1667|  1.58k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 40, False: 1.54k]
  |  |  ------------------
  ------------------
15365|     40|        {
15366|     40|            return bson_length_error("byte array length cannot be negative, is ", len, "binary");
15367|     40|        }
15368|       |
15369|       |        // All BSON binary values have a subtype
15370|  1.54k|        std::uint8_t subtype{};
15371|  1.54k|        if (JSON_HEDLEY_UNLIKELY(!get_number<std::uint8_t>(subtype)))
  ------------------
  |  | 1667|  1.54k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.54k]
  |  |  ------------------
  ------------------
15372|      0|        {
15373|      0|            return false;
15374|      0|        }
15375|  1.54k|        result.set_subtype(subtype);
15376|       |
15377|  1.54k|        return get_binary(len, result);
15378|  1.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  1.53k|    {
18973|  1.53k|        return get_bytes(len, "binary", result);
18974|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIiNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  1.53k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.53k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  2.04k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 586, False: 1.46k]
  ------------------
19003|    586|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    586|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 547, False: 39]
  ------------------
19007|    586|                                       ? static_cast<std::size_t>(len)
19008|    586|                                       : chunk_size;
19009|    586|            const std::size_t old_size = result.size();
19010|    586|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    586|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    586|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 586, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    586|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    586|            chars_read += bytes_read;
19018|    586|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    586|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 74, False: 512]
  |  |  ------------------
  ------------------
19019|     74|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     74|                result.resize(old_size + bytes_read);
19024|     74|                ++chars_read;
19025|     74|                current = char_traits<char_type>::eof();
19026|     74|                return unexpect_eof(context);
19027|     74|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    512|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    512|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 512, False: 0]
  ------------------
19030|    512|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    512|        }
19032|  1.46k|        return true;
19033|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIhEEmPT_m:
 8374|  4.59k|    {
 8375|  4.59k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  4.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  1.46k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  1.46k|        handle_value(std::move(val));
13926|  1.46k|        return true;
13927|  1.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
14030|  1.46k|    {
14031|  1.46k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.46k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.46k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 717, False: 746]
  |  Branch (14042:9): [True: 746, False: 0]
  |  Branch (14042:9): [True: 1.46k, False: 0]
  ------------------
14043|       |
14044|  1.46k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 717, False: 746]
  ------------------
14045|    717|        {
14046|    717|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    717|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    717|        }
14054|       |
14055|    746|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    746|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 746, False: 0]
  ------------------
14056|    746|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    746|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 746, False: 0]
  ------------------
14057|    746|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    746|        return object_element;
14064|    746|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIhLb0EEEbRT_:
18739|  4.01k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.01k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.01k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.01k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  4.01k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 3.98k, False: 22]
  |  Branch (18746:34): [Folded, False: 3.98k]
  |  Branch (18746:57): [True: 0, False: 3.98k]
  ------------------
18747|  3.98k|        {
18748|  3.98k|            byte_swap(result);
18749|  3.98k|        }
18750|  4.01k|        return true;
18751|  4.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIhEEbRT_PKc:
18667|  4.01k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.01k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.01k|        chars_read += new_chars_read;
18672|  4.01k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.01k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 22, False: 3.98k]
  |  |  ------------------
  ------------------
18673|     22|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     22|            ++chars_read;
18676|     22|            static_cast<void>(report_eof(context));
18677|     22|            return false;
18678|     22|        }
18679|  3.98k|        return true;
18680|  4.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIhEEvRT_:
18698|  3.98k|    {
18699|  3.98k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  3.98k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.98k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 3.98k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  3.98k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE7booleanEb:
13890|  2.45k|    {
13891|  2.45k|        handle_value(val);
13892|  2.45k|        return true;
13893|  2.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRbEEPSG_OT_:
14030|  2.45k|    {
14031|  2.45k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 2.45k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  2.45k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.45k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.58k, False: 867]
  |  Branch (14042:9): [True: 867, False: 0]
  |  Branch (14042:9): [True: 2.45k, False: 0]
  ------------------
14043|       |
14044|  2.45k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.58k, False: 867]
  ------------------
14045|  1.58k|        {
14046|  1.58k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.58k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.58k|        }
14054|       |
14055|    867|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    867|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 867, False: 0]
  ------------------
14056|    867|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    867|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 867, False: 0]
  ------------------
14057|    867|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    867|        return object_element;
14064|    867|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE4nullEv:
13884|  14.9k|    {
13885|  14.9k|        handle_value(nullptr);
13886|  14.9k|        return true;
13887|  14.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIDnEEPSG_OT_:
14030|  14.9k|    {
14031|  14.9k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 14.9k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  14.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  14.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 5.66k, False: 9.23k]
  |  Branch (14042:9): [True: 9.23k, False: 0]
  |  Branch (14042:9): [True: 14.9k, False: 0]
  ------------------
14043|       |
14044|  14.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 5.66k, False: 9.23k]
  ------------------
14045|  5.66k|        {
14046|  5.66k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  5.66k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  5.66k|        }
14054|       |
14055|  9.23k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.23k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 9.23k, False: 0]
  ------------------
14056|  9.23k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  9.23k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 9.23k, False: 0]
  ------------------
14057|  9.23k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  9.23k|        return object_element;
14064|  9.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIiEEbT_:
18771|    987|    {
18772|    987|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    987|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 987, False: 0]
  |  |  ------------------
  ------------------
18773|    987|        {
18774|    987|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    987|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE14number_integerEl:
13896|  1.58k|    {
13897|  1.58k|        handle_value(val);
13898|  1.58k|        return true;
13899|  1.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRlEEPSG_OT_:
14030|  1.58k|    {
14031|  1.58k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.58k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.58k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.58k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 593, False: 990]
  |  Branch (14042:9): [True: 990, False: 0]
  |  Branch (14042:9): [True: 1.58k, False: 0]
  ------------------
14043|       |
14044|  1.58k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 593, False: 990]
  ------------------
14045|    593|        {
14046|    593|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    593|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    593|        }
14054|       |
14055|    990|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    990|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 990, False: 0]
  ------------------
14056|    990|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    990|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 990, False: 0]
  ------------------
14057|    990|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    990|        return object_element;
14064|    990|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE15number_unsignedEm:
13902|  1.26k|    {
13903|  1.26k|        handle_value(val);
13904|  1.26k|        return true;
13905|  1.26k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRmEEPSG_OT_:
14030|  1.26k|    {
14031|  1.26k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 0, False: 1.26k]
  ------------------
14032|      0|        {
14033|      0|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      0|            return &root;
14040|      0|        }
14041|       |
14042|  1.26k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.26k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 432, False: 831]
  |  Branch (14042:9): [True: 831, False: 0]
  |  Branch (14042:9): [True: 1.26k, False: 0]
  ------------------
14043|       |
14044|  1.26k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 432, False: 831]
  ------------------
14045|    432|        {
14046|    432|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|    432|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|    432|        }
14054|       |
14055|    831|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    831|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 831, False: 0]
  ------------------
14056|    831|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    831|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 831, False: 0]
  ------------------
14057|    831|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    831|        return object_element;
14064|    831|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIlLb1EEEbRT_:
18739|    610|    {
18740|       |        // read in the original format
18741|       |
18742|    610|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    610|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 610]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    610|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 610]
  |  Branch (18746:34): [True: 610, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|    610|        return true;
18751|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIlEEbRT_PKc:
18667|    610|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    610|        auto new_chars_read = ia.get_elements(&dest);
18671|    610|        chars_read += new_chars_read;
18672|    610|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    610|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 14, False: 596]
  |  |  ------------------
  ------------------
18673|     14|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     14|            ++chars_read;
18676|     14|            static_cast<void>(report_eof(context));
18677|     14|            return false;
18678|     14|        }
18679|    596|        return true;
18680|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIlEEmPT_m:
 8374|    610|    {
 8375|    610|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|    610|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIlEEbT_:
18771|    596|    {
18772|    596|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    596|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 596, False: 0]
  |  |  ------------------
  ------------------
18773|    596|        {
18774|    596|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    596|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberImLb1EEEbRT_:
18739|  1.29k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.29k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.29k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.29k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 0, False: 1.29k]
  |  Branch (18746:34): [True: 1.29k, Folded]
  |  Branch (18746:57): [True: 0, False: 0]
  ------------------
18747|      0|        {
18748|      0|            byte_swap(result);
18749|      0|        }
18750|  1.29k|        return true;
18751|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toImEEbRT_PKc:
18667|  1.29k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.29k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.29k|        chars_read += new_chars_read;
18672|  1.29k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 32, False: 1.26k]
  |  |  ------------------
  ------------------
18673|     32|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     32|            ++chars_read;
18676|     32|            static_cast<void>(report_eof(context));
18677|     32|            return false;
18678|     32|        }
18679|  1.26k|        return true;
18680|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsImEEmPT_m:
 8374|  1.29k|    {
 8375|  1.29k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedImEEbT_:
18799|  1.26k|    {
18800|  1.26k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  1.26k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.26k, False: 0]
  |  |  ------------------
  ------------------
18801|  1.26k|        {
18802|  1.26k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  1.26k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  1.26k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE27bson_unsupported_type_errorEmi:
19100|    128|    {
19101|    128|        const std::string cr_str = hex_byte(static_cast<std::uint8_t>(element_type));
19102|    128|        return sax->parse_error(position, cr_str,
19103|    128|                                parse_error::create(exception_id::bson_unsupported_type, position, concat("Unsupported BSON record type 0x", cr_str), nullptr));
19104|    128|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE3getEv:
18652|   156k|    {
18653|   156k|        ++chars_read;
18654|   156k|        return current = ia.get_character();
18655|   156k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter13get_characterEv:
 8367|   156k|    {
 8368|   156k|        return std::fgetc(m_file);
 8369|   156k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
19116|    261|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    261|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    261|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 250, False: 11]
  ------------------
19120|    261|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEED2Ev:
14954|  3.54k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEED2Ev:
13881|  3.54k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterEP8_IO_FILE:
 9114|  3.54k|{
 9115|  3.54k|    if (file == nullptr)
  ------------------
  |  Branch (9115:9): [True: 0, False: 3.54k]
  ------------------
 9116|      0|    {
 9117|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
 9118|      0|    }
 9119|  3.54k|    return file_input_adapter(file);
 9120|  3.54k|}
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterC2EP8_IO_FILE:
 8354|  3.54k|        : m_file(f)
 8355|  3.54k|    {
 8356|       |        JSON_ASSERT(m_file != nullptr);
  ------------------
  |  | 2591|  3.54k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8356:9): [True: 3.54k, False: 0]
  ------------------
 8357|  3.54k|    }

LLVMFuzzerTestOneInput:
   46|  3.54k|{
   47|  3.54k|    std::vector<uint8_t> const vec1(data, data + size);
   48|       |
   49|       |    // step 0: parse input without exceptions
   50|  3.54k|    bool noexcept_threw = false;
   51|  3.54k|    json const j_noexcept = parse_without_exceptions([&] { return json::from_bson(vec1, true, false); }, noexcept_threw);
   52|       |    // whether step 1 succeeded; if not, the catch blocks below check that
   53|       |    // step 0 failed, too
   54|  3.54k|    bool parsed = false;
   55|       |
   56|  3.54k|    try
   57|  3.54k|    {
   58|       |        // step 1: parse input
   59|  3.54k|        json const j1 = json::from_bson(vec1);
   60|  3.54k|        parsed = true;
   61|       |
   62|       |        // without exceptions, the same input must give the same value
   63|  3.54k|        assert(!noexcept_threw && !j_noexcept.is_discarded() && same_value(j_noexcept, j1));
  ------------------
  |  Branch (63:9): [True: 2.28k, False: 1.25k]
  |  Branch (63:9): [True: 2.28k, False: 0]
  |  Branch (63:9): [True: 2.28k, False: 0]
  |  Branch (63:9): [True: 2.28k, False: 1.25k]
  ------------------
   64|       |
   65|  2.28k|        try
   66|  2.28k|        {
   67|       |            // step 2: round trip
   68|  2.28k|            std::vector<uint8_t> const vec2 = json::to_bson(j1);
   69|       |
   70|       |            // parse serialization
   71|  2.28k|            json const j2 = json::from_bson(vec2);
   72|       |
   73|       |            // serializations must match
   74|  2.28k|            assert(json::to_bson(j2) == vec2);
  ------------------
  |  Branch (74:13): [True: 2.28k, False: 0]
  ------------------
   75|  2.28k|        }
   76|  2.28k|        catch (const json::parse_error&)
   77|  2.28k|        {
   78|       |            // parsing a BSON serialization must not fail
   79|      0|            assert(false);
  ------------------
  |  Branch (79:13): [Folded, False: 0]
  ------------------
   80|      0|        }
   81|  2.28k|    }
   82|  3.54k|    catch (const json::parse_error&)
   83|  3.54k|    {
   84|       |        // parse errors are ok, because input may be random bytes
   85|  1.25k|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (85:9): [True: 0, False: 1.25k]
  |  Branch (85:9): [True: 0, False: 1.25k]
  |  Branch (85:9): [True: 1.25k, False: 0]
  |  Branch (85:9): [True: 1.25k, False: 0]
  ------------------
   86|  1.25k|    }
   87|  3.54k|    catch (const json::type_error&)
   88|  3.54k|    {
   89|       |        // type errors can occur during parsing, too
   90|      0|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  ------------------
   91|      0|    }
   92|  3.54k|    catch (const json::out_of_range&)
   93|  3.54k|    {
   94|       |        // out of range errors can occur during parsing, too
   95|      0|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (95:9): [True: 0, False: 0]
  |  Branch (95:9): [True: 0, False: 0]
  |  Branch (95:9): [True: 0, False: 0]
  |  Branch (95:9): [True: 0, False: 0]
  ------------------
   96|      0|    }
   97|       |
   98|       |    // step 3: the other input adapters must read the data alike
   99|  3.54k|    check_input_adapters(data, size, read_bson());
  100|       |
  101|       |    // return 0 - non-zero return values are reserved for future use
  102|  3.54k|    return 0;
  103|  3.54k|}
fuzzer-parse_bson.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_0clEv:
   51|  3.54k|    json const j_noexcept = parse_without_exceptions([&] { return json::from_bson(vec1, true, false); }, noexcept_threw);
fuzzer-parse_bson.cpp:_ZNK12_GLOBAL__N_19read_bsonclIJRPKhS3_EEEN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS8_6vectorENS8_12basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEEblmdSE_NS6_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  3.54k|    {
   39|  3.54k|        return json::from_bson(std::forward<Args>(args)...);
   40|  3.54k|    }
fuzzer-parse_bson.cpp:_ZNK12_GLOBAL__N_19read_bsonclIJRNSt3__119basic_istringstreamIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEN8nlohmann16json_abi_v3_12_010basic_jsonINS2_3mapENS2_6vectorENS2_12basic_stringIcS5_S7_EEblmdS6_NSB_14adl_serializerENSE_IhNS6_IhEEEEvEEDpOT_:
   38|  3.54k|    {
   39|  3.54k|        return json::from_bson(std::forward<Args>(args)...);
   40|  3.54k|    }
fuzzer-parse_bson.cpp:_ZNK12_GLOBAL__N_19read_bsonclIJNSt3__121__list_const_iteratorIhPvEES5_EEEN8nlohmann16json_abi_v3_12_010basic_jsonINS2_3mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdSE_NS7_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  3.54k|    {
   39|  3.54k|        return json::from_bson(std::forward<Args>(args)...);
   40|  3.54k|    }
fuzzer-parse_bson.cpp:_ZNK12_GLOBAL__N_19read_bsonclIJRP8_IO_FILEEEEN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS8_6vectorENS8_12basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEEblmdSE_NS6_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  3.54k|    {
   39|  3.54k|        return json::from_bson(std::forward<Args>(args)...);
   40|  3.54k|    }

_Z10same_valueRKN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEESG_:
   34|  2.28k|{
   35|  2.28k|    return lhs.dump(-1, ' ', false, json::error_handler_t::keep) == rhs.dump(-1, ' ', false, json::error_handler_t::keep);
   36|  2.28k|}
fuzzer-parse_bson.cpp:_Z24parse_without_exceptionsIZ22LLVMFuzzerTestOneInputE3$_0EN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS2_14adl_serializerENS6_IhNSA_IhEEEEvEET_Rb:
   44|  3.54k|{
   45|  3.54k|    threw = false;
   46|  3.54k|    try
   47|  3.54k|    {
   48|  3.54k|        return parse();
   49|  3.54k|    }
   50|  3.54k|    catch (const json::parse_error&)
   51|  3.54k|    {
   52|      0|        assert(false);
  ------------------
  |  Branch (52:9): [Folded, False: 0]
  ------------------
   53|      0|    }
   54|  3.54k|    catch (const json::exception&)
   55|  3.54k|    {
   56|      0|        threw = true;
   57|      0|    }
   58|      0|    return {};
   59|  3.54k|}
fuzzer-parse_bson.cpp:_Z20check_input_adaptersIN12_GLOBAL__N_19read_bsonEEvPKhmRKT_:
  117|  3.54k|{
  118|  3.54k|    const read_outcome expected = read_with(parse, data, data + size);
  119|       |
  120|       |    // stream adapter
  121|  3.54k|    {
  122|  3.54k|        std::istringstream stream(std::string(reinterpret_cast<const char*>(data), size));
  123|  3.54k|        assert(read_with(parse, stream) == expected);
  ------------------
  |  Branch (123:9): [True: 3.54k, False: 0]
  ------------------
  124|  3.54k|    }
  125|       |
  126|       |    // iterator adapter on a non-contiguous range
  127|  3.54k|    {
  128|  3.54k|        const std::list<std::uint8_t> list(data, data + size);
  129|  3.54k|        assert(read_with(parse, list.begin(), list.end()) == expected);
  ------------------
  |  Branch (129:9): [True: 3.54k, False: 0]
  ------------------
  130|  3.54k|    }
  131|       |
  132|  3.54k|#if defined(__unix__) || defined(__APPLE__)
  133|       |    // FILE* adapter; fmemopen may refuse an empty buffer
  134|  3.54k|    {
  135|  3.54k|        std::vector<std::uint8_t> buffer(data, data + size);
  136|  3.54k|        std::FILE* file = buffer.empty() ? nullptr : fmemopen(buffer.data(), buffer.size(), "rb");
  ------------------
  |  Branch (136:27): [True: 0, False: 3.54k]
  ------------------
  137|  3.54k|        if (file != nullptr)
  ------------------
  |  Branch (137:13): [True: 3.54k, False: 0]
  ------------------
  138|  3.54k|        {
  139|  3.54k|            const read_outcome actual = read_with(parse, file);
  140|  3.54k|            std::fclose(file);
  141|       |            assert(actual == expected);
  ------------------
  |  Branch (141:13): [True: 3.54k, False: 0]
  ------------------
  142|  3.54k|        }
  143|  3.54k|    }
  144|  3.54k|#endif
  145|  3.54k|}
fuzzer-parse_bson.cpp:_Z9read_withIN12_GLOBAL__N_19read_bsonEJRPKhS3_EE12read_outcomeRKT_DpOT0_:
   88|  3.54k|{
   89|  3.54k|    read_outcome result;
   90|  3.54k|    try
   91|  3.54k|    {
   92|  3.54k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  3.54k|    }
   94|  3.54k|    catch (const json::parse_error& e)
   95|  3.54k|    {
   96|  1.25k|        result.id = e.id;
   97|  1.25k|        result.what = e.what();
   98|  1.25k|        result.byte = e.byte;
   99|  1.25k|    }
  100|  3.54k|    catch (const json::exception& e)
  101|  3.54k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  3.54k|    return result;
  106|  3.54k|}
_Z13outcome_valueRKN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEE:
   77|  9.15k|{
   78|  9.15k|    return j.dump(-1, ' ', false, json::error_handler_t::keep);
   79|  9.15k|}
fuzzer-parse_bson.cpp:_Z9read_withIN12_GLOBAL__N_19read_bsonEJRNSt3__119basic_istringstreamIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE12read_outcomeRKT_DpOT0_:
   88|  3.54k|{
   89|  3.54k|    read_outcome result;
   90|  3.54k|    try
   91|  3.54k|    {
   92|  3.54k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  3.54k|    }
   94|  3.54k|    catch (const json::parse_error& e)
   95|  3.54k|    {
   96|  1.25k|        result.id = e.id;
   97|  1.25k|        result.what = e.what();
   98|  1.25k|        result.byte = e.byte;
   99|  1.25k|    }
  100|  3.54k|    catch (const json::exception& e)
  101|  3.54k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  3.54k|    return result;
  106|  3.54k|}
_ZNK12read_outcomeeqERKS_:
   71|  10.6k|    {
   72|  10.6k|        return value == rhs.value && id == rhs.id && what == rhs.what && byte == rhs.byte;
  ------------------
  |  Branch (72:16): [True: 10.6k, False: 0]
  |  Branch (72:38): [True: 10.6k, False: 0]
  |  Branch (72:54): [True: 10.6k, False: 0]
  |  Branch (72:74): [True: 10.6k, False: 0]
  ------------------
   73|  10.6k|    }
fuzzer-parse_bson.cpp:_Z9read_withIN12_GLOBAL__N_19read_bsonEJNSt3__121__list_const_iteratorIhPvEES5_EE12read_outcomeRKT_DpOT0_:
   88|  3.54k|{
   89|  3.54k|    read_outcome result;
   90|  3.54k|    try
   91|  3.54k|    {
   92|  3.54k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  3.54k|    }
   94|  3.54k|    catch (const json::parse_error& e)
   95|  3.54k|    {
   96|  1.25k|        result.id = e.id;
   97|  1.25k|        result.what = e.what();
   98|  1.25k|        result.byte = e.byte;
   99|  1.25k|    }
  100|  3.54k|    catch (const json::exception& e)
  101|  3.54k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  3.54k|    return result;
  106|  3.54k|}
fuzzer-parse_bson.cpp:_Z9read_withIN12_GLOBAL__N_19read_bsonEJRP8_IO_FILEEE12read_outcomeRKT_DpOT0_:
   88|  3.54k|{
   89|  3.54k|    read_outcome result;
   90|  3.54k|    try
   91|  3.54k|    {
   92|  3.54k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  3.54k|    }
   94|  3.54k|    catch (const json::parse_error& e)
   95|  3.54k|    {
   96|  1.25k|        result.id = e.id;
   97|  1.25k|        result.what = e.what();
   98|  1.25k|        result.byte = e.byte;
   99|  1.25k|    }
  100|  3.54k|    catch (const json::exception& e)
  101|  3.54k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  3.54k|    return result;
  106|  3.54k|}

