@nxtedition/rocksdb 15.2.2 → 15.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1707) hide show
  1. package/.claude/settings.local.json +15 -1
  2. package/binding.cc +186 -128
  3. package/binding.gyp +32 -113
  4. package/build.sh +3 -0
  5. package/deps/rocksdb/rocksdb.gyp +3 -1
  6. package/index.js +3 -5
  7. package/package.json +1 -1
  8. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  9. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  10. package/util.h +62 -63
  11. package/deps/abseil-cpp/BUILD.bazel +0 -35
  12. package/deps/abseil-cpp/CMake/AbseilDll.cmake +0 -938
  13. package/deps/abseil-cpp/CMake/AbseilHelpers.cmake +0 -465
  14. package/deps/abseil-cpp/CMake/Googletest/CMakeLists.txt.in +0 -14
  15. package/deps/abseil-cpp/CMake/Googletest/DownloadGTest.cmake +0 -41
  16. package/deps/abseil-cpp/CMake/abslConfig.cmake.in +0 -8
  17. package/deps/abseil-cpp/CMake/install_test_project/CMakeLists.txt +0 -25
  18. package/deps/abseil-cpp/CMake/install_test_project/simple.cc +0 -32
  19. package/deps/abseil-cpp/CMake/install_test_project/test.sh +0 -113
  20. package/deps/abseil-cpp/CMakeLists.txt +0 -280
  21. package/deps/abseil-cpp/LICENSE +0 -203
  22. package/deps/abseil-cpp/MODULE.bazel +0 -43
  23. package/deps/abseil-cpp/PrivacyInfo.xcprivacy +0 -14
  24. package/deps/abseil-cpp/absl/BUILD.bazel +0 -62
  25. package/deps/abseil-cpp/absl/CMakeLists.txt +0 -45
  26. package/deps/abseil-cpp/absl/abseil.podspec.gen.py +0 -245
  27. package/deps/abseil-cpp/absl/algorithm/BUILD.bazel +0 -92
  28. package/deps/abseil-cpp/absl/algorithm/CMakeLists.txt +0 -72
  29. package/deps/abseil-cpp/absl/algorithm/algorithm.h +0 -64
  30. package/deps/abseil-cpp/absl/algorithm/algorithm_test.cc +0 -60
  31. package/deps/abseil-cpp/absl/algorithm/container.h +0 -1864
  32. package/deps/abseil-cpp/absl/algorithm/container_test.cc +0 -2232
  33. package/deps/abseil-cpp/absl/base/BUILD.bazel +0 -1036
  34. package/deps/abseil-cpp/absl/base/CMakeLists.txt +0 -881
  35. package/deps/abseil-cpp/absl/base/attributes.h +0 -1081
  36. package/deps/abseil-cpp/absl/base/attributes_test.cc +0 -43
  37. package/deps/abseil-cpp/absl/base/bit_cast_test.cc +0 -109
  38. package/deps/abseil-cpp/absl/base/c_header_test.c +0 -30
  39. package/deps/abseil-cpp/absl/base/call_once.h +0 -228
  40. package/deps/abseil-cpp/absl/base/call_once_test.cc +0 -107
  41. package/deps/abseil-cpp/absl/base/casts.cc +0 -61
  42. package/deps/abseil-cpp/absl/base/casts.h +0 -313
  43. package/deps/abseil-cpp/absl/base/casts_test.cc +0 -148
  44. package/deps/abseil-cpp/absl/base/config.h +0 -854
  45. package/deps/abseil-cpp/absl/base/config_test.cc +0 -60
  46. package/deps/abseil-cpp/absl/base/const_init.h +0 -76
  47. package/deps/abseil-cpp/absl/base/dynamic_annotations.h +0 -480
  48. package/deps/abseil-cpp/absl/base/exception_safety_testing_test.cc +0 -958
  49. package/deps/abseil-cpp/absl/base/fast_type_id.h +0 -73
  50. package/deps/abseil-cpp/absl/base/fast_type_id_test.cc +0 -130
  51. package/deps/abseil-cpp/absl/base/internal/atomic_hook.h +0 -200
  52. package/deps/abseil-cpp/absl/base/internal/atomic_hook_test.cc +0 -97
  53. package/deps/abseil-cpp/absl/base/internal/atomic_hook_test_helper.cc +0 -32
  54. package/deps/abseil-cpp/absl/base/internal/atomic_hook_test_helper.h +0 -34
  55. package/deps/abseil-cpp/absl/base/internal/cmake_thread_test.cc +0 -22
  56. package/deps/abseil-cpp/absl/base/internal/cycleclock.cc +0 -72
  57. package/deps/abseil-cpp/absl/base/internal/cycleclock.h +0 -144
  58. package/deps/abseil-cpp/absl/base/internal/cycleclock_config.h +0 -55
  59. package/deps/abseil-cpp/absl/base/internal/direct_mmap.h +0 -170
  60. package/deps/abseil-cpp/absl/base/internal/dynamic_annotations.h +0 -398
  61. package/deps/abseil-cpp/absl/base/internal/endian.h +0 -279
  62. package/deps/abseil-cpp/absl/base/internal/endian_test.cc +0 -263
  63. package/deps/abseil-cpp/absl/base/internal/errno_saver.h +0 -43
  64. package/deps/abseil-cpp/absl/base/internal/errno_saver_test.cc +0 -45
  65. package/deps/abseil-cpp/absl/base/internal/exception_safety_testing.cc +0 -79
  66. package/deps/abseil-cpp/absl/base/internal/exception_safety_testing.h +0 -1109
  67. package/deps/abseil-cpp/absl/base/internal/exception_testing.h +0 -42
  68. package/deps/abseil-cpp/absl/base/internal/hide_ptr.h +0 -51
  69. package/deps/abseil-cpp/absl/base/internal/iterator_traits.h +0 -75
  70. package/deps/abseil-cpp/absl/base/internal/iterator_traits_test.cc +0 -85
  71. package/deps/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +0 -97
  72. package/deps/abseil-cpp/absl/base/internal/low_level_alloc.cc +0 -661
  73. package/deps/abseil-cpp/absl/base/internal/low_level_alloc.h +0 -133
  74. package/deps/abseil-cpp/absl/base/internal/low_level_alloc_test.cc +0 -180
  75. package/deps/abseil-cpp/absl/base/internal/low_level_scheduling.h +0 -134
  76. package/deps/abseil-cpp/absl/base/internal/nullability_traits.h +0 -71
  77. package/deps/abseil-cpp/absl/base/internal/nullability_traits_test.cc +0 -98
  78. package/deps/abseil-cpp/absl/base/internal/per_thread_tls.h +0 -52
  79. package/deps/abseil-cpp/absl/base/internal/poison.cc +0 -85
  80. package/deps/abseil-cpp/absl/base/internal/poison.h +0 -59
  81. package/deps/abseil-cpp/absl/base/internal/poison_test.cc +0 -41
  82. package/deps/abseil-cpp/absl/base/internal/pretty_function.h +0 -33
  83. package/deps/abseil-cpp/absl/base/internal/raw_logging.cc +0 -279
  84. package/deps/abseil-cpp/absl/base/internal/raw_logging.h +0 -217
  85. package/deps/abseil-cpp/absl/base/internal/scheduling_mode.h +0 -58
  86. package/deps/abseil-cpp/absl/base/internal/scoped_set_env.cc +0 -81
  87. package/deps/abseil-cpp/absl/base/internal/scoped_set_env.h +0 -45
  88. package/deps/abseil-cpp/absl/base/internal/scoped_set_env_test.cc +0 -99
  89. package/deps/abseil-cpp/absl/base/internal/spinlock.cc +0 -225
  90. package/deps/abseil-cpp/absl/base/internal/spinlock.h +0 -310
  91. package/deps/abseil-cpp/absl/base/internal/spinlock_akaros.inc +0 -35
  92. package/deps/abseil-cpp/absl/base/internal/spinlock_benchmark.cc +0 -80
  93. package/deps/abseil-cpp/absl/base/internal/spinlock_linux.inc +0 -71
  94. package/deps/abseil-cpp/absl/base/internal/spinlock_posix.inc +0 -46
  95. package/deps/abseil-cpp/absl/base/internal/spinlock_wait.cc +0 -81
  96. package/deps/abseil-cpp/absl/base/internal/spinlock_wait.h +0 -95
  97. package/deps/abseil-cpp/absl/base/internal/spinlock_win32.inc +0 -40
  98. package/deps/abseil-cpp/absl/base/internal/strerror.cc +0 -88
  99. package/deps/abseil-cpp/absl/base/internal/strerror.h +0 -39
  100. package/deps/abseil-cpp/absl/base/internal/strerror_benchmark.cc +0 -29
  101. package/deps/abseil-cpp/absl/base/internal/strerror_test.cc +0 -89
  102. package/deps/abseil-cpp/absl/base/internal/sysinfo.cc +0 -494
  103. package/deps/abseil-cpp/absl/base/internal/sysinfo.h +0 -74
  104. package/deps/abseil-cpp/absl/base/internal/sysinfo_test.cc +0 -82
  105. package/deps/abseil-cpp/absl/base/internal/thread_identity.cc +0 -163
  106. package/deps/abseil-cpp/absl/base/internal/thread_identity.h +0 -273
  107. package/deps/abseil-cpp/absl/base/internal/thread_identity_benchmark.cc +0 -38
  108. package/deps/abseil-cpp/absl/base/internal/thread_identity_test.cc +0 -129
  109. package/deps/abseil-cpp/absl/base/internal/throw_delegate.cc +0 -203
  110. package/deps/abseil-cpp/absl/base/internal/throw_delegate.h +0 -75
  111. package/deps/abseil-cpp/absl/base/internal/tracing.cc +0 -39
  112. package/deps/abseil-cpp/absl/base/internal/tracing.h +0 -81
  113. package/deps/abseil-cpp/absl/base/internal/tracing_strong_test.cc +0 -117
  114. package/deps/abseil-cpp/absl/base/internal/tracing_weak_test.cc +0 -34
  115. package/deps/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +0 -68
  116. package/deps/abseil-cpp/absl/base/internal/unaligned_access.h +0 -89
  117. package/deps/abseil-cpp/absl/base/internal/unique_small_name_test.cc +0 -77
  118. package/deps/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -134
  119. package/deps/abseil-cpp/absl/base/internal/unscaledcycleclock.h +0 -113
  120. package/deps/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +0 -62
  121. package/deps/abseil-cpp/absl/base/log_severity.cc +0 -56
  122. package/deps/abseil-cpp/absl/base/log_severity.h +0 -185
  123. package/deps/abseil-cpp/absl/base/log_severity_test.cc +0 -251
  124. package/deps/abseil-cpp/absl/base/macros.h +0 -243
  125. package/deps/abseil-cpp/absl/base/no_destructor.h +0 -191
  126. package/deps/abseil-cpp/absl/base/no_destructor_benchmark.cc +0 -165
  127. package/deps/abseil-cpp/absl/base/no_destructor_test.cc +0 -205
  128. package/deps/abseil-cpp/absl/base/nullability.h +0 -317
  129. package/deps/abseil-cpp/absl/base/nullability_default_nonnull_test.cc +0 -44
  130. package/deps/abseil-cpp/absl/base/nullability_test.cc +0 -90
  131. package/deps/abseil-cpp/absl/base/optimization.h +0 -310
  132. package/deps/abseil-cpp/absl/base/optimization_test.cc +0 -141
  133. package/deps/abseil-cpp/absl/base/options.h +0 -158
  134. package/deps/abseil-cpp/absl/base/policy_checks.h +0 -115
  135. package/deps/abseil-cpp/absl/base/port.h +0 -25
  136. package/deps/abseil-cpp/absl/base/prefetch.h +0 -209
  137. package/deps/abseil-cpp/absl/base/prefetch_test.cc +0 -64
  138. package/deps/abseil-cpp/absl/base/raw_logging_test.cc +0 -98
  139. package/deps/abseil-cpp/absl/base/spinlock_test_common.cc +0 -302
  140. package/deps/abseil-cpp/absl/base/thread_annotations.h +0 -333
  141. package/deps/abseil-cpp/absl/base/throw_delegate_test.cc +0 -175
  142. package/deps/abseil-cpp/absl/cleanup/BUILD.bazel +0 -74
  143. package/deps/abseil-cpp/absl/cleanup/CMakeLists.txt +0 -55
  144. package/deps/abseil-cpp/absl/cleanup/cleanup.h +0 -142
  145. package/deps/abseil-cpp/absl/cleanup/cleanup_test.cc +0 -309
  146. package/deps/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -99
  147. package/deps/abseil-cpp/absl/container/BUILD.bazel +0 -1394
  148. package/deps/abseil-cpp/absl/container/CMakeLists.txt +0 -1239
  149. package/deps/abseil-cpp/absl/container/btree_benchmark.cc +0 -806
  150. package/deps/abseil-cpp/absl/container/btree_map.h +0 -941
  151. package/deps/abseil-cpp/absl/container/btree_set.h +0 -872
  152. package/deps/abseil-cpp/absl/container/btree_test.cc +0 -3653
  153. package/deps/abseil-cpp/absl/container/btree_test.h +0 -166
  154. package/deps/abseil-cpp/absl/container/chunked_queue.h +0 -755
  155. package/deps/abseil-cpp/absl/container/chunked_queue_benchmark.cc +0 -386
  156. package/deps/abseil-cpp/absl/container/chunked_queue_test.cc +0 -768
  157. package/deps/abseil-cpp/absl/container/fixed_array.h +0 -547
  158. package/deps/abseil-cpp/absl/container/fixed_array_benchmark.cc +0 -67
  159. package/deps/abseil-cpp/absl/container/fixed_array_exception_safety_test.cc +0 -201
  160. package/deps/abseil-cpp/absl/container/fixed_array_test.cc +0 -874
  161. package/deps/abseil-cpp/absl/container/flat_hash_map.h +0 -702
  162. package/deps/abseil-cpp/absl/container/flat_hash_map_test.cc +0 -451
  163. package/deps/abseil-cpp/absl/container/flat_hash_set.h +0 -590
  164. package/deps/abseil-cpp/absl/container/flat_hash_set_test.cc +0 -401
  165. package/deps/abseil-cpp/absl/container/hash_container_defaults.h +0 -45
  166. package/deps/abseil-cpp/absl/container/inlined_vector.h +0 -1025
  167. package/deps/abseil-cpp/absl/container/inlined_vector_benchmark.cc +0 -829
  168. package/deps/abseil-cpp/absl/container/inlined_vector_exception_safety_test.cc +0 -508
  169. package/deps/abseil-cpp/absl/container/inlined_vector_test.cc +0 -2278
  170. package/deps/abseil-cpp/absl/container/internal/btree.h +0 -3149
  171. package/deps/abseil-cpp/absl/container/internal/btree_container.h +0 -876
  172. package/deps/abseil-cpp/absl/container/internal/chunked_queue.h +0 -173
  173. package/deps/abseil-cpp/absl/container/internal/common.h +0 -301
  174. package/deps/abseil-cpp/absl/container/internal/common_policy_traits.h +0 -151
  175. package/deps/abseil-cpp/absl/container/internal/common_policy_traits_test.cc +0 -157
  176. package/deps/abseil-cpp/absl/container/internal/compressed_tuple.h +0 -275
  177. package/deps/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +0 -469
  178. package/deps/abseil-cpp/absl/container/internal/container_memory.h +0 -561
  179. package/deps/abseil-cpp/absl/container/internal/container_memory_test.cc +0 -359
  180. package/deps/abseil-cpp/absl/container/internal/hash_function_defaults.h +0 -281
  181. package/deps/abseil-cpp/absl/container/internal/hash_function_defaults_test.cc +0 -633
  182. package/deps/abseil-cpp/absl/container/internal/hash_generator_testing.cc +0 -54
  183. package/deps/abseil-cpp/absl/container/internal/hash_generator_testing.h +0 -172
  184. package/deps/abseil-cpp/absl/container/internal/hash_policy_testing.h +0 -173
  185. package/deps/abseil-cpp/absl/container/internal/hash_policy_testing_test.cc +0 -45
  186. package/deps/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -195
  187. package/deps/abseil-cpp/absl/container/internal/hash_policy_traits_test.cc +0 -149
  188. package/deps/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +0 -527
  189. package/deps/abseil-cpp/absl/container/internal/hashtable_control_bytes_test.cc +0 -259
  190. package/deps/abseil-cpp/absl/container/internal/hashtable_debug.h +0 -102
  191. package/deps/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +0 -85
  192. package/deps/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +0 -316
  193. package/deps/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -311
  194. package/deps/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +0 -31
  195. package/deps/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +0 -534
  196. package/deps/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +0 -80
  197. package/deps/abseil-cpp/absl/container/internal/inlined_vector.h +0 -1094
  198. package/deps/abseil-cpp/absl/container/internal/layout.h +0 -828
  199. package/deps/abseil-cpp/absl/container/internal/layout_benchmark.cc +0 -295
  200. package/deps/abseil-cpp/absl/container/internal/layout_test.cc +0 -2034
  201. package/deps/abseil-cpp/absl/container/internal/node_slot_policy.h +0 -95
  202. package/deps/abseil-cpp/absl/container/internal/node_slot_policy_test.cc +0 -71
  203. package/deps/abseil-cpp/absl/container/internal/raw_hash_map.h +0 -382
  204. package/deps/abseil-cpp/absl/container/internal/raw_hash_set.cc +0 -2090
  205. package/deps/abseil-cpp/absl/container/internal/raw_hash_set.h +0 -3763
  206. package/deps/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +0 -525
  207. package/deps/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +0 -696
  208. package/deps/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +0 -583
  209. package/deps/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -79
  210. package/deps/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl_test.cc +0 -66
  211. package/deps/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +0 -4184
  212. package/deps/abseil-cpp/absl/container/internal/test_allocator.h +0 -387
  213. package/deps/abseil-cpp/absl/container/internal/test_instance_tracker.cc +0 -29
  214. package/deps/abseil-cpp/absl/container/internal/test_instance_tracker.h +0 -274
  215. package/deps/abseil-cpp/absl/container/internal/test_instance_tracker_test.cc +0 -184
  216. package/deps/abseil-cpp/absl/container/internal/tracked.h +0 -83
  217. package/deps/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h +0 -435
  218. package/deps/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h +0 -112
  219. package/deps/abseil-cpp/absl/container/internal/unordered_map_members_test.h +0 -87
  220. package/deps/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h +0 -336
  221. package/deps/abseil-cpp/absl/container/internal/unordered_map_test.cc +0 -50
  222. package/deps/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h +0 -437
  223. package/deps/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h +0 -88
  224. package/deps/abseil-cpp/absl/container/internal/unordered_set_members_test.h +0 -86
  225. package/deps/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h +0 -215
  226. package/deps/abseil-cpp/absl/container/internal/unordered_set_test.cc +0 -41
  227. package/deps/abseil-cpp/absl/container/linked_hash_map.h +0 -666
  228. package/deps/abseil-cpp/absl/container/linked_hash_map_benchmark.cc +0 -140
  229. package/deps/abseil-cpp/absl/container/linked_hash_map_test.cc +0 -987
  230. package/deps/abseil-cpp/absl/container/linked_hash_set.h +0 -527
  231. package/deps/abseil-cpp/absl/container/linked_hash_set_benchmark.cc +0 -84
  232. package/deps/abseil-cpp/absl/container/linked_hash_set_test.cc +0 -947
  233. package/deps/abseil-cpp/absl/container/node_hash_map.h +0 -698
  234. package/deps/abseil-cpp/absl/container/node_hash_map_test.cc +0 -348
  235. package/deps/abseil-cpp/absl/container/node_hash_set.h +0 -589
  236. package/deps/abseil-cpp/absl/container/node_hash_set_test.cc +0 -188
  237. package/deps/abseil-cpp/absl/container/sample_element_size_test.cc +0 -118
  238. package/deps/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake +0 -106
  239. package/deps/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +0 -303
  240. package/deps/abseil-cpp/absl/copts/GENERATED_copts.bzl +0 -304
  241. package/deps/abseil-cpp/absl/copts/configure_copts.bzl +0 -39
  242. package/deps/abseil-cpp/absl/copts/copts.py +0 -205
  243. package/deps/abseil-cpp/absl/copts/generate_copts.py +0 -109
  244. package/deps/abseil-cpp/absl/crc/BUILD.bazel +0 -228
  245. package/deps/abseil-cpp/absl/crc/CMakeLists.txt +0 -177
  246. package/deps/abseil-cpp/absl/crc/crc32c.cc +0 -95
  247. package/deps/abseil-cpp/absl/crc/crc32c.h +0 -192
  248. package/deps/abseil-cpp/absl/crc/crc32c_benchmark.cc +0 -196
  249. package/deps/abseil-cpp/absl/crc/crc32c_test.cc +0 -257
  250. package/deps/abseil-cpp/absl/crc/internal/cpu_detect.cc +0 -359
  251. package/deps/abseil-cpp/absl/crc/internal/cpu_detect.h +0 -69
  252. package/deps/abseil-cpp/absl/crc/internal/crc.cc +0 -435
  253. package/deps/abseil-cpp/absl/crc/internal/crc.h +0 -83
  254. package/deps/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -278
  255. package/deps/abseil-cpp/absl/crc/internal/crc32c.h +0 -39
  256. package/deps/abseil-cpp/absl/crc/internal/crc32c_inline.h +0 -72
  257. package/deps/abseil-cpp/absl/crc/internal/crc_cord_state.cc +0 -131
  258. package/deps/abseil-cpp/absl/crc/internal/crc_cord_state.h +0 -159
  259. package/deps/abseil-cpp/absl/crc/internal/crc_cord_state_test.cc +0 -124
  260. package/deps/abseil-cpp/absl/crc/internal/crc_internal.h +0 -161
  261. package/deps/abseil-cpp/absl/crc/internal/crc_memcpy.h +0 -122
  262. package/deps/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +0 -78
  263. package/deps/abseil-cpp/absl/crc/internal/crc_memcpy_test.cc +0 -177
  264. package/deps/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +0 -459
  265. package/deps/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +0 -93
  266. package/deps/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +0 -762
  267. package/deps/abseil-cpp/absl/crc/internal/gen_crc32c_consts.py +0 -90
  268. package/deps/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +0 -81
  269. package/deps/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +0 -195
  270. package/deps/abseil-cpp/absl/crc/internal/non_temporal_memcpy_test.cc +0 -90
  271. package/deps/abseil-cpp/absl/debugging/BUILD.bazel +0 -483
  272. package/deps/abseil-cpp/absl/debugging/CMakeLists.txt +0 -448
  273. package/deps/abseil-cpp/absl/debugging/failure_signal_handler.cc +0 -434
  274. package/deps/abseil-cpp/absl/debugging/failure_signal_handler.h +0 -121
  275. package/deps/abseil-cpp/absl/debugging/failure_signal_handler_test.cc +0 -166
  276. package/deps/abseil-cpp/absl/debugging/internal/address_is_readable.cc +0 -98
  277. package/deps/abseil-cpp/absl/debugging/internal/address_is_readable.h +0 -32
  278. package/deps/abseil-cpp/absl/debugging/internal/addresses.h +0 -57
  279. package/deps/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
  280. package/deps/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
  281. package/deps/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
  282. package/deps/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +0 -126
  283. package/deps/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence_test.cc +0 -126
  284. package/deps/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +0 -258
  285. package/deps/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +0 -55
  286. package/deps/abseil-cpp/absl/debugging/internal/decode_rust_punycode_test.cc +0 -606
  287. package/deps/abseil-cpp/absl/debugging/internal/demangle.cc +0 -2958
  288. package/deps/abseil-cpp/absl/debugging/internal/demangle.h +0 -76
  289. package/deps/abseil-cpp/absl/debugging/internal/demangle_rust.cc +0 -925
  290. package/deps/abseil-cpp/absl/debugging/internal/demangle_rust.h +0 -42
  291. package/deps/abseil-cpp/absl/debugging/internal/demangle_rust_test.cc +0 -584
  292. package/deps/abseil-cpp/absl/debugging/internal/demangle_test.cc +0 -2050
  293. package/deps/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +0 -413
  294. package/deps/abseil-cpp/absl/debugging/internal/elf_mem_image.h +0 -141
  295. package/deps/abseil-cpp/absl/debugging/internal/examine_stack.cc +0 -334
  296. package/deps/abseil-cpp/absl/debugging/internal/examine_stack.h +0 -70
  297. package/deps/abseil-cpp/absl/debugging/internal/stack_consumption.cc +0 -206
  298. package/deps/abseil-cpp/absl/debugging/internal/stack_consumption.h +0 -50
  299. package/deps/abseil-cpp/absl/debugging/internal/stack_consumption_test.cc +0 -50
  300. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +0 -288
  301. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +0 -148
  302. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_config.h +0 -96
  303. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +0 -112
  304. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +0 -114
  305. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +0 -270
  306. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +0 -204
  307. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +0 -25
  308. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +0 -81
  309. package/deps/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +0 -410
  310. package/deps/abseil-cpp/absl/debugging/internal/symbolize.h +0 -153
  311. package/deps/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +0 -70
  312. package/deps/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +0 -47
  313. package/deps/abseil-cpp/absl/debugging/internal/utf8_for_code_point_test.cc +0 -175
  314. package/deps/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -209
  315. package/deps/abseil-cpp/absl/debugging/internal/vdso_support.h +0 -158
  316. package/deps/abseil-cpp/absl/debugging/leak_check.cc +0 -73
  317. package/deps/abseil-cpp/absl/debugging/leak_check.h +0 -150
  318. package/deps/abseil-cpp/absl/debugging/leak_check_fail_test.cc +0 -41
  319. package/deps/abseil-cpp/absl/debugging/leak_check_test.cc +0 -41
  320. package/deps/abseil-cpp/absl/debugging/stacktrace.cc +0 -244
  321. package/deps/abseil-cpp/absl/debugging/stacktrace.h +0 -302
  322. package/deps/abseil-cpp/absl/debugging/stacktrace_benchmark.cc +0 -78
  323. package/deps/abseil-cpp/absl/debugging/stacktrace_test.cc +0 -505
  324. package/deps/abseil-cpp/absl/debugging/symbolize.cc +0 -44
  325. package/deps/abseil-cpp/absl/debugging/symbolize.h +0 -99
  326. package/deps/abseil-cpp/absl/debugging/symbolize_darwin.inc +0 -102
  327. package/deps/abseil-cpp/absl/debugging/symbolize_elf.inc +0 -1756
  328. package/deps/abseil-cpp/absl/debugging/symbolize_emscripten.inc +0 -63
  329. package/deps/abseil-cpp/absl/debugging/symbolize_test.cc +0 -619
  330. package/deps/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +0 -40
  331. package/deps/abseil-cpp/absl/debugging/symbolize_win32.inc +0 -99
  332. package/deps/abseil-cpp/absl/extend/CMakeLists.txt +0 -140
  333. package/deps/abseil-cpp/absl/extend/internal/BUILD.bazel +0 -127
  334. package/deps/abseil-cpp/absl/extend/internal/aggregate.h +0 -1687
  335. package/deps/abseil-cpp/absl/extend/internal/aggregate_test.cc +0 -867
  336. package/deps/abseil-cpp/absl/extend/internal/dependencies.h +0 -83
  337. package/deps/abseil-cpp/absl/extend/internal/dependencies_test.cc +0 -117
  338. package/deps/abseil-cpp/absl/extend/internal/is_tuple_hashable.h +0 -45
  339. package/deps/abseil-cpp/absl/extend/internal/num_bases.h +0 -87
  340. package/deps/abseil-cpp/absl/extend/internal/num_bases_test.cc +0 -91
  341. package/deps/abseil-cpp/absl/extend/internal/num_initializers.h +0 -113
  342. package/deps/abseil-cpp/absl/extend/internal/num_initializers_test.cc +0 -250
  343. package/deps/abseil-cpp/absl/extend/internal/reflection.cc +0 -112
  344. package/deps/abseil-cpp/absl/extend/internal/reflection.h +0 -75
  345. package/deps/abseil-cpp/absl/extend/internal/tuple.h +0 -51
  346. package/deps/abseil-cpp/absl/flags/BUILD.bazel +0 -618
  347. package/deps/abseil-cpp/absl/flags/CMakeLists.txt +0 -482
  348. package/deps/abseil-cpp/absl/flags/commandlineflag.cc +0 -35
  349. package/deps/abseil-cpp/absl/flags/commandlineflag.h +0 -219
  350. package/deps/abseil-cpp/absl/flags/commandlineflag_test.cc +0 -236
  351. package/deps/abseil-cpp/absl/flags/config.h +0 -68
  352. package/deps/abseil-cpp/absl/flags/config_test.cc +0 -61
  353. package/deps/abseil-cpp/absl/flags/declare.h +0 -77
  354. package/deps/abseil-cpp/absl/flags/flag.h +0 -307
  355. package/deps/abseil-cpp/absl/flags/flag_benchmark.cc +0 -251
  356. package/deps/abseil-cpp/absl/flags/flag_benchmark.lds +0 -13
  357. package/deps/abseil-cpp/absl/flags/flag_test.cc +0 -1381
  358. package/deps/abseil-cpp/absl/flags/flag_test_defs.cc +0 -24
  359. package/deps/abseil-cpp/absl/flags/internal/commandlineflag.cc +0 -26
  360. package/deps/abseil-cpp/absl/flags/internal/commandlineflag.h +0 -68
  361. package/deps/abseil-cpp/absl/flags/internal/flag.cc +0 -712
  362. package/deps/abseil-cpp/absl/flags/internal/flag.h +0 -969
  363. package/deps/abseil-cpp/absl/flags/internal/parse.h +0 -70
  364. package/deps/abseil-cpp/absl/flags/internal/path_util.h +0 -62
  365. package/deps/abseil-cpp/absl/flags/internal/path_util_test.cc +0 -46
  366. package/deps/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +0 -69
  367. package/deps/abseil-cpp/absl/flags/internal/private_handle_accessor.h +0 -64
  368. package/deps/abseil-cpp/absl/flags/internal/program_name.cc +0 -61
  369. package/deps/abseil-cpp/absl/flags/internal/program_name.h +0 -50
  370. package/deps/abseil-cpp/absl/flags/internal/program_name_test.cc +0 -61
  371. package/deps/abseil-cpp/absl/flags/internal/registry.h +0 -98
  372. package/deps/abseil-cpp/absl/flags/internal/sequence_lock.h +0 -187
  373. package/deps/abseil-cpp/absl/flags/internal/sequence_lock_test.cc +0 -169
  374. package/deps/abseil-cpp/absl/flags/internal/usage.cc +0 -558
  375. package/deps/abseil-cpp/absl/flags/internal/usage.h +0 -106
  376. package/deps/abseil-cpp/absl/flags/internal/usage_test.cc +0 -550
  377. package/deps/abseil-cpp/absl/flags/marshalling.cc +0 -276
  378. package/deps/abseil-cpp/absl/flags/marshalling.h +0 -361
  379. package/deps/abseil-cpp/absl/flags/marshalling_test.cc +0 -1220
  380. package/deps/abseil-cpp/absl/flags/parse.cc +0 -952
  381. package/deps/abseil-cpp/absl/flags/parse.h +0 -130
  382. package/deps/abseil-cpp/absl/flags/parse_test.cc +0 -1094
  383. package/deps/abseil-cpp/absl/flags/reflection.cc +0 -368
  384. package/deps/abseil-cpp/absl/flags/reflection.h +0 -90
  385. package/deps/abseil-cpp/absl/flags/reflection_test.cc +0 -268
  386. package/deps/abseil-cpp/absl/flags/usage.cc +0 -66
  387. package/deps/abseil-cpp/absl/flags/usage.h +0 -43
  388. package/deps/abseil-cpp/absl/flags/usage_config.cc +0 -170
  389. package/deps/abseil-cpp/absl/flags/usage_config.h +0 -135
  390. package/deps/abseil-cpp/absl/flags/usage_config_test.cc +0 -205
  391. package/deps/abseil-cpp/absl/functional/BUILD.bazel +0 -173
  392. package/deps/abseil-cpp/absl/functional/CMakeLists.txt +0 -140
  393. package/deps/abseil-cpp/absl/functional/any_invocable.h +0 -336
  394. package/deps/abseil-cpp/absl/functional/any_invocable_test.cc +0 -1687
  395. package/deps/abseil-cpp/absl/functional/bind_front.h +0 -200
  396. package/deps/abseil-cpp/absl/functional/bind_front_test.cc +0 -227
  397. package/deps/abseil-cpp/absl/functional/function_ref.h +0 -249
  398. package/deps/abseil-cpp/absl/functional/function_ref_test.cc +0 -416
  399. package/deps/abseil-cpp/absl/functional/function_type_benchmark.cc +0 -176
  400. package/deps/abseil-cpp/absl/functional/internal/any_invocable.h +0 -787
  401. package/deps/abseil-cpp/absl/functional/internal/front_binder.h +0 -93
  402. package/deps/abseil-cpp/absl/functional/internal/function_ref.h +0 -151
  403. package/deps/abseil-cpp/absl/functional/overload.h +0 -72
  404. package/deps/abseil-cpp/absl/functional/overload_test.cc +0 -207
  405. package/deps/abseil-cpp/absl/hash/BUILD.bazel +0 -220
  406. package/deps/abseil-cpp/absl/hash/CMakeLists.txt +0 -179
  407. package/deps/abseil-cpp/absl/hash/hash.h +0 -466
  408. package/deps/abseil-cpp/absl/hash/hash_benchmark.cc +0 -398
  409. package/deps/abseil-cpp/absl/hash/hash_instantiated_test.cc +0 -224
  410. package/deps/abseil-cpp/absl/hash/hash_test.cc +0 -1320
  411. package/deps/abseil-cpp/absl/hash/hash_testing.h +0 -380
  412. package/deps/abseil-cpp/absl/hash/internal/city.cc +0 -337
  413. package/deps/abseil-cpp/absl/hash/internal/city.h +0 -78
  414. package/deps/abseil-cpp/absl/hash/internal/city_test.cc +0 -597
  415. package/deps/abseil-cpp/absl/hash/internal/hash.cc +0 -430
  416. package/deps/abseil-cpp/absl/hash/internal/hash.h +0 -1563
  417. package/deps/abseil-cpp/absl/hash/internal/hash_test.h +0 -87
  418. package/deps/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +0 -509
  419. package/deps/abseil-cpp/absl/hash/internal/print_hash_of.cc +0 -23
  420. package/deps/abseil-cpp/absl/hash/internal/spy_hash_state.h +0 -286
  421. package/deps/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +0 -38
  422. package/deps/abseil-cpp/absl/log/BUILD.bazel +0 -686
  423. package/deps/abseil-cpp/absl/log/CMakeLists.txt +0 -1239
  424. package/deps/abseil-cpp/absl/log/absl_check.h +0 -117
  425. package/deps/abseil-cpp/absl/log/absl_check_test.cc +0 -58
  426. package/deps/abseil-cpp/absl/log/absl_log.h +0 -115
  427. package/deps/abseil-cpp/absl/log/absl_log_basic_test.cc +0 -22
  428. package/deps/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -95
  429. package/deps/abseil-cpp/absl/log/check.h +0 -210
  430. package/deps/abseil-cpp/absl/log/check_test.cc +0 -58
  431. package/deps/abseil-cpp/absl/log/check_test_impl.inc +0 -1035
  432. package/deps/abseil-cpp/absl/log/die_if_null.cc +0 -34
  433. package/deps/abseil-cpp/absl/log/die_if_null.h +0 -97
  434. package/deps/abseil-cpp/absl/log/die_if_null_test.cc +0 -107
  435. package/deps/abseil-cpp/absl/log/flags.cc +0 -143
  436. package/deps/abseil-cpp/absl/log/flags.h +0 -43
  437. package/deps/abseil-cpp/absl/log/flags_test.cc +0 -195
  438. package/deps/abseil-cpp/absl/log/globals.cc +0 -178
  439. package/deps/abseil-cpp/absl/log/globals.h +0 -230
  440. package/deps/abseil-cpp/absl/log/globals_test.cc +0 -156
  441. package/deps/abseil-cpp/absl/log/initialize.cc +0 -38
  442. package/deps/abseil-cpp/absl/log/initialize.h +0 -45
  443. package/deps/abseil-cpp/absl/log/internal/BUILD.bazel +0 -581
  444. package/deps/abseil-cpp/absl/log/internal/append_truncated.h +0 -75
  445. package/deps/abseil-cpp/absl/log/internal/check_impl.h +0 -151
  446. package/deps/abseil-cpp/absl/log/internal/check_op.cc +0 -147
  447. package/deps/abseil-cpp/absl/log/internal/check_op.h +0 -565
  448. package/deps/abseil-cpp/absl/log/internal/conditions.cc +0 -85
  449. package/deps/abseil-cpp/absl/log/internal/conditions.h +0 -247
  450. package/deps/abseil-cpp/absl/log/internal/config.h +0 -45
  451. package/deps/abseil-cpp/absl/log/internal/container.h +0 -312
  452. package/deps/abseil-cpp/absl/log/internal/container_test.cc +0 -254
  453. package/deps/abseil-cpp/absl/log/internal/flags.h +0 -59
  454. package/deps/abseil-cpp/absl/log/internal/fnmatch.cc +0 -73
  455. package/deps/abseil-cpp/absl/log/internal/fnmatch.h +0 -35
  456. package/deps/abseil-cpp/absl/log/internal/fnmatch_benchmark.cc +0 -29
  457. package/deps/abseil-cpp/absl/log/internal/fnmatch_test.cc +0 -60
  458. package/deps/abseil-cpp/absl/log/internal/globals.cc +0 -145
  459. package/deps/abseil-cpp/absl/log/internal/globals.h +0 -101
  460. package/deps/abseil-cpp/absl/log/internal/log_format.cc +0 -205
  461. package/deps/abseil-cpp/absl/log/internal/log_format.h +0 -78
  462. package/deps/abseil-cpp/absl/log/internal/log_impl.h +0 -280
  463. package/deps/abseil-cpp/absl/log/internal/log_message.cc +0 -787
  464. package/deps/abseil-cpp/absl/log/internal/log_message.h +0 -455
  465. package/deps/abseil-cpp/absl/log/internal/log_sink_set.cc +0 -296
  466. package/deps/abseil-cpp/absl/log/internal/log_sink_set.h +0 -54
  467. package/deps/abseil-cpp/absl/log/internal/nullguard.cc +0 -35
  468. package/deps/abseil-cpp/absl/log/internal/nullguard.h +0 -88
  469. package/deps/abseil-cpp/absl/log/internal/nullstream.h +0 -128
  470. package/deps/abseil-cpp/absl/log/internal/proto.cc +0 -218
  471. package/deps/abseil-cpp/absl/log/internal/proto.h +0 -298
  472. package/deps/abseil-cpp/absl/log/internal/stderr_log_sink_test.cc +0 -105
  473. package/deps/abseil-cpp/absl/log/internal/strip.h +0 -99
  474. package/deps/abseil-cpp/absl/log/internal/structured.h +0 -160
  475. package/deps/abseil-cpp/absl/log/internal/structured_proto.cc +0 -115
  476. package/deps/abseil-cpp/absl/log/internal/structured_proto.h +0 -107
  477. package/deps/abseil-cpp/absl/log/internal/structured_proto_test.cc +0 -120
  478. package/deps/abseil-cpp/absl/log/internal/test_actions.cc +0 -75
  479. package/deps/abseil-cpp/absl/log/internal/test_actions.h +0 -90
  480. package/deps/abseil-cpp/absl/log/internal/test_helpers.cc +0 -82
  481. package/deps/abseil-cpp/absl/log/internal/test_helpers.h +0 -71
  482. package/deps/abseil-cpp/absl/log/internal/test_matchers.cc +0 -216
  483. package/deps/abseil-cpp/absl/log/internal/test_matchers.h +0 -94
  484. package/deps/abseil-cpp/absl/log/internal/vlog_config.cc +0 -347
  485. package/deps/abseil-cpp/absl/log/internal/vlog_config.h +0 -164
  486. package/deps/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +0 -187
  487. package/deps/abseil-cpp/absl/log/internal/voidify.h +0 -50
  488. package/deps/abseil-cpp/absl/log/log.h +0 -378
  489. package/deps/abseil-cpp/absl/log/log_basic_test.cc +0 -22
  490. package/deps/abseil-cpp/absl/log/log_basic_test_impl.inc +0 -654
  491. package/deps/abseil-cpp/absl/log/log_benchmark.cc +0 -164
  492. package/deps/abseil-cpp/absl/log/log_entry.cc +0 -263
  493. package/deps/abseil-cpp/absl/log/log_entry.h +0 -223
  494. package/deps/abseil-cpp/absl/log/log_entry_test.cc +0 -468
  495. package/deps/abseil-cpp/absl/log/log_format_test.cc +0 -2261
  496. package/deps/abseil-cpp/absl/log/log_macro_hygiene_test.cc +0 -187
  497. package/deps/abseil-cpp/absl/log/log_modifier_methods_test.cc +0 -244
  498. package/deps/abseil-cpp/absl/log/log_sink.cc +0 -23
  499. package/deps/abseil-cpp/absl/log/log_sink.h +0 -71
  500. package/deps/abseil-cpp/absl/log/log_sink_registry.h +0 -64
  501. package/deps/abseil-cpp/absl/log/log_sink_test.cc +0 -418
  502. package/deps/abseil-cpp/absl/log/log_streamer.h +0 -181
  503. package/deps/abseil-cpp/absl/log/log_streamer_test.cc +0 -451
  504. package/deps/abseil-cpp/absl/log/scoped_mock_log.cc +0 -86
  505. package/deps/abseil-cpp/absl/log/scoped_mock_log.h +0 -203
  506. package/deps/abseil-cpp/absl/log/scoped_mock_log_test.cc +0 -295
  507. package/deps/abseil-cpp/absl/log/stripping_test.cc +0 -502
  508. package/deps/abseil-cpp/absl/log/structured.h +0 -75
  509. package/deps/abseil-cpp/absl/log/structured_test.cc +0 -64
  510. package/deps/abseil-cpp/absl/log/vlog_is_on.h +0 -74
  511. package/deps/abseil-cpp/absl/log/vlog_is_on_test.cc +0 -233
  512. package/deps/abseil-cpp/absl/memory/BUILD.bazel +0 -62
  513. package/deps/abseil-cpp/absl/memory/CMakeLists.txt +0 -41
  514. package/deps/abseil-cpp/absl/memory/memory.h +0 -278
  515. package/deps/abseil-cpp/absl/memory/memory_test.cc +0 -222
  516. package/deps/abseil-cpp/absl/meta/BUILD.bazel +0 -112
  517. package/deps/abseil-cpp/absl/meta/CMakeLists.txt +0 -100
  518. package/deps/abseil-cpp/absl/meta/internal/constexpr_testing.h +0 -73
  519. package/deps/abseil-cpp/absl/meta/internal/constexpr_testing_test.cc +0 -40
  520. package/deps/abseil-cpp/absl/meta/internal/requires.h +0 -67
  521. package/deps/abseil-cpp/absl/meta/internal/requires_test.cc +0 -66
  522. package/deps/abseil-cpp/absl/meta/type_traits.h +0 -582
  523. package/deps/abseil-cpp/absl/meta/type_traits_test.cc +0 -378
  524. package/deps/abseil-cpp/absl/numeric/BUILD.bazel +0 -145
  525. package/deps/abseil-cpp/absl/numeric/CMakeLists.txt +0 -104
  526. package/deps/abseil-cpp/absl/numeric/bits.h +0 -262
  527. package/deps/abseil-cpp/absl/numeric/bits_benchmark.cc +0 -73
  528. package/deps/abseil-cpp/absl/numeric/bits_test.cc +0 -724
  529. package/deps/abseil-cpp/absl/numeric/int128.cc +0 -344
  530. package/deps/abseil-cpp/absl/numeric/int128.h +0 -1224
  531. package/deps/abseil-cpp/absl/numeric/int128_benchmark.cc +0 -281
  532. package/deps/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +0 -303
  533. package/deps/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +0 -347
  534. package/deps/abseil-cpp/absl/numeric/int128_stream_test.cc +0 -1400
  535. package/deps/abseil-cpp/absl/numeric/int128_test.cc +0 -1407
  536. package/deps/abseil-cpp/absl/numeric/internal/bits.h +0 -394
  537. package/deps/abseil-cpp/absl/numeric/internal/representation.h +0 -55
  538. package/deps/abseil-cpp/absl/profiling/BUILD.bazel +0 -188
  539. package/deps/abseil-cpp/absl/profiling/CMakeLists.txt +0 -132
  540. package/deps/abseil-cpp/absl/profiling/hashtable.cc +0 -135
  541. package/deps/abseil-cpp/absl/profiling/hashtable.h +0 -40
  542. package/deps/abseil-cpp/absl/profiling/internal/exponential_biased.cc +0 -93
  543. package/deps/abseil-cpp/absl/profiling/internal/exponential_biased.h +0 -130
  544. package/deps/abseil-cpp/absl/profiling/internal/exponential_biased_test.cc +0 -203
  545. package/deps/abseil-cpp/absl/profiling/internal/periodic_sampler.cc +0 -53
  546. package/deps/abseil-cpp/absl/profiling/internal/periodic_sampler.h +0 -211
  547. package/deps/abseil-cpp/absl/profiling/internal/periodic_sampler_benchmark.cc +0 -79
  548. package/deps/abseil-cpp/absl/profiling/internal/periodic_sampler_test.cc +0 -177
  549. package/deps/abseil-cpp/absl/profiling/internal/profile_builder.cc +0 -463
  550. package/deps/abseil-cpp/absl/profiling/internal/profile_builder.h +0 -161
  551. package/deps/abseil-cpp/absl/profiling/internal/sample_recorder.h +0 -253
  552. package/deps/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +0 -188
  553. package/deps/abseil-cpp/absl/random/BUILD.bazel +0 -550
  554. package/deps/abseil-cpp/absl/random/CMakeLists.txt +0 -1250
  555. package/deps/abseil-cpp/absl/random/benchmarks.cc +0 -376
  556. package/deps/abseil-cpp/absl/random/bernoulli_distribution.h +0 -202
  557. package/deps/abseil-cpp/absl/random/bernoulli_distribution_test.cc +0 -217
  558. package/deps/abseil-cpp/absl/random/beta_distribution.h +0 -429
  559. package/deps/abseil-cpp/absl/random/beta_distribution_test.cc +0 -615
  560. package/deps/abseil-cpp/absl/random/bit_gen_ref.h +0 -187
  561. package/deps/abseil-cpp/absl/random/bit_gen_ref_test.cc +0 -107
  562. package/deps/abseil-cpp/absl/random/discrete_distribution.cc +0 -108
  563. package/deps/abseil-cpp/absl/random/discrete_distribution.h +0 -249
  564. package/deps/abseil-cpp/absl/random/discrete_distribution_test.cc +0 -251
  565. package/deps/abseil-cpp/absl/random/distributions.h +0 -450
  566. package/deps/abseil-cpp/absl/random/distributions_test.cc +0 -516
  567. package/deps/abseil-cpp/absl/random/examples_test.cc +0 -98
  568. package/deps/abseil-cpp/absl/random/exponential_distribution.h +0 -166
  569. package/deps/abseil-cpp/absl/random/exponential_distribution_test.cc +0 -426
  570. package/deps/abseil-cpp/absl/random/gaussian_distribution.cc +0 -104
  571. package/deps/abseil-cpp/absl/random/gaussian_distribution.h +0 -276
  572. package/deps/abseil-cpp/absl/random/gaussian_distribution_test.cc +0 -561
  573. package/deps/abseil-cpp/absl/random/generators_test.cc +0 -185
  574. package/deps/abseil-cpp/absl/random/internal/BUILD.bazel +0 -863
  575. package/deps/abseil-cpp/absl/random/internal/chi_square.cc +0 -230
  576. package/deps/abseil-cpp/absl/random/internal/chi_square.h +0 -89
  577. package/deps/abseil-cpp/absl/random/internal/chi_square_test.cc +0 -364
  578. package/deps/abseil-cpp/absl/random/internal/distribution_caller.h +0 -96
  579. package/deps/abseil-cpp/absl/random/internal/distribution_test_util.cc +0 -418
  580. package/deps/abseil-cpp/absl/random/internal/distribution_test_util.h +0 -113
  581. package/deps/abseil-cpp/absl/random/internal/distribution_test_util_test.cc +0 -193
  582. package/deps/abseil-cpp/absl/random/internal/entropy_pool.cc +0 -185
  583. package/deps/abseil-cpp/absl/random/internal/entropy_pool.h +0 -35
  584. package/deps/abseil-cpp/absl/random/internal/entropy_pool_test.cc +0 -119
  585. package/deps/abseil-cpp/absl/random/internal/explicit_seed_seq.h +0 -92
  586. package/deps/abseil-cpp/absl/random/internal/explicit_seed_seq_test.cc +0 -241
  587. package/deps/abseil-cpp/absl/random/internal/fast_uniform_bits.h +0 -271
  588. package/deps/abseil-cpp/absl/random/internal/fast_uniform_bits_test.cc +0 -336
  589. package/deps/abseil-cpp/absl/random/internal/fastmath.h +0 -57
  590. package/deps/abseil-cpp/absl/random/internal/fastmath_test.cc +0 -95
  591. package/deps/abseil-cpp/absl/random/internal/gaussian_distribution_gentables.cc +0 -142
  592. package/deps/abseil-cpp/absl/random/internal/generate_real.h +0 -144
  593. package/deps/abseil-cpp/absl/random/internal/generate_real_test.cc +0 -496
  594. package/deps/abseil-cpp/absl/random/internal/iostream_state_saver.h +0 -248
  595. package/deps/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +0 -373
  596. package/deps/abseil-cpp/absl/random/internal/mock_helpers.h +0 -160
  597. package/deps/abseil-cpp/absl/random/internal/mock_overload_set.h +0 -122
  598. package/deps/abseil-cpp/absl/random/internal/mock_validators.h +0 -98
  599. package/deps/abseil-cpp/absl/random/internal/nanobenchmark.cc +0 -804
  600. package/deps/abseil-cpp/absl/random/internal/nanobenchmark.h +0 -172
  601. package/deps/abseil-cpp/absl/random/internal/nanobenchmark_test.cc +0 -79
  602. package/deps/abseil-cpp/absl/random/internal/nonsecure_base.h +0 -160
  603. package/deps/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +0 -267
  604. package/deps/abseil-cpp/absl/random/internal/pcg_engine.h +0 -287
  605. package/deps/abseil-cpp/absl/random/internal/pcg_engine_test.cc +0 -638
  606. package/deps/abseil-cpp/absl/random/internal/platform.h +0 -158
  607. package/deps/abseil-cpp/absl/random/internal/randen.cc +0 -91
  608. package/deps/abseil-cpp/absl/random/internal/randen.h +0 -96
  609. package/deps/abseil-cpp/absl/random/internal/randen_benchmarks.cc +0 -177
  610. package/deps/abseil-cpp/absl/random/internal/randen_detect.cc +0 -280
  611. package/deps/abseil-cpp/absl/random/internal/randen_detect.h +0 -33
  612. package/deps/abseil-cpp/absl/random/internal/randen_engine.h +0 -265
  613. package/deps/abseil-cpp/absl/random/internal/randen_engine_test.cc +0 -654
  614. package/deps/abseil-cpp/absl/random/internal/randen_hwaes.cc +0 -526
  615. package/deps/abseil-cpp/absl/random/internal/randen_hwaes.h +0 -50
  616. package/deps/abseil-cpp/absl/random/internal/randen_hwaes_test.cc +0 -99
  617. package/deps/abseil-cpp/absl/random/internal/randen_round_keys.cc +0 -462
  618. package/deps/abseil-cpp/absl/random/internal/randen_slow.cc +0 -471
  619. package/deps/abseil-cpp/absl/random/internal/randen_slow.h +0 -40
  620. package/deps/abseil-cpp/absl/random/internal/randen_slow_test.cc +0 -61
  621. package/deps/abseil-cpp/absl/random/internal/randen_test.cc +0 -75
  622. package/deps/abseil-cpp/absl/random/internal/randen_traits.h +0 -88
  623. package/deps/abseil-cpp/absl/random/internal/salted_seed_seq.h +0 -165
  624. package/deps/abseil-cpp/absl/random/internal/salted_seed_seq_test.cc +0 -172
  625. package/deps/abseil-cpp/absl/random/internal/seed_material.cc +0 -249
  626. package/deps/abseil-cpp/absl/random/internal/seed_material.h +0 -104
  627. package/deps/abseil-cpp/absl/random/internal/seed_material_test.cc +0 -205
  628. package/deps/abseil-cpp/absl/random/internal/sequence_urbg.h +0 -60
  629. package/deps/abseil-cpp/absl/random/internal/traits.h +0 -149
  630. package/deps/abseil-cpp/absl/random/internal/traits_test.cc +0 -123
  631. package/deps/abseil-cpp/absl/random/internal/uniform_helper.h +0 -244
  632. package/deps/abseil-cpp/absl/random/internal/uniform_helper_test.cc +0 -279
  633. package/deps/abseil-cpp/absl/random/internal/wide_multiply.h +0 -95
  634. package/deps/abseil-cpp/absl/random/internal/wide_multiply_test.cc +0 -119
  635. package/deps/abseil-cpp/absl/random/log_uniform_int_distribution.h +0 -253
  636. package/deps/abseil-cpp/absl/random/log_uniform_int_distribution_test.cc +0 -277
  637. package/deps/abseil-cpp/absl/random/mock_distributions.h +0 -269
  638. package/deps/abseil-cpp/absl/random/mock_distributions_test.cc +0 -281
  639. package/deps/abseil-cpp/absl/random/mocking_bit_gen.h +0 -237
  640. package/deps/abseil-cpp/absl/random/mocking_bit_gen_test.cc +0 -403
  641. package/deps/abseil-cpp/absl/random/poisson_distribution.h +0 -262
  642. package/deps/abseil-cpp/absl/random/poisson_distribution_test.cc +0 -569
  643. package/deps/abseil-cpp/absl/random/random.h +0 -224
  644. package/deps/abseil-cpp/absl/random/seed_gen_exception.cc +0 -45
  645. package/deps/abseil-cpp/absl/random/seed_gen_exception.h +0 -55
  646. package/deps/abseil-cpp/absl/random/seed_sequences.cc +0 -33
  647. package/deps/abseil-cpp/absl/random/seed_sequences.h +0 -112
  648. package/deps/abseil-cpp/absl/random/seed_sequences_test.cc +0 -126
  649. package/deps/abseil-cpp/absl/random/uniform_int_distribution.h +0 -276
  650. package/deps/abseil-cpp/absl/random/uniform_int_distribution_test.cc +0 -259
  651. package/deps/abseil-cpp/absl/random/uniform_real_distribution.h +0 -204
  652. package/deps/abseil-cpp/absl/random/uniform_real_distribution_test.cc +0 -394
  653. package/deps/abseil-cpp/absl/random/zipf_distribution.h +0 -273
  654. package/deps/abseil-cpp/absl/random/zipf_distribution_test.cc +0 -423
  655. package/deps/abseil-cpp/absl/status/BUILD.bazel +0 -211
  656. package/deps/abseil-cpp/absl/status/CMakeLists.txt +0 -159
  657. package/deps/abseil-cpp/absl/status/internal/status_internal.cc +0 -251
  658. package/deps/abseil-cpp/absl/status/internal/status_internal.h +0 -133
  659. package/deps/abseil-cpp/absl/status/internal/status_matchers.cc +0 -69
  660. package/deps/abseil-cpp/absl/status/internal/status_matchers.h +0 -246
  661. package/deps/abseil-cpp/absl/status/internal/statusor_internal.h +0 -657
  662. package/deps/abseil-cpp/absl/status/status.cc +0 -421
  663. package/deps/abseil-cpp/absl/status/status.h +0 -948
  664. package/deps/abseil-cpp/absl/status/status_benchmark.cc +0 -37
  665. package/deps/abseil-cpp/absl/status/status_matchers.h +0 -166
  666. package/deps/abseil-cpp/absl/status/status_matchers_test.cc +0 -211
  667. package/deps/abseil-cpp/absl/status/status_payload_printer.cc +0 -36
  668. package/deps/abseil-cpp/absl/status/status_payload_printer.h +0 -52
  669. package/deps/abseil-cpp/absl/status/status_test.cc +0 -580
  670. package/deps/abseil-cpp/absl/status/statusor.cc +0 -106
  671. package/deps/abseil-cpp/absl/status/statusor.h +0 -743
  672. package/deps/abseil-cpp/absl/status/statusor_benchmark.cc +0 -480
  673. package/deps/abseil-cpp/absl/status/statusor_test.cc +0 -2124
  674. package/deps/abseil-cpp/absl/strings/BUILD.bazel +0 -1593
  675. package/deps/abseil-cpp/absl/strings/CMakeLists.txt +0 -1295
  676. package/deps/abseil-cpp/absl/strings/ascii.cc +0 -296
  677. package/deps/abseil-cpp/absl/strings/ascii.h +0 -289
  678. package/deps/abseil-cpp/absl/strings/ascii_benchmark.cc +0 -157
  679. package/deps/abseil-cpp/absl/strings/ascii_test.cc +0 -374
  680. package/deps/abseil-cpp/absl/strings/atod_manual_test.cc +0 -193
  681. package/deps/abseil-cpp/absl/strings/char_formatting_test.cc +0 -169
  682. package/deps/abseil-cpp/absl/strings/charconv.cc +0 -1442
  683. package/deps/abseil-cpp/absl/strings/charconv.h +0 -123
  684. package/deps/abseil-cpp/absl/strings/charconv_benchmark.cc +0 -203
  685. package/deps/abseil-cpp/absl/strings/charconv_test.cc +0 -787
  686. package/deps/abseil-cpp/absl/strings/charset.h +0 -163
  687. package/deps/abseil-cpp/absl/strings/charset_benchmark.cc +0 -57
  688. package/deps/abseil-cpp/absl/strings/charset_test.cc +0 -181
  689. package/deps/abseil-cpp/absl/strings/cord.cc +0 -1582
  690. package/deps/abseil-cpp/absl/strings/cord.h +0 -1763
  691. package/deps/abseil-cpp/absl/strings/cord_analysis.cc +0 -196
  692. package/deps/abseil-cpp/absl/strings/cord_analysis.h +0 -63
  693. package/deps/abseil-cpp/absl/strings/cord_buffer.h +0 -572
  694. package/deps/abseil-cpp/absl/strings/cord_buffer_test.cc +0 -322
  695. package/deps/abseil-cpp/absl/strings/cord_test.cc +0 -3421
  696. package/deps/abseil-cpp/absl/strings/cord_test_helpers.h +0 -122
  697. package/deps/abseil-cpp/absl/strings/cordz_test.cc +0 -468
  698. package/deps/abseil-cpp/absl/strings/cordz_test_helpers.h +0 -152
  699. package/deps/abseil-cpp/absl/strings/escaping.cc +0 -1035
  700. package/deps/abseil-cpp/absl/strings/escaping.h +0 -185
  701. package/deps/abseil-cpp/absl/strings/escaping_benchmark.cc +0 -124
  702. package/deps/abseil-cpp/absl/strings/escaping_test.cc +0 -760
  703. package/deps/abseil-cpp/absl/strings/has_absl_stringify.h +0 -64
  704. package/deps/abseil-cpp/absl/strings/has_absl_stringify_test.cc +0 -40
  705. package/deps/abseil-cpp/absl/strings/has_ostream_operator.h +0 -42
  706. package/deps/abseil-cpp/absl/strings/has_ostream_operator_test.cc +0 -41
  707. package/deps/abseil-cpp/absl/strings/internal/append_and_overwrite.h +0 -93
  708. package/deps/abseil-cpp/absl/strings/internal/append_and_overwrite_test.cc +0 -95
  709. package/deps/abseil-cpp/absl/strings/internal/charconv_bigint.cc +0 -357
  710. package/deps/abseil-cpp/absl/strings/internal/charconv_bigint.h +0 -433
  711. package/deps/abseil-cpp/absl/strings/internal/charconv_bigint_test.cc +0 -260
  712. package/deps/abseil-cpp/absl/strings/internal/charconv_parse.cc +0 -504
  713. package/deps/abseil-cpp/absl/strings/internal/charconv_parse.h +0 -99
  714. package/deps/abseil-cpp/absl/strings/internal/charconv_parse_test.cc +0 -357
  715. package/deps/abseil-cpp/absl/strings/internal/cord_data_edge.h +0 -63
  716. package/deps/abseil-cpp/absl/strings/internal/cord_data_edge_test.cc +0 -130
  717. package/deps/abseil-cpp/absl/strings/internal/cord_internal.cc +0 -70
  718. package/deps/abseil-cpp/absl/strings/internal/cord_internal.h +0 -942
  719. package/deps/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -1237
  720. package/deps/abseil-cpp/absl/strings/internal/cord_rep_btree.h +0 -944
  721. package/deps/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +0 -187
  722. package/deps/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +0 -267
  723. package/deps/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator_test.cc +0 -346
  724. package/deps/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +0 -69
  725. package/deps/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +0 -212
  726. package/deps/abseil-cpp/absl/strings/internal/cord_rep_btree_reader_test.cc +0 -293
  727. package/deps/abseil-cpp/absl/strings/internal/cord_rep_btree_test.cc +0 -1568
  728. package/deps/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +0 -64
  729. package/deps/abseil-cpp/absl/strings/internal/cord_rep_consume.h +0 -47
  730. package/deps/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +0 -56
  731. package/deps/abseil-cpp/absl/strings/internal/cord_rep_crc.h +0 -103
  732. package/deps/abseil-cpp/absl/strings/internal/cord_rep_crc_test.cc +0 -130
  733. package/deps/abseil-cpp/absl/strings/internal/cord_rep_flat.h +0 -195
  734. package/deps/abseil-cpp/absl/strings/internal/cord_rep_test_util.h +0 -205
  735. package/deps/abseil-cpp/absl/strings/internal/cordz_functions.cc +0 -102
  736. package/deps/abseil-cpp/absl/strings/internal/cordz_functions.h +0 -87
  737. package/deps/abseil-cpp/absl/strings/internal/cordz_functions_test.cc +0 -147
  738. package/deps/abseil-cpp/absl/strings/internal/cordz_handle.cc +0 -165
  739. package/deps/abseil-cpp/absl/strings/internal/cordz_handle.h +0 -98
  740. package/deps/abseil-cpp/absl/strings/internal/cordz_handle_test.cc +0 -265
  741. package/deps/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -424
  742. package/deps/abseil-cpp/absl/strings/internal/cordz_info.h +0 -295
  743. package/deps/abseil-cpp/absl/strings/internal/cordz_info_statistics_test.cc +0 -510
  744. package/deps/abseil-cpp/absl/strings/internal/cordz_info_test.cc +0 -342
  745. package/deps/abseil-cpp/absl/strings/internal/cordz_sample_token.cc +0 -64
  746. package/deps/abseil-cpp/absl/strings/internal/cordz_sample_token.h +0 -97
  747. package/deps/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +0 -208
  748. package/deps/abseil-cpp/absl/strings/internal/cordz_statistics.h +0 -88
  749. package/deps/abseil-cpp/absl/strings/internal/cordz_update_scope.h +0 -71
  750. package/deps/abseil-cpp/absl/strings/internal/cordz_update_scope_test.cc +0 -49
  751. package/deps/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +0 -123
  752. package/deps/abseil-cpp/absl/strings/internal/cordz_update_tracker_test.cc +0 -147
  753. package/deps/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +0 -99
  754. package/deps/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +0 -35
  755. package/deps/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_benchmark.cc +0 -56
  756. package/deps/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_test.cc +0 -99
  757. package/deps/abseil-cpp/absl/strings/internal/escaping.cc +0 -209
  758. package/deps/abseil-cpp/absl/strings/internal/escaping.h +0 -59
  759. package/deps/abseil-cpp/absl/strings/internal/escaping_test_common.h +0 -133
  760. package/deps/abseil-cpp/absl/strings/internal/generic_printer.cc +0 -107
  761. package/deps/abseil-cpp/absl/strings/internal/generic_printer.h +0 -115
  762. package/deps/abseil-cpp/absl/strings/internal/generic_printer_internal.h +0 -423
  763. package/deps/abseil-cpp/absl/strings/internal/generic_printer_test.cc +0 -685
  764. package/deps/abseil-cpp/absl/strings/internal/memutil.cc +0 -48
  765. package/deps/abseil-cpp/absl/strings/internal/memutil.h +0 -40
  766. package/deps/abseil-cpp/absl/strings/internal/memutil_benchmark.cc +0 -127
  767. package/deps/abseil-cpp/absl/strings/internal/memutil_test.cc +0 -41
  768. package/deps/abseil-cpp/absl/strings/internal/numbers_test_common.h +0 -184
  769. package/deps/abseil-cpp/absl/strings/internal/ostringstream.cc +0 -43
  770. package/deps/abseil-cpp/absl/strings/internal/ostringstream.h +0 -114
  771. package/deps/abseil-cpp/absl/strings/internal/ostringstream_benchmark.cc +0 -105
  772. package/deps/abseil-cpp/absl/strings/internal/ostringstream_test.cc +0 -131
  773. package/deps/abseil-cpp/absl/strings/internal/pow10_helper.cc +0 -122
  774. package/deps/abseil-cpp/absl/strings/internal/pow10_helper.h +0 -40
  775. package/deps/abseil-cpp/absl/strings/internal/pow10_helper_test.cc +0 -122
  776. package/deps/abseil-cpp/absl/strings/internal/resize_uninitialized.h +0 -119
  777. package/deps/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +0 -108
  778. package/deps/abseil-cpp/absl/strings/internal/stl_type_traits.h +0 -248
  779. package/deps/abseil-cpp/absl/strings/internal/str_format/arg.cc +0 -615
  780. package/deps/abseil-cpp/absl/strings/internal/str_format/arg.h +0 -661
  781. package/deps/abseil-cpp/absl/strings/internal/str_format/arg_test.cc +0 -162
  782. package/deps/abseil-cpp/absl/strings/internal/str_format/bind.cc +0 -275
  783. package/deps/abseil-cpp/absl/strings/internal/str_format/bind.h +0 -237
  784. package/deps/abseil-cpp/absl/strings/internal/str_format/bind_test.cc +0 -157
  785. package/deps/abseil-cpp/absl/strings/internal/str_format/checker.h +0 -98
  786. package/deps/abseil-cpp/absl/strings/internal/str_format/checker_test.cc +0 -176
  787. package/deps/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +0 -357
  788. package/deps/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +0 -1471
  789. package/deps/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -53
  790. package/deps/abseil-cpp/absl/strings/internal/str_format/extension.h +0 -456
  791. package/deps/abseil-cpp/absl/strings/internal/str_format/extension_test.cc +0 -110
  792. package/deps/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +0 -1945
  793. package/deps/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +0 -37
  794. package/deps/abseil-cpp/absl/strings/internal/str_format/output.cc +0 -74
  795. package/deps/abseil-cpp/absl/strings/internal/str_format/output.h +0 -97
  796. package/deps/abseil-cpp/absl/strings/internal/str_format/output_test.cc +0 -79
  797. package/deps/abseil-cpp/absl/strings/internal/str_format/parser.cc +0 -140
  798. package/deps/abseil-cpp/absl/strings/internal/str_format/parser.h +0 -271
  799. package/deps/abseil-cpp/absl/strings/internal/str_format/parser_test.cc +0 -446
  800. package/deps/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -341
  801. package/deps/abseil-cpp/absl/strings/internal/str_split_internal.h +0 -525
  802. package/deps/abseil-cpp/absl/strings/internal/string_constant.h +0 -67
  803. package/deps/abseil-cpp/absl/strings/internal/string_constant_test.cc +0 -60
  804. package/deps/abseil-cpp/absl/strings/internal/stringify_sink.cc +0 -28
  805. package/deps/abseil-cpp/absl/strings/internal/stringify_sink.h +0 -57
  806. package/deps/abseil-cpp/absl/strings/internal/utf8.cc +0 -148
  807. package/deps/abseil-cpp/absl/strings/internal/utf8.h +0 -64
  808. package/deps/abseil-cpp/absl/strings/internal/utf8_test.cc +0 -259
  809. package/deps/abseil-cpp/absl/strings/match.cc +0 -133
  810. package/deps/abseil-cpp/absl/strings/match.h +0 -129
  811. package/deps/abseil-cpp/absl/strings/match_test.cc +0 -291
  812. package/deps/abseil-cpp/absl/strings/numbers.cc +0 -1230
  813. package/deps/abseil-cpp/absl/strings/numbers.h +0 -359
  814. package/deps/abseil-cpp/absl/strings/numbers_benchmark.cc +0 -288
  815. package/deps/abseil-cpp/absl/strings/numbers_test.cc +0 -2324
  816. package/deps/abseil-cpp/absl/strings/resize_and_overwrite.h +0 -194
  817. package/deps/abseil-cpp/absl/strings/resize_and_overwrite_test.cc +0 -154
  818. package/deps/abseil-cpp/absl/strings/str_cat.cc +0 -247
  819. package/deps/abseil-cpp/absl/strings/str_cat.h +0 -633
  820. package/deps/abseil-cpp/absl/strings/str_cat_benchmark.cc +0 -288
  821. package/deps/abseil-cpp/absl/strings/str_cat_test.cc +0 -692
  822. package/deps/abseil-cpp/absl/strings/str_format.h +0 -887
  823. package/deps/abseil-cpp/absl/strings/str_format_test.cc +0 -1230
  824. package/deps/abseil-cpp/absl/strings/str_join.h +0 -301
  825. package/deps/abseil-cpp/absl/strings/str_join_benchmark.cc +0 -106
  826. package/deps/abseil-cpp/absl/strings/str_join_test.cc +0 -645
  827. package/deps/abseil-cpp/absl/strings/str_replace.cc +0 -91
  828. package/deps/abseil-cpp/absl/strings/str_replace.h +0 -222
  829. package/deps/abseil-cpp/absl/strings/str_replace_benchmark.cc +0 -121
  830. package/deps/abseil-cpp/absl/strings/str_replace_test.cc +0 -345
  831. package/deps/abseil-cpp/absl/strings/str_split.cc +0 -144
  832. package/deps/abseil-cpp/absl/strings/str_split.h +0 -582
  833. package/deps/abseil-cpp/absl/strings/str_split_benchmark.cc +0 -180
  834. package/deps/abseil-cpp/absl/strings/str_split_test.cc +0 -1069
  835. package/deps/abseil-cpp/absl/strings/string_view.h +0 -60
  836. package/deps/abseil-cpp/absl/strings/string_view_test.cc +0 -86
  837. package/deps/abseil-cpp/absl/strings/strip.h +0 -99
  838. package/deps/abseil-cpp/absl/strings/strip_test.cc +0 -198
  839. package/deps/abseil-cpp/absl/strings/substitute.cc +0 -187
  840. package/deps/abseil-cpp/absl/strings/substitute.h +0 -769
  841. package/deps/abseil-cpp/absl/strings/substitute_benchmark.cc +0 -158
  842. package/deps/abseil-cpp/absl/strings/substitute_test.cc +0 -288
  843. package/deps/abseil-cpp/absl/synchronization/BUILD.bazel +0 -410
  844. package/deps/abseil-cpp/absl/synchronization/CMakeLists.txt +0 -293
  845. package/deps/abseil-cpp/absl/synchronization/barrier.cc +0 -52
  846. package/deps/abseil-cpp/absl/synchronization/barrier.h +0 -79
  847. package/deps/abseil-cpp/absl/synchronization/barrier_test.cc +0 -75
  848. package/deps/abseil-cpp/absl/synchronization/blocking_counter.cc +0 -73
  849. package/deps/abseil-cpp/absl/synchronization/blocking_counter.h +0 -107
  850. package/deps/abseil-cpp/absl/synchronization/blocking_counter_benchmark.cc +0 -84
  851. package/deps/abseil-cpp/absl/synchronization/blocking_counter_test.cc +0 -146
  852. package/deps/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +0 -152
  853. package/deps/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -56
  854. package/deps/abseil-cpp/absl/synchronization/internal/futex.h +0 -177
  855. package/deps/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -107
  856. package/deps/abseil-cpp/absl/synchronization/internal/futex_waiter.h +0 -63
  857. package/deps/abseil-cpp/absl/synchronization/internal/graphcycles.cc +0 -714
  858. package/deps/abseil-cpp/absl/synchronization/internal/graphcycles.h +0 -146
  859. package/deps/abseil-cpp/absl/synchronization/internal/graphcycles_benchmark.cc +0 -43
  860. package/deps/abseil-cpp/absl/synchronization/internal/graphcycles_test.cc +0 -483
  861. package/deps/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -220
  862. package/deps/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +0 -178
  863. package/deps/abseil-cpp/absl/synchronization/internal/kernel_timeout_test.cc +0 -406
  864. package/deps/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -106
  865. package/deps/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +0 -119
  866. package/deps/abseil-cpp/absl/synchronization/internal/per_thread_sem_test.cc +0 -194
  867. package/deps/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -163
  868. package/deps/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +0 -60
  869. package/deps/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -118
  870. package/deps/abseil-cpp/absl/synchronization/internal/sem_waiter.h +0 -65
  871. package/deps/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -87
  872. package/deps/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +0 -56
  873. package/deps/abseil-cpp/absl/synchronization/internal/thread_pool.h +0 -96
  874. package/deps/abseil-cpp/absl/synchronization/internal/waiter.h +0 -69
  875. package/deps/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -38
  876. package/deps/abseil-cpp/absl/synchronization/internal/waiter_base.h +0 -90
  877. package/deps/abseil-cpp/absl/synchronization/internal/waiter_test.cc +0 -192
  878. package/deps/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -147
  879. package/deps/abseil-cpp/absl/synchronization/internal/win32_waiter.h +0 -72
  880. package/deps/abseil-cpp/absl/synchronization/lifetime_test.cc +0 -180
  881. package/deps/abseil-cpp/absl/synchronization/mutex.cc +0 -2820
  882. package/deps/abseil-cpp/absl/synchronization/mutex.h +0 -1352
  883. package/deps/abseil-cpp/absl/synchronization/mutex_benchmark.cc +0 -321
  884. package/deps/abseil-cpp/absl/synchronization/mutex_method_pointer_test.cc +0 -138
  885. package/deps/abseil-cpp/absl/synchronization/mutex_test.cc +0 -2065
  886. package/deps/abseil-cpp/absl/synchronization/notification.cc +0 -85
  887. package/deps/abseil-cpp/absl/synchronization/notification.h +0 -133
  888. package/deps/abseil-cpp/absl/synchronization/notification_test.cc +0 -230
  889. package/deps/abseil-cpp/absl/time/BUILD.bazel +0 -244
  890. package/deps/abseil-cpp/absl/time/CMakeLists.txt +0 -218
  891. package/deps/abseil-cpp/absl/time/civil_time.cc +0 -200
  892. package/deps/abseil-cpp/absl/time/civil_time.h +0 -589
  893. package/deps/abseil-cpp/absl/time/civil_time_benchmark.cc +0 -129
  894. package/deps/abseil-cpp/absl/time/civil_time_test.cc +0 -1351
  895. package/deps/abseil-cpp/absl/time/clock.cc +0 -603
  896. package/deps/abseil-cpp/absl/time/clock.h +0 -78
  897. package/deps/abseil-cpp/absl/time/clock_benchmark.cc +0 -74
  898. package/deps/abseil-cpp/absl/time/clock_interface.cc +0 -71
  899. package/deps/abseil-cpp/absl/time/clock_interface.h +0 -91
  900. package/deps/abseil-cpp/absl/time/clock_interface_test.cc +0 -128
  901. package/deps/abseil-cpp/absl/time/clock_test.cc +0 -122
  902. package/deps/abseil-cpp/absl/time/duration.cc +0 -918
  903. package/deps/abseil-cpp/absl/time/duration_benchmark.cc +0 -608
  904. package/deps/abseil-cpp/absl/time/duration_test.cc +0 -1901
  905. package/deps/abseil-cpp/absl/time/flag_test.cc +0 -147
  906. package/deps/abseil-cpp/absl/time/format.cc +0 -162
  907. package/deps/abseil-cpp/absl/time/format_benchmark.cc +0 -64
  908. package/deps/abseil-cpp/absl/time/format_test.cc +0 -441
  909. package/deps/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +0 -195
  910. package/deps/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +0 -332
  911. package/deps/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +0 -644
  912. package/deps/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +0 -460
  913. package/deps/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +0 -102
  914. package/deps/abseil-cpp/absl/time/internal/cctz/src/cctz_benchmark.cc +0 -436
  915. package/deps/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +0 -94
  916. package/deps/abseil-cpp/absl/time/internal/cctz/src/civil_time_test.cc +0 -1066
  917. package/deps/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.cc +0 -515
  918. package/deps/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +0 -33
  919. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +0 -140
  920. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +0 -52
  921. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +0 -1068
  922. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +0 -1773
  923. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +0 -47
  924. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +0 -80
  925. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +0 -115
  926. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +0 -97
  927. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +0 -1070
  928. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +0 -128
  929. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +0 -333
  930. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +0 -60
  931. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -217
  932. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc +0 -918
  933. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +0 -186
  934. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +0 -37
  935. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +0 -159
  936. package/deps/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +0 -132
  937. package/deps/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +0 -120
  938. package/deps/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +0 -116
  939. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/README.zoneinfo +0 -38
  940. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/version +0 -1
  941. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan +0 -0
  942. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra +0 -0
  943. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa +0 -0
  944. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers +0 -0
  945. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara +0 -0
  946. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera +0 -0
  947. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako +0 -0
  948. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui +0 -0
  949. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul +0 -0
  950. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bissau +0 -0
  951. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre +0 -0
  952. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville +0 -0
  953. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura +0 -0
  954. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo +0 -0
  955. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca +0 -0
  956. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta +0 -0
  957. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry +0 -0
  958. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar +0 -0
  959. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam +0 -0
  960. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti +0 -0
  961. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala +0 -0
  962. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun +0 -0
  963. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown +0 -0
  964. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone +0 -0
  965. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare +0 -0
  966. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg +0 -0
  967. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba +0 -0
  968. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala +0 -0
  969. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum +0 -0
  970. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali +0 -0
  971. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa +0 -0
  972. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos +0 -0
  973. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville +0 -0
  974. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome +0 -0
  975. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda +0 -0
  976. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi +0 -0
  977. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka +0 -0
  978. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo +0 -0
  979. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo +0 -0
  980. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru +0 -0
  981. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane +0 -0
  982. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu +0 -0
  983. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia +0 -0
  984. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi +0 -0
  985. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena +0 -0
  986. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey +0 -0
  987. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott +0 -0
  988. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou +0 -0
  989. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo +0 -0
  990. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Sao_Tome +0 -0
  991. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu +0 -0
  992. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli +0 -0
  993. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis +0 -0
  994. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek +0 -0
  995. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Adak +0 -0
  996. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Anchorage +0 -0
  997. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla +0 -0
  998. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua +0 -0
  999. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina +0 -0
  1000. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires +0 -0
  1001. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca +0 -0
  1002. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia +0 -0
  1003. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba +0 -0
  1004. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy +0 -0
  1005. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja +0 -0
  1006. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza +0 -0
  1007. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos +0 -0
  1008. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta +0 -0
  1009. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan +0 -0
  1010. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis +0 -0
  1011. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman +0 -0
  1012. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia +0 -0
  1013. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba +0 -0
  1014. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion +0 -0
  1015. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Atikokan +0 -0
  1016. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Atka +0 -0
  1017. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia +0 -0
  1018. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas +0 -0
  1019. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados +0 -0
  1020. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Belem +0 -0
  1021. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Belize +0 -0
  1022. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon +0 -0
  1023. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista +0 -0
  1024. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota +0 -0
  1025. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Boise +0 -0
  1026. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires +0 -0
  1027. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cambridge_Bay +0 -0
  1028. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande +0 -0
  1029. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun +0 -0
  1030. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas +0 -0
  1031. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca +0 -0
  1032. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne +0 -0
  1033. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman +0 -0
  1034. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Chicago +0 -0
  1035. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua +0 -0
  1036. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ciudad_Juarez +0 -0
  1037. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coral_Harbour +0 -0
  1038. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba +0 -0
  1039. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica +0 -0
  1040. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coyhaique +0 -0
  1041. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Creston +0 -0
  1042. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba +0 -0
  1043. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao +0 -0
  1044. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Danmarkshavn +0 -0
  1045. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson +0 -0
  1046. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson_Creek +0 -0
  1047. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Denver +0 -0
  1048. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Detroit +0 -0
  1049. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica +0 -0
  1050. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Edmonton +0 -0
  1051. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe +0 -0
  1052. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador +0 -0
  1053. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada +0 -0
  1054. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Nelson +0 -0
  1055. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Wayne +0 -0
  1056. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza +0 -0
  1057. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Glace_Bay +0 -0
  1058. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Godthab +0 -0
  1059. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Goose_Bay +0 -0
  1060. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk +0 -0
  1061. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada +0 -0
  1062. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe +0 -0
  1063. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala +0 -0
  1064. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil +0 -0
  1065. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana +0 -0
  1066. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Halifax +0 -0
  1067. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Havana +0 -0
  1068. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo +0 -0
  1069. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Indianapolis +0 -0
  1070. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Knox +0 -0
  1071. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Marengo +0 -0
  1072. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Petersburg +0 -0
  1073. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Tell_City +0 -0
  1074. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vevay +0 -0
  1075. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vincennes +0 -0
  1076. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Winamac +0 -0
  1077. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indianapolis +0 -0
  1078. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik +0 -0
  1079. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Iqaluit +0 -0
  1080. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica +0 -0
  1081. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy +0 -0
  1082. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Juneau +0 -0
  1083. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Louisville +0 -0
  1084. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Monticello +0 -0
  1085. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Knox_IN +0 -0
  1086. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk +0 -0
  1087. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz +0 -0
  1088. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Lima +0 -0
  1089. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Los_Angeles +0 -0
  1090. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Louisville +0 -0
  1091. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes +0 -0
  1092. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio +0 -0
  1093. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Managua +0 -0
  1094. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus +0 -0
  1095. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot +0 -0
  1096. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique +0 -0
  1097. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros +0 -0
  1098. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan +0 -0
  1099. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza +0 -0
  1100. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Menominee +0 -0
  1101. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Merida +0 -0
  1102. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla +0 -0
  1103. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City +0 -0
  1104. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon +0 -0
  1105. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Moncton +0 -0
  1106. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey +0 -0
  1107. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo +0 -0
  1108. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montreal +0 -0
  1109. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat +0 -0
  1110. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau +0 -0
  1111. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/New_York +0 -0
  1112. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nipigon +0 -0
  1113. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nome +0 -0
  1114. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha +0 -0
  1115. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Beulah +0 -0
  1116. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Center +0 -0
  1117. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/New_Salem +0 -0
  1118. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nuuk +0 -0
  1119. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga +0 -0
  1120. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Panama +0 -0
  1121. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Pangnirtung +0 -0
  1122. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo +0 -0
  1123. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix +0 -0
  1124. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince +0 -0
  1125. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain +0 -0
  1126. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre +0 -0
  1127. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho +0 -0
  1128. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Puerto_Rico +0 -0
  1129. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Punta_Arenas +0 -0
  1130. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rainy_River +0 -0
  1131. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet +0 -0
  1132. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Recife +0 -0
  1133. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Regina +0 -0
  1134. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute +0 -0
  1135. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco +0 -0
  1136. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario +0 -0
  1137. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel +0 -0
  1138. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem +0 -0
  1139. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santiago +0 -0
  1140. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo +0 -0
  1141. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo +0 -0
  1142. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Scoresbysund +0 -0
  1143. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Shiprock +0 -0
  1144. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Sitka +0 -0
  1145. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy +0 -0
  1146. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Johns +0 -0
  1147. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts +0 -0
  1148. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia +0 -0
  1149. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas +0 -0
  1150. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent +0 -0
  1151. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Swift_Current +0 -0
  1152. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa +0 -0
  1153. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Thule +0 -0
  1154. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Thunder_Bay +0 -0
  1155. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana +0 -0
  1156. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Toronto +0 -0
  1157. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola +0 -0
  1158. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
  1159. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin +0 -0
  1160. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Whitehorse +0 -0
  1161. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg +0 -0
  1162. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Yakutat +0 -0
  1163. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Yellowknife +0 -0
  1164. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Casey +0 -0
  1165. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Davis +0 -0
  1166. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville +0 -0
  1167. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie +0 -0
  1168. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson +0 -0
  1169. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo +0 -0
  1170. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Palmer +0 -0
  1171. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera +0 -0
  1172. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole +0 -0
  1173. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa +0 -0
  1174. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Troll +0 -0
  1175. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok +0 -0
  1176. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen +0 -0
  1177. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden +0 -0
  1178. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty +0 -0
  1179. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman +0 -0
  1180. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr +0 -0
  1181. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau +0 -0
  1182. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe +0 -0
  1183. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat +0 -0
  1184. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad +0 -0
  1185. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau +0 -0
  1186. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad +0 -0
  1187. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain +0 -0
  1188. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku +0 -0
  1189. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok +0 -0
  1190. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul +0 -0
  1191. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut +0 -0
  1192. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek +0 -0
  1193. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei +0 -0
  1194. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta +0 -0
  1195. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita +0 -0
  1196. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan +0 -0
  1197. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing +0 -0
  1198. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking +0 -0
  1199. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo +0 -0
  1200. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca +0 -0
  1201. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus +0 -0
  1202. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka +0 -0
  1203. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili +0 -0
  1204. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai +0 -0
  1205. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe +0 -0
  1206. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Famagusta +0 -0
  1207. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza +0 -0
  1208. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin +0 -0
  1209. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron +0 -0
  1210. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  1211. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong +0 -0
  1212. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd +0 -0
  1213. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk +0 -0
  1214. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul +0 -0
  1215. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta +0 -0
  1216. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura +0 -0
  1217. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem +0 -0
  1218. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul +0 -0
  1219. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka +0 -0
  1220. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi +0 -0
  1221. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar +0 -0
  1222. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu +0 -0
  1223. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu +0 -0
  1224. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga +0 -0
  1225. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata +0 -0
  1226. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk +0 -0
  1227. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur +0 -0
  1228. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching +0 -0
  1229. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait +0 -0
  1230. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao +0 -0
  1231. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau +0 -0
  1232. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan +0 -0
  1233. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar +0 -0
  1234. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila +0 -0
  1235. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat +0 -0
  1236. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Nicosia +0 -0
  1237. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk +0 -0
  1238. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk +0 -0
  1239. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk +0 -0
  1240. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral +0 -0
  1241. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
  1242. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak +0 -0
  1243. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang +0 -0
  1244. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar +0 -0
  1245. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay +0 -0
  1246. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda +0 -0
  1247. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon +0 -0
  1248. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh +0 -0
  1249. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
  1250. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin +0 -0
  1251. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand +0 -0
  1252. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul +0 -0
  1253. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai +0 -0
  1254. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore +0 -0
  1255. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk +0 -0
  1256. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei +0 -0
  1257. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent +0 -0
  1258. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
  1259. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran +0 -0
  1260. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv +0 -0
  1261. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu +0 -0
  1262. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu +0 -0
  1263. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tokyo +0 -0
  1264. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk +0 -0
  1265. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang +0 -0
  1266. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar +0 -0
  1267. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator +0 -0
  1268. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi +0 -0
  1269. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera +0 -0
  1270. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
  1271. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok +0 -0
  1272. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk +0 -0
  1273. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon +0 -0
  1274. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg +0 -0
  1275. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan +0 -0
  1276. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Azores +0 -0
  1277. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda +0 -0
  1278. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Canary +0 -0
  1279. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Cape_Verde +0 -0
  1280. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faeroe +0 -0
  1281. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faroe +0 -0
  1282. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen +0 -0
  1283. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira +0 -0
  1284. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik +0 -0
  1285. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia +0 -0
  1286. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena +0 -0
  1287. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley +0 -0
  1288. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT +0 -0
  1289. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide +0 -0
  1290. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane +0 -0
  1291. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill +0 -0
  1292. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra +0 -0
  1293. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie +0 -0
  1294. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin +0 -0
  1295. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla +0 -0
  1296. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart +0 -0
  1297. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI +0 -0
  1298. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman +0 -0
  1299. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe +0 -0
  1300. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne +0 -0
  1301. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW +0 -0
  1302. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/North +0 -0
  1303. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth +0 -0
  1304. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland +0 -0
  1305. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/South +0 -0
  1306. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney +0 -0
  1307. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania +0 -0
  1308. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria +0 -0
  1309. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/West +0 -0
  1310. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna +0 -0
  1311. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre +0 -0
  1312. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha +0 -0
  1313. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East +0 -0
  1314. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West +0 -0
  1315. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/CET +0 -0
  1316. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT +0 -0
  1317. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Atlantic +0 -0
  1318. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central +0 -0
  1319. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Eastern +0 -0
  1320. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Mountain +0 -0
  1321. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Newfoundland +0 -0
  1322. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
  1323. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Saskatchewan +0 -0
  1324. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Yukon +0 -0
  1325. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Chile/Continental +0 -0
  1326. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Chile/EasterIsland +0 -0
  1327. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Cuba +0 -0
  1328. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/EET +0 -0
  1329. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/EST +0 -0
  1330. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT +0 -0
  1331. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Egypt +0 -0
  1332. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Eire +0 -0
  1333. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT +0 -0
  1334. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 +0 -0
  1335. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 +0 -0
  1336. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 +0 -0
  1337. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 +0 -0
  1338. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 +0 -0
  1339. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 +0 -0
  1340. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 +0 -0
  1341. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 +0 -0
  1342. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 +0 -0
  1343. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 +0 -0
  1344. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 +0 -0
  1345. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 +0 -0
  1346. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 +0 -0
  1347. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 +0 -0
  1348. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 +0 -0
  1349. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 +0 -0
  1350. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 +0 -0
  1351. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 +0 -0
  1352. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 +0 -0
  1353. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 +0 -0
  1354. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 +0 -0
  1355. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 +0 -0
  1356. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 +0 -0
  1357. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 +0 -0
  1358. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 +0 -0
  1359. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 +0 -0
  1360. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 +0 -0
  1361. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 +0 -0
  1362. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 +0 -0
  1363. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich +0 -0
  1364. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT +0 -0
  1365. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC +0 -0
  1366. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal +0 -0
  1367. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu +0 -0
  1368. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam +0 -0
  1369. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Andorra +0 -0
  1370. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan +0 -0
  1371. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Athens +0 -0
  1372. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast +0 -0
  1373. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade +0 -0
  1374. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin +0 -0
  1375. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava +0 -0
  1376. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels +0 -0
  1377. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest +0 -0
  1378. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest +0 -0
  1379. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Busingen +0 -0
  1380. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
  1381. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen +0 -0
  1382. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin +0 -0
  1383. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Gibraltar +0 -0
  1384. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey +0 -0
  1385. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Helsinki +0 -0
  1386. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man +0 -0
  1387. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul +0 -0
  1388. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey +0 -0
  1389. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad +0 -0
  1390. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kiev +0 -0
  1391. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kirov +0 -0
  1392. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kyiv +0 -0
  1393. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon +0 -0
  1394. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana +0 -0
  1395. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/London +0 -0
  1396. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg +0 -0
  1397. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid +0 -0
  1398. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Malta +0 -0
  1399. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Mariehamn +0 -0
  1400. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk +0 -0
  1401. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Monaco +0 -0
  1402. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Moscow +0 -0
  1403. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Nicosia +0 -0
  1404. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo +0 -0
  1405. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Paris +0 -0
  1406. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica +0 -0
  1407. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague +0 -0
  1408. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga +0 -0
  1409. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome +0 -0
  1410. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Samara +0 -0
  1411. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino +0 -0
  1412. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo +0 -0
  1413. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Saratov +0 -0
  1414. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol +0 -0
  1415. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje +0 -0
  1416. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia +0 -0
  1417. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Stockholm +0 -0
  1418. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn +0 -0
  1419. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tirane +0 -0
  1420. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
  1421. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ulyanovsk +0 -0
  1422. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod +0 -0
  1423. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vaduz +0 -0
  1424. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican +0 -0
  1425. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna +0 -0
  1426. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius +0 -0
  1427. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd +0 -0
  1428. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw +0 -0
  1429. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb +0 -0
  1430. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zaporozhye +0 -0
  1431. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zurich +0 -0
  1432. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Factory +0 -0
  1433. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GB +0 -0
  1434. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire +0 -0
  1435. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT +0 -0
  1436. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 +0 -0
  1437. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 +0 -0
  1438. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT0 +0 -0
  1439. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Greenwich +0 -0
  1440. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/HST +0 -0
  1441. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Hongkong +0 -0
  1442. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iceland +0 -0
  1443. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo +0 -0
  1444. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos +0 -0
  1445. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas +0 -0
  1446. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos +0 -0
  1447. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro +0 -0
  1448. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen +0 -0
  1449. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe +0 -0
  1450. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives +0 -0
  1451. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius +0 -0
  1452. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte +0 -0
  1453. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion +0 -0
  1454. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran +0 -0
  1455. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Israel +0 -0
  1456. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Jamaica +0 -0
  1457. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Japan +0 -0
  1458. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein +0 -0
  1459. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Libya +0 -0
  1460. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/MET +0 -0
  1461. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/MST +0 -0
  1462. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT +0 -0
  1463. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte +0 -0
  1464. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur +0 -0
  1465. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General +0 -0
  1466. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/NZ +0 -0
  1467. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT +0 -0
  1468. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Navajo +0 -0
  1469. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/PRC +0 -0
  1470. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT +0 -0
  1471. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia +0 -0
  1472. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland +0 -0
  1473. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville +0 -0
  1474. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham +0 -0
  1475. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk +0 -0
  1476. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Easter +0 -0
  1477. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate +0 -0
  1478. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury +0 -0
  1479. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo +0 -0
  1480. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji +0 -0
  1481. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti +0 -0
  1482. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos +0 -0
  1483. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier +0 -0
  1484. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal +0 -0
  1485. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam +0 -0
  1486. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Honolulu +0 -0
  1487. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Johnston +0 -0
  1488. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kanton +0 -0
  1489. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati +0 -0
  1490. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae +0 -0
  1491. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein +0 -0
  1492. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro +0 -0
  1493. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas +0 -0
  1494. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway +0 -0
  1495. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru +0 -0
  1496. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue +0 -0
  1497. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk +0 -0
  1498. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea +0 -0
  1499. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago +0 -0
  1500. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau +0 -0
  1501. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn +0 -0
  1502. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei +0 -0
  1503. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape +0 -0
  1504. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby +0 -0
  1505. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga +0 -0
  1506. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan +0 -0
  1507. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa +0 -0
  1508. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti +0 -0
  1509. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa +0 -0
  1510. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu +0 -0
  1511. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk +0 -0
  1512. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake +0 -0
  1513. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis +0 -0
  1514. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap +0 -0
  1515. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Poland +0 -0
  1516. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Portugal +0 -0
  1517. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/ROC +0 -0
  1518. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/ROK +0 -0
  1519. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Singapore +0 -0
  1520. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Turkey +0 -0
  1521. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/UCT +0 -0
  1522. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Alaska +0 -0
  1523. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Aleutian +0 -0
  1524. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona +0 -0
  1525. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Central +0 -0
  1526. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/East-Indiana +0 -0
  1527. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Eastern +0 -0
  1528. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Hawaii +0 -0
  1529. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Indiana-Starke +0 -0
  1530. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Michigan +0 -0
  1531. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Mountain +0 -0
  1532. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Pacific +0 -0
  1533. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa +0 -0
  1534. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/UTC +0 -0
  1535. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Universal +0 -0
  1536. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/W-SU +0 -0
  1537. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/WET +0 -0
  1538. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Zulu +0 -0
  1539. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +0 -279
  1540. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +0 -375
  1541. package/deps/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +0 -296
  1542. package/deps/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +0 -31
  1543. package/deps/abseil-cpp/absl/time/internal/get_current_time_posix.inc +0 -24
  1544. package/deps/abseil-cpp/absl/time/internal/test_util.cc +0 -32
  1545. package/deps/abseil-cpp/absl/time/internal/test_util.h +0 -33
  1546. package/deps/abseil-cpp/absl/time/simulated_clock.cc +0 -225
  1547. package/deps/abseil-cpp/absl/time/simulated_clock.h +0 -108
  1548. package/deps/abseil-cpp/absl/time/simulated_clock_test.cc +0 -614
  1549. package/deps/abseil-cpp/absl/time/time.cc +0 -507
  1550. package/deps/abseil-cpp/absl/time/time.h +0 -1926
  1551. package/deps/abseil-cpp/absl/time/time_benchmark.cc +0 -321
  1552. package/deps/abseil-cpp/absl/time/time_test.cc +0 -1365
  1553. package/deps/abseil-cpp/absl/time/time_zone_test.cc +0 -97
  1554. package/deps/abseil-cpp/absl/types/BUILD.bazel +0 -166
  1555. package/deps/abseil-cpp/absl/types/CMakeLists.txt +0 -179
  1556. package/deps/abseil-cpp/absl/types/any.h +0 -44
  1557. package/deps/abseil-cpp/absl/types/compare.h +0 -506
  1558. package/deps/abseil-cpp/absl/types/compare_test.cc +0 -300
  1559. package/deps/abseil-cpp/absl/types/internal/span.h +0 -141
  1560. package/deps/abseil-cpp/absl/types/optional.h +0 -41
  1561. package/deps/abseil-cpp/absl/types/span.h +0 -830
  1562. package/deps/abseil-cpp/absl/types/span_test.cc +0 -915
  1563. package/deps/abseil-cpp/absl/types/variant.h +0 -82
  1564. package/deps/abseil-cpp/absl/types/variant_test.cc +0 -164
  1565. package/deps/abseil-cpp/absl/utility/BUILD.bazel +0 -46
  1566. package/deps/abseil-cpp/absl/utility/CMakeLists.txt +0 -28
  1567. package/deps/abseil-cpp/absl/utility/utility.h +0 -68
  1568. package/deps/abseil-cpp/ci/absl_alternate_options.h +0 -28
  1569. package/deps/abseil-cpp/ci/cmake_common.sh +0 -19
  1570. package/deps/abseil-cpp/ci/cmake_install_test.sh +0 -64
  1571. package/deps/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +0 -106
  1572. package/deps/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +0 -114
  1573. package/deps/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +0 -107
  1574. package/deps/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +0 -106
  1575. package/deps/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +0 -104
  1576. package/deps/abseil-cpp/ci/linux_docker_containers.sh +0 -22
  1577. package/deps/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +0 -100
  1578. package/deps/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +0 -105
  1579. package/deps/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +0 -85
  1580. package/deps/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +0 -85
  1581. package/deps/abseil-cpp/ci/macos_xcode_bazel.sh +0 -70
  1582. package/deps/abseil-cpp/ci/macos_xcode_cmake.sh +0 -78
  1583. package/deps/abseil-cpp/ci/windows_clangcl_bazel.bat +0 -70
  1584. package/deps/abseil-cpp/ci/windows_msvc_bazel.bat +0 -61
  1585. package/deps/abseil-cpp/ci/windows_msvc_cmake.bat +0 -69
  1586. package/deps/abseil-cpp/conanfile.py +0 -51
  1587. package/deps/abseil-cpp/create_lts.py +0 -139
  1588. package/deps/re2/.bazelrc +0 -20
  1589. package/deps/re2/.bcr/metadata.template.json +0 -16
  1590. package/deps/re2/.bcr/presubmit.yml +0 -57
  1591. package/deps/re2/.bcr/source.template.json +0 -5
  1592. package/deps/re2/BUILD.bazel +0 -463
  1593. package/deps/re2/CMakeLists.txt +0 -283
  1594. package/deps/re2/LICENSE +0 -27
  1595. package/deps/re2/MODULE.bazel +0 -29
  1596. package/deps/re2/Makefile +0 -408
  1597. package/deps/re2/WORKSPACE.bazel +0 -7
  1598. package/deps/re2/WORKSPACE.bzlmod +0 -7
  1599. package/deps/re2/app/BUILD.bazel +0 -24
  1600. package/deps/re2/app/_re2.cc +0 -94
  1601. package/deps/re2/app/_re2.d.ts +0 -23
  1602. package/deps/re2/app/app.ts +0 -111
  1603. package/deps/re2/app/build.sh +0 -32
  1604. package/deps/re2/app/index.html +0 -5
  1605. package/deps/re2/app/package.json +0 -14
  1606. package/deps/re2/app/rollup.config.js +0 -28
  1607. package/deps/re2/app/tsconfig.json +0 -17
  1608. package/deps/re2/benchlog/benchplot.py +0 -98
  1609. package/deps/re2/benchlog/mktable +0 -155
  1610. package/deps/re2/doc/mksyntaxgo +0 -42
  1611. package/deps/re2/doc/mksyntaxhtml +0 -42
  1612. package/deps/re2/doc/mksyntaxwiki +0 -36
  1613. package/deps/re2/doc/syntax.html +0 -477
  1614. package/deps/re2/doc/syntax.txt +0 -463
  1615. package/deps/re2/lib/git/commit-msg.hook +0 -104
  1616. package/deps/re2/libre2.symbols +0 -16
  1617. package/deps/re2/libre2.symbols.darwin +0 -12
  1618. package/deps/re2/python/BUILD.bazel +0 -80
  1619. package/deps/re2/python/_re2.cc +0 -352
  1620. package/deps/re2/python/re2.py +0 -583
  1621. package/deps/re2/python/re2_test.py +0 -495
  1622. package/deps/re2/python/setup.py +0 -159
  1623. package/deps/re2/python/toolchains/generate.py +0 -100
  1624. package/deps/re2/re2/bitmap256.cc +0 -43
  1625. package/deps/re2/re2/bitmap256.h +0 -88
  1626. package/deps/re2/re2/bitstate.cc +0 -389
  1627. package/deps/re2/re2/compile.cc +0 -1265
  1628. package/deps/re2/re2/dfa.cc +0 -2135
  1629. package/deps/re2/re2/filtered_re2.cc +0 -138
  1630. package/deps/re2/re2/filtered_re2.h +0 -115
  1631. package/deps/re2/re2/fuzzing/re2_fuzzer.cc +0 -284
  1632. package/deps/re2/re2/make_perl_groups.pl +0 -116
  1633. package/deps/re2/re2/make_unicode_casefold.py +0 -151
  1634. package/deps/re2/re2/make_unicode_groups.py +0 -117
  1635. package/deps/re2/re2/mimics_pcre.cc +0 -196
  1636. package/deps/re2/re2/nfa.cc +0 -714
  1637. package/deps/re2/re2/onepass.cc +0 -623
  1638. package/deps/re2/re2/parse.cc +0 -2529
  1639. package/deps/re2/re2/perl_groups.cc +0 -119
  1640. package/deps/re2/re2/pod_array.h +0 -55
  1641. package/deps/re2/re2/prefilter.cc +0 -711
  1642. package/deps/re2/re2/prefilter.h +0 -168
  1643. package/deps/re2/re2/prefilter_tree.cc +0 -376
  1644. package/deps/re2/re2/prefilter_tree.h +0 -153
  1645. package/deps/re2/re2/prog.cc +0 -1181
  1646. package/deps/re2/re2/prog.h +0 -493
  1647. package/deps/re2/re2/re2.cc +0 -1355
  1648. package/deps/re2/re2/re2.h +0 -1074
  1649. package/deps/re2/re2/regexp.cc +0 -1004
  1650. package/deps/re2/re2/regexp.h +0 -693
  1651. package/deps/re2/re2/set.cc +0 -185
  1652. package/deps/re2/re2/set.h +0 -91
  1653. package/deps/re2/re2/simplify.cc +0 -689
  1654. package/deps/re2/re2/sparse_array.h +0 -394
  1655. package/deps/re2/re2/sparse_set.h +0 -266
  1656. package/deps/re2/re2/stringpiece.h +0 -18
  1657. package/deps/re2/re2/testing/backtrack.cc +0 -274
  1658. package/deps/re2/re2/testing/charclass_test.cc +0 -228
  1659. package/deps/re2/re2/testing/compile_test.cc +0 -431
  1660. package/deps/re2/re2/testing/dfa_test.cc +0 -376
  1661. package/deps/re2/re2/testing/dump.cc +0 -172
  1662. package/deps/re2/re2/testing/exhaustive1_test.cc +0 -40
  1663. package/deps/re2/re2/testing/exhaustive2_test.cc +0 -72
  1664. package/deps/re2/re2/testing/exhaustive3_test.cc +0 -100
  1665. package/deps/re2/re2/testing/exhaustive_test.cc +0 -35
  1666. package/deps/re2/re2/testing/exhaustive_tester.cc +0 -204
  1667. package/deps/re2/re2/testing/exhaustive_tester.h +0 -105
  1668. package/deps/re2/re2/testing/filtered_re2_test.cc +0 -343
  1669. package/deps/re2/re2/testing/mimics_pcre_test.cc +0 -79
  1670. package/deps/re2/re2/testing/null_walker.cc +0 -48
  1671. package/deps/re2/re2/testing/parse_test.cc +0 -586
  1672. package/deps/re2/re2/testing/possible_match_test.cc +0 -251
  1673. package/deps/re2/re2/testing/random_test.cc +0 -102
  1674. package/deps/re2/re2/testing/re2_arg_test.cc +0 -182
  1675. package/deps/re2/re2/testing/re2_test.cc +0 -1699
  1676. package/deps/re2/re2/testing/regexp_benchmark.cc +0 -1605
  1677. package/deps/re2/re2/testing/regexp_generator.cc +0 -284
  1678. package/deps/re2/re2/testing/regexp_generator.h +0 -77
  1679. package/deps/re2/re2/testing/regexp_test.cc +0 -87
  1680. package/deps/re2/re2/testing/required_prefix_test.cc +0 -201
  1681. package/deps/re2/re2/testing/search_test.cc +0 -338
  1682. package/deps/re2/re2/testing/set_test.cc +0 -235
  1683. package/deps/re2/re2/testing/simplify_test.cc +0 -289
  1684. package/deps/re2/re2/testing/string_generator.cc +0 -144
  1685. package/deps/re2/re2/testing/string_generator.h +0 -76
  1686. package/deps/re2/re2/testing/string_generator_test.cc +0 -114
  1687. package/deps/re2/re2/testing/tester.cc +0 -690
  1688. package/deps/re2/re2/testing/tester.h +0 -121
  1689. package/deps/re2/re2/tostring.cc +0 -351
  1690. package/deps/re2/re2/unicode.py +0 -284
  1691. package/deps/re2/re2/unicode_casefold.cc +0 -604
  1692. package/deps/re2/re2/unicode_casefold.h +0 -77
  1693. package/deps/re2/re2/unicode_groups.cc +0 -6517
  1694. package/deps/re2/re2/unicode_groups.h +0 -66
  1695. package/deps/re2/re2/walker-inl.h +0 -249
  1696. package/deps/re2/re2.pc.in +0 -9
  1697. package/deps/re2/re2Config.cmake.in +0 -26
  1698. package/deps/re2/runtests +0 -33
  1699. package/deps/re2/testinstall.cc +0 -27
  1700. package/deps/re2/ucs2.diff +0 -567
  1701. package/deps/re2/util/malloc_counter.h +0 -19
  1702. package/deps/re2/util/pcre.cc +0 -957
  1703. package/deps/re2/util/pcre.h +0 -671
  1704. package/deps/re2/util/rune.cc +0 -260
  1705. package/deps/re2/util/strutil.cc +0 -26
  1706. package/deps/re2/util/strutil.h +0 -16
  1707. package/deps/re2/util/utf.h +0 -44
@@ -1,3421 +0,0 @@
1
- // Copyright 2020 The Abseil Authors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // https://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #include "absl/strings/cord.h"
16
-
17
- #include <algorithm>
18
- #include <array>
19
- #include <cassert>
20
- #include <cstddef>
21
- #include <cstdint>
22
- #include <cstdio>
23
- #include <cstring>
24
- #include <iostream>
25
- #include <iterator>
26
- #include <limits>
27
- #include <random>
28
- #include <set>
29
- #include <sstream>
30
- #include <string>
31
- #include <type_traits>
32
- #include <utility>
33
- #include <vector>
34
-
35
- #include "gmock/gmock.h"
36
- #include "gtest/gtest.h"
37
- #include "absl/base/attributes.h"
38
- #include "absl/base/config.h"
39
- #include "absl/base/internal/endian.h"
40
- #include "absl/base/macros.h"
41
- #include "absl/base/no_destructor.h"
42
- #include "absl/base/options.h"
43
- #include "absl/container/fixed_array.h"
44
- #include "absl/functional/function_ref.h"
45
- #include "absl/hash/hash.h"
46
- #include "absl/hash/hash_testing.h"
47
- #include "absl/log/check.h"
48
- #include "absl/log/log.h"
49
- #include "absl/random/random.h"
50
- #include "absl/strings/cord_buffer.h"
51
- #include "absl/strings/cord_test_helpers.h"
52
- #include "absl/strings/cordz_test_helpers.h"
53
- #include "absl/strings/internal/cord_internal.h"
54
- #include "absl/strings/internal/cord_rep_crc.h"
55
- #include "absl/strings/internal/cord_rep_flat.h"
56
- #include "absl/strings/internal/cordz_statistics.h"
57
- #include "absl/strings/internal/cordz_update_tracker.h"
58
- #include "absl/strings/internal/string_constant.h"
59
- #include "absl/strings/match.h"
60
- #include "absl/strings/str_cat.h"
61
- #include "absl/strings/str_format.h"
62
- #include "absl/strings/string_view.h"
63
- #include "absl/types/compare.h"
64
- #include "absl/types/optional.h"
65
-
66
- // convenience local constants
67
- static constexpr auto FLAT = absl::cord_internal::FLAT;
68
- static constexpr auto MAX_FLAT_TAG = absl::cord_internal::MAX_FLAT_TAG;
69
-
70
- typedef std::mt19937_64 RandomEngine;
71
-
72
- using absl::cord_internal::CordRep;
73
- using absl::cord_internal::CordRepBtree;
74
- using absl::cord_internal::CordRepConcat;
75
- using absl::cord_internal::CordRepCrc;
76
- using absl::cord_internal::CordRepExternal;
77
- using absl::cord_internal::CordRepFlat;
78
- using absl::cord_internal::CordRepSubstring;
79
- using absl::cord_internal::CordzUpdateTracker;
80
- using absl::cord_internal::kFlatOverhead;
81
- using absl::cord_internal::kMaxFlatLength;
82
- using ::testing::ElementsAre;
83
- using ::testing::Le;
84
-
85
- static std::string RandomLowercaseString(RandomEngine* rng);
86
- static std::string RandomLowercaseString(RandomEngine* rng, size_t length);
87
-
88
- static int GetUniformRandomUpTo(RandomEngine* rng, int upper_bound) {
89
- if (upper_bound > 0) {
90
- std::uniform_int_distribution<int> uniform(0, upper_bound - 1);
91
- return uniform(*rng);
92
- } else {
93
- return 0;
94
- }
95
- }
96
-
97
- static size_t GetUniformRandomUpTo(RandomEngine* rng, size_t upper_bound) {
98
- if (upper_bound > 0) {
99
- std::uniform_int_distribution<size_t> uniform(0, upper_bound - 1);
100
- return uniform(*rng);
101
- } else {
102
- return 0;
103
- }
104
- }
105
-
106
- static int32_t GenerateSkewedRandom(RandomEngine* rng, int max_log) {
107
- const uint32_t base = (*rng)() % (max_log + 1);
108
- const uint32_t mask = ((base < 32) ? (1u << base) : 0u) - 1u;
109
- return (*rng)() & mask;
110
- }
111
-
112
- static std::string RandomLowercaseString(RandomEngine* rng) {
113
- int length;
114
- std::bernoulli_distribution one_in_1k(0.001);
115
- std::bernoulli_distribution one_in_10k(0.0001);
116
- // With low probability, make a large fragment
117
- if (one_in_10k(*rng)) {
118
- length = GetUniformRandomUpTo(rng, 1048576);
119
- } else if (one_in_1k(*rng)) {
120
- length = GetUniformRandomUpTo(rng, 10000);
121
- } else {
122
- length = GenerateSkewedRandom(rng, 10);
123
- }
124
- return RandomLowercaseString(rng, length);
125
- }
126
-
127
- static std::string RandomLowercaseString(RandomEngine* rng, size_t length) {
128
- std::string result(length, '\0');
129
- std::uniform_int_distribution<int> chars('a', 'z');
130
- std::generate(result.begin(), result.end(),
131
- [&]() { return static_cast<char>(chars(*rng)); });
132
- return result;
133
- }
134
-
135
- static void DoNothing(absl::string_view /* data */, void* /* arg */) {}
136
-
137
- static void DeleteExternalString(absl::string_view data, void* arg) {
138
- std::string* s = reinterpret_cast<std::string*>(arg);
139
- EXPECT_EQ(data, *s);
140
- delete s;
141
- }
142
-
143
- // Add "s" to *dst via `MakeCordFromExternal`
144
- static void AddExternalMemory(absl::string_view s, absl::Cord* dst) {
145
- std::string* str = new std::string(s.data(), s.size());
146
- dst->Append(absl::MakeCordFromExternal(*str, [str](absl::string_view data) {
147
- DeleteExternalString(data, str);
148
- }));
149
- }
150
-
151
- static void DumpGrowth() {
152
- absl::Cord str;
153
- for (int i = 0; i < 1000; i++) {
154
- char c = 'a' + i % 26;
155
- str.Append(absl::string_view(&c, 1));
156
- }
157
- }
158
-
159
- // Make a Cord with some number of fragments. Return the size (in bytes)
160
- // of the smallest fragment.
161
- static size_t AppendWithFragments(const std::string& s, RandomEngine* rng,
162
- absl::Cord* cord) {
163
- size_t j = 0;
164
- const size_t max_size = s.size() / 5; // Make approx. 10 fragments
165
- size_t min_size = max_size; // size of smallest fragment
166
- while (j < s.size()) {
167
- size_t N = 1 + GetUniformRandomUpTo(rng, max_size);
168
- if (N > (s.size() - j)) {
169
- N = s.size() - j;
170
- }
171
- if (N < min_size) {
172
- min_size = N;
173
- }
174
-
175
- std::bernoulli_distribution coin_flip(0.5);
176
- if (coin_flip(*rng)) {
177
- // Grow by adding an external-memory.
178
- AddExternalMemory(absl::string_view(s.data() + j, N), cord);
179
- } else {
180
- cord->Append(absl::string_view(s.data() + j, N));
181
- }
182
- j += N;
183
- }
184
- return min_size;
185
- }
186
-
187
- // Add an external memory that contains the specified std::string to cord
188
- static void AddNewStringBlock(const std::string& str, absl::Cord* dst) {
189
- char* data = new char[str.size()];
190
- memcpy(data, str.data(), str.size());
191
- dst->Append(absl::MakeCordFromExternal(
192
- absl::string_view(data, str.size()),
193
- [](absl::string_view s) { delete[] s.data(); }));
194
- }
195
-
196
- // Make a Cord out of many different types of nodes.
197
- static absl::Cord MakeComposite() {
198
- absl::Cord cord;
199
- cord.Append("the");
200
- AddExternalMemory(" quick brown", &cord);
201
- AddExternalMemory(" fox jumped", &cord);
202
-
203
- absl::Cord full(" over");
204
- AddExternalMemory(" the lazy", &full);
205
- AddNewStringBlock(" dog slept the whole day away", &full);
206
- absl::Cord substring = full.Subcord(0, 18);
207
-
208
- // Make substring long enough to defeat the copying fast path in Append.
209
- substring.Append(std::string(1000, '.'));
210
- cord.Append(substring);
211
- cord = cord.Subcord(0, cord.size() - 998); // Remove most of extra junk
212
-
213
- return cord;
214
- }
215
-
216
- namespace absl {
217
- ABSL_NAMESPACE_BEGIN
218
-
219
- class CordTestPeer {
220
- public:
221
- static void ForEachChunk(
222
- const Cord& c, absl::FunctionRef<void(absl::string_view)> callback) {
223
- c.ForEachChunk(callback);
224
- }
225
-
226
- static bool IsTree(const Cord& c) { return c.contents_.is_tree(); }
227
- static CordRep* Tree(const Cord& c) { return c.contents_.tree(); }
228
-
229
- static cord_internal::CordzInfo* GetCordzInfo(const Cord& c) {
230
- return c.contents_.cordz_info();
231
- }
232
-
233
- static Cord MakeSubstring(Cord src, size_t offset, size_t length) {
234
- CHECK(src.contents_.is_tree()) << "Can not be inlined";
235
- CHECK(!src.ExpectedChecksum().has_value()) << "Can not be hardened";
236
- Cord cord;
237
- auto* tree = cord_internal::SkipCrcNode(src.contents_.tree());
238
- auto* rep = CordRepSubstring::Create(CordRep::Ref(tree), offset, length);
239
- cord.contents_.EmplaceTree(rep, CordzUpdateTracker::kSubCord);
240
- return cord;
241
- }
242
- };
243
-
244
- ABSL_NAMESPACE_END
245
- } // namespace absl
246
-
247
-
248
-
249
- // The CordTest fixture runs all tests with and without expected CRCs being set
250
- // on the subject Cords.
251
- class CordTest : public testing::TestWithParam<bool /*useCrc*/> {
252
- public:
253
- // Returns true if test is running with Crc enabled.
254
- bool UseCrc() const { return GetParam(); }
255
- void MaybeHarden(absl::Cord& c) {
256
- if (UseCrc()) {
257
- c.SetExpectedChecksum(1);
258
- }
259
- }
260
- absl::Cord MaybeHardened(absl::Cord c) {
261
- MaybeHarden(c);
262
- return c;
263
- }
264
-
265
- // Returns human readable string representation of the test parameter.
266
- static std::string ToString(testing::TestParamInfo<bool> useCrc) {
267
- if (useCrc.param) {
268
- return "BtreeHardened";
269
- } else {
270
- return "Btree";
271
- }
272
- }
273
- };
274
-
275
- INSTANTIATE_TEST_SUITE_P(WithParam, CordTest, testing::Bool(),
276
- CordTest::ToString);
277
-
278
- TEST(CordRepFlat, AllFlatCapacities) {
279
- // Explicitly and redundantly assert built-in min/max limits
280
- static_assert(absl::cord_internal::kFlatOverhead < 32, "");
281
- static_assert(absl::cord_internal::kMinFlatSize == 32, "");
282
- static_assert(absl::cord_internal::kMaxLargeFlatSize == 256 << 10, "");
283
- EXPECT_EQ(absl::cord_internal::TagToAllocatedSize(FLAT), 32);
284
- EXPECT_EQ(absl::cord_internal::TagToAllocatedSize(MAX_FLAT_TAG), 256 << 10);
285
-
286
- // Verify all tags to map perfectly back and forth, and
287
- // that sizes are monotonically increasing.
288
- size_t last_size = 0;
289
- for (int tag = FLAT; tag <= MAX_FLAT_TAG; ++tag) {
290
- size_t size = absl::cord_internal::TagToAllocatedSize(tag);
291
- ASSERT_GT(size, last_size);
292
- ASSERT_EQ(absl::cord_internal::TagToAllocatedSize(tag), size);
293
- last_size = size;
294
- }
295
-
296
- // All flat size from 32 - 512 are 8 byte granularity
297
- for (size_t size = 32; size <= 512; size += 8) {
298
- ASSERT_EQ(absl::cord_internal::RoundUpForTag(size), size);
299
- uint8_t tag = absl::cord_internal::AllocatedSizeToTag(size);
300
- ASSERT_EQ(absl::cord_internal::TagToAllocatedSize(tag), size);
301
- }
302
-
303
- // All flat sizes from 512 - 8192 are 64 byte granularity
304
- for (size_t size = 512; size <= 8192; size += 64) {
305
- ASSERT_EQ(absl::cord_internal::RoundUpForTag(size), size);
306
- uint8_t tag = absl::cord_internal::AllocatedSizeToTag(size);
307
- ASSERT_EQ(absl::cord_internal::TagToAllocatedSize(tag), size);
308
- }
309
-
310
- // All flat sizes from 8KB to 256KB are 4KB granularity
311
- for (size_t size = 8192; size <= 256 * 1024; size += 4 * 1024) {
312
- ASSERT_EQ(absl::cord_internal::RoundUpForTag(size), size);
313
- uint8_t tag = absl::cord_internal::AllocatedSizeToTag(size);
314
- ASSERT_EQ(absl::cord_internal::TagToAllocatedSize(tag), size);
315
- }
316
- }
317
-
318
- TEST(CordRepFlat, MaxFlatSize) {
319
- CordRepFlat* flat = CordRepFlat::New(kMaxFlatLength);
320
- EXPECT_EQ(flat->Capacity(), kMaxFlatLength);
321
- CordRep::Unref(flat);
322
-
323
- flat = CordRepFlat::New(kMaxFlatLength * 4);
324
- EXPECT_EQ(flat->Capacity(), kMaxFlatLength);
325
- CordRep::Unref(flat);
326
- }
327
-
328
- TEST(CordRepFlat, MaxLargeFlatSize) {
329
- const size_t size = 256 * 1024 - kFlatOverhead;
330
- CordRepFlat* flat = CordRepFlat::New(CordRepFlat::Large(), size);
331
- EXPECT_GE(flat->Capacity(), size);
332
- CordRep::Unref(flat);
333
- }
334
-
335
- TEST(CordRepFlat, AllFlatSizes) {
336
- const size_t kMaxSize = 256 * 1024;
337
- for (size_t size = 32; size <= kMaxSize; size *=2) {
338
- const size_t length = size - kFlatOverhead - 1;
339
- CordRepFlat* flat = CordRepFlat::New(CordRepFlat::Large(), length);
340
- EXPECT_GE(flat->Capacity(), length);
341
- memset(flat->Data(), 0xCD, flat->Capacity());
342
- CordRep::Unref(flat);
343
- }
344
- }
345
-
346
- TEST_P(CordTest, AllFlatSizes) {
347
- using absl::strings_internal::CordTestAccess;
348
-
349
- for (size_t s = 0; s < CordTestAccess::MaxFlatLength(); s++) {
350
- // Make a string of length s.
351
- std::string src;
352
- while (src.size() < s) {
353
- src.push_back('a' + (src.size() % 26));
354
- }
355
-
356
- absl::Cord dst(src);
357
- MaybeHarden(dst);
358
- EXPECT_EQ(std::string(dst), src) << s;
359
- }
360
- }
361
-
362
- // We create a Cord at least 128GB in size using the fact that Cords can
363
- // internally reference-count; thus the Cord is enormous without actually
364
- // consuming very much memory.
365
- TEST_P(CordTest, GigabyteCordFromExternal) {
366
- const size_t one_gig = 1024U * 1024U * 1024U;
367
- size_t max_size = 2 * one_gig;
368
- if (sizeof(max_size) > 4) max_size = 128 * one_gig;
369
-
370
- size_t length = 128 * 1024;
371
- char* data = new char[length];
372
- absl::Cord from = absl::MakeCordFromExternal(
373
- absl::string_view(data, length),
374
- [](absl::string_view sv) { delete[] sv.data(); });
375
-
376
- // This loop may seem odd due to its combination of exponential doubling of
377
- // size and incremental size increases. We do it incrementally to be sure the
378
- // Cord will need rebalancing and will exercise code that, in the past, has
379
- // caused crashes in production. We grow exponentially so that the code will
380
- // execute in a reasonable amount of time.
381
- absl::Cord c;
382
- c.Append(from);
383
- while (c.size() < max_size) {
384
- c.Append(c);
385
- c.Append(from);
386
- c.Append(from);
387
- c.Append(from);
388
- c.Append(from);
389
- MaybeHarden(c);
390
- }
391
-
392
- for (int i = 0; i < 1024; ++i) {
393
- c.Append(from);
394
- }
395
- LOG(INFO) << "Made a Cord with " << c.size() << " bytes!";
396
- // Note: on a 32-bit build, this comes out to 2,818,048,000 bytes.
397
- // Note: on a 64-bit build, this comes out to 171,932,385,280 bytes.
398
- }
399
-
400
- static absl::Cord MakeExternalCord(int size) {
401
- char* buffer = new char[size];
402
- memset(buffer, 'x', size);
403
- absl::Cord cord;
404
- cord.Append(absl::MakeCordFromExternal(
405
- absl::string_view(buffer, size),
406
- [](absl::string_view s) { delete[] s.data(); }));
407
- return cord;
408
- }
409
-
410
- // Extern to fool clang that this is not constant. Needed to suppress
411
- // a warning of unsafe code we want to test.
412
- extern bool my_unique_true_boolean;
413
- bool my_unique_true_boolean = true;
414
-
415
- TEST_P(CordTest, Assignment) {
416
- absl::Cord x(absl::string_view("hi there"));
417
- absl::Cord y(x);
418
- MaybeHarden(y);
419
- ASSERT_EQ(x.ExpectedChecksum(), absl::nullopt);
420
- ASSERT_EQ(std::string(x), "hi there");
421
- ASSERT_EQ(std::string(y), "hi there");
422
- ASSERT_TRUE(x == y);
423
- ASSERT_TRUE(x <= y);
424
- ASSERT_TRUE(y <= x);
425
-
426
- x = absl::string_view("foo");
427
- ASSERT_EQ(std::string(x), "foo");
428
- ASSERT_EQ(std::string(y), "hi there");
429
- ASSERT_TRUE(x < y);
430
- ASSERT_TRUE(y > x);
431
- ASSERT_TRUE(x != y);
432
- ASSERT_TRUE(x <= y);
433
- ASSERT_TRUE(y >= x);
434
-
435
- x = "foo";
436
- ASSERT_EQ(x, "foo");
437
-
438
- // Test that going from inline rep to tree we don't leak memory.
439
- std::vector<std::pair<absl::string_view, absl::string_view>>
440
- test_string_pairs = {{"hi there", "foo"},
441
- {"loooooong coooooord", "short cord"},
442
- {"short cord", "loooooong coooooord"},
443
- {"loooooong coooooord1", "loooooong coooooord2"}};
444
- for (std::pair<absl::string_view, absl::string_view> test_strings :
445
- test_string_pairs) {
446
- absl::Cord tmp(test_strings.first);
447
- absl::Cord z(std::move(tmp));
448
- ASSERT_EQ(std::string(z), test_strings.first);
449
- tmp = test_strings.second;
450
- z = std::move(tmp);
451
- ASSERT_EQ(std::string(z), test_strings.second);
452
- }
453
- {
454
- // Test that self-move assignment doesn't crash/leak.
455
- // Do not write such code!
456
- absl::Cord my_small_cord("foo");
457
- absl::Cord my_big_cord("loooooong coooooord");
458
- // Bypass clang's warning on self move-assignment.
459
- absl::Cord* my_small_alias =
460
- my_unique_true_boolean ? &my_small_cord : &my_big_cord;
461
- absl::Cord* my_big_alias =
462
- !my_unique_true_boolean ? &my_small_cord : &my_big_cord;
463
-
464
- *my_small_alias = std::move(my_small_cord);
465
- *my_big_alias = std::move(my_big_cord);
466
- // my_small_cord and my_big_cord are in an unspecified but valid
467
- // state, and will be correctly destroyed here.
468
- }
469
- }
470
-
471
- TEST_P(CordTest, StartsEndsWith) {
472
- absl::Cord x(absl::string_view("abcde"));
473
- MaybeHarden(x);
474
- absl::Cord empty("");
475
-
476
- ASSERT_TRUE(x.StartsWith(absl::Cord("abcde")));
477
- ASSERT_TRUE(x.StartsWith(absl::Cord("abc")));
478
- ASSERT_TRUE(x.StartsWith(absl::Cord("")));
479
- ASSERT_TRUE(empty.StartsWith(absl::Cord("")));
480
- ASSERT_TRUE(x.EndsWith(absl::Cord("abcde")));
481
- ASSERT_TRUE(x.EndsWith(absl::Cord("cde")));
482
- ASSERT_TRUE(x.EndsWith(absl::Cord("")));
483
- ASSERT_TRUE(empty.EndsWith(absl::Cord("")));
484
-
485
- ASSERT_TRUE(!x.StartsWith(absl::Cord("xyz")));
486
- ASSERT_TRUE(!empty.StartsWith(absl::Cord("xyz")));
487
- ASSERT_TRUE(!x.EndsWith(absl::Cord("xyz")));
488
- ASSERT_TRUE(!empty.EndsWith(absl::Cord("xyz")));
489
-
490
- ASSERT_TRUE(x.StartsWith("abcde"));
491
- ASSERT_TRUE(x.StartsWith("abc"));
492
- ASSERT_TRUE(x.StartsWith(""));
493
- ASSERT_TRUE(empty.StartsWith(""));
494
- ASSERT_TRUE(x.EndsWith("abcde"));
495
- ASSERT_TRUE(x.EndsWith("cde"));
496
- ASSERT_TRUE(x.EndsWith(""));
497
- ASSERT_TRUE(empty.EndsWith(""));
498
-
499
- ASSERT_TRUE(!x.StartsWith("xyz"));
500
- ASSERT_TRUE(!empty.StartsWith("xyz"));
501
- ASSERT_TRUE(!x.EndsWith("xyz"));
502
- ASSERT_TRUE(!empty.EndsWith("xyz"));
503
- }
504
-
505
- TEST_P(CordTest, Contains) {
506
- auto flat_haystack = absl::Cord("this is a flat cord");
507
- auto fragmented_haystack = absl::MakeFragmentedCord(
508
- {"this", " ", "is", " ", "a", " ", "fragmented", " ", "cord"});
509
-
510
- EXPECT_TRUE(flat_haystack.Contains(""));
511
- EXPECT_TRUE(fragmented_haystack.Contains(""));
512
- EXPECT_TRUE(flat_haystack.Contains(absl::Cord("")));
513
- EXPECT_TRUE(fragmented_haystack.Contains(absl::Cord("")));
514
- EXPECT_TRUE(absl::Cord("").Contains(""));
515
- EXPECT_TRUE(absl::Cord("").Contains(absl::Cord("")));
516
- EXPECT_FALSE(absl::Cord("").Contains(flat_haystack));
517
- EXPECT_FALSE(absl::Cord("").Contains(fragmented_haystack));
518
-
519
- EXPECT_FALSE(flat_haystack.Contains("z"));
520
- EXPECT_FALSE(fragmented_haystack.Contains("z"));
521
- EXPECT_FALSE(flat_haystack.Contains(absl::Cord("z")));
522
- EXPECT_FALSE(fragmented_haystack.Contains(absl::Cord("z")));
523
-
524
- EXPECT_FALSE(flat_haystack.Contains("is an"));
525
- EXPECT_FALSE(fragmented_haystack.Contains("is an"));
526
- EXPECT_FALSE(flat_haystack.Contains(absl::Cord("is an")));
527
- EXPECT_FALSE(fragmented_haystack.Contains(absl::Cord("is an")));
528
- EXPECT_FALSE(
529
- flat_haystack.Contains(absl::MakeFragmentedCord({"is", " ", "an"})));
530
- EXPECT_FALSE(fragmented_haystack.Contains(
531
- absl::MakeFragmentedCord({"is", " ", "an"})));
532
-
533
- EXPECT_TRUE(flat_haystack.Contains("is a"));
534
- EXPECT_TRUE(fragmented_haystack.Contains("is a"));
535
- EXPECT_TRUE(flat_haystack.Contains(absl::Cord("is a")));
536
- EXPECT_TRUE(fragmented_haystack.Contains(absl::Cord("is a")));
537
- EXPECT_TRUE(
538
- flat_haystack.Contains(absl::MakeFragmentedCord({"is", " ", "a"})));
539
- EXPECT_TRUE(
540
- fragmented_haystack.Contains(absl::MakeFragmentedCord({"is", " ", "a"})));
541
- }
542
-
543
- TEST_P(CordTest, Find) {
544
- auto flat_haystack = absl::Cord("this is a flat cord");
545
- auto fragmented_haystack = absl::MakeFragmentedCord(
546
- {"this", " ", "is", " ", "a", " ", "fragmented", " ", "cord"});
547
- auto empty_haystack = absl::Cord("");
548
-
549
- EXPECT_EQ(flat_haystack.Find(""), flat_haystack.char_begin());
550
- EXPECT_EQ(fragmented_haystack.Find(""), fragmented_haystack.char_begin());
551
- EXPECT_EQ(flat_haystack.Find(absl::Cord("")), flat_haystack.char_begin());
552
- EXPECT_EQ(fragmented_haystack.Find(absl::Cord("")),
553
- fragmented_haystack.char_begin());
554
- EXPECT_EQ(empty_haystack.Find(""), empty_haystack.char_begin());
555
- EXPECT_EQ(empty_haystack.Find(absl::Cord("")), empty_haystack.char_begin());
556
- EXPECT_EQ(empty_haystack.Find(flat_haystack), empty_haystack.char_end());
557
- EXPECT_EQ(empty_haystack.Find(fragmented_haystack),
558
- empty_haystack.char_end());
559
-
560
- EXPECT_EQ(flat_haystack.Find("z"), flat_haystack.char_end());
561
- EXPECT_EQ(fragmented_haystack.Find("z"), fragmented_haystack.char_end());
562
- EXPECT_EQ(flat_haystack.Find(absl::Cord("z")), flat_haystack.char_end());
563
- EXPECT_EQ(fragmented_haystack.Find(absl::Cord("z")),
564
- fragmented_haystack.char_end());
565
-
566
- EXPECT_EQ(flat_haystack.Find("is an"), flat_haystack.char_end());
567
- EXPECT_EQ(fragmented_haystack.Find("is an"), fragmented_haystack.char_end());
568
- EXPECT_EQ(flat_haystack.Find(absl::Cord("is an")), flat_haystack.char_end());
569
- EXPECT_EQ(fragmented_haystack.Find(absl::Cord("is an")),
570
- fragmented_haystack.char_end());
571
- EXPECT_EQ(flat_haystack.Find(absl::MakeFragmentedCord({"is", " ", "an"})),
572
- flat_haystack.char_end());
573
- EXPECT_EQ(
574
- fragmented_haystack.Find(absl::MakeFragmentedCord({"is", " ", "an"})),
575
- fragmented_haystack.char_end());
576
-
577
- EXPECT_EQ(flat_haystack.Find("is a"),
578
- std::next(flat_haystack.char_begin(), 5));
579
- EXPECT_EQ(fragmented_haystack.Find("is a"),
580
- std::next(fragmented_haystack.char_begin(), 5));
581
- EXPECT_EQ(flat_haystack.Find(absl::Cord("is a")),
582
- std::next(flat_haystack.char_begin(), 5));
583
- EXPECT_EQ(fragmented_haystack.Find(absl::Cord("is a")),
584
- std::next(fragmented_haystack.char_begin(), 5));
585
- EXPECT_EQ(flat_haystack.Find(absl::MakeFragmentedCord({"is", " ", "a"})),
586
- std::next(flat_haystack.char_begin(), 5));
587
- EXPECT_EQ(
588
- fragmented_haystack.Find(absl::MakeFragmentedCord({"is", " ", "a"})),
589
- std::next(fragmented_haystack.char_begin(), 5));
590
- }
591
-
592
- TEST_P(CordTest, Subcord) {
593
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
594
- const std::string s = RandomLowercaseString(&rng, 1024);
595
-
596
- absl::Cord a;
597
- AppendWithFragments(s, &rng, &a);
598
- MaybeHarden(a);
599
- ASSERT_EQ(s, std::string(a));
600
-
601
- // Check subcords of a, from a variety of interesting points.
602
- std::set<size_t> positions;
603
- for (int i = 0; i <= 32; ++i) {
604
- positions.insert(i);
605
- positions.insert(i * 32 - 1);
606
- positions.insert(i * 32);
607
- positions.insert(i * 32 + 1);
608
- positions.insert(a.size() - i);
609
- }
610
- positions.insert(237);
611
- positions.insert(732);
612
- for (size_t pos : positions) {
613
- if (pos > a.size()) continue;
614
- for (size_t end_pos : positions) {
615
- if (end_pos < pos || end_pos > a.size()) continue;
616
- absl::Cord sa = a.Subcord(pos, end_pos - pos);
617
- ASSERT_EQ(absl::string_view(s).substr(pos, end_pos - pos),
618
- std::string(sa))
619
- << a;
620
- if (pos != 0 || end_pos != a.size()) {
621
- ASSERT_EQ(sa.ExpectedChecksum(), absl::nullopt);
622
- }
623
- }
624
- }
625
-
626
- // Do the same thing for an inline cord.
627
- const std::string sh = "short";
628
- absl::Cord c(sh);
629
- for (size_t pos = 0; pos <= sh.size(); ++pos) {
630
- for (size_t n = 0; n <= sh.size() - pos; ++n) {
631
- absl::Cord sc = c.Subcord(pos, n);
632
- ASSERT_EQ(sh.substr(pos, n), std::string(sc)) << c;
633
- }
634
- }
635
-
636
- // Check subcords of subcords.
637
- absl::Cord sa = a.Subcord(0, a.size());
638
- std::string ss = s.substr(0, s.size());
639
- while (sa.size() > 1) {
640
- sa = sa.Subcord(1, sa.size() - 2);
641
- ss = ss.substr(1, ss.size() - 2);
642
- ASSERT_EQ(ss, std::string(sa)) << a;
643
- if (HasFailure()) break; // halt cascade
644
- }
645
-
646
- // It is OK to ask for too much.
647
- sa = a.Subcord(0, a.size() + 1);
648
- EXPECT_EQ(s, std::string(sa));
649
-
650
- // It is OK to ask for something beyond the end.
651
- sa = a.Subcord(a.size() + 1, 0);
652
- EXPECT_TRUE(sa.empty());
653
- sa = a.Subcord(a.size() + 1, 1);
654
- EXPECT_TRUE(sa.empty());
655
- }
656
-
657
- TEST_P(CordTest, Swap) {
658
- absl::string_view a("Dexter");
659
- absl::string_view b("Mandark");
660
- absl::Cord x(a);
661
- absl::Cord y(b);
662
- MaybeHarden(x);
663
- swap(x, y);
664
- if (UseCrc()) {
665
- ASSERT_EQ(x.ExpectedChecksum(), absl::nullopt);
666
- ASSERT_EQ(y.ExpectedChecksum(), 1);
667
- }
668
- ASSERT_EQ(x, absl::Cord(b));
669
- ASSERT_EQ(y, absl::Cord(a));
670
- x.swap(y);
671
- if (UseCrc()) {
672
- ASSERT_EQ(x.ExpectedChecksum(), 1);
673
- ASSERT_EQ(y.ExpectedChecksum(), absl::nullopt);
674
- }
675
- ASSERT_EQ(x, absl::Cord(a));
676
- ASSERT_EQ(y, absl::Cord(b));
677
- }
678
-
679
- static void VerifyCopyToString(const absl::Cord& cord) {
680
- std::string initially_empty;
681
- absl::CopyCordToString(cord, &initially_empty);
682
- EXPECT_EQ(initially_empty, cord);
683
-
684
- constexpr size_t kInitialLength = 1024;
685
- std::string has_initial_contents(kInitialLength, 'x');
686
- const char* address_before_copy = has_initial_contents.data();
687
- absl::CopyCordToString(cord, &has_initial_contents);
688
- EXPECT_EQ(has_initial_contents, cord);
689
-
690
- if (cord.size() <= kInitialLength) {
691
- EXPECT_EQ(has_initial_contents.data(), address_before_copy)
692
- << "CopyCordToString allocated new string storage; "
693
- "has_initial_contents = \""
694
- << has_initial_contents << "\"";
695
- }
696
- }
697
-
698
- TEST_P(CordTest, CopyToString) {
699
- VerifyCopyToString(absl::Cord()); // empty cords cannot carry CRCs
700
- VerifyCopyToString(MaybeHardened(absl::Cord("small cord")));
701
- VerifyCopyToString(MaybeHardened(
702
- absl::MakeFragmentedCord({"fragmented ", "cord ", "to ", "test ",
703
- "copying ", "to ", "a ", "string."})));
704
- }
705
-
706
- static void VerifyAppendCordToString(const absl::Cord& cord) {
707
- std::string initially_empty;
708
- absl::AppendCordToString(cord, &initially_empty);
709
- EXPECT_EQ(initially_empty, cord);
710
-
711
- const absl::string_view kInitialContents = "initial contents.";
712
- std::string expected_after_append =
713
- absl::StrCat(kInitialContents, std::string(cord));
714
-
715
- std::string no_reserve(kInitialContents);
716
- absl::AppendCordToString(cord, &no_reserve);
717
- EXPECT_EQ(no_reserve, expected_after_append);
718
-
719
- std::string has_reserved_capacity(kInitialContents);
720
- has_reserved_capacity.reserve(has_reserved_capacity.size() + cord.size());
721
- const char* address_before_copy = has_reserved_capacity.data();
722
- absl::AppendCordToString(cord, &has_reserved_capacity);
723
- EXPECT_EQ(has_reserved_capacity, expected_after_append);
724
- EXPECT_EQ(has_reserved_capacity.data(), address_before_copy)
725
- << "AppendCordToString allocated new string storage; "
726
- "has_reserved_capacity = \""
727
- << has_reserved_capacity << "\"";
728
- }
729
-
730
- TEST_P(CordTest, AppendToString) {
731
- VerifyAppendCordToString(absl::Cord()); // empty cords cannot carry CRCs
732
- VerifyAppendCordToString(MaybeHardened(absl::Cord("small cord")));
733
- VerifyAppendCordToString(MaybeHardened(
734
- absl::MakeFragmentedCord({"fragmented ", "cord ", "to ", "test ",
735
- "appending ", "to ", "a ", "string."})));
736
- }
737
-
738
- TEST_P(CordTest, AppendEmptyBuffer) {
739
- absl::Cord cord;
740
- cord.Append(absl::CordBuffer());
741
- cord.Append(absl::CordBuffer::CreateWithDefaultLimit(2000));
742
- }
743
-
744
- TEST_P(CordTest, AppendEmptyBufferToFlat) {
745
- absl::Cord cord(std::string(2000, 'x'));
746
- cord.Append(absl::CordBuffer());
747
- cord.Append(absl::CordBuffer::CreateWithDefaultLimit(2000));
748
- }
749
-
750
- TEST_P(CordTest, AppendEmptyBufferToTree) {
751
- absl::Cord cord(std::string(2000, 'x'));
752
- cord.Append(std::string(2000, 'y'));
753
- cord.Append(absl::CordBuffer());
754
- cord.Append(absl::CordBuffer::CreateWithDefaultLimit(2000));
755
- }
756
-
757
- TEST_P(CordTest, AppendSmallBuffer) {
758
- absl::Cord cord;
759
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(3);
760
- ASSERT_THAT(buffer.capacity(), Le(15));
761
- memcpy(buffer.data(), "Abc", 3);
762
- buffer.SetLength(3);
763
- cord.Append(std::move(buffer));
764
- EXPECT_EQ(buffer.length(), 0); // NOLINT
765
- EXPECT_GT(buffer.capacity(), 0); // NOLINT
766
-
767
- buffer = absl::CordBuffer::CreateWithDefaultLimit(3);
768
- memcpy(buffer.data(), "defgh", 5);
769
- buffer.SetLength(5);
770
- cord.Append(std::move(buffer));
771
- EXPECT_EQ(buffer.length(), 0); // NOLINT
772
- EXPECT_GT(buffer.capacity(), 0); // NOLINT
773
-
774
- EXPECT_THAT(cord.Chunks(), ElementsAre("Abcdefgh"));
775
- }
776
-
777
- TEST_P(CordTest, AppendAndPrependBufferArePrecise) {
778
- // Create a cord large enough to force 40KB flats.
779
- std::string test_data(absl::cord_internal::kMaxFlatLength * 10, 'x');
780
- absl::Cord cord1(test_data);
781
- absl::Cord cord2(test_data);
782
- const size_t size1 = cord1.EstimatedMemoryUsage();
783
- const size_t size2 = cord2.EstimatedMemoryUsage();
784
-
785
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(3);
786
- memcpy(buffer.data(), "Abc", 3);
787
- buffer.SetLength(3);
788
- cord1.Append(std::move(buffer));
789
-
790
- buffer = absl::CordBuffer::CreateWithDefaultLimit(3);
791
- memcpy(buffer.data(), "Abc", 3);
792
- buffer.SetLength(3);
793
- cord2.Prepend(std::move(buffer));
794
-
795
- #ifndef NDEBUG
796
- // Allow 32 bytes new CordRepFlat, and 128 bytes for 'glue nodes'
797
- constexpr size_t kMaxDelta = 128 + 32;
798
- #else
799
- // Allow 256 bytes extra for 'allocation debug overhead'
800
- constexpr size_t kMaxDelta = 128 + 32 + 256;
801
- #endif
802
-
803
- EXPECT_LE(cord1.EstimatedMemoryUsage() - size1, kMaxDelta);
804
- EXPECT_LE(cord2.EstimatedMemoryUsage() - size2, kMaxDelta);
805
-
806
- EXPECT_EQ(cord1, absl::StrCat(test_data, "Abc"));
807
- EXPECT_EQ(cord2, absl::StrCat("Abc", test_data));
808
- }
809
-
810
- TEST_P(CordTest, PrependSmallBuffer) {
811
- absl::Cord cord;
812
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(3);
813
- ASSERT_THAT(buffer.capacity(), Le(15));
814
- memcpy(buffer.data(), "Abc", 3);
815
- buffer.SetLength(3);
816
- cord.Prepend(std::move(buffer));
817
- EXPECT_EQ(buffer.length(), 0); // NOLINT
818
- EXPECT_GT(buffer.capacity(), 0); // NOLINT
819
-
820
- buffer = absl::CordBuffer::CreateWithDefaultLimit(3);
821
- memcpy(buffer.data(), "defgh", 5);
822
- buffer.SetLength(5);
823
- cord.Prepend(std::move(buffer));
824
- EXPECT_EQ(buffer.length(), 0); // NOLINT
825
- EXPECT_GT(buffer.capacity(), 0); // NOLINT
826
-
827
- EXPECT_THAT(cord.Chunks(), ElementsAre("defghAbc"));
828
- }
829
-
830
- TEST_P(CordTest, AppendLargeBuffer) {
831
- absl::Cord cord;
832
-
833
- std::string s1(700, '1');
834
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(s1.size());
835
- memcpy(buffer.data(), s1.data(), s1.size());
836
- buffer.SetLength(s1.size());
837
- cord.Append(std::move(buffer));
838
- EXPECT_EQ(buffer.length(), 0); // NOLINT
839
- EXPECT_GT(buffer.capacity(), 0); // NOLINT
840
-
841
- std::string s2(1000, '2');
842
- buffer = absl::CordBuffer::CreateWithDefaultLimit(s2.size());
843
- memcpy(buffer.data(), s2.data(), s2.size());
844
- buffer.SetLength(s2.size());
845
- cord.Append(std::move(buffer));
846
- EXPECT_EQ(buffer.length(), 0); // NOLINT
847
- EXPECT_GT(buffer.capacity(), 0); // NOLINT
848
-
849
- EXPECT_THAT(cord.Chunks(), ElementsAre(s1, s2));
850
- }
851
-
852
- TEST_P(CordTest, PrependLargeBuffer) {
853
- absl::Cord cord;
854
-
855
- std::string s1(700, '1');
856
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(s1.size());
857
- memcpy(buffer.data(), s1.data(), s1.size());
858
- buffer.SetLength(s1.size());
859
- cord.Prepend(std::move(buffer));
860
- EXPECT_EQ(buffer.length(), 0); // NOLINT
861
- EXPECT_GT(buffer.capacity(), 0); // NOLINT
862
-
863
- std::string s2(1000, '2');
864
- buffer = absl::CordBuffer::CreateWithDefaultLimit(s2.size());
865
- memcpy(buffer.data(), s2.data(), s2.size());
866
- buffer.SetLength(s2.size());
867
- cord.Prepend(std::move(buffer));
868
- EXPECT_EQ(buffer.length(), 0); // NOLINT
869
- EXPECT_GT(buffer.capacity(), 0); // NOLINT
870
-
871
- EXPECT_THAT(cord.Chunks(), ElementsAre(s2, s1));
872
- }
873
-
874
- class CordAppendBufferTest : public testing::TestWithParam<bool> {
875
- public:
876
- size_t is_default() const { return GetParam(); }
877
-
878
- // Returns human readable string representation of the test parameter.
879
- static std::string ToString(testing::TestParamInfo<bool> param) {
880
- return param.param ? "DefaultLimit" : "CustomLimit";
881
- }
882
-
883
- size_t limit() const {
884
- return is_default() ? absl::CordBuffer::kDefaultLimit
885
- : absl::CordBuffer::kCustomLimit;
886
- }
887
-
888
- size_t maximum_payload() const {
889
- return is_default() ? absl::CordBuffer::MaximumPayload()
890
- : absl::CordBuffer::MaximumPayload(limit());
891
- }
892
-
893
- absl::CordBuffer GetAppendBuffer(absl::Cord& cord, size_t capacity,
894
- size_t min_capacity = 16) {
895
- return is_default()
896
- ? cord.GetAppendBuffer(capacity, min_capacity)
897
- : cord.GetCustomAppendBuffer(limit(), capacity, min_capacity);
898
- }
899
- };
900
-
901
- INSTANTIATE_TEST_SUITE_P(WithParam, CordAppendBufferTest, testing::Bool(),
902
- CordAppendBufferTest::ToString);
903
-
904
- TEST_P(CordAppendBufferTest, GetAppendBufferOnEmptyCord) {
905
- absl::Cord cord;
906
- absl::CordBuffer buffer = GetAppendBuffer(cord, 1000);
907
- EXPECT_GE(buffer.capacity(), 1000);
908
- EXPECT_EQ(buffer.length(), 0);
909
- }
910
-
911
- TEST_P(CordAppendBufferTest, GetAppendBufferOnInlinedCord) {
912
- static constexpr int kInlinedSize = sizeof(absl::CordBuffer) - 1;
913
- for (int size : {6, kInlinedSize - 3, kInlinedSize - 2, 1000}) {
914
- absl::Cord cord("Abc");
915
- absl::CordBuffer buffer = GetAppendBuffer(cord, size, 1);
916
- EXPECT_GE(buffer.capacity(), 3 + size);
917
- EXPECT_EQ(buffer.length(), 3);
918
- EXPECT_EQ(absl::string_view(buffer.data(), buffer.length()), "Abc");
919
- EXPECT_TRUE(cord.empty());
920
- }
921
- }
922
-
923
- TEST_P(CordAppendBufferTest, GetAppendBufferOnInlinedCordCapacityCloseToMax) {
924
- // Cover the use case where we have a non empty inlined cord with some size
925
- // 'n', and ask for something like 'uint64_max - k', assuming internal logic
926
- // could overflow on 'uint64_max - k + size', and return a valid, but
927
- // inefficiently smaller buffer if it would provide is the max allowed size.
928
- for (size_t dist_from_max = 0; dist_from_max <= 4; ++dist_from_max) {
929
- absl::Cord cord("Abc");
930
- size_t size = std::numeric_limits<size_t>::max() - dist_from_max;
931
- absl::CordBuffer buffer = GetAppendBuffer(cord, size, 1);
932
- EXPECT_GE(buffer.capacity(), maximum_payload());
933
- EXPECT_EQ(buffer.length(), 3);
934
- EXPECT_EQ(absl::string_view(buffer.data(), buffer.length()), "Abc");
935
- EXPECT_TRUE(cord.empty());
936
- }
937
- }
938
-
939
- TEST_P(CordAppendBufferTest, GetAppendBufferOnFlat) {
940
- // Create a cord with a single flat and extra capacity
941
- absl::Cord cord;
942
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(500);
943
- const size_t expected_capacity = buffer.capacity();
944
- buffer.SetLength(3);
945
- memcpy(buffer.data(), "Abc", 3);
946
- cord.Append(std::move(buffer));
947
-
948
- buffer = GetAppendBuffer(cord, 6);
949
- EXPECT_EQ(buffer.capacity(), expected_capacity);
950
- EXPECT_EQ(buffer.length(), 3);
951
- EXPECT_EQ(absl::string_view(buffer.data(), buffer.length()), "Abc");
952
- EXPECT_TRUE(cord.empty());
953
- }
954
-
955
- TEST_P(CordAppendBufferTest, GetAppendBufferOnFlatWithoutMinCapacity) {
956
- // Create a cord with a single flat and extra capacity
957
- absl::Cord cord;
958
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(500);
959
- buffer.SetLength(30);
960
- memset(buffer.data(), 'x', 30);
961
- cord.Append(std::move(buffer));
962
-
963
- buffer = GetAppendBuffer(cord, 1000, 900);
964
- EXPECT_GE(buffer.capacity(), 1000);
965
- EXPECT_EQ(buffer.length(), 0);
966
- EXPECT_EQ(cord, std::string(30, 'x'));
967
- }
968
-
969
- TEST_P(CordAppendBufferTest, GetAppendBufferOnTree) {
970
- RandomEngine rng;
971
- for (int num_flats : {2, 3, 100}) {
972
- // Create a cord with `num_flats` flats and extra capacity
973
- absl::Cord cord;
974
- std::string prefix;
975
- std::string last;
976
- for (int i = 0; i < num_flats - 1; ++i) {
977
- prefix += last;
978
- last = RandomLowercaseString(&rng, 10);
979
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(500);
980
- buffer.SetLength(10);
981
- memcpy(buffer.data(), last.data(), 10);
982
- cord.Append(std::move(buffer));
983
- }
984
- absl::CordBuffer buffer = GetAppendBuffer(cord, 6);
985
- EXPECT_GE(buffer.capacity(), 500);
986
- EXPECT_EQ(buffer.length(), 10);
987
- EXPECT_EQ(absl::string_view(buffer.data(), buffer.length()), last);
988
- EXPECT_EQ(cord, prefix);
989
- }
990
- }
991
-
992
- TEST_P(CordAppendBufferTest, GetAppendBufferOnTreeWithoutMinCapacity) {
993
- absl::Cord cord;
994
- for (int i = 0; i < 2; ++i) {
995
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(500);
996
- buffer.SetLength(3);
997
- memcpy(buffer.data(), i ? "def" : "Abc", 3);
998
- cord.Append(std::move(buffer));
999
- }
1000
- absl::CordBuffer buffer = GetAppendBuffer(cord, 1000, 900);
1001
- EXPECT_GE(buffer.capacity(), 1000);
1002
- EXPECT_EQ(buffer.length(), 0);
1003
- EXPECT_EQ(cord, "Abcdef");
1004
- }
1005
-
1006
- TEST_P(CordAppendBufferTest, GetAppendBufferOnSubstring) {
1007
- // Create a large cord with a single flat and some extra capacity
1008
- absl::Cord cord;
1009
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(500);
1010
- buffer.SetLength(450);
1011
- memset(buffer.data(), 'x', 450);
1012
- cord.Append(std::move(buffer));
1013
- cord.RemovePrefix(1);
1014
-
1015
- // Deny on substring
1016
- buffer = GetAppendBuffer(cord, 6);
1017
- EXPECT_EQ(buffer.length(), 0);
1018
- EXPECT_EQ(cord, std::string(449, 'x'));
1019
- }
1020
-
1021
- TEST_P(CordAppendBufferTest, GetAppendBufferOnSharedCord) {
1022
- // Create a shared cord with a single flat and extra capacity
1023
- absl::Cord cord;
1024
- absl::CordBuffer buffer = absl::CordBuffer::CreateWithDefaultLimit(500);
1025
- buffer.SetLength(3);
1026
- memcpy(buffer.data(), "Abc", 3);
1027
- cord.Append(std::move(buffer));
1028
- absl::Cord shared_cord = cord;
1029
-
1030
- // Deny on flat
1031
- buffer = GetAppendBuffer(cord, 6);
1032
- EXPECT_EQ(buffer.length(), 0);
1033
- EXPECT_EQ(cord, "Abc");
1034
-
1035
- buffer = absl::CordBuffer::CreateWithDefaultLimit(500);
1036
- buffer.SetLength(3);
1037
- memcpy(buffer.data(), "def", 3);
1038
- cord.Append(std::move(buffer));
1039
- shared_cord = cord;
1040
-
1041
- // Deny on tree
1042
- buffer = GetAppendBuffer(cord, 6);
1043
- EXPECT_EQ(buffer.length(), 0);
1044
- EXPECT_EQ(cord, "Abcdef");
1045
- }
1046
-
1047
- TEST_P(CordTest, TryFlatEmpty) {
1048
- absl::Cord c;
1049
- EXPECT_EQ(c.TryFlat(), "");
1050
- }
1051
-
1052
- TEST_P(CordTest, TryFlatFlat) {
1053
- absl::Cord c("hello");
1054
- MaybeHarden(c);
1055
- EXPECT_EQ(c.TryFlat(), "hello");
1056
- }
1057
-
1058
- TEST_P(CordTest, TryFlatSubstrInlined) {
1059
- absl::Cord c("hello");
1060
- c.RemovePrefix(1);
1061
- MaybeHarden(c);
1062
- EXPECT_EQ(c.TryFlat(), "ello");
1063
- }
1064
-
1065
- TEST_P(CordTest, TryFlatSubstrFlat) {
1066
- absl::Cord c("longer than 15 bytes");
1067
- absl::Cord sub = absl::CordTestPeer::MakeSubstring(c, 1, c.size() - 1);
1068
- MaybeHarden(sub);
1069
- EXPECT_EQ(sub.TryFlat(), "onger than 15 bytes");
1070
- }
1071
-
1072
- TEST_P(CordTest, TryFlatConcat) {
1073
- absl::Cord c = absl::MakeFragmentedCord({"hel", "lo"});
1074
- MaybeHarden(c);
1075
- EXPECT_EQ(c.TryFlat(), absl::nullopt);
1076
- }
1077
-
1078
- TEST_P(CordTest, TryFlatExternal) {
1079
- absl::Cord c = absl::MakeCordFromExternal("hell", [](absl::string_view) {});
1080
- MaybeHarden(c);
1081
- EXPECT_EQ(c.TryFlat(), "hell");
1082
- }
1083
-
1084
- TEST_P(CordTest, TryFlatSubstrExternal) {
1085
- absl::Cord c = absl::MakeCordFromExternal("hell", [](absl::string_view) {});
1086
- absl::Cord sub = absl::CordTestPeer::MakeSubstring(c, 1, c.size() - 1);
1087
- MaybeHarden(sub);
1088
- EXPECT_EQ(sub.TryFlat(), "ell");
1089
- }
1090
-
1091
- TEST_P(CordTest, TryFlatCommonlyAssumedInvariants) {
1092
- // The behavior tested below is not part of the API contract of Cord, but it's
1093
- // something we intend to be true in our current implementation. This test
1094
- // exists to detect and prevent accidental breakage of the implementation.
1095
- absl::string_view fragments[] = {"A fragmented test",
1096
- " cord",
1097
- " to test subcords",
1098
- " of ",
1099
- "a",
1100
- " cord for",
1101
- " each chunk "
1102
- "returned by the ",
1103
- "iterator"};
1104
- absl::Cord c = absl::MakeFragmentedCord(fragments);
1105
- MaybeHarden(c);
1106
- int fragment = 0;
1107
- int offset = 0;
1108
- absl::Cord::CharIterator itc = c.char_begin();
1109
- for (absl::string_view sv : c.Chunks()) {
1110
- absl::string_view expected = fragments[fragment];
1111
- absl::Cord subcord1 = c.Subcord(offset, sv.length());
1112
- absl::Cord subcord2 = absl::Cord::AdvanceAndRead(&itc, sv.size());
1113
- EXPECT_EQ(subcord1.TryFlat(), expected);
1114
- EXPECT_EQ(subcord2.TryFlat(), expected);
1115
- ++fragment;
1116
- offset += sv.length();
1117
- }
1118
- }
1119
-
1120
- static bool IsFlat(const absl::Cord& c) {
1121
- return c.chunk_begin() == c.chunk_end() || ++c.chunk_begin() == c.chunk_end();
1122
- }
1123
-
1124
- static void VerifyFlatten(absl::Cord c) {
1125
- std::string old_contents(c);
1126
- absl::string_view old_flat;
1127
- bool already_flat_and_non_empty = IsFlat(c) && !c.empty();
1128
- if (already_flat_and_non_empty) {
1129
- old_flat = *c.chunk_begin();
1130
- }
1131
- absl::string_view new_flat = c.Flatten();
1132
-
1133
- // Verify that the contents of the flattened Cord are correct.
1134
- EXPECT_EQ(new_flat, old_contents);
1135
- EXPECT_EQ(std::string(c), old_contents);
1136
-
1137
- // If the Cord contained data and was already flat, verify that the data
1138
- // wasn't copied.
1139
- if (already_flat_and_non_empty) {
1140
- EXPECT_EQ(old_flat.data(), new_flat.data())
1141
- << "Allocated new memory even though the Cord was already flat.";
1142
- }
1143
-
1144
- // Verify that the flattened Cord is in fact flat.
1145
- EXPECT_TRUE(IsFlat(c));
1146
- }
1147
-
1148
- TEST_P(CordTest, Flatten) {
1149
- VerifyFlatten(absl::Cord());
1150
- VerifyFlatten(MaybeHardened(absl::Cord("small cord")));
1151
- VerifyFlatten(
1152
- MaybeHardened(absl::Cord("larger than small buffer optimization")));
1153
- VerifyFlatten(MaybeHardened(
1154
- absl::MakeFragmentedCord({"small ", "fragmented ", "cord"})));
1155
-
1156
- // Test with a cord that is longer than the largest flat buffer
1157
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
1158
- VerifyFlatten(MaybeHardened(absl::Cord(RandomLowercaseString(&rng, 8192))));
1159
- }
1160
-
1161
- // Test data
1162
- namespace {
1163
- class TestData {
1164
- private:
1165
- std::vector<std::string> data_;
1166
-
1167
- // Return a std::string of the specified length.
1168
- static std::string MakeString(int length) {
1169
- std::string result;
1170
- char buf[30];
1171
- snprintf(buf, sizeof(buf), "(%d)", length);
1172
- while (result.size() < length) {
1173
- result += buf;
1174
- }
1175
- result.resize(length);
1176
- return result;
1177
- }
1178
-
1179
- public:
1180
- TestData() {
1181
- // short strings increasing in length by one
1182
- for (int i = 0; i < 30; i++) {
1183
- data_.push_back(MakeString(i));
1184
- }
1185
-
1186
- // strings around half kMaxFlatLength
1187
- static const int kMaxFlatLength = 4096 - 9;
1188
- static const int kHalf = kMaxFlatLength / 2;
1189
-
1190
- for (int i = -10; i <= +10; i++) {
1191
- data_.push_back(MakeString(kHalf + i));
1192
- }
1193
-
1194
- for (int i = -10; i <= +10; i++) {
1195
- data_.push_back(MakeString(kMaxFlatLength + i));
1196
- }
1197
- }
1198
-
1199
- size_t size() const { return data_.size(); }
1200
- const std::string& data(size_t i) const { return data_[i]; }
1201
- };
1202
- } // namespace
1203
-
1204
- TEST_P(CordTest, MultipleLengths) {
1205
- TestData d;
1206
- for (size_t i = 0; i < d.size(); i++) {
1207
- std::string a = d.data(i);
1208
-
1209
- { // Construct from Cord
1210
- absl::Cord tmp(a);
1211
- absl::Cord x(tmp);
1212
- MaybeHarden(x);
1213
- EXPECT_EQ(a, std::string(x)) << "'" << a << "'";
1214
- }
1215
-
1216
- { // Construct from absl::string_view
1217
- absl::Cord x(a);
1218
- MaybeHarden(x);
1219
- EXPECT_EQ(a, std::string(x)) << "'" << a << "'";
1220
- }
1221
-
1222
- { // Append cord to self
1223
- absl::Cord self(a);
1224
- MaybeHarden(self);
1225
- self.Append(self);
1226
- EXPECT_EQ(a + a, std::string(self)) << "'" << a << "' + '" << a << "'";
1227
- }
1228
-
1229
- { // Prepend cord to self
1230
- absl::Cord self(a);
1231
- MaybeHarden(self);
1232
- self.Prepend(self);
1233
- EXPECT_EQ(a + a, std::string(self)) << "'" << a << "' + '" << a << "'";
1234
- }
1235
-
1236
- // Try to append/prepend others
1237
- for (size_t j = 0; j < d.size(); j++) {
1238
- std::string b = d.data(j);
1239
-
1240
- { // CopyFrom Cord
1241
- absl::Cord x(a);
1242
- absl::Cord y(b);
1243
- MaybeHarden(x);
1244
- x = y;
1245
- EXPECT_EQ(b, std::string(x)) << "'" << a << "' + '" << b << "'";
1246
- }
1247
-
1248
- { // CopyFrom absl::string_view
1249
- absl::Cord x(a);
1250
- MaybeHarden(x);
1251
- x = b;
1252
- EXPECT_EQ(b, std::string(x)) << "'" << a << "' + '" << b << "'";
1253
- }
1254
-
1255
- { // Cord::Append(Cord)
1256
- absl::Cord x(a);
1257
- absl::Cord y(b);
1258
- MaybeHarden(x);
1259
- x.Append(y);
1260
- EXPECT_EQ(a + b, std::string(x)) << "'" << a << "' + '" << b << "'";
1261
- }
1262
-
1263
- { // Cord::Append(absl::string_view)
1264
- absl::Cord x(a);
1265
- MaybeHarden(x);
1266
- x.Append(b);
1267
- EXPECT_EQ(a + b, std::string(x)) << "'" << a << "' + '" << b << "'";
1268
- }
1269
-
1270
- { // Cord::Prepend(Cord)
1271
- absl::Cord x(a);
1272
- absl::Cord y(b);
1273
- MaybeHarden(x);
1274
- x.Prepend(y);
1275
- EXPECT_EQ(b + a, std::string(x)) << "'" << b << "' + '" << a << "'";
1276
- }
1277
-
1278
- { // Cord::Prepend(absl::string_view)
1279
- absl::Cord x(a);
1280
- MaybeHarden(x);
1281
- x.Prepend(b);
1282
- EXPECT_EQ(b + a, std::string(x)) << "'" << b << "' + '" << a << "'";
1283
- }
1284
- }
1285
- }
1286
- }
1287
-
1288
- namespace {
1289
-
1290
- TEST_P(CordTest, RemoveSuffixWithExternalOrSubstring) {
1291
- absl::Cord cord = absl::MakeCordFromExternal(
1292
- "foo bar baz", [](absl::string_view s) { DoNothing(s, nullptr); });
1293
- EXPECT_EQ("foo bar baz", std::string(cord));
1294
-
1295
- MaybeHarden(cord);
1296
-
1297
- // This RemoveSuffix() will wrap the EXTERNAL node in a SUBSTRING node.
1298
- cord.RemoveSuffix(4);
1299
- EXPECT_EQ("foo bar", std::string(cord));
1300
-
1301
- MaybeHarden(cord);
1302
-
1303
- // This RemoveSuffix() will adjust the SUBSTRING node in-place.
1304
- cord.RemoveSuffix(4);
1305
- EXPECT_EQ("foo", std::string(cord));
1306
- }
1307
-
1308
- TEST_P(CordTest, RemoveSuffixMakesZeroLengthNode) {
1309
- absl::Cord c;
1310
- c.Append(absl::Cord(std::string(100, 'x')));
1311
- absl::Cord other_ref = c; // Prevent inplace appends
1312
- EXPECT_THAT(other_ref, testing::Eq(c));
1313
- MaybeHarden(c);
1314
- c.Append(absl::Cord(std::string(200, 'y')));
1315
- c.RemoveSuffix(200);
1316
- EXPECT_EQ(std::string(100, 'x'), std::string(c));
1317
- }
1318
-
1319
- } // namespace
1320
-
1321
- // CordSpliceTest contributed by hendrie.
1322
- namespace {
1323
-
1324
- // Create a cord with an external memory block filled with 'z'
1325
- absl::Cord CordWithZedBlock(size_t size) {
1326
- char* data = new char[size];
1327
- if (size > 0) {
1328
- memset(data, 'z', size);
1329
- }
1330
- absl::Cord cord = absl::MakeCordFromExternal(
1331
- absl::string_view(data, size),
1332
- [](absl::string_view s) { delete[] s.data(); });
1333
- return cord;
1334
- }
1335
-
1336
- // Establish that ZedBlock does what we think it does.
1337
- TEST_P(CordTest, CordSpliceTestZedBlock) {
1338
- absl::Cord blob = CordWithZedBlock(10);
1339
- MaybeHarden(blob);
1340
- EXPECT_EQ(10, blob.size());
1341
- std::string s;
1342
- absl::CopyCordToString(blob, &s);
1343
- EXPECT_EQ("zzzzzzzzzz", s);
1344
- }
1345
-
1346
- TEST_P(CordTest, CordSpliceTestZedBlock0) {
1347
- absl::Cord blob = CordWithZedBlock(0);
1348
- MaybeHarden(blob);
1349
- EXPECT_EQ(0, blob.size());
1350
- std::string s;
1351
- absl::CopyCordToString(blob, &s);
1352
- EXPECT_EQ("", s);
1353
- }
1354
-
1355
- TEST_P(CordTest, CordSpliceTestZedBlockSuffix1) {
1356
- absl::Cord blob = CordWithZedBlock(10);
1357
- MaybeHarden(blob);
1358
- EXPECT_EQ(10, blob.size());
1359
- absl::Cord suffix(blob);
1360
- suffix.RemovePrefix(9);
1361
- EXPECT_EQ(1, suffix.size());
1362
- std::string s;
1363
- absl::CopyCordToString(suffix, &s);
1364
- EXPECT_EQ("z", s);
1365
- }
1366
-
1367
- // Remove all of a prefix block
1368
- TEST_P(CordTest, CordSpliceTestZedBlockSuffix0) {
1369
- absl::Cord blob = CordWithZedBlock(10);
1370
- MaybeHarden(blob);
1371
- EXPECT_EQ(10, blob.size());
1372
- absl::Cord suffix(blob);
1373
- suffix.RemovePrefix(10);
1374
- EXPECT_EQ(0, suffix.size());
1375
- std::string s;
1376
- absl::CopyCordToString(suffix, &s);
1377
- EXPECT_EQ("", s);
1378
- }
1379
-
1380
- absl::Cord BigCord(size_t len, char v) {
1381
- std::string s(len, v);
1382
- return absl::Cord(s);
1383
- }
1384
-
1385
- // Splice block into cord.
1386
- absl::Cord SpliceCord(const absl::Cord& blob, int64_t offset,
1387
- const absl::Cord& block) {
1388
- CHECK_GE(offset, 0);
1389
- CHECK_LE(static_cast<size_t>(offset) + block.size(), blob.size());
1390
- absl::Cord result(blob);
1391
- result.RemoveSuffix(blob.size() - offset);
1392
- result.Append(block);
1393
- absl::Cord suffix(blob);
1394
- suffix.RemovePrefix(offset + block.size());
1395
- result.Append(suffix);
1396
- CHECK_EQ(blob.size(), result.size());
1397
- return result;
1398
- }
1399
-
1400
- // Taking an empty suffix of a block breaks appending.
1401
- TEST_P(CordTest, CordSpliceTestRemoveEntireBlock1) {
1402
- absl::Cord zero = CordWithZedBlock(10);
1403
- MaybeHarden(zero);
1404
- absl::Cord suffix(zero);
1405
- suffix.RemovePrefix(10);
1406
- absl::Cord result;
1407
- result.Append(suffix);
1408
- }
1409
-
1410
- TEST_P(CordTest, CordSpliceTestRemoveEntireBlock2) {
1411
- absl::Cord zero = CordWithZedBlock(10);
1412
- MaybeHarden(zero);
1413
- absl::Cord prefix(zero);
1414
- prefix.RemoveSuffix(10);
1415
- absl::Cord suffix(zero);
1416
- suffix.RemovePrefix(10);
1417
- absl::Cord result(prefix);
1418
- result.Append(suffix);
1419
- }
1420
-
1421
- TEST_P(CordTest, CordSpliceTestRemoveEntireBlock3) {
1422
- absl::Cord blob = CordWithZedBlock(10);
1423
- absl::Cord block = BigCord(10, 'b');
1424
- MaybeHarden(blob);
1425
- MaybeHarden(block);
1426
- blob = SpliceCord(blob, 0, block);
1427
- }
1428
-
1429
- struct CordCompareTestCase {
1430
- template <typename LHS, typename RHS>
1431
- CordCompareTestCase(const LHS& lhs, const RHS& rhs, bool use_crc)
1432
- : lhs_cord(lhs), rhs_cord(rhs) {
1433
- if (use_crc) {
1434
- lhs_cord.SetExpectedChecksum(1);
1435
- }
1436
- }
1437
-
1438
- absl::Cord lhs_cord;
1439
- absl::Cord rhs_cord;
1440
- };
1441
-
1442
- const auto sign = [](int x) { return x == 0 ? 0 : (x > 0 ? 1 : -1); };
1443
-
1444
- void VerifyComparison(const CordCompareTestCase& test_case) {
1445
- std::string lhs_string(test_case.lhs_cord);
1446
- std::string rhs_string(test_case.rhs_cord);
1447
- int expected = sign(lhs_string.compare(rhs_string));
1448
- EXPECT_EQ(expected, test_case.lhs_cord.Compare(test_case.rhs_cord))
1449
- << "LHS=" << lhs_string << "; RHS=" << rhs_string;
1450
- EXPECT_EQ(expected, test_case.lhs_cord.Compare(rhs_string))
1451
- << "LHS=" << lhs_string << "; RHS=" << rhs_string;
1452
- EXPECT_EQ(-expected, test_case.rhs_cord.Compare(test_case.lhs_cord))
1453
- << "LHS=" << rhs_string << "; RHS=" << lhs_string;
1454
- EXPECT_EQ(-expected, test_case.rhs_cord.Compare(lhs_string))
1455
- << "LHS=" << rhs_string << "; RHS=" << lhs_string;
1456
- }
1457
-
1458
- TEST_P(CordTest, Compare) {
1459
- absl::Cord subcord("aaaaaBBBBBcccccDDDDD");
1460
- subcord = subcord.Subcord(3, 10);
1461
-
1462
- absl::Cord tmp("aaaaaaaaaaaaaaaa");
1463
- tmp.Append("BBBBBBBBBBBBBBBB");
1464
- absl::Cord concat = absl::Cord("cccccccccccccccc");
1465
- concat.Append("DDDDDDDDDDDDDDDD");
1466
- concat.Prepend(tmp);
1467
-
1468
- absl::Cord concat2("aaaaaaaaaaaaa");
1469
- concat2.Append("aaaBBBBBBBBBBBBBBBBccccc");
1470
- concat2.Append("cccccccccccDDDDDDDDDDDDDD");
1471
- concat2.Append("DD");
1472
-
1473
- const bool use_crc = UseCrc();
1474
-
1475
- std::vector<CordCompareTestCase> test_cases = {{
1476
- // Inline cords
1477
- {"abcdef", "abcdef", use_crc},
1478
- {"abcdef", "abcdee", use_crc},
1479
- {"abcdef", "abcdeg", use_crc},
1480
- {"bbcdef", "abcdef", use_crc},
1481
- {"bbcdef", "abcdeg", use_crc},
1482
- {"abcdefa", "abcdef", use_crc},
1483
- {"abcdef", "abcdefa", use_crc},
1484
-
1485
- // Small flat cords
1486
- {"aaaaaBBBBBcccccDDDDD", "aaaaaBBBBBcccccDDDDD", use_crc},
1487
- {"aaaaaBBBBBcccccDDDDD", "aaaaaBBBBBxccccDDDDD", use_crc},
1488
- {"aaaaaBBBBBcxcccDDDDD", "aaaaaBBBBBcccccDDDDD", use_crc},
1489
- {"aaaaaBBBBBxccccDDDDD", "aaaaaBBBBBcccccDDDDX", use_crc},
1490
- {"aaaaaBBBBBcccccDDDDDa", "aaaaaBBBBBcccccDDDDD", use_crc},
1491
- {"aaaaaBBBBBcccccDDDDD", "aaaaaBBBBBcccccDDDDDa", use_crc},
1492
-
1493
- // Subcords
1494
- {subcord, subcord, use_crc},
1495
- {subcord, "aaBBBBBccc", use_crc},
1496
- {subcord, "aaBBBBBccd", use_crc},
1497
- {subcord, "aaBBBBBccb", use_crc},
1498
- {subcord, "aaBBBBBxcb", use_crc},
1499
- {subcord, "aaBBBBBccca", use_crc},
1500
- {subcord, "aaBBBBBcc", use_crc},
1501
-
1502
- // Concats
1503
- {concat, concat, use_crc},
1504
- {concat,
1505
- "aaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBccccccccccccccccDDDDDDDDDDDDDDDD",
1506
- use_crc},
1507
- {concat,
1508
- "aaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBcccccccccccccccxDDDDDDDDDDDDDDDD",
1509
- use_crc},
1510
- {concat,
1511
- "aaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBacccccccccccccccDDDDDDDDDDDDDDDD",
1512
- use_crc},
1513
- {concat,
1514
- "aaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBccccccccccccccccDDDDDDDDDDDDDDD",
1515
- use_crc},
1516
- {concat,
1517
- "aaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBccccccccccccccccDDDDDDDDDDDDDDDDe",
1518
- use_crc},
1519
-
1520
- {concat, concat2, use_crc},
1521
- }};
1522
-
1523
- for (const auto& tc : test_cases) {
1524
- VerifyComparison(tc);
1525
- }
1526
- }
1527
-
1528
- TEST_P(CordTest, CompareAfterAssign) {
1529
- absl::Cord a("aaaaaa1111111");
1530
- absl::Cord b("aaaaaa2222222");
1531
- MaybeHarden(a);
1532
- a = "cccccc";
1533
- b = "cccccc";
1534
- EXPECT_EQ(a, b);
1535
- EXPECT_FALSE(a < b);
1536
-
1537
- a = "aaaa";
1538
- b = "bbbbb";
1539
- a = "";
1540
- b = "";
1541
- EXPECT_EQ(a, b);
1542
- EXPECT_FALSE(a < b);
1543
- }
1544
-
1545
- // Test CompareTo() and ComparePrefix() against string and substring
1546
- // comparison methods from basic_string.
1547
- static void TestCompare(const absl::Cord& c, const absl::Cord& d,
1548
- RandomEngine* rng) {
1549
- // char_traits<char>::lt is guaranteed to do an unsigned comparison:
1550
- // https://en.cppreference.com/w/cpp/string/char_traits/cmp. We also expect
1551
- // Cord comparisons to be based on unsigned byte comparisons regardless of
1552
- // whether char is signed.
1553
- int expected = sign(std::string(c).compare(std::string(d)));
1554
- EXPECT_EQ(expected, sign(c.Compare(d))) << c << ", " << d;
1555
- }
1556
-
1557
- TEST_P(CordTest, CompareComparisonIsUnsigned) {
1558
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
1559
- std::uniform_int_distribution<uint32_t> uniform_uint8(0, 255);
1560
- char x = static_cast<char>(uniform_uint8(rng));
1561
- TestCompare(
1562
- absl::Cord(std::string(GetUniformRandomUpTo(&rng, 100), x)),
1563
- absl::Cord(std::string(GetUniformRandomUpTo(&rng, 100), x ^ 0x80)), &rng);
1564
- }
1565
-
1566
- TEST_P(CordTest, CompareRandomComparisons) {
1567
- const int kIters = 5000;
1568
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
1569
-
1570
- int n = GetUniformRandomUpTo(&rng, 5000);
1571
- absl::Cord a[] = {MakeExternalCord(n),
1572
- absl::Cord("ant"),
1573
- absl::Cord("elephant"),
1574
- absl::Cord("giraffe"),
1575
- absl::Cord(std::string(GetUniformRandomUpTo(&rng, 100),
1576
- GetUniformRandomUpTo(&rng, 100))),
1577
- absl::Cord(""),
1578
- absl::Cord("x"),
1579
- absl::Cord("A"),
1580
- absl::Cord("B"),
1581
- absl::Cord("C")};
1582
- for (int i = 0; i < kIters; i++) {
1583
- absl::Cord c, d;
1584
- for (int j = 0; j < (i % 7) + 1; j++) {
1585
- c.Append(a[GetUniformRandomUpTo(&rng, ABSL_ARRAYSIZE(a))]);
1586
- d.Append(a[GetUniformRandomUpTo(&rng, ABSL_ARRAYSIZE(a))]);
1587
- }
1588
- std::bernoulli_distribution coin_flip(0.5);
1589
- MaybeHarden(c);
1590
- MaybeHarden(d);
1591
- TestCompare(coin_flip(rng) ? c : absl::Cord(std::string(c)),
1592
- coin_flip(rng) ? d : absl::Cord(std::string(d)), &rng);
1593
- }
1594
- }
1595
-
1596
- template <typename T1, typename T2>
1597
- void CompareOperators() {
1598
- const T1 a("a");
1599
- const T2 b("b");
1600
-
1601
- EXPECT_TRUE(a == a);
1602
- // For pointer type (i.e. `const char*`), operator== compares the address
1603
- // instead of the string, so `a == const char*("a")` isn't necessarily true.
1604
- EXPECT_TRUE(std::is_pointer<T1>::value || a == T1("a"));
1605
- EXPECT_TRUE(std::is_pointer<T2>::value || a == T2("a"));
1606
- EXPECT_FALSE(a == b);
1607
-
1608
- EXPECT_TRUE(a != b);
1609
- EXPECT_FALSE(a != a);
1610
-
1611
- EXPECT_TRUE(a < b);
1612
- EXPECT_FALSE(b < a);
1613
-
1614
- EXPECT_TRUE(b > a);
1615
- EXPECT_FALSE(a > b);
1616
-
1617
- EXPECT_TRUE(a >= a);
1618
- EXPECT_TRUE(b >= a);
1619
- EXPECT_FALSE(a >= b);
1620
-
1621
- EXPECT_TRUE(a <= a);
1622
- EXPECT_TRUE(a <= b);
1623
- EXPECT_FALSE(b <= a);
1624
- }
1625
-
1626
- TEST_P(CordTest, ComparisonOperators_Cord_Cord) {
1627
- CompareOperators<absl::Cord, absl::Cord>();
1628
- }
1629
-
1630
- TEST_P(CordTest, ComparisonOperators_Cord_StringPiece) {
1631
- CompareOperators<absl::Cord, absl::string_view>();
1632
- }
1633
-
1634
- TEST_P(CordTest, ComparisonOperators_StringPiece_Cord) {
1635
- CompareOperators<absl::string_view, absl::Cord>();
1636
- }
1637
-
1638
- TEST_P(CordTest, ComparisonOperators_Cord_string) {
1639
- CompareOperators<absl::Cord, std::string>();
1640
- }
1641
-
1642
- TEST_P(CordTest, ComparisonOperators_string_Cord) {
1643
- CompareOperators<std::string, absl::Cord>();
1644
- }
1645
-
1646
- TEST_P(CordTest, ComparisonOperators_stdstring_Cord) {
1647
- CompareOperators<std::string, absl::Cord>();
1648
- }
1649
-
1650
- TEST_P(CordTest, ComparisonOperators_Cord_stdstring) {
1651
- CompareOperators<absl::Cord, std::string>();
1652
- }
1653
-
1654
- TEST_P(CordTest, ComparisonOperators_charstar_Cord) {
1655
- CompareOperators<const char*, absl::Cord>();
1656
- }
1657
-
1658
- TEST_P(CordTest, ComparisonOperators_Cord_charstar) {
1659
- CompareOperators<absl::Cord, const char*>();
1660
- }
1661
-
1662
- TEST_P(CordTest, ConstructFromExternalReleaserInvoked) {
1663
- // Empty external memory means the releaser should be called immediately.
1664
- {
1665
- bool invoked = false;
1666
- auto releaser = [&invoked](absl::string_view) { invoked = true; };
1667
- {
1668
- auto c = absl::MakeCordFromExternal("", releaser);
1669
- EXPECT_THAT(c, testing::Eq(""));
1670
- EXPECT_TRUE(invoked);
1671
- }
1672
- }
1673
-
1674
- // If the size of the data is small enough, a future constructor
1675
- // implementation may copy the bytes and immediately invoke the releaser
1676
- // instead of creating an external node. We make a large dummy std::string to
1677
- // make this test independent of such an optimization.
1678
- std::string large_dummy(2048, 'c');
1679
- {
1680
- bool invoked = false;
1681
- auto releaser = [&invoked](absl::string_view) { invoked = true; };
1682
- {
1683
- auto c = absl::MakeCordFromExternal(large_dummy, releaser);
1684
- EXPECT_THAT(c, testing::Eq(large_dummy));
1685
- EXPECT_FALSE(invoked);
1686
- }
1687
- EXPECT_TRUE(invoked);
1688
- }
1689
-
1690
- {
1691
- bool invoked = false;
1692
- auto releaser = [&invoked](absl::string_view) { invoked = true; };
1693
- {
1694
- absl::Cord copy;
1695
- {
1696
- auto c = absl::MakeCordFromExternal(large_dummy, releaser);
1697
- copy = c;
1698
- EXPECT_FALSE(invoked);
1699
- }
1700
- EXPECT_FALSE(invoked);
1701
- }
1702
- EXPECT_TRUE(invoked);
1703
- }
1704
- }
1705
-
1706
- TEST_P(CordTest, ConstructFromExternalCompareContents) {
1707
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
1708
-
1709
- for (int length = 1; length <= 2048; length *= 2) {
1710
- std::string data = RandomLowercaseString(&rng, length);
1711
- auto* external = new std::string(data);
1712
- auto cord =
1713
- absl::MakeCordFromExternal(*external, [external](absl::string_view sv) {
1714
- EXPECT_EQ(external->data(), sv.data());
1715
- EXPECT_EQ(external->size(), sv.size());
1716
- delete external;
1717
- });
1718
- MaybeHarden(cord);
1719
- EXPECT_EQ(data, cord);
1720
- }
1721
- }
1722
-
1723
- TEST_P(CordTest, ConstructFromExternalLargeReleaser) {
1724
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
1725
- constexpr size_t kLength = 256;
1726
- std::string data = RandomLowercaseString(&rng, kLength);
1727
- std::array<char, kLength> data_array;
1728
- for (size_t i = 0; i < kLength; ++i) data_array[i] = data[i];
1729
- bool invoked = false;
1730
- auto releaser = [data_array, &invoked](absl::string_view data) {
1731
- EXPECT_EQ(data, absl::string_view(data_array.data(), data_array.size()));
1732
- invoked = true;
1733
- };
1734
- (void)MaybeHardened(absl::MakeCordFromExternal(data, releaser));
1735
- EXPECT_TRUE(invoked);
1736
- }
1737
-
1738
- TEST_P(CordTest, ConstructFromExternalFunctionPointerReleaser) {
1739
- static absl::string_view data("hello world");
1740
- static bool invoked;
1741
- auto* releaser =
1742
- static_cast<void (*)(absl::string_view)>([](absl::string_view sv) {
1743
- EXPECT_EQ(data, sv);
1744
- invoked = true;
1745
- });
1746
- invoked = false;
1747
- (void)MaybeHardened(absl::MakeCordFromExternal(data, releaser));
1748
- EXPECT_TRUE(invoked);
1749
-
1750
- invoked = false;
1751
- (void)MaybeHardened(absl::MakeCordFromExternal(data, *releaser));
1752
- EXPECT_TRUE(invoked);
1753
- }
1754
-
1755
- TEST_P(CordTest, ConstructFromExternalMoveOnlyReleaser) {
1756
- struct Releaser {
1757
- explicit Releaser(bool* invoked) : invoked(invoked) {}
1758
- Releaser(Releaser&& other) noexcept : invoked(other.invoked) {}
1759
- void operator()(absl::string_view) const { *invoked = true; }
1760
-
1761
- bool* invoked;
1762
- };
1763
-
1764
- bool invoked = false;
1765
- (void)MaybeHardened(absl::MakeCordFromExternal("dummy", Releaser(&invoked)));
1766
- EXPECT_TRUE(invoked);
1767
- }
1768
-
1769
- TEST_P(CordTest, ConstructFromExternalNoArgLambda) {
1770
- bool invoked = false;
1771
- (void)MaybeHardened(
1772
- absl::MakeCordFromExternal("dummy", [&invoked]() { invoked = true; }));
1773
- EXPECT_TRUE(invoked);
1774
- }
1775
-
1776
- TEST_P(CordTest, ConstructFromExternalStringViewArgLambda) {
1777
- bool invoked = false;
1778
- (void)MaybeHardened(absl::MakeCordFromExternal(
1779
- "dummy", [&invoked](absl::string_view) { invoked = true; }));
1780
- EXPECT_TRUE(invoked);
1781
- }
1782
-
1783
- TEST_P(CordTest, ConstructFromExternalNonTrivialReleaserDestructor) {
1784
- struct Releaser {
1785
- explicit Releaser(bool* destroyed) : destroyed(destroyed) {}
1786
- ~Releaser() { *destroyed = true; }
1787
- void operator()(absl::string_view) const {}
1788
-
1789
- bool* destroyed;
1790
- };
1791
-
1792
- bool destroyed = false;
1793
- Releaser releaser(&destroyed);
1794
- (void)MaybeHardened(absl::MakeCordFromExternal("dummy", releaser));
1795
- EXPECT_TRUE(destroyed);
1796
- }
1797
-
1798
- TEST_P(CordTest, ConstructFromExternalReferenceQualifierOverloads) {
1799
- enum InvokedAs { kMissing, kLValue, kRValue };
1800
- enum CopiedAs { kNone, kMove, kCopy };
1801
- struct Tracker {
1802
- CopiedAs copied_as = kNone;
1803
- InvokedAs invoked_as = kMissing;
1804
-
1805
- void Record(InvokedAs rhs) {
1806
- ASSERT_EQ(invoked_as, kMissing);
1807
- invoked_as = rhs;
1808
- }
1809
-
1810
- void Record(CopiedAs rhs) {
1811
- if (copied_as == kNone || rhs == kCopy) copied_as = rhs;
1812
- }
1813
- } tracker;
1814
-
1815
- class Releaser {
1816
- public:
1817
- explicit Releaser(Tracker* tracker) : tr_(tracker) { *tracker = Tracker(); }
1818
- Releaser(Releaser&& rhs) : tr_(rhs.tr_) { tr_->Record(kMove); }
1819
- Releaser(const Releaser& rhs) : tr_(rhs.tr_) { tr_->Record(kCopy); }
1820
-
1821
- void operator()(absl::string_view) & { tr_->Record(kLValue); }
1822
- void operator()(absl::string_view) && { tr_->Record(kRValue); }
1823
-
1824
- private:
1825
- Tracker* tr_;
1826
- };
1827
-
1828
- const Releaser releaser1(&tracker);
1829
- (void)MaybeHardened(absl::MakeCordFromExternal("", releaser1));
1830
- EXPECT_EQ(tracker.copied_as, kCopy);
1831
- EXPECT_EQ(tracker.invoked_as, kRValue);
1832
-
1833
- const Releaser releaser2(&tracker);
1834
- (void)MaybeHardened(absl::MakeCordFromExternal("", releaser2));
1835
- EXPECT_EQ(tracker.copied_as, kCopy);
1836
- EXPECT_EQ(tracker.invoked_as, kRValue);
1837
-
1838
- Releaser releaser3(&tracker);
1839
- (void)MaybeHardened(absl::MakeCordFromExternal("", std::move(releaser3)));
1840
- EXPECT_EQ(tracker.copied_as, kMove);
1841
- EXPECT_EQ(tracker.invoked_as, kRValue);
1842
-
1843
- Releaser releaser4(&tracker);
1844
- (void)MaybeHardened(absl::MakeCordFromExternal("dummy", releaser4));
1845
- EXPECT_EQ(tracker.copied_as, kCopy);
1846
- EXPECT_EQ(tracker.invoked_as, kRValue);
1847
-
1848
- const Releaser releaser5(&tracker);
1849
- (void)MaybeHardened(absl::MakeCordFromExternal("dummy", releaser5));
1850
- EXPECT_EQ(tracker.copied_as, kCopy);
1851
- EXPECT_EQ(tracker.invoked_as, kRValue);
1852
-
1853
- Releaser releaser6(&tracker);
1854
- (void)MaybeHardened(absl::MakeCordFromExternal("foo", std::move(releaser6)));
1855
- EXPECT_EQ(tracker.copied_as, kMove);
1856
- EXPECT_EQ(tracker.invoked_as, kRValue);
1857
- }
1858
-
1859
- TEST_P(CordTest, ExternalMemoryBasicUsage) {
1860
- static const char* strings[] = {"", "hello", "there"};
1861
- for (const char* str : strings) {
1862
- absl::Cord dst("(prefix)");
1863
- MaybeHarden(dst);
1864
- AddExternalMemory(str, &dst);
1865
- MaybeHarden(dst);
1866
- dst.Append("(suffix)");
1867
- EXPECT_EQ((std::string("(prefix)") + str + std::string("(suffix)")),
1868
- std::string(dst));
1869
- }
1870
- }
1871
-
1872
- TEST_P(CordTest, ExternalMemoryRemovePrefixSuffix) {
1873
- // Exhaustively try all sub-strings.
1874
- absl::Cord cord = MakeComposite();
1875
- std::string s = std::string(cord);
1876
- for (int offset = 0; offset <= s.size(); offset++) {
1877
- for (int length = 0; length <= s.size() - offset; length++) {
1878
- absl::Cord result(cord);
1879
- MaybeHarden(result);
1880
- result.RemovePrefix(offset);
1881
- MaybeHarden(result);
1882
- result.RemoveSuffix(result.size() - length);
1883
- EXPECT_EQ(s.substr(offset, length), std::string(result))
1884
- << offset << " " << length;
1885
- }
1886
- }
1887
- }
1888
-
1889
- TEST_P(CordTest, ExternalMemoryGet) {
1890
- absl::Cord cord("hello");
1891
- AddExternalMemory(" world!", &cord);
1892
- MaybeHarden(cord);
1893
- AddExternalMemory(" how are ", &cord);
1894
- cord.Append(" you?");
1895
- MaybeHarden(cord);
1896
- std::string s = std::string(cord);
1897
- for (int i = 0; i < s.size(); i++) {
1898
- EXPECT_EQ(s[i], cord[i]);
1899
- }
1900
- }
1901
-
1902
- // CordMemoryUsage tests verify the correctness of the EstimatedMemoryUsage()
1903
- // We use whiteboxed expectations based on our knowledge of the layout and size
1904
- // of empty and inlined cords, and flat nodes.
1905
-
1906
- constexpr auto kFairShare = absl::CordMemoryAccounting::kFairShare;
1907
- constexpr auto kTotalMorePrecise =
1908
- absl::CordMemoryAccounting::kTotalMorePrecise;
1909
-
1910
- // Creates a cord of `n` `c` values, making sure no string stealing occurs.
1911
- absl::Cord MakeCord(size_t n, char c) {
1912
- const std::string s(n, c);
1913
- return absl::Cord(s);
1914
- }
1915
-
1916
- TEST(CordTest, CordMemoryUsageEmpty) {
1917
- absl::Cord cord;
1918
- EXPECT_EQ(sizeof(absl::Cord), cord.EstimatedMemoryUsage());
1919
- EXPECT_EQ(sizeof(absl::Cord), cord.EstimatedMemoryUsage(kFairShare));
1920
- EXPECT_EQ(sizeof(absl::Cord), cord.EstimatedMemoryUsage(kTotalMorePrecise));
1921
- }
1922
-
1923
- TEST(CordTest, CordMemoryUsageInlined) {
1924
- absl::Cord a("hello");
1925
- EXPECT_EQ(a.EstimatedMemoryUsage(), sizeof(absl::Cord));
1926
- EXPECT_EQ(a.EstimatedMemoryUsage(kFairShare), sizeof(absl::Cord));
1927
- EXPECT_EQ(a.EstimatedMemoryUsage(kTotalMorePrecise), sizeof(absl::Cord));
1928
- }
1929
-
1930
- TEST(CordTest, CordMemoryUsageExternalMemory) {
1931
- absl::Cord cord;
1932
- AddExternalMemory(std::string(1000, 'x'), &cord);
1933
- const size_t expected =
1934
- sizeof(absl::Cord) + 1000 + sizeof(CordRepExternal) + sizeof(intptr_t);
1935
- EXPECT_EQ(cord.EstimatedMemoryUsage(), expected);
1936
- EXPECT_EQ(cord.EstimatedMemoryUsage(kFairShare), expected);
1937
- EXPECT_EQ(cord.EstimatedMemoryUsage(kTotalMorePrecise), expected);
1938
- }
1939
-
1940
- TEST(CordTest, CordMemoryUsageFlat) {
1941
- absl::Cord cord = MakeCord(1000, 'a');
1942
- const size_t flat_size =
1943
- absl::CordTestPeer::Tree(cord)->flat()->AllocatedSize();
1944
- EXPECT_EQ(cord.EstimatedMemoryUsage(), sizeof(absl::Cord) + flat_size);
1945
- EXPECT_EQ(cord.EstimatedMemoryUsage(kFairShare),
1946
- sizeof(absl::Cord) + flat_size);
1947
- EXPECT_EQ(cord.EstimatedMemoryUsage(kTotalMorePrecise),
1948
- sizeof(absl::Cord) + flat_size);
1949
- }
1950
-
1951
- TEST(CordTest, CordMemoryUsageSubStringSharedFlat) {
1952
- absl::Cord flat = MakeCord(2000, 'a');
1953
- const size_t flat_size =
1954
- absl::CordTestPeer::Tree(flat)->flat()->AllocatedSize();
1955
- absl::Cord cord = flat.Subcord(500, 1000);
1956
- EXPECT_EQ(cord.EstimatedMemoryUsage(),
1957
- sizeof(absl::Cord) + sizeof(CordRepSubstring) + flat_size);
1958
- EXPECT_EQ(cord.EstimatedMemoryUsage(kTotalMorePrecise),
1959
- sizeof(absl::Cord) + sizeof(CordRepSubstring) + flat_size);
1960
- EXPECT_EQ(cord.EstimatedMemoryUsage(kFairShare),
1961
- sizeof(absl::Cord) + sizeof(CordRepSubstring) + flat_size / 2);
1962
- }
1963
-
1964
- TEST(CordTest, CordMemoryUsageFlatShared) {
1965
- absl::Cord shared = MakeCord(1000, 'a');
1966
- absl::Cord cord(shared);
1967
- const size_t flat_size =
1968
- absl::CordTestPeer::Tree(cord)->flat()->AllocatedSize();
1969
- EXPECT_EQ(cord.EstimatedMemoryUsage(), sizeof(absl::Cord) + flat_size);
1970
- EXPECT_EQ(cord.EstimatedMemoryUsage(kTotalMorePrecise),
1971
- sizeof(absl::Cord) + flat_size);
1972
- EXPECT_EQ(cord.EstimatedMemoryUsage(kFairShare),
1973
- sizeof(absl::Cord) + flat_size / 2);
1974
- }
1975
-
1976
- TEST(CordTest, CordMemoryUsageFlatHardenedAndShared) {
1977
- absl::Cord shared = MakeCord(1000, 'a');
1978
- absl::Cord cord(shared);
1979
- const size_t flat_size =
1980
- absl::CordTestPeer::Tree(cord)->flat()->AllocatedSize();
1981
- cord.SetExpectedChecksum(1);
1982
- EXPECT_EQ(cord.EstimatedMemoryUsage(),
1983
- sizeof(absl::Cord) + sizeof(CordRepCrc) + flat_size);
1984
- EXPECT_EQ(cord.EstimatedMemoryUsage(kFairShare),
1985
- sizeof(absl::Cord) + sizeof(CordRepCrc) + flat_size / 2);
1986
-
1987
- absl::Cord cord2(cord);
1988
- EXPECT_EQ(cord2.EstimatedMemoryUsage(),
1989
- sizeof(absl::Cord) + sizeof(CordRepCrc) + flat_size);
1990
- EXPECT_EQ(cord2.EstimatedMemoryUsage(kTotalMorePrecise),
1991
- sizeof(absl::Cord) + sizeof(CordRepCrc) + flat_size);
1992
- EXPECT_EQ(cord2.EstimatedMemoryUsage(kFairShare),
1993
- sizeof(absl::Cord) + (sizeof(CordRepCrc) + flat_size / 2) / 2);
1994
- }
1995
-
1996
- TEST(CordTest, CordMemoryUsageBTree) {
1997
- absl::Cord cord1;
1998
- size_t flats1_size = 0;
1999
- absl::Cord flats1[4] = {MakeCord(1000, 'a'), MakeCord(1100, 'a'),
2000
- MakeCord(1200, 'a'), MakeCord(1300, 'a')};
2001
- for (absl::Cord flat : flats1) {
2002
- flats1_size += absl::CordTestPeer::Tree(flat)->flat()->AllocatedSize();
2003
- cord1.Append(std::move(flat));
2004
- }
2005
-
2006
- // Make sure the created cord is a BTREE tree. Under some builds such as
2007
- // windows DLL, we may have ODR like effects on the flag, meaning the DLL
2008
- // code will run with the picked up default.
2009
- if (!absl::CordTestPeer::Tree(cord1)->IsBtree()) {
2010
- LOG(WARNING) << "Cord library code not respecting btree flag";
2011
- return;
2012
- }
2013
-
2014
- size_t rep1_size = sizeof(CordRepBtree) + flats1_size;
2015
- size_t rep1_shared_size = sizeof(CordRepBtree) + flats1_size / 2;
2016
-
2017
- EXPECT_EQ(cord1.EstimatedMemoryUsage(), sizeof(absl::Cord) + rep1_size);
2018
- EXPECT_EQ(cord1.EstimatedMemoryUsage(kTotalMorePrecise),
2019
- sizeof(absl::Cord) + rep1_size);
2020
- EXPECT_EQ(cord1.EstimatedMemoryUsage(kFairShare),
2021
- sizeof(absl::Cord) + rep1_shared_size);
2022
-
2023
- absl::Cord cord2;
2024
- size_t flats2_size = 0;
2025
- absl::Cord flats2[4] = {MakeCord(600, 'a'), MakeCord(700, 'a'),
2026
- MakeCord(800, 'a'), MakeCord(900, 'a')};
2027
- for (absl::Cord& flat : flats2) {
2028
- flats2_size += absl::CordTestPeer::Tree(flat)->flat()->AllocatedSize();
2029
- cord2.Append(std::move(flat));
2030
- }
2031
- size_t rep2_size = sizeof(CordRepBtree) + flats2_size;
2032
-
2033
- EXPECT_EQ(cord2.EstimatedMemoryUsage(), sizeof(absl::Cord) + rep2_size);
2034
- EXPECT_EQ(cord2.EstimatedMemoryUsage(kTotalMorePrecise),
2035
- sizeof(absl::Cord) + rep2_size);
2036
- EXPECT_EQ(cord2.EstimatedMemoryUsage(kFairShare),
2037
- sizeof(absl::Cord) + rep2_size);
2038
-
2039
- absl::Cord cord(cord1);
2040
- cord.Append(std::move(cord2));
2041
-
2042
- EXPECT_EQ(cord.EstimatedMemoryUsage(),
2043
- sizeof(absl::Cord) + sizeof(CordRepBtree) + rep1_size + rep2_size);
2044
- EXPECT_EQ(cord.EstimatedMemoryUsage(kTotalMorePrecise),
2045
- sizeof(absl::Cord) + sizeof(CordRepBtree) + rep1_size + rep2_size);
2046
- EXPECT_EQ(cord.EstimatedMemoryUsage(kFairShare),
2047
- sizeof(absl::Cord) + sizeof(CordRepBtree) + rep1_shared_size / 2 +
2048
- rep2_size);
2049
- }
2050
-
2051
- TEST(CordTest, TestHashFragmentation) {
2052
- // Make sure we hit these boundary cases precisely.
2053
- EXPECT_EQ(1024, absl::hash_internal::PiecewiseChunkSize());
2054
- EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly({
2055
- absl::Cord(),
2056
- absl::MakeFragmentedCord({std::string(600, 'a'), std::string(600, 'a')}),
2057
- absl::MakeFragmentedCord({std::string(1200, 'a')}),
2058
- absl::MakeFragmentedCord({std::string(900, 'b'), std::string(900, 'b')}),
2059
- absl::MakeFragmentedCord({std::string(1800, 'b')}),
2060
- absl::MakeFragmentedCord(
2061
- {std::string(2000, 'c'), std::string(2000, 'c')}),
2062
- absl::MakeFragmentedCord({std::string(4000, 'c')}),
2063
- absl::MakeFragmentedCord({std::string(1024, 'd')}),
2064
- absl::MakeFragmentedCord({std::string(1023, 'd'), "d"}),
2065
- absl::MakeFragmentedCord({std::string(1025, 'e')}),
2066
- absl::MakeFragmentedCord({std::string(1024, 'e'), "e"}),
2067
- absl::MakeFragmentedCord({std::string(1023, 'e'), "e", "e"}),
2068
- }));
2069
- }
2070
-
2071
- // Regtest for a change that had to be rolled back because it expanded out
2072
- // of the InlineRep too soon, which was observable through MemoryUsage().
2073
- TEST_P(CordTest, CordMemoryUsageInlineRep) {
2074
- constexpr size_t kMaxInline = 15; // Cord::InlineRep::N
2075
- const std::string small_string(kMaxInline, 'x');
2076
- absl::Cord c1(small_string);
2077
-
2078
- absl::Cord c2;
2079
- c2.Append(small_string);
2080
- EXPECT_EQ(c1, c2);
2081
- EXPECT_EQ(c1.EstimatedMemoryUsage(), c2.EstimatedMemoryUsage());
2082
- }
2083
-
2084
- TEST_P(CordTest, CordMemoryUsageTotalMorePreciseMode) {
2085
- constexpr size_t kChunkSize = 2000;
2086
- std::string tmp_str(kChunkSize, 'x');
2087
- const absl::Cord flat(std::move(tmp_str));
2088
-
2089
- // Construct `fragmented` with two references into the same
2090
- // underlying buffer shared with `flat`:
2091
- absl::Cord fragmented(flat);
2092
- fragmented.Append(flat);
2093
-
2094
- // Memory usage of `flat`, minus the top-level Cord object:
2095
- const size_t flat_internal_usage =
2096
- flat.EstimatedMemoryUsage() - sizeof(absl::Cord);
2097
-
2098
- // `fragmented` holds a Cord and a CordRepBtree. That tree points to two
2099
- // copies of flat's internals, which we expect to dedup:
2100
- EXPECT_EQ(fragmented.EstimatedMemoryUsage(kTotalMorePrecise),
2101
- sizeof(absl::Cord) +
2102
- sizeof(CordRepBtree) +
2103
- flat_internal_usage);
2104
-
2105
- // This is a case where kTotal produces an overestimate:
2106
- EXPECT_EQ(fragmented.EstimatedMemoryUsage(),
2107
- sizeof(absl::Cord) +
2108
- sizeof(CordRepBtree) +
2109
- 2 * flat_internal_usage);
2110
- }
2111
-
2112
- TEST_P(CordTest, CordMemoryUsageTotalMorePreciseModeWithSubstring) {
2113
- constexpr size_t kChunkSize = 2000;
2114
- std::string tmp_str(kChunkSize, 'x');
2115
- const absl::Cord flat(std::move(tmp_str));
2116
-
2117
- // Construct `fragmented` with two references into the same
2118
- // underlying buffer shared with `flat`.
2119
- //
2120
- // This time, each reference is through a Subcord():
2121
- absl::Cord fragmented;
2122
- fragmented.Append(flat.Subcord(1, kChunkSize - 2));
2123
- fragmented.Append(flat.Subcord(1, kChunkSize - 2));
2124
-
2125
- // Memory usage of `flat`, minus the top-level Cord object:
2126
- const size_t flat_internal_usage =
2127
- flat.EstimatedMemoryUsage() - sizeof(absl::Cord);
2128
-
2129
- // `fragmented` holds a Cord and a CordRepBtree. That tree points to two
2130
- // CordRepSubstrings, each pointing at flat's internals.
2131
- EXPECT_EQ(fragmented.EstimatedMemoryUsage(kTotalMorePrecise),
2132
- sizeof(absl::Cord) +
2133
- sizeof(CordRepBtree) +
2134
- 2 * sizeof(CordRepSubstring) +
2135
- flat_internal_usage);
2136
-
2137
- // This is a case where kTotal produces an overestimate:
2138
- EXPECT_EQ(fragmented.EstimatedMemoryUsage(),
2139
- sizeof(absl::Cord) +
2140
- sizeof(CordRepBtree) +
2141
- 2 * sizeof(CordRepSubstring) +
2142
- 2 * flat_internal_usage);
2143
- }
2144
- } // namespace
2145
-
2146
- // Regtest for 7510292 (fix a bug introduced by 7465150)
2147
- TEST_P(CordTest, Concat_Append) {
2148
- // Create a rep of type CONCAT
2149
- absl::Cord s1("foobarbarbarbarbar");
2150
- MaybeHarden(s1);
2151
- s1.Append("abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefg");
2152
- size_t size = s1.size();
2153
-
2154
- // Create a copy of s1 and append to it.
2155
- absl::Cord s2 = s1;
2156
- MaybeHarden(s2);
2157
- s2.Append("x");
2158
-
2159
- // 7465150 modifies s1 when it shouldn't.
2160
- EXPECT_EQ(s1.size(), size);
2161
- EXPECT_EQ(s2.size(), size + 1);
2162
- }
2163
-
2164
- TEST_P(CordTest, DiabolicalGrowth) {
2165
- // This test exercises a diabolical Append(<one char>) on a cord, making the
2166
- // cord shared before each Append call resulting in a terribly fragmented
2167
- // resulting cord.
2168
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
2169
- const std::string expected = RandomLowercaseString(&rng, 5000);
2170
- absl::Cord cord;
2171
- for (char c : expected) {
2172
- absl::Cord shared(cord);
2173
- EXPECT_THAT(cord, testing::Eq(shared));
2174
- cord.Append(absl::string_view(&c, 1));
2175
- MaybeHarden(cord);
2176
- }
2177
- std::string value;
2178
- absl::CopyCordToString(cord, &value);
2179
- EXPECT_EQ(value, expected);
2180
- LOG(INFO) << "Diabolical size allocated = " << cord.EstimatedMemoryUsage();
2181
- }
2182
-
2183
- // The following tests check support for >4GB cords in 64-bit binaries, and
2184
- // 2GB-4GB cords in 32-bit binaries. This function returns the large cord size
2185
- // that's appropriate for the binary.
2186
-
2187
- // Construct a huge cord with the specified valid prefix.
2188
- static absl::Cord MakeHuge(absl::string_view prefix) {
2189
- absl::Cord cord;
2190
- if (sizeof(size_t) > 4) {
2191
- // In 64-bit binaries, test 64-bit Cord support.
2192
- const size_t size =
2193
- static_cast<size_t>(std::numeric_limits<uint32_t>::max()) + 314;
2194
- cord.Append(absl::MakeCordFromExternal(
2195
- absl::string_view(prefix.data(), size),
2196
- [](absl::string_view s) { DoNothing(s, nullptr); }));
2197
- } else {
2198
- // Cords are limited to 32-bit lengths in 32-bit binaries. The following
2199
- // tests check for use of "signed int" to represent Cord length/offset.
2200
- // However absl::string_view does not allow lengths >= (1u<<31), so we need
2201
- // to append in two parts;
2202
- const size_t s1 = (1u << 31) - 1;
2203
- // For shorter cord, `Append` copies the data rather than allocating a new
2204
- // node. The threshold is currently set to 511, so `s2` needs to be bigger
2205
- // to not trigger the copy.
2206
- const size_t s2 = 600;
2207
- cord.Append(absl::MakeCordFromExternal(
2208
- absl::string_view(prefix.data(), s1),
2209
- [](absl::string_view s) { DoNothing(s, nullptr); }));
2210
- cord.Append(absl::MakeCordFromExternal(
2211
- absl::string_view("", s2),
2212
- [](absl::string_view s) { DoNothing(s, nullptr); }));
2213
- }
2214
- return cord;
2215
- }
2216
-
2217
- TEST_P(CordTest, HugeCord) {
2218
- absl::Cord cord = MakeHuge("huge cord");
2219
- MaybeHarden(cord);
2220
-
2221
- const size_t acceptable_delta =
2222
- 100 + (UseCrc() ? sizeof(absl::cord_internal::CordRepCrc) : 0);
2223
- EXPECT_LE(cord.size(), cord.EstimatedMemoryUsage());
2224
- EXPECT_GE(cord.size() + acceptable_delta, cord.EstimatedMemoryUsage());
2225
- }
2226
-
2227
- // Tests that Append() works ok when handed a self reference
2228
- TEST_P(CordTest, AppendSelf) {
2229
- // Test the empty case.
2230
- absl::Cord empty;
2231
- MaybeHarden(empty);
2232
- empty.Append(empty);
2233
- ASSERT_EQ(empty, "");
2234
-
2235
- // We run the test until data is ~16K
2236
- // This guarantees it covers small, medium and large data.
2237
- std::string control_data = "Abc";
2238
- absl::Cord data(control_data);
2239
- while (control_data.length() < 0x4000) {
2240
- MaybeHarden(data);
2241
- data.Append(data);
2242
- control_data.append(control_data);
2243
- ASSERT_EQ(control_data, data);
2244
- }
2245
- }
2246
-
2247
- TEST_P(CordTest, MakeFragmentedCordFromInitializerList) {
2248
- absl::Cord fragmented =
2249
- absl::MakeFragmentedCord({"A ", "fragmented ", "Cord"});
2250
-
2251
- MaybeHarden(fragmented);
2252
-
2253
- EXPECT_EQ("A fragmented Cord", fragmented);
2254
-
2255
- auto chunk_it = fragmented.chunk_begin();
2256
-
2257
- ASSERT_TRUE(chunk_it != fragmented.chunk_end());
2258
- EXPECT_EQ("A ", *chunk_it);
2259
-
2260
- ASSERT_TRUE(++chunk_it != fragmented.chunk_end());
2261
- EXPECT_EQ("fragmented ", *chunk_it);
2262
-
2263
- ASSERT_TRUE(++chunk_it != fragmented.chunk_end());
2264
- EXPECT_EQ("Cord", *chunk_it);
2265
-
2266
- ASSERT_TRUE(++chunk_it == fragmented.chunk_end());
2267
- }
2268
-
2269
- TEST_P(CordTest, MakeFragmentedCordFromVector) {
2270
- std::vector<absl::string_view> chunks = {"A ", "fragmented ", "Cord"};
2271
- absl::Cord fragmented = absl::MakeFragmentedCord(chunks);
2272
-
2273
- MaybeHarden(fragmented);
2274
-
2275
- EXPECT_EQ("A fragmented Cord", fragmented);
2276
-
2277
- auto chunk_it = fragmented.chunk_begin();
2278
-
2279
- ASSERT_TRUE(chunk_it != fragmented.chunk_end());
2280
- EXPECT_EQ("A ", *chunk_it);
2281
-
2282
- ASSERT_TRUE(++chunk_it != fragmented.chunk_end());
2283
- EXPECT_EQ("fragmented ", *chunk_it);
2284
-
2285
- ASSERT_TRUE(++chunk_it != fragmented.chunk_end());
2286
- EXPECT_EQ("Cord", *chunk_it);
2287
-
2288
- ASSERT_TRUE(++chunk_it == fragmented.chunk_end());
2289
- }
2290
-
2291
- TEST_P(CordTest, CordChunkIteratorTraits) {
2292
- static_assert(std::is_copy_constructible<absl::Cord::ChunkIterator>::value,
2293
- "");
2294
- static_assert(std::is_copy_assignable<absl::Cord::ChunkIterator>::value, "");
2295
-
2296
- // Move semantics to satisfy swappable via std::swap
2297
- static_assert(std::is_move_constructible<absl::Cord::ChunkIterator>::value,
2298
- "");
2299
- static_assert(std::is_move_assignable<absl::Cord::ChunkIterator>::value, "");
2300
-
2301
- static_assert(
2302
- std::is_same<
2303
- std::iterator_traits<absl::Cord::ChunkIterator>::iterator_category,
2304
- std::input_iterator_tag>::value,
2305
- "");
2306
- static_assert(
2307
- std::is_same<std::iterator_traits<absl::Cord::ChunkIterator>::value_type,
2308
- absl::string_view>::value,
2309
- "");
2310
- static_assert(
2311
- std::is_same<
2312
- std::iterator_traits<absl::Cord::ChunkIterator>::difference_type,
2313
- ptrdiff_t>::value,
2314
- "");
2315
- static_assert(
2316
- std::is_same<std::iterator_traits<absl::Cord::ChunkIterator>::pointer,
2317
- const absl::string_view*>::value,
2318
- "");
2319
- static_assert(
2320
- std::is_same<std::iterator_traits<absl::Cord::ChunkIterator>::reference,
2321
- absl::string_view>::value,
2322
- "");
2323
- }
2324
-
2325
- static void VerifyChunkIterator(const absl::Cord& cord,
2326
- size_t expected_chunks) {
2327
- EXPECT_EQ(cord.chunk_begin() == cord.chunk_end(), cord.empty()) << cord;
2328
- EXPECT_EQ(cord.chunk_begin() != cord.chunk_end(), !cord.empty());
2329
-
2330
- absl::Cord::ChunkRange range = cord.Chunks();
2331
- EXPECT_EQ(range.begin() == range.end(), cord.empty());
2332
- EXPECT_EQ(range.begin() != range.end(), !cord.empty());
2333
-
2334
- std::string content(cord);
2335
- size_t pos = 0;
2336
- auto pre_iter = cord.chunk_begin(), post_iter = cord.chunk_begin();
2337
- size_t n_chunks = 0;
2338
- while (pre_iter != cord.chunk_end() && post_iter != cord.chunk_end()) {
2339
- EXPECT_FALSE(pre_iter == cord.chunk_end()); // NOLINT: explicitly test ==
2340
- EXPECT_FALSE(post_iter == cord.chunk_end()); // NOLINT
2341
-
2342
- EXPECT_EQ(pre_iter, post_iter);
2343
- EXPECT_EQ(*pre_iter, *post_iter);
2344
-
2345
- EXPECT_EQ(pre_iter->data(), (*pre_iter).data());
2346
- EXPECT_EQ(pre_iter->size(), (*pre_iter).size());
2347
-
2348
- absl::string_view chunk = *pre_iter;
2349
- EXPECT_FALSE(chunk.empty());
2350
- EXPECT_LE(pos + chunk.size(), content.size());
2351
- EXPECT_EQ(absl::string_view(content.c_str() + pos, chunk.size()), chunk);
2352
-
2353
- int n_equal_iterators = 0;
2354
- for (absl::Cord::ChunkIterator it = range.begin(); it != range.end();
2355
- ++it) {
2356
- n_equal_iterators += static_cast<int>(it == pre_iter);
2357
- }
2358
- EXPECT_EQ(n_equal_iterators, 1);
2359
-
2360
- ++pre_iter;
2361
- EXPECT_EQ(*post_iter++, chunk);
2362
-
2363
- pos += chunk.size();
2364
- ++n_chunks;
2365
- }
2366
- EXPECT_EQ(expected_chunks, n_chunks);
2367
- EXPECT_EQ(pos, content.size());
2368
- EXPECT_TRUE(pre_iter == cord.chunk_end()); // NOLINT: explicitly test ==
2369
- EXPECT_TRUE(post_iter == cord.chunk_end()); // NOLINT
2370
- }
2371
-
2372
- TEST_P(CordTest, CordChunkIteratorOperations) {
2373
- absl::Cord empty_cord;
2374
- VerifyChunkIterator(empty_cord, 0);
2375
-
2376
- absl::Cord small_buffer_cord("small cord");
2377
- MaybeHarden(small_buffer_cord);
2378
- VerifyChunkIterator(small_buffer_cord, 1);
2379
-
2380
- absl::Cord flat_node_cord("larger than small buffer optimization");
2381
- MaybeHarden(flat_node_cord);
2382
- VerifyChunkIterator(flat_node_cord, 1);
2383
-
2384
- VerifyChunkIterator(MaybeHardened(absl::MakeFragmentedCord(
2385
- {"a ", "small ", "fragmented ", "cord ", "for ",
2386
- "testing ", "chunk ", "iterations."})),
2387
- 8);
2388
-
2389
- absl::Cord reused_nodes_cord(std::string(40, 'c'));
2390
- reused_nodes_cord.Prepend(absl::Cord(std::string(40, 'b')));
2391
- MaybeHarden(reused_nodes_cord);
2392
- reused_nodes_cord.Prepend(absl::Cord(std::string(40, 'a')));
2393
- size_t expected_chunks = 3;
2394
- for (int i = 0; i < 8; ++i) {
2395
- reused_nodes_cord.Prepend(reused_nodes_cord);
2396
- MaybeHarden(reused_nodes_cord);
2397
- expected_chunks *= 2;
2398
- VerifyChunkIterator(reused_nodes_cord, expected_chunks);
2399
- }
2400
-
2401
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
2402
- absl::Cord flat_cord(RandomLowercaseString(&rng, 256));
2403
- absl::Cord subcords;
2404
- for (int i = 0; i < 128; ++i) subcords.Prepend(flat_cord.Subcord(i, 128));
2405
- VerifyChunkIterator(subcords, 128);
2406
- }
2407
-
2408
-
2409
- TEST_P(CordTest, AdvanceAndReadOnDataEdge) {
2410
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
2411
- const std::string data = RandomLowercaseString(&rng, 2000);
2412
- for (bool as_flat : {true, false}) {
2413
- SCOPED_TRACE(as_flat ? "Flat" : "External");
2414
-
2415
- absl::Cord cord =
2416
- as_flat ? absl::Cord(data)
2417
- : absl::MakeCordFromExternal(data, [](absl::string_view) {});
2418
- auto it = cord.Chars().begin();
2419
- #if !defined(NDEBUG) || ABSL_OPTION_HARDENED
2420
- EXPECT_DEATH_IF_SUPPORTED(cord.AdvanceAndRead(&it, 2001), ".*");
2421
- #endif
2422
-
2423
- it = cord.Chars().begin();
2424
- absl::Cord frag = cord.AdvanceAndRead(&it, 2000);
2425
- EXPECT_EQ(frag, data);
2426
- EXPECT_TRUE(it == cord.Chars().end());
2427
-
2428
- it = cord.Chars().begin();
2429
- frag = cord.AdvanceAndRead(&it, 200);
2430
- EXPECT_EQ(frag, data.substr(0, 200));
2431
- EXPECT_FALSE(it == cord.Chars().end());
2432
-
2433
- frag = cord.AdvanceAndRead(&it, 1500);
2434
- EXPECT_EQ(frag, data.substr(200, 1500));
2435
- EXPECT_FALSE(it == cord.Chars().end());
2436
-
2437
- frag = cord.AdvanceAndRead(&it, 300);
2438
- EXPECT_EQ(frag, data.substr(1700, 300));
2439
- EXPECT_TRUE(it == cord.Chars().end());
2440
- }
2441
- }
2442
-
2443
- TEST_P(CordTest, AdvanceAndReadOnSubstringDataEdge) {
2444
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
2445
- const std::string data = RandomLowercaseString(&rng, 2500);
2446
- for (bool as_flat : {true, false}) {
2447
- SCOPED_TRACE(as_flat ? "Flat" : "External");
2448
-
2449
- absl::Cord cord =
2450
- as_flat ? absl::Cord(data)
2451
- : absl::MakeCordFromExternal(data, [](absl::string_view) {});
2452
- cord = cord.Subcord(200, 2000);
2453
- const std::string substr = data.substr(200, 2000);
2454
-
2455
- auto it = cord.Chars().begin();
2456
- #if !defined(NDEBUG) || ABSL_OPTION_HARDENED
2457
- EXPECT_DEATH_IF_SUPPORTED(cord.AdvanceAndRead(&it, 2001), ".*");
2458
- #endif
2459
-
2460
- it = cord.Chars().begin();
2461
- absl::Cord frag = cord.AdvanceAndRead(&it, 2000);
2462
- EXPECT_EQ(frag, substr);
2463
- EXPECT_TRUE(it == cord.Chars().end());
2464
-
2465
- it = cord.Chars().begin();
2466
- frag = cord.AdvanceAndRead(&it, 200);
2467
- EXPECT_EQ(frag, substr.substr(0, 200));
2468
- EXPECT_FALSE(it == cord.Chars().end());
2469
-
2470
- frag = cord.AdvanceAndRead(&it, 1500);
2471
- EXPECT_EQ(frag, substr.substr(200, 1500));
2472
- EXPECT_FALSE(it == cord.Chars().end());
2473
-
2474
- frag = cord.AdvanceAndRead(&it, 300);
2475
- EXPECT_EQ(frag, substr.substr(1700, 300));
2476
- EXPECT_TRUE(it == cord.Chars().end());
2477
- }
2478
- }
2479
-
2480
- TEST_P(CordTest, CharIteratorTraits) {
2481
- static_assert(std::is_copy_constructible<absl::Cord::CharIterator>::value,
2482
- "");
2483
- static_assert(std::is_copy_assignable<absl::Cord::CharIterator>::value, "");
2484
-
2485
- // Move semantics to satisfy swappable via std::swap
2486
- static_assert(std::is_move_constructible<absl::Cord::CharIterator>::value,
2487
- "");
2488
- static_assert(std::is_move_assignable<absl::Cord::CharIterator>::value, "");
2489
-
2490
- static_assert(
2491
- std::is_same<
2492
- std::iterator_traits<absl::Cord::CharIterator>::iterator_category,
2493
- std::input_iterator_tag>::value,
2494
- "");
2495
- static_assert(
2496
- std::is_same<std::iterator_traits<absl::Cord::CharIterator>::value_type,
2497
- char>::value,
2498
- "");
2499
- static_assert(
2500
- std::is_same<
2501
- std::iterator_traits<absl::Cord::CharIterator>::difference_type,
2502
- ptrdiff_t>::value,
2503
- "");
2504
- static_assert(
2505
- std::is_same<std::iterator_traits<absl::Cord::CharIterator>::pointer,
2506
- const char*>::value,
2507
- "");
2508
- static_assert(
2509
- std::is_same<std::iterator_traits<absl::Cord::CharIterator>::reference,
2510
- const char&>::value,
2511
- "");
2512
- }
2513
-
2514
- static void VerifyCharIterator(const absl::Cord& cord) {
2515
- EXPECT_EQ(cord.char_begin() == cord.char_end(), cord.empty());
2516
- EXPECT_EQ(cord.char_begin() != cord.char_end(), !cord.empty());
2517
-
2518
- absl::Cord::CharRange range = cord.Chars();
2519
- EXPECT_EQ(range.begin() == range.end(), cord.empty());
2520
- EXPECT_EQ(range.begin() != range.end(), !cord.empty());
2521
- EXPECT_EQ(absl::Cord::Distance(range.begin(), range.end()),
2522
- static_cast<ptrdiff_t>(cord.size()));
2523
- EXPECT_EQ(absl::Cord::Distance(range.end(), range.begin()),
2524
- -static_cast<ptrdiff_t>(cord.size()));
2525
-
2526
- size_t i = 0;
2527
- absl::Cord::CharIterator pre_iter = cord.char_begin();
2528
- absl::Cord::CharIterator post_iter = cord.char_begin();
2529
- std::string content(cord);
2530
- while (pre_iter != cord.char_end() && post_iter != cord.char_end()) {
2531
- EXPECT_FALSE(pre_iter == cord.char_end()); // NOLINT: explicitly test ==
2532
- EXPECT_FALSE(post_iter == cord.char_end()); // NOLINT
2533
-
2534
- EXPECT_LT(i, cord.size());
2535
- EXPECT_EQ(content[i], *pre_iter);
2536
-
2537
- EXPECT_EQ(pre_iter, post_iter);
2538
- EXPECT_EQ(*pre_iter, *post_iter);
2539
- EXPECT_EQ(&*pre_iter, &*post_iter);
2540
-
2541
- const char* character_address = &*pre_iter;
2542
- absl::Cord::CharIterator copy = pre_iter;
2543
- ++copy;
2544
- EXPECT_EQ(character_address, &*pre_iter);
2545
-
2546
- int n_equal_iterators = 0;
2547
- for (absl::Cord::CharIterator it = range.begin(); it != range.end(); ++it) {
2548
- n_equal_iterators += static_cast<int>(it == pre_iter);
2549
- }
2550
- EXPECT_EQ(n_equal_iterators, 1);
2551
-
2552
- absl::Cord::CharIterator advance_iter = range.begin();
2553
- absl::Cord::Advance(&advance_iter, i);
2554
- EXPECT_EQ(pre_iter, advance_iter);
2555
- EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
2556
- static_cast<ptrdiff_t>(i));
2557
-
2558
- advance_iter = range.begin();
2559
- EXPECT_EQ(absl::Cord::AdvanceAndRead(&advance_iter, i), cord.Subcord(0, i));
2560
- EXPECT_EQ(pre_iter, advance_iter);
2561
- EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
2562
- static_cast<ptrdiff_t>(i));
2563
-
2564
- advance_iter = pre_iter;
2565
- absl::Cord::Advance(&advance_iter, cord.size() - i);
2566
- EXPECT_EQ(range.end(), advance_iter);
2567
- EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
2568
- static_cast<ptrdiff_t>(cord.size()));
2569
- EXPECT_EQ(absl::Cord::Distance(advance_iter, range.end()), 0);
2570
-
2571
- advance_iter = pre_iter;
2572
- EXPECT_EQ(absl::Cord::AdvanceAndRead(&advance_iter, cord.size() - i),
2573
- cord.Subcord(i, cord.size() - i));
2574
- EXPECT_EQ(range.end(), advance_iter);
2575
- EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
2576
- static_cast<ptrdiff_t>(cord.size()));
2577
- EXPECT_EQ(absl::Cord::Distance(advance_iter, range.end()), 0);
2578
-
2579
- ++i;
2580
- ++pre_iter;
2581
- post_iter++;
2582
- }
2583
- EXPECT_EQ(i, cord.size());
2584
- EXPECT_TRUE(pre_iter == cord.char_end()); // NOLINT: explicitly test ==
2585
- EXPECT_TRUE(post_iter == cord.char_end()); // NOLINT
2586
-
2587
- absl::Cord::CharIterator zero_advanced_end = cord.char_end();
2588
- absl::Cord::Advance(&zero_advanced_end, 0);
2589
- EXPECT_EQ(zero_advanced_end, cord.char_end());
2590
-
2591
- absl::Cord::CharIterator it = cord.char_begin();
2592
- for (absl::string_view chunk : cord.Chunks()) {
2593
- while (!chunk.empty()) {
2594
- EXPECT_EQ(absl::Cord::ChunkRemaining(it), chunk);
2595
- chunk.remove_prefix(1);
2596
- ++it;
2597
- }
2598
- }
2599
- }
2600
-
2601
- TEST_P(CordTest, CharIteratorOperations) {
2602
- absl::Cord empty_cord;
2603
- VerifyCharIterator(empty_cord);
2604
-
2605
- absl::Cord small_buffer_cord("small cord");
2606
- MaybeHarden(small_buffer_cord);
2607
- VerifyCharIterator(small_buffer_cord);
2608
-
2609
- absl::Cord flat_node_cord("larger than small buffer optimization");
2610
- MaybeHarden(flat_node_cord);
2611
- VerifyCharIterator(flat_node_cord);
2612
-
2613
- VerifyCharIterator(MaybeHardened(
2614
- absl::MakeFragmentedCord({"a ", "small ", "fragmented ", "cord ", "for ",
2615
- "testing ", "character ", "iteration."})));
2616
-
2617
- absl::Cord reused_nodes_cord("ghi");
2618
- reused_nodes_cord.Prepend(absl::Cord("def"));
2619
- reused_nodes_cord.Prepend(absl::Cord("abc"));
2620
- for (int i = 0; i < 4; ++i) {
2621
- reused_nodes_cord.Prepend(reused_nodes_cord);
2622
- MaybeHarden(reused_nodes_cord);
2623
- VerifyCharIterator(reused_nodes_cord);
2624
- }
2625
-
2626
- RandomEngine rng(GTEST_FLAG_GET(random_seed));
2627
- absl::Cord flat_cord(RandomLowercaseString(&rng, 256));
2628
- absl::Cord subcords;
2629
- for (int i = 0; i < 4; ++i) {
2630
- subcords.Prepend(flat_cord.Subcord(16 * i, 128));
2631
- MaybeHarden(subcords);
2632
- }
2633
- VerifyCharIterator(subcords);
2634
- }
2635
-
2636
- TEST_P(CordTest, CharIteratorAdvanceAndRead) {
2637
- // Create a Cord holding 6 flats of 2500 bytes each, and then iterate over it
2638
- // reading 150, 1500, 2500 and 3000 bytes. This will result in all possible
2639
- // partial, full and straddled read combinations including reads below
2640
- // kMaxBytesToCopy. b/197776822 surfaced a bug for a specific partial, small
2641
- // read 'at end' on Cord which caused a failure on attempting to read past the
2642
- // end in CordRepBtreeReader which was not covered by any existing test.
2643
- constexpr int kBlocks = 6;
2644
- constexpr size_t kBlockSize = 2500;
2645
- constexpr size_t kChunkSize1 = 1500;
2646
- constexpr size_t kChunkSize2 = 2500;
2647
- constexpr size_t kChunkSize3 = 3000;
2648
- constexpr size_t kChunkSize4 = 150;
2649
- RandomEngine rng;
2650
- std::string data = RandomLowercaseString(&rng, kBlocks * kBlockSize);
2651
- absl::Cord cord;
2652
- for (int i = 0; i < kBlocks; ++i) {
2653
- const std::string block = data.substr(i * kBlockSize, kBlockSize);
2654
- cord.Append(absl::Cord(block));
2655
- }
2656
-
2657
- MaybeHarden(cord);
2658
-
2659
-
2660
- for (size_t chunk_size :
2661
- {kChunkSize1, kChunkSize2, kChunkSize3, kChunkSize4}) {
2662
- absl::Cord::CharIterator it = cord.char_begin();
2663
- size_t it_remaining = cord.size();
2664
- size_t it_advanced = 0;
2665
- size_t offset = 0;
2666
- while (offset < data.length()) {
2667
- EXPECT_EQ(absl::Cord::Distance(it, cord.char_end()), it_remaining);
2668
- EXPECT_EQ(absl::Cord::Distance(cord.char_begin(), it), it_advanced);
2669
- const size_t n = std::min<size_t>(data.length() - offset, chunk_size);
2670
- absl::Cord chunk = cord.AdvanceAndRead(&it, n);
2671
- ASSERT_EQ(chunk.size(), n);
2672
- ASSERT_EQ(chunk.Compare(data.substr(offset, n)), 0);
2673
- offset += n;
2674
- it_remaining -= n;
2675
- it_advanced += n;
2676
- EXPECT_EQ(absl::Cord::Distance(it, cord.char_end()), it_remaining);
2677
- EXPECT_EQ(absl::Cord::Distance(cord.char_begin(), it), it_advanced);
2678
- }
2679
- }
2680
- }
2681
-
2682
- TEST_P(CordTest, StreamingOutput) {
2683
- absl::Cord c =
2684
- absl::MakeFragmentedCord({"A ", "small ", "fragmented ", "Cord", "."});
2685
- MaybeHarden(c);
2686
- std::stringstream output;
2687
- output << c;
2688
- EXPECT_EQ("A small fragmented Cord.", output.str());
2689
- }
2690
-
2691
- TEST_P(CordTest, ForEachChunk) {
2692
- for (int num_elements : {1, 10, 200}) {
2693
- SCOPED_TRACE(num_elements);
2694
- std::vector<std::string> cord_chunks;
2695
- for (int i = 0; i < num_elements; ++i) {
2696
- cord_chunks.push_back(absl::StrCat("[", i, "]"));
2697
- }
2698
- absl::Cord c = absl::MakeFragmentedCord(cord_chunks);
2699
- MaybeHarden(c);
2700
-
2701
- std::vector<std::string> iterated_chunks;
2702
- absl::CordTestPeer::ForEachChunk(c,
2703
- [&iterated_chunks](absl::string_view sv) {
2704
- iterated_chunks.emplace_back(sv);
2705
- });
2706
- EXPECT_EQ(iterated_chunks, cord_chunks);
2707
- }
2708
- }
2709
-
2710
- TEST_P(CordTest, SmallBufferAssignFromOwnData) {
2711
- constexpr size_t kMaxInline = 15;
2712
- std::string contents = "small buff cord";
2713
- EXPECT_EQ(contents.size(), kMaxInline);
2714
- for (size_t pos = 0; pos < contents.size(); ++pos) {
2715
- for (size_t count = contents.size() - pos; count > 0; --count) {
2716
- absl::Cord c(contents);
2717
- MaybeHarden(c);
2718
- absl::string_view flat = c.Flatten();
2719
- c = flat.substr(pos, count);
2720
- EXPECT_EQ(c, contents.substr(pos, count))
2721
- << "pos = " << pos << "; count = " << count;
2722
- }
2723
- }
2724
- }
2725
-
2726
- TEST_P(CordTest, Format) {
2727
- absl::Cord c;
2728
- absl::Format(&c, "There were %04d little %s.", 3, "pigs");
2729
- EXPECT_EQ(c, "There were 0003 little pigs.");
2730
- MaybeHarden(c);
2731
- absl::Format(&c, "And %-3llx bad wolf!", 1);
2732
- MaybeHarden(c);
2733
- EXPECT_EQ(c, "There were 0003 little pigs.And 1 bad wolf!");
2734
- }
2735
-
2736
- TEST_P(CordTest, Stringify) {
2737
- absl::Cord c =
2738
- absl::MakeFragmentedCord({"A ", "small ", "fragmented ", "Cord", "."});
2739
- MaybeHarden(c);
2740
- EXPECT_EQ(absl::StrCat(c), "A small fragmented Cord.");
2741
- }
2742
-
2743
- TEST_P(CordTest, Hardening) {
2744
- absl::Cord cord("hello");
2745
- MaybeHarden(cord);
2746
-
2747
- // These statement should abort the program in all builds modes.
2748
- EXPECT_DEATH_IF_SUPPORTED(cord.RemovePrefix(6), "");
2749
- EXPECT_DEATH_IF_SUPPORTED(cord.RemoveSuffix(6), "");
2750
-
2751
- bool test_hardening = false;
2752
- ABSL_HARDENING_ASSERT([&]() {
2753
- // This only runs when ABSL_HARDENING_ASSERT is active.
2754
- test_hardening = true;
2755
- return true;
2756
- }());
2757
- if (!test_hardening) return;
2758
-
2759
- EXPECT_DEATH_IF_SUPPORTED(cord[5], "");
2760
- EXPECT_DEATH_IF_SUPPORTED(*cord.chunk_end(), "");
2761
- EXPECT_DEATH_IF_SUPPORTED(static_cast<void>(cord.chunk_end()->empty()), "");
2762
- EXPECT_DEATH_IF_SUPPORTED(++cord.chunk_end(), "");
2763
- }
2764
-
2765
- // This test mimics a specific (and rare) application repeatedly splitting a
2766
- // cord, inserting (overwriting) a string value, and composing a new cord from
2767
- // the three pieces. This is hostile towards a Btree implementation: A split of
2768
- // a node at any level is likely to have the right-most edge of the left split,
2769
- // and the left-most edge of the right split shared. For example, splitting a
2770
- // leaf node with 6 edges will result likely in a 1-6, 2-5, 3-4, etc. split,
2771
- // sharing the 'split node'. When recomposing such nodes, we 'injected' an edge
2772
- // in that node. As this happens with some probability on each level of the
2773
- // tree, this will quickly grow the tree until it reaches maximum height.
2774
- TEST_P(CordTest, BtreeHostileSplitInsertJoin) {
2775
- absl::BitGen bitgen;
2776
-
2777
- // Start with about 1GB of data
2778
- std::string data(1 << 10, 'x');
2779
- absl::Cord buffer(data);
2780
- absl::Cord cord;
2781
- for (int i = 0; i < 1000000; ++i) {
2782
- cord.Append(buffer);
2783
- }
2784
-
2785
- for (int j = 0; j < 1000; ++j) {
2786
- MaybeHarden(cord);
2787
- size_t offset = absl::Uniform(bitgen, 0u, cord.size());
2788
- size_t length = absl::Uniform(bitgen, 100u, data.size());
2789
- if (cord.size() == offset) {
2790
- cord.Append(absl::string_view(data.data(), length));
2791
- } else {
2792
- absl::Cord suffix;
2793
- if (offset + length < cord.size()) {
2794
- suffix = cord;
2795
- suffix.RemovePrefix(offset + length);
2796
- }
2797
- if (cord.size() > offset) {
2798
- cord.RemoveSuffix(cord.size() - offset);
2799
- }
2800
- cord.Append(absl::string_view(data.data(), length));
2801
- if (!suffix.empty()) {
2802
- cord.Append(suffix);
2803
- }
2804
- }
2805
- }
2806
- }
2807
-
2808
- class AfterExitCordTester {
2809
- public:
2810
- bool Set(absl::Cord* cord, absl::string_view expected) {
2811
- cord_ = cord;
2812
- expected_ = expected;
2813
- return true;
2814
- }
2815
-
2816
- ~AfterExitCordTester() {
2817
- EXPECT_EQ(*cord_, expected_);
2818
- }
2819
- private:
2820
- absl::Cord* cord_;
2821
- absl::string_view expected_;
2822
- };
2823
-
2824
- template <typename Str>
2825
- void TestAfterExit(Str) {
2826
- const auto expected = Str::value;
2827
- // Defined before `cord` to be destroyed after it.
2828
- static AfterExitCordTester exit_tester; // NOLINT
2829
- static absl::NoDestructor<absl::Cord> cord_leaker(Str{});
2830
- // cord_leaker is static, so this reference will remain valid through the end
2831
- // of program execution.
2832
- static absl::Cord& cord = *cord_leaker;
2833
- static bool init_exit_tester = exit_tester.Set(&cord, expected);
2834
- (void)init_exit_tester;
2835
-
2836
- EXPECT_EQ(cord, expected);
2837
- // Copy the object and test the copy, and the original.
2838
- {
2839
- absl::Cord copy = cord;
2840
- EXPECT_EQ(copy, expected);
2841
- }
2842
- // The original still works
2843
- EXPECT_EQ(cord, expected);
2844
-
2845
- // Try making adding more structure to the tree.
2846
- {
2847
- absl::Cord copy = cord;
2848
- std::string expected_copy(expected);
2849
- for (int i = 0; i < 10; ++i) {
2850
- copy.Append(cord);
2851
- absl::StrAppend(&expected_copy, expected);
2852
- EXPECT_EQ(copy, expected_copy);
2853
- }
2854
- }
2855
-
2856
- // Make sure we are using the right branch during constant evaluation.
2857
- EXPECT_EQ(absl::CordTestPeer::IsTree(cord), cord.size() >= 16);
2858
-
2859
- for (int i = 0; i < 10; ++i) {
2860
- // Make a few more Cords from the same global rep.
2861
- // This tests what happens when the refcount for it gets below 1.
2862
- EXPECT_EQ(expected, absl::Cord(Str{}));
2863
- }
2864
- }
2865
-
2866
- constexpr int SimpleStrlen(const char* p) {
2867
- return *p ? 1 + SimpleStrlen(p + 1) : 0;
2868
- }
2869
-
2870
- struct ShortView {
2871
- constexpr absl::string_view operator()() const {
2872
- return absl::string_view("SSO string", SimpleStrlen("SSO string"));
2873
- }
2874
- };
2875
-
2876
- struct LongView {
2877
- constexpr absl::string_view operator()() const {
2878
- return absl::string_view("String that does not fit SSO.",
2879
- SimpleStrlen("String that does not fit SSO."));
2880
- }
2881
- };
2882
-
2883
-
2884
- TEST_P(CordTest, AfterExit) {
2885
- TestAfterExit(absl::strings_internal::MakeStringConstant(ShortView{}));
2886
- TestAfterExit(absl::strings_internal::MakeStringConstant(LongView{}));
2887
- }
2888
-
2889
- namespace {
2890
-
2891
- // Test helper that generates a populated cord for future manipulation.
2892
- //
2893
- // By test convention, all generated cords begin with the characters "abcde" at
2894
- // the start of the first chunk.
2895
- class PopulatedCordFactory {
2896
- public:
2897
- constexpr PopulatedCordFactory(absl::string_view name,
2898
- absl::Cord (*generator)())
2899
- : name_(name), generator_(generator) {}
2900
-
2901
- absl::string_view Name() const { return name_; }
2902
- absl::Cord Generate() const { return generator_(); }
2903
-
2904
- private:
2905
- absl::string_view name_;
2906
- absl::Cord (*generator_)();
2907
- };
2908
-
2909
- // clang-format off
2910
- // This array is constant-initialized in conformant compilers.
2911
- PopulatedCordFactory cord_factories[] = {
2912
- {"sso", [] { return absl::Cord("abcde"); }},
2913
- {"flat", [] {
2914
- // Too large to live in SSO space, but small enough to be a simple FLAT.
2915
- absl::Cord flat(absl::StrCat("abcde", std::string(1000, 'x')));
2916
- flat.Flatten();
2917
- return flat;
2918
- }},
2919
- {"external", [] {
2920
- // A cheat: we are using a string literal as the external storage, so a
2921
- // no-op releaser is correct here.
2922
- return absl::MakeCordFromExternal("abcde External!", []{});
2923
- }},
2924
- {"external substring", [] {
2925
- // A cheat: we are using a string literal as the external storage, so a
2926
- // no-op releaser is correct here.
2927
- absl::Cord ext = absl::MakeCordFromExternal("-abcde External!", []{});
2928
- return absl::CordTestPeer::MakeSubstring(ext, 1, ext.size() - 1);
2929
- }},
2930
- {"substring", [] {
2931
- absl::Cord flat(absl::StrCat("-abcde", std::string(1000, 'x')));
2932
- flat.Flatten();
2933
- return flat.Subcord(1, 998);
2934
- }},
2935
- {"fragmented", [] {
2936
- std::string fragment = absl::StrCat("abcde", std::string(195, 'x'));
2937
- std::vector<std::string> fragments(200, fragment);
2938
- absl::Cord cord = absl::MakeFragmentedCord(fragments);
2939
- assert(cord.size() == 40000);
2940
- return cord;
2941
- }},
2942
- };
2943
- // clang-format on
2944
-
2945
- // Test helper that can mutate a cord, and possibly undo the mutation, for
2946
- // testing.
2947
- class CordMutator {
2948
- public:
2949
- constexpr CordMutator(absl::string_view name, void (*mutate)(absl::Cord&),
2950
- void (*undo)(absl::Cord&) = nullptr)
2951
- : name_(name), mutate_(mutate), undo_(undo) {}
2952
-
2953
- absl::string_view Name() const { return name_; }
2954
- void Mutate(absl::Cord& cord) const { mutate_(cord); }
2955
- bool CanUndo() const { return undo_ != nullptr; }
2956
- void Undo(absl::Cord& cord) const { undo_(cord); }
2957
-
2958
- private:
2959
- absl::string_view name_;
2960
- void (*mutate_)(absl::Cord&);
2961
- void (*undo_)(absl::Cord&);
2962
- };
2963
-
2964
- // clang-format off
2965
- // This array is constant-initialized in conformant compilers.
2966
- CordMutator cord_mutators[] = {
2967
- {"clear", [](absl::Cord& c) { c.Clear(); }},
2968
- {"overwrite", [](absl::Cord& c) { c = "overwritten"; }},
2969
- {
2970
- "append string",
2971
- [](absl::Cord& c) { c.Append("0123456789"); },
2972
- [](absl::Cord& c) { c.RemoveSuffix(10); }
2973
- },
2974
- {
2975
- "append cord",
2976
- [](absl::Cord& c) {
2977
- c.Append(absl::MakeFragmentedCord({"12345", "67890"}));
2978
- },
2979
- [](absl::Cord& c) { c.RemoveSuffix(10); }
2980
- },
2981
- {
2982
- "append checksummed cord",
2983
- [](absl::Cord& c) {
2984
- absl::Cord to_append = absl::MakeFragmentedCord({"12345", "67890"});
2985
- to_append.SetExpectedChecksum(999);
2986
- c.Append(to_append);
2987
- },
2988
- [](absl::Cord& c) { c.RemoveSuffix(10); }
2989
- },
2990
- {
2991
- "append self",
2992
- [](absl::Cord& c) { c.Append(c); },
2993
- [](absl::Cord& c) { c.RemoveSuffix(c.size() / 2); }
2994
- },
2995
- {
2996
- "append empty string",
2997
- [](absl::Cord& c) { c.Append(""); },
2998
- [](absl::Cord& c) { }
2999
- },
3000
- {
3001
- "append empty cord",
3002
- [](absl::Cord& c) { c.Append(absl::Cord()); },
3003
- [](absl::Cord& c) { }
3004
- },
3005
- {
3006
- "append empty checksummed cord",
3007
- [](absl::Cord& c) {
3008
- absl::Cord to_append;
3009
- to_append.SetExpectedChecksum(999);
3010
- c.Append(to_append);
3011
- },
3012
- [](absl::Cord& c) { }
3013
- },
3014
- {
3015
- "prepend string",
3016
- [](absl::Cord& c) { c.Prepend("9876543210"); },
3017
- [](absl::Cord& c) { c.RemovePrefix(10); }
3018
- },
3019
- {
3020
- "prepend cord",
3021
- [](absl::Cord& c) {
3022
- c.Prepend(absl::MakeFragmentedCord({"98765", "43210"}));
3023
- },
3024
- [](absl::Cord& c) { c.RemovePrefix(10); }
3025
- },
3026
- {
3027
- "prepend checksummed cord",
3028
- [](absl::Cord& c) {
3029
- absl::Cord to_prepend = absl::MakeFragmentedCord({"98765", "43210"});
3030
- to_prepend.SetExpectedChecksum(999);
3031
- c.Prepend(to_prepend);
3032
- },
3033
- [](absl::Cord& c) { c.RemovePrefix(10); }
3034
- },
3035
- {
3036
- "prepend empty string",
3037
- [](absl::Cord& c) { c.Prepend(""); },
3038
- [](absl::Cord& c) { }
3039
- },
3040
- {
3041
- "prepend empty cord",
3042
- [](absl::Cord& c) { c.Prepend(absl::Cord()); },
3043
- [](absl::Cord& c) { }
3044
- },
3045
- {
3046
- "prepend empty checksummed cord",
3047
- [](absl::Cord& c) {
3048
- absl::Cord to_prepend;
3049
- to_prepend.SetExpectedChecksum(999);
3050
- c.Prepend(to_prepend);
3051
- },
3052
- [](absl::Cord& c) { }
3053
- },
3054
- {
3055
- "prepend self",
3056
- [](absl::Cord& c) { c.Prepend(c); },
3057
- [](absl::Cord& c) { c.RemovePrefix(c.size() / 2); }
3058
- },
3059
- {"remove prefix", [](absl::Cord& c) { c.RemovePrefix(c.size() / 2); }},
3060
- {"remove suffix", [](absl::Cord& c) { c.RemoveSuffix(c.size() / 2); }},
3061
- {"remove 0-prefix", [](absl::Cord& c) { c.RemovePrefix(0); }},
3062
- {"remove 0-suffix", [](absl::Cord& c) { c.RemoveSuffix(0); }},
3063
- {"subcord", [](absl::Cord& c) { c = c.Subcord(1, c.size() - 2); }},
3064
- {
3065
- "swap inline",
3066
- [](absl::Cord& c) {
3067
- absl::Cord other("swap");
3068
- c.swap(other);
3069
- }
3070
- },
3071
- {
3072
- "swap tree",
3073
- [](absl::Cord& c) {
3074
- absl::Cord other(std::string(10000, 'x'));
3075
- c.swap(other);
3076
- }
3077
- },
3078
- };
3079
- // clang-format on
3080
- } // namespace
3081
-
3082
- TEST_P(CordTest, ExpectedChecksum) {
3083
- for (const PopulatedCordFactory& factory : cord_factories) {
3084
- SCOPED_TRACE(factory.Name());
3085
- for (bool shared : {false, true}) {
3086
- SCOPED_TRACE(shared);
3087
-
3088
- absl::Cord shared_cord_source = factory.Generate();
3089
- auto make_instance = [=] {
3090
- return shared ? shared_cord_source : factory.Generate();
3091
- };
3092
-
3093
- const absl::Cord base_value = factory.Generate();
3094
- const std::string base_value_as_string(factory.Generate().Flatten());
3095
-
3096
- absl::Cord c1 = make_instance();
3097
- EXPECT_FALSE(c1.ExpectedChecksum().has_value());
3098
-
3099
- // Setting an expected checksum works, and retains the cord's bytes
3100
- c1.SetExpectedChecksum(12345);
3101
- EXPECT_EQ(c1.ExpectedChecksum().value_or(0), 12345);
3102
- EXPECT_EQ(c1, base_value);
3103
-
3104
- // Test that setting an expected checksum again doesn't crash or leak
3105
- // memory.
3106
- c1.SetExpectedChecksum(12345);
3107
- EXPECT_EQ(c1.ExpectedChecksum().value_or(0), 12345);
3108
- EXPECT_EQ(c1, base_value);
3109
-
3110
- // CRC persists through copies, assignments, and moves:
3111
- absl::Cord c1_copy_construct = c1;
3112
- EXPECT_EQ(c1_copy_construct.ExpectedChecksum().value_or(0), 12345);
3113
-
3114
- absl::Cord c1_copy_assign;
3115
- c1_copy_assign = c1;
3116
- EXPECT_EQ(c1_copy_assign.ExpectedChecksum().value_or(0), 12345);
3117
-
3118
- absl::Cord c1_move(std::move(c1_copy_assign));
3119
- EXPECT_EQ(c1_move.ExpectedChecksum().value_or(0), 12345);
3120
-
3121
- EXPECT_EQ(c1.ExpectedChecksum().value_or(0), 12345);
3122
-
3123
- // A CRC Cord compares equal to its non-CRC value.
3124
- EXPECT_EQ(c1, make_instance());
3125
-
3126
- for (const CordMutator& mutator : cord_mutators) {
3127
- SCOPED_TRACE(mutator.Name());
3128
-
3129
- // Test that mutating a cord removes its stored checksum
3130
- absl::Cord c2 = make_instance();
3131
- c2.SetExpectedChecksum(24680);
3132
-
3133
- mutator.Mutate(c2);
3134
-
3135
- if (c1 == c2) {
3136
- // Not a mutation (for example, appending the empty string).
3137
- // Whether the checksum is removed is not defined.
3138
- continue;
3139
- }
3140
-
3141
- EXPECT_EQ(c2.ExpectedChecksum(), absl::nullopt);
3142
-
3143
- if (mutator.CanUndo()) {
3144
- // Undoing an operation should not restore the checksum
3145
- mutator.Undo(c2);
3146
- EXPECT_EQ(c2, base_value);
3147
- EXPECT_EQ(c2.ExpectedChecksum(), absl::nullopt);
3148
- }
3149
- }
3150
-
3151
- absl::Cord c3 = make_instance();
3152
- c3.SetExpectedChecksum(999);
3153
- const absl::Cord& cc3 = c3;
3154
-
3155
- // Test that all cord reading operations function in the face of an
3156
- // expected checksum.
3157
-
3158
- // Test data precondition
3159
- ASSERT_TRUE(cc3.StartsWith("abcde"));
3160
-
3161
- EXPECT_EQ(cc3.size(), base_value_as_string.size());
3162
- EXPECT_FALSE(cc3.empty());
3163
- EXPECT_EQ(cc3.Compare(base_value), 0);
3164
- EXPECT_EQ(cc3.Compare(base_value_as_string), 0);
3165
- EXPECT_EQ(cc3.Compare("wxyz"), -1);
3166
- EXPECT_EQ(cc3.Compare(absl::Cord("wxyz")), -1);
3167
- EXPECT_EQ(cc3.Compare("aaaa"), 1);
3168
- EXPECT_EQ(cc3.Compare(absl::Cord("aaaa")), 1);
3169
- EXPECT_EQ(absl::Cord("wxyz").Compare(cc3), 1);
3170
- EXPECT_EQ(absl::Cord("aaaa").Compare(cc3), -1);
3171
- EXPECT_TRUE(cc3.StartsWith("abcd"));
3172
- EXPECT_EQ(std::string(cc3), base_value_as_string);
3173
-
3174
- std::string dest;
3175
- absl::CopyCordToString(cc3, &dest);
3176
- EXPECT_EQ(dest, base_value_as_string);
3177
-
3178
- bool first_pass = true;
3179
- for (absl::string_view chunk : cc3.Chunks()) {
3180
- if (first_pass) {
3181
- EXPECT_TRUE(absl::StartsWith(chunk, "abcde"));
3182
- }
3183
- first_pass = false;
3184
- }
3185
- first_pass = true;
3186
- for (char ch : cc3.Chars()) {
3187
- if (first_pass) {
3188
- EXPECT_EQ(ch, 'a');
3189
- }
3190
- first_pass = false;
3191
- }
3192
- EXPECT_TRUE(absl::StartsWith(*cc3.chunk_begin(), "abcde"));
3193
- EXPECT_EQ(*cc3.char_begin(), 'a');
3194
-
3195
- auto char_it = cc3.char_begin();
3196
- absl::Cord::Advance(&char_it, 2);
3197
- EXPECT_EQ(absl::Cord::AdvanceAndRead(&char_it, 2), "cd");
3198
- EXPECT_EQ(*char_it, 'e');
3199
- char_it = cc3.char_begin();
3200
- absl::Cord::Advance(&char_it, 2);
3201
- EXPECT_TRUE(absl::StartsWith(absl::Cord::ChunkRemaining(char_it), "cde"));
3202
-
3203
- EXPECT_EQ(cc3[0], 'a');
3204
- EXPECT_EQ(cc3[4], 'e');
3205
- EXPECT_EQ(absl::HashOf(cc3), absl::HashOf(base_value));
3206
- EXPECT_EQ(absl::HashOf(cc3), absl::HashOf(base_value_as_string));
3207
- }
3208
- }
3209
- }
3210
-
3211
- // Test the special cases encountered with an empty checksummed cord.
3212
- TEST_P(CordTest, ChecksummedEmptyCord) {
3213
- absl::Cord c1;
3214
- EXPECT_FALSE(c1.ExpectedChecksum().has_value());
3215
-
3216
- // Setting an expected checksum works.
3217
- c1.SetExpectedChecksum(12345);
3218
- EXPECT_EQ(c1.ExpectedChecksum().value_or(0), 12345);
3219
- EXPECT_EQ(c1, "");
3220
- EXPECT_TRUE(c1.empty());
3221
-
3222
- // Test that setting an expected checksum again doesn't crash or leak memory.
3223
- c1.SetExpectedChecksum(12345);
3224
- EXPECT_EQ(c1.ExpectedChecksum().value_or(0), 12345);
3225
- EXPECT_EQ(c1, "");
3226
- EXPECT_TRUE(c1.empty());
3227
-
3228
- // CRC persists through copies, assignments, and moves:
3229
- absl::Cord c1_copy_construct = c1;
3230
- EXPECT_EQ(c1_copy_construct.ExpectedChecksum().value_or(0), 12345);
3231
-
3232
- absl::Cord c1_copy_assign;
3233
- c1_copy_assign = c1;
3234
- EXPECT_EQ(c1_copy_assign.ExpectedChecksum().value_or(0), 12345);
3235
-
3236
- absl::Cord c1_move(std::move(c1_copy_assign));
3237
- EXPECT_EQ(c1_move.ExpectedChecksum().value_or(0), 12345);
3238
-
3239
- EXPECT_EQ(c1.ExpectedChecksum().value_or(0), 12345);
3240
-
3241
- // A CRC Cord compares equal to its non-CRC value.
3242
- EXPECT_EQ(c1, absl::Cord());
3243
-
3244
- for (const CordMutator& mutator : cord_mutators) {
3245
- SCOPED_TRACE(mutator.Name());
3246
-
3247
- // Exercise mutating an empty checksummed cord to catch crashes and exercise
3248
- // memory sanitizers.
3249
- absl::Cord c2;
3250
- c2.SetExpectedChecksum(24680);
3251
- mutator.Mutate(c2);
3252
-
3253
- if (c2.empty()) {
3254
- // Not a mutation
3255
- continue;
3256
- }
3257
- EXPECT_EQ(c2.ExpectedChecksum(), absl::nullopt);
3258
-
3259
- if (mutator.CanUndo()) {
3260
- mutator.Undo(c2);
3261
- }
3262
- }
3263
-
3264
- absl::Cord c3;
3265
- c3.SetExpectedChecksum(999);
3266
- const absl::Cord& cc3 = c3;
3267
-
3268
- // Test that all cord reading operations function in the face of an
3269
- // expected checksum.
3270
- EXPECT_TRUE(cc3.StartsWith(""));
3271
- EXPECT_TRUE(cc3.EndsWith(""));
3272
- EXPECT_TRUE(cc3.empty());
3273
- EXPECT_EQ(cc3, "");
3274
- EXPECT_EQ(cc3, absl::Cord());
3275
- EXPECT_EQ(cc3.size(), 0);
3276
- EXPECT_EQ(cc3.Compare(absl::Cord()), 0);
3277
- EXPECT_EQ(cc3.Compare(c1), 0);
3278
- EXPECT_EQ(cc3.Compare(cc3), 0);
3279
- EXPECT_EQ(cc3.Compare(""), 0);
3280
- EXPECT_EQ(cc3.Compare("wxyz"), -1);
3281
- EXPECT_EQ(cc3.Compare(absl::Cord("wxyz")), -1);
3282
- EXPECT_EQ(absl::Cord("wxyz").Compare(cc3), 1);
3283
- EXPECT_EQ(std::string(cc3), "");
3284
-
3285
- std::string dest;
3286
- absl::CopyCordToString(cc3, &dest);
3287
- EXPECT_EQ(dest, "");
3288
-
3289
- for (absl::string_view chunk : cc3.Chunks()) { // NOLINT(unreachable loop)
3290
- static_cast<void>(chunk);
3291
- GTEST_FAIL() << "no chunks expected";
3292
- }
3293
- EXPECT_TRUE(cc3.chunk_begin() == cc3.chunk_end());
3294
-
3295
- for (char ch : cc3.Chars()) { // NOLINT(unreachable loop)
3296
- static_cast<void>(ch);
3297
- GTEST_FAIL() << "no chars expected";
3298
- }
3299
- EXPECT_TRUE(cc3.char_begin() == cc3.char_end());
3300
-
3301
- EXPECT_EQ(cc3.TryFlat(), "");
3302
- EXPECT_EQ(absl::HashOf(c3), absl::HashOf(absl::Cord()));
3303
- EXPECT_EQ(absl::HashOf(c3), absl::HashOf(absl::string_view()));
3304
- }
3305
-
3306
- // This must not be static to avoid aggressive optimizations.
3307
- ABSL_ATTRIBUTE_WEAK
3308
- size_t FalseReport(const absl::Cord& a, bool f);
3309
-
3310
- ABSL_ATTRIBUTE_NOINLINE
3311
- size_t FalseReport(const absl::Cord& a, bool f) {
3312
- absl::Cord b;
3313
- const absl::Cord& ref = f ? b : a;
3314
- // Test that sanitizers report nothing here. Without
3315
- // InlineData::Rep::annotated_this() compiler can unconditionally load
3316
- // poisoned parts, assuming that local variable is fully accessible.
3317
- return ref.size();
3318
- }
3319
-
3320
- TEST(CordSanitizerTest, SanitizesCordFalseReport) {
3321
- absl::Cord c;
3322
- for (int i = 0; i < 1000; ++i) c.Append("a");
3323
- FalseReport(c, false);
3324
- }
3325
-
3326
- TEST(CrcCordTest, ChecksummedEmptyCordEstimateMemoryUsage) {
3327
- absl::Cord cord;
3328
- cord.SetExpectedChecksum(0);
3329
- EXPECT_NE(cord.EstimatedMemoryUsage(), 0);
3330
- }
3331
-
3332
- TEST(CordThreeWayComparisonTest, CompareCords) {
3333
- #ifndef __cpp_impl_three_way_comparison
3334
- GTEST_SKIP() << "C++20 three-way <=> comparison not supported";
3335
- #else
3336
- EXPECT_EQ(absl::Cord("a") <=> absl::Cord("a"), std::strong_ordering::equal);
3337
- EXPECT_EQ(absl::Cord("aaaa") <=> absl::Cord("aaab"),
3338
- std::strong_ordering::less);
3339
- EXPECT_EQ(absl::Cord("baaa") <=> absl::Cord("a"),
3340
- std::strong_ordering::greater);
3341
- #endif
3342
- }
3343
-
3344
- TEST(CordThreeWayComparisonTest, CompareCordsAndStringViews) {
3345
- #ifndef __cpp_impl_three_way_comparison
3346
- GTEST_SKIP() << "C++20 three-way <=> comparison not supported";
3347
- #else
3348
- EXPECT_EQ(absl::string_view("a") <=> absl::Cord("a"),
3349
- std::strong_ordering::equal);
3350
- EXPECT_EQ(absl::Cord("a") <=> absl::string_view("b"),
3351
- std::strong_ordering::less);
3352
- EXPECT_EQ(absl::string_view("b") <=> absl::Cord("a"),
3353
- std::strong_ordering::greater);
3354
- #endif
3355
- }
3356
-
3357
- #if defined(GTEST_HAS_DEATH_TEST) && defined(ABSL_INTERNAL_CORD_HAVE_SANITIZER)
3358
-
3359
- // Returns an expected poison / uninitialized death message expression.
3360
- const char* MASanDeathExpr() {
3361
- return "(use-after-poison|use-of-uninitialized-value)";
3362
- }
3363
-
3364
- TEST(CordSanitizerTest, SanitizesEmptyCord) {
3365
- absl::Cord cord;
3366
- const char* data = cord.Flatten().data();
3367
- EXPECT_DEATH(EXPECT_EQ(data[0], 0), MASanDeathExpr());
3368
- }
3369
-
3370
- TEST(CordSanitizerTest, SanitizesSmallCord) {
3371
- absl::Cord cord("Hello");
3372
- const char* data = cord.Flatten().data();
3373
- EXPECT_DEATH(EXPECT_EQ(data[5], 0), MASanDeathExpr());
3374
- }
3375
-
3376
- TEST(CordSanitizerTest, SanitizesCordOnSetSSOValue) {
3377
- absl::Cord cord("String that is too big to be an SSO value");
3378
- cord = "Hello";
3379
- const char* data = cord.Flatten().data();
3380
- EXPECT_DEATH(EXPECT_EQ(data[5], 0), MASanDeathExpr());
3381
- }
3382
-
3383
- TEST(CordSanitizerTest, SanitizesCordOnCopyCtor) {
3384
- absl::Cord src("hello");
3385
- absl::Cord dst(src);
3386
- const char* data = dst.Flatten().data();
3387
- EXPECT_DEATH(EXPECT_EQ(data[5], 0), MASanDeathExpr());
3388
- }
3389
-
3390
- TEST(CordSanitizerTest, SanitizesCordOnMoveCtor) {
3391
- absl::Cord src("hello");
3392
- absl::Cord dst(std::move(src));
3393
- const char* data = dst.Flatten().data();
3394
- EXPECT_DEATH(EXPECT_EQ(data[5], 0), MASanDeathExpr());
3395
- }
3396
-
3397
- TEST(CordSanitizerTest, SanitizesCordOnAssign) {
3398
- absl::Cord src("hello");
3399
- absl::Cord dst;
3400
- dst = src;
3401
- const char* data = dst.Flatten().data();
3402
- EXPECT_DEATH(EXPECT_EQ(data[5], 0), MASanDeathExpr());
3403
- }
3404
-
3405
- TEST(CordSanitizerTest, SanitizesCordOnMoveAssign) {
3406
- absl::Cord src("hello");
3407
- absl::Cord dst;
3408
- dst = std::move(src);
3409
- const char* data = dst.Flatten().data();
3410
- EXPECT_DEATH(EXPECT_EQ(data[5], 0), MASanDeathExpr());
3411
- }
3412
-
3413
- TEST(CordSanitizerTest, SanitizesCordOnSsoAssign) {
3414
- absl::Cord src("hello");
3415
- absl::Cord dst("String that is too big to be an SSO value");
3416
- dst = src;
3417
- const char* data = dst.Flatten().data();
3418
- EXPECT_DEATH(EXPECT_EQ(data[5], 0), MASanDeathExpr());
3419
- }
3420
-
3421
- #endif // GTEST_HAS_DEATH_TEST && ABSL_INTERNAL_CORD_HAVE_SANITIZER