Files
clustri/src-tauri/target/debug/deps/libunicode_ident-8443eb632a3fbe4c.rlib
T

46 lines
54 KiB
Plaintext
Raw Normal View History

2026-07-29 13:47:45 +00:00
!<arch>
/ 0 0 0 0 582 `
ˆÒˆÒˆÒˆÒˆÒˆÒˆÒ_RINvMNtCs4NRVxsYgnAr_4core5sliceSh13get_uncheckedjECs1G2K9qIABqD_13unicode_ident_RNvXs0_NtNtCs4NRVxsYgnAr_4core5slice5indexjINtB5_10SliceIndexShE13get_uncheckedCs1G2K9qIABqD_13unicode_ident_RINvMNtCs4NRVxsYgnAr_4core5sliceSh3getjECs1G2K9qIABqD_13unicode_ident_RNvXs0_NtNtCs4NRVxsYgnAr_4core5slice5indexjINtB5_10SliceIndexShE3getCs1G2K9qIABqD_13unicode_ident_RNvCs1G2K9qIABqD_13unicode_ident12is_xid_start_RNvMNtCs4NRVxsYgnAr_4core6optionINtB2_6OptionRhE9unwrap_orCs1G2K9qIABqD_13unicode_ident_RNvCs1G2K9qIABqD_13unicode_ident15is_xid_continue// 76 `
unicode_ident-8443eb632a3fbe4c.unicode_ident.138bd77628da51a9-cgu.0.rcgu.o/
lib.rmeta/ 0 0 0 644 33456 `
ELF>0�@@GNUÀrust
é~#rustc 1.97.1 (8bab26f4f 2026-07-14)ÁõI*µ~&ævè¼JšÃ-b5d59729c8525f07Á¬›IçTp�+õZòØu—Ó»Ø-085f534a869f02d5ÁŠõZEROÁ is_xid_startÁis_xid_continueÁtablesÁAlign8Á
À£Align64Á
À£UNICODE_VERSIONÁ ASCII_STARTÁASCII_CONTINUEÁCHUNKÁ
TRIE_STARTÁ 
TRIE_CONTINUEÁ LEAFÁ T� � ”Ó —Óüå5ÓÓÓd€*_Áþÿÿþÿÿ!0x7fffffe07fffffe0000000000000000Áÿþÿÿ‡þÿÿÁ!0x7fffffe87fffffe03ff000000000000Á@64Á›±411Á±1793Á€±7808ÁÜ÷ À)û£ O
!i:-Éð�b�ipä¸ �&š£ ¿÷Yí}~1b�_�fm
õº|Ý\ ât‚] Ð\’] ÷,Ÿ] °$¦]˜l¬] ƒT»]
üÆdü¦£ [![github]](https://github.com/dtolnay/unicode-ident)&ensp;[![crates-io]](https://crates.io/crates/unicode-ident)&ensp;[![docs-rs]](https://docs.rs/unicode-ident)Á§†ü«jg [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=githubÁü–nk [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rustÁü…mj [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rsÁó†D÷ <br>Á€†ü„NK Implementation of [Unicode Standard Annex #31][tr31] for determining whichÁüÓ@= `char` values are valid in programming language identifiers.Á”†ü˜1. [tr31]: https://www.unicode.org/reports/tr31/ÁʆüÎNK This crate is a better optimized implementation of the older `unicode-xid`Áü�LI crate. This crate uses less static storage, and is able to classify bothÁüêPM ASCII and non-ASCII codepoints with better performance, 6&times; faster thanÁ”» `unicode-xid`.ÁΆDÒÐ
Û†üß  ## Comparison of performanceÁ€†ü„JG The following table shows a comparison between five Unicode identifierÁ¤Ï implementations.Áä†üè$! - `unicode-ident` is this crate;Áü� IF - [`unicode-xid`] is a widely used crate run by the "unicode-rs" org;Áü× C@ - `ucd-trie` and `fst` are two data structures supported by theÁä›
 [`ucd-generate`] tool;Áü¸
=: - [`roaring`] is a Rust implementation of Roaring bitmap.Áö
†üú
PM The *static storage* column shows the total size of `static` tables that theÁüË =: crate bakes into your binary, measured in 1000s of bytes.Á‰ †ü� JG The remaining columns show the **cost per call** to evaluate whether aÁüØ GD single `char` has the XID\_Start or XID\_Continue Unicode property,Áü 
MJ comparing across different ratios of ASCII to non-ASCII codepoints in theÁ|î
 input data.Áþ
†ü‚>; [`unicode-xid`]: https://github.com/unicode-rs/unicode-xidÁüÁ@= [`ucd-generate`]: https://github.com/BurntSushi/ucd-generateÁü‚<9 [`roaring`]: https://github.com/RoaringBitmap/roaring-rsÁ¿†üÃA> | | static storage | 0% nonascii | 1% | 10% | 100% nonascii |Áì… |---|---|---|---|---|---|Áü£LI | **`unicode-ident`** | 10.3 K | 0.41 ns | 0.44 ns | 0.44 ns | 0.93 ns |ÁüðJG | **`unicode-xid`** | 12.0 K | 2.43 ns | 2.50 ns | 2.85 ns | 8.65 ns |Áü»GD | **`ucd-trie`** | 10.4 K | 1.28 ns | 1.25 ns | 1.20 ns | 1.97 ns |ÁüƒA> | **`fst`** | 144 K | 50.9 ns | 51.0 ns | 48.5 ns | 26.7 ns |ÁüÅFC | **`roaring`** | 66.1 K | 4.28 ns | 4.22 ns | 4.25 ns | 4.61 ns |ÁŒ†ü�NK Source code for the benchmark is provided in the *bench* directory of thisÁüß:7 repo and may be repeated by running `cargo criterion`.Áš†DžÐ
§†ü«$! ## Comparison of data structuresÁІ¤Ô #### unicode-xidÁé†üíOL They use a sorted array of character ranges, and do a binary search to lookÁü½B? up whether a given character lands inside one of those ranges.Á€†\„ ```rustÁü�" # const _: &str = stringify! {Áü³63 static XID_Continue_table: [(char, char); 763] = [Áüê%" ('\u{30}', '\u{39}'), // 0-9Áü�%" ('\u{41}', '\u{5a}'), // A-ZÁ<¶ # "Á\¾ …Á<ʘ%üÒ# ('\u{e0100}', '\u{e01ef}'),Á4ö ];ÁDý # };Á<† ```Áކü’LI The static storage used by this data structure scales with the number ofÁüßLI contiguous ranges of identifier codepoints in Unicode. Every table entryÁü¬LI consumes 8 bytes, because it consists of a pair of 32-bit `char` values.Áù†üýIF In some ranges of the Unicode codepoint space, this is quite a sparseÁüÇKH representation &ndash; there are some ranges where tens of thousands ofÁü“MJ adjacent codepoints are all valid identifier characters. In other places,ÁüáLI the representation is quite inefficient. A characater like `µ` (U+00B5)Áü®LI which is surrounded by non-identifier codepoints consumes 64 bits in theÁüû:7 table, while it would be just 1 bit in a dense bitmap.Á†üºNK On a system with 64-byte cache lines, binary searching the table touches 7Áü‰FC cache lines on average. Each cache line fits only 8 table entries.ÁüÐNK Additionally, the branching performed during the binary search is probablyÁüŸ1. mostly unpredictable to the branch predictor.ÁцüÕMJ Overall, the crate ends up being about 6&times; slower on non-ASCII inputÁü£ " compared to the fastest crate.ÁÆ †üÊ NK A potential improvement would be to pack the table entries more compactly.Áü™!OL Rust's `char` type is a 21-bit integer padded to 32 bits, which means everyÁüé!LI table entry is holding 22 bits of wasted space, adding up to 3.9 K. TheyÁü¶"MJ could instead fit every table entry into 6 bytes, leaving out some of theÁü„#PM padding, for a 25% improvement in space used. With some cleverness it may beÁüÕ#KH possible to fit in 5 bytes or even 4 bytes by storing a low char and anÁü¡$NK extent, instead of low char and high char. I don't expect that performanceÁüð$PM would improve much but this could be the most efficient for space across allÁüÁ%30 the libraries, needing only about 7 K to store.Áõ%†Œù% ####
ÿÿÿôÎ\lò\  33FFYYnnƒƒ|É]$Ð]Ó€üž^%üß]>; Whether the character has the Unicode property XID\_Start.Ád¥^B
chÁ²^üÂa(ü€aA> Whether the character has the Unicode property XID\_Continue.Á|ÉaB
ÓwÙaT¹\¹
skipÁlª\„¨\4½\4‰À�»� �²O
!i:-Éð�²BQ�²B
�]_d“�<ÊÀ«z Ò­¿÷Yí}~1b�­BH�­B
�]_dÕ�üå'|ïŠüœ"\­Áüä%tõÁì°,Á±üÕ/Tçû£ O
!i:-ÉðÓ±› 
!%+/26:>¥CGKïïïïïïïïïïïïPïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïORVZïïïïïïïïïïïïïïïïïïïïï0î^bdhlpðtvz~‚†ŠŽ’–šžïA¢åïï¤ïïïïïï)ï©Õï®Ë²ïïïïïïïïïïïïïﶬ&¸»ÄƹÍÑØÜàäïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïçïïïïïïïïéïïïïïïïïïïëïïïïïïïïïïïïïïíïÖïïïïïïïïïïïïïïïïïïïïïïïïïòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ±üŸ3l±û£ O
!i:-ÉðÓ±ˆ #(-/48<@¥EIMïïïïïïïïïïïïPïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïOTX\ïïïïïïïïïïïïïïïïïïïïï0î`bfjnrðtx|€„ˆŒ�”˜œ ïA¢åïï§ïïïïïï)ï©Òï°Â´ïïïïïïïïïïïïïﶬ&¸¾«¿¼ÁÄÈʹÏÔÚÞâäªïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïçïïïïïïïïéïïïïïïïïïïëïïïïïïïïïïïïïïíïÖïïïïïïïïïïïïïïïïïïïïïïïïïòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ$̱ü­q+$¿qš£ ¿÷Yí}~1bÓ±€€=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿP߸@×ÿÿûÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿ߸À×ÿÿûÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿ¿¶ÿÿÿ‡ÿÿÿÿÿÀþÿÿÿÿÿÿÿÿÿÿÿ/`Àœýÿÿÿàÿÿÿÿÿÿÿÿÿÿ?üÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÃÿÿÿÿÿÿÿÿÿÿÿÿïŸÿýÿŸÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?$ÿÿ?ÿÿÿÿÿÿÿþÿÿÿÿÿðÿÿÿÿÿÿ#ÿþÿáŸùÿÿýÅ#@°ÿÿÿÿÿ?ÿÿÿÿÿÿÿþ€ÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿþÿïŸùÿÿýÅóŸy€°ÏÿPà‡ùÿÿým^à¿ûÿÿýí#àŸùÿÿýí#°èÇ=ÖÇÿî‡ùÿÿýmÓ‡9^Àÿ?î¿ûÿÿýíó¿;ÏÿþîŸùÿÿýíóŸ9à°ÏÿìÇ=ÖÇÿÃÇ=�Àÿàßýÿÿýÿ#7áßýÿÿýï#pðßýÿÿÿÿ'@p€üàÿüÿÿû/ÿßýÿÿýÿóß=`7Ïÿïßýÿÿýïóß=`pÏÿÿßýÿÿÿÿÿß}ð€Ïÿüîÿüÿÿû/„_ÿÀÿ þÿÿÿÿÿÖ÷ÿÿ¯ÿ _ðÿþÿÿÿþÿÿÿÿÿÿÿÿÖ÷ÿÿ¯ÿÿ?_ÿóÿ Âÿþÿÿÿþÿßÿÿþÿÿÿ@ÿÿÿÿÿ€?<bÀáÿ@ÿÿÿÿ¿ ÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿ¿ ÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ==ÿÿÿÿÿ=ÿÿÿÿ==ÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ??ÿÿÿÿÿÿÿÿÿ==ÿÿÿÿÿ=ÿÿÿÿ==ÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿÿÿçþÿÿÿÿÿÿÿÿÿÿÿÿ??þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿþÿÿÿÿÿÿÿÿÿÿÿÇÿÿÿ€ÿÿÿÿÿßÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿþÿÿÿÿÿÿÿÿÿÿÿÇÿÿÿ?€ÿÿÿÿÿß
ÿÿÿÿÿÿÿÿÿÿ�0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿ¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÀÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€àÿÿÿÿÿàøÿÿÿÀüÿ
ÿÿûÿÿÿÿÀ½ÿ¿ÿÿÿÿÿÿÿÿÿïŸùÿÿýíûŸ9�àÏÿKÿÿÿÿ¿ÿ¥÷ÿÿÿÿÿÿ€€ÿÿÿÿÿÿ°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿ?ÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€òoÿÿÿ€ÿüÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€òoÿÿÿ¿ùÿÿüÿÿÿÿÿüøÿÿÿÿðÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿüÿÿÿûÿÿÿÿ@¿ýÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿüÿÿÿüÿÿþûÿÿÿÿ´ÿÿ¿ýÿÿÿûÿÿÿÿÿÿÿÿÿôÿýÿÿÿÿÿÿÿýÿÿÿÿÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ??ÿÿÿÿ??ÿªÿÿÿ?ÿÿÿÿÿÿß_ÜÏÿÜÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿøÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿøÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿÿÿøÿ |ÿÿÿÿÿÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàãøç<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿcÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÿÿÿÿÿÿÿÿßdÞÿëïÿÿÿÿÿÿÿ¿çßßÿÿÿ{_üýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿýÿÿ÷ÿÿÿ÷ÿÿßÿÿÿßÿÿÿÿÿÿÿÿýÿÿÿýÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿýÿÿ÷ÿÿÿ÷ÿÿßÿÿÿßÿÿÿÿÿÿÿÿýÿÿÿýÿÿ÷Ïÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿ øþÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿ€?@ÿÿùÛÿÿÿÿÿÿÿ?€ÿÿÿÿÿÿ?ÿCÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿ·?Àoÿÿÿÿÿÿ?Àoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿ–þ÷
„ê–ª–÷÷^ÿûÿîûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿ¿ÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€=$Òq±K,https://github.com/rust-lang/rust/pull/33098Áfinite state transducerÁ%https://www.unicode.org/reports/tr31/Á unicode-xidÁ)https://github.com/unicode-rs/unicode-xidÁcroaringÁ!https://crates.io/crates/croaringÁgithubÁ(https://github.com/dtolnay/unicode-identÁ crates-ioÁ]https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rustÁ+https://github.com/RoaringBitmap/roaring-rsÁrust-lang/rust#33098ÁçÏUnicode Standard Annex #31Á´ÐÞÐ https://roaringbitmap.org/about/ÁœÑÏÑ©ÑÚÑroaringÁ÷Ò§Óhttps://docs.rs/unicode-identÁÆÓ´ÐRoaring BitmapÁñÓœÑÏÑ*https://github.com/BurntSushi/ucd-generateÁ®Ô÷Ò\https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=githubÁdocs-rsÁÆÔÆÓ!https://github.com/BurntSushi/fstÁôÔñÓ ucd-generateÁ™Õ®Ô^https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rsÁÔÕ&https://crates.io/crates/unicode-identÁµÖÆÔ˜ÐÍÖôÔîÐÿ֙ՕҜׇ҅صÖÔÕçϘÐÍÖÞÐîÐÿÖ©Ñ•ÒÚч҅؜קөQÚ(v׋,îàíe�ͯ­Ë˜^æ�’ TT
�7Œ»à04§'â�—%è÷n¬nʇ´Â~í‹!žvýÓ0Žêá Ë7{ïïL2”B
‚ெ?qÜåñS¿�p*&¢}æ‚¡òÆ“ žeþ¼��¦<•û¹#T’îצ%¶l)_hG�á^!êŒn5ÏÁÅ\Ãk?·ž»¿ÄËrø�'H¼ ÇioDIâüÄžŸEùŽX�à²"î°§5Ã_e­lÚˆt>à6οn†f, hŠhpq¨„ìSâþ§PëÊ”ãØn—Eb£çá±Ò{òSŸƒãšhlKz"6ë´vIê´ÔuÍc:šóÿ:;
;
;;;;%;+;2;`;à;`<Œ<$=9=È=ß=ó=>>1>„@ïH_:~ <Ô<x= ' '    ^:I;¿;B<|<’<ô<&=?=˜=Ê=ã=÷= > >H>›@I•ö:ü:ÿ:;
;;;;";(;.;[;Û;\<‰<Ü<= =6=€=·=Ä=Ú=î=>>,>p@@ÛHêHÖgù:;
;;;;%;+;2;¨;+<x<Ž<ß<=$=;=ƒ=¹=È=ß=ó=>>1>„@ïHQ;Ë;N<¨<==0=U=ª=Á=Ô=ê=ÿ=>(>P>z@£@åHIàgK;Å;H<•<þ<=(=B=¢=»=Ì=ä=ù=>">J>t@�@ßHIÚgS;Í;P<º< =4=^=°=Ø=ì=>>*>R>|@¥@çHIâgÀ;C<”<ö<A=š=À;C<Õ<÷<y=›=6;¬;/<á<…=5>ˆ@óH=Ã=ÿ}».j¦»Ñè|÷-
=®=&C³ÈÞõ*Gƒ·ÌâùÑ;T<U;�>ã@NI\:v<Œ<9=Ê<n=¼<`=ˆ‹’–šž¢¦ª®²ÁÔê÷$(/6L^s�”¨¬·Í<q=åg~@éHäg 
�uÓ±ýtÓ±ŸU Ó£lÓ¡lÓ"%¹ ©QÚ(v׋«XÁò™W¢„