aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxx/include/__format
diff options
context:
space:
mode:
authormikhnenko <mikhnenko@yandex-team.com>2025-02-25 10:55:30 +0300
committermikhnenko <mikhnenko@yandex-team.com>2025-02-25 11:10:50 +0300
commitba3f1646a3a22daceac94dd0cd330152b1d5b5b5 (patch)
tree16da0d516f0c768c219e6f0fc7351676e390873f /contrib/libs/cxxsupp/libcxx/include/__format
parentdda9be9e1fde150b4473d9d10ec1a0d3829f7482 (diff)
downloadydb-ba3f1646a3a22daceac94dd0cd330152b1d5b5b5.tar.gz
Update libcxx to 8 July 2024
{% cut "Change log" %} ``` [libc++] Add a test case for std::bit_cast with std::complex (#97751) [libc++] Update status after the St. Louis meeting. (#97951) [libc++] Guard transitive include of `<locale>` with availability macro (#97869) [libc++] Restore `__synth_three_way` lambda (#90398) [libc++][TZDB] Makes implementation experimental. (#95657) [libc++] Remove dead code from the locale base API and support code (#89070) [libc++] Assume newer LLVM versions for not-yet-released macOS versions [libc++] Remove annotations for GCC 13 and update the documentation (#97744) [libc++][test] Updates sized deallocation tests. (#97833) [libc++] Adds a missing include. [libc++] Use __is_array if the builtin is fixed (#93037) [libc++] Use _Complex for multiplication and division of complex floating point types (#83575) [libc++] Adds a new feature-test macro generator class. (#90889) [libc++][chrono] Fixes leap seconds. (#90070) [libc++] Upgrade to GCC 14 (#97205) [libc++] Fix the signatures of `std::rethrow_if_nested` (#91365) [libc++] Use GCC compilers from compiler explorer (#97219) Add a regression test for recent regression in pair. (#97355) [libcxx][Docs] Correct link syntax in hardening docs [libc++] Don't use a ppa for GCC [libc++] Upgrade to GCC 14 in the CI (#95212) [libc++abi] Fix test failures with GCC 14 (#95759) [libc++] Clean up and update deployment target features (#96312) [libc++] Fix how we pass /MANIFEST flag on Windows without clang-cl (#96967) [libc++] Classify iota_view precondition (#96662) [libc++] restrict the expected conversion constructor not compete against copy constructor (#96101) "[libc++] Try again LWG3233 Broken requirements for shared_ptr converting constructors" (#96103) [libc++] LWG3382: NTTP for `pair` and `array` (#85811) [libc++] Get the GCC build mostly clean of warnings (#96604) [libc++] P3029R1: Better `mdspan`'s CTAD - `std::extents` (#89015) [libc++] Move allocator assertion into allocator_traits (#94750) [libc++] change the visibility of libc++ header to public in libcxx module (#91240) [libc++] Use _If for conditional_t (#96193) [libc++] Remove the allocator<const T> extension (#96319) [libc++] Fix incorrect overflow checking in std::lcm (#96310) [libc++] Use __is_nothrow_destructible (#95766) [libc++] Remove Windows-specific configuration from libcxx/test/CMakeLists.txt (#96330) [libc++] Build with -fsized-deallocation (#96217) [libc++] <experimental/simd> Add swap functions of simd reference (#86478) [libc++] Fix deployment target Lit features (#94791) [libc++] Workaround clang bug in __has_unique_object_representations (#95314) [libc++] Remove <ostream> include from <chrono> (#96035) [libc++] Fix triviality of std::pair for trivially copyable types without an assignment operator (#95444) [libc++] Install Python packaging to resolve LLDB data formatter issues (#95971) [libc++] Properly define _LIBCPP_HAS_NO_UNICODE in __config_site (#95138) [libc++] Refactor<__type_traits/is_swappable.h> (#86822) [libc++] Enable modernize-use-equals-delete (#93293) [libc++] Test suite adjustments on macOS (#95835) [libc++] Guard transitive include of `<locale>` with availability macro (#95686) [libc++] Mark more types as trivially relocatable (#89724) [libcxx] [ci] Simplify the mingw x86_64 configs (#95609) [libc++][TZDB] Disables a failing test. (#95659) [libc++] Add default copy ctor to "__chrono/exception.h" (#95338) [libcxx][test][AIX] address more platform differences in locale tests (#94826) [libc++] Remove unnecessary #ifdef guards around PSTL implementation details (#95268) [libc++] Mark local_time test as a long test (#95170) Update actions-runner version for libc++ builder images [libc++] Move the implementation of CPU-based basis operations to namespace __pstl (#95267) [libc++][modules] Mark as implemented. (#90091) [libc++] Adds __cpp_lib_three_way_comparison FTM. (#91515) [libc++] Overhaul the PSTL dispatching mechanism (#88131) [libcxx] Correct and clean-up filesystem operations error_code paths (#88341) [libc++][z/OS] Disable portion of formatter.char.funsigned-char.pass.cpp for no unicode (#94044) [libc++] Mark a few functions in the dylib as noexcept (#94098) [libc++] Fix UB in filesystem::__copy for non-existent destination. (#87615) [libc++] Simplify the definition of string::operator== (#95000) [libc++] Update with LWG issue number for shared-ptr constructor [libc++] Tweak how we check constraints on shared_ptr(nullptr_t) (#94996) [HWASan] make get_info.local_time.pass.cpp UNSUPPORTED [libc++] Fix endianness for algorithm mismatch (#93082) [HWASan] skip libcxx test that times out with hwasan [libc++][TZDB] Implements zoned_traits. (#91059) [libc++][test] Avoid `-Wunused-variable` warnings in mutex tests (#94907) [libc++] Fix invalid escape sequences in Python comments (#94032) [libc++][TZDB] Implements time_zone::to_local. (#91003) [libc++][TZDB] Implements time_zone::to_sys. (#90901) [libc++][TZDB] Implements time_zone::to_sys. (#90394) [libc++][TZDB] Implements time_zone get_info(local_time). (#89537) [libc++] Undeprecate shared_ptr atomic access APIs (#92920) [libc++][regex] Correctly adjust match prefix for zero-length matches. (#94550) [libc++][test][AIX] Only XFAIL atomic tests for before clang 19 (#94646) [libc++] Fix naming of value template parameters (#76888) [libc++][hardening] Finish documenting hardening. (#92021) Fix detection of __datasizeof with Clang. (#94174) [libc++] Fix SyntaxWarning messages from python 3.12 (#93637) [libc++] [test] Consistently use `REQUIRES: has-unix-headers` (#94122) [libc++] Add missing noexcept to span constructor (#94381) Remove act from builder image. It never turned out to be useful [libc++] Adjust XFAIL for quick_exit (#94274) [libc++] Properly detect whether C++20 modules are supported by the compiler (#94275) [libc++] Handle 0 size case for testing support operator new (#93834) [libc++] Fix regression about parsing leading decimal points (#93989) [libc++][test] Mark `optional` test functions as `TEST_CONSTEXPR_CXX20` (#94172) [clang][Modules] Remove unnecessary includes of `Module.h` (#93417) [libc++] Don't give functions C linkage (#94102) [libc++] [test] Cleanup compile-only tests (#94121) [libc++] [test] Fix `__has_include` usage, expand condvarany and spaceship coverage (#94120) [libc++] Fix `std::atomic::wait` ulock wait UL_COMPARE_AND_WAIT64 (#92783) Fix order of include flags for the target & regular include paths. (#93547) [libc++] Fix failures with GCC 14 (#92663) [libc++] Remove the inline namespace for std::filesystem in ABIv2 (#92971) [runtimes] Correctly apply libdir subdir for multilib (#93354) [clang] Preserve Qualifiers and type sugar in TemplateNames (#93433) [libc++][test] Close LWG3018 and add tests (#93047) [runtimes][CMake] Simplify the propagation of test dependencies (#93558) [runtimes] Reintroduce a way to select the compiler used for the test suite (#93542) [libc++] Make the __availability header a sub-header of __config (#93083) [libc++][test] Close LWG3238 and add tests (#93043) [libc++] LWG3223 Broken requirements for shared_ptr converting constructors (#93071) [libc++][test] Close LWG3382 and add tests (#93039) [libc++] [test] Fix portability issues for MSVC (#93259) [libc++] [test] Fix MSVC warnings (#93257) [libc++] Mark P2845R8 `__cpp_lib_format_path` and P2587R3 `__cpp_lib_to_string` as C++26 (#93255) [libc++] Split up ABI and platform configuration to their own headers (#90863) [libc++][pstl] Merge all frontend functions for the PSTL (#89219) [libcxx][test][AIX] Fix the thousands_sep expectation for fr_FR locales (#92312) [libcxx] [test] Use `shlex.quote()` to fix Python 3.13 compatibility (#93376) [libc++] Remove libcxx/include/libcxx.imp Revise IDE folder structure (#89755) [libc++][test] Close LWG3045 (#93053) [libc++] Remove a few unused includes of trivially_copyable.h (#93200) [test][libcxx] Update deallocation after #90373 (#93145) [libc++] Refactor tests for std::condition_variable (#91530) Removed redundant template in '__delete_node()' member function of '__forward_list_base' and '__list_imp' classes. (#84323) [libc++][pstl] Improve exception handling (#88998) [WebAssembly] Upstream misc. EH changes (#92990) [libc++] <experimental/simd> Add copy functions for class simd/simd_mask (#78935) [libc++][vector] Inline remaining constructors filling vector with the same value (#82068) Reland "[clang] Enable sized deallocation by default in C++14 onwards" (#90373) [libc++] Implement C++20 atomic_ref (#76647) [libc++] Refactor flaky tests for std::shared_lock (#91779) [libcxx] [test] Detect mingw-w64 headers compatible with C++ module builds (#92893) [libc++] LWG2381: Inconsistency in parsing floating point numbers (#77948) [libcxx] removes unnecessary traits from `has_unique_object_representations` (#69241) [libc++][z/OS] Switch to use TEST_HAS_NO_INT128 as per comment in PR 92261 (#92434) [libcxx] Add cast to avoid pointer casting warning on Windows (#92738) [libcxx] locale.cpp: Move build_name helper into unnamed namespace (#92461) [libcxx][libcxxabi] Fix build for OpenBSD (#92186) [libc++] LWG3672: `common_iterator::operator->()` should return by value (#87899) [libc++][z/OS] Correct a definition of __native_vector_size (#91995) [libc++][z/OS] Fixup two linear_congruential_engine tests (#92261) [libc++][test] `__cpp_lib_within_lifetime` -> `__cpp_lib_is_within_lifetime` (#91896) Fix typo "indicies" (#92232) [libcxx][test] Fix numpunct grouping tests on AIX (#91781) [libcxx] [test] Fix the locale ctype widen tests on AIX (#91744) [libc++] Vectorize std::mismatch with trivially equality comparable types (#87716) [libc++] Make `constexpr std::variant`. Implement P2231R1 (#83335) [libc++][doc] Updates Spaceship status page. [libc++][ASan] Fix std::basic_string trait type (#91590) [libc++][test] Fixes constexpr char_traits. (#90981) [libc++][functional] P2944R3 (partial): Comparisons for `reference_wrapper` (`reference_wrapper` operators only) (#88384) [libc++][CI] Reenables clang-tidy. (#90077) [libc++] Implement std::gcd using the binary version (#77747) [ASan][libc++] Turn on ASan annotations for short strings (#79536) [AIX][libc++] Enable clang_modules_include.gen.py tests (#90971) [libc++] Rename _LIBCPP_INTRODUCED_foo_MARKUP to _LIBCPP_INTRODUCED_foo_ATTRIBUTE (#91269) [libc++] Fix P1206R7 feature test macros (#90914) [libc++] Adjust some of the [rand.dist] critical values that are too strict (#88669) [libc++][modules] Uses _LIBCPP_USING_IF_EXISTS. (#90409) Bump actions runner image used for libc++'s builders. [libcxx] Align `__recommend() + 1` by __endian_factor (#90292) [libc++] Granularize <ostream> (#85537) [libc++] Remove a few __has_foo defines in __config (#90511) [libc++] Remove _LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS (#90512) [libcxx][ci] In picolib build, ask clang for the normalised triple (#90722) [libc++][ranges] Implement LWG4053 and LWG4054 (#88612) [libc++] Some tests are missing include for `numeric_limits` (#90345) [libc++] Mark scoped_lock and unique_lock constructors as [[nodiscard]] (#89397) [libc++] Improve libc++ tests when using optimizations (#88897) [libc++][modules] Enable installation by default. (#90094) [libc++][format] Improves escaping performance. (#88533) [libcxx] Remove empty ~__no_destroy (#89882) [libc++][ranges] Exports operator|. (#90071) [C++17] Support __GCC_[CON|DE]STRUCTIVE_SIZE (#89446) [libc++][ranges] LWG3984: ranges::to's recursion branch may be ill-formed (#87964) [clang] Enable sized deallocation by default in C++14 onwards (#83774) [libc++][format] Improves escaping. (#88283) [libc++] Implement LWG4023 (#87513) [libc++] Reformulate availability in terms of LLVM releases (#87563) [libc++] Reorganize the std::variant macros (#89419) [libc++][format] Adds an escaped output benchmark. (#88020) [libc++] Makes saturation functions privately available. (#89503) [libcxx] [modules] Add _LIBCPP_USING_IF_EXISTS on aligned_alloc (#89827) [libc++][TZDB] Fixes reverse time lookups. (#89502) [libc++][doc] Updates module build instructions. (#89413) [libc++][chrono] Fixes format output of negative values. (#89408) [libc++][ranges] export `std::ranges::range_adaptor_closure` (#89793) [libc++][ranges] P2387R3: Pipe support for user-defined range adaptors (#89148) [libc++] Add some private headers to libcxx.imp (#89568) [libc++] Remove _LIBCPP_DISABLE_NODISCARD_EXTENSIONS and refactor the tests (#87094) [libc++] Remove stray CMake install step for modulemap file (#89394) [libc++] Don't commit libcxx.imp (#89391) [libc++] Removes a Clang 16 Windows workaround. (#88560) [libc++][TZDB] Renames incomplete. (#89250) [libc++] Optimize char_traits a bit (#72799) [libc++] Fix usage of 'exclude_from_explicit_instantiation' attribute on local class members (#89377) linear_congruential_engine: add using more precision to prevent overflow (#81583) CompilerRT: Normalize COMPILER_RT_DEFAULT_TARGET_TRIPLE (#89234) [libc++][TZDB] Adds local_info formatter. (#86256) [libc++][pstl] Move the CPU algorithm implementations to __pstl (#89109) [libc++][TZDB] Adds sys_info formatter. (#85896) [libc++][pstl] Promote CPU backends to top-level backends (#88968) [libc++][chrono] Improves date formatting. (#86127) [libc++] Add missing iterator requirement checks in the PSTL (#88127) [libc++][TZDB] Improves time zone format specifiers. (#85797) [libc++][chrono] Disables a test. [libc++][doc] Documents -DLIBCXX_INSTALL_MODULES=ON. (#88547) [libc++][test] Removes Clang 16 validation. (#88558) [libc++] Removes deprecated _LIBCPP_ENABLE_<VERSION>_REMOVED_FEATURES macros (#88548) [libc++][modules] Removes some validation quirks. (#88031) [libc++] Deprecate the C++20 synchronization library before C++20 (#86410) [libc++] Use availability to rely on key functions for bad_expected_access and bad_function_call (#87390) [libc++] Rename __cpu_traits functions (#88741) [libc++][CI] Tests LLDB libc++ data formatters. (#88312) [libc++] Add a utility to check whether a range is valid (#87665) [libc++][PSTL] Introduce cpu traits (#88134) [libc++][RFC] Only include what is required by-version in the umbrella headers (#83740) [libc++] Deprecated `shared_ptr` Atomic Access APIs as per P0718R2 & Implemented P2869R3: Remove Deprecated `shared_ptr` Atomic Access APIs from C++26 (#87111) [libc++][TZDB] Removes test_indian_kerguelen test. [libc++][TZDZ] Validates the database version. [libc++] Undeprecate POSIX STREAM macros. (#88296) [libc++] Marks a variable const. (#88562) [libc++][CMake] Removes LIBCXX_ENABLE_CLANG_TIDY. (#85794) [tzdb] Replace shared_mutex with mutex. (#87929) [libc++] P3029R1: Better `mdspan`'s CTAD (#87873) [libc++][ranges] LWG3736: move_iterator missing disable_sized_sentinel_for specialization (#85611) [libc++] LWG3643: Missing `constexpr` in `std::counted_iterator` (#87901) [libcxx] applies changes regarding post-commit feedback to #75259 (#76534) [libc++] Fix -Wgnu-include-next in stddef.h (#88214) [libcxx] Use generic builtins for popcount, clz and ctz (#86563) [libc++] Adds a global private constructor tag. (#87920) [libc++] Removes Clang-16 support. (#87810) [lib++][CI] Changes bootstrap build type. (#88175) [libc++][CI] Updates Docker LLDB dependencies. (#88174) [libc++][chrono] Adds the sys_info class. (#85619) [libc++][format] Switches to Unicode 15.1. (#86543) [libc++] Avoids using ENODATA. (#86165) [libc++][TZDB] Fixes relative path resolving. (#87882) [libc++][format] adds a basic fuzzer test. (#87883) [libc++] Add test coverage for our implementation of LWG4031 (#87508) [libc++] Implement `bind_back` (#81055) [libc++][format] Fixed `println.blank_line.sh.cpp` test on llvm-clang-win-x-* configurations (#88011) [libc++][doc] Updates format status page. [libc++][format] P3142R0: Printing Blank Lines with `println` (#87277) [libc++] Optimize ranges::minmax (#87335) [libc++] Implement LWG3430 disallow implicit conversion of the source arguments to `std::filesystem::path` when constructing `std::basic_*fstream` (#85079) [libc++] P2872R3: Remove ``wstring_convert`` From C++26 (#87100) Fix issue with never-constexpr __construct_at in C++ < 20. (#87403) [libcxx] coerce formatter precision to int (#87738) [libc++][CI] Updates to Clang 19. (#85301) [libc++][chrono] Completes the tzdb class. (#82157) [libc++][oss-fuzz] Updates C++ version used. (#87531) [libc++] P2867R1: Remove Deprecated `strstream`s From C++26 (#87107) [libc++] Fix copy/pasta error in atomic tests for `atomic_compare_exchange_{weak,strong}` (#87135) [libc++] Mark some recent LWG issues and papers as done (#87502) [libc++][chrono] Loads leap-seconds.list in tzdb. (#82113) [libc++] Disables -Wweak-vtables diagnostics. (#85577) [libc++] Update status page after the Tokyo meeting (#87395) [libc++] Upstream ptrauth support in libc++ and libc++abi (#84573) [libc++] Fix tests on musl (#85085) (#86934) [libc++] Add a static_assert for a Mandates in seed_seq (#86992) [libc++][ranges] Avoid using `distance` in `ranges::contains_subrange` (#87155) [libc++] `std::ranges::advance`: avoid unneeded bounds checks when advancing iterator (#84126) ``` {% endcut %} commit_hash:45feb9db5b173f12bf29de2a3ee73006d4371a4e
Diffstat (limited to 'contrib/libs/cxxsupp/libcxx/include/__format')
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/escaped_output_table.h1649
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/format_arg.h1
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/format_functions.h30
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/formatter_floating_point.h2
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/formatter_output.h20
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/indic_conjunct_break_table.h350
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/parser_std_format_spec.h4
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/unicode.h313
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/width_estimation_table.h9
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__format/write_escaped.h28
10 files changed, 1359 insertions, 1047 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/escaped_output_table.h b/contrib/libs/cxxsupp/libcxx/include/__format/escaped_output_table.h
index e9f4a6e4f63..f7be2dc61f2 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__format/escaped_output_table.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/escaped_output_table.h
@@ -80,10 +80,9 @@ namespace __escaped_output_table {
/// The entries of the characters to escape in format's debug string.
///
/// Contains the entries for [format.string.escaped]/2.2.1.2.1
-/// CE is a Unicode encoding and C corresponds to either a UCS scalar value
-/// whose Unicode property General_Category has a value in the groups
-/// Separator (Z) or Other (C) or to a UCS scalar value which has the Unicode
-/// property Grapheme_Extend=Yes, as described by table 12 of UAX #44
+/// CE is a Unicode encoding and C corresponds to a UCS scalar value whose
+/// Unicode property General_Category has a value in the groups Separator (Z)
+/// or Other (C), as described by table 12 of UAX #44
///
/// Separator (Z) consists of General_Category
/// - Space_Separator,
@@ -98,7 +97,6 @@ namespace __escaped_output_table {
/// - Unassigned.
///
/// The data is generated from
-/// - https://www.unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt
/// - https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedGeneralCategory.txt
///
/// The table is similar to the table
@@ -107,926 +105,751 @@ namespace __escaped_output_table {
/// table lacks a property, thus having more bits available for the size.
///
/// The data has 2 values:
-/// - bits [0, 10] The size of the range, allowing 2048 elements.
-/// - bits [11, 31] The lower bound code point of the range. The upper bound of
-/// the range is lower bound + size.
-_LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[893] = {
- 0x00000020,
- 0x0003f821,
- 0x00056800,
- 0x0018006f,
- 0x001bc001,
- 0x001c0003,
- 0x001c5800,
- 0x001c6800,
- 0x001d1000,
- 0x00241806,
- 0x00298000,
- 0x002ab801,
- 0x002c5801,
- 0x002c802d,
- 0x002df800,
- 0x002e0801,
- 0x002e2001,
- 0x002e3808,
- 0x002f5803,
- 0x002fa810,
- 0x0030800a,
- 0x0030e000,
- 0x00325814,
- 0x00338000,
- 0x0036b007,
- 0x0036f805,
- 0x00373801,
- 0x00375003,
- 0x00387001,
- 0x00388800,
- 0x0039801c,
- 0x003d300a,
- 0x003d900d,
- 0x003f5808,
- 0x003fd802,
- 0x0040b003,
- 0x0040d808,
- 0x00412802,
- 0x00414806,
- 0x0041f800,
- 0x0042c804,
- 0x0042f800,
- 0x00435804,
- 0x00447810,
- 0x00465038,
- 0x0049d000,
- 0x0049e000,
- 0x004a0807,
- 0x004a6800,
- 0x004a8806,
- 0x004b1001,
- 0x004c0800,
- 0x004c2000,
- 0x004c6801,
- 0x004c8801,
- 0x004d4800,
- 0x004d8800,
- 0x004d9802,
- 0x004dd002,
- 0x004df000,
- 0x004e0805,
- 0x004e4801,
- 0x004e6800,
- 0x004e780c,
- 0x004ef000,
- 0x004f1003,
- 0x004ff004,
- 0x00502000,
- 0x00505803,
- 0x00508801,
- 0x00514800,
- 0x00518800,
- 0x0051a000,
- 0x0051b800,
- 0x0051d003,
- 0x00520817,
- 0x0052e800,
- 0x0052f806,
- 0x00538001,
- 0x0053a800,
- 0x0053b80b,
- 0x00542000,
- 0x00547000,
- 0x00549000,
- 0x00554800,
- 0x00558800,
- 0x0055a000,
- 0x0055d002,
- 0x00560807,
- 0x00565000,
- 0x00566802,
- 0x0056880e,
- 0x00571003,
- 0x00579006,
- 0x0057d007,
- 0x00582000,
- 0x00586801,
- 0x00588801,
- 0x00594800,
- 0x00598800,
- 0x0059a000,
- 0x0059d002,
- 0x0059f001,
- 0x005a0805,
- 0x005a4801,
- 0x005a680e,
- 0x005af000,
- 0x005b1003,
- 0x005bc00a,
- 0x005c2000,
- 0x005c5802,
- 0x005c8800,
- 0x005cb002,
- 0x005cd800,
- 0x005ce800,
- 0x005d0002,
- 0x005d2802,
- 0x005d5802,
- 0x005dd004,
- 0x005e0000,
- 0x005e1802,
- 0x005e4800,
- 0x005e6802,
- 0x005e8814,
- 0x005fd805,
- 0x00602000,
- 0x00606800,
- 0x00608800,
- 0x00614800,
- 0x0061d002,
- 0x0061f002,
- 0x00622812,
- 0x0062d801,
- 0x0062f001,
- 0x00631003,
- 0x00638006,
- 0x00640800,
- 0x00646800,
- 0x00648800,
- 0x00654800,
- 0x0065a000,
- 0x0065d002,
- 0x0065f800,
- 0x00661000,
- 0x00662801,
- 0x00664800,
- 0x00666010,
- 0x0066f800,
- 0x00671003,
- 0x00678000,
- 0x0067a00d,
- 0x00686800,
- 0x00688800,
- 0x0069d801,
- 0x0069f000,
- 0x006a0804,
- 0x006a4800,
- 0x006a6800,
- 0x006a8003,
- 0x006ab800,
- 0x006b1003,
- 0x006c0001,
- 0x006c2000,
- 0x006cb802,
- 0x006d9000,
- 0x006de000,
- 0x006df001,
- 0x006e3808,
- 0x006e9005,
- 0x006ef806,
- 0x006f8001,
- 0x006fa80b,
- 0x00718800,
- 0x0071a00a,
- 0x00723807,
- 0x0072e024,
- 0x00741800,
- 0x00742800,
- 0x00745800,
- 0x00752000,
- 0x00753000,
- 0x00758800,
- 0x0075a008,
- 0x0075f001,
- 0x00762800,
- 0x00763808,
- 0x0076d001,
- 0x0077001f,
- 0x0078c001,
- 0x0079a800,
- 0x0079b800,
- 0x0079c800,
- 0x007a4000,
- 0x007b6811,
- 0x007c0004,
- 0x007c3001,
- 0x007c6830,
- 0x007e3000,
- 0x007e6800,
- 0x007ed824,
- 0x00816803,
- 0x00819005,
- 0x0081c801,
- 0x0081e801,
- 0x0082c001,
- 0x0082f002,
- 0x00838803,
- 0x00841000,
- 0x00842801,
- 0x00846800,
- 0x0084e800,
- 0x00863000,
- 0x00864004,
- 0x00867001,
- 0x00924800,
- 0x00927001,
- 0x0092b800,
- 0x0092c800,
- 0x0092f001,
- 0x00944800,
- 0x00947001,
- 0x00958800,
- 0x0095b001,
- 0x0095f800,
- 0x00960800,
- 0x00963001,
- 0x0096b800,
- 0x00988800,
- 0x0098b001,
- 0x009ad804,
- 0x009be802,
- 0x009cd005,
- 0x009fb001,
- 0x009ff001,
- 0x00b40000,
- 0x00b4e802,
- 0x00b7c806,
- 0x00b89002,
- 0x00b8b008,
- 0x00b99001,
- 0x00b9b808,
- 0x00ba900d,
- 0x00bb6800,
- 0x00bb880e,
- 0x00bda001,
- 0x00bdb806,
- 0x00be3000,
- 0x00be480a,
- 0x00bee802,
- 0x00bf5005,
- 0x00bfd005,
- 0x00c05804,
- 0x00c0d005,
- 0x00c3c806,
- 0x00c42801,
- 0x00c54800,
- 0x00c55804,
- 0x00c7b009,
- 0x00c8f803,
- 0x00c93801,
- 0x00c96003,
- 0x00c99000,
- 0x00c9c806,
- 0x00ca0802,
- 0x00cb7001,
- 0x00cba80a,
- 0x00cd6003,
- 0x00ce5005,
- 0x00ced802,
- 0x00d0b801,
- 0x00d0d802,
- 0x00d2b000,
- 0x00d2c008,
- 0x00d31000,
- 0x00d32807,
- 0x00d3980c,
- 0x00d45005,
- 0x00d4d005,
- 0x00d57055,
- 0x00d9a006,
- 0x00d9e000,
- 0x00da1000,
- 0x00da6802,
- 0x00db5808,
- 0x00dbf802,
- 0x00dd1003,
- 0x00dd4001,
- 0x00dd5802,
- 0x00df3000,
- 0x00df4001,
- 0x00df6800,
- 0x00df7802,
- 0x00dfa007,
- 0x00e16007,
- 0x00e1b004,
- 0x00e25002,
- 0x00e44806,
- 0x00e5d801,
- 0x00e6400a,
- 0x00e6a00c,
- 0x00e71006,
- 0x00e76800,
- 0x00e7a000,
- 0x00e7c001,
- 0x00e7d804,
- 0x00ee003f,
- 0x00f8b001,
- 0x00f8f001,
- 0x00fa3001,
- 0x00fa7001,
- 0x00fac000,
- 0x00fad000,
- 0x00fae000,
- 0x00faf000,
- 0x00fbf001,
- 0x00fda800,
- 0x00fe2800,
- 0x00fea001,
- 0x00fee000,
- 0x00ff8001,
- 0x00ffa800,
- 0x00fff810,
- 0x01014007,
- 0x0102f810,
- 0x01039001,
- 0x01047800,
- 0x0104e802,
- 0x0106083e,
- 0x010c6003,
- 0x01213818,
- 0x01225814,
- 0x015ba001,
- 0x015cb000,
- 0x01677802,
- 0x0167a004,
- 0x01693000,
- 0x01694004,
- 0x01697001,
- 0x016b4006,
- 0x016b880e,
- 0x016cb808,
- 0x016d3800,
- 0x016d7800,
- 0x016db800,
- 0x016df800,
- 0x016e3800,
- 0x016e7800,
- 0x016eb800,
- 0x016ef820,
- 0x0172f021,
- 0x0174d000,
- 0x0177a00b,
- 0x017eb019,
- 0x017fe004,
- 0x01815005,
- 0x01820000,
- 0x0184b803,
- 0x01880004,
- 0x01898000,
- 0x018c7800,
- 0x018f200b,
- 0x0190f800,
- 0x05246802,
- 0x05263808,
- 0x05316013,
- 0x05337803,
- 0x0533a009,
- 0x0534f001,
- 0x05378001,
- 0x0537c007,
- 0x053e5804,
- 0x053e9000,
- 0x053ea000,
- 0x053ed017,
- 0x05401000,
- 0x05403000,
- 0x05405800,
- 0x05412801,
- 0x05416003,
- 0x0541d005,
- 0x0543c007,
- 0x05462009,
- 0x0546d017,
- 0x0547f800,
- 0x05493007,
- 0x054a380a,
- 0x054aa00a,
- 0x054be805,
- 0x054d9800,
- 0x054db003,
- 0x054de001,
- 0x054e7000,
- 0x054ed003,
- 0x054f2800,
- 0x054ff800,
- 0x05514805,
- 0x05518801,
- 0x0551a80a,
- 0x05521800,
- 0x05526000,
- 0x05527001,
- 0x0552d001,
- 0x0553e000,
- 0x05558000,
- 0x05559002,
- 0x0555b801,
- 0x0555f001,
- 0x05560800,
- 0x05561817,
- 0x05576001,
- 0x0557b00a,
- 0x05583801,
- 0x05587801,
- 0x0558b808,
- 0x05593800,
- 0x05597800,
- 0x055b6003,
- 0x055f2800,
- 0x055f4000,
- 0x055f6802,
- 0x055fd005,
- 0x06bd200b,
- 0x06be3803,
- 0x06bfe7ff,
- 0x06ffe7ff,
- 0x073fe7ff,
- 0x077fe7ff,
- 0x07bfe103,
- 0x07d37001,
- 0x07d6d025,
- 0x07d8380b,
- 0x07d8c004,
- 0x07d8f000,
- 0x07d9b800,
- 0x07d9e800,
- 0x07d9f800,
- 0x07da1000,
- 0x07da2800,
- 0x07de180f,
- 0x07ec8001,
- 0x07ee4006,
- 0x07ee801f,
- 0x07f0000f,
- 0x07f0d015,
- 0x07f29800,
- 0x07f33800,
- 0x07f36003,
- 0x07f3a800,
- 0x07f7e803,
- 0x07fcf001,
- 0x07fdf802,
- 0x07fe4001,
- 0x07fe8001,
- 0x07fec001,
- 0x07fee802,
- 0x07ff3800,
- 0x07ff780c,
- 0x07fff001,
- 0x08006000,
- 0x08013800,
- 0x0801d800,
- 0x0801f000,
- 0x08027001,
- 0x0802f021,
- 0x0807d804,
- 0x08081803,
- 0x0809a002,
- 0x080c7800,
- 0x080ce802,
- 0x080d082e,
- 0x080fe882,
- 0x0814e802,
- 0x0816880f,
- 0x0817e003,
- 0x08192008,
- 0x081a5804,
- 0x081bb009,
- 0x081cf000,
- 0x081e2003,
- 0x081eb029,
- 0x0824f001,
- 0x08255005,
- 0x0826a003,
- 0x0827e003,
- 0x08294007,
- 0x082b200a,
- 0x082bd800,
- 0x082c5800,
- 0x082c9800,
- 0x082cb000,
- 0x082d1000,
- 0x082d9000,
- 0x082dd000,
- 0x082de842,
- 0x0839b808,
- 0x083ab009,
- 0x083b4017,
- 0x083c3000,
- 0x083d8800,
- 0x083dd844,
- 0x08403001,
- 0x08404800,
- 0x0841b000,
- 0x0841c802,
- 0x0841e801,
- 0x0842b000,
- 0x0844f807,
- 0x0845802f,
- 0x08479800,
- 0x0847b004,
- 0x0848e002,
- 0x0849d004,
- 0x084a003f,
- 0x084dc003,
- 0x084e8001,
- 0x0850080e,
- 0x0850a000,
- 0x0850c000,
- 0x0851b009,
- 0x08524806,
- 0x0852c806,
- 0x0855001f,
- 0x08572805,
- 0x0857b808,
- 0x0859b002,
- 0x085ab001,
- 0x085b9804,
- 0x085c9006,
- 0x085ce80b,
- 0x085d804f,
- 0x08624836,
- 0x0865980c,
- 0x08679806,
- 0x0869200b,
- 0x0869d125,
- 0x0873f800,
- 0x08755002,
- 0x08757001,
- 0x0875904d,
- 0x08794007,
- 0x087a300a,
- 0x087ad015,
- 0x087c1003,
- 0x087c5025,
- 0x087e6013,
- 0x087fb808,
- 0x08800800,
- 0x0881c00e,
- 0x08827003,
- 0x08838000,
- 0x08839801,
- 0x0883b00b,
- 0x08859803,
- 0x0885c801,
- 0x0885e800,
- 0x0886100d,
- 0x08874806,
- 0x0887d008,
- 0x08893804,
- 0x08896808,
- 0x088a4007,
- 0x088b9800,
- 0x088bb80a,
- 0x088db008,
- 0x088e4803,
- 0x088e7800,
- 0x088f0000,
- 0x088fa80a,
- 0x08909000,
- 0x08917802,
- 0x0891a000,
- 0x0891b001,
- 0x0891f000,
- 0x0892083e,
- 0x08943800,
- 0x08944800,
- 0x08947000,
- 0x0894f000,
- 0x08955005,
- 0x0896f800,
- 0x0897180c,
- 0x0897d007,
- 0x08982000,
- 0x08986801,
- 0x08988801,
- 0x08994800,
- 0x08998800,
- 0x0899a000,
- 0x0899d002,
- 0x0899f000,
- 0x089a0000,
- 0x089a2801,
- 0x089a4801,
- 0x089a7001,
- 0x089a880b,
- 0x089b209b,
- 0x08a1c007,
- 0x08a21002,
- 0x08a23000,
- 0x08a2e000,
- 0x08a2f000,
- 0x08a3101d,
- 0x08a58000,
- 0x08a59805,
- 0x08a5d000,
- 0x08a5e800,
- 0x08a5f801,
- 0x08a61001,
- 0x08a64007,
- 0x08a6d0a5,
- 0x08ad7800,
- 0x08ad9005,
- 0x08ade001,
- 0x08adf801,
- 0x08aee023,
- 0x08b19807,
- 0x08b1e800,
- 0x08b1f801,
- 0x08b2280a,
- 0x08b2d005,
- 0x08b36812,
- 0x08b55800,
- 0x08b56800,
- 0x08b58005,
- 0x08b5b800,
- 0x08b5d005,
- 0x08b65035,
- 0x08b8d804,
- 0x08b91003,
- 0x08b93808,
- 0x08ba38b8,
- 0x08c17808,
- 0x08c1c801,
- 0x08c1e063,
- 0x08c7980b,
- 0x08c83801,
- 0x08c85001,
- 0x08c8a000,
- 0x08c8b800,
- 0x08c98000,
- 0x08c9b000,
- 0x08c9c803,
- 0x08c9f000,
- 0x08ca1800,
- 0x08ca3808,
- 0x08cad045,
- 0x08cd4001,
- 0x08cea007,
- 0x08cf0000,
- 0x08cf281a,
- 0x08d00809,
- 0x08d19805,
- 0x08d1d803,
- 0x08d23808,
- 0x08d28805,
- 0x08d2c802,
- 0x08d4500c,
- 0x08d4c001,
- 0x08d5180c,
- 0x08d7c806,
- 0x08d850f5,
- 0x08e04800,
- 0x08e1800d,
- 0x08e1f800,
- 0x08e23009,
- 0x08e36802,
- 0x08e48018,
- 0x08e55006,
- 0x08e59001,
- 0x08e5a84a,
- 0x08e83800,
- 0x08e85000,
- 0x08e98814,
- 0x08ea3808,
- 0x08ead005,
- 0x08eb3000,
- 0x08eb4800,
- 0x08ec7803,
- 0x08eca800,
- 0x08ecb800,
- 0x08ecc806,
- 0x08ed5135,
- 0x08f79801,
- 0x08f7c808,
- 0x08f88800,
- 0x08f9b007,
- 0x08fa0000,
- 0x08fa1000,
- 0x08fad055,
- 0x08fd880e,
- 0x08ff900c,
- 0x091cd065,
- 0x09237800,
- 0x0923a80a,
- 0x092a27ff,
- 0x096a224b,
- 0x097f980c,
- 0x09a18010,
- 0x09a23fff,
- 0x09e23fb8,
- 0x0a323fff,
- 0x0a723fff,
- 0x0ab23fff,
- 0x0af23fff,
- 0x0b3239b8,
- 0x0b51c806,
- 0x0b52f800,
- 0x0b535003,
- 0x0b55f800,
- 0x0b565005,
- 0x0b577006,
- 0x0b57b009,
- 0x0b598006,
- 0x0b5a3009,
- 0x0b5ad000,
- 0x0b5b1000,
- 0x0b5bc004,
- 0x0b5c82af,
- 0x0b74d864,
- 0x0b7a5804,
- 0x0b7c400a,
- 0x0b7d003f,
- 0x0b7f200b,
- 0x0b7f900d,
- 0x0c3fc007,
- 0x0c66b029,
- 0x0c684fff,
- 0x0ca84fff,
- 0x0ce84fff,
- 0x0d284fff,
- 0x0d684ae6,
- 0x0d7fa000,
- 0x0d7fe000,
- 0x0d7ff800,
- 0x0d89180e,
- 0x0d89981c,
- 0x0d8a9801,
- 0x0d8ab00d,
- 0x0d8b4007,
- 0x0d97e7ff,
- 0x0dd7e103,
- 0x0de35804,
- 0x0de3e802,
- 0x0de44806,
- 0x0de4d001,
- 0x0de4e801,
- 0x0de507ff,
- 0x0e2507ff,
- 0x0e6502af,
- 0x0e7e203b,
- 0x0e87b009,
- 0x0e893801,
- 0x0e8b2800,
- 0x0e8b3802,
- 0x0e8b7014,
- 0x0e8c2806,
- 0x0e8d5003,
- 0x0e8f5814,
- 0x0e921002,
- 0x0e923079,
- 0x0e96a00b,
- 0x0e97a00b,
- 0x0e9ab808,
- 0x0e9bc886,
- 0x0ea2a800,
- 0x0ea4e800,
- 0x0ea50001,
- 0x0ea51801,
- 0x0ea53801,
- 0x0ea56800,
- 0x0ea5d000,
- 0x0ea5e000,
- 0x0ea62000,
- 0x0ea83000,
- 0x0ea85801,
- 0x0ea8a800,
- 0x0ea8e800,
- 0x0ea9d000,
- 0x0ea9f800,
- 0x0eaa2800,
- 0x0eaa3802,
- 0x0eaa8800,
- 0x0eb53001,
- 0x0ebe6001,
- 0x0ed00036,
- 0x0ed1d831,
- 0x0ed3a800,
- 0x0ed42000,
- 0x0ed46473,
- 0x0ef8f805,
- 0x0ef95904,
- 0x0f037091,
- 0x0f096809,
- 0x0f09f001,
- 0x0f0a5003,
- 0x0f0a813f,
- 0x0f157011,
- 0x0f176003,
- 0x0f17d004,
- 0x0f1801cf,
- 0x0f276003,
- 0x0f27d2e5,
- 0x0f3f3800,
- 0x0f3f6000,
- 0x0f3f7800,
- 0x0f3ff800,
- 0x0f462801,
- 0x0f46802f,
- 0x0f4a2006,
- 0x0f4a6003,
- 0x0f4ad003,
- 0x0f4b0310,
- 0x0f65a84b,
- 0x0f69f0c1,
- 0x0f702000,
- 0x0f710000,
- 0x0f711800,
- 0x0f712801,
- 0x0f714000,
- 0x0f719800,
- 0x0f71c000,
- 0x0f71d000,
- 0x0f71e005,
- 0x0f721803,
- 0x0f724000,
- 0x0f725000,
- 0x0f726000,
- 0x0f728000,
- 0x0f729800,
- 0x0f72a801,
- 0x0f72c000,
- 0x0f72d000,
- 0x0f72e000,
- 0x0f72f000,
- 0x0f730000,
- 0x0f731800,
- 0x0f732801,
- 0x0f735800,
- 0x0f739800,
- 0x0f73c000,
- 0x0f73e800,
- 0x0f73f800,
- 0x0f745000,
- 0x0f74e004,
- 0x0f752000,
- 0x0f755000,
- 0x0f75e033,
- 0x0f77910d,
- 0x0f816003,
- 0x0f84a00b,
- 0x0f857801,
- 0x0f860000,
- 0x0f868000,
- 0x0f87b009,
- 0x0f8d7037,
- 0x0f90180c,
- 0x0f91e003,
- 0x0f924806,
- 0x0f92900d,
- 0x0f933099,
- 0x0fb6c003,
- 0x0fb76802,
- 0x0fb7e802,
- 0x0fbbb803,
- 0x0fbed005,
- 0x0fbf6003,
- 0x0fbf880e,
- 0x0fc06003,
- 0x0fc24007,
- 0x0fc2d005,
- 0x0fc44007,
- 0x0fc57001,
- 0x0fc5904d,
- 0x0fd2a00b,
- 0x0fd37001,
- 0x0fd3e802,
- 0x0fd44806,
- 0x0fd5f000,
- 0x0fd63007,
- 0x0fd6e003,
- 0x0fd74806,
- 0x0fd7c806,
- 0x0fdc9800,
- 0x0fde5824,
- 0x0fdfd405,
- 0x1537001f,
- 0x15b9d005,
- 0x15c0f001,
- 0x1675100d,
- 0x175f0fff,
- 0x179f0c1e,
- 0x17d0f5e1,
- 0x189a5804};
+/// - bits [0, 13] The size of the range, allowing 16384 elements.
+/// - bits [14, 31] The lower bound code point of the range. The upper bound of
+/// the range is lower bound + size. Note the code expects code units the fit
+/// into 18 bits, instead of the 21 bits needed for the full Unicode range.
+_LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[711] = {
+ 0x00000020 /* 00000000 - 00000020 [ 33] */,
+ 0x001fc021 /* 0000007f - 000000a0 [ 34] */,
+ 0x002b4000 /* 000000ad - 000000ad [ 1] */,
+ 0x00de0001 /* 00000378 - 00000379 [ 2] */,
+ 0x00e00003 /* 00000380 - 00000383 [ 4] */,
+ 0x00e2c000 /* 0000038b - 0000038b [ 1] */,
+ 0x00e34000 /* 0000038d - 0000038d [ 1] */,
+ 0x00e88000 /* 000003a2 - 000003a2 [ 1] */,
+ 0x014c0000 /* 00000530 - 00000530 [ 1] */,
+ 0x0155c001 /* 00000557 - 00000558 [ 2] */,
+ 0x0162c001 /* 0000058b - 0000058c [ 2] */,
+ 0x01640000 /* 00000590 - 00000590 [ 1] */,
+ 0x01720007 /* 000005c8 - 000005cf [ 8] */,
+ 0x017ac003 /* 000005eb - 000005ee [ 4] */,
+ 0x017d4010 /* 000005f5 - 00000605 [ 17] */,
+ 0x01870000 /* 0000061c - 0000061c [ 1] */,
+ 0x01b74000 /* 000006dd - 000006dd [ 1] */,
+ 0x01c38001 /* 0000070e - 0000070f [ 2] */,
+ 0x01d2c001 /* 0000074b - 0000074c [ 2] */,
+ 0x01ec800d /* 000007b2 - 000007bf [ 14] */,
+ 0x01fec001 /* 000007fb - 000007fc [ 2] */,
+ 0x020b8001 /* 0000082e - 0000082f [ 2] */,
+ 0x020fc000 /* 0000083f - 0000083f [ 1] */,
+ 0x02170001 /* 0000085c - 0000085d [ 2] */,
+ 0x0217c000 /* 0000085f - 0000085f [ 1] */,
+ 0x021ac004 /* 0000086b - 0000086f [ 5] */,
+ 0x0223c008 /* 0000088f - 00000897 [ 9] */,
+ 0x02388000 /* 000008e2 - 000008e2 [ 1] */,
+ 0x02610000 /* 00000984 - 00000984 [ 1] */,
+ 0x02634001 /* 0000098d - 0000098e [ 2] */,
+ 0x02644001 /* 00000991 - 00000992 [ 2] */,
+ 0x026a4000 /* 000009a9 - 000009a9 [ 1] */,
+ 0x026c4000 /* 000009b1 - 000009b1 [ 1] */,
+ 0x026cc002 /* 000009b3 - 000009b5 [ 3] */,
+ 0x026e8001 /* 000009ba - 000009bb [ 2] */,
+ 0x02714001 /* 000009c5 - 000009c6 [ 2] */,
+ 0x02724001 /* 000009c9 - 000009ca [ 2] */,
+ 0x0273c007 /* 000009cf - 000009d6 [ 8] */,
+ 0x02760003 /* 000009d8 - 000009db [ 4] */,
+ 0x02778000 /* 000009de - 000009de [ 1] */,
+ 0x02790001 /* 000009e4 - 000009e5 [ 2] */,
+ 0x027fc001 /* 000009ff - 00000a00 [ 2] */,
+ 0x02810000 /* 00000a04 - 00000a04 [ 1] */,
+ 0x0282c003 /* 00000a0b - 00000a0e [ 4] */,
+ 0x02844001 /* 00000a11 - 00000a12 [ 2] */,
+ 0x028a4000 /* 00000a29 - 00000a29 [ 1] */,
+ 0x028c4000 /* 00000a31 - 00000a31 [ 1] */,
+ 0x028d0000 /* 00000a34 - 00000a34 [ 1] */,
+ 0x028dc000 /* 00000a37 - 00000a37 [ 1] */,
+ 0x028e8001 /* 00000a3a - 00000a3b [ 2] */,
+ 0x028f4000 /* 00000a3d - 00000a3d [ 1] */,
+ 0x0290c003 /* 00000a43 - 00000a46 [ 4] */,
+ 0x02924001 /* 00000a49 - 00000a4a [ 2] */,
+ 0x02938002 /* 00000a4e - 00000a50 [ 3] */,
+ 0x02948006 /* 00000a52 - 00000a58 [ 7] */,
+ 0x02974000 /* 00000a5d - 00000a5d [ 1] */,
+ 0x0297c006 /* 00000a5f - 00000a65 [ 7] */,
+ 0x029dc009 /* 00000a77 - 00000a80 [ 10] */,
+ 0x02a10000 /* 00000a84 - 00000a84 [ 1] */,
+ 0x02a38000 /* 00000a8e - 00000a8e [ 1] */,
+ 0x02a48000 /* 00000a92 - 00000a92 [ 1] */,
+ 0x02aa4000 /* 00000aa9 - 00000aa9 [ 1] */,
+ 0x02ac4000 /* 00000ab1 - 00000ab1 [ 1] */,
+ 0x02ad0000 /* 00000ab4 - 00000ab4 [ 1] */,
+ 0x02ae8001 /* 00000aba - 00000abb [ 2] */,
+ 0x02b18000 /* 00000ac6 - 00000ac6 [ 1] */,
+ 0x02b28000 /* 00000aca - 00000aca [ 1] */,
+ 0x02b38001 /* 00000ace - 00000acf [ 2] */,
+ 0x02b4400e /* 00000ad1 - 00000adf [ 15] */,
+ 0x02b90001 /* 00000ae4 - 00000ae5 [ 2] */,
+ 0x02bc8006 /* 00000af2 - 00000af8 [ 7] */,
+ 0x02c00000 /* 00000b00 - 00000b00 [ 1] */,
+ 0x02c10000 /* 00000b04 - 00000b04 [ 1] */,
+ 0x02c34001 /* 00000b0d - 00000b0e [ 2] */,
+ 0x02c44001 /* 00000b11 - 00000b12 [ 2] */,
+ 0x02ca4000 /* 00000b29 - 00000b29 [ 1] */,
+ 0x02cc4000 /* 00000b31 - 00000b31 [ 1] */,
+ 0x02cd0000 /* 00000b34 - 00000b34 [ 1] */,
+ 0x02ce8001 /* 00000b3a - 00000b3b [ 2] */,
+ 0x02d14001 /* 00000b45 - 00000b46 [ 2] */,
+ 0x02d24001 /* 00000b49 - 00000b4a [ 2] */,
+ 0x02d38006 /* 00000b4e - 00000b54 [ 7] */,
+ 0x02d60003 /* 00000b58 - 00000b5b [ 4] */,
+ 0x02d78000 /* 00000b5e - 00000b5e [ 1] */,
+ 0x02d90001 /* 00000b64 - 00000b65 [ 2] */,
+ 0x02de0009 /* 00000b78 - 00000b81 [ 10] */,
+ 0x02e10000 /* 00000b84 - 00000b84 [ 1] */,
+ 0x02e2c002 /* 00000b8b - 00000b8d [ 3] */,
+ 0x02e44000 /* 00000b91 - 00000b91 [ 1] */,
+ 0x02e58002 /* 00000b96 - 00000b98 [ 3] */,
+ 0x02e6c000 /* 00000b9b - 00000b9b [ 1] */,
+ 0x02e74000 /* 00000b9d - 00000b9d [ 1] */,
+ 0x02e80002 /* 00000ba0 - 00000ba2 [ 3] */,
+ 0x02e94002 /* 00000ba5 - 00000ba7 [ 3] */,
+ 0x02eac002 /* 00000bab - 00000bad [ 3] */,
+ 0x02ee8003 /* 00000bba - 00000bbd [ 4] */,
+ 0x02f0c002 /* 00000bc3 - 00000bc5 [ 3] */,
+ 0x02f24000 /* 00000bc9 - 00000bc9 [ 1] */,
+ 0x02f38001 /* 00000bce - 00000bcf [ 2] */,
+ 0x02f44005 /* 00000bd1 - 00000bd6 [ 6] */,
+ 0x02f6000d /* 00000bd8 - 00000be5 [ 14] */,
+ 0x02fec004 /* 00000bfb - 00000bff [ 5] */,
+ 0x03034000 /* 00000c0d - 00000c0d [ 1] */,
+ 0x03044000 /* 00000c11 - 00000c11 [ 1] */,
+ 0x030a4000 /* 00000c29 - 00000c29 [ 1] */,
+ 0x030e8001 /* 00000c3a - 00000c3b [ 2] */,
+ 0x03114000 /* 00000c45 - 00000c45 [ 1] */,
+ 0x03124000 /* 00000c49 - 00000c49 [ 1] */,
+ 0x03138006 /* 00000c4e - 00000c54 [ 7] */,
+ 0x0315c000 /* 00000c57 - 00000c57 [ 1] */,
+ 0x0316c001 /* 00000c5b - 00000c5c [ 2] */,
+ 0x03178001 /* 00000c5e - 00000c5f [ 2] */,
+ 0x03190001 /* 00000c64 - 00000c65 [ 2] */,
+ 0x031c0006 /* 00000c70 - 00000c76 [ 7] */,
+ 0x03234000 /* 00000c8d - 00000c8d [ 1] */,
+ 0x03244000 /* 00000c91 - 00000c91 [ 1] */,
+ 0x032a4000 /* 00000ca9 - 00000ca9 [ 1] */,
+ 0x032d0000 /* 00000cb4 - 00000cb4 [ 1] */,
+ 0x032e8001 /* 00000cba - 00000cbb [ 2] */,
+ 0x03314000 /* 00000cc5 - 00000cc5 [ 1] */,
+ 0x03324000 /* 00000cc9 - 00000cc9 [ 1] */,
+ 0x03338006 /* 00000cce - 00000cd4 [ 7] */,
+ 0x0335c005 /* 00000cd7 - 00000cdc [ 6] */,
+ 0x0337c000 /* 00000cdf - 00000cdf [ 1] */,
+ 0x03390001 /* 00000ce4 - 00000ce5 [ 2] */,
+ 0x033c0000 /* 00000cf0 - 00000cf0 [ 1] */,
+ 0x033d000b /* 00000cf4 - 00000cff [ 12] */,
+ 0x03434000 /* 00000d0d - 00000d0d [ 1] */,
+ 0x03444000 /* 00000d11 - 00000d11 [ 1] */,
+ 0x03514000 /* 00000d45 - 00000d45 [ 1] */,
+ 0x03524000 /* 00000d49 - 00000d49 [ 1] */,
+ 0x03540003 /* 00000d50 - 00000d53 [ 4] */,
+ 0x03590001 /* 00000d64 - 00000d65 [ 2] */,
+ 0x03600000 /* 00000d80 - 00000d80 [ 1] */,
+ 0x03610000 /* 00000d84 - 00000d84 [ 1] */,
+ 0x0365c002 /* 00000d97 - 00000d99 [ 3] */,
+ 0x036c8000 /* 00000db2 - 00000db2 [ 1] */,
+ 0x036f0000 /* 00000dbc - 00000dbc [ 1] */,
+ 0x036f8001 /* 00000dbe - 00000dbf [ 2] */,
+ 0x0371c002 /* 00000dc7 - 00000dc9 [ 3] */,
+ 0x0372c003 /* 00000dcb - 00000dce [ 4] */,
+ 0x03754000 /* 00000dd5 - 00000dd5 [ 1] */,
+ 0x0375c000 /* 00000dd7 - 00000dd7 [ 1] */,
+ 0x03780005 /* 00000de0 - 00000de5 [ 6] */,
+ 0x037c0001 /* 00000df0 - 00000df1 [ 2] */,
+ 0x037d400b /* 00000df5 - 00000e00 [ 12] */,
+ 0x038ec003 /* 00000e3b - 00000e3e [ 4] */,
+ 0x03970024 /* 00000e5c - 00000e80 [ 37] */,
+ 0x03a0c000 /* 00000e83 - 00000e83 [ 1] */,
+ 0x03a14000 /* 00000e85 - 00000e85 [ 1] */,
+ 0x03a2c000 /* 00000e8b - 00000e8b [ 1] */,
+ 0x03a90000 /* 00000ea4 - 00000ea4 [ 1] */,
+ 0x03a98000 /* 00000ea6 - 00000ea6 [ 1] */,
+ 0x03af8001 /* 00000ebe - 00000ebf [ 2] */,
+ 0x03b14000 /* 00000ec5 - 00000ec5 [ 1] */,
+ 0x03b1c000 /* 00000ec7 - 00000ec7 [ 1] */,
+ 0x03b3c000 /* 00000ecf - 00000ecf [ 1] */,
+ 0x03b68001 /* 00000eda - 00000edb [ 2] */,
+ 0x03b8001f /* 00000ee0 - 00000eff [ 32] */,
+ 0x03d20000 /* 00000f48 - 00000f48 [ 1] */,
+ 0x03db4003 /* 00000f6d - 00000f70 [ 4] */,
+ 0x03e60000 /* 00000f98 - 00000f98 [ 1] */,
+ 0x03ef4000 /* 00000fbd - 00000fbd [ 1] */,
+ 0x03f34000 /* 00000fcd - 00000fcd [ 1] */,
+ 0x03f6c024 /* 00000fdb - 00000fff [ 37] */,
+ 0x04318000 /* 000010c6 - 000010c6 [ 1] */,
+ 0x04320004 /* 000010c8 - 000010cc [ 5] */,
+ 0x04338001 /* 000010ce - 000010cf [ 2] */,
+ 0x04924000 /* 00001249 - 00001249 [ 1] */,
+ 0x04938001 /* 0000124e - 0000124f [ 2] */,
+ 0x0495c000 /* 00001257 - 00001257 [ 1] */,
+ 0x04964000 /* 00001259 - 00001259 [ 1] */,
+ 0x04978001 /* 0000125e - 0000125f [ 2] */,
+ 0x04a24000 /* 00001289 - 00001289 [ 1] */,
+ 0x04a38001 /* 0000128e - 0000128f [ 2] */,
+ 0x04ac4000 /* 000012b1 - 000012b1 [ 1] */,
+ 0x04ad8001 /* 000012b6 - 000012b7 [ 2] */,
+ 0x04afc000 /* 000012bf - 000012bf [ 1] */,
+ 0x04b04000 /* 000012c1 - 000012c1 [ 1] */,
+ 0x04b18001 /* 000012c6 - 000012c7 [ 2] */,
+ 0x04b5c000 /* 000012d7 - 000012d7 [ 1] */,
+ 0x04c44000 /* 00001311 - 00001311 [ 1] */,
+ 0x04c58001 /* 00001316 - 00001317 [ 2] */,
+ 0x04d6c001 /* 0000135b - 0000135c [ 2] */,
+ 0x04df4002 /* 0000137d - 0000137f [ 3] */,
+ 0x04e68005 /* 0000139a - 0000139f [ 6] */,
+ 0x04fd8001 /* 000013f6 - 000013f7 [ 2] */,
+ 0x04ff8001 /* 000013fe - 000013ff [ 2] */,
+ 0x05a00000 /* 00001680 - 00001680 [ 1] */,
+ 0x05a74002 /* 0000169d - 0000169f [ 3] */,
+ 0x05be4006 /* 000016f9 - 000016ff [ 7] */,
+ 0x05c58008 /* 00001716 - 0000171e [ 9] */,
+ 0x05cdc008 /* 00001737 - 0000173f [ 9] */,
+ 0x05d5000b /* 00001754 - 0000175f [ 12] */,
+ 0x05db4000 /* 0000176d - 0000176d [ 1] */,
+ 0x05dc4000 /* 00001771 - 00001771 [ 1] */,
+ 0x05dd000b /* 00001774 - 0000177f [ 12] */,
+ 0x05f78001 /* 000017de - 000017df [ 2] */,
+ 0x05fa8005 /* 000017ea - 000017ef [ 6] */,
+ 0x05fe8005 /* 000017fa - 000017ff [ 6] */,
+ 0x06038000 /* 0000180e - 0000180e [ 1] */,
+ 0x06068005 /* 0000181a - 0000181f [ 6] */,
+ 0x061e4006 /* 00001879 - 0000187f [ 7] */,
+ 0x062ac004 /* 000018ab - 000018af [ 5] */,
+ 0x063d8009 /* 000018f6 - 000018ff [ 10] */,
+ 0x0647c000 /* 0000191f - 0000191f [ 1] */,
+ 0x064b0003 /* 0000192c - 0000192f [ 4] */,
+ 0x064f0003 /* 0000193c - 0000193f [ 4] */,
+ 0x06504002 /* 00001941 - 00001943 [ 3] */,
+ 0x065b8001 /* 0000196e - 0000196f [ 2] */,
+ 0x065d400a /* 00001975 - 0000197f [ 11] */,
+ 0x066b0003 /* 000019ac - 000019af [ 4] */,
+ 0x06728005 /* 000019ca - 000019cf [ 6] */,
+ 0x0676c002 /* 000019db - 000019dd [ 3] */,
+ 0x06870001 /* 00001a1c - 00001a1d [ 2] */,
+ 0x0697c000 /* 00001a5f - 00001a5f [ 1] */,
+ 0x069f4001 /* 00001a7d - 00001a7e [ 2] */,
+ 0x06a28005 /* 00001a8a - 00001a8f [ 6] */,
+ 0x06a68005 /* 00001a9a - 00001a9f [ 6] */,
+ 0x06ab8001 /* 00001aae - 00001aaf [ 2] */,
+ 0x06b3c030 /* 00001acf - 00001aff [ 49] */,
+ 0x06d34002 /* 00001b4d - 00001b4f [ 3] */,
+ 0x06dfc000 /* 00001b7f - 00001b7f [ 1] */,
+ 0x06fd0007 /* 00001bf4 - 00001bfb [ 8] */,
+ 0x070e0002 /* 00001c38 - 00001c3a [ 3] */,
+ 0x07128002 /* 00001c4a - 00001c4c [ 3] */,
+ 0x07224006 /* 00001c89 - 00001c8f [ 7] */,
+ 0x072ec001 /* 00001cbb - 00001cbc [ 2] */,
+ 0x07320007 /* 00001cc8 - 00001ccf [ 8] */,
+ 0x073ec004 /* 00001cfb - 00001cff [ 5] */,
+ 0x07c58001 /* 00001f16 - 00001f17 [ 2] */,
+ 0x07c78001 /* 00001f1e - 00001f1f [ 2] */,
+ 0x07d18001 /* 00001f46 - 00001f47 [ 2] */,
+ 0x07d38001 /* 00001f4e - 00001f4f [ 2] */,
+ 0x07d60000 /* 00001f58 - 00001f58 [ 1] */,
+ 0x07d68000 /* 00001f5a - 00001f5a [ 1] */,
+ 0x07d70000 /* 00001f5c - 00001f5c [ 1] */,
+ 0x07d78000 /* 00001f5e - 00001f5e [ 1] */,
+ 0x07df8001 /* 00001f7e - 00001f7f [ 2] */,
+ 0x07ed4000 /* 00001fb5 - 00001fb5 [ 1] */,
+ 0x07f14000 /* 00001fc5 - 00001fc5 [ 1] */,
+ 0x07f50001 /* 00001fd4 - 00001fd5 [ 2] */,
+ 0x07f70000 /* 00001fdc - 00001fdc [ 1] */,
+ 0x07fc0001 /* 00001ff0 - 00001ff1 [ 2] */,
+ 0x07fd4000 /* 00001ff5 - 00001ff5 [ 1] */,
+ 0x07ffc010 /* 00001fff - 0000200f [ 17] */,
+ 0x080a0007 /* 00002028 - 0000202f [ 8] */,
+ 0x0817c010 /* 0000205f - 0000206f [ 17] */,
+ 0x081c8001 /* 00002072 - 00002073 [ 2] */,
+ 0x0823c000 /* 0000208f - 0000208f [ 1] */,
+ 0x08274002 /* 0000209d - 0000209f [ 3] */,
+ 0x0830400e /* 000020c1 - 000020cf [ 15] */,
+ 0x083c400e /* 000020f1 - 000020ff [ 15] */,
+ 0x08630003 /* 0000218c - 0000218f [ 4] */,
+ 0x0909c018 /* 00002427 - 0000243f [ 25] */,
+ 0x0912c014 /* 0000244b - 0000245f [ 21] */,
+ 0x0add0001 /* 00002b74 - 00002b75 [ 2] */,
+ 0x0ae58000 /* 00002b96 - 00002b96 [ 1] */,
+ 0x0b3d0004 /* 00002cf4 - 00002cf8 [ 5] */,
+ 0x0b498000 /* 00002d26 - 00002d26 [ 1] */,
+ 0x0b4a0004 /* 00002d28 - 00002d2c [ 5] */,
+ 0x0b4b8001 /* 00002d2e - 00002d2f [ 2] */,
+ 0x0b5a0006 /* 00002d68 - 00002d6e [ 7] */,
+ 0x0b5c400d /* 00002d71 - 00002d7e [ 14] */,
+ 0x0b65c008 /* 00002d97 - 00002d9f [ 9] */,
+ 0x0b69c000 /* 00002da7 - 00002da7 [ 1] */,
+ 0x0b6bc000 /* 00002daf - 00002daf [ 1] */,
+ 0x0b6dc000 /* 00002db7 - 00002db7 [ 1] */,
+ 0x0b6fc000 /* 00002dbf - 00002dbf [ 1] */,
+ 0x0b71c000 /* 00002dc7 - 00002dc7 [ 1] */,
+ 0x0b73c000 /* 00002dcf - 00002dcf [ 1] */,
+ 0x0b75c000 /* 00002dd7 - 00002dd7 [ 1] */,
+ 0x0b77c000 /* 00002ddf - 00002ddf [ 1] */,
+ 0x0b978021 /* 00002e5e - 00002e7f [ 34] */,
+ 0x0ba68000 /* 00002e9a - 00002e9a [ 1] */,
+ 0x0bbd000b /* 00002ef4 - 00002eff [ 12] */,
+ 0x0bf58019 /* 00002fd6 - 00002fef [ 26] */,
+ 0x0c000000 /* 00003000 - 00003000 [ 1] */,
+ 0x0c100000 /* 00003040 - 00003040 [ 1] */,
+ 0x0c25c001 /* 00003097 - 00003098 [ 2] */,
+ 0x0c400004 /* 00003100 - 00003104 [ 5] */,
+ 0x0c4c0000 /* 00003130 - 00003130 [ 1] */,
+ 0x0c63c000 /* 0000318f - 0000318f [ 1] */,
+ 0x0c79000a /* 000031e4 - 000031ee [ 11] */,
+ 0x0c87c000 /* 0000321f - 0000321f [ 1] */,
+ 0x29234002 /* 0000a48d - 0000a48f [ 3] */,
+ 0x2931c008 /* 0000a4c7 - 0000a4cf [ 9] */,
+ 0x298b0013 /* 0000a62c - 0000a63f [ 20] */,
+ 0x29be0007 /* 0000a6f8 - 0000a6ff [ 8] */,
+ 0x29f2c004 /* 0000a7cb - 0000a7cf [ 5] */,
+ 0x29f48000 /* 0000a7d2 - 0000a7d2 [ 1] */,
+ 0x29f50000 /* 0000a7d4 - 0000a7d4 [ 1] */,
+ 0x29f68017 /* 0000a7da - 0000a7f1 [ 24] */,
+ 0x2a0b4002 /* 0000a82d - 0000a82f [ 3] */,
+ 0x2a0e8005 /* 0000a83a - 0000a83f [ 6] */,
+ 0x2a1e0007 /* 0000a878 - 0000a87f [ 8] */,
+ 0x2a318007 /* 0000a8c6 - 0000a8cd [ 8] */,
+ 0x2a368005 /* 0000a8da - 0000a8df [ 6] */,
+ 0x2a55000a /* 0000a954 - 0000a95e [ 11] */,
+ 0x2a5f4002 /* 0000a97d - 0000a97f [ 3] */,
+ 0x2a738000 /* 0000a9ce - 0000a9ce [ 1] */,
+ 0x2a768003 /* 0000a9da - 0000a9dd [ 4] */,
+ 0x2a7fc000 /* 0000a9ff - 0000a9ff [ 1] */,
+ 0x2a8dc008 /* 0000aa37 - 0000aa3f [ 9] */,
+ 0x2a938001 /* 0000aa4e - 0000aa4f [ 2] */,
+ 0x2a968001 /* 0000aa5a - 0000aa5b [ 2] */,
+ 0x2ab0c017 /* 0000aac3 - 0000aada [ 24] */,
+ 0x2abdc009 /* 0000aaf7 - 0000ab00 [ 10] */,
+ 0x2ac1c001 /* 0000ab07 - 0000ab08 [ 2] */,
+ 0x2ac3c001 /* 0000ab0f - 0000ab10 [ 2] */,
+ 0x2ac5c008 /* 0000ab17 - 0000ab1f [ 9] */,
+ 0x2ac9c000 /* 0000ab27 - 0000ab27 [ 1] */,
+ 0x2acbc000 /* 0000ab2f - 0000ab2f [ 1] */,
+ 0x2adb0003 /* 0000ab6c - 0000ab6f [ 4] */,
+ 0x2afb8001 /* 0000abee - 0000abef [ 2] */,
+ 0x2afe8005 /* 0000abfa - 0000abff [ 6] */,
+ 0x35e9000b /* 0000d7a4 - 0000d7af [ 12] */,
+ 0x35f1c003 /* 0000d7c7 - 0000d7ca [ 4] */,
+ 0x35ff2103 /* 0000d7fc - 0000f8ff [ 8452] */,
+ 0x3e9b8001 /* 0000fa6e - 0000fa6f [ 2] */,
+ 0x3eb68025 /* 0000fada - 0000faff [ 38] */,
+ 0x3ec1c00b /* 0000fb07 - 0000fb12 [ 12] */,
+ 0x3ec60004 /* 0000fb18 - 0000fb1c [ 5] */,
+ 0x3ecdc000 /* 0000fb37 - 0000fb37 [ 1] */,
+ 0x3ecf4000 /* 0000fb3d - 0000fb3d [ 1] */,
+ 0x3ecfc000 /* 0000fb3f - 0000fb3f [ 1] */,
+ 0x3ed08000 /* 0000fb42 - 0000fb42 [ 1] */,
+ 0x3ed14000 /* 0000fb45 - 0000fb45 [ 1] */,
+ 0x3ef0c00f /* 0000fbc3 - 0000fbd2 [ 16] */,
+ 0x3f640001 /* 0000fd90 - 0000fd91 [ 2] */,
+ 0x3f720006 /* 0000fdc8 - 0000fdce [ 7] */,
+ 0x3f74001f /* 0000fdd0 - 0000fdef [ 32] */,
+ 0x3f868005 /* 0000fe1a - 0000fe1f [ 6] */,
+ 0x3f94c000 /* 0000fe53 - 0000fe53 [ 1] */,
+ 0x3f99c000 /* 0000fe67 - 0000fe67 [ 1] */,
+ 0x3f9b0003 /* 0000fe6c - 0000fe6f [ 4] */,
+ 0x3f9d4000 /* 0000fe75 - 0000fe75 [ 1] */,
+ 0x3fbf4003 /* 0000fefd - 0000ff00 [ 4] */,
+ 0x3fefc002 /* 0000ffbf - 0000ffc1 [ 3] */,
+ 0x3ff20001 /* 0000ffc8 - 0000ffc9 [ 2] */,
+ 0x3ff40001 /* 0000ffd0 - 0000ffd1 [ 2] */,
+ 0x3ff60001 /* 0000ffd8 - 0000ffd9 [ 2] */,
+ 0x3ff74002 /* 0000ffdd - 0000ffdf [ 3] */,
+ 0x3ff9c000 /* 0000ffe7 - 0000ffe7 [ 1] */,
+ 0x3ffbc00c /* 0000ffef - 0000fffb [ 13] */,
+ 0x3fff8001 /* 0000fffe - 0000ffff [ 2] */,
+ 0x40030000 /* 0001000c - 0001000c [ 1] */,
+ 0x4009c000 /* 00010027 - 00010027 [ 1] */,
+ 0x400ec000 /* 0001003b - 0001003b [ 1] */,
+ 0x400f8000 /* 0001003e - 0001003e [ 1] */,
+ 0x40138001 /* 0001004e - 0001004f [ 2] */,
+ 0x40178021 /* 0001005e - 0001007f [ 34] */,
+ 0x403ec004 /* 000100fb - 000100ff [ 5] */,
+ 0x4040c003 /* 00010103 - 00010106 [ 4] */,
+ 0x404d0002 /* 00010134 - 00010136 [ 3] */,
+ 0x4063c000 /* 0001018f - 0001018f [ 1] */,
+ 0x40674002 /* 0001019d - 0001019f [ 3] */,
+ 0x4068402e /* 000101a1 - 000101cf [ 47] */,
+ 0x407f8081 /* 000101fe - 0001027f [ 130] */,
+ 0x40a74002 /* 0001029d - 0001029f [ 3] */,
+ 0x40b4400e /* 000102d1 - 000102df [ 15] */,
+ 0x40bf0003 /* 000102fc - 000102ff [ 4] */,
+ 0x40c90008 /* 00010324 - 0001032c [ 9] */,
+ 0x40d2c004 /* 0001034b - 0001034f [ 5] */,
+ 0x40dec004 /* 0001037b - 0001037f [ 5] */,
+ 0x40e78000 /* 0001039e - 0001039e [ 1] */,
+ 0x40f10003 /* 000103c4 - 000103c7 [ 4] */,
+ 0x40f58029 /* 000103d6 - 000103ff [ 42] */,
+ 0x41278001 /* 0001049e - 0001049f [ 2] */,
+ 0x412a8005 /* 000104aa - 000104af [ 6] */,
+ 0x41350003 /* 000104d4 - 000104d7 [ 4] */,
+ 0x413f0003 /* 000104fc - 000104ff [ 4] */,
+ 0x414a0007 /* 00010528 - 0001052f [ 8] */,
+ 0x4159000a /* 00010564 - 0001056e [ 11] */,
+ 0x415ec000 /* 0001057b - 0001057b [ 1] */,
+ 0x4162c000 /* 0001058b - 0001058b [ 1] */,
+ 0x4164c000 /* 00010593 - 00010593 [ 1] */,
+ 0x41658000 /* 00010596 - 00010596 [ 1] */,
+ 0x41688000 /* 000105a2 - 000105a2 [ 1] */,
+ 0x416c8000 /* 000105b2 - 000105b2 [ 1] */,
+ 0x416e8000 /* 000105ba - 000105ba [ 1] */,
+ 0x416f4042 /* 000105bd - 000105ff [ 67] */,
+ 0x41cdc008 /* 00010737 - 0001073f [ 9] */,
+ 0x41d58009 /* 00010756 - 0001075f [ 10] */,
+ 0x41da0017 /* 00010768 - 0001077f [ 24] */,
+ 0x41e18000 /* 00010786 - 00010786 [ 1] */,
+ 0x41ec4000 /* 000107b1 - 000107b1 [ 1] */,
+ 0x41eec044 /* 000107bb - 000107ff [ 69] */,
+ 0x42018001 /* 00010806 - 00010807 [ 2] */,
+ 0x42024000 /* 00010809 - 00010809 [ 1] */,
+ 0x420d8000 /* 00010836 - 00010836 [ 1] */,
+ 0x420e4002 /* 00010839 - 0001083b [ 3] */,
+ 0x420f4001 /* 0001083d - 0001083e [ 2] */,
+ 0x42158000 /* 00010856 - 00010856 [ 1] */,
+ 0x4227c007 /* 0001089f - 000108a6 [ 8] */,
+ 0x422c002f /* 000108b0 - 000108df [ 48] */,
+ 0x423cc000 /* 000108f3 - 000108f3 [ 1] */,
+ 0x423d8004 /* 000108f6 - 000108fa [ 5] */,
+ 0x42470002 /* 0001091c - 0001091e [ 3] */,
+ 0x424e8004 /* 0001093a - 0001093e [ 5] */,
+ 0x4250003f /* 00010940 - 0001097f [ 64] */,
+ 0x426e0003 /* 000109b8 - 000109bb [ 4] */,
+ 0x42740001 /* 000109d0 - 000109d1 [ 2] */,
+ 0x42810000 /* 00010a04 - 00010a04 [ 1] */,
+ 0x4281c004 /* 00010a07 - 00010a0b [ 5] */,
+ 0x42850000 /* 00010a14 - 00010a14 [ 1] */,
+ 0x42860000 /* 00010a18 - 00010a18 [ 1] */,
+ 0x428d8001 /* 00010a36 - 00010a37 [ 2] */,
+ 0x428ec003 /* 00010a3b - 00010a3e [ 4] */,
+ 0x42924006 /* 00010a49 - 00010a4f [ 7] */,
+ 0x42964006 /* 00010a59 - 00010a5f [ 7] */,
+ 0x42a8001f /* 00010aa0 - 00010abf [ 32] */,
+ 0x42b9c003 /* 00010ae7 - 00010aea [ 4] */,
+ 0x42bdc008 /* 00010af7 - 00010aff [ 9] */,
+ 0x42cd8002 /* 00010b36 - 00010b38 [ 3] */,
+ 0x42d58001 /* 00010b56 - 00010b57 [ 2] */,
+ 0x42dcc004 /* 00010b73 - 00010b77 [ 5] */,
+ 0x42e48006 /* 00010b92 - 00010b98 [ 7] */,
+ 0x42e7400b /* 00010b9d - 00010ba8 [ 12] */,
+ 0x42ec004f /* 00010bb0 - 00010bff [ 80] */,
+ 0x43124036 /* 00010c49 - 00010c7f [ 55] */,
+ 0x432cc00c /* 00010cb3 - 00010cbf [ 13] */,
+ 0x433cc006 /* 00010cf3 - 00010cf9 [ 7] */,
+ 0x434a0007 /* 00010d28 - 00010d2f [ 8] */,
+ 0x434e8125 /* 00010d3a - 00010e5f [ 294] */,
+ 0x439fc000 /* 00010e7f - 00010e7f [ 1] */,
+ 0x43aa8000 /* 00010eaa - 00010eaa [ 1] */,
+ 0x43ab8001 /* 00010eae - 00010eaf [ 2] */,
+ 0x43ac804a /* 00010eb2 - 00010efc [ 75] */,
+ 0x43ca0007 /* 00010f28 - 00010f2f [ 8] */,
+ 0x43d68015 /* 00010f5a - 00010f6f [ 22] */,
+ 0x43e28025 /* 00010f8a - 00010faf [ 38] */,
+ 0x43f30013 /* 00010fcc - 00010fdf [ 20] */,
+ 0x43fdc008 /* 00010ff7 - 00010fff [ 9] */,
+ 0x44138003 /* 0001104e - 00011051 [ 4] */,
+ 0x441d8008 /* 00011076 - 0001107e [ 9] */,
+ 0x442f4000 /* 000110bd - 000110bd [ 1] */,
+ 0x4430c00c /* 000110c3 - 000110cf [ 13] */,
+ 0x443a4006 /* 000110e9 - 000110ef [ 7] */,
+ 0x443e8005 /* 000110fa - 000110ff [ 6] */,
+ 0x444d4000 /* 00011135 - 00011135 [ 1] */,
+ 0x44520007 /* 00011148 - 0001114f [ 8] */,
+ 0x445dc008 /* 00011177 - 0001117f [ 9] */,
+ 0x44780000 /* 000111e0 - 000111e0 [ 1] */,
+ 0x447d400a /* 000111f5 - 000111ff [ 11] */,
+ 0x44848000 /* 00011212 - 00011212 [ 1] */,
+ 0x4490803d /* 00011242 - 0001127f [ 62] */,
+ 0x44a1c000 /* 00011287 - 00011287 [ 1] */,
+ 0x44a24000 /* 00011289 - 00011289 [ 1] */,
+ 0x44a38000 /* 0001128e - 0001128e [ 1] */,
+ 0x44a78000 /* 0001129e - 0001129e [ 1] */,
+ 0x44aa8005 /* 000112aa - 000112af [ 6] */,
+ 0x44bac004 /* 000112eb - 000112ef [ 5] */,
+ 0x44be8005 /* 000112fa - 000112ff [ 6] */,
+ 0x44c10000 /* 00011304 - 00011304 [ 1] */,
+ 0x44c34001 /* 0001130d - 0001130e [ 2] */,
+ 0x44c44001 /* 00011311 - 00011312 [ 2] */,
+ 0x44ca4000 /* 00011329 - 00011329 [ 1] */,
+ 0x44cc4000 /* 00011331 - 00011331 [ 1] */,
+ 0x44cd0000 /* 00011334 - 00011334 [ 1] */,
+ 0x44ce8000 /* 0001133a - 0001133a [ 1] */,
+ 0x44d14001 /* 00011345 - 00011346 [ 2] */,
+ 0x44d24001 /* 00011349 - 0001134a [ 2] */,
+ 0x44d38001 /* 0001134e - 0001134f [ 2] */,
+ 0x44d44005 /* 00011351 - 00011356 [ 6] */,
+ 0x44d60004 /* 00011358 - 0001135c [ 5] */,
+ 0x44d90001 /* 00011364 - 00011365 [ 2] */,
+ 0x44db4002 /* 0001136d - 0001136f [ 3] */,
+ 0x44dd408a /* 00011375 - 000113ff [ 139] */,
+ 0x45170000 /* 0001145c - 0001145c [ 1] */,
+ 0x4518801d /* 00011462 - 0001147f [ 30] */,
+ 0x45320007 /* 000114c8 - 000114cf [ 8] */,
+ 0x453680a5 /* 000114da - 0001157f [ 166] */,
+ 0x456d8001 /* 000115b6 - 000115b7 [ 2] */,
+ 0x45778021 /* 000115de - 000115ff [ 34] */,
+ 0x4591400a /* 00011645 - 0001164f [ 11] */,
+ 0x45968005 /* 0001165a - 0001165f [ 6] */,
+ 0x459b4012 /* 0001166d - 0001167f [ 19] */,
+ 0x45ae8005 /* 000116ba - 000116bf [ 6] */,
+ 0x45b28035 /* 000116ca - 000116ff [ 54] */,
+ 0x45c6c001 /* 0001171b - 0001171c [ 2] */,
+ 0x45cb0003 /* 0001172c - 0001172f [ 4] */,
+ 0x45d1c0b8 /* 00011747 - 000117ff [ 185] */,
+ 0x460f0063 /* 0001183c - 0001189f [ 100] */,
+ 0x463cc00b /* 000118f3 - 000118fe [ 12] */,
+ 0x4641c001 /* 00011907 - 00011908 [ 2] */,
+ 0x46428001 /* 0001190a - 0001190b [ 2] */,
+ 0x46450000 /* 00011914 - 00011914 [ 1] */,
+ 0x4645c000 /* 00011917 - 00011917 [ 1] */,
+ 0x464d8000 /* 00011936 - 00011936 [ 1] */,
+ 0x464e4001 /* 00011939 - 0001193a [ 2] */,
+ 0x4651c008 /* 00011947 - 0001194f [ 9] */,
+ 0x46568045 /* 0001195a - 0001199f [ 70] */,
+ 0x466a0001 /* 000119a8 - 000119a9 [ 2] */,
+ 0x46760001 /* 000119d8 - 000119d9 [ 2] */,
+ 0x4679401a /* 000119e5 - 000119ff [ 27] */,
+ 0x46920007 /* 00011a48 - 00011a4f [ 8] */,
+ 0x46a8c00c /* 00011aa3 - 00011aaf [ 13] */,
+ 0x46be4006 /* 00011af9 - 00011aff [ 7] */,
+ 0x46c280f5 /* 00011b0a - 00011bff [ 246] */,
+ 0x47024000 /* 00011c09 - 00011c09 [ 1] */,
+ 0x470dc000 /* 00011c37 - 00011c37 [ 1] */,
+ 0x47118009 /* 00011c46 - 00011c4f [ 10] */,
+ 0x471b4002 /* 00011c6d - 00011c6f [ 3] */,
+ 0x47240001 /* 00011c90 - 00011c91 [ 2] */,
+ 0x472a0000 /* 00011ca8 - 00011ca8 [ 1] */,
+ 0x472dc048 /* 00011cb7 - 00011cff [ 73] */,
+ 0x4741c000 /* 00011d07 - 00011d07 [ 1] */,
+ 0x47428000 /* 00011d0a - 00011d0a [ 1] */,
+ 0x474dc002 /* 00011d37 - 00011d39 [ 3] */,
+ 0x474ec000 /* 00011d3b - 00011d3b [ 1] */,
+ 0x474f8000 /* 00011d3e - 00011d3e [ 1] */,
+ 0x47520007 /* 00011d48 - 00011d4f [ 8] */,
+ 0x47568005 /* 00011d5a - 00011d5f [ 6] */,
+ 0x47598000 /* 00011d66 - 00011d66 [ 1] */,
+ 0x475a4000 /* 00011d69 - 00011d69 [ 1] */,
+ 0x4763c000 /* 00011d8f - 00011d8f [ 1] */,
+ 0x47648000 /* 00011d92 - 00011d92 [ 1] */,
+ 0x47664006 /* 00011d99 - 00011d9f [ 7] */,
+ 0x476a8135 /* 00011daa - 00011edf [ 310] */,
+ 0x47be4006 /* 00011ef9 - 00011eff [ 7] */,
+ 0x47c44000 /* 00011f11 - 00011f11 [ 1] */,
+ 0x47cec002 /* 00011f3b - 00011f3d [ 3] */,
+ 0x47d68055 /* 00011f5a - 00011faf [ 86] */,
+ 0x47ec400e /* 00011fb1 - 00011fbf [ 15] */,
+ 0x47fc800c /* 00011ff2 - 00011ffe [ 13] */,
+ 0x48e68065 /* 0001239a - 000123ff [ 102] */,
+ 0x491bc000 /* 0001246f - 0001246f [ 1] */,
+ 0x491d400a /* 00012475 - 0001247f [ 11] */,
+ 0x49510a4b /* 00012544 - 00012f8f [ 2636] */,
+ 0x4bfcc00c /* 00012ff3 - 00012fff [ 13] */,
+ 0x4d0c000f /* 00013430 - 0001343f [ 16] */,
+ 0x4d158fa9 /* 00013456 - 000143ff [ 4010] */,
+ 0x5191e1b8 /* 00014647 - 000167ff [ 8633] */,
+ 0x5a8e4006 /* 00016a39 - 00016a3f [ 7] */,
+ 0x5a97c000 /* 00016a5f - 00016a5f [ 1] */,
+ 0x5a9a8003 /* 00016a6a - 00016a6d [ 4] */,
+ 0x5aafc000 /* 00016abf - 00016abf [ 1] */,
+ 0x5ab28005 /* 00016aca - 00016acf [ 6] */,
+ 0x5abb8001 /* 00016aee - 00016aef [ 2] */,
+ 0x5abd8009 /* 00016af6 - 00016aff [ 10] */,
+ 0x5ad18009 /* 00016b46 - 00016b4f [ 10] */,
+ 0x5ad68000 /* 00016b5a - 00016b5a [ 1] */,
+ 0x5ad88000 /* 00016b62 - 00016b62 [ 1] */,
+ 0x5ade0004 /* 00016b78 - 00016b7c [ 5] */,
+ 0x5ae402af /* 00016b90 - 00016e3f [ 688] */,
+ 0x5ba6c064 /* 00016e9b - 00016eff [ 101] */,
+ 0x5bd2c003 /* 00016f4b - 00016f4e [ 4] */,
+ 0x5be20006 /* 00016f88 - 00016f8e [ 7] */,
+ 0x5be8003f /* 00016fa0 - 00016fdf [ 64] */,
+ 0x5bf9400a /* 00016fe5 - 00016fef [ 11] */,
+ 0x5bfc800d /* 00016ff2 - 00016fff [ 14] */,
+ 0x61fe0007 /* 000187f8 - 000187ff [ 8] */,
+ 0x63358029 /* 00018cd6 - 00018cff [ 42] */,
+ 0x634262e6 /* 00018d09 - 0001afef [ 8935] */,
+ 0x6bfd0000 /* 0001aff4 - 0001aff4 [ 1] */,
+ 0x6bff0000 /* 0001affc - 0001affc [ 1] */,
+ 0x6bffc000 /* 0001afff - 0001afff [ 1] */,
+ 0x6c48c00e /* 0001b123 - 0001b131 [ 15] */,
+ 0x6c4cc01c /* 0001b133 - 0001b14f [ 29] */,
+ 0x6c54c001 /* 0001b153 - 0001b154 [ 2] */,
+ 0x6c55800d /* 0001b156 - 0001b163 [ 14] */,
+ 0x6c5a0007 /* 0001b168 - 0001b16f [ 8] */,
+ 0x6cbf0903 /* 0001b2fc - 0001bbff [ 2308] */,
+ 0x6f1ac004 /* 0001bc6b - 0001bc6f [ 5] */,
+ 0x6f1f4002 /* 0001bc7d - 0001bc7f [ 3] */,
+ 0x6f224006 /* 0001bc89 - 0001bc8f [ 7] */,
+ 0x6f268001 /* 0001bc9a - 0001bc9b [ 2] */,
+ 0x6f28125f /* 0001bca0 - 0001ceff [ 4704] */,
+ 0x73cb8001 /* 0001cf2e - 0001cf2f [ 2] */,
+ 0x73d1c008 /* 0001cf47 - 0001cf4f [ 9] */,
+ 0x73f1003b /* 0001cfc4 - 0001cfff [ 60] */,
+ 0x743d8009 /* 0001d0f6 - 0001d0ff [ 10] */,
+ 0x7449c001 /* 0001d127 - 0001d128 [ 2] */,
+ 0x745cc007 /* 0001d173 - 0001d17a [ 8] */,
+ 0x747ac014 /* 0001d1eb - 0001d1ff [ 21] */,
+ 0x74918079 /* 0001d246 - 0001d2bf [ 122] */,
+ 0x74b5000b /* 0001d2d4 - 0001d2df [ 12] */,
+ 0x74bd000b /* 0001d2f4 - 0001d2ff [ 12] */,
+ 0x74d5c008 /* 0001d357 - 0001d35f [ 9] */,
+ 0x74de4086 /* 0001d379 - 0001d3ff [ 135] */,
+ 0x75154000 /* 0001d455 - 0001d455 [ 1] */,
+ 0x75274000 /* 0001d49d - 0001d49d [ 1] */,
+ 0x75280001 /* 0001d4a0 - 0001d4a1 [ 2] */,
+ 0x7528c001 /* 0001d4a3 - 0001d4a4 [ 2] */,
+ 0x7529c001 /* 0001d4a7 - 0001d4a8 [ 2] */,
+ 0x752b4000 /* 0001d4ad - 0001d4ad [ 1] */,
+ 0x752e8000 /* 0001d4ba - 0001d4ba [ 1] */,
+ 0x752f0000 /* 0001d4bc - 0001d4bc [ 1] */,
+ 0x75310000 /* 0001d4c4 - 0001d4c4 [ 1] */,
+ 0x75418000 /* 0001d506 - 0001d506 [ 1] */,
+ 0x7542c001 /* 0001d50b - 0001d50c [ 2] */,
+ 0x75454000 /* 0001d515 - 0001d515 [ 1] */,
+ 0x75474000 /* 0001d51d - 0001d51d [ 1] */,
+ 0x754e8000 /* 0001d53a - 0001d53a [ 1] */,
+ 0x754fc000 /* 0001d53f - 0001d53f [ 1] */,
+ 0x75514000 /* 0001d545 - 0001d545 [ 1] */,
+ 0x7551c002 /* 0001d547 - 0001d549 [ 3] */,
+ 0x75544000 /* 0001d551 - 0001d551 [ 1] */,
+ 0x75a98001 /* 0001d6a6 - 0001d6a7 [ 2] */,
+ 0x75f30001 /* 0001d7cc - 0001d7cd [ 2] */,
+ 0x76a3000e /* 0001da8c - 0001da9a [ 15] */,
+ 0x76a80000 /* 0001daa0 - 0001daa0 [ 1] */,
+ 0x76ac044f /* 0001dab0 - 0001deff [ 1104] */,
+ 0x77c7c005 /* 0001df1f - 0001df24 [ 6] */,
+ 0x77cac0d4 /* 0001df2b - 0001dfff [ 213] */,
+ 0x7801c000 /* 0001e007 - 0001e007 [ 1] */,
+ 0x78064001 /* 0001e019 - 0001e01a [ 2] */,
+ 0x78088000 /* 0001e022 - 0001e022 [ 1] */,
+ 0x78094000 /* 0001e025 - 0001e025 [ 1] */,
+ 0x780ac004 /* 0001e02b - 0001e02f [ 5] */,
+ 0x781b8020 /* 0001e06e - 0001e08e [ 33] */,
+ 0x7824006f /* 0001e090 - 0001e0ff [ 112] */,
+ 0x784b4002 /* 0001e12d - 0001e12f [ 3] */,
+ 0x784f8001 /* 0001e13e - 0001e13f [ 2] */,
+ 0x78528003 /* 0001e14a - 0001e14d [ 4] */,
+ 0x7854013f /* 0001e150 - 0001e28f [ 320] */,
+ 0x78abc010 /* 0001e2af - 0001e2bf [ 17] */,
+ 0x78be8004 /* 0001e2fa - 0001e2fe [ 5] */,
+ 0x78c001cf /* 0001e300 - 0001e4cf [ 464] */,
+ 0x793e82e5 /* 0001e4fa - 0001e7df [ 742] */,
+ 0x79f9c000 /* 0001e7e7 - 0001e7e7 [ 1] */,
+ 0x79fb0000 /* 0001e7ec - 0001e7ec [ 1] */,
+ 0x79fbc000 /* 0001e7ef - 0001e7ef [ 1] */,
+ 0x79ffc000 /* 0001e7ff - 0001e7ff [ 1] */,
+ 0x7a314001 /* 0001e8c5 - 0001e8c6 [ 2] */,
+ 0x7a35c028 /* 0001e8d7 - 0001e8ff [ 41] */,
+ 0x7a530003 /* 0001e94c - 0001e94f [ 4] */,
+ 0x7a568003 /* 0001e95a - 0001e95d [ 4] */,
+ 0x7a580310 /* 0001e960 - 0001ec70 [ 785] */,
+ 0x7b2d404b /* 0001ecb5 - 0001ed00 [ 76] */,
+ 0x7b4f80c1 /* 0001ed3e - 0001edff [ 194] */,
+ 0x7b810000 /* 0001ee04 - 0001ee04 [ 1] */,
+ 0x7b880000 /* 0001ee20 - 0001ee20 [ 1] */,
+ 0x7b88c000 /* 0001ee23 - 0001ee23 [ 1] */,
+ 0x7b894001 /* 0001ee25 - 0001ee26 [ 2] */,
+ 0x7b8a0000 /* 0001ee28 - 0001ee28 [ 1] */,
+ 0x7b8cc000 /* 0001ee33 - 0001ee33 [ 1] */,
+ 0x7b8e0000 /* 0001ee38 - 0001ee38 [ 1] */,
+ 0x7b8e8000 /* 0001ee3a - 0001ee3a [ 1] */,
+ 0x7b8f0005 /* 0001ee3c - 0001ee41 [ 6] */,
+ 0x7b90c003 /* 0001ee43 - 0001ee46 [ 4] */,
+ 0x7b920000 /* 0001ee48 - 0001ee48 [ 1] */,
+ 0x7b928000 /* 0001ee4a - 0001ee4a [ 1] */,
+ 0x7b930000 /* 0001ee4c - 0001ee4c [ 1] */,
+ 0x7b940000 /* 0001ee50 - 0001ee50 [ 1] */,
+ 0x7b94c000 /* 0001ee53 - 0001ee53 [ 1] */,
+ 0x7b954001 /* 0001ee55 - 0001ee56 [ 2] */,
+ 0x7b960000 /* 0001ee58 - 0001ee58 [ 1] */,
+ 0x7b968000 /* 0001ee5a - 0001ee5a [ 1] */,
+ 0x7b970000 /* 0001ee5c - 0001ee5c [ 1] */,
+ 0x7b978000 /* 0001ee5e - 0001ee5e [ 1] */,
+ 0x7b980000 /* 0001ee60 - 0001ee60 [ 1] */,
+ 0x7b98c000 /* 0001ee63 - 0001ee63 [ 1] */,
+ 0x7b994001 /* 0001ee65 - 0001ee66 [ 2] */,
+ 0x7b9ac000 /* 0001ee6b - 0001ee6b [ 1] */,
+ 0x7b9cc000 /* 0001ee73 - 0001ee73 [ 1] */,
+ 0x7b9e0000 /* 0001ee78 - 0001ee78 [ 1] */,
+ 0x7b9f4000 /* 0001ee7d - 0001ee7d [ 1] */,
+ 0x7b9fc000 /* 0001ee7f - 0001ee7f [ 1] */,
+ 0x7ba28000 /* 0001ee8a - 0001ee8a [ 1] */,
+ 0x7ba70004 /* 0001ee9c - 0001eea0 [ 5] */,
+ 0x7ba90000 /* 0001eea4 - 0001eea4 [ 1] */,
+ 0x7baa8000 /* 0001eeaa - 0001eeaa [ 1] */,
+ 0x7baf0033 /* 0001eebc - 0001eeef [ 52] */,
+ 0x7bbc810d /* 0001eef2 - 0001efff [ 270] */,
+ 0x7c0b0003 /* 0001f02c - 0001f02f [ 4] */,
+ 0x7c25000b /* 0001f094 - 0001f09f [ 12] */,
+ 0x7c2bc001 /* 0001f0af - 0001f0b0 [ 2] */,
+ 0x7c300000 /* 0001f0c0 - 0001f0c0 [ 1] */,
+ 0x7c340000 /* 0001f0d0 - 0001f0d0 [ 1] */,
+ 0x7c3d8009 /* 0001f0f6 - 0001f0ff [ 10] */,
+ 0x7c6b8037 /* 0001f1ae - 0001f1e5 [ 56] */,
+ 0x7c80c00c /* 0001f203 - 0001f20f [ 13] */,
+ 0x7c8f0003 /* 0001f23c - 0001f23f [ 4] */,
+ 0x7c924006 /* 0001f249 - 0001f24f [ 7] */,
+ 0x7c94800d /* 0001f252 - 0001f25f [ 14] */,
+ 0x7c998099 /* 0001f266 - 0001f2ff [ 154] */,
+ 0x7db60003 /* 0001f6d8 - 0001f6db [ 4] */,
+ 0x7dbb4002 /* 0001f6ed - 0001f6ef [ 3] */,
+ 0x7dbf4002 /* 0001f6fd - 0001f6ff [ 3] */,
+ 0x7dddc003 /* 0001f777 - 0001f77a [ 4] */,
+ 0x7df68005 /* 0001f7da - 0001f7df [ 6] */,
+ 0x7dfb0003 /* 0001f7ec - 0001f7ef [ 4] */,
+ 0x7dfc400e /* 0001f7f1 - 0001f7ff [ 15] */,
+ 0x7e030003 /* 0001f80c - 0001f80f [ 4] */,
+ 0x7e120007 /* 0001f848 - 0001f84f [ 8] */,
+ 0x7e168005 /* 0001f85a - 0001f85f [ 6] */,
+ 0x7e220007 /* 0001f888 - 0001f88f [ 8] */,
+ 0x7e2b8001 /* 0001f8ae - 0001f8af [ 2] */,
+ 0x7e2c804d /* 0001f8b2 - 0001f8ff [ 78] */,
+ 0x7e95000b /* 0001fa54 - 0001fa5f [ 12] */,
+ 0x7e9b8001 /* 0001fa6e - 0001fa6f [ 2] */,
+ 0x7e9f4002 /* 0001fa7d - 0001fa7f [ 3] */,
+ 0x7ea24006 /* 0001fa89 - 0001fa8f [ 7] */,
+ 0x7eaf8000 /* 0001fabe - 0001fabe [ 1] */,
+ 0x7eb18007 /* 0001fac6 - 0001facd [ 8] */,
+ 0x7eb70003 /* 0001fadc - 0001fadf [ 4] */,
+ 0x7eba4006 /* 0001fae9 - 0001faef [ 7] */,
+ 0x7ebe4006 /* 0001faf9 - 0001faff [ 7] */,
+ 0x7ee4c000 /* 0001fb93 - 0001fb93 [ 1] */,
+ 0x7ef2c024 /* 0001fbcb - 0001fbef [ 37] */,
+ 0x7efe8405 /* 0001fbfa - 0001ffff [ 1030] */,
+ 0xa9b8001f /* 0002a6e0 - 0002a6ff [ 32] */,
+ 0xadce8005 /* 0002b73a - 0002b73f [ 6] */,
+ 0xae078001 /* 0002b81e - 0002b81f [ 2] */,
+ 0xb3a8800d /* 0002cea2 - 0002ceaf [ 14] */,
+ 0xbaf8400e /* 0002ebe1 - 0002ebef [ 15] */,
+ 0xbb9789a1 /* 0002ee5e - 0002f7ff [ 2466] */,
+ 0xbe8785e1 /* 0002fa1e - 0002ffff [ 1506] */,
+ 0xc4d2c004 /* 0003134b - 0003134f [ 5] */};
+/// Returns whether the code unit needs to be escaped.
+///
/// At the end of the valid Unicode code points space a lot of code points are
/// either reserved or a noncharacter. Adding all these entries to the
-/// lookup table would add 446 entries to the table (in Unicode 14).
-/// Instead the only the start of the region is stored, every code point in
-/// this region needs to be escaped.
-inline constexpr uint32_t __unallocated_region_lower_bound = 0x000323b0;
+/// lookup table would greatly increase the size of the table. Instead these
+/// entries are manually processed. In this large area of reserved code points,
+/// there is a small area of extended graphemes that should not be escaped
+/// unconditionally. This is also manually coded. See the generation script for
+/// more details.
-/// Returns whether the code unit needs to be escaped.
///
-/// \pre The code point is a valid Unicode code point.
+/// \\pre The code point is a valid Unicode code point.
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool __needs_escape(const char32_t __code_point) noexcept {
- // Since __unallocated_region_lower_bound contains the unshifted range do the
- // comparison without shifting.
- if (__code_point >= __unallocated_region_lower_bound)
+
+ // The entries in the gap at the end.
+ if(__code_point >= 0x000e0100 && __code_point <= 0x000e01ef)
+ return false;
+
+ // The entries at the end.
+ if (__code_point >= 0x000323b0)
return true;
- ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 11) | 0x7ffu) - __entries;
+ ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 14) | 0x3fffu) - __entries;
if (__i == 0)
return false;
--__i;
- uint32_t __upper_bound = (__entries[__i] >> 11) + (__entries[__i] & 0x7ffu);
+ uint32_t __upper_bound = (__entries[__i] >> 14) + (__entries[__i] & 0x3fffu);
return __code_point <= __upper_bound;
}
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/format_arg.h b/contrib/libs/cxxsupp/libcxx/include/__format/format_arg.h
index 4924e5fb325..aa02f81dc40 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__format/format_arg.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/format_arg.h
@@ -19,6 +19,7 @@
#include <__fwd/format.h>
#include <__memory/addressof.h>
#include <__type_traits/conditional.h>
+#include <__type_traits/remove_const.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <__utility/unreachable.h>
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/format_functions.h b/contrib/libs/cxxsupp/libcxx/include/__format/format_functions.h
index c7810140105..d14b49aff14 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__format/format_functions.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/format_functions.h
@@ -66,14 +66,13 @@ using wformat_args = basic_format_args<wformat_context>;
# endif
template <class _Context = format_context, class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI __format_arg_store<_Context, _Args...> make_format_args(_Args&... __args) {
+[[nodiscard]] _LIBCPP_HIDE_FROM_ABI __format_arg_store<_Context, _Args...> make_format_args(_Args&... __args) {
return std::__format_arg_store<_Context, _Args...>(__args...);
}
# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
template <class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI __format_arg_store<wformat_context, _Args...>
-make_wformat_args(_Args&... __args) {
+[[nodiscard]] _LIBCPP_HIDE_FROM_ABI __format_arg_store<wformat_context, _Args...> make_wformat_args(_Args&... __args) {
return std::__format_arg_store<wformat_context, _Args...>(__args...);
}
# endif
@@ -452,8 +451,7 @@ format_to(_OutIt __out_it, wformat_string<_Args...> __fmt, _Args&&... __args) {
// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup
// fires too eagerly, see http://llvm.org/PR61563.
template <class = void>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI string
-vformat(string_view __fmt, format_args __args) {
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI string vformat(string_view __fmt, format_args __args) {
string __res;
std::vformat_to(std::back_inserter(__res), __fmt, __args);
return __res;
@@ -463,7 +461,7 @@ vformat(string_view __fmt, format_args __args) {
// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup
// fires too eagerly, see http://llvm.org/PR61563.
template <class = void>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI wstring
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI wstring
vformat(wstring_view __fmt, wformat_args __args) {
wstring __res;
std::vformat_to(std::back_inserter(__res), __fmt, __args);
@@ -472,14 +470,14 @@ vformat(wstring_view __fmt, wformat_args __args) {
# endif
template <class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI string
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI string
format(format_string<_Args...> __fmt, _Args&&... __args) {
return std::vformat(__fmt.get(), std::make_format_args(__args...));
}
# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
template <class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI wstring
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI wstring
format(wformat_string<_Args...> __fmt, _Args&&... __args) {
return std::vformat(__fmt.get(), std::make_wformat_args(__args...));
}
@@ -520,14 +518,14 @@ _LIBCPP_HIDE_FROM_ABI size_t __vformatted_size(basic_string_view<_CharT> __fmt,
}
template <class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t
formatted_size(format_string<_Args...> __fmt, _Args&&... __args) {
return std::__vformatted_size(__fmt.get(), basic_format_args{std::make_format_args(__args...)});
}
# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
template <class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t
formatted_size(wformat_string<_Args...> __fmt, _Args&&... __args) {
return std::__vformatted_size(__fmt.get(), basic_format_args{std::make_wformat_args(__args...)});
}
@@ -585,7 +583,7 @@ format_to(_OutIt __out_it, locale __loc, wformat_string<_Args...> __fmt, _Args&&
// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup
// fires too eagerly, see http://llvm.org/PR61563.
template <class = void>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI string
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI string
vformat(locale __loc, string_view __fmt, format_args __args) {
string __res;
std::vformat_to(std::back_inserter(__res), std::move(__loc), __fmt, __args);
@@ -596,7 +594,7 @@ vformat(locale __loc, string_view __fmt, format_args __args) {
// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup
// fires too eagerly, see http://llvm.org/PR61563.
template <class = void>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI wstring
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI wstring
vformat(locale __loc, wstring_view __fmt, wformat_args __args) {
wstring __res;
std::vformat_to(std::back_inserter(__res), std::move(__loc), __fmt, __args);
@@ -605,14 +603,14 @@ vformat(locale __loc, wstring_view __fmt, wformat_args __args) {
# endif
template <class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI string
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI string
format(locale __loc, format_string<_Args...> __fmt, _Args&&... __args) {
return std::vformat(std::move(__loc), __fmt.get(), std::make_format_args(__args...));
}
# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
template <class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI wstring
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI wstring
format(locale __loc, wformat_string<_Args...> __fmt, _Args&&... __args) {
return std::vformat(std::move(__loc), __fmt.get(), std::make_wformat_args(__args...));
}
@@ -658,14 +656,14 @@ _LIBCPP_HIDE_FROM_ABI size_t __vformatted_size(locale __loc, basic_string_view<_
}
template <class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t
formatted_size(locale __loc, format_string<_Args...> __fmt, _Args&&... __args) {
return std::__vformatted_size(std::move(__loc), __fmt.get(), basic_format_args{std::make_format_args(__args...)});
}
# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
template <class... _Args>
-_LIBCPP_NODISCARD_EXT _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t
+[[nodiscard]] _LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t
formatted_size(locale __loc, wformat_string<_Args...> __fmt, _Args&&... __args) {
return std::__vformatted_size(std::move(__loc), __fmt.get(), basic_format_args{std::make_wformat_args(__args...)});
}
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/formatter_floating_point.h b/contrib/libs/cxxsupp/libcxx/include/__format/formatter_floating_point.h
index 1d94cc349c0..fa42ba203b0 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__format/formatter_floating_point.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/formatter_floating_point.h
@@ -690,7 +690,7 @@ __format_floating_point(_Tp __value, _FormatContext& __ctx, __format_spec::__par
// Let P equal the precision if nonzero, 6 if the precision is not
// specified, or 1 if the precision is 0. Then, if a conversion with
// style E would have an exponent of X:
- int __p = std::max(1, (__specs.__has_precision() ? __specs.__precision_ : 6));
+ int __p = std::max<int>(1, (__specs.__has_precision() ? __specs.__precision_ : 6));
if (__result.__exponent == __result.__last)
// if P > X >= -4, the conversion is with style f or F and precision P - 1 - X.
// By including the radix point it calculates P - (1 + X)
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/formatter_output.h b/contrib/libs/cxxsupp/libcxx/include/__format/formatter_output.h
index d5038eb158b..1498f64c4ae 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__format/formatter_output.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/formatter_output.h
@@ -100,8 +100,8 @@ __padding_size(size_t __size, size_t __width, __format_spec::__alignment __align
///
/// This uses a "mass output function" of __format::__output_buffer when possible.
template <__fmt_char_type _CharT, __fmt_char_type _OutCharT = _CharT>
-_LIBCPP_HIDE_FROM_ABI auto __copy(basic_string_view<_CharT> __str, output_iterator<const _OutCharT&> auto __out_it)
- -> decltype(__out_it) {
+_LIBCPP_HIDE_FROM_ABI auto
+__copy(basic_string_view<_CharT> __str, output_iterator<const _OutCharT&> auto __out_it) -> decltype(__out_it) {
if constexpr (std::same_as<decltype(__out_it), std::back_insert_iterator<__format::__output_buffer<_OutCharT>>>) {
__out_it.__get_container()->__copy(__str);
return __out_it;
@@ -116,16 +116,16 @@ _LIBCPP_HIDE_FROM_ABI auto __copy(basic_string_view<_CharT> __str, output_iterat
template <contiguous_iterator _Iterator,
__fmt_char_type _CharT = typename iterator_traits<_Iterator>::value_type,
__fmt_char_type _OutCharT = _CharT>
-_LIBCPP_HIDE_FROM_ABI auto __copy(_Iterator __first, _Iterator __last, output_iterator<const _OutCharT&> auto __out_it)
- -> decltype(__out_it) {
+_LIBCPP_HIDE_FROM_ABI auto
+__copy(_Iterator __first, _Iterator __last, output_iterator<const _OutCharT&> auto __out_it) -> decltype(__out_it) {
return __formatter::__copy(basic_string_view{__first, __last}, std::move(__out_it));
}
template <contiguous_iterator _Iterator,
__fmt_char_type _CharT = typename iterator_traits<_Iterator>::value_type,
__fmt_char_type _OutCharT = _CharT>
-_LIBCPP_HIDE_FROM_ABI auto __copy(_Iterator __first, size_t __n, output_iterator<const _OutCharT&> auto __out_it)
- -> decltype(__out_it) {
+_LIBCPP_HIDE_FROM_ABI auto
+__copy(_Iterator __first, size_t __n, output_iterator<const _OutCharT&> auto __out_it) -> decltype(__out_it) {
return __formatter::__copy(basic_string_view{std::to_address(__first), __n}, std::move(__out_it));
}
@@ -136,9 +136,11 @@ template <contiguous_iterator _Iterator,
__fmt_char_type _CharT = typename iterator_traits<_Iterator>::value_type,
__fmt_char_type _OutCharT = _CharT,
class _UnaryOperation>
-_LIBCPP_HIDE_FROM_ABI auto __transform(
- _Iterator __first, _Iterator __last, output_iterator<const _OutCharT&> auto __out_it, _UnaryOperation __operation)
- -> decltype(__out_it) {
+_LIBCPP_HIDE_FROM_ABI auto
+__transform(_Iterator __first,
+ _Iterator __last,
+ output_iterator<const _OutCharT&> auto __out_it,
+ _UnaryOperation __operation) -> decltype(__out_it) {
if constexpr (std::same_as<decltype(__out_it), std::back_insert_iterator<__format::__output_buffer<_OutCharT>>>) {
__out_it.__get_container()->__transform(__first, __last, std::move(__operation));
return __out_it;
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/indic_conjunct_break_table.h b/contrib/libs/cxxsupp/libcxx/include/__format/indic_conjunct_break_table.h
new file mode 100644
index 00000000000..44521d27498
--- /dev/null
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/indic_conjunct_break_table.h
@@ -0,0 +1,350 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// WARNING, this entire header is generated by
+// utils/generate_indic_conjunct_break_table.py
+// DO NOT MODIFY!
+
+// UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+//
+// See Terms of Use <https://www.unicode.org/copyright.html>
+// for definitions of Unicode Inc.'s Data Files and Software.
+//
+// NOTICE TO USER: Carefully read the following legal agreement.
+// BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
+// DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
+// YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+// TERMS AND CONDITIONS OF THIS AGREEMENT.
+// IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
+// THE DATA FILES OR SOFTWARE.
+//
+// COPYRIGHT AND PERMISSION NOTICE
+//
+// Copyright (c) 1991-2022 Unicode, Inc. All rights reserved.
+// Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of the Unicode data files and any associated documentation
+// (the "Data Files") or Unicode software and any associated documentation
+// (the "Software") to deal in the Data Files or Software
+// without restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, and/or sell copies of
+// the Data Files or Software, and to permit persons to whom the Data Files
+// or Software are furnished to do so, provided that either
+// (a) this copyright and permission notice appear with all copies
+// of the Data Files or Software, or
+// (b) this copyright and permission notice appear in associated
+// Documentation.
+//
+// THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+// NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+// DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+// PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale,
+// use or other dealings in these Data Files or Software without prior
+// written authorization of the copyright holder.
+
+#ifndef _LIBCPP___FORMAT_INDIC_CONJUNCT_BREAK_TABLE_H
+#define _LIBCPP___FORMAT_INDIC_CONJUNCT_BREAK_TABLE_H
+
+#include <__algorithm/ranges_upper_bound.h>
+#include <__config>
+#include <__iterator/access.h>
+#include <cstddef>
+#include <cstdint>
+
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+# pragma GCC system_header
+#endif
+
+_LIBCPP_BEGIN_NAMESPACE_STD
+
+#if _LIBCPP_STD_VER >= 20
+
+namespace __indic_conjunct_break {
+
+enum class __property : uint8_t {
+ // Values generated from the data files.
+ __Consonant,
+ __Extend,
+ __Linker,
+
+ // The code unit has none of above properties.
+ __none
+};
+
+/// The entries of the indic conjunct break property table.
+///
+/// The data is generated from
+/// - https://www.unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt
+///
+/// The data has 3 values
+/// - bits [0, 1] The property. One of the values generated from the datafiles
+/// of \ref __property
+/// - bits [2, 10] The size of the range.
+/// - bits [11, 31] The lower bound code point of the range. The upper bound of
+/// the range is lower bound + size.
+///
+/// The 9 bits for the size allow a maximum range of 512 elements. Some ranges
+/// in the Unicode tables are larger. They are stored in multiple consecutive
+/// ranges in the data table. An alternative would be to store the sizes in a
+/// separate 16-bit value. The original MSVC STL code had such an approach, but
+/// this approach uses less space for the data and is about 4% faster in the
+/// following benchmark.
+/// libcxx/benchmarks/std_format_spec_string_unicode.bench.cpp
+// clang-format off
+_LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[201] = {
+ 0x00180139,
+ 0x001a807d,
+ 0x00241811,
+ 0x002c88b1,
+ 0x002df801,
+ 0x002e0805,
+ 0x002e2005,
+ 0x002e3801,
+ 0x00308029,
+ 0x00325851,
+ 0x00338001,
+ 0x0036b019,
+ 0x0036f815,
+ 0x00373805,
+ 0x0037500d,
+ 0x00388801,
+ 0x00398069,
+ 0x003f5821,
+ 0x003fe801,
+ 0x0040b00d,
+ 0x0040d821,
+ 0x00412809,
+ 0x00414811,
+ 0x0042c809,
+ 0x0044c01d,
+ 0x0046505d,
+ 0x00471871,
+ 0x0048a890,
+ 0x0049e001,
+ 0x004a6802,
+ 0x004a880d,
+ 0x004ac01c,
+ 0x004bc01c,
+ 0x004ca84c,
+ 0x004d5018,
+ 0x004d9000,
+ 0x004db00c,
+ 0x004de001,
+ 0x004e6802,
+ 0x004ee004,
+ 0x004ef800,
+ 0x004f8004,
+ 0x004ff001,
+ 0x0051e001,
+ 0x0054a84c,
+ 0x00555018,
+ 0x00559004,
+ 0x0055a810,
+ 0x0055e001,
+ 0x00566802,
+ 0x0057c800,
+ 0x0058a84c,
+ 0x00595018,
+ 0x00599004,
+ 0x0059a810,
+ 0x0059e001,
+ 0x005a6802,
+ 0x005ae004,
+ 0x005af800,
+ 0x005b8800,
+ 0x0060a84c,
+ 0x0061503c,
+ 0x0061e001,
+ 0x00626802,
+ 0x0062a805,
+ 0x0062c008,
+ 0x0065e001,
+ 0x0068a894,
+ 0x0069d805,
+ 0x006a6802,
+ 0x0071c009,
+ 0x0072400d,
+ 0x0075c009,
+ 0x0076400d,
+ 0x0078c005,
+ 0x0079a801,
+ 0x0079b801,
+ 0x0079c801,
+ 0x007b8805,
+ 0x007ba001,
+ 0x007bd00d,
+ 0x007c0001,
+ 0x007c1009,
+ 0x007c3005,
+ 0x007e3001,
+ 0x0081b801,
+ 0x0081c805,
+ 0x00846801,
+ 0x009ae809,
+ 0x00b8a001,
+ 0x00be9001,
+ 0x00bee801,
+ 0x00c54801,
+ 0x00c9c809,
+ 0x00d0b805,
+ 0x00d30001,
+ 0x00d3a81d,
+ 0x00d3f801,
+ 0x00d58035,
+ 0x00d5f83d,
+ 0x00d9a001,
+ 0x00db5821,
+ 0x00dd5801,
+ 0x00df3001,
+ 0x00e1b801,
+ 0x00e68009,
+ 0x00e6a031,
+ 0x00e71019,
+ 0x00e76801,
+ 0x00e7a001,
+ 0x00e7c005,
+ 0x00ee00fd,
+ 0x01006801,
+ 0x01068031,
+ 0x01070801,
+ 0x0107282d,
+ 0x01677809,
+ 0x016bf801,
+ 0x016f007d,
+ 0x01815015,
+ 0x0184c805,
+ 0x05337801,
+ 0x0533a025,
+ 0x0534f005,
+ 0x05378005,
+ 0x05416001,
+ 0x05470045,
+ 0x05495809,
+ 0x054d9801,
+ 0x05558001,
+ 0x05559009,
+ 0x0555b805,
+ 0x0555f005,
+ 0x05560801,
+ 0x0557b001,
+ 0x055f6801,
+ 0x07d8f001,
+ 0x07f1003d,
+ 0x080fe801,
+ 0x08170001,
+ 0x081bb011,
+ 0x08506801,
+ 0x08507801,
+ 0x0851c009,
+ 0x0851f801,
+ 0x08572805,
+ 0x0869200d,
+ 0x08755805,
+ 0x0877e809,
+ 0x087a3029,
+ 0x087c100d,
+ 0x08838001,
+ 0x0883f801,
+ 0x0885d001,
+ 0x08880009,
+ 0x08899805,
+ 0x088b9801,
+ 0x088e5001,
+ 0x0891b001,
+ 0x08974805,
+ 0x0899d805,
+ 0x089b3019,
+ 0x089b8011,
+ 0x08a23001,
+ 0x08a2f001,
+ 0x08a61801,
+ 0x08ae0001,
+ 0x08b5b801,
+ 0x08b95801,
+ 0x08c1d001,
+ 0x08c9f001,
+ 0x08ca1801,
+ 0x08d1a001,
+ 0x08d23801,
+ 0x08d4c801,
+ 0x08ea1001,
+ 0x08ea2005,
+ 0x08ecb801,
+ 0x08fa1001,
+ 0x0b578011,
+ 0x0b598019,
+ 0x0de4f001,
+ 0x0e8b2801,
+ 0x0e8b3809,
+ 0x0e8b7011,
+ 0x0e8bd81d,
+ 0x0e8c2819,
+ 0x0e8d500d,
+ 0x0e921009,
+ 0x0f000019,
+ 0x0f004041,
+ 0x0f00d819,
+ 0x0f011805,
+ 0x0f013011,
+ 0x0f047801,
+ 0x0f098019,
+ 0x0f157001,
+ 0x0f17600d,
+ 0x0f27600d,
+ 0x0f468019,
+ 0x0f4a2019};
+// clang-format on
+
+/// Returns the indic conjuct break property of a code point.
+[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __property __get_property(const char32_t __code_point) noexcept {
+ // The algorithm searches for the upper bound of the range and, when found,
+ // steps back one entry. This algorithm is used since the code point can be
+ // anywhere in the range. After a lower bound is found the next step is to
+ // compare whether the code unit is indeed in the range.
+ //
+ // Since the entry contains a code unit, size, and property the code point
+ // being sought needs to be adjusted. Just shifting the code point to the
+ // proper position doesn't work; suppose an entry has property 0, size 1,
+ // and lower bound 3. This results in the entry 0x1810.
+ // When searching for code point 3 it will search for 0x1800, find 0x1810
+ // and moves to the previous entry. Thus the lower bound value will never
+ // be found.
+ // The simple solution is to set the bits belonging to the property and
+ // size. Then the upper bound for code point 3 will return the entry after
+ // 0x1810. After moving to the previous entry the algorithm arrives at the
+ // correct entry.
+ ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 11) | 0x7ffu) - __entries;
+ if (__i == 0)
+ return __property::__none;
+
+ --__i;
+ uint32_t __upper_bound = (__entries[__i] >> 11) + ((__entries[__i] >> 2) & 0b1'1111'1111);
+ if (__code_point <= __upper_bound)
+ return static_cast<__property>(__entries[__i] & 0b11);
+
+ return __property::__none;
+}
+
+} // namespace __indic_conjunct_break
+
+#endif //_LIBCPP_STD_VER >= 20
+
+_LIBCPP_END_NAMESPACE_STD
+
+#endif // _LIBCPP___FORMAT_INDIC_CONJUNCT_BREAK_TABLE_H
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/parser_std_format_spec.h b/contrib/libs/cxxsupp/libcxx/include/__format/parser_std_format_spec.h
index 9818f37b518..150bdde89f3 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__format/parser_std_format_spec.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/parser_std_format_spec.h
@@ -1155,8 +1155,8 @@ __estimate_column_width(basic_string_view<_CharT> __str, size_t __maximum, __col
// When Unicode isn't supported assume ASCII and every code unit is one code
// point. In ASCII the estimated column width is always one. Thus there's no
// need for rounding.
- size_t __width_ = std::min(__str.size(), __maximum);
- return {__width_, __str.begin() + __width_};
+ size_t __width = std::min(__str.size(), __maximum);
+ return {__width, __str.begin() + __width};
}
# endif // !defined(_LIBCPP_HAS_NO_UNICODE)
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/unicode.h b/contrib/libs/cxxsupp/libcxx/include/__format/unicode.h
index 40067ca3448..de7d0fea1df 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__format/unicode.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/unicode.h
@@ -15,8 +15,10 @@
#include <__concepts/same_as.h>
#include <__config>
#include <__format/extended_grapheme_cluster_table.h>
+#include <__format/indic_conjunct_break_table.h>
#include <__iterator/concepts.h>
#include <__iterator/readable_traits.h> // iter_value_t
+#include <__utility/unreachable.h>
#include <string_view>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -292,84 +294,231 @@ private:
};
# endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
-_LIBCPP_HIDE_FROM_ABI constexpr bool __at_extended_grapheme_cluster_break(
- bool& __ri_break_allowed,
- bool __has_extened_pictographic,
- __extended_grapheme_custer_property_boundary::__property __prev,
- __extended_grapheme_custer_property_boundary::__property __next) {
- using __extended_grapheme_custer_property_boundary::__property;
+// State machine to implement the Extended Grapheme Cluster Boundary
+//
+// The exact rules may change between Unicode versions.
+// This implements the extended rules see
+// https://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries
+class __extended_grapheme_cluster_break {
+ using __EGC_property = __extended_grapheme_custer_property_boundary::__property;
+ using __inCB_property = __indic_conjunct_break::__property;
- __has_extened_pictographic |= __prev == __property::__Extended_Pictographic;
+public:
+ _LIBCPP_HIDE_FROM_ABI constexpr explicit __extended_grapheme_cluster_break(char32_t __first_code_point)
+ : __prev_code_point_(__first_code_point),
+ __prev_property_(__extended_grapheme_custer_property_boundary::__get_property(__first_code_point)) {
+ // Initializes the active rule.
+ if (__prev_property_ == __EGC_property::__Extended_Pictographic)
+ __active_rule_ = __rule::__GB11_emoji;
+ else if (__prev_property_ == __EGC_property::__Regional_Indicator)
+ __active_rule_ = __rule::__GB12_GB13_regional_indicator;
+ else if (__indic_conjunct_break::__get_property(__first_code_point) == __inCB_property::__Consonant)
+ __active_rule_ = __rule::__GB9c_indic_conjunct_break;
+ }
- // https://www.unicode.org/reports/tr29/tr29-39.html#Grapheme_Cluster_Boundary_Rules
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(char32_t __next_code_point) {
+ __EGC_property __next_property = __extended_grapheme_custer_property_boundary::__get_property(__next_code_point);
+ bool __result = __evaluate(__next_code_point, __next_property);
+ __prev_code_point_ = __next_code_point;
+ __prev_property_ = __next_property;
+ return __result;
+ }
- // *** Break at the start and end of text, unless the text is empty. ***
+ // The code point whose break propery are considered during the next
+ // evaluation cyle.
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr char32_t __current_code_point() const { return __prev_code_point_; }
- _LIBCPP_ASSERT_INTERNAL(__prev != __property::__sot, "should be handled in the constructor"); // GB1
- _LIBCPP_ASSERT_INTERNAL(__prev != __property::__eot, "should be handled by our caller"); // GB2
+private:
+ // The naming of the identifiers matches the Unicode standard.
+ // NOLINTBEGIN(readability-identifier-naming)
+
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool
+ __evaluate(char32_t __next_code_point, __EGC_property __next_property) {
+ switch (__active_rule_) {
+ case __rule::__none:
+ return __evaluate_none(__next_code_point, __next_property);
+ case __rule::__GB9c_indic_conjunct_break:
+ return __evaluate_GB9c_indic_conjunct_break(__next_code_point, __next_property);
+ case __rule::__GB11_emoji:
+ return __evaluate_GB11_emoji(__next_code_point, __next_property);
+ case __rule::__GB12_GB13_regional_indicator:
+ return __evaluate_GB12_GB13_regional_indicator(__next_code_point, __next_property);
+ }
+ __libcpp_unreachable();
+ }
- // *** Do not break between a CR and LF. Otherwise, break before and after controls. ***
- if (__prev == __property::__CR && __next == __property::__LF) // GB3
- return false;
+ _LIBCPP_HIDE_FROM_ABI constexpr bool __evaluate_none(char32_t __next_code_point, __EGC_property __next_property) {
+ // *** Break at the start and end of text, unless the text is empty. ***
- if (__prev == __property::__Control || __prev == __property::__CR || __prev == __property::__LF) // GB4
- return true;
+ _LIBCPP_ASSERT_INTERNAL(__prev_property_ != __EGC_property::__sot, "should be handled in the constructor"); // GB1
+ _LIBCPP_ASSERT_INTERNAL(__prev_property_ != __EGC_property::__eot, "should be handled by our caller"); // GB2
- if (__next == __property::__Control || __next == __property::__CR || __next == __property::__LF) // GB5
- return true;
+ // *** Do not break between a CR and LF. Otherwise, break before and after controls. ***
+ if (__prev_property_ == __EGC_property::__CR && __next_property == __EGC_property::__LF) // GB3
+ return false;
- // *** Do not break Hangul syllable sequences. ***
- if (__prev == __property::__L && (__next == __property::__L || __next == __property::__V ||
- __next == __property::__LV || __next == __property::__LVT)) // GB6
- return false;
+ if (__prev_property_ == __EGC_property::__Control || __prev_property_ == __EGC_property::__CR ||
+ __prev_property_ == __EGC_property::__LF) // GB4
+ return true;
- if ((__prev == __property::__LV || __prev == __property::__V) &&
- (__next == __property::__V || __next == __property::__T)) // GB7
- return false;
+ if (__next_property == __EGC_property::__Control || __next_property == __EGC_property::__CR ||
+ __next_property == __EGC_property::__LF) // GB5
+ return true;
- if ((__prev == __property::__LVT || __prev == __property::__T) && __next == __property::__T) // GB8
- return false;
+ // *** Do not break Hangul syllable sequences. ***
+ if (__prev_property_ == __EGC_property::__L &&
+ (__next_property == __EGC_property::__L || __next_property == __EGC_property::__V ||
+ __next_property == __EGC_property::__LV || __next_property == __EGC_property::__LVT)) // GB6
+ return false;
- // *** Do not break before extending characters or ZWJ. ***
- if (__next == __property::__Extend || __next == __property::__ZWJ)
- return false; // GB9
+ if ((__prev_property_ == __EGC_property::__LV || __prev_property_ == __EGC_property::__V) &&
+ (__next_property == __EGC_property::__V || __next_property == __EGC_property::__T)) // GB7
+ return false;
- // *** Do not break before SpacingMarks, or after Prepend characters. ***
- if (__next == __property::__SpacingMark) // GB9a
- return false;
+ if ((__prev_property_ == __EGC_property::__LVT || __prev_property_ == __EGC_property::__T) &&
+ __next_property == __EGC_property::__T) // GB8
+ return false;
- if (__prev == __property::__Prepend) // GB9b
- return false;
+ // *** Do not break before extending characters or ZWJ. ***
+ if (__next_property == __EGC_property::__Extend || __next_property == __EGC_property::__ZWJ)
+ return false; // GB9
- // *** Do not break within emoji modifier sequences or emoji zwj sequences. ***
+ // *** Do not break before SpacingMarks, or after Prepend characters. ***
+ if (__next_property == __EGC_property::__SpacingMark) // GB9a
+ return false;
- // GB11 \p{Extended_Pictographic} Extend* ZWJ x \p{Extended_Pictographic}
- //
- // Note that several parts of this rule are matched by GB9: Any x (Extend | ZWJ)
- // - \p{Extended_Pictographic} x Extend
- // - Extend x Extend
- // - \p{Extended_Pictographic} x ZWJ
- // - Extend x ZWJ
- //
- // So the only case left to test is
- // - \p{Extended_Pictographic}' x ZWJ x \p{Extended_Pictographic}
- // where \p{Extended_Pictographic}' is stored in __has_extened_pictographic
- if (__has_extened_pictographic && __prev == __property::__ZWJ && __next == __property::__Extended_Pictographic)
- return false;
+ if (__prev_property_ == __EGC_property::__Prepend) // GB9b
+ return false;
- // *** Do not break within emoji flag sequences ***
+ // *** Do not break within certain combinations with Indic_Conjunct_Break (InCB)=Linker. ***
+ if (__indic_conjunct_break::__get_property(__next_code_point) == __inCB_property::__Consonant) {
+ __active_rule_ = __rule::__GB9c_indic_conjunct_break;
+ __GB9c_indic_conjunct_break_state_ = __GB9c_indic_conjunct_break_state::__Consonant;
+ return true;
+ }
+
+ // *** Do not break within emoji modifier sequences or emoji zwj sequences. ***
+ if (__next_property == __EGC_property::__Extended_Pictographic) {
+ __active_rule_ = __rule::__GB11_emoji;
+ __GB11_emoji_state_ = __GB11_emoji_state::__Extended_Pictographic;
+ return true;
+ }
+
+ // *** Do not break within emoji flag sequences ***
- // That is, do not break between regional indicator (RI) symbols if there
- // is an odd number of RI characters before the break point.
+ // That is, do not break between regional indicator (RI) symbols if there
+ // is an odd number of RI characters before the break point.
+ if (__next_property == __EGC_property::__Regional_Indicator) { // GB12 + GB13
+ __active_rule_ = __rule::__GB12_GB13_regional_indicator;
+ return true;
+ }
- if (__prev == __property::__Regional_Indicator && __next == __property::__Regional_Indicator) { // GB12 + GB13
- __ri_break_allowed = !__ri_break_allowed;
- return __ri_break_allowed;
+ // *** Otherwise, break everywhere. ***
+ return true; // GB999
}
- // *** Otherwise, break everywhere. ***
- return true; // GB999
-}
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool
+ __evaluate_GB9c_indic_conjunct_break(char32_t __next_code_point, __EGC_property __next_property) {
+ __inCB_property __break = __indic_conjunct_break::__get_property(__next_code_point);
+ if (__break == __inCB_property::__none) {
+ __active_rule_ = __rule::__none;
+ return __evaluate_none(__next_code_point, __next_property);
+ }
+
+ switch (__GB9c_indic_conjunct_break_state_) {
+ case __GB9c_indic_conjunct_break_state::__Consonant:
+ if (__break == __inCB_property::__Extend) {
+ return false;
+ }
+ if (__break == __inCB_property::__Linker) {
+ __GB9c_indic_conjunct_break_state_ = __GB9c_indic_conjunct_break_state::__Linker;
+ return false;
+ }
+ __active_rule_ = __rule::__none;
+ return __evaluate_none(__next_code_point, __next_property);
+
+ case __GB9c_indic_conjunct_break_state::__Linker:
+ if (__break == __inCB_property::__Extend) {
+ return false;
+ }
+ if (__break == __inCB_property::__Linker) {
+ return false;
+ }
+ if (__break == __inCB_property::__Consonant) {
+ __GB9c_indic_conjunct_break_state_ = __GB9c_indic_conjunct_break_state::__Consonant;
+ return false;
+ }
+ __active_rule_ = __rule::__none;
+ return __evaluate_none(__next_code_point, __next_property);
+ }
+ __libcpp_unreachable();
+ }
+
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool
+ __evaluate_GB11_emoji(char32_t __next_code_point, __EGC_property __next_property) {
+ switch (__GB11_emoji_state_) {
+ case __GB11_emoji_state::__Extended_Pictographic:
+ if (__next_property == __EGC_property::__Extend) {
+ __GB11_emoji_state_ = __GB11_emoji_state::__Extend;
+ return false;
+ }
+ [[fallthrough]];
+ case __GB11_emoji_state::__Extend:
+ if (__next_property == __EGC_property::__ZWJ) {
+ __GB11_emoji_state_ = __GB11_emoji_state::__ZWJ;
+ return false;
+ }
+ if (__next_property == __EGC_property::__Extend)
+ return false;
+ __active_rule_ = __rule::__none;
+ return __evaluate_none(__next_code_point, __next_property);
+
+ case __GB11_emoji_state::__ZWJ:
+ if (__next_property == __EGC_property::__Extended_Pictographic) {
+ __GB11_emoji_state_ = __GB11_emoji_state::__Extended_Pictographic;
+ return false;
+ }
+ __active_rule_ = __rule::__none;
+ return __evaluate_none(__next_code_point, __next_property);
+ }
+ __libcpp_unreachable();
+ }
+
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool
+ __evaluate_GB12_GB13_regional_indicator(char32_t __next_code_point, __EGC_property __next_property) {
+ __active_rule_ = __rule::__none;
+ if (__next_property == __EGC_property::__Regional_Indicator)
+ return false;
+ return __evaluate_none(__next_code_point, __next_property);
+ }
+
+ char32_t __prev_code_point_;
+ __EGC_property __prev_property_;
+
+ enum class __rule {
+ __none,
+ __GB9c_indic_conjunct_break,
+ __GB11_emoji,
+ __GB12_GB13_regional_indicator,
+ };
+ __rule __active_rule_ = __rule::__none;
+
+ enum class __GB11_emoji_state {
+ __Extended_Pictographic,
+ __Extend,
+ __ZWJ,
+ };
+ __GB11_emoji_state __GB11_emoji_state_ = __GB11_emoji_state::__Extended_Pictographic;
+
+ enum class __GB9c_indic_conjunct_break_state {
+ __Consonant,
+ __Linker,
+ };
+
+ __GB9c_indic_conjunct_break_state __GB9c_indic_conjunct_break_state_ = __GB9c_indic_conjunct_break_state::__Consonant;
+
+ // NOLINTEND(readability-identifier-naming)
+};
/// Helper class to extract an extended grapheme cluster from a Unicode character range.
///
@@ -382,9 +531,7 @@ class __extended_grapheme_cluster_view {
public:
_LIBCPP_HIDE_FROM_ABI constexpr explicit __extended_grapheme_cluster_view(_Iterator __first, _Iterator __last)
- : __code_point_view_(__first, __last),
- __next_code_point_(__code_point_view_.__consume().__code_point),
- __next_prop_(__extended_grapheme_custer_property_boundary::__get_property(__next_code_point_)) {}
+ : __code_point_view_(__first, __last), __at_break_(__code_point_view_.__consume().__code_point) {}
struct __cluster {
/// The first code point of the extended grapheme cluster.
@@ -400,44 +547,20 @@ public:
_Iterator __last_;
};
- _LIBCPP_HIDE_FROM_ABI constexpr __cluster __consume() {
- _LIBCPP_ASSERT_INTERNAL(__next_prop_ != __extended_grapheme_custer_property_boundary::__property::__eot,
- "can't move beyond the end of input");
-
- char32_t __code_point = __next_code_point_;
- if (!__code_point_view_.__at_end())
- return {__code_point, __get_break()};
-
- __next_prop_ = __extended_grapheme_custer_property_boundary::__property::__eot;
- return {__code_point, __code_point_view_.__position()};
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __cluster __consume() {
+ char32_t __code_point = __at_break_.__current_code_point();
+ _Iterator __position = __code_point_view_.__position();
+ while (!__code_point_view_.__at_end()) {
+ if (__at_break_(__code_point_view_.__consume().__code_point))
+ break;
+ __position = __code_point_view_.__position();
+ }
+ return {__code_point, __position};
}
private:
__code_point_view<_CharT> __code_point_view_;
-
- char32_t __next_code_point_;
- __extended_grapheme_custer_property_boundary::__property __next_prop_;
-
- _LIBCPP_HIDE_FROM_ABI constexpr _Iterator __get_break() {
- bool __ri_break_allowed = true;
- bool __has_extened_pictographic = false;
- while (true) {
- _Iterator __result = __code_point_view_.__position();
- __extended_grapheme_custer_property_boundary::__property __prev = __next_prop_;
- if (__code_point_view_.__at_end()) {
- __next_prop_ = __extended_grapheme_custer_property_boundary::__property::__eot;
- return __result;
- }
- __next_code_point_ = __code_point_view_.__consume().__code_point;
- __next_prop_ = __extended_grapheme_custer_property_boundary::__get_property(__next_code_point_);
-
- __has_extened_pictographic |=
- __prev == __extended_grapheme_custer_property_boundary::__property::__Extended_Pictographic;
-
- if (__at_extended_grapheme_cluster_break(__ri_break_allowed, __has_extened_pictographic, __prev, __next_prop_))
- return __result;
- }
- }
+ __extended_grapheme_cluster_break __at_break_;
};
template <contiguous_iterator _Iterator>
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/width_estimation_table.h b/contrib/libs/cxxsupp/libcxx/include/__format/width_estimation_table.h
index 6309483367f..11f61dea18d 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__format/width_estimation_table.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/width_estimation_table.h
@@ -119,7 +119,7 @@ namespace __width_estimation_table {
/// - bits [0, 13] The size of the range, allowing 16384 elements.
/// - bits [14, 31] The lower bound code point of the range. The upper bound of
/// the range is lower bound + size.
-_LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[108] = {
+_LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[107] = {
0x0440005f /* 00001100 - 0000115f [ 96] */, //
0x08c68001 /* 0000231a - 0000231b [ 2] */, //
0x08ca4001 /* 00002329 - 0000232a [ 2] */, //
@@ -158,14 +158,13 @@ _LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[108] = {
0x0ba00019 /* 00002e80 - 00002e99 [ 26] */, //
0x0ba6c058 /* 00002e9b - 00002ef3 [ 89] */, //
0x0bc000d5 /* 00002f00 - 00002fd5 [ 214] */, //
- 0x0bfc000b /* 00002ff0 - 00002ffb [ 12] */, //
- 0x0c00003e /* 00003000 - 0000303e [ 63] */, //
+ 0x0bfc004e /* 00002ff0 - 0000303e [ 79] */, //
0x0c104055 /* 00003041 - 00003096 [ 86] */, //
0x0c264066 /* 00003099 - 000030ff [ 103] */, //
0x0c41402a /* 00003105 - 0000312f [ 43] */, //
0x0c4c405d /* 00003131 - 0000318e [ 94] */, //
0x0c640053 /* 00003190 - 000031e3 [ 84] */, //
- 0x0c7c002e /* 000031f0 - 0000321e [ 47] */, //
+ 0x0c7bc02f /* 000031ef - 0000321e [ 48] */, //
0x0c880027 /* 00003220 - 00003247 [ 40] */, //
0x0c943fff /* 00003250 - 0000724f [16384] */, //
0x1c94323c /* 00007250 - 0000a48c [12861] */, //
@@ -238,7 +237,7 @@ inline constexpr uint32_t __table_upper_bound = 0x0003fffd;
/// Returns the estimated width of a Unicode code point.
///
-/// \pre The code point is a valid Unicode code point.
+/// \\pre The code point is a valid Unicode code point.
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr int __estimated_width(const char32_t __code_point) noexcept {
// Since __table_upper_bound contains the unshifted range do the
// comparison without shifting.
diff --git a/contrib/libs/cxxsupp/libcxx/include/__format/write_escaped.h b/contrib/libs/cxxsupp/libcxx/include/__format/write_escaped.h
index 43a074dd8d7..052ea98c3c3 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__format/write_escaped.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__format/write_escaped.h
@@ -101,15 +101,27 @@ _LIBCPP_HIDE_FROM_ABI void __write_escape_ill_formed_code_unit(basic_string<_Cha
}
template <class _CharT>
-[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool __is_escaped_sequence_written(basic_string<_CharT>& __str, char32_t __value) {
+[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool
+__is_escaped_sequence_written(basic_string<_CharT>& __str, bool __last_escaped, char32_t __value) {
# ifdef _LIBCPP_HAS_NO_UNICODE
// For ASCII assume everything above 127 is printable.
if (__value > 127)
return false;
# endif
+ // [format.string.escaped]/2.2.1.2.1
+ // CE is UTF-8, UTF-16, or UTF-32 and C corresponds to a Unicode scalar
+ // value whose Unicode property General_Category has a value in the groups
+ // Separator (Z) or Other (C), as described by UAX #44 of the Unicode Standard,
if (!__escaped_output_table::__needs_escape(__value))
- return false;
+ // [format.string.escaped]/2.2.1.2.2
+ // CE is UTF-8, UTF-16, or UTF-32 and C corresponds to a Unicode scalar
+ // value with the Unicode property Grapheme_Extend=Yes as described by UAX
+ // #44 of the Unicode Standard and C is not immediately preceded in S by a
+ // character P appended to E without translation to an escape sequence,
+ if (!__last_escaped || __extended_grapheme_custer_property_boundary::__get_property(__value) !=
+ __extended_grapheme_custer_property_boundary::__property::__Extend)
+ return false;
__formatter::__write_well_formed_escaped_code_unit(__str, __value);
return true;
@@ -124,8 +136,8 @@ enum class __escape_quotation_mark { __apostrophe, __double_quote };
// [format.string.escaped]/2
template <class _CharT>
-[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool
-__is_escaped_sequence_written(basic_string<_CharT>& __str, char32_t __value, __escape_quotation_mark __mark) {
+[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool __is_escaped_sequence_written(
+ basic_string<_CharT>& __str, char32_t __value, bool __last_escaped, __escape_quotation_mark __mark) {
// 2.2.1.1 - Mapped character in [tab:format.escape.sequences]
switch (__value) {
case _CharT('\t'):
@@ -167,7 +179,7 @@ __is_escaped_sequence_written(basic_string<_CharT>& __str, char32_t __value, __e
// TODO FMT determine what to do with shift sequences.
// 2.2.1.2.1 and 2.2.1.2.2 - Escape
- return __formatter::__is_escaped_sequence_written(__str, __formatter::__to_char32(__value));
+ return __formatter::__is_escaped_sequence_written(__str, __last_escaped, __formatter::__to_char32(__value));
}
template <class _CharT>
@@ -175,11 +187,15 @@ _LIBCPP_HIDE_FROM_ABI void
__escape(basic_string<_CharT>& __str, basic_string_view<_CharT> __values, __escape_quotation_mark __mark) {
__unicode::__code_point_view<_CharT> __view{__values.begin(), __values.end()};
+ // When the first code unit has the property Grapheme_Extend=Yes it needs to
+ // be escaped. This happens when the previous code unit was also escaped.
+ bool __escape = true;
while (!__view.__at_end()) {
auto __first = __view.__position();
typename __unicode::__consume_result __result = __view.__consume();
if (__result.__status == __unicode::__consume_result::__ok) {
- if (!__formatter::__is_escaped_sequence_written(__str, __result.__code_point, __mark))
+ __escape = __formatter::__is_escaped_sequence_written(__str, __result.__code_point, __escape, __mark);
+ if (!__escape)
// 2.2.1.3 - Add the character
ranges::copy(__first, __view.__position(), std::back_insert_iterator(__str));
} else {