LLVMFuzzerTestOneInput:
   11|  10.8k|{
   12|  10.8k|        std::string input(reinterpret_cast<const char*>(data), size);
   13|  10.8k|        std::istringstream is(input);
   14|  10.8k|        try {
   15|  10.8k|                json j2 = decode_cbor<json>(is);
   16|  10.8k|        }
   17|  10.8k|        catch(const jsoncons::ser_error&) {}
   18|  10.8k|        catch(jsoncons::json_runtime_error<std::runtime_error> e2) {}
   19|       |
   20|  10.8k|        return 0;
   21|  10.8k|}

_ZNK8jsoncons16allocator_holderINSt3__19allocatorIcEEE13get_allocatorEv:
   31|  14.2M|    {
   32|  14.2M|        return alloc_;
   33|  14.2M|    }
_ZN8jsoncons16allocator_holderINSt3__19allocatorIcEEEC2ERKS3_:
   27|  9.50M|        {}

_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEED2Ev:
 3796|   133M|        {
 3797|   133M|             destroy();
 3798|   133M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE7destroyEv:
 2215|   148M|        {
 2216|   148M|            switch (storage_kind())
 2217|   148M|            {
 2218|  20.7k|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2218:17): [True: 20.7k, False: 148M]
  ------------------
 2219|  20.7k|                    destroy_var<long_string_storage>();
 2220|  20.7k|                    break;
 2221|  5.62M|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2221:17): [True: 5.62M, False: 143M]
  ------------------
 2222|  5.62M|                    destroy_var<byte_string_storage>();
 2223|  5.62M|                    break;
 2224|  2.92M|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2224:17): [True: 2.92M, False: 145M]
  ------------------
 2225|  2.92M|                    destroy_var<array_storage>();
 2226|  2.92M|                    break;
 2227|  1.81M|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2227:17): [True: 1.81M, False: 146M]
  ------------------
 2228|  1.81M|                    destroy_var<object_storage>();
 2229|  1.81M|                    break;
 2230|   138M|                default:
  ------------------
  |  Branch (2230:17): [True: 138M, False: 10.3M]
  ------------------
 2231|   138M|                    break;
 2232|   148M|            }
 2233|   148M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12storage_kindEv:
 2839|   378M|        {
 2840|       |            // It is legal to access 'common_stor_.storage_kind_' even though 
 2841|       |            // common_stor_ is not the active member of the union because 'storage_kind_' 
 2842|       |            // is a part of the common initial sequence of all union members
 2843|       |            // as defined in 11.4-25 of the Standard.
 2844|   378M|            return static_cast<json_storage_kind>(common_stor_.storage_kind_);
 2845|   378M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_19long_string_storageEEEvv:
 2243|  20.7k|        {
 2244|  20.7k|            cast<T>().~T();
 2245|  20.7k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_19long_string_storageEEERT_v:
 2252|   126k|        {
 2253|   126k|            return cast(identity<T>());
 2254|   126k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_19long_string_storageEEE:
 2343|   126k|        {
 2344|   126k|            return long_string_stor_;
 2345|   126k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19long_string_storageD2Ev:
  733|  20.7k|            {
  734|  20.7k|                heap_string_factory_type::destroy(ptr_);
  735|  20.7k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_19byte_string_storageEEEvv:
 2243|  5.62M|        {
 2244|  5.62M|            cast<T>().~T();
 2245|  5.62M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_19byte_string_storageEEERT_v:
 2252|  62.8M|        {
 2253|  62.8M|            return cast(identity<T>());
 2254|  62.8M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_19byte_string_storageEEE:
 2353|  62.8M|        {
 2354|  62.8M|            return byte_string_stor_;
 2355|  62.8M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19byte_string_storageD2Ev:
  858|  5.62M|            {
  859|  5.62M|                heap_string_factory_type::destroy(ptr_);
  860|  5.62M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_13array_storageEEEvv:
 2243|  2.92M|        {
 2244|  2.92M|            cast<T>().~T();
 2245|  2.92M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13array_storageEEERT_v:
 2252|  29.7M|        {
 2253|  29.7M|            return cast(identity<T>());
 2254|  29.7M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13array_storageEEE:
 2373|  29.7M|        {
 2374|  29.7M|            return array_stor_;
 2375|  29.7M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storageD2Ev:
  990|  2.92M|            {
  991|  2.92M|                if (ptr_ != nullptr)
  ------------------
  |  Branch (991:21): [True: 2.92M, False: 416]
  ------------------
  992|  2.92M|                {
  993|  2.92M|                    destroy();
  994|  2.92M|                }
  995|  2.92M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage7destroyEv:
  924|  2.92M|            {
  925|  2.92M|                array_allocator alloc(ptr_->get_allocator());
  926|  2.92M|                std::allocator_traits<array_allocator>::destroy(alloc, extension_traits::to_plain_pointer(ptr_));
  927|  2.92M|                std::allocator_traits<array_allocator>::deallocate(alloc, ptr_,1);
  928|  2.92M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EOS5_:
 3497|  96.2M|        {
 3498|  96.2M|            uninitialized_move(std::move(other));
 3499|  96.2M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE18uninitialized_moveEOS5_:
 2537|   105M|        {
 2538|   105M|            switch (other.storage_kind())
 2539|   105M|            {
 2540|  1.44M|                case json_storage_kind::null_value:
  ------------------
  |  Branch (2540:17): [True: 1.44M, False: 103M]
  ------------------
 2541|  1.44M|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2541:17): [True: 0, False: 105M]
  ------------------
 2542|  9.09M|                case json_storage_kind::half_value:
  ------------------
  |  Branch (2542:17): [True: 7.64M, False: 97.7M]
  ------------------
 2543|  9.67M|                case json_storage_kind::double_value:
  ------------------
  |  Branch (2543:17): [True: 578k, False: 104M]
  ------------------
 2544|  43.4M|                case json_storage_kind::int64_value:
  ------------------
  |  Branch (2544:17): [True: 33.7M, False: 71.7M]
  ------------------
 2545|  63.4M|                case json_storage_kind::uint64_value:
  ------------------
  |  Branch (2545:17): [True: 20.0M, False: 85.3M]
  ------------------
 2546|  66.0M|                case json_storage_kind::bool_value:
  ------------------
  |  Branch (2546:17): [True: 2.61M, False: 102M]
  ------------------
 2547|  67.9M|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (2547:17): [True: 1.89M, False: 103M]
  ------------------
 2548|  67.9M|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2548:17): [True: 0, False: 105M]
  ------------------
 2549|  67.9M|                    uninitialized_copy(other);
 2550|  67.9M|                    break;
 2551|       |                    
 2552|  42.5k|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2552:17): [True: 42.5k, False: 105M]
  ------------------
 2553|  42.5k|                    construct<long_string_storage>(std::move(other.cast<long_string_storage>()));
 2554|  42.5k|                    break;
 2555|  25.8M|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2555:17): [True: 25.8M, False: 79.6M]
  ------------------
 2556|  25.8M|                    construct<byte_string_storage>(std::move(other.cast<byte_string_storage>()));
 2557|  25.8M|                    break;
 2558|  5.44M|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2558:17): [True: 5.44M, False: 99.9M]
  ------------------
 2559|  5.44M|                    construct<array_storage>(std::move(other.cast<array_storage>()));
 2560|  5.44M|                    break;
 2561|  6.15M|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2561:17): [True: 6.15M, False: 99.2M]
  ------------------
 2562|  6.15M|                    construct<object_storage>(std::move(other.cast<object_storage>()));
 2563|  6.15M|                    break;
 2564|       |                    
 2565|      0|                default:
  ------------------
  |  Branch (2565:17): [True: 0, False: 105M]
  ------------------
 2566|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2567|      0|                    break;
 2568|   105M|            }
 2569|   105M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE18uninitialized_copyERKS5_:
 2455|  73.7M|        {
 2456|  73.7M|            switch (other.storage_kind())
 2457|  73.7M|            {
 2458|  1.49M|                case json_storage_kind::null_value:
  ------------------
  |  Branch (2458:17): [True: 1.49M, False: 72.2M]
  ------------------
 2459|  1.49M|                    construct<null_storage>(other.cast<null_storage>());
 2460|  1.49M|                    break;
 2461|      0|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2461:17): [True: 0, False: 73.7M]
  ------------------
 2462|      0|                    construct<empty_object_storage>(other.cast<empty_object_storage>());
 2463|      0|                    break;
 2464|  2.76M|                case json_storage_kind::bool_value:
  ------------------
  |  Branch (2464:17): [True: 2.76M, False: 70.9M]
  ------------------
 2465|  2.76M|                    construct<bool_storage>(other.cast<bool_storage>());
 2466|  2.76M|                    break;
 2467|  37.2M|                case json_storage_kind::int64_value:
  ------------------
  |  Branch (2467:17): [True: 37.2M, False: 36.4M]
  ------------------
 2468|  37.2M|                    construct<int64_storage>(other.cast<int64_storage>());
 2469|  37.2M|                    break;
 2470|  21.9M|                case json_storage_kind::uint64_value:
  ------------------
  |  Branch (2470:17): [True: 21.9M, False: 51.8M]
  ------------------
 2471|  21.9M|                    construct<uint64_storage>(other.cast<uint64_storage>());
 2472|  21.9M|                    break;
 2473|  7.65M|                case json_storage_kind::half_value:
  ------------------
  |  Branch (2473:17): [True: 7.65M, False: 66.0M]
  ------------------
 2474|  7.65M|                    construct<half_storage>(other.cast<half_storage>());
 2475|  7.65M|                    break;
 2476|   629k|                case json_storage_kind::double_value:
  ------------------
  |  Branch (2476:17): [True: 629k, False: 73.0M]
  ------------------
 2477|   629k|                    construct<double_storage>(other.cast<double_storage>());
 2478|   629k|                    break;
 2479|  1.99M|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (2479:17): [True: 1.99M, False: 71.7M]
  ------------------
 2480|  1.99M|                    construct<short_string_storage>(other.cast<short_string_storage>());
 2481|  1.99M|                    break;
 2482|      0|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2482:17): [True: 0, False: 73.7M]
  ------------------
 2483|      0|                    construct<long_string_storage>(other.cast<long_string_storage>());
 2484|      0|                    break;
 2485|      0|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2485:17): [True: 0, False: 73.7M]
  ------------------
 2486|      0|                    construct<byte_string_storage>(other.cast<byte_string_storage>());
 2487|      0|                    break;
 2488|      0|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2488:17): [True: 0, False: 73.7M]
  ------------------
 2489|      0|                    construct<object_storage>(other.cast<object_storage>());
 2490|      0|                    break;
 2491|      0|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2491:17): [True: 0, False: 73.7M]
  ------------------
 2492|      0|                    construct<array_storage>(other.cast<array_storage>());
 2493|      0|                    break;
 2494|      0|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2494:17): [True: 0, False: 73.7M]
  ------------------
 2495|      0|                    construct<json_const_pointer_storage>(other.cast<json_const_pointer_storage>());
 2496|      0|                    break;
 2497|      0|                default:
  ------------------
  |  Branch (2497:17): [True: 0, False: 73.7M]
  ------------------
 2498|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2499|      0|                    break;
 2500|  73.7M|            }
 2501|  73.7M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12null_storageEJRKS7_EEEvDpOT0_:
 2237|  1.49M|        {
 2238|  1.49M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  1.49M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12null_storageEEERT_v:
 2252|  2.22M|        {
 2253|  2.22M|            return cast(identity<T>());
 2254|  2.22M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12null_storageEEE:
 2263|  2.22M|        {
 2264|  2.22M|            return null_stor_;
 2265|  2.22M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12null_storageEEERKT_v:
 2258|  1.49M|        {
 2259|  1.49M|            return cast(identity<T>());
 2260|  1.49M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12null_storageEEE:
 2268|  1.49M|        {
 2269|  1.49M|            return null_stor_;
 2270|  1.49M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_20empty_object_storageEEERT_v:
 2252|  13.5k|        {
 2253|  13.5k|            return cast(identity<T>());
 2254|  13.5k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_20empty_object_storageEEE:
 2273|  13.5k|        {
 2274|  13.5k|            return empty_object_stor_;
 2275|  13.5k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12bool_storageEJRKS7_EEEvDpOT0_:
 2237|  2.76M|        {
 2238|  2.76M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  2.76M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12bool_storageEEERT_v:
 2252|  3.98M|        {
 2253|  3.98M|            return cast(identity<T>());
 2254|  3.98M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12bool_storageEEE:
 2283|  3.98M|        {
 2284|  3.98M|            return bool_stor_;
 2285|  3.98M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12bool_storageEEERKT_v:
 2258|  2.76M|        {
 2259|  2.76M|            return cast(identity<T>());
 2260|  2.76M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12bool_storageEEE:
 2288|  2.76M|        {
 2289|  2.76M|            return bool_stor_;
 2290|  2.76M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13int64_storageEJRKS7_EEEvDpOT0_:
 2237|  37.2M|        {
 2238|  37.2M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  37.2M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13int64_storageEEERT_v:
 2252|  49.9M|        {
 2253|  49.9M|            return cast(identity<T>());
 2254|  49.9M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13int64_storageEEE:
 2293|  49.9M|        {
 2294|  49.9M|            return int64_stor_;
 2295|  49.9M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13int64_storageEEERKT_v:
 2258|  37.2M|        {
 2259|  37.2M|            return cast(identity<T>());
 2260|  37.2M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13int64_storageEEE:
 2298|  37.2M|        {
 2299|  37.2M|            return int64_stor_;
 2300|  37.2M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14uint64_storageEJRKS7_EEEvDpOT0_:
 2237|  21.9M|        {
 2238|  21.9M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  21.9M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14uint64_storageEEERT_v:
 2252|  29.1M|        {
 2253|  29.1M|            return cast(identity<T>());
 2254|  29.1M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14uint64_storageEEE:
 2303|  29.1M|        {
 2304|  29.1M|            return uint64_stor_;
 2305|  29.1M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14uint64_storageEEERKT_v:
 2258|  21.9M|        {
 2259|  21.9M|            return cast(identity<T>());
 2260|  21.9M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14uint64_storageEEE:
 2308|  21.9M|        {
 2309|  21.9M|            return uint64_stor_;
 2310|  21.9M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12half_storageEJRKS7_EEEvDpOT0_:
 2237|  7.65M|        {
 2238|  7.65M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  7.65M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12half_storageEEERT_v:
 2252|  11.6M|        {
 2253|  11.6M|            return cast(identity<T>());
 2254|  11.6M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12half_storageEEE:
 2313|  11.6M|        {
 2314|  11.6M|            return half_stor_;
 2315|  11.6M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12half_storageEEERKT_v:
 2258|  7.65M|        {
 2259|  7.65M|            return cast(identity<T>());
 2260|  7.65M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12half_storageEEE:
 2318|  7.65M|        {
 2319|  7.65M|            return half_stor_;
 2320|  7.65M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14double_storageEJRKS7_EEEvDpOT0_:
 2237|   629k|        {
 2238|   629k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   629k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14double_storageEEERT_v:
 2252|   898k|        {
 2253|   898k|            return cast(identity<T>());
 2254|   898k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14double_storageEEE:
 2323|   898k|        {
 2324|   898k|            return double_stor_;
 2325|   898k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14double_storageEEERKT_v:
 2258|   629k|        {
 2259|   629k|            return cast(identity<T>());
 2260|   629k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14double_storageEEE:
 2328|   629k|        {
 2329|   629k|            return double_stor_;
 2330|   629k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20short_string_storageEJRKS7_EEEvDpOT0_:
 2237|  1.99M|        {
 2238|  1.99M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  1.99M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_20short_string_storageEEERT_v:
 2252|  3.00M|        {
 2253|  3.00M|            return cast(identity<T>());
 2254|  3.00M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_20short_string_storageEEE:
 2333|  3.00M|        {
 2334|  3.00M|            return short_string_stor_;
 2335|  3.00M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE20short_string_storageC2ERKS6_:
  621|  1.99M|            {
  622|  1.99M|                std::memcpy(data_,other.data_,other.small_string_length_*sizeof(char_type));
  623|  1.99M|                data_[small_string_length_] = 0;
  624|  1.99M|            }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_20short_string_storageEEERKT_v:
 2258|  1.99M|        {
 2259|  1.99M|            return cast(identity<T>());
 2260|  1.99M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_20short_string_storageEEE:
 2338|  1.99M|        {
 2339|  1.99M|            return short_string_stor_;
 2340|  1.99M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14object_storageEEERKT_v:
 2258|  14.8k|        {
 2259|  14.8k|            return cast(identity<T>());
 2260|  14.8k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14object_storageEEE:
 2368|  14.8k|        {
 2369|  14.8k|            return object_stor_;
 2370|  14.8k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13array_storageEEERKT_v:
 2258|  84.7k|        {
 2259|  84.7k|            return cast(identity<T>());
 2260|  84.7k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13array_storageEEE:
 2378|  84.7k|        {
 2379|  84.7k|            return array_stor_;
 2380|  84.7k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19long_string_storageEJS7_EEEvDpOT0_:
 2237|  42.5k|        {
 2238|  42.5k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  42.5k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19long_string_storageC2EOS6_:
  684|  42.5k|            {
  685|  42.5k|                ptr_ = other.ptr_;
  686|  42.5k|                other.ptr_ = nullptr;
  687|  42.5k|                other.tag_ = semantic_tag::none;
  688|  42.5k|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
  689|  42.5k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19byte_string_storageEJS7_EEEvDpOT0_:
 2237|  25.8M|        {
 2238|  25.8M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  25.8M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19byte_string_storageC2EOS6_:
  809|  25.8M|            {
  810|  25.8M|                ptr_ = other.ptr_;
  811|  25.8M|                other.ptr_ = nullptr;
  812|  25.8M|                other.tag_ = semantic_tag::none;
  813|  25.8M|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
  814|  25.8M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13array_storageEJS7_EEEvDpOT0_:
 2237|  5.44M|        {
 2238|  5.44M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  5.44M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storageC2EOS6_:
  957|  5.44M|            {
  958|  5.44M|                std::swap(other.ptr_, ptr_);
  959|       |
  960|  5.44M|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
  961|  5.44M|                other.small_string_length_ = 0;
  962|  5.44M|                other.tag_ = semantic_tag::none;
  963|  5.44M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14object_storageEJS7_EEEvDpOT0_:
 2237|  6.15M|        {
 2238|  6.15M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  6.15M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storageC2EOS6_:
 1110|  6.15M|            {
 1111|  6.15M|                ptr_ = other.ptr_;
 1112|  6.15M|                other.ptr_ = nullptr;
 1113|  6.15M|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
 1114|  6.15M|                other.small_string_length_ = 0;
 1115|  6.15M|                other.tag_ = semantic_tag::none;
 1116|  6.15M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14object_storageEEERT_v:
 2252|  18.1M|        {
 2253|  18.1M|            return cast(identity<T>());
 2254|  18.1M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14object_storageEEE:
 2363|  18.1M|        {
 2364|  18.1M|            return object_stor_;
 2365|  18.1M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11array_rangeEv:
 5930|   102k|        {
 5931|   102k|            switch (storage_kind())
 5932|   102k|            {
 5933|   102k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (5933:17): [True: 102k, False: 0]
  ------------------
 5934|   102k|                    return range<array_iterator, const_array_iterator>(cast<array_storage>().value().begin(),
 5935|   102k|                        cast<array_storage>().value().end());
 5936|      0|                default:
  ------------------
  |  Branch (5936:17): [True: 0, False: 102k]
  ------------------
 5937|      0|                    JSONCONS_THROW(json_runtime_error<std::domain_error>("Not an array"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 5938|   102k|            }
 5939|   102k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage5valueEv:
 1039|  12.9M|            {
 1040|  12.9M|                return *ptr_;
 1041|  12.9M|            }
_ZN8jsoncons5rangeINSt3__111__wrap_iterIPNS_10basic_jsonIcNS_13sorted_policyENS1_9allocatorIcEEEEEENS2_IPKS7_EEEC2ERKS9_SF_:
  346|   102k|        {
  347|   102k|        }
_ZN8jsoncons5rangeINSt3__111__wrap_iterIPNS_10basic_jsonIcNS_13sorted_policyENS1_9allocatorIcEEEEEENS2_IPKS7_EEE5beginEv:
  350|   102k|        {
  351|   102k|            return first_;
  352|   102k|        }
_ZN8jsoncons5rangeINSt3__111__wrap_iterIPNS_10basic_jsonIcNS_13sorted_policyENS1_9allocatorIcEEEEEENS2_IPKS7_EEE3endEv:
  354|   102k|        {
  355|   102k|            return last_;
  356|   102k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4sizeEv:
 2897|  1.12M|        {
 2898|  1.12M|            switch (storage_kind())
 2899|  1.12M|            {
 2900|  72.0k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2900:17): [True: 72.0k, False: 1.05M]
  ------------------
 2901|  72.0k|                    return cast<array_storage>().value().size();
 2902|      0|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2902:17): [True: 0, False: 1.12M]
  ------------------
 2903|      0|                    return 0;
 2904|  10.1k|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2904:17): [True: 10.1k, False: 1.11M]
  ------------------
 2905|  10.1k|                    return cast<object_storage>().value().size();
 2906|      0|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2906:17): [True: 0, False: 1.12M]
  ------------------
 2907|      0|                    return cast<json_const_pointer_storage>().value()->size();
 2908|  1.04M|                default:
  ------------------
  |  Branch (2908:17): [True: 1.04M, False: 82.2k]
  ------------------
 2909|  1.04M|                    return 0;
 2910|  1.12M|            }
 2911|  1.12M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage5valueEv:
 1044|  84.7k|            {
 1045|  84.7k|                return *ptr_;
 1046|  84.7k|            }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage5valueEv:
 1185|  14.8k|            {
 1186|  14.8k|                return *ptr_;
 1187|  14.8k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE5clearEv:
 4926|   833k|        {
 4927|   833k|            switch (storage_kind())
 4928|   833k|            {
 4929|   102k|            case json_storage_kind::array_value:
  ------------------
  |  Branch (4929:13): [True: 102k, False: 730k]
  ------------------
 4930|   102k|                cast<array_storage>().value().clear();
 4931|   102k|                break;
 4932|   730k|            case json_storage_kind::object_value:
  ------------------
  |  Branch (4932:13): [True: 730k, False: 102k]
  ------------------
 4933|   730k|                cast<object_storage>().value().clear();
 4934|   730k|                break;
 4935|      0|            default:
  ------------------
  |  Branch (4935:13): [True: 0, False: 833k]
  ------------------
 4936|      0|                break;
 4937|   833k|            }
 4938|   833k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage5valueEv:
 1180|  2.21M|            {
 1181|  2.21M|                return *ptr_;
 1182|  2.21M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12object_rangeEv:
 5900|   730k|        {
 5901|   730k|            switch (storage_kind())
 5902|   730k|            {
 5903|      0|            case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (5903:13): [True: 0, False: 730k]
  ------------------
 5904|      0|                return range<object_iterator, const_object_iterator>(object_iterator(), object_iterator());
 5905|   730k|            case json_storage_kind::object_value:
  ------------------
  |  Branch (5905:13): [True: 730k, False: 0]
  ------------------
 5906|   730k|                return range<object_iterator, const_object_iterator>(object_iterator(cast<object_storage>().value().begin()),
 5907|   730k|                                              object_iterator(cast<object_storage>().value().end()));
 5908|      0|            default:
  ------------------
  |  Branch (5908:13): [True: 0, False: 730k]
  ------------------
 5909|      0|                JSONCONS_THROW(json_runtime_error<std::domain_error>("Not an object"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 5910|   730k|            }
 5911|   730k|        }
_ZN8jsoncons5rangeINS_6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyESA_EEEEEEvEENS2_INS4_IPKSF_EEvEEEC2ERKSI_SP_:
  346|   730k|        {
  347|   730k|        }
_ZN8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEC2ESG_:
  111|  1.46M|            {
  112|  1.46M|            }
_ZN8jsoncons5rangeINS_6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyESA_EEEEEEvEENS2_INS4_IPKSF_EEvEEE5beginEv:
  350|   730k|        {
  351|   730k|            return first_;
  352|   730k|        }
_ZN8jsoncons5rangeINS_6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyESA_EEEEEEvEENS2_INS4_IPKSF_EEvEEE3endEv:
  354|   730k|        {
  355|   730k|            return last_;
  356|   730k|        }
_ZNK8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEneERKSH_:
  213|   748k|            {
  214|   748k|                return !(*this == rhs);
  215|   748k|            }
_ZNK8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEeqERKSH_:
  201|   748k|            {
  202|   748k|                if (!has_value_ || !rhs.has_value_)
  ------------------
  |  Branch (202:21): [True: 0, False: 748k]
  |  Branch (202:36): [True: 0, False: 748k]
  ------------------
  203|      0|                {
  204|      0|                    return has_value_ == rhs.has_value_ ? true : false;
  ------------------
  |  Branch (204:28): [True: 0, False: 0]
  ------------------
  205|      0|                }
  206|   748k|                else
  207|   748k|                {
  208|   748k|                    return it_ == rhs.it_;
  209|   748k|                }
  210|   748k|            }
_ZNK8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEdeEv:
  132|  17.6k|            {
  133|  17.6k|                return *it_;
  134|  17.6k|            }
_ZN8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEppEv:
  142|  17.6k|            {
  143|  17.6k|                ++it_;
  144|  17.6k|                return *this;
  145|  17.6k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_14object_storageEEEvv:
 2243|  1.81M|        {
 2244|  1.81M|            cast<T>().~T();
 2245|  1.81M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storageD2Ev:
 1136|  1.81M|            {
 1137|  1.81M|                if (ptr_ != nullptr)
  ------------------
  |  Branch (1137:21): [True: 1.81M, False: 914]
  ------------------
 1138|  1.81M|                {
 1139|  1.81M|                    destroy();
 1140|  1.81M|                }
 1141|  1.81M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage7destroyEv:
 1196|  1.81M|            {
 1197|  1.81M|                object_allocator alloc(ptr_->get_allocator());
 1198|  1.81M|                std::allocator_traits<object_allocator>::destroy(alloc, extension_traits::to_plain_pointer(ptr_));
 1199|  1.81M|                std::allocator_traits<object_allocator>::deallocate(alloc, ptr_,1);
 1200|  1.81M|            }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE5emptyEv:
 4346|  17.3k|        {
 4347|  17.3k|            switch (storage_kind())
 4348|  17.3k|            {
 4349|      0|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (4349:17): [True: 0, False: 17.3k]
  ------------------
 4350|      0|                    return cast<byte_string_storage>().length() == 0;
 4351|      0|                    break;
 4352|      0|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (4352:17): [True: 0, False: 17.3k]
  ------------------
 4353|      0|                    return cast<short_string_storage>().length() == 0;
 4354|      0|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (4354:17): [True: 0, False: 17.3k]
  ------------------
 4355|      0|                    return cast<long_string_storage>().length() == 0;
 4356|  12.6k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (4356:17): [True: 12.6k, False: 4.67k]
  ------------------
 4357|  12.6k|                    return cast<array_storage>().value().empty();
 4358|      0|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (4358:17): [True: 0, False: 17.3k]
  ------------------
 4359|      0|                    return true;
 4360|  4.67k|                case json_storage_kind::object_value:
  ------------------
  |  Branch (4360:17): [True: 4.67k, False: 12.6k]
  ------------------
 4361|  4.67k|                    return cast<object_storage>().value().empty();
 4362|      0|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (4362:17): [True: 0, False: 17.3k]
  ------------------
 4363|      0|                    return cast<json_const_pointer_storage>().value()->empty();
 4364|      0|                default:
  ------------------
  |  Branch (4364:17): [True: 0, False: 17.3k]
  ------------------
 4365|      0|                    return false;
 4366|  17.3k|            }
 4367|  17.3k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2Ev:
 3472|  10.8k|        {
 3473|  10.8k|            construct<empty_object_storage>(semantic_tag::none);
 3474|  10.8k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20empty_object_storageEJNS_12semantic_tagEEEEvDpOT0_:
 2237|  10.8k|        {
 2238|  10.8k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  10.8k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE20empty_object_storageC2ENS_12semantic_tagE:
  486|  10.8k|            {
  487|  10.8k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_17json_object_arg_tENS_12semantic_tagERKS4_:
 3510|  1.81M|        {
 3511|  1.81M|            construct<object_storage>(object(alloc), tag);
 3512|  1.81M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14object_storageEJNS_18sorted_json_objectINS2_12basic_stringIcNS2_11char_traitsIcEES4_EES5_NS2_6vectorEEERNS_12semantic_tagEEEEvDpOT0_:
 2237|  1.81M|        {
 2238|  1.81M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  1.81M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storageC2EONS_18sorted_json_objectINS2_12basic_stringIcNS2_11char_traitsIcEES4_EES5_NS2_6vectorEEENS_12semantic_tagE:
 1091|  1.81M|            {
 1092|  1.81M|                create(val.get_allocator(), std::move(val));
 1093|  1.81M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage6createIJNS_18sorted_json_objectINS2_12basic_stringIcNS2_11char_traitsIcEES4_EES5_NS2_6vectorEEEEEEvNS3_ISE_EEDpOT_:
 1064|  1.81M|            {
 1065|  1.81M|                ptr_ = std::allocator_traits<object_allocator>::allocate(alloc, 1);
 1066|  1.81M|                JSONCONS_TRY
  ------------------
  |  |  239|  1.81M|    #define JSONCONS_TRY try
  ------------------
 1067|  1.81M|                {
 1068|  1.81M|                    std::allocator_traits<object_allocator>::construct(alloc, extension_traits::to_plain_pointer(ptr_), std::forward<Args>(args)...);
 1069|  1.81M|                }
 1070|  1.81M|                JSONCONS_CATCH(...)
 1071|  1.81M|                {
 1072|      0|                    std::allocator_traits<object_allocator>::deallocate(alloc, ptr_,1);
 1073|      0|                    JSONCONS_RETHROW;
  ------------------
  |  |  238|      0|    #define JSONCONS_RETHROW throw
  ------------------
 1074|      0|                }
 1075|  1.81M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEaSEOS5_:
 2830|  14.9M|        {
 2831|  14.9M|            if (this != &other)
  ------------------
  |  Branch (2831:17): [True: 14.9M, False: 0]
  ------------------
 2832|  14.9M|            {
 2833|  14.9M|                move_assignment(std::move(other));
 2834|  14.9M|            }
 2835|  14.9M|            return *this;
 2836|  14.9M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE15move_assignmentEOS5_:
 2760|  14.9M|        {
 2761|  14.9M|            switch (other.storage_kind())
 2762|  14.9M|            {
 2763|  48.5k|                case json_storage_kind::null_value:
  ------------------
  |  Branch (2763:17): [True: 48.5k, False: 14.8M]
  ------------------
 2764|  48.5k|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2764:17): [True: 0, False: 14.9M]
  ------------------
 2765|   203k|                case json_storage_kind::bool_value:
  ------------------
  |  Branch (2765:17): [True: 154k, False: 14.7M]
  ------------------
 2766|  3.74M|                case json_storage_kind::int64_value:
  ------------------
  |  Branch (2766:17): [True: 3.53M, False: 11.3M]
  ------------------
 2767|  5.58M|                case json_storage_kind::uint64_value:
  ------------------
  |  Branch (2767:17): [True: 1.84M, False: 13.0M]
  ------------------
 2768|  5.59M|                case json_storage_kind::half_value:
  ------------------
  |  Branch (2768:17): [True: 9.05k, False: 14.9M]
  ------------------
 2769|  5.64M|                case json_storage_kind::double_value:
  ------------------
  |  Branch (2769:17): [True: 50.9k, False: 14.8M]
  ------------------
 2770|  5.74M|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (2770:17): [True: 102k, False: 14.8M]
  ------------------
 2771|  5.74M|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2771:17): [True: 0, False: 14.9M]
  ------------------
 2772|  5.74M|                    destroy();
 2773|  5.74M|                    uninitialized_copy(std::move(other));
 2774|  5.74M|                    break;
 2775|  14.5k|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2775:17): [True: 14.5k, False: 14.8M]
  ------------------
 2776|  14.5k|                    move_assignment_r<long_string_storage>(std::move(other));
 2777|  14.5k|                    break;
 2778|  8.60M|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2778:17): [True: 8.60M, False: 6.30M]
  ------------------
 2779|  8.60M|                    move_assignment_r<byte_string_storage>(std::move(other));
 2780|  8.60M|                    break;
 2781|   109k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2781:17): [True: 109k, False: 14.7M]
  ------------------
 2782|   109k|                    move_assignment_r<array_storage>(std::move(other));
 2783|   109k|                    break;
 2784|   432k|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2784:17): [True: 432k, False: 14.4M]
  ------------------
 2785|   432k|                    move_assignment_r<object_storage>(std::move(other));
 2786|   432k|                    break;
 2787|      0|                default:
  ------------------
  |  Branch (2787:17): [True: 0, False: 14.9M]
  ------------------
 2788|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2789|      0|                    break;
 2790|  14.9M|            }
 2791|  14.9M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_19long_string_storageEEEvOS5_:
 2737|  14.5k|        {
 2738|  14.5k|            switch (storage_kind())
 2739|  14.5k|            {
 2740|  4.49k|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 4.49k, False: 10.0k]
  ------------------
 2741|  1.08k|                case json_storage_kind::empty_object_value:  move_assignment_l_r<empty_object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2741:17): [True: 1.08k, False: 13.5k]
  ------------------
 2742|    830|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 830, False: 13.7k]
  ------------------
 2743|  2.22k|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 2.22k, False: 12.3k]
  ------------------
 2744|  4.47k|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 4.47k, False: 10.1k]
  ------------------
 2745|    270|                case json_storage_kind::half_value:          move_assignment_l_r<half_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2745:17): [True: 270, False: 14.3k]
  ------------------
 2746|    328|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 328, False: 14.2k]
  ------------------
 2747|    877|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 877, False: 13.7k]
  ------------------
 2748|      0|                case json_storage_kind::json_const_pointer:  move_assignment_l_r<json_const_pointer_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2748:17): [True: 0, False: 14.5k]
  ------------------
 2749|      0|                case json_storage_kind::long_string_value:   move_assignment_l_r<long_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2749:17): [True: 0, False: 14.5k]
  ------------------
 2750|      0|                case json_storage_kind::byte_string_value:   move_assignment_l_r<byte_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2750:17): [True: 0, False: 14.5k]
  ------------------
 2751|      0|                case json_storage_kind::array_value:         move_assignment_l_r<array_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2751:17): [True: 0, False: 14.5k]
  ------------------
 2752|      0|                case json_storage_kind::object_value:        move_assignment_l_r<object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2752:17): [True: 0, False: 14.5k]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 14.5k]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|  14.5k|            }
 2757|  14.5k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19long_string_storageEEEvOS5_:
 2704|  4.49k|        {
 2705|  4.49k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  4.49k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  4.49k|        {
 2711|  4.49k|            destroy();
 2712|  4.49k|            uninitialized_move(std::move(other));
 2713|  4.49k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19long_string_storageEEEvOS5_:
 2704|  1.08k|        {
 2705|  1.08k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  1.08k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  1.08k|        {
 2711|  1.08k|            destroy();
 2712|  1.08k|            uninitialized_move(std::move(other));
 2713|  1.08k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19long_string_storageEEEvOS5_:
 2704|    830|        {
 2705|    830|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    830|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    830|        {
 2711|    830|            destroy();
 2712|    830|            uninitialized_move(std::move(other));
 2713|    830|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_19long_string_storageEEEvOS5_:
 2704|  2.22k|        {
 2705|  2.22k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  2.22k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  2.22k|        {
 2711|  2.22k|            destroy();
 2712|  2.22k|            uninitialized_move(std::move(other));
 2713|  2.22k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19long_string_storageEEEvOS5_:
 2704|  4.47k|        {
 2705|  4.47k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  4.47k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  4.47k|        {
 2711|  4.47k|            destroy();
 2712|  4.47k|            uninitialized_move(std::move(other));
 2713|  4.47k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12half_storageENS5_19long_string_storageEEEvOS5_:
 2704|    270|        {
 2705|    270|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    270|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12half_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    270|        {
 2711|    270|            destroy();
 2712|    270|            uninitialized_move(std::move(other));
 2713|    270|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_19long_string_storageEEEvOS5_:
 2704|    328|        {
 2705|    328|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    328|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    328|        {
 2711|    328|            destroy();
 2712|    328|            uninitialized_move(std::move(other));
 2713|    328|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19long_string_storageEEEvOS5_:
 2704|    877|        {
 2705|    877|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    877|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    877|        {
 2711|    877|            destroy();
 2712|    877|            uninitialized_move(std::move(other));
 2713|    877|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_19byte_string_storageEEEvOS5_:
 2737|  8.60M|        {
 2738|  8.60M|            switch (storage_kind())
 2739|  8.60M|            {
 2740|  8.41M|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 8.41M, False: 190k]
  ------------------
 2741|     32|                case json_storage_kind::empty_object_value:  move_assignment_l_r<empty_object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2741:17): [True: 32, False: 8.60M]
  ------------------
 2742|  4.89k|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 4.89k, False: 8.60M]
  ------------------
 2743|  52.1k|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 52.1k, False: 8.55M]
  ------------------
 2744|   127k|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 127k, False: 8.47M]
  ------------------
 2745|    872|                case json_storage_kind::half_value:          move_assignment_l_r<half_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2745:17): [True: 872, False: 8.60M]
  ------------------
 2746|    488|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 488, False: 8.60M]
  ------------------
 2747|  4.32k|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 4.32k, False: 8.60M]
  ------------------
 2748|      0|                case json_storage_kind::json_const_pointer:  move_assignment_l_r<json_const_pointer_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2748:17): [True: 0, False: 8.60M]
  ------------------
 2749|      0|                case json_storage_kind::long_string_value:   move_assignment_l_r<long_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2749:17): [True: 0, False: 8.60M]
  ------------------
 2750|      0|                case json_storage_kind::byte_string_value:   move_assignment_l_r<byte_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2750:17): [True: 0, False: 8.60M]
  ------------------
 2751|      0|                case json_storage_kind::array_value:         move_assignment_l_r<array_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2751:17): [True: 0, False: 8.60M]
  ------------------
 2752|      0|                case json_storage_kind::object_value:        move_assignment_l_r<object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2752:17): [True: 0, False: 8.60M]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 8.60M]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|  8.60M|            }
 2757|  8.60M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19byte_string_storageEEEvOS5_:
 2704|  8.41M|        {
 2705|  8.41M|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  8.41M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  8.41M|        {
 2711|  8.41M|            destroy();
 2712|  8.41M|            uninitialized_move(std::move(other));
 2713|  8.41M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19byte_string_storageEEEvOS5_:
 2704|     32|        {
 2705|     32|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|     32|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|     32|        {
 2711|     32|            destroy();
 2712|     32|            uninitialized_move(std::move(other));
 2713|     32|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19byte_string_storageEEEvOS5_:
 2704|  4.89k|        {
 2705|  4.89k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  4.89k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  4.89k|        {
 2711|  4.89k|            destroy();
 2712|  4.89k|            uninitialized_move(std::move(other));
 2713|  4.89k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_19byte_string_storageEEEvOS5_:
 2704|  52.1k|        {
 2705|  52.1k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  52.1k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  52.1k|        {
 2711|  52.1k|            destroy();
 2712|  52.1k|            uninitialized_move(std::move(other));
 2713|  52.1k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19byte_string_storageEEEvOS5_:
 2704|   127k|        {
 2705|   127k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|   127k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|   127k|        {
 2711|   127k|            destroy();
 2712|   127k|            uninitialized_move(std::move(other));
 2713|   127k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12half_storageENS5_19byte_string_storageEEEvOS5_:
 2704|    872|        {
 2705|    872|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    872|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12half_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    872|        {
 2711|    872|            destroy();
 2712|    872|            uninitialized_move(std::move(other));
 2713|    872|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_19byte_string_storageEEEvOS5_:
 2704|    488|        {
 2705|    488|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    488|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    488|        {
 2711|    488|            destroy();
 2712|    488|            uninitialized_move(std::move(other));
 2713|    488|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19byte_string_storageEEEvOS5_:
 2704|  4.32k|        {
 2705|  4.32k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  4.32k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  4.32k|        {
 2711|  4.32k|            destroy();
 2712|  4.32k|            uninitialized_move(std::move(other));
 2713|  4.32k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_13array_storageEEEvOS5_:
 2737|   109k|        {
 2738|   109k|            switch (storage_kind())
 2739|   109k|            {
 2740|  76.3k|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 76.3k, False: 33.1k]
  ------------------
 2741|      0|                case json_storage_kind::empty_object_value:  move_assignment_l_r<empty_object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2741:17): [True: 0, False: 109k]
  ------------------
 2742|    854|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 854, False: 108k]
  ------------------
 2743|  13.6k|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 13.6k, False: 95.9k]
  ------------------
 2744|  14.4k|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 14.4k, False: 95.0k]
  ------------------
 2745|    515|                case json_storage_kind::half_value:          move_assignment_l_r<half_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2745:17): [True: 515, False: 109k]
  ------------------
 2746|    482|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 482, False: 109k]
  ------------------
 2747|  3.17k|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 3.17k, False: 106k]
  ------------------
 2748|      0|                case json_storage_kind::json_const_pointer:  move_assignment_l_r<json_const_pointer_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2748:17): [True: 0, False: 109k]
  ------------------
 2749|      0|                case json_storage_kind::long_string_value:   move_assignment_l_r<long_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2749:17): [True: 0, False: 109k]
  ------------------
 2750|      0|                case json_storage_kind::byte_string_value:   move_assignment_l_r<byte_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2750:17): [True: 0, False: 109k]
  ------------------
 2751|      0|                case json_storage_kind::array_value:         move_assignment_l_r<array_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2751:17): [True: 0, False: 109k]
  ------------------
 2752|      0|                case json_storage_kind::object_value:        move_assignment_l_r<object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2752:17): [True: 0, False: 109k]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 109k]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|   109k|            }
 2757|   109k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_13array_storageEEEvOS5_:
 2704|  76.3k|        {
 2705|  76.3k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  76.3k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  76.3k|        {
 2711|  76.3k|            destroy();
 2712|  76.3k|            uninitialized_move(std::move(other));
 2713|  76.3k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_13array_storageEEEvOS5_:
 2704|    854|        {
 2705|    854|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    854|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    854|        {
 2711|    854|            destroy();
 2712|    854|            uninitialized_move(std::move(other));
 2713|    854|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_13array_storageEEEvOS5_:
 2704|  13.6k|        {
 2705|  13.6k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  13.6k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  13.6k|        {
 2711|  13.6k|            destroy();
 2712|  13.6k|            uninitialized_move(std::move(other));
 2713|  13.6k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_13array_storageEEEvOS5_:
 2704|  14.4k|        {
 2705|  14.4k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  14.4k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  14.4k|        {
 2711|  14.4k|            destroy();
 2712|  14.4k|            uninitialized_move(std::move(other));
 2713|  14.4k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12half_storageENS5_13array_storageEEEvOS5_:
 2704|    515|        {
 2705|    515|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    515|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12half_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    515|        {
 2711|    515|            destroy();
 2712|    515|            uninitialized_move(std::move(other));
 2713|    515|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_13array_storageEEEvOS5_:
 2704|    482|        {
 2705|    482|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    482|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    482|        {
 2711|    482|            destroy();
 2712|    482|            uninitialized_move(std::move(other));
 2713|    482|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_13array_storageEEEvOS5_:
 2704|  3.17k|        {
 2705|  3.17k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  3.17k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  3.17k|        {
 2711|  3.17k|            destroy();
 2712|  3.17k|            uninitialized_move(std::move(other));
 2713|  3.17k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_14object_storageEEEvOS5_:
 2737|   432k|        {
 2738|   432k|            switch (storage_kind())
 2739|   432k|            {
 2740|   398k|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 398k, False: 34.2k]
  ------------------
 2741|      0|                case json_storage_kind::empty_object_value:  move_assignment_l_r<empty_object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2741:17): [True: 0, False: 432k]
  ------------------
 2742|  6.57k|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 6.57k, False: 426k]
  ------------------
 2743|  8.84k|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 8.84k, False: 423k]
  ------------------
 2744|  11.0k|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 11.0k, False: 421k]
  ------------------
 2745|    387|                case json_storage_kind::half_value:          move_assignment_l_r<half_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2745:17): [True: 387, False: 432k]
  ------------------
 2746|  2.22k|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 2.22k, False: 430k]
  ------------------
 2747|  5.17k|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 5.17k, False: 427k]
  ------------------
 2748|      0|                case json_storage_kind::json_const_pointer:  move_assignment_l_r<json_const_pointer_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2748:17): [True: 0, False: 432k]
  ------------------
 2749|      0|                case json_storage_kind::long_string_value:   move_assignment_l_r<long_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2749:17): [True: 0, False: 432k]
  ------------------
 2750|      0|                case json_storage_kind::byte_string_value:   move_assignment_l_r<byte_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2750:17): [True: 0, False: 432k]
  ------------------
 2751|      0|                case json_storage_kind::array_value:         move_assignment_l_r<array_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2751:17): [True: 0, False: 432k]
  ------------------
 2752|      0|                case json_storage_kind::object_value:        move_assignment_l_r<object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2752:17): [True: 0, False: 432k]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 432k]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|   432k|            }
 2757|   432k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_14object_storageEEEvOS5_:
 2704|   398k|        {
 2705|   398k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|   398k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|   398k|        {
 2711|   398k|            destroy();
 2712|   398k|            uninitialized_move(std::move(other));
 2713|   398k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_14object_storageEEEvOS5_:
 2704|  6.57k|        {
 2705|  6.57k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  6.57k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  6.57k|        {
 2711|  6.57k|            destroy();
 2712|  6.57k|            uninitialized_move(std::move(other));
 2713|  6.57k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_14object_storageEEEvOS5_:
 2704|  8.84k|        {
 2705|  8.84k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  8.84k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  8.84k|        {
 2711|  8.84k|            destroy();
 2712|  8.84k|            uninitialized_move(std::move(other));
 2713|  8.84k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_14object_storageEEEvOS5_:
 2704|  11.0k|        {
 2705|  11.0k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  11.0k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  11.0k|        {
 2711|  11.0k|            destroy();
 2712|  11.0k|            uninitialized_move(std::move(other));
 2713|  11.0k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12half_storageENS5_14object_storageEEEvOS5_:
 2704|    387|        {
 2705|    387|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    387|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12half_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    387|        {
 2711|    387|            destroy();
 2712|    387|            uninitialized_move(std::move(other));
 2713|    387|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_14object_storageEEEvOS5_:
 2704|  2.22k|        {
 2705|  2.22k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  2.22k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  2.22k|        {
 2711|  2.22k|            destroy();
 2712|  2.22k|            uninitialized_move(std::move(other));
 2713|  2.22k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_14object_storageEEEvOS5_:
 2704|  5.17k|        {
 2705|  5.17k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  5.17k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  5.17k|        {
 2711|  5.17k|            destroy();
 2712|  5.17k|            uninitialized_move(std::move(other));
 2713|  5.17k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4swapERS5_:
 3157|  1.33k|        {
 3158|  1.33k|            if (this == &other)
  ------------------
  |  Branch (3158:17): [True: 0, False: 1.33k]
  ------------------
 3159|      0|            {
 3160|      0|                return;
 3161|      0|            }
 3162|       |
 3163|  1.33k|            switch (storage_kind())
 3164|  1.33k|            {
 3165|      0|                case json_storage_kind::null_value: swap_l<null_storage>(other); break;
  ------------------
  |  Branch (3165:17): [True: 0, False: 1.33k]
  ------------------
 3166|  1.33k|                case json_storage_kind::empty_object_value : swap_l<empty_object_storage>(other); break;
  ------------------
  |  Branch (3166:17): [True: 1.33k, False: 0]
  ------------------
 3167|      0|                case json_storage_kind::bool_value: swap_l<bool_storage>(other); break;
  ------------------
  |  Branch (3167:17): [True: 0, False: 1.33k]
  ------------------
 3168|      0|                case json_storage_kind::int64_value: swap_l<int64_storage>(other); break;
  ------------------
  |  Branch (3168:17): [True: 0, False: 1.33k]
  ------------------
 3169|      0|                case json_storage_kind::uint64_value: swap_l<uint64_storage>(other); break;
  ------------------
  |  Branch (3169:17): [True: 0, False: 1.33k]
  ------------------
 3170|      0|                case json_storage_kind::half_value: swap_l<half_storage>(other); break;
  ------------------
  |  Branch (3170:17): [True: 0, False: 1.33k]
  ------------------
 3171|      0|                case json_storage_kind::double_value: swap_l<double_storage>(other); break;
  ------------------
  |  Branch (3171:17): [True: 0, False: 1.33k]
  ------------------
 3172|      0|                case json_storage_kind::short_string_value: swap_l<short_string_storage>(other); break;
  ------------------
  |  Branch (3172:17): [True: 0, False: 1.33k]
  ------------------
 3173|      0|                case json_storage_kind::long_string_value: swap_l<long_string_storage>(other); break;
  ------------------
  |  Branch (3173:17): [True: 0, False: 1.33k]
  ------------------
 3174|      0|                case json_storage_kind::byte_string_value: swap_l<byte_string_storage>(other); break;
  ------------------
  |  Branch (3174:17): [True: 0, False: 1.33k]
  ------------------
 3175|      0|                case json_storage_kind::array_value: swap_l<array_storage>(other); break;
  ------------------
  |  Branch (3175:17): [True: 0, False: 1.33k]
  ------------------
 3176|      0|                case json_storage_kind::object_value: swap_l<object_storage>(other); break;
  ------------------
  |  Branch (3176:17): [True: 0, False: 1.33k]
  ------------------
 3177|      0|                case json_storage_kind::json_const_pointer: swap_l<json_const_pointer_storage>(other); break;
  ------------------
  |  Branch (3177:17): [True: 0, False: 1.33k]
  ------------------
 3178|      0|                default:
  ------------------
  |  Branch (3178:17): [True: 0, False: 1.33k]
  ------------------
 3179|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 3180|      0|                    break;
 3181|  1.33k|            }
 3182|  1.33k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20empty_object_storageEJS7_EEEvDpOT0_:
 2237|  1.33k|        {
 2238|  1.33k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  1.33k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE6swap_lINS5_20empty_object_storageEEEvRS5_:
 2432|  1.33k|        {
 2433|  1.33k|            switch (other.storage_kind())
 2434|  1.33k|            {
 2435|      0|                case json_storage_kind::null_value         : swap_l_r<TypeL, null_storage>(other); break;
  ------------------
  |  Branch (2435:17): [True: 0, False: 1.33k]
  ------------------
 2436|      0|                case json_storage_kind::empty_object_value : swap_l_r<TypeL, empty_object_storage>(other); break;
  ------------------
  |  Branch (2436:17): [True: 0, False: 1.33k]
  ------------------
 2437|      0|                case json_storage_kind::bool_value         : swap_l_r<TypeL, bool_storage>(other); break;
  ------------------
  |  Branch (2437:17): [True: 0, False: 1.33k]
  ------------------
 2438|      0|                case json_storage_kind::int64_value        : swap_l_r<TypeL, int64_storage>(other); break;
  ------------------
  |  Branch (2438:17): [True: 0, False: 1.33k]
  ------------------
 2439|      0|                case json_storage_kind::uint64_value       : swap_l_r<TypeL, uint64_storage>(other); break;
  ------------------
  |  Branch (2439:17): [True: 0, False: 1.33k]
  ------------------
 2440|      0|                case json_storage_kind::half_value         : swap_l_r<TypeL, half_storage>(other); break;
  ------------------
  |  Branch (2440:17): [True: 0, False: 1.33k]
  ------------------
 2441|      0|                case json_storage_kind::double_value       : swap_l_r<TypeL, double_storage>(other); break;
  ------------------
  |  Branch (2441:17): [True: 0, False: 1.33k]
  ------------------
 2442|      0|                case json_storage_kind::short_string_value : swap_l_r<TypeL, short_string_storage>(other); break;
  ------------------
  |  Branch (2442:17): [True: 0, False: 1.33k]
  ------------------
 2443|      0|                case json_storage_kind::long_string_value  : swap_l_r<TypeL, long_string_storage>(other); break;
  ------------------
  |  Branch (2443:17): [True: 0, False: 1.33k]
  ------------------
 2444|      0|                case json_storage_kind::byte_string_value  : swap_l_r<TypeL, byte_string_storage>(other); break;
  ------------------
  |  Branch (2444:17): [True: 0, False: 1.33k]
  ------------------
 2445|    416|                case json_storage_kind::array_value        : swap_l_r<TypeL, array_storage>(other); break;
  ------------------
  |  Branch (2445:17): [True: 416, False: 914]
  ------------------
 2446|    914|                case json_storage_kind::object_value       : swap_l_r<TypeL, object_storage>(other); break;
  ------------------
  |  Branch (2446:17): [True: 914, False: 416]
  ------------------
 2447|      0|                case json_storage_kind::json_const_pointer : swap_l_r<TypeL, json_const_pointer_storage>(other); break;
  ------------------
  |  Branch (2447:17): [True: 0, False: 1.33k]
  ------------------
 2448|      0|                default:
  ------------------
  |  Branch (2448:17): [True: 0, False: 1.33k]
  ------------------
 2449|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2450|      0|                    break;
 2451|  1.33k|            }
 2452|  1.33k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_13array_storageEEEvRS5_:
 2394|    416|        {
 2395|    416|            swap_l_r(identity<TypeL>(), identity<TypeR>(), other);
 2396|    416|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EERS5_:
 2400|    416|        {
 2401|    416|            TypeR tmpR(std::move(other.cast<TypeR>())); 
 2402|       |
 2403|    416|            other.destroy();
 2404|    416|            other.construct<TypeL>(std::move(cast<TypeL>()));
 2405|       |
 2406|    416|            destroy();
 2407|    416|            construct<TypeR>(std::move(tmpR));
 2408|    416|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_14object_storageEEEvRS5_:
 2394|    914|        {
 2395|    914|            swap_l_r(identity<TypeL>(), identity<TypeR>(), other);
 2396|    914|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EERS5_:
 2400|    914|        {
 2401|    914|            TypeR tmpR(std::move(other.cast<TypeR>())); 
 2402|       |
 2403|    914|            other.destroy();
 2404|    914|            other.construct<TypeL>(std::move(cast<TypeL>()));
 2405|       |
 2406|    914|            destroy();
 2407|    914|            construct<TypeR>(std::move(tmpR));
 2408|    914|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_16json_array_arg_tENS_12semantic_tagERKS4_:
 3544|  2.92M|        {
 3545|  2.92M|            construct<array_storage>(array(alloc), tag);
 3546|  2.92M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13array_storageEJNS_10json_arrayIS5_NS2_6vectorEEERNS_12semantic_tagEEEEvDpOT0_:
 2237|  2.92M|        {
 2238|  2.92M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  2.92M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storageC2EONS_10json_arrayIS5_NS2_6vectorEEENS_12semantic_tagE:
  938|  2.92M|            {
  939|  2.92M|                create(val.get_allocator(), std::move(val));
  940|  2.92M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage6createIJNS_10json_arrayIS5_NS2_6vectorEEEEEEvNS3_ISA_EEDpOT_:
  909|  2.92M|            {
  910|  2.92M|                ptr_ = std::allocator_traits<array_allocator>::allocate(alloc, 1);
  911|  2.92M|                JSONCONS_TRY
  ------------------
  |  |  239|  2.92M|    #define JSONCONS_TRY try
  ------------------
  912|  2.92M|                {
  913|  2.92M|                    std::allocator_traits<array_allocator>::construct(alloc, extension_traits::to_plain_pointer(ptr_), 
  914|  2.92M|                        std::forward<Args>(args)...);
  915|  2.92M|                }
  916|  2.92M|                JSONCONS_CATCH(...)
  917|  2.92M|                {
  918|      0|                    std::allocator_traits<array_allocator>::deallocate(alloc, ptr_,1);
  919|      0|                    JSONCONS_RETHROW;
  ------------------
  |  |  238|      0|    #define JSONCONS_RETHROW throw
  ------------------
  920|      0|                }
  921|  2.92M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE7reserveEm:
 4401|  94.8k|        {
 4402|  94.8k|            if (n > 0)
  ------------------
  |  Branch (4402:17): [True: 94.8k, False: 0]
  ------------------
 4403|  94.8k|            {
 4404|  94.8k|                switch (storage_kind())
 4405|  94.8k|                {
 4406|  94.8k|                    case json_storage_kind::array_value:
  ------------------
  |  Branch (4406:21): [True: 94.8k, False: 0]
  ------------------
 4407|  94.8k|                        cast<array_storage>().value().reserve(n);
 4408|  94.8k|                        break;
 4409|      0|                    case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (4409:21): [True: 0, False: 94.8k]
  ------------------
 4410|      0|                    {
 4411|      0|                        create_object_implicitly();
 4412|      0|                        cast<object_storage>().value().reserve(n);
 4413|      0|                    }
 4414|      0|                    break;
 4415|      0|                    case json_storage_kind::object_value:
  ------------------
  |  Branch (4415:21): [True: 0, False: 94.8k]
  ------------------
 4416|      0|                    {
 4417|      0|                        cast<object_storage>().value().reserve(n);
 4418|      0|                    }
 4419|      0|                        break;
 4420|      0|                    default:
  ------------------
  |  Branch (4420:21): [True: 0, False: 94.8k]
  ------------------
 4421|      0|                        break;
 4422|  94.8k|                }
 4423|  94.8k|            }
 4424|  94.8k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9push_backEOS5_:
 5316|  12.5M|        {
 5317|  12.5M|            switch (storage_kind())
 5318|  12.5M|            {
 5319|  12.5M|            case json_storage_kind::array_value:
  ------------------
  |  Branch (5319:13): [True: 12.5M, False: 0]
  ------------------
 5320|  12.5M|                cast<array_storage>().value().push_back(std::move(val));
 5321|  12.5M|                break;
 5322|      0|            default:
  ------------------
  |  Branch (5322:13): [True: 0, False: 12.5M]
  ------------------
 5323|      0|                JSONCONS_THROW(json_runtime_error<std::domain_error>("Attempting to insert into a value that is not an array"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 5324|  12.5M|            }
 5325|  12.5M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_9null_typeENS_12semantic_tagE:
 3751|   730k|        {
 3752|   730k|            construct<null_storage>(tag);
 3753|   730k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12null_storageEJRNS_12semantic_tagEEEEvDpOT0_:
 2237|   730k|        {
 2238|   730k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   730k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12null_storageC2ENS_12semantic_tagE:
  473|   730k|            {
  474|   730k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EbNS_12semantic_tagE:
 3761|  1.21M|        {
 3762|  1.21M|            construct<bool_storage>(val,tag);
 3763|  1.21M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12bool_storageEJRbRNS_12semantic_tagEEEEvDpOT0_:
 2237|  1.21M|        {
 2238|  1.21M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  1.21M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12bool_storageC2EbNS_12semantic_tagE:
  502|  1.21M|            {
  503|  1.21M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ERKNS_6detail17basic_string_viewIcNS2_11char_traitsIcEEEENS_12semantic_tagERKS4_:
 3772|  1.03M|        {
 3773|  1.03M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EPKcmNS_12semantic_tagERKS4_:
 3659|  1.03M|        {
 3660|  1.03M|            if (length <= short_string_storage::max_length)
  ------------------
  |  Branch (3660:17): [True: 1.01M, False: 20.7k]
  ------------------
 3661|  1.01M|            {
 3662|  1.01M|                construct<short_string_storage>(tag, s, static_cast<uint8_t>(length));
 3663|  1.01M|            }
 3664|  20.7k|            else
 3665|  20.7k|            {
 3666|  20.7k|                construct<long_string_storage>(tag, s, length, alloc);
 3667|  20.7k|            }
 3668|  1.03M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20short_string_storageEJRNS_12semantic_tagERPKchEEEvDpOT0_:
 2237|  1.01M|        {
 2238|  1.01M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  1.01M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE20short_string_storageC2ENS_12semantic_tagEPKch:
  613|  1.01M|            {
  614|  1.01M|                JSONCONS_ASSERT(length <= max_length);
  ------------------
  |  |  378|  1.01M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 1.01M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  615|  1.01M|                std::memcpy(data_,p,length*sizeof(char_type));
  616|  1.01M|                data_[length] = 0;
  617|  1.01M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19long_string_storageEJRNS_12semantic_tagERPKcRmRKS4_EEEvDpOT0_:
 2237|  20.7k|        {
 2238|  20.7k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  20.7k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19long_string_storageC2ENS_12semantic_tagEPKcmRKS4_:
  660|  20.7k|            {
  661|  20.7k|                ptr_ = heap_string_factory_type::create(data, length, null_type(), alloc);
  662|  20.7k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2INS_16byte_string_viewEEENS_17byte_string_arg_tERKT_NS_12semantic_tagERKS4_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS9_EE5valueEiE4typeE:
 3780|  5.60M|        {
 3781|  5.60M|            auto bytes = jsoncons::span<const uint8_t>(reinterpret_cast<const uint8_t*>(source.data()), source.size());
 3782|  5.60M|            construct<byte_string_storage>(tag, bytes.data(), bytes.size(), 0, alloc);
 3783|  5.60M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19byte_string_storageEJRNS_12semantic_tagEPKhmiRKS4_EEEvDpOT0_:
 2237|  5.60M|        {
 2238|  5.60M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  5.60M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19byte_string_storageC2ENS_12semantic_tagEPKhmmRKS4_:
  785|  5.62M|            {
  786|  5.62M|                ptr_ = heap_string_factory_type::create(data, length, ext_tag, alloc);
  787|  5.62M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2INS_16byte_string_viewEEENS_17byte_string_arg_tERKT_mRKS4_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS9_EE5valueEiE4typeE:
 3790|  24.1k|        {
 3791|  24.1k|            auto bytes = jsoncons::span<const uint8_t>(reinterpret_cast<const uint8_t*>(source.data()), source.size());
 3792|  24.1k|            construct<byte_string_storage>(semantic_tag::ext, bytes.data(), bytes.size(), ext_tag, alloc);
 3793|  24.1k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19byte_string_storageEJNS_12semantic_tagEPKhmRmRKS4_EEEvDpOT0_:
 2237|  24.1k|        {
 2238|  24.1k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  24.1k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ImEET_NS_12semantic_tagENS2_9enable_ifIXaasr16extension_traits19is_unsigned_integerIS7_EE5valuelestS7_Lm8EEiE4typeE:
 3693|  7.26M|        {
 3694|  7.26M|            construct<uint64_storage>(val, tag);
 3695|  7.26M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14uint64_storageEJRmRNS_12semantic_tagEEEEvDpOT0_:
 2237|  7.26M|        {
 2238|  7.26M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  7.26M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14uint64_storageC2EmNS_12semantic_tagE:
  547|  7.26M|            {
  548|  7.26M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2IlEET_NS_12semantic_tagENS2_9enable_ifIXaasr16extension_traits17is_signed_integerIS7_EE5valuelestS7_Lm8EEiE4typeE:
 3723|  12.6M|        {
 3724|  12.6M|            construct<int64_storage>(val, tag);
 3725|  12.6M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13int64_storageEJRlRNS_12semantic_tagEEEEvDpOT0_:
 2237|  12.6M|        {
 2238|  12.6M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  12.6M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13int64_storageC2ElNS_12semantic_tagE:
  525|  12.6M|            {
  526|  12.6M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_10half_arg_tEtNS_12semantic_tagE:
 3671|  4.01M|        {
 3672|  4.01M|            construct<half_storage>(val, tag);
 3673|  4.01M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12half_storageEJRtRNS_12semantic_tagEEEEvDpOT0_:
 2237|  4.01M|        {
 2238|  4.01M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  4.01M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12half_storageC2EtNS_12semantic_tagE:
  568|  4.01M|            {
  569|  4.01M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EdNS_12semantic_tagE:
 3681|   269k|        {
 3682|   269k|            construct<double_storage>(val, tag);
 3683|   269k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14double_storageEJRdRNS_12semantic_tagEEEEvDpOT0_:
 2237|   269k|        {
 2238|   269k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   269k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14double_storageC2EdNS_12semantic_tagE:
  590|   269k|            {
  591|   269k|            }

_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13from_bytes_beEiPKhm:
  475|   151k|    {
  476|   151k|        static const double radix_log2 = std::log2(next_power_of_two(256));
  477|       |        // Estimate how big the result will be, so we can pre-allocate it.
  478|   151k|        double bits = radix_log2 * n;
  479|   151k|        double big_digits = std::ceil(bits / 64.0);
  480|       |        //std::cout << "ESTIMATED: " << big_digits << "\n";
  481|       |
  482|   151k|        bigint_type v = 0;
  483|   151k|        v.reserve(static_cast<std::size_t>(big_digits));
  484|       |
  485|   151k|        if (n > 0)
  ------------------
  |  Branch (485:13): [True: 16.3k, False: 135k]
  ------------------
  486|  16.3k|        {
  487|  1.39M|            for (std::size_t i = 0; i < n; i++)
  ------------------
  |  Branch (487:37): [True: 1.37M, False: 16.3k]
  ------------------
  488|  1.37M|            {
  489|  1.37M|                v = (v * 256) + (uint64_t)(str[i]);
  490|  1.37M|            }
  491|  16.3k|        }
  492|       |        //std::cout << "ACTUAL: " << v.length() << "\n";
  493|       |
  494|   151k|        if (signum < 0)
  ------------------
  |  Branch (494:13): [True: 0, False: 151k]
  ------------------
  495|      0|        {
  496|      0|            v.common_stor_.is_negative_ = true;
  497|      0|        }
  498|       |
  499|   151k|        return v;
  500|   151k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE17next_power_of_twoEm:
 1591|      1|    static uint64_t next_power_of_two(uint64_t n) {
 1592|      1|        n = n - 1;
 1593|      1|        n |= n >> 1;
 1594|      1|        n |= n >> 2;
 1595|      1|        n |= n >> 4;
 1596|      1|        n |= n >> 8;
 1597|      1|        n |= n >> 16;
 1598|      1|        n |= n >> 32;
 1599|      1|        return n + 1;
 1600|      1|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE7reserveEm:
  519|  4.85M|    {
  520|  4.85M|       if (capacity() < n)
  ------------------
  |  Branch (520:12): [True: 68.4k, False: 4.78M]
  ------------------
  521|  68.4k|       {
  522|  68.4k|           if (!is_dynamic())
  ------------------
  |  Branch (522:16): [True: 68.4k, False: 0]
  ------------------
  523|  68.4k|           {
  524|  68.4k|               size_type size = short_stor_.length_;
  525|  68.4k|               size_type is_neg = short_stor_.is_negative_;
  526|  68.4k|               uint64_t values[2] = {short_stor_.values_[0], short_stor_.values_[1]};
  527|       |
  528|  68.4k|               ::new (&dynamic_stor_) dynamic_storage();
  529|  68.4k|               dynamic_stor_.reserve(n, get_allocator());
  530|  68.4k|               dynamic_stor_.length_ = size;
  531|  68.4k|               dynamic_stor_.is_negative_ = is_neg;
  532|  68.4k|               dynamic_stor_.data_[0] = values[0];
  533|  68.4k|               dynamic_stor_.data_[1] = values[1];
  534|  68.4k|           }
  535|      0|           else
  536|      0|           {
  537|      0|               dynamic_stor_.reserve(n, get_allocator());
  538|      0|           }
  539|  68.4k|       }
  540|  4.85M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE8capacityEv:
  348|  4.85M|    {
  349|  4.85M|        return is_dynamic() ? dynamic_stor_.capacity_ : 2;
  ------------------
  |  Branch (349:16): [True: 4.21M, False: 641k]
  ------------------
  350|  4.85M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE10is_dynamicEv:
  338|  5.97G|    {
  339|  5.97G|        return common_stor_.is_dynamic_;
  340|  5.97G|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storageC2Ev:
  202|  68.4k|        {
  203|  68.4k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage7reserveEmRKNS2_ImEE:
  255|  68.4k|        {
  256|  68.4k|            real_allocator_type alloc(a);
  257|       |
  258|  68.4k|            size_type capacity_new = round_up(n);
  259|  68.4k|            uint64_t* data_old = data_;
  260|  68.4k|            data_ = std::allocator_traits<real_allocator_type>::allocate(alloc, capacity_new);
  261|  68.4k|            if (length_ > 0)
  ------------------
  |  Branch (261:17): [True: 0, False: 68.4k]
  ------------------
  262|      0|            {
  263|      0|                std::memcpy( data_, data_old, length_*sizeof(uint64_t));
  264|      0|            }
  265|  68.4k|            if (capacity_ > 0 && data_ != nullptr)
  ------------------
  |  Branch (265:17): [True: 0, False: 68.4k]
  |  Branch (265:34): [True: 0, False: 0]
  ------------------
  266|      0|            {
  267|      0|                std::allocator_traits<real_allocator_type>::deallocate(alloc, data_old, capacity_);
  268|      0|            }
  269|  68.4k|            capacity_ = capacity_new;
  270|  68.4k|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage8round_upEm:
  274|  4.24M|        {
  275|  4.24M|            return (i/word_length + 1) * word_length;
  276|  4.24M|        }
_ZNK8jsoncons6detail17basic_bigint_baseINSt3__19allocatorIhEEE13get_allocatorEv:
   64|  13.5M|        {
   65|  13.5M|            return alloc_;
   66|  13.5M|        }
_ZN8jsonconsplENS_12basic_bigintINSt3__19allocatorIhEEEEl:
 1156|  1.37M|    {
 1157|  1.37M|        return x += y;
 1158|  1.37M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2IlEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE:
  328|  1.37M|    {
  329|  1.37M|        ::new (&short_stor_) short_storage(n);
  330|  1.37M|    }
_ZN8jsoncons6detail17basic_bigint_baseINSt3__19allocatorIhEEEC2Ev:
   56|  1.59M|        {
   57|  1.59M|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2IlEET_PNS1_9enable_ifIXaaaasr3std11is_integralIS7_EE5valuelestS7_Lm8Esr3std9is_signedIS7_EE5valueEvE4typeE:
  124|  1.37M|        {
  125|  1.37M|            values_[0] = n < 0 ? (uint64_t(0)-static_cast<uint64_t>(n)) : static_cast<uint64_t>(n);
  ------------------
  |  Branch (125:26): [True: 0, False: 1.37M]
  ------------------
  126|  1.37M|            values_[1] = 0;
  127|  1.37M|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEpLERKS4_:
  571|  1.38M|    {
  572|  1.38M|        if ( is_negative() != y.is_negative() )
  ------------------
  |  Branch (572:14): [True: 0, False: 1.38M]
  ------------------
  573|      0|            return *this -= -y;
  574|  1.38M|        uint64_t d;
  575|  1.38M|        uint64_t carry = 0;
  576|       |
  577|  1.38M|        resize( (std::max)(y.length(), length()) + 1 );
  578|       |
  579|  2.47M|        for (size_type i = 0; i < length(); i++ )
  ------------------
  |  Branch (579:31): [True: 2.47M, False: 705]
  ------------------
  580|  2.47M|        {
  581|  2.47M|            if ( i >= y.length() && carry == 0 )
  ------------------
  |  Branch (581:18): [True: 1.38M, False: 1.08M]
  |  Branch (581:37): [True: 1.38M, False: 705]
  ------------------
  582|  1.38M|                break;
  583|  1.08M|            d = data()[i] + carry;
  584|  1.08M|            carry = d < carry;
  585|  1.08M|            if ( i < y.length() )
  ------------------
  |  Branch (585:18): [True: 1.08M, False: 705]
  ------------------
  586|  1.08M|            {
  587|  1.08M|                data()[i] = d + y.data()[i];
  588|  1.08M|                if ( data()[i] < d )
  ------------------
  |  Branch (588:22): [True: 1.52k, False: 1.07M]
  ------------------
  589|  1.52k|                    carry = 1;
  590|  1.08M|            }
  591|    705|            else
  592|    705|                data()[i] = d;
  593|  1.08M|        }
  594|  1.38M|        reduce();
  595|  1.38M|        return *this;
  596|  1.38M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE11is_negativeEv:
  353|  5.55M|    {
  354|  5.55M|        return common_stor_.is_negative_;
  355|  5.55M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEEngEv:
  550|  12.9k|    {
  551|  12.9k|        basic_bigint<Allocator> v(*this);
  552|  12.9k|        v.common_stor_.is_negative_ = !v.is_negative();
  553|  12.9k|        return v;
  554|  12.9k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEmIERKS4_:
  599|  12.9k|    {
  600|  12.9k|        if ( is_negative() != y.is_negative() )
  ------------------
  |  Branch (600:14): [True: 12.9k, False: 0]
  ------------------
  601|  12.9k|            return *this += -y;
  602|      0|        if ( (!is_negative() && y > *this) || (is_negative() && y < *this) )
  ------------------
  |  Branch (602:15): [True: 0, False: 0]
  |  Branch (602:33): [True: 0, False: 0]
  |  Branch (602:48): [True: 0, False: 0]
  |  Branch (602:65): [True: 0, False: 0]
  ------------------
  603|      0|            return *this = -(y - *this);
  604|      0|        uint64_t borrow = 0;
  605|      0|        uint64_t d;
  606|      0|        for (size_type i = 0; i < length(); i++ )
  ------------------
  |  Branch (606:31): [True: 0, False: 0]
  ------------------
  607|      0|        {
  608|      0|            if ( i >= y.length() && borrow == 0 )
  ------------------
  |  Branch (608:18): [True: 0, False: 0]
  |  Branch (608:37): [True: 0, False: 0]
  ------------------
  609|      0|                break;
  610|      0|            d = data()[i] - borrow;
  611|      0|            borrow = d > data()[i];
  612|      0|            if ( i < y.length())
  ------------------
  |  Branch (612:18): [True: 0, False: 0]
  ------------------
  613|      0|            {
  614|      0|                data()[i] = d - y.data()[i];
  615|      0|                if ( data()[i] > d )
  ------------------
  |  Branch (615:22): [True: 0, False: 0]
  ------------------
  616|      0|                    borrow = 1;
  617|      0|            }
  618|      0|            else 
  619|      0|                data()[i] = d;
  620|      0|        }
  621|      0|        reduce();
  622|      0|        return *this;
  623|      0|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE7compareERKS4_:
 1321|   187k|    {
 1322|   187k|        if ( is_negative() != y.is_negative() )
  ------------------
  |  Branch (1322:14): [True: 0, False: 187k]
  ------------------
 1323|      0|            return y.is_negative() - is_negative();
 1324|   187k|        int code = 0;
 1325|   187k|        if ( length() == 0 && y.length() == 0 )
  ------------------
  |  Branch (1325:14): [True: 0, False: 187k]
  |  Branch (1325:31): [True: 0, False: 0]
  ------------------
 1326|      0|            code = 0;
 1327|   187k|        else if ( length() < y.length() )
  ------------------
  |  Branch (1327:19): [True: 0, False: 187k]
  ------------------
 1328|      0|            code = -1;
 1329|   187k|        else if ( length() > y.length() )
  ------------------
  |  Branch (1329:19): [True: 167k, False: 20.2k]
  ------------------
 1330|   167k|            code = +1;
 1331|  20.2k|        else
 1332|  20.2k|        {
 1333|  20.6k|            for (size_type i = length(); i-- > 0; )
  ------------------
  |  Branch (1333:42): [True: 20.2k, False: 459]
  ------------------
 1334|  20.2k|            {
 1335|  20.2k|                if (data()[i] > y.data()[i])
  ------------------
  |  Branch (1335:21): [True: 2.24k, False: 17.9k]
  ------------------
 1336|  2.24k|                {
 1337|  2.24k|                    code = 1;
 1338|  2.24k|                    break;
 1339|  2.24k|                }
 1340|  17.9k|                else if (data()[i] < y.data()[i])
  ------------------
  |  Branch (1340:26): [True: 17.5k, False: 459]
  ------------------
 1341|  17.5k|                {
 1342|  17.5k|                    code = -1;
 1343|  17.5k|                    break;
 1344|  17.5k|                }
 1345|  20.2k|            }
 1346|  20.2k|        }
 1347|   187k|        return is_negative() ? -code : code;
  ------------------
  |  Branch (1347:16): [True: 0, False: 187k]
  ------------------
 1348|   187k|    }
_ZN8jsonconsltERKNS_12basic_bigintINSt3__19allocatorIhEEEES6_:
 1111|   187k|    {
 1112|   187k|       return x.compare(y) < 0 ? true : false;
  ------------------
  |  Branch (1112:15): [True: 17.5k, False: 169k]
  ------------------
 1113|   187k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE6resizeEm:
  508|  4.70M|    {
  509|  4.70M|        size_type len_old = common_stor_.length_;
  510|  4.70M|        reserve(n);
  511|  4.70M|        common_stor_.length_ = n;
  512|  4.70M|        if ( common_stor_.length_ > len_old )
  ------------------
  |  Branch (512:14): [True: 3.28M, False: 1.41M]
  ------------------
  513|  3.28M|        {
  514|  3.28M|            memset( data()+len_old, 0, (common_stor_.length_ - len_old)*sizeof(uint64_t) );
  515|  3.28M|        }
  516|  4.70M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE6lengthEv:
  343|  29.6M|    {
  344|  29.6M|        return common_stor_.length_;
  345|  29.6M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE4dataEv:
  368|  5.95G|    {
  369|  5.95G|        return is_dynamic() ? dynamic_stor_.data_ : short_stor_.values_;
  ------------------
  |  Branch (369:16): [True: 5.77G, False: 183M]
  ------------------
  370|  5.95G|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE4dataEv:
  363|  2.69M|    {
  364|  2.69M|        return is_dynamic() ? dynamic_stor_.data_ : short_stor_.values_;
  ------------------
  |  Branch (364:16): [True: 1.55M, False: 1.13M]
  ------------------
  365|  2.69M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE6reduceEv:
 1573|  3.43M|    {
 1574|  3.43M|        uint64_t* p = end() - 1;
 1575|  3.43M|        uint64_t* pBegin = begin();
 1576|   187M|        while ( p >= pBegin )
  ------------------
  |  Branch (1576:17): [True: 187M, False: 131k]
  ------------------
 1577|   187M|        {
 1578|   187M|            if ( *p )
  ------------------
  |  Branch (1578:18): [True: 3.30M, False: 183M]
  ------------------
 1579|  3.30M|            {
 1580|  3.30M|                break;
 1581|  3.30M|            }
 1582|   183M|            --common_stor_.length_;
 1583|   183M|            --p;
 1584|   183M|        }
 1585|  3.43M|        if ( length() == 0 )
  ------------------
  |  Branch (1585:14): [True: 131k, False: 3.30M]
  ------------------
 1586|   131k|        {
 1587|   131k|            common_stor_.is_negative_ = false;
 1588|   131k|        }
 1589|  3.43M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE3endEv:
  504|  3.43M|    uint64_t* end() { return begin() + length(); }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE5beginEv:
  502|  6.87M|    uint64_t* begin() { return is_dynamic() ? dynamic_stor_.data_ : short_stor_.values_; }
  ------------------
  |  Branch (502:32): [True: 6.14M, False: 720k]
  ------------------
_ZN8jsonconsmlENS_12basic_bigintINSt3__19allocatorIhEEEEl:
 1181|  1.37M|    {
 1182|  1.37M|        return x *= y;
 1183|  1.37M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEmLEl:
  626|  1.37M|    {
  627|  1.37M|        *this *= uint64_t(y < 0 ? -y : y);
  ------------------
  |  Branch (627:27): [True: 0, False: 1.37M]
  ------------------
  628|  1.37M|        if ( y < 0 )
  ------------------
  |  Branch (628:14): [True: 0, False: 1.37M]
  ------------------
  629|      0|            common_stor_.is_negative_ = !is_negative();
  630|  1.37M|        return *this;
  631|  1.37M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEmLEm:
  634|  1.37M|    {
  635|  1.37M|        size_type len0 = length();
  636|  1.37M|        uint64_t hi;
  637|  1.37M|        uint64_t lo;
  638|  1.37M|        uint64_t dig = data()[0];
  639|  1.37M|        uint64_t carry = 0;
  640|       |
  641|  1.37M|        resize( length() + 1 );
  642|       |
  643|  1.37M|        size_type i = 0;
  644|  1.38G|        for (i = 0; i < len0; i++ )
  ------------------
  |  Branch (644:21): [True: 1.38G, False: 1.37M]
  ------------------
  645|  1.38G|        {
  646|  1.38G|            DDproduct( dig, y, hi, lo );
  647|  1.38G|            data()[i] = lo + carry;
  648|  1.38G|            dig = data()[i+1];
  649|  1.38G|            carry = hi + (data()[i] < lo);
  650|  1.38G|        }
  651|  1.37M|        data()[i] = carry;
  652|  1.37M|        reduce();
  653|  1.37M|        return *this;
  654|  1.37M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE9DDproductEmmRmS5_:
 1438|  1.56G|    {
 1439|  1.56G|        uint64_t hiA = A >> basic_type_halfBits, loA = A & r_mask,
 1440|  1.56G|                   hiB = B >> basic_type_halfBits, loB = B & r_mask,
 1441|  1.56G|                   mid1, mid2, old;
 1442|       |
 1443|  1.56G|        lo = loA * loB;
 1444|  1.56G|        hi = hiA * hiB;
 1445|  1.56G|        mid1 = loA * hiB;
 1446|  1.56G|        mid2 = hiA * loB;
 1447|  1.56G|        old = lo;
 1448|  1.56G|        lo += mid1 << basic_type_halfBits;
 1449|  1.56G|            hi += (lo < old) + (mid1 >> basic_type_halfBits);
 1450|  1.56G|        old = lo;
 1451|  1.56G|        lo += mid2 << basic_type_halfBits;
 1452|  1.56G|            hi += (lo < old) + (mid2 >> basic_type_halfBits);
 1453|  1.56G|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ERKS4_:
  301|  5.01M|    {
  302|  5.01M|        if (!n.is_dynamic())
  ------------------
  |  Branch (302:13): [True: 840k, False: 4.17M]
  ------------------
  303|   840k|        {
  304|   840k|            ::new (&short_stor_) short_storage(n.short_stor_);
  305|   840k|        }
  306|  4.17M|        else
  307|  4.17M|        {
  308|  4.17M|            ::new (&dynamic_stor_) dynamic_storage(n.dynamic_stor_, get_allocator());
  309|  4.17M|        }
  310|  5.01M|    }
_ZN8jsoncons6detail17basic_bigint_baseINSt3__19allocatorIhEEEC2ERKS4_:
   60|  5.01M|        {
   61|  5.01M|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2ERKS5_:
  177|   840k|        {
  178|   840k|            values_[0] = stor.values_[0];
  179|   840k|            values_[1] = stor.values_[1];
  180|   840k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storageC2ERKS5_RKNS2_ImEE:
  211|  4.17M|        {
  212|  4.17M|            create(stor.length_, alloc);
  213|  4.17M|            std::memcpy(data_, stor.data_, stor.length_*sizeof(uint64_t));
  214|  4.17M|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage6createEmNS2_ImEE:
  229|  4.17M|        {
  230|  4.17M|            capacity_ = round_up(length);
  231|  4.17M|            data_ = std::allocator_traits<real_allocator_type>::allocate(alloc, capacity_);
  232|  4.17M|            JSONCONS_TRY
  ------------------
  |  |  239|  4.17M|    #define JSONCONS_TRY try
  ------------------
  233|  4.17M|            {
  234|  4.17M|                std::allocator_traits<real_allocator_type>::construct(alloc, extension_traits::to_plain_pointer(data_));
  235|  4.17M|            }
  236|  4.17M|            JSONCONS_CATCH(...)
  237|  4.17M|            {
  238|      0|                std::allocator_traits<real_allocator_type>::deallocate(alloc, data_, capacity_);
  239|      0|                JSONCONS_RETHROW;
  ------------------
  |  |  238|      0|    #define JSONCONS_RETHROW throw
  ------------------
  240|      0|            }
  241|  4.17M|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE12write_stringIcNS1_11char_traitsIcEENS2_IcEEEEvRNS1_12basic_stringIT_T0_T1_EE:
  981|  90.7k|    {
  982|  90.7k|        basic_bigint<Allocator> v(*this);
  983|       |
  984|  90.7k|        size_t len = (v.length() * basic_type_bits / 3) + 2;
  985|  90.7k|        data.reserve(len);
  986|       |
  987|  90.7k|        static uint64_t p10 = 1;
  988|  90.7k|        static uint64_t ip10 = 0;
  989|       |
  990|  90.7k|        if ( v.length() == 0 )
  ------------------
  |  Branch (990:14): [True: 75.5k, False: 15.2k]
  ------------------
  991|  75.5k|        {
  992|  75.5k|            data.push_back('0');
  993|  75.5k|        }
  994|  15.2k|        else
  995|  15.2k|        {
  996|  15.2k|            uint64_t r;
  997|  15.2k|            if ( p10 == 1 )
  ------------------
  |  Branch (997:18): [True: 1, False: 15.2k]
  ------------------
  998|      1|            {
  999|     20|                while ( p10 <= (std::numeric_limits<uint64_t>::max)()/10 )
  ------------------
  |  Branch (999:25): [True: 19, False: 1]
  ------------------
 1000|     19|                {
 1001|     19|                    p10 *= 10;
 1002|     19|                    ip10++;
 1003|     19|                }
 1004|      1|            }                     
 1005|       |            // p10 is max unsigned power of 10
 1006|  15.2k|            basic_bigint<Allocator> R;
 1007|  15.2k|            basic_bigint<Allocator> LP10 = p10; // LP10 = p10 = ::pow(10, ip10)
 1008|       |
 1009|  15.2k|            do
 1010|   109k|            {
 1011|   109k|                v.divide( LP10, v, R, true );
 1012|   109k|                r = (R.length() ? R.data()[0] : 0);
  ------------------
  |  Branch (1012:22): [True: 108k, False: 650]
  ------------------
 1013|  1.92M|                for ( size_type j=0; j < ip10; j++ )
  ------------------
  |  Branch (1013:38): [True: 1.83M, False: 93.7k]
  ------------------
 1014|  1.83M|                {
 1015|  1.83M|                    data.push_back(char(r % 10 + '0'));
 1016|  1.83M|                    r /= 10;
 1017|  1.83M|                    if ( r + v.length() == 0 )
  ------------------
  |  Branch (1017:26): [True: 15.2k, False: 1.81M]
  ------------------
 1018|  15.2k|                        break;
 1019|  1.83M|                }
 1020|   109k|            } 
 1021|   109k|            while ( v.length() );
  ------------------
  |  Branch (1021:21): [True: 93.7k, False: 15.2k]
  ------------------
 1022|  15.2k|            if (is_negative())
  ------------------
  |  Branch (1022:17): [True: 11.7k, False: 3.55k]
  ------------------
 1023|  11.7k|            {
 1024|  11.7k|                data.push_back('-');
 1025|  11.7k|            }
 1026|  15.2k|            std::reverse(data.begin(),data.end());
 1027|  15.2k|        }
 1028|  90.7k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2Ev:
  288|  17.5k|    {
  289|  17.5k|        ::new (&short_stor_) short_storage();
  290|  17.5k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2Ev:
  113|  17.5k|        {
  114|  17.5k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ImEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE:
  328|  40.4k|    {
  329|  40.4k|        ::new (&short_stor_) short_storage(n);
  330|  40.4k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2ImEET_PNS1_9enable_ifIXaaaasr3std11is_integralIS7_EE5valuelestS7_Lm8Entsr3std9is_signedIS7_EE5valueEvE4typeE:
  137|  40.4k|        {
  138|  40.4k|            values_[0] = n;
  139|  40.4k|            values_[1] = 0;
  140|  40.4k|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE6divideES4_RS4_S5_b:
 1351|   187k|    {
 1352|   187k|        if ( denom.length() == 0 )
  ------------------
  |  Branch (1352:14): [True: 0, False: 187k]
  ------------------
 1353|      0|        {
 1354|      0|            JSONCONS_THROW(std::runtime_error( "Zero divide." ));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 1355|      0|        }
 1356|   187k|        bool quot_neg = is_negative() ^ denom.is_negative();
 1357|   187k|        bool rem_neg = is_negative();
 1358|   187k|        int x = 0;
 1359|   187k|        basic_bigint<Allocator> num = *this;
 1360|   187k|        num.common_stor_.is_negative_ = denom.common_stor_.is_negative_ = false;
 1361|   187k|        if ( num < denom )
  ------------------
  |  Branch (1361:14): [True: 17.5k, False: 169k]
  ------------------
 1362|  17.5k|        {
 1363|  17.5k|            quot = uint64_t(0);
 1364|  17.5k|            rem = num;
 1365|  17.5k|            rem.common_stor_.is_negative_ = rem_neg;
 1366|  17.5k|            return;
 1367|  17.5k|        }
 1368|   169k|        if ( denom.length() == 1 && num.length() == 1 )
  ------------------
  |  Branch (1368:14): [True: 169k, False: 0]
  |  Branch (1368:37): [True: 2.70k, False: 167k]
  ------------------
 1369|  2.70k|        {
 1370|  2.70k|            quot = uint64_t( num.data()[0]/denom.data()[0] );
 1371|  2.70k|            rem = uint64_t( num.data()[0]%denom.data()[0] );
 1372|  2.70k|            quot.common_stor_.is_negative_ = quot_neg;
 1373|  2.70k|            rem.common_stor_.is_negative_ = rem_neg;
 1374|  2.70k|            return;
 1375|  2.70k|        }
 1376|   167k|        else if (denom.length() == 1 && (denom.data()[0] & l_mask) == 0 )
  ------------------
  |  Branch (1376:18): [True: 167k, False: 0]
  |  Branch (1376:41): [True: 0, False: 167k]
  ------------------
 1377|      0|        {
 1378|       |            // Denominator fits into a half word
 1379|      0|            uint64_t divisor = denom.data()[0], dHi = 0,
 1380|      0|                     q1, r, q2, dividend;
 1381|      0|            quot.resize(length());
 1382|      0|            for (size_type i=length(); i-- > 0; )
  ------------------
  |  Branch (1382:40): [True: 0, False: 0]
  ------------------
 1383|      0|            {
 1384|      0|                dividend = (dHi << basic_type_halfBits) | (data()[i] >> basic_type_halfBits);
 1385|      0|                q1 = dividend/divisor;
 1386|      0|                r = dividend % divisor;
 1387|      0|                dividend = (r << basic_type_halfBits) | (data()[i] & r_mask);
 1388|      0|                q2 = dividend/divisor;
 1389|      0|                dHi = dividend % divisor;
 1390|      0|                quot.data()[i] = (q1 << basic_type_halfBits) | q2;
 1391|      0|            }
 1392|      0|            quot.reduce();
 1393|      0|            rem = dHi;
 1394|      0|            quot.common_stor_.is_negative_ = quot_neg;
 1395|      0|            rem.common_stor_.is_negative_ = rem_neg;
 1396|      0|            return;
 1397|      0|        }
 1398|   167k|        basic_bigint<Allocator> num0 = num, denom0 = denom;
 1399|   167k|        int second_done = normalize(denom, num, x);
 1400|   167k|        size_type l = denom.length() - 1;
 1401|   167k|        size_type n = num.length() - 1;
 1402|   167k|        quot.resize(n - l);
 1403|   181M|        for (size_type i=quot.length(); i-- > 0; )
  ------------------
  |  Branch (1403:41): [True: 181M, False: 167k]
  ------------------
 1404|   181M|            quot.data()[i] = 0;
 1405|   167k|        rem = num;
 1406|   167k|        if ( rem.data()[n] >= denom.data()[l] )
  ------------------
  |  Branch (1406:14): [True: 10.8k, False: 156k]
  ------------------
 1407|  10.8k|        {
 1408|  10.8k|            rem.resize(rem.length() + 1);
 1409|  10.8k|            n++;
 1410|  10.8k|            quot.resize(quot.length() + 1);
 1411|  10.8k|        }
 1412|   167k|        uint64_t d = denom.data()[l];
 1413|   181M|        for ( size_type k = n; k > l; k-- )
  ------------------
  |  Branch (1413:32): [True: 181M, False: 167k]
  ------------------
 1414|   181M|        {
 1415|   181M|            uint64_t q = DDquotient(rem.data()[k], rem.data()[k-1], d);
 1416|   181M|            subtractmul( rem.data() + k - l - 1, denom.data(), l + 1, q );
 1417|   181M|            quot.data()[k - l - 1] = q;
 1418|   181M|        }
 1419|   167k|        quot.reduce();
 1420|   167k|        quot.common_stor_.is_negative_ = quot_neg;
 1421|   167k|        if ( remDesired )
  ------------------
  |  Branch (1421:14): [True: 167k, False: 0]
  ------------------
 1422|   167k|        {
 1423|   167k|            unnormalize(rem, x, second_done);
 1424|   167k|            rem.common_stor_.is_negative_ = rem_neg;
 1425|   167k|        }
 1426|   167k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE9normalizeERS4_S5_Ri:
 1530|   167k|    {
 1531|   167k|        size_type r = denom.length() - 1;
 1532|   167k|        uint64_t y = denom.data()[r];
 1533|       |
 1534|   167k|        x = 0;
 1535|   393k|        while ( (y & l_bit) == 0 )
  ------------------
  |  Branch (1535:17): [True: 226k, False: 167k]
  ------------------
 1536|   226k|        {
 1537|   226k|            y <<= 1;
 1538|   226k|            x++;
 1539|   226k|        }
 1540|   167k|        denom <<= x;
 1541|   167k|        num <<= x;
 1542|   167k|        if ( r > 0 && denom.data()[r] < denom.data()[r-1] )
  ------------------
  |  Branch (1542:14): [True: 0, False: 167k]
  |  Branch (1542:23): [True: 0, False: 0]
  ------------------
 1543|      0|        {
 1544|      0|            denom *= max_basic_type;
 1545|      0|                    num *= max_basic_type;
 1546|      0|            return 1;
 1547|      0|        }
 1548|   167k|        return 0;
 1549|   167k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEElSEm:
  735|   334k|    {
  736|   334k|        size_type q = (size_type)(k / basic_type_bits);
  737|   334k|        if ( q ) // Increase common_stor_.length_ by q:
  ------------------
  |  Branch (737:14): [True: 0, False: 334k]
  ------------------
  738|      0|        {
  739|      0|            resize(length() + q);
  740|      0|            for (size_type i = length(); i-- > 0; )
  ------------------
  |  Branch (740:42): [True: 0, False: 0]
  ------------------
  741|      0|                data()[i] = ( i < q ? 0 : data()[i - q]);
  ------------------
  |  Branch (741:31): [True: 0, False: 0]
  ------------------
  742|      0|            k %= basic_type_bits;
  743|      0|        }
  744|   334k|        if ( k )  // 0 < k < basic_type_bits:
  ------------------
  |  Branch (744:14): [True: 151k, False: 183k]
  ------------------
  745|   151k|        {
  746|   151k|            uint64_t k1 = basic_type_bits - k;
  747|   151k|            uint64_t mask = (uint64_t(1) << k) - uint64_t(1);
  748|   151k|            resize( length() + 1 );
  749|   117M|            for (size_type i = length(); i-- > 0; )
  ------------------
  |  Branch (749:42): [True: 117M, False: 151k]
  ------------------
  750|   117M|            {
  751|   117M|                data()[i] <<= k;
  752|   117M|                if ( i > 0 )
  ------------------
  |  Branch (752:22): [True: 117M, False: 151k]
  ------------------
  753|   117M|                    data()[i] |= (data()[i-1] >> k1) & mask;
  754|   117M|            }
  755|   151k|        }
  756|   334k|        reduce();
  757|   334k|        return *this;
  758|   334k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE10DDquotientEmmm:
 1457|   181M|    {
 1458|   181M|        uint64_t left, middle, right, qHi, qLo, x, dLo1,
 1459|   181M|                   dHi = d >> basic_type_halfBits, dLo = d & r_mask;
 1460|   181M|        qHi = A/(dHi + 1);
 1461|       |        // This initial guess of qHi may be too small.
 1462|   181M|        middle = qHi * dLo;
 1463|   181M|        left = qHi * dHi;
 1464|   181M|        x = B - (middle << basic_type_halfBits);
 1465|   181M|        A -= (middle >> basic_type_halfBits) + left + (x > B);
 1466|   181M|        B = x;
 1467|   181M|        dLo1 = dLo << basic_type_halfBits;
 1468|       |        // Increase qHi if necessary:
 1469|   266M|        while ( A > dHi || (A == dHi && B >= dLo1) )
  ------------------
  |  Branch (1469:17): [True: 84.3M, False: 181M]
  |  Branch (1469:29): [True: 547k, False: 181M]
  |  Branch (1469:41): [True: 547k, False: 6]
  ------------------
 1470|  84.8M|        {
 1471|  84.8M|            x = B - dLo1;
 1472|  84.8M|            A -= dHi + (x > B);
 1473|  84.8M|            B = x;
 1474|  84.8M|            qHi++;
 1475|  84.8M|        }
 1476|   181M|        qLo = ((A << basic_type_halfBits) | (B >> basic_type_halfBits))/(dHi + 1);
 1477|       |        // This initial guess of qLo may be too small.
 1478|   181M|        right = qLo * dLo;
 1479|   181M|        middle = qLo * dHi;
 1480|   181M|        x = B - right;
 1481|   181M|        A -= (x > B);
 1482|   181M|        B = x;
 1483|   181M|        x = B - (middle << basic_type_halfBits);
 1484|   181M|            A -= (middle >> basic_type_halfBits) + (x > B);
 1485|   181M|        B = x;
 1486|       |        // Increase qLo if necessary:
 1487|   266M|        while ( A || B >= d )
  ------------------
  |  Branch (1487:17): [True: 632k, False: 265M]
  |  Branch (1487:22): [True: 84.3M, False: 181M]
  ------------------
 1488|  84.9M|        {
 1489|  84.9M|            x = B - d;
 1490|  84.9M|            A -= (x > B);
 1491|  84.9M|            B = x;
 1492|  84.9M|            qLo++;
 1493|  84.9M|        }
 1494|   181M|        return (qHi << basic_type_halfBits) + qLo;
 1495|   181M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE11subtractmulEPmS5_mRm:
 1499|   181M|    {
 1500|   181M|        uint64_t hi, lo, d, carry = 0;
 1501|   181M|        size_type i;
 1502|   362M|        for ( i = 0; i < n; i++ )
  ------------------
  |  Branch (1502:22): [True: 181M, False: 181M]
  ------------------
 1503|   181M|        {
 1504|   181M|            DDproduct( b[i], q, hi, lo );
 1505|   181M|            d = a[i];
 1506|   181M|            a[i] -= lo;
 1507|   181M|            if ( a[i] > d )
  ------------------
  |  Branch (1507:18): [True: 17.4M, False: 163M]
  ------------------
 1508|  17.4M|                carry++;
 1509|   181M|            d = a[i + 1];
 1510|   181M|            a[i + 1] -= hi + carry;
 1511|   181M|            carry = a[i + 1] > d;
 1512|   181M|        }
 1513|   181M|        if ( carry ) // q was too large
  ------------------
  |  Branch (1513:14): [True: 0, False: 181M]
  ------------------
 1514|      0|        {
 1515|      0|            q--;
 1516|      0|            carry = 0;
 1517|      0|            for ( i = 0; i < n; i++ )
  ------------------
  |  Branch (1517:26): [True: 0, False: 0]
  ------------------
 1518|      0|            {
 1519|      0|                d = a[i] + carry;
 1520|      0|                carry = d < carry;
 1521|      0|                a[i] = d + b[i];
 1522|      0|                if ( a[i] < d )
  ------------------
  |  Branch (1522:22): [True: 0, False: 0]
  ------------------
 1523|      0|                    carry = 1;
 1524|      0|            }
 1525|      0|            a[n] = 0;
 1526|      0|        }
 1527|   181M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE11unnormalizeERS4_ii:
 1552|   167k|    {
 1553|   167k|        if ( secondDone )
  ------------------
  |  Branch (1553:14): [True: 0, False: 167k]
  ------------------
 1554|      0|        {
 1555|      0|            rem /= max_basic_type;
 1556|      0|        }
 1557|   167k|        if ( x > 0 )
  ------------------
  |  Branch (1557:14): [True: 75.5k, False: 91.5k]
  ------------------
 1558|  75.5k|        {
 1559|  75.5k|            rem >>= x;
 1560|  75.5k|        }
 1561|  91.5k|        else
 1562|  91.5k|        {
 1563|  91.5k|            rem.reduce();
 1564|  91.5k|        }
 1565|   167k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEErSEm:
  761|  75.5k|    {
  762|  75.5k|        size_type q = (size_type)(k / basic_type_bits);
  763|  75.5k|        if ( q >= length() )
  ------------------
  |  Branch (763:14): [True: 0, False: 75.5k]
  ------------------
  764|      0|        {
  765|      0|            resize( 0 );
  766|      0|            return *this;
  767|      0|        }
  768|  75.5k|        if (q > 0)
  ------------------
  |  Branch (768:13): [True: 0, False: 75.5k]
  ------------------
  769|      0|        {
  770|      0|            memmove( data(), data()+q, (size_type)((length() - q)*sizeof(uint64_t)) );
  771|      0|            resize( length() - q );
  772|      0|            k %= basic_type_bits;
  773|      0|            if ( k == 0 )
  ------------------
  |  Branch (773:18): [True: 0, False: 0]
  ------------------
  774|      0|            {
  775|      0|                reduce();
  776|      0|                return *this;
  777|      0|            }
  778|      0|        }
  779|       |
  780|  75.5k|        size_type n = (size_type)(length() - 1);
  781|  75.5k|        int64_t k1 = basic_type_bits - k;
  782|  75.5k|        uint64_t mask = (uint64_t(1) << k) - 1;
  783|   117M|        for (size_type i = 0; i <= n; i++)
  ------------------
  |  Branch (783:31): [True: 117M, False: 75.5k]
  ------------------
  784|   117M|        {
  785|   117M|            data()[i] >>= k;
  786|   117M|            if ( i < n )
  ------------------
  |  Branch (786:18): [True: 116M, False: 75.5k]
  ------------------
  787|   116M|                data()[i] |= ((data()[i+1] & mask) << k1);
  788|   117M|        }
  789|  75.5k|        reduce();
  790|  75.5k|        return *this;
  791|  75.5k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEED2Ev:
  333|  6.61M|    {
  334|  6.61M|        destroy();
  335|  6.61M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE7destroyEv:
 1429|  6.61M|    {
 1430|  6.61M|        if (is_dynamic())
  ------------------
  |  Branch (1430:13): [True: 4.24M, False: 2.37M]
  ------------------
 1431|  4.24M|        {
 1432|  4.24M|            dynamic_stor_.destroy(get_allocator());
 1433|  4.24M|        }
 1434|  6.61M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage7destroyERKNS2_ImEE:
  244|  4.24M|        {
  245|  4.24M|            if (data_ != nullptr)
  ------------------
  |  Branch (245:17): [True: 4.24M, False: 0]
  ------------------
  246|  4.24M|            {
  247|  4.24M|                real_allocator_type alloc(a);
  248|       |
  249|  4.24M|                std::allocator_traits<real_allocator_type>::destroy(alloc, extension_traits::to_plain_pointer(data_));
  250|  4.24M|                std::allocator_traits<real_allocator_type>::deallocate(alloc, data_,capacity_);
  251|  4.24M|            }
  252|  4.24M|        }
_ZN8jsonconsmiENS_12basic_bigintINSt3__19allocatorIhEEEERKS4_:
 1161|  12.9k|    {
 1162|  12.9k|        return x -= y;
 1163|  12.9k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2IiEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE:
  328|   164k|    {
  329|   164k|        ::new (&short_stor_) short_storage(n);
  330|   164k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2IiEET_PNS1_9enable_ifIXaaaasr3std11is_integralIS7_EE5valuelestS7_Lm8Esr3std9is_signedIS7_EE5valueEvE4typeE:
  124|   164k|        {
  125|   164k|            values_[0] = n < 0 ? (uint64_t(0)-static_cast<uint64_t>(n)) : static_cast<uint64_t>(n);
  ------------------
  |  Branch (125:26): [True: 12.9k, False: 151k]
  ------------------
  126|   164k|            values_[1] = 0;
  127|   164k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEaSERKS4_:
  557|  1.59M|    {
  558|  1.59M|        if ( this != &y )
  ------------------
  |  Branch (558:14): [True: 1.59M, False: 0]
  ------------------
  559|  1.59M|        {
  560|  1.59M|            resize( y.length() );
  561|  1.59M|            common_stor_.is_negative_ = y.is_negative();
  562|  1.59M|            if ( y.length() > 0 )
  ------------------
  |  Branch (562:18): [True: 1.53M, False: 63.8k]
  ------------------
  563|  1.53M|            {
  564|  1.53M|                std::memcpy( data(), y.data(), y.length()*sizeof(uint64_t) );
  565|  1.53M|            }
  566|  1.59M|        }
  567|  1.59M|        return *this;
  568|  1.59M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE16write_string_hexIcNS1_11char_traitsIcEENS2_IcEEEEvRNS1_12basic_stringIT_T0_T1_EE:
 1039|  61.0k|    {
 1040|  61.0k|        basic_bigint<Allocator> v(*this);
 1041|       |
 1042|  61.0k|        std::size_t len = (v.length() * basic_bigint<Allocator>::basic_type_bits / 3) + 2;
 1043|  61.0k|        data.reserve(len);
 1044|       |        // 1/3 > ln(2)/ln(10)
 1045|  61.0k|        static uint64_t p10 = 1;
 1046|  61.0k|        static uint64_t ip10 = 0;
 1047|       |
 1048|  61.0k|        if ( v.length() == 0 )
  ------------------
  |  Branch (1048:14): [True: 58.8k, False: 2.22k]
  ------------------
 1049|  58.8k|        {
 1050|  58.8k|            data.push_back('0');
 1051|  58.8k|        }
 1052|  2.22k|        else
 1053|  2.22k|        {
 1054|  2.22k|            uint64_t r;
 1055|  2.22k|            if ( p10 == 1 )
  ------------------
  |  Branch (1055:18): [True: 1, False: 2.22k]
  ------------------
 1056|      1|            {
 1057|     16|                while ( p10 <= (std::numeric_limits<uint64_t>::max)()/16 )
  ------------------
  |  Branch (1057:25): [True: 15, False: 1]
  ------------------
 1058|     15|                {
 1059|     15|                    p10 *= 16;
 1060|     15|                    ip10++;
 1061|     15|                }
 1062|      1|            }                     // p10 is max unsigned power of 16
 1063|  2.22k|            basic_bigint<Allocator> R;
 1064|  2.22k|            basic_bigint<Allocator> LP10 = p10; // LP10 = p10 = ::pow(16, ip10)
 1065|  2.22k|            do
 1066|  78.1k|            {
 1067|  78.1k|                v.divide( LP10, v, R, true );
 1068|  78.1k|                r = (R.length() ? R.data()[0] : 0);
  ------------------
  |  Branch (1068:22): [True: 54.2k, False: 23.9k]
  ------------------
 1069|  1.22M|                for ( size_type j=0; j < ip10; j++ )
  ------------------
  |  Branch (1069:38): [True: 1.14M, False: 75.9k]
  ------------------
 1070|  1.14M|                {
 1071|  1.14M|                    uint8_t c = r % 16;
 1072|  1.14M|                    data.push_back((c < 10) ? ('0' + c) : ('A' - 10 + c));
  ------------------
  |  Branch (1072:36): [True: 1.09M, False: 50.1k]
  ------------------
 1073|  1.14M|                    r /= 16;
 1074|  1.14M|                    if ( r + v.length() == 0 )
  ------------------
  |  Branch (1074:26): [True: 2.22k, False: 1.14M]
  ------------------
 1075|  2.22k|                        break;
 1076|  1.14M|                }
 1077|  78.1k|            } 
 1078|  78.1k|            while (v.length());
  ------------------
  |  Branch (1078:20): [True: 75.9k, False: 2.22k]
  ------------------
 1079|       |
 1080|  2.22k|            if (is_negative())
  ------------------
  |  Branch (1080:17): [True: 1.19k, False: 1.03k]
  ------------------
 1081|  1.19k|            {
 1082|  1.19k|                data.push_back('-');
 1083|  1.19k|            }
 1084|  2.22k|            std::reverse(data.begin(),data.end());
 1085|  2.22k|        }
 1086|  61.0k|    }

_ZNK8jsoncons16byte_string_view4dataEv:
  392|  16.8M|        {
  393|  16.8M|            return data_;
  394|  16.8M|        }
_ZNK8jsoncons16byte_string_view4sizeEv:
  403|  16.9M|        {
  404|  16.9M|            return size_;
  405|  16.9M|        }
_ZN8jsoncons16byte_string_viewC2EPKhm:
  355|  24.4M|        {
  356|  24.4M|        }
_ZN8jsoncons13encode_base64IPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_:
  179|    637|    {
  180|    637|        static constexpr char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  181|    637|                                                   "abcdefghijklmnopqrstuvwxyz"
  182|    637|                                                   "0123456789+/"
  183|    637|                                                   "=";
  184|    637|        return detail::encode_base64_generic(first, last, alphabet, result);
  185|    637|    }
_ZN8jsoncons6detail21encode_base64_genericIPKhNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEENS4_9enable_ifIXsr3std7is_sameINS4_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESD_SD_PKcRT0_:
   35|  7.55M|    {
   36|  7.55M|        std::size_t count = 0;
   37|  7.55M|        unsigned char a3[3];
   38|  7.55M|        unsigned char a4[4];
   39|  7.55M|        unsigned char fill = alphabet[64];
   40|  7.55M|        int i = 0;
   41|  7.55M|        int j = 0;
   42|       |
   43|  48.3M|        while (first != last)
  ------------------
  |  Branch (43:16): [True: 40.8M, False: 7.55M]
  ------------------
   44|  40.8M|        {
   45|  40.8M|            a3[i++] = *first++;
   46|  40.8M|            if (i == 3)
  ------------------
  |  Branch (46:17): [True: 12.9M, False: 27.8M]
  ------------------
   47|  12.9M|            {
   48|  12.9M|                a4[0] = (a3[0] & 0xfc) >> 2;
   49|  12.9M|                a4[1] = ((a3[0] & 0x03) << 4) + ((a3[1] & 0xf0) >> 4);
   50|  12.9M|                a4[2] = ((a3[1] & 0x0f) << 2) + ((a3[2] & 0xc0) >> 6);
   51|  12.9M|                a4[3] = a3[2] & 0x3f;
   52|       |
   53|  64.7M|                for (i = 0; i < 4; i++) 
  ------------------
  |  Branch (53:29): [True: 51.8M, False: 12.9M]
  ------------------
   54|  51.8M|                {
   55|  51.8M|                    result.push_back(alphabet[a4[i]]);
   56|  51.8M|                    ++count;
   57|  51.8M|                }
   58|  12.9M|                i = 0;
   59|  12.9M|            }
   60|  40.8M|        }
   61|       |
   62|  7.55M|        if (i > 0)
  ------------------
  |  Branch (62:13): [True: 988k, False: 6.57M]
  ------------------
   63|   988k|        {
   64|  1.98M|            for (j = i; j < 3; ++j) 
  ------------------
  |  Branch (64:25): [True: 1.00M, False: 988k]
  ------------------
   65|  1.00M|            {
   66|  1.00M|                a3[j] = 0;
   67|  1.00M|            }
   68|       |
   69|   988k|            a4[0] = (a3[0] & 0xfc) >> 2;
   70|   988k|            a4[1] = ((a3[0] & 0x03) << 4) + ((a3[1] & 0xf0) >> 4);
   71|   988k|            a4[2] = ((a3[1] & 0x0f) << 2) + ((a3[2] & 0xc0) >> 6);
   72|       |
   73|  3.94M|            for (j = 0; j < i + 1; ++j) 
  ------------------
  |  Branch (73:25): [True: 2.95M, False: 988k]
  ------------------
   74|  2.95M|            {
   75|  2.95M|                result.push_back(alphabet[a4[j]]);
   76|  2.95M|                ++count;
   77|  2.95M|            }
   78|       |
   79|   988k|            if (fill != 0)
  ------------------
  |  Branch (79:17): [True: 480, False: 987k]
  ------------------
   80|    480|            {
   81|  1.32k|                while (i++ < 3) 
  ------------------
  |  Branch (81:24): [True: 849, False: 480]
  ------------------
   82|    849|                {
   83|    849|                    result.push_back(fill);
   84|    849|                    ++count;
   85|    849|                }
   86|    480|            }
   87|   988k|        }
   88|       |
   89|  7.55M|        return count;
   90|  7.55M|    }
_ZNK8jsoncons16byte_string_view5beginEv:
  409|  7.66M|        {
  410|  7.66M|            return data_;
  411|  7.66M|        }
_ZNK8jsoncons16byte_string_view3endEv:
  413|  7.66M|        {
  414|  7.66M|            return data_ + size_;
  415|  7.66M|        }
_ZN8jsoncons13encode_base16IPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_:
  153|    628|    {
  154|    628|        static constexpr char characters[] = "0123456789ABCDEF";
  155|       |
  156|   173k|        for (auto it = first; it != last; ++it)
  ------------------
  |  Branch (156:31): [True: 172k, False: 628]
  ------------------
  157|   172k|        {
  158|   172k|            uint8_t c = *it;
  159|   172k|            result.push_back(characters[c >> 4]);
  160|   172k|            result.push_back(characters[c & 0xf]);
  161|   172k|        }
  162|    628|        return (last-first)*2;
  163|    628|    }
_ZN8jsoncons16encode_base64urlIPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_:
  168|  7.55M|    {
  169|  7.55M|        static constexpr char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  170|  7.55M|                                                      "abcdefghijklmnopqrstuvwxyz"
  171|  7.55M|                                                      "0123456789-_"
  172|  7.55M|                                                      "\0";
  173|  7.55M|        return detail::encode_base64_generic(first, last, alphabet, result);
  174|  7.55M|    }
_ZN8jsoncons16byte_string_viewC2INSt3__16vectorIhNS2_9allocatorIhEEEEEERKT_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS7_EE5valueEiE4typeE:
  362|   103k|        {
  363|   103k|        }

_ZN8jsoncons6binary11decode_halfEt:
  111|  67.1M|    {
  112|       |    #if defined(__F16C__) && !defined(APPLE_MISSING_INTRINSICS)
  113|       |        return _cvtsh_ss(half);
  114|       |    #else
  115|  67.1M|        int64_t exp = (half >> 10) & 0x1f;
  116|  67.1M|        int64_t mant = half & 0x3ff;
  117|  67.1M|        double val;
  118|  67.1M|        if (exp == 0) 
  ------------------
  |  Branch (118:13): [True: 12.0M, False: 55.1M]
  ------------------
  119|  12.0M|        {
  120|  12.0M|            val = ldexp(static_cast<double>(mant), -24);
  121|  12.0M|        }
  122|  55.1M|        else if (exp != 31) 
  ------------------
  |  Branch (122:18): [True: 49.9M, False: 5.20M]
  ------------------
  123|  49.9M|        {
  124|  49.9M|            val = ldexp(static_cast<double>(mant) + 1024.0, static_cast<int>(exp - 25));
  125|  49.9M|        } 
  126|  5.20M|        else
  127|  5.20M|        {
  128|  5.20M|            val = mant == 0 ? std::numeric_limits<double>::infinity() : std::nan("");
  ------------------
  |  Branch (128:19): [True: 646, False: 5.20M]
  ------------------
  129|  5.20M|        }
  130|  67.1M|        return half & 0x8000 ? -val : val;
  ------------------
  |  Branch (130:16): [True: 33.4M, False: 33.7M]
  ------------------
  131|  67.1M|    #endif
  132|  67.1M|    }
_ZN8jsoncons6binary9byte_swapItEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm2EES4_E4typeES4_:
  146|  68.7M|    {
  147|  68.7M|    #if defined(JSONCONS_BYTE_SWAP_16)
  148|  68.7M|        return JSONCONS_BYTE_SWAP_16(val);
  ------------------
  |  |   35|  68.7M|#      define JSONCONS_BYTE_SWAP_16    __builtin_bswap16
  ------------------
  149|       |    #else
  150|       |        return (static_cast<uint16_t>(val) >> 8) | (static_cast<uint16_t>(val) << 8);
  151|       |    #endif
  152|  68.7M|    }
_ZN8jsoncons6binary9byte_swapIjEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  157|  2.20M|    {
  158|  2.20M|    #if defined(JSONCONS_BYTE_SWAP_32)
  159|  2.20M|        return JSONCONS_BYTE_SWAP_32(val);
  ------------------
  |  |   31|  2.20M|#  define JSONCONS_BYTE_SWAP_32 __builtin_bswap32
  ------------------
  160|       |    #else
  161|       |        uint32_t tmp = ((static_cast<uint32_t>(val) << 8) & 0xff00ff00) | ((static_cast<uint32_t>(val) >> 8) & 0xff00ff);
  162|       |        return (tmp << 16) | (tmp >> 16);
  163|       |    #endif
  164|  2.20M|    }
_ZN8jsoncons6binary9byte_swapImEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  169|   240k|    {
  170|   240k|    #if defined(JSONCONS_BYTE_SWAP_64)
  171|   240k|        return JSONCONS_BYTE_SWAP_64(val);
  ------------------
  |  |   30|   240k|#  define JSONCONS_BYTE_SWAP_64 __builtin_bswap64
  ------------------
  172|       |    #else
  173|       |        uint64_t tmp = ((static_cast<uint64_t>(val) & 0x00000000ffffffffull) << 32) | ((static_cast<uint64_t>(val) & 0xffffffff00000000ull) >> 32);
  174|       |        tmp = ((tmp & 0x0000ffff0000ffffull) << 16) | ((tmp & 0xffff0000ffff0000ull) >> 16);
  175|       |        return ((tmp & 0x00ff00ff00ff00ffull) << 8)  | ((tmp & 0xff00ff00ff00ff00ull) >> 8);
  176|       |    #endif
  177|   240k|    }
_ZN8jsoncons6binary9byte_swapIsEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm2EES4_E4typeES4_:
  146|   780k|    {
  147|   780k|    #if defined(JSONCONS_BYTE_SWAP_16)
  148|   780k|        return JSONCONS_BYTE_SWAP_16(val);
  ------------------
  |  |   35|   780k|#      define JSONCONS_BYTE_SWAP_16    __builtin_bswap16
  ------------------
  149|       |    #else
  150|       |        return (static_cast<uint16_t>(val) >> 8) | (static_cast<uint16_t>(val) << 8);
  151|       |    #endif
  152|   780k|    }
_ZN8jsoncons6binary9byte_swapIiEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  157|   424k|    {
  158|   424k|    #if defined(JSONCONS_BYTE_SWAP_32)
  159|   424k|        return JSONCONS_BYTE_SWAP_32(val);
  ------------------
  |  |   31|   424k|#  define JSONCONS_BYTE_SWAP_32 __builtin_bswap32
  ------------------
  160|       |    #else
  161|       |        uint32_t tmp = ((static_cast<uint32_t>(val) << 8) & 0xff00ff00) | ((static_cast<uint32_t>(val) >> 8) & 0xff00ff);
  162|       |        return (tmp << 16) | (tmp >> 16);
  163|       |    #endif
  164|   424k|    }
_ZN8jsoncons6binary9byte_swapIlEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  169|   372k|    {
  170|   372k|    #if defined(JSONCONS_BYTE_SWAP_64)
  171|   372k|        return JSONCONS_BYTE_SWAP_64(val);
  ------------------
  |  |   30|   372k|#  define JSONCONS_BYTE_SWAP_64 __builtin_bswap64
  ------------------
  172|       |    #else
  173|       |        uint64_t tmp = ((static_cast<uint64_t>(val) & 0x00000000ffffffffull) << 32) | ((static_cast<uint64_t>(val) & 0xffffffff00000000ull) >> 32);
  174|       |        tmp = ((tmp & 0x0000ffff0000ffffull) << 16) | ((tmp & 0xffff0000ffff0000ull) >> 16);
  175|       |        return ((tmp & 0x00ff00ff00ff00ffull) << 8)  | ((tmp & 0xff00ff00ff00ff00ull) >> 8);
  176|       |    #endif
  177|   372k|    }
_ZN8jsoncons6binary9byte_swapIfEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  182|   384k|    {
  183|   384k|        uint32_t x;
  184|   384k|        std::memcpy(&x,&val,sizeof(uint32_t));
  185|   384k|        uint32_t y = byte_swap(x);
  186|   384k|        T val2;
  187|   384k|        std::memcpy(&val2,&y,sizeof(uint32_t));
  188|   384k|        return val2;
  189|   384k|    }
_ZN8jsoncons6binary9byte_swapIdEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  194|  55.6k|    {
  195|  55.6k|        uint64_t x;
  196|  55.6k|        std::memcpy(&x,&val,sizeof(uint64_t));
  197|  55.6k|        uint64_t y = byte_swap(x);
  198|  55.6k|        T val2;
  199|  55.6k|        std::memcpy(&val2,&y,sizeof(uint64_t));
  200|  55.6k|        return val2;
  201|  55.6k|    }

_ZN8jsoncons6binary13big_to_nativeItNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|   156k|    {
  205|   156k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 156k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|   156k|        T val;
  210|   156k|        std::memcpy(&val,first,sizeof(T));
  211|   156k|        return byte_swap(val);
  212|   156k|    }
_ZN8jsoncons6binary13big_to_nativeIjNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  9.37k|    {
  205|  9.37k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 9.37k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  9.37k|        T val;
  210|  9.37k|        std::memcpy(&val,first,sizeof(T));
  211|  9.37k|        return byte_swap(val);
  212|  9.37k|    }
_ZN8jsoncons6binary13big_to_nativeImNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  8.65k|    {
  205|  8.65k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 8.65k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  8.65k|        T val;
  210|  8.65k|        std::memcpy(&val,first,sizeof(T));
  211|  8.65k|        return byte_swap(val);
  212|  8.65k|    }
_ZN8jsoncons6binary13big_to_nativeIfNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  44.5k|    {
  205|  44.5k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 44.5k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  44.5k|        T val;
  210|  44.5k|        std::memcpy(&val,first,sizeof(T));
  211|  44.5k|        return byte_swap(val);
  212|  44.5k|    }
_ZN8jsoncons6binary13big_to_nativeIdNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  6.79k|    {
  205|  6.79k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 6.79k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  6.79k|        T val;
  210|  6.79k|        std::memcpy(&val,first,sizeof(T));
  211|  6.79k|        return byte_swap(val);
  212|  6.79k|    }

_ZN8jsoncons6detail6grisu3EdPcPiS2_:
  294|  63.3M|{
  295|  63.3M|    diy_fp_t w_m, w_p;
  296|  63.3M|    int q = 64, alpha = -59, gamma = -56;
  297|  63.3M|    normalized_boundaries(v, &w_m, &w_p);
  298|  63.3M|    diy_fp_t w = normalize_diy_fp(double2diy_fp(v));
  299|  63.3M|    int mk = k_comp(w_p.e + q, alpha, gamma);
  300|  63.3M|    diy_fp_t c_mk = cached_power(mk);
  301|  63.3M|    diy_fp_t W  = multiply(w,   c_mk);
  302|  63.3M|    diy_fp_t Wp = multiply(w_p, c_mk);
  303|  63.3M|    diy_fp_t Wm = multiply(w_m, c_mk);
  304|  63.3M|    *K = -mk;
  305|  63.3M|    bool result = digit_gen(Wm, W, Wp, buffer, length, K);
  306|  63.3M|    buffer[*length] = 0;
  307|  63.3M|    return result;
  308|  63.3M|}
_ZN8jsoncons6detail21normalized_boundariesEdPNS0_8diy_fp_tES2_:
  189|  63.3M|{
  190|  63.3M|    diy_fp_t v = double2diy_fp(d);
  191|  63.3M|    diy_fp_t pl, mi;
  192|  63.3M|    bool significand_is_zero = v.f == dp_hidden_bit;
  193|  63.3M|    pl.f  = (v.f << 1) + 1; pl.e  = v.e - 1;
  194|  63.3M|    pl = normalize_boundary(pl);
  195|  63.3M|    if (significand_is_zero)
  ------------------
  |  Branch (195:9): [True: 3.29M, False: 60.0M]
  ------------------
  196|  3.29M|    {
  197|  3.29M|        mi.f = (v.f << 2) - 1;
  198|  3.29M|        mi.e = v.e - 2;
  199|  3.29M|    } else
  200|  60.0M|    {
  201|  60.0M|        mi.f = (v.f << 1) - 1;
  202|  60.0M|        mi.e = v.e - 1;
  203|  60.0M|    }
  204|  63.3M|	int x = mi.e - pl.e;
  205|  63.3M|    mi.f <<= x;
  206|  63.3M|    mi.e = pl.e;
  207|  63.3M|    *out_m_plus = pl;
  208|  63.3M|    *out_m_minus = mi;
  209|  63.3M|}
_ZN8jsoncons6detail18normalize_boundaryENS0_8diy_fp_tE:
  172|  63.3M|{
  173|  63.3M|    diy_fp_t res = in;
  174|       |    /* Normalize now */
  175|       |    /* the original number could have been a denormal. */
  176|  63.5M|    while (!(res.f & (dp_hidden_bit << 1)))
  ------------------
  |  Branch (176:12): [True: 178k, False: 63.3M]
  ------------------
  177|   178k|    {
  178|   178k|        res.f <<= 1;
  179|   178k|        res.e--;
  180|   178k|    }
  181|       |    /* do the final shifts in one go. Don't forget the hidden bit (the '-1') */
  182|  63.3M|    res.f <<= (diy_significand_size - dp_significand_size - 2);
  183|  63.3M|    res.e = res.e - (diy_significand_size - dp_significand_size - 2);
  184|  63.3M|    return res;
  185|  63.3M|}
_ZN8jsoncons6detail16normalize_diy_fpENS0_8diy_fp_tE:
  135|  63.3M|{
  136|  63.3M|    diy_fp_t res = in;
  137|       |    /* Normalize now */
  138|       |    /* the original number could have been a denormal. */
  139|  63.5M|    while (!(res.f & dp_hidden_bit))
  ------------------
  |  Branch (139:12): [True: 178k, False: 63.3M]
  ------------------
  140|   178k|    {
  141|   178k|        res.f <<= 1;
  142|   178k|        res.e--;
  143|   178k|    }
  144|       |    /* do the final shifts in one go. Don't forget the hidden bit (the '-1') */
  145|  63.3M|    res.f <<= (diy_significand_size - dp_significand_size - 1);
  146|  63.3M|    res.e = res.e - (diy_significand_size - dp_significand_size - 1);
  147|  63.3M|    return res;
  148|  63.3M|}
_ZN8jsoncons6detail13double2diy_fpEd:
  152|   126M|{
  153|   126M|    uint64_t d64 = double_to_uint64(d);
  154|   126M|    int biased_e = (d64 & dp_exponent_mask) >> dp_significand_size;
  155|   126M|    uint64_t significand = (d64 & dp_significand_mask);
  156|   126M|    diy_fp_t res;
  157|   126M|    if (biased_e != 0)
  ------------------
  |  Branch (157:9): [True: 126M, False: 12.2k]
  ------------------
  158|   126M|    {
  159|   126M|        res.f = significand + dp_hidden_bit;
  160|   126M|        res.e = biased_e - dp_exponent_bias;
  161|   126M|    } 
  162|  12.2k|    else
  163|  12.2k|    {
  164|  12.2k|        res.f = significand;
  165|  12.2k|        res.e = dp_min_exponent + 1;
  166|  12.2k|    }
  167|   126M|    return res;
  168|   126M|}
_ZN8jsoncons6detail16double_to_uint64Ed:
  121|   126M|uint64_t double_to_uint64(double d) {uint64_t d64; std::memcpy(&d64,&d,sizeof(double)); return d64; }
_ZN8jsoncons6detail6k_compEiii:
   83|  63.3M|{
   84|  63.3M|    constexpr double d_1_log2_10 = 0.30102999566398114; //  1 / lg(10)
   85|  63.3M|	int x = alpha - e + 63;
   86|  63.3M|    return static_cast<int>(std::ceil(x * d_1_log2_10));
   87|  63.3M|}
_ZN8jsoncons6detail12cached_powerEi:
   98|  63.3M|{
   99|  63.3M|    diy_fp_t res;
  100|  63.3M|    int index = 343 + k;
  101|  63.3M|    res.f = powers_ten[index];
  102|  63.3M|    res.e = powers_ten_e[index];
  103|  63.3M|    return res;
  104|  63.3M|}
_ZN8jsoncons6detail8multiplyENS0_8diy_fp_tES1_:
   66|   190M|{
   67|   190M|    uint64_t a, b, c, d, ac, bc, ad, bd, tmp;
   68|   190M|    diy_fp_t r; uint64_t M32 = 0xFFFFFFFF;
   69|   190M|    a = x.f >> 32; b = x.f & M32;
   70|   190M|    c = y.f >> 32; d = y.f & M32;
   71|   190M|    ac = a * c; bc = b * c; ad = a * d; bd = b * d;
   72|   190M|    tmp = (bd >> 32) + (ad & M32) + (bc & M32);
   73|   190M|    tmp += 1U << 31; /// mult_round
   74|   190M|    r.f = ac + (ad >> 32) + (bc >> 32) + (tmp >> 32);
   75|   190M|    r.e = x.e + y.e + 64;
   76|   190M|    return r;
   77|   190M|}
_ZN8jsoncons6detail9digit_genENS0_8diy_fp_tES1_S1_PcPiS3_:
  251|  63.3M|{
  252|  63.3M|    const uint32_t TEN2 = 100;
  253|       |
  254|  63.3M|    uint32_t div, p1; uint64_t p2, tmp, unit = 1;
  255|  63.3M|    int d, kappa;
  256|  63.3M|    diy_fp_t one, wp_W, Delta;
  257|  63.3M|    Delta = minus(Wp, Wm); Delta.f += 2 * unit;
  258|  63.3M|    wp_W = minus(Wp, W); wp_W.f += unit;
  259|  63.3M|    one.f = ((uint64_t)1) << -Wp.e; one.e = Wp.e;
  260|  63.3M|    p1 = static_cast<uint32_t>((Wp.f + 1) >> -one.e);
  261|  63.3M|    p2 = (Wp.f + 1) & (one.f - 1);
  262|  63.3M|    *len = 0; kappa = 3; div = TEN2;
  263|   252M|    while (kappa > 0)
  ------------------
  |  Branch (263:12): [True: 189M, False: 62.3M]
  ------------------
  264|   189M|    {
  265|   189M|        d = p1 / div;
  266|   189M|        if (d || *len) buffer[(*len)++] = (char)('0' + d);
  ------------------
  |  Branch (266:13): [True: 128M, False: 61.2M]
  |  Branch (266:18): [True: 2.35M, False: 58.9M]
  ------------------
  267|   189M|        p1 %= div; kappa--;
  268|   189M|        tmp = (((uint64_t)p1) << -one.e) + p2;
  269|   189M|        if (tmp < Delta.f)
  ------------------
  |  Branch (269:13): [True: 998k, False: 188M]
  ------------------
  270|   998k|        {
  271|   998k|            *K += kappa;
  272|   998k|            return round_weed(buffer, *len, wp_W.f, Delta.f, tmp,
  273|   998k|                              ((uint64_t)div) << -one.e, unit);
  274|   998k|        }
  275|   188M|        div /= 10;
  276|   188M|    }
  277|   537M|    while (1)
  ------------------
  |  Branch (277:12): [Folded - Ignored]
  ------------------
  278|   537M|    {
  279|   537M|        p2 *= 10; Delta.f *= 10; unit *= 10;
  280|   537M|        d = static_cast<int>(p2 >> -one.e);
  281|   537M|        if (d || *len) buffer[(*len)++] = (char)('0' + d);
  ------------------
  |  Branch (281:13): [True: 498M, False: 39.0M]
  |  Branch (281:18): [True: 39.0M, False: 0]
  ------------------
  282|   537M|        p2 &= one.f - 1; kappa--;
  283|   537M|        if (p2 < Delta.f)
  ------------------
  |  Branch (283:13): [True: 62.3M, False: 475M]
  ------------------
  284|  62.3M|        {
  285|  62.3M|            *K += kappa;
  286|  62.3M|            return round_weed(buffer, *len, wp_W.f * unit, Delta.f, p2,
  287|  62.3M|                              one.f, unit);
  288|  62.3M|        }
  289|   537M|    }
  290|  62.3M|}
_ZN8jsoncons6detail5minusENS0_8diy_fp_tES1_:
   57|   126M|{
   58|   126M|    assert(x.e == y.e);
   59|      0|    assert(x.f >= y.f);
   60|      0|    diy_fp_t r = { x.f = x.f - y.f, x.e };
   61|   126M|    return r;
   62|   126M|}
_ZN8jsoncons6detail10round_weedEPcimmmmm:
  231|  63.3M|{
  232|  63.3M|    uint64_t wp_Wup = wp_W - ulp;
  233|  63.3M|    uint64_t wp_Wdown = wp_W + ulp;
  234|  77.4M|    while (rest < wp_Wup &&  /// round1
  ------------------
  |  Branch (234:12): [True: 21.9M, False: 55.5M]
  ------------------
  235|  77.4M|           Delta - rest >= ten_kappa &&
  ------------------
  |  Branch (235:12): [True: 15.6M, False: 6.27M]
  ------------------
  236|  77.4M|           (rest + ten_kappa < wp_Wup || /// closer
  ------------------
  |  Branch (236:13): [True: 4.91M, False: 10.7M]
  ------------------
  237|  15.6M|            wp_Wup - rest >= rest + ten_kappa - wp_Wup))
  ------------------
  |  Branch (237:13): [True: 9.20M, False: 1.54M]
  ------------------
  238|  14.1M|    {
  239|  14.1M|        buffer[len - 1]--; rest += ten_kappa;
  240|  14.1M|    }
  241|  63.3M|    if (rest < wp_Wdown && /// round2
  ------------------
  |  Branch (241:9): [True: 55.6M, False: 7.65M]
  ------------------
  242|  63.3M|        Delta - rest >= ten_kappa &&
  ------------------
  |  Branch (242:9): [True: 4.48M, False: 51.1M]
  ------------------
  243|  63.3M|        (rest + ten_kappa < wp_Wdown ||
  ------------------
  |  Branch (243:10): [True: 0, False: 4.48M]
  ------------------
  244|  4.48M|         wp_Wdown - rest > rest + ten_kappa - wp_Wdown)) return 0;
  ------------------
  |  Branch (244:10): [True: 410k, False: 4.07M]
  ------------------
  245|  62.9M|    return 2 * ulp <= rest && rest <= Delta - 4 * ulp; /// weed
  ------------------
  |  Branch (245:12): [True: 62.9M, False: 1.97k]
  |  Branch (245:31): [True: 62.9M, False: 311]
  ------------------
  246|  63.3M|}

_ZN8jsoncons6detail19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE7destroyEPNS0_11heap_stringIcS2_S5_EE:
  147|  20.7k|        {
  148|  20.7k|            if (ptr != nullptr)
  ------------------
  |  Branch (148:17): [True: 20.7k, False: 0]
  ------------------
  149|  20.7k|            {
  150|  20.7k|                heap_string_type* rawp = extension_traits::to_plain_pointer(ptr);
  151|       |
  152|  20.7k|                char* p = launder_cast<char*>(rawp);
  153|       |
  154|  20.7k|                std::size_t mem_size = aligned_size(ptr->length_*sizeof(char_type));
  155|  20.7k|                byte_allocator_type byte_alloc(ptr->get_allocator());
  156|  20.7k|                byte_alloc.deallocate(p,mem_size);
  157|  20.7k|            }
  158|  20.7k|        }
_ZN8jsoncons6detail12launder_castIPcNS0_11heap_stringIcNS_9null_typeENSt3__19allocatorIcEEEEEET_PT0_:
   85|  20.7k|    {
   86|       |    #if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
   87|       |        return std::launder(reinterpret_cast<T>(u));
   88|       |    #elif defined(__GNUC__) &&  (__GNUC__ * 100 + __GNUC_MINOR__) > 800
   89|       |        return __builtin_launder(reinterpret_cast<T>(u));
   90|       |    #else
   91|  20.7k|        return reinterpret_cast<T>(u);
   92|  20.7k|    #endif
   93|  20.7k|    }
_ZN8jsoncons6detail19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE12aligned_sizeEm:
  120|  41.4k|        {
  121|  41.4k|            return sizeof(json_storage_kind) + n;
  122|  41.4k|        }
_ZN8jsoncons6detail16heap_string_baseINS_9null_typeENSt3__19allocatorIcEEE13get_allocatorEv:
   28|  20.7k|        {
   29|  20.7k|            return alloc_;
   30|  20.7k|        }
_ZN8jsoncons6detail19heap_string_factoryIhmNSt3__19allocatorIcEEE7destroyEPNS0_11heap_stringIhmS4_EE:
  147|  5.62M|        {
  148|  5.62M|            if (ptr != nullptr)
  ------------------
  |  Branch (148:17): [True: 5.62M, False: 0]
  ------------------
  149|  5.62M|            {
  150|  5.62M|                heap_string_type* rawp = extension_traits::to_plain_pointer(ptr);
  151|       |
  152|  5.62M|                char* p = launder_cast<char*>(rawp);
  153|       |
  154|  5.62M|                std::size_t mem_size = aligned_size(ptr->length_*sizeof(char_type));
  155|  5.62M|                byte_allocator_type byte_alloc(ptr->get_allocator());
  156|  5.62M|                byte_alloc.deallocate(p,mem_size);
  157|  5.62M|            }
  158|  5.62M|        }
_ZN8jsoncons6detail12launder_castIPcNS0_11heap_stringIhmNSt3__19allocatorIcEEEEEET_PT0_:
   85|  5.62M|    {
   86|       |    #if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
   87|       |        return std::launder(reinterpret_cast<T>(u));
   88|       |    #elif defined(__GNUC__) &&  (__GNUC__ * 100 + __GNUC_MINOR__) > 800
   89|       |        return __builtin_launder(reinterpret_cast<T>(u));
   90|       |    #else
   91|  5.62M|        return reinterpret_cast<T>(u);
   92|  5.62M|    #endif
   93|  5.62M|    }
_ZN8jsoncons6detail19heap_string_factoryIhmNSt3__19allocatorIcEEE12aligned_sizeEm:
  120|  11.2M|        {
  121|  11.2M|            return sizeof(json_storage_kind) + n;
  122|  11.2M|        }
_ZN8jsoncons6detail16heap_string_baseImNSt3__19allocatorIcEEE13get_allocatorEv:
   28|  5.62M|        {
   29|  5.62M|            return alloc_;
   30|  5.62M|        }
_ZN8jsoncons6detail19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE6createEPKcmS2_RKS5_:
  127|  20.7k|        {
  128|  20.7k|            std::size_t mem_size = aligned_size(length*sizeof(char_type));
  129|       |
  130|  20.7k|            byte_allocator_type byte_alloc(alloc);
  131|  20.7k|            byte_pointer ptr = byte_alloc.allocate(mem_size);
  132|       |
  133|  20.7k|            char* storage = extension_traits::to_plain_pointer(ptr);
  134|  20.7k|            heap_string_type* ps = new(storage)heap_string_type(extra, byte_alloc);
  135|       |
  136|  20.7k|            auto psa = launder_cast<storage_t*>(storage); 
  137|       |
  138|  20.7k|            CharT* p = new(&psa->c)char_type[length + 1];
  139|  20.7k|            std::memcpy(p, s, length*sizeof(char_type));
  140|  20.7k|            p[length] = 0;
  141|  20.7k|            ps->p_ = std::pointer_traits<typename heap_string_type::pointer>::pointer_to(*p);
  142|  20.7k|            ps->length_ = length;
  143|  20.7k|            return std::pointer_traits<pointer>::pointer_to(*ps);
  144|  20.7k|        }
_ZN8jsoncons6detail11heap_stringIcNS_9null_typeENSt3__19allocatorIcEEEC2ES2_RKS5_:
   65|  20.7k|        {
   66|  20.7k|        }
_ZN8jsoncons6detail16heap_string_baseINS_9null_typeENSt3__19allocatorIcEEEC2ERKS2_RKS5_:
   39|  20.7k|        {
   40|  20.7k|        }
_ZN8jsoncons6detail12launder_castIPNS0_19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE9storage_tEcEET_PT0_:
   85|  20.7k|    {
   86|       |    #if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
   87|       |        return std::launder(reinterpret_cast<T>(u));
   88|       |    #elif defined(__GNUC__) &&  (__GNUC__ * 100 + __GNUC_MINOR__) > 800
   89|       |        return __builtin_launder(reinterpret_cast<T>(u));
   90|       |    #else
   91|  20.7k|        return reinterpret_cast<T>(u);
   92|  20.7k|    #endif
   93|  20.7k|    }
_ZN8jsoncons6detail19heap_string_factoryIhmNSt3__19allocatorIcEEE6createEPKhmmRKS4_:
  127|  5.62M|        {
  128|  5.62M|            std::size_t mem_size = aligned_size(length*sizeof(char_type));
  129|       |
  130|  5.62M|            byte_allocator_type byte_alloc(alloc);
  131|  5.62M|            byte_pointer ptr = byte_alloc.allocate(mem_size);
  132|       |
  133|  5.62M|            char* storage = extension_traits::to_plain_pointer(ptr);
  134|  5.62M|            heap_string_type* ps = new(storage)heap_string_type(extra, byte_alloc);
  135|       |
  136|  5.62M|            auto psa = launder_cast<storage_t*>(storage); 
  137|       |
  138|  5.62M|            CharT* p = new(&psa->c)char_type[length + 1];
  139|  5.62M|            std::memcpy(p, s, length*sizeof(char_type));
  140|  5.62M|            p[length] = 0;
  141|  5.62M|            ps->p_ = std::pointer_traits<typename heap_string_type::pointer>::pointer_to(*p);
  142|  5.62M|            ps->length_ = length;
  143|  5.62M|            return std::pointer_traits<pointer>::pointer_to(*ps);
  144|  5.62M|        }
_ZN8jsoncons6detail11heap_stringIhmNSt3__19allocatorIcEEEC2EmRKS4_:
   65|  5.62M|        {
   66|  5.62M|        }
_ZN8jsoncons6detail16heap_string_baseImNSt3__19allocatorIcEEEC2ERKmRKS4_:
   39|  5.62M|        {
   40|  5.62M|        }
_ZN8jsoncons6detail12launder_castIPNS0_19heap_string_factoryIhmNSt3__19allocatorIcEEE9storage_tEcEET_PT0_:
   85|  5.62M|    {
   86|       |    #if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
   87|       |        return std::launder(reinterpret_cast<T>(u));
   88|       |    #elif defined(__GNUC__) &&  (__GNUC__ * 100 + __GNUC_MINOR__) > 800
   89|       |        return __builtin_launder(reinterpret_cast<T>(u));
   90|       |    #else
   91|  5.62M|        return reinterpret_cast<T>(u);
   92|  5.62M|    #endif
   93|  5.62M|    }

_ZN8jsoncons6detail8chars_toC2Ev:
 1082|  67.8M|    {
 1083|  67.8M|        struct lconv * lc = localeconv();
 1084|  67.8M|        if (lc != nullptr && lc->decimal_point[0] != 0)
  ------------------
  |  Branch (1084:13): [True: 67.8M, False: 0]
  |  Branch (1084:30): [True: 67.8M, False: 0]
  ------------------
 1085|  67.8M|        {
 1086|  67.8M|            decimal_point_ = lc->decimal_point[0];    
 1087|  67.8M|        }
 1088|      0|        else
 1089|      0|        {
 1090|      0|            decimal_point_ = '.'; 
 1091|      0|        }
 1092|  67.8M|        buffer_.reserve(100);
 1093|  67.8M|    }
_ZNK8jsoncons6detail8chars_toclIcEENSt3__19enable_ifIXsr3std7is_sameIT_cEE5valueEdE4typeEPKS5_m:
 1106|   412k|    {
 1107|   412k|        CharT *end = nullptr;
 1108|   412k|        double val = strtod(s, &end);
 1109|   412k|        if (s == end)
  ------------------
  |  Branch (1109:13): [True: 0, False: 412k]
  ------------------
 1110|      0|        {
 1111|      0|            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("Convert string to double failed"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 1112|      0|        }
 1113|   412k|        return val;
 1114|   412k|    }

_ZN8jsoncons6detail4spanIKhLm18446744073709551615EEC2EPS2_m:
   57|  5.63M|        {
   58|  5.63M|        }
_ZNK8jsoncons6detail4spanIKhLm18446744073709551615EE4dataEv:
  106|  5.62M|        {
  107|  5.62M|            return data_;
  108|  5.62M|        }
_ZNK8jsoncons6detail4spanIKhLm18446744073709551615EE4sizeEv:
  111|  5.63M|        {
  112|  5.63M|            return size_;
  113|  5.63M|        }
_ZNK8jsoncons6detail4spanIKhLm18446744073709551615EE5beginEv:
  127|  6.19k|        {
  128|  6.19k|            return data_;
  129|  6.19k|        }
_ZNK8jsoncons6detail4spanIKhLm18446744073709551615EE3endEv:
  131|  4.41M|        {
  132|  4.41M|            return data_ + size_;
  133|  4.41M|        }
_ZNK8jsoncons6detail4spanIKtLm18446744073709551615EE4sizeEv:
  111|  53.6k|        {
  112|  53.6k|            return size_;
  113|  53.6k|        }
_ZNK8jsoncons6detail4spanIKtLm18446744073709551615EE5beginEv:
  127|  53.6k|        {
  128|  53.6k|            return data_;
  129|  53.6k|        }
_ZNK8jsoncons6detail4spanIKtLm18446744073709551615EE3endEv:
  131|  71.1M|        {
  132|  71.1M|            return data_ + size_;
  133|  71.1M|        }
_ZNK8jsoncons6detail4spanIKjLm18446744073709551615EE4sizeEv:
  111|   100k|        {
  112|   100k|            return size_;
  113|   100k|        }
_ZNK8jsoncons6detail4spanIKjLm18446744073709551615EE5beginEv:
  127|   100k|        {
  128|   100k|            return data_;
  129|   100k|        }
_ZNK8jsoncons6detail4spanIKjLm18446744073709551615EE3endEv:
  131|  1.91M|        {
  132|  1.91M|            return data_ + size_;
  133|  1.91M|        }
_ZNK8jsoncons6detail4spanIKmLm18446744073709551615EE4sizeEv:
  111|  1.11M|        {
  112|  1.11M|            return size_;
  113|  1.11M|        }
_ZNK8jsoncons6detail4spanIKmLm18446744073709551615EE5beginEv:
  127|  1.11M|        {
  128|  1.11M|            return data_;
  129|  1.11M|        }
_ZNK8jsoncons6detail4spanIKmLm18446744073709551615EE3endEv:
  131|  1.31M|        {
  132|  1.31M|            return data_ + size_;
  133|  1.31M|        }
_ZNK8jsoncons6detail4spanIKaLm18446744073709551615EE4sizeEv:
  111|  1.96k|        {
  112|  1.96k|            return size_;
  113|  1.96k|        }
_ZNK8jsoncons6detail4spanIKaLm18446744073709551615EE5beginEv:
  127|  1.96k|        {
  128|  1.96k|            return data_;
  129|  1.96k|        }
_ZNK8jsoncons6detail4spanIKaLm18446744073709551615EE3endEv:
  131|  91.6k|        {
  132|  91.6k|            return data_ + size_;
  133|  91.6k|        }
_ZNK8jsoncons6detail4spanIKsLm18446744073709551615EE4sizeEv:
  111|  4.56k|        {
  112|  4.56k|            return size_;
  113|  4.56k|        }
_ZNK8jsoncons6detail4spanIKsLm18446744073709551615EE5beginEv:
  127|  4.56k|        {
  128|  4.56k|            return data_;
  129|  4.56k|        }
_ZNK8jsoncons6detail4spanIKsLm18446744073709551615EE3endEv:
  131|   789k|        {
  132|   789k|            return data_ + size_;
  133|   789k|        }
_ZNK8jsoncons6detail4spanIKiLm18446744073709551615EE4sizeEv:
  111|  14.9k|        {
  112|  14.9k|            return size_;
  113|  14.9k|        }
_ZNK8jsoncons6detail4spanIKiLm18446744073709551615EE5beginEv:
  127|  14.9k|        {
  128|  14.9k|            return data_;
  129|  14.9k|        }
_ZNK8jsoncons6detail4spanIKiLm18446744073709551615EE3endEv:
  131|   483k|        {
  132|   483k|            return data_ + size_;
  133|   483k|        }
_ZNK8jsoncons6detail4spanIKlLm18446744073709551615EE4sizeEv:
  111|  17.8k|        {
  112|  17.8k|            return size_;
  113|  17.8k|        }
_ZNK8jsoncons6detail4spanIKlLm18446744073709551615EE5beginEv:
  127|  17.8k|        {
  128|  17.8k|            return data_;
  129|  17.8k|        }
_ZNK8jsoncons6detail4spanIKlLm18446744073709551615EE3endEv:
  131|   398k|        {
  132|   398k|            return data_ + size_;
  133|   398k|        }
_ZNK8jsoncons6detail4spanIKfLm18446744073709551615EE4sizeEv:
  111|  16.7k|        {
  112|  16.7k|            return size_;
  113|  16.7k|        }
_ZNK8jsoncons6detail4spanIKfLm18446744073709551615EE5beginEv:
  127|  16.7k|        {
  128|  16.7k|            return data_;
  129|  16.7k|        }
_ZNK8jsoncons6detail4spanIKfLm18446744073709551615EE3endEv:
  131|   362k|        {
  132|   362k|            return data_ + size_;
  133|   362k|        }
_ZNK8jsoncons6detail4spanIKdLm18446744073709551615EE4sizeEv:
  111|  6.25k|        {
  112|  6.25k|            return size_;
  113|  6.25k|        }
_ZNK8jsoncons6detail4spanIKdLm18446744073709551615EE5beginEv:
  127|  6.25k|        {
  128|  6.25k|            return data_;
  129|  6.25k|        }
_ZNK8jsoncons6detail4spanIKdLm18446744073709551615EE3endEv:
  131|  76.5k|        {
  132|  76.5k|            return data_ + size_;
  133|  76.5k|        }
_ZN8jsoncons6detail4spanIKtLm18446744073709551615EEC2EPS2_m:
   57|  53.6k|        {
   58|  53.6k|        }
_ZN8jsoncons6detail4spanIKjLm18446744073709551615EEC2EPS2_m:
   57|   100k|        {
   58|   100k|        }
_ZN8jsoncons6detail4spanIKmLm18446744073709551615EEC2EPS2_m:
   57|  4.81k|        {
   58|  4.81k|        }
_ZN8jsoncons6detail4spanIKaLm18446744073709551615EEC2EPS2_m:
   57|  1.96k|        {
   58|  1.96k|        }
_ZN8jsoncons6detail4spanIKsLm18446744073709551615EEC2EPS2_m:
   57|  4.56k|        {
   58|  4.56k|        }
_ZN8jsoncons6detail4spanIKiLm18446744073709551615EEC2EPS2_m:
   57|  14.9k|        {
   58|  14.9k|        }
_ZN8jsoncons6detail4spanIKlLm18446744073709551615EEC2EPS2_m:
   57|  17.8k|        {
   58|  17.8k|        }
_ZN8jsoncons6detail4spanIKfLm18446744073709551615EEC2EPS2_m:
   57|  16.7k|        {
   58|  16.7k|        }
_ZN8jsoncons6detail4spanIKdLm18446744073709551615EEC2EPS2_m:
   57|  6.25k|        {
   58|  6.25k|        }
_ZN8jsoncons6detail4spanIKmLm18446744073709551615EEC2INSt3__16vectorImNS5_9allocatorImEEEEEERT_PNS5_9enable_ifIXaaaaaantsr7is_spanISA_EE5valuentsr16extension_traits12is_std_arrayISA_EE5valuesr16extension_traits21is_compatible_elementISA_S2_EE5valuesr16extension_traits17has_data_and_sizeISA_EE5valueEvE4typeE:
   64|  1.11M|        {
   65|  1.11M|        }

_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE4dataEv:
  157|  10.7M|        {
  158|  10.7M|            return data_;
  159|  10.7M|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE6lengthEv:
  119|  5.37M|        {
  120|  5.37M|            return length_;
  121|  5.37M|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE4sizeEv:
  114|  5.37M|        {
  115|  5.37M|            return length_;
  116|  5.37M|        }
_ZN8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEEC2EPKcm:
   48|  6.87M|        {
   49|  6.87M|        }
_ZN8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEEC2IS4_NS2_9allocatorIcEEEERKNS2_12basic_stringIcT_T0_EE:
   60|  4.77M|        {
   61|  4.77M|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE5beginEv:
   79|   906k|        {
   80|   906k|            return data_;
   81|   906k|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE3endEv:
   83|   906k|        {
   84|   906k|            return data_ + length_;
   85|   906k|        }

_ZN8jsoncons6detail12from_integerImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   37|  11.7M|    {
   38|  11.7M|        using char_type = typename Result::value_type;
   39|       |
   40|  11.7M|        char_type buf[255];
   41|  11.7M|        char_type *p = buf;
   42|  11.7M|        const char_type* last = buf+255;
   43|       |
   44|  11.7M|        bool is_negative = value < 0;
   45|       |
   46|  11.7M|        if (value < 0)
  ------------------
  |  Branch (46:13): [True: 0, False: 11.7M]
  ------------------
   47|      0|        {
   48|      0|            do
   49|      0|            {
   50|      0|                *p++ = static_cast<char_type>(48 - (value % 10));
   51|      0|            }
   52|      0|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (52:20): [True: 0, False: 0]
  |  Branch (52:37): [True: 0, False: 0]
  ------------------
   53|      0|        }
   54|  11.7M|        else
   55|  11.7M|        {
   56|       |
   57|  11.7M|            do
   58|  32.6M|            {
   59|  32.6M|                *p++ = static_cast<char_type>(48 + value % 10);
   60|  32.6M|            }
   61|  32.6M|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (61:20): [True: 20.9M, False: 11.7M]
  |  Branch (61:37): [True: 20.9M, False: 0]
  ------------------
   62|  11.7M|        }
   63|  11.7M|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|  11.7M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 11.7M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
   64|       |
   65|  11.7M|        std::size_t count = (p - buf);
   66|  11.7M|        if (is_negative)
  ------------------
  |  Branch (66:13): [True: 0, False: 11.7M]
  ------------------
   67|      0|        {
   68|      0|            result.push_back('-');
   69|      0|            ++count;
   70|      0|        }
   71|  44.4M|        while (--p >= buf)
  ------------------
  |  Branch (71:16): [True: 32.6M, False: 11.7M]
  ------------------
   72|  32.6M|        {
   73|  32.6M|            result.push_back(*p);
   74|  32.6M|        }
   75|       |
   76|  11.7M|        return count;
   77|  11.7M|    }
_ZN8jsoncons6detail12from_integerIlNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   37|  8.18M|    {
   38|  8.18M|        using char_type = typename Result::value_type;
   39|       |
   40|  8.18M|        char_type buf[255];
   41|  8.18M|        char_type *p = buf;
   42|  8.18M|        const char_type* last = buf+255;
   43|       |
   44|  8.18M|        bool is_negative = value < 0;
   45|       |
   46|  8.18M|        if (value < 0)
  ------------------
  |  Branch (46:13): [True: 7.67M, False: 515k]
  ------------------
   47|  7.67M|        {
   48|  7.67M|            do
   49|  10.9M|            {
   50|  10.9M|                *p++ = static_cast<char_type>(48 - (value % 10));
   51|  10.9M|            }
   52|  10.9M|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (52:20): [True: 3.32M, False: 7.67M]
  |  Branch (52:37): [True: 3.32M, False: 0]
  ------------------
   53|  7.67M|        }
   54|   515k|        else
   55|   515k|        {
   56|       |
   57|   515k|            do
   58|  2.97M|            {
   59|  2.97M|                *p++ = static_cast<char_type>(48 + value % 10);
   60|  2.97M|            }
   61|  2.97M|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (61:20): [True: 2.46M, False: 515k]
  |  Branch (61:37): [True: 2.46M, False: 0]
  ------------------
   62|   515k|        }
   63|  8.18M|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|  8.18M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 8.18M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
   64|       |
   65|  8.18M|        std::size_t count = (p - buf);
   66|  8.18M|        if (is_negative)
  ------------------
  |  Branch (66:13): [True: 7.67M, False: 515k]
  ------------------
   67|  7.67M|        {
   68|  7.67M|            result.push_back('-');
   69|  7.67M|            ++count;
   70|  7.67M|        }
   71|  22.1M|        while (--p >= buf)
  ------------------
  |  Branch (71:16): [True: 13.9M, False: 8.18M]
  ------------------
   72|  13.9M|        {
   73|  13.9M|            result.push_back(*p);
   74|  13.9M|        }
   75|       |
   76|  8.18M|        return count;
   77|  8.18M|    }
_ZN8jsoncons6detail12write_doubleC2ENS_18float_chars_formatEi:
  472|  67.3M|        {
  473|  67.3M|    #if !defined(JSONCONS_NO_LOCALECONV)
  474|  67.3M|            struct lconv *lc = localeconv();
  475|  67.3M|            if (lc != nullptr && lc->decimal_point[0] != 0)
  ------------------
  |  Branch (475:17): [True: 67.3M, False: 0]
  |  Branch (475:34): [True: 67.3M, False: 0]
  ------------------
  476|  67.3M|            {
  477|  67.3M|                decimal_point_ = lc->decimal_point[0];
  478|  67.3M|            }
  479|  67.3M|    #endif
  480|  67.3M|        }
_ZN8jsoncons6detail12write_doubleclINS_11string_sinkINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEEmdRT_:
  487|  67.3M|        {
  488|  67.3M|            std::size_t count = 0;
  489|       |
  490|  67.3M|            char number_buffer[200];
  491|  67.3M|            int length = 0;
  492|       |
  493|  67.3M|            switch (float_format_)
  494|  67.3M|            {
  495|      0|            case float_chars_format::fixed:
  ------------------
  |  Branch (495:13): [True: 0, False: 67.3M]
  ------------------
  496|      0|                {
  497|      0|                    if (precision_ > 0)
  ------------------
  |  Branch (497:25): [True: 0, False: 0]
  ------------------
  498|      0|                    {
  499|      0|                        length = snprintf(number_buffer, sizeof(number_buffer), "%1.*f", precision_, val);
  500|      0|                        if (length < 0)
  ------------------
  |  Branch (500:29): [True: 0, False: 0]
  ------------------
  501|      0|                        {
  502|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  503|      0|                        }
  504|      0|                        dump_buffer(number_buffer, length, decimal_point_, result);
  505|      0|                    }
  506|      0|                    else
  507|      0|                    {
  508|      0|                        if (!dtoa_fixed(val, decimal_point_, result))
  ------------------
  |  Branch (508:29): [True: 0, False: 0]
  ------------------
  509|      0|                        {
  510|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  511|      0|                        }
  512|      0|                    }
  513|      0|                }
  514|      0|                break;
  515|      0|            case float_chars_format::scientific:
  ------------------
  |  Branch (515:13): [True: 0, False: 67.3M]
  ------------------
  516|      0|                {
  517|      0|                    if (precision_ > 0)
  ------------------
  |  Branch (517:25): [True: 0, False: 0]
  ------------------
  518|      0|                    {
  519|      0|                        length = snprintf(number_buffer, sizeof(number_buffer), "%1.*e", precision_, val);
  520|      0|                        if (length < 0)
  ------------------
  |  Branch (520:29): [True: 0, False: 0]
  ------------------
  521|      0|                        {
  522|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  523|      0|                        }
  524|      0|                        dump_buffer(number_buffer, length, decimal_point_, result);
  525|      0|                    }
  526|      0|                    else
  527|      0|                    {
  528|      0|                        if (!dtoa_scientific(val, decimal_point_, result))
  ------------------
  |  Branch (528:29): [True: 0, False: 0]
  ------------------
  529|      0|                        {
  530|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  531|      0|                        }
  532|      0|                    }
  533|      0|                }
  534|      0|                break;
  535|  67.3M|            case float_chars_format::general:
  ------------------
  |  Branch (535:13): [True: 67.3M, False: 0]
  ------------------
  536|  67.3M|                {
  537|  67.3M|                    if (precision_ > 0)
  ------------------
  |  Branch (537:25): [True: 0, False: 67.3M]
  ------------------
  538|      0|                    {
  539|      0|                        length = snprintf(number_buffer, sizeof(number_buffer), "%1.*g", precision_, val);
  540|      0|                        if (length < 0)
  ------------------
  |  Branch (540:29): [True: 0, False: 0]
  ------------------
  541|      0|                        {
  542|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  543|      0|                        }
  544|      0|                        dump_buffer(number_buffer, length, decimal_point_, result);
  545|      0|                    }
  546|  67.3M|                    else
  547|  67.3M|                    {
  548|  67.3M|                        if (!dtoa_general(val, decimal_point_, result))
  ------------------
  |  Branch (548:29): [True: 0, False: 67.3M]
  ------------------
  549|      0|                        {
  550|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  551|      0|                        }
  552|  67.3M|                    }             
  553|  67.3M|                    break;
  554|  67.3M|                }
  555|  67.3M|                default:
  ------------------
  |  Branch (555:17): [True: 0, False: 67.3M]
  ------------------
  556|      0|                    JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  557|      0|                    break;
  558|  67.3M|            }
  559|  67.3M|            return count;
  560|  67.3M|        }
_ZN8jsoncons6detail11dump_bufferINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEvPKcmcRT_:
  238|   412k|    {
  239|   412k|        const char *sbeg = buffer;
  240|   412k|        const char *send = sbeg + length;
  241|       |
  242|   412k|        if (sbeg != send)
  ------------------
  |  Branch (242:13): [True: 412k, False: 0]
  ------------------
  243|   412k|        {
  244|   412k|            bool needs_dot = true;
  245|  9.49M|            for (const char* q = sbeg; q < send; ++q)
  ------------------
  |  Branch (245:40): [True: 9.07M, False: 412k]
  ------------------
  246|  9.07M|            {
  247|  9.07M|                switch (*q)
  248|  9.07M|                {
  249|   202k|                case '-':
  ------------------
  |  Branch (249:17): [True: 202k, False: 8.87M]
  ------------------
  250|  2.15M|                case '0':
  ------------------
  |  Branch (250:17): [True: 1.95M, False: 7.12M]
  ------------------
  251|  2.79M|                case '1':
  ------------------
  |  Branch (251:17): [True: 638k, False: 8.43M]
  ------------------
  252|  3.25M|                case '2':
  ------------------
  |  Branch (252:17): [True: 461k, False: 8.61M]
  ------------------
  253|  3.87M|                case '3':
  ------------------
  |  Branch (253:17): [True: 614k, False: 8.46M]
  ------------------
  254|  4.85M|                case '4':
  ------------------
  |  Branch (254:17): [True: 976k, False: 8.10M]
  ------------------
  255|  5.74M|                case '5':
  ------------------
  |  Branch (255:17): [True: 893k, False: 8.18M]
  ------------------
  256|  6.65M|                case '6':
  ------------------
  |  Branch (256:17): [True: 907k, False: 8.17M]
  ------------------
  257|  7.46M|                case '7':
  ------------------
  |  Branch (257:17): [True: 817k, False: 8.25M]
  ------------------
  258|  7.99M|                case '8':
  ------------------
  |  Branch (258:17): [True: 525k, False: 8.55M]
  ------------------
  259|  8.54M|                case '9':
  ------------------
  |  Branch (259:17): [True: 546k, False: 8.53M]
  ------------------
  260|  8.54M|                case '+':
  ------------------
  |  Branch (260:17): [True: 530, False: 9.07M]
  ------------------
  261|  8.54M|                    result.push_back(*q);
  262|  8.54M|                    break;
  263|   120k|                case 'e':
  ------------------
  |  Branch (263:17): [True: 120k, False: 8.95M]
  ------------------
  264|   120k|                case 'E':
  ------------------
  |  Branch (264:17): [True: 0, False: 9.07M]
  ------------------
  265|   120k|                    result.push_back('e');
  266|   120k|                    needs_dot = false;
  267|   120k|                    break;
  268|   415k|                default:
  ------------------
  |  Branch (268:17): [True: 415k, False: 8.66M]
  ------------------
  269|   415k|                    if (*q == decimal_point)
  ------------------
  |  Branch (269:25): [True: 410k, False: 4.73k]
  ------------------
  270|   410k|                    {
  271|   410k|                        needs_dot = false;
  272|   410k|                        result.push_back('.');
  273|   410k|                    }
  274|   415k|                    break;
  275|  9.07M|                }
  276|  9.07M|            }
  277|   412k|            if (needs_dot)
  ------------------
  |  Branch (277:17): [True: 1.92k, False: 410k]
  ------------------
  278|  1.92k|            {
  279|  1.92k|                result.push_back('.');
  280|  1.92k|                result.push_back('0');
  281|  1.92k|            }
  282|   412k|        }
  283|   412k|    }
_ZN8jsoncons6detail15prettify_stringINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEvPKcmiiiRT_:
  166|  62.9M|    {
  167|  62.9M|        int nb_digits = (int)length;
  168|  62.9M|        int offset;
  169|       |        /* v = buffer * 10^k
  170|       |           kk is such that 10^(kk-1) <= v < 10^kk
  171|       |           this way kk gives the position of the decimal point.
  172|       |        */
  173|  62.9M|        int kk = nb_digits + k;
  174|       |
  175|  62.9M|        if (nb_digits <= kk && kk <= max_exp)
  ------------------
  |  Branch (175:13): [True: 14.9M, False: 47.9M]
  |  Branch (175:32): [True: 9.64M, False: 5.28M]
  ------------------
  176|  9.64M|        {
  177|       |            /* the first digits are already in. Add some 0s and call it a day. */
  178|       |            /* the max_exp is a personal choice. Only 16 digits could possibly be relevant.
  179|       |             * Basically we want to print 12340000000 rather than 1234.0e7 or 1.234e10 */
  180|  41.0M|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (180:29): [True: 31.4M, False: 9.64M]
  ------------------
  181|  31.4M|            {
  182|  31.4M|                result.push_back(buffer[i]);
  183|  31.4M|            }
  184|  11.0M|            for (int i = nb_digits; i < kk; ++i)
  ------------------
  |  Branch (184:37): [True: 1.43M, False: 9.64M]
  ------------------
  185|  1.43M|            {
  186|  1.43M|                result.push_back('0');
  187|  1.43M|            }
  188|  9.64M|            result.push_back('.');
  189|  9.64M|            result.push_back('0');
  190|  9.64M|        } 
  191|  53.2M|        else if (0 < kk && kk <= max_exp)
  ------------------
  |  Branch (191:18): [True: 21.7M, False: 31.5M]
  |  Branch (191:28): [True: 16.4M, False: 5.28M]
  ------------------
  192|  16.4M|        {
  193|       |            /* comma number. Just insert a '.' at the correct location. */
  194|  54.8M|            for (int i = 0; i < kk; ++i)
  ------------------
  |  Branch (194:29): [True: 38.4M, False: 16.4M]
  ------------------
  195|  38.4M|            {
  196|  38.4M|                result.push_back(buffer[i]);
  197|  38.4M|            }
  198|  16.4M|            result.push_back('.');
  199|  67.0M|            for (int i = kk; i < nb_digits; ++i)
  ------------------
  |  Branch (199:30): [True: 50.5M, False: 16.4M]
  ------------------
  200|  50.5M|            {
  201|  50.5M|                result.push_back(buffer[i]);
  202|  50.5M|            }
  203|  16.4M|        } 
  204|  36.7M|        else if (min_exp < kk && kk <= 0)
  ------------------
  |  Branch (204:18): [True: 27.9M, False: 8.81M]
  |  Branch (204:34): [True: 22.6M, False: 5.28M]
  ------------------
  205|  22.6M|        {
  206|  22.6M|            offset = 2 - kk;
  207|       |
  208|  22.6M|            result.push_back('0');
  209|  22.6M|            result.push_back('.');
  210|  69.2M|            for (int i = 2; i < offset; ++i) 
  ------------------
  |  Branch (210:29): [True: 46.5M, False: 22.6M]
  ------------------
  211|  46.5M|                result.push_back('0');
  212|   344M|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (212:29): [True: 321M, False: 22.6M]
  ------------------
  213|   321M|            {
  214|   321M|                result.push_back(buffer[i]);
  215|   321M|            }
  216|  22.6M|        } 
  217|  14.1M|        else if (nb_digits == 1)
  ------------------
  |  Branch (217:18): [True: 784, False: 14.1M]
  ------------------
  218|    784|        {
  219|    784|            result.push_back(buffer[0]);
  220|    784|            result.push_back('e');
  221|    784|            fill_exponent(kk - 1, result);
  222|    784|        } 
  223|  14.1M|        else
  224|  14.1M|        {
  225|  14.1M|            result.push_back(buffer[0]);
  226|  14.1M|            result.push_back('.');
  227|   219M|            for (int i = 1; i < nb_digits; ++i)
  ------------------
  |  Branch (227:29): [True: 205M, False: 14.1M]
  ------------------
  228|   205M|            {
  229|   205M|                result.push_back(buffer[i]);
  230|   205M|            }
  231|  14.1M|            result.push_back('e');
  232|  14.1M|            fill_exponent(kk - 1, result);
  233|  14.1M|        }
  234|  62.9M|    }
_ZN8jsoncons6detail13fill_exponentINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEviRT_:
  131|  14.1M|    {
  132|  14.1M|        if (K < 0)
  ------------------
  |  Branch (132:13): [True: 8.81M, False: 5.28M]
  ------------------
  133|  8.81M|        {
  134|  8.81M|            result.push_back('-');
  135|  8.81M|            K = -K;
  136|  8.81M|        }
  137|  5.28M|        else
  138|  5.28M|        {
  139|  5.28M|            result.push_back('+'); // compatibility with sprintf
  140|  5.28M|        }
  141|       |
  142|  14.1M|        if (K < 10)
  ------------------
  |  Branch (142:13): [True: 8.74M, False: 5.35M]
  ------------------
  143|  8.74M|        {
  144|  8.74M|            result.push_back('0'); // compatibility with sprintf
  145|  8.74M|            result.push_back((char)('0' + K));
  146|  8.74M|        }
  147|  5.35M|        else if (K < 100)
  ------------------
  |  Branch (147:18): [True: 93.4k, False: 5.26M]
  ------------------
  148|  93.4k|        {
  149|  93.4k|            result.push_back((char)('0' + K / 10)); K %= 10;
  150|  93.4k|            result.push_back((char)('0' + K));
  151|  93.4k|        }
  152|  5.26M|        else if (K < 1000)
  ------------------
  |  Branch (152:18): [True: 5.26M, False: 0]
  ------------------
  153|  5.26M|        {
  154|  5.26M|            result.push_back((char)('0' + K / 100)); K %= 100;
  155|  5.26M|            result.push_back((char)('0' + K / 10)); K %= 10;
  156|  5.26M|            result.push_back((char)('0' + K));
  157|  5.26M|        }
  158|      0|        else
  159|      0|        {
  160|      0|            jsoncons::detail::from_integer(K, result);
  161|      0|        }
  162|  14.1M|    }
_ZN8jsoncons6detail12dtoa_generalINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEbdcRT_:
  458|  67.3M|    {
  459|  67.3M|        return dtoa_general(v, decimal_point, result, std::integral_constant<bool, std::numeric_limits<double>::is_iec559>());
  460|  67.3M|    }
_ZN8jsoncons6detail12dtoa_generalINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEbdcRT_NS3_17integral_constantIbLb1EEE:
  353|  67.3M|    {
  354|  67.3M|        if (v == 0)
  ------------------
  |  Branch (354:13): [True: 4.05M, False: 63.3M]
  ------------------
  355|  4.05M|        {
  356|  4.05M|            result.push_back('0');
  357|  4.05M|            result.push_back('.');
  358|  4.05M|            result.push_back('0');
  359|  4.05M|            return true;
  360|  4.05M|        }
  361|       |
  362|  63.3M|        int length = 0;
  363|  63.3M|        int k;
  364|       |
  365|  63.3M|        char buffer[100];
  366|       |
  367|  63.3M|        double u = std::signbit(v) ? -v : v;
  ------------------
  |  Branch (367:20): [True: 33.4M, False: 29.8M]
  ------------------
  368|  63.3M|        if (jsoncons::detail::grisu3(u, buffer, &length, &k))
  ------------------
  |  Branch (368:13): [True: 62.9M, False: 412k]
  ------------------
  369|  62.9M|        {
  370|  62.9M|            if (std::signbit(v))
  ------------------
  |  Branch (370:17): [True: 33.3M, False: 29.5M]
  ------------------
  371|  33.3M|            {
  372|  33.3M|                result.push_back('-');
  373|  33.3M|            }
  374|       |            // min exp: -4 is consistent with sprintf
  375|       |            // max exp: std::numeric_limits<double>::max_digits10
  376|  62.9M|            jsoncons::detail::prettify_string(buffer, length, k, -4, std::numeric_limits<double>::max_digits10, result);
  377|  62.9M|            return true;
  378|  62.9M|        }
  379|   412k|        else
  380|   412k|        {
  381|   412k|            return dtoa_general(v, decimal_point, result, std::false_type());
  382|   412k|        }
  383|  63.3M|    }
_ZN8jsoncons6detail12dtoa_generalINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEbdcRT_NS3_17integral_constantIbLb0EEE:
  320|   412k|    {
  321|   412k|        if (val == 0)
  ------------------
  |  Branch (321:13): [True: 0, False: 412k]
  ------------------
  322|      0|        {
  323|      0|            result.push_back('0');
  324|      0|            result.push_back('.');
  325|      0|            result.push_back('0');
  326|      0|            return true;
  327|      0|        }
  328|       |
  329|   412k|        jsoncons::detail::chars_to to_double_;
  330|       |
  331|   412k|        char buffer[100];
  332|   412k|        int precision = std::numeric_limits<double>::digits10;
  333|   412k|        int length = snprintf(buffer, sizeof(buffer), "%1.*g", precision, val);
  334|   412k|        if (length < 0)
  ------------------
  |  Branch (334:13): [True: 0, False: 412k]
  ------------------
  335|      0|        {
  336|      0|            return false;
  337|      0|        }
  338|   412k|        if (to_double_(buffer, sizeof(buffer)) != val)
  ------------------
  |  Branch (338:13): [True: 412k, False: 298]
  ------------------
  339|   412k|        {
  340|   412k|            const int precision2 = std::numeric_limits<double>::max_digits10;
  341|   412k|            length = snprintf(buffer, sizeof(buffer), "%1.*g", precision2, val);
  342|   412k|            if (length < 0)
  ------------------
  |  Branch (342:17): [True: 0, False: 412k]
  ------------------
  343|      0|            {
  344|      0|                return false;
  345|      0|            }
  346|   412k|        }
  347|   412k|        dump_buffer(buffer, length, decimal_point, result);
  348|   412k|        return true;
  349|   412k|    }
_ZN8jsoncons6detail15prettify_stringINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEvPKcmiiiRT_:
  166|   354k|    {
  167|   354k|        int nb_digits = (int)length;
  168|   354k|        int offset;
  169|       |        /* v = buffer * 10^k
  170|       |           kk is such that 10^(kk-1) <= v < 10^kk
  171|       |           this way kk gives the position of the decimal point.
  172|       |        */
  173|   354k|        int kk = nb_digits + k;
  174|       |
  175|   354k|        if (nb_digits <= kk && kk <= max_exp)
  ------------------
  |  Branch (175:13): [True: 13.5k, False: 341k]
  |  Branch (175:32): [True: 9.88k, False: 3.63k]
  ------------------
  176|  9.88k|        {
  177|       |            /* the first digits are already in. Add some 0s and call it a day. */
  178|       |            /* the max_exp is a personal choice. Only 16 digits could possibly be relevant.
  179|       |             * Basically we want to print 12340000000 rather than 1234.0e7 or 1.234e10 */
  180|  50.4k|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (180:29): [True: 40.5k, False: 9.88k]
  ------------------
  181|  40.5k|            {
  182|  40.5k|                result.push_back(buffer[i]);
  183|  40.5k|            }
  184|   143k|            for (int i = nb_digits; i < kk; ++i)
  ------------------
  |  Branch (184:37): [True: 133k, False: 9.88k]
  ------------------
  185|   133k|            {
  186|   133k|                result.push_back('0');
  187|   133k|            }
  188|  9.88k|            result.push_back('.');
  189|  9.88k|            result.push_back('0');
  190|  9.88k|        } 
  191|   344k|        else if (0 < kk && kk <= max_exp)
  ------------------
  |  Branch (191:18): [True: 341k, False: 3.40k]
  |  Branch (191:28): [True: 337k, False: 4.01k]
  ------------------
  192|   337k|        {
  193|       |            /* comma number. Just insert a '.' at the correct location. */
  194|   689k|            for (int i = 0; i < kk; ++i)
  ------------------
  |  Branch (194:29): [True: 351k, False: 337k]
  ------------------
  195|   351k|            {
  196|   351k|                result.push_back(buffer[i]);
  197|   351k|            }
  198|   337k|            result.push_back('.');
  199|   679k|            for (int i = kk; i < nb_digits; ++i)
  ------------------
  |  Branch (199:30): [True: 342k, False: 337k]
  ------------------
  200|   342k|            {
  201|   342k|                result.push_back(buffer[i]);
  202|   342k|            }
  203|   337k|        } 
  204|  7.41k|        else if (min_exp < kk && kk <= 0)
  ------------------
  |  Branch (204:18): [True: 5.34k, False: 2.07k]
  |  Branch (204:34): [True: 1.32k, False: 4.01k]
  ------------------
  205|  1.32k|        {
  206|  1.32k|            offset = 2 - kk;
  207|       |
  208|  1.32k|            result.push_back('0');
  209|  1.32k|            result.push_back('.');
  210|  3.11k|            for (int i = 2; i < offset; ++i) 
  ------------------
  |  Branch (210:29): [True: 1.78k, False: 1.32k]
  ------------------
  211|  1.78k|                result.push_back('0');
  212|  3.85k|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (212:29): [True: 2.52k, False: 1.32k]
  ------------------
  213|  2.52k|            {
  214|  2.52k|                result.push_back(buffer[i]);
  215|  2.52k|            }
  216|  1.32k|        } 
  217|  6.08k|        else if (nb_digits == 1)
  ------------------
  |  Branch (217:18): [True: 2.32k, False: 3.76k]
  ------------------
  218|  2.32k|        {
  219|  2.32k|            result.push_back(buffer[0]);
  220|  2.32k|            result.push_back('e');
  221|  2.32k|            fill_exponent(kk - 1, result);
  222|  2.32k|        } 
  223|  3.76k|        else
  224|  3.76k|        {
  225|  3.76k|            result.push_back(buffer[0]);
  226|  3.76k|            result.push_back('.');
  227|   260k|            for (int i = 1; i < nb_digits; ++i)
  ------------------
  |  Branch (227:29): [True: 256k, False: 3.76k]
  ------------------
  228|   256k|            {
  229|   256k|                result.push_back(buffer[i]);
  230|   256k|            }
  231|  3.76k|            result.push_back('e');
  232|  3.76k|            fill_exponent(kk - 1, result);
  233|  3.76k|        }
  234|   354k|    }
_ZN8jsoncons6detail13fill_exponentINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEviRT_:
  131|  6.08k|    {
  132|  6.08k|        if (K < 0)
  ------------------
  |  Branch (132:13): [True: 2.07k, False: 4.01k]
  ------------------
  133|  2.07k|        {
  134|  2.07k|            result.push_back('-');
  135|  2.07k|            K = -K;
  136|  2.07k|        }
  137|  4.01k|        else
  138|  4.01k|        {
  139|  4.01k|            result.push_back('+'); // compatibility with sprintf
  140|  4.01k|        }
  141|       |
  142|  6.08k|        if (K < 10)
  ------------------
  |  Branch (142:13): [True: 465, False: 5.62k]
  ------------------
  143|    465|        {
  144|    465|            result.push_back('0'); // compatibility with sprintf
  145|    465|            result.push_back((char)('0' + K));
  146|    465|        }
  147|  5.62k|        else if (K < 100)
  ------------------
  |  Branch (147:18): [True: 4.41k, False: 1.20k]
  ------------------
  148|  4.41k|        {
  149|  4.41k|            result.push_back((char)('0' + K / 10)); K %= 10;
  150|  4.41k|            result.push_back((char)('0' + K));
  151|  4.41k|        }
  152|  1.20k|        else if (K < 1000)
  ------------------
  |  Branch (152:18): [True: 217, False: 986]
  ------------------
  153|    217|        {
  154|    217|            result.push_back((char)('0' + K / 100)); K %= 100;
  155|    217|            result.push_back((char)('0' + K / 10)); K %= 10;
  156|    217|            result.push_back((char)('0' + K));
  157|    217|        }
  158|    986|        else
  159|    986|        {
  160|    986|            jsoncons::detail::from_integer(K, result);
  161|    986|        }
  162|  6.08k|    }
_ZN8jsoncons6detail12from_integerIiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   37|    986|    {
   38|    986|        using char_type = typename Result::value_type;
   39|       |
   40|    986|        char_type buf[255];
   41|    986|        char_type *p = buf;
   42|    986|        const char_type* last = buf+255;
   43|       |
   44|    986|        bool is_negative = value < 0;
   45|       |
   46|    986|        if (value < 0)
  ------------------
  |  Branch (46:13): [True: 0, False: 986]
  ------------------
   47|      0|        {
   48|      0|            do
   49|      0|            {
   50|      0|                *p++ = static_cast<char_type>(48 - (value % 10));
   51|      0|            }
   52|      0|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (52:20): [True: 0, False: 0]
  |  Branch (52:37): [True: 0, False: 0]
  ------------------
   53|      0|        }
   54|    986|        else
   55|    986|        {
   56|       |
   57|    986|            do
   58|  7.34k|            {
   59|  7.34k|                *p++ = static_cast<char_type>(48 + value % 10);
   60|  7.34k|            }
   61|  7.34k|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (61:20): [True: 6.36k, False: 986]
  |  Branch (61:37): [True: 6.36k, False: 0]
  ------------------
   62|    986|        }
   63|    986|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|    986|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 986]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
   64|       |
   65|    986|        std::size_t count = (p - buf);
   66|    986|        if (is_negative)
  ------------------
  |  Branch (66:13): [True: 0, False: 986]
  ------------------
   67|      0|        {
   68|      0|            result.push_back('-');
   69|      0|            ++count;
   70|      0|        }
   71|  8.33k|        while (--p >= buf)
  ------------------
  |  Branch (71:16): [True: 7.34k, False: 986]
  ------------------
   72|  7.34k|        {
   73|  7.34k|            result.push_back(*p);
   74|  7.34k|        }
   75|       |
   76|    986|        return count;
   77|    986|    }
_ZN8jsoncons6detail21integer_to_string_hexImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   84|   165k|    {
   85|   165k|        using char_type = typename Result::value_type;
   86|       |
   87|   165k|        char_type buf[255];
   88|   165k|        char_type *p = buf;
   89|   165k|        const char_type* last = buf+255;
   90|       |
   91|   165k|        bool is_negative = value < 0;
   92|       |
   93|   165k|        if (value < 0)
  ------------------
  |  Branch (93:13): [True: 0, False: 165k]
  ------------------
   94|      0|        {
   95|      0|            do
   96|      0|            {
   97|      0|                *p++ = to_hex_character(0-(value % 16));
   98|      0|            }
   99|      0|            while ((value /= 16) && (p < last));
  ------------------
  |  Branch (99:20): [True: 0, False: 0]
  |  Branch (99:37): [True: 0, False: 0]
  ------------------
  100|      0|        }
  101|   165k|        else
  102|   165k|        {
  103|       |
  104|   165k|            do
  105|   194k|            {
  106|   194k|                *p++ = to_hex_character(value % 16);
  107|   194k|            }
  108|   194k|            while ((value /= 16) && (p < last));
  ------------------
  |  Branch (108:20): [True: 29.3k, False: 165k]
  |  Branch (108:37): [True: 29.3k, False: 0]
  ------------------
  109|   165k|        }
  110|   165k|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|   165k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 165k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  111|       |
  112|   165k|        std::size_t count = (p - buf);
  113|   165k|        if (is_negative)
  ------------------
  |  Branch (113:13): [True: 0, False: 165k]
  ------------------
  114|      0|        {
  115|      0|            result.push_back('-');
  116|      0|            ++count;
  117|      0|        }
  118|   359k|        while (--p >= buf)
  ------------------
  |  Branch (118:16): [True: 194k, False: 165k]
  ------------------
  119|   194k|        {
  120|   194k|            result.push_back(*p);
  121|   194k|        }
  122|       |
  123|   165k|        return count;
  124|   165k|    }
_ZN8jsoncons6detail16to_hex_characterEh:
   28|   194k|    {
   29|   194k|        return (char)((c < 10) ? ('0' + c) : ('A' - 10 + c));
  ------------------
  |  Branch (29:23): [True: 187k, False: 7.56k]
  ------------------
   30|   194k|    }

_ZN8jsoncons16extension_traits16to_plain_pointerINS_6detail11heap_stringIcNS_9null_typeENSt3__19allocatorIcEEEEEEPT_SA_:
  238|  20.7k|    {       
  239|  20.7k|        return (ptr);
  240|  20.7k|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerINS_6detail11heap_stringIhmNSt3__19allocatorIcEEEEEEPT_S9_:
  238|  5.62M|    {       
  239|  5.62M|        return (ptr);
  240|  5.62M|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerIcEEPT_S3_:
  238|  5.64M|    {       
  239|  5.64M|        return (ptr);
  240|  5.64M|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerINS_18sorted_json_objectINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES8_EENS3_6vectorEEEEEPT_SG_:
  238|  3.63M|    {       
  239|  3.63M|        return (ptr);
  240|  3.63M|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerINS_10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS5_6vectorEEEEEPT_SC_:
  238|  5.85M|    {       
  239|  5.85M|        return (ptr);
  240|  5.85M|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerImEEPT_S3_:
  238|  8.42M|    {       
  239|  8.42M|        return (ptr);
  240|  8.42M|    }  

_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEEC2ERNS_18basic_json_visitorIcEERKS3_:
  832|  10.8k|        {
  833|  10.8k|            level_stack_.emplace_back(target_t::destination,container_t::root); // root
  834|  10.8k|        }
_ZN8jsoncons24basic_item_event_visitorIcEC2Ev:
   33|  10.8k|        basic_item_event_visitor() = default;
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKhLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  533|  4.83k|        {
  534|  4.83k|            bool more = begin_array(s.size(), tag, context, ec);
  535|  4.33M|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (535:38): [True: 4.33M, False: 0]
  |  Branch (535:46): [True: 4.33M, False: 4.83k]
  ------------------
  536|  4.33M|            {
  537|  4.33M|                more = uint64_value(*p, semantic_tag::none, context, ec);
  538|  4.33M|            }
  539|  4.83k|            if (more)
  ------------------
  |  Branch (539:17): [True: 4.83k, False: 0]
  ------------------
  540|  4.83k|            {
  541|  4.83k|                more = end_array(context, ec);
  542|  4.83k|            }
  543|  4.83k|            return more;
  544|  4.83k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  271|  1.86M|        {
  272|  1.86M|            return visit_begin_array(length, tag, context, ec);
  273|  1.86M|        }
_ZN8jsoncons24basic_item_event_visitorIcE12uint64_valueEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  332|  18.8M|        {
  333|  18.8M|            return visit_uint64(value, tag, context, ec);
  334|  18.8M|        }
_ZN8jsoncons24basic_item_event_visitorIcE9end_arrayERKNS_11ser_contextERNSt3__110error_codeE:
  276|  2.24M|        {
  277|  2.24M|            return visit_end_array(context, ec);
  278|  2.24M|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  550|  2.06k|        {
  551|  2.06k|            bool more = begin_array(s.size(), tag, context, ec);
  552|  19.5k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (552:38): [True: 19.5k, False: 0]
  |  Branch (552:46): [True: 17.4k, False: 2.06k]
  ------------------
  553|  17.4k|            {
  554|  17.4k|                more = uint64_value(*p, semantic_tag::none, context, ec);
  555|  17.4k|            }
  556|  2.06k|            if (more)
  ------------------
  |  Branch (556:17): [True: 2.06k, False: 0]
  ------------------
  557|  2.06k|            {
  558|  2.06k|                more = end_array(context, ec);
  559|  2.06k|            }
  560|  2.06k|            return more;
  561|  2.06k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKjLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  567|  74.5k|        {
  568|  74.5k|            bool more = begin_array(s.size(), tag, context, ec);
  569|  1.86M|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (569:38): [True: 1.86M, False: 0]
  |  Branch (569:46): [True: 1.79M, False: 74.5k]
  ------------------
  570|  1.79M|            {
  571|  1.79M|                more = uint64_value(*p, semantic_tag::none, context, ec);
  572|  1.79M|            }
  573|  74.5k|            if (more)
  ------------------
  |  Branch (573:17): [True: 74.5k, False: 0]
  ------------------
  574|  74.5k|            {
  575|  74.5k|                more = end_array(context, ec);
  576|  74.5k|            }
  577|  74.5k|            return more;
  578|  74.5k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  584|  3.24k|        {
  585|  3.24k|            bool more = begin_array(s.size(), tag, context, ec);
  586|   160k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (586:38): [True: 160k, False: 0]
  |  Branch (586:46): [True: 156k, False: 3.24k]
  ------------------
  587|   156k|            {
  588|   156k|                more = uint64_value(*p,semantic_tag::none,context, ec);
  589|   156k|            }
  590|  3.24k|            if (more)
  ------------------
  |  Branch (590:17): [True: 3.24k, False: 0]
  ------------------
  591|  3.24k|            {
  592|  3.24k|                more = end_array(context, ec);
  593|  3.24k|            }
  594|  3.24k|            return more;
  595|  3.24k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKaLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  601|    916|        {
  602|    916|            bool more = begin_array(s.size(), tag,context, ec);
  603|  80.4k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (603:38): [True: 80.4k, False: 0]
  |  Branch (603:46): [True: 79.5k, False: 916]
  ------------------
  604|  79.5k|            {
  605|  79.5k|                more = int64_value(*p,semantic_tag::none,context, ec);
  606|  79.5k|            }
  607|    916|            if (more)
  ------------------
  |  Branch (607:17): [True: 916, False: 0]
  ------------------
  608|    916|            {
  609|    916|                more = end_array(context, ec);
  610|    916|            }
  611|    916|            return more;
  612|    916|        }
_ZN8jsoncons24basic_item_event_visitorIcE11int64_valueElNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  340|  19.9M|        {
  341|  19.9M|            return visit_int64(value, tag, context, ec);
  342|  19.9M|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKsLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  618|  2.61k|        {
  619|  2.61k|            bool more = begin_array(s.size(), tag,context, ec);
  620|   521k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (620:38): [True: 521k, False: 0]
  |  Branch (620:46): [True: 519k, False: 2.61k]
  ------------------
  621|   519k|            {
  622|   519k|                more = int64_value(*p,semantic_tag::none,context, ec);
  623|   519k|            }
  624|  2.61k|            if (more)
  ------------------
  |  Branch (624:17): [True: 2.61k, False: 0]
  ------------------
  625|  2.61k|            {
  626|  2.61k|                more = end_array(context, ec);
  627|  2.61k|            }
  628|  2.61k|            return more;
  629|  2.61k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKiLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  635|  8.28k|        {
  636|  8.28k|            bool more = begin_array(s.size(), tag,context, ec);
  637|   432k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (637:38): [True: 432k, False: 0]
  |  Branch (637:46): [True: 424k, False: 8.28k]
  ------------------
  638|   424k|            {
  639|   424k|                more = int64_value(*p,semantic_tag::none,context, ec);
  640|   424k|            }
  641|  8.28k|            if (more)
  ------------------
  |  Branch (641:17): [True: 8.28k, False: 0]
  ------------------
  642|  8.28k|            {
  643|  8.28k|                more = end_array(context, ec);
  644|  8.28k|            }
  645|  8.28k|            return more;
  646|  8.28k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKlLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  652|  12.8k|        {
  653|  12.8k|            bool more = begin_array(s.size(), tag,context, ec);
  654|   168k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (654:38): [True: 168k, False: 0]
  |  Branch (654:46): [True: 155k, False: 12.8k]
  ------------------
  655|   155k|            {
  656|   155k|                more = int64_value(*p,semantic_tag::none,context, ec);
  657|   155k|            }
  658|  12.8k|            if (more)
  ------------------
  |  Branch (658:17): [True: 12.8k, False: 0]
  ------------------
  659|  12.8k|            {
  660|  12.8k|                more = end_array(context, ec);
  661|  12.8k|            }
  662|  12.8k|            return more;
  663|  12.8k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  670|  41.0k|        {
  671|  41.0k|            bool more = begin_array(s.size(), tag, context, ec);
  672|  68.5M|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (672:38): [True: 68.5M, False: 0]
  |  Branch (672:46): [True: 68.5M, False: 41.0k]
  ------------------
  673|  68.5M|            {
  674|  68.5M|                more = half_value(*p, semantic_tag::none, context, ec);
  675|  68.5M|            }
  676|  41.0k|            if (more)
  ------------------
  |  Branch (676:17): [True: 41.0k, False: 0]
  ------------------
  677|  41.0k|            {
  678|  41.0k|                more = end_array(context, ec);
  679|  41.0k|            }
  680|  41.0k|            return more;
  681|  41.0k|        }
_ZN8jsoncons24basic_item_event_visitorIcE10half_valueEtNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  348|  68.6M|        {
  349|  68.6M|            return visit_half(value, tag, context, ec);
  350|  68.6M|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKfLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  687|  12.2k|        {
  688|  12.2k|            bool more = begin_array(s.size(), tag,context, ec);
  689|   125k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (689:38): [True: 125k, False: 0]
  |  Branch (689:46): [True: 112k, False: 12.2k]
  ------------------
  690|   112k|            {
  691|   112k|                more = double_value(*p,semantic_tag::none,context, ec);
  692|   112k|            }
  693|  12.2k|            if (more)
  ------------------
  |  Branch (693:17): [True: 12.2k, False: 0]
  ------------------
  694|  12.2k|            {
  695|  12.2k|                more = end_array(context, ec);
  696|  12.2k|            }
  697|  12.2k|            return more;
  698|  12.2k|        }
_ZN8jsoncons24basic_item_event_visitorIcE12double_valueEdNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  356|   231k|        {
  357|   231k|            return visit_double(value, tag, context, ec);
  358|   231k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKdLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  704|  3.95k|        {
  705|  3.95k|            bool more = begin_array(s.size(), tag,context, ec);
  706|  71.6k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (706:38): [True: 71.6k, False: 0]
  |  Branch (706:46): [True: 67.6k, False: 3.95k]
  ------------------
  707|  67.6k|            {
  708|  67.6k|                more = double_value(*p,semantic_tag::none,context, ec);
  709|  67.6k|            }
  710|  3.95k|            if (more)
  ------------------
  |  Branch (710:17): [True: 3.95k, False: 0]
  ------------------
  711|  3.95k|            {
  712|  3.95k|                more = end_array(context, ec);
  713|  3.95k|            }
  714|  3.95k|            return more;
  715|  3.95k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5levelC2ENS4_8target_tENS4_11container_tE:
  770|  12.6M|            {
  771|  12.6M|            }
_ZN8jsoncons24basic_item_event_visitorIcED2Ev:
   35|  10.8k|        virtual ~basic_item_event_visitor() noexcept = default;
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE11visit_flushEv:
  856|    205|        {
  857|    205|            destination_->flush();
  858|    205|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE18visit_begin_objectENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  861|   401k|        {
  862|   401k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (862:17): [True: 197k, False: 203k]
  ------------------
  863|   197k|            {
  864|   197k|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (864:21): [True: 195k, False: 1.42k]
  |  Branch (864:73): [True: 191k, False: 4.10k]
  ------------------
  865|   191k|                {
  866|   191k|                    key_buffer_.push_back(',');
  867|   191k|                }
  868|   197k|                level_stack_.emplace_back(target_t::buffer, container_t::object);
  869|   197k|                key_buffer_.push_back('{');
  870|   197k|                return true;
  871|   197k|            }
  872|   203k|            else
  873|   203k|            {
  874|   203k|                switch (level_stack_.back().target())
  875|   203k|                {
  876|   197k|                    case target_t::buffer:
  ------------------
  |  Branch (876:21): [True: 197k, False: 6.07k]
  ------------------
  877|   197k|                        level_stack_.emplace_back(target_t::buffer, container_t::object);
  878|   197k|                        key_buffer_.push_back('{');
  879|   197k|                        return true;
  880|  6.07k|                    default:
  ------------------
  |  Branch (880:21): [True: 6.07k, False: 197k]
  ------------------
  881|  6.07k|                        level_stack_.emplace_back(target_t::destination, container_t::object);
  882|  6.07k|                        return destination_->begin_object(tag, context, ec);
  883|   203k|                }
  884|   203k|            }
  885|   401k|        }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level6is_keyEv:
  786|   409M|            {
  787|   409M|                return even_odd_ == 0;
  788|   409M|            }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level6targetEv:
  796|   273M|            {
  797|   273M|                return state_;
  798|   273M|            }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level5countEv:
  801|  92.4M|            {
  802|  92.4M|                return count_;
  803|  92.4M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  888|  7.70M|        {
  889|  7.70M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (889:17): [True: 2.80M, False: 4.89M]
  ------------------
  890|  2.80M|            {
  891|  2.80M|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (891:21): [True: 2.69M, False: 115k]
  |  Branch (891:73): [True: 2.66M, False: 23.6k]
  ------------------
  892|  2.66M|                {
  893|  2.66M|                    key_buffer_.push_back(',');
  894|  2.66M|                }
  895|  2.80M|                level_stack_.emplace_back(target_t::buffer, container_t::object);
  896|  2.80M|                key_buffer_.push_back('{');
  897|  2.80M|                return true;
  898|  2.80M|            }
  899|  4.89M|            else
  900|  4.89M|            {
  901|  4.89M|                switch (level_stack_.back().target())
  902|  4.89M|                {
  903|  3.08M|                    case target_t::buffer:
  ------------------
  |  Branch (903:21): [True: 3.08M, False: 1.80M]
  ------------------
  904|  3.08M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (904:29): [True: 407k, False: 2.67M]
  |  Branch (904:65): [True: 403k, False: 3.58k]
  ------------------
  905|   403k|                        {
  906|   403k|                            key_buffer_.push_back(',');
  907|   403k|                        }
  908|  3.08M|                        level_stack_.emplace_back(target_t::buffer, container_t::object);
  909|  3.08M|                        key_buffer_.push_back('{');
  910|  3.08M|                        return true;
  911|  1.80M|                    default:
  ------------------
  |  Branch (911:21): [True: 1.80M, False: 3.08M]
  ------------------
  912|  1.80M|                        level_stack_.emplace_back(target_t::destination, container_t::object);
  913|  1.80M|                        return destination_->begin_object(length, tag, context, ec);
  914|  4.89M|                }
  915|  4.89M|            }
  916|  7.70M|        }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level9is_objectEv:
  791|   230M|            {
  792|   230M|                return type_ == container_t::object;
  793|   230M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE16visit_end_objectERKNS_11ser_contextERNS1_10error_codeE:
  919|  8.07M|        {
  920|  8.07M|            bool retval = true;
  921|  8.07M|            switch (level_stack_.back().target())
  922|  8.07M|            {
  923|  6.26M|                case target_t::buffer:
  ------------------
  |  Branch (923:17): [True: 6.26M, False: 1.80M]
  ------------------
  924|  6.26M|                    key_buffer_.push_back('}');
  925|  6.26M|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  6.26M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 6.26M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  926|  6.26M|                    level_stack_.pop_back();
  927|       |                    
  928|  6.26M|                    if (level_stack_.back().target() == target_t::destination)
  ------------------
  |  Branch (928:25): [True: 115k, False: 6.14M]
  ------------------
  929|   115k|                    {
  930|   115k|                        retval = destination_->key(key_buffer_,context, ec);
  931|   115k|                        key_buffer_.clear();
  932|   115k|                    }
  933|  6.14M|                    else if (level_stack_.back().is_key())
  ------------------
  |  Branch (933:30): [True: 2.87M, False: 3.27M]
  ------------------
  934|  2.87M|                    {
  935|  2.87M|                        key_buffer_.push_back(':');
  936|  2.87M|                    }
  937|  6.26M|                    level_stack_.back().advance();
  938|  6.26M|                    break;
  939|  1.80M|                default:
  ------------------
  |  Branch (939:17): [True: 1.80M, False: 6.26M]
  ------------------
  940|  1.80M|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  1.80M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 1.80M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  941|  1.80M|                    level_stack_.pop_back();
  942|  1.80M|                    level_stack_.back().advance();
  943|  1.80M|                    retval = destination_->end_object(context, ec);
  944|  1.80M|                    break;
  945|  8.07M|            }
  946|  8.07M|            return retval;
  947|  8.07M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level7advanceEv:
  774|   138M|            {
  775|   138M|                if (!is_key())
  ------------------
  |  Branch (775:21): [True: 125M, False: 12.5M]
  ------------------
  776|   125M|                {
  777|   125M|                    ++count_;
  778|   125M|                }
  779|   138M|                if (is_object())
  ------------------
  |  Branch (779:21): [True: 25.0M, False: 113M]
  ------------------
  780|  25.0M|                {
  781|  25.0M|                    even_odd_ = !even_odd_;
  782|  25.0M|                }
  783|   138M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_begin_arrayENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  950|   414k|        {
  951|   414k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (951:17): [True: 56.6k, False: 358k]
  ------------------
  952|  56.6k|            {
  953|  56.6k|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (953:21): [True: 2.37k, False: 54.3k]
  |  Branch (953:73): [True: 1.40k, False: 973]
  ------------------
  954|  1.40k|                {
  955|  1.40k|                    key_buffer_.push_back(',');
  956|  1.40k|                }
  957|  56.6k|                level_stack_.emplace_back(target_t::buffer, container_t::array);
  958|  56.6k|                key_buffer_.push_back('[');
  959|  56.6k|                return true;
  960|  56.6k|            }
  961|   358k|            else
  962|   358k|            {
  963|   358k|                switch (level_stack_.back().target())
  964|   358k|                {
  965|   142k|                    case target_t::buffer:
  ------------------
  |  Branch (965:21): [True: 142k, False: 215k]
  ------------------
  966|   142k|                        if (level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (966:29): [True: 1.87k, False: 140k]
  |  Branch (966:64): [True: 1.59k, False: 279]
  ------------------
  967|  1.59k|                        {
  968|  1.59k|                            key_buffer_.push_back(',');
  969|  1.59k|                        }
  970|   142k|                        level_stack_.emplace_back(target_t::buffer, container_t::array);
  971|   142k|                        key_buffer_.push_back('[');
  972|   142k|                        return true;
  973|   215k|                    default:
  ------------------
  |  Branch (973:21): [True: 215k, False: 142k]
  ------------------
  974|   215k|                        level_stack_.emplace_back(target_t::destination, container_t::array);
  975|   215k|                        return destination_->begin_array(tag, context, ec);
  976|   358k|                }
  977|   358k|            }
  978|   414k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  981|  4.08M|        {
  982|  4.08M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (982:17): [True: 82.6k, False: 4.00M]
  ------------------
  983|  82.6k|            {
  984|  82.6k|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (984:21): [True: 68.8k, False: 13.7k]
  |  Branch (984:73): [True: 67.0k, False: 1.79k]
  ------------------
  985|  67.0k|                {
  986|  67.0k|                    key_buffer_.push_back(',');
  987|  67.0k|                }
  988|  82.6k|                level_stack_.emplace_back(target_t::buffer, container_t::array);
  989|  82.6k|                key_buffer_.push_back('[');
  990|  82.6k|                return true;
  991|  82.6k|            }
  992|  4.00M|            else
  993|  4.00M|            {
  994|  4.00M|                switch (level_stack_.back().target())
  995|  4.00M|                {
  996|  1.35M|                    case target_t::buffer:
  ------------------
  |  Branch (996:21): [True: 1.35M, False: 2.65M]
  ------------------
  997|  1.35M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (997:29): [True: 1.28M, False: 69.1k]
  |  Branch (997:65): [True: 680k, False: 600k]
  ------------------
  998|   680k|                        {
  999|   680k|                            key_buffer_.push_back(',');
 1000|   680k|                        }
 1001|  1.35M|                        level_stack_.emplace_back(target_t::buffer, container_t::array);
 1002|  1.35M|                        key_buffer_.push_back('[');
 1003|  1.35M|                        return true;
 1004|  2.65M|                    default:
  ------------------
  |  Branch (1004:21): [True: 2.65M, False: 1.35M]
  ------------------
 1005|  2.65M|                        level_stack_.emplace_back(target_t::destination, container_t::array);
 1006|  2.65M|                        return destination_->begin_array(length, tag, context, ec);
 1007|  4.00M|                }
 1008|  4.00M|            }
 1009|  4.08M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE15visit_end_arrayERKNS_11ser_contextERNS1_10error_codeE:
 1012|  3.38M|        {
 1013|  3.38M|            bool retval = true;
 1014|  3.38M|            switch (level_stack_.back().target())
 1015|  3.38M|            {
 1016|  1.03M|                case target_t::buffer:
  ------------------
  |  Branch (1016:17): [True: 1.03M, False: 2.34M]
  ------------------
 1017|  1.03M|                    key_buffer_.push_back(']');
 1018|  1.03M|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  1.03M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 1.03M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
 1019|  1.03M|                    level_stack_.pop_back();
 1020|  1.03M|                    if (level_stack_.back().target() == target_t::destination)
  ------------------
  |  Branch (1020:25): [True: 67.3k, False: 972k]
  ------------------
 1021|  67.3k|                    {
 1022|  67.3k|                        retval = destination_->key(key_buffer_, context, ec);
 1023|  67.3k|                        key_buffer_.clear();
 1024|  67.3k|                    }
 1025|   972k|                    else if (level_stack_.back().is_key())
  ------------------
  |  Branch (1025:30): [True: 69.2k, False: 903k]
  ------------------
 1026|  69.2k|                    {
 1027|  69.2k|                        key_buffer_.push_back(':');
 1028|  69.2k|                    }
 1029|  1.03M|                    level_stack_.back().advance();
 1030|  1.03M|                    break;
 1031|  2.34M|                default:
  ------------------
  |  Branch (1031:17): [True: 2.34M, False: 1.03M]
  ------------------
 1032|  2.34M|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  2.34M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.34M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
 1033|  2.34M|                    level_stack_.pop_back();
 1034|  2.34M|                    level_stack_.back().advance();
 1035|  2.34M|                    retval = destination_->end_array(context, ec);
 1036|  2.34M|                    break;
 1037|  3.38M|            }
 1038|  3.38M|            return retval;
 1039|  3.38M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE10visit_nullENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1473|  1.26M|        {
 1474|  1.26M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1474:17): [True: 100k, False: 1.16M]
  |  Branch (1474:49): [True: 433k, False: 730k]
  ------------------
 1475|   533k|            {
 1476|   533k|                key_.clear(); 
 1477|   533k|                key_.insert(key_.begin(), null_constant.begin(), null_constant.end());
 1478|   533k|            }
 1479|       |
 1480|  1.26M|            bool retval;
 1481|  1.26M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1481:17): [True: 100k, False: 1.16M]
  ------------------
 1482|   100k|            {
 1483|   100k|                switch (level_stack_.back().target())
 1484|   100k|                {
 1485|  81.5k|                    case target_t::buffer:
  ------------------
  |  Branch (1485:21): [True: 81.5k, False: 19.2k]
  ------------------
 1486|  81.5k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1486:29): [True: 79.1k, False: 2.46k]
  ------------------
 1487|  79.1k|                        {
 1488|  79.1k|                            key_buffer_.push_back(',');
 1489|  79.1k|                        }
 1490|  81.5k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1491|  81.5k|                        key_buffer_.push_back(':');
 1492|  81.5k|                        retval = true; 
 1493|  81.5k|                        break;
 1494|  19.2k|                    default:
  ------------------
  |  Branch (1494:21): [True: 19.2k, False: 81.5k]
  ------------------
 1495|  19.2k|                        retval = destination_->key(key_, context, ec);
 1496|  19.2k|                        break;
 1497|   100k|                }
 1498|   100k|            }
 1499|  1.16M|            else
 1500|  1.16M|            {
 1501|  1.16M|                switch (level_stack_.back().target())
 1502|  1.16M|                {
 1503|   433k|                    case target_t::buffer:
  ------------------
  |  Branch (1503:21): [True: 433k, False: 730k]
  ------------------
 1504|   433k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1504:29): [True: 353k, False: 79.2k]
  |  Branch (1504:65): [True: 353k, False: 294]
  ------------------
 1505|   353k|                        {
 1506|   353k|                            key_buffer_.push_back(',');
 1507|   353k|                        }
 1508|   433k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1509|   433k|                        retval = true; 
 1510|   433k|                        break;
 1511|   730k|                    default:
  ------------------
  |  Branch (1511:21): [True: 730k, False: 433k]
  ------------------
 1512|   730k|                        retval = destination_->null_value(tag, context, ec);
 1513|   730k|                        break;
 1514|  1.16M|                }
 1515|  1.16M|            }
 1516|       |
 1517|  1.26M|            level_stack_.back().advance();
 1518|  1.26M|            return retval;
 1519|  1.26M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1417|  2.30M|        {
 1418|  2.30M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1418:17): [True: 463k, False: 1.84M]
  |  Branch (1418:49): [True: 622k, False: 1.21M]
  ------------------
 1419|  1.08M|            {
 1420|  1.08M|                key_.clear(); 
 1421|  1.08M|                if (value)
  ------------------
  |  Branch (1421:21): [True: 945k, False: 140k]
  ------------------
 1422|   945k|                {
 1423|   945k|                    key_.insert(key_.begin(), true_constant.begin(), true_constant.end());
 1424|   945k|                }
 1425|   140k|                else
 1426|   140k|                {
 1427|   140k|                    key_.insert(key_.begin(), false_constant.begin(), false_constant.end());
 1428|   140k|                }
 1429|  1.08M|            }
 1430|       |
 1431|  2.30M|            bool retval;
 1432|  2.30M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1432:17): [True: 463k, False: 1.84M]
  ------------------
 1433|   463k|            {
 1434|   463k|                switch (level_stack_.back().target())
 1435|   463k|                {
 1436|   371k|                    case target_t::buffer:
  ------------------
  |  Branch (1436:21): [True: 371k, False: 92.6k]
  ------------------
 1437|   371k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1437:29): [True: 370k, False: 776]
  ------------------
 1438|   370k|                        {
 1439|   370k|                            key_buffer_.push_back(',');
 1440|   370k|                        }
 1441|   371k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1442|   371k|                        key_buffer_.push_back(':');
 1443|   371k|                        retval = true; 
 1444|   371k|                        break;
 1445|  92.6k|                    default:
  ------------------
  |  Branch (1445:21): [True: 92.6k, False: 371k]
  ------------------
 1446|  92.6k|                        retval = destination_->key(key_, context, ec);
 1447|  92.6k|                        break;
 1448|   463k|                }
 1449|   463k|            }
 1450|  1.84M|            else
 1451|  1.84M|            {
 1452|  1.84M|                switch (level_stack_.back().target())
 1453|  1.84M|                {
 1454|   622k|                    case target_t::buffer:
  ------------------
  |  Branch (1454:21): [True: 622k, False: 1.21M]
  ------------------
 1455|   622k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1455:29): [True: 248k, False: 374k]
  |  Branch (1455:65): [True: 247k, False: 1.39k]
  ------------------
 1456|   247k|                        {
 1457|   247k|                            key_buffer_.push_back(',');
 1458|   247k|                        }
 1459|   622k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1460|   622k|                        retval = true; 
 1461|   622k|                        break;
 1462|  1.21M|                    default:
  ------------------
  |  Branch (1462:21): [True: 1.21M, False: 622k]
  ------------------
 1463|  1.21M|                        retval = destination_->bool_value(value, tag, context, ec);
 1464|  1.21M|                        break;
 1465|  1.84M|                }
 1466|  1.84M|            }
 1467|       |
 1468|  2.30M|            level_stack_.back().advance();
 1469|  2.30M|            return retval;
 1470|  2.30M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE12visit_stringERKNS_6detail17basic_string_viewIcNS1_11char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1045|  2.05M|        {
 1046|  2.05M|            bool retval;
 1047|       |
 1048|  2.05M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1048:17): [True: 459k, False: 1.59M]
  ------------------
 1049|   459k|            {
 1050|   459k|                switch (level_stack_.back().target())
 1051|   459k|                {
 1052|   338k|                    case target_t::buffer:
  ------------------
  |  Branch (1052:21): [True: 338k, False: 120k]
  ------------------
 1053|   338k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1053:29): [True: 334k, False: 4.02k]
  ------------------
 1054|   334k|                        {
 1055|   334k|                            key_buffer_.push_back(',');
 1056|   334k|                        }
 1057|   338k|                        key_buffer_.push_back('\"');
 1058|   338k|                        key_buffer_.insert(key_buffer_.end(), value.begin(), value.end());
 1059|   338k|                        key_buffer_.push_back('\"');
 1060|   338k|                        key_buffer_.push_back(':');
 1061|   338k|                        retval = true;
 1062|   338k|                        break;
 1063|   120k|                    default:
  ------------------
  |  Branch (1063:21): [True: 120k, False: 338k]
  ------------------
 1064|   120k|                        retval = destination_->key(value, context, ec);
 1065|   120k|                        break;
 1066|   459k|                }
 1067|   459k|            }
 1068|  1.59M|            else
 1069|  1.59M|            {
 1070|  1.59M|                switch (level_stack_.back().target())
 1071|  1.59M|                {
 1072|   567k|                    case target_t::buffer:
  ------------------
  |  Branch (1072:21): [True: 567k, False: 1.03M]
  ------------------
 1073|   567k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1073:29): [True: 229k, False: 338k]
  |  Branch (1073:65): [True: 226k, False: 2.49k]
  ------------------
 1074|   226k|                        {
 1075|   226k|                            key_buffer_.push_back(',');
 1076|   226k|                        }
 1077|   567k|                        key_buffer_.push_back('\"');
 1078|   567k|                        key_buffer_.insert(key_buffer_.end(), value.begin(), value.end());
 1079|   567k|                        key_buffer_.push_back('\"');
 1080|   567k|                        retval = true;
 1081|   567k|                        break;
 1082|  1.03M|                    default:
  ------------------
  |  Branch (1082:21): [True: 1.03M, False: 567k]
  ------------------
 1083|  1.03M|                        retval = destination_->string_value(value, tag, context, ec);
 1084|  1.03M|                        break;
 1085|  1.59M|                }
 1086|  1.59M|            }
 1087|       |
 1088|  2.05M|            level_stack_.back().advance();
 1089|  2.05M|            return retval;
 1090|  2.05M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_byte_stringERKNS_16byte_string_viewENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1096|  13.1M|        {
 1097|  13.1M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1097:17): [True: 4.15M, False: 8.98M]
  |  Branch (1097:49): [True: 3.37M, False: 5.60M]
  ------------------
 1098|  7.53M|            {
 1099|  7.53M|                key_.clear();
 1100|  7.53M|                switch (tag)
 1101|  7.53M|                {
 1102|    637|                    case semantic_tag::base64:
  ------------------
  |  Branch (1102:21): [True: 637, False: 7.53M]
  ------------------
 1103|    637|                        encode_base64(value.begin(), value.end(), key_);
 1104|    637|                        break;
 1105|    628|                    case semantic_tag::base16:
  ------------------
  |  Branch (1105:21): [True: 628, False: 7.53M]
  ------------------
 1106|    628|                        encode_base16(value.begin(), value.end(),key_);
 1107|    628|                        break;
 1108|  7.53M|                    default:
  ------------------
  |  Branch (1108:21): [True: 7.53M, False: 1.26k]
  ------------------
 1109|  7.53M|                        encode_base64url(value.begin(), value.end(),key_);
 1110|  7.53M|                        break;
 1111|  7.53M|                }
 1112|  7.53M|            }
 1113|       |
 1114|  13.1M|            bool retval;
 1115|  13.1M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1115:17): [True: 4.15M, False: 8.98M]
  ------------------
 1116|  4.15M|            {
 1117|  4.15M|                switch (level_stack_.back().target())
 1118|  4.15M|                {
 1119|  1.67M|                    case target_t::buffer:
  ------------------
  |  Branch (1119:21): [True: 1.67M, False: 2.48M]
  ------------------
 1120|  1.67M|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1120:29): [True: 1.66M, False: 5.77k]
  ------------------
 1121|  1.66M|                        {
 1122|  1.66M|                            key_buffer_.push_back(',');
 1123|  1.66M|                        }
 1124|  1.67M|                        key_buffer_.push_back('\"');
 1125|  1.67M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1126|  1.67M|                        key_buffer_.push_back('\"');
 1127|  1.67M|                        key_buffer_.push_back(':');
 1128|  1.67M|                        retval = true; 
 1129|  1.67M|                        break;
 1130|  2.48M|                    default:
  ------------------
  |  Branch (1130:21): [True: 2.48M, False: 1.67M]
  ------------------
 1131|  2.48M|                        retval = destination_->key(key_, context, ec);
 1132|  2.48M|                        break;
 1133|  4.15M|                }
 1134|  4.15M|            }
 1135|  8.98M|            else
 1136|  8.98M|            {
 1137|  8.98M|                switch (level_stack_.back().target())
 1138|  8.98M|                {
 1139|  3.37M|                    case target_t::buffer:
  ------------------
  |  Branch (1139:21): [True: 3.37M, False: 5.60M]
  ------------------
 1140|  3.37M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1140:29): [True: 1.70M, False: 1.67M]
  |  Branch (1140:65): [True: 1.69M, False: 1.36k]
  ------------------
 1141|  1.69M|                        {
 1142|  1.69M|                            key_buffer_.push_back(',');
 1143|  1.69M|                        }
 1144|  3.37M|                        key_buffer_.push_back('\"');
 1145|  3.37M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1146|  3.37M|                        key_buffer_.push_back('\"');
 1147|  3.37M|                        retval = true; 
 1148|  3.37M|                        break;
 1149|  5.60M|                    default:
  ------------------
  |  Branch (1149:21): [True: 5.60M, False: 3.37M]
  ------------------
 1150|  5.60M|                        retval = destination_->byte_string_value(value, tag, context, ec);
 1151|  5.60M|                        break;
 1152|  8.98M|                }
 1153|  8.98M|            }
 1154|       |
 1155|  13.1M|            level_stack_.back().advance();
 1156|  13.1M|            return retval;
 1157|  13.1M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_byte_stringERKNS_16byte_string_viewEmRKNS_11ser_contextERNS1_10error_codeE:
 1163|  50.4k|        {
 1164|  50.4k|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1164:17): [True: 10.4k, False: 39.9k]
  |  Branch (1164:49): [True: 15.8k, False: 24.1k]
  ------------------
 1165|  26.3k|            {
 1166|  26.3k|                key_.clear();
 1167|  26.3k|                encode_base64url(value.begin(), value.end(),key_);
 1168|  26.3k|            }
 1169|       |
 1170|  50.4k|            bool retval;
 1171|  50.4k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1171:17): [True: 10.4k, False: 39.9k]
  ------------------
 1172|  10.4k|            {
 1173|  10.4k|                switch (level_stack_.back().target())
 1174|  10.4k|                {
 1175|  6.55k|                    case target_t::buffer:
  ------------------
  |  Branch (1175:21): [True: 6.55k, False: 3.93k]
  ------------------
 1176|  6.55k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1176:29): [True: 5.89k, False: 660]
  ------------------
 1177|  5.89k|                        {
 1178|  5.89k|                            key_buffer_.push_back(',');
 1179|  5.89k|                        }
 1180|  6.55k|                        key_buffer_.push_back('\"');
 1181|  6.55k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1182|  6.55k|                        key_buffer_.push_back('\"');
 1183|  6.55k|                        key_buffer_.push_back(':');
 1184|  6.55k|                        retval = true; 
 1185|  6.55k|                        break;
 1186|  3.93k|                    default:
  ------------------
  |  Branch (1186:21): [True: 3.93k, False: 6.55k]
  ------------------
 1187|  3.93k|                        retval = destination_->key(key_, context, ec);
 1188|  3.93k|                        break;
 1189|  10.4k|                }
 1190|  10.4k|            }
 1191|  39.9k|            else
 1192|  39.9k|            {
 1193|  39.9k|                switch (level_stack_.back().target())
 1194|  39.9k|                {
 1195|  15.8k|                    case target_t::buffer:
  ------------------
  |  Branch (1195:21): [True: 15.8k, False: 24.1k]
  ------------------
 1196|  15.8k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1196:29): [True: 10.2k, False: 5.54k]
  |  Branch (1196:65): [True: 9.74k, False: 544]
  ------------------
 1197|  9.74k|                        {
 1198|  9.74k|                            key_buffer_.push_back(',');
 1199|  9.74k|                        }
 1200|  15.8k|                        key_buffer_.push_back('\"');
 1201|  15.8k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1202|  15.8k|                        key_buffer_.push_back('\"');
 1203|  15.8k|                        retval = true; 
 1204|  15.8k|                        break;
 1205|  24.1k|                    default:
  ------------------
  |  Branch (1205:21): [True: 24.1k, False: 15.8k]
  ------------------
 1206|  24.1k|                        retval = destination_->byte_string_value(value, ext_tag, context, ec);
 1207|  24.1k|                        break;
 1208|  39.9k|                }
 1209|  39.9k|            }
 1210|       |
 1211|  50.4k|            level_stack_.back().advance();
 1212|  50.4k|            return retval;
 1213|  50.4k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1216|  18.8M|        {
 1217|  18.8M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1217:17): [True: 2.61M, False: 16.2M]
  |  Branch (1217:49): [True: 9.12M, False: 7.14M]
  ------------------
 1218|  11.7M|            {
 1219|  11.7M|                key_.clear();
 1220|  11.7M|                jsoncons::detail::from_integer(value,key_);
 1221|  11.7M|            }
 1222|       |
 1223|  18.8M|            bool retval;
 1224|  18.8M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1224:17): [True: 2.61M, False: 16.2M]
  ------------------
 1225|  2.61M|            {
 1226|  2.61M|                switch (level_stack_.back().target())
 1227|  2.61M|                {
 1228|  2.11M|                    case target_t::buffer:
  ------------------
  |  Branch (1228:21): [True: 2.11M, False: 501k]
  ------------------
 1229|  2.11M|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1229:29): [True: 2.10M, False: 4.73k]
  ------------------
 1230|  2.10M|                        {
 1231|  2.10M|                            key_buffer_.push_back(',');
 1232|  2.10M|                        }
 1233|  2.11M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1234|  2.11M|                        key_buffer_.push_back(':');
 1235|  2.11M|                        retval = true; 
 1236|  2.11M|                        break;
 1237|   501k|                    default:
  ------------------
  |  Branch (1237:21): [True: 501k, False: 2.11M]
  ------------------
 1238|   501k|                        retval = destination_->key(key_, context, ec);
 1239|   501k|                        break;
 1240|  2.61M|                }
 1241|  2.61M|            }
 1242|  16.2M|            else
 1243|  16.2M|            {
 1244|  16.2M|                switch (level_stack_.back().target())
 1245|  16.2M|                {
 1246|  9.12M|                    case target_t::buffer:
  ------------------
  |  Branch (1246:21): [True: 9.12M, False: 7.14M]
  ------------------
 1247|  9.12M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1247:29): [True: 7.01M, False: 2.10M]
  |  Branch (1247:65): [True: 7.00M, False: 12.3k]
  ------------------
 1248|  7.00M|                        {
 1249|  7.00M|                            key_buffer_.push_back(',');
 1250|  7.00M|                        }
 1251|  9.12M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1252|  9.12M|                        retval = true; 
 1253|  9.12M|                        break;
 1254|  7.14M|                    default:
  ------------------
  |  Branch (1254:21): [True: 7.14M, False: 9.12M]
  ------------------
 1255|  7.14M|                        retval = destination_->uint64_value(value, tag, context, ec);
 1256|  7.14M|                        break;
 1257|  16.2M|                }
 1258|  16.2M|            }
 1259|       |
 1260|  18.8M|            level_stack_.back().advance();
 1261|  18.8M|            return retval;
 1262|  18.8M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1265|  19.9M|        {
 1266|  19.9M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1266:17): [True: 1.50M, False: 18.4M]
  |  Branch (1266:49): [True: 6.34M, False: 12.0M]
  ------------------
 1267|  7.84M|            {
 1268|  7.84M|                key_.clear();
 1269|  7.84M|                jsoncons::detail::from_integer(value,key_);
 1270|  7.84M|            }
 1271|       |
 1272|  19.9M|            bool retval;
 1273|  19.9M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1273:17): [True: 1.50M, False: 18.4M]
  ------------------
 1274|  1.50M|            {
 1275|  1.50M|                switch (level_stack_.back().target())
 1276|  1.50M|                {
 1277|   586k|                    case target_t::buffer:
  ------------------
  |  Branch (1277:21): [True: 586k, False: 915k]
  ------------------
 1278|   586k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1278:29): [True: 582k, False: 3.51k]
  ------------------
 1279|   582k|                        {
 1280|   582k|                            key_buffer_.push_back(',');
 1281|   582k|                        }
 1282|   586k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1283|   586k|                        key_buffer_.push_back(':');
 1284|   586k|                        retval = true; 
 1285|   586k|                        break;
 1286|   915k|                    default:
  ------------------
  |  Branch (1286:21): [True: 915k, False: 586k]
  ------------------
 1287|   915k|                        retval = destination_->key(key_, context, ec);
 1288|   915k|                        break;
 1289|  1.50M|                }
 1290|  1.50M|            }
 1291|  18.4M|            else
 1292|  18.4M|            {
 1293|  18.4M|                switch (level_stack_.back().target())
 1294|  18.4M|                {
 1295|  6.34M|                    case target_t::buffer:
  ------------------
  |  Branch (1295:21): [True: 6.34M, False: 12.0M]
  ------------------
 1296|  6.34M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1296:29): [True: 5.75M, False: 591k]
  |  Branch (1296:65): [True: 5.72M, False: 28.0k]
  ------------------
 1297|  5.72M|                        {
 1298|  5.72M|                            key_buffer_.push_back(',');
 1299|  5.72M|                        }
 1300|  6.34M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1301|  6.34M|                        retval = true; 
 1302|  6.34M|                        break;
 1303|  12.0M|                    default:
  ------------------
  |  Branch (1303:21): [True: 12.0M, False: 6.34M]
  ------------------
 1304|  12.0M|                        retval = destination_->int64_value(value, tag, context, ec);
 1305|  12.0M|                        break;
 1306|  18.4M|                }
 1307|  18.4M|            }
 1308|       |
 1309|  19.9M|            level_stack_.back().advance();
 1310|  19.9M|            return retval;
 1311|  19.9M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE10visit_halfEtNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1314|  68.6M|        {
 1315|  68.6M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1315:17): [True: 22.0k, False: 68.6M]
  |  Branch (1315:49): [True: 67.1M, False: 1.43M]
  ------------------
 1316|  67.1M|            {
 1317|  67.1M|                key_.clear();
 1318|  67.1M|                jsoncons::string_sink<string_type> sink(key_);
 1319|  67.1M|                jsoncons::detail::write_double f{float_chars_format::general,0};
 1320|  67.1M|                double x = binary::decode_half(value);
 1321|  67.1M|                f(x, sink);
 1322|  67.1M|            }
 1323|       |
 1324|  68.6M|            bool retval;
 1325|  68.6M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1325:17): [True: 22.0k, False: 68.6M]
  ------------------
 1326|  22.0k|            {
 1327|  22.0k|                switch (level_stack_.back().target())
 1328|  22.0k|                {
 1329|  12.5k|                    case target_t::buffer:
  ------------------
  |  Branch (1329:21): [True: 12.5k, False: 9.45k]
  ------------------
 1330|  12.5k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1330:29): [True: 11.4k, False: 1.12k]
  ------------------
 1331|  11.4k|                        {
 1332|  11.4k|                            key_buffer_.push_back(',');
 1333|  11.4k|                        }
 1334|  12.5k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1335|  12.5k|                        key_buffer_.push_back(':');
 1336|  12.5k|                        retval = true; 
 1337|  12.5k|                        break;
 1338|  9.45k|                    default:
  ------------------
  |  Branch (1338:21): [True: 9.45k, False: 12.5k]
  ------------------
 1339|  9.45k|                        retval = destination_->key(key_, context, ec);
 1340|  9.45k|                        break;
 1341|  22.0k|                }
 1342|  22.0k|            }
 1343|  68.6M|            else
 1344|  68.6M|            {
 1345|  68.6M|                switch (level_stack_.back().target())
 1346|  68.6M|                {
 1347|  67.1M|                    case target_t::buffer:
  ------------------
  |  Branch (1347:21): [True: 67.1M, False: 1.43M]
  ------------------
 1348|  67.1M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1348:29): [True: 67.1M, False: 9.38k]
  |  Branch (1348:65): [True: 67.1M, False: 38.3k]
  ------------------
 1349|  67.1M|                        {
 1350|  67.1M|                            key_buffer_.push_back(',');
 1351|  67.1M|                        }
 1352|  67.1M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1353|  67.1M|                        retval = true; 
 1354|  67.1M|                        break;
 1355|  1.43M|                    default:
  ------------------
  |  Branch (1355:21): [True: 1.43M, False: 67.1M]
  ------------------
 1356|  1.43M|                        retval = destination_->half_value(value, tag, context, ec);
 1357|  1.43M|                        break;
 1358|  68.6M|                }
 1359|  68.6M|            }
 1360|       |
 1361|  68.6M|            level_stack_.back().advance();
 1362|  68.6M|            return retval;
 1363|  68.6M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1366|   231k|        {
 1367|   231k|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1367:17): [True: 17.0k, False: 214k]
  |  Branch (1367:49): [True: 180k, False: 34.0k]
  ------------------
 1368|   197k|            {
 1369|   197k|                key_.clear();
 1370|   197k|                string_sink<string_type> sink(key_);
 1371|   197k|                jsoncons::detail::write_double f{float_chars_format::general,0};
 1372|   197k|                f(value, sink);
 1373|   197k|            }
 1374|       |
 1375|   231k|            bool retval;
 1376|   231k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1376:17): [True: 17.0k, False: 214k]
  ------------------
 1377|  17.0k|            {
 1378|  17.0k|                switch (level_stack_.back().target())
 1379|  17.0k|                {
 1380|  7.62k|                    case target_t::buffer:
  ------------------
  |  Branch (1380:21): [True: 7.62k, False: 9.45k]
  ------------------
 1381|  7.62k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1381:29): [True: 6.38k, False: 1.23k]
  ------------------
 1382|  6.38k|                        {
 1383|  6.38k|                            key_buffer_.push_back(',');
 1384|  6.38k|                        }
 1385|  7.62k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1386|  7.62k|                        key_buffer_.push_back(':');
 1387|  7.62k|                        retval = true; 
 1388|  7.62k|                        break;
 1389|  9.45k|                    default:
  ------------------
  |  Branch (1389:21): [True: 9.45k, False: 7.62k]
  ------------------
 1390|  9.45k|                        retval = destination_->key(key_, context, ec);
 1391|  9.45k|                        break;
 1392|  17.0k|                }
 1393|  17.0k|            }
 1394|   214k|            else
 1395|   214k|            {
 1396|   214k|                switch (level_stack_.back().target())
 1397|   214k|                {
 1398|   180k|                    case target_t::buffer:
  ------------------
  |  Branch (1398:21): [True: 180k, False: 34.0k]
  ------------------
 1399|   180k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1399:29): [True: 172k, False: 8.07k]
  |  Branch (1399:65): [True: 168k, False: 4.11k]
  ------------------
 1400|   168k|                        {
 1401|   168k|                            key_buffer_.push_back(',');
 1402|   168k|                        }
 1403|   180k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1404|   180k|                        retval = true; 
 1405|   180k|                        break;
 1406|  34.0k|                    default:
  ------------------
  |  Branch (1406:21): [True: 34.0k, False: 180k]
  ------------------
 1407|  34.0k|                        retval = destination_->double_value(value, tag, context, ec);
 1408|  34.0k|                        break;
 1409|   214k|                }
 1410|   214k|            }
 1411|       |
 1412|   231k|            level_stack_.back().advance();
 1413|   231k|            return retval;
 1414|   231k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKhLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1525|  6.19k|        {
 1526|  6.19k|            bool is_key = level_stack_.back().is_key();
 1527|  6.19k|            level_stack_.back().advance();
 1528|       |
 1529|  6.19k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1529:17): [True: 1.83k, False: 4.36k]
  |  Branch (1529:27): [True: 3.00k, False: 1.36k]
  ------------------
 1530|  4.83k|            {
 1531|  4.83k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1532|  4.83k|            }
 1533|  1.36k|            else
 1534|  1.36k|            {
 1535|  1.36k|                return destination_->typed_array(s, tag, context, ec);
 1536|  1.36k|            }
 1537|  6.19k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1543|  2.95k|        {
 1544|  2.95k|            bool is_key = level_stack_.back().is_key();
 1545|  2.95k|            level_stack_.back().advance();
 1546|       |
 1547|  2.95k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1547:17): [True: 1.36k, False: 1.59k]
  |  Branch (1547:27): [True: 706, False: 888]
  ------------------
 1548|  2.06k|            {
 1549|  2.06k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1550|  2.06k|            }
 1551|    888|            else
 1552|    888|            {
 1553|    888|                return destination_->typed_array(s, tag, context, ec);
 1554|    888|            }
 1555|  2.95k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKjLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1561|   100k|        {
 1562|   100k|            bool is_key = level_stack_.back().is_key();
 1563|   100k|            level_stack_.back().advance();
 1564|       |
 1565|   100k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1565:17): [True: 35.0k, False: 65.5k]
  |  Branch (1565:27): [True: 39.5k, False: 25.9k]
  ------------------
 1566|  74.5k|            {
 1567|  74.5k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1568|  74.5k|            }
 1569|  25.9k|            else
 1570|  25.9k|            {
 1571|  25.9k|                return destination_->typed_array(s, tag, context, ec);
 1572|  25.9k|            }
 1573|   100k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1579|  4.81k|        {
 1580|  4.81k|            bool is_key = level_stack_.back().is_key();
 1581|  4.81k|            level_stack_.back().advance();
 1582|       |
 1583|  4.81k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1583:17): [True: 1.76k, False: 3.04k]
  |  Branch (1583:27): [True: 1.48k, False: 1.56k]
  ------------------
 1584|  3.24k|            {
 1585|  3.24k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1586|  3.24k|            }
 1587|  1.56k|            else
 1588|  1.56k|            {
 1589|  1.56k|                return destination_->typed_array(s, tag, context, ec);
 1590|  1.56k|            }
 1591|  4.81k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKaLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1597|  1.96k|        {
 1598|  1.96k|            bool is_key = level_stack_.back().is_key();
 1599|  1.96k|            level_stack_.back().advance();
 1600|       |
 1601|  1.96k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1601:17): [True: 320, False: 1.64k]
  |  Branch (1601:27): [True: 596, False: 1.05k]
  ------------------
 1602|    916|            {
 1603|    916|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1604|    916|            }
 1605|  1.05k|            else
 1606|  1.05k|            {
 1607|  1.05k|                return destination_->typed_array(s, tag, context, ec);
 1608|  1.05k|            }
 1609|  1.96k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKsLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1615|  4.56k|        {
 1616|  4.56k|            bool is_key = level_stack_.back().is_key();
 1617|  4.56k|            level_stack_.back().advance();
 1618|       |
 1619|  4.56k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1619:17): [True: 1.62k, False: 2.93k]
  |  Branch (1619:27): [True: 994, False: 1.94k]
  ------------------
 1620|  2.61k|            {
 1621|  2.61k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1622|  2.61k|            }
 1623|  1.94k|            else
 1624|  1.94k|            {
 1625|  1.94k|                return destination_->typed_array(s, tag, context, ec);
 1626|  1.94k|            }
 1627|  4.56k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKiLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1633|  14.9k|        {
 1634|  14.9k|            bool is_key = level_stack_.back().is_key();
 1635|  14.9k|            level_stack_.back().advance();
 1636|       |
 1637|  14.9k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1637:17): [True: 4.67k, False: 10.3k]
  |  Branch (1637:27): [True: 3.60k, False: 6.71k]
  ------------------
 1638|  8.28k|            {
 1639|  8.28k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1640|  8.28k|            }
 1641|  6.71k|            else
 1642|  6.71k|            {
 1643|  6.71k|                return destination_->typed_array(s, tag, context, ec);
 1644|  6.71k|            }
 1645|  14.9k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKlLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1651|  17.8k|        {
 1652|  17.8k|            bool is_key = level_stack_.back().is_key();
 1653|  17.8k|            level_stack_.back().advance();
 1654|       |
 1655|  17.8k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1655:17): [True: 10.2k, False: 7.67k]
  |  Branch (1655:27): [True: 2.66k, False: 5.01k]
  ------------------
 1656|  12.8k|            {
 1657|  12.8k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1658|  12.8k|            }
 1659|  5.01k|            else
 1660|  5.01k|            {
 1661|  5.01k|                return destination_->typed_array(s, tag, context, ec);
 1662|  5.01k|            }
 1663|  17.8k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1670|  50.6k|        {
 1671|  50.6k|            bool is_key = level_stack_.back().is_key();
 1672|  50.6k|            level_stack_.back().advance();
 1673|       |
 1674|  50.6k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1674:17): [True: 14.7k, False: 35.8k]
  |  Branch (1674:27): [True: 26.2k, False: 9.60k]
  ------------------
 1675|  41.0k|            {
 1676|  41.0k|                return basic_item_event_visitor<CharT>::visit_typed_array(half_arg,s,tag,context,ec);
 1677|  41.0k|            }
 1678|  9.60k|            else
 1679|  9.60k|            {
 1680|  9.60k|                return destination_->typed_array(half_arg, s, tag, context, ec);
 1681|  9.60k|            }
 1682|  50.6k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKfLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1688|  16.7k|        {
 1689|  16.7k|            bool is_key = level_stack_.back().is_key();
 1690|  16.7k|            level_stack_.back().advance();
 1691|       |
 1692|  16.7k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1692:17): [True: 7.24k, False: 9.49k]
  |  Branch (1692:27): [True: 4.96k, False: 4.52k]
  ------------------
 1693|  12.2k|            {
 1694|  12.2k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1695|  12.2k|            }
 1696|  4.52k|            else
 1697|  4.52k|            {
 1698|  4.52k|                return destination_->typed_array(s, tag, context, ec);
 1699|  4.52k|            }
 1700|  16.7k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_typed_arrayERKNS_6detail4spanIKdLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1706|  6.25k|        {
 1707|  6.25k|            bool is_key = level_stack_.back().is_key();
 1708|  6.25k|            level_stack_.back().advance();
 1709|       |
 1710|  6.25k|            if (is_key || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1710:17): [True: 1.90k, False: 4.35k]
  |  Branch (1710:27): [True: 2.05k, False: 2.29k]
  ------------------
 1711|  3.95k|            {
 1712|  3.95k|                return basic_item_event_visitor<CharT>::visit_typed_array(s,tag,context,ec);
 1713|  3.95k|            }
 1714|  2.29k|            else
 1715|  2.29k|            {
 1716|  2.29k|                return destination_->typed_array(s, tag, context, ec);
 1717|  2.29k|            }
 1718|  6.25k|        }
_ZN8jsoncons24basic_item_event_visitorIcE21visit_begin_multi_dimERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  721|  1.11M|        {
  722|  1.11M|            bool more = visit_begin_array(2, tag, context, ec);
  723|  1.11M|            if (more)
  ------------------
  |  Branch (723:17): [True: 1.11M, False: 0]
  ------------------
  724|  1.11M|            {
  725|  1.11M|                more = visit_begin_array(shape.size(), tag, context, ec);
  726|  1.13M|                for (auto it = shape.begin(); more && it != shape.end(); ++it)
  ------------------
  |  Branch (726:47): [True: 1.13M, False: 0]
  |  Branch (726:55): [True: 24.7k, False: 1.11M]
  ------------------
  727|  24.7k|                {
  728|  24.7k|                    visit_uint64(*it, semantic_tag::none, context, ec);
  729|  24.7k|                }
  730|  1.11M|                if (more)
  ------------------
  |  Branch (730:21): [True: 1.11M, False: 0]
  ------------------
  731|  1.11M|                {
  732|  1.11M|                    more = visit_end_array(context, ec);
  733|  1.11M|                }
  734|  1.11M|            }
  735|  1.11M|            return more;
  736|  1.11M|        }
_ZN8jsoncons24basic_item_event_visitorIcE19visit_end_multi_dimERKNS_11ser_contextERNSt3__110error_codeE:
  740|  27.8k|        {
  741|  27.8k|            return visit_end_array(context, ec);
  742|  27.8k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17byte_string_valueINSt3__16vectorIhNS3_9allocatorIhEEEEEEbRKT_NS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeENS3_9enable_ifIXsr16extension_traits16is_byte_sequenceIS8_EE5valueEiE4typeE:
  314|  13.1M|        {
  315|  13.1M|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), tag, context, ec);
  316|  13.1M|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKhEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  6.19k|        {
  380|  6.19k|            return visit_typed_array(data, tag, context, ec);
  381|  6.19k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKtEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  2.95k|        {
  380|  2.95k|            return visit_typed_array(data, tag, context, ec);
  381|  2.95k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKjEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|   100k|        {
  380|   100k|            return visit_typed_array(data, tag, context, ec);
  381|   100k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKmEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  4.81k|        {
  380|  4.81k|            return visit_typed_array(data, tag, context, ec);
  381|  4.81k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKaEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  1.96k|        {
  380|  1.96k|            return visit_typed_array(data, tag, context, ec);
  381|  1.96k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKsEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  4.56k|        {
  380|  4.56k|            return visit_typed_array(data, tag, context, ec);
  381|  4.56k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKiEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  14.9k|        {
  380|  14.9k|            return visit_typed_array(data, tag, context, ec);
  381|  14.9k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKlEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  17.8k|        {
  380|  17.8k|            return visit_typed_array(data, tag, context, ec);
  381|  17.8k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  400|  50.6k|        {
  401|  50.6k|            return visit_typed_array(half_arg, s, tag, context, ec);
  402|  50.6k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKfEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  16.7k|        {
  380|  16.7k|            return visit_typed_array(data, tag, context, ec);
  381|  16.7k|        }
_ZN8jsoncons24basic_item_event_visitorIcE11typed_arrayIKdEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  379|  6.25k|        {
  380|  6.25k|            return visit_typed_array(data, tag, context, ec);
  381|  6.25k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17byte_string_valueINSt3__16vectorIhNS3_9allocatorIhEEEEEEbRKT_mRKNS_11ser_contextERNS3_10error_codeENS3_9enable_ifIXsr16extension_traits16is_byte_sequenceIS8_EE5valueEiE4typeE:
  324|  50.4k|        {
  325|  50.4k|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), ext_tag, context, ec);
  326|  50.4k|        }
_ZN8jsoncons24basic_item_event_visitorIcE10bool_valueEbNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  296|  2.30M|        {
  297|  2.30M|            return visit_bool(value, tag, context, ec);
  298|  2.30M|        }
_ZN8jsoncons24basic_item_event_visitorIcE10null_valueENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  288|  1.26M|        {
  289|  1.26M|            return visit_null(tag, context, ec);
  290|  1.26M|        }
_ZN8jsoncons24basic_item_event_visitorIcE12string_valueERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS4_10error_codeE:
  304|  2.05M|        {
  305|  2.05M|            return visit_string(value, tag, context, ec);
  306|  2.05M|        }
_ZN8jsoncons24basic_item_event_visitorIcE15begin_multi_dimERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  421|  1.11M|        {
  422|  1.11M|            return visit_begin_multi_dim(shape, tag, context, ec);
  423|  1.11M|        }
_ZN8jsoncons24basic_item_event_visitorIcE11begin_arrayENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  266|   414k|        {
  267|   414k|            return visit_begin_array(tag, context, ec);
  268|   414k|        }
_ZN8jsoncons24basic_item_event_visitorIcE12begin_objectENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  248|   401k|        {
  249|   401k|            return visit_begin_object(tag, context, ec);
  250|   401k|        }
_ZN8jsoncons24basic_item_event_visitorIcE12begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  256|  7.70M|        {
  257|  7.70M|            return visit_begin_object(length, tag, context, ec);
  258|  7.70M|        }
_ZN8jsoncons24basic_item_event_visitorIcE13end_multi_dimERKNS_11ser_contextERNSt3__110error_codeE:
  438|  27.8k|        {
  439|  27.8k|            return visit_end_multi_dim(context, ec);
  440|  27.8k|        }
_ZN8jsoncons24basic_item_event_visitorIcE10end_objectERKNS_11ser_contextERNSt3__110error_codeE:
  261|  8.07M|        {
  262|  8.07M|            return visit_end_object(context, ec);
  263|  8.07M|        }
_ZN8jsoncons24basic_item_event_visitorIcE5flushEv:
   38|    205|        {
   39|    205|            visit_flush();
   40|    205|        }

_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEED2Ev:
  108|  5.87M|        {
  109|  5.87M|            flatten_and_destroy();
  110|  5.87M|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE19flatten_and_destroyEv:
  285|  5.87M|        {
  286|  17.3M|            while (!elements_.empty())
  ------------------
  |  Branch (286:20): [True: 11.4M, False: 5.87M]
  ------------------
  287|  11.4M|            {
  288|  11.4M|                value_type current = std::move(elements_.back());
  289|  11.4M|                elements_.pop_back();
  290|  11.4M|                switch (current.storage_kind())
  291|  11.4M|                {
  292|   102k|                    case json_storage_kind::array_value:
  ------------------
  |  Branch (292:21): [True: 102k, False: 11.3M]
  ------------------
  293|   102k|                    {
  294|   102k|                        for (auto&& item : current.array_range())
  ------------------
  |  Branch (294:42): [True: 1.11M, False: 102k]
  ------------------
  295|  1.11M|                        {
  296|  1.11M|                            if (item.size() > 0) // non-empty object or array
  ------------------
  |  Branch (296:33): [True: 38.9k, False: 1.07M]
  ------------------
  297|  38.9k|                            {
  298|  38.9k|                                elements_.push_back(std::move(item));
  299|  38.9k|                            }
  300|  1.11M|                        }
  301|   102k|                        current.clear();                           
  302|   102k|                        break;
  303|      0|                    }
  304|   730k|                    case json_storage_kind::object_value:
  ------------------
  |  Branch (304:21): [True: 730k, False: 10.7M]
  ------------------
  305|   730k|                    {
  306|   730k|                        for (auto&& kv : current.object_range())
  ------------------
  |  Branch (306:40): [True: 17.6k, False: 730k]
  ------------------
  307|  17.6k|                        {
  308|  17.6k|                            if (kv.value().size() > 0) // non-empty object or array
  ------------------
  |  Branch (308:33): [True: 3.43k, False: 14.2k]
  ------------------
  309|  3.43k|                            {
  310|  3.43k|                                elements_.push_back(std::move(kv.value()));
  311|  3.43k|                            }
  312|  17.6k|                        }
  313|   730k|                        current.clear();                           
  314|   730k|                        break;
  315|      0|                    }
  316|  10.6M|                    default:
  ------------------
  |  Branch (316:21): [True: 10.6M, False: 833k]
  ------------------
  317|  10.6M|                        break;
  318|  11.4M|                }
  319|  11.4M|            }
  320|  5.87M|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE5beginEv:
  263|   102k|        iterator begin() {return elements_.begin();}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE3endEv:
  265|   102k|        iterator end() {return elements_.end();}
_ZNK8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE4sizeEv:
  137|  72.0k|        std::size_t size() const {return elements_.size();}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE5clearEv:
  141|   102k|        void clear() {elements_.clear();}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEEC2ERKS5_:
   54|  2.94M|        {
   55|  2.94M|        }
_ZNK8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE5emptyEv:
  128|  12.6k|        {
  129|  12.6k|            return elements_.empty();
  130|  12.6k|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE12emplace_backIJS6_EEERS6_DpOT_:
  258|  9.46k|        {
  259|  9.46k|            elements_.emplace_back(std::forward<Args>(args)...);
  260|  9.46k|            return elements_.back();
  261|  9.46k|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEEC2EOS8_:
   93|  2.92M|        {
   94|  2.92M|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE7reserveEm:
  152|  94.8k|        void reserve(std::size_t n) {elements_.reserve(n);}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE9push_backIS6_S5_EENS3_9enable_ifIXsr16extension_traits12is_statelessIT0_EE5valueEvE4typeEOT_:
  198|  12.5M|        {
  199|  12.5M|            elements_.emplace_back(std::forward<T>(value));
  200|  12.5M|        }

_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_EC2ERKS5_S9_:
   77|  10.8k|    {
   78|  10.8k|        item_stack_.reserve(1000);
   79|  10.8k|        structure_stack_.reserve(100);
   80|  10.8k|        structure_stack_.emplace_back(structure_type::root_t, 0);
   81|  10.8k|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E14structure_infoC2ENS7_14structure_typeEm:
   48|  4.75M|        {
   49|  4.75M|        }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E11visit_flushEv:
  138|    205|    {
  139|    205|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E18visit_begin_objectENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  142|  1.81M|    {
  143|  1.81M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (143:13): [True: 5.18k, False: 1.81M]
  ------------------
  144|  5.18k|        {
  145|  5.18k|            index_ = 0;
  146|  5.18k|            item_stack_.clear();
  147|  5.18k|            is_valid_ = false;
  148|  5.18k|        }
  149|  1.81M|        item_stack_.emplace_back(std::move(name_), index_++, json_object_arg, tag);
  150|  1.81M|        structure_stack_.emplace_back(structure_type::object_t, item_stack_.size()-1);
  151|  1.81M|        return true;
  152|  1.81M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E16visit_end_objectERKNS_11ser_contextERNS3_10error_codeE:
  155|  1.80M|    {
  156|  1.80M|        JSONCONS_ASSERT(structure_stack_.size() > 0);
  ------------------
  |  |  378|  1.80M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 1.80M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  157|  1.80M|        JSONCONS_ASSERT(structure_stack_.back().type_ == structure_type::object_t);
  ------------------
  |  |  378|  1.80M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 1.80M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  158|  1.80M|        const size_t structure_index = structure_stack_.back().container_index_;
  159|  1.80M|        JSONCONS_ASSERT(item_stack_.size() > structure_index);
  ------------------
  |  |  378|  1.80M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 1.80M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  160|  1.80M|        const size_t count = item_stack_.size() - (structure_index + 1);
  161|  1.80M|        auto first = item_stack_.begin() + (structure_index+1);
  162|       |
  163|  1.80M|        if (count > 0)
  ------------------
  |  Branch (163:13): [True: 25.3k, False: 1.78M]
  ------------------
  164|  25.3k|        {
  165|  25.3k|            item_stack_[structure_index].value.template cast<typename Json::object_storage>().value().uninitialized_init(
  166|  25.3k|                &item_stack_[structure_index+1], count);
  167|  25.3k|        }
  168|       |
  169|  1.80M|        item_stack_.erase(first, item_stack_.end());
  170|  1.80M|        structure_stack_.pop_back();
  171|  1.80M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (171:13): [True: 914, False: 1.80M]
  ------------------
  172|    914|        {
  173|    914|            result_.swap(item_stack_.front().value);
  174|    914|            item_stack_.pop_back();
  175|    914|            is_valid_ = true;
  176|    914|            return false;
  177|    914|        }
  178|  1.80M|        return true;
  179|  1.80M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E17visit_begin_arrayENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  182|  2.92M|    {
  183|  2.92M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (183:13): [True: 2.52k, False: 2.92M]
  ------------------
  184|  2.52k|        {
  185|  2.52k|            index_ = 0;
  186|  2.52k|            item_stack_.clear();
  187|  2.52k|            is_valid_ = false;
  188|  2.52k|        }
  189|  2.92M|        item_stack_.emplace_back(std::move(name_), index_++, json_array_arg, tag);
  190|  2.92M|        structure_stack_.emplace_back(structure_type::array_t, item_stack_.size()-1);
  191|  2.92M|        return true;
  192|  2.92M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E15visit_end_arrayERKNS_11ser_contextERNS3_10error_codeE:
  195|  2.40M|    {
  196|  2.40M|        JSONCONS_ASSERT(structure_stack_.size() > 1);
  ------------------
  |  |  378|  2.40M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.40M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  197|  2.40M|        JSONCONS_ASSERT(structure_stack_.back().type_ == structure_type::array_t);
  ------------------
  |  |  378|  2.40M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.40M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  198|  2.40M|        const size_t container_index = structure_stack_.back().container_index_;
  199|  2.40M|        JSONCONS_ASSERT(item_stack_.size() > container_index);
  ------------------
  |  |  378|  2.40M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.40M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  200|       |
  201|  2.40M|        auto& container = item_stack_[container_index].value;
  202|       |
  203|  2.40M|        const size_t size = item_stack_.size() - (container_index + 1);
  204|       |        //std::cout << "size on item stack: " << size << "\n";
  205|       |
  206|  2.40M|        if (size > 0)
  ------------------
  |  Branch (206:13): [True: 94.8k, False: 2.30M]
  ------------------
  207|  94.8k|        {
  208|  94.8k|            container.reserve(size);
  209|  94.8k|            auto first = item_stack_.begin() + (container_index+1);
  210|  94.8k|            auto last = first + size;
  211|  12.6M|            for (auto it = first; it != last; ++it)
  ------------------
  |  Branch (211:35): [True: 12.5M, False: 94.8k]
  ------------------
  212|  12.5M|            {
  213|  12.5M|                container.push_back(std::move(it->value));
  214|  12.5M|            }
  215|  94.8k|            item_stack_.erase(first, item_stack_.end());
  216|  94.8k|        }
  217|       |
  218|  2.40M|        structure_stack_.pop_back();
  219|  2.40M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (219:13): [True: 416, False: 2.40M]
  ------------------
  220|    416|        {
  221|    416|            result_.swap(item_stack_.front().value);
  222|    416|            item_stack_.pop_back();
  223|    416|            is_valid_ = true;
  224|    416|            return false;
  225|    416|        }
  226|  2.40M|        return true;
  227|  2.40M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E9visit_keyERKNS_6detail17basic_string_viewIcNS3_11char_traitsIcEEEERKNS_11ser_contextERNS3_10error_codeE:
  230|  4.33M|    {
  231|  4.33M|        name_ = key_type(name.data(),name.length(),allocator_);
  232|  4.33M|        return true;
  233|  4.33M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10visit_nullENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  382|   730k|    {
  383|   730k|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (383:17): [True: 0, False: 730k]
  ------------------
  384|   730k|        {
  385|  16.9k|            case structure_type::object_t:
  ------------------
  |  Branch (385:13): [True: 16.9k, False: 713k]
  ------------------
  386|   730k|            case structure_type::array_t:
  ------------------
  |  Branch (386:13): [True: 713k, False: 16.9k]
  ------------------
  387|   730k|                item_stack_.emplace_back(std::move(name_), index_++, null_type(), tag);
  388|   730k|                break;
  389|      9|            case structure_type::root_t:
  ------------------
  |  Branch (389:13): [True: 9, False: 730k]
  ------------------
  390|      9|                result_ = Json(null_type(), tag);
  391|      9|                is_valid_ = true;
  392|      9|                return false;
  393|   730k|        }
  394|   730k|        return true;
  395|   730k|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  366|  1.21M|    {
  367|  1.21M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (367:17): [True: 0, False: 1.21M]
  ------------------
  368|  1.21M|        {
  369|  95.6k|            case structure_type::object_t:
  ------------------
  |  Branch (369:13): [True: 95.6k, False: 1.12M]
  ------------------
  370|  1.21M|            case structure_type::array_t:
  ------------------
  |  Branch (370:13): [True: 1.12M, False: 95.6k]
  ------------------
  371|  1.21M|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  372|  1.21M|                break;
  373|      5|            case structure_type::root_t:
  ------------------
  |  Branch (373:13): [True: 5, False: 1.21M]
  ------------------
  374|      5|                result_ = Json(value, tag);
  375|      5|                is_valid_ = true;
  376|      5|                return false;
  377|  1.21M|        }
  378|  1.21M|        return true;
  379|  1.21M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E12visit_stringERKNS_6detail17basic_string_viewIcNS3_11char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  236|  1.03M|    {
  237|  1.03M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (237:17): [True: 0, False: 1.03M]
  ------------------
  238|  1.03M|        {
  239|   125k|            case structure_type::object_t:
  ------------------
  |  Branch (239:13): [True: 125k, False: 907k]
  ------------------
  240|  1.03M|            case structure_type::array_t:
  ------------------
  |  Branch (240:13): [True: 905k, False: 126k]
  ------------------
  241|  1.03M|                item_stack_.emplace_back(std::move(name_), index_++, sv, tag);
  242|  1.03M|                break;
  243|  1.47k|            case structure_type::root_t:
  ------------------
  |  Branch (243:13): [True: 1.47k, False: 1.03M]
  ------------------
  244|  1.47k|                result_ = Json(sv, tag, allocator_);
  245|  1.47k|                is_valid_ = true;
  246|  1.47k|                return false;
  247|  1.03M|        }
  248|  1.03M|        return true;
  249|  1.03M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E17visit_byte_stringERKNS_16byte_string_viewENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  255|  5.60M|    {
  256|  5.60M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (256:17): [True: 0, False: 5.60M]
  ------------------
  257|  5.60M|        {
  258|  2.47M|            case structure_type::object_t:
  ------------------
  |  Branch (258:13): [True: 2.47M, False: 3.12M]
  ------------------
  259|  5.60M|            case structure_type::array_t:
  ------------------
  |  Branch (259:13): [True: 3.12M, False: 2.47M]
  ------------------
  260|  5.60M|                item_stack_.emplace_back(std::move(name_), index_++, byte_string_arg, b, tag);
  261|  5.60M|                break;
  262|     31|            case structure_type::root_t:
  ------------------
  |  Branch (262:13): [True: 31, False: 5.60M]
  ------------------
  263|     31|                result_ = Json(byte_string_arg, b, tag, allocator_);
  264|     31|                is_valid_ = true;
  265|     31|                return false;
  266|  5.60M|        }
  267|  5.60M|        return true;
  268|  5.60M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E17visit_byte_stringERKNS_16byte_string_viewEmRKNS_11ser_contextERNS3_10error_codeE:
  274|  24.1k|    {
  275|  24.1k|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (275:17): [True: 0, False: 24.1k]
  ------------------
  276|  24.1k|        {
  277|  1.39k|            case structure_type::object_t:
  ------------------
  |  Branch (277:13): [True: 1.39k, False: 22.7k]
  ------------------
  278|  24.1k|            case structure_type::array_t:
  ------------------
  |  Branch (278:13): [True: 22.7k, False: 1.39k]
  ------------------
  279|  24.1k|                item_stack_.emplace_back(std::move(name_), index_++, byte_string_arg, b, ext_tag);
  280|  24.1k|                break;
  281|      1|            case structure_type::root_t:
  ------------------
  |  Branch (281:13): [True: 1, False: 24.1k]
  ------------------
  282|      1|                result_ = Json(byte_string_arg, b, ext_tag, allocator_);
  283|      1|                is_valid_ = true;
  284|      1|                return false;
  285|  24.1k|        }
  286|  24.1k|        return true;
  287|  24.1k|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  312|  7.26M|    {
  313|  7.26M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (313:17): [True: 0, False: 7.26M]
  ------------------
  314|  7.26M|        {
  315|   492k|            case structure_type::object_t:
  ------------------
  |  Branch (315:13): [True: 492k, False: 6.76M]
  ------------------
  316|  7.26M|            case structure_type::array_t:
  ------------------
  |  Branch (316:13): [True: 6.76M, False: 492k]
  ------------------
  317|  7.26M|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  318|  7.26M|                break;
  319|    100|            case structure_type::root_t:
  ------------------
  |  Branch (319:13): [True: 100, False: 7.26M]
  ------------------
  320|    100|                result_ = Json(value,tag);
  321|    100|                is_valid_ = true;
  322|    100|                return false;
  323|  7.26M|        }
  324|  7.26M|        return true;
  325|  7.26M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  293|  12.6M|    {
  294|  12.6M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (294:17): [True: 0, False: 12.6M]
  ------------------
  295|  12.6M|        {
  296|   906k|            case structure_type::object_t:
  ------------------
  |  Branch (296:13): [True: 906k, False: 11.7M]
  ------------------
  297|  12.6M|            case structure_type::array_t:
  ------------------
  |  Branch (297:13): [True: 11.7M, False: 906k]
  ------------------
  298|  12.6M|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  299|  12.6M|                break;
  300|    127|            case structure_type::root_t:
  ------------------
  |  Branch (300:13): [True: 127, False: 12.6M]
  ------------------
  301|    127|                result_ = Json(value,tag);
  302|    127|                is_valid_ = true;
  303|    127|                return false;
  304|  12.6M|        }
  305|  12.6M|        return true;
  306|  12.6M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10visit_halfEtNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  331|  4.01M|    {
  332|  4.01M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (332:17): [True: 0, False: 4.01M]
  ------------------
  333|  4.01M|        {
  334|  7.13k|            case structure_type::object_t:
  ------------------
  |  Branch (334:13): [True: 7.13k, False: 4.00M]
  ------------------
  335|  4.01M|            case structure_type::array_t:
  ------------------
  |  Branch (335:13): [True: 4.00M, False: 7.13k]
  ------------------
  336|  4.01M|                item_stack_.emplace_back(std::move(name_), index_++, half_arg, value, tag);
  337|  4.01M|                break;
  338|      1|            case structure_type::root_t:
  ------------------
  |  Branch (338:13): [True: 1, False: 4.01M]
  ------------------
  339|      1|                result_ = Json(half_arg, value, tag);
  340|      1|                is_valid_ = true;
  341|      1|                return false;
  342|  4.01M|        }
  343|  4.01M|        return true;
  344|  4.01M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  350|   269k|    {
  351|   269k|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (351:17): [True: 0, False: 269k]
  ------------------
  352|   269k|        {
  353|  11.5k|            case structure_type::object_t:
  ------------------
  |  Branch (353:13): [True: 11.5k, False: 257k]
  ------------------
  354|   269k|            case structure_type::array_t:
  ------------------
  |  Branch (354:13): [True: 257k, False: 11.6k]
  ------------------
  355|   269k|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  356|   269k|                break;
  357|     69|            case structure_type::root_t:
  ------------------
  |  Branch (357:13): [True: 69, False: 269k]
  ------------------
  358|     69|                result_ = Json(value, tag);
  359|     69|                is_valid_ = true;
  360|     69|                return false;
  361|   269k|        }
  362|   269k|        return true;
  363|   269k|    }
_ZNK8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E8is_validEv:
  116|  3.14k|    {
  117|  3.14k|        return is_valid_;
  118|  3.14k|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10get_resultEv:
  121|  3.14k|    {
  122|  3.14k|        JSONCONS_ASSERT(is_valid_);
  ------------------
  |  |  378|  3.14k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 3.14k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  123|  3.14k|        is_valid_ = false;
  124|  3.14k|        return std::move(result_);
  125|  3.14k|    }

_ZN8jsoncons14json_exceptionD2Ev:
   24|  7.71k|        virtual ~json_exception() noexcept = default;
_ZN8jsoncons9ser_errorC1ENSt3__110error_codeEmm:
  168|  7.71k|        {
  169|  7.71k|        }

_ZN8jsoncons25make_json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEEENS_20json_visitor_adaptorIT_T0_vEERSD_:
  631|  10.8k|{
  632|  10.8k|    return json_visitor_adaptor<From, To>(to);
  633|  10.8k|}
_ZN8jsoncons20json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEvEC2ERSA_:
  550|  10.8k|    {
  551|  10.8k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEEC2ERSA_:
  318|  10.8k|    {
  319|  10.8k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE11visit_flushEv:
  332|    205|    {
  333|    205|        destination_->flush();
  334|    205|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE18visit_begin_objectENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  339|  6.07k|    {
  340|  6.07k|        return destination_->begin_object(tag, context, ec);
  341|  6.07k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  347|  1.80M|    {
  348|  1.80M|        return destination_->begin_object(length, tag, context, ec);
  349|  1.80M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE16visit_end_objectERKNS_11ser_contextERNS6_10error_codeE:
  352|  1.80M|    {
  353|  1.80M|        return destination_->end_object(context, ec);
  354|  1.80M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_begin_arrayENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  359|   215k|    {
  360|   215k|        return destination_->begin_array(tag, context, ec);
  361|   215k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  367|  2.65M|    {
  368|  2.65M|        return destination_->begin_array(length, tag, context, ec);
  369|  2.65M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE15visit_end_arrayERKNS_11ser_contextERNS6_10error_codeE:
  372|  2.34M|    {
  373|  2.34M|        return destination_->end_array(context, ec);
  374|  2.34M|    }
_ZN8jsoncons20json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEvE9visit_keyERKNS_6detail17basic_string_viewIcNS6_11char_traitsIcEEEERKNS_11ser_contextERNS6_10error_codeE:
  562|  4.33M|    {
  563|  4.33M|        return destination().key(string_view_type(reinterpret_cast<const to_char_type*>(key.data()),key.size()), context, ec);
  564|  4.33M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE11destinationEv:
  326|  5.37M|    {
  327|  5.37M|        return *destination_;
  328|  5.37M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE10visit_nullENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  418|   730k|    {
  419|   730k|        return destination_->null_value(tag, context, ec);
  420|   730k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  413|  1.21M|    {
  414|  1.21M|        return destination_->bool_value(value, tag, context, ec);
  415|  1.21M|    }
_ZN8jsoncons20json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEvE12visit_stringERKNS_6detail17basic_string_viewIcNS6_11char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  570|  1.03M|    {
  571|  1.03M|        return destination().string_value(string_view_type(reinterpret_cast<const to_char_type*>(value.data()),value.size()), tag, context, ec);
  572|  1.03M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_byte_stringERKNS_16byte_string_viewENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  380|  5.60M|    {
  381|  5.60M|        return destination_->byte_string_value(b, tag, context, ec);
  382|  5.60M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_byte_stringERKNS_16byte_string_viewEmRKNS_11ser_contextERNS6_10error_codeE:
  388|  24.1k|    {
  389|  24.1k|        return destination_->byte_string_value(b, ext_tag, context, ec);
  390|  24.1k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  408|  7.14M|    {
  409|  7.14M|        return destination_->uint64_value(value, tag, context, ec);
  410|  7.14M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  403|  12.0M|    {
  404|  12.0M|        return destination_->int64_value(value, tag, context, ec);
  405|  12.0M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE10visit_halfEtNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  393|  1.43M|    {
  394|  1.43M|        return destination_->half_value(value, tag, context, ec);
  395|  1.43M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  398|  34.0k|    {
  399|  34.0k|        return destination_->double_value(value, tag, context, ec);
  400|  34.0k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKhLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  426|  1.36k|    {
  427|  1.36k|        return destination_->typed_array(s, tag, context, ec);
  428|  1.36k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  434|    888|    {
  435|    888|        return destination_->typed_array(s, tag, context, ec);
  436|    888|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKjLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  442|  25.9k|    {
  443|  25.9k|        return destination_->typed_array(s, tag, context, ec);
  444|  25.9k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  450|  1.56k|    {
  451|  1.56k|        return destination_->typed_array(s, tag, context, ec);
  452|  1.56k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKaLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  458|  1.05k|    {
  459|  1.05k|        return destination_->typed_array(s, tag, context, ec);
  460|  1.05k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKsLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  466|  1.94k|    {
  467|  1.94k|        return destination_->typed_array(s, tag, context, ec);
  468|  1.94k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKiLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  474|  6.71k|    {
  475|  6.71k|        return destination_->typed_array(s, tag, context, ec);
  476|  6.71k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKlLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  482|  5.01k|    {
  483|  5.01k|        return destination_->typed_array(s, tag, context, ec);
  484|  5.01k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  491|  9.60k|    {
  492|  9.60k|        return destination_->typed_array(half_arg, s, tag, context, ec);
  493|  9.60k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKfLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  499|  4.52k|    {
  500|  4.52k|        return destination_->typed_array(s, tag, context, ec);
  501|  4.52k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_typed_arrayERKNS_6detail4spanIKdLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  507|  2.29k|    {
  508|  2.29k|        return destination_->typed_array(s, tag, context, ec);
  509|  2.29k|    }

_ZNK8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE4sizeEv:
  464|  10.1k|        std::size_t size() const {return members_.size();}
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE5clearEv:
  468|   730k|        void clear() {members_.clear();}
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE5beginEv:
  445|   730k|        {
  446|   730k|            return members_.begin();
  447|   730k|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE3endEv:
  450|   730k|        {
  451|   730k|            return members_.end();
  452|   730k|        }
_ZN8jsoncons9key_valueINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EEE5valueEv:
  172|   108k|        {
  173|   108k|            return value_;
  174|   108k|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEED2Ev:
  430|  3.63M|        {
  431|  3.63M|            flatten_and_destroy();
  432|  3.63M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE19flatten_and_destroyEv:
 1008|  3.63M|        {
 1009|  3.63M|            if (!members_.empty())
  ------------------
  |  Branch (1009:17): [True: 19.4k, False: 3.61M]
  ------------------
 1010|  19.4k|            {
 1011|  19.4k|                json_array<Json> temp(get_allocator());
 1012|       |
 1013|  19.4k|                for (auto& kv : members_)
  ------------------
  |  Branch (1013:31): [True: 60.8k, False: 19.4k]
  ------------------
 1014|  60.8k|                {
 1015|  60.8k|                    switch (kv.value().storage_kind())
 1016|  60.8k|                    {
 1017|  12.6k|                        case json_storage_kind::array_value:
  ------------------
  |  Branch (1017:25): [True: 12.6k, False: 48.2k]
  ------------------
 1018|  17.3k|                        case json_storage_kind::object_value:
  ------------------
  |  Branch (1018:25): [True: 4.67k, False: 56.1k]
  ------------------
 1019|  17.3k|                            if (!kv.value().empty())
  ------------------
  |  Branch (1019:33): [True: 9.46k, False: 7.85k]
  ------------------
 1020|  9.46k|                            {
 1021|  9.46k|                                temp.emplace_back(std::move(kv.value()));
 1022|  9.46k|                            }
 1023|  17.3k|                            break;
 1024|  43.5k|                        default:
  ------------------
  |  Branch (1024:25): [True: 43.5k, False: 17.3k]
  ------------------
 1025|  43.5k|                            break;
 1026|  60.8k|                    }
 1027|  60.8k|                }
 1028|  19.4k|            }
 1029|  3.63M|        }
_ZNK8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE5emptyEv:
  435|  4.67k|        {
  436|  4.67k|            return members_.empty();
  437|  4.67k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2EOS7_:
   47|  65.7M|        key_index_value(key_index_value&&) = default;
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_17json_object_arg_tERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  1.81M|        {
   43|  1.81M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEEC2EOSC_:
  361|  1.81M|        {
  362|  1.81M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEEC2ERKS6_:
  343|  1.81M|        {
  344|  1.81M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE18uninitialized_initEPNS_15key_index_valueISA_EEm:
  553|  25.3k|        {
  554|  25.3k|            auto first = items;
  555|  25.3k|            if (count > 0)
  ------------------
  |  Branch (555:17): [True: 25.3k, False: 0]
  ------------------
  556|  25.3k|            {
  557|  25.3k|                members_.reserve(count);
  558|       |
  559|  25.3k|                auto last = first + count;
  560|       |
  561|  25.3k|                std::sort(first, last, compare);
  562|  25.3k|                members_.emplace_back(first->name, std::move(first->value));
  563|  25.3k|                auto prev_it = first;
  564|  3.17M|                for (auto it = first+1; it != last; ++it)
  ------------------
  |  Branch (564:41): [True: 3.15M, False: 25.3k]
  ------------------
  565|  3.15M|                {
  566|  3.15M|                    if (it->name.compare(prev_it->name) != 0)
  ------------------
  |  Branch (566:25): [True: 53.2k, False: 3.09M]
  ------------------
  567|  53.2k|                    {
  568|  53.2k|                        members_.emplace_back(it->name, std::move(it->value));
  569|  53.2k|                    }
  570|  3.15M|                    ++prev_it;
  571|  3.15M|                }
  572|  25.3k|            }
  573|  25.3k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEaSEOS7_:
   58|  14.9M|        key_index_value& operator=(key_index_value&&) = default;
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE7compareERKNS_15key_index_valueISA_EESG_:
  544|  53.9M|        {
  545|  53.9M|            int comp = item1.name.compare(item2.name); 
  546|  53.9M|            if (comp < 0) return true;
  ------------------
  |  Branch (546:17): [True: 677k, False: 53.2M]
  ------------------
  547|  53.2M|            if (comp == 0) return item1.index < item2.index;
  ------------------
  |  Branch (547:17): [True: 52.6M, False: 552k]
  ------------------
  548|       |
  549|   552k|            return false;
  550|  53.2M|        }
_ZN8jsoncons9key_valueINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EEEC2IJSA_EEERKS7_DpOT_:
   99|  78.5k|        {
  100|  78.5k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_16json_array_arg_tERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  2.92M|        {
   43|  2.92M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJNS_9null_typeERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|   730k|        {
   43|   730k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRbRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  1.21M|        {
   43|  1.21M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_6detail17basic_string_viewIcNS3_11char_traitsIcEEEERNS_12semantic_tagEEEEONS3_12basic_stringIcSC_S5_EEmDpOT_:
   42|  1.03M|        {
   43|  1.03M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_17byte_string_arg_tERKNS_16byte_string_viewERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  5.60M|        {
   43|  5.60M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_17byte_string_arg_tERKNS_16byte_string_viewERmEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  24.1k|        {
   43|  24.1k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRmRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  7.26M|        {
   43|  7.26M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRlRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  12.6M|        {
   43|  12.6M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_10half_arg_tERtRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  4.01M|        {
   43|  4.01M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRdRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|   269k|        {
   43|   269k|        }

_ZN8jsoncons18basic_json_visitorIcEC2Ev:
   36|  32.5k|        basic_json_visitor() = default;
_ZN8jsoncons18basic_json_visitorIcED2Ev:
   38|  32.5k|        virtual ~basic_json_visitor() noexcept = default;
_ZN8jsoncons18basic_json_visitorIcE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  625|  1.80M|        {
  626|  1.80M|            return visit_begin_object(tag, context, ec);
  627|  1.80M|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  640|  2.71M|        {
  641|  2.71M|            return visit_begin_array(tag, context, ec);
  642|  2.71M|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKhLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  708|  1.36k|        {
  709|  1.36k|            bool more = begin_array(s.size(), tag, context, ec);
  710|  74.6k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (710:38): [True: 74.6k, False: 0]
  |  Branch (710:46): [True: 73.3k, False: 1.36k]
  ------------------
  711|  73.3k|            {
  712|  73.3k|                more = uint64_value(*p, semantic_tag::none, context, ec);
  713|  73.3k|            }
  714|  1.36k|            if (more)
  ------------------
  |  Branch (714:17): [True: 1.36k, False: 0]
  ------------------
  715|  1.36k|            {
  716|  1.36k|                more = end_array(context, ec);
  717|  1.36k|            }
  718|  1.36k|            return more;
  719|  1.36k|        }
_ZN8jsoncons18basic_json_visitorIcE11begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  274|  5.36M|        {
  275|  5.36M|            return visit_begin_array(length, tag, context, ec);
  276|  5.36M|        }
_ZN8jsoncons18basic_json_visitorIcE12uint64_valueEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  335|  14.4M|        {
  336|  14.4M|            return visit_uint64(value, tag, context, ec);
  337|  14.4M|        }
_ZN8jsoncons18basic_json_visitorIcE9end_arrayERKNS_11ser_contextERNSt3__110error_codeE:
  279|  4.74M|        {
  280|  4.74M|            return visit_end_array(context, ec);
  281|  4.74M|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  725|    888|        {
  726|    888|            bool more = begin_array(s.size(), tag, context, ec);
  727|  4.49k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (727:38): [True: 4.49k, False: 0]
  |  Branch (727:46): [True: 3.61k, False: 888]
  ------------------
  728|  3.61k|            {
  729|  3.61k|                more = uint64_value(*p, semantic_tag::none, context, ec);
  730|  3.61k|            }
  731|    888|            if (more)
  ------------------
  |  Branch (731:17): [True: 888, False: 0]
  ------------------
  732|    888|            {
  733|    888|                more = end_array(context, ec);
  734|    888|            }
  735|    888|            return more;
  736|    888|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKjLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  742|  25.9k|        {
  743|  25.9k|            bool more = begin_array(s.size(), tag, context, ec);
  744|  48.9k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (744:38): [True: 48.9k, False: 0]
  |  Branch (744:46): [True: 23.0k, False: 25.9k]
  ------------------
  745|  23.0k|            {
  746|  23.0k|                more = uint64_value(*p, semantic_tag::none, context, ec);
  747|  23.0k|            }
  748|  25.9k|            if (more)
  ------------------
  |  Branch (748:17): [True: 25.9k, False: 0]
  ------------------
  749|  25.9k|            {
  750|  25.9k|                more = end_array(context, ec);
  751|  25.9k|            }
  752|  25.9k|            return more;
  753|  25.9k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKmLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  759|  1.56k|        {
  760|  1.56k|            bool more = begin_array(s.size(), tag, context, ec);
  761|  21.2k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (761:38): [True: 21.2k, False: 0]
  |  Branch (761:46): [True: 19.6k, False: 1.56k]
  ------------------
  762|  19.6k|            {
  763|  19.6k|                more = uint64_value(*p,semantic_tag::none,context, ec);
  764|  19.6k|            }
  765|  1.56k|            if (more)
  ------------------
  |  Branch (765:17): [True: 1.56k, False: 0]
  ------------------
  766|  1.56k|            {
  767|  1.56k|                more = end_array(context, ec);
  768|  1.56k|            }
  769|  1.56k|            return more;
  770|  1.56k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKaLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  776|  1.05k|        {
  777|  1.05k|            bool more = begin_array(s.size(), tag,context, ec);
  778|  11.2k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (778:38): [True: 11.2k, False: 0]
  |  Branch (778:46): [True: 10.1k, False: 1.05k]
  ------------------
  779|  10.1k|            {
  780|  10.1k|                more = int64_value(*p,semantic_tag::none,context, ec);
  781|  10.1k|            }
  782|  1.05k|            if (more)
  ------------------
  |  Branch (782:17): [True: 1.05k, False: 0]
  ------------------
  783|  1.05k|            {
  784|  1.05k|                more = end_array(context, ec);
  785|  1.05k|            }
  786|  1.05k|            return more;
  787|  1.05k|        }
_ZN8jsoncons18basic_json_visitorIcE11int64_valueElNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  343|  24.7M|        {
  344|  24.7M|            return visit_int64(value, tag, context, ec);
  345|  24.7M|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKsLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  793|  1.94k|        {
  794|  1.94k|            bool more = begin_array(s.size(), tag,context, ec);
  795|   267k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (795:38): [True: 267k, False: 0]
  |  Branch (795:46): [True: 265k, False: 1.94k]
  ------------------
  796|   265k|            {
  797|   265k|                more = int64_value(*p,semantic_tag::none,context, ec);
  798|   265k|            }
  799|  1.94k|            if (more)
  ------------------
  |  Branch (799:17): [True: 1.94k, False: 0]
  ------------------
  800|  1.94k|            {
  801|  1.94k|                more = end_array(context, ec);
  802|  1.94k|            }
  803|  1.94k|            return more;
  804|  1.94k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKiLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  810|  6.71k|        {
  811|  6.71k|            bool more = begin_array(s.size(), tag,context, ec);
  812|  50.4k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (812:38): [True: 50.4k, False: 0]
  |  Branch (812:46): [True: 43.7k, False: 6.71k]
  ------------------
  813|  43.7k|            {
  814|  43.7k|                more = int64_value(*p,semantic_tag::none,context, ec);
  815|  43.7k|            }
  816|  6.71k|            if (more)
  ------------------
  |  Branch (816:17): [True: 6.71k, False: 0]
  ------------------
  817|  6.71k|            {
  818|  6.71k|                more = end_array(context, ec);
  819|  6.71k|            }
  820|  6.71k|            return more;
  821|  6.71k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKlLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  827|  5.01k|        {
  828|  5.01k|            bool more = begin_array(s.size(), tag,context, ec);
  829|   230k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (829:38): [True: 230k, False: 0]
  |  Branch (829:46): [True: 225k, False: 5.01k]
  ------------------
  830|   225k|            {
  831|   225k|                more = int64_value(*p,semantic_tag::none,context, ec);
  832|   225k|            }
  833|  5.01k|            if (more)
  ------------------
  |  Branch (833:17): [True: 5.01k, False: 0]
  ------------------
  834|  5.01k|            {
  835|  5.01k|                more = end_array(context, ec);
  836|  5.01k|            }
  837|  5.01k|            return more;
  838|  5.01k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  845|  9.60k|        {
  846|  9.60k|            bool more = begin_array(s.size(), tag, context, ec);
  847|  2.59M|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (847:38): [True: 2.59M, False: 0]
  |  Branch (847:46): [True: 2.58M, False: 9.60k]
  ------------------
  848|  2.58M|            {
  849|  2.58M|                more = half_value(*p, semantic_tag::none, context, ec);
  850|  2.58M|            }
  851|  9.60k|            if (more)
  ------------------
  |  Branch (851:17): [True: 9.60k, False: 0]
  ------------------
  852|  9.60k|            {
  853|  9.60k|                more = end_array(context, ec);
  854|  9.60k|            }
  855|  9.60k|            return more;
  856|  9.60k|        }
_ZN8jsoncons18basic_json_visitorIcE10half_valueEtNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  351|  5.45M|        {
  352|  5.45M|            return visit_half(value, tag, context, ec);
  353|  5.45M|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKfLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  862|  4.52k|        {
  863|  4.52k|            bool more = begin_array(s.size(), tag,context, ec);
  864|   237k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (864:38): [True: 237k, False: 0]
  |  Branch (864:46): [True: 232k, False: 4.52k]
  ------------------
  865|   232k|            {
  866|   232k|                more = double_value(*p,semantic_tag::none,context, ec);
  867|   232k|            }
  868|  4.52k|            if (more)
  ------------------
  |  Branch (868:17): [True: 4.52k, False: 0]
  ------------------
  869|  4.52k|            {
  870|  4.52k|                more = end_array(context, ec);
  871|  4.52k|            }
  872|  4.52k|            return more;
  873|  4.52k|        }
_ZN8jsoncons18basic_json_visitorIcE12double_valueEdNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  359|   303k|        {
  360|   303k|            return visit_double(value, tag, context, ec);
  361|   303k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_typed_arrayERKNS_6detail4spanIKdLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  879|  2.29k|        {
  880|  2.29k|            bool more = begin_array(s.size(), tag,context, ec);
  881|  4.86k|            for (auto p = s.begin(); more && p != s.end(); ++p)
  ------------------
  |  Branch (881:38): [True: 4.86k, False: 0]
  |  Branch (881:46): [True: 2.56k, False: 2.29k]
  ------------------
  882|  2.56k|            {
  883|  2.56k|                more = double_value(*p,semantic_tag::none,context, ec);
  884|  2.56k|            }
  885|  2.29k|            if (more)
  ------------------
  |  Branch (885:17): [True: 2.29k, False: 0]
  ------------------
  886|  2.29k|            {
  887|  2.29k|                more = end_array(context, ec);
  888|  2.29k|            }
  889|  2.29k|            return more;
  890|  2.29k|        }
_ZN8jsoncons18basic_json_visitorIcE5flushEv:
   41|    410|        {
   42|    410|            visit_flush();
   43|    410|        }
_ZN8jsoncons18basic_json_visitorIcE12begin_objectENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  251|  12.1k|        {
  252|  12.1k|            return visit_begin_object(tag, context, ec);
  253|  12.1k|        }
_ZN8jsoncons18basic_json_visitorIcE12begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  259|  3.61M|        {
  260|  3.61M|            return visit_begin_object(length, tag, context, ec);
  261|  3.61M|        }
_ZN8jsoncons18basic_json_visitorIcE10end_objectERKNS_11ser_contextERNSt3__110error_codeE:
  264|  3.61M|        {
  265|  3.61M|            return visit_end_object(context, ec);
  266|  3.61M|        }
_ZN8jsoncons18basic_json_visitorIcE11begin_arrayENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  269|   431k|        {
  270|   431k|            return visit_begin_array(tag, context, ec);
  271|   431k|        }
_ZN8jsoncons18basic_json_visitorIcE3keyERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEERKNS_11ser_contextERNS4_10error_codeE:
  284|  8.67M|        {
  285|  8.67M|            return visit_key(name, context, ec);
  286|  8.67M|        }
_ZN8jsoncons18basic_json_visitorIcE10null_valueENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  291|  1.46M|        {
  292|  1.46M|            return visit_null(tag, context, ec);
  293|  1.46M|        }
_ZN8jsoncons18basic_json_visitorIcE10bool_valueEbNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  299|  2.43M|        {
  300|  2.43M|            return visit_bool(value, tag, context, ec);
  301|  2.43M|        }
_ZN8jsoncons18basic_json_visitorIcE12string_valueERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS4_10error_codeE:
  307|  2.06M|        {
  308|  2.06M|            return visit_string(value, tag, context, ec);
  309|  2.06M|        }
_ZN8jsoncons18basic_json_visitorIcE17byte_string_valueINS_16byte_string_viewEEEbRKT_NS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeENSB_9enable_ifIXsr16extension_traits16is_byte_sequenceIS4_EE5valueEiE4typeE:
  317|  11.2M|        {
  318|  11.2M|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), tag, context, ec);
  319|  11.2M|        }
_ZN8jsoncons18basic_json_visitorIcE17byte_string_valueINS_16byte_string_viewEEEbRKT_mRKNS_11ser_contextERNSt3__110error_codeENSA_9enable_ifIXsr16extension_traits16is_byte_sequenceIS4_EE5valueEiE4typeE:
  327|  48.2k|        {
  328|  48.2k|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), ext_tag, context, ec);
  329|  48.2k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKhEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  2.72k|        {
  383|  2.72k|            return visit_typed_array(data, tag, context, ec);
  384|  2.72k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKtEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  1.77k|        {
  383|  1.77k|            return visit_typed_array(data, tag, context, ec);
  384|  1.77k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKjEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  51.9k|        {
  383|  51.9k|            return visit_typed_array(data, tag, context, ec);
  384|  51.9k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKmEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  3.12k|        {
  383|  3.12k|            return visit_typed_array(data, tag, context, ec);
  384|  3.12k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKaEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  2.10k|        {
  383|  2.10k|            return visit_typed_array(data, tag, context, ec);
  384|  2.10k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKsEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  3.88k|        {
  383|  3.88k|            return visit_typed_array(data, tag, context, ec);
  384|  3.88k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKiEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  13.4k|        {
  383|  13.4k|            return visit_typed_array(data, tag, context, ec);
  384|  13.4k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKlEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  10.0k|        {
  383|  10.0k|            return visit_typed_array(data, tag, context, ec);
  384|  10.0k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayENS_10half_arg_tERKNS_6detail4spanIKtLm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  403|  19.2k|        {
  404|  19.2k|            return visit_typed_array(half_arg, s, tag, context, ec);
  405|  19.2k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKfEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  9.05k|        {
  383|  9.05k|            return visit_typed_array(data, tag, context, ec);
  384|  9.05k|        }
_ZN8jsoncons18basic_json_visitorIcE11typed_arrayIKdEEbRKNS_6detail4spanIT_Lm18446744073709551615EEENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  382|  4.59k|        {
  383|  4.59k|            return visit_typed_array(data, tag, context, ec);
  384|  4.59k|        }
_ZN8jsoncons26basic_default_json_visitorIcEC2EbNSt3__110error_codeE:
  931|  10.8k|        {
  932|  10.8k|        }

_ZN8jsoncons11ser_contextD2Ev:
   15|  10.8k|    virtual ~ser_context() noexcept = default;

_ZN8jsoncons11string_sinkINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEC2ERS7_:
  222|  67.3M|        {
  223|  67.3M|        }
_ZN8jsoncons11string_sinkINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEE9push_backEc:
  243|   921M|        {
  244|   921M|            buf_ptr->push_back(ch);
  245|   921M|        }

_ZN8jsoncons13stream_sourceIhEC2ERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEEm:
  101|  10.8k|        {
  102|  10.8k|        }
_ZN8jsoncons18basic_null_istreamIcEC1Ev:
   48|  10.8k|        {
   49|  10.8k|        }
_ZN8jsoncons18basic_null_istreamIcE11null_bufferC2Ev:
   36|  10.8k|            null_buffer() = default;
_ZN8jsoncons13stream_sourceIhED2Ev:
  121|  10.8k|        {
  122|  10.8k|        }
_ZNK8jsoncons13stream_sourceIhE8positionEv:
  158|  7.71k|        {
  159|  7.71k|            return position_;
  160|  7.71k|        }
_ZN8jsoncons13stream_sourceIhE4readEPhm:
  220|  62.5M|        {
  221|  62.5M|            std::size_t len = 0;
  222|  62.5M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (222:17): [True: 62.5M, False: 1.91k]
  ------------------
  223|  62.5M|            {
  224|  62.5M|                len = (std::min)(buffer_length_, length);
  225|  62.5M|                std::memcpy(p, buffer_data_, len*sizeof(value_type));
  226|  62.5M|                buffer_data_ += len;
  227|  62.5M|                buffer_length_ -= len;
  228|  62.5M|                position_ += len;
  229|  62.5M|            }
  230|  62.5M|            if (length - len == 0)
  ------------------
  |  Branch (230:17): [True: 62.5M, False: 4.05k]
  ------------------
  231|  62.5M|            {
  232|  62.5M|                return len;
  233|  62.5M|            }
  234|  4.05k|            else if (length - len < buffer_.size())
  ------------------
  |  Branch (234:22): [True: 3.88k, False: 168]
  ------------------
  235|  3.88k|            {
  236|  3.88k|                fill_buffer();
  237|  3.88k|                if (buffer_length_ > 0)
  ------------------
  |  Branch (237:21): [True: 1.94k, False: 1.94k]
  ------------------
  238|  1.94k|                {
  239|  1.94k|                    std::size_t len2 = (std::min)(buffer_length_, length-len);
  240|  1.94k|                    std::memcpy(p+len, buffer_data_, len2*sizeof(value_type));
  241|  1.94k|                    buffer_data_ += len2;
  242|  1.94k|                    buffer_length_ -= len2;
  243|  1.94k|                    position_ += len2;
  244|  1.94k|                    len += len2;
  245|  1.94k|                }
  246|  3.88k|                return len;
  247|  3.88k|            }
  248|    168|            else
  249|    168|            {
  250|    168|                if (stream_ptr_->eof())
  ------------------
  |  Branch (250:21): [True: 0, False: 168]
  ------------------
  251|      0|                {
  252|      0|                    buffer_length_ = 0;
  253|      0|                    return 0;
  254|      0|                }
  255|    168|                JSONCONS_TRY
  ------------------
  |  |  239|    168|    #define JSONCONS_TRY try
  ------------------
  256|    168|                {
  257|    168|                    std::streamsize count = sbuf_->sgetn(reinterpret_cast<char_type*>(p+len), length-len);
  258|    168|                    std::size_t len2 = static_cast<std::size_t>(count);
  259|    168|                    if (len2 < length-len)
  ------------------
  |  Branch (259:25): [True: 15, False: 153]
  ------------------
  260|     15|                    {
  261|     15|                        stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::eofbit);
  262|     15|                    }
  263|    168|                    len += len2;
  264|    168|                    position_ += len2;
  265|    168|                    return len;
  266|    168|                }
  267|    168|                JSONCONS_CATCH(const std::exception&)     
  268|    168|                {
  269|      0|                    stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::badbit | std::ios::eofbit);
  270|      0|                    return 0;
  271|      0|                }
  272|    168|            }
  273|  62.5M|        }
_ZN8jsoncons13stream_sourceIhE11fill_bufferEv:
  276|  25.1k|        {
  277|  25.1k|            if (stream_ptr_->eof())
  ------------------
  |  Branch (277:17): [True: 7.74k, False: 17.4k]
  ------------------
  278|  7.74k|            {
  279|  7.74k|                buffer_length_ = 0;
  280|  7.74k|                return;
  281|  7.74k|            }
  282|       |
  283|  17.4k|            buffer_data_ = buffer_.data();
  284|  17.4k|            JSONCONS_TRY
  ------------------
  |  |  239|  17.4k|    #define JSONCONS_TRY try
  ------------------
  285|  17.4k|            {
  286|  17.4k|                std::streamsize count = sbuf_->sgetn(reinterpret_cast<char_type*>(buffer_.data()), buffer_.size());
  287|  17.4k|                buffer_length_ = static_cast<std::size_t>(count);
  288|       |
  289|  17.4k|                if (buffer_length_ < buffer_.size())
  ------------------
  |  Branch (289:21): [True: 10.8k, False: 6.59k]
  ------------------
  290|  10.8k|                {
  291|  10.8k|                    stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::eofbit);
  292|  10.8k|                }
  293|  17.4k|            }
  294|  17.4k|            JSONCONS_CATCH(const std::exception&)     
  295|  17.4k|            {
  296|      0|                stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::badbit | std::ios::eofbit);
  297|      0|                buffer_length_ = 0;
  298|      0|            }
  299|  17.4k|        }
_ZN8jsoncons13source_readerINS_13stream_sourceIhEEE4readINSt3__16vectorIhNS5_9allocatorIhEEEEEENS5_9enable_ifIXaaaasr3std14is_convertibleIhNT_10value_typeEEE5valuesr16extension_traits11has_reserveISB_EE5valuesr16extension_traits14has_data_exactIPhSB_EE5valueEmE4typeERS2_RSB_m:
  736|  13.9M|        {
  737|  13.9M|            std::size_t unread = length;
  738|       |
  739|  13.9M|            std::size_t n = (std::min)(max_buffer_length, unread);
  740|  16.7M|            while (n > 0 && !source.eof())
  ------------------
  |  Branch (740:20): [True: 2.87M, False: 13.9M]
  |  Branch (740:29): [True: 2.87M, False: 550]
  ------------------
  741|  2.87M|            {
  742|  2.87M|                std::size_t offset = v.size();
  743|  2.87M|                v.resize(v.size()+n);
  744|  2.87M|                std::size_t actual = source.read(v.data()+offset, n);
  745|  2.87M|                unread -= actual;
  746|  2.87M|                n = (std::min)(max_buffer_length, unread);
  747|  2.87M|            }
  748|       |
  749|  13.9M|            return length - unread;
  750|  13.9M|        }
_ZNK8jsoncons13stream_sourceIhE3eofEv:
  148|  3.55M|        {
  149|  3.55M|            return buffer_length_ == 0 && stream_ptr_->eof();
  ------------------
  |  Branch (149:20): [True: 1.32k, False: 3.55M]
  |  Branch (149:43): [True: 873, False: 451]
  ------------------
  150|  3.55M|        }
_ZN8jsoncons13source_readerINS_13stream_sourceIhEEE4readINSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEEENS5_9enable_ifIXaaaasr3std14is_convertibleIhNT_10value_typeEEE5valuesr16extension_traits11has_reserveISD_EE5valuentsr16extension_traits14has_data_exactIPhSD_EE5valueEmE4typeERS2_RSD_m:
  759|  2.00M|        {
  760|  2.00M|            std::size_t unread = length;
  761|       |
  762|  2.00M|            std::size_t n = (std::min)(max_buffer_length, unread);
  763|  2.68M|            while (n > 0 && !source.eof())
  ------------------
  |  Branch (763:20): [True: 679k, False: 2.00M]
  |  Branch (763:29): [True: 678k, False: 323]
  ------------------
  764|   678k|            {
  765|   678k|                v.reserve(v.size()+n);
  766|   678k|                std::size_t actual = 0;
  767|  11.1M|                while (actual < n)
  ------------------
  |  Branch (767:24): [True: 10.4M, False: 678k]
  ------------------
  768|  10.4M|                {
  769|  10.4M|                    typename Source::value_type c;
  770|  10.4M|                    if (source.read(&c,1) != 1)
  ------------------
  |  Branch (770:25): [True: 201, False: 10.4M]
  ------------------
  771|    201|                    {
  772|    201|                        break;
  773|    201|                    }
  774|  10.4M|                    v.push_back(c);
  775|  10.4M|                    ++actual;
  776|  10.4M|                }
  777|   678k|                unread -= actual;
  778|   678k|                n = (std::min)(max_buffer_length, unread);
  779|   678k|            }
  780|       |
  781|  2.00M|            return length - unread;
  782|  2.00M|        }
_ZN8jsoncons13stream_sourceIhE4peekEv:
  188|   219M|        {
  189|   219M|            if (buffer_length_ == 0)
  ------------------
  |  Branch (189:17): [True: 21.2k, False: 219M]
  ------------------
  190|  21.2k|            {
  191|  21.2k|                fill_buffer();
  192|  21.2k|            }
  193|   219M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (193:17): [True: 219M, False: 5.82k]
  ------------------
  194|   219M|            {
  195|   219M|                value_type c = *buffer_data_;
  196|   219M|                return char_result<value_type>{c, false};
  197|   219M|            }
  198|  5.82k|            else
  199|  5.82k|            {
  200|  5.82k|                return char_result<value_type>{0, true};
  201|  5.82k|            }
  202|   219M|        }
_ZN8jsoncons13stream_sourceIhE6ignoreEm:
  163|  33.0M|        {
  164|  33.0M|            std::size_t len = 0;
  165|  33.0M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (165:17): [True: 33.0M, False: 0]
  ------------------
  166|  33.0M|            {
  167|  33.0M|                len = (std::min)(buffer_length_, length);
  168|  33.0M|                position_ += len;
  169|  33.0M|                buffer_data_ += len;
  170|  33.0M|                buffer_length_ -= len;
  171|  33.0M|            }
  172|  33.0M|            while (len < length)
  ------------------
  |  Branch (172:20): [True: 0, False: 33.0M]
  ------------------
  173|      0|            {
  174|      0|                fill_buffer();
  175|      0|                if (buffer_length_ == 0)
  ------------------
  |  Branch (175:21): [True: 0, False: 0]
  ------------------
  176|      0|                {
  177|      0|                    break;
  178|      0|                }
  179|      0|                std::size_t len2 = (std::min)(buffer_length_, length-len);
  180|      0|                position_ += len2;
  181|      0|                buffer_data_ += len2;
  182|      0|                buffer_length_ -= len2;
  183|      0|                len += len2;
  184|      0|            }
  185|  33.0M|        }

_ZN8jsoncons14unicode_traits8validateIcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_14convert_resultIS4_EEE4typeEPKS4_m:
 1130|  1.49M|    {
 1131|  1.49M|        conv_errc  result = conv_errc();
 1132|  1.49M|        const CharT* last = data + length;
 1133|  3.96M|        while (data != last) 
  ------------------
  |  Branch (1133:16): [True: 2.46M, False: 1.49M]
  ------------------
 1134|  2.46M|        {
 1135|  2.46M|            std::size_t len = static_cast<std::size_t>(trailing_bytes_for_utf8[static_cast<uint8_t>(*data)]) + 1;
 1136|  2.46M|            if (len > (std::size_t)(last - data))
  ------------------
  |  Branch (1136:17): [True: 17, False: 2.46M]
  ------------------
 1137|     17|            {
 1138|     17|                return convert_result<CharT>{data, conv_errc::source_exhausted};
 1139|     17|            }
 1140|  2.46M|            if ((result=is_legal_utf8(data, len)) != conv_errc())
  ------------------
  |  Branch (1140:17): [True: 97, False: 2.46M]
  ------------------
 1141|     97|            {
 1142|     97|                return convert_result<CharT>{data,result} ;
 1143|     97|            }
 1144|  2.46M|            data += len;
 1145|  2.46M|        }
 1146|  1.49M|        return convert_result<CharT>{data,result} ;
 1147|  1.49M|    }
_ZN8jsoncons14unicode_traits13is_legal_utf8IcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_9conv_errcEE4typeEPKS4_m:
  299|  2.46M|    {
  300|  2.46M|        uint8_t a;
  301|  2.46M|        const CharT* srcptr = first+length;
  302|  2.46M|        switch (length) {
  303|     12|        default:
  ------------------
  |  Branch (303:9): [True: 12, False: 2.46M]
  ------------------
  304|     12|            return conv_errc::over_long_utf8_sequence;
  305|  1.03k|        case 4:
  ------------------
  |  Branch (305:9): [True: 1.03k, False: 2.46M]
  ------------------
  306|  1.03k|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (306:17): [True: 9, False: 1.02k]
  ------------------
  307|      9|                return conv_errc::expected_continuation_byte;
  308|  1.03k|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|  1.02k|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  309|  1.62k|        case 3:
  ------------------
  |  Branch (309:9): [True: 599, False: 2.46M]
  ------------------
  310|  1.62k|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (310:17): [True: 7, False: 1.61k]
  ------------------
  311|      7|                return conv_errc::expected_continuation_byte;
  312|  1.62k|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|  1.61k|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  313|  2.75k|        case 2:
  ------------------
  |  Branch (313:9): [True: 1.13k, False: 2.46M]
  ------------------
  314|  2.75k|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (314:17): [True: 20, False: 2.73k]
  ------------------
  315|     20|                return conv_errc::expected_continuation_byte;
  316|       |
  317|  2.73k|            switch (static_cast<uint8_t>(*first)) 
  318|  2.73k|            {
  319|       |                // no fall-through in this inner switch
  320|     82|                case 0xE0: if (a < 0xA0) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (320:17): [True: 82, False: 2.65k]
  |  Branch (320:32): [True: 7, False: 75]
  ------------------
  321|    511|                case 0xED: if (a > 0x9F) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (321:17): [True: 511, False: 2.22k]
  |  Branch (321:32): [True: 3, False: 508]
  ------------------
  322|    508|                case 0xF0: if (a < 0x90) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (322:17): [True: 241, False: 2.49k]
  |  Branch (322:32): [True: 5, False: 236]
  ------------------
  323|    777|                case 0xF4: if (a > 0x8F) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (323:17): [True: 777, False: 1.95k]
  |  Branch (323:32): [True: 3, False: 774]
  ------------------
  324|  1.12k|                default:   if (a < 0x80) return conv_errc::source_illegal;
  ------------------
  |  Branch (324:17): [True: 1.12k, False: 1.61k]
  |  Branch (324:32): [True: 0, False: 1.12k]
  ------------------
  325|  2.73k|            }
  326|       |
  327|  2.73k|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|  2.71k|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  328|  2.46M|        case 1:
  ------------------
  |  Branch (328:9): [True: 2.46M, False: 2.78k]
  ------------------
  329|  2.46M|            if (static_cast<uint8_t>(*first) >= 0x80 && static_cast<uint8_t>(*first) < 0xC2)
  ------------------
  |  Branch (329:17): [True: 2.74k, False: 2.46M]
  |  Branch (329:57): [True: 30, False: 2.71k]
  ------------------
  330|     30|                return conv_errc::source_illegal;
  331|  2.46M|            break;
  332|  2.46M|        }
  333|  2.46M|        if (static_cast<uint8_t>(*first) > 0xF4) 
  ------------------
  |  Branch (333:13): [True: 1, False: 2.46M]
  ------------------
  334|      1|            return conv_errc::source_illegal;
  335|       |
  336|  2.46M|        return conv_errc();
  337|  2.46M|    }

_ZN8jsoncons4cbor6detail24min_length_for_stringrefEm:
   66|  6.85M|{
   67|  6.85M|    std::size_t n;
   68|  6.85M|    if (index <= 23)
  ------------------
  |  Branch (68:9): [True: 1.47M, False: 5.38M]
  ------------------
   69|  1.47M|    {
   70|  1.47M|        n = 3;
   71|  1.47M|    }
   72|  5.38M|    else if (index <= 255)
  ------------------
  |  Branch (72:14): [True: 2.51M, False: 2.87M]
  ------------------
   73|  2.51M|    {
   74|  2.51M|        n = 4;
   75|  2.51M|    }
   76|  2.87M|    else if (index <= 65535)
  ------------------
  |  Branch (76:14): [True: 2.71M, False: 157k]
  ------------------
   77|  2.71M|    {
   78|  2.71M|        n = 5;
   79|  2.71M|    }
   80|   157k|    else if (index <= 4294967295)
  ------------------
  |  Branch (80:14): [True: 157k, False: 0]
  ------------------
   81|   157k|    {
   82|   157k|        n = 7;
   83|   157k|    }
   84|      0|    else 
   85|      0|    {
   86|      0|        n = 11;
   87|      0|    }
   88|  6.85M|    return n;
   89|  6.85M|}

_ZN8jsoncons4cbor15make_error_codeENS0_9cbor_errcE:
   84|  8.01k|{
   85|  8.01k|    return std::error_code(static_cast<int>(e),cbor_error_category());
   86|  8.01k|}
_ZN8jsoncons4cbor19cbor_error_categoryEv:
   77|  8.01k|{
   78|  8.01k|  static cbor_error_category_impl instance;
   79|  8.01k|  return instance;
   80|  8.01k|}
_ZNK8jsoncons4cbor24cbor_error_category_impl7messageEi:
   42|  7.71k|    {
   43|  7.71k|        switch (static_cast<cbor_errc>(ev))
   44|  7.71k|        {
   45|  6.87k|            case cbor_errc::unexpected_eof:
  ------------------
  |  Branch (45:13): [True: 6.87k, False: 848]
  ------------------
   46|  6.87k|                return "Unexpected end of file";
   47|      0|            case cbor_errc::source_error:
  ------------------
  |  Branch (47:13): [True: 0, False: 7.71k]
  ------------------
   48|      0|                return "Source error";
   49|    181|            case cbor_errc::invalid_decimal_fraction:
  ------------------
  |  Branch (49:13): [True: 181, False: 7.53k]
  ------------------
   50|    181|                return "Invalid decimal fraction";
   51|    101|            case cbor_errc::invalid_bigfloat:
  ------------------
  |  Branch (51:13): [True: 101, False: 7.61k]
  ------------------
   52|    101|                return "Invalid bigfloat";
   53|    114|            case cbor_errc::invalid_utf8_text_string:
  ------------------
  |  Branch (53:13): [True: 114, False: 7.60k]
  ------------------
   54|    114|                return "Illegal UTF-8 encoding in text string";
   55|      0|            case cbor_errc::too_many_items:
  ------------------
  |  Branch (55:13): [True: 0, False: 7.71k]
  ------------------
   56|      0|                return "Too many items were added to a CBOR map or array of known length";
   57|      0|            case cbor_errc::too_few_items:
  ------------------
  |  Branch (57:13): [True: 0, False: 7.71k]
  ------------------
   58|      0|                return "Too few items were added to a CBOR map or array of known length";
   59|      0|            case cbor_errc::number_too_large:
  ------------------
  |  Branch (59:13): [True: 0, False: 7.71k]
  ------------------
   60|      0|                return "Number exceeds implementation limits";
   61|    116|            case cbor_errc::stringref_too_large:
  ------------------
  |  Branch (61:13): [True: 116, False: 7.60k]
  ------------------
   62|    116|                return "stringref exceeds stringref map size";
   63|      5|            case cbor_errc::max_nesting_depth_exceeded:
  ------------------
  |  Branch (63:13): [True: 5, False: 7.71k]
  ------------------
   64|      5|                return "Data item nesting exceeds limit in options";
   65|    234|            case cbor_errc::unknown_type:
  ------------------
  |  Branch (65:13): [True: 234, False: 7.48k]
  ------------------
   66|    234|                return "An unknown type was found in the stream";
   67|     97|            case cbor_errc::illegal_chunked_string:
  ------------------
  |  Branch (67:13): [True: 97, False: 7.62k]
  ------------------
   68|     97|                return "An illegal type was found while parsing an indefinite length string";
   69|      0|            default:
  ------------------
  |  Branch (69:13): [True: 0, False: 7.71k]
  ------------------
   70|      0|                return "Unknown CBOR parser error";
   71|  7.71k|        }
   72|  7.71k|    }

_ZN8jsoncons4cbor19cbor_decode_optionsC1Ev:
   49|  10.8k|    {
   50|  10.8k|    }
_ZN8jsoncons4cbor19cbor_options_commonC2Ev:
   30|  10.8k|    {
   31|  10.8k|    }
_ZN8jsoncons4cbor19cbor_options_commonD2Ev:
   26|  21.7k|    virtual ~cbor_options_common() = default;
_ZN8jsoncons4cbor19cbor_options_commonC2ERKS1_:
   33|  10.8k|    cbor_options_common(const cbor_options_common&) = default;
_ZNK8jsoncons4cbor19cbor_options_common17max_nesting_depthEv:
   39|  10.2M|    {
   40|  10.2M|        return max_nesting_depth_;
   41|  10.2M|    }

_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEEC2IRNS4_13basic_istreamIcNS4_11char_traitsIcEEEEEEOT_RKNS0_19cbor_decode_optionsERKS6_:
  186|  10.8k|    {
  187|  10.8k|        state_stack_.emplace_back(parse_mode::root,0);
  188|  10.8k|    }
_ZN8jsoncons4cbor11parse_stateC2ENS0_10parse_modeEmb:
   37|  11.3M|    {
   38|  11.3M|    }
_ZNK8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE4lineEv:
  227|  7.71k|    {
  228|  7.71k|        return 0;
  229|  7.71k|    }
_ZNK8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE6columnEv:
  232|  7.71k|    {
  233|  7.71k|        return source_.position();
  234|  7.71k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE5resetEv:
  196|  10.8k|    {
  197|  10.8k|        more_ = true;
  198|  10.8k|        done_ = false;
  199|  10.8k|        text_buffer_.clear();
  200|  10.8k|        bytes_buffer_.clear();
  201|  10.8k|        item_tag_ = 0;
  202|  10.8k|        state_stack_.clear();
  203|  10.8k|        state_stack_.emplace_back(parse_mode::root,0);
  204|  10.8k|        typed_array_.clear();
  205|  10.8k|        stringref_map_stack_.clear();
  206|  10.8k|        nesting_depth_ = 0;
  207|  10.8k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE5parseERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  237|  10.8k|    {
  238|  72.0M|        while (!done_ && more_)
  ------------------
  |  Branch (238:16): [True: 72.0M, False: 205]
  |  Branch (238:26): [True: 72.0M, False: 8.95k]
  ------------------
  239|  72.0M|        {
  240|  72.0M|            switch (state_stack_.back().mode)
  ------------------
  |  Branch (240:21): [True: 0, False: 72.0M]
  ------------------
  241|  72.0M|            {
  242|  1.13M|                case parse_mode::multi_dim:
  ------------------
  |  Branch (242:17): [True: 1.13M, False: 70.9M]
  ------------------
  243|  1.13M|                {
  244|  1.13M|                    if (state_stack_.back().index == 0)
  ------------------
  |  Branch (244:25): [True: 1.11M, False: 27.8k]
  ------------------
  245|  1.11M|                    {
  246|  1.11M|                        ++state_stack_.back().index;
  247|  1.11M|                        read_item(visitor, ec);
  248|  1.11M|                    }
  249|  27.8k|                    else
  250|  27.8k|                    {
  251|  27.8k|                        produce_end_multi_dim(visitor, ec);
  252|  27.8k|                    }
  253|  1.13M|                    break;
  254|      0|                }
  255|  5.77M|                case parse_mode::array:
  ------------------
  |  Branch (255:17): [True: 5.77M, False: 66.2M]
  ------------------
  256|  5.77M|                {
  257|  5.77M|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (257:25): [True: 4.09M, False: 1.68M]
  ------------------
  258|  4.09M|                    {
  259|  4.09M|                        ++state_stack_.back().index;
  260|  4.09M|                        read_item(visitor, ec);
  261|  4.09M|                    }
  262|  1.68M|                    else
  263|  1.68M|                    {
  264|  1.68M|                        end_array(visitor, ec);
  265|  1.68M|                    }
  266|  5.77M|                    break;
  267|      0|                }
  268|  32.0M|                case parse_mode::indefinite_array:
  ------------------
  |  Branch (268:17): [True: 32.0M, False: 39.9M]
  ------------------
  269|  32.0M|                {
  270|  32.0M|                    auto c = source_.peek();
  271|  32.0M|                    if (c.eof)
  ------------------
  |  Branch (271:25): [True: 1.09k, False: 32.0M]
  ------------------
  272|  1.09k|                    {
  273|  1.09k|                        ec = cbor_errc::unexpected_eof;
  274|  1.09k|                        more_ = false;
  275|  1.09k|                        return;
  276|  1.09k|                    }
  277|  32.0M|                    if (c.value == 0xff)
  ------------------
  |  Branch (277:25): [True: 396k, False: 31.6M]
  ------------------
  278|   396k|                    {
  279|   396k|                        source_.ignore(1);
  280|   396k|                        end_array(visitor, ec);
  281|   396k|                    }
  282|  31.6M|                    else
  283|  31.6M|                    {
  284|  31.6M|                        read_item(visitor, ec);
  285|  31.6M|                    }
  286|  32.0M|                    break;
  287|  32.0M|                }
  288|  8.68M|                case parse_mode::map_key:
  ------------------
  |  Branch (288:17): [True: 8.68M, False: 63.3M]
  ------------------
  289|  8.68M|                {
  290|  8.68M|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (290:25): [True: 1.00M, False: 7.68M]
  ------------------
  291|  1.00M|                    {
  292|  1.00M|                        ++state_stack_.back().index;
  293|  1.00M|                        state_stack_.back().mode = parse_mode::map_value;
  294|  1.00M|                        read_item(visitor, ec);
  295|  1.00M|                    }
  296|  7.68M|                    else
  297|  7.68M|                    {
  298|  7.68M|                        end_object(visitor, ec);
  299|  7.68M|                    }
  300|  8.68M|                    break;
  301|  32.0M|                }
  302|   993k|                case parse_mode::map_value:
  ------------------
  |  Branch (302:17): [True: 993k, False: 71.0M]
  ------------------
  303|   993k|                {
  304|   993k|                    state_stack_.back().mode = parse_mode::map_key;
  305|   993k|                    read_item(visitor, ec);
  306|   993k|                    break;
  307|  32.0M|                }
  308|  11.8M|                case parse_mode::indefinite_map_key:
  ------------------
  |  Branch (308:17): [True: 11.8M, False: 60.1M]
  ------------------
  309|  11.8M|                {
  310|  11.8M|                    auto c = source_.peek();
  311|  11.8M|                    if (c.eof)
  ------------------
  |  Branch (311:25): [True: 616, False: 11.8M]
  ------------------
  312|    616|                    {
  313|    616|                        ec = cbor_errc::unexpected_eof;
  314|    616|                        more_ = false;
  315|    616|                        return;
  316|    616|                    }
  317|  11.8M|                    if (c.value == 0xff)
  ------------------
  |  Branch (317:25): [True: 387k, False: 11.4M]
  ------------------
  318|   387k|                    {
  319|   387k|                        source_.ignore(1);
  320|   387k|                        end_object(visitor, ec);
  321|   387k|                    }
  322|  11.4M|                    else
  323|  11.4M|                    {
  324|  11.4M|                        state_stack_.back().mode = parse_mode::indefinite_map_value;
  325|  11.4M|                        read_item(visitor, ec);
  326|  11.4M|                    }
  327|  11.8M|                    break;
  328|  11.8M|                }
  329|  11.4M|                case parse_mode::indefinite_map_value:
  ------------------
  |  Branch (329:17): [True: 11.4M, False: 60.5M]
  ------------------
  330|  11.4M|                {
  331|  11.4M|                    state_stack_.back().mode = parse_mode::indefinite_map_key;
  332|  11.4M|                    read_item(visitor, ec);
  333|  11.4M|                    break;
  334|  11.8M|                }
  335|  10.8k|                case parse_mode::root:
  ------------------
  |  Branch (335:17): [True: 10.8k, False: 72.0M]
  ------------------
  336|  10.8k|                {
  337|  10.8k|                    state_stack_.back().mode = parse_mode::accept;
  338|  10.8k|                    read_item(visitor, ec);
  339|  10.8k|                    break;
  340|  11.8M|                }
  341|    205|                case parse_mode::accept:
  ------------------
  |  Branch (341:17): [True: 205, False: 72.0M]
  ------------------
  342|    205|                {
  343|    205|                    JSONCONS_ASSERT(state_stack_.size() == 1);
  ------------------
  |  |  378|    205|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 205]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  344|    205|                    state_stack_.clear();
  345|    205|                    more_ = false;
  346|    205|                    done_ = true;
  347|    205|                    visitor.flush();
  348|    205|                    break;
  349|    205|                }
  350|  72.0M|            }
  351|  72.0M|        }
  352|  10.8k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE9read_itemERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  355|  61.8M|    {
  356|  61.8M|        read_tags(ec);
  357|  61.8M|        if (!more_)
  ------------------
  |  Branch (357:13): [True: 3.92k, False: 61.8M]
  ------------------
  358|  3.92k|        {
  359|  3.92k|            return;
  360|  3.92k|        }
  361|  61.8M|        auto c = source_.peek();
  362|  61.8M|        if (c.eof)
  ------------------
  |  Branch (362:13): [True: 0, False: 61.8M]
  ------------------
  363|      0|        {
  364|      0|            ec = cbor_errc::unexpected_eof;
  365|      0|            more_ = false;
  366|      0|            return;
  367|      0|        }
  368|  61.8M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  369|  61.8M|        uint8_t info = get_additional_information_value(c.value);
  370|       |
  371|  61.8M|        switch (major_type)
  372|  61.8M|        {
  373|  12.6M|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (373:13): [True: 12.6M, False: 49.2M]
  ------------------
  374|  12.6M|            {
  375|  12.6M|                uint64_t val = get_uint64_value(ec);
  376|  12.6M|                if (ec)
  ------------------
  |  Branch (376:21): [True: 781, False: 12.6M]
  ------------------
  377|    781|                {
  378|    781|                    return;
  379|    781|                }
  380|  12.6M|                if (!stringref_map_stack_.empty() && other_tags_[stringref_tag])
  ------------------
  |  Branch (380:21): [True: 7.00M, False: 5.65M]
  |  Branch (380:21): [True: 108k, False: 12.5M]
  |  Branch (380:54): [True: 108k, False: 6.89M]
  ------------------
  381|   108k|                {
  382|   108k|                    other_tags_[stringref_tag] = false;
  383|   108k|                    if (val >= stringref_map_stack_.back().size())
  ------------------
  |  Branch (383:25): [True: 116, False: 108k]
  ------------------
  384|    116|                    {
  385|    116|                        ec = cbor_errc::stringref_too_large;
  386|    116|                        more_ = false;
  387|    116|                        return;
  388|    116|                    }
  389|   108k|                    auto index = static_cast<typename stringref_map::size_type>(val);
  390|   108k|                    if (index != val)
  ------------------
  |  Branch (390:25): [True: 0, False: 108k]
  ------------------
  391|      0|                    {
  392|      0|                        ec = cbor_errc::number_too_large;
  393|      0|                        more_ = false;
  394|      0|                        return;
  395|      0|                    }
  396|   108k|                    auto& str = stringref_map_stack_.back().at(index);
  397|   108k|                    switch (str.type)
  398|   108k|                    {
  399|  4.39k|                        case jsoncons::cbor::detail::cbor_major_type::text_string:
  ------------------
  |  Branch (399:25): [True: 4.39k, False: 103k]
  ------------------
  400|  4.39k|                        {
  401|  4.39k|                            handle_string(visitor, jsoncons::basic_string_view<char>(str.str.data(),str.str.length()),ec);
  402|  4.39k|                            if (ec)
  ------------------
  |  Branch (402:33): [True: 0, False: 4.39k]
  ------------------
  403|      0|                            {
  404|      0|                                return;
  405|      0|                            }
  406|  4.39k|                            break;
  407|  4.39k|                        }
  408|   103k|                        case jsoncons::cbor::detail::cbor_major_type::byte_string:
  ------------------
  |  Branch (408:25): [True: 103k, False: 4.39k]
  ------------------
  409|   103k|                        {
  410|   103k|                            read_byte_string_from_buffer read(byte_string_view(str.bytes));
  411|   103k|                            write_byte_string(read, visitor, ec);
  412|   103k|                            if (ec)
  ------------------
  |  Branch (412:33): [True: 0, False: 103k]
  ------------------
  413|      0|                            {
  414|      0|                                return;
  415|      0|                            }
  416|   103k|                            break;
  417|   103k|                        }
  418|   103k|                        default:
  ------------------
  |  Branch (418:25): [True: 0, False: 108k]
  ------------------
  419|      0|                            JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
  420|      0|                            break;
  421|   108k|                    }
  422|   108k|                }
  423|  12.5M|                else
  424|  12.5M|                {
  425|  12.5M|                    semantic_tag tag = semantic_tag::none;
  426|  12.5M|                    if (other_tags_[item_tag])
  ------------------
  |  Branch (426:25): [True: 42.6k, False: 12.5M]
  ------------------
  427|  42.6k|                    {
  428|  42.6k|                        if (item_tag_ == 1)
  ------------------
  |  Branch (428:29): [True: 728, False: 41.9k]
  ------------------
  429|    728|                        {
  430|    728|                            tag = semantic_tag::epoch_second;
  431|    728|                        }
  432|  42.6k|                        other_tags_[item_tag] = false;
  433|  42.6k|                    }
  434|  12.5M|                    more_ = visitor.uint64_value(val, tag, *this, ec);
  435|  12.5M|                }
  436|  12.6M|                break;
  437|  12.6M|            }
  438|  18.7M|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (438:13): [True: 18.7M, False: 43.1M]
  ------------------
  439|  18.7M|            {
  440|  18.7M|                int64_t val = get_int64_value(ec);
  441|  18.7M|                if (ec)
  ------------------
  |  Branch (441:21): [True: 1.03k, False: 18.7M]
  ------------------
  442|  1.03k|                {
  443|  1.03k|                    return;
  444|  1.03k|                }
  445|  18.7M|                semantic_tag tag = semantic_tag::none;
  446|  18.7M|                if (other_tags_[item_tag])
  ------------------
  |  Branch (446:21): [True: 20.3k, False: 18.7M]
  ------------------
  447|  20.3k|                {
  448|  20.3k|                    if (item_tag_ == 1)
  ------------------
  |  Branch (448:25): [True: 472, False: 19.8k]
  ------------------
  449|    472|                    {
  450|    472|                        tag = semantic_tag::epoch_second;
  451|    472|                    }
  452|  20.3k|                    other_tags_[item_tag] = false;
  453|  20.3k|                }
  454|  18.7M|                more_ = visitor.int64_value(val, tag, *this, ec);
  455|  18.7M|                break;
  456|  18.7M|            }
  457|  13.4M|            case jsoncons::cbor::detail::cbor_major_type::byte_string:
  ------------------
  |  Branch (457:13): [True: 13.4M, False: 48.4M]
  ------------------
  458|  13.4M|            {
  459|  13.4M|                read_byte_string_from_source read(this);
  460|  13.4M|                write_byte_string(read, visitor, ec);
  461|  13.4M|                if (ec)
  ------------------
  |  Branch (461:21): [True: 1.18k, False: 13.4M]
  ------------------
  462|  1.18k|                {
  463|  1.18k|                    return;
  464|  1.18k|                }
  465|  13.4M|                break;
  466|  13.4M|            }
  467|  13.4M|            case jsoncons::cbor::detail::cbor_major_type::text_string:
  ------------------
  |  Branch (467:13): [True: 1.49M, False: 60.3M]
  ------------------
  468|  1.49M|            {
  469|  1.49M|                text_buffer_.clear();
  470|       |
  471|  1.49M|                read_text_string(text_buffer_, ec);
  472|  1.49M|                if (ec)
  ------------------
  |  Branch (472:21): [True: 849, False: 1.49M]
  ------------------
  473|    849|                {
  474|    849|                    return;
  475|    849|                }
  476|  1.49M|                auto result = unicode_traits::validate(text_buffer_.data(),text_buffer_.size());
  477|  1.49M|                if (result.ec != unicode_traits::conv_errc())
  ------------------
  |  Branch (477:21): [True: 114, False: 1.49M]
  ------------------
  478|    114|                {
  479|    114|                    ec = cbor_errc::invalid_utf8_text_string;
  480|    114|                    more_ = false;
  481|    114|                    return;
  482|    114|                }
  483|  1.49M|                handle_string(visitor, jsoncons::basic_string_view<char>(text_buffer_.data(),text_buffer_.length()),ec);
  484|  1.49M|                if (ec)
  ------------------
  |  Branch (484:21): [True: 0, False: 1.49M]
  ------------------
  485|      0|                {
  486|      0|                    return;
  487|      0|                }
  488|  1.49M|                break;
  489|  1.49M|            }
  490|  1.49M|            case jsoncons::cbor::detail::cbor_major_type::semantic_tag:
  ------------------
  |  Branch (490:13): [True: 0, False: 61.8M]
  ------------------
  491|      0|            {
  492|      0|                JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
  493|      0|                break;
  494|  1.49M|            }
  495|  3.74M|            case jsoncons::cbor::detail::cbor_major_type::simple:
  ------------------
  |  Branch (495:13): [True: 3.74M, False: 58.1M]
  ------------------
  496|  3.74M|            {
  497|  3.74M|                switch (info)
  498|  3.74M|                {
  499|   262k|                    case 0x14:
  ------------------
  |  Branch (499:21): [True: 262k, False: 3.48M]
  ------------------
  500|   262k|                        more_ = visitor.bool_value(false, semantic_tag::none, *this, ec);
  501|   262k|                        source_.ignore(1);
  502|   262k|                        break;
  503|  2.04M|                    case 0x15:
  ------------------
  |  Branch (503:21): [True: 2.04M, False: 1.70M]
  ------------------
  504|  2.04M|                        more_ = visitor.bool_value(true, semantic_tag::none, *this, ec);
  505|  2.04M|                        source_.ignore(1);
  506|  2.04M|                        break;
  507|  1.15M|                    case 0x16:
  ------------------
  |  Branch (507:21): [True: 1.15M, False: 2.58M]
  ------------------
  508|  1.15M|                        more_ = visitor.null_value(semantic_tag::none, *this, ec);
  509|  1.15M|                        source_.ignore(1);
  510|  1.15M|                        break;
  511|   105k|                    case 0x17:
  ------------------
  |  Branch (511:21): [True: 105k, False: 3.64M]
  ------------------
  512|   105k|                        more_ = visitor.null_value(semantic_tag::undefined, *this, ec);
  513|   105k|                        source_.ignore(1);
  514|   105k|                        break;
  515|   127k|                    case 0x19: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (515:21): [True: 127k, False: 3.62M]
  ------------------
  516|   127k|                    {
  517|   127k|                        uint64_t val = get_uint64_value(ec);
  518|   127k|                        if (ec)
  ------------------
  |  Branch (518:29): [True: 213, False: 127k]
  ------------------
  519|    213|                        {
  520|    213|                            return;
  521|    213|                        }
  522|   127k|                        more_ = visitor.half_value(static_cast<uint16_t>(val), semantic_tag::none, *this, ec);
  523|   127k|                        break;
  524|   127k|                    }
  525|  44.6k|                    case 0x1a: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (525:21): [True: 44.6k, False: 3.70M]
  ------------------
  526|  51.4k|                    case 0x1b: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (526:21): [True: 6.80k, False: 3.74M]
  ------------------
  527|  51.4k|                    {
  528|  51.4k|                        double val = get_double(ec);
  529|  51.4k|                        if (ec)
  ------------------
  |  Branch (529:29): [True: 298, False: 51.1k]
  ------------------
  530|    298|                        {
  531|    298|                            return;
  532|    298|                        }
  533|  51.1k|                        semantic_tag tag = semantic_tag::none;
  534|  51.1k|                        if (other_tags_[item_tag])
  ------------------
  |  Branch (534:29): [True: 1.35k, False: 49.7k]
  ------------------
  535|  1.35k|                        {
  536|  1.35k|                            if (item_tag_ == 1)
  ------------------
  |  Branch (536:33): [True: 631, False: 722]
  ------------------
  537|    631|                            {
  538|    631|                                tag = semantic_tag::epoch_second;
  539|    631|                            }
  540|  1.35k|                            other_tags_[item_tag] = false;
  541|  1.35k|                        }
  542|  51.1k|                        more_ = visitor.double_value(val, tag, *this, ec);
  543|  51.1k|                        break;
  544|  51.4k|                    }
  545|    234|                    default:
  ------------------
  |  Branch (545:21): [True: 234, False: 3.74M]
  ------------------
  546|    234|                    {
  547|    234|                        ec = cbor_errc::unknown_type;
  548|    234|                        more_ = false;
  549|    234|                        return;
  550|  51.4k|                    }
  551|  3.74M|                }
  552|  3.74M|                break;
  553|  3.74M|            }
  554|  3.74M|            case jsoncons::cbor::detail::cbor_major_type::array:
  ------------------
  |  Branch (554:13): [True: 3.69M, False: 58.1M]
  ------------------
  555|  3.69M|            {
  556|  3.69M|                if (other_tags_[item_tag])
  ------------------
  |  Branch (556:21): [True: 1.59M, False: 2.09M]
  ------------------
  557|  1.59M|                {
  558|  1.59M|                    switch (item_tag_)
  559|  1.59M|                    {
  560|   355k|                        case 0x04:
  ------------------
  |  Branch (560:25): [True: 355k, False: 1.23M]
  ------------------
  561|   355k|                            text_buffer_.clear();
  562|   355k|                            read_decimal_fraction(text_buffer_, ec);
  563|   355k|                            if (ec)
  ------------------
  |  Branch (563:33): [True: 927, False: 354k]
  ------------------
  564|    927|                            {
  565|    927|                                return;
  566|    927|                            }
  567|   354k|                            more_ = visitor.string_value(text_buffer_, semantic_tag::bigdec, *this, ec);
  568|   354k|                            break;
  569|   116k|                        case 0x05:
  ------------------
  |  Branch (569:25): [True: 116k, False: 1.47M]
  ------------------
  570|   116k|                            text_buffer_.clear();
  571|   116k|                            read_bigfloat(text_buffer_, ec);
  572|   116k|                            if (ec)
  ------------------
  |  Branch (572:33): [True: 949, False: 115k]
  ------------------
  573|    949|                            {
  574|    949|                                return;
  575|    949|                            }
  576|   115k|                            more_ = visitor.string_value(text_buffer_, semantic_tag::bigfloat, *this, ec);
  577|   115k|                            break;
  578|  1.11M|                        case 40: // row major storage
  ------------------
  |  Branch (578:25): [True: 1.11M, False: 482k]
  ------------------
  579|  1.11M|                            produce_begin_multi_dim(visitor, semantic_tag::multi_dim_row_major, ec);
  580|  1.11M|                            break;
  581|    290|                        case 1040: // column major storage
  ------------------
  |  Branch (581:25): [True: 290, False: 1.59M]
  ------------------
  582|    290|                            produce_begin_multi_dim(visitor, semantic_tag::multi_dim_column_major, ec);
  583|    290|                            break;
  584|  10.7k|                        default:
  ------------------
  |  Branch (584:25): [True: 10.7k, False: 1.58M]
  ------------------
  585|  10.7k|                            begin_array(visitor, info, ec);
  586|  10.7k|                            break;
  587|  1.59M|                    }
  588|  1.59M|                    other_tags_[item_tag] = false;
  589|  1.59M|                }
  590|  2.09M|                else
  591|  2.09M|                {
  592|  2.09M|                    begin_array(visitor, info, ec);
  593|  2.09M|                }
  594|  3.69M|                break;
  595|  3.69M|            }
  596|  8.10M|            case jsoncons::cbor::detail::cbor_major_type::map:
  ------------------
  |  Branch (596:13): [True: 8.10M, False: 53.7M]
  ------------------
  597|  8.10M|            {
  598|  8.10M|                begin_object(visitor, info, ec);
  599|  8.10M|                break;
  600|  3.69M|            }
  601|      0|            default:
  ------------------
  |  Branch (601:13): [True: 0, False: 61.8M]
  ------------------
  602|      0|                break;
  603|  61.8M|        }
  604|  61.8M|        other_tags_[item_tag] = false;
  605|  61.8M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE9read_tagsERNS4_10error_codeE:
 1420|  61.8M|    {
 1421|  61.8M|        auto c = source_.peek();
 1422|  61.8M|        if (c.eof)
  ------------------
  |  Branch (1422:13): [True: 3.51k, False: 61.8M]
  ------------------
 1423|  3.51k|        {
 1424|  3.51k|            ec = cbor_errc::unexpected_eof;
 1425|  3.51k|            more_ = false;
 1426|  3.51k|            return;
 1427|  3.51k|        }
 1428|  61.8M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
 1429|       |
 1430|  65.4M|        while (major_type == jsoncons::cbor::detail::cbor_major_type::semantic_tag)
  ------------------
  |  Branch (1430:16): [True: 3.59M, False: 61.8M]
  ------------------
 1431|  3.59M|        {
 1432|  3.59M|            uint64_t val = get_uint64_value(ec);
 1433|  3.59M|            if (!more_)
  ------------------
  |  Branch (1433:17): [True: 98, False: 3.59M]
  ------------------
 1434|     98|            {
 1435|     98|                return;
 1436|     98|            }
 1437|  3.59M|            switch(val)
 1438|  3.59M|            {
 1439|   124k|                case 25: // stringref
  ------------------
  |  Branch (1439:17): [True: 124k, False: 3.47M]
  ------------------
 1440|   124k|                    other_tags_[stringref_tag] = true;
 1441|   124k|                    break;
 1442|  5.29k|                case 256: // stringref-namespace
  ------------------
  |  Branch (1442:17): [True: 5.29k, False: 3.59M]
  ------------------
 1443|  5.29k|                    other_tags_[stringref_namespace_tag] = true;
 1444|  5.29k|                    break;
 1445|  3.46M|                default:
  ------------------
  |  Branch (1445:17): [True: 3.46M, False: 129k]
  ------------------
 1446|  3.46M|                    other_tags_[item_tag] = true;
 1447|  3.46M|                    item_tag_ = val;
 1448|  3.46M|                    break;
 1449|  3.59M|            }
 1450|  3.59M|            c = source_.peek();
 1451|  3.59M|            if (c.eof)
  ------------------
  |  Branch (1451:17): [True: 308, False: 3.59M]
  ------------------
 1452|    308|            {
 1453|    308|                ec = cbor_errc::unexpected_eof;
 1454|    308|                more_ = false;
 1455|    308|                return;
 1456|    308|            }
 1457|  3.59M|            major_type = get_major_type(c.value);
 1458|  3.59M|        }
 1459|  61.8M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE14get_major_typeEh:
 1406|   173M|    {
 1407|   173M|        static constexpr uint8_t major_type_shift = 0x05;
 1408|   173M|        uint8_t value = type >> major_type_shift;
 1409|   173M|        return static_cast<jsoncons::cbor::detail::cbor_major_type>(value);
 1410|   173M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE32get_additional_information_valueEh:
 1413|   152M|    {
 1414|   152M|        static constexpr uint8_t additional_information_mask = (1U << 5) - 1;
 1415|   152M|        uint8_t value = type & additional_information_mask;
 1416|   152M|        return value;
 1417|   152M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16get_uint64_valueERNS4_10error_codeE:
  881|  46.1M|    {
  882|  46.1M|        uint64_t val = 0;
  883|       |
  884|  46.1M|        uint8_t initial_b;
  885|  46.1M|        if (source_.read(&initial_b, 1) == 0)
  ------------------
  |  Branch (885:13): [True: 138, False: 46.1M]
  ------------------
  886|    138|        {
  887|    138|            ec = cbor_errc::unexpected_eof;
  888|    138|            more_ = false;
  889|    138|            return 0;
  890|    138|        }
  891|  46.1M|        uint8_t info = get_additional_information_value(initial_b);
  892|  46.1M|        switch (info)
  893|  46.1M|        {
  894|  32.9M|            case JSONCONS_CBOR_0x00_0x17: // Integer 0x00..0x17 (0..23)
  ------------------
  |  |   22|  32.9M|    0x00:case 0x01:case 0x02:case 0x03:case 0x04:case 0x05:case 0x06:case 0x07:case 0x08:case 0x09:case 0x0a:case 0x0b:case 0x0c:case 0x0d:case 0x0e:case 0x0f:case 0x10:case 0x11:case 0x12:case 0x13:case 0x14:case 0x15:case 0x16:case 0x17
  |  |  ------------------
  |  |  |  Branch (22:10): [True: 635k, False: 45.5M]
  |  |  |  Branch (22:20): [True: 1.00M, False: 45.1M]
  |  |  |  Branch (22:30): [True: 69.1k, False: 46.0M]
  |  |  |  Branch (22:40): [True: 1.07M, False: 45.0M]
  |  |  |  Branch (22:50): [True: 2.89M, False: 43.2M]
  |  |  |  Branch (22:60): [True: 39.5k, False: 46.1M]
  |  |  |  Branch (22:70): [True: 207k, False: 45.9M]
  |  |  |  Branch (22:80): [True: 121k, False: 46.0M]
  |  |  |  Branch (22:90): [True: 418k, False: 45.7M]
  |  |  |  Branch (22:100): [True: 15.1k, False: 46.1M]
  |  |  |  Branch (22:110): [True: 26.3k, False: 46.1M]
  |  |  |  Branch (22:120): [True: 23.2k, False: 46.1M]
  |  |  |  Branch (22:130): [True: 391k, False: 45.7M]
  |  |  |  Branch (22:140): [True: 20.2k, False: 46.1M]
  |  |  |  Branch (22:150): [True: 19.3k, False: 46.1M]
  |  |  |  Branch (22:160): [True: 72.6k, False: 46.0M]
  |  |  |  Branch (22:170): [True: 45.8k, False: 46.0M]
  |  |  |  Branch (22:180): [True: 1.00M, False: 45.1M]
  |  |  |  Branch (22:190): [True: 8.76k, False: 46.1M]
  |  |  |  Branch (22:200): [True: 13.8k, False: 46.1M]
  |  |  |  Branch (22:210): [True: 535k, False: 45.6M]
  |  |  |  Branch (22:220): [True: 82.8k, False: 46.0M]
  |  |  ------------------
  ------------------
  |  Branch (894:13): [True: 24.2M, False: 21.9M]
  ------------------
  895|  32.9M|            {
  896|  32.9M|                val = info;
  897|  32.9M|                break;
  898|   665M|            }
  899|       |
  900|  1.65M|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (900:13): [True: 1.65M, False: 44.4M]
  ------------------
  901|  1.65M|            {
  902|  1.65M|                uint8_t b;
  903|  1.65M|                if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (903:21): [True: 125, False: 1.65M]
  ------------------
  904|    125|                {
  905|    125|                    ec = cbor_errc::unexpected_eof;
  906|    125|                    more_ = false;
  907|    125|                    return val;
  908|    125|                }
  909|  1.65M|                val = b;
  910|  1.65M|                break;
  911|  1.65M|            }
  912|       |
  913|   152k|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (913:13): [True: 152k, False: 45.9M]
  ------------------
  914|   152k|            {
  915|   152k|                uint8_t buf[sizeof(uint16_t)];
  916|   152k|                source_.read(buf, sizeof(uint16_t));
  917|   152k|                val = binary::big_to_native<uint16_t>(buf, sizeof(buf));
  918|   152k|                break;
  919|  1.65M|            }
  920|       |
  921|  4.14k|            case 0x1a: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (921:13): [True: 4.14k, False: 46.1M]
  ------------------
  922|  4.14k|            {
  923|  4.14k|                uint8_t buf[sizeof(uint32_t)];
  924|  4.14k|                source_.read(buf, sizeof(uint32_t));
  925|  4.14k|                val = binary::big_to_native<uint32_t>(buf, sizeof(buf));
  926|  4.14k|                break;
  927|  1.65M|            }
  928|       |
  929|  5.32k|            case 0x1b: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (929:13): [True: 5.32k, False: 46.1M]
  ------------------
  930|  5.32k|            {
  931|  5.32k|                uint8_t buf[sizeof(uint64_t)];
  932|  5.32k|                source_.read(buf, sizeof(uint64_t));
  933|  5.32k|                val = binary::big_to_native<uint64_t>(buf, sizeof(buf));
  934|  5.32k|                break;
  935|  1.65M|            }
  936|  11.3M|            default:
  ------------------
  |  Branch (936:13): [True: 11.3M, False: 34.7M]
  ------------------
  937|  11.3M|                break;
  938|  46.1M|        }
  939|  46.1M|        return val;
  940|  46.1M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13handle_stringERNS_24basic_item_event_visitorIcEERKNS_6detail17basic_string_viewIcNS4_11char_traitsIcEEEERNS4_10error_codeE:
 1462|  1.50M|    {
 1463|  1.50M|        semantic_tag tag = semantic_tag::none;
 1464|  1.50M|        if (other_tags_[item_tag])
  ------------------
  |  Branch (1464:13): [True: 7.71k, False: 1.49M]
  ------------------
 1465|  7.71k|        {
 1466|  7.71k|            switch (item_tag_)
 1467|  7.71k|            {
 1468|    571|                case 0:
  ------------------
  |  Branch (1468:17): [True: 571, False: 7.14k]
  ------------------
 1469|    571|                    tag = semantic_tag::datetime;
 1470|    571|                    break;
 1471|    290|                case 32:
  ------------------
  |  Branch (1471:17): [True: 290, False: 7.42k]
  ------------------
 1472|    290|                    tag = semantic_tag::uri;
 1473|    290|                    break;
 1474|    376|                case 33:
  ------------------
  |  Branch (1474:17): [True: 376, False: 7.34k]
  ------------------
 1475|    376|                    tag = semantic_tag::base64url;
 1476|    376|                    break;
 1477|    211|                case 34:
  ------------------
  |  Branch (1477:17): [True: 211, False: 7.50k]
  ------------------
 1478|    211|                    tag = semantic_tag::base64;
 1479|    211|                    break;
 1480|  6.27k|                default:
  ------------------
  |  Branch (1480:17): [True: 6.27k, False: 1.44k]
  ------------------
 1481|  6.27k|                    break;
 1482|  7.71k|            }
 1483|  7.71k|            other_tags_[item_tag] = false;
 1484|  7.71k|        }
 1485|  1.50M|        more_ = visitor.string_value(v, tag, *this, ec);
 1486|  1.50M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE28read_byte_string_from_bufferC2ERKNS_16byte_string_viewE:
  139|   103k|        {
  140|   103k|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE17write_byte_stringINS7_28read_byte_string_from_bufferEEEvT_RNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
 1503|   103k|    {
 1504|   103k|        if (other_tags_[item_tag])
  ------------------
  |  Branch (1504:13): [True: 89.4k, False: 14.3k]
  ------------------
 1505|  89.4k|        {
 1506|  89.4k|            switch (item_tag_)
 1507|  89.4k|            {
 1508|  1.90k|                case 0x2:
  ------------------
  |  Branch (1508:17): [True: 1.90k, False: 87.5k]
  ------------------
 1509|  1.90k|                {
 1510|  1.90k|                    bytes_buffer_.clear();
 1511|  1.90k|                    read(bytes_buffer_,ec);
 1512|  1.90k|                    if (ec)
  ------------------
  |  Branch (1512:25): [True: 0, False: 1.90k]
  ------------------
 1513|      0|                    {
 1514|      0|                        more_ = false;
 1515|      0|                        return;
 1516|      0|                    }
 1517|  1.90k|                    bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1518|  1.90k|                    text_buffer_.clear();
 1519|  1.90k|                    n.write_string(text_buffer_);
 1520|  1.90k|                    more_ = visitor.string_value(text_buffer_, semantic_tag::bigint, *this, ec);
 1521|  1.90k|                    break;
 1522|  1.90k|                }
 1523|  7.52k|                case 0x3:
  ------------------
  |  Branch (1523:17): [True: 7.52k, False: 81.9k]
  ------------------
 1524|  7.52k|                {
 1525|  7.52k|                    bytes_buffer_.clear();
 1526|  7.52k|                    read(bytes_buffer_,ec);
 1527|  7.52k|                    if (ec)
  ------------------
  |  Branch (1527:25): [True: 0, False: 7.52k]
  ------------------
 1528|      0|                    {
 1529|      0|                        more_ = false;
 1530|      0|                        return;
 1531|      0|                    }
 1532|  7.52k|                    bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1533|  7.52k|                    n = -1 - n;
 1534|  7.52k|                    text_buffer_.clear();
 1535|  7.52k|                    n.write_string(text_buffer_);
 1536|  7.52k|                    more_ = visitor.string_value(text_buffer_, semantic_tag::bigint, *this, ec);
 1537|  7.52k|                    break;
 1538|  7.52k|                }
 1539|    195|                case 0x15:
  ------------------
  |  Branch (1539:17): [True: 195, False: 89.2k]
  ------------------
 1540|    195|                {
 1541|    195|                    read(bytes_buffer_,ec);
 1542|    195|                    if (ec)
  ------------------
  |  Branch (1542:25): [True: 0, False: 195]
  ------------------
 1543|      0|                    {
 1544|      0|                        more_ = false;
 1545|      0|                        return;
 1546|      0|                    }
 1547|    195|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base64url, *this, ec);
 1548|    195|                    break;
 1549|    195|                }
 1550|    368|                case 0x16:
  ------------------
  |  Branch (1550:17): [True: 368, False: 89.0k]
  ------------------
 1551|    368|                {
 1552|    368|                    read(bytes_buffer_,ec);
 1553|    368|                    if (ec)
  ------------------
  |  Branch (1553:25): [True: 0, False: 368]
  ------------------
 1554|      0|                    {
 1555|      0|                        more_ = false;
 1556|      0|                        return;
 1557|      0|                    }
 1558|    368|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base64, *this, ec);
 1559|    368|                    break;
 1560|    368|                }
 1561|    239|                case 0x17:
  ------------------
  |  Branch (1561:17): [True: 239, False: 89.2k]
  ------------------
 1562|    239|                {
 1563|    239|                    read(bytes_buffer_,ec);
 1564|    239|                    if (ec)
  ------------------
  |  Branch (1564:25): [True: 0, False: 239]
  ------------------
 1565|      0|                    {
 1566|      0|                        more_ = false;
 1567|      0|                        return;
 1568|      0|                    }
 1569|    239|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base16, *this, ec);
 1570|    239|                    break;
 1571|    239|                }
 1572|  1.31k|                case 0x40:
  ------------------
  |  Branch (1572:17): [True: 1.31k, False: 88.1k]
  ------------------
 1573|  1.31k|                {
 1574|  1.31k|                    typed_array_.clear();
 1575|  1.31k|                    read(typed_array_,ec);
 1576|  1.31k|                    if (ec)
  ------------------
  |  Branch (1576:25): [True: 0, False: 1.31k]
  ------------------
 1577|      0|                    {
 1578|      0|                        more_ = false;
 1579|      0|                        return;
 1580|      0|                    }
 1581|  1.31k|                    uint8_t* data = reinterpret_cast<uint8_t*>(typed_array_.data());
 1582|  1.31k|                    std::size_t size = typed_array_.size();
 1583|  1.31k|                    more_ = visitor.typed_array(jsoncons::span<const uint8_t>(data,size), semantic_tag::none, *this, ec);
 1584|  1.31k|                    break;
 1585|  1.31k|                }
 1586|    225|                case 0x44:
  ------------------
  |  Branch (1586:17): [True: 225, False: 89.2k]
  ------------------
 1587|    225|                {
 1588|    225|                    typed_array_.clear();
 1589|    225|                    read(typed_array_,ec);
 1590|    225|                    if (ec)
  ------------------
  |  Branch (1590:25): [True: 0, False: 225]
  ------------------
 1591|      0|                    {
 1592|      0|                        more_ = false;
 1593|      0|                        return;
 1594|      0|                    }
 1595|    225|                    uint8_t* data = reinterpret_cast<uint8_t*>(typed_array_.data());
 1596|    225|                    std::size_t size = typed_array_.size();
 1597|    225|                    more_ = visitor.typed_array(jsoncons::span<const uint8_t>(data,size), semantic_tag::clamped, *this, ec);
 1598|    225|                    break;
 1599|    225|                }
 1600|    262|                case 0x41:
  ------------------
  |  Branch (1600:17): [True: 262, False: 89.1k]
  ------------------
 1601|    743|                case 0x45:
  ------------------
  |  Branch (1601:17): [True: 481, False: 88.9k]
  ------------------
 1602|    743|                {
 1603|    743|                    typed_array_.clear();
 1604|    743|                    read(typed_array_,ec);
 1605|    743|                    if (ec)
  ------------------
  |  Branch (1605:25): [True: 0, False: 743]
  ------------------
 1606|      0|                    {
 1607|      0|                        more_ = false;
 1608|      0|                        return;
 1609|      0|                    }
 1610|    743|                    const uint8_t tag = (uint8_t)item_tag_;
 1611|    743|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1612|    743|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1613|       |
 1614|    743|                    uint16_t* data = reinterpret_cast<uint16_t*>(typed_array_.data());
 1615|    743|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1616|       |
 1617|    743|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1617:25): [True: 262, False: 481]
  ------------------
 1618|    262|                    {
 1619|  10.1k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1619:49): [True: 9.89k, False: 262]
  ------------------
 1620|  9.89k|                        {
 1621|  9.89k|                            data[i] = binary::byte_swap<uint16_t>(data[i]);
 1622|  9.89k|                        }
 1623|    262|                    }
 1624|    743|                    more_ = visitor.typed_array(jsoncons::span<const uint16_t>(data,size), semantic_tag::none, *this, ec);
 1625|    743|                    break;
 1626|    743|                }
 1627|  2.83k|                case 0x42:
  ------------------
  |  Branch (1627:17): [True: 2.83k, False: 86.6k]
  ------------------
 1628|  3.06k|                case 0x46:
  ------------------
  |  Branch (1628:17): [True: 231, False: 89.2k]
  ------------------
 1629|  3.06k|                {
 1630|  3.06k|                    typed_array_.clear();
 1631|  3.06k|                    read(typed_array_,ec);
 1632|  3.06k|                    if (ec)
  ------------------
  |  Branch (1632:25): [True: 0, False: 3.06k]
  ------------------
 1633|      0|                    {
 1634|      0|                        more_ = false;
 1635|      0|                        return;
 1636|      0|                    }
 1637|  3.06k|                    const uint8_t tag = (uint8_t)item_tag_;
 1638|  3.06k|                    jsoncons::endian e = get_typed_array_endianness(tag);
 1639|  3.06k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1640|       |
 1641|  3.06k|                    uint32_t* data = reinterpret_cast<uint32_t*>(typed_array_.data());
 1642|  3.06k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1643|  3.06k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1643:25): [True: 2.83k, False: 231]
  ------------------
 1644|  2.83k|                    {
 1645|  1.79M|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1645:49): [True: 1.78M, False: 2.83k]
  ------------------
 1646|  1.78M|                        {
 1647|  1.78M|                            data[i] = binary::byte_swap<uint32_t>(data[i]);
 1648|  1.78M|                        }
 1649|  2.83k|                    }
 1650|  3.06k|                    more_ = visitor.typed_array(jsoncons::span<const uint32_t>(data,size), semantic_tag::none, *this, ec);
 1651|  3.06k|                    break;
 1652|  3.06k|                }
 1653|    895|                case 0x43:
  ------------------
  |  Branch (1653:17): [True: 895, False: 88.5k]
  ------------------
 1654|  1.34k|                case 0x47:
  ------------------
  |  Branch (1654:17): [True: 446, False: 89.0k]
  ------------------
 1655|  1.34k|                {
 1656|  1.34k|                    typed_array_.clear();
 1657|  1.34k|                    read(typed_array_,ec);
 1658|  1.34k|                    if (ec)
  ------------------
  |  Branch (1658:25): [True: 0, False: 1.34k]
  ------------------
 1659|      0|                    {
 1660|      0|                        more_ = false;
 1661|      0|                        return;
 1662|      0|                    }
 1663|  1.34k|                    const uint8_t tag = (uint8_t)item_tag_;
 1664|  1.34k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1665|  1.34k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1666|       |
 1667|  1.34k|                    uint64_t* data = reinterpret_cast<uint64_t*>(typed_array_.data());
 1668|  1.34k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1669|  1.34k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1669:25): [True: 895, False: 446]
  ------------------
 1670|    895|                    {
 1671|   121k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1671:49): [True: 120k, False: 895]
  ------------------
 1672|   120k|                        {
 1673|   120k|                            data[i] = binary::byte_swap<uint64_t>(data[i]);
 1674|   120k|                        }
 1675|    895|                    }
 1676|  1.34k|                    more_ = visitor.typed_array(jsoncons::span<const uint64_t>(data,size), semantic_tag::none, *this, ec);
 1677|  1.34k|                    break;
 1678|  1.34k|                }
 1679|    470|                case 0x48:
  ------------------
  |  Branch (1679:17): [True: 470, False: 88.9k]
  ------------------
 1680|    470|                {
 1681|    470|                    typed_array_.clear();
 1682|    470|                    read(typed_array_,ec);
 1683|    470|                    if (ec)
  ------------------
  |  Branch (1683:25): [True: 0, False: 470]
  ------------------
 1684|      0|                    {
 1685|      0|                        more_ = false;
 1686|      0|                        return;
 1687|      0|                    }
 1688|    470|                    int8_t* data = reinterpret_cast<int8_t*>(typed_array_.data());
 1689|    470|                    std::size_t size = typed_array_.size();
 1690|    470|                    more_ = visitor.typed_array(jsoncons::span<const int8_t>(data,size), semantic_tag::none, *this, ec);
 1691|    470|                    break;
 1692|    470|                }
 1693|  1.73k|                case 0x49:
  ------------------
  |  Branch (1693:17): [True: 1.73k, False: 87.7k]
  ------------------
 1694|  1.99k|                case 0x4d:
  ------------------
  |  Branch (1694:17): [True: 260, False: 89.1k]
  ------------------
 1695|  1.99k|                {
 1696|  1.99k|                    typed_array_.clear();
 1697|  1.99k|                    read(typed_array_,ec);
 1698|  1.99k|                    if (ec)
  ------------------
  |  Branch (1698:25): [True: 0, False: 1.99k]
  ------------------
 1699|      0|                    {
 1700|      0|                        more_ = false;
 1701|      0|                        return;
 1702|      0|                    }
 1703|  1.99k|                    const uint8_t tag = (uint8_t)item_tag_;
 1704|  1.99k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1705|  1.99k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1706|       |
 1707|  1.99k|                    int16_t* data = reinterpret_cast<int16_t*>(typed_array_.data());
 1708|  1.99k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1709|  1.99k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1709:25): [True: 1.73k, False: 260]
  ------------------
 1710|  1.73k|                    {
 1711|   551k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1711:49): [True: 549k, False: 1.73k]
  ------------------
 1712|   549k|                        {
 1713|   549k|                            data[i] = binary::byte_swap<int16_t>(data[i]);
 1714|   549k|                        }
 1715|  1.73k|                    }
 1716|  1.99k|                    more_ = visitor.typed_array(jsoncons::span<const int16_t>(data,size), semantic_tag::none, *this, ec);
 1717|  1.99k|                    break;
 1718|  1.99k|                }
 1719|  1.23k|                case 0x4a:
  ------------------
  |  Branch (1719:17): [True: 1.23k, False: 88.2k]
  ------------------
 1720|  8.74k|                case 0x4e:
  ------------------
  |  Branch (1720:17): [True: 7.50k, False: 81.9k]
  ------------------
 1721|  8.74k|                {
 1722|  8.74k|                    typed_array_.clear();
 1723|  8.74k|                    read(typed_array_,ec);
 1724|  8.74k|                    if (ec)
  ------------------
  |  Branch (1724:25): [True: 0, False: 8.74k]
  ------------------
 1725|      0|                    {
 1726|      0|                        more_ = false;
 1727|      0|                        return;
 1728|      0|                    }
 1729|  8.74k|                    const uint8_t tag = (uint8_t)item_tag_;
 1730|  8.74k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1731|  8.74k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1732|       |
 1733|  8.74k|                    int32_t* data = reinterpret_cast<int32_t*>(typed_array_.data());
 1734|  8.74k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1735|  8.74k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1735:25): [True: 1.23k, False: 7.50k]
  ------------------
 1736|  1.23k|                    {
 1737|   416k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1737:49): [True: 415k, False: 1.23k]
  ------------------
 1738|   415k|                        {
 1739|   415k|                            data[i] = binary::byte_swap<int32_t>(data[i]);
 1740|   415k|                        }
 1741|  1.23k|                    }
 1742|  8.74k|                    more_ = visitor.typed_array(jsoncons::span<const int32_t>(data,size), semantic_tag::none, *this, ec);
 1743|  8.74k|                    break;
 1744|  8.74k|                }
 1745|  4.63k|                case 0x4b:
  ------------------
  |  Branch (1745:17): [True: 4.63k, False: 84.8k]
  ------------------
 1746|  4.84k|                case 0x4f:
  ------------------
  |  Branch (1746:17): [True: 211, False: 89.2k]
  ------------------
 1747|  4.84k|                {
 1748|  4.84k|                    typed_array_.clear();
 1749|  4.84k|                    read(typed_array_,ec);
 1750|  4.84k|                    if (ec)
  ------------------
  |  Branch (1750:25): [True: 0, False: 4.84k]
  ------------------
 1751|      0|                    {
 1752|      0|                        more_ = false;
 1753|      0|                        return;
 1754|      0|                    }
 1755|  4.84k|                    const uint8_t tag = (uint8_t)item_tag_;
 1756|  4.84k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1757|  4.84k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1758|       |
 1759|  4.84k|                    int64_t* data = reinterpret_cast<int64_t*>(typed_array_.data());
 1760|  4.84k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1761|  4.84k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1761:25): [True: 4.63k, False: 211]
  ------------------
 1762|  4.63k|                    {
 1763|   321k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1763:49): [True: 317k, False: 4.63k]
  ------------------
 1764|   317k|                        {
 1765|   317k|                            data[i] = binary::byte_swap<int64_t>(data[i]);
 1766|   317k|                        }
 1767|  4.63k|                    }
 1768|  4.84k|                    more_ = visitor.typed_array(jsoncons::span<const int64_t>(data,size), semantic_tag::none, *this, ec);
 1769|  4.84k|                    break;
 1770|  4.84k|                }
 1771|  36.5k|                case 0x50:
  ------------------
  |  Branch (1771:17): [True: 36.5k, False: 52.9k]
  ------------------
 1772|  44.9k|                case 0x54:
  ------------------
  |  Branch (1772:17): [True: 8.36k, False: 81.0k]
  ------------------
 1773|  44.9k|                {
 1774|  44.9k|                    typed_array_.clear();
 1775|  44.9k|                    read(typed_array_,ec);
 1776|  44.9k|                    if (ec)
  ------------------
  |  Branch (1776:25): [True: 0, False: 44.9k]
  ------------------
 1777|      0|                    {
 1778|      0|                        more_ = false;
 1779|      0|                        return;
 1780|      0|                    }
 1781|  44.9k|                    const uint8_t tag = (uint8_t)item_tag_;
 1782|  44.9k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1783|  44.9k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1784|       |
 1785|  44.9k|                    uint16_t* data = reinterpret_cast<uint16_t*>(typed_array_.data());
 1786|  44.9k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1787|  44.9k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1787:25): [True: 36.5k, False: 8.36k]
  ------------------
 1788|  36.5k|                    {
 1789|  68.4M|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1789:49): [True: 68.4M, False: 36.5k]
  ------------------
 1790|  68.4M|                        {
 1791|  68.4M|                            data[i] = binary::byte_swap<uint16_t>(data[i]);
 1792|  68.4M|                        }
 1793|  36.5k|                    }
 1794|  44.9k|                    more_ = visitor.typed_array(half_arg, jsoncons::span<const uint16_t>(data,size), semantic_tag::none, *this, ec);
 1795|  44.9k|                    break;
 1796|  44.9k|                }
 1797|  3.73k|                case 0x51:
  ------------------
  |  Branch (1797:17): [True: 3.73k, False: 85.7k]
  ------------------
 1798|  4.15k|                case 0x55:
  ------------------
  |  Branch (1798:17): [True: 425, False: 89.0k]
  ------------------
 1799|  4.15k|                {
 1800|  4.15k|                    typed_array_.clear();
 1801|  4.15k|                    read(typed_array_,ec);
 1802|  4.15k|                    if (ec)
  ------------------
  |  Branch (1802:25): [True: 0, False: 4.15k]
  ------------------
 1803|      0|                    {
 1804|      0|                        more_ = false;
 1805|      0|                        return;
 1806|      0|                    }
 1807|  4.15k|                    const uint8_t tag = (uint8_t)item_tag_;
 1808|  4.15k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1809|  4.15k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1810|       |
 1811|  4.15k|                    float* data = reinterpret_cast<float*>(typed_array_.data());
 1812|  4.15k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1813|  4.15k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1813:25): [True: 3.73k, False: 425]
  ------------------
 1814|  3.73k|                    {
 1815|   326k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1815:49): [True: 322k, False: 3.73k]
  ------------------
 1816|   322k|                        {
 1817|   322k|                            data[i] = binary::byte_swap<float>(data[i]);
 1818|   322k|                        }
 1819|  3.73k|                    }
 1820|  4.15k|                    more_ = visitor.typed_array(jsoncons::span<const float>(data,size), semantic_tag::none, *this, ec);
 1821|  4.15k|                    break;
 1822|  4.15k|                }
 1823|  1.20k|                case 0x52:
  ------------------
  |  Branch (1823:17): [True: 1.20k, False: 88.2k]
  ------------------
 1824|  2.23k|                case 0x56:
  ------------------
  |  Branch (1824:17): [True: 1.03k, False: 88.4k]
  ------------------
 1825|  2.23k|                {
 1826|  2.23k|                    typed_array_.clear();
 1827|  2.23k|                    read(typed_array_,ec);
 1828|  2.23k|                    if (ec)
  ------------------
  |  Branch (1828:25): [True: 0, False: 2.23k]
  ------------------
 1829|      0|                    {
 1830|      0|                        more_ = false;
 1831|      0|                        return;
 1832|      0|                    }
 1833|  2.23k|                    const uint8_t tag = (uint8_t)item_tag_;
 1834|  2.23k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1835|  2.23k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1836|       |
 1837|  2.23k|                    double* data = reinterpret_cast<double*>(typed_array_.data());
 1838|  2.23k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1839|       |
 1840|  2.23k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1840:25): [True: 1.20k, False: 1.03k]
  ------------------
 1841|  1.20k|                    {
 1842|  36.5k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1842:49): [True: 35.3k, False: 1.20k]
  ------------------
 1843|  35.3k|                        {
 1844|  35.3k|                            data[i] = binary::byte_swap<double>(data[i]);
 1845|  35.3k|                        }
 1846|  1.20k|                    }
 1847|  2.23k|                    more_ = visitor.typed_array(jsoncons::span<const double>(data,size), semantic_tag::none, *this, ec);
 1848|  2.23k|                    break;
 1849|  2.23k|                }
 1850|  5.19k|                default:
  ------------------
  |  Branch (1850:17): [True: 5.19k, False: 84.2k]
  ------------------
 1851|  5.19k|                {
 1852|  5.19k|                    read(bytes_buffer_,ec);
 1853|  5.19k|                    if (ec)
  ------------------
  |  Branch (1853:25): [True: 0, False: 5.19k]
  ------------------
 1854|      0|                    {
 1855|      0|                        more_ = false;
 1856|      0|                        return;
 1857|      0|                    }
 1858|  5.19k|                    more_ = visitor.byte_string_value(bytes_buffer_, item_tag_, *this, ec);
 1859|  5.19k|                    break;
 1860|  5.19k|                }
 1861|  89.4k|            }
 1862|  89.4k|            other_tags_[item_tag] = false;
 1863|  89.4k|        }
 1864|  14.3k|        else
 1865|  14.3k|        {
 1866|  14.3k|            read(bytes_buffer_,ec);
 1867|  14.3k|            if (ec)
  ------------------
  |  Branch (1867:17): [True: 0, False: 14.3k]
  ------------------
 1868|      0|            {
 1869|      0|                return;
 1870|      0|            }
 1871|  14.3k|            more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::none, *this, ec);
 1872|  14.3k|        }
 1873|   103k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE28read_byte_string_from_bufferclINS4_6vectorIhNS5_IhEEEEEEvRT_RNS4_10error_codeE:
  143|   103k|        {
  144|   103k|            c.clear();
  145|   103k|            c.reserve(bytes.size());
  146|   103k|            for (auto b : bytes)
  ------------------
  |  Branch (146:25): [True: 198M, False: 103k]
  ------------------
  147|   198M|            {
  148|   198M|                c.push_back(b);
  149|   198M|            }
  150|   103k|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE26get_typed_array_endiannessEh:
 1489|   219k|    {
 1490|   219k|        return ((tag & detail::cbor_array_tags_e_mask) >> detail::cbor_array_tags_e_shift) == 0 ? jsoncons::endian::big : jsoncons::endian::little; 
  ------------------
  |  Branch (1490:16): [True: 188k, False: 31.4k]
  ------------------
 1491|   219k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE33get_typed_array_bytes_per_elementEh:
 1494|   219k|    {
 1495|   219k|        const uint8_t f = (tag & detail::cbor_array_tags_f_mask) >> detail::cbor_array_tags_f_shift; 
 1496|   219k|        const uint8_t ll = (tag & detail::cbor_array_tags_ll_mask) >> detail::cbor_array_tags_ll_shift; 
 1497|       |
 1498|   219k|        return std::size_t(1) << (f + ll); 
 1499|   219k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE15get_int64_valueERNS4_10error_codeE:
  943|  19.5M|    {
  944|  19.5M|        int64_t val = 0;
  945|       |
  946|  19.5M|        auto ch = source_.peek();
  947|  19.5M|        if (ch.eof)
  ------------------
  |  Branch (947:13): [True: 0, False: 19.5M]
  ------------------
  948|      0|        {
  949|      0|            ec = cbor_errc::unexpected_eof;
  950|      0|            more_ = false;
  951|      0|            return val;
  952|      0|        }
  953|       |
  954|  19.5M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(ch.value);
  955|  19.5M|        uint8_t info = get_additional_information_value(ch.value);
  956|  19.5M|        switch (major_type)
  957|  19.5M|        {
  958|  19.5M|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (958:13): [True: 19.5M, False: 0]
  ------------------
  959|  19.5M|                source_.ignore(1);
  960|  19.5M|                switch (info)
  ------------------
  |  Branch (960:25): [True: 152k, False: 19.4M]
  ------------------
  961|  19.5M|                {
  962|  19.3M|                    case JSONCONS_CBOR_0x00_0x17: // 0x00..0x17 (0..23)
  ------------------
  |  |   22|  19.3M|    0x00:case 0x01:case 0x02:case 0x03:case 0x04:case 0x05:case 0x06:case 0x07:case 0x08:case 0x09:case 0x0a:case 0x0b:case 0x0c:case 0x0d:case 0x0e:case 0x0f:case 0x10:case 0x11:case 0x12:case 0x13:case 0x14:case 0x15:case 0x16:case 0x17
  |  |  ------------------
  |  |  |  Branch (22:10): [True: 6.17k, False: 19.5M]
  |  |  |  Branch (22:20): [True: 7.76k, False: 19.5M]
  |  |  |  Branch (22:30): [True: 34.9k, False: 19.5M]
  |  |  |  Branch (22:40): [True: 61.0k, False: 19.5M]
  |  |  |  Branch (22:50): [True: 28.3k, False: 19.5M]
  |  |  |  Branch (22:60): [True: 8.25k, False: 19.5M]
  |  |  |  Branch (22:70): [True: 16.4k, False: 19.5M]
  |  |  |  Branch (22:80): [True: 17.3M, False: 2.18M]
  |  |  |  Branch (22:90): [True: 18.8k, False: 19.5M]
  |  |  |  Branch (22:100): [True: 24.7k, False: 19.5M]
  |  |  |  Branch (22:110): [True: 19.1k, False: 19.5M]
  |  |  |  Branch (22:120): [True: 31.1k, False: 19.5M]
  |  |  |  Branch (22:130): [True: 405k, False: 19.1M]
  |  |  |  Branch (22:140): [True: 26.7k, False: 19.5M]
  |  |  |  Branch (22:150): [True: 50.5k, False: 19.5M]
  |  |  |  Branch (22:160): [True: 797k, False: 18.7M]
  |  |  |  Branch (22:170): [True: 34.9k, False: 19.5M]
  |  |  |  Branch (22:180): [True: 14.8k, False: 19.5M]
  |  |  |  Branch (22:190): [True: 5.74k, False: 19.5M]
  |  |  |  Branch (22:200): [True: 9.41k, False: 19.5M]
  |  |  |  Branch (22:210): [True: 13.7k, False: 19.5M]
  |  |  |  Branch (22:220): [True: 21.1k, False: 19.5M]
  |  |  ------------------
  ------------------
  |  Branch (962:21): [True: 366k, False: 19.1M]
  ------------------
  963|  19.3M|                    {
  964|  19.3M|                        val = static_cast<int8_t>(- 1 - info);
  965|  19.3M|                        break;
  966|   283M|                    }
  967|  6.23k|                    case 0x18: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (967:21): [True: 6.23k, False: 19.5M]
  ------------------
  968|  6.23k|                        {
  969|  6.23k|                            uint8_t b;
  970|  6.23k|                            if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (970:33): [True: 5, False: 6.22k]
  ------------------
  971|      5|                            {
  972|      5|                                ec = cbor_errc::unexpected_eof;
  973|      5|                                more_ = false;
  974|      5|                                return val;
  975|      5|                            }
  976|  6.22k|                            val = static_cast<int64_t>(-1) - static_cast<int64_t>(b);
  977|  6.22k|                            break;
  978|  6.23k|                        }
  979|       |
  980|  3.81k|                    case 0x19: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (980:21): [True: 3.81k, False: 19.5M]
  ------------------
  981|  3.81k|                        {
  982|  3.81k|                            uint8_t buf[sizeof(uint16_t)];
  983|  3.81k|                            if (source_.read(buf, sizeof(uint16_t)) != sizeof(uint16_t))
  ------------------
  |  Branch (983:33): [True: 6, False: 3.80k]
  ------------------
  984|      6|                            {
  985|      6|                                ec = cbor_errc::unexpected_eof;
  986|      6|                                more_ = false;
  987|      6|                                return val;
  988|      6|                            }
  989|  3.80k|                            auto x = binary::big_to_native<uint16_t>(buf, sizeof(buf));
  990|  3.80k|                            val = static_cast<int64_t>(-1)- x;
  991|  3.80k|                            break;
  992|  3.81k|                        }
  993|       |
  994|  5.23k|                    case 0x1a: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (994:21): [True: 5.23k, False: 19.5M]
  ------------------
  995|  5.23k|                        {
  996|  5.23k|                            uint8_t buf[sizeof(uint32_t)];
  997|  5.23k|                            if (source_.read(buf, sizeof(uint32_t)) != sizeof(uint32_t))
  ------------------
  |  Branch (997:33): [True: 8, False: 5.23k]
  ------------------
  998|      8|                            {
  999|      8|                                ec = cbor_errc::unexpected_eof;
 1000|      8|                                more_ = false;
 1001|      8|                                return val;
 1002|      8|                            }
 1003|  5.23k|                            auto x = binary::big_to_native<uint32_t>(buf, sizeof(buf));
 1004|  5.23k|                            val = static_cast<int64_t>(-1)- x;
 1005|  5.23k|                            break;
 1006|  5.23k|                        }
 1007|       |
 1008|  3.33k|                    case 0x1b: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (1008:21): [True: 3.33k, False: 19.5M]
  ------------------
 1009|  3.33k|                        {
 1010|  3.33k|                            uint8_t buf[sizeof(uint64_t)];
 1011|  3.33k|                            if (source_.read(buf, sizeof(uint64_t)) != sizeof(uint64_t))
  ------------------
  |  Branch (1011:33): [True: 11, False: 3.32k]
  ------------------
 1012|     11|                            {
 1013|     11|                                ec = cbor_errc::unexpected_eof;
 1014|     11|                                more_ = false;
 1015|     11|                                return val;
 1016|     11|                            }
 1017|  3.32k|                            auto x = binary::big_to_native<uint64_t>(buf, sizeof(buf));
 1018|  3.32k|                            val = static_cast<int64_t>(-1)- static_cast<int64_t>(x);
 1019|  3.32k|                            break;
 1020|  3.33k|                        }
 1021|  19.5M|                }
 1022|  19.5M|                break;
 1023|       |
 1024|  19.5M|                case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1024:17): [True: 0, False: 19.5M]
  ------------------
 1025|      0|                {
 1026|      0|                    uint64_t x = get_uint64_value(ec);
 1027|      0|                    if (ec)
  ------------------
  |  Branch (1027:25): [True: 0, False: 0]
  ------------------
 1028|      0|                    {
 1029|      0|                        return 0;
 1030|      0|                    }
 1031|      0|                    if (x <= static_cast<uint64_t>((std::numeric_limits<int64_t>::max)()))
  ------------------
  |  Branch (1031:25): [True: 0, False: 0]
  ------------------
 1032|      0|                    {
 1033|      0|                        val = x;
 1034|      0|                    }
 1035|      0|                    else
 1036|      0|                    {
 1037|       |                        // error;
 1038|      0|                    }
 1039|       |                    
 1040|      0|                    break;
 1041|      0|                }
 1042|      0|                break;
 1043|      0|            default:
  ------------------
  |  Branch (1043:13): [True: 0, False: 19.5M]
  ------------------
 1044|      0|                break;
 1045|  19.5M|        }
 1046|       |
 1047|  19.5M|        return val;
 1048|  19.5M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE28read_byte_string_from_sourceC2EPS7_:
  159|  13.4M|        {
  160|  13.4M|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE17write_byte_stringINS7_28read_byte_string_from_sourceEEEvT_RNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
 1503|  13.4M|    {
 1504|  13.4M|        if (other_tags_[item_tag])
  ------------------
  |  Branch (1504:13): [True: 280k, False: 13.1M]
  ------------------
 1505|   280k|        {
 1506|   280k|            switch (item_tag_)
 1507|   280k|            {
 1508|  76.5k|                case 0x2:
  ------------------
  |  Branch (1508:17): [True: 76.5k, False: 203k]
  ------------------
 1509|  76.5k|                {
 1510|  76.5k|                    bytes_buffer_.clear();
 1511|  76.5k|                    read(bytes_buffer_,ec);
 1512|  76.5k|                    if (ec)
  ------------------
  |  Branch (1512:25): [True: 6, False: 76.5k]
  ------------------
 1513|      6|                    {
 1514|      6|                        more_ = false;
 1515|      6|                        return;
 1516|      6|                    }
 1517|  76.5k|                    bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1518|  76.5k|                    text_buffer_.clear();
 1519|  76.5k|                    n.write_string(text_buffer_);
 1520|  76.5k|                    more_ = visitor.string_value(text_buffer_, semantic_tag::bigint, *this, ec);
 1521|  76.5k|                    break;
 1522|  76.5k|                }
 1523|  3.30k|                case 0x3:
  ------------------
  |  Branch (1523:17): [True: 3.30k, False: 276k]
  ------------------
 1524|  3.30k|                {
 1525|  3.30k|                    bytes_buffer_.clear();
 1526|  3.30k|                    read(bytes_buffer_,ec);
 1527|  3.30k|                    if (ec)
  ------------------
  |  Branch (1527:25): [True: 7, False: 3.30k]
  ------------------
 1528|      7|                    {
 1529|      7|                        more_ = false;
 1530|      7|                        return;
 1531|      7|                    }
 1532|  3.30k|                    bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1533|  3.30k|                    n = -1 - n;
 1534|  3.30k|                    text_buffer_.clear();
 1535|  3.30k|                    n.write_string(text_buffer_);
 1536|  3.30k|                    more_ = visitor.string_value(text_buffer_, semantic_tag::bigint, *this, ec);
 1537|  3.30k|                    break;
 1538|  3.30k|                }
 1539|    350|                case 0x15:
  ------------------
  |  Branch (1539:17): [True: 350, False: 279k]
  ------------------
 1540|    350|                {
 1541|    350|                    read(bytes_buffer_,ec);
 1542|    350|                    if (ec)
  ------------------
  |  Branch (1542:25): [True: 3, False: 347]
  ------------------
 1543|      3|                    {
 1544|      3|                        more_ = false;
 1545|      3|                        return;
 1546|      3|                    }
 1547|    347|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base64url, *this, ec);
 1548|    347|                    break;
 1549|    350|                }
 1550|    364|                case 0x16:
  ------------------
  |  Branch (1550:17): [True: 364, False: 279k]
  ------------------
 1551|    364|                {
 1552|    364|                    read(bytes_buffer_,ec);
 1553|    364|                    if (ec)
  ------------------
  |  Branch (1553:25): [True: 1, False: 363]
  ------------------
 1554|      1|                    {
 1555|      1|                        more_ = false;
 1556|      1|                        return;
 1557|      1|                    }
 1558|    363|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base64, *this, ec);
 1559|    363|                    break;
 1560|    364|                }
 1561|    620|                case 0x17:
  ------------------
  |  Branch (1561:17): [True: 620, False: 279k]
  ------------------
 1562|    620|                {
 1563|    620|                    read(bytes_buffer_,ec);
 1564|    620|                    if (ec)
  ------------------
  |  Branch (1564:25): [True: 2, False: 618]
  ------------------
 1565|      2|                    {
 1566|      2|                        more_ = false;
 1567|      2|                        return;
 1568|      2|                    }
 1569|    618|                    more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::base16, *this, ec);
 1570|    618|                    break;
 1571|    620|                }
 1572|  4.31k|                case 0x40:
  ------------------
  |  Branch (1572:17): [True: 4.31k, False: 275k]
  ------------------
 1573|  4.31k|                {
 1574|  4.31k|                    typed_array_.clear();
 1575|  4.31k|                    read(typed_array_,ec);
 1576|  4.31k|                    if (ec)
  ------------------
  |  Branch (1576:25): [True: 2, False: 4.31k]
  ------------------
 1577|      2|                    {
 1578|      2|                        more_ = false;
 1579|      2|                        return;
 1580|      2|                    }
 1581|  4.31k|                    uint8_t* data = reinterpret_cast<uint8_t*>(typed_array_.data());
 1582|  4.31k|                    std::size_t size = typed_array_.size();
 1583|  4.31k|                    more_ = visitor.typed_array(jsoncons::span<const uint8_t>(data,size), semantic_tag::none, *this, ec);
 1584|  4.31k|                    break;
 1585|  4.31k|                }
 1586|    352|                case 0x44:
  ------------------
  |  Branch (1586:17): [True: 352, False: 279k]
  ------------------
 1587|    352|                {
 1588|    352|                    typed_array_.clear();
 1589|    352|                    read(typed_array_,ec);
 1590|    352|                    if (ec)
  ------------------
  |  Branch (1590:25): [True: 1, False: 351]
  ------------------
 1591|      1|                    {
 1592|      1|                        more_ = false;
 1593|      1|                        return;
 1594|      1|                    }
 1595|    351|                    uint8_t* data = reinterpret_cast<uint8_t*>(typed_array_.data());
 1596|    351|                    std::size_t size = typed_array_.size();
 1597|    351|                    more_ = visitor.typed_array(jsoncons::span<const uint8_t>(data,size), semantic_tag::clamped, *this, ec);
 1598|    351|                    break;
 1599|    352|                }
 1600|    933|                case 0x41:
  ------------------
  |  Branch (1600:17): [True: 933, False: 279k]
  ------------------
 1601|  2.21k|                case 0x45:
  ------------------
  |  Branch (1601:17): [True: 1.28k, False: 278k]
  ------------------
 1602|  2.21k|                {
 1603|  2.21k|                    typed_array_.clear();
 1604|  2.21k|                    read(typed_array_,ec);
 1605|  2.21k|                    if (ec)
  ------------------
  |  Branch (1605:25): [True: 8, False: 2.21k]
  ------------------
 1606|      8|                    {
 1607|      8|                        more_ = false;
 1608|      8|                        return;
 1609|      8|                    }
 1610|  2.21k|                    const uint8_t tag = (uint8_t)item_tag_;
 1611|  2.21k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1612|  2.21k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1613|       |
 1614|  2.21k|                    uint16_t* data = reinterpret_cast<uint16_t*>(typed_array_.data());
 1615|  2.21k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1616|       |
 1617|  2.21k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1617:25): [True: 928, False: 1.28k]
  ------------------
 1618|    928|                    {
 1619|  7.81k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1619:49): [True: 6.88k, False: 928]
  ------------------
 1620|  6.88k|                        {
 1621|  6.88k|                            data[i] = binary::byte_swap<uint16_t>(data[i]);
 1622|  6.88k|                        }
 1623|    928|                    }
 1624|  2.21k|                    more_ = visitor.typed_array(jsoncons::span<const uint16_t>(data,size), semantic_tag::none, *this, ec);
 1625|  2.21k|                    break;
 1626|  2.21k|                }
 1627|  96.5k|                case 0x42:
  ------------------
  |  Branch (1627:17): [True: 96.5k, False: 183k]
  ------------------
 1628|  97.5k|                case 0x46:
  ------------------
  |  Branch (1628:17): [True: 957, False: 279k]
  ------------------
 1629|  97.5k|                {
 1630|  97.5k|                    typed_array_.clear();
 1631|  97.5k|                    read(typed_array_,ec);
 1632|  97.5k|                    if (ec)
  ------------------
  |  Branch (1632:25): [True: 3, False: 97.5k]
  ------------------
 1633|      3|                    {
 1634|      3|                        more_ = false;
 1635|      3|                        return;
 1636|      3|                    }
 1637|  97.5k|                    const uint8_t tag = (uint8_t)item_tag_;
 1638|  97.5k|                    jsoncons::endian e = get_typed_array_endianness(tag);
 1639|  97.5k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1640|       |
 1641|  97.5k|                    uint32_t* data = reinterpret_cast<uint32_t*>(typed_array_.data());
 1642|  97.5k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1643|  97.5k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1643:25): [True: 96.5k, False: 954]
  ------------------
 1644|  96.5k|                    {
 1645|   120k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1645:49): [True: 24.3k, False: 96.5k]
  ------------------
 1646|  24.3k|                        {
 1647|  24.3k|                            data[i] = binary::byte_swap<uint32_t>(data[i]);
 1648|  24.3k|                        }
 1649|  96.5k|                    }
 1650|  97.5k|                    more_ = visitor.typed_array(jsoncons::span<const uint32_t>(data,size), semantic_tag::none, *this, ec);
 1651|  97.5k|                    break;
 1652|  97.5k|                }
 1653|  2.96k|                case 0x43:
  ------------------
  |  Branch (1653:17): [True: 2.96k, False: 277k]
  ------------------
 1654|  3.47k|                case 0x47:
  ------------------
  |  Branch (1654:17): [True: 506, False: 279k]
  ------------------
 1655|  3.47k|                {
 1656|  3.47k|                    typed_array_.clear();
 1657|  3.47k|                    read(typed_array_,ec);
 1658|  3.47k|                    if (ec)
  ------------------
  |  Branch (1658:25): [True: 4, False: 3.46k]
  ------------------
 1659|      4|                    {
 1660|      4|                        more_ = false;
 1661|      4|                        return;
 1662|      4|                    }
 1663|  3.46k|                    const uint8_t tag = (uint8_t)item_tag_;
 1664|  3.46k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1665|  3.46k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1666|       |
 1667|  3.46k|                    uint64_t* data = reinterpret_cast<uint64_t*>(typed_array_.data());
 1668|  3.46k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1669|  3.46k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1669:25): [True: 2.96k, False: 505]
  ------------------
 1670|  2.96k|                    {
 1671|  58.0k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1671:49): [True: 55.1k, False: 2.96k]
  ------------------
 1672|  55.1k|                        {
 1673|  55.1k|                            data[i] = binary::byte_swap<uint64_t>(data[i]);
 1674|  55.1k|                        }
 1675|  2.96k|                    }
 1676|  3.46k|                    more_ = visitor.typed_array(jsoncons::span<const uint64_t>(data,size), semantic_tag::none, *this, ec);
 1677|  3.46k|                    break;
 1678|  3.47k|                }
 1679|  1.51k|                case 0x48:
  ------------------
  |  Branch (1679:17): [True: 1.51k, False: 278k]
  ------------------
 1680|  1.51k|                {
 1681|  1.51k|                    typed_array_.clear();
 1682|  1.51k|                    read(typed_array_,ec);
 1683|  1.51k|                    if (ec)
  ------------------
  |  Branch (1683:25): [True: 17, False: 1.49k]
  ------------------
 1684|     17|                    {
 1685|     17|                        more_ = false;
 1686|     17|                        return;
 1687|     17|                    }
 1688|  1.49k|                    int8_t* data = reinterpret_cast<int8_t*>(typed_array_.data());
 1689|  1.49k|                    std::size_t size = typed_array_.size();
 1690|  1.49k|                    more_ = visitor.typed_array(jsoncons::span<const int8_t>(data,size), semantic_tag::none, *this, ec);
 1691|  1.49k|                    break;
 1692|  1.51k|                }
 1693|  1.79k|                case 0x49:
  ------------------
  |  Branch (1693:17): [True: 1.79k, False: 278k]
  ------------------
 1694|  2.56k|                case 0x4d:
  ------------------
  |  Branch (1694:17): [True: 774, False: 279k]
  ------------------
 1695|  2.56k|                {
 1696|  2.56k|                    typed_array_.clear();
 1697|  2.56k|                    read(typed_array_,ec);
 1698|  2.56k|                    if (ec)
  ------------------
  |  Branch (1698:25): [True: 2, False: 2.56k]
  ------------------
 1699|      2|                    {
 1700|      2|                        more_ = false;
 1701|      2|                        return;
 1702|      2|                    }
 1703|  2.56k|                    const uint8_t tag = (uint8_t)item_tag_;
 1704|  2.56k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1705|  2.56k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1706|       |
 1707|  2.56k|                    int16_t* data = reinterpret_cast<int16_t*>(typed_array_.data());
 1708|  2.56k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1709|  2.56k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1709:25): [True: 1.79k, False: 772]
  ------------------
 1710|  1.79k|                    {
 1711|   232k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1711:49): [True: 230k, False: 1.79k]
  ------------------
 1712|   230k|                        {
 1713|   230k|                            data[i] = binary::byte_swap<int16_t>(data[i]);
 1714|   230k|                        }
 1715|  1.79k|                    }
 1716|  2.56k|                    more_ = visitor.typed_array(jsoncons::span<const int16_t>(data,size), semantic_tag::none, *this, ec);
 1717|  2.56k|                    break;
 1718|  2.56k|                }
 1719|    701|                case 0x4a:
  ------------------
  |  Branch (1719:17): [True: 701, False: 279k]
  ------------------
 1720|  6.25k|                case 0x4e:
  ------------------
  |  Branch (1720:17): [True: 5.55k, False: 274k]
  ------------------
 1721|  6.25k|                {
 1722|  6.25k|                    typed_array_.clear();
 1723|  6.25k|                    read(typed_array_,ec);
 1724|  6.25k|                    if (ec)
  ------------------
  |  Branch (1724:25): [True: 3, False: 6.25k]
  ------------------
 1725|      3|                    {
 1726|      3|                        more_ = false;
 1727|      3|                        return;
 1728|      3|                    }
 1729|  6.25k|                    const uint8_t tag = (uint8_t)item_tag_;
 1730|  6.25k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1731|  6.25k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1732|       |
 1733|  6.25k|                    int32_t* data = reinterpret_cast<int32_t*>(typed_array_.data());
 1734|  6.25k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1735|  6.25k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1735:25): [True: 699, False: 5.55k]
  ------------------
 1736|    699|                    {
 1737|  9.69k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1737:49): [True: 9.00k, False: 699]
  ------------------
 1738|  9.00k|                        {
 1739|  9.00k|                            data[i] = binary::byte_swap<int32_t>(data[i]);
 1740|  9.00k|                        }
 1741|    699|                    }
 1742|  6.25k|                    more_ = visitor.typed_array(jsoncons::span<const int32_t>(data,size), semantic_tag::none, *this, ec);
 1743|  6.25k|                    break;
 1744|  6.25k|                }
 1745|  12.1k|                case 0x4b:
  ------------------
  |  Branch (1745:17): [True: 12.1k, False: 267k]
  ------------------
 1746|  13.0k|                case 0x4f:
  ------------------
  |  Branch (1746:17): [True: 934, False: 279k]
  ------------------
 1747|  13.0k|                {
 1748|  13.0k|                    typed_array_.clear();
 1749|  13.0k|                    read(typed_array_,ec);
 1750|  13.0k|                    if (ec)
  ------------------
  |  Branch (1750:25): [True: 10, False: 13.0k]
  ------------------
 1751|     10|                    {
 1752|     10|                        more_ = false;
 1753|     10|                        return;
 1754|     10|                    }
 1755|  13.0k|                    const uint8_t tag = (uint8_t)item_tag_;
 1756|  13.0k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1757|  13.0k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1758|       |
 1759|  13.0k|                    int64_t* data = reinterpret_cast<int64_t*>(typed_array_.data());
 1760|  13.0k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1761|  13.0k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1761:25): [True: 12.1k, False: 932]
  ------------------
 1762|  12.1k|                    {
 1763|  67.1k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1763:49): [True: 54.9k, False: 12.1k]
  ------------------
 1764|  54.9k|                        {
 1765|  54.9k|                            data[i] = binary::byte_swap<int64_t>(data[i]);
 1766|  54.9k|                        }
 1767|  12.1k|                    }
 1768|  13.0k|                    more_ = visitor.typed_array(jsoncons::span<const int64_t>(data,size), semantic_tag::none, *this, ec);
 1769|  13.0k|                    break;
 1770|  13.0k|                }
 1771|  5.34k|                case 0x50:
  ------------------
  |  Branch (1771:17): [True: 5.34k, False: 274k]
  ------------------
 1772|  5.77k|                case 0x54:
  ------------------
  |  Branch (1772:17): [True: 431, False: 279k]
  ------------------
 1773|  5.77k|                {
 1774|  5.77k|                    typed_array_.clear();
 1775|  5.77k|                    read(typed_array_,ec);
 1776|  5.77k|                    if (ec)
  ------------------
  |  Branch (1776:25): [True: 7, False: 5.77k]
  ------------------
 1777|      7|                    {
 1778|      7|                        more_ = false;
 1779|      7|                        return;
 1780|      7|                    }
 1781|  5.77k|                    const uint8_t tag = (uint8_t)item_tag_;
 1782|  5.77k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1783|  5.77k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1784|       |
 1785|  5.77k|                    uint16_t* data = reinterpret_cast<uint16_t*>(typed_array_.data());
 1786|  5.77k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1787|  5.77k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1787:25): [True: 5.34k, False: 429]
  ------------------
 1788|  5.34k|                    {
 1789|  96.6k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1789:49): [True: 91.3k, False: 5.34k]
  ------------------
 1790|  91.3k|                        {
 1791|  91.3k|                            data[i] = binary::byte_swap<uint16_t>(data[i]);
 1792|  91.3k|                        }
 1793|  5.34k|                    }
 1794|  5.77k|                    more_ = visitor.typed_array(half_arg, jsoncons::span<const uint16_t>(data,size), semantic_tag::none, *this, ec);
 1795|  5.77k|                    break;
 1796|  5.77k|                }
 1797|  11.1k|                case 0x51:
  ------------------
  |  Branch (1797:17): [True: 11.1k, False: 268k]
  ------------------
 1798|  12.5k|                case 0x55:
  ------------------
  |  Branch (1798:17): [True: 1.45k, False: 278k]
  ------------------
 1799|  12.5k|                {
 1800|  12.5k|                    typed_array_.clear();
 1801|  12.5k|                    read(typed_array_,ec);
 1802|  12.5k|                    if (ec)
  ------------------
  |  Branch (1802:25): [True: 12, False: 12.5k]
  ------------------
 1803|     12|                    {
 1804|     12|                        more_ = false;
 1805|     12|                        return;
 1806|     12|                    }
 1807|  12.5k|                    const uint8_t tag = (uint8_t)item_tag_;
 1808|  12.5k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1809|  12.5k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1810|       |
 1811|  12.5k|                    float* data = reinterpret_cast<float*>(typed_array_.data());
 1812|  12.5k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1813|  12.5k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1813:25): [True: 11.1k, False: 1.44k]
  ------------------
 1814|  11.1k|                    {
 1815|  28.7k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1815:49): [True: 17.6k, False: 11.1k]
  ------------------
 1816|  17.6k|                        {
 1817|  17.6k|                            data[i] = binary::byte_swap<float>(data[i]);
 1818|  17.6k|                        }
 1819|  11.1k|                    }
 1820|  12.5k|                    more_ = visitor.typed_array(jsoncons::span<const float>(data,size), semantic_tag::none, *this, ec);
 1821|  12.5k|                    break;
 1822|  12.5k|                }
 1823|  3.44k|                case 0x52:
  ------------------
  |  Branch (1823:17): [True: 3.44k, False: 276k]
  ------------------
 1824|  4.02k|                case 0x56:
  ------------------
  |  Branch (1824:17): [True: 581, False: 279k]
  ------------------
 1825|  4.02k|                {
 1826|  4.02k|                    typed_array_.clear();
 1827|  4.02k|                    read(typed_array_,ec);
 1828|  4.02k|                    if (ec)
  ------------------
  |  Branch (1828:25): [True: 5, False: 4.02k]
  ------------------
 1829|      5|                    {
 1830|      5|                        more_ = false;
 1831|      5|                        return;
 1832|      5|                    }
 1833|  4.02k|                    const uint8_t tag = (uint8_t)item_tag_;
 1834|  4.02k|                    jsoncons::endian e = get_typed_array_endianness(tag); 
 1835|  4.02k|                    const size_t bytes_per_elem = get_typed_array_bytes_per_element(tag);
 1836|       |
 1837|  4.02k|                    double* data = reinterpret_cast<double*>(typed_array_.data());
 1838|  4.02k|                    std::size_t size = typed_array_.size()/bytes_per_elem;
 1839|       |
 1840|  4.02k|                    if (e != jsoncons::endian::native)
  ------------------
  |  Branch (1840:25): [True: 3.44k, False: 579]
  ------------------
 1841|  3.44k|                    {
 1842|  16.8k|                        for (std::size_t i = 0; i < size; ++i)
  ------------------
  |  Branch (1842:49): [True: 13.4k, False: 3.44k]
  ------------------
 1843|  13.4k|                        {
 1844|  13.4k|                            data[i] = binary::byte_swap<double>(data[i]);
 1845|  13.4k|                        }
 1846|  3.44k|                    }
 1847|  4.02k|                    more_ = visitor.typed_array(jsoncons::span<const double>(data,size), semantic_tag::none, *this, ec);
 1848|  4.02k|                    break;
 1849|  4.02k|                }
 1850|  45.2k|                default:
  ------------------
  |  Branch (1850:17): [True: 45.2k, False: 234k]
  ------------------
 1851|  45.2k|                {
 1852|  45.2k|                    read(bytes_buffer_,ec);
 1853|  45.2k|                    if (ec)
  ------------------
  |  Branch (1853:25): [True: 23, False: 45.2k]
  ------------------
 1854|     23|                    {
 1855|     23|                        more_ = false;
 1856|     23|                        return;
 1857|     23|                    }
 1858|  45.2k|                    more_ = visitor.byte_string_value(bytes_buffer_, item_tag_, *this, ec);
 1859|  45.2k|                    break;
 1860|  45.2k|                }
 1861|   280k|            }
 1862|   280k|            other_tags_[item_tag] = false;
 1863|   280k|        }
 1864|  13.1M|        else
 1865|  13.1M|        {
 1866|  13.1M|            read(bytes_buffer_,ec);
 1867|  13.1M|            if (ec)
  ------------------
  |  Branch (1867:17): [True: 1.06k, False: 13.1M]
  ------------------
 1868|  1.06k|            {
 1869|  1.06k|                return;
 1870|  1.06k|            }
 1871|  13.1M|            more_ = visitor.byte_string_value(bytes_buffer_, semantic_tag::none, *this, ec);
 1872|  13.1M|        }
 1873|  13.4M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE28read_byte_string_from_sourceclINS4_6vectorIhNS5_IhEEEEEEvRT_RNS4_10error_codeE:
  163|  13.4M|        {
  164|  13.4M|            source->read_byte_string(cont,ec);
  165|  13.4M|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16read_byte_stringERNS4_6vectorIhNS5_IhEEEERNS4_10error_codeE:
  757|  13.4M|    {
  758|  13.4M|        bool more = true;
  759|  13.4M|        v.clear();
  760|  13.4M|        auto c = source_.peek();
  761|  13.4M|        if (c.eof)
  ------------------
  |  Branch (761:13): [True: 0, False: 13.4M]
  ------------------
  762|      0|        {
  763|      0|            ec = cbor_errc::unexpected_eof;
  764|      0|            more = false;
  765|      0|            return more;
  766|      0|        }
  767|  13.4M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  768|  13.4M|        uint8_t info = get_additional_information_value(c.value);
  769|       |
  770|  13.4M|        JSONCONS_ASSERT(major_type == jsoncons::cbor::detail::cbor_major_type::byte_string);
  ------------------
  |  |  378|  13.4M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 13.4M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  771|       |
  772|  13.4M|        switch(info)
  773|  13.4M|        {
  774|  1.40k|            case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (774:13): [True: 1.40k, False: 13.4M]
  ------------------
  775|  1.40k|            {
  776|  1.40k|                auto func = [&v,&more](Source& source, std::size_t length, std::error_code& ec) -> bool
  777|  1.40k|                {
  778|  1.40k|                    if (source_reader<Source>::read(source, v, length) != length)
  779|  1.40k|                    {
  780|  1.40k|                        ec = cbor_errc::unexpected_eof;
  781|  1.40k|                        more = false;
  782|  1.40k|                        return more;
  783|  1.40k|                    }
  784|  1.40k|                    return true;
  785|  1.40k|                };
  786|  1.40k|                iterate_string_chunks(func, major_type, ec);
  787|  1.40k|                break;
  788|      0|            }
  789|  13.4M|            default:
  ------------------
  |  Branch (789:13): [True: 13.4M, False: 1.40k]
  ------------------
  790|  13.4M|            {
  791|  13.4M|                std::size_t length = get_size(ec);
  792|  13.4M|                if (ec)
  ------------------
  |  Branch (792:21): [True: 534, False: 13.4M]
  ------------------
  793|    534|                {
  794|    534|                    more = false;
  795|    534|                    return more;
  796|    534|                }
  797|  13.4M|                if (source_reader<Source>::read(source_, v, length) != length)
  ------------------
  |  Branch (797:21): [True: 432, False: 13.4M]
  ------------------
  798|    432|                {
  799|    432|                    ec = cbor_errc::unexpected_eof;
  800|    432|                    more = false;
  801|    432|                    return more;
  802|    432|                }
  803|  13.4M|                if (!stringref_map_stack_.empty() &&
  ------------------
  |  Branch (803:21): [True: 5.89M, False: 7.56M]
  ------------------
  804|  13.4M|                    v.size() >= jsoncons::cbor::detail::min_length_for_stringref(stringref_map_stack_.back().size()))
  ------------------
  |  Branch (804:21): [True: 2.35M, False: 3.54M]
  ------------------
  805|  2.35M|                {
  806|  2.35M|                    stringref_map_stack_.back().emplace_back(mapped_string(v, alloc_));
  807|  2.35M|                }
  808|  13.4M|                break;
  809|  13.4M|            }
  810|       |
  811|  13.4M|        }
  812|  13.4M|        return more;
  813|  13.4M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE21iterate_string_chunksIZNS7_16read_byte_stringERNS4_6vectorIhNS5_IhEEEERNS4_10error_codeEEUlRS3_mSE_E_EEvRT_NS0_6detail15cbor_major_typeESE_:
  817|  1.40k|    {
  818|  1.40k|        int nesting_level = 0;
  819|       |
  820|  1.40k|        bool done = false;
  821|  4.41M|        while (!done)
  ------------------
  |  Branch (821:16): [True: 4.41M, False: 1.00k]
  ------------------
  822|  4.41M|        {
  823|  4.41M|            auto c = source_.peek();
  824|  4.41M|            if (c.eof)
  ------------------
  |  Branch (824:17): [True: 93, False: 4.41M]
  ------------------
  825|     93|            {
  826|     93|                ec = cbor_errc::unexpected_eof;
  827|     93|                more_ = false;
  828|     93|                return;
  829|     93|            }
  830|  4.41M|            if (nesting_level > 0 && c.value == 0xff)
  ------------------
  |  Branch (830:17): [True: 4.41M, False: 1.40k]
  |  Branch (830:38): [True: 506k, False: 3.91M]
  ------------------
  831|   506k|            {
  832|   506k|                --nesting_level;
  833|   506k|                if (nesting_level == 0)
  ------------------
  |  Branch (833:21): [True: 1.00k, False: 505k]
  ------------------
  834|  1.00k|                {
  835|  1.00k|                    done = true;
  836|  1.00k|                }
  837|   506k|                source_.ignore(1);
  838|   506k|                continue;
  839|   506k|            }
  840|       |
  841|  3.91M|            jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  842|  3.91M|            if (major_type != type)
  ------------------
  |  Branch (842:17): [True: 190, False: 3.91M]
  ------------------
  843|    190|            {
  844|    190|                ec = cbor_errc::illegal_chunked_string;
  845|    190|                more_ = false;
  846|    190|                return;
  847|    190|            }
  848|  3.91M|            uint8_t info = get_additional_information_value(c.value);
  849|       |
  850|  3.91M|            switch (info)
  851|  3.91M|            {
  852|  3.47M|                case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (852:17): [True: 3.47M, False: 440k]
  ------------------
  853|  3.47M|                {
  854|  3.47M|                    ++nesting_level;
  855|  3.47M|                    source_.ignore(1);
  856|  3.47M|                    break;
  857|      0|                }
  858|   440k|                default: // definite length
  ------------------
  |  Branch (858:17): [True: 440k, False: 3.47M]
  ------------------
  859|   440k|                {
  860|   440k|                    std::size_t length = get_size(ec);
  861|   440k|                    if (!more_)
  ------------------
  |  Branch (861:25): [True: 1, False: 440k]
  ------------------
  862|      1|                    {
  863|      1|                        return;
  864|      1|                    }
  865|   440k|                    more_ = func(source_, length, ec);
  866|   440k|                    if (!more_)
  ------------------
  |  Branch (866:25): [True: 118, False: 440k]
  ------------------
  867|    118|                    {
  868|    118|                        return;
  869|    118|                    }
  870|   440k|                    if (nesting_level == 0)
  ------------------
  |  Branch (870:25): [True: 0, False: 440k]
  ------------------
  871|      0|                    {
  872|      0|                        done = true;
  873|      0|                    }
  874|   440k|                    break;
  875|   440k|                }
  876|  3.91M|            }
  877|  3.91M|        } 
  878|  1.40k|    }
_ZZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16read_byte_stringERNS4_6vectorIhNS5_IhEEEERNS4_10error_codeEENKUlRS3_mSD_E_clESE_mSD_:
  777|   440k|                {
  778|   440k|                    if (source_reader<Source>::read(source, v, length) != length)
  ------------------
  |  Branch (778:25): [True: 118, False: 440k]
  ------------------
  779|    118|                    {
  780|    118|                        ec = cbor_errc::unexpected_eof;
  781|    118|                        more = false;
  782|    118|                        return more;
  783|    118|                    }
  784|   440k|                    return true;
  785|   440k|                };
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE8get_sizeERNS4_10error_codeE:
  741|  29.6M|    {
  742|  29.6M|        uint64_t u = get_uint64_value(ec);
  743|  29.6M|        if (!more_)
  ------------------
  |  Branch (743:13): [True: 158, False: 29.6M]
  ------------------
  744|    158|        {
  745|    158|            return 0;
  746|    158|        }
  747|  29.6M|        std::size_t len = static_cast<std::size_t>(u);
  748|  29.6M|        if (len != u)
  ------------------
  |  Branch (748:13): [True: 0, False: 29.6M]
  ------------------
  749|      0|        {
  750|      0|            ec = cbor_errc::number_too_large;
  751|      0|            more_ = false;
  752|      0|        }
  753|  29.6M|        return len;
  754|  29.6M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13mapped_stringC2EOS8_:
   89|  5.69M|        mapped_string(mapped_string&&) noexcept = default;
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13mapped_stringC2ERKNS4_6vectorIhNS5_IhEEEERKS6_:
   78|  2.35M|        {
   79|  2.35M|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16read_text_stringERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeE:
  708|  1.49M|    {
  709|  1.49M|        auto c = source_.peek();
  710|  1.49M|        if (c.eof)
  ------------------
  |  Branch (710:13): [True: 0, False: 1.49M]
  ------------------
  711|      0|        {
  712|      0|            ec = cbor_errc::unexpected_eof;
  713|      0|            more_ = false;
  714|      0|            return;
  715|      0|        }
  716|  1.49M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  717|  1.49M|        uint8_t info = get_additional_information_value(c.value);
  718|       |
  719|  1.49M|        JSONCONS_ASSERT(major_type == jsoncons::cbor::detail::cbor_major_type::text_string);
  ------------------
  |  |  378|  1.49M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 1.49M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  720|  1.49M|        auto func = [&str](Source& source, std::size_t length, std::error_code& ec) -> bool
  721|  1.49M|        {
  722|  1.49M|            if (source_reader<Source>::read(source, str, length) != length)
  723|  1.49M|            {
  724|  1.49M|                ec = cbor_errc::unexpected_eof;
  725|  1.49M|                return false;
  726|  1.49M|            }
  727|  1.49M|            return true;
  728|  1.49M|        };
  729|  1.49M|        iterate_string_chunks(func, major_type, ec);
  730|       |
  731|  1.49M|        if (!stringref_map_stack_.empty() && 
  ------------------
  |  Branch (731:13): [True: 960k, False: 536k]
  ------------------
  732|  1.49M|            info != jsoncons::cbor::detail::additional_info::indefinite_length &&
  ------------------
  |  Branch (732:13): [True: 959k, False: 263]
  ------------------
  733|  1.49M|            str.length() >= jsoncons::cbor::detail::min_length_for_stringref(stringref_map_stack_.back().size()))
  ------------------
  |  Branch (733:13): [True: 175k, False: 784k]
  ------------------
  734|   175k|        {
  735|   175k|            stringref_map_stack_.back().emplace_back(mapped_string(str,alloc_));
  736|   175k|        }
  737|       |
  738|  1.49M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE21iterate_string_chunksIZNS7_16read_text_stringERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeEEUlRS3_mSF_E_EEvRT_NS0_6detail15cbor_major_typeESF_:
  817|  1.49M|    {
  818|  1.49M|        int nesting_level = 0;
  819|       |
  820|  1.49M|        bool done = false;
  821|  6.90M|        while (!done)
  ------------------
  |  Branch (821:16): [True: 5.40M, False: 1.49M]
  ------------------
  822|  5.40M|        {
  823|  5.40M|            auto c = source_.peek();
  824|  5.40M|            if (c.eof)
  ------------------
  |  Branch (824:17): [True: 60, False: 5.40M]
  ------------------
  825|     60|            {
  826|     60|                ec = cbor_errc::unexpected_eof;
  827|     60|                more_ = false;
  828|     60|                return;
  829|     60|            }
  830|  5.40M|            if (nesting_level > 0 && c.value == 0xff)
  ------------------
  |  Branch (830:17): [True: 3.90M, False: 1.49M]
  |  Branch (830:38): [True: 303k, False: 3.60M]
  ------------------
  831|   303k|            {
  832|   303k|                --nesting_level;
  833|   303k|                if (nesting_level == 0)
  ------------------
  |  Branch (833:21): [True: 392, False: 303k]
  ------------------
  834|    392|                {
  835|    392|                    done = true;
  836|    392|                }
  837|   303k|                source_.ignore(1);
  838|   303k|                continue;
  839|   303k|            }
  840|       |
  841|  5.09M|            jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(c.value);
  842|  5.09M|            if (major_type != type)
  ------------------
  |  Branch (842:17): [True: 37, False: 5.09M]
  ------------------
  843|     37|            {
  844|     37|                ec = cbor_errc::illegal_chunked_string;
  845|     37|                more_ = false;
  846|     37|                return;
  847|     37|            }
  848|  5.09M|            uint8_t info = get_additional_information_value(c.value);
  849|       |
  850|  5.09M|            switch (info)
  851|  5.09M|            {
  852|  3.09M|                case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (852:17): [True: 3.09M, False: 2.00M]
  ------------------
  853|  3.09M|                {
  854|  3.09M|                    ++nesting_level;
  855|  3.09M|                    source_.ignore(1);
  856|  3.09M|                    break;
  857|      0|                }
  858|  2.00M|                default: // definite length
  ------------------
  |  Branch (858:17): [True: 2.00M, False: 3.09M]
  ------------------
  859|  2.00M|                {
  860|  2.00M|                    std::size_t length = get_size(ec);
  861|  2.00M|                    if (!more_)
  ------------------
  |  Branch (861:25): [True: 2, False: 2.00M]
  ------------------
  862|      2|                    {
  863|      2|                        return;
  864|      2|                    }
  865|  2.00M|                    more_ = func(source_, length, ec);
  866|  2.00M|                    if (!more_)
  ------------------
  |  Branch (866:25): [True: 323, False: 2.00M]
  ------------------
  867|    323|                    {
  868|    323|                        return;
  869|    323|                    }
  870|  2.00M|                    if (nesting_level == 0)
  ------------------
  |  Branch (870:25): [True: 1.49M, False: 508k]
  ------------------
  871|  1.49M|                    {
  872|  1.49M|                        done = true;
  873|  1.49M|                    }
  874|  2.00M|                    break;
  875|  2.00M|                }
  876|  5.09M|            }
  877|  5.09M|        } 
  878|  1.49M|    }
_ZZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE16read_text_stringERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeEENKUlRS3_mSE_E_clESF_mSE_:
  721|  2.00M|        {
  722|  2.00M|            if (source_reader<Source>::read(source, str, length) != length)
  ------------------
  |  Branch (722:17): [True: 323, False: 2.00M]
  ------------------
  723|    323|            {
  724|    323|                ec = cbor_errc::unexpected_eof;
  725|    323|                return false;
  726|    323|            }
  727|  2.00M|            return true;
  728|  2.00M|        };
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13mapped_stringC2ERKNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERKS6_:
   67|   175k|        {
   68|   175k|        }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10get_doubleERNS4_10error_codeE:
 1051|  51.4k|    {
 1052|  51.4k|        double val = 0;
 1053|       |
 1054|  51.4k|        uint8_t b;
 1055|  51.4k|        if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (1055:13): [True: 0, False: 51.4k]
  ------------------
 1056|      0|        {
 1057|      0|            ec = cbor_errc::unexpected_eof;
 1058|      0|            more_ = false;
 1059|      0|            return 0;
 1060|      0|        }
 1061|  51.4k|        uint8_t info = get_additional_information_value(b);
 1062|  51.4k|        switch (info)
 1063|  51.4k|        {
 1064|  44.6k|        case 0x1a: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (1064:9): [True: 44.6k, False: 6.80k]
  ------------------
 1065|  44.6k|            {
 1066|  44.6k|                uint8_t buf[sizeof(float)];
 1067|  44.6k|                if (source_.read(buf, sizeof(float)) !=sizeof(float)) 
  ------------------
  |  Branch (1067:21): [True: 33, False: 44.5k]
  ------------------
 1068|     33|                {
 1069|     33|                    ec = cbor_errc::unexpected_eof;
 1070|     33|                    more_ = false;
 1071|     33|                    return 0;
 1072|     33|                }
 1073|  44.5k|                val = binary::big_to_native<float>(buf, sizeof(buf));
 1074|  44.5k|                break;
 1075|  44.6k|            }
 1076|       |
 1077|  6.80k|        case 0x1b: //  Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (1077:9): [True: 6.80k, False: 44.6k]
  ------------------
 1078|  6.80k|            {
 1079|  6.80k|                uint8_t buf[sizeof(double)];
 1080|  6.80k|                if (source_.read(buf, sizeof(double)) != sizeof(double))
  ------------------
  |  Branch (1080:21): [True: 14, False: 6.79k]
  ------------------
 1081|     14|                {
 1082|     14|                    ec = cbor_errc::unexpected_eof;
 1083|     14|                    more_ = false;
 1084|     14|                    return 0;
 1085|     14|                }
 1086|  6.79k|                val = binary::big_to_native<double>(buf, sizeof(buf));
 1087|  6.79k|                break;
 1088|  6.80k|            }
 1089|      0|            default:
  ------------------
  |  Branch (1089:13): [True: 0, False: 51.4k]
  ------------------
 1090|      0|                break;
 1091|  51.4k|        }
 1092|       |        
 1093|  51.3k|        return val;
 1094|  51.4k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE21read_decimal_fractionERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeE:
 1097|   355k|    {
 1098|   355k|        std::size_t size = get_size(ec);
 1099|   355k|        if (!more_)
  ------------------
  |  Branch (1099:13): [True: 1, False: 355k]
  ------------------
 1100|      1|        {
 1101|      1|            return;
 1102|      1|        }
 1103|   355k|        if (size != 2)
  ------------------
  |  Branch (1103:13): [True: 90, False: 355k]
  ------------------
 1104|     90|        {
 1105|     90|            ec = cbor_errc::invalid_decimal_fraction;
 1106|     90|            more_ = false;
 1107|     90|            return;
 1108|     90|        }
 1109|       |
 1110|   355k|        auto c = source_.peek();
 1111|   355k|        if (c.eof)
  ------------------
  |  Branch (1111:13): [True: 17, False: 355k]
  ------------------
 1112|     17|        {
 1113|     17|            ec = cbor_errc::unexpected_eof;
 1114|     17|            more_ = false;
 1115|     17|            return;
 1116|     17|        }
 1117|   355k|        int64_t exponent = 0;
 1118|   355k|        switch (get_major_type(c.value))
 1119|   355k|        {
 1120|  13.7k|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1120:13): [True: 13.7k, False: 341k]
  ------------------
 1121|  13.7k|            {
 1122|  13.7k|                exponent = get_uint64_value(ec);
 1123|  13.7k|                if (ec)
  ------------------
  |  Branch (1123:21): [True: 271, False: 13.4k]
  ------------------
 1124|    271|                {
 1125|    271|                    return;
 1126|    271|                }
 1127|  13.4k|                break;
 1128|  13.7k|            }
 1129|   341k|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (1129:13): [True: 341k, False: 13.7k]
  ------------------
 1130|   341k|            {
 1131|   341k|                exponent = get_int64_value(ec);
 1132|   341k|                if (ec)
  ------------------
  |  Branch (1132:21): [True: 433, False: 341k]
  ------------------
 1133|    433|                {
 1134|    433|                    return;
 1135|    433|                }
 1136|   341k|                break;
 1137|   341k|            }
 1138|   341k|            default:
  ------------------
  |  Branch (1138:13): [True: 4, False: 355k]
  ------------------
 1139|      4|            {
 1140|      4|                ec = cbor_errc::invalid_decimal_fraction;
 1141|      4|                more_ = false;
 1142|      4|                return;
 1143|   341k|            }
 1144|   355k|        }
 1145|       |
 1146|   354k|        string_type str(alloc_);
 1147|       |
 1148|   354k|        c = source_.peek();
 1149|   354k|        if (c.eof)
  ------------------
  |  Branch (1149:13): [True: 17, False: 354k]
  ------------------
 1150|     17|        {
 1151|     17|            ec = cbor_errc::unexpected_eof;
 1152|     17|            more_ = false;
 1153|     17|            return;
 1154|     17|        }
 1155|       |
 1156|   354k|        switch (get_major_type(c.value))
 1157|   354k|        {
 1158|  11.4k|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1158:13): [True: 11.4k, False: 343k]
  ------------------
 1159|  11.4k|            {
 1160|  11.4k|                uint64_t val = get_uint64_value(ec);
 1161|  11.4k|                if (ec)
  ------------------
  |  Branch (1161:21): [True: 1, False: 11.4k]
  ------------------
 1162|      1|                {
 1163|      1|                    return;
 1164|      1|                }
 1165|  11.4k|                jsoncons::detail::from_integer(val, str);
 1166|  11.4k|                break;
 1167|  11.4k|            }
 1168|   341k|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (1168:13): [True: 341k, False: 13.0k]
  ------------------
 1169|   341k|            {
 1170|   341k|                int64_t val = get_int64_value(ec);
 1171|   341k|                if (ec)
  ------------------
  |  Branch (1171:21): [True: 1, False: 341k]
  ------------------
 1172|      1|                {
 1173|      1|                    return;
 1174|      1|                }
 1175|   341k|                jsoncons::detail::from_integer(val, str);
 1176|   341k|                break;
 1177|   341k|            }
 1178|  1.56k|            case jsoncons::cbor::detail::cbor_major_type::semantic_tag:
  ------------------
  |  Branch (1178:13): [True: 1.56k, False: 353k]
  ------------------
 1179|  1.56k|            {
 1180|  1.56k|                uint8_t b;
 1181|  1.56k|                if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (1181:21): [True: 0, False: 1.56k]
  ------------------
 1182|      0|                {
 1183|      0|                    ec = cbor_errc::unexpected_eof;
 1184|      0|                    more_ = false;
 1185|      0|                    return;
 1186|      0|                }
 1187|  1.56k|                uint8_t tag = get_additional_information_value(b);
 1188|  1.56k|                c = source_.peek();
 1189|  1.56k|                if (c.eof)
  ------------------
  |  Branch (1189:21): [True: 1, False: 1.56k]
  ------------------
 1190|      1|                {
 1191|      1|                    ec = cbor_errc::unexpected_eof;
 1192|      1|                    more_ = false;
 1193|      1|                    return;
 1194|      1|                }
 1195|       |
 1196|  1.56k|                if (get_major_type(c.value) == jsoncons::cbor::detail::cbor_major_type::byte_string)
  ------------------
  |  Branch (1196:21): [True: 1.55k, False: 11]
  ------------------
 1197|  1.55k|                {
 1198|  1.55k|                    bytes_buffer_.clear();
 1199|  1.55k|                    read_byte_string(bytes_buffer_, ec);
 1200|  1.55k|                    if (ec)
  ------------------
  |  Branch (1200:25): [True: 4, False: 1.54k]
  ------------------
 1201|      4|                    {
 1202|      4|                        more_ = false;
 1203|      4|                        return;
 1204|      4|                    }
 1205|  1.54k|                    if (tag == 2)
  ------------------
  |  Branch (1205:25): [True: 635, False: 912]
  ------------------
 1206|    635|                    {
 1207|    635|                        bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1208|    635|                        n.write_string(str);
 1209|    635|                    }
 1210|    912|                    else if (tag == 3)
  ------------------
  |  Branch (1210:30): [True: 905, False: 7]
  ------------------
 1211|    905|                    {
 1212|    905|                        bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1213|    905|                        n = -1 - n;
 1214|    905|                        n.write_string(str);
 1215|    905|                    }
 1216|  1.54k|                }
 1217|  1.55k|                break;
 1218|  1.56k|            }
 1219|  1.55k|            default:
  ------------------
  |  Branch (1219:13): [True: 4, False: 354k]
  ------------------
 1220|      4|            {
 1221|      4|                ec = cbor_errc::invalid_decimal_fraction;
 1222|      4|                more_ = false;
 1223|      4|                return;
 1224|  1.56k|            }
 1225|   354k|        }
 1226|       |
 1227|   354k|        if (str.size() >= static_cast<std::size_t>((std::numeric_limits<int32_t>::max)()) || 
  ------------------
  |  Branch (1227:13): [True: 0, False: 354k]
  ------------------
 1228|   354k|            exponent >= (std::numeric_limits<int32_t>::max)() || 
  ------------------
  |  Branch (1228:13): [True: 1, False: 354k]
  ------------------
 1229|   354k|            exponent <= (std::numeric_limits<int32_t>::min)())
  ------------------
  |  Branch (1229:13): [True: 65, False: 354k]
  ------------------
 1230|     66|        {
 1231|     66|            ec = cbor_errc::invalid_decimal_fraction;
 1232|     66|            more_ = false;
 1233|     66|            return;
 1234|     66|        }
 1235|   354k|        else if (str.size() > 0)
  ------------------
  |  Branch (1235:18): [True: 354k, False: 17]
  ------------------
 1236|   354k|        {
 1237|   354k|            if (str[0] == '-')
  ------------------
  |  Branch (1237:17): [True: 341k, False: 13.4k]
  ------------------
 1238|   341k|            {
 1239|   341k|                result.push_back('-');
 1240|   341k|                jsoncons::detail::prettify_string(str.c_str()+1, str.size()-1, (int)exponent, -4, 17, result);
 1241|   341k|            }
 1242|  13.4k|            else
 1243|  13.4k|            {
 1244|  13.4k|                jsoncons::detail::prettify_string(str.c_str(), str.size(), (int)exponent, -4, 17, result);
 1245|  13.4k|            }
 1246|   354k|        }
 1247|     17|        else
 1248|     17|        {
 1249|     17|            ec = cbor_errc::invalid_decimal_fraction;
 1250|     17|            more_ = false;
 1251|     17|            return;
 1252|     17|        }
 1253|   354k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE13read_bigfloatERNS4_12basic_stringIcNS4_11char_traitsIcEES6_EERNS4_10error_codeE:
 1256|   116k|    {
 1257|   116k|        std::size_t size = get_size(ec);
 1258|   116k|        if (!more_)
  ------------------
  |  Branch (1258:13): [True: 2, False: 116k]
  ------------------
 1259|      2|        {
 1260|      2|            return;
 1261|      2|        }
 1262|   116k|        if (size != 2)
  ------------------
  |  Branch (1262:13): [True: 92, False: 116k]
  ------------------
 1263|     92|        {
 1264|     92|            ec = cbor_errc::invalid_bigfloat;
 1265|     92|            more_ = false;
 1266|     92|            return;
 1267|     92|        }
 1268|       |
 1269|   116k|        auto c = source_.peek();
 1270|   116k|        if (c.eof)
  ------------------
  |  Branch (1270:13): [True: 18, False: 116k]
  ------------------
 1271|     18|        {
 1272|     18|            ec = cbor_errc::unexpected_eof;
 1273|     18|            more_ = false;
 1274|     18|            return;
 1275|     18|        }
 1276|   116k|        int64_t exponent = 0;
 1277|   116k|        switch (get_major_type(c.value))
 1278|   116k|        {
 1279|  14.8k|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1279:13): [True: 14.8k, False: 101k]
  ------------------
 1280|  14.8k|            {
 1281|  14.8k|                exponent = get_uint64_value(ec);
 1282|  14.8k|                if (ec)
  ------------------
  |  Branch (1282:21): [True: 277, False: 14.5k]
  ------------------
 1283|    277|                {
 1284|    277|                    return;
 1285|    277|                }
 1286|  14.5k|                break;
 1287|  14.8k|            }
 1288|   101k|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (1288:13): [True: 101k, False: 14.8k]
  ------------------
 1289|   101k|            {
 1290|   101k|                exponent = get_int64_value(ec);
 1291|   101k|                if (ec)
  ------------------
  |  Branch (1291:21): [True: 350, False: 100k]
  ------------------
 1292|    350|                {
 1293|    350|                    return;
 1294|    350|                }
 1295|   100k|                break;
 1296|   101k|            }
 1297|   100k|            default:
  ------------------
  |  Branch (1297:13): [True: 6, False: 116k]
  ------------------
 1298|      6|            {
 1299|      6|                ec = cbor_errc::invalid_bigfloat;
 1300|      6|                more_ = false;
 1301|      6|                return;
 1302|   101k|            }
 1303|   116k|        }
 1304|       |
 1305|   115k|        c = source_.peek();
 1306|   115k|        if (c.eof)
  ------------------
  |  Branch (1306:13): [True: 12, False: 115k]
  ------------------
 1307|     12|        {
 1308|     12|            ec = cbor_errc::unexpected_eof;
 1309|     12|            more_ = false;
 1310|     12|            return;
 1311|     12|        }
 1312|   115k|        switch (get_major_type(c.value))
 1313|   115k|        {
 1314|  34.3k|            case jsoncons::cbor::detail::cbor_major_type::unsigned_integer:
  ------------------
  |  Branch (1314:13): [True: 34.3k, False: 81.1k]
  ------------------
 1315|  34.3k|            {
 1316|  34.3k|                uint64_t val = get_uint64_value(ec);
 1317|  34.3k|                if (ec)
  ------------------
  |  Branch (1317:21): [True: 1, False: 34.3k]
  ------------------
 1318|      1|                {
 1319|      1|                    return;
 1320|      1|                }
 1321|  34.3k|                str.push_back('0');
 1322|  34.3k|                str.push_back('x');
 1323|  34.3k|                jsoncons::detail::integer_to_string_hex(val, str);
 1324|  34.3k|                break;
 1325|  34.3k|            }
 1326|  15.5k|            case jsoncons::cbor::detail::cbor_major_type::negative_integer:
  ------------------
  |  Branch (1326:13): [True: 15.5k, False: 99.8k]
  ------------------
 1327|  15.5k|            {
 1328|  15.5k|                int64_t val = get_int64_value(ec);
 1329|  15.5k|                if (ec)
  ------------------
  |  Branch (1329:21): [True: 1, False: 15.5k]
  ------------------
 1330|      1|                {
 1331|      1|                    return;
 1332|      1|                }
 1333|  15.5k|                str.push_back('-');
 1334|  15.5k|                str.push_back('0');
 1335|  15.5k|                str.push_back('x');
 1336|  15.5k|                jsoncons::detail::integer_to_string_hex(static_cast<uint64_t>(-val), str);
 1337|  15.5k|                break;
 1338|  15.5k|            }
 1339|  65.5k|            case jsoncons::cbor::detail::cbor_major_type::semantic_tag:
  ------------------
  |  Branch (1339:13): [True: 65.5k, False: 49.9k]
  ------------------
 1340|  65.5k|            {
 1341|  65.5k|                uint8_t b;
 1342|  65.5k|                if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (1342:21): [True: 0, False: 65.5k]
  ------------------
 1343|      0|                {
 1344|      0|                    ec = cbor_errc::unexpected_eof;
 1345|      0|                    more_ = false;
 1346|      0|                    return;
 1347|      0|                }
 1348|  65.5k|                uint8_t tag = get_additional_information_value(b);
 1349|       |
 1350|  65.5k|                c = source_.peek();
 1351|  65.5k|                if (c.eof)
  ------------------
  |  Branch (1351:21): [True: 7, False: 65.5k]
  ------------------
 1352|      7|                {
 1353|      7|                    ec = cbor_errc::unexpected_eof;
 1354|      7|                    more_ = false;
 1355|      7|                    return;
 1356|      7|                }
 1357|       |
 1358|  65.5k|                if (get_major_type(c.value) == jsoncons::cbor::detail::cbor_major_type::byte_string)
  ------------------
  |  Branch (1358:21): [True: 62.9k, False: 2.58k]
  ------------------
 1359|  62.9k|                {
 1360|  62.9k|                    bytes_buffer_.clear(); 
 1361|  62.9k|                    more_ = read_byte_string(bytes_buffer_, ec);
 1362|  62.9k|                    if (!more_)
  ------------------
  |  Branch (1362:25): [True: 9, False: 62.9k]
  ------------------
 1363|      9|                    {
 1364|      9|                        return;
 1365|      9|                    }
 1366|  62.9k|                    if (tag == 2)
  ------------------
  |  Branch (1366:25): [True: 59.8k, False: 3.02k]
  ------------------
 1367|  59.8k|                    {
 1368|  59.8k|                        str.push_back('0');
 1369|  59.8k|                        str.push_back('x');
 1370|  59.8k|                        bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1371|  59.8k|                        n.write_string_hex(str);
 1372|  59.8k|                    }
 1373|  3.02k|                    else if (tag == 3)
  ------------------
  |  Branch (1373:30): [True: 1.19k, False: 1.82k]
  ------------------
 1374|  1.19k|                    {
 1375|  1.19k|                        str.push_back('-');
 1376|  1.19k|                        str.push_back('0');
 1377|  1.19k|                        bigint n = bigint::from_bytes_be(1, bytes_buffer_.data(), bytes_buffer_.size());
 1378|  1.19k|                        n = -1 - n;
 1379|  1.19k|                        n.write_string_hex(str);
 1380|  1.19k|                        str[2] = 'x'; // overwrite minus
 1381|  1.19k|                    }
 1382|  62.9k|                }
 1383|  65.5k|                break;
 1384|  65.5k|            }
 1385|  65.5k|            default:
  ------------------
  |  Branch (1385:13): [True: 3, False: 115k]
  ------------------
 1386|      3|            {
 1387|      3|                ec = cbor_errc::invalid_bigfloat;
 1388|      3|                more_ = false;
 1389|      3|                return;
 1390|  65.5k|            }
 1391|   115k|        }
 1392|       |
 1393|   115k|        str.push_back('p');
 1394|   115k|        if (exponent >=0)
  ------------------
  |  Branch (1394:13): [True: 85.0k, False: 30.3k]
  ------------------
 1395|  85.0k|        {
 1396|  85.0k|            jsoncons::detail::integer_to_string_hex(static_cast<uint64_t>(exponent), str);
 1397|  85.0k|        }
 1398|  30.3k|        else
 1399|  30.3k|        {
 1400|  30.3k|            str.push_back('-');
 1401|  30.3k|            jsoncons::detail::integer_to_string_hex(static_cast<uint64_t>(-exponent), str);
 1402|  30.3k|        }
 1403|   115k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE23produce_begin_multi_dimERNS_24basic_item_event_visitorIcEENS_12semantic_tagERNS4_10error_codeE:
 1878|  1.11M|    {
 1879|  1.11M|        uint8_t b;
 1880|  1.11M|        if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (1880:13): [True: 0, False: 1.11M]
  ------------------
 1881|      0|        {
 1882|      0|            ec = cbor_errc::unexpected_eof;
 1883|      0|            more_ = false;
 1884|      0|            return;
 1885|      0|        }
 1886|  1.11M|        jsoncons::cbor::detail::cbor_major_type major_type = get_major_type(b);
 1887|  1.11M|        JSONCONS_ASSERT(major_type == jsoncons::cbor::detail::cbor_major_type::array);
  ------------------
  |  |  378|  1.11M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 1.11M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
 1888|  1.11M|        uint8_t info = get_additional_information_value(b);
 1889|       |       
 1890|  1.11M|        read_shape(info, ec);   
 1891|  1.11M|        if (ec)
  ------------------
  |  Branch (1891:13): [True: 407, False: 1.11M]
  ------------------
 1892|    407|        {
 1893|    407|            return;
 1894|    407|        }
 1895|       |
 1896|  1.11M|        state_stack_.emplace_back(parse_mode::multi_dim, 0);
 1897|  1.11M|        more_ = visitor.begin_multi_dim(shape_, tag, *this, ec);
 1898|  1.11M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10read_shapeEhRNS4_10error_codeE:
 1907|  1.11M|    {
 1908|  1.11M|        shape_.clear();
 1909|  1.11M|        switch (info)
 1910|  1.11M|        {
 1911|     68|            case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (1911:13): [True: 68, False: 1.11M]
  ------------------
 1912|     68|            {
 1913|  3.13M|                while (true)
  ------------------
  |  Branch (1913:24): [Folded - Ignored]
  ------------------
 1914|  3.13M|                {
 1915|  3.13M|                    auto c = source_.peek();
 1916|  3.13M|                    if (c.eof)
  ------------------
  |  Branch (1916:25): [True: 67, False: 3.13M]
  ------------------
 1917|     67|                    {
 1918|     67|                        ec = cbor_errc::unexpected_eof;
 1919|     67|                        more_ = false;
 1920|     67|                        return;
 1921|     67|                    }
 1922|  3.13M|                    if (c.value == 0xff)
  ------------------
  |  Branch (1922:25): [True: 904k, False: 2.22M]
  ------------------
 1923|   904k|                    {
 1924|   904k|                        source_.ignore(1);
 1925|   904k|                    }
 1926|  2.22M|                    else
 1927|  2.22M|                    {
 1928|  2.22M|                        std::size_t dim = get_size(ec);
 1929|  2.22M|                        if (!more_)
  ------------------
  |  Branch (1929:29): [True: 1, False: 2.22M]
  ------------------
 1930|      1|                        {
 1931|      1|                            return;
 1932|      1|                        }
 1933|  2.22M|                        shape_.push_back(dim);
 1934|  2.22M|                    }
 1935|  3.13M|                }
 1936|      0|                break;
 1937|     68|            }
 1938|  1.11M|            default:
  ------------------
  |  Branch (1938:13): [True: 1.11M, False: 68]
  ------------------
 1939|  1.11M|            {
 1940|  1.11M|                std::size_t size = get_size(ec);
 1941|  1.11M|                if (!more_)
  ------------------
  |  Branch (1941:21): [True: 24, False: 1.11M]
  ------------------
 1942|     24|                {
 1943|     24|                    return;
 1944|     24|                }
 1945|  1.66M|                for (std::size_t i = 0; more_ && i < size; ++i)
  ------------------
  |  Branch (1945:41): [True: 1.66M, False: 0]
  |  Branch (1945:50): [True: 556k, False: 1.11M]
  ------------------
 1946|   556k|                {
 1947|   556k|                    std::size_t dim = get_size(ec);
 1948|   556k|                    if (!more_)
  ------------------
  |  Branch (1948:25): [True: 114, False: 556k]
  ------------------
 1949|    114|                    {
 1950|    114|                        return;
 1951|    114|                    }
 1952|   556k|                    shape_.push_back(dim);
 1953|   556k|                }
 1954|  1.11M|                break;
 1955|  1.11M|            }
 1956|  1.11M|        }
 1957|  1.11M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE11begin_arrayERNS_24basic_item_event_visitorIcEEhRNS4_10error_codeE:
  608|  2.11M|    {
  609|  2.11M|        if (JSONCONS_UNLIKELY(++nesting_depth_ > options_.max_nesting_depth()))
  ------------------
  |  |   45|  2.11M|#define JSONCONS_UNLIKELY(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (45:30): [True: 2, False: 2.11M]
  |  |  ------------------
  ------------------
  610|      2|        {
  611|      2|            ec = cbor_errc::max_nesting_depth_exceeded;
  612|      2|            more_ = false;
  613|      2|            return;
  614|      2|        } 
  615|  2.11M|        semantic_tag tag = semantic_tag::none;
  616|  2.11M|        bool pop_stringref_map_stack = false;
  617|  2.11M|        if (other_tags_[stringref_namespace_tag])
  ------------------
  |  Branch (617:13): [True: 3.00k, False: 2.10M]
  ------------------
  618|  3.00k|        {
  619|  3.00k|            stringref_map_stack_.emplace_back();
  620|  3.00k|            other_tags_[stringref_namespace_tag] = false;
  621|  3.00k|            pop_stringref_map_stack = true;
  622|  3.00k|        }
  623|  2.11M|        switch (info)
  624|  2.11M|        {
  625|   414k|            case jsoncons::cbor::detail::additional_info::indefinite_length:
  ------------------
  |  Branch (625:13): [True: 414k, False: 1.69M]
  ------------------
  626|   414k|            {
  627|   414k|                state_stack_.emplace_back(parse_mode::indefinite_array,0,pop_stringref_map_stack);
  628|   414k|                more_ = visitor.begin_array(tag, *this, ec);
  629|   414k|                source_.ignore(1);
  630|   414k|                break;
  631|      0|            }
  632|  1.69M|            default: // definite length
  ------------------
  |  Branch (632:13): [True: 1.69M, False: 414k]
  ------------------
  633|  1.69M|            {
  634|  1.69M|                std::size_t len = get_size(ec);
  635|  1.69M|                if (!more_)
  ------------------
  |  Branch (635:21): [True: 3, False: 1.69M]
  ------------------
  636|      3|                {
  637|      3|                    return;
  638|      3|                }
  639|  1.69M|                state_stack_.emplace_back(parse_mode::array,len,pop_stringref_map_stack);
  640|  1.69M|                more_ = visitor.begin_array(len, tag, *this, ec);
  641|  1.69M|                break;
  642|  1.69M|            }
  643|  2.11M|        }
  644|  2.11M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE12begin_objectERNS_24basic_item_event_visitorIcEEhRNS4_10error_codeE:
  659|  8.10M|    {
  660|  8.10M|        if (JSONCONS_UNLIKELY(++nesting_depth_ > options_.max_nesting_depth()))
  ------------------
  |  |   45|  8.10M|#define JSONCONS_UNLIKELY(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (45:30): [True: 3, False: 8.10M]
  |  |  ------------------
  ------------------
  661|      3|        {
  662|      3|            ec = cbor_errc::max_nesting_depth_exceeded;
  663|      3|            more_ = false;
  664|      3|            return;
  665|      3|        } 
  666|  8.10M|        bool pop_stringref_map_stack = false;
  667|  8.10M|        if (other_tags_[stringref_namespace_tag])
  ------------------
  |  Branch (667:13): [True: 1.76k, False: 8.10M]
  ------------------
  668|  1.76k|        {
  669|  1.76k|            stringref_map_stack_.emplace_back();
  670|  1.76k|            other_tags_[stringref_namespace_tag] = false;
  671|  1.76k|            pop_stringref_map_stack = true;
  672|  1.76k|        }
  673|  8.10M|        switch (info)
  674|  8.10M|        {
  675|   401k|            case jsoncons::cbor::detail::additional_info::indefinite_length: 
  ------------------
  |  Branch (675:13): [True: 401k, False: 7.70M]
  ------------------
  676|   401k|            {
  677|   401k|                state_stack_.emplace_back(parse_mode::indefinite_map_key,0,pop_stringref_map_stack);
  678|   401k|                more_ = visitor.begin_object(semantic_tag::none, *this, ec);
  679|   401k|                source_.ignore(1);
  680|   401k|                break;
  681|      0|            }
  682|  7.70M|            default: // definite_length
  ------------------
  |  Branch (682:13): [True: 7.70M, False: 401k]
  ------------------
  683|  7.70M|            {
  684|  7.70M|                std::size_t len = get_size(ec);
  685|  7.70M|                if (!more_)
  ------------------
  |  Branch (685:21): [True: 4, False: 7.70M]
  ------------------
  686|      4|                {
  687|      4|                    return;
  688|      4|                }
  689|  7.70M|                state_stack_.emplace_back(parse_mode::map_key,len,pop_stringref_map_stack);
  690|  7.70M|                more_ = visitor.begin_object(len, semantic_tag::none, *this, ec);
  691|  7.70M|                break;
  692|  7.70M|            }
  693|  8.10M|        }
  694|  8.10M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE21produce_end_multi_dimERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
 1901|  27.8k|    {
 1902|  27.8k|        more_ = visitor.end_multi_dim(*this, ec);
 1903|  27.8k|        state_stack_.pop_back();
 1904|  27.8k|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE9end_arrayERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  647|  2.07M|    {
  648|  2.07M|        --nesting_depth_;
  649|       |
  650|  2.07M|        more_ = visitor.end_array(*this, ec);
  651|  2.07M|        if (state_stack_.back().pop_stringref_map_stack)
  ------------------
  |  Branch (651:13): [True: 965, False: 2.07M]
  ------------------
  652|    965|        {
  653|    965|            stringref_map_stack_.pop_back();
  654|    965|        }
  655|  2.07M|        state_stack_.pop_back();
  656|  2.07M|    }
_ZN8jsoncons4cbor17basic_cbor_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10end_objectERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  697|  8.07M|    {
  698|  8.07M|        --nesting_depth_;
  699|  8.07M|        more_ = visitor.end_object(*this, ec);
  700|  8.07M|        if (state_stack_.back().pop_stringref_map_stack)
  ------------------
  |  Branch (700:13): [True: 794, False: 8.07M]
  ------------------
  701|    794|        {
  702|    794|            stringref_map_stack_.pop_back();
  703|    794|        }
  704|  8.07M|        state_stack_.pop_back();
  705|  8.07M|    }

_ZN8jsoncons4cbor17basic_cbor_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEEC2IRNS4_13basic_istreamIcNS4_11char_traitsIcEEEEEEOT_RNS_18basic_json_visitorIcEERKNS0_19cbor_decode_optionsERKS6_:
   51|  10.8k|    {
   52|  10.8k|    }
_ZN8jsoncons4cbor17basic_cbor_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4readEv:
   75|  10.8k|    {
   76|  10.8k|        std::error_code ec;
   77|  10.8k|        read(ec);
   78|  10.8k|        if (ec)
  ------------------
  |  Branch (78:13): [True: 7.71k, False: 3.14k]
  ------------------
   79|  7.71k|        {
   80|  7.71k|            JSONCONS_THROW(ser_error(ec,line(),column()));
  ------------------
  |  |  237|  7.71k|    #define JSONCONS_THROW(exception) throw exception
  ------------------
   81|  7.71k|        }
   82|  10.8k|    }
_ZN8jsoncons4cbor17basic_cbor_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4readERNS4_10error_codeE:
   85|  10.8k|    {
   86|  10.8k|        parser_.reset();
   87|  10.8k|        parser_.parse(visitor_, ec);
   88|  10.8k|        if (ec)
  ------------------
  |  Branch (88:13): [True: 7.71k, False: 3.14k]
  ------------------
   89|  7.71k|        {
   90|  7.71k|            return;
   91|  7.71k|        }
   92|  10.8k|    }
_ZNK8jsoncons4cbor17basic_cbor_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4lineEv:
   95|  7.71k|    {
   96|  7.71k|        return parser_.line();
   97|  7.71k|    }
_ZNK8jsoncons4cbor17basic_cbor_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE6columnEv:
  100|  7.71k|    {
  101|  7.71k|        return parser_.column();
  102|  7.71k|    }

_ZN8jsoncons4cbor11decode_cborINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr16extension_traits13is_basic_jsonIT_EE5valueES9_E4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_19cbor_decode_optionsE:
   65|  10.8k|    {
   66|  10.8k|        jsoncons::json_decoder<T> decoder;
   67|  10.8k|        auto adaptor = make_json_visitor_adaptor<json_visitor>(decoder);
   68|  10.8k|        cbor_stream_reader reader(is, adaptor, options);
   69|  10.8k|        reader.read();
   70|  10.8k|        if (!decoder.is_valid())
  ------------------
  |  Branch (70:13): [True: 0, False: 10.8k]
  ------------------
   71|      0|        {
   72|      0|            JSONCONS_THROW(ser_error(conv_errc::conversion_failed, reader.line(), reader.column()));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
   73|      0|        }
   74|  10.8k|        return decoder.get_result();
   75|  10.8k|    }

