react-native-quick-crypto 1.0.19 → 1.1.0

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 (732) hide show
  1. package/QuickCrypto.podspec +12 -38
  2. package/README.md +2 -0
  3. package/android/CMakeLists.txt +3 -0
  4. package/cpp/utils/HybridUtils.cpp +39 -77
  5. package/deps/simdutf/.clang-format +4 -0
  6. package/deps/simdutf/.github/ISSUE_TEMPLATE/bug_report.md +62 -0
  7. package/deps/simdutf/.github/ISSUE_TEMPLATE/config.yml +1 -0
  8. package/deps/simdutf/.github/ISSUE_TEMPLATE/feature_request.md +35 -0
  9. package/deps/simdutf/.github/ISSUE_TEMPLATE/standard-issue-template.md +29 -0
  10. package/deps/simdutf/.github/pull_request_template.md +51 -0
  11. package/deps/simdutf/.github/workflows/aarch64.yml +39 -0
  12. package/deps/simdutf/.github/workflows/alpine.yml +27 -0
  13. package/deps/simdutf/.github/workflows/amalgamation_demos.yml +34 -0
  14. package/deps/simdutf/.github/workflows/armv7.yml +32 -0
  15. package/deps/simdutf/.github/workflows/atomic_fuzz.yml +25 -0
  16. package/deps/simdutf/.github/workflows/cifuzz.yml +37 -0
  17. package/deps/simdutf/.github/workflows/clangformat.yml +36 -0
  18. package/deps/simdutf/.github/workflows/debian-latestcxxstandards.yml +40 -0
  19. package/deps/simdutf/.github/workflows/debian.yml +33 -0
  20. package/deps/simdutf/.github/workflows/documentation.yml +36 -0
  21. package/deps/simdutf/.github/workflows/emscripten.yml +19 -0
  22. package/deps/simdutf/.github/workflows/loongarch64-gcc-14.2.yml +39 -0
  23. package/deps/simdutf/.github/workflows/macos-latest.yml +29 -0
  24. package/deps/simdutf/.github/workflows/msys2-clang.yml +48 -0
  25. package/deps/simdutf/.github/workflows/msys2.yml +50 -0
  26. package/deps/simdutf/.github/workflows/ppc64le.yml +29 -0
  27. package/deps/simdutf/.github/workflows/rvv-1024-clang-18.yml +35 -0
  28. package/deps/simdutf/.github/workflows/rvv-128-clang-17.yml +35 -0
  29. package/deps/simdutf/.github/workflows/rvv-256-gcc-14.yml +31 -0
  30. package/deps/simdutf/.github/workflows/s390x.yml +29 -0
  31. package/deps/simdutf/.github/workflows/selective-amalgamation.yml +29 -0
  32. package/deps/simdutf/.github/workflows/typos.yml +19 -0
  33. package/deps/simdutf/.github/workflows/ubuntu22-cxx20.yml +30 -0
  34. package/deps/simdutf/.github/workflows/ubuntu22.yml +32 -0
  35. package/deps/simdutf/.github/workflows/ubuntu22_gcc12.yml +27 -0
  36. package/deps/simdutf/.github/workflows/ubuntu22sani.yml +29 -0
  37. package/deps/simdutf/.github/workflows/ubuntu24-cxxstandards.yml +34 -0
  38. package/deps/simdutf/.github/workflows/ubuntu24-unsignedchar.yml +34 -0
  39. package/deps/simdutf/.github/workflows/ubuntu24.yml +32 -0
  40. package/deps/simdutf/.github/workflows/ubuntu24sani.yml +36 -0
  41. package/deps/simdutf/.github/workflows/ubuntu24sani_clang.yml +29 -0
  42. package/deps/simdutf/.github/workflows/vs17-arm-ci.yml +21 -0
  43. package/deps/simdutf/.github/workflows/vs17-ci-cxx20.yml +41 -0
  44. package/deps/simdutf/.github/workflows/vs17-ci.yml +41 -0
  45. package/deps/simdutf/.github/workflows/vs17-clang-ci.yml +41 -0
  46. package/deps/simdutf/.github/workflows/vs17-cxxstandards.yml +36 -0
  47. package/deps/simdutf/AI_USAGE_POLICY.md +56 -0
  48. package/deps/simdutf/AUTHORS +6 -0
  49. package/deps/simdutf/CMakeLists.txt +231 -0
  50. package/deps/simdutf/CONTRIBUTING.md +214 -0
  51. package/deps/simdutf/CONTRIBUTORS +1 -0
  52. package/deps/simdutf/Doxyfile +2584 -0
  53. package/deps/simdutf/LICENSE-APACHE +201 -0
  54. package/deps/simdutf/LICENSE-MIT +18 -0
  55. package/deps/simdutf/Makefile.crosscompile +54 -0
  56. package/deps/simdutf/README-RVV.md +16 -0
  57. package/deps/simdutf/README.md +2782 -0
  58. package/deps/simdutf/SECURITY.md +8 -0
  59. package/deps/simdutf/benchmarks/CMakeLists.txt +101 -0
  60. package/deps/simdutf/benchmarks/alignment.cpp +150 -0
  61. package/deps/simdutf/benchmarks/base64/CMakeLists.txt +30 -0
  62. package/deps/simdutf/benchmarks/base64/benchmark_base64.cpp +875 -0
  63. package/deps/simdutf/benchmarks/base64/libbase64_spaces.h +49 -0
  64. package/deps/simdutf/benchmarks/base64/node_base64.h +227 -0
  65. package/deps/simdutf/benchmarks/base64/openssl3_base64.h +334 -0
  66. package/deps/simdutf/benchmarks/benchmark.cpp +65 -0
  67. package/deps/simdutf/benchmarks/benchmark_to_well_formed_utf16.cpp +347 -0
  68. package/deps/simdutf/benchmarks/competition/.clang-format-ignore +5 -0
  69. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.cpp +1276 -0
  70. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.h +595 -0
  71. package/deps/simdutf/benchmarks/competition/README.md +7 -0
  72. package/deps/simdutf/benchmarks/competition/hoehrmann/hoehrmann.h +91 -0
  73. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h +444 -0
  74. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16_tables.h +13183 -0
  75. package/deps/simdutf/benchmarks/competition/inoue2008/script.py +73 -0
  76. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.cpp +738 -0
  77. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.h +293 -0
  78. package/deps/simdutf/benchmarks/competition/u8u16/COPYRIGHT +8 -0
  79. package/deps/simdutf/benchmarks/competition/u8u16/Makefile +44 -0
  80. package/deps/simdutf/benchmarks/competition/u8u16/OSL3.0.txt +169 -0
  81. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/BOM_Profiler.h +148 -0
  82. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/i386_timer.h +45 -0
  83. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/ppc_timer.c +34 -0
  84. package/deps/simdutf/benchmarks/competition/u8u16/README +56 -0
  85. package/deps/simdutf/benchmarks/competition/u8u16/config/config_defs.h +43 -0
  86. package/deps/simdutf/benchmarks/competition/u8u16/config/g4_config.h +27 -0
  87. package/deps/simdutf/benchmarks/competition/u8u16/config/mmx_config.h +16 -0
  88. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_config.h +18 -0
  89. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_ideal_config.h +16 -0
  90. package/deps/simdutf/benchmarks/competition/u8u16/config/spu_config.h +28 -0
  91. package/deps/simdutf/benchmarks/competition/u8u16/config/ssse3_config.h +20 -0
  92. package/deps/simdutf/benchmarks/competition/u8u16/iconv_u8u16.c +2 -0
  93. package/deps/simdutf/benchmarks/competition/u8u16/lib/altivec_simd.h +440 -0
  94. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_basic_ops.py +121 -0
  95. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_half_operand_versions.py +158 -0
  96. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_test.py +270 -0
  97. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd.h +141 -0
  98. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_basic.h +216 -0
  99. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_built_in.h +119 -0
  100. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_modified.h +2430 -0
  101. package/deps/simdutf/benchmarks/competition/u8u16/lib/outline.txt +39 -0
  102. package/deps/simdutf/benchmarks/competition/u8u16/lib/spu_simd.h +421 -0
  103. package/deps/simdutf/benchmarks/competition/u8u16/lib/sse_simd.h +836 -0
  104. package/deps/simdutf/benchmarks/competition/u8u16/lib/stdint.h +222 -0
  105. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_BE.c +4 -0
  106. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_LE.c +5 -0
  107. package/deps/simdutf/benchmarks/competition/u8u16/proto/u8u16.py +390 -0
  108. package/deps/simdutf/benchmarks/competition/u8u16/src/Makefile +18 -0
  109. package/deps/simdutf/benchmarks/competition/u8u16/src/bytelex.h +448 -0
  110. package/deps/simdutf/benchmarks/competition/u8u16/src/charsets/ASCII_EBCDIC.h +284 -0
  111. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.c +1975 -0
  112. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.pdf +0 -0
  113. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.w +2263 -0
  114. package/deps/simdutf/benchmarks/competition/u8u16/src/multiliteral.h +239 -0
  115. package/deps/simdutf/benchmarks/competition/u8u16/src/u8u16.c +232 -0
  116. package/deps/simdutf/benchmarks/competition/u8u16/src/x8x16.c +194 -0
  117. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.c +193 -0
  118. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.h +167 -0
  119. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.c +288 -0
  120. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.h +117 -0
  121. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_g4.c +2 -0
  122. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_mmx.c +2 -0
  123. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4.c +3 -0
  124. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4_ideal.c +2 -0
  125. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_spu.c +2 -0
  126. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_ssse3.c +3 -0
  127. package/deps/simdutf/benchmarks/competition/u8u16/x8x16_p4.c +2 -0
  128. package/deps/simdutf/benchmarks/competition/utf8lut/LICENSE +23 -0
  129. package/deps/simdutf/benchmarks/competition/utf8lut/data/test_minimal.txt +44 -0
  130. package/deps/simdutf/benchmarks/competition/utf8lut/readme.md +106 -0
  131. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.cmd +11 -0
  132. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.sh +13 -0
  133. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_corr_tests.sh +13 -0
  134. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_example.sh +13 -0
  135. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_file_conv.sh +14 -0
  136. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_lib.sh +11 -0
  137. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_sample.sh +8 -0
  138. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_corr_tests.cmd +12 -0
  139. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_example.cmd +13 -0
  140. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_file_conv.cmd +14 -0
  141. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_lib.cmd +11 -0
  142. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_sample.cmd +8 -0
  143. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_corr_tests.cmd +11 -0
  144. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_example.cmd +12 -0
  145. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_file_conv.cmd +13 -0
  146. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_lib.cmd +10 -0
  147. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_sample.cmd +9 -0
  148. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/html_table.py +25 -0
  149. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/measure.py +94 -0
  150. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/resize.py +20 -0
  151. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_all.cmd +2 -0
  152. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_interm.cmd +1 -0
  153. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/CustomMemcpy.h +75 -0
  154. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/PerfDefs.h +47 -0
  155. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.cpp +17 -0
  156. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.h +76 -0
  157. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/AllProcessors.cpp +35 -0
  158. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.cpp +117 -0
  159. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.h +210 -0
  160. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferDecoder.h +158 -0
  161. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferEncoder.h +104 -0
  162. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorPlugins.h +334 -0
  163. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorSelector.h +186 -0
  164. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.cpp +140 -0
  165. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.h +42 -0
  166. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderProcess.h +100 -0
  167. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/Dfa.h +57 -0
  168. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.cpp +85 -0
  169. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.h +27 -0
  170. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderProcess.h +126 -0
  171. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/ProcessTrivial.h +108 -0
  172. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.cpp +139 -0
  173. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.h +74 -0
  174. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.cpp +65 -0
  175. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.h +91 -0
  176. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/CorrectnessTests.cpp +772 -0
  177. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/Example.cpp +12 -0
  178. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/FileConverter.cpp +486 -0
  179. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/iconv_sample.c +162 -0
  180. package/deps/simdutf/benchmarks/competition/utf8lut/src/utf8lut.h +15 -0
  181. package/deps/simdutf/benchmarks/competition/utf8sse4/fromutf8-sse.cpp +292 -0
  182. package/deps/simdutf/benchmarks/competition/utfcpp/LICENSE +23 -0
  183. package/deps/simdutf/benchmarks/competition/utfcpp/README.md +1503 -0
  184. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/checked.h +335 -0
  185. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/core.h +338 -0
  186. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp11.h +103 -0
  187. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp17.h +103 -0
  188. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/unchecked.h +274 -0
  189. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8.h +34 -0
  190. package/deps/simdutf/benchmarks/dataset/README.md +155 -0
  191. package/deps/simdutf/benchmarks/dataset/emoji.txt +204 -0
  192. package/deps/simdutf/benchmarks/dataset/scripts/utf8type.py +40 -0
  193. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/Makefile +80 -0
  194. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/convert_to_utf6.py +20 -0
  195. package/deps/simdutf/benchmarks/find/CMakeLists.txt +6 -0
  196. package/deps/simdutf/benchmarks/find/findbenchmark.cpp +63 -0
  197. package/deps/simdutf/benchmarks/find/findbenchmarker.h +46 -0
  198. package/deps/simdutf/benchmarks/shortbench.cpp +555 -0
  199. package/deps/simdutf/benchmarks/src/CMakeLists.txt +52 -0
  200. package/deps/simdutf/benchmarks/src/apple_arm_events.h +1104 -0
  201. package/deps/simdutf/benchmarks/src/benchmark.cpp +3899 -0
  202. package/deps/simdutf/benchmarks/src/benchmark.h +317 -0
  203. package/deps/simdutf/benchmarks/src/benchmark_base.cpp +144 -0
  204. package/deps/simdutf/benchmarks/src/benchmark_base.h +98 -0
  205. package/deps/simdutf/benchmarks/src/cmdline.cpp +176 -0
  206. package/deps/simdutf/benchmarks/src/cmdline.h +35 -0
  207. package/deps/simdutf/benchmarks/src/event_counter.h +162 -0
  208. package/deps/simdutf/benchmarks/src/linux-perf-events.h +104 -0
  209. package/deps/simdutf/benchmarks/stream.cpp +209 -0
  210. package/deps/simdutf/benchmarks/threaded.cpp +123 -0
  211. package/deps/simdutf/cmake/CPM.cmake +1363 -0
  212. package/deps/simdutf/cmake/JoinPaths.cmake +23 -0
  213. package/deps/simdutf/cmake/add_cpp_test.cmake +68 -0
  214. package/deps/simdutf/cmake/simdutf-config.cmake.in +2 -0
  215. package/deps/simdutf/cmake/simdutf-flags.cmake +26 -0
  216. package/deps/simdutf/cmake/toolchains-ci/riscv64-linux-gnu.cmake +4 -0
  217. package/deps/simdutf/cmake/toolchains-dev/README.md +32 -0
  218. package/deps/simdutf/cmake/toolchains-dev/aarch64.cmake +14 -0
  219. package/deps/simdutf/cmake/toolchains-dev/loongarch64.cmake +22 -0
  220. package/deps/simdutf/cmake/toolchains-dev/powerpc64.cmake +16 -0
  221. package/deps/simdutf/cmake/toolchains-dev/powerpc64le.cmake +16 -0
  222. package/deps/simdutf/cmake/toolchains-dev/riscv64.cmake +16 -0
  223. package/deps/simdutf/cmake/toolchains-dev/rvv-spike.cmake +38 -0
  224. package/deps/simdutf/doc/avx512.png +0 -0
  225. package/deps/simdutf/doc/logo.png +0 -0
  226. package/deps/simdutf/doc/logo.svg +165 -0
  227. package/deps/simdutf/doc/node2023.png +0 -0
  228. package/deps/simdutf/doc/shortinput.md +78 -0
  229. package/deps/simdutf/doc/utf16utf8.png +0 -0
  230. package/deps/simdutf/doc/utf8utf16.png +0 -0
  231. package/deps/simdutf/doc/widelogo.png +0 -0
  232. package/deps/simdutf/doxygen.py +50 -0
  233. package/deps/simdutf/fuzz/.clang-format +9 -0
  234. package/deps/simdutf/fuzz/CMakeLists.txt +45 -0
  235. package/deps/simdutf/fuzz/README.md +168 -0
  236. package/deps/simdutf/fuzz/atomic_base64.cpp +448 -0
  237. package/deps/simdutf/fuzz/base64.cpp +278 -0
  238. package/deps/simdutf/fuzz/build.sh +83 -0
  239. package/deps/simdutf/fuzz/conversion.cpp +669 -0
  240. package/deps/simdutf/fuzz/helpers/.clang-format-ignore +1 -0
  241. package/deps/simdutf/fuzz/helpers/common.h +135 -0
  242. package/deps/simdutf/fuzz/helpers/nameof.hpp +1258 -0
  243. package/deps/simdutf/fuzz/main.cpp +72 -0
  244. package/deps/simdutf/fuzz/minimize_and_cleanse.sh +87 -0
  245. package/deps/simdutf/fuzz/misc.cpp +216 -0
  246. package/deps/simdutf/fuzz/random_fuzz.sh +154 -0
  247. package/deps/simdutf/fuzz/roundtrip.cpp +588 -0
  248. package/deps/simdutf/fuzz/safe_conversion.cpp +104 -0
  249. package/deps/simdutf/include/simdutf/avx512.h +79 -0
  250. package/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
  251. package/deps/simdutf/include/simdutf/base64_tables.h +887 -0
  252. package/deps/simdutf/include/simdutf/common_defs.h +186 -0
  253. package/deps/simdutf/include/simdutf/compiler_check.h +50 -0
  254. package/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
  255. package/deps/simdutf/include/simdutf/encoding_types.h +189 -0
  256. package/deps/simdutf/include/simdutf/error.h +126 -0
  257. package/deps/simdutf/include/simdutf/implementation.h +7081 -0
  258. package/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
  259. package/deps/simdutf/include/simdutf/portability.h +285 -0
  260. package/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
  261. package/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
  262. package/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
  263. package/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
  264. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
  265. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
  266. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
  267. package/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
  268. package/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
  269. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
  270. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
  271. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
  272. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
  273. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
  274. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
  275. package/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
  276. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
  277. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
  278. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
  279. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
  280. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
  281. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
  282. package/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
  283. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
  284. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
  285. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
  286. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
  287. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
  288. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
  289. package/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
  290. package/deps/simdutf/include/simdutf.h +26 -0
  291. package/deps/simdutf/include/simdutf_c.h +342 -0
  292. package/deps/simdutf/riscv/Dockerfile +16 -0
  293. package/deps/simdutf/riscv/README.md +24 -0
  294. package/deps/simdutf/riscv/remove-docker-station +8 -0
  295. package/deps/simdutf/riscv/run-docker-station +31 -0
  296. package/deps/simdutf/scripts/.flake8 +2 -0
  297. package/deps/simdutf/scripts/Makefile +2 -0
  298. package/deps/simdutf/scripts/README_ADD_FUNCTION.md +49 -0
  299. package/deps/simdutf/scripts/add_function.py +330 -0
  300. package/deps/simdutf/scripts/amalgamation_tests.py +156 -0
  301. package/deps/simdutf/scripts/base64/Makefile +2 -0
  302. package/deps/simdutf/scripts/base64/README.md +2 -0
  303. package/deps/simdutf/scripts/base64/avx512.py +76 -0
  304. package/deps/simdutf/scripts/base64/neon_decode.py +143 -0
  305. package/deps/simdutf/scripts/base64/neon_generate_lut.py +101 -0
  306. package/deps/simdutf/scripts/base64/sse.py +252 -0
  307. package/deps/simdutf/scripts/base64/sseregular.py +160 -0
  308. package/deps/simdutf/scripts/base64/sseurl.py +283 -0
  309. package/deps/simdutf/scripts/base64/table.py +59 -0
  310. package/deps/simdutf/scripts/base64bench_print.py +145 -0
  311. package/deps/simdutf/scripts/benchmark-all.py +119 -0
  312. package/deps/simdutf/scripts/benchmark_print.py +324 -0
  313. package/deps/simdutf/scripts/check_feature_macros.py +156 -0
  314. package/deps/simdutf/scripts/check_typos.sh +13 -0
  315. package/deps/simdutf/scripts/clang_format.sh +35 -0
  316. package/deps/simdutf/scripts/clang_format_docker.sh +38 -0
  317. package/deps/simdutf/scripts/common.py +24 -0
  318. package/deps/simdutf/scripts/compilation_benchmark.py +55 -0
  319. package/deps/simdutf/scripts/compile_many_variations.sh +64 -0
  320. package/deps/simdutf/scripts/create_latex_table.py +62 -0
  321. package/deps/simdutf/scripts/docker/Dockerfile +14 -0
  322. package/deps/simdutf/scripts/docker/Makefile +9 -0
  323. package/deps/simdutf/scripts/docker/README.md +30 -0
  324. package/deps/simdutf/scripts/docker/llvm.gpg +0 -0
  325. package/deps/simdutf/scripts/ppc64_convert_utf16_to_utf8.py +155 -0
  326. package/deps/simdutf/scripts/prepare_doxygen.sh +21 -0
  327. package/deps/simdutf/scripts/release.py +197 -0
  328. package/deps/simdutf/scripts/shortinputplots.py +97 -0
  329. package/deps/simdutf/scripts/sse_convert_utf16_to_utf8.py +422 -0
  330. package/deps/simdutf/scripts/sse_convert_utf32_to_utf16.py +105 -0
  331. package/deps/simdutf/scripts/sse_utf8_utf16_decode.py +186 -0
  332. package/deps/simdutf/scripts/sse_validate_utf16le_proof.py +137 -0
  333. package/deps/simdutf/scripts/sse_validate_utf16le_testcases.py +129 -0
  334. package/deps/simdutf/scripts/table.py +207 -0
  335. package/deps/simdutf/scripts/tests/new.txt +33 -0
  336. package/deps/simdutf/scripts/tests/old.txt +33 -0
  337. package/deps/simdutf/scripts/tests/results.txt +272 -0
  338. package/deps/simdutf/simdutf.pc.in +11 -0
  339. package/deps/simdutf/singleheader/.flake8 +2 -0
  340. package/deps/simdutf/singleheader/CMakeLists.txt +64 -0
  341. package/deps/simdutf/singleheader/README-dev.md +81 -0
  342. package/deps/simdutf/singleheader/README.md +19 -0
  343. package/deps/simdutf/singleheader/amalgamate.py +513 -0
  344. package/deps/simdutf/singleheader/amalgamation_demo.c +59 -0
  345. package/deps/simdutf/singleheader/amalgamation_demo.cpp +54 -0
  346. package/deps/simdutf/singleheader/test-features.py +262 -0
  347. package/deps/simdutf/src/CMakeLists.txt +78 -0
  348. package/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
  349. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
  350. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
  351. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
  352. package/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
  353. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
  354. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
  355. package/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
  356. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
  357. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
  358. package/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
  359. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
  360. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
  361. package/deps/simdutf/src/arm64/arm_find.cpp +199 -0
  362. package/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
  363. package/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
  364. package/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
  365. package/deps/simdutf/src/arm64/implementation.cpp +1442 -0
  366. package/deps/simdutf/src/encoding_types.cpp +67 -0
  367. package/deps/simdutf/src/error.cpp +3 -0
  368. package/deps/simdutf/src/fallback/implementation.cpp +589 -0
  369. package/deps/simdutf/src/generic/ascii_validation.h +50 -0
  370. package/deps/simdutf/src/generic/base64.h +233 -0
  371. package/deps/simdutf/src/generic/base64lengths.h +63 -0
  372. package/deps/simdutf/src/generic/buf_block_reader.h +109 -0
  373. package/deps/simdutf/src/generic/find.h +75 -0
  374. package/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
  375. package/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
  376. package/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
  377. package/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
  378. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
  379. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
  380. package/deps/simdutf/src/generic/utf16.h +73 -0
  381. package/deps/simdutf/src/generic/utf32.h +136 -0
  382. package/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
  383. package/deps/simdutf/src/generic/utf8.h +92 -0
  384. package/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
  385. package/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
  386. package/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
  387. package/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
  388. package/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
  389. package/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
  390. package/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
  391. package/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
  392. package/deps/simdutf/src/generic/validate_utf16.h +164 -0
  393. package/deps/simdutf/src/generic/validate_utf32.h +99 -0
  394. package/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
  395. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
  396. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
  397. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
  398. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
  399. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
  400. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
  401. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
  402. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
  403. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
  404. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
  405. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
  406. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
  407. package/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
  408. package/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
  409. package/deps/simdutf/src/haswell/implementation.cpp +1447 -0
  410. package/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
  411. package/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
  412. package/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
  413. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
  414. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
  415. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
  416. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
  417. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
  418. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
  419. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
  420. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
  421. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
  422. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
  423. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
  424. package/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
  425. package/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
  426. package/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
  427. package/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
  428. package/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
  429. package/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
  430. package/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
  431. package/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
  432. package/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
  433. package/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
  434. package/deps/simdutf/src/icelake/implementation.cpp +1903 -0
  435. package/deps/simdutf/src/implementation.cpp +2526 -0
  436. package/deps/simdutf/src/lasx/implementation.cpp +1531 -0
  437. package/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
  438. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
  439. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
  440. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
  441. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
  442. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
  443. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
  444. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
  445. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
  446. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
  447. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
  448. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
  449. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
  450. package/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
  451. package/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
  452. package/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
  453. package/deps/simdutf/src/lsx/implementation.cpp +1417 -0
  454. package/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
  455. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
  456. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
  457. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
  458. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
  459. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
  460. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
  461. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
  462. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
  463. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
  464. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
  465. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
  466. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
  467. package/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
  468. package/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
  469. package/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
  470. package/deps/simdutf/src/ppc64/implementation.cpp +992 -0
  471. package/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
  472. package/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
  473. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
  474. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
  475. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
  476. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
  477. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
  478. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
  479. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
  480. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
  481. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
  482. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
  483. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
  484. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
  485. package/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
  486. package/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
  487. package/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
  488. package/deps/simdutf/src/ppc64/templates.cpp +91 -0
  489. package/deps/simdutf/src/rvv/implementation.cpp +138 -0
  490. package/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
  491. package/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
  492. package/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
  493. package/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
  494. package/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
  495. package/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
  496. package/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
  497. package/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
  498. package/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
  499. package/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
  500. package/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
  501. package/deps/simdutf/src/simdutf/arm64/end.h +2 -0
  502. package/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
  503. package/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
  504. package/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
  505. package/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
  506. package/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
  507. package/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
  508. package/deps/simdutf/src/simdutf/arm64.h +43 -0
  509. package/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
  510. package/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
  511. package/deps/simdutf/src/simdutf/fallback/end.h +1 -0
  512. package/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
  513. package/deps/simdutf/src/simdutf/fallback.h +42 -0
  514. package/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
  515. package/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
  516. package/deps/simdutf/src/simdutf/haswell/end.h +13 -0
  517. package/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
  518. package/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
  519. package/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
  520. package/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
  521. package/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
  522. package/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
  523. package/deps/simdutf/src/simdutf/haswell.h +63 -0
  524. package/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
  525. package/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
  526. package/deps/simdutf/src/simdutf/icelake/end.h +12 -0
  527. package/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
  528. package/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
  529. package/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
  530. package/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
  531. package/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
  532. package/deps/simdutf/src/simdutf/icelake.h +81 -0
  533. package/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
  534. package/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
  535. package/deps/simdutf/src/simdutf/lasx/end.h +8 -0
  536. package/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
  537. package/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
  538. package/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
  539. package/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
  540. package/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
  541. package/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
  542. package/deps/simdutf/src/simdutf/lasx.h +49 -0
  543. package/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
  544. package/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
  545. package/deps/simdutf/src/simdutf/lsx/end.h +2 -0
  546. package/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
  547. package/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
  548. package/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
  549. package/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
  550. package/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
  551. package/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
  552. package/deps/simdutf/src/simdutf/lsx.h +52 -0
  553. package/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
  554. package/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
  555. package/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
  556. package/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
  557. package/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
  558. package/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
  559. package/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
  560. package/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
  561. package/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
  562. package/deps/simdutf/src/simdutf/ppc64.h +40 -0
  563. package/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
  564. package/deps/simdutf/src/simdutf/rvv/end.h +7 -0
  565. package/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
  566. package/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
  567. package/deps/simdutf/src/simdutf/rvv.h +41 -0
  568. package/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
  569. package/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
  570. package/deps/simdutf/src/simdutf/westmere/end.h +8 -0
  571. package/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
  572. package/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
  573. package/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
  574. package/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
  575. package/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
  576. package/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
  577. package/deps/simdutf/src/simdutf/westmere.h +59 -0
  578. package/deps/simdutf/src/simdutf.cpp +152 -0
  579. package/deps/simdutf/src/simdutf_c.cpp +525 -0
  580. package/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
  581. package/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
  582. package/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
  583. package/deps/simdutf/src/westmere/implementation.cpp +1479 -0
  584. package/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
  585. package/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
  586. package/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
  587. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
  588. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
  589. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
  590. package/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
  591. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
  592. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
  593. package/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
  594. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
  595. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
  596. package/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
  597. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
  598. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
  599. package/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
  600. package/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -0
  601. package/deps/simdutf/tests/CMakeLists.txt +483 -0
  602. package/deps/simdutf/tests/atomic_base64_tests.cpp +2845 -0
  603. package/deps/simdutf/tests/base64_tests.cpp +3617 -0
  604. package/deps/simdutf/tests/basic_fuzzer.cpp +805 -0
  605. package/deps/simdutf/tests/bele_tests.cpp +182 -0
  606. package/deps/simdutf/tests/constexpr_base64_tests.cpp +387 -0
  607. package/deps/simdutf/tests/convert_latin1_to_utf16be_tests.cpp +52 -0
  608. package/deps/simdutf/tests/convert_latin1_to_utf16le_tests.cpp +80 -0
  609. package/deps/simdutf/tests/convert_latin1_to_utf32_tests.cpp +66 -0
  610. package/deps/simdutf/tests/convert_latin1_to_utf8_tests.cpp +120 -0
  611. package/deps/simdutf/tests/convert_utf16_to_utf8_safe_tests.cpp +203 -0
  612. package/deps/simdutf/tests/convert_utf16_to_utf8_with_replacement_tests.cpp +276 -0
  613. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests.cpp +109 -0
  614. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests_with_errors.cpp +136 -0
  615. package/deps/simdutf/tests/convert_utf16be_to_utf32_tests.cpp +193 -0
  616. package/deps/simdutf/tests/convert_utf16be_to_utf32_with_errors_tests.cpp +381 -0
  617. package/deps/simdutf/tests/convert_utf16be_to_utf8_tests.cpp +259 -0
  618. package/deps/simdutf/tests/convert_utf16be_to_utf8_with_errors_tests.cpp +266 -0
  619. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests.cpp +148 -0
  620. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests_with_errors.cpp +176 -0
  621. package/deps/simdutf/tests/convert_utf16le_to_utf32_tests.cpp +213 -0
  622. package/deps/simdutf/tests/convert_utf16le_to_utf32_with_errors_tests.cpp +318 -0
  623. package/deps/simdutf/tests/convert_utf16le_to_utf8_tests.cpp +343 -0
  624. package/deps/simdutf/tests/convert_utf16le_to_utf8_with_errors_tests.cpp +271 -0
  625. package/deps/simdutf/tests/convert_utf32_to_latin1_tests.cpp +111 -0
  626. package/deps/simdutf/tests/convert_utf32_to_latin1_with_errors_tests.cpp +96 -0
  627. package/deps/simdutf/tests/convert_utf32_to_utf16be_tests.cpp +148 -0
  628. package/deps/simdutf/tests/convert_utf32_to_utf16be_with_errors_tests.cpp +192 -0
  629. package/deps/simdutf/tests/convert_utf32_to_utf16le_tests.cpp +166 -0
  630. package/deps/simdutf/tests/convert_utf32_to_utf16le_with_errors_tests.cpp +215 -0
  631. package/deps/simdutf/tests/convert_utf32_to_utf8_tests.cpp +181 -0
  632. package/deps/simdutf/tests/convert_utf32_to_utf8_with_errors_tests.cpp +261 -0
  633. package/deps/simdutf/tests/convert_utf8_to_latin1_tests.cpp +516 -0
  634. package/deps/simdutf/tests/convert_utf8_to_latin1_with_errors_tests.cpp +579 -0
  635. package/deps/simdutf/tests/convert_utf8_to_utf16be_tests.cpp +412 -0
  636. package/deps/simdutf/tests/convert_utf8_to_utf16be_with_errors_tests.cpp +480 -0
  637. package/deps/simdutf/tests/convert_utf8_to_utf16le_tests.cpp +671 -0
  638. package/deps/simdutf/tests/convert_utf8_to_utf16le_with_errors_tests.cpp +455 -0
  639. package/deps/simdutf/tests/convert_utf8_to_utf32_tests.cpp +1204 -0
  640. package/deps/simdutf/tests/convert_utf8_to_utf32_with_errors_tests.cpp +337 -0
  641. package/deps/simdutf/tests/convert_valid_utf16be_to_latin1_tests.cpp +37 -0
  642. package/deps/simdutf/tests/convert_valid_utf16be_to_utf32_tests.cpp +97 -0
  643. package/deps/simdutf/tests/convert_valid_utf16be_to_utf8_tests.cpp +126 -0
  644. package/deps/simdutf/tests/convert_valid_utf16le_to_latin1_tests.cpp +71 -0
  645. package/deps/simdutf/tests/convert_valid_utf16le_to_utf32_tests.cpp +122 -0
  646. package/deps/simdutf/tests/convert_valid_utf16le_to_utf8_tests.cpp +244 -0
  647. package/deps/simdutf/tests/convert_valid_utf32_to_latin1_tests.cpp +49 -0
  648. package/deps/simdutf/tests/convert_valid_utf32_to_utf16be_tests.cpp +92 -0
  649. package/deps/simdutf/tests/convert_valid_utf32_to_utf16le_tests.cpp +114 -0
  650. package/deps/simdutf/tests/convert_valid_utf32_to_utf8_tests.cpp +109 -0
  651. package/deps/simdutf/tests/convert_valid_utf8_to_latin1_tests.cpp +84 -0
  652. package/deps/simdutf/tests/convert_valid_utf8_to_utf16be_tests.cpp +124 -0
  653. package/deps/simdutf/tests/convert_valid_utf8_to_utf16le_tests.cpp +221 -0
  654. package/deps/simdutf/tests/convert_valid_utf8_to_utf32_tests.cpp +155 -0
  655. package/deps/simdutf/tests/count_utf16be.cpp +64 -0
  656. package/deps/simdutf/tests/count_utf16le.cpp +61 -0
  657. package/deps/simdutf/tests/count_utf8.cpp +87 -0
  658. package/deps/simdutf/tests/detect_encodings_tests.cpp +312 -0
  659. package/deps/simdutf/tests/embed/valid_utf8.txt +1 -0
  660. package/deps/simdutf/tests/embed_tests.cpp +22 -0
  661. package/deps/simdutf/tests/find_tests.cpp +77 -0
  662. package/deps/simdutf/tests/fixed_string_tests.cpp +153 -0
  663. package/deps/simdutf/tests/helpers/CMakeLists.txt +25 -0
  664. package/deps/simdutf/tests/helpers/compiletime_conversions.h +222 -0
  665. package/deps/simdutf/tests/helpers/fixed_string.h +267 -0
  666. package/deps/simdutf/tests/helpers/random_int.cpp +30 -0
  667. package/deps/simdutf/tests/helpers/random_int.h +39 -0
  668. package/deps/simdutf/tests/helpers/random_utf16.cpp +123 -0
  669. package/deps/simdutf/tests/helpers/random_utf16.h +52 -0
  670. package/deps/simdutf/tests/helpers/random_utf32.cpp +41 -0
  671. package/deps/simdutf/tests/helpers/random_utf32.h +40 -0
  672. package/deps/simdutf/tests/helpers/random_utf8.cpp +93 -0
  673. package/deps/simdutf/tests/helpers/random_utf8.h +36 -0
  674. package/deps/simdutf/tests/helpers/test.cpp +231 -0
  675. package/deps/simdutf/tests/helpers/test.h +193 -0
  676. package/deps/simdutf/tests/helpers/transcode_test_base.cpp +1257 -0
  677. package/deps/simdutf/tests/helpers/transcode_test_base.h +683 -0
  678. package/deps/simdutf/tests/helpers/utf16.h +27 -0
  679. package/deps/simdutf/tests/installation_tests/find/CMakeLists.txt +43 -0
  680. package/deps/simdutf/tests/installation_tests/from_fetch/CMakeLists.txt +47 -0
  681. package/deps/simdutf/tests/internal_tests.cpp +27 -0
  682. package/deps/simdutf/tests/null_safety_tests.cpp +94 -0
  683. package/deps/simdutf/tests/random_fuzzer.cpp +779 -0
  684. package/deps/simdutf/tests/readme_tests.cpp +274 -0
  685. package/deps/simdutf/tests/reference/CMakeLists.txt +23 -0
  686. package/deps/simdutf/tests/reference/decode_utf16.h +81 -0
  687. package/deps/simdutf/tests/reference/decode_utf32.h +47 -0
  688. package/deps/simdutf/tests/reference/encode_latin1.cpp +1 -0
  689. package/deps/simdutf/tests/reference/encode_latin1.h +32 -0
  690. package/deps/simdutf/tests/reference/encode_utf16.cpp +49 -0
  691. package/deps/simdutf/tests/reference/encode_utf16.h +20 -0
  692. package/deps/simdutf/tests/reference/encode_utf32.cpp +1 -0
  693. package/deps/simdutf/tests/reference/encode_utf32.h +36 -0
  694. package/deps/simdutf/tests/reference/encode_utf8.cpp +1 -0
  695. package/deps/simdutf/tests/reference/encode_utf8.h +40 -0
  696. package/deps/simdutf/tests/reference/validate_utf16.cpp +60 -0
  697. package/deps/simdutf/tests/reference/validate_utf16.h +14 -0
  698. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.cpp +35 -0
  699. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.h +13 -0
  700. package/deps/simdutf/tests/reference/validate_utf32.cpp +27 -0
  701. package/deps/simdutf/tests/reference/validate_utf32.h +12 -0
  702. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.cpp +27 -0
  703. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.h +12 -0
  704. package/deps/simdutf/tests/reference/validate_utf8.cpp +82 -0
  705. package/deps/simdutf/tests/reference/validate_utf8.h +11 -0
  706. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.cpp +43 -0
  707. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.h +12 -0
  708. package/deps/simdutf/tests/select_implementation.cpp +43 -0
  709. package/deps/simdutf/tests/simdutf_c_tests.cpp +244 -0
  710. package/deps/simdutf/tests/span_tests.cpp +401 -0
  711. package/deps/simdutf/tests/special_tests.cpp +559 -0
  712. package/deps/simdutf/tests/straight_c_test.c +187 -0
  713. package/deps/simdutf/tests/text_encoding_tests.cpp +77 -0
  714. package/deps/simdutf/tests/to_well_formed_utf16_tests.cpp +377 -0
  715. package/deps/simdutf/tests/utf8_length_from_utf16_tests.cpp +202 -0
  716. package/deps/simdutf/tests/validate_ascii_basic_tests.cpp +165 -0
  717. package/deps/simdutf/tests/validate_ascii_with_errors_tests.cpp +77 -0
  718. package/deps/simdutf/tests/validate_utf16be_basic_tests.cpp +175 -0
  719. package/deps/simdutf/tests/validate_utf16be_with_errors_tests.cpp +188 -0
  720. package/deps/simdutf/tests/validate_utf16le_basic_tests.cpp +268 -0
  721. package/deps/simdutf/tests/validate_utf16le_with_errors_tests.cpp +274 -0
  722. package/deps/simdutf/tests/validate_utf32_basic_tests.cpp +92 -0
  723. package/deps/simdutf/tests/validate_utf32_with_errors_tests.cpp +114 -0
  724. package/deps/simdutf/tests/validate_utf8_basic_tests.cpp +178 -0
  725. package/deps/simdutf/tests/validate_utf8_brute_force_tests.cpp +88 -0
  726. package/deps/simdutf/tests/validate_utf8_puzzler_tests.cpp +33 -0
  727. package/deps/simdutf/tests/validate_utf8_with_errors_tests.cpp +228 -0
  728. package/deps/simdutf/tools/CMakeLists.txt +85 -0
  729. package/deps/simdutf/tools/fastbase64.cpp +250 -0
  730. package/deps/simdutf/tools/sutf.cpp +556 -0
  731. package/deps/simdutf/tools/sutf.h +40 -0
  732. package/package.json +2 -2
@@ -0,0 +1,2845 @@
1
+ #include "simdutf.h"
2
+
3
+ #if SIMDUTF_CPLUSPLUS20
4
+ #include <barrier>
5
+ #endif
6
+ #include <iostream>
7
+ #include <iomanip>
8
+ #include <random>
9
+ #include <thread>
10
+ #include <vector>
11
+
12
+ #include <tests/helpers/test.h>
13
+ using random_generator = std::mt19937;
14
+ static random_generator::result_type seed = 42;
15
+ // check if we are running with thread sanitizer
16
+ #if defined(__clang__)
17
+ #if __has_feature(thread_sanitizer)
18
+ #define RUNNING_UNDER_THREAD_SANITIZER 1
19
+ #else
20
+ #define RUNNING_UNDER_THREAD_SANITIZER 0
21
+ #endif
22
+ #elif defined(__GNUC__)
23
+ #if defined(__SANITIZE_THREAD__)
24
+ #define RUNNING_UNDER_THREAD_SANITIZER 1
25
+ #else
26
+ #define RUNNING_UNDER_THREAD_SANITIZER 0
27
+ #endif
28
+ #else
29
+ #define RUNNING_UNDER_THREAD_SANITIZER 0
30
+ #endif
31
+
32
+ #if !defined(SIMDUTF_NO_THREADS) && SIMDUTF_ATOMIC_REF && SIMDUTF_SPAN
33
+
34
+ TEST(issue_824) {
35
+ struct read_write {
36
+ size_t read;
37
+ size_t written;
38
+ };
39
+ std::vector<std::tuple<std::string, read_write, std::vector<char>>>
40
+ test_cases = {
41
+ {" ", {2, 0}, {}}, // return the entire input length, including
42
+ // trailing whitespace.
43
+ {" A A G A / v 8 ",
44
+ {8, 3},
45
+ {0, 1, char(128)}} // return the ending position of the previous
46
+ // chunk before skipping whitespace.
47
+ };
48
+ std::vector<unsigned char> case1(5463, 0x20);
49
+ case1.back() = 0x38;
50
+ test_cases.emplace_back(std::string(case1.begin(), case1.end()),
51
+ read_write{0, 0}, std::vector<char>{});
52
+ std::string long_input(1000, ' ');
53
+ test_cases.emplace_back(long_input, read_write{1000, 0}, std::vector<char>{});
54
+ test_cases.emplace_back(long_input + " A A G A / v 8 ",
55
+ read_write{1000 + 8, 3},
56
+ std::vector<char>{0, 1, char(128)});
57
+ test_cases.emplace_back(long_input + "A", read_write{0, 0},
58
+ std::vector<char>{});
59
+ test_cases.emplace_back("AAAA" + long_input + "A", read_write{4, 3},
60
+ std::vector<char>{0, 0, 0});
61
+
62
+ for (const std::tuple<std::string, read_write, std::vector<char>> &t :
63
+ test_cases) {
64
+ auto input_data = std::get<0>(t);
65
+ auto read_write_info = std::get<1>(t);
66
+ auto expected_output = std::get<2>(t);
67
+ std::vector<char> output_buffer(
68
+ implementation.maximal_binary_length_from_base64(input_data.data(),
69
+ input_data.size()));
70
+ size_t written = output_buffer.size();
71
+ const auto r = simdutf::atomic_base64_to_binary_safe(
72
+ input_data.data(), input_data.size(), output_buffer.data(), written,
73
+ simdutf::base64_default,
74
+ simdutf::last_chunk_handling_options::stop_before_partial, true);
75
+ ASSERT_EQUAL(r.error, simdutf::error_code::SUCCESS);
76
+ ASSERT_EQUAL(r.count, read_write_info.read);
77
+ ASSERT_EQUAL(written, expected_output.size());
78
+ output_buffer.resize(written);
79
+ ASSERT_TRUE(output_buffer == expected_output);
80
+ }
81
+ for (const std::tuple<std::string, read_write, std::vector<char>> &t :
82
+ test_cases) {
83
+ auto input_data = std::get<0>(t);
84
+ auto read_write_info = std::get<1>(t);
85
+ auto expected_output = std::get<2>(t);
86
+ std::vector<char> output_buffer(expected_output.size(),
87
+ 0); // we know the size of the output
88
+ size_t written = output_buffer.size();
89
+ const auto r = simdutf::atomic_base64_to_binary_safe(
90
+ input_data.data(), input_data.size(), output_buffer.data(), written,
91
+ simdutf::base64_default,
92
+ simdutf::last_chunk_handling_options::stop_before_partial, true);
93
+ ASSERT_EQUAL(r.error, simdutf::error_code::SUCCESS);
94
+ ASSERT_EQUAL(r.count, read_write_info.read);
95
+ ASSERT_EQUAL(written, expected_output.size());
96
+ output_buffer.resize(written);
97
+ ASSERT_TRUE(output_buffer == expected_output);
98
+ }
99
+ }
100
+
101
+ TEST(atomic_roundtrip_base64) {
102
+ for (size_t len = 0; len < 2048; len++) {
103
+ std::vector<char> source(len, 0);
104
+ std::vector<char> buffer;
105
+ buffer.resize(simdutf::base64_length_from_binary(len));
106
+ std::vector<char> back(len);
107
+ std::mt19937 gen((std::mt19937::result_type)(seed));
108
+ std::uniform_int_distribution<int> byte_generator{0, 255};
109
+ for (size_t trial = 0; trial < 10; trial++) {
110
+ for (size_t i = 0; i < len; i++) {
111
+ source[i] = byte_generator(gen);
112
+ }
113
+ size_t size = simdutf::atomic_binary_to_base64(
114
+ source.data(), source.size(), buffer.data());
115
+ ASSERT_EQUAL(size, simdutf::base64_length_from_binary(len));
116
+ simdutf::result r =
117
+ implementation.base64_to_binary(buffer.data(), size, back.data());
118
+ ASSERT_EQUAL(r.error, simdutf::error_code::SUCCESS);
119
+ ASSERT_EQUAL(r.count, len);
120
+ if (back != source) {
121
+ printf("=====input size %zu\n", len);
122
+ for (size_t i = 0; i < len; i++) {
123
+ if (back[i] != source[i]) {
124
+ printf("Mismatch at position %zu trial %zu\n", i, trial);
125
+ }
126
+ printf("%zu: %02x %02x\n", i, uint8_t(back[i]), uint8_t(source[i]));
127
+ }
128
+ printf("=====base64 size %zu\n", size);
129
+ for (size_t i = 0; i < size; i++) {
130
+ printf("%zu: %02x %c\n", i, uint8_t(buffer[i]), buffer[i]);
131
+ }
132
+ }
133
+ ASSERT_TRUE(back == source);
134
+ back.assign(len, 0);
135
+ size_t written_out = back.size();
136
+ r = simdutf::atomic_base64_to_binary_safe(buffer.data(), size,
137
+ back.data(), written_out);
138
+ ASSERT_EQUAL(r.error, simdutf::error_code::SUCCESS);
139
+ ASSERT_EQUAL(r.count, size);
140
+ ASSERT_EQUAL(written_out, len);
141
+ if (back != source) {
142
+ printf("=====input size %zu\n", len);
143
+ for (size_t i = 0; i < len; i++) {
144
+ if (back[i] != source[i]) {
145
+ printf("Mismatch at position %zu trial %zu\n", i, trial);
146
+ }
147
+ printf("%zu: %02x %02x\n", i, uint8_t(back[i]), uint8_t(source[i]));
148
+ }
149
+ printf("=====base64 size %zu\n", size);
150
+ for (size_t i = 0; i < size; i++) {
151
+ printf("%zu: %02x %c\n", i, uint8_t(buffer[i]), buffer[i]);
152
+ }
153
+ }
154
+ ASSERT_TRUE(back == source);
155
+ }
156
+ }
157
+ }
158
+
159
+ TEST(atomic_binary_to_base64_large_roundtrip) {
160
+ const std::vector<char> binary(10000, '\0');
161
+ std::string b64output(binary.size() * 4 / 3 + 4, '\0');
162
+ const auto ret = simdutf::atomic_binary_to_base64(binary, b64output);
163
+ ASSERT_TRUE(ret > 0);
164
+ b64output.resize(ret);
165
+ std::vector<char> recovered(binary.size(), '?');
166
+ std::size_t outlen = recovered.size();
167
+ const auto ret2 = simdutf::atomic_base64_to_binary_safe(
168
+ b64output.data(), b64output.size(), recovered.data(), outlen);
169
+ ASSERT_EQUAL(ret2.error, simdutf::SUCCESS);
170
+ ASSERT_EQUAL(recovered, binary);
171
+ }
172
+
173
+ TEST(atomic_span_roundtrip_base64) {
174
+ for (size_t len = 0; len < 2048; len++) {
175
+ std::vector<char> source(len, 0);
176
+ std::vector<char> buffer;
177
+ buffer.resize(simdutf::base64_length_from_binary(len));
178
+ std::vector<char> back(len);
179
+ std::mt19937 gen((std::mt19937::result_type)(seed));
180
+ std::uniform_int_distribution<int> byte_generator{0, 255};
181
+ for (size_t trial = 0; trial < 10; trial++) {
182
+ for (size_t i = 0; i < len; i++) {
183
+ source[i] = byte_generator(gen);
184
+ }
185
+ size_t size = simdutf::atomic_binary_to_base64(source, buffer);
186
+ ASSERT_EQUAL(size, simdutf::base64_length_from_binary(len));
187
+ simdutf::result r =
188
+ implementation.base64_to_binary(buffer.data(), size, back.data());
189
+ ASSERT_EQUAL(r.error, simdutf::error_code::SUCCESS);
190
+ ASSERT_EQUAL(r.count, len);
191
+ if (back != source) {
192
+ printf("=====input size %zu\n", len);
193
+ for (size_t i = 0; i < len; i++) {
194
+ if (back[i] != source[i]) {
195
+ printf("Mismatch at position %zu trial %zu\n", i, trial);
196
+ }
197
+ printf("%zu: %02x %02x\n", i, uint8_t(back[i]), uint8_t(source[i]));
198
+ }
199
+ printf("=====base64 size %zu\n", size);
200
+ for (size_t i = 0; i < size; i++) {
201
+ printf("%zu: %02x %c\n", i, uint8_t(buffer[i]), buffer[i]);
202
+ }
203
+ }
204
+ ASSERT_TRUE(back == source);
205
+ }
206
+ }
207
+ }
208
+ void compare_decode(
209
+ const auto &b64_input, const std::size_t decodesize,
210
+ const simdutf::base64_options options,
211
+ const simdutf::last_chunk_handling_options last_chunk_options,
212
+ const bool decode_up_to_bad_char) {
213
+ const auto s = [&]() {
214
+ if constexpr (sizeof(b64_input[0]) == 1) {
215
+ return std::span<const char>(
216
+ reinterpret_cast<const char *>(b64_input.data()), b64_input.size());
217
+ } else {
218
+ return std::span<const char16_t>(
219
+ reinterpret_cast<const char16_t *>(b64_input.data()),
220
+ b64_input.size());
221
+ }
222
+ }();
223
+ std::vector<char> outbuf1(decodesize);
224
+ std::size_t outlen1 = outbuf1.size();
225
+ const auto r1 = simdutf::base64_to_binary_safe(
226
+ s.data(), s.size(), outbuf1.data(), outlen1, options, last_chunk_options,
227
+ decode_up_to_bad_char);
228
+ // ensure that the output is zeroed out
229
+ for (std::size_t i = outlen1; i < decodesize; ++i) {
230
+ ASSERT_EQUAL(uint8_t(outbuf1.at(i)), 0);
231
+ }
232
+ std::vector<char> outbuf2(decodesize);
233
+ const auto [r2, outlen2] = simdutf::atomic_base64_to_binary_safe(
234
+ s, outbuf2, options, last_chunk_options, decode_up_to_bad_char);
235
+ for (std::size_t i = outlen2; i < decodesize; ++i) {
236
+ ASSERT_EQUAL(uint8_t(outbuf2.at(i)), 0);
237
+ }
238
+ // both must agree on the kind of error: we do not guarantee that they
239
+ // agree on the error code unless decode_up_to_bad_char is set to true
240
+ if (decode_up_to_bad_char) {
241
+ ASSERT_EQUAL(r1.error, r2.error);
242
+ } else {
243
+ ASSERT_EQUAL(r1.error == simdutf::error_code::SUCCESS,
244
+ r2.error == simdutf::error_code::SUCCESS);
245
+ }
246
+
247
+ // on success, must agree on the output
248
+ if (r1.error == simdutf::error_code::SUCCESS) {
249
+ ASSERT_EQUAL(outlen1, outlen2);
250
+ ASSERT_EQUAL(r1.count, r2.count);
251
+ for (std::size_t i = 0; i < outlen1; ++i) {
252
+ ASSERT_EQUAL(+outbuf1.at(i), +outbuf2.at(i));
253
+ }
254
+ // ensure also that the remainder of the output is equal
255
+ for (std::size_t i = outlen1; i < decodesize; ++i) {
256
+ ASSERT_EQUAL(+outbuf1.at(i), +outbuf2.at(i));
257
+ }
258
+ }
259
+ }
260
+
261
+ template <typename T> std::string get_code(T c) {
262
+ static_assert(std::is_same_v<T, char> || std::is_same_v<T, char16_t>,
263
+ "T must be char or char16_t");
264
+
265
+ using output_type =
266
+ std::conditional_t<std::is_same_v<T, char>, uint8_t, uint16_t>;
267
+ auto value = static_cast<output_type>(c);
268
+ if (c == '\n') {
269
+ return "'\\n'";
270
+ } else if (c == '\r') {
271
+ return "'\\r'";
272
+ } else if (c == '\t') {
273
+ return "'\\t'";
274
+ } else if (c == '\f') {
275
+ return "'\\f'";
276
+ } else if (c == '\\') {
277
+ return "'\\\\'";
278
+ } else if (value >= 32 && value <= 126) { // Printable ASCII range
279
+ return "'" + std::string(1, static_cast<char>(value)) + "'";
280
+ } else {
281
+ std::ostringstream oss;
282
+ oss << "'" << (std::is_same_v<T, char> ? "\\x" : "\\u") << std::hex
283
+ << std::setw(std::is_same_v<T, char> ? 2 : 4) << std::setfill('0')
284
+ << static_cast<unsigned>(value) << "'";
285
+ return oss.str();
286
+ }
287
+ }
288
+
289
+ [[nodiscard]] std::uint64_t compute_hash(const auto &data) noexcept {
290
+ constexpr std::uint64_t fnv_prime = 1099511628211ULL;
291
+ constexpr std::uint64_t fnv_offset = 14695981039346656037ULL;
292
+
293
+ std::uint64_t hash = fnv_offset;
294
+ for (const auto &item : data) {
295
+ hash ^= static_cast<std::uint64_t>(item);
296
+ hash *= fnv_prime;
297
+ }
298
+ return hash;
299
+ }
300
+
301
+ // For debugging purposes, we want to see a careful comparison of the
302
+ // output of the two implementations.
303
+ bool compare_decode_verbose(
304
+ const auto &b64_input, const std::size_t decodesize,
305
+ const simdutf::base64_options options,
306
+ const simdutf::last_chunk_handling_options last_chunk_options,
307
+ const bool decode_up_to_bad_char) {
308
+ std::cerr << "// input size: " << b64_input.size() << "\n";
309
+ std::cerr << "// decode buffer size: " << decodesize << "\n";
310
+ std::cerr << "// options: " << options << "\n";
311
+ std::cerr << "// last chunk options: " << last_chunk_options << "\n";
312
+ std::cerr << "// decode up to bad char: " << decode_up_to_bad_char << "\n";
313
+ std::cerr << "// hash: " << compute_hash(b64_input) << "\n";
314
+ std::cerr << "// implementation tested: "
315
+ << simdutf::get_active_implementation()->name() << "\n";
316
+ std::cerr << "// ";
317
+ for (std::size_t i = 0; i < b64_input.size(); ++i) {
318
+ std::cerr << uint64_t(b64_input[i]) << ", ";
319
+ if ((i + 1) % 16 == 0) {
320
+ std::cerr << "\n";
321
+ std::cerr << "// ";
322
+ }
323
+ }
324
+ std::cerr << "\n";
325
+ #if FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
326
+ std::cerr << "// fuzzing build mode: unsafe for production\n";
327
+ #else
328
+ std::cerr << "// fuzzing build mode: DISABLED, try enabling it when working "
329
+ "with fuzzers\n";
330
+ #endif
331
+ const auto s = [&]() {
332
+ if constexpr (sizeof(b64_input[0]) == 1) {
333
+ return std::span<const char>(
334
+ reinterpret_cast<const char *>(b64_input.data()), b64_input.size());
335
+ } else {
336
+ return std::span<const char16_t>(
337
+ reinterpret_cast<const char16_t *>(b64_input.data()),
338
+ b64_input.size());
339
+ }
340
+ }();
341
+
342
+ {
343
+ // We are going to compute the 'true' answer.
344
+ std::vector<char> largebuffer(s.size());
345
+ simdutf::full_result tr =
346
+ simdutf::get_active_implementation()->base64_to_binary_details(
347
+ s.data(), s.size(), largebuffer.data(), options,
348
+ last_chunk_options);
349
+ std::cerr << "// 'correct' output " << tr.output_count << " bytes\n";
350
+ std::cerr << "// 'correct' consumes " << tr.input_count << " characters\n";
351
+ std::cerr << "// 'correct' has error " << tr.error << "\n";
352
+ }
353
+
354
+ std::vector<char> outbuf1(decodesize);
355
+ std::size_t outlen1 = outbuf1.size();
356
+ const auto r1 = simdutf::base64_to_binary_safe(
357
+ s.data(), s.size(), outbuf1.data(), outlen1, options, last_chunk_options,
358
+ decode_up_to_bad_char);
359
+ // Check that the output is zeroed out
360
+ for (std::size_t i = outlen1; i < decodesize; ++i) {
361
+ if (uint8_t(outbuf1.at(i)) != 0) {
362
+ return false;
363
+ }
364
+ }
365
+ std::cerr << "// regular safe produces " << outlen1 << " bytes\n";
366
+ std::cerr << "// regular safe consumes " << r1.count << " characters\n";
367
+ std::cerr << "// regular has error " << r1.error << "\n";
368
+ if (r1.error == simdutf::error_code::INVALID_BASE64_CHARACTER) {
369
+ std::cerr << "// regular has error INVALID_BASE64_CHARACTER\n";
370
+ if (r1.count < s.size()) {
371
+ std::cerr << "// at character " << get_code(s[r1.count]) << "\n";
372
+ }
373
+ }
374
+ if (r1.error == simdutf::error_code::BASE64_INPUT_REMAINDER) {
375
+ std::cerr << "// regular has error BASE64_INPUT_REMAINDER\n";
376
+ }
377
+ if (r1.error == simdutf::error_code::OUTPUT_BUFFER_TOO_SMALL) {
378
+ std::cerr << "// regular has error OUTPUT_BUFFER_TOO_SMALL\n";
379
+ }
380
+ if (r1.error == simdutf::error_code::SUCCESS) {
381
+ std::cerr << "// regular has error SUCCESS\n";
382
+ }
383
+ std::vector<char> outbuf2(decodesize);
384
+ const auto [r2, outlen2] = simdutf::atomic_base64_to_binary_safe(
385
+ s, outbuf2, options, last_chunk_options, decode_up_to_bad_char);
386
+ for (std::size_t i = outlen2; i < decodesize; ++i) {
387
+ if (uint8_t(outbuf2.at(i)) != 0) {
388
+ return false;
389
+ }
390
+ }
391
+ std::cerr << "// atomic produces " << outlen2 << " bytes\n";
392
+ std::cerr << "// atomic consumes " << r2.count << " characters\n";
393
+ std::cerr << "// atomic has error " << r2.error << "\n";
394
+ if (r2.error == simdutf::error_code::INVALID_BASE64_CHARACTER) {
395
+ std::cerr << "// atomic has error INVALID_BASE64_CHARACTER\n";
396
+ if (r2.count < s.size()) {
397
+ std::cerr << "// at character " << get_code(s[r2.count]) << "\n";
398
+ }
399
+ }
400
+ if (r2.error == simdutf::error_code::BASE64_INPUT_REMAINDER) {
401
+ std::cerr << "// atomic has error BASE64_INPUT_REMAINDER\n";
402
+ }
403
+ if (r2.error == simdutf::error_code::OUTPUT_BUFFER_TOO_SMALL) {
404
+ std::cerr << "// atomic has error OUTPUT_BUFFER_TOO_SMALL\n";
405
+ }
406
+ if (r2.error == simdutf::error_code::SUCCESS) {
407
+ std::cerr << "// atomic has error SUCCESS\n";
408
+ }
409
+
410
+ // Both must agree on the kind of error
411
+ if (decode_up_to_bad_char) {
412
+ if (r1.error != r2.error) {
413
+ return false;
414
+ }
415
+ } else {
416
+ if ((r1.error == simdutf::error_code::SUCCESS) !=
417
+ (r2.error == simdutf::error_code::SUCCESS)) {
418
+ return false;
419
+ }
420
+ }
421
+
422
+ // On success, must agree on the output
423
+ if (r1.error == simdutf::error_code::SUCCESS) {
424
+ if (outlen1 != outlen2 || r1.count != r2.count) {
425
+ return false;
426
+ }
427
+ for (std::size_t i = 0; i < outlen1; ++i) {
428
+ if (+outbuf1.at(i) != +outbuf2.at(i)) {
429
+ return false;
430
+ }
431
+ }
432
+ // Ensure remainder of the output is equal
433
+ for (std::size_t i = outlen1; i < decodesize; ++i) {
434
+ if (+outbuf1.at(i) != +outbuf2.at(i)) {
435
+ return false;
436
+ }
437
+ }
438
+ }
439
+ return true;
440
+ }
441
+
442
+ TEST(issue_dash) {
443
+ const std::string input = "Iw==";
444
+ std::vector<char> back(1);
445
+ size_t len = back.size();
446
+ auto r = simdutf::atomic_base64_to_binary_safe(input.data(), input.size(),
447
+ back.data(), len);
448
+ ASSERT_EQUAL(r.error, simdutf::error_code::SUCCESS);
449
+ ASSERT_EQUAL(r.count, 4);
450
+ ASSERT_EQUAL(len, 1);
451
+ ASSERT_EQUAL(back[0], '#');
452
+ }
453
+
454
+ TEST(issue_dash_partial) {
455
+ const std::string input = "Iw==";
456
+ std::vector<char> back(1);
457
+ size_t len = back.size();
458
+ auto r = simdutf::atomic_base64_to_binary_safe(
459
+ input.data(), input.size(), back.data(), len, simdutf::base64_url,
460
+ simdutf::last_chunk_handling_options::stop_before_partial);
461
+ ASSERT_EQUAL(r.error, simdutf::error_code::SUCCESS);
462
+ ASSERT_EQUAL(r.count, 4);
463
+ ASSERT_EQUAL(len, 1);
464
+ ASSERT_EQUAL(back[0], '#');
465
+ }
466
+
467
+ TEST(issue_202505170242) {
468
+ const std::vector<char> base64{
469
+ '\f', '\n', '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
470
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
471
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
472
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '=', ' ', ' ', ' ', ' ', ' ',
473
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
474
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
475
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
476
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
477
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
478
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
479
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
480
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
481
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
482
+ };
483
+ compare_decode(base64, 62976, simdutf::base64_url_with_padding,
484
+ simdutf::last_chunk_handling_options::strict, true);
485
+ ASSERT_TRUE(compare_decode_verbose(
486
+ base64, 62976, simdutf::base64_url_with_padding,
487
+ simdutf::last_chunk_handling_options::strict, true));
488
+ };
489
+
490
+ TEST(issue_202505170245) {
491
+ const std::vector<char> base64{
492
+ '\r', '\t', '\t', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
493
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
494
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
495
+ '\f', '\f', '\f', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
496
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
497
+ 'C', '0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
498
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
499
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
500
+ ' ', 'C', '0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1', ' ',
501
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '0',
502
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
503
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', '5', ' ', ' ', ' ', ' ',
504
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ',
505
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '\f',
506
+ '\f', '\f', ' ', '\n', '\n', '\n', '=',
507
+ };
508
+ ASSERT_TRUE(compare_decode_verbose(
509
+ base64, 8236, simdutf::base64_default,
510
+ simdutf::last_chunk_handling_options::strict, true));
511
+ compare_decode(base64, 8236, simdutf::base64_default,
512
+ simdutf::last_chunk_handling_options::strict, true);
513
+ };
514
+
515
+ TEST(issue_202505170241) {
516
+ const std::vector<char> base64{
517
+ 'c', 'c', 'c', '\t', '=', '\n', '\r', '\n', '\f', '\f', '\f', '\f',
518
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
519
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
520
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
521
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
522
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
523
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
524
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
525
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
526
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
527
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
528
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
529
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
530
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
531
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
532
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '=',
533
+ };
534
+ ASSERT_TRUE(compare_decode_verbose(
535
+ base64, 2621, simdutf::base64_url_with_padding,
536
+ simdutf::last_chunk_handling_options::stop_before_partial, true));
537
+ compare_decode(base64, 2621, simdutf::base64_url_with_padding,
538
+ simdutf::last_chunk_handling_options::stop_before_partial,
539
+ true);
540
+ };
541
+
542
+ TEST(issue_202505170219) {
543
+ const std::vector<char> base64{
544
+ '\r', 'c', 'c', 'c', '\f', '\f', '\f', '-', '\f', '\f', '\f', '\f',
545
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\n', '\n', '\n', '\n',
546
+ '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
547
+ '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
548
+ '\n', '\n', '\n', 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
549
+ 'y', 'y', 'y', 'y', 'y', 'y', 'x', 'y', 'y', 'y', 'y', '\t',
550
+ 'D', 'y', 'i', 'y', 'D', 'D', 'y', 'y', 'y', 'y', 'y', 'x',
551
+ 'y', 'y', '\t', 'D', '\t', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
552
+ 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y', '\n', '\n', '\n',
553
+ '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
554
+ '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
555
+ '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
556
+ '\n', '\n', '\n', '\n', '\f', '\f', '\f', '\f', '\f', '\f', '\t', '=',
557
+ '\t', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\f', '\f', '\f', '\f',
558
+ '\f', '\f', '\f', '\t', '=', '\t',
559
+ };
560
+ compare_decode(base64, 2621, simdutf::base64_url_with_padding,
561
+ simdutf::last_chunk_handling_options::stop_before_partial,
562
+ true);
563
+ ASSERT_TRUE(compare_decode_verbose(
564
+ base64, 2621, simdutf::base64_url_with_padding,
565
+ simdutf::last_chunk_handling_options::stop_before_partial, true));
566
+ };
567
+
568
+ TEST(issue_202505170211) {
569
+ const std::vector<char> base64{
570
+ 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
571
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
572
+ 'y', 'y', 'y', 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
573
+ 'y', 'y', 'y', 'y', 'y', 'y', 'x', 'y', 'y', 'y', 'y', '\t',
574
+ 'D', 'y', 'i', 'y', 'D', 'D', 'y', 'y', 'y', 'y', 'y', 'x',
575
+ 'y', 'y', '\t', 'D', '\t', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
576
+ 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
577
+ 'y', 'y', 'y', 'x', 'y', 'y', 'y', 'y', '\t', 'D', 'y', 'y',
578
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'k', 'y', 'y', 'y',
579
+ 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
580
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
581
+ 'y', 'y', 'y', 'y', 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y',
582
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'k', 'y', 'y', 'y', 'y',
583
+ 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
584
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
585
+ 'y', 'y', 'y', 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
586
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', '\t', 'D', 'D', 'y', 'y',
587
+ 'y', 'y', 'y', 'y', 'y', 'x', 'y', 'y', 'y', 'y', '\f', '\f',
588
+ '\f', '\f', '\f', '\f', 'y', 'y', 'k', 'y', 'y', 'y', 'y', 'y',
589
+ 'y', 'y', 'y', 'y', 'y', 'y', 'i', 'y', 'y', 'y', 'y', 'y',
590
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'D', '\f', '\f',
591
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', 'D', 'y', 'y', 'y', 'y',
592
+ 'y', 'y', 'y', 'x', 'y', 'y', 'y', 'y', 'y', 'y', 'y', '\f',
593
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
594
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', 'y',
595
+ 'y', 'y', 'y', 'y', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
596
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
597
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
598
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
599
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
600
+ '=',
601
+ };
602
+ compare_decode(base64, 31097, simdutf::base64_url_with_padding,
603
+ simdutf::last_chunk_handling_options::strict, true);
604
+ ASSERT_TRUE(compare_decode_verbose(
605
+ base64, 31097, simdutf::base64_url_with_padding,
606
+ simdutf::last_chunk_handling_options::strict, true));
607
+ };
608
+
609
+ TEST(issue_202505170137) {
610
+ const std::vector<char> base64{
611
+ '\r', 'c', 'c', 'c', '\f', '\f', '\f', '\f', '\f', 'p', 'C', '\n',
612
+ '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
613
+ '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', 'C', 'C', 'C',
614
+ 'C', 'C', 'C', '1', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C',
615
+ 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C',
616
+ 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', '\n', '\n', '\n', '\n',
617
+ '\n', '\n', '\n', '\n', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C',
618
+ 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C',
619
+ 'C', 'C', '_', 'C', 'C', 'C', 'r', 'r', 'r', 'r', '\f', '\f',
620
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\n', '\n',
621
+ '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
622
+ '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
623
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
624
+ '\f', '\f', '\f', '\f', '\f', '\f', '1', '\f', '\f', '\t', '=', '\t',
625
+ '\f', '\n', '\f', '\f', '\f', '\n', '=',
626
+ };
627
+ compare_decode(base64, 2621, simdutf::base64_url_with_padding,
628
+ simdutf::last_chunk_handling_options::stop_before_partial,
629
+ true);
630
+ ASSERT_TRUE(compare_decode_verbose(
631
+ base64, 2621, simdutf::base64_url_with_padding,
632
+ simdutf::last_chunk_handling_options::stop_before_partial, true));
633
+ };
634
+
635
+ TEST(issue_202505170122) {
636
+ const std::vector<char> base64{
637
+ 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
638
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
639
+ 'y', 'y', 'y', 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
640
+ 'y', 'y', 'y', 'y', 'y', 'y', 'x', 'y', 'y', 'y', 'y', '\t',
641
+ 'D', 'y', 'i', 'y', 'D', 'D', 'y', 'y', 'y', 'y', 'y', 'x',
642
+ 'y', 'y', '\t', 'D', '\t', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
643
+ 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
644
+ 'y', 'y', 'y', 'x', 'y', 'y', 'y', 'y', '\t', 'D', 'y', 'y',
645
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'k', 'y', 'y', 'y',
646
+ 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
647
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
648
+ 'y', 'y', 'y', 'y', 'y', 'i', 'y', 'y', 'y', 'y', 'y', 'y',
649
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', '\t', 'D', 'D', 'y',
650
+ 'y', 'y', 'y', 'y', 'y', 'y', 'x', 'y', 'y', 'y', 'y', '\f',
651
+ '\f', '\f', '\f', '\f', '\f', 'y', 'y', 'k', 'y', 'y', 'y', 'y',
652
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'i', 'y', 'y', 'y', 'y',
653
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'D', '\f',
654
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', 'D', 'y', 'y', 'y',
655
+ 'y', 'y', 'y', 'y', 'x', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
656
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
657
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
658
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'i', 'y', 'y', 'y',
659
+ 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'x', 'y',
660
+ 'Y', 'y', 'D', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
661
+ 'D', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'x', 'y', 'y', 'y',
662
+ 'y', 'y', 'y', 'y', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
663
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
664
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
665
+ '\f', 'z', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
666
+ '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f', '\f',
667
+ '\f', '=',
668
+ };
669
+ compare_decode(base64, 31097, simdutf::base64_url_with_padding,
670
+ simdutf::last_chunk_handling_options::strict, true);
671
+
672
+ ASSERT_TRUE(compare_decode_verbose(
673
+ base64, 31097, simdutf::base64_url_with_padding,
674
+ simdutf::last_chunk_handling_options::strict, true));
675
+ };
676
+
677
+ TEST(issue_202505170003) {
678
+ // input:
679
+ // _ccc_____pC__________________J___CCCCCC1CCCCCCCCCCCCCCCCCCCCCCCCCCCC_________CCCCCCCCCCCCCCCCCCCCCCCCCrrrr_____________________
680
+ // ___________________________________1___=_______=
681
+ // count=175
682
+ const std::vector<unsigned char> base64{
683
+ 0x0d, 0x63, 0x63, 0x63, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x70, 0x43, 0x0a,
684
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
685
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x4a, 0x0a, 0x0a, 0x0a, 0x43, 0x43, 0x43,
686
+ 0x43, 0x43, 0x43, 0x31, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
687
+ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
688
+ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x0a, 0x0a, 0x0a, 0x0a,
689
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
690
+ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
691
+ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x72, 0x72, 0x72, 0x72, 0x0c, 0x0c,
692
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0a, 0x0a,
693
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
694
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
695
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
696
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x31, 0x0c, 0x0c, 0x09, 0x3d, 0x09,
697
+ 0x0c, 0x0a, 0x0c, 0x0c, 0x0c, 0x0a, 0x3d,
698
+ };
699
+ compare_decode(base64, 2621, simdutf::base64_url_with_padding,
700
+ simdutf::last_chunk_handling_options::stop_before_partial,
701
+ true);
702
+ };
703
+ TEST(issue_16_05_2025_002) {
704
+ const std::vector<unsigned char> base64{
705
+ 0x0d, 0x63, 0x63, 0x63, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x70, 0x43, 0x0a,
706
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
707
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x43, 0x43, 0x43,
708
+ 0x43, 0x43, 0x43, 0x31, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
709
+ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
710
+ 0x43, 0x43, 0x79, 0x78, 0x6b, 0x42, 0x09, 0x44, 0x09, 0x44, 0x44, 0x79,
711
+ 0x79, 0x79, 0x79, 0x79, 0x79, 0x78, 0x79, 0x79, 0x09, 0x44, 0x09, 0x44,
712
+ 0x44, 0x79, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
713
+ 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x72, 0x72, 0x72, 0x72, 0x0c, 0x0c,
714
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0a, 0x0a,
715
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
716
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
717
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
718
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x31, 0x0c, 0x0c, 0x09, 0x3d, 0x09,
719
+ 0x0c, 0x0a, 0x0c, 0x0c, 0x0c, 0x0a, 0x3d,
720
+ };
721
+ compare_decode(base64, 2621, simdutf::base64_url_with_padding,
722
+ simdutf::last_chunk_handling_options::stop_before_partial,
723
+ true);
724
+ };
725
+
726
+ TEST(issue_16_05_2025_001) {
727
+ const std::vector<unsigned char> base64{
728
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
729
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
730
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
731
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
732
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
733
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
734
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
735
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
736
+ 0x4c, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
737
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x3d, 0x09, 0x09, 0x09,
738
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x09,
739
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
740
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
741
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
742
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
743
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0xa6, 0xa6, 0xa6,
744
+ 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0x8c, 0xa6, 0xa6, 0xa6,
745
+ 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0x33, 0xff, 0x32, 0xff, 0x32, 0x7a,
746
+ 0x3d,
747
+ };
748
+ compare_decode(base64, 42662, simdutf::base64_default_no_padding,
749
+ simdutf::last_chunk_handling_options::loose, false);
750
+ };
751
+
752
+ TEST(issue_06_05_2025_001) {
753
+ const std::vector<unsigned char> base64{
754
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
755
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
756
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
757
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
758
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
759
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
760
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
761
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
762
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x0a, 0x0a,
763
+ 0x0a, 0x6f, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f,
764
+ 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71,
765
+ 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x0a,
766
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x0a,
767
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x4b, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
768
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
769
+ };
770
+ compare_decode(base64, 28426, simdutf::base64_default,
771
+ simdutf::last_chunk_handling_options::stop_before_partial,
772
+ true);
773
+ };
774
+
775
+ template <typename char_type>
776
+ std::vector<char_type> add_simple_spaces(std::vector<char_type> &v,
777
+ std::mt19937 &gen,
778
+ size_t number_of_spaces) {
779
+ // If there are no spaces to add or the vector is empty, return
780
+ if (number_of_spaces == 0) {
781
+ return v;
782
+ }
783
+
784
+ // Generate unique random positions
785
+ std::vector<bool> positions(v.size() + number_of_spaces, false);
786
+ std::uniform_int_distribution<size_t> dist(0, positions.size() - 1);
787
+ for (size_t i = 0; i < number_of_spaces; ++i) {
788
+ size_t pos = dist(gen);
789
+ while (positions[pos]) {
790
+ pos = dist(gen);
791
+ }
792
+ positions[pos] = true;
793
+ }
794
+ std::vector<char_type> result;
795
+ result.resize(v.size() + number_of_spaces);
796
+ int pos = 0;
797
+ for (size_t i = 0; i < v.size() + number_of_spaces; ++i) {
798
+ if (positions[i]) {
799
+ result[i] = ' ';
800
+ } else {
801
+ result[i] = v[pos++];
802
+ }
803
+ }
804
+ return result;
805
+ }
806
+
807
+ TEST(base64_with_spaces) {
808
+ uint64_t seed = 0x12345678;
809
+ for (size_t len = 0; len < 8000; len += 15) {
810
+ std::vector<char> source(len, 0);
811
+ std::vector<char> buffer;
812
+ buffer.resize(simdutf::base64_length_from_binary(len));
813
+ std::mt19937 gen((std::mt19937::result_type)(seed));
814
+ std::uniform_int_distribution<int> byte_generator{0, 255};
815
+ for (size_t trial = 0; trial < 20; trial++) {
816
+ for (size_t i = 0; i < len; i++) {
817
+ source[i] = 'a' + i % ('z' - 'a'); // byte_generator(gen);
818
+ }
819
+ size_t size = implementation.binary_to_base64(
820
+ source.data(), source.size(), buffer.data());
821
+ buffer.resize(size);
822
+ add_simple_spaces(buffer, gen, 500);
823
+ for (auto option :
824
+ {simdutf::last_chunk_handling_options::strict,
825
+ simdutf::last_chunk_handling_options::loose,
826
+ simdutf::last_chunk_handling_options::stop_before_partial}) {
827
+ compare_decode(buffer, len, simdutf::base64_default, option, false);
828
+ compare_decode(buffer, len / 2, simdutf::base64_default, option, false);
829
+ }
830
+ }
831
+ }
832
+ }
833
+
834
+ TEST(gets_different_error) {
835
+ std::vector<unsigned char> base64(5463, 0x20);
836
+ base64.back() = 0x38;
837
+ compare_decode(base64, 8224, simdutf::base64_default,
838
+ simdutf::last_chunk_handling_options::stop_before_partial,
839
+ false);
840
+ }
841
+
842
+ // different error reported, INVALID_BASE64_CHARACTER=7 vs
843
+ // BASE64_INPUT_REMAINDER=8
844
+ TEST(gets_different_error2) {
845
+ const std::vector<unsigned char> base64{
846
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
847
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
848
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69,
849
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x61, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
850
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
851
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69,
852
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69,
853
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69,
854
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
855
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
856
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
857
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
858
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
859
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
860
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
861
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69,
862
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
863
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
864
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
865
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
866
+ 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
867
+ 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
868
+ 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69,
869
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
870
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
871
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
872
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
873
+ 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
874
+ 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x44, 0x4c,
875
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69,
876
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
877
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
878
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
879
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
880
+ 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
881
+ 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
882
+ 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69,
883
+ 0x31, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
884
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
885
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
886
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69,
887
+ 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
888
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
889
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
890
+ 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
891
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
892
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
893
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
894
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69,
895
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69,
896
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
897
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
898
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
899
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69,
900
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69,
901
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69,
902
+ 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
903
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
904
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
905
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
906
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
907
+ 0x4c, 0x4c, 0x4c, 0x44, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
908
+ 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
909
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
910
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
911
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
912
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
913
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
914
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
915
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
916
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
917
+ 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69,
918
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
919
+ 0x4c, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
920
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
921
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
922
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
923
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69,
924
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69,
925
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
926
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
927
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
928
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69,
929
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69,
930
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69,
931
+ 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
932
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
933
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
934
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30,
935
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c,
936
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x44, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
937
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
938
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
939
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
940
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
941
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
942
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
943
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
944
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
945
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69,
946
+ 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20,
947
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
948
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
949
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
950
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69,
951
+ 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
952
+ 0x44, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
953
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
954
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
955
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
956
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
957
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
958
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
959
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
960
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
961
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
962
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
963
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
964
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
965
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
966
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
967
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
968
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
969
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
970
+ 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
971
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
972
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
973
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x20, 0x69, 0x69,
974
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
975
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
976
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
977
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
978
+ 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
979
+ 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
980
+ 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69,
981
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
982
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
983
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
984
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
985
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
986
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
987
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
988
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
989
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
990
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
991
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
992
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
993
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
994
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
995
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
996
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x31, 0x69, 0x69, 0x69,
997
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
998
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
999
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1000
+ 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1001
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1002
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1003
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x20, 0x69, 0x69,
1004
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1005
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1006
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1007
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1008
+ 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1009
+ 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1010
+ 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69,
1011
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1012
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1013
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1014
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1015
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1016
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1017
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
1018
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1019
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1020
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1021
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1022
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1023
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1024
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1025
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1026
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1027
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1028
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1029
+ 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1030
+ 0x4c, 0x20, 0x20, 0x20, 0x20, 0x67, 0x67, 0x67, 0x20, 0x4c, 0x4c, 0x4c,
1031
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1032
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69,
1033
+ 0x69, 0x69, 0x69, 0x69, 0x61, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1034
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1035
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69,
1036
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69,
1037
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69,
1038
+ 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1039
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1040
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1041
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1042
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69,
1043
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69,
1044
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69,
1045
+ 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1046
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1047
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1048
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30,
1049
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c,
1050
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1051
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1052
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69,
1053
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1054
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1055
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1056
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1057
+ 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20,
1058
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x43,
1059
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69,
1060
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1061
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69,
1062
+ 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1063
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1064
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1065
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69,
1066
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c,
1067
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x44, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1068
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1069
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1070
+ 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1071
+ 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1072
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
1073
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x61, 0x69, 0x69, 0x69,
1074
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1075
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1076
+ 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1077
+ 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1078
+ 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69,
1079
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1080
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1081
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1082
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1083
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1084
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1085
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x20, 0x69,
1086
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1087
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1088
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1089
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1090
+ 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1091
+ 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1092
+ 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1093
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1094
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1095
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1096
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
1097
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1098
+ 0x4c, 0x4c, 0x4c, 0x44, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1099
+ 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1100
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1101
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1102
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1103
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1104
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1105
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1106
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1107
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1108
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1109
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1110
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1111
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1112
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x31,
1113
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1114
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1115
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1116
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1117
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1118
+ 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1119
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69,
1120
+ 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1121
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1122
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1123
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1124
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69,
1125
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1126
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1127
+ 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1128
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1129
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1130
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
1131
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1132
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1133
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1134
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1135
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1136
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1137
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1138
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1139
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1140
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1141
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1142
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x31,
1143
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1144
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1145
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1146
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1147
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1148
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1149
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69,
1150
+ 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1151
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1152
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1153
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1154
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69,
1155
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1156
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1157
+ 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1158
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1159
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1160
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
1161
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1162
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1163
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1164
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1165
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1166
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1167
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1168
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1169
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1170
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1171
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1172
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1173
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1174
+ 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1175
+ 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1176
+ 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69,
1177
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1178
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69,
1179
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69,
1180
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1181
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1182
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1183
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
1184
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x44, 0x4c, 0x4c, 0x4c, 0x4c,
1185
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1186
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1187
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
1188
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1189
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1190
+ 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x61,
1191
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1192
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1193
+ 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1194
+ 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1195
+ 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20,
1196
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1197
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1198
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1199
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69,
1200
+ 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1201
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1202
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
1203
+ 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1204
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1205
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1206
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1207
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69,
1208
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69,
1209
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69,
1210
+ 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1211
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1212
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1213
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1214
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
1215
+ 0x4c, 0x4c, 0x4c, 0x44, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1216
+ 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1217
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1218
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1219
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1220
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1221
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1222
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1223
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1224
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1225
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1226
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1227
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1228
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1229
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x31,
1230
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1231
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1232
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1233
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1234
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1235
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1236
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1237
+ 0x69, 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1238
+ 0x69, 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1239
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1240
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1241
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1242
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69,
1243
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1244
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1245
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
1246
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1247
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1248
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1249
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1250
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1251
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1252
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1253
+ 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1254
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x31, 0x69, 0x69,
1255
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1256
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1257
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1258
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1259
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1260
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1261
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x20, 0x69,
1262
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1263
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1264
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1265
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1266
+ 0x69, 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1267
+ 0x69, 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1268
+ 0x69, 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20,
1269
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1270
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1271
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1272
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69,
1273
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1274
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1275
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
1276
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1277
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1278
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1279
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1280
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1281
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1282
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1283
+ 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1284
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1285
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1286
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1287
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
1288
+ 0x4c, 0x4c, 0x20, 0x20, 0x20, 0x20, 0x67, 0x67, 0x67, 0x20, 0x4c, 0x4c,
1289
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x20, 0x69, 0x69,
1290
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1291
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1292
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1293
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1294
+ 0x69, 0x69, 0x69, 0x49, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1295
+ 0x69, 0x69, 0x20, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1296
+ 0x69, 0x69, 0x43, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x20, 0x69,
1297
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1298
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1299
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1300
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
1301
+ 0x20, 0x20, 0x20, 0x3d,
1302
+ };
1303
+ compare_decode(base64, 8224, simdutf::base64_default,
1304
+ simdutf::last_chunk_handling_options::strict, false);
1305
+ };
1306
+
1307
+ TEST(issue_001) {
1308
+ // This string has two padding characters at the end following 3 base64
1309
+ // characters.
1310
+ //
1311
+ std::string base64 =
1312
+ " ccc "
1313
+ " "
1314
+ " = = ";
1315
+ compare_decode(base64, 65131, simdutf::base64_default,
1316
+ simdutf::last_chunk_handling_options::stop_before_partial,
1317
+ true);
1318
+ };
1319
+
1320
+ TEST(issue_002) {
1321
+ const std::vector<unsigned char> base64{
1322
+ 0x0d, 0x63, 0x63, 0x63, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1323
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1324
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1325
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1326
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1327
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1328
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1329
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1330
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1331
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1332
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0c, 0x0a, 0x0a,
1333
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
1334
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x09, 0x3d, 0x09, 0x0a, 0x0a,
1335
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1336
+ 0x09, 0x3d, 0x09, 0x0a,
1337
+ };
1338
+ compare_decode(base64, 2621, simdutf::base64_url_with_padding,
1339
+ simdutf::last_chunk_handling_options::stop_before_partial,
1340
+ true);
1341
+ };
1342
+
1343
+ TEST(issue_100) {
1344
+ // 7688 base 64 characters. 903 0x09.
1345
+ // 8596 characters.
1346
+ // 7688 is divisible by 4
1347
+ // 7688 / 4 = 1922
1348
+ // 1922 * 3 = 5766
1349
+ // So we should output 5766 bytes.
1350
+ const std::vector<unsigned char> base64{
1351
+ 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1352
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31,
1353
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1354
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39,
1355
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30,
1356
+ 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31,
1357
+ 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35,
1358
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32,
1359
+ 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30,
1360
+ 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37,
1361
+ 0x34, 0x37, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1362
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09,
1363
+ 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35,
1364
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38,
1365
+ 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31,
1366
+ 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1367
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31,
1368
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30,
1369
+ 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36,
1370
+ 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x31, 0x34, 0x32, 0x34, 0x09, 0x09,
1371
+ 0x09, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31,
1372
+ 0x32, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x39,
1373
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1374
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35,
1375
+ 0x39, 0x37, 0x37, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1376
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31,
1377
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x32, 0x32,
1378
+ 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09,
1379
+ 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30,
1380
+ 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32,
1381
+ 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33,
1382
+ 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38,
1383
+ 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1384
+ 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09,
1385
+ 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30,
1386
+ 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39,
1387
+ 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35,
1388
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34,
1389
+ 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35,
1390
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31,
1391
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30,
1392
+ 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32,
1393
+ 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35,
1394
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39,
1395
+ 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1396
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35,
1397
+ 0x39, 0x37, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30,
1398
+ 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35,
1399
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33,
1400
+ 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39,
1401
+ 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1402
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39,
1403
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30,
1404
+ 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34,
1405
+ 0x35, 0x35, 0x39, 0x37, 0x37, 0x31, 0x34, 0x32, 0x34, 0x09, 0x09, 0x09,
1406
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32,
1407
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x39, 0x35,
1408
+ 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31,
1409
+ 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39,
1410
+ 0x37, 0x37, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1411
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39,
1412
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x32, 0x32, 0x35,
1413
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09,
1414
+ 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30,
1415
+ 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39,
1416
+ 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34,
1417
+ 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09,
1418
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1419
+ 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09,
1420
+ 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30,
1421
+ 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31,
1422
+ 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35,
1423
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31,
1424
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x35,
1425
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31,
1426
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x30, 0x31, 0x30, 0x30,
1427
+ 0x09, 0x09, 0x32, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39,
1428
+ 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35,
1429
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31,
1430
+ 0x32, 0x38, 0x31, 0x37, 0x32, 0x34, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31,
1431
+ 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39,
1432
+ 0x37, 0x37, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1433
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09,
1434
+ 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35,
1435
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38,
1436
+ 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31,
1437
+ 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1438
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31,
1439
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30,
1440
+ 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39,
1441
+ 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x31, 0x31, 0x39,
1442
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1443
+ 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1444
+ 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34,
1445
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09,
1446
+ 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1447
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35,
1448
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1449
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31,
1450
+ 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1451
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09,
1452
+ 0x35, 0x35, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32,
1453
+ 0x39, 0x31, 0x31, 0x39, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1454
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35,
1455
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x32, 0x32, 0x35, 0x30,
1456
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35,
1457
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30,
1458
+ 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31,
1459
+ 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1460
+ 0x38, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34,
1461
+ 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09,
1462
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1463
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39,
1464
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1465
+ 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1466
+ 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34,
1467
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09,
1468
+ 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1469
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35,
1470
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35,
1471
+ 0x33, 0x34, 0x31, 0x31, 0x32, 0x32, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1472
+ 0x38, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1473
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1474
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32,
1475
+ 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32,
1476
+ 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1477
+ 0x31, 0x35, 0x35, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39,
1478
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35,
1479
+ 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x38, 0x09, 0x09, 0x09,
1480
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1481
+ 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09,
1482
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1483
+ 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09,
1484
+ 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x35, 0x35, 0x35,
1485
+ 0x35, 0x31, 0x31, 0x39, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1486
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35,
1487
+ 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1488
+ 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09,
1489
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1490
+ 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34,
1491
+ 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x38, 0x09, 0x09, 0x09,
1492
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1493
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1494
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
1495
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1496
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35,
1497
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1498
+ 0x31, 0x30, 0x31, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34,
1499
+ 0x32, 0x38, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
1500
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30,
1501
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
1502
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31,
1503
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30,
1504
+ 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1505
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34,
1506
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09,
1507
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1508
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35,
1509
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39,
1510
+ 0x35, 0x33, 0x34, 0x31, 0x31, 0x32, 0x32, 0x31, 0x39, 0x35, 0x33, 0x34,
1511
+ 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1512
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1513
+ 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31,
1514
+ 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34,
1515
+ 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1516
+ 0x35, 0x31, 0x35, 0x35, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34,
1517
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32,
1518
+ 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x38, 0x09, 0x09,
1519
+ 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1520
+ 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38,
1521
+ 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1522
+ 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09,
1523
+ 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x35, 0x35,
1524
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1525
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39,
1526
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1527
+ 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x39, 0x35, 0x34, 0x32, 0x38,
1528
+ 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1529
+ 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33,
1530
+ 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x38, 0x37, 0x32,
1531
+ 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33,
1532
+ 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38,
1533
+ 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1534
+ 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09,
1535
+ 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30,
1536
+ 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39,
1537
+ 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x30, 0x30, 0x30,
1538
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
1539
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31,
1540
+ 0x31, 0x39, 0x34, 0x38, 0x37, 0x31, 0x34, 0x30, 0x09, 0x09, 0x09, 0x30,
1541
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x35,
1542
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x39, 0x35, 0x33,
1543
+ 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30,
1544
+ 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37,
1545
+ 0x37, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1546
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35,
1547
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x32, 0x32, 0x35, 0x30,
1548
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35,
1549
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30,
1550
+ 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31,
1551
+ 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1552
+ 0x38, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34,
1553
+ 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09,
1554
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1555
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39,
1556
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1557
+ 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1558
+ 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34,
1559
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09,
1560
+ 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1561
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35,
1562
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35,
1563
+ 0x33, 0x34, 0x31, 0x31, 0x32, 0x32, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1564
+ 0x38, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1565
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1566
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32,
1567
+ 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32,
1568
+ 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1569
+ 0x31, 0x35, 0x35, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39,
1570
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35,
1571
+ 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x38, 0x09, 0x09, 0x09,
1572
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1573
+ 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09,
1574
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1575
+ 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09,
1576
+ 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x35, 0x35, 0x35,
1577
+ 0x35, 0x31, 0x31, 0x39, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1578
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35,
1579
+ 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1580
+ 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09,
1581
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1582
+ 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34,
1583
+ 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x38, 0x09, 0x09, 0x09,
1584
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1585
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1586
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
1587
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1588
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35,
1589
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1590
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31,
1591
+ 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x31, 0x31, 0x39, 0x35, 0x33,
1592
+ 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x35, 0x35, 0x35, 0x35,
1593
+ 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34,
1594
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09,
1595
+ 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1596
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35,
1597
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1598
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1599
+ 0x35, 0x35, 0x35, 0x35, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31,
1600
+ 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32,
1601
+ 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31,
1602
+ 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34,
1603
+ 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09,
1604
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35,
1605
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32,
1606
+ 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38,
1607
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32,
1608
+ 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32,
1609
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1610
+ 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34,
1611
+ 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1612
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1613
+ 0x38, 0x35, 0x30, 0x30, 0x31, 0x30, 0x30, 0x09, 0x09, 0x32, 0x30, 0x31,
1614
+ 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34,
1615
+ 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1616
+ 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x31, 0x37, 0x32,
1617
+ 0x34, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32,
1618
+ 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x38, 0x09, 0x09,
1619
+ 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1620
+ 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38,
1621
+ 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1622
+ 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09,
1623
+ 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09,
1624
+ 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1625
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1626
+ 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31,
1627
+ 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34,
1628
+ 0x32, 0x38, 0x09, 0x09, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1629
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09,
1630
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35,
1631
+ 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30,
1632
+ 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31,
1633
+ 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39,
1634
+ 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35,
1635
+ 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32,
1636
+ 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38,
1637
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30,
1638
+ 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35,
1639
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33,
1640
+ 0x34, 0x34, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1641
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35,
1642
+ 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1643
+ 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1644
+ 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39,
1645
+ 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30,
1646
+ 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32,
1647
+ 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x30, 0x30,
1648
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
1649
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31,
1650
+ 0x31, 0x31, 0x39, 0x34, 0x38, 0x37, 0x31, 0x34, 0x30, 0x09, 0x09, 0x09,
1651
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32,
1652
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x39, 0x35,
1653
+ 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31,
1654
+ 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39,
1655
+ 0x37, 0x37, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1656
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39,
1657
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x32, 0x32, 0x35,
1658
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09,
1659
+ 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30,
1660
+ 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39,
1661
+ 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34,
1662
+ 0x32, 0x38, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
1663
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30,
1664
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
1665
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31,
1666
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30,
1667
+ 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1668
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34,
1669
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09,
1670
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1671
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35,
1672
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39,
1673
+ 0x35, 0x33, 0x34, 0x31, 0x31, 0x32, 0x32, 0x31, 0x39, 0x35, 0x33, 0x34,
1674
+ 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1675
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1676
+ 0x38, 0x35, 0x30, 0x09, 0x09, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32,
1677
+ 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38,
1678
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32,
1679
+ 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32,
1680
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
1681
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31,
1682
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30,
1683
+ 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1684
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34,
1685
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09,
1686
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1687
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35,
1688
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39,
1689
+ 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35,
1690
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35,
1691
+ 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30,
1692
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
1693
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09,
1694
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1695
+ 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09,
1696
+ 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36,
1697
+ 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35,
1698
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35,
1699
+ 0x33, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x38, 0x32, 0x09, 0x09, 0x09,
1700
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35,
1701
+ 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30,
1702
+ 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x35, 0x35, 0x35, 0x35,
1703
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34,
1704
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32,
1705
+ 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x31, 0x34, 0x32,
1706
+ 0x34, 0x09, 0x09, 0x09, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
1707
+ 0x31, 0x30, 0x31, 0x32, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1708
+ 0x35, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09,
1709
+ 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x35, 0x35,
1710
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34,
1711
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09,
1712
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1713
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35,
1714
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39,
1715
+ 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35,
1716
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35,
1717
+ 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30,
1718
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
1719
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09,
1720
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x39,
1721
+ 0x31, 0x35, 0x35, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09,
1722
+ 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36,
1723
+ 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35,
1724
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35,
1725
+ 0x33, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09,
1726
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35,
1727
+ 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30,
1728
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35,
1729
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38,
1730
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x34, 0x35, 0x35, 0x39, 0x37,
1731
+ 0x37, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1732
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30,
1733
+ 0x30, 0x30, 0x38, 0x32, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35,
1734
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33,
1735
+ 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32,
1736
+ 0x32, 0x32, 0x35, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35,
1737
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33,
1738
+ 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35,
1739
+ 0x35, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
1740
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30,
1741
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
1742
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31,
1743
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30,
1744
+ 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1745
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34,
1746
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09,
1747
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1748
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35,
1749
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39,
1750
+ 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35,
1751
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35,
1752
+ 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30,
1753
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
1754
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09,
1755
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35,
1756
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32,
1757
+ 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38,
1758
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32,
1759
+ 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32,
1760
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x30, 0x36, 0x38,
1761
+ 0x35, 0x36, 0x39, 0x38, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09,
1762
+ 0x09, 0x09, 0x35, 0x35, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x09,
1763
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1764
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1765
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
1766
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x35,
1767
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33,
1768
+ 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09,
1769
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1770
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09,
1771
+ 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09,
1772
+ 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35,
1773
+ 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34,
1774
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09,
1775
+ 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1776
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35,
1777
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1778
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31,
1779
+ 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1780
+ 0x34, 0x39, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1781
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34,
1782
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
1783
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1784
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35,
1785
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x30,
1786
+ 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35,
1787
+ 0x35, 0x39, 0x37, 0x37, 0x31, 0x34, 0x32, 0x34, 0x09, 0x09, 0x09, 0x30,
1788
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x35,
1789
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x39, 0x35, 0x33,
1790
+ 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30,
1791
+ 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37,
1792
+ 0x37, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1793
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35,
1794
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x32, 0x32, 0x35, 0x30,
1795
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35,
1796
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30,
1797
+ 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31,
1798
+ 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1799
+ 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09,
1800
+ 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1801
+ 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30,
1802
+ 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1803
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31,
1804
+ 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1805
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31,
1806
+ 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1807
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39,
1808
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30,
1809
+ 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31,
1810
+ 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35,
1811
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32,
1812
+ 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30,
1813
+ 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37,
1814
+ 0x37, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1815
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30,
1816
+ 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35,
1817
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33,
1818
+ 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39,
1819
+ 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1820
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x33, 0x34,
1821
+ 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30,
1822
+ 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
1823
+ 0x34, 0x32, 0x38, 0x09, 0x09, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1824
+ 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09,
1825
+ 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1826
+ 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30,
1827
+ 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1828
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31,
1829
+ 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38,
1830
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32,
1831
+ 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32,
1832
+ 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09,
1833
+ 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35,
1834
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38,
1835
+ 0x33, 0x34, 0x34, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1836
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39,
1837
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1838
+ 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1839
+ 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34,
1840
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09,
1841
+ 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1842
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35,
1843
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35,
1844
+ 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35,
1845
+ 0x35, 0x35, 0x35, 0x39, 0x37, 0x37, 0x31, 0x34, 0x32, 0x34, 0x09, 0x09,
1846
+ 0x09, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31,
1847
+ 0x32, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x39,
1848
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1849
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35,
1850
+ 0x39, 0x37, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35,
1851
+ 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x31, 0x34, 0x32, 0x34,
1852
+ 0x09, 0x09, 0x09, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31,
1853
+ 0x30, 0x31, 0x32, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1854
+ 0x31, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1855
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35,
1856
+ 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1857
+ 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1858
+ 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39,
1859
+ 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30,
1860
+ 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32,
1861
+ 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35,
1862
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33,
1863
+ 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35,
1864
+ 0x35, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
1865
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30,
1866
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
1867
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x32, 0x31,
1868
+ 0x33, 0x31, 0x37, 0x31, 0x30, 0x30, 0x31, 0x36, 0x09, 0x09, 0x30, 0x30,
1869
+ 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1870
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34,
1871
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09,
1872
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30,
1873
+ 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x30,
1874
+ 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32,
1875
+ 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33,
1876
+ 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38,
1877
+ 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1878
+ 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09,
1879
+ 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30,
1880
+ 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39,
1881
+ 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35,
1882
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34,
1883
+ 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35,
1884
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31,
1885
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30,
1886
+ 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32,
1887
+ 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35,
1888
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39,
1889
+ 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1890
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35,
1891
+ 0x39, 0x37, 0x37, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35,
1892
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x39, 0x09,
1893
+ 0x09, 0x30, 0x30, 0x30, 0x38, 0x32, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35,
1894
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32,
1895
+ 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30,
1896
+ 0x31, 0x32, 0x32, 0x32, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1897
+ 0x35, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09,
1898
+ 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36,
1899
+ 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x31, 0x34, 0x32, 0x34, 0x09, 0x09,
1900
+ 0x09, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31,
1901
+ 0x32, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x39,
1902
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30,
1903
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1904
+ 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09,
1905
+ 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30,
1906
+ 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39,
1907
+ 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x31,
1908
+ 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37,
1909
+ 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1910
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30, 0x30,
1911
+ 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x38,
1912
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32,
1913
+ 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x31, 0x34,
1914
+ 0x32, 0x34, 0x09, 0x09, 0x09, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
1915
+ 0x30, 0x31, 0x30, 0x31, 0x32, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1916
+ 0x35, 0x35, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09,
1917
+ 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x35,
1918
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33,
1919
+ 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30,
1920
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
1921
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09,
1922
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1923
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1924
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39,
1925
+ 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35,
1926
+ 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32,
1927
+ 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38,
1928
+ 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1929
+ 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09,
1930
+ 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33,
1931
+ 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x34, 0x37, 0x38, 0x09, 0x09, 0x09,
1932
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1933
+ 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09,
1934
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1935
+ 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09,
1936
+ 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09,
1937
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1938
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1939
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31,
1940
+ 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37,
1941
+ 0x31, 0x34, 0x32, 0x34, 0x09, 0x09, 0x09, 0x30, 0x30, 0x30, 0x30, 0x30,
1942
+ 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x35, 0x35, 0x35, 0x35, 0x35,
1943
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34,
1944
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32,
1945
+ 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x32, 0x09, 0x09,
1946
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
1947
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1948
+ 0x35, 0x35, 0x35, 0x35, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31,
1949
+ 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32,
1950
+ 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31,
1951
+ 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34,
1952
+ 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09,
1953
+ 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35,
1954
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32,
1955
+ 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38,
1956
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32,
1957
+ 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32,
1958
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1959
+ 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34,
1960
+ 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1961
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1962
+ 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31,
1963
+ 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34,
1964
+ 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1965
+ 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34,
1966
+ 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, 0x32, 0x32,
1967
+ 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37, 0x38, 0x09, 0x09,
1968
+ 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1969
+ 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38,
1970
+ 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1971
+ 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09,
1972
+ 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09,
1973
+ 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31,
1974
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32,
1975
+ 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31,
1976
+ 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34,
1977
+ 0x32, 0x38, 0x09, 0x09, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
1978
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09,
1979
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35,
1980
+ 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30,
1981
+ 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31,
1982
+ 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39,
1983
+ 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35,
1984
+ 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32,
1985
+ 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38,
1986
+ 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30,
1987
+ 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35,
1988
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33,
1989
+ 0x34, 0x34, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37,
1990
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35,
1991
+ 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
1992
+ 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
1993
+ 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39,
1994
+ 0x09, 0x09, 0x30, 0x30, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30,
1995
+ 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32,
1996
+ 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35,
1997
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33,
1998
+ 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35,
1999
+ 0x35, 0x35, 0x39, 0x37, 0x37, 0x31, 0x34, 0x32, 0x34, 0x09, 0x09, 0x09,
2000
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32,
2001
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x39, 0x35,
2002
+ 0x33, 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31,
2003
+ 0x30, 0x31, 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39,
2004
+ 0x37, 0x37, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
2005
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39,
2006
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x32, 0x32, 0x35,
2007
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09,
2008
+ 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30,
2009
+ 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39,
2010
+ 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34,
2011
+ 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09,
2012
+ 0x09, 0x09, 0x35, 0x35, 0x35, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30,
2013
+ 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
2014
+ 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x34, 0x39,
2015
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35,
2016
+ 0x35, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35,
2017
+ 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35,
2018
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34,
2019
+ 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09,
2020
+ 0x30, 0x30, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x39, 0x35, 0x33, 0x34,
2021
+ 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31,
2022
+ 0x32, 0x32, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31,
2023
+ 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
2024
+ 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
2025
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
2026
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35,
2027
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x37,
2028
+ 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35,
2029
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
2030
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31,
2031
+ 0x39, 0x35, 0x34, 0x32, 0x38, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38,
2032
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38, 0x09, 0x09, 0x09,
2033
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35,
2034
+ 0x39, 0x31, 0x32, 0x38, 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30,
2035
+ 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31,
2036
+ 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39,
2037
+ 0x35, 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
2038
+ 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39,
2039
+ 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
2040
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35,
2041
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
2042
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31,
2043
+ 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35,
2044
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38,
2045
+ 0x33, 0x34, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x31, 0x30, 0x31,
2046
+ 0x32, 0x32, 0x32, 0x35, 0x33, 0x36, 0x34, 0x35, 0x35, 0x39, 0x37, 0x37,
2047
+ 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
2048
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x39, 0x09, 0x09, 0x30, 0x30,
2049
+ 0x30, 0x32, 0x38, 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
2050
+ 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31, 0x32, 0x38, 0x33, 0x34,
2051
+ 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
2052
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
2053
+ 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x31, 0x31, 0x39, 0x35,
2054
+ 0x33, 0x34, 0x32, 0x38, 0x35, 0x30, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32,
2055
+ 0x31, 0x30, 0x31, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31,
2056
+ 0x39, 0x35, 0x34, 0x32, 0x38, 0x09, 0x09, 0x31, 0x31, 0x39, 0x35, 0x33,
2057
+ 0x34, 0x32, 0x38, 0x34, 0x39, 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x38,
2058
+ 0x09, 0x09, 0x09, 0x35, 0x35, 0x35, 0x35, 0x35, 0x32, 0x35, 0x33, 0x36,
2059
+ 0x34, 0x37, 0x37, 0x39, 0x35, 0x35, 0x32, 0x09, 0x09, 0x35, 0x35, 0x35,
2060
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x31, 0x39, 0x35, 0x33,
2061
+ 0x34, 0x31, 0x31, 0x39, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x35, 0x35,
2062
+ 0x35, 0x32, 0x32, 0x35, 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35,
2063
+ 0x34, 0x32, 0x09, 0x09, 0x35, 0x35, 0x33, 0x34, 0x32, 0x38, 0x35, 0x30,
2064
+ 0x09, 0x09, 0x30, 0x30, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x32, 0x35,
2065
+ 0x30, 0x37, 0x32, 0x39, 0x31, 0x31, 0x39, 0x35, 0x34, 0x32, 0x38, 0x31,
2066
+ 0x39, 0x35, 0x33, 0x35, 0x35, 0x35, 0x35, 0x35, 0x31, 0x35, 0x39, 0x31,
2067
+ 0x32, 0x34, 0x32, 0x38,
2068
+ };
2069
+ compare_decode(base64, 12601, simdutf::base64_default,
2070
+ simdutf::last_chunk_handling_options::stop_before_partial,
2071
+ true);
2072
+ };
2073
+
2074
+ TEST(causes_mismatch_in_count) {
2075
+ const std::vector<unsigned char> base64(9194, 0x20);
2076
+ compare_decode(base64, 8224, simdutf::base64_default,
2077
+ simdutf::last_chunk_handling_options::loose, false);
2078
+ };
2079
+
2080
+ TEST(decoding_into_zero_length_output) {
2081
+ const std::vector<unsigned char> base64{
2082
+ 0x09,
2083
+ 0x09,
2084
+ };
2085
+ compare_decode(base64, 0, simdutf::base64_url,
2086
+ simdutf::last_chunk_handling_options::loose, false);
2087
+ };
2088
+
2089
+ TEST(show_that_base64_to_binary_safe_writes_after_outlen) {
2090
+ const std::vector<unsigned char> base64{
2091
+ 0x6d, 0x6d, 0x6d, 0x6a, 0x6d, 0x6d, 0x6d, 0x6d, 0x6a, 0x6d, 0x6d,
2092
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x2d,
2093
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
2094
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
2095
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
2096
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
2097
+ };
2098
+ compare_decode(base64, 47, simdutf::base64_url_with_padding,
2099
+ simdutf::last_chunk_handling_options::stop_before_partial,
2100
+ false);
2101
+ };
2102
+
2103
+ TEST(success_but_mismatch_in_count) {
2104
+ // different count reported! 5465 vs 5466
2105
+ const std::vector<unsigned char> base64{
2106
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2107
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2108
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2109
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2110
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c,
2111
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2112
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
2113
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2114
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2115
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2116
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2117
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2118
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2119
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2120
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69,
2121
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2122
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30,
2123
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c,
2124
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2125
+ 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2126
+ 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2127
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2128
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2129
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2130
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2131
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2132
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2133
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2134
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2135
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2136
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
2137
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2138
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2139
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2140
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2141
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2142
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69,
2143
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2144
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
2145
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69,
2146
+ 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2147
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c, 0x4c,
2148
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2149
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
2150
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2151
+ 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2152
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2153
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2154
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2155
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
2156
+ 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2157
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69,
2158
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2159
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
2160
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69,
2161
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
2162
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2163
+ 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2164
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2165
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2166
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c,
2167
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2168
+ 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2169
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2170
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2171
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2172
+ 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2173
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2174
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2175
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
2176
+ 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2177
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2178
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2179
+ 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2180
+ 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2181
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2182
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2183
+ 0x4c, 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2184
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2185
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2186
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2187
+ 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2188
+ 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c,
2189
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2190
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2191
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2192
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2193
+ 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2194
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2195
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2196
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c,
2197
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2198
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2199
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2200
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2201
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2202
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2203
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2204
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2205
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69,
2206
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2207
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2208
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2209
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2210
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2211
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2212
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c,
2213
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2214
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
2215
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2216
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2217
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2218
+ 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c,
2219
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2220
+ 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2221
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69,
2222
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
2223
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c,
2224
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69,
2225
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2226
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2227
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2228
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69,
2229
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69,
2230
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2231
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2232
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69,
2233
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2234
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2235
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2236
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2237
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
2238
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2239
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2240
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2241
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c,
2242
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2243
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2244
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2245
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2246
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
2247
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2248
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69,
2249
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
2250
+ 0x4c, 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2251
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2252
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2253
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2254
+ 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2255
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2256
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2257
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
2258
+ 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2259
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
2260
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
2261
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2262
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2263
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
2264
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c,
2265
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2266
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2267
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2268
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2269
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69,
2270
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2271
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
2272
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2273
+ 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2274
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2275
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2276
+ 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2277
+ 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2278
+ 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2279
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2280
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2281
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30,
2282
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2283
+ 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2284
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2285
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2286
+ 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2287
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69,
2288
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69,
2289
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2290
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2291
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4e, 0x4c, 0x4c,
2292
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2293
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2294
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2295
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2296
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2297
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2298
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2299
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
2300
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2301
+ 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2302
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2303
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2304
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2305
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2306
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2307
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2308
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2309
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c,
2310
+ 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2311
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2312
+ 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2313
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2314
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2315
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2316
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2317
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2318
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2319
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c,
2320
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2321
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2322
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2323
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2324
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x65, 0x69,
2325
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2326
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69,
2327
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2328
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2329
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2330
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
2331
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2332
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2333
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2334
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2335
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2336
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2337
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2338
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
2339
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2340
+ 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2341
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2342
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2343
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
2344
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2345
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2346
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2347
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2348
+ 0x4c, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2349
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2350
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2351
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
2352
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2353
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2354
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2355
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2356
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2357
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2358
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2359
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
2360
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2361
+ 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2362
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2363
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2364
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
2365
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2366
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2367
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2368
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2369
+ 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2370
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2371
+ 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2372
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2373
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2374
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2375
+ 0x36, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2376
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2377
+ 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2378
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2379
+ 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2380
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c,
2381
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2382
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2383
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2384
+ 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2385
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2386
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2387
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2388
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2389
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2390
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2391
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2392
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2393
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2394
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
2395
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2396
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2397
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2398
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c,
2399
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2400
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69,
2401
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2402
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
2403
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x69, 0x69,
2404
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2405
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c,
2406
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2407
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2408
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2409
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2410
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2411
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2412
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69,
2413
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2414
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2415
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2416
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
2417
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2418
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2419
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2420
+ 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30,
2421
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c,
2422
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2423
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2424
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
2425
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2426
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2427
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36,
2428
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2429
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2430
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2431
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x66, 0x69, 0x69,
2432
+ 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
2433
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c,
2434
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2435
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2436
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2437
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
2438
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2439
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2440
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2441
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2442
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2443
+ 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2444
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2445
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2446
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2447
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2448
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2449
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2450
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2451
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2452
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2453
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
2454
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2455
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2456
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2457
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c,
2458
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2459
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69,
2460
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2461
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
2462
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x69, 0x69,
2463
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2464
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x36, 0x4c,
2465
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2466
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69,
2467
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c,
2468
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2469
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2470
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2471
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2472
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
2473
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2474
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69,
2475
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2476
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69,
2477
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69,
2478
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69,
2479
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2480
+ 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2481
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2482
+ 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2483
+ 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c,
2484
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2485
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2486
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2487
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2488
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69,
2489
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2490
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30,
2491
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c,
2492
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2493
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2494
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2495
+ 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2496
+ 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2497
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2498
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2499
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2500
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
2501
+ 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2502
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69,
2503
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2504
+ 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2505
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2506
+ 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2507
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2508
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c,
2509
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2510
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2511
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69,
2512
+ 0x69, 0x69, 0x69, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2513
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69,
2514
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x69,
2515
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2516
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2517
+ 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c,
2518
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2519
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2520
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2521
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2522
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2523
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2524
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2525
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69,
2526
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2527
+ 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2528
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2529
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69,
2530
+ 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20,
2531
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2532
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2533
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2534
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2535
+ 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69,
2536
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69,
2537
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2538
+ 0x4c, 0x4c, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2539
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2540
+ 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69, 0x69,
2541
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x20, 0x4c, 0x4c,
2542
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2543
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2544
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2545
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2546
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2547
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2548
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x69, 0x69,
2549
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2550
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2551
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2552
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2553
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2554
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2555
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2556
+ 0x4c, 0x36, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2557
+ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
2558
+ 0x4c, 0x4c, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2559
+ 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2560
+ 0x69, 0x69, 0x69, 0x30, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
2561
+ 0x69, 0x4c, 0x4c, 0x4c, 0x4c, 0x3d,
2562
+ };
2563
+ compare_decode(base64, 65312, simdutf::base64_default,
2564
+ simdutf::last_chunk_handling_options::stop_before_partial,
2565
+ false);
2566
+ };
2567
+
2568
+ TEST(gets_success_but_different_count) {
2569
+ const std::vector<unsigned char> base64{
2570
+ 0x0a, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2571
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2572
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2573
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2574
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2575
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2576
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x0a,
2577
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
2578
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
2579
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
2580
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
2581
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
2582
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
2583
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2584
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x71,
2585
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2586
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2587
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d,
2588
+ 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x0a, 0x0a, 0x0a, 0x0a,
2589
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
2590
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
2591
+ 0x0a, 0x6d, 0x6d, 0x0a, 0x3d, 0x0a, 0x3d,
2592
+ };
2593
+ compare_decode(base64, 60207, simdutf::base64_url_with_padding,
2594
+ simdutf::last_chunk_handling_options::stop_before_partial,
2595
+ false);
2596
+ };
2597
+
2598
+ TEST(gets_success_but_different_content) {
2599
+ const std::vector<unsigned char> base64{
2600
+ 0x3d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
2601
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
2602
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
2603
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
2604
+ };
2605
+ compare_decode(base64, 4, simdutf::base64_url_with_padding,
2606
+ simdutf::last_chunk_handling_options::stop_before_partial,
2607
+ true);
2608
+ };
2609
+
2610
+ TEST(unaligned_encode) {
2611
+ // this test uses misaligned in and output buffers, to provoke problems
2612
+ // in the code for handling pointer alignment
2613
+ std::vector<unsigned char> base64{
2614
+ 0x3d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
2615
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
2616
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
2617
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
2618
+ };
2619
+ const auto payload_size = base64.size();
2620
+ std::string output(100 + 128, '\0');
2621
+ std::string reference_output;
2622
+ for (std::size_t misalign = 0; misalign < 128; ++misalign) {
2623
+ const auto output_span = std::span(output).subspan(misalign, 100);
2624
+ const auto r = simdutf::atomic_binary_to_base64(
2625
+ std::span(base64).last(payload_size), output_span);
2626
+ base64.insert(base64.begin(), '\0');
2627
+ if (reference_output.empty()) {
2628
+ reference_output.assign(output_span.begin(), output_span.end());
2629
+ } else {
2630
+ ASSERT_EQUAL(output_span.size(), reference_output.size());
2631
+ ASSERT_BYTES_EQUAL(output_span, reference_output, output_span.size());
2632
+ }
2633
+ }
2634
+ }
2635
+
2636
+ TEST(empty_input_gives_empty_output) {
2637
+ std::vector<char> input;
2638
+ std::vector<char> output;
2639
+
2640
+ {
2641
+ const auto ret = simdutf::atomic_binary_to_base64(input, output);
2642
+ ASSERT_EQUAL(ret, 0);
2643
+ }
2644
+ {
2645
+ const auto s = std::span(output);
2646
+ const auto [ret, outlen] = simdutf::atomic_base64_to_binary_safe(input, s);
2647
+ ASSERT_EQUAL(ret.error, simdutf::SUCCESS);
2648
+ ASSERT_EQUAL(outlen, 0);
2649
+ }
2650
+ {
2651
+ const auto [ret, outlen] =
2652
+ simdutf::atomic_base64_to_binary_safe(input, std::span(output));
2653
+ ASSERT_EQUAL(ret.error, simdutf::SUCCESS);
2654
+ ASSERT_EQUAL(outlen, 0);
2655
+ }
2656
+ {
2657
+ const auto [ret, outlen] =
2658
+ simdutf::atomic_base64_to_binary_safe(input, output);
2659
+ ASSERT_EQUAL(ret.error, simdutf::SUCCESS);
2660
+ ASSERT_EQUAL(outlen, 0);
2661
+ }
2662
+ }
2663
+
2664
+ TEST(small_input) {
2665
+ const std::string input{"Abracadabra!"};
2666
+ const std::string expected_output{"QWJyYWNhZGFicmEh"};
2667
+ std::string output(expected_output.size(), '\0');
2668
+
2669
+ const auto ret = simdutf::atomic_binary_to_base64(input, output);
2670
+ ASSERT_EQUAL(ret, expected_output.size());
2671
+ ASSERT_EQUAL(output, expected_output);
2672
+
2673
+ // try to recover the input by going in the opposite direction
2674
+ std::string recovered;
2675
+ {
2676
+ // try with a (too) small buffer
2677
+ const auto [ret2, outlen] = simdutf::atomic_base64_to_binary_safe(
2678
+ std::span(output).first(expected_output.size()), recovered);
2679
+ ASSERT_EQUAL(ret2.error, simdutf::OUTPUT_BUFFER_TOO_SMALL);
2680
+ ASSERT_EQUAL(outlen, 0);
2681
+ }
2682
+ {
2683
+ // ...then with a larger size
2684
+ recovered.resize(100);
2685
+ const auto [ret2, outlen] = simdutf::atomic_base64_to_binary_safe(
2686
+ std::span(output).first(expected_output.size()), recovered);
2687
+ ASSERT_EQUAL(ret2.error, simdutf::SUCCESS);
2688
+ ASSERT_EQUAL(outlen, input.size());
2689
+ recovered.resize(outlen);
2690
+ }
2691
+ ASSERT_EQUAL(input, recovered);
2692
+ }
2693
+
2694
+ TEST(large_input) {
2695
+ // large means larger than one internal block of data
2696
+ const std::size_t N_input = 1'000'000;
2697
+ std::string input, expected_output;
2698
+ for (std::size_t i = 0; i < N_input; ++i) {
2699
+ input.append("abc");
2700
+ expected_output.append("YWJj");
2701
+ }
2702
+ std::string output(expected_output.size(), '\0');
2703
+ const auto ret = simdutf::atomic_binary_to_base64(input, output);
2704
+ ASSERT_EQUAL(ret, expected_output.size());
2705
+ ASSERT_EQUAL(output, expected_output);
2706
+
2707
+ // try to recover the input by going in the opposite direction
2708
+ std::string recovered(input.size(), '?');
2709
+ const auto [ret2, outlen] = simdutf::atomic_base64_to_binary_safe(
2710
+ std::span(output).first(ret), recovered);
2711
+ ASSERT_EQUAL(ret2.error, simdutf::SUCCESS);
2712
+ ASSERT_EQUAL(outlen, input.size());
2713
+ recovered.resize(outlen);
2714
+ ASSERT_EQUAL(input, recovered);
2715
+ }
2716
+
2717
+ void varying_input_size_utf16_impl(const std::size_t N_input) {
2718
+ std::string input;
2719
+ std::u16string expected_output;
2720
+ for (std::size_t i = 0; i < N_input; ++i) {
2721
+ input.append("abc");
2722
+ expected_output.append(u"YWJj");
2723
+ }
2724
+ std::u16string output16(expected_output.size(), '\0');
2725
+ {
2726
+ std::string output(expected_output.size(), '\0');
2727
+ const auto ret = simdutf::atomic_binary_to_base64(input, output);
2728
+ ASSERT_EQUAL(output.size(),
2729
+ simdutf::convert_utf8_to_utf16(output, output16));
2730
+ ASSERT_EQUAL(ret, expected_output.size());
2731
+ ASSERT_TRUE(output16 == expected_output);
2732
+ }
2733
+
2734
+ // try to recover the input by going in the opposite direction
2735
+ std::string recovered(input.size(), '?');
2736
+ const auto [ret2, outlen] =
2737
+ simdutf::atomic_base64_to_binary_safe(std::span(output16), recovered);
2738
+ ASSERT_EQUAL(ret2.error, simdutf::SUCCESS);
2739
+ ASSERT_EQUAL(outlen, input.size());
2740
+ recovered.resize(outlen);
2741
+ ASSERT_EQUAL(input, recovered);
2742
+ }
2743
+
2744
+ TEST(varying_input_size_utf16) {
2745
+ varying_input_size_utf16_impl(0);
2746
+ varying_input_size_utf16_impl(1);
2747
+ varying_input_size_utf16_impl(1'000'000);
2748
+ }
2749
+
2750
+ #if SIMDUTF_CPLUSPLUS20
2751
+
2752
+ #if RUNNING_UNDER_THREAD_SANITIZER
2753
+ // this test is only relevant if compiling with thread sanitizer
2754
+ TEST(threaded_binary_to_base64) {
2755
+ // large means larger than one internal block of data
2756
+ const std::size_t N_input = 1'000'000;
2757
+ std::string input, expected_output;
2758
+ for (std::size_t i = 0; i < N_input; ++i) {
2759
+ input.append("abc");
2760
+ expected_output.append("YWJj");
2761
+ }
2762
+ std::string output(expected_output.size(), '\0');
2763
+
2764
+ constexpr auto nthreads = 4;
2765
+
2766
+ std::barrier sync_point(nthreads + 1, [nthreads]() noexcept {
2767
+ std::printf("all %u threads reached the barrier\n", nthreads);
2768
+ });
2769
+
2770
+ std::atomic_bool keep_running{true};
2771
+ std::vector<std::jthread> threads;
2772
+ for (std::size_t threadi = 0; threadi < nthreads; ++threadi) {
2773
+ threads.emplace_back([&, threadi]() {
2774
+ std::mt19937 gen{static_cast<std::mt19937::result_type>(threadi)};
2775
+ std::uniform_int_distribution<int> dist{0, 255};
2776
+ std::uniform_int_distribution<std::size_t> input_index_dist{
2777
+ 0, input.size() - 1};
2778
+ sync_point.arrive_and_wait();
2779
+ while (keep_running) {
2780
+ std::atomic_ref(input[input_index_dist(gen)]).fetch_add(dist(gen));
2781
+ }
2782
+ });
2783
+ }
2784
+
2785
+ sync_point.arrive_and_wait();
2786
+
2787
+ for (int i = 0; i < 10; ++i) {
2788
+ // don't bother to look at the output, it can fail or succeed depending
2789
+ // on the thread scheduling
2790
+ simdutf_maybe_unused const auto ret =
2791
+ simdutf::atomic_binary_to_base64(input, output);
2792
+ }
2793
+
2794
+ keep_running = false;
2795
+ }
2796
+
2797
+ TEST(threaded_base64_to_binary_safe) {
2798
+ // large means larger than one internal block of data
2799
+ const std::size_t N_input = 1'000'000;
2800
+ std::string input, expected_output;
2801
+ for (std::size_t i = 0; i < N_input; ++i) {
2802
+ input.append("YWJj");
2803
+ expected_output.append("abc");
2804
+ }
2805
+ std::string output(expected_output.size(), '\0');
2806
+
2807
+ constexpr auto nthreads = 4;
2808
+
2809
+ std::barrier sync_point(nthreads + 1, [nthreads]() noexcept {
2810
+ std::printf("all %u threads reached the barrier\n", nthreads);
2811
+ });
2812
+
2813
+ std::atomic_bool keep_running{true};
2814
+ std::vector<std::jthread> threads;
2815
+ for (std::size_t threadi = 0; threadi < nthreads; ++threadi) {
2816
+ threads.emplace_back([&, threadi]() {
2817
+ std::mt19937 gen{static_cast<std::mt19937::result_type>(threadi)};
2818
+ std::uniform_int_distribution<int> dist{0, 255};
2819
+ std::uniform_int_distribution<std::size_t> output_index_dist{
2820
+ 0, output.size() - 1};
2821
+ sync_point.arrive_and_wait();
2822
+ while (keep_running) {
2823
+ std::atomic_ref(output[output_index_dist(gen)]).fetch_add(dist(gen));
2824
+ }
2825
+ });
2826
+ }
2827
+
2828
+ sync_point.arrive_and_wait();
2829
+
2830
+ for (int i = 0; i < 10; ++i) {
2831
+ // don't bother to look at the output, it can fail or succeed depending
2832
+ // on the thread scheduling
2833
+ simdutf_maybe_unused const auto ret =
2834
+ simdutf::atomic_base64_to_binary_safe(input, output);
2835
+ }
2836
+
2837
+ keep_running = false;
2838
+ }
2839
+ #endif // RUNNING_UNDER_THREAD_SANITIZER
2840
+ #endif // SIMDUTF_CPLUSPLUS20
2841
+
2842
+ #endif // #if !defined(SIMDUTF_NO_THREADS) && SIMDUTF_ATOMIC_REF &&
2843
+ // SIMDUTF_SPAN
2844
+
2845
+ TEST_MAIN