bstr-1.7.0/.cargo_vcs_info.json0000644000000001360000000000100120130ustar { "git": { "sha1": "ec2154a36943455c22de64331cfc1624ba93ec3c" }, "path_in_vcs": "" }bstr-1.7.0/.gitignore000064400000000000000000000000371046102023000125730ustar 00000000000000.*.swp tags target /Cargo.lock bstr-1.7.0/COPYING000064400000000000000000000004061046102023000116360ustar 00000000000000This project is licensed under either of * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT) at your option. bstr-1.7.0/Cargo.lock0000644000000101040000000000100077620ustar # This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "bstr" version = "1.7.0" dependencies = [ "memchr", "quickcheck", "regex-automata", "serde", "ucd-parse", "unicode-segmentation", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "getrandom" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", "wasi", ] [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memchr" version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "proc-macro2" version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "quickcheck" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6" dependencies = [ "rand", ] [[package]] name = "quote" version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "rand_core", ] [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] [[package]] name = "regex-automata" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "465c6fc0621e4abc4187a2bda0937bfd4f722c2730b29562e19689ea796c9a4b" [[package]] name = "regex-lite" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f96ede7f386ba6e910092e7ccdc04176cface62abebea07ed6b46d870ed95ca2" [[package]] name = "serde" version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "syn" version = "2.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "ucd-parse" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212c59636157b18c2f57eed2799e6606c52fc49c6a11685ffb0d08f06e55f428" dependencies = [ "regex-lite", ] [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-segmentation" version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" bstr-1.7.0/Cargo.toml0000644000000041460000000000100100160ustar # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO # # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies # to registry (e.g., crates.io) dependencies. # # If you are reading this file be aware that the original Cargo.toml # will likely look very different (and much more reasonable). # See Cargo.toml.orig for the original contents. [package] edition = "2021" rust-version = "1.65" name = "bstr" version = "1.7.0" authors = ["Andrew Gallant "] exclude = [ "/.github", "/scripts", ] description = "A string type that is not required to be valid UTF-8." homepage = "https://github.com/BurntSushi/bstr" documentation = "https://docs.rs/bstr" readme = "README.md" keywords = [ "string", "str", "byte", "bytes", "text", ] categories = [ "text-processing", "encoding", ] license = "MIT OR Apache-2.0" repository = "https://github.com/BurntSushi/bstr" resolver = "2" [package.metadata.docs.rs] all-features = true rustdoc-args = [ "--cfg", "docsrs", ] [profile.release] debug = 2 [lib] bench = false [[example]] name = "graphemes" required-features = [ "std", "unicode", ] [[example]] name = "lines" required-features = ["std"] [[example]] name = "uppercase" required-features = [ "std", "unicode", ] [[example]] name = "words" required-features = [ "std", "unicode", ] [dependencies.memchr] version = "2.6.1" default-features = false [dependencies.regex-automata] version = "0.4.1" features = ["dfa-search"] optional = true default-features = false [dependencies.serde] version = "1.0.85" optional = true default-features = false [dev-dependencies.quickcheck] version = "1" default-features = false [dev-dependencies.ucd-parse] version = "0.1.3" [dev-dependencies.unicode-segmentation] version = "1.2.1" [features] alloc = [ "memchr/alloc", "serde?/alloc", ] default = [ "std", "unicode", ] serde = ["dep:serde"] std = [ "alloc", "memchr/std", "serde?/std", ] unicode = ["dep:regex-automata"] bstr-1.7.0/Cargo.toml.orig000064400000000000000000000036541046102023000135020ustar 00000000000000[package] name = "bstr" version = "1.7.0" #:version authors = ["Andrew Gallant "] description = "A string type that is not required to be valid UTF-8." documentation = "https://docs.rs/bstr" homepage = "https://github.com/BurntSushi/bstr" repository = "https://github.com/BurntSushi/bstr" readme = "README.md" keywords = ["string", "str", "byte", "bytes", "text"] license = "MIT OR Apache-2.0" categories = ["text-processing", "encoding"] exclude = ["/.github", "/scripts"] edition = "2021" rust-version = "1.65" resolver = "2" [workspace] members = ["bench"] [lib] bench = false [features] default = ["std", "unicode"] std = ["alloc", "memchr/std", "serde?/std"] alloc = ["memchr/alloc", "serde?/alloc"] unicode = ["dep:regex-automata"] serde = ["dep:serde"] [dependencies] memchr = { version = "2.6.1", default-features = false } serde = { version = "1.0.85", default-features = false, optional = true } [dependencies.regex-automata] version = "0.4.1" default-features = false features = ["dfa-search"] optional = true [dev-dependencies] quickcheck = { version = "1", default-features = false } ucd-parse = "0.1.3" unicode-segmentation = "1.2.1" [package.metadata.docs.rs] # We want to document all features. all-features = true # Since this crate's feature setup is pretty complicated, it is worth opting # into a nightly unstable option to show the features that need to be enabled # for public API items. To do that, we set 'docsrs', and when that's enabled, # we enable the 'doc_auto_cfg' feature. # # To test this locally, run: # # RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features rustdoc-args = ["--cfg", "docsrs"] [profile.release] debug = true [[example]] name = "graphemes" required-features = ["std", "unicode"] [[example]] name = "lines" required-features = ["std"] [[example]] name = "uppercase" required-features = ["std", "unicode"] [[example]] name = "words" required-features = ["std", "unicode"] bstr-1.7.0/LICENSE-APACHE000064400000000000000000000251371046102023000125370ustar 00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. bstr-1.7.0/LICENSE-MIT000064400000000000000000000020761046102023000122440ustar 00000000000000The MIT License (MIT) Copyright (c) 2018-2019 Andrew Gallant Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS 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. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. bstr-1.7.0/README.md000064400000000000000000000207351046102023000120710ustar 00000000000000bstr ==== This crate provides extension traits for `&[u8]` and `Vec` that enable their use as byte strings, where byte strings are _conventionally_ UTF-8. This differs from the standard library's `String` and `str` types in that they are not required to be valid UTF-8, but may be fully or partially valid UTF-8. [![Build status](https://github.com/BurntSushi/bstr/workflows/ci/badge.svg)](https://github.com/BurntSushi/bstr/actions) [![crates.io](https://img.shields.io/crates/v/bstr.svg)](https://crates.io/crates/bstr) ### Documentation https://docs.rs/bstr ### When should I use byte strings? See this part of the documentation for more details: . The short story is that byte strings are useful when it is inconvenient or incorrect to require valid UTF-8. ### Usage `cargo add bstr` ### Examples The following two examples exhibit both the API features of byte strings and the I/O convenience functions provided for reading line-by-line quickly. This first example simply shows how to efficiently iterate over lines in stdin, and print out lines containing a particular substring: ```rust use std::{error::Error, io::{self, Write}}; use bstr::{ByteSlice, io::BufReadExt}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdout = io::BufWriter::new(io::stdout()); stdin.lock().for_byte_line_with_terminator(|line| { if line.contains_str("Dimension") { stdout.write_all(line)?; } Ok(true) })?; Ok(()) } ``` This example shows how to count all of the words (Unicode-aware) in stdin, line-by-line: ```rust use std::{error::Error, io}; use bstr::{ByteSlice, io::BufReadExt}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut words = 0; stdin.lock().for_byte_line_with_terminator(|line| { words += line.words().count(); Ok(true) })?; println!("{}", words); Ok(()) } ``` This example shows how to convert a stream on stdin to uppercase without performing UTF-8 validation _and_ amortizing allocation. On standard ASCII text, this is quite a bit faster than what you can (easily) do with standard library APIs. (N.B. Any invalid UTF-8 bytes are passed through unchanged.) ```rust use std::{error::Error, io::{self, Write}}; use bstr::{ByteSlice, io::BufReadExt}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdout = io::BufWriter::new(io::stdout()); let mut upper = vec![]; stdin.lock().for_byte_line_with_terminator(|line| { upper.clear(); line.to_uppercase_into(&mut upper); stdout.write_all(&upper)?; Ok(true) })?; Ok(()) } ``` This example shows how to extract the first 10 visual characters (as grapheme clusters) from each line, where invalid UTF-8 sequences are generally treated as a single character and are passed through correctly: ```rust use std::{error::Error, io::{self, Write}}; use bstr::{ByteSlice, io::BufReadExt}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdout = io::BufWriter::new(io::stdout()); stdin.lock().for_byte_line_with_terminator(|line| { let end = line .grapheme_indices() .map(|(_, end, _)| end) .take(10) .last() .unwrap_or(line.len()); stdout.write_all(line[..end].trim_end())?; stdout.write_all(b"\n")?; Ok(true) })?; Ok(()) } ``` ### Cargo features This crates comes with a few features that control standard library, serde and Unicode support. * `std` - **Enabled** by default. This provides APIs that require the standard library, such as `Vec` and `PathBuf`. Enabling this feature also enables the `alloc` feature. * `alloc` - **Enabled** by default. This provides APIs that require allocations via the `alloc` crate, such as `Vec`. * `unicode` - **Enabled** by default. This provides APIs that require sizable Unicode data compiled into the binary. This includes, but is not limited to, grapheme/word/sentence segmenters. When this is disabled, basic support such as UTF-8 decoding is still included. Note that currently, enabling this feature also requires enabling the `std` feature. It is expected that this limitation will be lifted at some point. * `serde` - Enables implementations of serde traits for `BStr`, and also `BString` when `alloc` is enabled. ### Minimum Rust version policy This crate's minimum supported `rustc` version (MSRV) is `1.65`. In general, this crate will be conservative with respect to the minimum supported version of Rust. MSRV may be bumped in minor version releases. ### Future work Since it is plausible that some of the types in this crate might end up in your public API (e.g., `BStr` and `BString`), we will commit to being very conservative with respect to new major version releases. It's difficult to say precisely how conservative, but unless there is a major issue with the `1.0` release, I wouldn't expect a `2.0` release to come out any sooner than some period of years. A large part of the API surface area was taken from the standard library, so from an API design perspective, a good portion of this crate should be on solid ground. The main differences from the standard library are in how the various substring search routines work. The standard library provides generic infrastructure for supporting different types of searches with a single method, where as this library prefers to define new methods for each type of search and drop the generic infrastructure. Some _probable_ future considerations for APIs include, but are not limited to: * Unicode normalization. * More sophisticated support for dealing with Unicode case, perhaps by combining the use cases supported by [`caseless`](https://docs.rs/caseless) and [`unicase`](https://docs.rs/unicase). Here are some examples that are _probably_ out of scope for this crate: * Regular expressions. * Unicode collation. The exact scope isn't quite clear, but I expect we can iterate on it. In general, as stated below, this crate brings lots of related APIs together into a single crate while simultaneously attempting to keep the total number of dependencies low. Indeed, every dependency of `bstr`, except for `memchr`, is optional. ### High level motivation Strictly speaking, the `bstr` crate provides very little that can't already be achieved with the standard library `Vec`/`&[u8]` APIs and the ecosystem of library crates. For example: * The standard library's [`Utf8Error`](https://doc.rust-lang.org/std/str/struct.Utf8Error.html) can be used for incremental lossy decoding of `&[u8]`. * The [`unicode-segmentation`](https://unicode-rs.github.io/unicode-segmentation/unicode_segmentation/index.html) crate can be used for iterating over graphemes (or words), but is only implemented for `&str` types. One could use `Utf8Error` above to implement grapheme iteration with the same semantics as what `bstr` provides (automatic Unicode replacement codepoint substitution). * The [`twoway`](https://docs.rs/twoway) crate can be used for fast substring searching on `&[u8]`. So why create `bstr`? Part of the point of the `bstr` crate is to provide a uniform API of coupled components instead of relying on users to piece together loosely coupled components from the crate ecosystem. For example, if you wanted to perform a search and replace in a `Vec`, then writing the code to do that with the `twoway` crate is not that difficult, but it's still additional glue code you have to write. This work adds up depending on what you're doing. Consider, for example, trimming and splitting, along with their different variants. In other words, `bstr` is partially a way of pushing back against the micro-crate ecosystem that appears to be evolving. Namely, it is a goal of `bstr` to keep its dependency list lightweight. For example, `serde` is an optional dependency because there is no feasible alternative. In service of this philosophy, currently, the only required dependency of `bstr` is `memchr`. ### License This project is licensed under either of * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT) at your option. The data in `src/unicode/data/` is licensed under the Unicode License Agreement ([LICENSE-UNICODE](https://www.unicode.org/copyright.html#License)), although this data is only used in tests. bstr-1.7.0/examples/graphemes-std.rs000064400000000000000000000012361046102023000155340ustar 00000000000000use std::error::Error; use std::io::{self, BufRead, Write}; use unicode_segmentation::UnicodeSegmentation; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdin = stdin.lock(); let mut stdout = io::BufWriter::new(io::stdout()); let mut line = String::new(); while stdin.read_line(&mut line)? > 0 { let end = line .grapheme_indices(true) .map(|(start, g)| start + g.len()) .take(10) .last() .unwrap_or(line.len()); stdout.write_all(line[..end].trim_end().as_bytes())?; stdout.write_all(b"\n")?; line.clear(); } Ok(()) } bstr-1.7.0/examples/graphemes.rs000064400000000000000000000010701046102023000147400ustar 00000000000000use std::error::Error; use std::io::{self, Write}; use bstr::{io::BufReadExt, ByteSlice}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdout = io::BufWriter::new(io::stdout()); stdin.lock().for_byte_line_with_terminator(|line| { let end = line .grapheme_indices() .map(|(_, end, _)| end) .take(10) .last() .unwrap_or(line.len()); stdout.write_all(line[..end].trim_end())?; stdout.write_all(b"\n")?; Ok(true) })?; Ok(()) } bstr-1.7.0/examples/lines-std.rs000064400000000000000000000006671046102023000147020ustar 00000000000000use std::error::Error; use std::io::{self, BufRead, Write}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdin = stdin.lock(); let mut stdout = io::BufWriter::new(io::stdout()); let mut line = String::new(); while stdin.read_line(&mut line)? > 0 { if line.contains("Dimension") { stdout.write_all(line.as_bytes())?; } line.clear(); } Ok(()) } bstr-1.7.0/examples/lines.rs000064400000000000000000000006251046102023000141040ustar 00000000000000use std::error::Error; use std::io::{self, Write}; use bstr::{io::BufReadExt, ByteSlice}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdout = io::BufWriter::new(io::stdout()); stdin.lock().for_byte_line_with_terminator(|line| { if line.contains_str("Dimension") { stdout.write_all(line)?; } Ok(true) })?; Ok(()) } bstr-1.7.0/examples/uppercase-std.rs000064400000000000000000000006201046102023000155440ustar 00000000000000use std::error::Error; use std::io::{self, BufRead, Write}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdin = stdin.lock(); let mut stdout = io::BufWriter::new(io::stdout()); let mut line = String::new(); while stdin.read_line(&mut line)? > 0 { stdout.write_all(line.to_uppercase().as_bytes())?; line.clear(); } Ok(()) } bstr-1.7.0/examples/uppercase.rs000064400000000000000000000006741046102023000147650ustar 00000000000000use std::error::Error; use std::io::{self, Write}; use bstr::{io::BufReadExt, ByteSlice}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdout = io::BufWriter::new(io::stdout()); let mut upper = vec![]; stdin.lock().for_byte_line_with_terminator(|line| { upper.clear(); line.to_uppercase_into(&mut upper); stdout.write_all(&upper)?; Ok(true) })?; Ok(()) } bstr-1.7.0/examples/words-std.rs000064400000000000000000000006501046102023000147160ustar 00000000000000use std::error::Error; use std::io::{self, BufRead}; use unicode_segmentation::UnicodeSegmentation; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut stdin = stdin.lock(); let mut words = 0; let mut line = String::new(); while stdin.read_line(&mut line)? > 0 { words += line.unicode_words().count(); line.clear(); } println!("{}", words); Ok(()) } bstr-1.7.0/examples/words.rs000064400000000000000000000005141046102023000141250ustar 00000000000000use std::error::Error; use std::io; use bstr::{io::BufReadExt, ByteSlice}; fn main() -> Result<(), Box> { let stdin = io::stdin(); let mut words = 0; stdin.lock().for_byte_line_with_terminator(|line| { words += line.words().count(); Ok(true) })?; println!("{}", words); Ok(()) } bstr-1.7.0/rustfmt.toml000064400000000000000000000000541046102023000132030ustar 00000000000000max_width = 79 use_small_heuristics = "max" bstr-1.7.0/src/ascii.rs000064400000000000000000000276651046102023000130500ustar 00000000000000// The following ~400 lines of code exists for exactly one purpose, which is // to optimize this code: // // byte_slice.iter().position(|&b| b > 0x7F).unwrap_or(byte_slice.len()) // // Yes... Overengineered is a word that comes to mind, but this is effectively // a very similar problem to memchr, and virtually nobody has been able to // resist optimizing the crap out of that (except for perhaps the BSD and MUSL // folks). In particular, this routine makes a very common case (ASCII) very // fast, which seems worth it. We do stop short of adding AVX variants of the // code below in order to retain our sanity and also to avoid needing to deal // with runtime target feature detection. RESIST! // // In order to understand the SIMD version below, it would be good to read this // comment describing how my memchr routine works: // https://github.com/BurntSushi/rust-memchr/blob/b0a29f267f4a7fad8ffcc8fe8377a06498202883/src/x86/sse2.rs#L19-L106 // // The primary difference with memchr is that for ASCII, we can do a bit less // work. In particular, we don't need to detect the presence of a specific // byte, but rather, whether any byte has its most significant bit set. That // means we can effectively skip the _mm_cmpeq_epi8 step and jump straight to // _mm_movemask_epi8. #[cfg(any(test, miri, not(target_arch = "x86_64")))] const USIZE_BYTES: usize = core::mem::size_of::(); #[cfg(any(test, miri, not(target_arch = "x86_64")))] const FALLBACK_LOOP_SIZE: usize = 2 * USIZE_BYTES; // This is a mask where the most significant bit of each byte in the usize // is set. We test this bit to determine whether a character is ASCII or not. // Namely, a single byte is regarded as an ASCII codepoint if and only if it's // most significant bit is not set. #[cfg(any(test, miri, not(target_arch = "x86_64")))] const ASCII_MASK_U64: u64 = 0x8080808080808080; #[cfg(any(test, miri, not(target_arch = "x86_64")))] const ASCII_MASK: usize = ASCII_MASK_U64 as usize; /// Returns the index of the first non ASCII byte in the given slice. /// /// If slice only contains ASCII bytes, then the length of the slice is /// returned. pub fn first_non_ascii_byte(slice: &[u8]) -> usize { #[cfg(any(miri, not(target_arch = "x86_64")))] { first_non_ascii_byte_fallback(slice) } #[cfg(all(not(miri), target_arch = "x86_64"))] { first_non_ascii_byte_sse2(slice) } } #[cfg(any(test, miri, not(target_arch = "x86_64")))] fn first_non_ascii_byte_fallback(slice: &[u8]) -> usize { let align = USIZE_BYTES - 1; let start_ptr = slice.as_ptr(); let end_ptr = slice[slice.len()..].as_ptr(); let mut ptr = start_ptr; unsafe { if slice.len() < USIZE_BYTES { return first_non_ascii_byte_slow(start_ptr, end_ptr, ptr); } let chunk = read_unaligned_usize(ptr); let mask = chunk & ASCII_MASK; if mask != 0 { return first_non_ascii_byte_mask(mask); } ptr = ptr_add(ptr, USIZE_BYTES - (start_ptr as usize & align)); debug_assert!(ptr > start_ptr); debug_assert!(ptr_sub(end_ptr, USIZE_BYTES) >= start_ptr); if slice.len() >= FALLBACK_LOOP_SIZE { while ptr <= ptr_sub(end_ptr, FALLBACK_LOOP_SIZE) { debug_assert_eq!(0, (ptr as usize) % USIZE_BYTES); let a = *(ptr as *const usize); let b = *(ptr_add(ptr, USIZE_BYTES) as *const usize); if (a | b) & ASCII_MASK != 0 { // What a kludge. We wrap the position finding code into // a non-inlineable function, which makes the codegen in // the tight loop above a bit better by avoiding a // couple extra movs. We pay for it by two additional // stores, but only in the case of finding a non-ASCII // byte. #[inline(never)] unsafe fn findpos( start_ptr: *const u8, ptr: *const u8, ) -> usize { let a = *(ptr as *const usize); let b = *(ptr_add(ptr, USIZE_BYTES) as *const usize); let mut at = sub(ptr, start_ptr); let maska = a & ASCII_MASK; if maska != 0 { return at + first_non_ascii_byte_mask(maska); } at += USIZE_BYTES; let maskb = b & ASCII_MASK; debug_assert!(maskb != 0); return at + first_non_ascii_byte_mask(maskb); } return findpos(start_ptr, ptr); } ptr = ptr_add(ptr, FALLBACK_LOOP_SIZE); } } first_non_ascii_byte_slow(start_ptr, end_ptr, ptr) } } #[cfg(all(not(miri), target_arch = "x86_64"))] fn first_non_ascii_byte_sse2(slice: &[u8]) -> usize { use core::arch::x86_64::*; const VECTOR_SIZE: usize = core::mem::size_of::<__m128i>(); const VECTOR_ALIGN: usize = VECTOR_SIZE - 1; const VECTOR_LOOP_SIZE: usize = 4 * VECTOR_SIZE; let start_ptr = slice.as_ptr(); let end_ptr = slice[slice.len()..].as_ptr(); let mut ptr = start_ptr; unsafe { if slice.len() < VECTOR_SIZE { return first_non_ascii_byte_slow(start_ptr, end_ptr, ptr); } let chunk = _mm_loadu_si128(ptr as *const __m128i); let mask = _mm_movemask_epi8(chunk); if mask != 0 { return mask.trailing_zeros() as usize; } ptr = ptr.add(VECTOR_SIZE - (start_ptr as usize & VECTOR_ALIGN)); debug_assert!(ptr > start_ptr); debug_assert!(end_ptr.sub(VECTOR_SIZE) >= start_ptr); if slice.len() >= VECTOR_LOOP_SIZE { while ptr <= ptr_sub(end_ptr, VECTOR_LOOP_SIZE) { debug_assert_eq!(0, (ptr as usize) % VECTOR_SIZE); let a = _mm_load_si128(ptr as *const __m128i); let b = _mm_load_si128(ptr.add(VECTOR_SIZE) as *const __m128i); let c = _mm_load_si128(ptr.add(2 * VECTOR_SIZE) as *const __m128i); let d = _mm_load_si128(ptr.add(3 * VECTOR_SIZE) as *const __m128i); let or1 = _mm_or_si128(a, b); let or2 = _mm_or_si128(c, d); let or3 = _mm_or_si128(or1, or2); if _mm_movemask_epi8(or3) != 0 { let mut at = sub(ptr, start_ptr); let mask = _mm_movemask_epi8(a); if mask != 0 { return at + mask.trailing_zeros() as usize; } at += VECTOR_SIZE; let mask = _mm_movemask_epi8(b); if mask != 0 { return at + mask.trailing_zeros() as usize; } at += VECTOR_SIZE; let mask = _mm_movemask_epi8(c); if mask != 0 { return at + mask.trailing_zeros() as usize; } at += VECTOR_SIZE; let mask = _mm_movemask_epi8(d); debug_assert!(mask != 0); return at + mask.trailing_zeros() as usize; } ptr = ptr_add(ptr, VECTOR_LOOP_SIZE); } } while ptr <= end_ptr.sub(VECTOR_SIZE) { debug_assert!(sub(end_ptr, ptr) >= VECTOR_SIZE); let chunk = _mm_loadu_si128(ptr as *const __m128i); let mask = _mm_movemask_epi8(chunk); if mask != 0 { return sub(ptr, start_ptr) + mask.trailing_zeros() as usize; } ptr = ptr.add(VECTOR_SIZE); } first_non_ascii_byte_slow(start_ptr, end_ptr, ptr) } } #[inline(always)] unsafe fn first_non_ascii_byte_slow( start_ptr: *const u8, end_ptr: *const u8, mut ptr: *const u8, ) -> usize { debug_assert!(start_ptr <= ptr); debug_assert!(ptr <= end_ptr); while ptr < end_ptr { if *ptr > 0x7F { return sub(ptr, start_ptr); } ptr = ptr.offset(1); } sub(end_ptr, start_ptr) } /// Compute the position of the first ASCII byte in the given mask. /// /// The mask should be computed by `chunk & ASCII_MASK`, where `chunk` is /// 8 contiguous bytes of the slice being checked where *at least* one of those /// bytes is not an ASCII byte. /// /// The position returned is always in the inclusive range [0, 7]. #[cfg(any(test, miri, not(target_arch = "x86_64")))] fn first_non_ascii_byte_mask(mask: usize) -> usize { #[cfg(target_endian = "little")] { mask.trailing_zeros() as usize / 8 } #[cfg(target_endian = "big")] { mask.leading_zeros() as usize / 8 } } /// Increment the given pointer by the given amount. unsafe fn ptr_add(ptr: *const u8, amt: usize) -> *const u8 { debug_assert!(amt < ::core::isize::MAX as usize); ptr.offset(amt as isize) } /// Decrement the given pointer by the given amount. unsafe fn ptr_sub(ptr: *const u8, amt: usize) -> *const u8 { debug_assert!(amt < ::core::isize::MAX as usize); ptr.offset((amt as isize).wrapping_neg()) } #[cfg(any(test, miri, not(target_arch = "x86_64")))] unsafe fn read_unaligned_usize(ptr: *const u8) -> usize { use core::ptr; let mut n: usize = 0; ptr::copy_nonoverlapping(ptr, &mut n as *mut _ as *mut u8, USIZE_BYTES); n } /// Subtract `b` from `a` and return the difference. `a` should be greater than /// or equal to `b`. fn sub(a: *const u8, b: *const u8) -> usize { debug_assert!(a >= b); (a as usize) - (b as usize) } #[cfg(test)] mod tests { use super::*; // Our testing approach here is to try and exhaustively test every case. // This includes the position at which a non-ASCII byte occurs in addition // to the alignment of the slice that we're searching. #[test] fn positive_fallback_forward() { for i in 0..517 { let s = "a".repeat(i); assert_eq!( i, first_non_ascii_byte_fallback(s.as_bytes()), "i: {:?}, len: {:?}, s: {:?}", i, s.len(), s ); } } #[test] #[cfg(target_arch = "x86_64")] #[cfg(not(miri))] fn positive_sse2_forward() { for i in 0..517 { let b = "a".repeat(i).into_bytes(); assert_eq!(b.len(), first_non_ascii_byte_sse2(&b)); } } #[test] #[cfg(not(miri))] fn negative_fallback_forward() { for i in 0..517 { for align in 0..65 { let mut s = "a".repeat(i); s.push_str("☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃"); let s = s.get(align..).unwrap_or(""); assert_eq!( i.saturating_sub(align), first_non_ascii_byte_fallback(s.as_bytes()), "i: {:?}, align: {:?}, len: {:?}, s: {:?}", i, align, s.len(), s ); } } } #[test] #[cfg(target_arch = "x86_64")] #[cfg(not(miri))] fn negative_sse2_forward() { for i in 0..517 { for align in 0..65 { let mut s = "a".repeat(i); s.push_str("☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃☃"); let s = s.get(align..).unwrap_or(""); assert_eq!( i.saturating_sub(align), first_non_ascii_byte_sse2(s.as_bytes()), "i: {:?}, align: {:?}, len: {:?}, s: {:?}", i, align, s.len(), s ); } } } } bstr-1.7.0/src/bstr.rs000064400000000000000000000055141046102023000127170ustar 00000000000000use core::mem; #[cfg(feature = "alloc")] use alloc::boxed::Box; /// A wrapper for `&[u8]` that provides convenient string oriented trait impls. /// /// If you need ownership or a growable byte string buffer, then use /// [`BString`](struct.BString.html). /// /// Using a `&BStr` is just like using a `&[u8]`, since `BStr` /// implements `Deref` to `[u8]`. So all methods available on `[u8]` /// are also available on `BStr`. /// /// # Representation /// /// A `&BStr` has the same representation as a `&str`. That is, a `&BStr` is /// a fat pointer which consists of a pointer to some bytes and a length. /// /// # Trait implementations /// /// The `BStr` type has a number of trait implementations, and in particular, /// defines equality and ordinal comparisons between `&BStr`, `&str` and /// `&[u8]` for convenience. /// /// The `Debug` implementation for `BStr` shows its bytes as a normal string. /// For invalid UTF-8, hex escape sequences are used. /// /// The `Display` implementation behaves as if `BStr` were first lossily /// converted to a `str`. Invalid UTF-8 bytes are substituted with the Unicode /// replacement codepoint, which looks like this: �. #[derive(Hash)] #[repr(transparent)] pub struct BStr { pub(crate) bytes: [u8], } impl BStr { /// Directly creates a `BStr` slice from anything that can be converted /// to a byte slice. /// /// This is very similar to the [`B`](crate::B) function, except this /// returns a `&BStr` instead of a `&[u8]`. /// /// This is a cost-free conversion. /// /// # Example /// /// You can create `BStr`'s from byte arrays, byte slices or even string /// slices: /// /// ``` /// use bstr::BStr; /// /// let a = BStr::new(b"abc"); /// let b = BStr::new(&b"abc"[..]); /// let c = BStr::new("abc"); /// /// assert_eq!(a, b); /// assert_eq!(a, c); /// ``` #[inline] pub fn new<'a, B: ?Sized + AsRef<[u8]>>(bytes: &'a B) -> &'a BStr { BStr::from_bytes(bytes.as_ref()) } #[inline] pub(crate) fn new_mut>( bytes: &mut B, ) -> &mut BStr { BStr::from_bytes_mut(bytes.as_mut()) } #[inline] pub(crate) fn from_bytes(slice: &[u8]) -> &BStr { unsafe { mem::transmute(slice) } } #[inline] pub(crate) fn from_bytes_mut(slice: &mut [u8]) -> &mut BStr { unsafe { mem::transmute(slice) } } #[inline] #[cfg(feature = "alloc")] pub(crate) fn from_boxed_bytes(slice: Box<[u8]>) -> Box { unsafe { Box::from_raw(Box::into_raw(slice) as _) } } #[inline] #[cfg(feature = "alloc")] pub(crate) fn into_boxed_bytes(slice: Box) -> Box<[u8]> { unsafe { Box::from_raw(Box::into_raw(slice) as _) } } #[inline] pub(crate) fn as_bytes(&self) -> &[u8] { &self.bytes } } bstr-1.7.0/src/bstring.rs000064400000000000000000000050471046102023000134160ustar 00000000000000use alloc::vec::Vec; use crate::bstr::BStr; /// A wrapper for `Vec` that provides convenient string oriented trait /// impls. /// /// A `BString` has ownership over its contents and corresponds to /// a growable or shrinkable buffer. Its borrowed counterpart is a /// [`BStr`](struct.BStr.html), called a byte string slice. /// /// Using a `BString` is just like using a `Vec`, since `BString` /// implements `Deref` to `Vec`. So all methods available on `Vec` /// are also available on `BString`. /// /// # Examples /// /// You can create a new `BString` from a `Vec` via a `From` impl: /// /// ``` /// use bstr::BString; /// /// let s = BString::from("Hello, world!"); /// ``` /// /// # Deref /// /// The `BString` type implements `Deref` and `DerefMut`, where the target /// types are `&Vec` and `&mut Vec`, respectively. `Deref` permits all of the /// methods defined on `Vec` to be implicitly callable on any `BString`. /// /// For more information about how deref works, see the documentation for the /// [`std::ops::Deref`](https://doc.rust-lang.org/std/ops/trait.Deref.html) /// trait. /// /// # Representation /// /// A `BString` has the same representation as a `Vec` and a `String`. /// That is, it is made up of three word sized components: a pointer to a /// region of memory containing the bytes, a length and a capacity. #[derive(Clone, Hash)] pub struct BString { bytes: Vec, } impl BString { /// Constructs a new `BString` from the given [`Vec`]. /// /// # Examples /// /// ``` /// use bstr::BString; /// /// let mut b = BString::new(Vec::with_capacity(10)); /// ``` /// /// This function is `const`: /// /// ``` /// use bstr::BString; /// /// const B: BString = BString::new(vec![]); /// ``` #[inline] pub const fn new(bytes: Vec) -> BString { BString { bytes } } #[inline] pub(crate) fn as_bytes(&self) -> &[u8] { &self.bytes } #[inline] pub(crate) fn as_bytes_mut(&mut self) -> &mut [u8] { &mut self.bytes } #[inline] pub(crate) fn as_bstr(&self) -> &BStr { BStr::new(&self.bytes) } #[inline] pub(crate) fn as_mut_bstr(&mut self) -> &mut BStr { BStr::new_mut(&mut self.bytes) } #[inline] pub(crate) fn as_vec(&self) -> &Vec { &self.bytes } #[inline] pub(crate) fn as_vec_mut(&mut self) -> &mut Vec { &mut self.bytes } #[inline] pub(crate) fn into_vec(self) -> Vec { self.bytes } } bstr-1.7.0/src/byteset/mod.rs000064400000000000000000000070551046102023000142050ustar 00000000000000use memchr::{memchr, memchr2, memchr3, memrchr, memrchr2, memrchr3}; mod scalar; #[inline] fn build_table(byteset: &[u8]) -> [u8; 256] { let mut table = [0u8; 256]; for &b in byteset { table[b as usize] = 1; } table } #[inline] pub(crate) fn find(haystack: &[u8], byteset: &[u8]) -> Option { match byteset.len() { 0 => return None, 1 => memchr(byteset[0], haystack), 2 => memchr2(byteset[0], byteset[1], haystack), 3 => memchr3(byteset[0], byteset[1], byteset[2], haystack), _ => { let table = build_table(byteset); scalar::forward_search_bytes(haystack, |b| table[b as usize] != 0) } } } #[inline] pub(crate) fn rfind(haystack: &[u8], byteset: &[u8]) -> Option { match byteset.len() { 0 => return None, 1 => memrchr(byteset[0], haystack), 2 => memrchr2(byteset[0], byteset[1], haystack), 3 => memrchr3(byteset[0], byteset[1], byteset[2], haystack), _ => { let table = build_table(byteset); scalar::reverse_search_bytes(haystack, |b| table[b as usize] != 0) } } } #[inline] pub(crate) fn find_not(haystack: &[u8], byteset: &[u8]) -> Option { if haystack.is_empty() { return None; } match byteset.len() { 0 => return Some(0), 1 => scalar::inv_memchr(byteset[0], haystack), 2 => scalar::forward_search_bytes(haystack, |b| { b != byteset[0] && b != byteset[1] }), 3 => scalar::forward_search_bytes(haystack, |b| { b != byteset[0] && b != byteset[1] && b != byteset[2] }), _ => { let table = build_table(byteset); scalar::forward_search_bytes(haystack, |b| table[b as usize] == 0) } } } #[inline] pub(crate) fn rfind_not(haystack: &[u8], byteset: &[u8]) -> Option { if haystack.is_empty() { return None; } match byteset.len() { 0 => return Some(haystack.len() - 1), 1 => scalar::inv_memrchr(byteset[0], haystack), 2 => scalar::reverse_search_bytes(haystack, |b| { b != byteset[0] && b != byteset[1] }), 3 => scalar::reverse_search_bytes(haystack, |b| { b != byteset[0] && b != byteset[1] && b != byteset[2] }), _ => { let table = build_table(byteset); scalar::reverse_search_bytes(haystack, |b| table[b as usize] == 0) } } } #[cfg(all(test, feature = "std", not(miri)))] mod tests { quickcheck::quickcheck! { fn qc_byteset_forward_matches_naive( haystack: Vec, needles: Vec ) -> bool { super::find(&haystack, &needles) == haystack.iter().position(|b| needles.contains(b)) } fn qc_byteset_backwards_matches_naive( haystack: Vec, needles: Vec ) -> bool { super::rfind(&haystack, &needles) == haystack.iter().rposition(|b| needles.contains(b)) } fn qc_byteset_forward_not_matches_naive( haystack: Vec, needles: Vec ) -> bool { super::find_not(&haystack, &needles) == haystack.iter().position(|b| !needles.contains(b)) } fn qc_byteset_backwards_not_matches_naive( haystack: Vec, needles: Vec ) -> bool { super::rfind_not(&haystack, &needles) == haystack.iter().rposition(|b| !needles.contains(b)) } } } bstr-1.7.0/src/byteset/scalar.rs000064400000000000000000000227501046102023000146720ustar 00000000000000// This is adapted from `fallback.rs` from rust-memchr. It's modified to return // the 'inverse' query of memchr, e.g. finding the first byte not in the // provided set. This is simple for the 1-byte case. use core::{cmp, usize}; const USIZE_BYTES: usize = core::mem::size_of::(); // The number of bytes to loop at in one iteration of memchr/memrchr. const LOOP_SIZE: usize = 2 * USIZE_BYTES; /// Repeat the given byte into a word size number. That is, every 8 bits /// is equivalent to the given byte. For example, if `b` is `\x4E` or /// `01001110` in binary, then the returned value on a 32-bit system would be: /// `01001110_01001110_01001110_01001110`. #[inline(always)] fn repeat_byte(b: u8) -> usize { (b as usize) * (usize::MAX / 255) } pub fn inv_memchr(n1: u8, haystack: &[u8]) -> Option { let vn1 = repeat_byte(n1); let confirm = |byte| byte != n1; let loop_size = cmp::min(LOOP_SIZE, haystack.len()); let align = USIZE_BYTES - 1; let start_ptr = haystack.as_ptr(); unsafe { let end_ptr = haystack.as_ptr().add(haystack.len()); let mut ptr = start_ptr; if haystack.len() < USIZE_BYTES { return forward_search(start_ptr, end_ptr, ptr, confirm); } let chunk = read_unaligned_usize(ptr); if (chunk ^ vn1) != 0 { return forward_search(start_ptr, end_ptr, ptr, confirm); } ptr = ptr.add(USIZE_BYTES - (start_ptr as usize & align)); debug_assert!(ptr > start_ptr); debug_assert!(end_ptr.sub(USIZE_BYTES) >= start_ptr); while loop_size == LOOP_SIZE && ptr <= end_ptr.sub(loop_size) { debug_assert_eq!(0, (ptr as usize) % USIZE_BYTES); let a = *(ptr as *const usize); let b = *(ptr.add(USIZE_BYTES) as *const usize); let eqa = (a ^ vn1) != 0; let eqb = (b ^ vn1) != 0; if eqa || eqb { break; } ptr = ptr.add(LOOP_SIZE); } forward_search(start_ptr, end_ptr, ptr, confirm) } } /// Return the last index not matching the byte `x` in `text`. pub fn inv_memrchr(n1: u8, haystack: &[u8]) -> Option { let vn1 = repeat_byte(n1); let confirm = |byte| byte != n1; let loop_size = cmp::min(LOOP_SIZE, haystack.len()); let align = USIZE_BYTES - 1; let start_ptr = haystack.as_ptr(); unsafe { let end_ptr = haystack.as_ptr().add(haystack.len()); let mut ptr = end_ptr; if haystack.len() < USIZE_BYTES { return reverse_search(start_ptr, end_ptr, ptr, confirm); } let chunk = read_unaligned_usize(ptr.sub(USIZE_BYTES)); if (chunk ^ vn1) != 0 { return reverse_search(start_ptr, end_ptr, ptr, confirm); } ptr = ptr.sub(end_ptr as usize & align); debug_assert!(start_ptr <= ptr && ptr <= end_ptr); while loop_size == LOOP_SIZE && ptr >= start_ptr.add(loop_size) { debug_assert_eq!(0, (ptr as usize) % USIZE_BYTES); let a = *(ptr.sub(2 * USIZE_BYTES) as *const usize); let b = *(ptr.sub(1 * USIZE_BYTES) as *const usize); let eqa = (a ^ vn1) != 0; let eqb = (b ^ vn1) != 0; if eqa || eqb { break; } ptr = ptr.sub(loop_size); } reverse_search(start_ptr, end_ptr, ptr, confirm) } } #[inline(always)] unsafe fn forward_search bool>( start_ptr: *const u8, end_ptr: *const u8, mut ptr: *const u8, confirm: F, ) -> Option { debug_assert!(start_ptr <= ptr); debug_assert!(ptr <= end_ptr); while ptr < end_ptr { if confirm(*ptr) { return Some(sub(ptr, start_ptr)); } ptr = ptr.offset(1); } None } #[inline(always)] unsafe fn reverse_search bool>( start_ptr: *const u8, end_ptr: *const u8, mut ptr: *const u8, confirm: F, ) -> Option { debug_assert!(start_ptr <= ptr); debug_assert!(ptr <= end_ptr); while ptr > start_ptr { ptr = ptr.offset(-1); if confirm(*ptr) { return Some(sub(ptr, start_ptr)); } } None } unsafe fn read_unaligned_usize(ptr: *const u8) -> usize { (ptr as *const usize).read_unaligned() } /// Subtract `b` from `a` and return the difference. `a` should be greater than /// or equal to `b`. fn sub(a: *const u8, b: *const u8) -> usize { debug_assert!(a >= b); (a as usize) - (b as usize) } /// Safe wrapper around `forward_search` #[inline] pub(crate) fn forward_search_bytes bool>( s: &[u8], confirm: F, ) -> Option { unsafe { let start = s.as_ptr(); let end = start.add(s.len()); forward_search(start, end, start, confirm) } } /// Safe wrapper around `reverse_search` #[inline] pub(crate) fn reverse_search_bytes bool>( s: &[u8], confirm: F, ) -> Option { unsafe { let start = s.as_ptr(); let end = start.add(s.len()); reverse_search(start, end, end, confirm) } } #[cfg(all(test, feature = "std"))] mod tests { use super::{inv_memchr, inv_memrchr}; // search string, search byte, inv_memchr result, inv_memrchr result. // these are expanded into a much larger set of tests in build_tests const TESTS: &[(&[u8], u8, usize, usize)] = &[ (b"z", b'a', 0, 0), (b"zz", b'a', 0, 1), (b"aza", b'a', 1, 1), (b"zaz", b'a', 0, 2), (b"zza", b'a', 0, 1), (b"zaa", b'a', 0, 0), (b"zzz", b'a', 0, 2), ]; type TestCase = (Vec, u8, Option<(usize, usize)>); fn build_tests() -> Vec { #[cfg(not(miri))] const MAX_PER: usize = 515; #[cfg(miri)] const MAX_PER: usize = 10; let mut result = vec![]; for &(search, byte, fwd_pos, rev_pos) in TESTS { result.push((search.to_vec(), byte, Some((fwd_pos, rev_pos)))); for i in 1..MAX_PER { // add a bunch of copies of the search byte to the end. let mut suffixed: Vec = search.into(); suffixed.extend(std::iter::repeat(byte).take(i)); result.push((suffixed, byte, Some((fwd_pos, rev_pos)))); // add a bunch of copies of the search byte to the start. let mut prefixed: Vec = std::iter::repeat(byte).take(i).collect(); prefixed.extend(search); result.push(( prefixed, byte, Some((fwd_pos + i, rev_pos + i)), )); // add a bunch of copies of the search byte to both ends. let mut surrounded: Vec = std::iter::repeat(byte).take(i).collect(); surrounded.extend(search); surrounded.extend(std::iter::repeat(byte).take(i)); result.push(( surrounded, byte, Some((fwd_pos + i, rev_pos + i)), )); } } // build non-matching tests for several sizes for i in 0..MAX_PER { result.push(( std::iter::repeat(b'\0').take(i).collect(), b'\0', None, )); } result } #[test] fn test_inv_memchr() { use crate::{ByteSlice, B}; #[cfg(not(miri))] const MAX_OFFSET: usize = 130; #[cfg(miri)] const MAX_OFFSET: usize = 13; for (search, byte, matching) in build_tests() { assert_eq!( inv_memchr(byte, &search), matching.map(|m| m.0), "inv_memchr when searching for {:?} in {:?}", byte as char, // better printing B(&search).as_bstr(), ); assert_eq!( inv_memrchr(byte, &search), matching.map(|m| m.1), "inv_memrchr when searching for {:?} in {:?}", byte as char, // better printing B(&search).as_bstr(), ); // Test a rather large number off offsets for potential alignment // issues. for offset in 1..MAX_OFFSET { if offset >= search.len() { break; } // If this would cause us to shift the results off the end, // skip it so that we don't have to recompute them. if let Some((f, r)) = matching { if offset > f || offset > r { break; } } let realigned = &search[offset..]; let forward_pos = matching.map(|m| m.0 - offset); let reverse_pos = matching.map(|m| m.1 - offset); assert_eq!( inv_memchr(byte, &realigned), forward_pos, "inv_memchr when searching (realigned by {}) for {:?} in {:?}", offset, byte as char, realigned.as_bstr(), ); assert_eq!( inv_memrchr(byte, &realigned), reverse_pos, "inv_memrchr when searching (realigned by {}) for {:?} in {:?}", offset, byte as char, realigned.as_bstr(), ); } } } } bstr-1.7.0/src/escape_bytes.rs000064400000000000000000000374251046102023000144210ustar 00000000000000/// An iterator of `char` values that represent an escaping of arbitrary bytes. /// /// The lifetime parameter `'a` refers to the lifetime of the bytes being /// escaped. /// /// This iterator is created by the /// [`ByteSlice::escape_bytes`](crate::ByteSlice::escape_bytes) method. #[derive(Clone, Debug)] pub struct EscapeBytes<'a> { remaining: &'a [u8], state: EscapeState, } impl<'a> EscapeBytes<'a> { pub(crate) fn new(bytes: &'a [u8]) -> EscapeBytes { EscapeBytes { remaining: bytes, state: EscapeState::Start } } } impl<'a> Iterator for EscapeBytes<'a> { type Item = char; #[inline] fn next(&mut self) -> Option { use self::EscapeState::*; match self.state { Start => { let byte = match crate::decode_utf8(self.remaining) { (None, 0) => return None, // If we see invalid UTF-8 or ASCII, then we always just // peel one byte off. If it's printable ASCII, we'll pass // it through as-is below. Otherwise, below, it will get // escaped in some way. (None, _) | (Some(_), 1) => { let byte = self.remaining[0]; self.remaining = &self.remaining[1..]; byte } // For any valid UTF-8 that is not ASCII, we pass it // through as-is. We don't do any Unicode escaping. (Some(ch), size) => { self.remaining = &self.remaining[size..]; return Some(ch); } }; self.state = match byte { 0x21..=0x5B | 0x5D..=0x7E => { return Some(char::from(byte)) } b'\0' => SpecialEscape('0'), b'\n' => SpecialEscape('n'), b'\r' => SpecialEscape('r'), b'\t' => SpecialEscape('t'), b'\\' => SpecialEscape('\\'), _ => HexEscapeX(byte), }; Some('\\') } SpecialEscape(ch) => { self.state = Start; Some(ch) } HexEscapeX(byte) => { self.state = HexEscapeHighNybble(byte); Some('x') } HexEscapeHighNybble(byte) => { self.state = HexEscapeLowNybble(byte); let nybble = byte >> 4; Some(hexdigit_to_char(nybble)) } HexEscapeLowNybble(byte) => { self.state = Start; let nybble = byte & 0xF; Some(hexdigit_to_char(nybble)) } } } } impl<'a> core::fmt::Display for EscapeBytes<'a> { fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { use core::fmt::Write; for ch in self.clone() { f.write_char(ch)?; } Ok(()) } } /// The state used by the FSM in the escaping iterator. #[derive(Clone, Debug)] enum EscapeState { /// Read and remove the next byte from 'remaining'. If 'remaining' is /// empty, then return None. Otherwise, escape the byte according to the /// following rules or emit it as-is. /// /// If it's \n, \r, \t, \\ or \0, then emit a '\' and set the current /// state to 'SpecialEscape(n | r | t | \ | 0)'. Otherwise, if the 'byte' /// is not in [\x21-\x5B\x5D-\x7E], then emit a '\' and set the state to /// to 'HexEscapeX(byte)'. Start, /// Emit the given codepoint as is. This assumes '\' has just been emitted. /// Then set the state to 'Start'. SpecialEscape(char), /// Emit the 'x' part of a hex escape. This assumes '\' has just been /// emitted. Then set the state to 'HexEscapeHighNybble(byte)'. HexEscapeX(u8), /// Emit the high nybble of the byte as a hexadecimal digit. This /// assumes '\x' has just been emitted. Then set the state to /// 'HexEscapeLowNybble(byte)'. HexEscapeHighNybble(u8), /// Emit the low nybble of the byte as a hexadecimal digit. This assume /// '\xZ' has just been emitted, where 'Z' is the high nybble of this byte. /// Then set the state to 'Start'. HexEscapeLowNybble(u8), } /// An iterator of `u8` values that represent an unescaping of a sequence of /// codepoints. /// /// The type parameter `I` refers to the iterator of codepoints that is /// unescaped. /// /// Currently this iterator is not exposed in the crate API, and instead all /// we expose is a `ByteVec::unescape` method. Which of course requires an /// alloc. That's the most convenient form of this, but in theory, we could /// expose this for core-only use cases too. I'm just not quite sure what the /// API should be. #[derive(Clone, Debug)] #[cfg(feature = "alloc")] pub(crate) struct UnescapeBytes { it: I, state: UnescapeState, } #[cfg(feature = "alloc")] impl> UnescapeBytes { pub(crate) fn new>( t: T, ) -> UnescapeBytes { UnescapeBytes { it: t.into_iter(), state: UnescapeState::Start } } } #[cfg(feature = "alloc")] impl> Iterator for UnescapeBytes { type Item = u8; fn next(&mut self) -> Option { use self::UnescapeState::*; loop { match self.state { Start => { let ch = self.it.next()?; match ch { '\\' => { self.state = Escape; } ch => { self.state = UnescapeState::bytes(&[], ch); } } } Bytes { buf, mut cur, len } => { let byte = buf[cur]; cur += 1; if cur >= len { self.state = Start; } else { self.state = Bytes { buf, cur, len }; } return Some(byte); } Escape => { let ch = match self.it.next() { Some(ch) => ch, None => { self.state = Start; // Incomplete escape sequences unescape as // themselves. return Some(b'\\'); } }; match ch { '0' => { self.state = Start; return Some(b'\x00'); } '\\' => { self.state = Start; return Some(b'\\'); } 'r' => { self.state = Start; return Some(b'\r'); } 'n' => { self.state = Start; return Some(b'\n'); } 't' => { self.state = Start; return Some(b'\t'); } 'x' => { self.state = HexFirst; } ch => { // An invalid escape sequence unescapes as itself. self.state = UnescapeState::bytes(&[b'\\'], ch); } } } HexFirst => { let ch = match self.it.next() { Some(ch) => ch, None => { // An incomplete escape sequence unescapes as // itself. self.state = UnescapeState::bytes_raw(&[b'x']); return Some(b'\\'); } }; match ch { '0'..='9' | 'A'..='F' | 'a'..='f' => { self.state = HexSecond(ch); } ch => { // An invalid escape sequence unescapes as itself. self.state = UnescapeState::bytes(&[b'x'], ch); return Some(b'\\'); } } } HexSecond(first) => { let second = match self.it.next() { Some(ch) => ch, None => { // An incomplete escape sequence unescapes as // itself. self.state = UnescapeState::bytes(&[b'x'], first); return Some(b'\\'); } }; match second { '0'..='9' | 'A'..='F' | 'a'..='f' => { self.state = Start; let hinybble = char_to_hexdigit(first); let lonybble = char_to_hexdigit(second); let byte = hinybble << 4 | lonybble; return Some(byte); } ch => { // An invalid escape sequence unescapes as itself. self.state = UnescapeState::bytes2(&[b'x'], first, ch); return Some(b'\\'); } } } } } } } /// The state used by the FSM in the unescaping iterator. #[derive(Clone, Debug)] #[cfg(feature = "alloc")] enum UnescapeState { /// The start state. Look for an escape sequence, otherwise emit the next /// codepoint as-is. Start, /// Emit the byte at `buf[cur]`. /// /// This state should never be created when `cur >= len`. That is, when /// this state is visited, it is assumed that `cur < len`. Bytes { buf: [u8; 11], cur: usize, len: usize }, /// This state is entered after a `\` is seen. Escape, /// This state is entered after a `\x` is seen. HexFirst, /// This state is entered after a `\xN` is seen, where `N` is in /// `[0-9A-Fa-f]`. The given codepoint corresponds to `N`. HexSecond(char), } #[cfg(feature = "alloc")] impl UnescapeState { /// Create a new `Bytes` variant with the given slice. /// /// # Panics /// /// Panics if `bytes.len() > 11`. fn bytes_raw(bytes: &[u8]) -> UnescapeState { // This can be increased, you just need to make sure 'buf' in the // 'Bytes' state has enough room. assert!(bytes.len() <= 11, "no more than 11 bytes allowed"); let mut buf = [0; 11]; buf[..bytes.len()].copy_from_slice(bytes); UnescapeState::Bytes { buf, cur: 0, len: bytes.len() } } /// Create a new `Bytes` variant with the prefix byte slice, followed by /// the UTF-8 encoding of the given char. /// /// # Panics /// /// Panics if `prefix.len() > 3`. fn bytes(prefix: &[u8], ch: char) -> UnescapeState { // This can be increased, you just need to make sure 'buf' in the // 'Bytes' state has enough room. assert!(prefix.len() <= 3, "no more than 3 bytes allowed"); let mut buf = [0; 11]; buf[..prefix.len()].copy_from_slice(prefix); let chlen = ch.encode_utf8(&mut buf[prefix.len()..]).len(); UnescapeState::Bytes { buf, cur: 0, len: prefix.len() + chlen } } /// Create a new `Bytes` variant with the prefix byte slice, followed by /// the UTF-8 encoding of `ch1` and then `ch2`. /// /// # Panics /// /// Panics if `prefix.len() > 3`. fn bytes2(prefix: &[u8], ch1: char, ch2: char) -> UnescapeState { // This can be increased, you just need to make sure 'buf' in the // 'Bytes' state has enough room. assert!(prefix.len() <= 3, "no more than 3 bytes allowed"); let mut buf = [0; 11]; buf[..prefix.len()].copy_from_slice(prefix); let len1 = ch1.encode_utf8(&mut buf[prefix.len()..]).len(); let len2 = ch2.encode_utf8(&mut buf[prefix.len() + len1..]).len(); UnescapeState::Bytes { buf, cur: 0, len: prefix.len() + len1 + len2 } } } /// Convert the given codepoint to its corresponding hexadecimal digit. /// /// # Panics /// /// This panics if `ch` is not in `[0-9A-Fa-f]`. #[cfg(feature = "alloc")] fn char_to_hexdigit(ch: char) -> u8 { u8::try_from(ch.to_digit(16).unwrap()).unwrap() } /// Convert the given hexadecimal digit to its corresponding codepoint. /// /// # Panics /// /// This panics when `digit > 15`. fn hexdigit_to_char(digit: u8) -> char { char::from_digit(u32::from(digit), 16).unwrap().to_ascii_uppercase() } #[cfg(all(test, feature = "std"))] mod tests { use crate::BString; use super::*; #[allow(non_snake_case)] fn B>(bytes: B) -> BString { BString::from(bytes.as_ref()) } fn e>(bytes: B) -> String { EscapeBytes::new(bytes.as_ref()).to_string() } fn u(string: &str) -> BString { UnescapeBytes::new(string.chars()).collect() } #[test] fn escape() { assert_eq!(r"a", e(br"a")); assert_eq!(r"\\x61", e(br"\x61")); assert_eq!(r"a", e(b"\x61")); assert_eq!(r"~", e(b"\x7E")); assert_eq!(r"\x7F", e(b"\x7F")); assert_eq!(r"\n", e(b"\n")); assert_eq!(r"\r", e(b"\r")); assert_eq!(r"\t", e(b"\t")); assert_eq!(r"\\", e(b"\\")); assert_eq!(r"\0", e(b"\0")); assert_eq!(r"\0", e(b"\x00")); assert_eq!(r"\x88", e(b"\x88")); assert_eq!(r"\x8F", e(b"\x8F")); assert_eq!(r"\xF8", e(b"\xF8")); assert_eq!(r"\xFF", e(b"\xFF")); assert_eq!(r"\xE2", e(b"\xE2")); assert_eq!(r"\xE2\x98", e(b"\xE2\x98")); assert_eq!(r"☃", e(b"\xE2\x98\x83")); assert_eq!(r"\xF0", e(b"\xF0")); assert_eq!(r"\xF0\x9F", e(b"\xF0\x9F")); assert_eq!(r"\xF0\x9F\x92", e(b"\xF0\x9F\x92")); assert_eq!(r"💩", e(b"\xF0\x9F\x92\xA9")); } #[test] fn unescape() { assert_eq!(B(r"a"), u(r"a")); assert_eq!(B(r"\x61"), u(r"\\x61")); assert_eq!(B(r"a"), u(r"\x61")); assert_eq!(B(r"~"), u(r"\x7E")); assert_eq!(B(b"\x7F"), u(r"\x7F")); assert_eq!(B(b"\n"), u(r"\n")); assert_eq!(B(b"\r"), u(r"\r")); assert_eq!(B(b"\t"), u(r"\t")); assert_eq!(B(b"\\"), u(r"\\")); assert_eq!(B(b"\0"), u(r"\0")); assert_eq!(B(b"\0"), u(r"\x00")); assert_eq!(B(b"\x88"), u(r"\x88")); assert_eq!(B(b"\x8F"), u(r"\x8F")); assert_eq!(B(b"\xF8"), u(r"\xF8")); assert_eq!(B(b"\xFF"), u(r"\xFF")); assert_eq!(B(b"\xE2"), u(r"\xE2")); assert_eq!(B(b"\xE2\x98"), u(r"\xE2\x98")); assert_eq!(B("☃"), u(r"\xE2\x98\x83")); assert_eq!(B(b"\xF0"), u(r"\xf0")); assert_eq!(B(b"\xF0\x9F"), u(r"\xf0\x9f")); assert_eq!(B(b"\xF0\x9F\x92"), u(r"\xf0\x9f\x92")); assert_eq!(B("💩"), u(r"\xf0\x9f\x92\xa9")); } #[test] fn unescape_weird() { assert_eq!(B(b"\\"), u(r"\")); assert_eq!(B(b"\\"), u(r"\\")); assert_eq!(B(b"\\x"), u(r"\x")); assert_eq!(B(b"\\xA"), u(r"\xA")); assert_eq!(B(b"\\xZ"), u(r"\xZ")); assert_eq!(B(b"\\xZZ"), u(r"\xZZ")); assert_eq!(B(b"\\i"), u(r"\i")); assert_eq!(B(b"\\u"), u(r"\u")); assert_eq!(B(b"\\u{2603}"), u(r"\u{2603}")); } } bstr-1.7.0/src/ext_slice.rs000064400000000000000000003640761046102023000137370ustar 00000000000000use core::{iter, slice, str}; #[cfg(all(feature = "alloc", feature = "unicode"))] use alloc::vec; #[cfg(feature = "alloc")] use alloc::{borrow::Cow, string::String, vec::Vec}; #[cfg(feature = "std")] use std::{ffi::OsStr, path::Path}; use memchr::{memchr, memmem, memrchr}; use crate::escape_bytes::EscapeBytes; #[cfg(feature = "alloc")] use crate::ext_vec::ByteVec; #[cfg(feature = "unicode")] use crate::unicode::{ whitespace_len_fwd, whitespace_len_rev, GraphemeIndices, Graphemes, SentenceIndices, Sentences, WordIndices, Words, WordsWithBreakIndices, WordsWithBreaks, }; use crate::{ ascii, bstr::BStr, byteset, utf8::{self, CharIndices, Chars, Utf8Chunks, Utf8Error}, }; /// A short-hand constructor for building a `&[u8]`. /// /// This idiosyncratic constructor is useful for concisely building byte string /// slices. Its primary utility is in conveniently writing byte string literals /// in a uniform way. For example, consider this code that does not compile: /// /// ```ignore /// let strs = vec![b"a", b"xy"]; /// ``` /// /// The above code doesn't compile because the type of the byte string literal /// `b"a"` is `&'static [u8; 1]`, and the type of `b"xy"` is /// `&'static [u8; 2]`. Since their types aren't the same, they can't be stored /// in the same `Vec`. (This is dissimilar from normal Unicode string slices, /// where both `"a"` and `"xy"` have the same type of `&'static str`.) /// /// One way of getting the above code to compile is to convert byte strings to /// slices. You might try this: /// /// ```ignore /// let strs = vec![&b"a", &b"xy"]; /// ``` /// /// But this just creates values with type `& &'static [u8; 1]` and /// `& &'static [u8; 2]`. Instead, you need to force the issue like so: /// /// ``` /// let strs = vec![&b"a"[..], &b"xy"[..]]; /// // or /// let strs = vec![b"a".as_ref(), b"xy".as_ref()]; /// ``` /// /// But neither of these are particularly convenient to type, especially when /// it's something as common as a string literal. Thus, this constructor /// permits writing the following instead: /// /// ``` /// use bstr::B; /// /// let strs = vec![B("a"), B(b"xy")]; /// ``` /// /// Notice that this also lets you mix and match both string literals and byte /// string literals. This can be quite convenient! #[allow(non_snake_case)] #[inline] pub fn B<'a, B: ?Sized + AsRef<[u8]>>(bytes: &'a B) -> &'a [u8] { bytes.as_ref() } impl ByteSlice for [u8] { #[inline] fn as_bytes(&self) -> &[u8] { self } #[inline] fn as_bytes_mut(&mut self) -> &mut [u8] { self } } impl ByteSlice for [u8; N] { #[inline] fn as_bytes(&self) -> &[u8] { self } #[inline] fn as_bytes_mut(&mut self) -> &mut [u8] { self } } /// Ensure that callers cannot implement `ByteSlice` by making an /// umplementable trait its super trait. mod private { pub trait Sealed {} } impl private::Sealed for [u8] {} impl private::Sealed for [u8; N] {} /// A trait that extends `&[u8]` with string oriented methods. /// /// This trait is sealed and cannot be implemented outside of `bstr`. pub trait ByteSlice: private::Sealed { /// A method for accessing the raw bytes of this type. This is always a /// no-op and callers shouldn't care about it. This only exists for making /// the extension trait work. #[doc(hidden)] fn as_bytes(&self) -> &[u8]; /// A method for accessing the raw bytes of this type, mutably. This is /// always a no-op and callers shouldn't care about it. This only exists /// for making the extension trait work. #[doc(hidden)] fn as_bytes_mut(&mut self) -> &mut [u8]; /// Return this byte slice as a `&BStr`. /// /// Use `&BStr` is useful because of its `fmt::Debug` representation /// and various other trait implementations (such as `PartialEq` and /// `PartialOrd`). In particular, the `Debug` implementation for `BStr` /// shows its bytes as a normal string. For invalid UTF-8, hex escape /// sequences are used. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// println!("{:?}", b"foo\xFFbar".as_bstr()); /// ``` #[inline] fn as_bstr(&self) -> &BStr { BStr::new(self.as_bytes()) } /// Return this byte slice as a `&mut BStr`. /// /// Use `&mut BStr` is useful because of its `fmt::Debug` representation /// and various other trait implementations (such as `PartialEq` and /// `PartialOrd`). In particular, the `Debug` implementation for `BStr` /// shows its bytes as a normal string. For invalid UTF-8, hex escape /// sequences are used. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let mut bytes = *b"foo\xFFbar"; /// println!("{:?}", &mut bytes.as_bstr_mut()); /// ``` #[inline] fn as_bstr_mut(&mut self) -> &mut BStr { BStr::new_mut(self.as_bytes_mut()) } /// Create an immutable byte string from an OS string slice. /// /// When the underlying bytes of OS strings are accessible, then this /// always succeeds and is zero cost. Otherwise, this returns `None` if the /// given OS string is not valid UTF-8. (For example, when the underlying /// bytes are inaccessible on Windows, file paths are allowed to be a /// sequence of arbitrary 16-bit integers. Not all such sequences can be /// transcoded to valid UTF-8.) /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::ffi::OsStr; /// /// use bstr::{B, ByteSlice}; /// /// let os_str = OsStr::new("foo"); /// let bs = <[u8]>::from_os_str(os_str).expect("should be valid UTF-8"); /// assert_eq!(bs, B("foo")); /// ``` #[cfg(feature = "std")] #[inline] fn from_os_str(os_str: &OsStr) -> Option<&[u8]> { #[cfg(unix)] #[inline] fn imp(os_str: &OsStr) -> Option<&[u8]> { use std::os::unix::ffi::OsStrExt; Some(os_str.as_bytes()) } #[cfg(not(unix))] #[inline] fn imp(os_str: &OsStr) -> Option<&[u8]> { os_str.to_str().map(|s| s.as_bytes()) } imp(os_str) } /// Create an immutable byte string from a file path. /// /// When the underlying bytes of paths are accessible, then this always /// succeeds and is zero cost. Otherwise, this returns `None` if the given /// path is not valid UTF-8. (For example, when the underlying bytes are /// inaccessible on Windows, file paths are allowed to be a sequence of /// arbitrary 16-bit integers. Not all such sequences can be transcoded to /// valid UTF-8.) /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::path::Path; /// /// use bstr::{B, ByteSlice}; /// /// let path = Path::new("foo"); /// let bs = <[u8]>::from_path(path).expect("should be valid UTF-8"); /// assert_eq!(bs, B("foo")); /// ``` #[cfg(feature = "std")] #[inline] fn from_path(path: &Path) -> Option<&[u8]> { Self::from_os_str(path.as_os_str()) } /// Safely convert this byte string into a `&str` if it's valid UTF-8. /// /// If this byte string is not valid UTF-8, then an error is returned. The /// error returned indicates the first invalid byte found and the length /// of the error. /// /// In cases where a lossy conversion to `&str` is acceptable, then use one /// of the [`to_str_lossy`](trait.ByteSlice.html#method.to_str_lossy) or /// [`to_str_lossy_into`](trait.ByteSlice.html#method.to_str_lossy_into) /// methods. /// /// # Examples /// /// Basic usage: /// /// ``` /// # #[cfg(feature = "alloc")] { /// use bstr::{B, ByteSlice, ByteVec}; /// /// # fn example() -> Result<(), bstr::Utf8Error> { /// let s = B("☃βツ").to_str()?; /// assert_eq!("☃βツ", s); /// /// let mut bstring = >::from("☃βツ"); /// bstring.push(b'\xFF'); /// let err = bstring.to_str().unwrap_err(); /// assert_eq!(8, err.valid_up_to()); /// # Ok(()) }; example().unwrap() /// # } /// ``` #[inline] fn to_str(&self) -> Result<&str, Utf8Error> { utf8::validate(self.as_bytes()).map(|_| { // SAFETY: This is safe because of the guarantees provided by // utf8::validate. unsafe { str::from_utf8_unchecked(self.as_bytes()) } }) } /// Unsafely convert this byte string into a `&str`, without checking for /// valid UTF-8. /// /// # Safety /// /// Callers *must* ensure that this byte string is valid UTF-8 before /// calling this method. Converting a byte string into a `&str` that is /// not valid UTF-8 is considered undefined behavior. /// /// This routine is useful in performance sensitive contexts where the /// UTF-8 validity of the byte string is already known and it is /// undesirable to pay the cost of an additional UTF-8 validation check /// that [`to_str`](trait.ByteSlice.html#method.to_str) performs. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// // SAFETY: This is safe because string literals are guaranteed to be /// // valid UTF-8 by the Rust compiler. /// let s = unsafe { B("☃βツ").to_str_unchecked() }; /// assert_eq!("☃βツ", s); /// ``` #[inline] unsafe fn to_str_unchecked(&self) -> &str { str::from_utf8_unchecked(self.as_bytes()) } /// Convert this byte string to a valid UTF-8 string by replacing invalid /// UTF-8 bytes with the Unicode replacement codepoint (`U+FFFD`). /// /// If the byte string is already valid UTF-8, then no copying or /// allocation is performed and a borrrowed string slice is returned. If /// the byte string is not valid UTF-8, then an owned string buffer is /// returned with invalid bytes replaced by the replacement codepoint. /// /// This method uses the "substitution of maximal subparts" (Unicode /// Standard, Chapter 3, Section 9) strategy for inserting the replacement /// codepoint. Specifically, a replacement codepoint is inserted whenever a /// byte is found that cannot possibly lead to a valid code unit sequence. /// If there were previous bytes that represented a prefix of a well-formed /// code unit sequence, then all of those bytes are substituted with a /// single replacement codepoint. The "substitution of maximal subparts" /// strategy is the same strategy used by /// [W3C's Encoding standard](https://www.w3.org/TR/encoding/). /// For a more precise description of the maximal subpart strategy, see /// the Unicode Standard, Chapter 3, Section 9. See also /// [Public Review Issue #121](https://www.unicode.org/review/pr-121.html). /// /// N.B. Rust's standard library also appears to use the same strategy, /// but it does not appear to be an API guarantee. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::borrow::Cow; /// /// use bstr::ByteSlice; /// /// let mut bstring = >::from("☃βツ"); /// assert_eq!(Cow::Borrowed("☃βツ"), bstring.to_str_lossy()); /// /// // Add a byte that makes the sequence invalid. /// bstring.push(b'\xFF'); /// assert_eq!(Cow::Borrowed("☃βツ\u{FFFD}"), bstring.to_str_lossy()); /// ``` /// /// This demonstrates the "maximal subpart" substitution logic. /// /// ``` /// use bstr::{B, ByteSlice}; /// /// // \x61 is the ASCII codepoint for 'a'. /// // \xF1\x80\x80 is a valid 3-byte code unit prefix. /// // \xE1\x80 is a valid 2-byte code unit prefix. /// // \xC2 is a valid 1-byte code unit prefix. /// // \x62 is the ASCII codepoint for 'b'. /// // /// // In sum, each of the prefixes is replaced by a single replacement /// // codepoint since none of the prefixes are properly completed. This /// // is in contrast to other strategies that might insert a replacement /// // codepoint for every single byte. /// let bs = B(b"\x61\xF1\x80\x80\xE1\x80\xC2\x62"); /// assert_eq!("a\u{FFFD}\u{FFFD}\u{FFFD}b", bs.to_str_lossy()); /// ``` #[cfg(feature = "alloc")] #[inline] fn to_str_lossy(&self) -> Cow<'_, str> { match utf8::validate(self.as_bytes()) { Ok(()) => { // SAFETY: This is safe because of the guarantees provided by // utf8::validate. unsafe { Cow::Borrowed(str::from_utf8_unchecked(self.as_bytes())) } } Err(err) => { let mut lossy = String::with_capacity(self.as_bytes().len()); let (valid, after) = self.as_bytes().split_at(err.valid_up_to()); // SAFETY: This is safe because utf8::validate guarantees // that all of `valid` is valid UTF-8. lossy.push_str(unsafe { str::from_utf8_unchecked(valid) }); lossy.push_str("\u{FFFD}"); if let Some(len) = err.error_len() { after[len..].to_str_lossy_into(&mut lossy); } Cow::Owned(lossy) } } } /// Copy the contents of this byte string into the given owned string /// buffer, while replacing invalid UTF-8 code unit sequences with the /// Unicode replacement codepoint (`U+FFFD`). /// /// This method uses the same "substitution of maximal subparts" strategy /// for inserting the replacement codepoint as the /// [`to_str_lossy`](trait.ByteSlice.html#method.to_str_lossy) method. /// /// This routine is useful for amortizing allocation. However, unlike /// `to_str_lossy`, this routine will _always_ copy the contents of this /// byte string into the destination buffer, even if this byte string is /// valid UTF-8. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::borrow::Cow; /// /// use bstr::ByteSlice; /// /// let mut bstring = >::from("☃βツ"); /// // Add a byte that makes the sequence invalid. /// bstring.push(b'\xFF'); /// /// let mut dest = String::new(); /// bstring.to_str_lossy_into(&mut dest); /// assert_eq!("☃βツ\u{FFFD}", dest); /// ``` #[cfg(feature = "alloc")] #[inline] fn to_str_lossy_into(&self, dest: &mut String) { let mut bytes = self.as_bytes(); dest.reserve(bytes.len()); loop { match utf8::validate(bytes) { Ok(()) => { // SAFETY: This is safe because utf8::validate guarantees // that all of `bytes` is valid UTF-8. dest.push_str(unsafe { str::from_utf8_unchecked(bytes) }); break; } Err(err) => { let (valid, after) = bytes.split_at(err.valid_up_to()); // SAFETY: This is safe because utf8::validate guarantees // that all of `valid` is valid UTF-8. dest.push_str(unsafe { str::from_utf8_unchecked(valid) }); dest.push_str("\u{FFFD}"); match err.error_len() { None => break, Some(len) => bytes = &after[len..], } } } } } /// Create an OS string slice from this byte string. /// /// When OS strings can be constructed from arbitrary byte sequences, this /// always succeeds and is zero cost. Otherwise, this returns a UTF-8 /// decoding error if this byte string is not valid UTF-8. (For example, /// assuming the representation of `OsStr` is opaque on Windows, file paths /// are allowed to be a sequence of arbitrary 16-bit integers. There is /// no obvious mapping from an arbitrary sequence of 8-bit integers to an /// arbitrary sequence of 16-bit integers. If the representation of `OsStr` /// is even opened up, then this will convert any sequence of bytes to an /// `OsStr` without cost.) /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let os_str = b"foo".to_os_str().expect("should be valid UTF-8"); /// assert_eq!(os_str, "foo"); /// ``` #[cfg(feature = "std")] #[inline] fn to_os_str(&self) -> Result<&OsStr, Utf8Error> { #[cfg(unix)] #[inline] fn imp(bytes: &[u8]) -> Result<&OsStr, Utf8Error> { use std::os::unix::ffi::OsStrExt; Ok(OsStr::from_bytes(bytes)) } #[cfg(not(unix))] #[inline] fn imp(bytes: &[u8]) -> Result<&OsStr, Utf8Error> { bytes.to_str().map(OsStr::new) } imp(self.as_bytes()) } /// Lossily create an OS string slice from this byte string. /// /// When OS strings can be constructed from arbitrary byte sequences, this /// is zero cost and always returns a slice. Otherwise, this will perform a /// UTF-8 check and lossily convert this byte string into valid UTF-8 using /// the Unicode replacement codepoint. /// /// Note that this can prevent the correct roundtripping of file paths when /// the representation of `OsStr` is opaque. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let os_str = b"foo\xFFbar".to_os_str_lossy(); /// assert_eq!(os_str.to_string_lossy(), "foo\u{FFFD}bar"); /// ``` #[cfg(feature = "std")] #[inline] fn to_os_str_lossy(&self) -> Cow<'_, OsStr> { #[cfg(unix)] #[inline] fn imp(bytes: &[u8]) -> Cow<'_, OsStr> { use std::os::unix::ffi::OsStrExt; Cow::Borrowed(OsStr::from_bytes(bytes)) } #[cfg(not(unix))] #[inline] fn imp(bytes: &[u8]) -> Cow { use std::ffi::OsString; match bytes.to_str_lossy() { Cow::Borrowed(x) => Cow::Borrowed(OsStr::new(x)), Cow::Owned(x) => Cow::Owned(OsString::from(x)), } } imp(self.as_bytes()) } /// Create a path slice from this byte string. /// /// When paths can be constructed from arbitrary byte sequences, this /// always succeeds and is zero cost. Otherwise, this returns a UTF-8 /// decoding error if this byte string is not valid UTF-8. (For example, /// assuming the representation of `Path` is opaque on Windows, file paths /// are allowed to be a sequence of arbitrary 16-bit integers. There is /// no obvious mapping from an arbitrary sequence of 8-bit integers to an /// arbitrary sequence of 16-bit integers. If the representation of `Path` /// is even opened up, then this will convert any sequence of bytes to an /// `Path` without cost.) /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let path = b"foo".to_path().expect("should be valid UTF-8"); /// assert_eq!(path.as_os_str(), "foo"); /// ``` #[cfg(feature = "std")] #[inline] fn to_path(&self) -> Result<&Path, Utf8Error> { self.to_os_str().map(Path::new) } /// Lossily create a path slice from this byte string. /// /// When paths can be constructed from arbitrary byte sequences, this is /// zero cost and always returns a slice. Otherwise, this will perform a /// UTF-8 check and lossily convert this byte string into valid UTF-8 using /// the Unicode replacement codepoint. /// /// Note that this can prevent the correct roundtripping of file paths when /// the representation of `Path` is opaque. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"foo\xFFbar"; /// let path = bs.to_path_lossy(); /// assert_eq!(path.to_string_lossy(), "foo\u{FFFD}bar"); /// ``` #[cfg(feature = "std")] #[inline] fn to_path_lossy(&self) -> Cow<'_, Path> { use std::path::PathBuf; match self.to_os_str_lossy() { Cow::Borrowed(x) => Cow::Borrowed(Path::new(x)), Cow::Owned(x) => Cow::Owned(PathBuf::from(x)), } } /// Create a new byte string by repeating this byte string `n` times. /// /// # Panics /// /// This function panics if the capacity of the new byte string would /// overflow. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// assert_eq!(b"foo".repeatn(4), B("foofoofoofoo")); /// assert_eq!(b"foo".repeatn(0), B("")); /// ``` #[cfg(feature = "alloc")] #[inline] fn repeatn(&self, n: usize) -> Vec { self.as_bytes().repeat(n) } /// Returns true if and only if this byte string contains the given needle. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert!(b"foo bar".contains_str("foo")); /// assert!(b"foo bar".contains_str("bar")); /// assert!(!b"foo".contains_str("foobar")); /// ``` #[inline] fn contains_str>(&self, needle: B) -> bool { self.find(needle).is_some() } /// Returns true if and only if this byte string has the given prefix. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert!(b"foo bar".starts_with_str("foo")); /// assert!(!b"foo bar".starts_with_str("bar")); /// assert!(!b"foo".starts_with_str("foobar")); /// ``` #[inline] fn starts_with_str>(&self, prefix: B) -> bool { self.as_bytes().starts_with(prefix.as_ref()) } /// Returns true if and only if this byte string has the given suffix. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert!(b"foo bar".ends_with_str("bar")); /// assert!(!b"foo bar".ends_with_str("foo")); /// assert!(!b"bar".ends_with_str("foobar")); /// ``` #[inline] fn ends_with_str>(&self, suffix: B) -> bool { self.as_bytes().ends_with(suffix.as_ref()) } /// Returns the index of the first occurrence of the given needle. /// /// The needle may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// Note that if you're are searching for the same needle in many /// different small haystacks, it may be faster to initialize a /// [`Finder`](struct.Finder.html) once, and reuse it for each search. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the needle and the haystack. That is, this runs /// in `O(needle.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foo bar baz"; /// assert_eq!(Some(0), s.find("foo")); /// assert_eq!(Some(4), s.find("bar")); /// assert_eq!(None, s.find("quux")); /// ``` #[inline] fn find>(&self, needle: B) -> Option { Finder::new(needle.as_ref()).find(self.as_bytes()) } /// Returns the index of the last occurrence of the given needle. /// /// The needle may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// Note that if you're are searching for the same needle in many /// different small haystacks, it may be faster to initialize a /// [`FinderReverse`](struct.FinderReverse.html) once, and reuse it for /// each search. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the needle and the haystack. That is, this runs /// in `O(needle.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foo bar baz"; /// assert_eq!(Some(0), s.rfind("foo")); /// assert_eq!(Some(4), s.rfind("bar")); /// assert_eq!(Some(8), s.rfind("ba")); /// assert_eq!(None, s.rfind("quux")); /// ``` #[inline] fn rfind>(&self, needle: B) -> Option { FinderReverse::new(needle.as_ref()).rfind(self.as_bytes()) } /// Returns an iterator of the non-overlapping occurrences of the given /// needle. The iterator yields byte offset positions indicating the start /// of each match. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the needle and the haystack. That is, this runs /// in `O(needle.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foo bar foo foo quux foo"; /// let matches: Vec = s.find_iter("foo").collect(); /// assert_eq!(matches, vec![0, 8, 12, 21]); /// ``` /// /// An empty string matches at every position, including the position /// immediately following the last byte: /// /// ``` /// use bstr::ByteSlice; /// /// let matches: Vec = b"foo".find_iter("").collect(); /// assert_eq!(matches, vec![0, 1, 2, 3]); /// /// let matches: Vec = b"".find_iter("").collect(); /// assert_eq!(matches, vec![0]); /// ``` #[inline] fn find_iter<'h, 'n, B: ?Sized + AsRef<[u8]>>( &'h self, needle: &'n B, ) -> Find<'h, 'n> { Find::new(self.as_bytes(), needle.as_ref()) } /// Returns an iterator of the non-overlapping occurrences of the given /// needle in reverse. The iterator yields byte offset positions indicating /// the start of each match. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the needle and the haystack. That is, this runs /// in `O(needle.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foo bar foo foo quux foo"; /// let matches: Vec = s.rfind_iter("foo").collect(); /// assert_eq!(matches, vec![21, 12, 8, 0]); /// ``` /// /// An empty string matches at every position, including the position /// immediately following the last byte: /// /// ``` /// use bstr::ByteSlice; /// /// let matches: Vec = b"foo".rfind_iter("").collect(); /// assert_eq!(matches, vec![3, 2, 1, 0]); /// /// let matches: Vec = b"".rfind_iter("").collect(); /// assert_eq!(matches, vec![0]); /// ``` #[inline] fn rfind_iter<'h, 'n, B: ?Sized + AsRef<[u8]>>( &'h self, needle: &'n B, ) -> FindReverse<'h, 'n> { FindReverse::new(self.as_bytes(), needle.as_ref()) } /// Returns the index of the first occurrence of the given byte. If the /// byte does not occur in this byte string, then `None` is returned. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert_eq!(Some(10), b"foo bar baz".find_byte(b'z')); /// assert_eq!(None, b"foo bar baz".find_byte(b'y')); /// ``` #[inline] fn find_byte(&self, byte: u8) -> Option { memchr(byte, self.as_bytes()) } /// Returns the index of the last occurrence of the given byte. If the /// byte does not occur in this byte string, then `None` is returned. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert_eq!(Some(10), b"foo bar baz".rfind_byte(b'z')); /// assert_eq!(None, b"foo bar baz".rfind_byte(b'y')); /// ``` #[inline] fn rfind_byte(&self, byte: u8) -> Option { memrchr(byte, self.as_bytes()) } /// Returns the index of the first occurrence of the given codepoint. /// If the codepoint does not occur in this byte string, then `None` is /// returned. /// /// Note that if one searches for the replacement codepoint, `\u{FFFD}`, /// then only explicit occurrences of that encoding will be found. Invalid /// UTF-8 sequences will not be matched. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// assert_eq!(Some(10), b"foo bar baz".find_char('z')); /// assert_eq!(Some(4), B("αβγγδ").find_char('γ')); /// assert_eq!(None, b"foo bar baz".find_char('y')); /// ``` #[inline] fn find_char(&self, ch: char) -> Option { self.find(ch.encode_utf8(&mut [0; 4])) } /// Returns the index of the last occurrence of the given codepoint. /// If the codepoint does not occur in this byte string, then `None` is /// returned. /// /// Note that if one searches for the replacement codepoint, `\u{FFFD}`, /// then only explicit occurrences of that encoding will be found. Invalid /// UTF-8 sequences will not be matched. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// assert_eq!(Some(10), b"foo bar baz".rfind_char('z')); /// assert_eq!(Some(6), B("αβγγδ").rfind_char('γ')); /// assert_eq!(None, b"foo bar baz".rfind_char('y')); /// ``` #[inline] fn rfind_char(&self, ch: char) -> Option { self.rfind(ch.encode_utf8(&mut [0; 4])) } /// Returns the index of the first occurrence of any of the bytes in the /// provided set. /// /// The `byteset` may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`, but /// note that passing a `&str` which contains multibyte characters may not /// behave as you expect: each byte in the `&str` is treated as an /// individual member of the byte set. /// /// Note that order is irrelevant for the `byteset` parameter, and /// duplicate bytes present in its body are ignored. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the set of bytes and the haystack. That is, this /// runs in `O(byteset.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert_eq!(b"foo bar baz".find_byteset(b"zr"), Some(6)); /// assert_eq!(b"foo baz bar".find_byteset(b"bzr"), Some(4)); /// assert_eq!(None, b"foo baz bar".find_byteset(b"\t\n")); /// // The empty byteset never matches. /// assert_eq!(None, b"abc".find_byteset(b"")); /// assert_eq!(None, b"".find_byteset(b"")); /// ``` #[inline] fn find_byteset>(&self, byteset: B) -> Option { byteset::find(self.as_bytes(), byteset.as_ref()) } /// Returns the index of the first occurrence of a byte that is not a /// member of the provided set. /// /// The `byteset` may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`, but /// note that passing a `&str` which contains multibyte characters may not /// behave as you expect: each byte in the `&str` is treated as an /// individual member of the byte set. /// /// Note that order is irrelevant for the `byteset` parameter, and /// duplicate bytes present in its body are ignored. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the set of bytes and the haystack. That is, this /// runs in `O(byteset.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert_eq!(b"foo bar baz".find_not_byteset(b"fo "), Some(4)); /// assert_eq!(b"\t\tbaz bar".find_not_byteset(b" \t\r\n"), Some(2)); /// assert_eq!(b"foo\nbaz\tbar".find_not_byteset(b"\t\n"), Some(0)); /// // The negation of the empty byteset matches everything. /// assert_eq!(Some(0), b"abc".find_not_byteset(b"")); /// // But an empty string never contains anything. /// assert_eq!(None, b"".find_not_byteset(b"")); /// ``` #[inline] fn find_not_byteset>(&self, byteset: B) -> Option { byteset::find_not(self.as_bytes(), byteset.as_ref()) } /// Returns the index of the last occurrence of any of the bytes in the /// provided set. /// /// The `byteset` may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`, but /// note that passing a `&str` which contains multibyte characters may not /// behave as you expect: each byte in the `&str` is treated as an /// individual member of the byte set. /// /// Note that order is irrelevant for the `byteset` parameter, and duplicate /// bytes present in its body are ignored. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the set of bytes and the haystack. That is, this /// runs in `O(byteset.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert_eq!(b"foo bar baz".rfind_byteset(b"agb"), Some(9)); /// assert_eq!(b"foo baz bar".rfind_byteset(b"rabz "), Some(10)); /// assert_eq!(b"foo baz bar".rfind_byteset(b"\n123"), None); /// ``` #[inline] fn rfind_byteset>(&self, byteset: B) -> Option { byteset::rfind(self.as_bytes(), byteset.as_ref()) } /// Returns the index of the last occurrence of a byte that is not a member /// of the provided set. /// /// The `byteset` may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`, but /// note that passing a `&str` which contains multibyte characters may not /// behave as you expect: each byte in the `&str` is treated as an /// individual member of the byte set. /// /// Note that order is irrelevant for the `byteset` parameter, and /// duplicate bytes present in its body are ignored. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the set of bytes and the haystack. That is, this /// runs in `O(byteset.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert_eq!(b"foo bar baz,\t".rfind_not_byteset(b",\t"), Some(10)); /// assert_eq!(b"foo baz bar".rfind_not_byteset(b"rabz "), Some(2)); /// assert_eq!(None, b"foo baz bar".rfind_not_byteset(b"barfoz ")); /// ``` #[inline] fn rfind_not_byteset>(&self, byteset: B) -> Option { byteset::rfind_not(self.as_bytes(), byteset.as_ref()) } /// Returns an iterator over the fields in a byte string, separated /// by contiguous whitespace (according to the Unicode property /// `White_Space`). /// /// # Example /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(" foo\tbar\t\u{2003}\nquux \n"); /// let fields: Vec<&[u8]> = s.fields().collect(); /// assert_eq!(fields, vec![B("foo"), B("bar"), B("quux")]); /// ``` /// /// A byte string consisting of just whitespace yields no elements: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// assert_eq!(0, B(" \n\t\u{2003}\n \t").fields().count()); /// ``` #[cfg(feature = "unicode")] #[inline] fn fields(&self) -> Fields<'_> { Fields::new(self.as_bytes()) } /// Returns an iterator over the fields in a byte string, separated by /// contiguous codepoints satisfying the given predicate. /// /// If this byte string is not valid UTF-8, then the given closure will /// be called with a Unicode replacement codepoint when invalid UTF-8 /// bytes are seen. /// /// # Example /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = b"123foo999999bar1quux123456"; /// let fields: Vec<&[u8]> = s.fields_with(|c| c.is_numeric()).collect(); /// assert_eq!(fields, vec![B("foo"), B("bar"), B("quux")]); /// ``` /// /// A byte string consisting of all codepoints satisfying the predicate /// yields no elements: /// /// ``` /// use bstr::ByteSlice; /// /// assert_eq!(0, b"1911354563".fields_with(|c| c.is_numeric()).count()); /// ``` #[inline] fn fields_with bool>(&self, f: F) -> FieldsWith<'_, F> { FieldsWith::new(self.as_bytes(), f) } /// Returns an iterator over substrings of this byte string, separated /// by the given byte string. Each element yielded is guaranteed not to /// include the splitter substring. /// /// The splitter may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = b"Mary had a little lamb".split_str(" ").collect(); /// assert_eq!(x, vec![ /// B("Mary"), B("had"), B("a"), B("little"), B("lamb"), /// ]); /// /// let x: Vec<&[u8]> = b"".split_str("X").collect(); /// assert_eq!(x, vec![b""]); /// /// let x: Vec<&[u8]> = b"lionXXtigerXleopard".split_str("X").collect(); /// assert_eq!(x, vec![B("lion"), B(""), B("tiger"), B("leopard")]); /// /// let x: Vec<&[u8]> = b"lion::tiger::leopard".split_str("::").collect(); /// assert_eq!(x, vec![B("lion"), B("tiger"), B("leopard")]); /// ``` /// /// If a string contains multiple contiguous separators, you will end up /// with empty strings yielded by the iterator: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = b"||||a||b|c".split_str("|").collect(); /// assert_eq!(x, vec![ /// B(""), B(""), B(""), B(""), B("a"), B(""), B("b"), B("c"), /// ]); /// /// let x: Vec<&[u8]> = b"(///)".split_str("/").collect(); /// assert_eq!(x, vec![B("("), B(""), B(""), B(")")]); /// ``` /// /// Separators at the start or end of a string are neighbored by empty /// strings. /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = b"010".split_str("0").collect(); /// assert_eq!(x, vec![B(""), B("1"), B("")]); /// ``` /// /// When the empty string is used as a separator, it splits every **byte** /// in the byte string, along with the beginning and end of the byte /// string. /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = b"rust".split_str("").collect(); /// assert_eq!(x, vec![ /// B(""), B("r"), B("u"), B("s"), B("t"), B(""), /// ]); /// /// // Splitting by an empty string is not UTF-8 aware. Elements yielded /// // may not be valid UTF-8! /// let x: Vec<&[u8]> = B("☃").split_str("").collect(); /// assert_eq!(x, vec![ /// B(""), B(b"\xE2"), B(b"\x98"), B(b"\x83"), B(""), /// ]); /// ``` /// /// Contiguous separators, especially whitespace, can lead to possibly /// surprising behavior. For example, this code is correct: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = b" a b c".split_str(" ").collect(); /// assert_eq!(x, vec![ /// B(""), B(""), B(""), B(""), B("a"), B(""), B("b"), B("c"), /// ]); /// ``` /// /// It does *not* give you `["a", "b", "c"]`. For that behavior, use /// [`fields`](#method.fields) instead. #[inline] fn split_str<'h, 's, B: ?Sized + AsRef<[u8]>>( &'h self, splitter: &'s B, ) -> Split<'h, 's> { Split::new(self.as_bytes(), splitter.as_ref()) } /// Returns an iterator over substrings of this byte string, separated by /// the given byte string, in reverse. Each element yielded is guaranteed /// not to include the splitter substring. /// /// The splitter may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = /// b"Mary had a little lamb".rsplit_str(" ").collect(); /// assert_eq!(x, vec![ /// B("lamb"), B("little"), B("a"), B("had"), B("Mary"), /// ]); /// /// let x: Vec<&[u8]> = b"".rsplit_str("X").collect(); /// assert_eq!(x, vec![b""]); /// /// let x: Vec<&[u8]> = b"lionXXtigerXleopard".rsplit_str("X").collect(); /// assert_eq!(x, vec![B("leopard"), B("tiger"), B(""), B("lion")]); /// /// let x: Vec<&[u8]> = b"lion::tiger::leopard".rsplit_str("::").collect(); /// assert_eq!(x, vec![B("leopard"), B("tiger"), B("lion")]); /// ``` /// /// If a string contains multiple contiguous separators, you will end up /// with empty strings yielded by the iterator: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = b"||||a||b|c".rsplit_str("|").collect(); /// assert_eq!(x, vec![ /// B("c"), B("b"), B(""), B("a"), B(""), B(""), B(""), B(""), /// ]); /// /// let x: Vec<&[u8]> = b"(///)".rsplit_str("/").collect(); /// assert_eq!(x, vec![B(")"), B(""), B(""), B("(")]); /// ``` /// /// Separators at the start or end of a string are neighbored by empty /// strings. /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = b"010".rsplit_str("0").collect(); /// assert_eq!(x, vec![B(""), B("1"), B("")]); /// ``` /// /// When the empty string is used as a separator, it splits every **byte** /// in the byte string, along with the beginning and end of the byte /// string. /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = b"rust".rsplit_str("").collect(); /// assert_eq!(x, vec![ /// B(""), B("t"), B("s"), B("u"), B("r"), B(""), /// ]); /// /// // Splitting by an empty string is not UTF-8 aware. Elements yielded /// // may not be valid UTF-8! /// let x: Vec<&[u8]> = B("☃").rsplit_str("").collect(); /// assert_eq!(x, vec![B(""), B(b"\x83"), B(b"\x98"), B(b"\xE2"), B("")]); /// ``` /// /// Contiguous separators, especially whitespace, can lead to possibly /// surprising behavior. For example, this code is correct: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<&[u8]> = b" a b c".rsplit_str(" ").collect(); /// assert_eq!(x, vec![ /// B("c"), B("b"), B(""), B("a"), B(""), B(""), B(""), B(""), /// ]); /// ``` /// /// It does *not* give you `["a", "b", "c"]`. #[inline] fn rsplit_str<'h, 's, B: ?Sized + AsRef<[u8]>>( &'h self, splitter: &'s B, ) -> SplitReverse<'h, 's> { SplitReverse::new(self.as_bytes(), splitter.as_ref()) } /// Split this byte string at the first occurrence of `splitter`. /// /// If the `splitter` is found in the byte string, returns a tuple /// containing the parts of the string before and after the first occurrence /// of `splitter` respectively. Otherwise, if there are no occurrences of /// `splitter` in the byte string, returns `None`. /// /// The splitter may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// If you need to split on the *last* instance of a delimiter instead, see /// the [`ByteSlice::rsplit_once_str`](#method.rsplit_once_str) method . /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// assert_eq!( /// B("foo,bar").split_once_str(","), /// Some((B("foo"), B("bar"))), /// ); /// assert_eq!( /// B("foo,bar,baz").split_once_str(","), /// Some((B("foo"), B("bar,baz"))), /// ); /// assert_eq!(B("foo").split_once_str(","), None); /// assert_eq!(B("foo,").split_once_str(b","), Some((B("foo"), B("")))); /// assert_eq!(B(",foo").split_once_str(b","), Some((B(""), B("foo")))); /// ``` #[inline] fn split_once_str<'a, B: ?Sized + AsRef<[u8]>>( &'a self, splitter: &B, ) -> Option<(&'a [u8], &'a [u8])> { let bytes = self.as_bytes(); let splitter = splitter.as_ref(); let start = Finder::new(splitter).find(bytes)?; let end = start + splitter.len(); Some((&bytes[..start], &bytes[end..])) } /// Split this byte string at the last occurrence of `splitter`. /// /// If the `splitter` is found in the byte string, returns a tuple /// containing the parts of the string before and after the last occurrence /// of `splitter`, respectively. Otherwise, if there are no occurrences of /// `splitter` in the byte string, returns `None`. /// /// The splitter may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// If you need to split on the *first* instance of a delimiter instead, see /// the [`ByteSlice::split_once_str`](#method.split_once_str) method. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// assert_eq!( /// B("foo,bar").rsplit_once_str(","), /// Some((B("foo"), B("bar"))), /// ); /// assert_eq!( /// B("foo,bar,baz").rsplit_once_str(","), /// Some((B("foo,bar"), B("baz"))), /// ); /// assert_eq!(B("foo").rsplit_once_str(","), None); /// assert_eq!(B("foo,").rsplit_once_str(b","), Some((B("foo"), B("")))); /// assert_eq!(B(",foo").rsplit_once_str(b","), Some((B(""), B("foo")))); /// ``` #[inline] fn rsplit_once_str<'a, B: ?Sized + AsRef<[u8]>>( &'a self, splitter: &B, ) -> Option<(&'a [u8], &'a [u8])> { let bytes = self.as_bytes(); let splitter = splitter.as_ref(); let start = FinderReverse::new(splitter).rfind(bytes)?; let end = start + splitter.len(); Some((&bytes[..start], &bytes[end..])) } /// Returns an iterator of at most `limit` substrings of this byte string, /// separated by the given byte string. If `limit` substrings are yielded, /// then the last substring will contain the remainder of this byte string. /// /// The needle may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<_> = b"Mary had a little lamb".splitn_str(3, " ").collect(); /// assert_eq!(x, vec![B("Mary"), B("had"), B("a little lamb")]); /// /// let x: Vec<_> = b"".splitn_str(3, "X").collect(); /// assert_eq!(x, vec![b""]); /// /// let x: Vec<_> = b"lionXXtigerXleopard".splitn_str(3, "X").collect(); /// assert_eq!(x, vec![B("lion"), B(""), B("tigerXleopard")]); /// /// let x: Vec<_> = b"lion::tiger::leopard".splitn_str(2, "::").collect(); /// assert_eq!(x, vec![B("lion"), B("tiger::leopard")]); /// /// let x: Vec<_> = b"abcXdef".splitn_str(1, "X").collect(); /// assert_eq!(x, vec![B("abcXdef")]); /// /// let x: Vec<_> = b"abcdef".splitn_str(2, "X").collect(); /// assert_eq!(x, vec![B("abcdef")]); /// /// let x: Vec<_> = b"abcXdef".splitn_str(0, "X").collect(); /// assert!(x.is_empty()); /// ``` #[inline] fn splitn_str<'h, 's, B: ?Sized + AsRef<[u8]>>( &'h self, limit: usize, splitter: &'s B, ) -> SplitN<'h, 's> { SplitN::new(self.as_bytes(), splitter.as_ref(), limit) } /// Returns an iterator of at most `limit` substrings of this byte string, /// separated by the given byte string, in reverse. If `limit` substrings /// are yielded, then the last substring will contain the remainder of this /// byte string. /// /// The needle may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let x: Vec<_> = /// b"Mary had a little lamb".rsplitn_str(3, " ").collect(); /// assert_eq!(x, vec![B("lamb"), B("little"), B("Mary had a")]); /// /// let x: Vec<_> = b"".rsplitn_str(3, "X").collect(); /// assert_eq!(x, vec![b""]); /// /// let x: Vec<_> = b"lionXXtigerXleopard".rsplitn_str(3, "X").collect(); /// assert_eq!(x, vec![B("leopard"), B("tiger"), B("lionX")]); /// /// let x: Vec<_> = b"lion::tiger::leopard".rsplitn_str(2, "::").collect(); /// assert_eq!(x, vec![B("leopard"), B("lion::tiger")]); /// /// let x: Vec<_> = b"abcXdef".rsplitn_str(1, "X").collect(); /// assert_eq!(x, vec![B("abcXdef")]); /// /// let x: Vec<_> = b"abcdef".rsplitn_str(2, "X").collect(); /// assert_eq!(x, vec![B("abcdef")]); /// /// let x: Vec<_> = b"abcXdef".rsplitn_str(0, "X").collect(); /// assert!(x.is_empty()); /// ``` #[inline] fn rsplitn_str<'h, 's, B: ?Sized + AsRef<[u8]>>( &'h self, limit: usize, splitter: &'s B, ) -> SplitNReverse<'h, 's> { SplitNReverse::new(self.as_bytes(), splitter.as_ref(), limit) } /// Replace all matches of the given needle with the given replacement, and /// the result as a new `Vec`. /// /// This routine is useful as a convenience. If you need to reuse an /// allocation, use [`replace_into`](#method.replace_into) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"this is old".replace("old", "new"); /// assert_eq!(s, "this is new".as_bytes()); /// ``` /// /// When the pattern doesn't match: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"this is old".replace("nada nada", "limonada"); /// assert_eq!(s, "this is old".as_bytes()); /// ``` /// /// When the needle is an empty string: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foo".replace("", "Z"); /// assert_eq!(s, "ZfZoZoZ".as_bytes()); /// ``` #[cfg(feature = "alloc")] #[inline] fn replace, R: AsRef<[u8]>>( &self, needle: N, replacement: R, ) -> Vec { let mut dest = Vec::with_capacity(self.as_bytes().len()); self.replace_into(needle, replacement, &mut dest); dest } /// Replace up to `limit` matches of the given needle with the given /// replacement, and the result as a new `Vec`. /// /// This routine is useful as a convenience. If you need to reuse an /// allocation, use [`replacen_into`](#method.replacen_into) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foofoo".replacen("o", "z", 2); /// assert_eq!(s, "fzzfoo".as_bytes()); /// ``` /// /// When the pattern doesn't match: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foofoo".replacen("a", "z", 2); /// assert_eq!(s, "foofoo".as_bytes()); /// ``` /// /// When the needle is an empty string: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foo".replacen("", "Z", 2); /// assert_eq!(s, "ZfZoo".as_bytes()); /// ``` #[cfg(feature = "alloc")] #[inline] fn replacen, R: AsRef<[u8]>>( &self, needle: N, replacement: R, limit: usize, ) -> Vec { let mut dest = Vec::with_capacity(self.as_bytes().len()); self.replacen_into(needle, replacement, limit, &mut dest); dest } /// Replace all matches of the given needle with the given replacement, /// and write the result into the provided `Vec`. /// /// This does **not** clear `dest` before writing to it. /// /// This routine is useful for reusing allocation. For a more convenient /// API, use [`replace`](#method.replace) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"this is old"; /// /// let mut dest = vec![]; /// s.replace_into("old", "new", &mut dest); /// assert_eq!(dest, "this is new".as_bytes()); /// ``` /// /// When the pattern doesn't match: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"this is old"; /// /// let mut dest = vec![]; /// s.replace_into("nada nada", "limonada", &mut dest); /// assert_eq!(dest, "this is old".as_bytes()); /// ``` /// /// When the needle is an empty string: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foo"; /// /// let mut dest = vec![]; /// s.replace_into("", "Z", &mut dest); /// assert_eq!(dest, "ZfZoZoZ".as_bytes()); /// ``` #[cfg(feature = "alloc")] #[inline] fn replace_into, R: AsRef<[u8]>>( &self, needle: N, replacement: R, dest: &mut Vec, ) { let (needle, replacement) = (needle.as_ref(), replacement.as_ref()); let mut last = 0; for start in self.find_iter(needle) { dest.push_str(&self.as_bytes()[last..start]); dest.push_str(replacement); last = start + needle.len(); } dest.push_str(&self.as_bytes()[last..]); } /// Replace up to `limit` matches of the given needle with the given /// replacement, and write the result into the provided `Vec`. /// /// This does **not** clear `dest` before writing to it. /// /// This routine is useful for reusing allocation. For a more convenient /// API, use [`replacen`](#method.replacen) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foofoo"; /// /// let mut dest = vec![]; /// s.replacen_into("o", "z", 2, &mut dest); /// assert_eq!(dest, "fzzfoo".as_bytes()); /// ``` /// /// When the pattern doesn't match: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foofoo"; /// /// let mut dest = vec![]; /// s.replacen_into("a", "z", 2, &mut dest); /// assert_eq!(dest, "foofoo".as_bytes()); /// ``` /// /// When the needle is an empty string: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foo"; /// /// let mut dest = vec![]; /// s.replacen_into("", "Z", 2, &mut dest); /// assert_eq!(dest, "ZfZoo".as_bytes()); /// ``` #[cfg(feature = "alloc")] #[inline] fn replacen_into, R: AsRef<[u8]>>( &self, needle: N, replacement: R, limit: usize, dest: &mut Vec, ) { let (needle, replacement) = (needle.as_ref(), replacement.as_ref()); let mut last = 0; for start in self.find_iter(needle).take(limit) { dest.push_str(&self.as_bytes()[last..start]); dest.push_str(replacement); last = start + needle.len(); } dest.push_str(&self.as_bytes()[last..]); } /// Returns an iterator over the bytes in this byte string. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"foobar"; /// let bytes: Vec = bs.bytes().collect(); /// assert_eq!(bytes, bs); /// ``` #[inline] fn bytes(&self) -> Bytes<'_> { Bytes { it: self.as_bytes().iter() } } /// Returns an iterator over the Unicode scalar values in this byte string. /// If invalid UTF-8 is encountered, then the Unicode replacement codepoint /// is yielded instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"\xE2\x98\x83\xFF\xF0\x9D\x9E\x83\xE2\x98\x61"; /// let chars: Vec = bs.chars().collect(); /// assert_eq!(vec!['☃', '\u{FFFD}', '𝞃', '\u{FFFD}', 'a'], chars); /// ``` /// /// Codepoints can also be iterated over in reverse: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"\xE2\x98\x83\xFF\xF0\x9D\x9E\x83\xE2\x98\x61"; /// let chars: Vec = bs.chars().rev().collect(); /// assert_eq!(vec!['a', '\u{FFFD}', '𝞃', '\u{FFFD}', '☃'], chars); /// ``` #[inline] fn chars(&self) -> Chars<'_> { Chars::new(self.as_bytes()) } /// Returns an iterator over the Unicode scalar values in this byte string /// along with their starting and ending byte index positions. If invalid /// UTF-8 is encountered, then the Unicode replacement codepoint is yielded /// instead. /// /// Note that this is slightly different from the `CharIndices` iterator /// provided by the standard library. Aside from working on possibly /// invalid UTF-8, this iterator provides both the corresponding starting /// and ending byte indices of each codepoint yielded. The ending position /// is necessary to slice the original byte string when invalid UTF-8 bytes /// are converted into a Unicode replacement codepoint, since a single /// replacement codepoint can substitute anywhere from 1 to 3 invalid bytes /// (inclusive). /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"\xE2\x98\x83\xFF\xF0\x9D\x9E\x83\xE2\x98\x61"; /// let chars: Vec<(usize, usize, char)> = bs.char_indices().collect(); /// assert_eq!(chars, vec![ /// (0, 3, '☃'), /// (3, 4, '\u{FFFD}'), /// (4, 8, '𝞃'), /// (8, 10, '\u{FFFD}'), /// (10, 11, 'a'), /// ]); /// ``` /// /// Codepoints can also be iterated over in reverse: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"\xE2\x98\x83\xFF\xF0\x9D\x9E\x83\xE2\x98\x61"; /// let chars: Vec<(usize, usize, char)> = bs /// .char_indices() /// .rev() /// .collect(); /// assert_eq!(chars, vec![ /// (10, 11, 'a'), /// (8, 10, '\u{FFFD}'), /// (4, 8, '𝞃'), /// (3, 4, '\u{FFFD}'), /// (0, 3, '☃'), /// ]); /// ``` #[inline] fn char_indices(&self) -> CharIndices<'_> { CharIndices::new(self.as_bytes()) } /// Iterate over chunks of valid UTF-8. /// /// The iterator returned yields chunks of valid UTF-8 separated by invalid /// UTF-8 bytes, if they exist. Invalid UTF-8 bytes are always 1-3 bytes, /// which are determined via the "substitution of maximal subparts" /// strategy described in the docs for the /// [`ByteSlice::to_str_lossy`](trait.ByteSlice.html#method.to_str_lossy) /// method. /// /// # Examples /// /// This example shows how to gather all valid and invalid chunks from a /// byte slice: /// /// ``` /// use bstr::{ByteSlice, Utf8Chunk}; /// /// let bytes = b"foo\xFD\xFEbar\xFF"; /// /// let (mut valid_chunks, mut invalid_chunks) = (vec![], vec![]); /// for chunk in bytes.utf8_chunks() { /// if !chunk.valid().is_empty() { /// valid_chunks.push(chunk.valid()); /// } /// if !chunk.invalid().is_empty() { /// invalid_chunks.push(chunk.invalid()); /// } /// } /// /// assert_eq!(valid_chunks, vec!["foo", "bar"]); /// assert_eq!(invalid_chunks, vec![b"\xFD", b"\xFE", b"\xFF"]); /// ``` #[inline] fn utf8_chunks(&self) -> Utf8Chunks<'_> { Utf8Chunks { bytes: self.as_bytes() } } /// Returns an iterator over the grapheme clusters in this byte string. /// If invalid UTF-8 is encountered, then the Unicode replacement codepoint /// is yielded instead. /// /// # Examples /// /// This example shows how multiple codepoints can combine to form a /// single grapheme cluster: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = "a\u{0300}\u{0316}\u{1F1FA}\u{1F1F8}".as_bytes(); /// let graphemes: Vec<&str> = bs.graphemes().collect(); /// assert_eq!(vec!["à̖", "🇺🇸"], graphemes); /// ``` /// /// This shows that graphemes can be iterated over in reverse: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = "a\u{0300}\u{0316}\u{1F1FA}\u{1F1F8}".as_bytes(); /// let graphemes: Vec<&str> = bs.graphemes().rev().collect(); /// assert_eq!(vec!["🇺🇸", "à̖"], graphemes); /// ``` #[cfg(feature = "unicode")] #[inline] fn graphemes(&self) -> Graphemes<'_> { Graphemes::new(self.as_bytes()) } /// Returns an iterator over the grapheme clusters in this byte string /// along with their starting and ending byte index positions. If invalid /// UTF-8 is encountered, then the Unicode replacement codepoint is yielded /// instead. /// /// # Examples /// /// This example shows how to get the byte offsets of each individual /// grapheme cluster: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = "a\u{0300}\u{0316}\u{1F1FA}\u{1F1F8}".as_bytes(); /// let graphemes: Vec<(usize, usize, &str)> = /// bs.grapheme_indices().collect(); /// assert_eq!(vec![(0, 5, "à̖"), (5, 13, "🇺🇸")], graphemes); /// ``` /// /// This example shows what happens when invalid UTF-8 is encountered. Note /// that the offsets are valid indices into the original string, and do /// not necessarily correspond to the length of the `&str` returned! /// /// ``` /// # #[cfg(all(feature = "alloc"))] { /// use bstr::{ByteSlice, ByteVec}; /// /// let mut bytes = vec![]; /// bytes.push_str("a\u{0300}\u{0316}"); /// bytes.push(b'\xFF'); /// bytes.push_str("\u{1F1FA}\u{1F1F8}"); /// /// let graphemes: Vec<(usize, usize, &str)> = /// bytes.grapheme_indices().collect(); /// assert_eq!( /// graphemes, /// vec![(0, 5, "à̖"), (5, 6, "\u{FFFD}"), (6, 14, "🇺🇸")] /// ); /// # } /// ``` #[cfg(feature = "unicode")] #[inline] fn grapheme_indices(&self) -> GraphemeIndices<'_> { GraphemeIndices::new(self.as_bytes()) } /// Returns an iterator over the words in this byte string. If invalid /// UTF-8 is encountered, then the Unicode replacement codepoint is yielded /// instead. /// /// This is similar to /// [`words_with_breaks`](trait.ByteSlice.html#method.words_with_breaks), /// except it only returns elements that contain a "word" character. A word /// character is defined by UTS #18 (Annex C) to be the combination of the /// `Alphabetic` and `Join_Control` properties, along with the /// `Decimal_Number`, `Mark` and `Connector_Punctuation` general /// categories. /// /// Since words are made up of one or more codepoints, this iterator /// yields `&str` elements. When invalid UTF-8 is encountered, replacement /// codepoints are [substituted](index.html#handling-of-invalid-utf-8). /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = br#"The quick ("brown") fox can't jump 32.3 feet, right?"#; /// let words: Vec<&str> = bs.words().collect(); /// assert_eq!(words, vec![ /// "The", "quick", "brown", "fox", "can't", /// "jump", "32.3", "feet", "right", /// ]); /// ``` #[cfg(feature = "unicode")] #[inline] fn words(&self) -> Words<'_> { Words::new(self.as_bytes()) } /// Returns an iterator over the words in this byte string along with /// their starting and ending byte index positions. /// /// This is similar to /// [`words_with_break_indices`](trait.ByteSlice.html#method.words_with_break_indices), /// except it only returns elements that contain a "word" character. A word /// character is defined by UTS #18 (Annex C) to be the combination of the /// `Alphabetic` and `Join_Control` properties, along with the /// `Decimal_Number`, `Mark` and `Connector_Punctuation` general /// categories. /// /// Since words are made up of one or more codepoints, this iterator /// yields `&str` elements. When invalid UTF-8 is encountered, replacement /// codepoints are [substituted](index.html#handling-of-invalid-utf-8). /// /// # Examples /// /// This example shows how to get the byte offsets of each individual /// word: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"can't jump 32.3 feet"; /// let words: Vec<(usize, usize, &str)> = bs.word_indices().collect(); /// assert_eq!(words, vec![ /// (0, 5, "can't"), /// (6, 10, "jump"), /// (11, 15, "32.3"), /// (16, 20, "feet"), /// ]); /// ``` #[cfg(feature = "unicode")] #[inline] fn word_indices(&self) -> WordIndices<'_> { WordIndices::new(self.as_bytes()) } /// Returns an iterator over the words in this byte string, along with /// all breaks between the words. Concatenating all elements yielded by /// the iterator results in the original string (modulo Unicode replacement /// codepoint substitutions if invalid UTF-8 is encountered). /// /// Since words are made up of one or more codepoints, this iterator /// yields `&str` elements. When invalid UTF-8 is encountered, replacement /// codepoints are [substituted](index.html#handling-of-invalid-utf-8). /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = br#"The quick ("brown") fox can't jump 32.3 feet, right?"#; /// let words: Vec<&str> = bs.words_with_breaks().collect(); /// assert_eq!(words, vec![ /// "The", " ", "quick", " ", "(", "\"", "brown", "\"", ")", /// " ", "fox", " ", "can't", " ", "jump", " ", "32.3", " ", "feet", /// ",", " ", "right", "?", /// ]); /// ``` #[cfg(feature = "unicode")] #[inline] fn words_with_breaks(&self) -> WordsWithBreaks<'_> { WordsWithBreaks::new(self.as_bytes()) } /// Returns an iterator over the words and their byte offsets in this /// byte string, along with all breaks between the words. Concatenating /// all elements yielded by the iterator results in the original string /// (modulo Unicode replacement codepoint substitutions if invalid UTF-8 is /// encountered). /// /// Since words are made up of one or more codepoints, this iterator /// yields `&str` elements. When invalid UTF-8 is encountered, replacement /// codepoints are [substituted](index.html#handling-of-invalid-utf-8). /// /// # Examples /// /// This example shows how to get the byte offsets of each individual /// word: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"can't jump 32.3 feet"; /// let words: Vec<(usize, usize, &str)> = /// bs.words_with_break_indices().collect(); /// assert_eq!(words, vec![ /// (0, 5, "can't"), /// (5, 6, " "), /// (6, 10, "jump"), /// (10, 11, " "), /// (11, 15, "32.3"), /// (15, 16, " "), /// (16, 20, "feet"), /// ]); /// ``` #[cfg(feature = "unicode")] #[inline] fn words_with_break_indices(&self) -> WordsWithBreakIndices<'_> { WordsWithBreakIndices::new(self.as_bytes()) } /// Returns an iterator over the sentences in this byte string. /// /// Typically, a sentence will include its trailing punctuation and /// whitespace. Concatenating all elements yielded by the iterator /// results in the original string (modulo Unicode replacement codepoint /// substitutions if invalid UTF-8 is encountered). /// /// Since sentences are made up of one or more codepoints, this iterator /// yields `&str` elements. When invalid UTF-8 is encountered, replacement /// codepoints are [substituted](index.html#handling-of-invalid-utf-8). /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"I want this. Not that. Right now."; /// let sentences: Vec<&str> = bs.sentences().collect(); /// assert_eq!(sentences, vec![ /// "I want this. ", /// "Not that. ", /// "Right now.", /// ]); /// ``` #[cfg(feature = "unicode")] #[inline] fn sentences(&self) -> Sentences<'_> { Sentences::new(self.as_bytes()) } /// Returns an iterator over the sentences in this byte string along with /// their starting and ending byte index positions. /// /// Typically, a sentence will include its trailing punctuation and /// whitespace. Concatenating all elements yielded by the iterator /// results in the original string (modulo Unicode replacement codepoint /// substitutions if invalid UTF-8 is encountered). /// /// Since sentences are made up of one or more codepoints, this iterator /// yields `&str` elements. When invalid UTF-8 is encountered, replacement /// codepoints are [substituted](index.html#handling-of-invalid-utf-8). /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let bs = b"I want this. Not that. Right now."; /// let sentences: Vec<(usize, usize, &str)> = /// bs.sentence_indices().collect(); /// assert_eq!(sentences, vec![ /// (0, 13, "I want this. "), /// (13, 23, "Not that. "), /// (23, 33, "Right now."), /// ]); /// ``` #[cfg(feature = "unicode")] #[inline] fn sentence_indices(&self) -> SentenceIndices<'_> { SentenceIndices::new(self.as_bytes()) } /// An iterator over all lines in a byte string, without their /// terminators. /// /// For this iterator, the only line terminators recognized are `\r\n` and /// `\n`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = b"\ /// foo /// /// bar\r /// baz /// /// /// quux"; /// let lines: Vec<&[u8]> = s.lines().collect(); /// assert_eq!(lines, vec![ /// B("foo"), B(""), B("bar"), B("baz"), B(""), B(""), B("quux"), /// ]); /// ``` #[inline] fn lines(&self) -> Lines<'_> { Lines::new(self.as_bytes()) } /// An iterator over all lines in a byte string, including their /// terminators. /// /// For this iterator, the only line terminator recognized is `\n`. (Since /// line terminators are included, this also handles `\r\n` line endings.) /// /// Line terminators are only included if they are present in the original /// byte string. For example, the last line in a byte string may not end /// with a line terminator. /// /// Concatenating all elements yielded by this iterator is guaranteed to /// yield the original byte string. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = b"\ /// foo /// /// bar\r /// baz /// /// /// quux"; /// let lines: Vec<&[u8]> = s.lines_with_terminator().collect(); /// assert_eq!(lines, vec![ /// B("foo\n"), /// B("\n"), /// B("bar\r\n"), /// B("baz\n"), /// B("\n"), /// B("\n"), /// B("quux"), /// ]); /// ``` #[inline] fn lines_with_terminator(&self) -> LinesWithTerminator<'_> { LinesWithTerminator::new(self.as_bytes()) } /// Return a byte string slice with leading and trailing whitespace /// removed. /// /// Whitespace is defined according to the terms of the `White_Space` /// Unicode property. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(" foo\tbar\t\u{2003}\n"); /// assert_eq!(s.trim(), B("foo\tbar")); /// ``` #[cfg(feature = "unicode")] #[inline] fn trim(&self) -> &[u8] { self.trim_start().trim_end() } /// Return a byte string slice with leading whitespace removed. /// /// Whitespace is defined according to the terms of the `White_Space` /// Unicode property. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(" foo\tbar\t\u{2003}\n"); /// assert_eq!(s.trim_start(), B("foo\tbar\t\u{2003}\n")); /// ``` #[cfg(feature = "unicode")] #[inline] fn trim_start(&self) -> &[u8] { let start = whitespace_len_fwd(self.as_bytes()); &self.as_bytes()[start..] } /// Return a byte string slice with trailing whitespace removed. /// /// Whitespace is defined according to the terms of the `White_Space` /// Unicode property. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(" foo\tbar\t\u{2003}\n"); /// assert_eq!(s.trim_end(), B(" foo\tbar")); /// ``` #[cfg(feature = "unicode")] #[inline] fn trim_end(&self) -> &[u8] { let end = whitespace_len_rev(self.as_bytes()); &self.as_bytes()[..end] } /// Return a byte string slice with leading and trailing characters /// satisfying the given predicate removed. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = b"123foo5bar789"; /// assert_eq!(s.trim_with(|c| c.is_numeric()), B("foo5bar")); /// ``` #[inline] fn trim_with bool>(&self, mut trim: F) -> &[u8] { self.trim_start_with(&mut trim).trim_end_with(&mut trim) } /// Return a byte string slice with leading characters satisfying the given /// predicate removed. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = b"123foo5bar789"; /// assert_eq!(s.trim_start_with(|c| c.is_numeric()), B("foo5bar789")); /// ``` #[inline] fn trim_start_with bool>(&self, mut trim: F) -> &[u8] { for (s, _, ch) in self.char_indices() { if !trim(ch) { return &self.as_bytes()[s..]; } } b"" } /// Return a byte string slice with trailing characters satisfying the /// given predicate removed. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = b"123foo5bar789"; /// assert_eq!(s.trim_end_with(|c| c.is_numeric()), B("123foo5bar")); /// ``` #[inline] fn trim_end_with bool>(&self, mut trim: F) -> &[u8] { for (_, e, ch) in self.char_indices().rev() { if !trim(ch) { return &self.as_bytes()[..e]; } } b"" } /// Returns a new `Vec` containing the lowercase equivalent of this /// byte string. /// /// In this case, lowercase is defined according to the `Lowercase` Unicode /// property. /// /// If invalid UTF-8 is seen, or if a character has no lowercase variant, /// then it is written to the given buffer unchanged. /// /// Note that some characters in this byte string may expand into multiple /// characters when changing the case, so the number of bytes written to /// the given byte string may not be equivalent to the number of bytes in /// this byte string. /// /// If you'd like to reuse an allocation for performance reasons, then use /// [`to_lowercase_into`](#method.to_lowercase_into) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("HELLO Β"); /// assert_eq!("hello β".as_bytes(), s.to_lowercase().as_bytes()); /// ``` /// /// Scripts without case are not changed: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("农历新年"); /// assert_eq!("农历新年".as_bytes(), s.to_lowercase().as_bytes()); /// ``` /// /// Invalid UTF-8 remains as is: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(b"FOO\xFFBAR\xE2\x98BAZ"); /// assert_eq!(B(b"foo\xFFbar\xE2\x98baz"), s.to_lowercase().as_bytes()); /// ``` #[cfg(all(feature = "alloc", feature = "unicode"))] #[inline] fn to_lowercase(&self) -> Vec { let mut buf = vec![]; self.to_lowercase_into(&mut buf); buf } /// Writes the lowercase equivalent of this byte string into the given /// buffer. The buffer is not cleared before written to. /// /// In this case, lowercase is defined according to the `Lowercase` /// Unicode property. /// /// If invalid UTF-8 is seen, or if a character has no lowercase variant, /// then it is written to the given buffer unchanged. /// /// Note that some characters in this byte string may expand into multiple /// characters when changing the case, so the number of bytes written to /// the given byte string may not be equivalent to the number of bytes in /// this byte string. /// /// If you don't need to amortize allocation and instead prefer /// convenience, then use [`to_lowercase`](#method.to_lowercase) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("HELLO Β"); /// /// let mut buf = vec![]; /// s.to_lowercase_into(&mut buf); /// assert_eq!("hello β".as_bytes(), buf.as_bytes()); /// ``` /// /// Scripts without case are not changed: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("农历新年"); /// /// let mut buf = vec![]; /// s.to_lowercase_into(&mut buf); /// assert_eq!("农历新年".as_bytes(), buf.as_bytes()); /// ``` /// /// Invalid UTF-8 remains as is: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(b"FOO\xFFBAR\xE2\x98BAZ"); /// /// let mut buf = vec![]; /// s.to_lowercase_into(&mut buf); /// assert_eq!(B(b"foo\xFFbar\xE2\x98baz"), buf.as_bytes()); /// ``` #[cfg(all(feature = "alloc", feature = "unicode"))] #[inline] fn to_lowercase_into(&self, buf: &mut Vec) { // TODO: This is the best we can do given what std exposes I think. // If we roll our own case handling, then we might be able to do this // a bit faster. We shouldn't roll our own case handling unless we // need to, e.g., for doing caseless matching or case folding. // TODO(BUG): This doesn't handle any special casing rules. buf.reserve(self.as_bytes().len()); for (s, e, ch) in self.char_indices() { if ch == '\u{FFFD}' { buf.push_str(&self.as_bytes()[s..e]); } else if ch.is_ascii() { buf.push_char(ch.to_ascii_lowercase()); } else { for upper in ch.to_lowercase() { buf.push_char(upper); } } } } /// Returns a new `Vec` containing the ASCII lowercase equivalent of /// this byte string. /// /// In this case, lowercase is only defined in ASCII letters. Namely, the /// letters `A-Z` are converted to `a-z`. All other bytes remain unchanged. /// In particular, the length of the byte string returned is always /// equivalent to the length of this byte string. /// /// If you'd like to reuse an allocation for performance reasons, then use /// [`make_ascii_lowercase`](#method.make_ascii_lowercase) to perform /// the conversion in place. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("HELLO Β"); /// assert_eq!("hello Β".as_bytes(), s.to_ascii_lowercase().as_bytes()); /// ``` /// /// Invalid UTF-8 remains as is: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(b"FOO\xFFBAR\xE2\x98BAZ"); /// assert_eq!(s.to_ascii_lowercase(), B(b"foo\xFFbar\xE2\x98baz")); /// ``` #[cfg(feature = "alloc")] #[inline] fn to_ascii_lowercase(&self) -> Vec { self.as_bytes().to_ascii_lowercase() } /// Convert this byte string to its lowercase ASCII equivalent in place. /// /// In this case, lowercase is only defined in ASCII letters. Namely, the /// letters `A-Z` are converted to `a-z`. All other bytes remain unchanged. /// /// If you don't need to do the conversion in /// place and instead prefer convenience, then use /// [`to_ascii_lowercase`](#method.to_ascii_lowercase) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let mut s = >::from("HELLO Β"); /// s.make_ascii_lowercase(); /// assert_eq!(s, "hello Β".as_bytes()); /// ``` /// /// Invalid UTF-8 remains as is: /// /// ``` /// # #[cfg(feature = "alloc")] { /// use bstr::{B, ByteSlice, ByteVec}; /// /// let mut s = >::from_slice(b"FOO\xFFBAR\xE2\x98BAZ"); /// s.make_ascii_lowercase(); /// assert_eq!(s, B(b"foo\xFFbar\xE2\x98baz")); /// # } /// ``` #[inline] fn make_ascii_lowercase(&mut self) { self.as_bytes_mut().make_ascii_lowercase(); } /// Returns a new `Vec` containing the uppercase equivalent of this /// byte string. /// /// In this case, uppercase is defined according to the `Uppercase` /// Unicode property. /// /// If invalid UTF-8 is seen, or if a character has no uppercase variant, /// then it is written to the given buffer unchanged. /// /// Note that some characters in this byte string may expand into multiple /// characters when changing the case, so the number of bytes written to /// the given byte string may not be equivalent to the number of bytes in /// this byte string. /// /// If you'd like to reuse an allocation for performance reasons, then use /// [`to_uppercase_into`](#method.to_uppercase_into) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("hello β"); /// assert_eq!(s.to_uppercase(), B("HELLO Β")); /// ``` /// /// Scripts without case are not changed: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("农历新年"); /// assert_eq!(s.to_uppercase(), B("农历新年")); /// ``` /// /// Invalid UTF-8 remains as is: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(b"foo\xFFbar\xE2\x98baz"); /// assert_eq!(s.to_uppercase(), B(b"FOO\xFFBAR\xE2\x98BAZ")); /// ``` #[cfg(all(feature = "alloc", feature = "unicode"))] #[inline] fn to_uppercase(&self) -> Vec { let mut buf = vec![]; self.to_uppercase_into(&mut buf); buf } /// Writes the uppercase equivalent of this byte string into the given /// buffer. The buffer is not cleared before written to. /// /// In this case, uppercase is defined according to the `Uppercase` /// Unicode property. /// /// If invalid UTF-8 is seen, or if a character has no uppercase variant, /// then it is written to the given buffer unchanged. /// /// Note that some characters in this byte string may expand into multiple /// characters when changing the case, so the number of bytes written to /// the given byte string may not be equivalent to the number of bytes in /// this byte string. /// /// If you don't need to amortize allocation and instead prefer /// convenience, then use [`to_uppercase`](#method.to_uppercase) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("hello β"); /// /// let mut buf = vec![]; /// s.to_uppercase_into(&mut buf); /// assert_eq!(buf, B("HELLO Β")); /// ``` /// /// Scripts without case are not changed: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("农历新年"); /// /// let mut buf = vec![]; /// s.to_uppercase_into(&mut buf); /// assert_eq!(buf, B("农历新年")); /// ``` /// /// Invalid UTF-8 remains as is: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(b"foo\xFFbar\xE2\x98baz"); /// /// let mut buf = vec![]; /// s.to_uppercase_into(&mut buf); /// assert_eq!(buf, B(b"FOO\xFFBAR\xE2\x98BAZ")); /// ``` #[cfg(all(feature = "alloc", feature = "unicode"))] #[inline] fn to_uppercase_into(&self, buf: &mut Vec) { // TODO: This is the best we can do given what std exposes I think. // If we roll our own case handling, then we might be able to do this // a bit faster. We shouldn't roll our own case handling unless we // need to, e.g., for doing caseless matching or case folding. buf.reserve(self.as_bytes().len()); for (s, e, ch) in self.char_indices() { if ch == '\u{FFFD}' { buf.push_str(&self.as_bytes()[s..e]); } else if ch.is_ascii() { buf.push_char(ch.to_ascii_uppercase()); } else { for upper in ch.to_uppercase() { buf.push_char(upper); } } } } /// Returns a new `Vec` containing the ASCII uppercase equivalent of /// this byte string. /// /// In this case, uppercase is only defined in ASCII letters. Namely, the /// letters `a-z` are converted to `A-Z`. All other bytes remain unchanged. /// In particular, the length of the byte string returned is always /// equivalent to the length of this byte string. /// /// If you'd like to reuse an allocation for performance reasons, then use /// [`make_ascii_uppercase`](#method.make_ascii_uppercase) to perform /// the conversion in place. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B("hello β"); /// assert_eq!(s.to_ascii_uppercase(), B("HELLO β")); /// ``` /// /// Invalid UTF-8 remains as is: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(b"foo\xFFbar\xE2\x98baz"); /// assert_eq!(s.to_ascii_uppercase(), B(b"FOO\xFFBAR\xE2\x98BAZ")); /// ``` #[cfg(feature = "alloc")] #[inline] fn to_ascii_uppercase(&self) -> Vec { self.as_bytes().to_ascii_uppercase() } /// Convert this byte string to its uppercase ASCII equivalent in place. /// /// In this case, uppercase is only defined in ASCII letters. Namely, the /// letters `a-z` are converted to `A-Z`. All other bytes remain unchanged. /// /// If you don't need to do the conversion in /// place and instead prefer convenience, then use /// [`to_ascii_uppercase`](#method.to_ascii_uppercase) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let mut s = >::from("hello β"); /// s.make_ascii_uppercase(); /// assert_eq!(s, B("HELLO β")); /// ``` /// /// Invalid UTF-8 remains as is: /// /// ``` /// # #[cfg(feature = "alloc")] { /// use bstr::{B, ByteSlice, ByteVec}; /// /// let mut s = >::from_slice(b"foo\xFFbar\xE2\x98baz"); /// s.make_ascii_uppercase(); /// assert_eq!(s, B(b"FOO\xFFBAR\xE2\x98BAZ")); /// # } /// ``` #[inline] fn make_ascii_uppercase(&mut self) { self.as_bytes_mut().make_ascii_uppercase(); } /// Escapes this byte string into a sequence of `char` values. /// /// When the sequence of `char` values is concatenated into a string, the /// result is always valid UTF-8. Any unprintable or invalid UTF-8 in this /// byte string are escaped using using `\xNN` notation. Moreover, the /// characters `\0`, `\r`, `\n`, `\t` and `\` are escaped as well. /// /// This is useful when one wants to get a human readable view of the raw /// bytes that is also valid UTF-8. /// /// The iterator returned implements the `Display` trait. So one can do /// `b"foo\xFFbar".escape_bytes().to_string()` to get a `String` with its /// bytes escaped. /// /// The dual of this function is [`ByteVec::unescape_bytes`]. /// /// Note that this is similar to, but not equivalent to the `Debug` /// implementation on [`BStr`] and [`BString`]. The `Debug` implementations /// also use the debug representation for all Unicode codepoints. However, /// this escaping routine only escapes individual bytes. All Unicode /// codepoints above `U+007F` are passed through unchanged without any /// escaping. /// /// # Examples /// /// ``` /// # #[cfg(feature = "alloc")] { /// use bstr::{B, ByteSlice}; /// /// assert_eq!(r"foo\xFFbar", b"foo\xFFbar".escape_bytes().to_string()); /// assert_eq!(r"foo\nbar", b"foo\nbar".escape_bytes().to_string()); /// assert_eq!(r"foo\tbar", b"foo\tbar".escape_bytes().to_string()); /// assert_eq!(r"foo\\bar", b"foo\\bar".escape_bytes().to_string()); /// assert_eq!(r"foo☃bar", B("foo☃bar").escape_bytes().to_string()); /// # } /// ``` #[inline] fn escape_bytes(&self) -> EscapeBytes<'_> { EscapeBytes::new(self.as_bytes()) } /// Reverse the bytes in this string, in place. /// /// This is not necessarily a well formed operation! For example, if this /// byte string contains valid UTF-8 that isn't ASCII, then reversing the /// string will likely result in invalid UTF-8 and otherwise non-sensical /// content. /// /// Note that this is equivalent to the generic `[u8]::reverse` method. /// This method is provided to permit callers to explicitly differentiate /// between reversing bytes, codepoints and graphemes. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let mut s = >::from("hello"); /// s.reverse_bytes(); /// assert_eq!(s, "olleh".as_bytes()); /// ``` #[inline] fn reverse_bytes(&mut self) { self.as_bytes_mut().reverse(); } /// Reverse the codepoints in this string, in place. /// /// If this byte string is valid UTF-8, then its reversal by codepoint /// is also guaranteed to be valid UTF-8. /// /// This operation is equivalent to the following, but without allocating: /// /// ``` /// use bstr::ByteSlice; /// /// let mut s = >::from("foo☃bar"); /// /// let mut chars: Vec = s.chars().collect(); /// chars.reverse(); /// /// let reversed: String = chars.into_iter().collect(); /// assert_eq!(reversed, "rab☃oof"); /// ``` /// /// Note that this is not necessarily a well formed operation. For example, /// if this byte string contains grapheme clusters with more than one /// codepoint, then those grapheme clusters will not necessarily be /// preserved. If you'd like to preserve grapheme clusters, then use /// [`reverse_graphemes`](#method.reverse_graphemes) instead. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let mut s = >::from("foo☃bar"); /// s.reverse_chars(); /// assert_eq!(s, "rab☃oof".as_bytes()); /// ``` /// /// This example shows that not all reversals lead to a well formed string. /// For example, in this case, combining marks are used to put accents over /// some letters, and those accent marks must appear after the codepoints /// they modify. /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let mut s = >::from("résumé"); /// s.reverse_chars(); /// assert_eq!(s, B(b"\xCC\x81emus\xCC\x81er")); /// ``` /// /// A word of warning: the above example relies on the fact that /// `résumé` is in decomposed normal form, which means there are separate /// codepoints for the accents above `e`. If it is instead in composed /// normal form, then the example works: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let mut s = >::from("résumé"); /// s.reverse_chars(); /// assert_eq!(s, B("émusér")); /// ``` /// /// The point here is to be cautious and not assume that just because /// `reverse_chars` works in one case, that it therefore works in all /// cases. #[inline] fn reverse_chars(&mut self) { let mut i = 0; loop { let (_, size) = utf8::decode(&self.as_bytes()[i..]); if size == 0 { break; } if size > 1 { self.as_bytes_mut()[i..i + size].reverse_bytes(); } i += size; } self.reverse_bytes(); } /// Reverse the graphemes in this string, in place. /// /// If this byte string is valid UTF-8, then its reversal by grapheme /// is also guaranteed to be valid UTF-8. /// /// This operation is equivalent to the following, but without allocating: /// /// ``` /// use bstr::ByteSlice; /// /// let mut s = >::from("foo☃bar"); /// /// let mut graphemes: Vec<&str> = s.graphemes().collect(); /// graphemes.reverse(); /// /// let reversed = graphemes.concat(); /// assert_eq!(reversed, "rab☃oof"); /// ``` /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// let mut s = >::from("foo☃bar"); /// s.reverse_graphemes(); /// assert_eq!(s, "rab☃oof".as_bytes()); /// ``` /// /// This example shows how this correctly handles grapheme clusters, /// unlike `reverse_chars`. /// /// ``` /// use bstr::ByteSlice; /// /// let mut s = >::from("résumé"); /// s.reverse_graphemes(); /// assert_eq!(s, "émusér".as_bytes()); /// ``` #[cfg(feature = "unicode")] #[inline] fn reverse_graphemes(&mut self) { use crate::unicode::decode_grapheme; let mut i = 0; loop { let (_, size) = decode_grapheme(&self.as_bytes()[i..]); if size == 0 { break; } if size > 1 { self.as_bytes_mut()[i..i + size].reverse_bytes(); } i += size; } self.reverse_bytes(); } /// Returns true if and only if every byte in this byte string is ASCII. /// /// ASCII is an encoding that defines 128 codepoints. A byte corresponds to /// an ASCII codepoint if and only if it is in the inclusive range /// `[0, 127]`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// assert!(B("abc").is_ascii()); /// assert!(!B("☃βツ").is_ascii()); /// assert!(!B(b"\xFF").is_ascii()); /// ``` #[inline] fn is_ascii(&self) -> bool { ascii::first_non_ascii_byte(self.as_bytes()) == self.as_bytes().len() } /// Returns true if and only if the entire byte string is valid UTF-8. /// /// If you need location information about where a byte string's first /// invalid UTF-8 byte is, then use the [`to_str`](#method.to_str) method. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// assert!(B("abc").is_utf8()); /// assert!(B("☃βツ").is_utf8()); /// // invalid bytes /// assert!(!B(b"abc\xFF").is_utf8()); /// // surrogate encoding /// assert!(!B(b"\xED\xA0\x80").is_utf8()); /// // incomplete sequence /// assert!(!B(b"\xF0\x9D\x9Ca").is_utf8()); /// // overlong sequence /// assert!(!B(b"\xF0\x82\x82\xAC").is_utf8()); /// ``` #[inline] fn is_utf8(&self) -> bool { utf8::validate(self.as_bytes()).is_ok() } /// Returns the last byte in this byte string, if it's non-empty. If this /// byte string is empty, this returns `None`. /// /// Note that this is like the generic `[u8]::last`, except this returns /// the byte by value instead of a reference to the byte. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteSlice; /// /// assert_eq!(Some(b'z'), b"baz".last_byte()); /// assert_eq!(None, b"".last_byte()); /// ``` #[inline] fn last_byte(&self) -> Option { let bytes = self.as_bytes(); bytes.get(bytes.len().saturating_sub(1)).map(|&b| b) } /// Returns the index of the first non-ASCII byte in this byte string (if /// any such indices exist). Specifically, it returns the index of the /// first byte with a value greater than or equal to `0x80`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{ByteSlice, B}; /// /// assert_eq!(Some(3), b"abc\xff".find_non_ascii_byte()); /// assert_eq!(None, b"abcde".find_non_ascii_byte()); /// assert_eq!(Some(0), B("😀").find_non_ascii_byte()); /// ``` #[inline] fn find_non_ascii_byte(&self) -> Option { let index = ascii::first_non_ascii_byte(self.as_bytes()); if index == self.as_bytes().len() { None } else { Some(index) } } } /// A single substring searcher fixed to a particular needle. /// /// The purpose of this type is to permit callers to construct a substring /// searcher that can be used to search haystacks without the overhead of /// constructing the searcher in the first place. This is a somewhat niche /// concern when it's necessary to re-use the same needle to search multiple /// different haystacks with as little overhead as possible. In general, using /// [`ByteSlice::find`](trait.ByteSlice.html#method.find) /// or /// [`ByteSlice::find_iter`](trait.ByteSlice.html#method.find_iter) /// is good enough, but `Finder` is useful when you can meaningfully observe /// searcher construction time in a profile. /// /// When the `std` feature is enabled, then this type has an `into_owned` /// version which permits building a `Finder` that is not connected to the /// lifetime of its needle. #[derive(Clone, Debug)] pub struct Finder<'a>(memmem::Finder<'a>); impl<'a> Finder<'a> { /// Create a new finder for the given needle. #[inline] pub fn new>(needle: &'a B) -> Finder<'a> { Finder(memmem::Finder::new(needle.as_ref())) } /// Convert this finder into its owned variant, such that it no longer /// borrows the needle. /// /// If this is already an owned finder, then this is a no-op. Otherwise, /// this copies the needle. /// /// This is only available when the `alloc` feature is enabled. #[cfg(feature = "alloc")] #[inline] pub fn into_owned(self) -> Finder<'static> { Finder(self.0.into_owned()) } /// Returns the needle that this finder searches for. /// /// Note that the lifetime of the needle returned is tied to the lifetime /// of the finder, and may be shorter than the `'a` lifetime. Namely, a /// finder's needle can be either borrowed or owned, so the lifetime of the /// needle returned must necessarily be the shorter of the two. #[inline] pub fn needle(&self) -> &[u8] { self.0.needle() } /// Returns the index of the first occurrence of this needle in the given /// haystack. /// /// The haystack may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the needle and the haystack. That is, this runs /// in `O(needle.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::Finder; /// /// let haystack = "foo bar baz"; /// assert_eq!(Some(0), Finder::new("foo").find(haystack)); /// assert_eq!(Some(4), Finder::new("bar").find(haystack)); /// assert_eq!(None, Finder::new("quux").find(haystack)); /// ``` #[inline] pub fn find>(&self, haystack: B) -> Option { self.0.find(haystack.as_ref()) } } /// A single substring reverse searcher fixed to a particular needle. /// /// The purpose of this type is to permit callers to construct a substring /// searcher that can be used to search haystacks without the overhead of /// constructing the searcher in the first place. This is a somewhat niche /// concern when it's necessary to re-use the same needle to search multiple /// different haystacks with as little overhead as possible. In general, using /// [`ByteSlice::rfind`](trait.ByteSlice.html#method.rfind) /// or /// [`ByteSlice::rfind_iter`](trait.ByteSlice.html#method.rfind_iter) /// is good enough, but `FinderReverse` is useful when you can meaningfully /// observe searcher construction time in a profile. /// /// When the `std` feature is enabled, then this type has an `into_owned` /// version which permits building a `FinderReverse` that is not connected to /// the lifetime of its needle. #[derive(Clone, Debug)] pub struct FinderReverse<'a>(memmem::FinderRev<'a>); impl<'a> FinderReverse<'a> { /// Create a new reverse finder for the given needle. #[inline] pub fn new>(needle: &'a B) -> FinderReverse<'a> { FinderReverse(memmem::FinderRev::new(needle.as_ref())) } /// Convert this finder into its owned variant, such that it no longer /// borrows the needle. /// /// If this is already an owned finder, then this is a no-op. Otherwise, /// this copies the needle. /// /// This is only available when the `alloc` feature is enabled. #[cfg(feature = "alloc")] #[inline] pub fn into_owned(self) -> FinderReverse<'static> { FinderReverse(self.0.into_owned()) } /// Returns the needle that this finder searches for. /// /// Note that the lifetime of the needle returned is tied to the lifetime /// of this finder, and may be shorter than the `'a` lifetime. Namely, /// a finder's needle can be either borrowed or owned, so the lifetime of /// the needle returned must necessarily be the shorter of the two. #[inline] pub fn needle(&self) -> &[u8] { self.0.needle() } /// Returns the index of the last occurrence of this needle in the given /// haystack. /// /// The haystack may be any type that can be cheaply converted into a /// `&[u8]`. This includes, but is not limited to, `&str` and `&[u8]`. /// /// # Complexity /// /// This routine is guaranteed to have worst case linear time complexity /// with respect to both the needle and the haystack. That is, this runs /// in `O(needle.len() + haystack.len())` time. /// /// This routine is also guaranteed to have worst case constant space /// complexity. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::FinderReverse; /// /// let haystack = "foo bar baz"; /// assert_eq!(Some(0), FinderReverse::new("foo").rfind(haystack)); /// assert_eq!(Some(4), FinderReverse::new("bar").rfind(haystack)); /// assert_eq!(None, FinderReverse::new("quux").rfind(haystack)); /// ``` #[inline] pub fn rfind>(&self, haystack: B) -> Option { self.0.rfind(haystack.as_ref()) } } /// An iterator over non-overlapping substring matches. /// /// Matches are reported by the byte offset at which they begin. /// /// `'h` is the lifetime of the haystack while `'n` is the lifetime of the /// needle. #[derive(Debug)] pub struct Find<'h, 'n> { it: memmem::FindIter<'h, 'n>, haystack: &'h [u8], needle: &'n [u8], } impl<'h, 'n> Find<'h, 'n> { fn new(haystack: &'h [u8], needle: &'n [u8]) -> Find<'h, 'n> { Find { it: memmem::find_iter(haystack, needle), haystack, needle } } } impl<'h, 'n> Iterator for Find<'h, 'n> { type Item = usize; #[inline] fn next(&mut self) -> Option { self.it.next() } } /// An iterator over non-overlapping substring matches in reverse. /// /// Matches are reported by the byte offset at which they begin. /// /// `'h` is the lifetime of the haystack while `'n` is the lifetime of the /// needle. #[derive(Debug)] pub struct FindReverse<'h, 'n> { it: memmem::FindRevIter<'h, 'n>, haystack: &'h [u8], needle: &'n [u8], } impl<'h, 'n> FindReverse<'h, 'n> { fn new(haystack: &'h [u8], needle: &'n [u8]) -> FindReverse<'h, 'n> { FindReverse { it: memmem::rfind_iter(haystack, needle), haystack, needle, } } fn haystack(&self) -> &'h [u8] { self.haystack } fn needle(&self) -> &'n [u8] { self.needle } } impl<'h, 'n> Iterator for FindReverse<'h, 'n> { type Item = usize; #[inline] fn next(&mut self) -> Option { self.it.next() } } /// An iterator over the bytes in a byte string. /// /// `'a` is the lifetime of the byte string being traversed. #[derive(Clone, Debug)] pub struct Bytes<'a> { it: slice::Iter<'a, u8>, } impl<'a> Bytes<'a> { /// Views the remaining underlying data as a subslice of the original data. /// This has the same lifetime as the original slice, /// and so the iterator can continue to be used while this exists. #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.it.as_slice() } } impl<'a> Iterator for Bytes<'a> { type Item = u8; #[inline] fn next(&mut self) -> Option { self.it.next().map(|&b| b) } #[inline] fn size_hint(&self) -> (usize, Option) { self.it.size_hint() } } impl<'a> DoubleEndedIterator for Bytes<'a> { #[inline] fn next_back(&mut self) -> Option { self.it.next_back().map(|&b| b) } } impl<'a> ExactSizeIterator for Bytes<'a> { #[inline] fn len(&self) -> usize { self.it.len() } } impl<'a> iter::FusedIterator for Bytes<'a> {} /// An iterator over the fields in a byte string, separated by whitespace. /// /// Whitespace for this iterator is defined by the Unicode property /// `White_Space`. /// /// This iterator splits on contiguous runs of whitespace, such that the fields /// in `foo\t\t\n \nbar` are `foo` and `bar`. /// /// `'a` is the lifetime of the byte string being split. #[cfg(feature = "unicode")] #[derive(Debug)] pub struct Fields<'a> { it: FieldsWith<'a, fn(char) -> bool>, } #[cfg(feature = "unicode")] impl<'a> Fields<'a> { fn new(bytes: &'a [u8]) -> Fields<'a> { Fields { it: bytes.fields_with(|ch| ch.is_whitespace()) } } } #[cfg(feature = "unicode")] impl<'a> Iterator for Fields<'a> { type Item = &'a [u8]; #[inline] fn next(&mut self) -> Option<&'a [u8]> { self.it.next() } } /// An iterator over fields in the byte string, separated by a predicate over /// codepoints. /// /// This iterator splits a byte string based on its predicate function such /// that the elements returned are separated by contiguous runs of codepoints /// for which the predicate returns true. /// /// `'a` is the lifetime of the byte string being split, while `F` is the type /// of the predicate, i.e., `FnMut(char) -> bool`. #[derive(Debug)] pub struct FieldsWith<'a, F> { f: F, bytes: &'a [u8], chars: CharIndices<'a>, } impl<'a, F: FnMut(char) -> bool> FieldsWith<'a, F> { fn new(bytes: &'a [u8], f: F) -> FieldsWith<'a, F> { FieldsWith { f, bytes, chars: bytes.char_indices() } } } impl<'a, F: FnMut(char) -> bool> Iterator for FieldsWith<'a, F> { type Item = &'a [u8]; #[inline] fn next(&mut self) -> Option<&'a [u8]> { let (start, mut end); loop { match self.chars.next() { None => return None, Some((s, e, ch)) => { if !(self.f)(ch) { start = s; end = e; break; } } } } while let Some((_, e, ch)) = self.chars.next() { if (self.f)(ch) { break; } end = e; } Some(&self.bytes[start..end]) } } /// An iterator over substrings in a byte string, split by a separator. /// /// `'h` is the lifetime of the byte string being split (the haystack), while /// `'s` is the lifetime of the byte string doing the splitting. #[derive(Debug)] pub struct Split<'h, 's> { finder: Find<'h, 's>, /// The end position of the previous match of our splitter. The element /// we yield corresponds to the substring starting at `last` up to the /// beginning of the next match of the splitter. last: usize, /// Only set when iteration is complete. A corner case here is when a /// splitter is matched at the end of the haystack. At that point, we still /// need to yield an empty string following it. done: bool, } impl<'h, 's> Split<'h, 's> { fn new(haystack: &'h [u8], splitter: &'s [u8]) -> Split<'h, 's> { let finder = haystack.find_iter(splitter); Split { finder, last: 0, done: false } } } impl<'h, 's> Iterator for Split<'h, 's> { type Item = &'h [u8]; #[inline] fn next(&mut self) -> Option<&'h [u8]> { let haystack = self.finder.haystack; match self.finder.next() { Some(start) => { let next = &haystack[self.last..start]; self.last = start + self.finder.needle.len(); Some(next) } None => { if self.last >= haystack.len() { if !self.done { self.done = true; Some(b"") } else { None } } else { let s = &haystack[self.last..]; self.last = haystack.len(); self.done = true; Some(s) } } } } } /// An iterator over substrings in a byte string, split by a separator, in /// reverse. /// /// `'h` is the lifetime of the byte string being split (the haystack), while /// `'s` is the lifetime of the byte string doing the splitting. #[derive(Debug)] pub struct SplitReverse<'h, 's> { finder: FindReverse<'h, 's>, /// The end position of the previous match of our splitter. The element /// we yield corresponds to the substring starting at `last` up to the /// beginning of the next match of the splitter. last: usize, /// Only set when iteration is complete. A corner case here is when a /// splitter is matched at the end of the haystack. At that point, we still /// need to yield an empty string following it. done: bool, } impl<'h, 's> SplitReverse<'h, 's> { fn new(haystack: &'h [u8], splitter: &'s [u8]) -> SplitReverse<'h, 's> { let finder = haystack.rfind_iter(splitter); SplitReverse { finder, last: haystack.len(), done: false } } } impl<'h, 's> Iterator for SplitReverse<'h, 's> { type Item = &'h [u8]; #[inline] fn next(&mut self) -> Option<&'h [u8]> { let haystack = self.finder.haystack(); match self.finder.next() { Some(start) => { let nlen = self.finder.needle().len(); let next = &haystack[start + nlen..self.last]; self.last = start; Some(next) } None => { if self.last == 0 { if !self.done { self.done = true; Some(b"") } else { None } } else { let s = &haystack[..self.last]; self.last = 0; self.done = true; Some(s) } } } } } /// An iterator over at most `n` substrings in a byte string, split by a /// separator. /// /// `'h` is the lifetime of the byte string being split (the haystack), while /// `'s` is the lifetime of the byte string doing the splitting. #[derive(Debug)] pub struct SplitN<'h, 's> { split: Split<'h, 's>, limit: usize, count: usize, } impl<'h, 's> SplitN<'h, 's> { fn new( haystack: &'h [u8], splitter: &'s [u8], limit: usize, ) -> SplitN<'h, 's> { let split = haystack.split_str(splitter); SplitN { split, limit, count: 0 } } } impl<'h, 's> Iterator for SplitN<'h, 's> { type Item = &'h [u8]; #[inline] fn next(&mut self) -> Option<&'h [u8]> { self.count += 1; if self.count > self.limit || self.split.done { None } else if self.count == self.limit { Some(&self.split.finder.haystack[self.split.last..]) } else { self.split.next() } } } /// An iterator over at most `n` substrings in a byte string, split by a /// separator, in reverse. /// /// `'h` is the lifetime of the byte string being split (the haystack), while /// `'s` is the lifetime of the byte string doing the splitting. #[derive(Debug)] pub struct SplitNReverse<'h, 's> { split: SplitReverse<'h, 's>, limit: usize, count: usize, } impl<'h, 's> SplitNReverse<'h, 's> { fn new( haystack: &'h [u8], splitter: &'s [u8], limit: usize, ) -> SplitNReverse<'h, 's> { let split = haystack.rsplit_str(splitter); SplitNReverse { split, limit, count: 0 } } } impl<'h, 's> Iterator for SplitNReverse<'h, 's> { type Item = &'h [u8]; #[inline] fn next(&mut self) -> Option<&'h [u8]> { self.count += 1; if self.count > self.limit || self.split.done { None } else if self.count == self.limit { Some(&self.split.finder.haystack()[..self.split.last]) } else { self.split.next() } } } /// An iterator over all lines in a byte string, without their terminators. /// /// For this iterator, the only line terminators recognized are `\r\n` and /// `\n`. /// /// `'a` is the lifetime of the byte string being iterated over. #[derive(Clone, Debug)] pub struct Lines<'a> { it: LinesWithTerminator<'a>, } impl<'a> Lines<'a> { fn new(bytes: &'a [u8]) -> Lines<'a> { Lines { it: LinesWithTerminator::new(bytes) } } /// Return a copy of the rest of the underlying bytes without affecting the /// iterator itself. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = b"\ /// foo /// bar\r /// baz"; /// let mut lines = s.lines(); /// assert_eq!(lines.next(), Some(B("foo"))); /// assert_eq!(lines.as_bytes(), B("bar\r\nbaz")); /// ``` pub fn as_bytes(&self) -> &'a [u8] { self.it.bytes } } impl<'a> Iterator for Lines<'a> { type Item = &'a [u8]; #[inline] fn next(&mut self) -> Option<&'a [u8]> { Some(trim_last_terminator(self.it.next()?)) } } impl<'a> DoubleEndedIterator for Lines<'a> { #[inline] fn next_back(&mut self) -> Option { Some(trim_last_terminator(self.it.next_back()?)) } } impl<'a> iter::FusedIterator for Lines<'a> {} /// An iterator over all lines in a byte string, including their terminators. /// /// For this iterator, the only line terminator recognized is `\n`. (Since /// line terminators are included, this also handles `\r\n` line endings.) /// /// Line terminators are only included if they are present in the original /// byte string. For example, the last line in a byte string may not end with /// a line terminator. /// /// Concatenating all elements yielded by this iterator is guaranteed to yield /// the original byte string. /// /// `'a` is the lifetime of the byte string being iterated over. #[derive(Clone, Debug)] pub struct LinesWithTerminator<'a> { bytes: &'a [u8], } impl<'a> LinesWithTerminator<'a> { fn new(bytes: &'a [u8]) -> LinesWithTerminator<'a> { LinesWithTerminator { bytes } } /// Return a copy of the rest of the underlying bytes without affecting the /// iterator itself. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = b"\ /// foo /// bar\r /// baz"; /// let mut lines = s.lines_with_terminator(); /// assert_eq!(lines.next(), Some(B("foo\n"))); /// assert_eq!(lines.as_bytes(), B("bar\r\nbaz")); /// ``` pub fn as_bytes(&self) -> &'a [u8] { self.bytes } } impl<'a> Iterator for LinesWithTerminator<'a> { type Item = &'a [u8]; #[inline] fn next(&mut self) -> Option<&'a [u8]> { match self.bytes.find_byte(b'\n') { None if self.bytes.is_empty() => None, None => { let line = self.bytes; self.bytes = b""; Some(line) } Some(end) => { let line = &self.bytes[..end + 1]; self.bytes = &self.bytes[end + 1..]; Some(line) } } } } impl<'a> DoubleEndedIterator for LinesWithTerminator<'a> { #[inline] fn next_back(&mut self) -> Option { let end = self.bytes.len().checked_sub(1)?; match self.bytes[..end].rfind_byte(b'\n') { None => { let line = self.bytes; self.bytes = b""; Some(line) } Some(end) => { let line = &self.bytes[end + 1..]; self.bytes = &self.bytes[..end + 1]; Some(line) } } } } impl<'a> iter::FusedIterator for LinesWithTerminator<'a> {} fn trim_last_terminator(mut s: &[u8]) -> &[u8] { if s.last_byte() == Some(b'\n') { s = &s[..s.len() - 1]; if s.last_byte() == Some(b'\r') { s = &s[..s.len() - 1]; } } s } #[cfg(all(test, feature = "std"))] mod tests { use crate::{ ext_slice::{ByteSlice, Lines, LinesWithTerminator, B}, tests::LOSSY_TESTS, }; #[test] fn to_str_lossy() { for (i, &(expected, input)) in LOSSY_TESTS.iter().enumerate() { let got = B(input).to_str_lossy(); assert_eq!( expected.as_bytes(), got.as_bytes(), "to_str_lossy(ith: {:?}, given: {:?})", i, input, ); let mut got = String::new(); B(input).to_str_lossy_into(&mut got); assert_eq!( expected.as_bytes(), got.as_bytes(), "to_str_lossy_into", ); let got = String::from_utf8_lossy(input); assert_eq!(expected.as_bytes(), got.as_bytes(), "std"); } } #[test] fn lines_iteration() { macro_rules! t { ($it:expr, $forward:expr) => { let mut res: Vec<&[u8]> = Vec::from($forward); assert_eq!($it.collect::>(), res); res.reverse(); assert_eq!($it.rev().collect::>(), res); }; } t!(Lines::new(b""), []); t!(LinesWithTerminator::new(b""), []); t!(Lines::new(b"\n"), [B("")]); t!(Lines::new(b"\r\n"), [B("")]); t!(LinesWithTerminator::new(b"\n"), [B("\n")]); t!(Lines::new(b"a"), [B("a")]); t!(LinesWithTerminator::new(b"a"), [B("a")]); t!(Lines::new(b"abc"), [B("abc")]); t!(LinesWithTerminator::new(b"abc"), [B("abc")]); t!(Lines::new(b"abc\n"), [B("abc")]); t!(Lines::new(b"abc\r\n"), [B("abc")]); t!(LinesWithTerminator::new(b"abc\n"), [B("abc\n")]); t!(Lines::new(b"abc\n\n"), [B("abc"), B("")]); t!(LinesWithTerminator::new(b"abc\n\n"), [B("abc\n"), B("\n")]); t!(Lines::new(b"abc\n\ndef"), [B("abc"), B(""), B("def")]); t!( LinesWithTerminator::new(b"abc\n\ndef"), [B("abc\n"), B("\n"), B("def")] ); t!(Lines::new(b"abc\n\ndef\n"), [B("abc"), B(""), B("def")]); t!( LinesWithTerminator::new(b"abc\n\ndef\n"), [B("abc\n"), B("\n"), B("def\n")] ); t!(Lines::new(b"\na\nb\n"), [B(""), B("a"), B("b")]); t!( LinesWithTerminator::new(b"\na\nb\n"), [B("\n"), B("a\n"), B("b\n")] ); t!(Lines::new(b"\n\n\n"), [B(""), B(""), B("")]); t!(LinesWithTerminator::new(b"\n\n\n"), [B("\n"), B("\n"), B("\n")]); } } bstr-1.7.0/src/ext_vec.rs000064400000000000000000001045211046102023000134000ustar 00000000000000use core::fmt; use core::iter; use core::ops; use core::ptr; use alloc::{borrow::Cow, string::String, vec, vec::Vec}; #[cfg(feature = "std")] use std::{ error, ffi::{OsStr, OsString}, path::{Path, PathBuf}, }; use crate::{ ext_slice::ByteSlice, utf8::{self, Utf8Error}, }; /// Concatenate the elements given by the iterator together into a single /// `Vec`. /// /// The elements may be any type that can be cheaply converted into an `&[u8]`. /// This includes, but is not limited to, `&str`, `&BStr` and `&[u8]` itself. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr; /// /// let s = bstr::concat(&["foo", "bar", "baz"]); /// assert_eq!(s, "foobarbaz".as_bytes()); /// ``` #[inline] pub fn concat(elements: I) -> Vec where T: AsRef<[u8]>, I: IntoIterator, { let mut dest = vec![]; for element in elements { dest.push_str(element); } dest } /// Join the elements given by the iterator with the given separator into a /// single `Vec`. /// /// Both the separator and the elements may be any type that can be cheaply /// converted into an `&[u8]`. This includes, but is not limited to, /// `&str`, `&BStr` and `&[u8]` itself. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr; /// /// let s = bstr::join(",", &["foo", "bar", "baz"]); /// assert_eq!(s, "foo,bar,baz".as_bytes()); /// ``` #[inline] pub fn join(separator: B, elements: I) -> Vec where B: AsRef<[u8]>, T: AsRef<[u8]>, I: IntoIterator, { let mut it = elements.into_iter(); let mut dest = vec![]; match it.next() { None => return dest, Some(first) => { dest.push_str(first); } } for element in it { dest.push_str(&separator); dest.push_str(element); } dest } impl ByteVec for Vec { #[inline] fn as_vec(&self) -> &Vec { self } #[inline] fn as_vec_mut(&mut self) -> &mut Vec { self } #[inline] fn into_vec(self) -> Vec { self } } /// Ensure that callers cannot implement `ByteSlice` by making an /// umplementable trait its super trait. mod private { pub trait Sealed {} } impl private::Sealed for Vec {} /// A trait that extends `Vec` with string oriented methods. /// /// Note that when using the constructor methods, such as /// `ByteVec::from_slice`, one should actually call them using the concrete /// type. For example: /// /// ``` /// use bstr::{B, ByteVec}; /// /// let s = Vec::from_slice(b"abc"); // NOT ByteVec::from_slice("...") /// assert_eq!(s, B("abc")); /// ``` /// /// This trait is sealed and cannot be implemented outside of `bstr`. pub trait ByteVec: private::Sealed { /// A method for accessing the raw vector bytes of this type. This is /// always a no-op and callers shouldn't care about it. This only exists /// for making the extension trait work. #[doc(hidden)] fn as_vec(&self) -> &Vec; /// A method for accessing the raw vector bytes of this type, mutably. This /// is always a no-op and callers shouldn't care about it. This only exists /// for making the extension trait work. #[doc(hidden)] fn as_vec_mut(&mut self) -> &mut Vec; /// A method for consuming ownership of this vector. This is always a no-op /// and callers shouldn't care about it. This only exists for making the /// extension trait work. #[doc(hidden)] fn into_vec(self) -> Vec where Self: Sized; /// Create a new owned byte string from the given byte slice. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteVec}; /// /// let s = Vec::from_slice(b"abc"); /// assert_eq!(s, B("abc")); /// ``` #[inline] fn from_slice>(bytes: B) -> Vec { bytes.as_ref().to_vec() } /// Create a new byte string from an owned OS string. /// /// When the underlying bytes of OS strings are accessible, then this /// always succeeds and is zero cost. Otherwise, this returns the given /// `OsString` if it is not valid UTF-8. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::ffi::OsString; /// /// use bstr::{B, ByteVec}; /// /// let os_str = OsString::from("foo"); /// let bs = Vec::from_os_string(os_str).expect("valid UTF-8"); /// assert_eq!(bs, B("foo")); /// ``` #[inline] #[cfg(feature = "std")] fn from_os_string(os_str: OsString) -> Result, OsString> { #[cfg(unix)] #[inline] fn imp(os_str: OsString) -> Result, OsString> { use std::os::unix::ffi::OsStringExt; Ok(Vec::from(os_str.into_vec())) } #[cfg(not(unix))] #[inline] fn imp(os_str: OsString) -> Result, OsString> { os_str.into_string().map(Vec::from) } imp(os_str) } /// Lossily create a new byte string from an OS string slice. /// /// When the underlying bytes of OS strings are accessible, then this is /// zero cost and always returns a slice. Otherwise, a UTF-8 check is /// performed and if the given OS string is not valid UTF-8, then it is /// lossily decoded into valid UTF-8 (with invalid bytes replaced by the /// Unicode replacement codepoint). /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::ffi::OsStr; /// /// use bstr::{B, ByteVec}; /// /// let os_str = OsStr::new("foo"); /// let bs = Vec::from_os_str_lossy(os_str); /// assert_eq!(bs, B("foo")); /// ``` #[inline] #[cfg(feature = "std")] fn from_os_str_lossy<'a>(os_str: &'a OsStr) -> Cow<'a, [u8]> { #[cfg(unix)] #[inline] fn imp<'a>(os_str: &'a OsStr) -> Cow<'a, [u8]> { use std::os::unix::ffi::OsStrExt; Cow::Borrowed(os_str.as_bytes()) } #[cfg(not(unix))] #[inline] fn imp<'a>(os_str: &'a OsStr) -> Cow<'a, [u8]> { match os_str.to_string_lossy() { Cow::Borrowed(x) => Cow::Borrowed(x.as_bytes()), Cow::Owned(x) => Cow::Owned(Vec::from(x)), } } imp(os_str) } /// Create a new byte string from an owned file path. /// /// When the underlying bytes of paths are accessible, then this always /// succeeds and is zero cost. Otherwise, this returns the given `PathBuf` /// if it is not valid UTF-8. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::path::PathBuf; /// /// use bstr::{B, ByteVec}; /// /// let path = PathBuf::from("foo"); /// let bs = Vec::from_path_buf(path).expect("must be valid UTF-8"); /// assert_eq!(bs, B("foo")); /// ``` #[inline] #[cfg(feature = "std")] fn from_path_buf(path: PathBuf) -> Result, PathBuf> { Vec::from_os_string(path.into_os_string()).map_err(PathBuf::from) } /// Lossily create a new byte string from a file path. /// /// When the underlying bytes of paths are accessible, then this is /// zero cost and always returns a slice. Otherwise, a UTF-8 check is /// performed and if the given path is not valid UTF-8, then it is lossily /// decoded into valid UTF-8 (with invalid bytes replaced by the Unicode /// replacement codepoint). /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::path::Path; /// /// use bstr::{B, ByteVec}; /// /// let path = Path::new("foo"); /// let bs = Vec::from_path_lossy(path); /// assert_eq!(bs, B("foo")); /// ``` #[inline] #[cfg(feature = "std")] fn from_path_lossy<'a>(path: &'a Path) -> Cow<'a, [u8]> { Vec::from_os_str_lossy(path.as_os_str()) } /// Unescapes the given string into its raw bytes. /// /// This looks for the escape sequences `\xNN`, `\0`, `\r`, `\n`, `\t` /// and `\` and translates them into their corresponding unescaped form. /// /// Incomplete escape sequences or things that look like escape sequences /// but are not (for example, `\i` or `\xYZ`) are passed through literally. /// /// This is the dual of [`ByteSlice::escape_bytes`]. /// /// Note that the zero or NUL byte may be represented as either `\0` or /// `\x00`. Both will be unescaped into the zero byte. /// /// # Examples /// /// This shows basic usage: /// /// ``` /// # #[cfg(feature = "alloc")] { /// use bstr::{B, BString, ByteVec}; /// /// assert_eq!( /// BString::from(b"foo\xFFbar"), /// Vec::unescape_bytes(r"foo\xFFbar"), /// ); /// assert_eq!( /// BString::from(b"foo\nbar"), /// Vec::unescape_bytes(r"foo\nbar"), /// ); /// assert_eq!( /// BString::from(b"foo\tbar"), /// Vec::unescape_bytes(r"foo\tbar"), /// ); /// assert_eq!( /// BString::from(b"foo\\bar"), /// Vec::unescape_bytes(r"foo\\bar"), /// ); /// assert_eq!( /// BString::from("foo☃bar"), /// Vec::unescape_bytes(r"foo☃bar"), /// ); /// /// # } /// ``` /// /// This shows some examples of how incomplete or "incorrect" escape /// sequences get passed through literally. /// /// ``` /// # #[cfg(feature = "alloc")] { /// use bstr::{B, BString, ByteVec}; /// /// // Show some incomplete escape sequences. /// assert_eq!( /// BString::from(br"\"), /// Vec::unescape_bytes(r"\"), /// ); /// assert_eq!( /// BString::from(br"\"), /// Vec::unescape_bytes(r"\\"), /// ); /// assert_eq!( /// BString::from(br"\x"), /// Vec::unescape_bytes(r"\x"), /// ); /// assert_eq!( /// BString::from(br"\xA"), /// Vec::unescape_bytes(r"\xA"), /// ); /// // And now some that kind of look like escape /// // sequences, but aren't. /// assert_eq!( /// BString::from(br"\xZ"), /// Vec::unescape_bytes(r"\xZ"), /// ); /// assert_eq!( /// BString::from(br"\xZZ"), /// Vec::unescape_bytes(r"\xZZ"), /// ); /// assert_eq!( /// BString::from(br"\i"), /// Vec::unescape_bytes(r"\i"), /// ); /// assert_eq!( /// BString::from(br"\u"), /// Vec::unescape_bytes(r"\u"), /// ); /// assert_eq!( /// BString::from(br"\u{2603}"), /// Vec::unescape_bytes(r"\u{2603}"), /// ); /// /// # } /// ``` #[inline] #[cfg(feature = "alloc")] fn unescape_bytes>(escaped: S) -> Vec { let s = escaped.as_ref(); crate::escape_bytes::UnescapeBytes::new(s.chars()).collect() } /// Appends the given byte to the end of this byte string. /// /// Note that this is equivalent to the generic `Vec::push` method. This /// method is provided to permit callers to explicitly differentiate /// between pushing bytes, codepoints and strings. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = >::from("abc"); /// s.push_byte(b'\xE2'); /// s.push_byte(b'\x98'); /// s.push_byte(b'\x83'); /// assert_eq!(s, "abc☃".as_bytes()); /// ``` #[inline] fn push_byte(&mut self, byte: u8) { self.as_vec_mut().push(byte); } /// Appends the given `char` to the end of this byte string. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = >::from("abc"); /// s.push_char('1'); /// s.push_char('2'); /// s.push_char('3'); /// assert_eq!(s, "abc123".as_bytes()); /// ``` #[inline] fn push_char(&mut self, ch: char) { if ch.len_utf8() == 1 { self.push_byte(ch as u8); return; } self.as_vec_mut() .extend_from_slice(ch.encode_utf8(&mut [0; 4]).as_bytes()); } /// Appends the given slice to the end of this byte string. This accepts /// any type that be converted to a `&[u8]`. This includes, but is not /// limited to, `&str`, `&BStr`, and of course, `&[u8]` itself. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = >::from("abc"); /// s.push_str(b"123"); /// assert_eq!(s, "abc123".as_bytes()); /// ``` #[inline] fn push_str>(&mut self, bytes: B) { self.as_vec_mut().extend_from_slice(bytes.as_ref()); } /// Converts a `Vec` into a `String` if and only if this byte string is /// valid UTF-8. /// /// If it is not valid UTF-8, then a /// [`FromUtf8Error`](struct.FromUtf8Error.html) /// is returned. (This error can be used to examine why UTF-8 validation /// failed, or to regain the original byte string.) /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let bytes = Vec::from("hello"); /// let string = bytes.into_string().unwrap(); /// /// assert_eq!("hello", string); /// ``` /// /// If this byte string is not valid UTF-8, then an error will be returned. /// That error can then be used to inspect the location at which invalid /// UTF-8 was found, or to regain the original byte string: /// /// ``` /// use bstr::{B, ByteVec}; /// /// let bytes = Vec::from_slice(b"foo\xFFbar"); /// let err = bytes.into_string().unwrap_err(); /// /// assert_eq!(err.utf8_error().valid_up_to(), 3); /// assert_eq!(err.utf8_error().error_len(), Some(1)); /// /// // At no point in this example is an allocation performed. /// let bytes = Vec::from(err.into_vec()); /// assert_eq!(bytes, B(b"foo\xFFbar")); /// ``` #[inline] fn into_string(self) -> Result where Self: Sized, { match utf8::validate(self.as_vec()) { Err(err) => Err(FromUtf8Error { original: self.into_vec(), err }), Ok(()) => { // SAFETY: This is safe because of the guarantees provided by // utf8::validate. unsafe { Ok(self.into_string_unchecked()) } } } } /// Lossily converts a `Vec` into a `String`. If this byte string /// contains invalid UTF-8, then the invalid bytes are replaced with the /// Unicode replacement codepoint. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let bytes = Vec::from_slice(b"foo\xFFbar"); /// let string = bytes.into_string_lossy(); /// assert_eq!(string, "foo\u{FFFD}bar"); /// ``` #[inline] fn into_string_lossy(self) -> String where Self: Sized, { match self.as_vec().to_str_lossy() { Cow::Borrowed(_) => { // SAFETY: to_str_lossy() returning a Cow::Borrowed guarantees // the entire string is valid utf8. unsafe { self.into_string_unchecked() } } Cow::Owned(s) => s, } } /// Unsafely convert this byte string into a `String`, without checking for /// valid UTF-8. /// /// # Safety /// /// Callers *must* ensure that this byte string is valid UTF-8 before /// calling this method. Converting a byte string into a `String` that is /// not valid UTF-8 is considered undefined behavior. /// /// This routine is useful in performance sensitive contexts where the /// UTF-8 validity of the byte string is already known and it is /// undesirable to pay the cost of an additional UTF-8 validation check /// that [`into_string`](#method.into_string) performs. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// // SAFETY: This is safe because string literals are guaranteed to be /// // valid UTF-8 by the Rust compiler. /// let s = unsafe { Vec::from("☃βツ").into_string_unchecked() }; /// assert_eq!("☃βツ", s); /// ``` #[inline] unsafe fn into_string_unchecked(self) -> String where Self: Sized, { String::from_utf8_unchecked(self.into_vec()) } /// Converts this byte string into an OS string, in place. /// /// When OS strings can be constructed from arbitrary byte sequences, this /// always succeeds and is zero cost. Otherwise, if this byte string is not /// valid UTF-8, then an error (with the original byte string) is returned. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::ffi::OsStr; /// /// use bstr::ByteVec; /// /// let bs = Vec::from("foo"); /// let os_str = bs.into_os_string().expect("should be valid UTF-8"); /// assert_eq!(os_str, OsStr::new("foo")); /// ``` #[cfg(feature = "std")] #[inline] fn into_os_string(self) -> Result where Self: Sized, { #[cfg(unix)] #[inline] fn imp(v: Vec) -> Result { use std::os::unix::ffi::OsStringExt; Ok(OsString::from_vec(v)) } #[cfg(not(unix))] #[inline] fn imp(v: Vec) -> Result { v.into_string().map(OsString::from) } imp(self.into_vec()) } /// Lossily converts this byte string into an OS string, in place. /// /// When OS strings can be constructed from arbitrary byte sequences, this /// is zero cost and always returns a slice. Otherwise, this will perform a /// UTF-8 check and lossily convert this byte string into valid UTF-8 using /// the Unicode replacement codepoint. /// /// Note that this can prevent the correct roundtripping of file paths when /// the representation of `OsString` is opaque. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let bs = Vec::from_slice(b"foo\xFFbar"); /// let os_str = bs.into_os_string_lossy(); /// assert_eq!(os_str.to_string_lossy(), "foo\u{FFFD}bar"); /// ``` #[inline] #[cfg(feature = "std")] fn into_os_string_lossy(self) -> OsString where Self: Sized, { #[cfg(unix)] #[inline] fn imp(v: Vec) -> OsString { use std::os::unix::ffi::OsStringExt; OsString::from_vec(v) } #[cfg(not(unix))] #[inline] fn imp(v: Vec) -> OsString { OsString::from(v.into_string_lossy()) } imp(self.into_vec()) } /// Converts this byte string into an owned file path, in place. /// /// When paths can be constructed from arbitrary byte sequences, this /// always succeeds and is zero cost. Otherwise, if this byte string is not /// valid UTF-8, then an error (with the original byte string) is returned. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let bs = Vec::from("foo"); /// let path = bs.into_path_buf().expect("should be valid UTF-8"); /// assert_eq!(path.as_os_str(), "foo"); /// ``` #[cfg(feature = "std")] #[inline] fn into_path_buf(self) -> Result where Self: Sized, { self.into_os_string().map(PathBuf::from) } /// Lossily converts this byte string into an owned file path, in place. /// /// When paths can be constructed from arbitrary byte sequences, this is /// zero cost and always returns a slice. Otherwise, this will perform a /// UTF-8 check and lossily convert this byte string into valid UTF-8 using /// the Unicode replacement codepoint. /// /// Note that this can prevent the correct roundtripping of file paths when /// the representation of `PathBuf` is opaque. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let bs = Vec::from_slice(b"foo\xFFbar"); /// let path = bs.into_path_buf_lossy(); /// assert_eq!(path.to_string_lossy(), "foo\u{FFFD}bar"); /// ``` #[inline] #[cfg(feature = "std")] fn into_path_buf_lossy(self) -> PathBuf where Self: Sized, { PathBuf::from(self.into_os_string_lossy()) } /// Removes the last byte from this `Vec` and returns it. /// /// If this byte string is empty, then `None` is returned. /// /// If the last codepoint in this byte string is not ASCII, then removing /// the last byte could make this byte string contain invalid UTF-8. /// /// Note that this is equivalent to the generic `Vec::pop` method. This /// method is provided to permit callers to explicitly differentiate /// between popping bytes and codepoints. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from("foo"); /// assert_eq!(s.pop_byte(), Some(b'o')); /// assert_eq!(s.pop_byte(), Some(b'o')); /// assert_eq!(s.pop_byte(), Some(b'f')); /// assert_eq!(s.pop_byte(), None); /// ``` #[inline] fn pop_byte(&mut self) -> Option { self.as_vec_mut().pop() } /// Removes the last codepoint from this `Vec` and returns it. /// /// If this byte string is empty, then `None` is returned. If the last /// bytes of this byte string do not correspond to a valid UTF-8 code unit /// sequence, then the Unicode replacement codepoint is yielded instead in /// accordance with the /// [replacement codepoint substitution policy](index.html#handling-of-invalid-utf8-8). /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from("foo"); /// assert_eq!(s.pop_char(), Some('o')); /// assert_eq!(s.pop_char(), Some('o')); /// assert_eq!(s.pop_char(), Some('f')); /// assert_eq!(s.pop_char(), None); /// ``` /// /// This shows the replacement codepoint substitution policy. Note that /// the first pop yields a replacement codepoint but actually removes two /// bytes. This is in contrast with subsequent pops when encountering /// `\xFF` since `\xFF` is never a valid prefix for any valid UTF-8 /// code unit sequence. /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from_slice(b"f\xFF\xFF\xFFoo\xE2\x98"); /// assert_eq!(s.pop_char(), Some('\u{FFFD}')); /// assert_eq!(s.pop_char(), Some('o')); /// assert_eq!(s.pop_char(), Some('o')); /// assert_eq!(s.pop_char(), Some('\u{FFFD}')); /// assert_eq!(s.pop_char(), Some('\u{FFFD}')); /// assert_eq!(s.pop_char(), Some('\u{FFFD}')); /// assert_eq!(s.pop_char(), Some('f')); /// assert_eq!(s.pop_char(), None); /// ``` #[inline] fn pop_char(&mut self) -> Option { let (ch, size) = utf8::decode_last_lossy(self.as_vec()); if size == 0 { return None; } let new_len = self.as_vec().len() - size; self.as_vec_mut().truncate(new_len); Some(ch) } /// Removes a `char` from this `Vec` at the given byte position and /// returns it. /// /// If the bytes at the given position do not lead to a valid UTF-8 code /// unit sequence, then a /// [replacement codepoint is returned instead](index.html#handling-of-invalid-utf8-8). /// /// # Panics /// /// Panics if `at` is larger than or equal to this byte string's length. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from("foo☃bar"); /// assert_eq!(s.remove_char(3), '☃'); /// assert_eq!(s, b"foobar"); /// ``` /// /// This example shows how the Unicode replacement codepoint policy is /// used: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from_slice(b"foo\xFFbar"); /// assert_eq!(s.remove_char(3), '\u{FFFD}'); /// assert_eq!(s, b"foobar"); /// ``` #[inline] fn remove_char(&mut self, at: usize) -> char { let (ch, size) = utf8::decode_lossy(&self.as_vec()[at..]); assert!( size > 0, "expected {} to be less than {}", at, self.as_vec().len(), ); self.as_vec_mut().drain(at..at + size); ch } /// Inserts the given codepoint into this `Vec` at a particular byte /// position. /// /// This is an `O(n)` operation as it may copy a number of elements in this /// byte string proportional to its length. /// /// # Panics /// /// Panics if `at` is larger than the byte string's length. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from("foobar"); /// s.insert_char(3, '☃'); /// assert_eq!(s, "foo☃bar".as_bytes()); /// ``` #[inline] fn insert_char(&mut self, at: usize, ch: char) { self.insert_str(at, ch.encode_utf8(&mut [0; 4]).as_bytes()); } /// Inserts the given byte string into this byte string at a particular /// byte position. /// /// This is an `O(n)` operation as it may copy a number of elements in this /// byte string proportional to its length. /// /// The given byte string may be any type that can be cheaply converted /// into a `&[u8]`. This includes, but is not limited to, `&str` and /// `&[u8]`. /// /// # Panics /// /// Panics if `at` is larger than the byte string's length. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from("foobar"); /// s.insert_str(3, "☃☃☃"); /// assert_eq!(s, "foo☃☃☃bar".as_bytes()); /// ``` #[inline] fn insert_str>(&mut self, at: usize, bytes: B) { let bytes = bytes.as_ref(); let len = self.as_vec().len(); assert!(at <= len, "expected {} to be <= {}", at, len); // SAFETY: We'd like to efficiently splice in the given bytes into // this byte string. Since we are only working with `u8` elements here, // we only need to consider whether our bounds are correct and whether // our byte string has enough space. self.as_vec_mut().reserve(bytes.len()); unsafe { // Shift bytes after `at` over by the length of `bytes` to make // room for it. This requires referencing two regions of memory // that may overlap, so we use ptr::copy. ptr::copy( self.as_vec().as_ptr().add(at), self.as_vec_mut().as_mut_ptr().add(at + bytes.len()), len - at, ); // Now copy the bytes given into the room we made above. In this // case, we know that the given bytes cannot possibly overlap // with this byte string since we have a mutable borrow of the // latter. Thus, we can use a nonoverlapping copy. ptr::copy_nonoverlapping( bytes.as_ptr(), self.as_vec_mut().as_mut_ptr().add(at), bytes.len(), ); self.as_vec_mut().set_len(len + bytes.len()); } } /// Removes the specified range in this byte string and replaces it with /// the given bytes. The given bytes do not need to have the same length /// as the range provided. /// /// # Panics /// /// Panics if the given range is invalid. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from("foobar"); /// s.replace_range(2..4, "xxxxx"); /// assert_eq!(s, "foxxxxxar".as_bytes()); /// ``` #[inline] fn replace_range(&mut self, range: R, replace_with: B) where R: ops::RangeBounds, B: AsRef<[u8]>, { self.as_vec_mut().splice(range, replace_with.as_ref().iter().cloned()); } /// Creates a draining iterator that removes the specified range in this /// `Vec` and yields each of the removed bytes. /// /// Note that the elements specified by the given range are removed /// regardless of whether the returned iterator is fully exhausted. /// /// Also note that is is unspecified how many bytes are removed from the /// `Vec` if the `DrainBytes` iterator is leaked. /// /// # Panics /// /// Panics if the given range is not valid. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from("foobar"); /// { /// let mut drainer = s.drain_bytes(2..4); /// assert_eq!(drainer.next(), Some(b'o')); /// assert_eq!(drainer.next(), Some(b'b')); /// assert_eq!(drainer.next(), None); /// } /// assert_eq!(s, "foar".as_bytes()); /// ``` #[inline] fn drain_bytes(&mut self, range: R) -> DrainBytes<'_> where R: ops::RangeBounds, { DrainBytes { it: self.as_vec_mut().drain(range) } } } /// A draining byte oriented iterator for `Vec`. /// /// This iterator is created by /// [`ByteVec::drain_bytes`](trait.ByteVec.html#method.drain_bytes). /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::ByteVec; /// /// let mut s = Vec::from("foobar"); /// { /// let mut drainer = s.drain_bytes(2..4); /// assert_eq!(drainer.next(), Some(b'o')); /// assert_eq!(drainer.next(), Some(b'b')); /// assert_eq!(drainer.next(), None); /// } /// assert_eq!(s, "foar".as_bytes()); /// ``` #[derive(Debug)] pub struct DrainBytes<'a> { it: vec::Drain<'a, u8>, } impl<'a> iter::FusedIterator for DrainBytes<'a> {} impl<'a> Iterator for DrainBytes<'a> { type Item = u8; #[inline] fn next(&mut self) -> Option { self.it.next() } } impl<'a> DoubleEndedIterator for DrainBytes<'a> { #[inline] fn next_back(&mut self) -> Option { self.it.next_back() } } impl<'a> ExactSizeIterator for DrainBytes<'a> { #[inline] fn len(&self) -> usize { self.it.len() } } /// An error that may occur when converting a `Vec` to a `String`. /// /// This error includes the original `Vec` that failed to convert to a /// `String`. This permits callers to recover the allocation used even if it /// it not valid UTF-8. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteVec}; /// /// let bytes = Vec::from_slice(b"foo\xFFbar"); /// let err = bytes.into_string().unwrap_err(); /// /// assert_eq!(err.utf8_error().valid_up_to(), 3); /// assert_eq!(err.utf8_error().error_len(), Some(1)); /// /// // At no point in this example is an allocation performed. /// let bytes = Vec::from(err.into_vec()); /// assert_eq!(bytes, B(b"foo\xFFbar")); /// ``` #[derive(Debug, Eq, PartialEq)] pub struct FromUtf8Error { original: Vec, err: Utf8Error, } impl FromUtf8Error { /// Return the original bytes as a slice that failed to convert to a /// `String`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteVec}; /// /// let bytes = Vec::from_slice(b"foo\xFFbar"); /// let err = bytes.into_string().unwrap_err(); /// /// // At no point in this example is an allocation performed. /// assert_eq!(err.as_bytes(), B(b"foo\xFFbar")); /// ``` #[inline] pub fn as_bytes(&self) -> &[u8] { &self.original } /// Consume this error and return the original byte string that failed to /// convert to a `String`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteVec}; /// /// let bytes = Vec::from_slice(b"foo\xFFbar"); /// let err = bytes.into_string().unwrap_err(); /// let original = err.into_vec(); /// /// // At no point in this example is an allocation performed. /// assert_eq!(original, B(b"foo\xFFbar")); /// ``` #[inline] pub fn into_vec(self) -> Vec { self.original } /// Return the underlying UTF-8 error that occurred. This error provides /// information on the nature and location of the invalid UTF-8 detected. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::{B, ByteVec}; /// /// let bytes = Vec::from_slice(b"foo\xFFbar"); /// let err = bytes.into_string().unwrap_err(); /// /// assert_eq!(err.utf8_error().valid_up_to(), 3); /// assert_eq!(err.utf8_error().error_len(), Some(1)); /// ``` #[inline] pub fn utf8_error(&self) -> &Utf8Error { &self.err } } #[cfg(feature = "std")] impl error::Error for FromUtf8Error { #[inline] fn description(&self) -> &str { "invalid UTF-8 vector" } } impl fmt::Display for FromUtf8Error { #[inline] fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{}", self.err) } } #[cfg(all(test, feature = "std"))] mod tests { use crate::ext_vec::ByteVec; #[test] fn insert() { let mut s = vec![]; s.insert_str(0, "foo"); assert_eq!(s, "foo".as_bytes()); let mut s = Vec::from("a"); s.insert_str(0, "foo"); assert_eq!(s, "fooa".as_bytes()); let mut s = Vec::from("a"); s.insert_str(1, "foo"); assert_eq!(s, "afoo".as_bytes()); let mut s = Vec::from("foobar"); s.insert_str(3, "quux"); assert_eq!(s, "fooquuxbar".as_bytes()); let mut s = Vec::from("foobar"); s.insert_str(3, "x"); assert_eq!(s, "fooxbar".as_bytes()); let mut s = Vec::from("foobar"); s.insert_str(0, "x"); assert_eq!(s, "xfoobar".as_bytes()); let mut s = Vec::from("foobar"); s.insert_str(6, "x"); assert_eq!(s, "foobarx".as_bytes()); let mut s = Vec::from("foobar"); s.insert_str(3, "quuxbazquux"); assert_eq!(s, "fooquuxbazquuxbar".as_bytes()); } #[test] #[should_panic] fn insert_fail1() { let mut s = vec![]; s.insert_str(1, "foo"); } #[test] #[should_panic] fn insert_fail2() { let mut s = Vec::from("a"); s.insert_str(2, "foo"); } #[test] #[should_panic] fn insert_fail3() { let mut s = Vec::from("foobar"); s.insert_str(7, "foo"); } } bstr-1.7.0/src/impls.rs000064400000000000000000001010671046102023000130710ustar 00000000000000macro_rules! impl_partial_eq { ($lhs:ty, $rhs:ty) => { impl<'a, 'b> PartialEq<$rhs> for $lhs { #[inline] fn eq(&self, other: &$rhs) -> bool { let other: &[u8] = other.as_ref(); PartialEq::eq(self.as_bytes(), other) } } impl<'a, 'b> PartialEq<$lhs> for $rhs { #[inline] fn eq(&self, other: &$lhs) -> bool { let this: &[u8] = self.as_ref(); PartialEq::eq(this, other.as_bytes()) } } }; } #[cfg(feature = "alloc")] macro_rules! impl_partial_eq_cow { ($lhs:ty, $rhs:ty) => { impl<'a, 'b> PartialEq<$rhs> for $lhs { #[inline] fn eq(&self, other: &$rhs) -> bool { let other: &[u8] = (&**other).as_ref(); PartialEq::eq(self.as_bytes(), other) } } impl<'a, 'b> PartialEq<$lhs> for $rhs { #[inline] fn eq(&self, other: &$lhs) -> bool { let this: &[u8] = (&**other).as_ref(); PartialEq::eq(this, self.as_bytes()) } } }; } macro_rules! impl_partial_ord { ($lhs:ty, $rhs:ty) => { impl<'a, 'b> PartialOrd<$rhs> for $lhs { #[inline] fn partial_cmp(&self, other: &$rhs) -> Option { let other: &[u8] = other.as_ref(); PartialOrd::partial_cmp(self.as_bytes(), other) } } impl<'a, 'b> PartialOrd<$lhs> for $rhs { #[inline] fn partial_cmp(&self, other: &$lhs) -> Option { let this: &[u8] = self.as_ref(); PartialOrd::partial_cmp(this, other.as_bytes()) } } }; } #[cfg(feature = "alloc")] mod bstring { use core::{ cmp::Ordering, convert::TryFrom, fmt, iter::FromIterator, ops, }; use alloc::{ borrow::{Borrow, BorrowMut, Cow, ToOwned}, string::String, vec, vec::Vec, }; use crate::{ bstr::BStr, bstring::BString, ext_slice::ByteSlice, ext_vec::ByteVec, }; impl fmt::Display for BString { #[inline] fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fmt::Display::fmt(self.as_bstr(), f) } } impl fmt::Debug for BString { #[inline] fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fmt::Debug::fmt(self.as_bstr(), f) } } impl ops::Deref for BString { type Target = Vec; #[inline] fn deref(&self) -> &Vec { self.as_vec() } } impl ops::DerefMut for BString { #[inline] fn deref_mut(&mut self) -> &mut Vec { self.as_vec_mut() } } impl AsRef<[u8]> for BString { #[inline] fn as_ref(&self) -> &[u8] { self.as_bytes() } } impl AsRef for BString { #[inline] fn as_ref(&self) -> &BStr { self.as_bstr() } } impl AsMut<[u8]> for BString { #[inline] fn as_mut(&mut self) -> &mut [u8] { self.as_bytes_mut() } } impl AsMut for BString { #[inline] fn as_mut(&mut self) -> &mut BStr { self.as_mut_bstr() } } impl Borrow<[u8]> for BString { #[inline] fn borrow(&self) -> &[u8] { self.as_bytes() } } impl Borrow for BString { #[inline] fn borrow(&self) -> &BStr { self.as_bstr() } } impl Borrow for Vec { #[inline] fn borrow(&self) -> &BStr { self.as_slice().as_bstr() } } impl Borrow for String { #[inline] fn borrow(&self) -> &BStr { self.as_bytes().as_bstr() } } impl BorrowMut<[u8]> for BString { #[inline] fn borrow_mut(&mut self) -> &mut [u8] { self.as_bytes_mut() } } impl BorrowMut for BString { #[inline] fn borrow_mut(&mut self) -> &mut BStr { self.as_mut_bstr() } } impl BorrowMut for Vec { #[inline] fn borrow_mut(&mut self) -> &mut BStr { BStr::new_mut(self.as_mut_slice()) } } impl ToOwned for BStr { type Owned = BString; #[inline] fn to_owned(&self) -> BString { BString::from(self) } } impl Default for BString { fn default() -> BString { BString::from(vec![]) } } impl<'a, const N: usize> From<&'a [u8; N]> for BString { #[inline] fn from(s: &'a [u8; N]) -> BString { BString::from(&s[..]) } } impl From<[u8; N]> for BString { #[inline] fn from(s: [u8; N]) -> BString { BString::from(&s[..]) } } impl<'a> From<&'a [u8]> for BString { #[inline] fn from(s: &'a [u8]) -> BString { BString::from(s.to_vec()) } } impl From> for BString { #[inline] fn from(s: Vec) -> BString { BString::new(s) } } impl From for Vec { #[inline] fn from(s: BString) -> Vec { s.into_vec() } } impl<'a> From<&'a str> for BString { #[inline] fn from(s: &'a str) -> BString { BString::from(s.as_bytes().to_vec()) } } impl From for BString { #[inline] fn from(s: String) -> BString { BString::from(s.into_bytes()) } } impl<'a> From<&'a BStr> for BString { #[inline] fn from(s: &'a BStr) -> BString { BString::from(s.bytes.to_vec()) } } impl<'a> From for Cow<'a, BStr> { #[inline] fn from(s: BString) -> Cow<'a, BStr> { Cow::Owned(s) } } impl TryFrom for String { type Error = crate::FromUtf8Error; #[inline] fn try_from(s: BString) -> Result { s.into_vec().into_string() } } impl<'a> TryFrom<&'a BString> for &'a str { type Error = crate::Utf8Error; #[inline] fn try_from(s: &'a BString) -> Result<&'a str, crate::Utf8Error> { s.as_bytes().to_str() } } impl FromIterator for BString { #[inline] fn from_iter>(iter: T) -> BString { BString::from(iter.into_iter().collect::()) } } impl FromIterator for BString { #[inline] fn from_iter>(iter: T) -> BString { BString::from(iter.into_iter().collect::>()) } } impl<'a> FromIterator<&'a str> for BString { #[inline] fn from_iter>(iter: T) -> BString { let mut buf = vec![]; for b in iter { buf.push_str(b); } BString::from(buf) } } impl<'a> FromIterator<&'a [u8]> for BString { #[inline] fn from_iter>(iter: T) -> BString { let mut buf = vec![]; for b in iter { buf.push_str(b); } BString::from(buf) } } impl<'a> FromIterator<&'a BStr> for BString { #[inline] fn from_iter>(iter: T) -> BString { let mut buf = vec![]; for b in iter { buf.push_str(b); } BString::from(buf) } } impl FromIterator for BString { #[inline] fn from_iter>(iter: T) -> BString { let mut buf = vec![]; for b in iter { buf.push_str(b); } BString::from(buf) } } impl Eq for BString {} impl PartialEq for BString { #[inline] fn eq(&self, other: &BString) -> bool { &self[..] == &other[..] } } impl_partial_eq!(BString, Vec); impl_partial_eq!(BString, [u8]); impl_partial_eq!(BString, &'a [u8]); impl_partial_eq!(BString, String); impl_partial_eq!(BString, str); impl_partial_eq!(BString, &'a str); impl_partial_eq!(BString, BStr); impl_partial_eq!(BString, &'a BStr); impl PartialOrd for BString { #[inline] fn partial_cmp(&self, other: &BString) -> Option { PartialOrd::partial_cmp(self.as_bytes(), other.as_bytes()) } } impl Ord for BString { #[inline] fn cmp(&self, other: &BString) -> Ordering { self.partial_cmp(other).unwrap() } } impl_partial_ord!(BString, Vec); impl_partial_ord!(BString, [u8]); impl_partial_ord!(BString, &'a [u8]); impl_partial_ord!(BString, String); impl_partial_ord!(BString, str); impl_partial_ord!(BString, &'a str); impl_partial_ord!(BString, BStr); impl_partial_ord!(BString, &'a BStr); } mod bstr { use core::{ borrow::{Borrow, BorrowMut}, cmp::Ordering, convert::TryFrom, fmt, ops, }; #[cfg(feature = "alloc")] use alloc::{borrow::Cow, boxed::Box, string::String, vec::Vec}; use crate::{bstr::BStr, ext_slice::ByteSlice}; impl fmt::Display for BStr { #[inline] fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { /// Write the given bstr (lossily) to the given formatter. fn write_bstr( f: &mut fmt::Formatter<'_>, bstr: &BStr, ) -> Result<(), fmt::Error> { for chunk in bstr.utf8_chunks() { f.write_str(chunk.valid())?; if !chunk.invalid().is_empty() { f.write_str("\u{FFFD}")?; } } Ok(()) } /// Write 'num' fill characters to the given formatter. fn write_pads( f: &mut fmt::Formatter<'_>, num: usize, ) -> fmt::Result { let fill = f.fill(); for _ in 0..num { f.write_fmt(format_args!("{}", fill))?; } Ok(()) } if let Some(align) = f.align() { let width = f.width().unwrap_or(0); let nchars = self.chars().count(); let remaining_pads = width.saturating_sub(nchars); match align { fmt::Alignment::Left => { write_bstr(f, self)?; write_pads(f, remaining_pads)?; } fmt::Alignment::Right => { write_pads(f, remaining_pads)?; write_bstr(f, self)?; } fmt::Alignment::Center => { let half = remaining_pads / 2; let second_half = if remaining_pads % 2 == 0 { half } else { half + 1 }; write_pads(f, half)?; write_bstr(f, self)?; write_pads(f, second_half)?; } } Ok(()) } else { write_bstr(f, self)?; Ok(()) } } } impl fmt::Debug for BStr { #[inline] fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "\"")?; for (s, e, ch) in self.char_indices() { match ch { '\0' => write!(f, "\\0")?, '\u{FFFD}' => { let bytes = self[s..e].as_bytes(); if bytes == b"\xEF\xBF\xBD" { write!(f, "{}", ch.escape_debug())?; } else { for &b in self[s..e].as_bytes() { write!(f, r"\x{:02X}", b)?; } } } // ASCII control characters except \0, \n, \r, \t '\x01'..='\x08' | '\x0b' | '\x0c' | '\x0e'..='\x19' | '\x7f' => { write!(f, "\\x{:02x}", ch as u32)?; } '\n' | '\r' | '\t' | _ => { write!(f, "{}", ch.escape_debug())?; } } } write!(f, "\"")?; Ok(()) } } impl ops::Deref for BStr { type Target = [u8]; #[inline] fn deref(&self) -> &[u8] { &self.bytes } } impl ops::DerefMut for BStr { #[inline] fn deref_mut(&mut self) -> &mut [u8] { &mut self.bytes } } impl ops::Index for BStr { type Output = u8; #[inline] fn index(&self, idx: usize) -> &u8 { &self.as_bytes()[idx] } } impl ops::Index for BStr { type Output = BStr; #[inline] fn index(&self, _: ops::RangeFull) -> &BStr { self } } impl ops::Index> for BStr { type Output = BStr; #[inline] fn index(&self, r: ops::Range) -> &BStr { BStr::new(&self.as_bytes()[r.start..r.end]) } } impl ops::Index> for BStr { type Output = BStr; #[inline] fn index(&self, r: ops::RangeInclusive) -> &BStr { BStr::new(&self.as_bytes()[*r.start()..=*r.end()]) } } impl ops::Index> for BStr { type Output = BStr; #[inline] fn index(&self, r: ops::RangeFrom) -> &BStr { BStr::new(&self.as_bytes()[r.start..]) } } impl ops::Index> for BStr { type Output = BStr; #[inline] fn index(&self, r: ops::RangeTo) -> &BStr { BStr::new(&self.as_bytes()[..r.end]) } } impl ops::Index> for BStr { type Output = BStr; #[inline] fn index(&self, r: ops::RangeToInclusive) -> &BStr { BStr::new(&self.as_bytes()[..=r.end]) } } impl ops::IndexMut for BStr { #[inline] fn index_mut(&mut self, idx: usize) -> &mut u8 { &mut self.bytes[idx] } } impl ops::IndexMut for BStr { #[inline] fn index_mut(&mut self, _: ops::RangeFull) -> &mut BStr { self } } impl ops::IndexMut> for BStr { #[inline] fn index_mut(&mut self, r: ops::Range) -> &mut BStr { BStr::from_bytes_mut(&mut self.bytes[r.start..r.end]) } } impl ops::IndexMut> for BStr { #[inline] fn index_mut(&mut self, r: ops::RangeInclusive) -> &mut BStr { BStr::from_bytes_mut(&mut self.bytes[*r.start()..=*r.end()]) } } impl ops::IndexMut> for BStr { #[inline] fn index_mut(&mut self, r: ops::RangeFrom) -> &mut BStr { BStr::from_bytes_mut(&mut self.bytes[r.start..]) } } impl ops::IndexMut> for BStr { #[inline] fn index_mut(&mut self, r: ops::RangeTo) -> &mut BStr { BStr::from_bytes_mut(&mut self.bytes[..r.end]) } } impl ops::IndexMut> for BStr { #[inline] fn index_mut(&mut self, r: ops::RangeToInclusive) -> &mut BStr { BStr::from_bytes_mut(&mut self.bytes[..=r.end]) } } impl AsRef<[u8]> for BStr { #[inline] fn as_ref(&self) -> &[u8] { self.as_bytes() } } impl AsRef for BStr { #[inline] fn as_ref(&self) -> &BStr { self } } impl AsRef for [u8] { #[inline] fn as_ref(&self) -> &BStr { BStr::new(self) } } impl AsRef for str { #[inline] fn as_ref(&self) -> &BStr { BStr::new(self) } } impl AsMut<[u8]> for BStr { #[inline] fn as_mut(&mut self) -> &mut [u8] { &mut self.bytes } } impl AsMut for [u8] { #[inline] fn as_mut(&mut self) -> &mut BStr { BStr::new_mut(self) } } impl Borrow for [u8] { #[inline] fn borrow(&self) -> &BStr { self.as_bstr() } } impl Borrow for str { #[inline] fn borrow(&self) -> &BStr { self.as_bytes().as_bstr() } } impl Borrow<[u8]> for BStr { #[inline] fn borrow(&self) -> &[u8] { self.as_bytes() } } impl BorrowMut for [u8] { #[inline] fn borrow_mut(&mut self) -> &mut BStr { BStr::new_mut(self) } } impl BorrowMut<[u8]> for BStr { #[inline] fn borrow_mut(&mut self) -> &mut [u8] { self.as_bytes_mut() } } impl<'a> Default for &'a BStr { fn default() -> &'a BStr { BStr::from_bytes(b"") } } impl<'a> Default for &'a mut BStr { fn default() -> &'a mut BStr { BStr::from_bytes_mut(&mut []) } } impl<'a, const N: usize> From<&'a [u8; N]> for &'a BStr { #[inline] fn from(s: &'a [u8; N]) -> &'a BStr { BStr::from_bytes(s) } } impl<'a> From<&'a [u8]> for &'a BStr { #[inline] fn from(s: &'a [u8]) -> &'a BStr { BStr::from_bytes(s) } } impl<'a> From<&'a BStr> for &'a [u8] { #[inline] fn from(s: &'a BStr) -> &'a [u8] { BStr::as_bytes(s) } } impl<'a> From<&'a str> for &'a BStr { #[inline] fn from(s: &'a str) -> &'a BStr { BStr::from_bytes(s.as_bytes()) } } #[cfg(feature = "alloc")] impl<'a> From<&'a BStr> for Cow<'a, BStr> { #[inline] fn from(s: &'a BStr) -> Cow<'a, BStr> { Cow::Borrowed(s) } } #[cfg(feature = "alloc")] impl From> for Box { #[inline] fn from(s: Box<[u8]>) -> Box { BStr::from_boxed_bytes(s) } } #[cfg(feature = "alloc")] impl From> for Box<[u8]> { #[inline] fn from(s: Box) -> Box<[u8]> { BStr::into_boxed_bytes(s) } } impl<'a> TryFrom<&'a BStr> for &'a str { type Error = crate::Utf8Error; #[inline] fn try_from(s: &'a BStr) -> Result<&'a str, crate::Utf8Error> { s.as_bytes().to_str() } } #[cfg(feature = "alloc")] impl<'a> TryFrom<&'a BStr> for String { type Error = crate::Utf8Error; #[inline] fn try_from(s: &'a BStr) -> Result { Ok(s.as_bytes().to_str()?.into()) } } #[cfg(feature = "alloc")] impl Clone for Box { #[inline] fn clone(&self) -> Self { BStr::from_boxed_bytes(self.as_bytes().into()) } } impl Eq for BStr {} impl PartialEq for BStr { #[inline] fn eq(&self, other: &BStr) -> bool { self.as_bytes() == other.as_bytes() } } impl_partial_eq!(BStr, [u8]); impl_partial_eq!(BStr, &'a [u8]); impl_partial_eq!(BStr, str); impl_partial_eq!(BStr, &'a str); #[cfg(feature = "alloc")] impl_partial_eq!(BStr, Vec); #[cfg(feature = "alloc")] impl_partial_eq!(&'a BStr, Vec); #[cfg(feature = "alloc")] impl_partial_eq!(BStr, String); #[cfg(feature = "alloc")] impl_partial_eq!(&'a BStr, String); #[cfg(feature = "alloc")] impl_partial_eq_cow!(&'a BStr, Cow<'a, BStr>); #[cfg(feature = "alloc")] impl_partial_eq_cow!(&'a BStr, Cow<'a, str>); #[cfg(feature = "alloc")] impl_partial_eq_cow!(&'a BStr, Cow<'a, [u8]>); impl PartialOrd for BStr { #[inline] fn partial_cmp(&self, other: &BStr) -> Option { PartialOrd::partial_cmp(self.as_bytes(), other.as_bytes()) } } impl Ord for BStr { #[inline] fn cmp(&self, other: &BStr) -> Ordering { self.partial_cmp(other).unwrap() } } impl_partial_ord!(BStr, [u8]); impl_partial_ord!(BStr, &'a [u8]); impl_partial_ord!(BStr, str); impl_partial_ord!(BStr, &'a str); #[cfg(feature = "alloc")] impl_partial_ord!(BStr, Vec); #[cfg(feature = "alloc")] impl_partial_ord!(&'a BStr, Vec); #[cfg(feature = "alloc")] impl_partial_ord!(BStr, String); #[cfg(feature = "alloc")] impl_partial_ord!(&'a BStr, String); } #[cfg(feature = "serde")] mod bstr_serde { use core::fmt; use serde::{ de::Error, de::Visitor, Deserialize, Deserializer, Serialize, Serializer, }; use crate::bstr::BStr; impl Serialize for BStr { #[inline] fn serialize(&self, serializer: S) -> Result where S: Serializer, { serializer.serialize_bytes(self.as_bytes()) } } impl<'a, 'de: 'a> Deserialize<'de> for &'a BStr { #[inline] fn deserialize(deserializer: D) -> Result<&'a BStr, D::Error> where D: Deserializer<'de>, { struct BStrVisitor; impl<'de> Visitor<'de> for BStrVisitor { type Value = &'de BStr; fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result { f.write_str("a borrowed byte string") } #[inline] fn visit_borrowed_bytes( self, value: &'de [u8], ) -> Result<&'de BStr, E> { Ok(BStr::new(value)) } #[inline] fn visit_borrowed_str( self, value: &'de str, ) -> Result<&'de BStr, E> { Ok(BStr::new(value)) } } deserializer.deserialize_bytes(BStrVisitor) } } } #[cfg(all(feature = "serde", feature = "alloc"))] mod bstring_serde { use core::{cmp, fmt}; use alloc::{boxed::Box, string::String, vec::Vec}; use serde::{ de::Error, de::SeqAccess, de::Visitor, Deserialize, Deserializer, Serialize, Serializer, }; use crate::{bstr::BStr, bstring::BString}; impl Serialize for BString { #[inline] fn serialize(&self, serializer: S) -> Result where S: Serializer, { serializer.serialize_bytes(self.as_bytes()) } } impl<'de> Deserialize<'de> for BString { #[inline] fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { struct BStringVisitor; impl<'de> Visitor<'de> for BStringVisitor { type Value = BString; fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result { f.write_str("a byte string") } #[inline] fn visit_seq>( self, mut visitor: V, ) -> Result { let len = cmp::min(visitor.size_hint().unwrap_or(0), 256); let mut bytes = Vec::with_capacity(len); while let Some(v) = visitor.next_element()? { bytes.push(v); } Ok(BString::from(bytes)) } #[inline] fn visit_bytes( self, value: &[u8], ) -> Result { Ok(BString::from(value)) } #[inline] fn visit_byte_buf( self, value: Vec, ) -> Result { Ok(BString::from(value)) } #[inline] fn visit_str( self, value: &str, ) -> Result { Ok(BString::from(value)) } #[inline] fn visit_string( self, value: String, ) -> Result { Ok(BString::from(value)) } } deserializer.deserialize_byte_buf(BStringVisitor) } } impl<'de> Deserialize<'de> for Box { #[inline] fn deserialize(deserializer: D) -> Result, D::Error> where D: Deserializer<'de>, { struct BoxedBStrVisitor; impl<'de> Visitor<'de> for BoxedBStrVisitor { type Value = Box; fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result { f.write_str("a boxed byte string") } #[inline] fn visit_seq>( self, mut visitor: V, ) -> Result, V::Error> { let len = cmp::min(visitor.size_hint().unwrap_or(0), 256); let mut bytes = Vec::with_capacity(len); while let Some(v) = visitor.next_element()? { bytes.push(v); } Ok(BStr::from_boxed_bytes(bytes.into_boxed_slice())) } #[inline] fn visit_bytes( self, value: &[u8], ) -> Result, E> { Ok(BStr::from_boxed_bytes( value.to_vec().into_boxed_slice(), )) } #[inline] fn visit_byte_buf( self, value: Vec, ) -> Result, E> { Ok(BStr::from_boxed_bytes(value.into_boxed_slice())) } #[inline] fn visit_str( self, value: &str, ) -> Result, E> { Ok(BStr::from_boxed_bytes( value.as_bytes().to_vec().into_boxed_slice(), )) } #[inline] fn visit_string( self, value: String, ) -> Result, E> { Ok(BStr::from_boxed_bytes( value.into_bytes().into_boxed_slice(), )) } } deserializer.deserialize_byte_buf(BoxedBStrVisitor) } } } #[cfg(all(test, feature = "std"))] mod display { #[cfg(not(miri))] use crate::bstring::BString; use crate::ByteSlice; #[test] fn clean() { assert_eq!(&format!("{}", &b"abc".as_bstr()), "abc"); assert_eq!(&format!("{}", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��"); } #[test] fn width_bigger_than_bstr() { assert_eq!(&format!("{:<7}!", &b"abc".as_bstr()), "abc !"); assert_eq!(&format!("{:>7}!", &b"abc".as_bstr()), " abc!"); assert_eq!(&format!("{:^7}!", &b"abc".as_bstr()), " abc !"); assert_eq!(&format!("{:^6}!", &b"abc".as_bstr()), " abc !"); assert_eq!(&format!("{:-<7}!", &b"abc".as_bstr()), "abc----!"); assert_eq!(&format!("{:->7}!", &b"abc".as_bstr()), "----abc!"); assert_eq!(&format!("{:-^7}!", &b"abc".as_bstr()), "--abc--!"); assert_eq!(&format!("{:-^6}!", &b"abc".as_bstr()), "-abc--!"); assert_eq!( &format!("{:<7}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(�� !" ); assert_eq!( &format!("{:>7}!", &b"\xf0\x28\x8c\xbc".as_bstr()), " �(��!" ); assert_eq!( &format!("{:^7}!", &b"\xf0\x28\x8c\xbc".as_bstr()), " �(�� !" ); assert_eq!( &format!("{:^6}!", &b"\xf0\x28\x8c\xbc".as_bstr()), " �(�� !" ); assert_eq!( &format!("{:-<7}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��---!" ); assert_eq!( &format!("{:->7}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "---�(��!" ); assert_eq!( &format!("{:-^7}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "-�(��--!" ); assert_eq!( &format!("{:-^6}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "-�(��-!" ); } #[test] fn width_lesser_than_bstr() { assert_eq!(&format!("{:<2}!", &b"abc".as_bstr()), "abc!"); assert_eq!(&format!("{:>2}!", &b"abc".as_bstr()), "abc!"); assert_eq!(&format!("{:^2}!", &b"abc".as_bstr()), "abc!"); assert_eq!(&format!("{:-<2}!", &b"abc".as_bstr()), "abc!"); assert_eq!(&format!("{:->2}!", &b"abc".as_bstr()), "abc!"); assert_eq!(&format!("{:-^2}!", &b"abc".as_bstr()), "abc!"); assert_eq!( &format!("{:<3}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��!" ); assert_eq!( &format!("{:>3}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��!" ); assert_eq!( &format!("{:^3}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��!" ); assert_eq!( &format!("{:^2}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��!" ); assert_eq!( &format!("{:-<3}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��!" ); assert_eq!( &format!("{:->3}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��!" ); assert_eq!( &format!("{:-^3}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��!" ); assert_eq!( &format!("{:-^2}!", &b"\xf0\x28\x8c\xbc".as_bstr()), "�(��!" ); } #[cfg(not(miri))] quickcheck::quickcheck! { fn total_length(bstr: BString) -> bool { let size = bstr.chars().count(); format!("{:<1$}", bstr.as_bstr(), size).chars().count() >= size } } } #[cfg(all(test, feature = "alloc"))] mod bstring_arbitrary { use crate::bstring::BString; use quickcheck::{Arbitrary, Gen}; impl Arbitrary for BString { fn arbitrary(g: &mut Gen) -> BString { BString::from(Vec::::arbitrary(g)) } fn shrink(&self) -> Box> { Box::new(self.as_vec().shrink().map(BString::from)) } } } #[test] #[cfg(feature = "std")] fn test_debug() { use crate::{ByteSlice, B}; assert_eq!( r#""\0\0\0 ftypisom\0\0\x02\0isomiso2avc1mp""#, format!("{:?}", b"\0\0\0 ftypisom\0\0\x02\0isomiso2avc1mp".as_bstr()), ); // Tests that if the underlying bytes contain the UTF-8 encoding of the // replacement codepoint, then we emit the codepoint just like other // non-printable Unicode characters. assert_eq!( b"\"\\xFF\xEF\xBF\xBD\\xFF\"".as_bstr(), // Before fixing #72, the output here would be: // \\xFF\\xEF\\xBF\\xBD\\xFF B(&format!("{:?}", b"\xFF\xEF\xBF\xBD\xFF".as_bstr())).as_bstr(), ); } // See: https://github.com/BurntSushi/bstr/issues/82 #[test] #[cfg(feature = "std")] fn test_cows_regression() { use std::borrow::Cow; use crate::ByteSlice; let c1 = Cow::from(b"hello bstr".as_bstr()); let c2 = b"goodbye bstr".as_bstr(); assert_ne!(c1, c2); let c3 = Cow::from("hello str"); let c4 = "goodbye str"; assert_ne!(c3, c4); } bstr-1.7.0/src/io.rs000064400000000000000000000410741046102023000123550ustar 00000000000000/*! Utilities for working with I/O using byte strings. This module currently only exports a single trait, `BufReadExt`, which provides facilities for conveniently and efficiently working with lines as byte strings. More APIs may be added in the future. */ use alloc::{vec, vec::Vec}; use std::io; use crate::{ext_slice::ByteSlice, ext_vec::ByteVec}; /// An extension trait for /// [`std::io::BufRead`](https://doc.rust-lang.org/std/io/trait.BufRead.html) /// which provides convenience APIs for dealing with byte strings. pub trait BufReadExt: io::BufRead { /// Returns an iterator over the lines of this reader, where each line /// is represented as a byte string. /// /// Each item yielded by this iterator is a `io::Result>`, where /// an error is yielded if there was a problem reading from the underlying /// reader. /// /// On success, the next line in the iterator is returned. The line does /// *not* contain a trailing `\n` or `\r\n`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::io; /// /// use bstr::io::BufReadExt; /// /// # fn example() -> Result<(), io::Error> { /// let mut cursor = io::Cursor::new(b"lorem\nipsum\r\ndolor"); /// /// let mut lines = vec![]; /// for result in cursor.byte_lines() { /// let line = result?; /// lines.push(line); /// } /// assert_eq!(lines.len(), 3); /// assert_eq!(lines[0], "lorem".as_bytes()); /// assert_eq!(lines[1], "ipsum".as_bytes()); /// assert_eq!(lines[2], "dolor".as_bytes()); /// # Ok(()) }; example().unwrap() /// ``` fn byte_lines(self) -> ByteLines where Self: Sized, { ByteLines { buf: self } } /// Returns an iterator over byte-terminated records of this reader, where /// each record is represented as a byte string. /// /// Each item yielded by this iterator is a `io::Result>`, where /// an error is yielded if there was a problem reading from the underlying /// reader. /// /// On success, the next record in the iterator is returned. The record /// does *not* contain its trailing terminator. /// /// Note that calling `byte_records(b'\n')` differs from `byte_lines()` in /// that it has no special handling for `\r`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::io; /// /// use bstr::io::BufReadExt; /// /// # fn example() -> Result<(), io::Error> { /// let mut cursor = io::Cursor::new(b"lorem\x00ipsum\x00dolor"); /// /// let mut records = vec![]; /// for result in cursor.byte_records(b'\x00') { /// let record = result?; /// records.push(record); /// } /// assert_eq!(records.len(), 3); /// assert_eq!(records[0], "lorem".as_bytes()); /// assert_eq!(records[1], "ipsum".as_bytes()); /// assert_eq!(records[2], "dolor".as_bytes()); /// # Ok(()) }; example().unwrap() /// ``` fn byte_records(self, terminator: u8) -> ByteRecords where Self: Sized, { ByteRecords { terminator, buf: self } } /// Executes the given closure on each line in the underlying reader. /// /// If the closure returns an error (or if the underlying reader returns an /// error), then iteration is stopped and the error is returned. If false /// is returned, then iteration is stopped and no error is returned. /// /// The closure given is called on exactly the same values as yielded by /// the [`byte_lines`](trait.BufReadExt.html#method.byte_lines) /// iterator. Namely, lines do _not_ contain trailing `\n` or `\r\n` bytes. /// /// This routine is useful for iterating over lines as quickly as /// possible. Namely, a single allocation is reused for each line. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::io; /// /// use bstr::io::BufReadExt; /// /// # fn example() -> Result<(), io::Error> { /// let mut cursor = io::Cursor::new(b"lorem\nipsum\r\ndolor"); /// /// let mut lines = vec![]; /// cursor.for_byte_line(|line| { /// lines.push(line.to_vec()); /// Ok(true) /// })?; /// assert_eq!(lines.len(), 3); /// assert_eq!(lines[0], "lorem".as_bytes()); /// assert_eq!(lines[1], "ipsum".as_bytes()); /// assert_eq!(lines[2], "dolor".as_bytes()); /// # Ok(()) }; example().unwrap() /// ``` fn for_byte_line(&mut self, mut for_each_line: F) -> io::Result<()> where Self: Sized, F: FnMut(&[u8]) -> io::Result, { self.for_byte_line_with_terminator(|line| { for_each_line(&trim_line_slice(&line)) }) } /// Executes the given closure on each byte-terminated record in the /// underlying reader. /// /// If the closure returns an error (or if the underlying reader returns an /// error), then iteration is stopped and the error is returned. If false /// is returned, then iteration is stopped and no error is returned. /// /// The closure given is called on exactly the same values as yielded by /// the [`byte_records`](trait.BufReadExt.html#method.byte_records) /// iterator. Namely, records do _not_ contain a trailing terminator byte. /// /// This routine is useful for iterating over records as quickly as /// possible. Namely, a single allocation is reused for each record. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::io; /// /// use bstr::io::BufReadExt; /// /// # fn example() -> Result<(), io::Error> { /// let mut cursor = io::Cursor::new(b"lorem\x00ipsum\x00dolor"); /// /// let mut records = vec![]; /// cursor.for_byte_record(b'\x00', |record| { /// records.push(record.to_vec()); /// Ok(true) /// })?; /// assert_eq!(records.len(), 3); /// assert_eq!(records[0], "lorem".as_bytes()); /// assert_eq!(records[1], "ipsum".as_bytes()); /// assert_eq!(records[2], "dolor".as_bytes()); /// # Ok(()) }; example().unwrap() /// ``` fn for_byte_record( &mut self, terminator: u8, mut for_each_record: F, ) -> io::Result<()> where Self: Sized, F: FnMut(&[u8]) -> io::Result, { self.for_byte_record_with_terminator(terminator, |chunk| { for_each_record(&trim_record_slice(&chunk, terminator)) }) } /// Executes the given closure on each line in the underlying reader. /// /// If the closure returns an error (or if the underlying reader returns an /// error), then iteration is stopped and the error is returned. If false /// is returned, then iteration is stopped and no error is returned. /// /// Unlike /// [`for_byte_line`](trait.BufReadExt.html#method.for_byte_line), /// the lines given to the closure *do* include the line terminator, if one /// exists. /// /// This routine is useful for iterating over lines as quickly as /// possible. Namely, a single allocation is reused for each line. /// /// This is identical to `for_byte_record_with_terminator` with a /// terminator of `\n`. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::io; /// /// use bstr::io::BufReadExt; /// /// # fn example() -> Result<(), io::Error> { /// let mut cursor = io::Cursor::new(b"lorem\nipsum\r\ndolor"); /// /// let mut lines = vec![]; /// cursor.for_byte_line_with_terminator(|line| { /// lines.push(line.to_vec()); /// Ok(true) /// })?; /// assert_eq!(lines.len(), 3); /// assert_eq!(lines[0], "lorem\n".as_bytes()); /// assert_eq!(lines[1], "ipsum\r\n".as_bytes()); /// assert_eq!(lines[2], "dolor".as_bytes()); /// # Ok(()) }; example().unwrap() /// ``` fn for_byte_line_with_terminator( &mut self, for_each_line: F, ) -> io::Result<()> where Self: Sized, F: FnMut(&[u8]) -> io::Result, { self.for_byte_record_with_terminator(b'\n', for_each_line) } /// Executes the given closure on each byte-terminated record in the /// underlying reader. /// /// If the closure returns an error (or if the underlying reader returns an /// error), then iteration is stopped and the error is returned. If false /// is returned, then iteration is stopped and no error is returned. /// /// Unlike /// [`for_byte_record`](trait.BufReadExt.html#method.for_byte_record), /// the lines given to the closure *do* include the record terminator, if /// one exists. /// /// This routine is useful for iterating over records as quickly as /// possible. Namely, a single allocation is reused for each record. /// /// # Examples /// /// Basic usage: /// /// ``` /// use std::io; /// /// use bstr::{io::BufReadExt, B}; /// /// # fn example() -> Result<(), io::Error> { /// let mut cursor = io::Cursor::new(b"lorem\x00ipsum\x00dolor"); /// /// let mut records = vec![]; /// cursor.for_byte_record_with_terminator(b'\x00', |record| { /// records.push(record.to_vec()); /// Ok(true) /// })?; /// assert_eq!(records.len(), 3); /// assert_eq!(records[0], B(b"lorem\x00")); /// assert_eq!(records[1], B("ipsum\x00")); /// assert_eq!(records[2], B("dolor")); /// # Ok(()) }; example().unwrap() /// ``` fn for_byte_record_with_terminator( &mut self, terminator: u8, mut for_each_record: F, ) -> io::Result<()> where Self: Sized, F: FnMut(&[u8]) -> io::Result, { let mut bytes = vec![]; let mut res = Ok(()); let mut consumed = 0; 'outer: loop { // Lend out complete record slices from our buffer { let mut buf = self.fill_buf()?; while let Some(index) = buf.find_byte(terminator) { let (record, rest) = buf.split_at(index + 1); buf = rest; consumed += record.len(); match for_each_record(&record) { Ok(false) => break 'outer, Err(err) => { res = Err(err); break 'outer; } _ => (), } } // Copy the final record fragment to our local buffer. This // saves read_until() from re-scanning a buffer we know // contains no remaining terminators. bytes.extend_from_slice(&buf); consumed += buf.len(); } self.consume(consumed); consumed = 0; // N.B. read_until uses a different version of memchr that may // be slower than the memchr crate that bstr uses. However, this // should only run for a fairly small number of records, assuming a // decent buffer size. self.read_until(terminator, &mut bytes)?; if bytes.is_empty() || !for_each_record(&bytes)? { break; } bytes.clear(); } self.consume(consumed); res } } impl BufReadExt for B {} /// An iterator over lines from an instance of /// [`std::io::BufRead`](https://doc.rust-lang.org/std/io/trait.BufRead.html). /// /// This iterator is generally created by calling the /// [`byte_lines`](trait.BufReadExt.html#method.byte_lines) /// method on the /// [`BufReadExt`](trait.BufReadExt.html) /// trait. #[derive(Debug)] pub struct ByteLines { buf: B, } /// An iterator over records from an instance of /// [`std::io::BufRead`](https://doc.rust-lang.org/std/io/trait.BufRead.html). /// /// A byte record is any sequence of bytes terminated by a particular byte /// chosen by the caller. For example, NUL separated byte strings are said to /// be NUL-terminated byte records. /// /// This iterator is generally created by calling the /// [`byte_records`](trait.BufReadExt.html#method.byte_records) /// method on the /// [`BufReadExt`](trait.BufReadExt.html) /// trait. #[derive(Debug)] pub struct ByteRecords { buf: B, terminator: u8, } impl Iterator for ByteLines { type Item = io::Result>; fn next(&mut self) -> Option>> { let mut bytes = vec![]; match self.buf.read_until(b'\n', &mut bytes) { Err(e) => Some(Err(e)), Ok(0) => None, Ok(_) => { trim_line(&mut bytes); Some(Ok(bytes)) } } } } impl Iterator for ByteRecords { type Item = io::Result>; fn next(&mut self) -> Option>> { let mut bytes = vec![]; match self.buf.read_until(self.terminator, &mut bytes) { Err(e) => Some(Err(e)), Ok(0) => None, Ok(_) => { trim_record(&mut bytes, self.terminator); Some(Ok(bytes)) } } } } fn trim_line(line: &mut Vec) { if line.last_byte() == Some(b'\n') { line.pop_byte(); if line.last_byte() == Some(b'\r') { line.pop_byte(); } } } fn trim_line_slice(mut line: &[u8]) -> &[u8] { if line.last_byte() == Some(b'\n') { line = &line[..line.len() - 1]; if line.last_byte() == Some(b'\r') { line = &line[..line.len() - 1]; } } line } fn trim_record(record: &mut Vec, terminator: u8) { if record.last_byte() == Some(terminator) { record.pop_byte(); } } fn trim_record_slice(mut record: &[u8], terminator: u8) -> &[u8] { if record.last_byte() == Some(terminator) { record = &record[..record.len() - 1]; } record } #[cfg(all(test, feature = "std"))] mod tests { use crate::bstring::BString; use super::BufReadExt; fn collect_lines>(slice: B) -> Vec { let mut lines = vec![]; slice .as_ref() .for_byte_line(|line| { lines.push(BString::from(line.to_vec())); Ok(true) }) .unwrap(); lines } fn collect_lines_term>(slice: B) -> Vec { let mut lines = vec![]; slice .as_ref() .for_byte_line_with_terminator(|line| { lines.push(BString::from(line.to_vec())); Ok(true) }) .unwrap(); lines } #[test] fn lines_without_terminator() { assert_eq!(collect_lines(""), Vec::::new()); assert_eq!(collect_lines("\n"), vec![""]); assert_eq!(collect_lines("\n\n"), vec!["", ""]); assert_eq!(collect_lines("a\nb\n"), vec!["a", "b"]); assert_eq!(collect_lines("a\nb"), vec!["a", "b"]); assert_eq!(collect_lines("abc\nxyz\n"), vec!["abc", "xyz"]); assert_eq!(collect_lines("abc\nxyz"), vec!["abc", "xyz"]); assert_eq!(collect_lines("\r\n"), vec![""]); assert_eq!(collect_lines("\r\n\r\n"), vec!["", ""]); assert_eq!(collect_lines("a\r\nb\r\n"), vec!["a", "b"]); assert_eq!(collect_lines("a\r\nb"), vec!["a", "b"]); assert_eq!(collect_lines("abc\r\nxyz\r\n"), vec!["abc", "xyz"]); assert_eq!(collect_lines("abc\r\nxyz"), vec!["abc", "xyz"]); assert_eq!(collect_lines("abc\rxyz"), vec!["abc\rxyz"]); } #[test] fn lines_with_terminator() { assert_eq!(collect_lines_term(""), Vec::::new()); assert_eq!(collect_lines_term("\n"), vec!["\n"]); assert_eq!(collect_lines_term("\n\n"), vec!["\n", "\n"]); assert_eq!(collect_lines_term("a\nb\n"), vec!["a\n", "b\n"]); assert_eq!(collect_lines_term("a\nb"), vec!["a\n", "b"]); assert_eq!(collect_lines_term("abc\nxyz\n"), vec!["abc\n", "xyz\n"]); assert_eq!(collect_lines_term("abc\nxyz"), vec!["abc\n", "xyz"]); assert_eq!(collect_lines_term("\r\n"), vec!["\r\n"]); assert_eq!(collect_lines_term("\r\n\r\n"), vec!["\r\n", "\r\n"]); assert_eq!(collect_lines_term("a\r\nb\r\n"), vec!["a\r\n", "b\r\n"]); assert_eq!(collect_lines_term("a\r\nb"), vec!["a\r\n", "b"]); assert_eq!( collect_lines_term("abc\r\nxyz\r\n"), vec!["abc\r\n", "xyz\r\n"] ); assert_eq!(collect_lines_term("abc\r\nxyz"), vec!["abc\r\n", "xyz"]); assert_eq!(collect_lines_term("abc\rxyz"), vec!["abc\rxyz"]); } } bstr-1.7.0/src/lib.rs000064400000000000000000000517141046102023000125160ustar 00000000000000/*! A byte string library. Byte strings are just like standard Unicode strings with one very important difference: byte strings are only *conventionally* UTF-8 while Rust's standard Unicode strings are *guaranteed* to be valid UTF-8. The primary motivation for byte strings is for handling arbitrary bytes that are mostly UTF-8. # Overview This crate provides two important traits that provide string oriented methods on `&[u8]` and `Vec` types: * [`ByteSlice`](trait.ByteSlice.html) extends the `[u8]` type with additional string oriented methods. * [`ByteVec`](trait.ByteVec.html) extends the `Vec` type with additional string oriented methods. Additionally, this crate provides two concrete byte string types that deref to `[u8]` and `Vec`. These are useful for storing byte string types, and come with convenient `std::fmt::Debug` implementations: * [`BStr`](struct.BStr.html) is a byte string slice, analogous to `str`. * [`BString`](struct.BString.html) is an owned growable byte string buffer, analogous to `String`. Additionally, the free function [`B`](fn.B.html) serves as a convenient short hand for writing byte string literals. # Quick examples Byte strings build on the existing APIs for `Vec` and `&[u8]`, with additional string oriented methods. Operations such as iterating over graphemes, searching for substrings, replacing substrings, trimming and case conversion are examples of things not provided on the standard library `&[u8]` APIs but are provided by this crate. For example, this code iterates over all of occurrences of a substring: ``` use bstr::ByteSlice; let s = b"foo bar foo foo quux foo"; let mut matches = vec![]; for start in s.find_iter("foo") { matches.push(start); } assert_eq!(matches, [0, 8, 12, 21]); ``` Here's another example showing how to do a search and replace (and also showing use of the `B` function): ``` # #[cfg(feature = "alloc")] { use bstr::{B, ByteSlice}; let old = B("foo ☃☃☃ foo foo quux foo"); let new = old.replace("foo", "hello"); assert_eq!(new, B("hello ☃☃☃ hello hello quux hello")); # } ``` And here's an example that shows case conversion, even in the presence of invalid UTF-8: ``` # #[cfg(all(feature = "alloc", feature = "unicode"))] { use bstr::{ByteSlice, ByteVec}; let mut lower = Vec::from("hello β"); lower[0] = b'\xFF'; // lowercase β is uppercased to Β assert_eq!(lower.to_uppercase(), b"\xFFELLO \xCE\x92"); # } ``` # Convenient debug representation When working with byte strings, it is often useful to be able to print them as if they were byte strings and not sequences of integers. While this crate cannot affect the `std::fmt::Debug` implementations for `[u8]` and `Vec`, this crate does provide the `BStr` and `BString` types which have convenient `std::fmt::Debug` implementations. For example, this ``` use bstr::ByteSlice; let mut bytes = Vec::from("hello β"); bytes[0] = b'\xFF'; println!("{:?}", bytes.as_bstr()); ``` will output `"\xFFello β"`. This example works because the [`ByteSlice::as_bstr`](trait.ByteSlice.html#method.as_bstr) method converts any `&[u8]` to a `&BStr`. # When should I use byte strings? This library reflects my belief that UTF-8 by convention is a better trade off in some circumstances than guaranteed UTF-8. The first time this idea hit me was in the implementation of Rust's regex engine. In particular, very little of the internal implementation cares at all about searching valid UTF-8 encoded strings. Indeed, internally, the implementation converts `&str` from the API to `&[u8]` fairly quickly and just deals with raw bytes. UTF-8 match boundaries are then guaranteed by the finite state machine itself rather than any specific string type. This makes it possible to not only run regexes on `&str` values, but also on `&[u8]` values. Why would you ever want to run a regex on a `&[u8]` though? Well, `&[u8]` is the fundamental way at which one reads data from all sorts of streams, via the standard library's [`Read`](https://doc.rust-lang.org/std/io/trait.Read.html) trait. In particular, there is no platform independent way to determine whether what you're reading from is some binary file or a human readable text file. Therefore, if you're writing a program to search files, you probably need to deal with `&[u8]` directly unless you're okay with first converting it to a `&str` and dropping any bytes that aren't valid UTF-8. (Or otherwise determine the encoding---which is often impractical---and perform a transcoding step.) Often, the simplest and most robust way to approach this is to simply treat the contents of a file as if it were mostly valid UTF-8 and pass through invalid UTF-8 untouched. This may not be the most correct approach though! One case in particular exacerbates these issues, and that's memory mapping a file. When you memory map a file, that file may be gigabytes big, but all you get is a `&[u8]`. Converting that to a `&str` all in one go is generally not a good idea because of the costs associated with doing so, and also because it generally causes one to do two passes over the data instead of one, which is quite undesirable. It is of course usually possible to do it an incremental way by only parsing chunks at a time, but this is often complex to do or impractical. For example, many regex engines only accept one contiguous sequence of bytes at a time with no way to perform incremental matching. # `bstr` in public APIs This library is past version `1` and is expected to remain at version `1` for the foreseeable future. Therefore, it is encouraged to put types from `bstr` (like `BStr` and `BString`) in your public API if that makes sense for your crate. With that said, in general, it should be possible to avoid putting anything in this crate into your public APIs. Namely, you should never need to use the `ByteSlice` or `ByteVec` traits as bounds on public APIs, since their only purpose is to extend the methods on the concrete types `[u8]` and `Vec`, respectively. Similarly, it should not be necessary to put either the `BStr` or `BString` types into public APIs. If you want to use them internally, then they can be converted to/from `[u8]`/`Vec` as needed. The conversions are free. So while it shouldn't ever be 100% necessary to make `bstr` a public dependency, there may be cases where it is convenient to do so. This is an explicitly supported use case of `bstr`, and as such, major version releases should be exceptionally rare. # Differences with standard strings The primary difference between `[u8]` and `str` is that the former is conventionally UTF-8 while the latter is guaranteed to be UTF-8. The phrase "conventionally UTF-8" means that a `[u8]` may contain bytes that do not form a valid UTF-8 sequence, but operations defined on the type in this crate are generally most useful on valid UTF-8 sequences. For example, iterating over Unicode codepoints or grapheme clusters is an operation that is only defined on valid UTF-8. Therefore, when invalid UTF-8 is encountered, the Unicode replacement codepoint is substituted. Thus, a byte string that is not UTF-8 at all is of limited utility when using these crate. However, not all operations on byte strings are specifically Unicode aware. For example, substring search has no specific Unicode semantics ascribed to it. It works just as well for byte strings that are completely valid UTF-8 as for byte strings that contain no valid UTF-8 at all. Similarly for replacements and various other operations that do not need any Unicode specific tailoring. Aside from the difference in how UTF-8 is handled, the APIs between `[u8]` and `str` (and `Vec` and `String`) are intentionally very similar, including maintaining the same behavior for corner cases in things like substring splitting. There are, however, some differences: * Substring search is not done with `matches`, but instead, `find_iter`. In general, this crate does not define any generic [`Pattern`](https://doc.rust-lang.org/std/str/pattern/trait.Pattern.html) infrastructure, and instead prefers adding new methods for different argument types. For example, `matches` can search by a `char` or a `&str`, where as `find_iter` can only search by a byte string. `find_char` can be used for searching by a `char`. * Since `SliceConcatExt` in the standard library is unstable, it is not possible to reuse that to implement `join` and `concat` methods. Instead, [`join`](fn.join.html) and [`concat`](fn.concat.html) are provided as free functions that perform a similar task. * This library bundles in a few more Unicode operations, such as grapheme, word and sentence iterators. More operations, such as normalization and case folding, may be provided in the future. * Some `String`/`str` APIs will panic if a particular index was not on a valid UTF-8 code unit sequence boundary. Conversely, no such checking is performed in this crate, as is consistent with treating byte strings as a sequence of bytes. This means callers are responsible for maintaining a UTF-8 invariant if that's important. * Some routines provided by this crate, such as `starts_with_str`, have a `_str` suffix to differentiate them from similar routines already defined on the `[u8]` type. The difference is that `starts_with` requires its parameter to be a `&[u8]`, where as `starts_with_str` permits its parameter to by anything that implements `AsRef<[u8]>`, which is more flexible. This means you can write `bytes.starts_with_str("☃")` instead of `bytes.starts_with("☃".as_bytes())`. Otherwise, you should find most of the APIs between this crate and the standard library string APIs to be very similar, if not identical. # Handling of invalid UTF-8 Since byte strings are only *conventionally* UTF-8, there is no guarantee that byte strings contain valid UTF-8. Indeed, it is perfectly legal for a byte string to contain arbitrary bytes. However, since this library defines a *string* type, it provides many operations specified by Unicode. These operations are typically only defined over codepoints, and thus have no real meaning on bytes that are invalid UTF-8 because they do not map to a particular codepoint. For this reason, whenever operations defined only on codepoints are used, this library will automatically convert invalid UTF-8 to the Unicode replacement codepoint, `U+FFFD`, which looks like this: `�`. For example, an [iterator over codepoints](struct.Chars.html) will yield a Unicode replacement codepoint whenever it comes across bytes that are not valid UTF-8: ``` use bstr::ByteSlice; let bs = b"a\xFF\xFFz"; let chars: Vec = bs.chars().collect(); assert_eq!(vec!['a', '\u{FFFD}', '\u{FFFD}', 'z'], chars); ``` There are a few ways in which invalid bytes can be substituted with a Unicode replacement codepoint. One way, not used by this crate, is to replace every individual invalid byte with a single replacement codepoint. In contrast, the approach this crate uses is called the "substitution of maximal subparts," as specified by the Unicode Standard (Chapter 3, Section 9). (This approach is also used by [W3C's Encoding Standard](https://www.w3.org/TR/encoding/).) In this strategy, a replacement codepoint is inserted whenever a byte is found that cannot possibly lead to a valid UTF-8 code unit sequence. If there were previous bytes that represented a *prefix* of a well-formed UTF-8 code unit sequence, then all of those bytes (up to 3) are substituted with a single replacement codepoint. For example: ``` use bstr::ByteSlice; let bs = b"a\xF0\x9F\x87z"; let chars: Vec = bs.chars().collect(); // The bytes \xF0\x9F\x87 could lead to a valid UTF-8 sequence, but 3 of them // on their own are invalid. Only one replacement codepoint is substituted, // which demonstrates the "substitution of maximal subparts" strategy. assert_eq!(vec!['a', '\u{FFFD}', 'z'], chars); ``` If you do need to access the raw bytes for some reason in an iterator like `Chars`, then you should use the iterator's "indices" variant, which gives the byte offsets containing the invalid UTF-8 bytes that were substituted with the replacement codepoint. For example: ``` use bstr::{B, ByteSlice}; let bs = b"a\xE2\x98z"; let chars: Vec<(usize, usize, char)> = bs.char_indices().collect(); // Even though the replacement codepoint is encoded as 3 bytes itself, the // byte range given here is only two bytes, corresponding to the original // raw bytes. assert_eq!(vec![(0, 1, 'a'), (1, 3, '\u{FFFD}'), (3, 4, 'z')], chars); // Thus, getting the original raw bytes is as simple as slicing the original // byte string: let chars: Vec<&[u8]> = bs.char_indices().map(|(s, e, _)| &bs[s..e]).collect(); assert_eq!(vec![B("a"), B(b"\xE2\x98"), B("z")], chars); ``` # File paths and OS strings One of the premiere features of Rust's standard library is how it handles file paths. In particular, it makes it very hard to write incorrect code while simultaneously providing a correct cross platform abstraction for manipulating file paths. The key challenge that one faces with file paths across platforms is derived from the following observations: * On most Unix-like systems, file paths are an arbitrary sequence of bytes. * On Windows, file paths are an arbitrary sequence of 16-bit integers. (In both cases, certain sequences aren't allowed. For example a `NUL` byte is not allowed in either case. But we can ignore this for the purposes of this section.) Byte strings, like the ones provided in this crate, line up really well with file paths on Unix like systems, which are themselves just arbitrary sequences of bytes. It turns out that if you treat them as "mostly UTF-8," then things work out pretty well. On the contrary, byte strings _don't_ really work that well on Windows because it's not possible to correctly roundtrip file paths between 16-bit integers and something that looks like UTF-8 _without_ explicitly defining an encoding to do this for you, which is anathema to byte strings, which are just bytes. Rust's standard library elegantly solves this problem by specifying an internal encoding for file paths that's only used on Windows called [WTF-8](https://simonsapin.github.io/wtf-8/). Its key properties are that they permit losslessly roundtripping file paths on Windows by extending UTF-8 to support an encoding of surrogate codepoints, while simultaneously supporting zero-cost conversion from Rust's Unicode strings to file paths. (Since UTF-8 is a proper subset of WTF-8.) The fundamental point at which the above strategy fails is when you want to treat file paths as things that look like strings in a zero cost way. In most cases, this is actually the wrong thing to do, but some cases call for it, for example, glob or regex matching on file paths. This is because WTF-8 is treated as an internal implementation detail, and there is no way to access those bytes via a public API. Therefore, such consumers are limited in what they can do: 1. One could re-implement WTF-8 and re-encode file paths on Windows to WTF-8 by accessing their underlying 16-bit integer representation. Unfortunately, this isn't zero cost (it introduces a second WTF-8 decoding step) and it's not clear this is a good thing to do, since WTF-8 should ideally remain an internal implementation detail. This is roughly the approach taken by the [`os_str_bytes`](https://crates.io/crates/os_str_bytes) crate. 2. One could instead declare that they will not handle paths on Windows that are not valid UTF-16, and return an error when one is encountered. 3. Like (2), but instead of returning an error, lossily decode the file path on Windows that isn't valid UTF-16 into UTF-16 by replacing invalid bytes with the Unicode replacement codepoint. While this library may provide facilities for (1) in the future, currently, this library only provides facilities for (2) and (3). In particular, a suite of conversion functions are provided that permit converting between byte strings, OS strings and file paths. For owned byte strings, they are: * [`ByteVec::from_os_string`](trait.ByteVec.html#method.from_os_string) * [`ByteVec::from_os_str_lossy`](trait.ByteVec.html#method.from_os_str_lossy) * [`ByteVec::from_path_buf`](trait.ByteVec.html#method.from_path_buf) * [`ByteVec::from_path_lossy`](trait.ByteVec.html#method.from_path_lossy) * [`ByteVec::into_os_string`](trait.ByteVec.html#method.into_os_string) * [`ByteVec::into_os_string_lossy`](trait.ByteVec.html#method.into_os_string_lossy) * [`ByteVec::into_path_buf`](trait.ByteVec.html#method.into_path_buf) * [`ByteVec::into_path_buf_lossy`](trait.ByteVec.html#method.into_path_buf_lossy) For byte string slices, they are: * [`ByteSlice::from_os_str`](trait.ByteSlice.html#method.from_os_str) * [`ByteSlice::from_path`](trait.ByteSlice.html#method.from_path) * [`ByteSlice::to_os_str`](trait.ByteSlice.html#method.to_os_str) * [`ByteSlice::to_os_str_lossy`](trait.ByteSlice.html#method.to_os_str_lossy) * [`ByteSlice::to_path`](trait.ByteSlice.html#method.to_path) * [`ByteSlice::to_path_lossy`](trait.ByteSlice.html#method.to_path_lossy) On Unix, all of these conversions are rigorously zero cost, which gives one a way to ergonomically deal with raw file paths exactly as they are using normal string-related functions. On Windows, these conversion routines perform a UTF-8 check and either return an error or lossily decode the file path into valid UTF-8, depending on which function you use. This means that you cannot roundtrip all file paths on Windows correctly using these conversion routines. However, this may be an acceptable downside since such file paths are exceptionally rare. Moreover, roundtripping isn't always necessary, for example, if all you're doing is filtering based on file paths. The reason why using byte strings for this is potentially superior than the standard library's approach is that a lot of Rust code is already lossily converting file paths to Rust's Unicode strings, which are required to be valid UTF-8, and thus contain latent bugs on Unix where paths with invalid UTF-8 are not terribly uncommon. If you instead use byte strings, then you're guaranteed to write correct code for Unix, at the cost of getting a corner case wrong on Windows. # Cargo features This crates comes with a few features that control standard library, serde and Unicode support. * `std` - **Enabled** by default. This provides APIs that require the standard library, such as `Vec` and `PathBuf`. Enabling this feature also enables the `alloc` feature and any other relevant `std` features for dependencies. * `alloc` - **Enabled** by default. This provides APIs that require allocations via the `alloc` crate, such as `Vec`. * `unicode` - **Enabled** by default. This provides APIs that require sizable Unicode data compiled into the binary. This includes, but is not limited to, grapheme/word/sentence segmenters. When this is disabled, basic support such as UTF-8 decoding is still included. Note that currently, enabling this feature also requires enabling the `std` feature. It is expected that this limitation will be lifted at some point. * `serde` - Enables implementations of serde traits for `BStr`, and also `BString` when `alloc` is enabled. */ #![cfg_attr(not(any(feature = "std", test)), no_std)] #![cfg_attr(docsrs, feature(doc_auto_cfg))] #[cfg(feature = "alloc")] extern crate alloc; pub use crate::bstr::BStr; #[cfg(feature = "alloc")] pub use crate::bstring::BString; pub use crate::escape_bytes::EscapeBytes; #[cfg(feature = "unicode")] pub use crate::ext_slice::Fields; pub use crate::ext_slice::{ ByteSlice, Bytes, FieldsWith, Find, FindReverse, Finder, FinderReverse, Lines, LinesWithTerminator, Split, SplitN, SplitNReverse, SplitReverse, B, }; #[cfg(feature = "alloc")] pub use crate::ext_vec::{concat, join, ByteVec, DrainBytes, FromUtf8Error}; #[cfg(feature = "unicode")] pub use crate::unicode::{ GraphemeIndices, Graphemes, SentenceIndices, Sentences, WordIndices, Words, WordsWithBreakIndices, WordsWithBreaks, }; pub use crate::utf8::{ decode as decode_utf8, decode_last as decode_last_utf8, CharIndices, Chars, Utf8Chunk, Utf8Chunks, Utf8Error, }; mod ascii; mod bstr; #[cfg(feature = "alloc")] mod bstring; mod byteset; mod escape_bytes; mod ext_slice; #[cfg(feature = "alloc")] mod ext_vec; mod impls; #[cfg(feature = "std")] pub mod io; #[cfg(all(test, feature = "std"))] mod tests; #[cfg(feature = "unicode")] mod unicode; mod utf8; #[cfg(all(test, feature = "std"))] mod apitests { use crate::{ bstr::BStr, bstring::BString, ext_slice::{Finder, FinderReverse}, }; #[test] fn oibits() { use std::panic::{RefUnwindSafe, UnwindSafe}; fn assert_send() {} fn assert_sync() {} fn assert_unwind_safe() {} assert_send::<&BStr>(); assert_sync::<&BStr>(); assert_unwind_safe::<&BStr>(); assert_send::(); assert_sync::(); assert_unwind_safe::(); assert_send::>(); assert_sync::>(); assert_unwind_safe::>(); assert_send::>(); assert_sync::>(); assert_unwind_safe::>(); } } bstr-1.7.0/src/tests.rs000064400000000000000000000026531046102023000131100ustar 00000000000000/// A sequence of tests for checking whether lossy decoding uses the maximal /// subpart strategy correctly. Namely, if a sequence of otherwise invalid /// UTF-8 bytes is a valid prefix of a valid UTF-8 sequence, then the entire /// prefix is replaced by a single replacement codepoint. In all other cases, /// each invalid byte is replaced by a single replacement codepoint. /// /// The first element in each tuple is the expected result of lossy decoding, /// while the second element is the input given. pub(crate) const LOSSY_TESTS: &[(&str, &[u8])] = &[ ("a", b"a"), ("\u{FFFD}", b"\xFF"), ("\u{FFFD}\u{FFFD}", b"\xFF\xFF"), ("β\u{FFFD}", b"\xCE\xB2\xFF"), ("☃\u{FFFD}", b"\xE2\x98\x83\xFF"), ("𝝱\u{FFFD}", b"\xF0\x9D\x9D\xB1\xFF"), ("\u{FFFD}\u{FFFD}", b"\xCE\xF0"), ("\u{FFFD}\u{FFFD}", b"\xCE\xFF"), ("\u{FFFD}\u{FFFD}", b"\xE2\x98\xF0"), ("\u{FFFD}\u{FFFD}", b"\xE2\x98\xFF"), ("\u{FFFD}", b"\xF0\x9D\x9D"), ("\u{FFFD}\u{FFFD}", b"\xF0\x9D\x9D\xF0"), ("\u{FFFD}\u{FFFD}", b"\xF0\x9D\x9D\xFF"), ("\u{FFFD}", b"\xCE"), ("a\u{FFFD}", b"a\xCE"), ("\u{FFFD}", b"\xE2\x98"), ("a\u{FFFD}", b"a\xE2\x98"), ("\u{FFFD}", b"\xF0\x9D\x9C"), ("a\u{FFFD}", b"a\xF0\x9D\x9C"), ("a\u{FFFD}\u{FFFD}\u{FFFD}z", b"a\xED\xA0\x80z"), ("☃βツ\u{FFFD}", b"\xe2\x98\x83\xce\xb2\xe3\x83\x84\xFF"), ("a\u{FFFD}\u{FFFD}\u{FFFD}b", b"\x61\xF1\x80\x80\xE1\x80\xC2\x62"), ]; bstr-1.7.0/src/unicode/data/GraphemeBreakTest.txt000064400000000000000000002433511046102023000200370ustar 00000000000000# GraphemeBreakTest-14.0.0.txt # Date: 2021-03-08, 06:22:32 GMT # © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # # Default Grapheme_Cluster_Break Test # # Format: # (# )? # contains hex Unicode code points, with # ÷ wherever there is a break opportunity, and # × wherever there is not. # the format can change, but currently it shows: # - the sample character name # - (x) the Grapheme_Cluster_Break property value for the sample character # - [x] the rule that determines whether there is a break or not, # as listed in the Rules section of GraphemeBreakTest.html # # These samples may be extended or changed in the future. # ÷ 0020 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0020 × 0308 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0020 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] (CR) ÷ [0.3] ÷ 0020 × 0308 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 0020 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] (LF) ÷ [0.3] ÷ 0020 × 0308 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 0020 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] (Control) ÷ [0.3] ÷ 0020 × 0308 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 0020 × 034F ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0020 × 0308 × 034F ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0020 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0020 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0020 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0020 × 0308 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0020 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0020 × 0308 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0020 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0020 × 0308 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0020 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0020 × 0308 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0020 ÷ 11A8 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0020 × 0308 ÷ 11A8 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0020 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0020 × 0308 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0020 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0020 × 0308 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0020 × 0308 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0020 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0020 × 0308 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0020 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] (Other) ÷ [0.3] ÷ 0020 × 0308 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 000D ÷ 0020 ÷ # ÷ [0.2] (CR) ÷ [4.0] SPACE (Other) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 000D ÷ 000D ÷ # ÷ [0.2] (CR) ÷ [4.0] (CR) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 000D ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 000D × 000A ÷ # ÷ [0.2] (CR) × [3.0] (LF) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 000A ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 000D ÷ 0001 ÷ # ÷ [0.2] (CR) ÷ [4.0] (Control) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 000D ÷ 034F ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 000D ÷ 0308 × 034F ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 000D ÷ 1F1E6 ÷ # ÷ [0.2] (CR) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000D ÷ 0600 ÷ # ÷ [0.2] (CR) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 000D ÷ 0903 ÷ # ÷ [0.2] (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 000D ÷ 0308 × 0903 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 000D ÷ 1100 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 000D ÷ 1160 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 000D ÷ 11A8 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 000D ÷ AC00 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 000D ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 000D ÷ AC01 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 000D ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 000D ÷ 231A ÷ # ÷ [0.2] (CR) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 000D ÷ 0300 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 000D ÷ 200D ÷ # ÷ [0.2] (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 000D ÷ 0308 × 200D ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 000D ÷ 0378 ÷ # ÷ [0.2] (CR) ÷ [4.0] (Other) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 000A ÷ 0020 ÷ # ÷ [0.2] (LF) ÷ [4.0] SPACE (Other) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 000A ÷ 000D ÷ # ÷ [0.2] (LF) ÷ [4.0] (CR) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 000D ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 000A ÷ 000A ÷ # ÷ [0.2] (LF) ÷ [4.0] (LF) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 000A ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 000A ÷ 0001 ÷ # ÷ [0.2] (LF) ÷ [4.0] (Control) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 000A ÷ 034F ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 000A ÷ 0308 × 034F ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 000A ÷ 1F1E6 ÷ # ÷ [0.2] (LF) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000A ÷ 0600 ÷ # ÷ [0.2] (LF) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 000A ÷ 0903 ÷ # ÷ [0.2] (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 000A ÷ 0308 × 0903 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 000A ÷ 1100 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 000A ÷ 1160 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 000A ÷ 11A8 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 000A ÷ AC00 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 000A ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 000A ÷ AC01 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 000A ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 000A ÷ 231A ÷ # ÷ [0.2] (LF) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 000A ÷ 0300 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 000A ÷ 200D ÷ # ÷ [0.2] (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 000A ÷ 0308 × 200D ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 000A ÷ 0378 ÷ # ÷ [0.2] (LF) ÷ [4.0] (Other) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 0001 ÷ 0020 ÷ # ÷ [0.2] (Control) ÷ [4.0] SPACE (Other) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0001 ÷ 000D ÷ # ÷ [0.2] (Control) ÷ [4.0] (CR) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 000D ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 0001 ÷ 000A ÷ # ÷ [0.2] (Control) ÷ [4.0] (LF) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 000A ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 0001 ÷ 0001 ÷ # ÷ [0.2] (Control) ÷ [4.0] (Control) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 0001 ÷ 034F ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0001 ÷ 0308 × 034F ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0001 ÷ 1F1E6 ÷ # ÷ [0.2] (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0001 ÷ 0600 ÷ # ÷ [0.2] (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0001 ÷ 0903 ÷ # ÷ [0.2] (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0001 ÷ 0308 × 0903 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0001 ÷ 1100 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0001 ÷ 1160 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0001 ÷ 11A8 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0001 ÷ AC00 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0001 ÷ AC01 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0001 ÷ 231A ÷ # ÷ [0.2] (Control) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0001 ÷ 0300 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0001 ÷ 0308 × 0300 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0001 ÷ 200D ÷ # ÷ [0.2] (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0001 ÷ 0308 × 200D ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0001 ÷ 0378 ÷ # ÷ [0.2] (Control) ÷ [4.0] (Other) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 034F ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 034F × 0308 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 034F ÷ 000D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] (CR) ÷ [0.3] ÷ 034F × 0308 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 034F ÷ 000A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] (LF) ÷ [0.3] ÷ 034F × 0308 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 034F ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] (Control) ÷ [0.3] ÷ 034F × 0308 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 034F × 034F ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 034F × 0308 × 034F ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 034F ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 034F × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 034F ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 034F × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 034F × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 034F × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 034F ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 034F × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 034F ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 034F × 0308 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 034F ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 034F × 0308 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 034F ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 034F × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 034F ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 034F × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 034F ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 034F × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 034F × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 034F × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 034F × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 034F × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 034F ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] (Other) ÷ [0.3] ÷ 034F × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 1F1E6 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 1F1E6 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] (CR) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 1F1E6 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] (LF) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 1F1E6 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] (Control) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 1F1E6 × 034F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 1F1E6 × 0308 × 034F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 1F1E6 × 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 1F1E6 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 1F1E6 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 1F1E6 × 0308 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 1F1E6 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 1F1E6 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 1F1E6 ÷ 11A8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 11A8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 1F1E6 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 1F1E6 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 1F1E6 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 1F1E6 × 0308 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 1F1E6 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1F1E6 × 0308 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1F1E6 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] (Other) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 0600 × 0020 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] SPACE (Other) ÷ [0.3] ÷ 0600 × 0308 ÷ 0020 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0600 ÷ 000D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] (CR) ÷ [0.3] ÷ 0600 × 0308 ÷ 000D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 0600 ÷ 000A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] (LF) ÷ [0.3] ÷ 0600 × 0308 ÷ 000A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 0600 ÷ 0001 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] (Control) ÷ [0.3] ÷ 0600 × 0308 ÷ 0001 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 0600 × 034F ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0600 × 0308 × 034F ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0600 × 1F1E6 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0600 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0600 × 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0600 × 0308 ÷ 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0600 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0600 × 0308 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0600 × 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0600 × 0308 ÷ 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0600 × 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0600 × 0308 ÷ 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0600 × 11A8 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0600 × 0308 ÷ 11A8 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0600 × AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0600 × 0308 ÷ AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0600 × AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0600 × 0308 ÷ AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0600 × 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] WATCH (ExtPict) ÷ [0.3] ÷ 0600 × 0308 ÷ 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0600 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0600 × 0308 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0600 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0600 × 0308 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0600 × 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] (Other) ÷ [0.3] ÷ 0600 × 0308 ÷ 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 0903 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0903 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0903 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] (CR) ÷ [0.3] ÷ 0903 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 0903 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] (LF) ÷ [0.3] ÷ 0903 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 0903 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] (Control) ÷ [0.3] ÷ 0903 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 0903 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0903 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0903 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0903 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0903 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0903 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0903 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0903 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0903 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0903 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0903 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0903 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0903 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0903 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0903 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0903 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0903 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0903 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0903 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0903 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0903 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] (Other) ÷ [0.3] ÷ 0903 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 1100 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 1100 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 1100 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] (CR) ÷ [0.3] ÷ 1100 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 1100 ÷ 000A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] (LF) ÷ [0.3] ÷ 1100 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 1100 ÷ 0001 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] (Control) ÷ [0.3] ÷ 1100 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 1100 × 034F ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 1100 × 0308 × 034F ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 1100 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 1100 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 1100 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 1100 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 1100 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 1100 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 1100 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 1100 × 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 1100 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 1100 ÷ 11A8 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 1100 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 1100 × AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 1100 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 1100 × AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 1100 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 1100 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1100 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1100 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 1100 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 1100 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1100 × 0308 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1100 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] (Other) ÷ [0.3] ÷ 1100 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 1160 ÷ 0020 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 1160 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 1160 ÷ 000D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] (CR) ÷ [0.3] ÷ 1160 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 1160 ÷ 000A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] (LF) ÷ [0.3] ÷ 1160 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 1160 ÷ 0001 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] (Control) ÷ [0.3] ÷ 1160 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 1160 × 034F ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 1160 × 0308 × 034F ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 1160 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 1160 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 1160 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 1160 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 1160 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 1160 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 1160 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 1160 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 1160 × 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 1160 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 1160 × 11A8 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 1160 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 1160 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 1160 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 1160 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 1160 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 1160 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1160 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1160 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 1160 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 1160 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1160 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1160 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] (Other) ÷ [0.3] ÷ 1160 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 11A8 ÷ 0020 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 11A8 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 11A8 ÷ 000D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] (CR) ÷ [0.3] ÷ 11A8 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 11A8 ÷ 000A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] (LF) ÷ [0.3] ÷ 11A8 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 11A8 ÷ 0001 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] (Control) ÷ [0.3] ÷ 11A8 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 11A8 × 034F ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 11A8 × 0308 × 034F ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 11A8 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 11A8 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 11A8 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 11A8 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 11A8 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 11A8 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 11A8 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 11A8 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 11A8 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 11A8 × 11A8 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 11A8 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 11A8 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 11A8 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 11A8 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 11A8 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 11A8 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 11A8 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 11A8 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 11A8 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 11A8 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 11A8 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 11A8 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] (Other) ÷ [0.3] ÷ 11A8 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ AC00 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ AC00 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ AC00 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] (CR) ÷ [0.3] ÷ AC00 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ AC00 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] (LF) ÷ [0.3] ÷ AC00 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ AC00 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] (Control) ÷ [0.3] ÷ AC00 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ AC00 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ AC00 × 0308 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ AC00 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ AC00 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ AC00 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ AC00 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ AC00 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ AC00 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ AC00 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ AC00 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ AC00 × 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ AC00 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ AC00 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ AC00 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ AC00 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ AC00 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ AC00 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ AC00 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ AC00 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ AC00 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ AC00 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ AC00 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ AC00 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ AC00 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ AC00 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] (Other) ÷ [0.3] ÷ AC00 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ AC01 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ AC01 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ AC01 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] (CR) ÷ [0.3] ÷ AC01 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ AC01 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] (LF) ÷ [0.3] ÷ AC01 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ AC01 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] (Control) ÷ [0.3] ÷ AC01 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ AC01 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ AC01 × 0308 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ AC01 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ AC01 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ AC01 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ AC01 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ AC01 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ AC01 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ AC01 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ AC01 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ AC01 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ AC01 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ AC01 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ AC01 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ AC01 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ AC01 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ AC01 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ AC01 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ AC01 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ AC01 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ AC01 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ AC01 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ AC01 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ AC01 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ AC01 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] (Other) ÷ [0.3] ÷ AC01 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 231A ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 231A × 0308 ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 231A ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] (CR) ÷ [0.3] ÷ 231A × 0308 ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 231A ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] (LF) ÷ [0.3] ÷ 231A × 0308 ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 231A ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] (Control) ÷ [0.3] ÷ 231A × 0308 ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 231A × 034F ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 231A × 0308 × 034F ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 231A ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 231A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 231A ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 231A × 0308 ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 231A × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 231A × 0308 × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 231A ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 231A × 0308 ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 231A ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 231A × 0308 ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 231A ÷ 11A8 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 231A × 0308 ÷ 11A8 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 231A ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 231A × 0308 ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 231A ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 231A × 0308 ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 231A ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 231A × 0308 ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 231A × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 231A × 0308 × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 231A × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 231A × 0308 × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 231A ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] (Other) ÷ [0.3] ÷ 231A × 0308 ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 0300 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0300 × 0308 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0300 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 0300 × 0308 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 0300 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 0300 × 0308 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 0300 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 0300 × 0308 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 0300 × 034F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0300 × 0308 × 034F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0300 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0300 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0300 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0300 × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0300 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0300 × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0300 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0300 × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0300 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0300 × 0308 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0300 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0300 × 0308 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0300 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0300 × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0300 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0300 × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0300 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0300 × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0300 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0300 × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0300 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 0300 × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 200D ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 200D × 0308 ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 200D ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 200D × 0308 ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 200D ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 200D × 0308 ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 200D ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 200D × 0308 ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 200D × 034F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 200D × 0308 × 034F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 200D ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 200D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 200D ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 200D × 0308 ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 200D × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 200D × 0308 × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 200D ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 200D × 0308 ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 200D ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 200D × 0308 ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 200D ÷ 11A8 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 200D × 0308 ÷ 11A8 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 200D ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 200D × 0308 ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 200D ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 200D × 0308 ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 200D ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 200D × 0308 ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 200D × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 200D × 0308 × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 200D × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 200D × 0308 × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 200D ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 200D × 0308 ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 0378 ÷ 0020 ÷ # ÷ [0.2] (Other) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0378 × 0308 ÷ 0020 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 0378 ÷ 000D ÷ # ÷ [0.2] (Other) ÷ [5.0] (CR) ÷ [0.3] ÷ 0378 × 0308 ÷ 000D ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] ÷ 0378 ÷ 000A ÷ # ÷ [0.2] (Other) ÷ [5.0] (LF) ÷ [0.3] ÷ 0378 × 0308 ÷ 000A ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] ÷ 0378 ÷ 0001 ÷ # ÷ [0.2] (Other) ÷ [5.0] (Control) ÷ [0.3] ÷ 0378 × 0308 ÷ 0001 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] ÷ 0378 × 034F ÷ # ÷ [0.2] (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0378 × 0308 × 034F ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] ÷ 0378 ÷ 1F1E6 ÷ # ÷ [0.2] (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0378 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0378 ÷ 0600 ÷ # ÷ [0.2] (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0378 × 0308 ÷ 0600 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] ÷ 0378 × 0903 ÷ # ÷ [0.2] (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0378 × 0308 × 0903 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] ÷ 0378 ÷ 1100 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0378 × 0308 ÷ 1100 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 0378 ÷ 1160 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0378 × 0308 ÷ 1160 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] ÷ 0378 ÷ 11A8 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0378 × 0308 ÷ 11A8 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] ÷ 0378 ÷ AC00 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0378 × 0308 ÷ AC00 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0378 ÷ AC01 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0378 × 0308 ÷ AC01 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0378 ÷ 231A ÷ # ÷ [0.2] (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0378 × 0308 ÷ 231A ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0378 × 0300 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0378 × 0308 × 0300 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0378 × 200D ÷ # ÷ [0.2] (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0378 × 0308 × 200D ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0378 ÷ 0378 ÷ # ÷ [0.2] (Other) ÷ [999.0] (Other) ÷ [0.3] ÷ 0378 × 0308 ÷ 0378 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 000D × 000A ÷ 0061 ÷ 000A ÷ 0308 ÷ # ÷ [0.2] (CR) × [3.0] (LF) ÷ [4.0] LATIN SMALL LETTER A (Other) ÷ [5.0] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [0.3] ÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [0.3] ÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC LETTER NOON (Other) ÷ [0.3] ÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ AC00 × 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ AC01 × 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 0061 ÷ 1F1E6 × 1F1E7 × 200D ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 0061 ÷ 1F1E6 × 200D ÷ 1F1E7 × 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 × 1F1E9 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER D (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 0061 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0061 × 0308 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 0061 × 0903 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 0061 ÷ 0600 × 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 1F476 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] ÷ 0061 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] ÷ 0061 × 1F3FF ÷ 1F476 × 200D × 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] ÷ 1F476 × 1F3FF × 0308 × 200D × 1F476 × 1F3FF ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [0.3] ÷ 1F6D1 × 200D × 1F6D1 ÷ # ÷ [0.2] OCTAGONAL SIGN (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] ÷ 0061 × 200D ÷ 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] ÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] ÷ 0061 × 200D ÷ 2701 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] # # Lines: 602 # # EOF bstr-1.7.0/src/unicode/data/LICENSE-UNICODE000064400000000000000000000043371046102023000160310ustar 00000000000000UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE See Terms of Use 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 © 1991-2019 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. bstr-1.7.0/src/unicode/data/SentenceBreakTest.txt000064400000000000000000002530701046102023000200520ustar 00000000000000# SentenceBreakTest-14.0.0.txt # Date: 2021-03-08, 06:22:40 GMT # © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # # Default Sentence_Break Test # # Format: # (# )? # contains hex Unicode code points, with # ÷ wherever there is a break opportunity, and # × wherever there is not. # the format can change, but currently it shows: # - the sample character name # - (x) the Sentence_Break property value for the sample character # - [x] the rule that determines whether there is a break or not, # as listed in the Rules section of SentenceBreakTest.html # # These samples may be extended or changed in the future. # ÷ 0001 × 0001 ÷ # ÷ [0.2] (Other) × [998.0] (Other) ÷ [0.3] ÷ 0001 × 0308 × 0001 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 0001 × 000D ÷ # ÷ [0.2] (Other) × [998.0] (CR) ÷ [0.3] ÷ 0001 × 0308 × 000D ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 0001 × 000A ÷ # ÷ [0.2] (Other) × [998.0] (LF) ÷ [0.3] ÷ 0001 × 0308 × 000A ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 0001 × 0085 ÷ # ÷ [0.2] (Other) × [998.0] (Sep) ÷ [0.3] ÷ 0001 × 0308 × 0085 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 0001 × 0009 ÷ # ÷ [0.2] (Other) × [998.0] (Sp) ÷ [0.3] ÷ 0001 × 0308 × 0009 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 0001 × 0061 ÷ # ÷ [0.2] (Other) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0001 × 0308 × 0061 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0001 × 0041 ÷ # ÷ [0.2] (Other) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0001 × 0308 × 0041 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0001 × 01BB ÷ # ÷ [0.2] (Other) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0001 × 0308 × 01BB ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0001 × 0030 ÷ # ÷ [0.2] (Other) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0001 × 0308 × 0030 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0001 × 002E ÷ # ÷ [0.2] (Other) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0001 × 0308 × 002E ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0001 × 0021 ÷ # ÷ [0.2] (Other) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0001 × 0308 × 0021 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0001 × 0022 ÷ # ÷ [0.2] (Other) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0001 × 0308 × 0022 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0001 × 002C ÷ # ÷ [0.2] (Other) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0001 × 0308 × 002C ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0001 × 00AD ÷ # ÷ [0.2] (Other) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0001 × 0308 × 00AD ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0001 × 0300 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0001 × 0308 × 0300 ÷ # ÷ [0.2] (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000D ÷ 0001 ÷ # ÷ [0.2] (CR) ÷ [4.0] (Other) ÷ [0.3] ÷ 000D ÷ 0308 × 0001 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 000D ÷ 000D ÷ # ÷ [0.2] (CR) ÷ [4.0] (CR) ÷ [0.3] ÷ 000D ÷ 0308 × 000D ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 000D × 000A ÷ # ÷ [0.2] (CR) × [3.0] (LF) ÷ [0.3] ÷ 000D ÷ 0308 × 000A ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 000D ÷ 0085 ÷ # ÷ [0.2] (CR) ÷ [4.0] (Sep) ÷ [0.3] ÷ 000D ÷ 0308 × 0085 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 000D ÷ 0009 ÷ # ÷ [0.2] (CR) ÷ [4.0] (Sp) ÷ [0.3] ÷ 000D ÷ 0308 × 0009 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 000D ÷ 0061 ÷ # ÷ [0.2] (CR) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 000D ÷ 0308 × 0061 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 000D ÷ 0041 ÷ # ÷ [0.2] (CR) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 000D ÷ 0308 × 0041 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 000D ÷ 01BB ÷ # ÷ [0.2] (CR) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 000D ÷ 0308 × 01BB ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 000D ÷ 0030 ÷ # ÷ [0.2] (CR) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000D ÷ 0308 × 0030 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000D ÷ 002E ÷ # ÷ [0.2] (CR) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3] ÷ 000D ÷ 0308 × 002E ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 000D ÷ 0021 ÷ # ÷ [0.2] (CR) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 000D ÷ 0308 × 0021 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 000D ÷ 0022 ÷ # ÷ [0.2] (CR) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 000D ÷ 0308 × 0022 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 000D ÷ 002C ÷ # ÷ [0.2] (CR) ÷ [4.0] COMMA (SContinue) ÷ [0.3] ÷ 000D ÷ 0308 × 002C ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 000D ÷ 00AD ÷ # ÷ [0.2] (CR) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000D ÷ 0308 × 00AD ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000D ÷ 0300 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000A ÷ 0001 ÷ # ÷ [0.2] (LF) ÷ [4.0] (Other) ÷ [0.3] ÷ 000A ÷ 0308 × 0001 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 000A ÷ 000D ÷ # ÷ [0.2] (LF) ÷ [4.0] (CR) ÷ [0.3] ÷ 000A ÷ 0308 × 000D ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 000A ÷ 000A ÷ # ÷ [0.2] (LF) ÷ [4.0] (LF) ÷ [0.3] ÷ 000A ÷ 0308 × 000A ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 000A ÷ 0085 ÷ # ÷ [0.2] (LF) ÷ [4.0] (Sep) ÷ [0.3] ÷ 000A ÷ 0308 × 0085 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 000A ÷ 0009 ÷ # ÷ [0.2] (LF) ÷ [4.0] (Sp) ÷ [0.3] ÷ 000A ÷ 0308 × 0009 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 000A ÷ 0061 ÷ # ÷ [0.2] (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 000A ÷ 0308 × 0061 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 000A ÷ 0041 ÷ # ÷ [0.2] (LF) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 000A ÷ 0308 × 0041 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 000A ÷ 01BB ÷ # ÷ [0.2] (LF) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 000A ÷ 0308 × 01BB ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 000A ÷ 0030 ÷ # ÷ [0.2] (LF) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000A ÷ 0308 × 0030 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000A ÷ 002E ÷ # ÷ [0.2] (LF) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3] ÷ 000A ÷ 0308 × 002E ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 000A ÷ 0021 ÷ # ÷ [0.2] (LF) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 000A ÷ 0308 × 0021 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 000A ÷ 0022 ÷ # ÷ [0.2] (LF) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 000A ÷ 0308 × 0022 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 000A ÷ 002C ÷ # ÷ [0.2] (LF) ÷ [4.0] COMMA (SContinue) ÷ [0.3] ÷ 000A ÷ 0308 × 002C ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 000A ÷ 00AD ÷ # ÷ [0.2] (LF) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000A ÷ 0308 × 00AD ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000A ÷ 0300 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0085 ÷ 0001 ÷ # ÷ [0.2] (Sep) ÷ [4.0] (Other) ÷ [0.3] ÷ 0085 ÷ 0308 × 0001 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 0085 ÷ 000D ÷ # ÷ [0.2] (Sep) ÷ [4.0] (CR) ÷ [0.3] ÷ 0085 ÷ 0308 × 000D ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 0085 ÷ 000A ÷ # ÷ [0.2] (Sep) ÷ [4.0] (LF) ÷ [0.3] ÷ 0085 ÷ 0308 × 000A ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 0085 ÷ 0085 ÷ # ÷ [0.2] (Sep) ÷ [4.0] (Sep) ÷ [0.3] ÷ 0085 ÷ 0308 × 0085 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 0085 ÷ 0009 ÷ # ÷ [0.2] (Sep) ÷ [4.0] (Sp) ÷ [0.3] ÷ 0085 ÷ 0308 × 0009 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 0085 ÷ 0061 ÷ # ÷ [0.2] (Sep) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0085 ÷ 0308 × 0061 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0085 ÷ 0041 ÷ # ÷ [0.2] (Sep) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0085 ÷ 0308 × 0041 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0085 ÷ 01BB ÷ # ÷ [0.2] (Sep) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0085 ÷ 0308 × 01BB ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0085 ÷ 0030 ÷ # ÷ [0.2] (Sep) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0085 ÷ 0308 × 0030 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0085 ÷ 002E ÷ # ÷ [0.2] (Sep) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0085 ÷ 0308 × 002E ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0085 ÷ 0021 ÷ # ÷ [0.2] (Sep) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0085 ÷ 0308 × 0021 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0085 ÷ 0022 ÷ # ÷ [0.2] (Sep) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0085 ÷ 0308 × 0022 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0085 ÷ 002C ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMMA (SContinue) ÷ [0.3] ÷ 0085 ÷ 0308 × 002C ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0085 ÷ 00AD ÷ # ÷ [0.2] (Sep) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0085 ÷ 0308 × 00AD ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0085 ÷ 0300 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0085 ÷ 0308 × 0300 ÷ # ÷ [0.2] (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0009 × 0001 ÷ # ÷ [0.2] (Sp) × [998.0] (Other) ÷ [0.3] ÷ 0009 × 0308 × 0001 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 0009 × 000D ÷ # ÷ [0.2] (Sp) × [998.0] (CR) ÷ [0.3] ÷ 0009 × 0308 × 000D ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 0009 × 000A ÷ # ÷ [0.2] (Sp) × [998.0] (LF) ÷ [0.3] ÷ 0009 × 0308 × 000A ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 0009 × 0085 ÷ # ÷ [0.2] (Sp) × [998.0] (Sep) ÷ [0.3] ÷ 0009 × 0308 × 0085 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 0009 × 0009 ÷ # ÷ [0.2] (Sp) × [998.0] (Sp) ÷ [0.3] ÷ 0009 × 0308 × 0009 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 0009 × 0061 ÷ # ÷ [0.2] (Sp) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0009 × 0308 × 0061 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0009 × 0041 ÷ # ÷ [0.2] (Sp) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0009 × 0308 × 0041 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0009 × 01BB ÷ # ÷ [0.2] (Sp) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0009 × 0308 × 01BB ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0009 × 0030 ÷ # ÷ [0.2] (Sp) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0009 × 0308 × 0030 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0009 × 002E ÷ # ÷ [0.2] (Sp) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0009 × 0308 × 002E ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0009 × 0021 ÷ # ÷ [0.2] (Sp) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0009 × 0308 × 0021 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0009 × 0022 ÷ # ÷ [0.2] (Sp) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0009 × 0308 × 0022 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0009 × 002C ÷ # ÷ [0.2] (Sp) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0009 × 0308 × 002C ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0009 × 00AD ÷ # ÷ [0.2] (Sp) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0009 × 0308 × 00AD ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0009 × 0300 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0009 × 0308 × 0300 ÷ # ÷ [0.2] (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 × 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] (Other) ÷ [0.3] ÷ 0061 × 0308 × 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 0061 × 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] (CR) ÷ [0.3] ÷ 0061 × 0308 × 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 0061 × 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] (LF) ÷ [0.3] ÷ 0061 × 0308 × 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 0061 × 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] (Sep) ÷ [0.3] ÷ 0061 × 0308 × 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 0061 × 0009 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] (Sp) ÷ [0.3] ÷ 0061 × 0308 × 0009 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 0061 × 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0061 × 0308 × 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0061 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0061 × 0308 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0061 × 01BB ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0061 × 0308 × 01BB ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0061 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 × 0308 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 × 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0061 × 0308 × 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0061 × 0021 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0061 × 0308 × 0021 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0061 × 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0061 × 0308 × 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0061 × 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0061 × 0308 × 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0061 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 × 0308 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0041 × 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] (Other) ÷ [0.3] ÷ 0041 × 0308 × 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 0041 × 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] (CR) ÷ [0.3] ÷ 0041 × 0308 × 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 0041 × 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] (LF) ÷ [0.3] ÷ 0041 × 0308 × 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 0041 × 0085 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] (Sep) ÷ [0.3] ÷ 0041 × 0308 × 0085 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 0041 × 0009 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] (Sp) ÷ [0.3] ÷ 0041 × 0308 × 0009 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 0041 × 0061 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0041 × 0308 × 0061 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0041 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0041 × 0308 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0041 × 01BB ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0041 × 0308 × 01BB ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0041 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0041 × 0308 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0041 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0041 × 0308 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0041 × 0021 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0041 × 0308 × 0021 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0041 × 0022 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0041 × 0308 × 0022 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0041 × 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0041 × 0308 × 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0041 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0041 × 0308 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0041 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0041 × 0308 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 01BB × 0001 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] (Other) ÷ [0.3] ÷ 01BB × 0308 × 0001 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 01BB × 000D ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] (CR) ÷ [0.3] ÷ 01BB × 0308 × 000D ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 01BB × 000A ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] (LF) ÷ [0.3] ÷ 01BB × 0308 × 000A ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 01BB × 0085 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] (Sep) ÷ [0.3] ÷ 01BB × 0308 × 0085 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 01BB × 0009 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] (Sp) ÷ [0.3] ÷ 01BB × 0308 × 0009 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 01BB × 0061 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 01BB × 0308 × 0061 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 01BB × 0041 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 01BB × 0308 × 0041 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 01BB × 01BB ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 01BB × 0308 × 01BB ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 01BB × 0030 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 01BB × 0308 × 0030 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 01BB × 002E ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 01BB × 0308 × 002E ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 01BB × 0021 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 01BB × 0308 × 0021 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 01BB × 0022 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 01BB × 0308 × 0022 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 01BB × 002C ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 01BB × 0308 × 002C ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 01BB × 00AD ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 01BB × 0308 × 00AD ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 01BB × 0300 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 01BB × 0308 × 0300 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0030 × 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] (Other) ÷ [0.3] ÷ 0030 × 0308 × 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 0030 × 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] (CR) ÷ [0.3] ÷ 0030 × 0308 × 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 0030 × 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] (LF) ÷ [0.3] ÷ 0030 × 0308 × 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 0030 × 0085 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] (Sep) ÷ [0.3] ÷ 0030 × 0308 × 0085 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 0030 × 0009 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] (Sp) ÷ [0.3] ÷ 0030 × 0308 × 0009 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 0030 × 0061 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0030 × 0308 × 0061 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0030 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0030 × 0308 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0030 × 01BB ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0030 × 0308 × 01BB ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0030 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0030 × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0030 × 002E ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0030 × 0308 × 002E ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0030 × 0021 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0030 × 0308 × 0021 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0030 × 0022 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0030 × 0308 × 0022 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0030 × 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0030 × 0308 × 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0030 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0030 × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0030 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0030 × 0308 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 002E ÷ 0001 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] (Other) ÷ [0.3] ÷ 002E × 0308 ÷ 0001 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] (Other) ÷ [0.3] ÷ 002E × 000D ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] (CR) ÷ [0.3] ÷ 002E × 0308 × 000D ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] (CR) ÷ [0.3] ÷ 002E × 000A ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] (LF) ÷ [0.3] ÷ 002E × 0308 × 000A ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] (LF) ÷ [0.3] ÷ 002E × 0085 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] (Sep) ÷ [0.3] ÷ 002E × 0308 × 0085 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] (Sep) ÷ [0.3] ÷ 002E × 0009 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] (Sp) ÷ [0.3] ÷ 002E × 0308 × 0009 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] (Sp) ÷ [0.3] ÷ 002E × 0061 ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 002E × 0308 × 0061 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 002E ÷ 0041 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 002E × 0308 ÷ 0041 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 002E ÷ 01BB ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 002E × 0308 ÷ 01BB ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 002E × 0030 ÷ # ÷ [0.2] FULL STOP (ATerm) × [6.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 002E × 0308 × 0030 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [6.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 002E × 002E ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] FULL STOP (ATerm) ÷ [0.3] ÷ 002E × 0308 × 002E ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] FULL STOP (ATerm) ÷ [0.3] ÷ 002E × 0021 ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 002E × 0308 × 0021 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 002E × 0022 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 002E × 0308 × 0022 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 002E × 002C ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] COMMA (SContinue) ÷ [0.3] ÷ 002E × 0308 × 002C ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] COMMA (SContinue) ÷ [0.3] ÷ 002E × 00AD ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 002E × 0308 × 00AD ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 002E × 0300 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 002E × 0308 × 0300 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0021 ÷ 0001 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] (Other) ÷ [0.3] ÷ 0021 × 0308 ÷ 0001 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] (Other) ÷ [0.3] ÷ 0021 × 000D ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] (CR) ÷ [0.3] ÷ 0021 × 0308 × 000D ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] (CR) ÷ [0.3] ÷ 0021 × 000A ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] (LF) ÷ [0.3] ÷ 0021 × 0308 × 000A ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] (LF) ÷ [0.3] ÷ 0021 × 0085 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] (Sep) ÷ [0.3] ÷ 0021 × 0308 × 0085 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] (Sep) ÷ [0.3] ÷ 0021 × 0009 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] (Sp) ÷ [0.3] ÷ 0021 × 0308 × 0009 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] (Sp) ÷ [0.3] ÷ 0021 ÷ 0061 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0021 × 0308 ÷ 0061 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0021 ÷ 0041 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0021 × 0308 ÷ 0041 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0021 ÷ 01BB ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0021 × 0308 ÷ 01BB ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0021 ÷ 0030 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0021 × 0308 ÷ 0030 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0021 × 002E ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] FULL STOP (ATerm) ÷ [0.3] ÷ 0021 × 0308 × 002E ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] FULL STOP (ATerm) ÷ [0.3] ÷ 0021 × 0021 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0021 × 0308 × 0021 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0021 × 0022 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0021 × 0308 × 0022 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0021 × 002C ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] COMMA (SContinue) ÷ [0.3] ÷ 0021 × 0308 × 002C ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] COMMA (SContinue) ÷ [0.3] ÷ 0021 × 00AD ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0021 × 0308 × 00AD ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0021 × 0300 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0021 × 0308 × 0300 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0022 × 0001 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] (Other) ÷ [0.3] ÷ 0022 × 0308 × 0001 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 0022 × 000D ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] (CR) ÷ [0.3] ÷ 0022 × 0308 × 000D ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 0022 × 000A ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] (LF) ÷ [0.3] ÷ 0022 × 0308 × 000A ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 0022 × 0085 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] (Sep) ÷ [0.3] ÷ 0022 × 0308 × 0085 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 0022 × 0009 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] (Sp) ÷ [0.3] ÷ 0022 × 0308 × 0009 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 0022 × 0061 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0022 × 0308 × 0061 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0022 × 0041 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0022 × 0308 × 0041 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0022 × 01BB ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0022 × 0308 × 01BB ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0022 × 0030 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0022 × 0308 × 0030 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0022 × 002E ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0022 × 0308 × 002E ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0022 × 0021 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0022 × 0308 × 0021 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0022 × 0022 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0022 × 0308 × 0022 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0022 × 002C ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0022 × 0308 × 002C ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0022 × 00AD ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0022 × 0308 × 00AD ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0022 × 0300 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0022 × 0308 × 0300 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 002C × 0001 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] (Other) ÷ [0.3] ÷ 002C × 0308 × 0001 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 002C × 000D ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] (CR) ÷ [0.3] ÷ 002C × 0308 × 000D ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 002C × 000A ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] (LF) ÷ [0.3] ÷ 002C × 0308 × 000A ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 002C × 0085 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] (Sep) ÷ [0.3] ÷ 002C × 0308 × 0085 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 002C × 0009 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] (Sp) ÷ [0.3] ÷ 002C × 0308 × 0009 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 002C × 0061 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 002C × 0308 × 0061 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 002C × 0041 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 002C × 0308 × 0041 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 002C × 01BB ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 002C × 0308 × 01BB ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 002C × 0030 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 002C × 0308 × 0030 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 002C × 002E ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 002C × 0308 × 002E ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 002C × 0021 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 002C × 0308 × 0021 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 002C × 0022 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 002C × 0308 × 0022 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 002C × 002C ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 002C × 0308 × 002C ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 002C × 00AD ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 002C × 0308 × 00AD ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 002C × 0300 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 002C × 0308 × 0300 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 00AD × 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] (Other) ÷ [0.3] ÷ 00AD × 0308 × 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 00AD × 000D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] (CR) ÷ [0.3] ÷ 00AD × 0308 × 000D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 00AD × 000A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] (LF) ÷ [0.3] ÷ 00AD × 0308 × 000A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 00AD × 0085 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] (Sep) ÷ [0.3] ÷ 00AD × 0308 × 0085 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 00AD × 0009 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] (Sp) ÷ [0.3] ÷ 00AD × 0308 × 0009 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 00AD × 0061 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 00AD × 0308 × 0061 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 00AD × 0041 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 00AD × 0308 × 0041 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 00AD × 01BB ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 00AD × 0308 × 01BB ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 00AD × 0030 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 00AD × 0308 × 0030 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 00AD × 002E ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 00AD × 0308 × 002E ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 00AD × 0021 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 00AD × 0308 × 0021 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 00AD × 0022 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 00AD × 0308 × 0022 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 00AD × 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 00AD × 0308 × 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 00AD × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 00AD × 0308 × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 00AD × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 00AD × 0308 × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0300 × 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 0300 × 0308 × 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Other) ÷ [0.3] ÷ 0300 × 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 0300 × 0308 × 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (CR) ÷ [0.3] ÷ 0300 × 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 0300 × 0308 × 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (LF) ÷ [0.3] ÷ 0300 × 0085 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 0300 × 0308 × 0085 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sep) ÷ [0.3] ÷ 0300 × 0009 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 0300 × 0308 × 0009 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] (Sp) ÷ [0.3] ÷ 0300 × 0061 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0300 × 0308 × 0061 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3] ÷ 0300 × 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0300 × 0308 × 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3] ÷ 0300 × 01BB ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0300 × 0308 × 01BB ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3] ÷ 0300 × 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0300 × 0308 × 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0300 × 002E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0300 × 0308 × 002E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0300 × 0021 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0300 × 0308 × 0021 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3] ÷ 0300 × 0022 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0300 × 0308 × 0022 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3] ÷ 0300 × 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0300 × 0308 × 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3] ÷ 0300 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0300 × 0308 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000D × 000A ÷ 0061 × 000A ÷ 0308 ÷ # ÷ [0.2] (CR) × [3.0] (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) × [998.0] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3] ÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3] ÷ 0020 × 200D × 0646 ÷ # ÷ [0.2] SPACE (Sp) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [998.0] ARABIC LETTER NOON (OLetter) ÷ [0.3] ÷ 0646 × 200D × 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (OLetter) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [998.0] SPACE (Sp) ÷ [0.3] ÷ 0028 × 0022 × 0047 × 006F × 002E × 0022 × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷ # ÷ [0.2] LEFT PARENTHESIS (Close) × [998.0] QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER G (Upper) × [998.0] LATIN SMALL LETTER O (Lower) × [998.0] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3] ÷ 0028 × 201C × 0047 × 006F × 003F × 201D × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷ # ÷ [0.2] LEFT PARENTHESIS (Close) × [998.0] LEFT DOUBLE QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER G (Upper) × [998.0] LATIN SMALL LETTER O (Lower) × [998.0] QUESTION MARK (STerm) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3] ÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E × 0020 × 0069 × 0073 ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER S (Lower) ÷ [0.3] ÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 003F × 0020 ÷ 0048 × 0065 ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUESTION MARK (STerm) × [9.0] SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0033 × 002E × 0034 ÷ # ÷ [0.2] DIGIT THREE (Numeric) × [998.0] FULL STOP (ATerm) × [6.0] DIGIT FOUR (Numeric) ÷ [0.3] ÷ 0063 × 002E × 0064 ÷ # ÷ [0.2] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3] ÷ 0043 × 002E × 0064 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [998.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3] ÷ 0063 × 002E × 0044 ÷ # ÷ [0.2] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3] ÷ 0043 × 002E × 0044 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 2018 × 0028 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [998.0] LEFT PARENTHESIS (Close) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 2018 × 0028 × 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [998.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 0308 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 000A ÷ 0308 × 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0074 × 0068 × 0065 × 0020 × 0072 × 0065 × 0073 × 0070 × 002E × 0020 × 006C × 0065 × 0061 × 0064 × 0065 × 0072 × 0073 × 0020 × 0061 × 0072 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER S (Lower) × [998.0] LATIN SMALL LETTER P (Lower) × [998.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER L (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER S (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 5B57 × 002E ÷ 5B57 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [998.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E ÷ 5B83 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 3002 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.1] IDEOGRAPHIC FULL STOP (STerm) ÷ [0.3] ÷ 5B57 × 3002 ÷ 5B83 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [998.0] IDEOGRAPHIC FULL STOP (STerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3] ÷ 0021 × 0020 × 0020 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] SPACE (Sp) × [10.0] SPACE (Sp) ÷ [0.3] ÷ 2060 × 0028 × 2060 × 0022 × 2060 × 0047 × 2060 × 006F × 2060 × 002E × 2060 × 0022 × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0028 × 2060 × 201C × 2060 × 0047 × 2060 × 006F × 2060 × 003F × 2060 × 201D × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 0020 × 2060 × 0069 × 2060 × 0073 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 003F × 2060 × 0020 × 2060 ÷ 0048 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0033 × 2060 × 002E × 2060 × 0034 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] DIGIT THREE (Numeric) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [6.0] DIGIT FOUR (Numeric) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0063 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0043 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0063 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0043 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 2018 × 2060 × 0028 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 2018 × 2060 × 0028 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 000A ÷ 2060 × 0308 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] (LF) ÷ [4.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 0020 × 2060 × 0072 × 2060 × 0065 × 2060 × 0073 × 2060 × 0070 × 2060 × 002E × 2060 × 0020 × 2060 × 006C × 2060 × 0065 × 2060 × 0061 × 2060 × 0064 × 2060 × 0065 × 2060 × 0072 × 2060 × 0073 × 2060 × 0020 × 2060 × 0061 × 2060 × 0072 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER P (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER L (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 5B57 × 2060 × 002E × 2060 ÷ 5B57 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 3002 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.1] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 5B57 × 2060 × 3002 × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [998.0] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0021 × 2060 × 0020 × 2060 × 0020 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] EXCLAMATION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [10.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] # # Lines: 502 # # EOF bstr-1.7.0/src/unicode/data/WordBreakTest.txt000064400000000000000000011050741046102023000172220ustar 00000000000000# WordBreakTest-14.0.0.txt # Date: 2021-03-08, 06:22:40 GMT # © 2021 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # # Default Word_Break Test # # Format: # (# )? # contains hex Unicode code points, with # ÷ wherever there is a break opportunity, and # × wherever there is not. # the format can change, but currently it shows: # - the sample character name # - (x) the Word_Break property value for the sample character # - [x] the rule that determines whether there is a break or not, # as listed in the Rules section of WordBreakTest.html # # These samples may be extended or changed in the future. # ÷ 0001 ÷ 0001 ÷ # ÷ [0.2] (Other) ÷ [999.0] (Other) ÷ [0.3] ÷ 0001 × 0308 ÷ 0001 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0001 ÷ 000D ÷ # ÷ [0.2] (Other) ÷ [3.2] (CR) ÷ [0.3] ÷ 0001 × 0308 ÷ 000D ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0001 ÷ 000A ÷ # ÷ [0.2] (Other) ÷ [3.2] (LF) ÷ [0.3] ÷ 0001 × 0308 ÷ 000A ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0001 ÷ 000B ÷ # ÷ [0.2] (Other) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0001 × 0308 ÷ 000B ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0001 ÷ 3031 ÷ # ÷ [0.2] (Other) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0001 × 0308 ÷ 3031 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0001 ÷ 0041 ÷ # ÷ [0.2] (Other) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0001 × 0308 ÷ 0041 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0001 ÷ 003A ÷ # ÷ [0.2] (Other) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0001 × 0308 ÷ 003A ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0001 ÷ 002C ÷ # ÷ [0.2] (Other) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0001 × 0308 ÷ 002C ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0001 ÷ 002E ÷ # ÷ [0.2] (Other) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0001 × 0308 ÷ 002E ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0001 ÷ 0030 ÷ # ÷ [0.2] (Other) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0001 × 0308 ÷ 0030 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0001 ÷ 005F ÷ # ÷ [0.2] (Other) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0001 × 0308 ÷ 005F ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0001 ÷ 1F1E6 ÷ # ÷ [0.2] (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0001 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0001 ÷ 05D0 ÷ # ÷ [0.2] (Other) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0001 × 0308 ÷ 05D0 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0001 ÷ 0022 ÷ # ÷ [0.2] (Other) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0001 × 0308 ÷ 0022 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0001 ÷ 0027 ÷ # ÷ [0.2] (Other) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0001 × 0308 ÷ 0027 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0001 ÷ 231A ÷ # ÷ [0.2] (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0001 × 0308 ÷ 231A ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0001 ÷ 0020 ÷ # ÷ [0.2] (Other) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0001 × 0308 ÷ 0020 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0001 × 00AD ÷ # ÷ [0.2] (Other) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0001 × 0308 × 00AD ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0001 × 0300 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0001 × 0308 × 0300 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0001 × 200D ÷ # ÷ [0.2] (Other) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0001 × 0308 × 200D ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0001 ÷ 0061 × 2060 ÷ # ÷ [0.2] (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0001 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0001 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0001 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0001 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0001 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0001 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0001 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0001 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0001 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0001 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] (Other) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0001 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0001 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] (Other) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0001 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0001 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] (Other) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0001 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0001 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] (Other) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0001 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000D ÷ 0001 ÷ # ÷ [0.2] (CR) ÷ [3.1] (Other) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 000D ÷ 000D ÷ # ÷ [0.2] (CR) ÷ [3.1] (CR) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 000D ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 000D × 000A ÷ # ÷ [0.2] (CR) × [3.0] (LF) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 000A ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 000D ÷ 000B ÷ # ÷ [0.2] (CR) ÷ [3.1] (Newline) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 000B ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 000D ÷ 3031 ÷ # ÷ [0.2] (CR) ÷ [3.1] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 3031 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 000D ÷ 0041 ÷ # ÷ [0.2] (CR) ÷ [3.1] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0041 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 000D ÷ 003A ÷ # ÷ [0.2] (CR) ÷ [3.1] COLON (MidLetter) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 003A ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000D ÷ 002C ÷ # ÷ [0.2] (CR) ÷ [3.1] COMMA (MidNum) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 002C ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000D ÷ 002E ÷ # ÷ [0.2] (CR) ÷ [3.1] FULL STOP (MidNumLet) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 002E ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 000D ÷ 0030 ÷ # ÷ [0.2] (CR) ÷ [3.1] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0030 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000D ÷ 005F ÷ # ÷ [0.2] (CR) ÷ [3.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 005F ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 000D ÷ 1F1E6 ÷ # ÷ [0.2] (CR) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000D ÷ 05D0 ÷ # ÷ [0.2] (CR) ÷ [3.1] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 05D0 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 000D ÷ 0022 ÷ # ÷ [0.2] (CR) ÷ [3.1] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0022 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 000D ÷ 0027 ÷ # ÷ [0.2] (CR) ÷ [3.1] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0027 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000D ÷ 231A ÷ # ÷ [0.2] (CR) ÷ [3.1] WATCH (ExtPict) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 000D ÷ 0020 ÷ # ÷ [0.2] (CR) ÷ [3.1] SPACE (WSegSpace) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 000D ÷ 00AD ÷ # ÷ [0.2] (CR) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000D ÷ 0308 × 00AD ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000D ÷ 0300 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000D ÷ 200D ÷ # ÷ [0.2] (CR) ÷ [3.1] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 000D ÷ 0308 × 200D ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 000D ÷ 0061 × 2060 ÷ # ÷ [0.2] (CR) ÷ [3.1] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000D ÷ 0061 ÷ 003A ÷ # ÷ [0.2] (CR) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000D ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] (CR) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000D ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] (CR) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000D ÷ 0061 ÷ 002C ÷ # ÷ [0.2] (CR) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000D ÷ 0031 ÷ 003A ÷ # ÷ [0.2] (CR) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000D ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] (CR) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000D ÷ 0031 ÷ 002C ÷ # ÷ [0.2] (CR) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000D ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] (CR) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000A ÷ 0001 ÷ # ÷ [0.2] (LF) ÷ [3.1] (Other) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 000A ÷ 000D ÷ # ÷ [0.2] (LF) ÷ [3.1] (CR) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 000D ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 000A ÷ 000A ÷ # ÷ [0.2] (LF) ÷ [3.1] (LF) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 000A ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 000A ÷ 000B ÷ # ÷ [0.2] (LF) ÷ [3.1] (Newline) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 000B ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 000A ÷ 3031 ÷ # ÷ [0.2] (LF) ÷ [3.1] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 3031 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 000A ÷ 0041 ÷ # ÷ [0.2] (LF) ÷ [3.1] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0041 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 000A ÷ 003A ÷ # ÷ [0.2] (LF) ÷ [3.1] COLON (MidLetter) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 003A ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000A ÷ 002C ÷ # ÷ [0.2] (LF) ÷ [3.1] COMMA (MidNum) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 002C ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000A ÷ 002E ÷ # ÷ [0.2] (LF) ÷ [3.1] FULL STOP (MidNumLet) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 002E ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 000A ÷ 0030 ÷ # ÷ [0.2] (LF) ÷ [3.1] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0030 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000A ÷ 005F ÷ # ÷ [0.2] (LF) ÷ [3.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 005F ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 000A ÷ 1F1E6 ÷ # ÷ [0.2] (LF) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000A ÷ 05D0 ÷ # ÷ [0.2] (LF) ÷ [3.1] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 05D0 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 000A ÷ 0022 ÷ # ÷ [0.2] (LF) ÷ [3.1] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0022 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 000A ÷ 0027 ÷ # ÷ [0.2] (LF) ÷ [3.1] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0027 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000A ÷ 231A ÷ # ÷ [0.2] (LF) ÷ [3.1] WATCH (ExtPict) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 000A ÷ 0020 ÷ # ÷ [0.2] (LF) ÷ [3.1] SPACE (WSegSpace) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 000A ÷ 00AD ÷ # ÷ [0.2] (LF) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000A ÷ 0308 × 00AD ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000A ÷ 0300 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000A ÷ 200D ÷ # ÷ [0.2] (LF) ÷ [3.1] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 000A ÷ 0308 × 200D ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 000A ÷ 0061 × 2060 ÷ # ÷ [0.2] (LF) ÷ [3.1] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000A ÷ 0061 ÷ 003A ÷ # ÷ [0.2] (LF) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000A ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] (LF) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000A ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] (LF) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000A ÷ 0061 ÷ 002C ÷ # ÷ [0.2] (LF) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000A ÷ 0031 ÷ 003A ÷ # ÷ [0.2] (LF) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000A ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] (LF) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000A ÷ 0031 ÷ 002C ÷ # ÷ [0.2] (LF) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000A ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] (LF) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000B ÷ 0001 ÷ # ÷ [0.2] (Newline) ÷ [3.1] (Other) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 000B ÷ 000D ÷ # ÷ [0.2] (Newline) ÷ [3.1] (CR) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 000D ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 000B ÷ 000A ÷ # ÷ [0.2] (Newline) ÷ [3.1] (LF) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 000A ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 000B ÷ 000B ÷ # ÷ [0.2] (Newline) ÷ [3.1] (Newline) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 000B ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 000B ÷ 3031 ÷ # ÷ [0.2] (Newline) ÷ [3.1] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 3031 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 000B ÷ 0041 ÷ # ÷ [0.2] (Newline) ÷ [3.1] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0041 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 000B ÷ 003A ÷ # ÷ [0.2] (Newline) ÷ [3.1] COLON (MidLetter) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 003A ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000B ÷ 002C ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMMA (MidNum) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 002C ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000B ÷ 002E ÷ # ÷ [0.2] (Newline) ÷ [3.1] FULL STOP (MidNumLet) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 002E ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 000B ÷ 0030 ÷ # ÷ [0.2] (Newline) ÷ [3.1] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0030 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 000B ÷ 005F ÷ # ÷ [0.2] (Newline) ÷ [3.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 005F ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 000B ÷ 1F1E6 ÷ # ÷ [0.2] (Newline) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 000B ÷ 05D0 ÷ # ÷ [0.2] (Newline) ÷ [3.1] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 05D0 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 000B ÷ 0022 ÷ # ÷ [0.2] (Newline) ÷ [3.1] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0022 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 000B ÷ 0027 ÷ # ÷ [0.2] (Newline) ÷ [3.1] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0027 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000B ÷ 231A ÷ # ÷ [0.2] (Newline) ÷ [3.1] WATCH (ExtPict) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 000B ÷ 0020 ÷ # ÷ [0.2] (Newline) ÷ [3.1] SPACE (WSegSpace) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 000B ÷ 00AD ÷ # ÷ [0.2] (Newline) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000B ÷ 0308 × 00AD ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 000B ÷ 0300 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000B ÷ 0308 × 0300 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 000B ÷ 200D ÷ # ÷ [0.2] (Newline) ÷ [3.1] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 000B ÷ 0308 × 200D ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 000B ÷ 0061 × 2060 ÷ # ÷ [0.2] (Newline) ÷ [3.1] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000B ÷ 0061 ÷ 003A ÷ # ÷ [0.2] (Newline) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000B ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] (Newline) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000B ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] (Newline) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000B ÷ 0061 ÷ 002C ÷ # ÷ [0.2] (Newline) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000B ÷ 0031 ÷ 003A ÷ # ÷ [0.2] (Newline) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 000B ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] (Newline) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 000B ÷ 0031 ÷ 002C ÷ # ÷ [0.2] (Newline) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 000B ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] (Newline) ÷ [3.1] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000B ÷ 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 3031 ÷ 0001 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] (Other) ÷ [0.3] ÷ 3031 × 0308 ÷ 0001 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 3031 ÷ 000D ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [3.2] (CR) ÷ [0.3] ÷ 3031 × 0308 ÷ 000D ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 3031 ÷ 000A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [3.2] (LF) ÷ [0.3] ÷ 3031 × 0308 ÷ 000A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 3031 ÷ 000B ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [3.2] (Newline) ÷ [0.3] ÷ 3031 × 0308 ÷ 000B ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 3031 × 3031 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 3031 × 0308 × 3031 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 3031 ÷ 0041 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 3031 × 0308 ÷ 0041 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 3031 ÷ 003A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 3031 × 0308 ÷ 003A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 3031 ÷ 002C ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 3031 × 0308 ÷ 002C ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 3031 ÷ 002E ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 3031 × 0308 ÷ 002E ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 3031 ÷ 0030 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 3031 × 0308 ÷ 0030 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 3031 × 005F ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 3031 × 0308 × 005F ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 3031 ÷ 1F1E6 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 3031 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 3031 ÷ 05D0 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 3031 × 0308 ÷ 05D0 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 3031 ÷ 0022 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 3031 × 0308 ÷ 0022 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 3031 ÷ 0027 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 3031 × 0308 ÷ 0027 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 3031 ÷ 231A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 3031 × 0308 ÷ 231A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 3031 ÷ 0020 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 3031 × 0308 ÷ 0020 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 3031 × 00AD ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 3031 × 0308 × 00AD ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 3031 × 0300 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 3031 × 0308 × 0300 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 3031 × 200D ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 3031 × 0308 × 200D ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 3031 ÷ 0061 × 2060 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 3031 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 3031 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 3031 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 3031 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 3031 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 3031 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 3031 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 3031 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 3031 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 3031 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 3031 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 3031 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 3031 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 3031 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 3031 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 3031 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 3031 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0041 ÷ 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] (Other) ÷ [0.3] ÷ 0041 × 0308 ÷ 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0041 ÷ 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [3.2] (CR) ÷ [0.3] ÷ 0041 × 0308 ÷ 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0041 ÷ 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [3.2] (LF) ÷ [0.3] ÷ 0041 × 0308 ÷ 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0041 ÷ 000B ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0041 × 0308 ÷ 000B ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0041 ÷ 3031 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0041 × 0308 ÷ 3031 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0041 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0041 × 0308 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0041 ÷ 003A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0041 × 0308 ÷ 003A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0041 ÷ 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0041 × 0308 ÷ 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0041 ÷ 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0041 × 0308 ÷ 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0041 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0041 × 0308 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0041 × 005F ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0041 × 0308 × 005F ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0041 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0041 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0041 × 05D0 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0041 × 0308 × 05D0 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0041 ÷ 0022 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0041 × 0308 ÷ 0022 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0041 ÷ 0027 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0041 × 0308 ÷ 0027 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0041 ÷ 231A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0041 × 0308 ÷ 231A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0041 ÷ 0020 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0041 × 0308 ÷ 0020 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0041 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0041 × 0308 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0041 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0041 × 0308 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0041 × 200D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0041 × 0308 × 200D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0041 × 0061 × 2060 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0041 × 0308 × 0061 × 2060 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0041 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0041 × 0308 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0041 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0041 × 0308 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0041 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0041 × 0308 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0041 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0041 × 0308 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0041 × 0031 ÷ 003A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0041 × 0308 × 0031 ÷ 003A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0041 × 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0041 × 0308 × 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0041 × 0031 ÷ 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0041 × 0308 × 0031 ÷ 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0041 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0041 × 0308 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 003A ÷ 0001 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] (Other) ÷ [0.3] ÷ 003A × 0308 ÷ 0001 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 003A ÷ 000D ÷ # ÷ [0.2] COLON (MidLetter) ÷ [3.2] (CR) ÷ [0.3] ÷ 003A × 0308 ÷ 000D ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 003A ÷ 000A ÷ # ÷ [0.2] COLON (MidLetter) ÷ [3.2] (LF) ÷ [0.3] ÷ 003A × 0308 ÷ 000A ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 003A ÷ 000B ÷ # ÷ [0.2] COLON (MidLetter) ÷ [3.2] (Newline) ÷ [0.3] ÷ 003A × 0308 ÷ 000B ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 003A ÷ 3031 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 003A × 0308 ÷ 3031 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 003A ÷ 0041 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 003A × 0308 ÷ 0041 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 003A ÷ 003A ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 003A × 0308 ÷ 003A ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 003A ÷ 002C ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 003A × 0308 ÷ 002C ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 003A ÷ 002E ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 003A × 0308 ÷ 002E ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 003A ÷ 0030 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 003A × 0308 ÷ 0030 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 003A ÷ 005F ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 003A × 0308 ÷ 005F ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 003A ÷ 1F1E6 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 003A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 003A ÷ 05D0 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 003A × 0308 ÷ 05D0 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 003A ÷ 0022 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 003A × 0308 ÷ 0022 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 003A ÷ 0027 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 003A × 0308 ÷ 0027 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 003A ÷ 231A ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 003A × 0308 ÷ 231A ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 003A ÷ 0020 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 003A × 0308 ÷ 0020 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 003A × 00AD ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 003A × 0308 × 00AD ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 003A × 0300 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 003A × 0308 × 0300 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 003A × 200D ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 003A × 0308 × 200D ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 003A ÷ 0061 × 2060 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 003A × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 003A ÷ 0061 ÷ 003A ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 003A × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 003A ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 003A × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 003A ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 003A × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 003A ÷ 0061 ÷ 002C ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 003A × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 003A ÷ 0031 ÷ 003A ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 003A × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 003A ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 003A × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 003A ÷ 0031 ÷ 002C ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 003A × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 003A ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 003A × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002C ÷ 0001 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] (Other) ÷ [0.3] ÷ 002C × 0308 ÷ 0001 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 002C ÷ 000D ÷ # ÷ [0.2] COMMA (MidNum) ÷ [3.2] (CR) ÷ [0.3] ÷ 002C × 0308 ÷ 000D ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 002C ÷ 000A ÷ # ÷ [0.2] COMMA (MidNum) ÷ [3.2] (LF) ÷ [0.3] ÷ 002C × 0308 ÷ 000A ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 002C ÷ 000B ÷ # ÷ [0.2] COMMA (MidNum) ÷ [3.2] (Newline) ÷ [0.3] ÷ 002C × 0308 ÷ 000B ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 002C ÷ 3031 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 002C × 0308 ÷ 3031 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 002C ÷ 0041 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 002C × 0308 ÷ 0041 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 002C ÷ 003A ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002C × 0308 ÷ 003A ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002C ÷ 002C ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002C × 0308 ÷ 002C ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002C ÷ 002E ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 002C × 0308 ÷ 002E ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 002C ÷ 0030 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 002C × 0308 ÷ 0030 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 002C ÷ 005F ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 002C × 0308 ÷ 005F ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 002C ÷ 1F1E6 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 002C × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 002C ÷ 05D0 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 002C × 0308 ÷ 05D0 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 002C ÷ 0022 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 002C × 0308 ÷ 0022 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 002C ÷ 0027 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002C × 0308 ÷ 0027 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002C ÷ 231A ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 002C × 0308 ÷ 231A ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 002C ÷ 0020 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 002C × 0308 ÷ 0020 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 002C × 00AD ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 002C × 0308 × 00AD ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 002C × 0300 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 002C × 0308 × 0300 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 002C × 200D ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 002C × 0308 × 200D ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 002C ÷ 0061 × 2060 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002C × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002C ÷ 0061 ÷ 003A ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002C × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002C ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002C × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002C ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002C × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002C ÷ 0061 ÷ 002C ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002C × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002C ÷ 0031 ÷ 003A ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002C × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002C ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002C × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002C ÷ 0031 ÷ 002C ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002C × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002C ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002C × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002E ÷ 0001 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] (Other) ÷ [0.3] ÷ 002E × 0308 ÷ 0001 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 002E ÷ 000D ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [3.2] (CR) ÷ [0.3] ÷ 002E × 0308 ÷ 000D ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 002E ÷ 000A ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [3.2] (LF) ÷ [0.3] ÷ 002E × 0308 ÷ 000A ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 002E ÷ 000B ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [3.2] (Newline) ÷ [0.3] ÷ 002E × 0308 ÷ 000B ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 002E ÷ 3031 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 002E × 0308 ÷ 3031 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 002E ÷ 0041 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 002E × 0308 ÷ 0041 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 002E ÷ 003A ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002E × 0308 ÷ 003A ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002E ÷ 002C ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002E × 0308 ÷ 002C ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002E ÷ 002E ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 002E × 0308 ÷ 002E ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 002E ÷ 0030 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 002E × 0308 ÷ 0030 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 002E ÷ 005F ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 002E × 0308 ÷ 005F ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 002E ÷ 1F1E6 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 002E × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 002E ÷ 05D0 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 002E × 0308 ÷ 05D0 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 002E ÷ 0022 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 002E × 0308 ÷ 0022 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 002E ÷ 0027 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002E × 0308 ÷ 0027 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002E ÷ 231A ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 002E × 0308 ÷ 231A ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 002E ÷ 0020 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 002E × 0308 ÷ 0020 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 002E × 00AD ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 002E × 0308 × 00AD ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 002E × 0300 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 002E × 0308 × 0300 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 002E × 200D ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 002E × 0308 × 200D ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 002E ÷ 0061 × 2060 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002E × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002E ÷ 0061 ÷ 003A ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002E × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002E ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002E × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002E ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002E × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002E ÷ 0061 ÷ 002C ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002E × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002E ÷ 0031 ÷ 003A ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002E × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 002E ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002E × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 002E ÷ 0031 ÷ 002C ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002E × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 002E ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 002E × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0030 ÷ 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] (Other) ÷ [0.3] ÷ 0030 × 0308 ÷ 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0030 ÷ 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [3.2] (CR) ÷ [0.3] ÷ 0030 × 0308 ÷ 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0030 ÷ 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [3.2] (LF) ÷ [0.3] ÷ 0030 × 0308 ÷ 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0030 ÷ 000B ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0030 × 0308 ÷ 000B ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0030 ÷ 3031 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0030 × 0308 ÷ 3031 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0030 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0030 × 0308 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [10.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0030 ÷ 003A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0030 × 0308 ÷ 003A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0030 ÷ 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0030 × 0308 ÷ 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0030 ÷ 002E ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0030 × 0308 ÷ 002E ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0030 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0030 × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [8.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0030 × 005F ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0030 × 0308 × 005F ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0030 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0030 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0030 × 05D0 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0030 × 0308 × 05D0 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [10.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0030 ÷ 0022 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0030 × 0308 ÷ 0022 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0030 ÷ 0027 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0030 × 0308 ÷ 0027 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0030 ÷ 231A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0030 × 0308 ÷ 231A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0030 ÷ 0020 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0030 × 0308 ÷ 0020 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0030 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0030 × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0030 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0030 × 0308 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0030 × 200D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0030 × 0308 × 200D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0030 × 0061 × 2060 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0030 × 0308 × 0061 × 2060 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [10.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0030 × 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0030 × 0308 × 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0030 × 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0030 × 0308 × 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0030 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0030 × 0308 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0030 × 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0030 × 0308 × 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0030 × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0030 × 0308 × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0030 × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0030 × 0308 × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0030 × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0030 × 0308 × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0030 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0030 × 0308 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 005F ÷ 0001 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] (Other) ÷ [0.3] ÷ 005F × 0308 ÷ 0001 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 005F ÷ 000D ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [3.2] (CR) ÷ [0.3] ÷ 005F × 0308 ÷ 000D ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 005F ÷ 000A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [3.2] (LF) ÷ [0.3] ÷ 005F × 0308 ÷ 000A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 005F ÷ 000B ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [3.2] (Newline) ÷ [0.3] ÷ 005F × 0308 ÷ 000B ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 005F × 3031 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 005F × 0308 × 3031 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 005F × 0041 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 005F × 0308 × 0041 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 005F ÷ 003A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 005F × 0308 ÷ 003A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 005F ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 005F × 0308 ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 005F ÷ 002E ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 005F × 0308 ÷ 002E ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 005F × 0030 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 005F × 0308 × 0030 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 005F × 005F ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 005F × 0308 × 005F ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 005F ÷ 1F1E6 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 005F × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 005F × 05D0 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 005F × 0308 × 05D0 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 005F ÷ 0022 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 005F × 0308 ÷ 0022 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 005F ÷ 0027 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 005F × 0308 ÷ 0027 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 005F ÷ 231A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 005F × 0308 ÷ 231A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 005F ÷ 0020 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 005F × 0308 ÷ 0020 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 005F × 00AD ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 005F × 0308 × 00AD ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 005F × 0300 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 005F × 0308 × 0300 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 005F × 200D ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 005F × 0308 × 200D ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 005F × 0061 × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 005F × 0308 × 0061 × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 005F × 0061 ÷ 003A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 005F × 0308 × 0061 ÷ 003A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 005F × 0061 ÷ 0027 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 005F × 0308 × 0061 ÷ 0027 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 005F × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 005F × 0308 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 005F × 0061 ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 005F × 0308 × 0061 ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 005F × 0031 ÷ 003A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 005F × 0308 × 0031 ÷ 003A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 005F × 0031 ÷ 0027 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 005F × 0308 × 0031 ÷ 0027 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 005F × 0031 ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 005F × 0308 × 0031 ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 005F × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 005F × 0308 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 1F1E6 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] (Other) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 1F1E6 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [3.2] (CR) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 1F1E6 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [3.2] (LF) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 1F1E6 ÷ 000B ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [3.2] (Newline) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 000B ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 1F1E6 ÷ 3031 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 3031 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 1F1E6 ÷ 0041 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0041 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 1F1E6 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 1F1E6 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 1F1E6 ÷ 002E ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 002E ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 1F1E6 ÷ 0030 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0030 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 1F1E6 ÷ 005F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 005F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 1F1E6 × 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [15.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 1F1E6 × 0308 × 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) × [15.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 1F1E6 ÷ 05D0 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 05D0 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 1F1E6 ÷ 0022 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0022 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 1F1E6 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 1F1E6 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1F1E6 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 1F1E6 × 00AD ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 1F1E6 × 0308 × 00AD ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 1F1E6 × 0308 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 1F1E6 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 1F1E6 × 0308 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 1F1E6 ÷ 0061 × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 1F1E6 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 1F1E6 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 1F1E6 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 1F1E6 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 1F1E6 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 1F1E6 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 1F1E6 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 1F1E6 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 05D0 ÷ 0001 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] (Other) ÷ [0.3] ÷ 05D0 × 0308 ÷ 0001 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 05D0 ÷ 000D ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [3.2] (CR) ÷ [0.3] ÷ 05D0 × 0308 ÷ 000D ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 05D0 ÷ 000A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [3.2] (LF) ÷ [0.3] ÷ 05D0 × 0308 ÷ 000A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 05D0 ÷ 000B ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [3.2] (Newline) ÷ [0.3] ÷ 05D0 × 0308 ÷ 000B ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 05D0 ÷ 3031 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 05D0 × 0308 ÷ 3031 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 05D0 × 0041 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 05D0 × 0308 × 0041 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 05D0 ÷ 003A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 05D0 × 0308 ÷ 003A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 05D0 ÷ 002C ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 05D0 × 0308 ÷ 002C ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 05D0 ÷ 002E ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 05D0 × 0308 ÷ 002E ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 05D0 × 0030 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 05D0 × 0308 × 0030 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 05D0 × 005F ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 05D0 × 0308 × 005F ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 05D0 ÷ 1F1E6 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 05D0 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 05D0 × 05D0 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 05D0 × 0308 × 05D0 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 05D0 ÷ 0022 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 05D0 × 0308 ÷ 0022 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 05D0 × 0027 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [7.1] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 05D0 × 0308 × 0027 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.1] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 05D0 ÷ 231A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 05D0 × 0308 ÷ 231A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 05D0 ÷ 0020 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 05D0 × 0308 ÷ 0020 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 05D0 × 00AD ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 05D0 × 0308 × 00AD ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 05D0 × 0300 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 05D0 × 0308 × 0300 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 05D0 × 200D ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 05D0 × 0308 × 200D ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 05D0 × 0061 × 2060 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 05D0 × 0308 × 0061 × 2060 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 05D0 × 0061 ÷ 003A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 05D0 × 0308 × 0061 ÷ 003A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 05D0 × 0061 ÷ 0027 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 05D0 × 0308 × 0061 ÷ 0027 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 05D0 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 05D0 × 0308 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 05D0 × 0061 ÷ 002C ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 05D0 × 0308 × 0061 ÷ 002C ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 05D0 × 0031 ÷ 003A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 05D0 × 0308 × 0031 ÷ 003A ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 05D0 × 0031 ÷ 0027 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 05D0 × 0308 × 0031 ÷ 0027 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 05D0 × 0031 ÷ 002C ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 05D0 × 0308 × 0031 ÷ 002C ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 05D0 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 05D0 × 0308 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0022 ÷ 0001 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] (Other) ÷ [0.3] ÷ 0022 × 0308 ÷ 0001 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0022 ÷ 000D ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [3.2] (CR) ÷ [0.3] ÷ 0022 × 0308 ÷ 000D ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0022 ÷ 000A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [3.2] (LF) ÷ [0.3] ÷ 0022 × 0308 ÷ 000A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0022 ÷ 000B ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0022 × 0308 ÷ 000B ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0022 ÷ 3031 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0022 × 0308 ÷ 3031 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0022 ÷ 0041 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0022 × 0308 ÷ 0041 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0022 ÷ 003A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0022 × 0308 ÷ 003A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0022 ÷ 002C ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0022 × 0308 ÷ 002C ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0022 ÷ 002E ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0022 × 0308 ÷ 002E ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0022 ÷ 0030 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0022 × 0308 ÷ 0030 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0022 ÷ 005F ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0022 × 0308 ÷ 005F ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0022 ÷ 1F1E6 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0022 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0022 ÷ 05D0 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0022 × 0308 ÷ 05D0 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0022 ÷ 0022 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0022 × 0308 ÷ 0022 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0022 ÷ 0027 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0022 × 0308 ÷ 0027 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0022 ÷ 231A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0022 × 0308 ÷ 231A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0022 ÷ 0020 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0022 × 0308 ÷ 0020 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0022 × 00AD ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0022 × 0308 × 00AD ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0022 × 0300 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0022 × 0308 × 0300 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0022 × 200D ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0022 × 0308 × 200D ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0022 ÷ 0061 × 2060 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0022 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0022 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0022 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0022 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0022 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0022 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0022 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0022 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0022 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0022 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0022 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0022 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0022 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0022 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0022 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0022 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0022 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0027 ÷ 0001 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] (Other) ÷ [0.3] ÷ 0027 × 0308 ÷ 0001 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0027 ÷ 000D ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [3.2] (CR) ÷ [0.3] ÷ 0027 × 0308 ÷ 000D ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0027 ÷ 000A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [3.2] (LF) ÷ [0.3] ÷ 0027 × 0308 ÷ 000A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0027 ÷ 000B ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0027 × 0308 ÷ 000B ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0027 ÷ 3031 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0027 × 0308 ÷ 3031 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0027 ÷ 0041 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0027 × 0308 ÷ 0041 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0027 ÷ 003A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0027 × 0308 ÷ 003A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0027 ÷ 002C ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0027 × 0308 ÷ 002C ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0027 ÷ 002E ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0027 × 0308 ÷ 002E ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0027 ÷ 0030 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0027 × 0308 ÷ 0030 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0027 ÷ 005F ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0027 × 0308 ÷ 005F ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0027 ÷ 1F1E6 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0027 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0027 ÷ 05D0 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0027 × 0308 ÷ 05D0 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0027 ÷ 0022 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0027 × 0308 ÷ 0022 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0027 ÷ 0027 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0027 × 0308 ÷ 0027 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0027 ÷ 231A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0027 × 0308 ÷ 231A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0027 ÷ 0020 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0027 × 0308 ÷ 0020 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0027 × 00AD ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0027 × 0308 × 00AD ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0027 × 0300 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0027 × 0308 × 0300 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0027 × 200D ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0027 × 0308 × 200D ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0027 ÷ 0061 × 2060 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0027 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0027 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0027 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0027 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0027 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0027 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0027 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0027 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0027 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0027 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0027 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0027 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0027 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0027 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0027 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0027 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0027 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 231A ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] (Other) ÷ [0.3] ÷ 231A × 0308 ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 231A ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [3.2] (CR) ÷ [0.3] ÷ 231A × 0308 ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 231A ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [3.2] (LF) ÷ [0.3] ÷ 231A × 0308 ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 231A ÷ 000B ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [3.2] (Newline) ÷ [0.3] ÷ 231A × 0308 ÷ 000B ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 231A ÷ 3031 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 231A × 0308 ÷ 3031 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 231A ÷ 0041 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 231A × 0308 ÷ 0041 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 231A ÷ 003A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 231A × 0308 ÷ 003A ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 231A ÷ 002C ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 231A × 0308 ÷ 002C ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 231A ÷ 002E ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 231A × 0308 ÷ 002E ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 231A ÷ 0030 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 231A × 0308 ÷ 0030 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 231A ÷ 005F ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 231A × 0308 ÷ 005F ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 231A ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 231A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 231A ÷ 05D0 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 231A × 0308 ÷ 05D0 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 231A ÷ 0022 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 231A × 0308 ÷ 0022 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 231A ÷ 0027 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 231A × 0308 ÷ 0027 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 231A ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 231A × 0308 ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 231A ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 231A × 0308 ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 231A × 00AD ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 231A × 0308 × 00AD ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 231A × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 231A × 0308 × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 231A × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 231A × 0308 × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 231A ÷ 0061 × 2060 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 231A × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 231A ÷ 0061 ÷ 003A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 231A × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 231A ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 231A × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 231A ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 231A × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 231A ÷ 0061 ÷ 002C ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 231A × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 231A ÷ 0031 ÷ 003A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 231A × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 231A ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 231A × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 231A ÷ 0031 ÷ 002C ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 231A × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 231A ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 231A × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] WATCH (ExtPict) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0020 ÷ 0001 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] (Other) ÷ [0.3] ÷ 0020 × 0308 ÷ 0001 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0020 ÷ 000D ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [3.2] (CR) ÷ [0.3] ÷ 0020 × 0308 ÷ 000D ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0020 ÷ 000A ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [3.2] (LF) ÷ [0.3] ÷ 0020 × 0308 ÷ 000A ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0020 ÷ 000B ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0020 × 0308 ÷ 000B ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0020 ÷ 3031 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0020 × 0308 ÷ 3031 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0020 ÷ 0041 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0020 × 0308 ÷ 0041 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0020 ÷ 003A ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0020 × 0308 ÷ 003A ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0020 ÷ 002C ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0020 × 0308 ÷ 002C ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0020 ÷ 002E ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0020 × 0308 ÷ 002E ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0020 ÷ 0030 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0020 × 0308 ÷ 0030 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0020 ÷ 005F ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0020 × 0308 ÷ 005F ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0020 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0020 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0020 ÷ 05D0 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0020 × 0308 ÷ 05D0 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0020 ÷ 0022 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0020 × 0308 ÷ 0022 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0020 ÷ 0027 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0020 × 0308 ÷ 0027 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0020 × 0020 ÷ # ÷ [0.2] SPACE (WSegSpace) × [3.4] SPACE (WSegSpace) ÷ [0.3] ÷ 0020 × 0308 ÷ 0020 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0020 × 00AD ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0020 × 0308 × 00AD ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0020 × 0308 × 0300 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0020 × 200D ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0020 × 0308 × 200D ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0020 ÷ 0061 × 2060 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0020 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0020 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0020 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0020 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0020 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0020 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0020 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0020 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0020 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0020 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0020 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0020 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0020 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0020 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0020 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0020 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0020 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 00AD ÷ 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 00AD × 0308 ÷ 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 00AD ÷ 000D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 00AD × 0308 ÷ 000D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 00AD ÷ 000A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 00AD × 0308 ÷ 000A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 00AD ÷ 000B ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 00AD × 0308 ÷ 000B ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 00AD ÷ 3031 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 00AD × 0308 ÷ 3031 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 00AD ÷ 0041 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 00AD × 0308 ÷ 0041 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 00AD ÷ 003A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 00AD × 0308 ÷ 003A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 00AD ÷ 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 00AD × 0308 ÷ 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 00AD ÷ 002E ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 00AD × 0308 ÷ 002E ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 00AD ÷ 0030 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 00AD × 0308 ÷ 0030 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 00AD ÷ 005F ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 00AD × 0308 ÷ 005F ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 00AD ÷ 1F1E6 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 00AD × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 00AD ÷ 05D0 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 00AD × 0308 ÷ 05D0 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 00AD ÷ 0022 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 00AD × 0308 ÷ 0022 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 00AD ÷ 0027 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 00AD × 0308 ÷ 0027 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 00AD ÷ 231A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 00AD × 0308 ÷ 231A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 00AD ÷ 0020 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 00AD × 0308 ÷ 0020 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 00AD × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 00AD × 0308 × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 00AD × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 00AD × 0308 × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 00AD × 200D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 00AD × 0308 × 200D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 00AD ÷ 0061 × 2060 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 00AD × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 00AD ÷ 0061 ÷ 003A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 00AD × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 00AD ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 00AD × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 00AD ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 00AD × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 00AD ÷ 0061 ÷ 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 00AD × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 00AD ÷ 0031 ÷ 003A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 00AD × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 00AD ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 00AD × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 00AD ÷ 0031 ÷ 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 00AD × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 00AD ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 00AD × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0300 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0300 × 0308 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0300 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0300 × 0308 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0300 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0300 × 0308 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0300 ÷ 000B ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0300 × 0308 ÷ 000B ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0300 ÷ 3031 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0300 × 0308 ÷ 3031 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0300 ÷ 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0300 × 0308 ÷ 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0300 ÷ 003A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0300 × 0308 ÷ 003A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0300 ÷ 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0300 × 0308 ÷ 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0300 ÷ 002E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0300 × 0308 ÷ 002E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0300 ÷ 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0300 × 0308 ÷ 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0300 ÷ 005F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0300 × 0308 ÷ 005F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0300 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0300 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0300 ÷ 05D0 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0300 × 0308 ÷ 05D0 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0300 ÷ 0022 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0300 × 0308 ÷ 0022 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0300 ÷ 0027 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0300 × 0308 ÷ 0027 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0300 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0300 × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0300 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0300 × 0308 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0300 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0300 × 0308 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0300 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0300 × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0300 ÷ 0061 × 2060 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0300 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0300 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0300 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0300 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0300 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0300 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0300 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0300 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0300 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0300 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0300 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0300 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0300 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0300 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0300 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0300 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0300 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 200D ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 200D × 0308 ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 200D ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 200D × 0308 ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 200D ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 200D × 0308 ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 200D ÷ 000B ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 200D × 0308 ÷ 000B ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 200D ÷ 3031 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 200D × 0308 ÷ 3031 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 200D ÷ 0041 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 200D × 0308 ÷ 0041 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 200D ÷ 003A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 200D × 0308 ÷ 003A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 200D ÷ 002C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 200D × 0308 ÷ 002C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 200D ÷ 002E ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 200D × 0308 ÷ 002E ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 200D ÷ 0030 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 200D × 0308 ÷ 0030 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 200D ÷ 005F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 200D × 0308 ÷ 005F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 200D ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 200D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 200D ÷ 05D0 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 200D × 0308 ÷ 05D0 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 200D ÷ 0022 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 200D × 0308 ÷ 0022 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 200D ÷ 0027 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 200D × 0308 ÷ 0027 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 200D × 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] WATCH (ExtPict) ÷ [0.3] ÷ 200D × 0308 ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 200D ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 200D × 0308 ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 200D × 00AD ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 200D × 0308 × 00AD ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 200D × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 200D × 0308 × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 200D × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 200D × 0308 × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 200D ÷ 0061 × 2060 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 200D × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 200D ÷ 0061 ÷ 003A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 200D × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 200D ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 200D × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 200D ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 200D × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 200D ÷ 0061 ÷ 002C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 200D × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 200D ÷ 0031 ÷ 003A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 200D × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 200D ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 200D × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 200D ÷ 0031 ÷ 002C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 200D × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 200D ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 200D × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 2060 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 × 2060 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 × 2060 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 × 2060 ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 × 2060 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 × 2060 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 2060 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 2060 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 × 2060 ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 × 2060 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 × 2060 × 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 × 2060 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 × 2060 × 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 × 2060 ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 × 2060 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 2060 ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 × 2060 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 × 2060 × 0308 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 × 2060 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 × 2060 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 × 2060 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 × 2060 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 2060 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 2060 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 2060 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 2060 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 × 2060 × 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 2060 × 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 2060 × 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 × 2060 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 2060 × 0308 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 × 003A × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 003A × 0308 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 × 003A × 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 × 003A × 0308 × 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 ÷ 003A × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 ÷ 003A × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 ÷ 003A × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 × 003A × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 003A × 0308 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 003A × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 003A × 0308 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 003A × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 003A × 0308 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 003A × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 003A × 0308 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 003A × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 × 003A × 0308 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 003A × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 × 0027 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 0027 × 0308 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 × 0027 × 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 × 0027 × 0308 × 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 ÷ 0027 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 × 0027 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 0027 × 0308 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 0027 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 0027 × 0308 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 0027 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 0027 × 0308 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 0027 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 0027 × 0308 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 0027 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 × 0027 × 0308 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0308 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0308 × 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0308 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0308 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0308 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0308 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 × 0027 × 2060 × 0308 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 000B ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 05D0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 231A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0061 ÷ 002C × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0061 ÷ 002C × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0061 ÷ 002C × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 002C × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] (Other) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [3.2] (CR) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [3.2] (LF) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 000B ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 000B ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 002E ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 002E ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 05D0 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 05D0 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0022 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0022 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 231A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 231A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0031 ÷ 003A × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0031 ÷ 003A × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0031 ÷ 003A × 200D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 × 200D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 003A × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] (Other) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [3.2] (CR) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [3.2] (LF) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 000B ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 000B ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 002E ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 002E ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0031 × 0027 × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0031 × 0027 × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 05D0 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 05D0 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0022 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0022 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 231A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 231A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0031 ÷ 0027 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0031 ÷ 0027 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0031 ÷ 0027 × 200D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 × 200D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 0027 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 0027 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 × 0027 × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 × 0027 × 0308 × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 × 0027 × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 × 0027 × 0308 × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 × 0027 × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 × 0027 × 0308 × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 × 0027 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 × 0027 × 0308 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] (Other) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [3.2] (CR) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [3.2] (LF) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 000B ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 000B ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 002E ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 002E ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0031 × 002C × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0031 × 002C × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 05D0 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 05D0 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0022 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0022 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 231A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 231A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0031 ÷ 002C × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002C × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0031 ÷ 002C × 200D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 × 200D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 002C × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 × 002C × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 × 002C × 0308 × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 × 002C × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 × 002C × 0308 × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 × 002C × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 × 002C × 0308 × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 × 002C × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 × 002C × 0308 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] (Other) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (CR) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (LF) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 000B ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 000B ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] (Newline) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 002E ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 002E ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 05D0 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 05D0 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0022 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0022 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 231A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 231A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 200D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 × 200D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0308 × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0308 × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0308 × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0031 × 002E × 2060 × 0308 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 000D × 000A ÷ 0061 ÷ 000A ÷ 0308 ÷ # ÷ [0.2] (CR) × [3.0] (LF) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [3.2] (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [0.3] ÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3] ÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] ARABIC LETTER NOON (ALetter) ÷ [0.3] ÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (ALetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0041 × 0041 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0041 × 003A × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0041 ÷ 003A ÷ 003A ÷ 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 05D0 × 0027 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [7.1] APOSTROPHE (Single_Quote) ÷ [0.3] ÷ 05D0 × 0022 × 05D0 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [7.2] QUOTATION MARK (Double_Quote) × [7.3] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 0041 × 0030 × 0030 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ZERO (Numeric) × [8.0] DIGIT ZERO (Numeric) × [10.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 0030 × 002C × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 0030 ÷ 002C ÷ 002C ÷ 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3] ÷ 3031 × 3031 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3] ÷ 0041 × 005F × 0030 × 005F × 3031 × 005F ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ZERO (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3] ÷ 0041 × 005F × 005F × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3] ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [15.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3] ÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [16.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3] ÷ 0061 ÷ 1F1E6 × 1F1E7 × 200D ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [16.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3] ÷ 0061 ÷ 1F1E6 × 200D × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [16.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3] ÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 × 1F1E9 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [16.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) × [16.0] REGIONAL INDICATOR SYMBOL LETTER D (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3] ÷ 1F476 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] BABY (ExtPict) × [4.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE) ÷ [999.0] BABY (ExtPict) ÷ [0.3] ÷ 1F6D1 × 200D × 1F6D1 ÷ # ÷ [0.2] OCTAGONAL SIGN (ExtPict) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] OCTAGONAL SIGN (ExtPict) ÷ [0.3] ÷ 0061 × 200D × 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] OCTAGONAL SIGN (ExtPict) ÷ [0.3] ÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] UPPER BLADE SCISSORS (Other) ÷ [0.3] ÷ 0061 × 200D × 2701 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] UPPER BLADE SCISSORS (Other) ÷ [0.3] ÷ 1F476 × 1F3FF × 0308 × 200D × 1F476 × 1F3FF ÷ # ÷ [0.2] BABY (ExtPict) × [4.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BABY (ExtPict) × [4.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE) ÷ [0.3] ÷ 1F6D1 × 1F3FF ÷ # ÷ [0.2] OCTAGONAL SIGN (ExtPict) × [4.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE) ÷ [0.3] ÷ 200D × 1F6D1 × 1F3FF ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] OCTAGONAL SIGN (ExtPict) × [4.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_FE) ÷ [0.3] ÷ 200D × 1F6D1 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] OCTAGONAL SIGN (ExtPict) ÷ [0.3] ÷ 200D × 1F6D1 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] OCTAGONAL SIGN (ExtPict) ÷ [0.3] ÷ 1F6D1 ÷ 1F6D1 ÷ # ÷ [0.2] OCTAGONAL SIGN (ExtPict) ÷ [999.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] ÷ 0061 × 0308 × 200D × 0308 × 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3] ÷ 0061 ÷ 0020 × 0020 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] SPACE (WSegSpace) × [3.4] SPACE (WSegSpace) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0031 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0031 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] ÷ 0061 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] ÷ 0061 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] # # Lines: 1823 # # EOF bstr-1.7.0/src/unicode/fsm/grapheme_break_fwd.bigendian.dfa000064400000000000000000000536241046102023000220060ustar 00000000000000rust-regex-automata-dfa-sparse"  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGGHIIIIIIIIIJKLLLLMNNNOPQRSTUVWXYZ[\]]]]]]^_`abcdeefghhhhhhhhhhhTF@%6@% @%DFF@%@% @%@%@%!@%&77@%@%#&+./14@%@%@%@%7F@%@%@%-7@%2:DD@%@%!''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFF8?8`8o8~88899S9t9S99::4:O:|:::;<;o;;;;<<<8>5B5o5555566D6Y6n66777%7R7s778"U ::<<>>OdsH 1@ !!""''))**++,,--..//00112266iZ~Sh33??EE6EZ ""##$$%%&&LgLMMNN&OOFO''Hh0055@%@%FA6A ADFFAA AAA!A&77AA#&+./14AAAA7FAAA-7A2:DDAA!''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFF2E2f2u222222323D23k333324 *,474^4m444445553 ##$$%%&&''))++//0011223344556677::>>00000111(1=1R1g1|1*1111222#  !!""##$$%%++3344::<<>>.....//'/6/Q/f/{"U/"U//0080G0\0q0# .v.. !!""''))**++,,--..//00112266-M->-b-q------. .%.F.a33??EE--)-> ""##$$%%&&#$%%%=%L%a%%''# ::<<>>=.0q0# =. ""##$$%%&&#$%%%=%L%a%=mIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh(?Vm '>UrCq'/0013556FA@%A@%A "$F>AA#$$%FA>AFA>A'())**+;<<=F#SS#S#  &''(F#P PNLX#S#  !!""##$$%%&*++,233445FPP#P#P#Q&#QMQh#Q#QQQ"UR%"UR@RS #SE#S`S#FP<#Pc#F#+,,-6778899::;;<<==>>??@@AABBCCDDEEFF#N;#IIJJ'I7I^IIIJJ'I7I^IIIA  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJA  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'!  !!""##$$%%&&I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^JZJABBCEFF#I#I" !""##$$%%&&'FC CHCHCHC!CFC&''(FC#CC ##$$%%&&''))++//0011223344556677::>>000LILX00111(1=1R1g1|1*1111222#&&L: ""##$$%%&&#$%%%=%L%a%L+ ##$$%%&&''))++//0011223344556677::>>000MNLX00111(1=1R1g1|1*1111222#%%&&MM ##$$%%&&''))++//0011223344556677::>>000P PP-00111(1=1R1g1|1*1111222# !!""''))**++,,--..//00112266778899::;;<<==>>??@@AABBCCDDEEFF-M->-b-q--O---. .%.F.aIIJJ'I7I^IIIJJ'I7I^III!  !!""##$$%%&&I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^OOhHHIPQQRSTTUUVXYYZZ[[\\]]^^__``aabbccddeeffgg@@@A@A#A#BB/#BJBwBCgCCDEG$CGHHY N i55@%36@%@% @%,,--.04459BF@%A@%A@%@% 14@%@%@% @%=BF@%@%3<<@%@% "&(6@%@%@%47F@%@% @%$%@%7;@%F@%AA@%++78@%A@%@% ?FA@%A@% 77:;FF@%@%@%@% 79:=>?@A@%AA@%A@% @% .2334;@%@%A@% ::A@% :<=EFF@%AA@%AA@%A@%35689:;;<<=>EEA@%A@%A@%@%@%&&')*1@%A@% BCEEFF@%A@%@%A  )*-37;@%AAA@%A@%@%<>?FA@% %%A@%A@%@% 7789:?@@AABCDDEEFF@%A@%A@%A@%A@% @%A@%66789>@%A@%A@%A@%$&),--.2@%@%A@%356>??@AA@%A@%778<>?BCDDEE@%AA@%A@% AA@%!"#&''++A@%@%A@%A:?@@BE@%@%A@% "@%@%A@% @%A@%667=?DEEFFA@%@%A@%.0017889:;;<=@%A@%A@%A@%8=AACDFF@%@%@%@% @%@%A@%A@%A@%:;<=@%A ;<=AEF@%AA@%A @%A@%DD@%''@%=A@% ?AFF@%@%@%@%@%,-@%+.@%23@%DF@% @% @%%%@%'6@%@%%&@%69;D@%@%78@% *+,-..33@%@%@%A@%A@%;FAA '8FFA@%@%@%-4@%@%A  ::;<=@ABCDEF@%A@%A@%A@%A,,A@%056789:;<=@%A@%A@% CC@%@%A@%779;>?EF@%@%@%@%223456<<==@%A@%AA@%*+,,-.//013344A@%A@%AA@%16@% !@%@%7@%68@%FF@%GHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh (?Vm '>UrCy*q&''(FC xCC F # # &'F@AF@67FA@ *++,,-.//00112;<<=BCCDF#=>#>*#>E>Z#>u#>#>#>#F# #899:F#=# F#=#  !"##$$%%&&''(())**++,,-2367EFF"U"d""""#3"U#H"U#]#r"U=."U#=C#=X???"U?@ "U#"U#]F@%5667FA@%A@%A2389DEFA@%A@%!"34FA@%A@%A@%,-F@%<}  !!"566789ABBCFA@%A@%A@%A@%A@%FA@%ABF@%ADEF@%A FA@% ####'FAFA6A //22;;AABBDDEE,l,{,,,,,,,- '  !!##''++,,..//00117799;;<<==BBCCDD)E)Z){))))))***,*G*z********+++(+C+X+s++++++,,-,<,])02233DDEEFF('())99(CCDD(( //0011(%(@([(j((  **,,''''''((  !"$$&&''(())**++,,-27EFF"U&l&&&&&"U#H"U&'"U'"U'#'2'A'P'e"U'z'"U"U&66@%@%38EF@%@%!4F@%@%@%,@%!!669ACF@%@%@%@%@%F@%D@% F@%@%;F@%F@%@%!&@%@%5F@%@%ACF@%@% F@%@% "(*+-1AAAAAA7=A55A36AA A,049BFAAA 14AAA A=BFAA3<<AA "&(6AAA47FAA A$%A7;AFAAAA++78AAAA ?FAA 77:;FFAAAA 7AAA A .;AA ::AA :FAAAAA3>EEAAA&1A BCEFAAA )*-37;AAAAAAAA$&)2AA3AA7<>?BEAAA AA!'++AAA:@BEAAA"AA A6=?FAA.0=AA8=AACDFFAAAA AAAAA:=A ;AEFAAAA ADDA''A=AA ?AFFAAAAA,-A+.A23ADFA A A%%A'6AA%&A69;DAA78A *.33AAAAA '8FFAAA-4AA :FAA,,AA0=A CCAAA779;>?EFAAAA26<=AAA*134AA1677DDA@%@% !A @%@%CCA@%@%7A))@@@%@% 01@%@%!"//@%@%@%0:?A@%@%@%12==@%@%BE@%@% F@%@%@% F@%@%  $$((//:;@%@%@%@%@%@%@%@% *.@%@%@%@%@%@%@%((77FF@%@%@%@%;<@% "#@%@%@%@%68AFFA4>@EAA %'8;AAA $$AAAA$&A9;AA9:AA;FA$$AAAA 00AA'27BAA"A%'')),CFFAAAAAA ;FAA 2:AA (4AA-:A+>A/44;;>@AAAAA "*,.04AAAA "A&A(*FAA ACEFAAA)*AAA CCEFAAA )*EEAAAAAA 78<<AAAAAA )*AFAAAAA )*AAAAA EFAA AAAA CCEFAAA )*AAAAA )*::AAAAAA )*AAAAA A&9:AAAAA88:AAAA88:CAAA <<>>@@EFAAAAA8FA  CAAAA A47889>@ABCDE@%A@%@%A@% %'8;A@%@%@% $$@%A@%@%@%$&@%9:;;@%A@%A9:@%@%;<==>DEF@%A@%A $$A@%A@%@%@%@% 00@%@% ')*-./027899:?@B@%A@%AA@%A@% !""@%A@% %'')),349:CFFA@%A@%@%@%@%A@%@%7F@%@% ;ABBCCDF@%A@%A@%A 2:A@%A@%  ((),-./01124@%AA@%A@%A@% --../0134455689:@%A@%A@%A@%A+23:;<=>A@%A@% '(()/44;;>>?@@%@%A@%@%@%A@% "*,.04@%@%@%@% "@%&@%(*F@%@% AABBCCEF@%A@%A@%A)*A@%A@%A@%@% CCEEFF@%A@%@%A  )*EEA@%AA@%@%@%@% CCEF@%A@%A 78<<A@%@%@%@%@%@%  )*AFA@%@%AA@%@%@% CCEF@%A@%@% )*A@%AA@%@%@% EEFF@%@%A @%AAA@%@% CCEF@%A@%@%@% )*@%A@%@%@%@% CCEEFF@%A@%A@%  )*::A@%A@%AA@%@%@%A )*A@%AA@%@%@% @%A %&&9:@%@%A@%@%A@%A88::;A@%A@%@%88::;C@%A@%@% <<>>@@EF@%@%@%@%A8EFF@%A  C@%@%@%@% @%IJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh(?Vm '>UrCqF@%A:;FA@%FA@%==-FABFA16AA9:ABFA@A&'*+FA@ACDDEFA>AFA>A FA>AEFFA> FA>A@AABFA>A FA>A FA>A FA>AGHHIPQQRSTTUUVXYYZZ[[\\]]^^__``aabbccddeeffgghh  ( ( & I( l d  W FA@%A !&'FA@%A@%A45FA@%A@%ABBCFA@%A@% F@%A@%IJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh#:Qh"9Pm>7=@%hh*IJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh(?Vm '>UrCq&'/001344556F@A@%A@@%A "##$F>A@A#$$%FA>AFA>A'())**+;<<=F#SS#S#  &''(F#P PNLX#T#  !!""##$$%%&*++,233445FTDT#P#P#Q&#QMQh#Q#QQQ"UR%"UR@RS #SE#S`S#FP<#Pc#F#+,,-6778899::;;<<==>>??@@AABBCCDDEEFF#N;#IIJJ'I7I^IIIJJ'I7I^IIIA  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJA  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'!  !!""##$$%%&&I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^IIIJJ'I7I^JZJABBCEFF#T#T) !""##$$%%&&'FC C!MC!hC!C!CFC H"U"UL'F@%F###899:F#H# F#H#9BFAA&+FAAEA6CFAA :;;??@FJK_JK_JK_6778FK_JK_JK_.//0FK_JK_JK_ &''(BCCDFK_JK_JK_JK_*+67FK_JK_AJ BCFJAK_AIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_`aabbccddeeffgh(?Vm '>Ur#qIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_`aabbccddeeffgh(?Vm '>Ur$q6@%=BK_/FK_FK_ //22;;AABBDDEE ''  !!##''++,,..//00117799;;<<==BBCCDDZ{5V(O-`8Yt1Fm7FJ BJK_E2233DDEEFF@0'FJ./FJK_99CCDD&'CDFANVA IJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgh(?Vm '>Ur d Yq //0011(Up  **,,OT@ OBF@% "(*+-1@%@%@%@%@%*7FK_JK_J J'CANVFNV&'FNVJ.J6778CDDEFA@%A@%A !FA@%A@%A.6BCCDFAAAA@%A&7FA@%AA())*?@@AFA@%A@%A !/012FA@%A@%A !"#.//0FA@%A@%AFA@%A/0:;>?ABFA@%A@%A@%A FA@%A0123<==>FA@%A@%AABEFF@%A@%A F@%A@%A@% F@%A@% #$$%'(().//09:;A())*FA>AFA>AEFFA@67BCFA@A ./56BCCDFA@A@A@A@%A&'67FA@%A@AFA@A@%%AAAAAA* *bstr-1.7.0/src/unicode/fsm/grapheme_break_fwd.littleendian.dfa000064400000000000000000000536241046102023000225420ustar 00000000000000rust-regex-automata-dfa-sparse"  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGGHIIIIIIIIIJKLLLLMNNNOPQRSTUVWXYZ[\]]]]]]^_`abcdeefghhhhhhhhhhhTF%@6%@ %@DFF%@%@ %@%@%@!%@&77%@%@#&+./14%@%@%@%@7F%@%@%@-7%@2:DD%@%@!''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFF?8`8o8~88889S9t9S999:4:O:|::::<;o;;;;;<<8<M<n< ##$$%%&&''))++//0011223344556677::>>B5o5555556D6Y6n66677%7R7s7778U" ::<<>>OdsH 1@ !!""''))**++,,--..//00112266iZ~Sh33??EE6EZ ""##$$%%&&gLLMMN&NOFOO''hH0055%@%@FA6A ADFFAA AAA!A&77AA#&+./14AAAA7FAAA-7A2:DDAA!''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFE2f2u222222232D32k333332 4,*74^4m4444445535 ##$$%%&&''))++//0011223344556677::>>0000011(1=1R1g1|11*1111222#  !!""##$$%%++3344::<<>>...../'/6/Q/f/{/U"/U"//080G0\0q00# v... !!""''))**++,,--..//00112266M->-b-q------- .%.F.a.33??EE-)->- ""##$$%%&&#$%%=%L%a%%%''# ::<<>>=.q00# =. ""##$$%%&&#$%%=%L%a%%m=IJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh(?Vm '>UrCq'/0013556FA%@A%@A "$F>AA#$$%FA>AFA>A'())**+;<<=F#SS#S#  &''(F# PPNXL#S#  !!""##$$%%&*++,233445FPP#P#P#&Q#MQhQ#Q#QQQU"%RU"@RR S#ES#`SS#F>??@@AABBCCDDEEFF#;N#IIJ'J7I^IIIIJ'J7I^IIIIA  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJA  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFF'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J!  !!""##$$%%&&7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IZJJABBCEFF#I#"I !""##$$%%&&'FC CHCHCHC!CFC&''(FC#CC ##$$%%&&''))++//0011223344556677::>>000ILXL0011(1=1R1g1|11*1111222#&&:L ""##$$%%&&#$%%=%L%a%%+L ##$$%%&&''))++//0011223344556677::>>000MNXL0011(1=1R1g1|11*1111222#%%&&MM ##$$%%&&''))++//0011223344556677::>>000 PP-P0011(1=1R1g1|11*1111222# !!""''))**++,,--..//00112266778899::;;<<==>>??@@AABBCCDDEEFFM->-b-q---O--- .%.F.a.IIJ'J7I^IIIIJ'J7I^IIII!  !!""##$$%%&&7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IOOhHHIPQQRSTTUUVXYYZZ[[\\]]^^__``aabbccddeeffgg@@@A@A#A#B/B#JBwBBgCCCDE$GCGHYHN i 55%@36%@%@ %@,,--.04459BF%@A%@A%@%@ 14%@%@%@ %@=BF%@%@3<<%@%@ "&(6%@%@%@47F%@%@ %@$%%@7;%@F%@AA%@++78%@A%@%@ ?FA%@A%@ 77:;FF%@%@%@%@ 79:=>?@A%@AA%@A%@ %@ .2334;%@%@A%@ ::A%@ :<=EFF%@AA%@AA%@A%@35689:;;<<=>EEA%@A%@A%@%@%@&&')*1%@A%@ BCEEFF%@A%@%@A  )*-37;%@AAA%@A%@%@<>?FA%@ %%A%@A%@%@ 7789:?@@AABCDDEEFF%@A%@A%@A%@A%@ %@A%@66789>%@A%@A%@A%@$&),--.2%@%@A%@356>??@AA%@A%@778<>?BCDDEE%@AA%@A%@ AA%@!"#&''++A%@%@A%@A:?@@BE%@%@A%@ "%@%@A%@ %@A%@667=?DEEFFA%@%@A%@.0017889:;;<=%@A%@A%@A%@8=AACDFF%@%@%@%@ %@%@A%@A%@A%@:;<=%@A ;<=AEF%@AA%@A %@A%@DD%@''%@=A%@ ?AFF%@%@%@%@%@,-%@+.%@23%@DF%@ %@ %@%%%@'6%@%@%&%@69;D%@%@78%@ *+,-..33%@%@%@A%@A%@;FAA '8FFA%@%@%@-4%@%@A  ::;<=@ABCDEF%@A%@A%@A%@A,,A%@056789:;<=%@A%@A%@ CC%@%@A%@779;>?EF%@%@%@%@223456<<==%@A%@AA%@*+,,-.//013344A%@A%@AA%@16%@ !%@%@7%@68%@FF%@GHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh (?Vm '>UrCy*q&''(FCx CC F # # &'F@AF@67FA@ *++,,-.//00112;<<=BCCDF#=>#*>#E>Z>#u>#>#>#>#F# #899:F#=# F#=#  !"##$$%%&&''(())**++,,-2367EFFU"d"""""3#U"H#U"]#r#U".=U"#C=#X=???U"? @U"#U"]#F%@5667FA%@A%@A2389DEFA%@A%@!"34FA%@A%@A%@,-F%@}<  !!"566789ABBCFA%@A%@A%@A%@A%@FA%@ABF%@ADEF%@A FA%@ ####'FAFA6A //22;;AABBDDEEl,{,,,,,,,, -'  !!##''++,,..//00117799;;<<==BBCCDDE)Z){)))))))**,*G*z*********++(+C+X+s+++++++,-,<,],0)2233DDEEFF('())99(CCDD(( //0011%(@([(j(((  **,,''''''((  !"$$&&''(())**++,,-27EFFU"l&&&&&&U"H#U"&'U"'U"#'2'A'P'e'U"z''U"U"&66%@%@38EF%@%@!4F%@%@%@,%@!!669ACF%@%@%@%@%@F%@D%@ F%@%@;F%@F%@%@!&%@%@5F%@%@ACF%@%@ F%@%@ "(*+-1AAAAAA7=A55A36AA A,049BFAAA 14AAA A=BFAA3<<AA "&(6AAA47FAA A$%A7;AFAAAA++78AAAA ?FAA 77:;FFAAAA 7AAA A .;AA ::AA :FAAAAA3>EEAAA&1A BCEFAAA )*-37;AAAAAAAA$&)2AA3AA7<>?BEAAA AA!'++AAA:@BEAAA"AA A6=?FAA.0=AA8=AACDFFAAAA AAAAA:=A ;AEFAAAA ADDA''A=AA ?AFFAAAAA,-A+.A23ADFA A A%%A'6AA%&A69;DAA78A *.33AAAAA '8FFAAA-4AA :FAA,,AA0=A CCAAA779;>?EFAAAA26<=AAA*134AA1677DDA%@%@ !A %@%@CCA%@%@7A))@@%@%@ 01%@%@!"//%@%@%@0:?A%@%@%@12==%@%@BE%@%@ F%@%@%@ F%@%@  $$((//:;%@%@%@%@%@%@%@%@ *.%@%@%@%@%@%@%@((77FF%@%@%@%@;<%@ "#%@%@%@%@68AFFA4>@EAA %'8;AAA $$AAAA$&A9;AA9:AA;FA$$AAAA 00AA'27BAA"A%'')),CFFAAAAAA ;FAA 2:AA (4AA-:A+>A/44;;>@AAAAA "*,.04AAAA "A&A(*FAA ACEFAAA)*AAA CCEFAAA )*EEAAAAAA 78<<AAAAAA )*AFAAAAA )*AAAAA EFAA AAAA CCEFAAA )*AAAAA )*::AAAAAA )*AAAAA A&9:AAAAA88:AAAA88:CAAA <<>>@@EFAAAAA8FA  CAAAA A47889>@ABCDE%@A%@%@A%@ %'8;A%@%@%@ $$%@A%@%@%@$&%@9:;;%@A%@A9:%@%@;<==>DEF%@A%@A $$A%@A%@%@%@%@ 00%@%@ ')*-./027899:?@B%@A%@AA%@A%@ !""%@A%@ %'')),349:CFFA%@A%@%@%@%@A%@%@7F%@%@ ;ABBCCDF%@A%@A%@A 2:A%@A%@  ((),-./01124%@AA%@A%@A%@ --../0134455689:%@A%@A%@A%@A+23:;<=>A%@A%@ '(()/44;;>>?@%@%@A%@%@%@A%@ "*,.04%@%@%@%@ "%@&%@(*F%@%@ AABBCCEF%@A%@A%@A)*A%@A%@A%@%@ CCEEFF%@A%@%@A  )*EEA%@AA%@%@%@%@ CCEF%@A%@A 78<<A%@%@%@%@%@%@  )*AFA%@%@AA%@%@%@ CCEF%@A%@%@ )*A%@AA%@%@%@ EEFF%@%@A %@AAA%@%@ CCEF%@A%@%@%@ )*%@A%@%@%@%@ CCEEFF%@A%@A%@  )*::A%@A%@AA%@%@%@A )*A%@AA%@%@%@ %@A %&&9:%@%@A%@%@A%@A88::;A%@A%@%@88::;C%@A%@%@ <<>>@@EF%@%@%@%@A8EFF%@A  C%@%@%@%@ %@IJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh(?Vm '>UrCqF%@A:;FA%@FA%@==-FABFA16AA9:ABFA@A&'*+FA@ACDDEFA>AFA>A FA>AEFFA> FA>A@AABFA>A FA>A FA>A FA>AGHHIPQQRSTTUUVXYYZZ[[\\]]^^__``aabbccddeeffgghh  ( (& I (l d  W FA%@A !&'FA%@A%@A45FA%@A%@ABBCFA%@A%@ F%@A%@IJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh#:Qh"9Pm>7=%@hh*IJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_bccddeeffgh(?Vm '>UrCq&'/001344556F@A%@A@%@A "##$F>A@A#$$%FA>AFA>A'())**+;<<=F#SS#S#  &''(F# PPNXL#T#  !!""##$$%%&*++,233445FDTT#P#P#&Q#MQhQ#Q#QQQU"%RU"@RR S#ES#`SS#F>??@@AABBCCDDEEFF#;N#IIJ'J7I^IIIIJ'J7I^IIIIA  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJA  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFF'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J!  !!""##$$%%&&7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IIIIJ'J7I^IZJJABBCEFF#T#)T !""##$$%%&&'FC CM!Ch!C!C!CFC HU"U"L'F%@F###899:F#H# F#H#9BFAA&+FAAEA6CFAA :;;??@FJ_KJ_KJ_K6778F_KJ_KJ_K.//0F_KJ_KJ_K &''(BCCDF_KJ_KJ_KJ_K*+67F_KJ_KAJ BCFJA_KAIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_`aabbccddeeffgh(?Vm '>Ur#qIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^_`aabbccddeeffgh(?Vm '>Ur$q6%@=B_K/F_KF_K //22;;AABBDDEE ''  !!##''++,,..//00117799;;<<==BBCCDDZ{5V(O-`8Yt1Fm7FJ BJ_KE2233DDEEFF@0'FJ./FJ_K99CCDD&'CDFAVNA IJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgh(?Vm '>Urd Yq //0011(Up  **,,OT@ OBF%@ "(*+-1%@%@%@%@%@*7F_KJ_KJ J'CAVNFVN&'FVNJ.J6778CDDEFA%@A%@A !FA%@A%@A.6BCCDFAAAA%@A&7FA%@AA())*?@@AFA%@A%@A !/012FA%@A%@A !"#.//0FA%@A%@AFA%@A/0:;>?ABFA%@A%@A%@A FA%@A0123<==>FA%@A%@AABEFF%@A%@A F%@A%@A%@ F%@A%@ #$$%'(().//09:;A())*FA>AFA>AEFFA@67BCFA@A ./56BCCDFA@A@A@A%@A&'67FA%@A@AFA@A%@%AAAAAA* *bstr-1.7.0/src/unicode/fsm/grapheme_break_fwd.rs000064400000000000000000000014071046102023000177510ustar 00000000000000// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // // regex-cli generate serialize sparse dfa --minimize --start-kind anchored --shrink --rustfmt --safe GRAPHEME_BREAK_FWD src/unicode/fsm/ // // regex-cli 0.0.1 is available on crates.io. use regex_automata::{dfa::sparse::DFA, util::lazy::Lazy}; pub static GRAPHEME_BREAK_FWD: Lazy> = Lazy::new(|| { #[cfg(target_endian = "big")] static BYTES: &'static [u8] = include_bytes!("grapheme_break_fwd.bigendian.dfa"); #[cfg(target_endian = "little")] static BYTES: &'static [u8] = include_bytes!("grapheme_break_fwd.littleendian.dfa"); let (dfa, _) = DFA::from_bytes(BYTES).expect("serialized DFA should be valid"); dfa }); bstr-1.7.0/src/unicode/fsm/grapheme_break_rev.bigendian.dfa000064400000000000000000002615651046102023000220270ustar 00000000000000rust-regex-automata-dfa-sparse  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGGHIIIIIIIIIJKLLLLMNNNOPQRSTUVWXYZ[\]]]]]]^_`abcdeefghhhhhhhhhhh` #$$%())*@AABCDDEEFFGhVVVVVWW5lWiWWWWWWX 9  !"##$%&&'())**++,,--..//001122334455667899:;<<==>>??@BCDEEFFIIJKLUVVWXDsd5nsE4tfEE$O G:B z"$ z 4A!=('+"Q'+"#G##G"#+]4#*o2#ǻǻ6 "##$%&&'())**++,,--..//0011223455667;<<==>>??@BCDEEFFIIJKLOPPQUVVWXDsd5nsE4016E$O G:B z"   DMA " "Q'+"#G"#G+]4#*o2#ǻǻǻ6 "##$%&&''()**++,,--..//00112235667;<<==>>??@BCCDDEEFFIIJKLOPPQUVVWXDsdD5nsE40CE$O:B G z"$  DMA ("Q"#G"#G+]4#'*C#ǻǻǻ3 "##$%&&')**++,,--..//00112234567;<<==>>??@BCCDDEEFFIIJKLLMMNUVVWX43sds70CE$O G z"$  DM0 ("Q G#G"#G+]4#*'C#ǻǻǻ6 "#$%%&&')**++,,--..//01223344567899::;;<<==>>??@BCDEEFFIIJKLLMMNOPPQUVVWX43sd;s70CE$O G z G>!= &4('+"Q G#G##G#"#+]4#'C#ǻǻǻǻ2 "##$%&&'())**++,,-.//00112233467;<<==>>??@BCDEEFFIIJKLLMMNOPPQUVVWX43sd;s5n%0E$O G'+ z G>!=C'4!=(< G#'j#+]4#'@#ǻǻǻǻ6  !!""#%&&''(())**++,,-.//001122334566778899::;;<<==>>??@BCCDDEEFFIIJKLLMMNUVVWX43sd;s5n%0$O:B G'+!= GB!=C'4!=!< G"##G##G##G#+]4#'Cro2#Gǻǻǻ;  !!""##$$%%&&')**++,,--..//00112233445566778899::;;<<==>>??@@ABCCDDEEFFIIJKLLMMNOPPQUVVWX$s%0>EB G!= GBR!= &$!=(<" G"##G##G#"#+]4#G#'%0o2#ǻǻǻǻ9  !!""##$%&&''(*++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFIIJKLLMMNUVVWX43$s%0>EB G!= GBR!= &A!=( G" G"##G##G##G#+]4#G##G'%0#ǻǻǻ*  !!""##$%&&''(*++,,-.//001122367=>>??@@AABBCCDDEFIIJKLLMMNUVVWX43Bs%tf>EB G!= GBR!=&4!=( G#+]4#G##G'%0#ǻǻǻ0  !!""##$%&&''()**++,,-.//0011223566778899::;;<<==>>??@@AABBCCDDEFIIJKLUVVWX43$s%tf>EB G!=  GBR!=&4&! G"##G##G##G'j:4#G##G'%0#ǻǻ5  !!""##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFIIJKLQRRSX?$s%tf>E?6C!=  G != 4A&( G" G"##G##G##G'j+]4#G##G'%0#ǻǻ5  !!""#$%%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFIIJKLQRRSXA2$s7tf>E?!!= != != @]A}&( G" G"##G##G##G'j+]4#G##G'%0#ǻǻ8  !!""##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFIIJKLQRRSXA2$;@s70>E?!!= != != @]A}&( G" G"##G##G##G'j+]4#G##G'%0#G#ǻǻ,  !!""#$%%&&''()**++,,-.//001122367<==>>??@@AABBCCDDEEFFIIJKLQRRSX?$@s6tf>E?@!= != !=@]4&! G#'j+]4#G##G'%0#G#ǻǻ,  !!""##$%&&''()**++,,-.//001122367=>>??@BCCDDEEFFIIJKLQRRSX?$43@s7tf>E?!!= != !=@]4&!= G#:4#'@o2#ǻǻ,  !"##$%&&')**++,,-./0112233445679::;<==>>?BCCDDEEFFIIJKLPQRSX43$2Ps70>EE? G>!= z!=4&!= G< G#+]#'j:#'%0o2#ǻǻ0  !"##$%&&')**++,,--..//0011223679::;<==>>?BCCDDEEFFIIJKLNOOPPQRSTUUVX43$2Ps60>EE? G>!= !=&4$&!= G#+]#'j:#'2o2#ǻǻǻǻ/  !"##$$%%&&')**++,,--..//001122367899::;=>>?BCCDDEEFFIIJKLNOOPPQRSX43$2Ps60>E./? G>!= !=&4&&!= G#'j+]#:#'2o2#ǻǻǻ.  !"##$$%%&&')**++,,--..//001122367899:<==>>?BCCDDEEFFIIJKLNOOPPQRSX43$2Ps60>E/.? G>!= !=&4&&!= G#'j#'j:#'2#G#ǻǻǻ0  !"##$$%%&&')**++,,--..//001122367899::;<==>>?BCCDDEEFFIIJKLNOOPPQRSX43$2Ps=0>E.E?a G>!= !=&4&&!= G#'j+]#'j:#'2#G#ǻǻǻ2  !"##$%&&')**++,,--..//001122334456778899::;<==>>?BCCDDEEFFIIJKLNOOPPQRSX43$2Ps=0>E/E( G>!= !=&4=&!= G? G##G'j:#'j+]#'2#G#ǻǻǻ4  !"##$$%%&&''()**++,,--..//001122334456778899::;<==>>?BCCDDEEFFIIJKLNOOPPQRSSTTUX43,82Ps=0EEE(" G>!= !=&4=&!= G" G##G'j:#'j:#'2#G#ǻǻǻǻ8  !"##$%&&''()**++,,--..//001122334455667899::;;<<==>>?BCCDDEEFFIIJKLNOOPPQRSSTTUX43,82Ps=0>EE(" G != !=$7=&!= G" G"#'j+]##G'j+]#'2#G#ǻǻǻǻ+  !"#%&&''(())**+.//001122367899::;=>>?BCCDDEFIIJKLNOOPPQRSSTTUX43,82Ps=0E(" G" !=7=&!= G#'j+]#:#>G2#ǻǻǻǻ,  !"#%&&')**+.//001122367899::;=>>?BCCDDEEFFIIJKLNOOPPQRSSTTUX,8=x2Ps=0>E(" !=7=&!= G#'j+]#:#>G2#G#ǻǻǻǻ-  !"#%&&''(())**+-..//0012367899::;=>>?BCCDDEEFFIIJKLNOOPPQRSSTTUX$=x2Ps60E( G " !=&7=!= G#'j+]#:#'2#G#ǻǻǻǻ0  !"#%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFIIJKLNOOPQRRSSTTUX43$2Ps70E(" " !=&7=4!=< G#'j+]#:#'2#G#ǻǻǻǻ/  !"#%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFIIJKLNOOPPRRSSTTUX43$2Ps70E("!=" !=&474!=< G#'j+]#:#'2#G#ǻǻǻǻ/  !"##$%&&''(())**+-..//001122367899::;=>>?BCCDDEEFFIIJKLNOOPQRRSX43$;2Ps70;E9y<"!=" !=&474!= G#>?BCCDDEEFFIIJKLNOOPQRRSX43,82Ps70;E1u16("!=" !=&474!=<  G#>?BCCDDEEFFIIJKLNOOPQRRSSTTUX43,82Ps70;E1u16("!=" !=&4!= G#'j+]#:#'2;#ǻǻǻǻ.  !"#%&&''()**++,,--..//0012367899::;=>>??@BCCDDEEFFHIJKLNOOPSTTUX9; 2Ps70;JE(" G !#!=&47!= G#:{+]#+4#'2#G#ǻǻǻ0  !"##$$%%&&''()**++,,-./1223455667899::;=>>??@BCCDDEEFFHIJKLNOOPSTTUX93j2Ps70EEE(" G !#!=4!= G'+ G#:{+]#+4#'2#G#ǻǻǻ8  !"##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@BCCDDEEFFHIJKLNOOPSTTUX$3j2P*70E16(" G z!#G!= 474  G"'+ G##G:{:##G#+4#'2#G#ǻǻǻ7  !"##$$%%&&''()**++,,--../12233445566778899::;;<<==>>??@BCCDDEEFFHIJKLNOOPSTTUX93j2Ps70E16E(: G !#G!= 4  G"'+:B##G:{:##G#+4#'2#G#ǻǻǻ3  !"##$$%%&&''()**++,,--../122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPSTTUX93j2Ps70E16E4r(:B G !#!=&4!= G'+:B+]#'j+]%0#+4#'2#G2ǻǻǻ4  !"##$$%%&&''()**++,,--..//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPX$3j2Ps%70E16E4r(: G !#!= z474*O G'+:B+]#'j+]%0#+4#'2#G#ǻǻ7  !"##$$%%&&''()**++,,-.//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPVWWXX93j2Ps%73E16E4r(: G (E#!=474*O G'+6C+]#'j+]%0#+4#'2#G#ǻǻǻ9  !"##$$%%&&''()**++,,-.//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXX93j2P5n%73E16E4r(: G (E#!=474!= G'+6C+]#'j+]%0#+4#'2#G#ǻǻǻǻ6  !"##$$%%&&')**++,,-.//0011223455667789::;=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXX83j2P5n%9@3E9y4r( G (E#!=474!= G'+6C+]#+]#+4#'2#G#ǻǻǻǻ9  !"##$$%%&&''(())**++,,-.//001122345566778899:=>>??@BCCDDEEFFHHIIJKLNOOPVWWXX83j2P5n%93E164r(" G'+ (E#!=074!= G'+6C+]#'j#+4#'2#G#x,ǻǻǻ;  !"##$$%%&&''()**++,,-.//001122345566778899:=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXX8&3j2P5n78q3E164r(" G (E#!=074!= G'+6C+]#'j#+4#'2#G#ǻǻǻǻ:  !!""##$$%%&&''()**++,,-.//0011223346778899:=>>??@@AABBCCDDEEFFHIJKLNOOPSTTUVWX63j2P5n77 3E164r(" G (E#!=074 z G'++]#'j#+4#%0#'2#G#ǻǻǻǻ<  !!""#$%%&&''()**++,,-.//001122334566778899:=>>??@@AABBCCDDEEFFHIJKLNOOPSTTUVWX63j2P5n67 3164343E4r(7Q G  z#!=074 z G'+6C+]#'j#+4#%0#'2#G#ǻǻǻǻ9  !!""#$%%&&''()**++,,-.//001122334566778899::;=>>??@BCCDDEEFFIIJKLNOOPSTTUVWX5)3j2P5nt53164343E4r(5 G  z#!=0!4 z G'+6C+]#'j+]#+4#'2#G#ǻǻǻǻ8  !!""#$%%&&''(())**++,,-.//00112233445566778899:=>>??@CDDEEFFHHIIJKLNOOPVWX5)3j2P5nt03164343E4r(* G!= !=#!=0!4 z G'+ G'++]#'j#+4#2#G#x,ǻǻǻ:  !!""#$%%&&''(())**++,,-.//00112233445566778899::;=>>??@CDDEEFFHIJKLNOOPVWX33j2P3t034343&P4r(* G!= !=#!=0!4 z G'+ G'+-^#'j##+4#2#G#ǻǻǻ?  !!""#$%%&&''(())**++,,-.//00112233445566778899::;=>>?BCCDDEEFFHIJJKNOOPQRRSTUUVVWX2sd2P.Qt016.&P1u2(* G!= +#!=0((E/&0.'+ G'+-^#'j##+#'2#G1ǻǻǻǻǻ@  !!""#$%%&&''(())**++,,-.//00112233445566778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVWXX,8.Qt016.&P1u/(* G!= +#!=0(!/&0.'+ G'+-^#'j#'j#+#G##G#'o2#G1ǻǻǻǻ=  !!""#$%%&&''(())**++,,-.//00112233445566778899::;;<=>>?BCCDDEEFFHIJJKNOOPTUUVWXX,8.Q%0.&P//(* G!= +#!=0!(E/&0.'+ G'+-^#'j#'j#0m#'o2#G)SǻǻǻǻC  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVWXX,8#.Q/ktf.E.//(* G!= +# z!=,!(E/&0.'+ G'+-^#'j#G'j#0m#G##G'j'o2#G)Sǻǻǻǻ?  !!""##$$%%&&''(())**++,,--..//0011223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX,8#.Q)tf.&P.$O(* G z -# z!=,!(E/&- G-^#'j+]'j#+#G##G'j*o2#G)Sǻǻǻ=  !!""##$$%%&&''(())**++,,--..//0011223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX,8$,w)tfL&P$O(* G z -# z!=,.! z- G-^#'j#'j#+#G##G'jno2#G)Sǻǻǻ>  !!""##$$%%&&''(())**++,,--..//01223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX,8$,w)tf)L&P$O(* G z !# z!=,! z- G-^#'j#'j#+#G##G'j*o2#G)Sǻǻǻ;  !!""##$$%%&&''(())**++,,--..//00112233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX,8$s)tf)L&P$O(* G z +# z!=&!(E!='+ G+]#+]#+#G##G#no2#G)Sǻǻǻ<  !"##$$%%&&''(())**++,,--..//00112233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVXsd$s)tf)L&P$O(* G z +# z!=+!(E!='+ G'j#+]#+#G##G#*o2#G)Sǻǻǻ;  !"##$$%%&&''(())**++,,--..//012233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX#$*)tf)L&P$O(* G z !# z!=+!!='+ G'j#+]#+#G##G#no2#G)Sǻǻǻ;  !"##$$%%&&''(())**++,,--..//01223346778:;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX#$s)tf)L&P$O(* G z (# z!=*O! '+ G'j#'j#+#G##G#*o2#G)Sǻǻǻ9  !"##$$%%&&'())**++,,--..//01223346778:;;<=>>?@AABBCCDDEEFFHIJJKNOOPTUUVX#$s%tfL&P$O( G z )# z!=&! '+ G'j##G#+##G#'o2#G)Sǻǻǻ;  !"##$$%%&&'())**++,,--..//0011223346778899::;;<=>>?@AABBCCDDEEFFHIJJKNOOPTUUVX'$s%tfL&P$O  G z $# !=$(E( "Q G"##G#"#+##G#'o2#G#ǻǻǻ6  !"##$$%%&&'())**++,,--..//0011223346778:;;<=>>?ABBCCDDEFHIJJKNOOPTUUVWXX%o$s%tf& L&P$O  G z &!= z!=&!=! '+ G'j#'j#+#%0'o2#ǻǻǻǻ=  !"##$$%%&&'())**++,,--..//00112233445566778899::;;<=>>?ABBCCDDEEFFHIJJKTUUVX#$sttfLE$O  G z $!=  $!="  "Q G" G"##G##G#+#%0no2#o}ǻǻ>  !"##$$%%&&'())**++,,--..//00112233445566778899::;;<<==>>?ABBCCDDEEFFHIJJKNOOPTUUVXsdsttfLE  G z  != !=!v!"  "Q G" G"##G#"##+#\no2#o}ǻǻǻ QQw ,,QQww CCQQwww QQww 11QQww 11<<www 11ww w ww <<ww UUw ))ww TTw ,,ww **,,www ,,//www ww w ++wwQQ,,QQwCCQQwwQQw11QQw11<<ww11w }w<<wUU))wTT**w//w w++w  !!&&''((..//556677<<==>>CCDDEEQQi|www &&,,QQw|w &&CCQQw|ww &&QQw|w ""##$$&&**++11228899::??@@AAFFQQwT~ww &&11QQw|w &&11<<w|ww 11w|w  %%&&''--..114455;;<<==BBCCDDiw|www w| !!""##))**0011778899>>??@@EEFFw*ww ww| <<w|w UUw| $$%%&&)),,--3344::;;<>??DDEEFFwww ##$$%%++,,223399::;;@@AABBw|ww  !!''((..//556677<<==>>CCDDEEi|www TTw| ""##$$**++,,11228899::??@@AAFFw|Twww ,,w|w **,,w|ww  &&'',,--..4455;;<<==BBCCDDi|www !!""##))**,,0011778899>>??@@EEFFwTwww ,,w|w $$%%&&,,--3344::;;<>??DDEEFF*wwww %%,,w|w ##$$%%++,,223399::;;@@AABBw|ww  !!%%''((,,..//556677<<==>>CCDDEEwwww %%,,//w|ww ""##$$%%**++,,11228899::??@@AAFFw|www %%ww| %%w| %%++w|w  %&&'67FQQ*9N*cx  %&&'+,,-67FQQ*9N*cxx  %&&'67BCCDFQQ*9*cx  %&&'67FQQ*9*cx  %&&'011267FQQ*9N*cxx  %&&'011267;<<=F*9N*cxx  %&011267F*9N*xx %&67F*9N*x %&&'67F*9N*x  %&&'67F**9N*x  %&&'67;<<=F*9N*x  %&&'67FUU*9N*x  %&&'())*67F*9N*xx  %&&'67FTT*9N*x %&&'67F*9N*x  %&&')**+67F*9N*xx  $%%&&'67F*9N*xx  $%%&&'67F*9N*xx  $%%&&'67F*9N*cx  $%%&&'.//067F*9N*cxx $%%&67F*9N*cx  $%%&67F**9N*cx  $%%&*++,67F*9N*cxx w!//!w w!++!whF  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFɛɪɛɛ^˽ Wϒa+0Y٠@Qbs:{0Yte"oh,I %   +xHkp|q"##$%&&''(FYYZ]^`bcooxoxoxooǻo %&&''(FYYZ]^`bcooxoxooǻo&''(FY]^`bcoooooegdfde #$$%&'())*@AABCDDEEFFGhT<TYT|TTTUU+UBU_U|UU+UU+UUUVUV6VSVj=  !"##$$%%&&'())**++,,--..//00112233445566778899::;;<=>>?ABBCCDDEEFFHIJJKTUUVX#$ssttfttstsu5unstsustvuvCvusFw wEwxy F?yIxy FyIzy z]wEzwEz{{S{{S{{{F|a|{Ljǻǻ>  !"##$$%%&&'())**++,,--..//00112233445566778899::;;<<==>>?ABBCCDDEEFFHIJJKNOOPTUUVXsdssttftstsu5unstsustsuvCvusvw wEwxxy yIxyIyyzy z]wEzwEz{{S{z{{{{||a|{Ljǻǻǻ %&&''(FZ^_abcooxox0oo %&&''(FZ^_abcooxEoo &''(FZZ[^_abcoo0ooo #$$%%&&''(FZZ[^_abcooxox0oYo %&&''(FZZ[^_abcooxox0oo %&&''(FZZ[^_abcooEoo %&&''(FZ^_abcooxoxEoo %&&''(FZ^_abcooxEoo %&&''(FZ^_abcooxoEoxEoo&''(FZ^_abcooEoo %&&''(FZZ[[\^_abcooxoxEox,o &''(FZZ[[\^_abcooEox,o %&&''(FZZ[[\^_abcooxEox,o &''(FZZ[[\^_`aabcooEoǻx,oY %&&''(FZ^_`acooxEoo&''(FY^_`bcooEoo %&&''(FY]^^_`bcooxEoǻoZZowdd^^oYYddefǻddefx, #$$%())*@AABCDDEEFFGhVVVVVWW5WLWiWWWWWWX  %&&''(FYYZ]^^_`bcooxEoǻǻo %&&''(FYYZ^_`bcooxEoǻo %&&''(FY^_`bcooxEoo #$$%%&&''(FYYZ^_`bcoxoxoxEoǻo %&&''(FYYZZ[^_`bcooxEoǻo %&&''(FYZ[]^^_`bcooxEoǻǻo &''(FYZ[^_`bcooEoǻo &''(FYYZ^_`bcooEoǻo %&&''(FYYZ]^`bcooxoxEoǻo %&&''(FY]^`bcooxEoo %&&''(FYYZ]^`bcooxEoǻo %&&''(FYZ[[\]^`bcooxEoǻo %&&''(FYYZ[\]^`bcooxEoǻo %&&''(FY]^`bbccoxoxEooɛ"##$%&&''(FYYZ]^`bcooxoxoxEoǻo %&&''(FYYZ]^`bcooxoxEoǻo[[}A  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFF~wj]DpQ2jW8tyrw$;L #4'DUZ.  !"##**++,,--../01122335566789:;;<<==>>??@BCDEEFFJKVV´e# ~gg}}- "##**++,,--..//0011223344557899::;;<<==>>??@BCCDDEEFFJKPPVVe# 1>ng}}}/ "##''**++,,--..//00112233445579::;;<<==>>??@BCCDDEEFFJKPPVV´egŽ êYng}}}& "##**,,--..//00112233447;<<==>>??@BCDEEFFJKMMVV´eŽ Ň'Yg}}}$ "#$**,,--..//012244778;<<==>>??@BCDEEFFJKMMPPVV´eŽ dx~Yg}}}}# "##))**,,-.//001122337;<<==>>??@BCDEEFFJKMMPPVV´eg dŇ~Y g}}}}(  !!""&&''))**,,-.//00112233778899::;=>>??@BCCDDEFJKMMVV´egêrŇ~g gŢ}}}(  !!""$$**,,-.//0011223377889;<<==>>??@@ABCCDDEEFFJKMMPPVV Qx8Y g}}}}&  !!""##(*,,-.//00112277889=>>??@@AABBCCDDEFJKMMVV´ QxYg}}}"  !!""##&&(*,,-.//0011227=>>??@@AABBCCDDEFJKMMVV´4e 6x~gg}}}$  !!""##&&()**,,-.//00112277889=>>??@@AABBCCDDEFJKVV´e 6x~gY}}%  !!""##&&''()**,,-.//00112277889=>>??@@AABBCCDDEFJKRR´e ~gg}}'  !!""#$&&''()**++,,-.//001122778899::;=>>??@@AABBCCDDEFJKRRe gLgg}}/  !!""##&&''()**++,,--..//0011224466778899::;;<<==>>??@@AABBCCDDEEFFJKRR´g g1LYg}}$  !!""#$&&')**++,,-.//0011227=>>??@@AABBCCDDEEFFJKRR´ L~gg}}&  !!""##&&''()**++,,-.//0011227=>>??@BCCDDEEFFJKRR´´e gL~Yĩ}}#  !"##&&**++,,-./011224479::;<==>>?BCCDDEEFFJKQR´  d~ ggĩ}}%  !"##&&**++,,-.//00112279::;<==>>?BCCDDEEFFJKOOQRUU´  d1~8ggĩ}}}}%  !"##$$&&**++,,-.//0011227899::;=>>?BCCDDEEFFJKOOQR´ d~xgYĩ}}}#  !"##$$&&**++,,-.//0011227899:=>>?BCCDDEEFFJKOOQR´ d~xY}}}&  !"##$$**++,,--..//0011227899::;=>>?BCCDDEEFFJKOOQR´4  d~xgY}}})  !"$%&&**++,,--..//00112244778899::;<==>>?BCCDDEEFFJKOOQR´4  d~xĔYg}}})  !"##%%&&''**++,,--..//00112244778899::;=>>?BCCDDEEFFJKOOQRTT´4  d~YY}}}}-  !"$%&&''**++,,--..//001244667899::;;<<==>>?BCCDDEEFFJKOOQRTT´4O  #~gg}}}}   !"&&''))**+./011227899::;=>>?BCCDFJKOOQRTT´4 #gg}}}}$  !"&&')**+.//0011227899::;=>>?BCCDDEEFFJKOOQRTT4O ~gg}}}}$  !"&&(())**+-..//00127899::;=>>?BCCDDEEFFJKOOQRTT ~gg}}}}'  !"&&''(())**+-..//001122337899::;=>>?BCCDDEEFFJKOORRTT´ #~ gg}}}}%  !"&&''(())**+.//001122337899::;=>>?BCCDDEEFFJKOORRTT´ ~#~ gg}}}}&  !"##&&''(())**+.//0011227899::;=>>?BCCDDEEFFJKOORR´gg Õg~#~gg}}})  !!""##&&''(())**+.//001122337899::;=>>?BCCDDEEFFJKOORR´g B~#~ggù}}}'  !!""##&&''(())**+./1227899::;=>>?BCCDDEEFFJKOORRTT´g B~gYù}}}}$  !"&&''**++,-..//00127899::;=>>??@BCCDDEEFFJKOOTTz 1g~#g}}}!  !"##%%&&''**++,./1227899:=>>??@BCCDDEEFFJKOOTTz  1g~}}}*  !"##&&''**++,,--..//0011224455778899::;;<<==>>??@BCCDDEEFFJKOOTT g~#~Y}}}+  !"##$$&&''**++,,--../1224455778899::;;<<==>>??@BCCDDEEFFJKOOTTz  1~Y}}}$  !"##$$&&**+./122557899::;;<=>>??@BCCDDEEFFJKOOTTz  1~g}}})  !"##$$&&''**+-..//00112255667899::;;<=>>??@BCCDDEEFFJKOO  1~#~êg}}(  !"$$&&''**++,.//001122667899::;;<=>>??@BCCDDEEFFJKOOWWz  1~#~g}}}+  !"##$$&&''**++,.//0011227899::;;<=>>??@BCCDDEEFFJKOOTTWWz  1|~#~g}}}})  !"##&&**++,.//001122556679::;=>>??@BCCDDEEFFJKOOTTWWz Õ1|~#~g}}}}+  !"##&&''))**++,.//001122567=>>??@BCCDDEEFFHHJKOOWWz 1'#~x,}}}-  !"##&&''**++,.//0011227899:=>>??@BCCDDEEFFJKOOTTWW>_ 1'#~}}}}/  !!""##&&''**++,.//001122457899:=>>??@@AABBCCDDEEFFJKOOTTWX 1'#~}}}}0  !"&&''**++,.//00112245778899:=>>??@@AABBCCDDEEFFJKOOTTWX´´ 1'#~g}}}}/  !!""&&''**++,.//0011224566778899::;=>>??@BCCDDEEFFJKOOTTWX“´´ 1'~gg}}}})  !"&&))**+.//00112244778899:=>>??@DEEFFHHJKOOWX“´´ 1'~gx,}}}.  !"&&''))**+.//0011224466778899::;=>>??@DEEFFJKOOWX“e´´1~~g}}}2  !!""%%&&''))**++,.//001122334466778899::;=>>?BCCDDEEFFJJOORRUUWX]eB 1~|m}}}}}.  !!""&&''))**+.//0011223344667789::;;<=>>??@@AABBCCDEFFJJOOUUXXB1'gm}}}}-  !!""#$&&''))**++,.//0011223344778899::;;<=>>?BCCDEFFJJOOUUXXg'|m}}}}4  !!""##$$&&''))**+,--..//0011223344778899::;;<=>>?ABBCCDEFFJJOOUUXXW xg|m}}}}2  !!""##$$%%&&''))**++,.//001122337789::;;<=>>??@@AABBCCDEFFJJOOUUW xg|Xg}}}/  !!""$$%%&&''))**++,.//00112233778899::;;<=>>??@@AABBCCDEFFJJOOUU"7gX}}}0  !"$$&&''))**+,--..//012233778899::;;<=>>??@@AABBCCDEFFJJOOUU"e7gXm}}}+  !!""$$%%&&''))**+,--..//00112233778=>>??@@AABBCCDEFFJJOOUUeg|g}}}-  !"$$%%&&))**+,--..//001122337789::;=>>??@@AABBCCDEFFJJOOUUeeg|g}}}.  !"$$%%&&''))**++,,--..//0122337789::;=>>??@@AABBCCDEFFJJOOUUWeggg}}}-  !"$$%%&&''))**++,.//012233778:;;<=>>??@@AABBCCDEFFJJOOUUWeYg}}}(  !"$$%%&&))**++,.//0122778:;;<=>>?@AABBCCDEFFJJOOUUee}xg}}}/  !"$$%%&&))**++,,--..//00112233778899::;;<=>>?@AABBCCDEFFJJOOUUe18|Yn}}}-  !"$$%%&&))**+,--..//001122778:;;<=>>?ABBCCDDEFJJOOUUXXexg}}}}+  !"$$&&))**++,,-.//0011223355778:;;<=>>?ABBCCDDEEJJUUWe x|}},  !"$$%%&&))**+.//00112233778899::;;<<==>>?ABBCCDEJJOOUUe  1Lg|}}}&&''*9H&&9''H$$&&''*9H&&''9H&&*&&*9&&[[*9x,[[x,&&[[9x,&&YY^^9}}$$&&**9&&ZZ9}&&ZZ^^9}}&&YY9}YY}&&YY*9}&&[[9}&&Z[9}&&*9##&&*9dd}ddx,ff}&&''ZZ*9H}$$&&**9&&''ZZ\\*9H}x,$$''*H*[[^^x,}ZZ}&&^^9}&&''[[*9Hx,$$&&YY**9}&&YZ9}YZ}ZZ*}*##&&**9''[[Hx,##&&YY**9}&&*9&&''ZZ9H}%%''*H$$&&^^**9}ZZ*}&&ZZ*9}$$&&YZ*9}##&&YY*9}%%''**H&&*9''*HZZ[[}x,*$$&&^^*9}&&[[^^9x,}&&''ZZ\\9H}x,$$&&*9&&''ZZ\\9H}}%%&&*9&&cc9}ZZ^^}}&&''\\9H}YY^^}}$$&&ZZ*9}%%&&''\\*9H}$$''[[*Hx,%%&&''*9H[[*x,^^}&&YYcc9}}cc}""&&**9$$&&ZZ**9}&&\\9}&&''[[9Hx,&&\\9x,%%&&YY*9}&&*9YY[[}x,&&YY*9}&&**9$$&&YY*9}%%&&[[*9}$$&&YY^^*9}}%%&&^^*9}%%&&YY^^*9}}%%YY*}$$&&**9##&&**9$$*&&YY*9}$$&&YY**9}%%&&**9$$''**H&&YZ^^9}}2  "##$$%&''(())**++,.//023346778:;;<>??@@AABBCCDDEEFFGhX!XY Y>YmZ&ZUZZZ[`[}\*\M\p\]L[`]o[`^[`^_v[`_`R`u`R``RaKab!abcccdcceceEff-fP&''(FY]^`bcooEooE  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGh#%tO B g&Kjjw !"#%&O'()+%,z-.0O124`5748:;c<>O?ASBDuEGmHJMKM'NOQDR %&&''(FY]^`bboxoxooohhm #$$%())*@AABCDDEEFFGhVVVVVWW5lWiWWWWWWX :  !"##$%&&'())**++,,--..//001122334455667899:;<<==>>??@BCDEEFFHHIIJKLUVVWX_sdts5nsE4tfusts`dstsusuvuvvCuFwEV)wxzF?wxxR]CyIITH@z]H@z{S{{Sz{KS{KX|{ɛǻǻ7 "##$%&&'())**++,,--..//0011223455667;<<==>>??@BCDEEFFHHIIJKLOPPQUVVWX_sdts5nsE40sPhstststsusvvCuFwEV)wxzy xy _}]Cy zz]H@z{Sz{SKS{KX|{ɛǻǻǻ7 "##$%&&''()**++,,--..//00112235667;<<==>>??@BCCDDEEFFHHIIJKLOPPQUVVWX_sd`t5nsE40s^ststsususvvCuFV)wEwxzF?xy _}]Cy ITz]z{Sz{SKS{HKX_,{ɛǻǻǻ4 "##$%&&')**++,,--..//00112234567;<<==>>??@BCCDDEEFFHHIIJKLLMMNUVVWXRQsdss70s^stststsusvvCuFwEwxzF?xy _}Py ITz]wE{Sz{SKS{KXH_,{ɛǻǻǻ7 "#$%%&&')**++,,--..//01223344567899::;;<<==>>??@BCDEEFFHHIIJKLLMMNOPPQUVVWXRQsdWvss70s^ststsusvvCuFwEwxwEZ:yIy GRITH@z]wE{S{{S{z{KS{H_,{ɛǻǻǻǻ3 "##$%&&'())**++,,-.//00112233467;<<==>>??@BCDEEFFHHIIJKLLMMNOPPQUVVWXRQsdWvss5n%0sustsusvvCuFwEH@wxwEZ:yI^WRyIITXwE{H{KS{H\{ɛǻǻǻǻ7  !!""#%&&''(())**++,,-.//001122334566778899::;;<<==>>??@BCCDDEEFFHHIIJKLLMMNUVVWXRQsdWvss5n%0sustsvsvuFV)wEH@yIwE^yI^WRyIyXwEz{{S{{S{{S{KS{H^|{Sɛǻǻǻ<  !!""##$$%%&&')**++,,--..//00112233445566778899::;;<<==>>??@@ABCCDDEEFFHHIIJKLLMMNOPPQUVVWXs$ss%0sustsZsvsvuvCu]wEyIwE]yIy GFyIITXzwEz{{S{{S{z{KS{S{HF|{ɛǻǻǻǻ:  !!""##$%&&''(*++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFHHIIJKLLMMNUVVWXRQ$ss%0sustvsZsvsvvCu]wEyIwE]yIy G]CyIITwEzwEz{{S{{S{{S{KS{S{{SHF{ɛǻǻǻ+  !!""##$%&&''(*++,,-.//001122367=>>??@@AABBCCDDEFHHIIJKLLMMNUVVWXRQBss%tfsZsvsvvCu]wEyIwE]yIGRyIITwE{KS{S{{SHF{ɛǻǻǻ1  !!""##$%&&''()**++,,-.//0011223566778899::;;<<==>>??@@AABBCCDDEFHHIIJKLUVVWXRQ$ss%tfsZsvsvvCu]wEyIy wE]yIGRGywEz{{S{{S{{SHVS{S{{SHF{ɛǻǻ6  !!""##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFHHIIJKLQRRSX[$ss%tfstsZsvsvvCu[BSyIy wExyIy R]CGITwEzwEz{{S{{S{{SHKS{S{{SHF{ɛǻǻ6  !!""#$%%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFHHIIJKLQRRSX\$ss7tfstsZsvsvvCu[ByyIy yIxyIy [\GITwEzwEz{{S{{S{{SHKS{S{{SHF{ɛǻǻ9  !!""##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFHHIIJKLQRRSX\$Wvs@s70stsZsvsvvCu[ByyIy yIxyIy [\GITwEzwEz{{S{{S{{SHKS{S{{SHF{S{ɛǻǻ-  !!""#$%%&&''()**++,,-.//001122367<==>>??@@AABBCCDDEEFFHHIIJKLQRRSX[$s@s6tfsZsvsvvCu[B\byIy yIxyI[RGywE{HKS{S{{SHF{S{ɛǻǻ-  !!""##$%&&''()**++,,-.//001122367=>>??@BCCDDEEFFHHIIJKLQRRSX[$RQs@s7tfsvsZsvsvvCu[ByyIy yIxyI[RGyIwE{VS{H\|{ɛǻǻ-  !"##$%&&')**++,,-./0112233445679::;<==>>?BCCDDEEFFHHIIJKLPQRSXRQ$sQ=s70usZsvvCvvCu[BwEZ:yIwxyIRGyIwEXwE{K{HV{HF|{ɛǻǻ1  !"##$%&&')**++,,--..//0011223679::;<==>>?BCCDDEEFFHHIIJKLNOOPPQRSTUUVXRQ$sQ=s60usZsvvCvvCu[BwEZ:yIxyIGRFGyIwE{K{HV{HQ|{ɛǻǻǻǻ0  !"##$$%%&&')**++,,--..//001122367899::;=>>?BCCDDEEFFHHIIJKLNOOPPQRSXRQ$sQ=s60usZsvvCvNXO-u[BwEZ:yIxyIGRGGyIwE{HK{V{HQ|{ɛǻǻǻ/  !"##$$%%&&')**++,,--..//001122367899:<==>>?BCCDDEEFFHHIIJKLNOOPPQRSXRQ$sQ=s60usZsvCvO-NXu[BwEZ:yIxyIGRGGyIwE{H{HV{HQ{S{ɛǻǻǻ1  !"##$$%%&&')**++,,--..//001122367899::;<==>>?BCCDDEEFFHHIIJKLNOOPPQRSXRQ$sQ=s=0usZsvvCvNXvCu[ wEZ:yIy yIGRGGyIwE{HK{HV{HQ{S{ɛǻǻǻ3  !"##$%&&')**++,,--..//001122334456778899::;<==>>?BCCDDEEFFHHIIJKLNOOPPQRSXRQ$sQ=s=0usZsvvCvO-vCIwEZ:yIy yIGRYGyIwEZwE{{SHV{HK{HQ{S{ɛǻǻǻ5  !"##$$%%&&''()**++,,--..//001122334456778899::;<==>>?BCCDDEEFFHHIIJKLNOOPPQRSSTTUXRQ,8sQ=s=0usvvCvvCuvCIzwEZ:yIy yIGRYGyIwEzwE{{SHV{HV{HQ{S{ɛǻǻǻǻ9  !"##$%&&''()**++,,--..//001122334455667899::;;<<==>>?BCCDDEEFFHHIIJKLNOOPPQRSSTTUXRQ,8sQ=s=0usYstsvvCvuvCIzwEy yIy yIF?TYGyIwEzwEz{HK{{SHK{HQ{S{ɛǻǻǻǻ,  !"#%&&''(())**+.//001122367899::;=>>?BCCDDEFHHIIJKLNOOPPQRSSTTUXRQ,8sQ=s=0usvvCvuIzwEzy yITYGyIwE{HK{V{YQ{ɛǻǻǻǻ-  !"#%&&')**+.//001122367899::;=>>?BCCDDEEFFHHIIJKLNOOPPQRSSTTUXs,8YeQ=s=0usYsvvCvuIzy yITYGyIwE{HK{V{YQ{S{ɛǻǻǻǻ.  !"#%&&''(())**+-..//0012367899::;=>>?BCCDDEEFFHHIIJKLNOOPPQRSSTTUXs$YeQ=s60svsvvCvuIwEy zy yIGTYyIwE{HK{V{HQ{S{ɛǻǻǻǻ1  !"#%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFHHIIJKLNOOPQRRSSTTUXRQ$sQ=s70usvsvvCvuIzy zy yIGTYRyIXwE{HK{V{HQ{S{ɛǻǻǻǻ1  !"#%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFHHIIJKLNOOPPQQRRSSTTUXRQ$sQ=s70ustvvCvuIzyIzy yIGRTRyIXwE{HK{V{HQ{S{ɛǻǻɛǻǻ0  !"##$%&&''(())**+-..//001122367899::;=>>?BCCDDEEFFHHIIJKLNOOPQRRSXRQ$WvQ=s70usWvstvvCvUuXzyIzy yIGRTRyIwE{X3K{V{HQ{S{ɛǻǻǻZZYaaY``o__oaaoZZ``ooZZ__Yo__aaoY^_oZZaaooZZ``Yo^^``ooZZaaYoZZ__oo``woefddef/ #$$%&'())**+./67@AABBCCDDEEFFGhfyfggTggh5hvhhi-itihihj=jxj=jkkAkkAkl klQ3  !!""##$%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFHHIIJKLNOOPQRRSXRQ,8sQ=s70usWvstsvvCPvPhuIzyIzy yIGRTRyIWwE{X3K{V{HQW{ɛǻǻǻ2  !!""##$%&&''(())**+-../122367899::;=>>?BCCDDEEFFHHIIJKLNOOPQRRSSTTUXRQ,8sQ=s70ustsWvsvvCPvPhuIzyIzy yIGRyIwE{HK{V{HQW{ɛǻǻǻǻ.  !"#%&&''()**++,,--..//0012367899::;=>>??@BCCDDEEFFHIJKLNOOPSTTUX9VsQ=s70usW7svvCvuIzwExy{yIGRTyIwE{VbK{{S{HQ{S{ǻǻǻ0  !"##$$%%&&''()**++,,-./1223455667899::;=>>??@BCCDDEEFFHIJKLNOOPSTTUX9R sQ=s70ustsvvCvvCuvCIzwExy{yIRyIwEH@wE{VbK{{S{HQ{S{ǻǻǻ8  !"##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@BCCDDEEFFHIJKLNOOPSTTUX$R sQ=*70uststsvvCvPhuIzwEwxy{SyIy RTRy wEzH@wE{{SVbV{{S{{S{HQ{S{ǻǻǻ7  !"##$$%%&&''()**++,,--../12233445566778899::;;<<==>>??@BCCDDEEFFHIJKLNOOPSTTUX9R sQ=s70uststsvvCvPhvCuIUwExy{SyIy Ry wEzH@V){{SVbV{{S{{S{HQ{S{ǻǻǻ3  !"##$$%%&&''()**++,,--../122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPSTTUX9R sQ=s70ustsvvCvPhvCRIV)wExy{yIGRyIwEH@V)K{HKF{{S{HQ{SQǻǻǻ4  !"##$$%%&&''()**++,,--..//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPX$R sQ=s%70ustsvvCvPhvCRIUwExy{yIwxRTRKwEH@V)K{HKF{{S{HQ{S{ǻǻ7  !"##$$%%&&''()**++,,-.//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPVWWXX9R sQ=s%73uststsvvCvPhvCRIUwExI {yIRTRKwEH@SK{HKF{{S{HQ{S{ǻǻǻ9  !"##$$%%&&''()**++,,-.//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXX9R sQ=5n%73uststsvvCvPhvCRIUwExI {yIRTRyIwEH@SK{HKF{{S{HQ{S{ǻǻǻǻ6  !"##$$%%&&')**++,,-.//0011223455667789::;=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXXUTR sQ=5n%9@3ustvtsvvCvUuRIwExI {yIRTRyIwEH@SK{K{{S{HQ{S{ǻǻǻǻ9  !"##$$%%&&''(())**++,,-.//001122345566778899:=>>??@BCCDDEEFFHHIIJKLNOOPVWWXXUTR sQ=5n%93uststsvsvvCvPhuRIzwEH@xI {yIPTRyIwEH@SK{H{{S{HQ{S{x,ǻǻǻ;  !"##$$%%&&''()**++,,-.//001122345566778899:=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXXUR sQ=5n78q3uststsvsvsvvCvPhuRIzwExI {yIPTRyIwEH@SK{H{{S{HQ{S{ǻǻǻǻ:  !!""##$$%%&&''()**++,,-.//0011223346778899:=>>??@@AABBCCDDEEFFHIJKLNOOPSTTUVWXTR sQ=5n77 3ustsvsvsvvCuvPhuRIzwExI {yIPTRwxwEH@K{H{{S{F{HQ{S{ǻǻǻǻ<  !!""#$%%&&''()**++,,-.//001122334566778899:=>>??@@AABBCCDDEEFFHIJKLNOOPSTTUVWXTR sQ=5n67 3PhsRQstsvsRQsvvCuvuRITgwExwx{yIPTRwxwEH@SK{H{{S{F{HQ{S{ǻǻǻǻ:  !!""#$%%&&''()**++,,-.//001122334566778899::;=>>??@BCCDDEEFFHHIIJKLNOOPSTTUVWXSGR sQ=5nt53PhsRQsvsRQsvvCuvuRISwExwx{yIPyRwxwEH@SK{HK{{S{HQ{S{ɛǻǻǻǻ8  !!""#$%%&&''(())**++,,-.//00112233445566778899:=>>??@CDDEEFFHHIIJKLNOOPVWXSGR sQ=5nt03PhsRQsvsRQsvvCuvuRIJwEyIxyI{yIPyRwxwEH@wEH@K{H{{S{Q{S{x,ǻǻǻ:  !!""#$%%&&''(())**++,,-.//00112233445566778899::;=>>??@CDDEEFFHIJKLNOOPVWX3R sQ=3t03tsRQsvsRQstsvGeuvuRIJwEyIxyI{yIPyRwxwEH@wEH@M {H{{{S{Q{S{ǻǻǻ?  !!""#$%%&&''(())**++,,-.//00112233445566778899::;=>>?BCCDDEEFFHIJJKNOOPQRRSTUUVVWX2sdtQ=.Qt0tPhstsvNststsuGeuPuQIJwEyIxL-{yIPITI NOH@wEH@M {H{{{{HQ{SPǻǻǻǻǻ@  !!""#$%%&&''(())**++,,-.//00112233445566778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVWXX,8ts.Qt0tPhstsvNststsuGeuPuOfIJwEyIxL-{yIPITyNOH@wEH@M {H{H{{{S{{S{H|{SPǻǻǻǻ=  !!""#$%%&&''(())**++,,-.//00112233445566778899::;;<=>>?BCCDDEEFFHIJJKNOOPTUUVWXX,8ts.Q%0ttstsvNststsuGeuvO-OfIJwEyIy L-{yIPyI NOH@wEH@M {H{H{O{H|{SJǻǻǻǻC  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVWXX,8#ts.QNtfttstsvNststsuvCuvNXO-OfIJwEyIy L-{wxyIL~yI NOH@wEH@M {H{SH{O{S{{SHH|{SJǻǻǻǻ?  !!""##$$%%&&''(())**++,,--..//0011223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX,8#ts.QJVtfttstsNststsuGeuvNXsFIJwEwxy Mq{wxyIL~yI NLwEM {HKH{{{S{{SHKX|{SJǻǻǻ=  !!""##$$%%&&''(())**++,,--..//0011223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX,8$ts,wJVtfttsunststsuGeuvusFIJwEwxy Mq{wxyIL~MywxLwEM {H{H{{{S{{SH|a|{SJǻǻǻ>  !!""##$$%%&&''(())**++,,--..//01223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX,8$ts,wJVtfttsJsunstsvsuGeuvusFIJwEwxy y{wxyIL~ywxLwEM {H{H{{{S{{SHKX|{SJǻǻǻ;  !!""##$$%%&&''(())**++,,--..//00112233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX,8$tssJVtfttsJsunstsuGeuvusFIJwEwxy L-{wxyIGyI yIH@wEK{K{{{S{{S{|a|{SJǻǻǻ<  !"##$$%%&&''(())**++,,--..//00112233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVXsd$tssJVtftsJsvunststsuGevusFIJwEwxy L-{wxyIKyI yIH@wEH{K{{{S{{S{KX|{SJǻǻǻ;  !"##$$%%&&''(())**++,,--..//012233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX#$ts*JVtftsJsvunststsuGevusFIJwEwxy y{wxyIKyyIH@wEH{K{{{S{{S{|a|{SJǻǻǻ;  !"##$$%%&&''(())**++,,--..//01223346778:;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX#$tssJVtftsJsvunststsuGevusFIJwEwxy IT{wxyIKyy H@wEH{H{{{S{{S{KX|{SJǻǻǻ9  !"##$$%%&&'())**++,,--..//01223346778:;;<=>>?@AABBCCDDEEFFHIJJKNOOPTUUVX#$ss%tftustsu5unststvuGevusFIwEwxy I{wxyIGyy H@wEH{{S{{{{S{H|{SJǻǻǻ;  !"##$$%%&&'())**++,,--..//0011223346778899::;;<=>>?@AABBCCDDEEFFHIJJKNOOPTUUVX'$ss%tftstsu5unststvuGevusFw wEwxy F?{xyIFI ITy z]wEz{{S{z{{{{S{H|{S{ǻǻǻ6  !"##$$%%&&'())**++,,--..//0011223346778:;;<=>>?ABBCCDDEFHIJJKNOOPTUUVWXX%o$ss%tfG su5unststvuGevusFw wEwxy GyIwxyIGyIyy H@wEH{H{{{FH|{ǻǻǻǻ %&&''(FZ^_abcooxooo %&&''(FZZ[^_abcooooo_aoZZ_aYoZZ_ao_`aaoY_`o_`wo^`o_awo_`aaoYY_`oYY^`o^`woZZ_awo #$$%())*,-@AABCDDEEFFGhVVVVVWW5lWiWWWWlllllm %&&''(FZ^_abcooxoxooo %&&''(FZ^_abcooxooo %&&''(FZ^_abcooxooxooo&''(FZ^_abcooooo %&&''(FZZ[[\^_abcooxoxoox,o&&wdeffǻ &''(FZZ[[\^_abcoooox,o %&&''(FZZ[[\^_abcooxoox,o &''(FZZ[[\^_`aabcooooǻx,oY %&&''(FZ^_`acooxooo&''(FY^_`bcooooo %&&''(FY]^^_`bcooxooǻo %&&''(FYYZ]^^_`bcooxooǻǻo %&&''(FYYZ^_`bcooxooǻo %&&''(FY^_`bcooxooo #$$%%&&''(FYYZ^_`bcoxoxoxooǻo %&&''(FYYZZ[^_`bcooxooǻo %&&''(FYZ[]^^_`bcooxooǻǻo &''(FYZ[^_`bcooooǻo &''(FYYZ^_`bcooooǻo %&&''(FYYZ]^`bcooxoxooǻo %&&''(FY]^`bcooxooo %&&''(FYYZ]^`bcooxooǻo %&&''(FYZ[[\]^`bcooxooǻo %&&''(FZZ[^_abcooxox0oǻo %&&''(FZ^_abcoox0oo &''(FZZ[^_`aabcooooǻoY %&&''(FYYZ^_`bcooxoxooǻo#$$%%&&''(FYYZ^_`bcooxoxoxooǻo %&&''(FY]^`bcoxoxooo%&&''(FZZ[[\\]^_abcooxox0oǻx,o #$$%&''(FZZ[^_abcooxo0oYo %&&''(FZZ[^_abcoxoooo &''(FZZ[[\]^^_abcoooox,ǻo %&&''(FY^_`bcooxoxooo #$$%%&&''(FY^_`bcooxoxoxooo &''(FYYZZ[^_`bcooooǻo %&&''(FY]^`bcooxoxooo "##$%&&''(FY]^`bcooxoxooo %&&''(FZZ[[\^_abcooxox0oǻx,o %&&''(FYYZZ[]^^_`bcooxooǻǻo %&&''(FYZ[^_`bcooxooǻo %&&''(FZ^_`aabcooxooo &''(FYZ[^_`bcooxoooǻo %&&''(FY]^`bbooxooo #$$%&''(FZZ[^_abcooo0oYo %&&''(FZ^_abcoxoxooo &''(FY^_`bcooxoooo %&&''(FY^_`bcoxoxooo "##$%&&''(FY]^`bcooxoxoxooo &''(FZZ[[\^_abcoo0oox,o %&&''(FY^_`bcoxoxooo %&&''(FYYZZ[]^`bcooxooǻo %&&''(FYYZZ[^_`bcooxoxooǻo %&&''(FYYZ[\]^`bcooxooǻo %&&''(FZZ[^_abcoox0oǻo $%%&&''(FZZ[^_abcooxo0ooo#$$%%&&''(FY]^^_`bcooxoxoxooǻo &''(FYYZZ[^_`bcooxoooǻo %&&''(FYYZZ[]^`bcooxoxooǻo%&&''(FYYZZ[[\^_`bcooxoxooǻx,o #$$%%&&''(FYZ[^_`bcooxoxooǻo $%%&&''(FZZ[^_abcooxoxo0ooo %&&''(FZ^_abcoooxooo &''(FZZ[[\^_abcooooǻx,o %&&''(FY^_`bcooxoxooo #$$%&''(FZZ[^_abcooxoo0oYo &''(FZZ[^_abcooooǻo &''(FZ^_`aabcoooooY &''(FY^_`bcooxoooo %&&''(FY[\]^`bcooxooǻo %&&''(FZZ[^_abcoox0oo #$$%%&&''(FY]^^_`bcooxoxooǻo &''(FZ^_abcooxoooo %&&''(FZZ[[\]^^_abcooxoox,ǻo %&&''(FY]^`bbooxoxooo %&&''(FZZ[[\\]^_abcoox0oǻx,o %&&''(FZZ[[\^_abcooxooǻo &''(FZZ[[\^_`aabcoooox,oY %&&''(FY]^`bcooxoxooo %&&''(FZZ[[\\]^_abcoox0oǻǻo %&&''(FZZ\^_abcoox0oo %&&''(FZZ[^_abcooxox0ooo %&&''(FZZ[^_abcoo0oo $%%&&''(FZ^_abcooxxooo&''(FZ^_`acooooo #$$%%&&''(FY^_`bcooxoxooo %&&''(FY]^`bbccooxoooǻ %&&''(FZZ\\]^_abcoox0oǻǻo &''(FZZ[^_abcooxo0ooo #$$%%&&''(FZZ[^_abcooxox0oo &''(FYYZ^_`bcooxoooǻo &''(FYYZZ[]^^_`bcooooǻǻo %&&''(FZZ\\]^_abcoox0oǻo %&&''(FZZ[^_abcoox0oYo #$$%&''(FZZ[^_abcooxo0oo &''(FYYZ]^^_`bcooxoooǻǻo #$$%%&&''(FYYZZ[^_`bcooxoxooǻo &''(FZZ[^_abcoo0oYo $%%&&''(FZZ\\]^_abcooxx0oǻo #$$%&''(FZZ[[\^_abcooxo0ox,o $%%&&''(FZZ\^_abcooxx0oo &''(FZZ[[\^_abcoo0ox,o &''(FZZ[^_abcoo0oo &''(FZZ[[\^_abcooxooox,o $%%&&''(FZ^_abcooxx0oo &''(FYYZ]^^_`bcooooǻǻo &''(FY]^^_`bcooooǻo !""#%&&''(FY]^`bcooxooxooo %&&''(FYZ[]^`bcooxooǻo %&&''(FZZ\^_abcoox0oǻo %&&''(FZ^_abcoxoxooo %&&''(FZZ[^_abcooxooǻo %&&''(FYYZ]^`bbccooxooǻoǻ &''(FY^_`bbccoooooǻ !""#%&&''(FY]^`bcooxoxoxooo %&&''(FZZ[^_`aabcooxooǻo &''(FYZ[[\^_`bcoooox,o#$$%%&&''(FYYZZ[^_`bcooxoxoxooǻo %&&''(FZ[\\]^_abcooxooǻo %&&''(FZZ[[\^_abcoox0oYx,o %&&''(FZ[\\]^_abcooxoox,o "##$%&&''(FYYZ]^`bcooxoxooǻo $%%&&''(FYYZ^_`bcooxxooǻo %&&''(FZ^_abcooxoxooo &''(FYYZZ[[\^_`bcooooǻx,o &''(FZ^_`aabcooooo &''(FZZ[^_`aabcooooǻo $%%&&''(FZZ\^_abcooxxooo %&&''(FZZ[^_abcoox0ooo #$$%%&&''(FY^_`bcoxoxoxooo %&&''(FY]^`bcoxoxoxooo %&&''(FYY[^_`bcooxooo $%%&&''(FZZ[[\^_abcooxxooǻo #$$%%&&''(FYYZ]^^_`bcooxoxooǻǻo #$$%%&&''(FYYZ^_`bcooxoxooǻo &''(FZZ[^_`acooooǻo $%%&&''(FYYZ]^^_`bcooxxooǻǻo %&&''(FZZ[[\^_abcoox0ox,o $%%&&''(FYYZ^_`bcooxoooǻo #$$%%&&''(FY^_`bcoxoxoxooo "##$%&&''(FY]^`bcoxoxoxooo #$$%&''(FZ^_abcooxoooo %&&''(FYYZ]^`bcoxoxoxooǻo #$$%%&&''(FYYZ^_`bcoxoxoxooǻo $%%&&''(FZ^_abcooxoxxooo %&&''(FZZ[^_abcooxoxooǻo #$$%&''(FZZ[^_abcooxoxo0oYo %&&''(FZ^_abcooxoxoxooodeffɛddefɛ &''(FZZ[^_`aabcooEoǻoY %&&''(FYYZ^_`bcooxoxEoǻo#$$%%&&''(FYYZ^_`bcooxoxoxEoǻo %&&''(FY]^`bcoxoxEoo %&&''(FZZ[^_abcoxoEoo &''(FZZ[[\]^^_abcooEox,ǻo %&&''(FY^_`bcooxoxEoo #$$%%&&''(FY^_`bcooxoxoxEoo &''(FYYZZ[^_`bcooEoǻo %&&''(FY]^`bcooxoxEoo "##$%&&''(FY]^`bcooxoxEoo %&&''(FYYZZ[]^^_`bcooxEoǻǻo %&&''(FYZ[^_`bcooxEoǻo %&&''(FZ^_`aabcooxEoo &''(FYZ[^_`bcooxoEoǻo %&&''(FY]^`bbccooxEooɛ #$$%&''(FZZ[^_abcooEo0oYo %&&''(FZ^_abcoxoxEoo &''(FY^_`bcooxoEoo %&&''(FY^_`bcoxoxEoo "##$%&&''(FY]^`bcooxoxoxEoo %&&''(FY^_`bcoxoxEoo %&&''(FYYZZ[]^`bcooxEoǻo %&&''(FYYZZ[^_`bcooxoxEoǻo#$$%%&&''(FY]^^_`bcooxoxoxEoǻo &''(FYYZZ[^_`bcooxoEoǻo %&&''(FYYZZ[]^`bcooxoxEoǻo%&&''(FYYZZ[[\^_`bcooxoxEoǻx,o #$$%%&&''(FYZ[^_`bcooxoxEoǻo %&&''(FZ^_abcooEoxEoo &''(FZZ[[\^_abcooEoǻx,o %&&''(FY^_`bcooxoxEoo #$$%&''(FZZ[^_abcooxoEo0oYo &''(FZZ[^_abcooEoǻo &''(FZ^_`aabcooEooY &''(FY^_`bcooxoEoo %&&''(FY[\]^`bcooxEoǻo #$$%%&&''(FY]^^_`bcooxoxEoǻo &''(FZ^_abcooxoEoo %&&''(FZZ[[\]^^_abcooxEox,ǻo %&&''(FY]^`bbccooxoxEooɛ %&&''(FZZ[[\^_abcooxEoǻo &''(FZZ[[\^_`aabcooEox,oY %&&''(FY]^`bcooxoxEoo %&&''(FZZ[[\^_abcoox0oɛo $%%&&''(FZ^_abcooxxEoo&''(FZ^_`acooEoo #$$%%&&''(FY^_`bcooxoxEoo %&&''(FY]^`bbccooxEooǻ %&&''(FZZ[[\\]^_abcoox0oǻɛǻo &''(FYYZ^_`bcooxoEoǻo &''(FYYZZ[]^^_`bcooEoǻǻo %&&''(FZZ[[\\]^_abcoox0oɛǻo &''(FYYZ]^^_`bcooxoEoǻǻo #$$%%&&''(FYYZZ[^_`bcooxoxEoǻo $%%&&''(FZZ[[\\]^_abcooxx0oɛǻo $%%&&''(FZZ[[\^_abcooxx0oɛo &''(FZZ[[\^_abcooxoEox,o &''(FYYZ]^^_`bcooEoǻǻo &''(FY]^^_`bcooEoǻo !""#%&&''(FY]^`bcooxoEoxEoo %&&''(FYZ[]^`bcooxEoǻo %&&''(FZZ[[\^_abcoox0oǻɛo %&&''(FZ^_abcoxoxEoo %&&''(FZZ[^_abcooxEoǻo %&&''(FYYZ]^`bbccooxEoǻoǻ &''(FY^_`bbccooEooǻ !""#%&&''(FY]^`bcooxoxoxEoo %&&''(FZZ[^_`aabcooxEoǻo &''(FYZ[[\^_`bcooEox,o#$$%%&&''(FYYZZ[^_`bcooxoxoxEoǻo %&&''(FZ[\\]^_abcooxEoǻo %&&''(FZ[\\]^_abcooxEox,o "##$%&&''(FYYZ]^`bcooxoxEoǻo $%%&&''(FYYZ^_`bcooxxEoǻo %&&''(FZ^_abcooxoxEoo &''(FYYZZ[[\^_`bcooEoǻx,o &''(FZ^_`aabcooEoo &''(FZZ[^_`aabcooEoǻo $%%&&''(FZZ[[\^_abcooxxEoɛo #$$%%&&''(FY^_`bcoxoxoxEoo %&&''(FY]^`bcoxoxoxEoo %&&''(FYYZZ[^_`bcooxEoɛo $%%&&''(FZZ[[\^_abcooxxEoǻo #$$%%&&''(FYYZ]^^_`bcooxoxEoǻǻo #$$%%&&''(FYYZ^_`bcooxoxEoǻo &''(FZZ[^_`acooEoǻo $%%&&''(FYYZ]^^_`bcooxxEoǻǻo $%%&&''(FYYZ^_`bcooxoEoǻo #$$%%&&''(FY^_`bcoxoxoxEoo "##$%&&''(FY]^`bcoxoxoxEoo #$$%&''(FZ^_abcooxoEoo %&&''(FYYZ]^`bcoxoxoxEoǻo #$$%%&&''(FYYZ^_`bcoxoxoxEoǻo $%%&&''(FZ^_abcooxoxxEoo %&&''(FZZ[^_abcooxoxEoǻo %&&''(FZ^_abcooxoxoxEooTm4m4m4m4m4m4m mbstr-1.7.0/src/unicode/fsm/grapheme_break_rev.littleendian.dfa000064400000000000000000002615651046102023000225630ustar 00000000000000rust-regex-automata-dfa-sparse  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGGHIIIIIIIIIJKLLLLMNNNOPQRSTUVWXYZ[\]]]]]]^_`abcdeefghhhhhhhhhhh` #$$%())*@AABCDDEEFFGhVVVVVW5WliWWWWWWW X9  !"##$%&&'())**++,,--..//001122334455667899:;<<==>>??@BCDEEFFIIJKLUVVWXDdsn5s4EftEEO$G B:z "$z  4A=!(+'Q"+'"G##G#"#]+4#*2o#6 "##$%&&'())**++,,--..//0011223455667;<<==>>??@BCDEEFFIIJKLOPPQUVVWXDdsn5s4E061EO$G B:z "   MDA  "Q"+'"G#"G#]+4#*2o#6 "##$%&&''()**++,,--..//00112235667;<<==>>??@BCCDDEEFFIIJKLOPPQUVVWXDdsDn5s4E0CEO$B:G z "$  MDA (Q""G#"G#]+4#'*C#3 "##$%&&')**++,,--..//00112234567;<<==>>??@BCCDDEEFFIIJKLLMMNUVVWX34dss70CEO$G z "$  MD0 (Q"G G#"G#]+4#*'C#6 "#$%%&&')**++,,--..//01223344567899::;;<<==>>??@BCDEEFFIIJKLLMMNOPPQUVVWX34ds;s70CEO$G z G >=! &4(+'Q"G G##G##"#]+4#'C#2 "##$%&&'())**++,,-.//00112233467;<<==>>??@BCDEEFFIIJKLLMMNOPPQUVVWX34ds;sn5%0EO$G +'z G >=!'C4=!(<G #j'#]+4#'@#6  !!""#%&&''(())**++,,-.//001122334566778899::;;<<==>>??@BCCDDEEFFIIJKLLMMNUVVWX34ds;sn5%0O$B:G +'=!G B=!'C4=!!<G "#G##G##G##]+4#'rC2oG#;  !!""##$$%%&&')**++,,--..//00112233445566778899::;;<<==>>??@@ABCCDDEEFFIIJKLLMMNOPPQUVVWX$s%0>EBG =!G RB=! &$=!(<"G "#G##G##"#]+4G##'0%2o#9  !!""##$%&&''(*++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFIIJKLLMMNUVVWX34$s%0>EBG =!G RB=! &A=!(G "G "#G##G##G##]+4G##G#'0%#*  !!""##$%&&''(*++,,-.//001122367=>>??@@AABBCCDDEFIIJKLLMMNUVVWX34Bs%ft>EBG =!G RB=!&4=!(G #]+4G##G#'0%#0  !!""##$%&&''()**++,,-.//0011223566778899::;;<<==>>??@@AABBCCDDEFIIJKLUVVWX34$s%ft>EBG =! G RB=!&4&!G "#G##G##G#j':4G##G#'0%#5  !!""##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFIIJKLQRRSX?$s%ft>E?C6=! G  =! 4A&(G "G "#G##G##G#j']+4G##G#'0%#5  !!""#$%%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFIIJKLQRRSX2A$s7ft>E?!=! =! =! ]@}A&(G "G "#G##G##G#j']+4G##G#'0%#8  !!""##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFIIJKLQRRSX2A$;@s70>E?!=! =! =! ]@}A&(G "G "#G##G##G#j']+4G##G#'0%G##,  !!""#$%%&&''()**++,,-.//001122367<==>>??@@AABBCCDDEEFFIIJKLQRRSX?$@s6ft>E?@=! =! =!]@4&!G #j']+4G##G#'0%G##,  !!""##$%&&''()**++,,-.//001122367=>>??@BCCDDEEFFIIJKLQRRSX?$34@s7ft>E?!=! =! =!]@4&=!G #:4#'@2o#,  !"##$%&&')**++,,-./0112233445679::;<==>>?BCCDDEEFFIIJKLPQRSX34$P2s70>EE?G >=!z =!4&=!G <G #]+#j':#'0%2o#0  !"##$%&&')**++,,--..//0011223679::;<==>>?BCCDDEEFFIIJKLNOOPPQRSTUUVX34$P2s60>EE?G >=! =!&4$&=!G #]+#j':#'22o#/  !"##$$%%&&')**++,,--..//001122367899::;=>>?BCCDDEEFFIIJKLNOOPPQRSX34$P2s60>E./?G >=! =!&4&&=!G #j']+#:#'22o#.  !"##$$%%&&')**++,,--..//001122367899:<==>>?BCCDDEEFFIIJKLNOOPPQRSX34$P2s60>E/.?G >=! =!&4&&=!G #j'#j':#'2G##0  !"##$$%%&&')**++,,--..//001122367899::;<==>>?BCCDDEEFFIIJKLNOOPPQRSX34$P2s=0>E.Ea?G >=! =!&4&&=!G #j']+#j':#'2G##2  !"##$%&&')**++,,--..//001122334456778899::;<==>>?BCCDDEEFFIIJKLNOOPPQRSX34$P2s=0>E/E(G >=! =!&4=&=!G ?G #G#j':#j']+#'2G##4  !"##$$%%&&''()**++,,--..//001122334456778899::;<==>>?BCCDDEEFFIIJKLNOOPPQRSSTTUX348,P2s=0EEE("G >=! =!&4=&=!G "G #G#j':#j':#'2G##8  !"##$%&&''()**++,,--..//001122334455667899::;;<<==>>?BCCDDEEFFIIJKLNOOPPQRSSTTUX348,P2s=0>EE("G  =! =!$7=&=!G "G "#j']+#G#j']+#'2G##+  !"#%&&''(())**+.//001122367899::;=>>?BCCDDEFIIJKLNOOPPQRSSTTUX348,P2s=0E("G " =!7=&=!G #j']+#:#G>2#,  !"#%&&')**+.//001122367899::;=>>?BCCDDEEFFIIJKLNOOPPQRSSTTUX8,x=P2s=0>E(" =!7=&=!G #j']+#:#G>2G##-  !"#%&&''(())**+-..//0012367899::;=>>?BCCDDEEFFIIJKLNOOPPQRSSTTUX$x=P2s60E(G  " =!&7==!G #j']+#:#'2G##0  !"#%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFIIJKLNOOPQRRSSTTUX34$P2s70E(" " =!&7=4=!<G #j']+#:#'2G##/  !"#%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFIIJKLNOOPPRRSSTTUX34$P2s70E("=!" =!&474=!<G #j']+#:#'2G##/  !"##$%&&''(())**+-..//001122367899::;=>>?BCCDDEEFFIIJKLNOOPQRRSX34$;P2s70;Ey9<"=!" =!&474=!G #F<]+#:#'2G##2  !!""##$%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFIIJKLNOOPQRRSX348,P2s70;Eu161("=!" =!&474=! <G #F<]+#:#'2;#1  !!""##$%&&''(())**+-../122367899::;=>>?BCCDDEEFFIIJKLNOOPQRRSSTTUX348,P2s70;Eu161("=!" =!&4=!G #j']+#:#'2;#.  !"#%&&''()**++,,--..//0012367899::;=>>??@BCCDDEEFFHIJKLNOOPSTTUX9 ;P2s70J;E("G  !#=!&47=!G #{:]+#+4#'2G##0  !"##$$%%&&''()**++,,-./1223455667899::;=>>??@BCCDDEEFFHIJKLNOOPSTTUX9j3P2s70EEE("G  !#=!4=!G +'G #{:]+#+4#'2G##8  !"##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@BCCDDEEFFHIJKLNOOPSTTUX$j3P2*70E61("G z !G#=! 474 G "+'G #G#{::#G##+4#'2G##7  !"##$$%%&&''()**++,,--../12233445566778899::;;<<==>>??@BCCDDEEFFHIJKLNOOPSTTUX9j3P2s70E61E(:G  !G#=! 4 G "+'B:#G#{::#G##+4#'2G##3  !"##$$%%&&''()**++,,--../122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPSTTUX9j3P2s70E61Er4(B:G  !#=!&4=!G +'B:]+#j']+0%#+4#'2G#24  !"##$$%%&&''()**++,,--..//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPX$j3P2s%70E61Er4(:G  !#=!z 474O*G +'B:]+#j']+0%#+4#'2G##7  !"##$$%%&&''()**++,,-.//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPVWWXX9j3P2s%73E61Er4(:G  E(#=!474O*G +'C6]+#j']+0%#+4#'2G##9  !"##$$%%&&''()**++,,-.//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXX9j3P2n5%73E61Er4(:G  E(#=!474=!G +'C6]+#j']+0%#+4#'2G##6  !"##$$%%&&')**++,,-.//0011223455667789::;=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXX8j3P2n5%@93Ey9r4(G  E(#=!474=!G +'C6]+#]+#+4#'2G##9  !"##$$%%&&''(())**++,,-.//001122345566778899:=>>??@BCCDDEEFFHHIIJKLNOOPVWWXX8j3P2n5%93E61r4("G +' E(#=!074=!G +'C6]+#j'#+4#'2G##,x;  !"##$$%%&&''()**++,,-.//001122345566778899:=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXX&8j3P2n57q83E61r4("G  E(#=!074=!G +'C6]+#j'#+4#'2G##:  !!""##$$%%&&''()**++,,-.//0011223346778899:=>>??@@AABBCCDDEEFFHIJKLNOOPSTTUVWX6j3P2n57 73E61r4("G  E(#=!074z G +']+#j'#+4#0%#'2G##<  !!""#$%%&&''()**++,,-.//001122334566778899:=>>??@@AABBCCDDEEFFHIJKLNOOPSTTUVWX6j3P2n56 73613434Er4(Q7G  z #=!074z G +'C6]+#j'#+4#0%#'2G##9  !!""#$%%&&''()**++,,-.//001122334566778899::;=>>??@BCCDDEEFFIIJKLNOOPSTTUVWX)5j3P2n5t53613434Er4(5G  z #=!0!4z G +'C6]+#j']+#+4#'2G##8  !!""#$%%&&''(())**++,,-.//00112233445566778899:=>>??@CDDEEFFHHIIJKLNOOPVWX)5j3P2n5t03613434Er4(*G =! =!#=!0!4z G +'G +']+#j'#+4#2G##,x:  !!""#$%%&&''(())**++,,-.//00112233445566778899::;=>>??@CDDEEFFHIJKLNOOPVWX3j3P23t033434P&r4(*G =! =!#=!0!4z G +'G +'^-#j'##+4#2G##?  !!""#$%%&&''(())**++,,-.//00112233445566778899::;=>>?BCCDDEEFFHIJJKNOOPQRRSTUUVVWX2dsP2Q.t061.P&u12(*G =! +#=!0(E(&/.0+'G +'^-#j'##+#'2G#1@  !!""#$%%&&''(())**++,,-.//00112233445566778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVWXX8,Q.t061.P&u1/(*G =! +#=!0(!&/.0+'G +'^-#j'#j'#+G##G##'2oG#1=  !!""#$%%&&''(())**++,,-.//00112233445566778899::;;<=>>?BCCDDEEFFHIJJKNOOPTUUVWXX8,Q.%0.P&//(*G =! +#=!0!E(&/.0+'G +'^-#j'#j'#m0#'2oG#S)C  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVWXX8,#Q.k/ft.E.//(*G =! +#z =!,!E(&/.0+'G +'^-#j'G#j'#m0G##G#j''2oG#S)?  !!""##$$%%&&''(())**++,,--..//0011223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX8,#Q.)ft.P&.O$(*G z  -#z =!,!E(&/-G ^-#j']+j'#+G##G#j'*2oG#S)=  !!""##$$%%&&''(())**++,,--..//0011223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX8,$w,)ftLP&O$(*G z  -#z =!,.!z -G ^-#j'#j'#+G##G#j'n2oG#S)>  !!""##$$%%&&''(())**++,,--..//01223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX8,$w,)ft)LP&O$(*G z  !#z =!,!z -G ^-#j'#j'#+G##G#j'*2oG#S);  !!""##$$%%&&''(())**++,,--..//00112233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX8,$s)ft)LP&O$(*G z  +#z =!&!E(=!+'G ]+#]+#+G##G##n2oG#S)<  !"##$$%%&&''(())**++,,--..//00112233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVXds$s)ft)LP&O$(*G z  +#z =!+!E(=!+'G j'#]+#+G##G##*2oG#S);  !"##$$%%&&''(())**++,,--..//012233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX#$*)ft)LP&O$(*G z  !#z =!+!=!+'G j'#]+#+G##G##n2oG#S);  !"##$$%%&&''(())**++,,--..//01223346778:;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX#$s)ft)LP&O$(*G z  (#z =!O*! +'G j'#j'#+G##G##*2oG#S)9  !"##$$%%&&'())**++,,--..//01223346778:;;<=>>?@AABBCCDDEEFFHIJJKNOOPTUUVX#$s%ftLP&O$(G z  )#z =!&! +'G j'#G##+#G##'2oG#S);  !"##$$%%&&'())**++,,--..//0011223346778899::;;<=>>?@AABBCCDDEEFFHIJJKNOOPTUUVX'$s%ftLP&O$ G z  $# =!$E(( Q"G "#G##"#+#G##'2oG##6  !"##$$%%&&'())**++,,--..//0011223346778:;;<=>>?ABBCCDDEFHIJJKNOOPTUUVWXXo%$s%ft &LP&O$ G z  &=!z =!&=!! +'G j'#j'#+#0%'2o#=  !"##$$%%&&'())**++,,--..//00112233445566778899::;;<=>>?ABBCCDDEEFFHIJJKTUUVX#$stftLEO$ G z  $=!  $=! " Q"G "G "#G##G##+#0%n2o#}o>  !"##$$%%&&'())**++,,--..//00112233445566778899::;;<<==>>?ABBCCDDEEFFHIJJKNOOPTUUVXdsstftLE G z   =! =!v!! " Q"G "G "#G##"##+#\n2o#}o QQw ,,QQww CCQQwww QQww 11QQww 11<<www 11ww w ww <<ww UUw ))ww TTw ,,ww **,,www ,,//www ww w ++wwQQ,,QQwCCQQwwQQw11QQw11<<ww11w }w<<wUU))wTT**w//w w++w  !!&&''((..//556677<<==>>CCDDEEQQi|www &&,,QQw|w &&CCQQw|ww &&QQw|w ""##$$&&**++11228899::??@@AAFFQQwT~ww &&11QQw|w &&11<<w|ww 11w|w  %%&&''--..114455;;<<==BBCCDDiw|www w| !!""##))**0011778899>>??@@EEFFw*ww ww| <<w|w UUw| $$%%&&)),,--3344::;;<>??DDEEFFwww ##$$%%++,,223399::;;@@AABBw|ww  !!''((..//556677<<==>>CCDDEEi|www TTw| ""##$$**++,,11228899::??@@AAFFw|Twww ,,w|w **,,w|ww  &&'',,--..4455;;<<==BBCCDDi|www !!""##))**,,0011778899>>??@@EEFFwTwww ,,w|w $$%%&&,,--3344::;;<>??DDEEFF*wwww %%,,w|w ##$$%%++,,223399::;;@@AABBw|ww  !!%%''((,,..//556677<<==>>CCDDEEwwww %%,,//w|ww ""##$$%%**++,,11228899::??@@AAFFw|www %%ww| %%w| %%++w|w  %&&'67FQQ*9N*cx  %&&'+,,-67FQQ*9N*cxx  %&&'67BCCDFQQ*9*cx  %&&'67FQQ*9*cx  %&&'011267FQQ*9N*cxx  %&&'011267;<<=F*9N*cxx  %&011267F*9N*xx %&67F*9N*x %&&'67F*9N*x  %&&'67F**9N*x  %&&'67;<<=F*9N*x  %&&'67FUU*9N*x  %&&'())*67F*9N*xx  %&&'67FTT*9N*x %&&'67F*9N*x  %&&')**+67F*9N*xx  $%%&&'67F*9N*xx  $%%&&'67F*9N*xx  $%%&&'67F*9N*cx  $%%&&'.//067F*9N*cxx $%%&67F*9N*cx  $%%&67F**9N*cx  $%%&*++,67F*9N*cxx w!//!w w!++!whF  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFF^ Wa+0Y@Qbs:{0Yte"oh,I%    +xHk|pq"##$%&&''(FYYZ]^`bcooxoxoxooo %&&''(FYYZ]^`bcooxoxooo&''(FY]^`bcoooooegdfde #$$%&'())*@AABCDDEEFFGh>?ABBCCDDEEFFHIJJKTUUVX#$sstftttsts5unustsustvuCvvusF wEwxw y?FIyx yFIyz y]zEwzEwz{S{{S{{{{Fa||{>  !"##$$%%&&'())**++,,--..//00112233445566778899::;;<<==>>?ABBCCDDEEFFHIJJKNOOPTUUVXdssstfttsts5unustsustsuCvvusv wEwxwx yIyxIyyyz y]zEwzEwz{S{{z{{{{|a||{ %&&''(FZ^_abcooxox0oo %&&''(FZ^_abcooxEoo &''(FZZ[^_abcoo0ooo #$$%%&&''(FZZ[^_abcooxox0oYo %&&''(FZZ[^_abcooxox0oo %&&''(FZZ[^_abcooEoo %&&''(FZ^_abcooxoxEoo %&&''(FZ^_abcooxEoo %&&''(FZ^_abcooxoEoxEoo&''(FZ^_abcooEoo %&&''(FZZ[[\^_abcooxoxEo,xo &''(FZZ[[\^_abcooEo,xo %&&''(FZZ[[\^_abcooxEo,xo &''(FZZ[[\^_`aabcooEo,xoY %&&''(FZ^_`acooxEoo&''(FY^_`bcooEoo %&&''(FY]^^_`bcooxEooZZowdd^^oYYddefddef,x #$$%())*@AABCDDEEFFGhVVVVVW5WLWiWWWWWWW X %&&''(FYYZ]^^_`bcooxEoo %&&''(FYYZ^_`bcooxEoo %&&''(FY^_`bcooxEoo #$$%%&&''(FYYZ^_`bcoxoxoxEoo %&&''(FYYZZ[^_`bcooxEoo %&&''(FYZ[]^^_`bcooxEoo &''(FYZ[^_`bcooEoo &''(FYYZ^_`bcooEoo %&&''(FYYZ]^`bcooxoxEoo %&&''(FY]^`bcooxEoo %&&''(FYYZ]^`bcooxEoo %&&''(FYZ[[\]^`bcooxEoo %&&''(FYYZ[\]^`bcooxEoo %&&''(FY]^`bbccoxoxEoo"##$%&&''(FYYZ]^`bcooxoxoxEoo %&&''(FYYZ]^`bcooxoxEoo[[}A  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFF~Àǂwj]DωًpQ2jW8tyrwȨު$;LӲ #4'DUZ.  !"##**++,,--../01122335566789:;;<<==>>??@BCDEEFFJKVVeݽ#ݽݽ ~gݽg}}- "##**++,,--..//0011223344557899::;;<<==>>??@BCCDDEEFFJKPPVVeݽ#ݽ 1>ng}}}/ "##''**++,,--..//00112233445579::;;<<==>>??@BCCDDEEFFJKPPVVegݽݽ Yng}}}& "##**,,--..//00112233447;<<==>>??@BCDEEFFJKMMVVeݽݽ 'Yg}}}$ "#$**,,--..//012244778;<<==>>??@BCDEEFFJKMMPPVVeݽ dx~Yg}}}}# "##))**,,-.//001122337;<<==>>??@BCDEEFFJKMMPPVVeg d~Y ݽg}}}}(  !!""&&''))**,,-.//00112233778899::;=>>??@BCCDDEFJKMMVVegݽr~g g}}}(  !!""$$**,,-.//0011223377889;<<==>>??@@ABCCDDEEFFJKMMPPVV Qx8Y ݽg}}}}&  !!""##(*,,-.//00112277889=>>??@@AABBCCDDEFJKMMVV QxYg}}}"  !!""##&&(*,,-.//0011227=>>??@@AABBCCDDEFJKMMVV4e 6x~gg}}}$  !!""##&&()**,,-.//00112277889=>>??@@AABBCCDDEFJKVVe 6x~ݽgY}}%  !!""##&&''()**,,-.//00112277889=>>??@@AABBCCDDEFJKRRe ~ݽgg}}'  !!""#$&&''()**++,,-.//001122778899::;=>>??@@AABBCCDDEFJKRRe gLݽgg}}/  !!""##&&''()**++,,--..//0011224466778899::;;<<==>>??@@AABBCCDDEEFFJKRRg g1LݽYg}}$  !!""#$&&')**++,,-.//0011227=>>??@@AABBCCDDEEFFJKRR L~ݽgg}}&  !!""##&&''()**++,,-.//0011227=>>??@BCCDDEEFFJKRRe gL~ݽY}}#  !"##&&**++,,-./011224479::;<==>>?BCCDDEEFFJKQR־  d~ݽ gݽg}}%  !"##&&**++,,-.//00112279::;<==>>?BCCDDEEFFJKOOQRUU־  d1~8ݽgݽg}}}}%  !"##$$&&**++,,-.//0011227899::;=>>?BCCDDEEFFJKOOQR־ d~xݽݽgY}}}#  !"##$$&&**++,,-.//0011227899:=>>?BCCDDEEFFJKOOQR־ d~xݽݽY}}}&  !"##$$**++,,--..//0011227899::;=>>?BCCDDEEFFJKOOQR־4  dݽ~xݽݽgY}}})  !"$%&&**++,,--..//00112244778899::;<==>>?BCCDDEEFFJKOOQR־4  dݽ~xݽݽYݽg}}})  !"##%%&&''**++,,--..//00112244778899::;=>>?BCCDDEEFFJKOOQRTT־4  dݽ~ݽݽYY}}}}-  !"$%&&''**++,,--..//001244667899::;;<<==>>?BCCDDEEFFJKOOQRTT־4Oݽ  #~ݽgݽg}}}}   !"&&''))**+./011227899::;=>>?BCCDFJKOOQRTT־4 #ݽݽgg}}}}$  !"&&')**+.//0011227899::;=>>?BCCDDEEFFJKOOQRTT־4O ~ݽݽgg}}}}$  !"&&(())**+-..//00127899::;=>>?BCCDDEEFFJKOOQRTT־ ݽ~ݽgg}}}}'  !"&&''(())**+-..//001122337899::;=>>?BCCDDEEFFJKOORRTT־ ݽ#~ ݽgg}}}}%  !"&&''(())**+.//001122337899::;=>>?BCCDDEEFFJKOORRTT־ݽ ~#~ ݽgg}}}}&  !"##&&''(())**+.//0011227899::;=>>?BCCDDEEFFJKOORRg־gݽ g~#~gg}}})  !!""##&&''(())**+.//001122337899::;=>>?BCCDDEEFFJKOORR־gݽ B~#~gg}}}'  !!""##&&''(())**+./1227899::;=>>?BCCDDEEFFJKOORRTT־ݽg B~ݽgY}}}}$  !"&&''**++,-..//00127899::;=>>??@BCCDDEEFFJKOOTTz־ 1gݽ~#ݽg}}}!  !"##%%&&''**++,./1227899:=>>??@BCCDDEEFFJKOOTTz־  1g~ݽ}}}*  !"##&&''**++,,--..//0011224455778899::;;<<==>>??@BCCDDEEFFJKOOTT־ g~#~ݽY}}}+  !"##$$&&''**++,,--../1224455778899::;;<<==>>??@BCCDDEEFFJKOOTTz־ݽ  1~ݽY}}}$  !"##$$&&**+./122557899::;;<=>>??@BCCDDEEFFJKOOTTz־ݽ  1~ݽg}}})  !"##$$&&''**+-..//00112255667899::;;<=>>??@BCCDDEEFFJKOO־ݽ  1~#~ݽg}}(  !"$$&&''**++,.//001122667899::;;<=>>??@BCCDDEEFFJKOOWWz־ݽݽ  1~#~ݽg}}}+  !"##$$&&''**++,.//0011227899::;;<=>>??@BCCDDEEFFJKOOTTWWz־ݽݽ  1|~#~ݽg}}}})  !"##&&**++,.//001122556679::;=>>??@BCCDDEEFFJKOOTTWWz־ݽݽ 1|~#~g}}}}+  !"##&&''))**++,.//001122567=>>??@BCCDDEEFFHHJKOOWWz־ݽݽ 1'#~,x}}}-  !"##&&''**++,.//0011227899:=>>??@BCCDDEEFFJKOOTTWW>־_ݽݽ 1'#~ݽ}}}}/  !!""##&&''**++,.//001122457899:=>>??@@AABBCCDDEEFFJKOOTTWX־ݽ 1'#~ݽ}}}}0  !"&&''**++,.//00112245778899:=>>??@@AABBCCDDEEFFJKOOTTWX־ݽ 1'#~gݽ}}}}/  !!""&&''**++,.//0011224566778899::;=>>??@BCCDDEEFFJKOOTTWX־ 1'~gݽg}}}})  !"&&))**+.//00112244778899:=>>??@DEEFFHHJKOOWX־ 1'~gݽ,x}}}.  !"&&''))**+.//0011224466778899::;=>>??@DEEFFJKOOWX־eݽݽ޿1~~gݽ־}}}2  !!""%%&&''))**++,.//001122334466778899::;=>>?BCCDDEEFFJJOORRUUWX]e־ݽݽ޿B 1ݽ~|mݽ־}}}}}.  !!""&&''))**+.//0011223344667789::;;<=>>??@@AABBCCDEFFJJOOUUXXݽ޿B1'gm־ݽ}}}}-  !!""#$&&''))**++,.//0011223344778899::;;<=>>?BCCDEFFJJOOUUXXݽݽ޿g'|mݽݽ}}}}4  !!""##$$&&''))**+,--..//0011223344778899::;;<=>>?ABBCCDEFFJJOOUUXXWݽݽݽݽ xg|mݽݽݽ}}}}2  !!""##$$%%&&''))**++,.//001122337789::;;<=>>??@@AABBCCDEFFJJOOUUWݽݽݽݽݽ޿ xg|Xݽgݽݽ}}}/  !!""$$%%&&''))**++,.//00112233778899::;;<=>>??@@AABBCCDEFFJJOOUUݽ"ݽݽ޿7gXݽݽݽ}}}0  !"$$&&''))**+,--..//012233778899::;;<=>>??@@AABBCCDEFFJJOOUUݽ"eݽݽ޿7gXmݽݽ}}}+  !!""$$%%&&''))**+,--..//00112233778=>>??@@AABBCCDEFFJJOOUUeݽݽ޿ݽg|g}}}-  !"$$%%&&))**+,--..//001122337789::;=>>??@@AABBCCDEFFJJOOUUeeݽݽ޿g|ݽg}}}.  !"$$%%&&''))**++,,--..//0122337789::;=>>??@@AABBCCDEFFJJOOUUWݽeݽ޿ggݽg}}}-  !"$$%%&&''))**++,.//012233778:;;<=>>??@@AABBCCDEFFJJOOUUWݽeݽݽ޿Ygݽݽ}}}(  !"$$%%&&))**++,.//0122778:;;<=>>?@AABBCCDEFFJJOOUUeeݽνݽ޿}xgݽ}}}/  !"$$%%&&))**++,,--..//00112233778899::;;<=>>?@AABBCCDEFFJJOOUUeݽνݽݽ޿18|Yn}}}-  !"$$%%&&))**+,--..//001122778:;;<=>>?ABBCCDDEFJJOOUUXXeϿνݽݽݽ޿xgݽݽ}}}}+  !"$$&&))**++,,-.//0011223355778:;;<=>>?ABBCCDDEEJJUUWeݽݽνݽ ݽx|}},  !"$$%%&&))**+.//00112233778899::;;<<==>>?ABBCCDEJJOOUUeνݽݽݽ  1Lg|ݽ־}}}&&''*9H&&9''H$$&&''*9H&&''9H&&*&&*9&&[[*9,x[[,x&&[[9,x&&YY^^9}}$$&&**9&&ZZ9}&&ZZ^^9}}&&YY9}YY}&&YY*9}&&[[9}&&Z[9}&&*9##&&*9dd}dd,xff}&&''ZZ*9H}$$&&**9&&''ZZ\\*9H},x$$''*H*[[^^,x}ZZ}&&^^9}&&''[[*9H,x$$&&YY**9}&&YZ9}YZ}ZZ*}*##&&**9''[[H,x##&&YY**9}&&*9&&''ZZ9H}%%''*H$$&&^^**9}ZZ*}&&ZZ*9}$$&&YZ*9}##&&YY*9}%%''**H&&*9''*HZZ[[},x*$$&&^^*9}&&[[^^9,x}&&''ZZ\\9H},x$$&&*9&&''ZZ\\9H}}%%&&*9&&cc9}ZZ^^}}&&''\\9H}YY^^}}$$&&ZZ*9}%%&&''\\*9H}$$''[[*H,x%%&&''*9H[[*,x^^}&&YYcc9}}cc}""&&**9$$&&ZZ**9}&&\\9}&&''[[9H,x&&\\9,x%%&&YY*9}&&*9YY[[},x&&YY*9}&&**9$$&&YY*9}%%&&[[*9}$$&&YY^^*9}}%%&&^^*9}%%&&YY^^*9}}%%YY*}$$&&**9##&&**9$$*&&YY*9}$$&&YY**9}%%&&**9$$''**H&&YZ^^9}}2  "##$$%&''(())**++,.//023346778:;;<>??@@AABBCCDDEEFFGh!XX Y>YmY&ZUZZZZ`[}[*\M\p\\L]`[o]`[^`[^v_`[_R`u`R``R`Kaa!babccccdcecEef-fPf&''(FY]^`bcooEooE  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGh#%tO B g&Kjjw !"#%O&'()%+z,-.O012`45478:c;<O>?SABuDEmGHMJK'MNODQR %&&''(FY]^`bboxoxooohhm #$$%())*@AABCDDEEFFGhVVVVVW5WliWWWWWWW X:  !"##$%&&'())**++,,--..//001122334455667899:;<<==>>??@BCDEEFFHHIIJKLUVVWX_dstsn5s4Eftustsd`stsusuvuvCvuFEw)Vxwz?FxwxRC]IyTI@H]z@HzS{{S{z{KS{XK|{7 "##$%&&'())**++,,--..//0011223455667;<<==>>??@BCDEEFFHHIIJKLOPPQUVVWX_dstsn5s4E0shPstststsusvCvuFEw)Vxwz yx y}_C] yz]z@HzS{zS{KS{XK|{7 "##$%&&''()**++,,--..//00112235667;<<==>>??@BCCDDEEFFHHIIJKLOPPQUVVWX_ds`tn5s4E0s^ststsususvCvuF)VEwxwz?Fx y}_C] yTI]zzS{zS{KS{HXK,_{4 "##$%&&')**++,,--..//00112234567;<<==>>??@BCCDDEEFFHHIIJKLLMMNUVVWXQRdsss70s^stststsusvCvuFEwxwz?Fx y}_P yTI]zEwS{zS{KS{XKH,_{7 "#$%%&&')**++,,--..//01223344567899::;;<<==>>??@BCDEEFFHHIIJKLLMMNOPPQUVVWXQRdsvWss70s^ststsusvCvuFEwxwEw:ZIy yGRTI@H]zEwS{{S{{z{KS{H,_{3 "##$%&&'())**++,,-.//00112233467;<<==>>??@BCDEEFFHHIIJKLLMMNOPPQUVVWXQRdsvWssn5%0sustsusvCvuFEw@HxwEw:ZIyW^RIyTIXEw{H{KS{H\{7  !!""#%&&''(())**++,,-.//001122334566778899::;;<<==>>??@BCCDDEEFFHHIIJKLLMMNUVVWXQRdsvWssn5%0sustsvsvuF)VEw@HIyEw^IyW^RIyyXEwz{S{{S{{S{{KS{H^|S{<  !!""##$$%%&&')**++,,--..//00112233445566778899::;;<<==>>??@@ABCCDDEEFFHHIIJKLLMMNOPPQUVVWXs$ss%0sustsZsvsvuCvu]EwIyEw]Iy yGFIyTIXzEwz{S{{S{{z{KSS{{HF|{:  !!""##$%&&''(*++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFHHIIJKLLMMNUVVWXQR$ss%0sustvsZsvsvCvu]EwIyEw]Iy yGC]IyTIEwzEwz{S{{S{{S{{KSS{{S{HF{+  !!""##$%&&''(*++,,-.//001122367=>>??@@AABBCCDDEFHHIIJKLLMMNUVVWXQRBss%ftsZsvsvCvu]EwIyEw]IyGRIyTIEw{KSS{{S{HF{1  !!""##$%&&''()**++,,-.//0011223566778899::;;<<==>>??@@AABBCCDDEFHHIIJKLUVVWXQR$ss%ftsZsvsvCvu]EwIy yEw]IyGRGyEwz{S{{S{{S{HVSS{{S{HF{6  !!""##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFHHIIJKLQRRSX[$ss%ftstsZsvsvCvuB[SIy yEwxIy yRC]GTIEwzEwz{S{{S{{S{HKSS{{S{HF{6  !!""#$%%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEFHHIIJKLQRRSX\$ss7ftstsZsvsvCvuB[yIy yIyxIy y[\GTIEwzEwz{S{{S{{S{HKSS{{S{HF{9  !!""##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFHHIIJKLQRRSX\$vWs@s70stsZsvsvCvuB[yIy yIyxIy y[\GTIEwzEwz{S{{S{{S{HKSS{{S{HFS{{-  !!""#$%%&&''()**++,,-.//001122367<==>>??@@AABBCCDDEEFFHHIIJKLQRRSX[$s@s6ftsZsvsvCvuB[b\Iy yIyxIy[RGyEw{HKSS{{S{HFS{{-  !!""##$%&&''()**++,,-.//001122367=>>??@BCCDDEEFFHHIIJKLQRRSX[$QRs@s7ftsvsZsvsvCvuB[yIy yIyxIy[RGIyEw{VS{H\|{-  !"##$%&&')**++,,-./0112233445679::;<==>>?BCCDDEEFFHHIIJKLPQRSXQR$s=Qs70usZsvCvvCvuB[Ew:ZIyxwIyRGIyEwXEw{K{HV{HF|{1  !"##$%&&')**++,,--..//0011223679::;<==>>?BCCDDEEFFHHIIJKLNOOPPQRSTUUVXQR$s=Qs60usZsvCvvCvuB[Ew:ZIyxIyGRFGIyEw{K{HV{HQ|{0  !"##$$%%&&')**++,,--..//001122367899::;=>>?BCCDDEEFFHHIIJKLNOOPPQRSXQR$s=Qs60usZsvCvvXN-OuB[Ew:ZIyxIyGRGGIyEw{HK{V{HQ|{/  !"##$$%%&&')**++,,--..//001122367899:<==>>?BCCDDEEFFHHIIJKLNOOPPQRSXQR$s=Qs60usZsCvv-OXNuB[Ew:ZIyxIyGRGGIyEw{H{HV{HQS{{1  !"##$$%%&&')**++,,--..//001122367899::;<==>>?BCCDDEEFFHHIIJKLNOOPPQRSXQR$s=Qs=0usZsvCvvXNCvu [Ew:ZIy yIyGRGGIyEw{HK{HV{HQS{{3  !"##$%&&')**++,,--..//001122334456778899::;<==>>?BCCDDEEFFHHIIJKLNOOPPQRSXQR$s=Qs=0usZsvCvv-OCvIEw:ZIy yIyGRYGIyEwZEw{S{HV{HK{HQS{{5  !"##$$%%&&''()**++,,--..//001122334456778899::;<==>>?BCCDDEEFFHHIIJKLNOOPPQRSSTTUXQR8,s=Qs=0usvCvvCvuCvIzEw:ZIy yIyGRYGIyEwzEw{S{HV{HV{HQS{{9  !"##$%&&''()**++,,--..//001122334455667899::;;<<==>>?BCCDDEEFFHHIIJKLNOOPPQRSSTTUXQR8,s=Qs=0usYstsvCvvuCvIzEw yIy yIy?FTYGIyEwzEwz{HK{S{HK{HQS{{,  !"#%&&''(())**+.//001122367899::;=>>?BCCDDEFHHIIJKLNOOPPQRSSTTUXQR8,s=Qs=0usvCvvuIzEwz yIyTYGIyEw{HK{V{YQ{-  !"#%&&')**+.//001122367899::;=>>?BCCDDEEFFHHIIJKLNOOPPQRSSTTUXs8,eY=Qs=0usYsvCvvuIz yIyTYGIyEw{HK{V{YQS{{.  !"#%&&''(())**+-..//0012367899::;=>>?BCCDDEEFFHHIIJKLNOOPPQRSSTTUXs$eY=Qs60svsvCvvuIEw yz yIyGTYIyEw{HK{V{HQS{{1  !"#%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFHHIIJKLNOOPQRRSSTTUXQR$s=Qs70usvsvCvvuIz yz yIyGTYRIyXEw{HK{V{HQS{{1  !"#%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFHHIIJKLNOOPPQQRRSSTTUXQR$s=Qs70ustvCvvuIzIyz yIyGRTRIyXEw{HK{V{HQS{{0  !"##$%&&''(())**+-..//001122367899::;=>>?BCCDDEEFFHHIIJKLNOOPQRRSXQR$vW=Qs70usvWstvCvvUuXzIyz yIyGRTRIyEw{3XK{V{HQS{{ZZYaaY``o__oaaoZZ``ooZZ__Yo__aaoY^_oZZaaooZZ``Yo^^``ooZZaaYoZZ__oo``woefddef/ #$$%&'())**+./67@AABBCCDDEEFFGhyffgTggg5hvhhh-itiihih=jxj=jjkAkkAkk lkQl3  !!""##$%&&''(())**+-..//00112233467899::;=>>?BCCDDEEFFHHIIJKLNOOPQRRSXQR8,s=Qs70usvWstsvCvPvhPuIzIyz yIyGRTRIyWEw{3XK{V{HQW{2  !!""##$%&&''(())**+-../122367899::;=>>?BCCDDEEFFHHIIJKLNOOPQRRSSTTUXQR8,s=Qs70ustsvWsvCvPvhPuIzIyz yIyGRIyEw{HK{V{HQW{.  !"#%&&''()**++,,--..//0012367899::;=>>??@BCCDDEEFFHIJKLNOOPSTTUX9Vs=Qs70us7WsvCvvuIzEwxy{IyGRTIyEw{bVK{{S{HQS{{0  !"##$$%%&&''()**++,,-./1223455667899::;=>>??@BCCDDEEFFHIJKLNOOPSTTUX9 Rs=Qs70ustsvCvvCvuCvIzEwxy{IyRIyEw@HEw{bVK{{S{HQS{{8  !"##$%&&''()**++,,--..//00112233445566778899::;;<<==>>??@BCCDDEEFFHIJKLNOOPSTTUX$ Rs=Q*70uststsvCvvhPuIzEwxwyS{Iy yRTR yEwz@HEw{S{bVV{S{{{S{HQS{{7  !"##$$%%&&''()**++,,--../12233445566778899::;;<<==>>??@BCCDDEEFFHIJKLNOOPSTTUX9 Rs=Qs70uststsvCvvhPCvuIUEwxyS{Iy yR yEwz@H)V{S{bVV{S{{{S{HQS{{3  !"##$$%%&&''()**++,,--../122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPSTTUX9 Rs=Qs70ustsvCvvhPCvRI)VEwxy{IyGRIyEw@H)VK{HKF{{S{HQS{Q4  !"##$$%%&&''()**++,,--..//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPX$ Rs=Qs%70ustsvCvvhPCvRIUEwxy{IyxwRTRKEw@H)VK{HKF{{S{HQS{{7  !"##$$%%&&''()**++,,-.//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPVWWXX9 Rs=Qs%73uststsvCvvhPCvRIUEwx I{IyRTRKEw@HSK{HKF{{S{HQS{{9  !"##$$%%&&''()**++,,-.//001122345566778899::;;<=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXX9 Rs=Qn5%73uststsvCvvhPCvRIUEwx I{IyRTRIyEw@HSK{HKF{{S{HQS{{6  !"##$$%%&&')**++,,-.//0011223455667789::;=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXXTU Rs=Qn5%@93ustvtsvCvvUuRIEwx I{IyRTRIyEw@HSK{K{{S{HQS{{9  !"##$$%%&&''(())**++,,-.//001122345566778899:=>>??@BCCDDEEFFHHIIJKLNOOPVWWXXTU Rs=Qn5%93uststsvsvCvvhPuRIzEw@Hx I{IyPTRIyEw@HSK{H{{S{HQS{{,x;  !"##$$%%&&''()**++,,-.//001122345566778899:=>>??@BCCDDEEFFHIJKLNOOPSTTUVWWXXU Rs=Qn57q83uststsvsvsvCvvhPuRIzEwx I{IyPTRIyEw@HSK{H{{S{HQS{{:  !!""##$$%%&&''()**++,,-.//0011223346778899:=>>??@@AABBCCDDEEFFHIJKLNOOPSTTUVWXT Rs=Qn57 73ustsvsvsvCvuvhPuRIzEwx I{IyPTRxwEw@HK{H{{S{F{HQS{{<  !!""#$%%&&''()**++,,-.//001122334566778899:=>>??@@AABBCCDDEEFFHIJKLNOOPSTTUVWXT Rs=Qn56 73hPsQRstsvsQRsvCvuvuRIgTEwxxw{IyPTRxwEw@HSK{H{{S{F{HQS{{:  !!""#$%%&&''()**++,,-.//001122334566778899::;=>>??@BCCDDEEFFHHIIJKLNOOPSTTUVWXGS Rs=Qn5t53hPsQRsvsQRsvCvuvuRISEwxxw{IyPyRxwEw@HSK{HK{{S{HQS{{8  !!""#$%%&&''(())**++,,-.//00112233445566778899:=>>??@CDDEEFFHHIIJKLNOOPVWXGS Rs=Qn5t03hPsQRsvsQRsvCvuvuRIJEwIyxIy{IyPyRxwEw@HEw@HK{H{{S{QS{{,x:  !!""#$%%&&''(())**++,,-.//00112233445566778899::;=>>??@CDDEEFFHIJKLNOOPVWX3 Rs=Q3t03tsQRsvsQRstsveGuvuRIJEwIyxIy{IyPyRxwEw@HEw@H M{H{{{S{QS{{?  !!""#$%%&&''(())**++,,-.//00112233445566778899::;=>>?BCCDDEEFFHIJJKNOOPQRRSTUUVVWX2dst=QQ.t0thPstsvNststsueGuPuQIJEwIyx-L{IyPTI INO@HEw@H M{H{{{{HQS{P@  !!""#$%%&&''(())**++,,-.//00112233445566778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVWXX8,tsQ.t0thPstsvNststsueGuPufOIJEwIyx-L{IyPTIyNO@HEw@H M{H{H{{S{{S{{H|S{P=  !!""#$%%&&''(())**++,,-.//00112233445566778899::;;<=>>?BCCDDEEFFHIJJKNOOPTUUVWXX8,tsQ.%0ttstsvNststsueGuv-OfOIJEwIy y-L{IyPy INO@HEw@H M{H{H{O{H|S{JC  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVWXX8,#tsQ.NftttstsvNststsuCvuvXN-OfOIJEwIy y-L{xwIy~Ly INO@HEw@H M{HS{H{OS{{S{HH|S{J?  !!""##$$%%&&''(())**++,,--..//0011223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX8,#tsQ.VJftttstsNststsueGuvXNsFIJEwxw yqM{xwIy~Ly INLEw M{HKH{{S{{S{HXK|S{J=  !!""##$$%%&&''(())**++,,--..//0011223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX8,$tsw,VJftttsnuststsueGuvusFIJEwxw yqM{xwIy~LMyxwLEw M{H{H{{S{{S{Ha||S{J>  !!""##$$%%&&''(())**++,,--..//01223346778899::;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX8,$tsw,VJftttsJsnustsvsueGuvusFIJEwxw yy{xwIy~LyxwLEw M{H{H{{S{{S{HXK|S{J;  !!""##$$%%&&''(())**++,,--..//00112233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX8,$tssVJftttsJsnustsueGuvusFIJEwxw y-L{xwIyGy IIy@HEwK{K{{S{{S{{a||S{J<  !"##$$%%&&''(())**++,,--..//00112233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVXds$tssVJfttsJsvnuststsueGvusFIJEwxw y-L{xwIyKy IIy@HEwH{K{{S{{S{{XK|S{J;  !"##$$%%&&''(())**++,,--..//012233467789::;=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX#$ts*VJfttsJsvnuststsueGvusFIJEwxw yy{xwIyKyIy@HEwH{K{{S{{S{{a||S{J;  !"##$$%%&&''(())**++,,--..//01223346778:;;<=>>??@@AABBCCDDEEFFHIJJKNOOPTUUVX#$tssVJfttsJsvnuststsueGvusFIJEwxw yTI{xwIyKy y@HEwH{H{{S{{S{{XK|S{J9  !"##$$%%&&'())**++,,--..//01223346778:;;<=>>?@AABBCCDDEEFFHIJJKNOOPTUUVX#$ss%fttusts5unuststvueGvusFIEwxw yI{xwIyGy y@HEwH{S{{{{S{{H|S{J;  !"##$$%%&&'())**++,,--..//0011223346778899::;;<=>>?@AABBCCDDEEFFHIJJKNOOPTUUVX'$ss%fttsts5unuststvueGvusF wEwxw y?F{xIyF ITI y]zEwz{S{{z{{{S{{H|S{{6  !"##$$%%&&'())**++,,--..//0011223346778:;;<=>>?ABBCCDDEFHIJJKNOOPTUUVWXXo%$ss%ft Gs5unuststvueGvusF wEwxw yGIyxwIyGIyy y@HEwH{H{{{FH|{ %&&''(FZ^_abcooxooo %&&''(FZZ[^_abcooooo_aoZZ_aYoZZ_ao_`aaoY_`o_`wo^`o_awo_`aaoYY_`oYY^`o^`woZZ_awo #$$%())*,-@AABCDDEEFFGhVVVVVW5WliWWWWWlllllm %&&''(FZ^_abcooxoxooo %&&''(FZ^_abcooxooo %&&''(FZ^_abcooxooxooo&''(FZ^_abcooooo %&&''(FZZ[[\^_abcooxoxoo,xo&&wdeff &''(FZZ[[\^_abcoooo,xo %&&''(FZZ[[\^_abcooxoo,xo &''(FZZ[[\^_`aabcoooo,xoY %&&''(FZ^_`acooxooo&''(FY^_`bcooooo %&&''(FY]^^_`bcooxooo %&&''(FYYZ]^^_`bcooxooo %&&''(FYYZ^_`bcooxooo %&&''(FY^_`bcooxooo #$$%%&&''(FYYZ^_`bcoxoxoxooo %&&''(FYYZZ[^_`bcooxooo %&&''(FYZ[]^^_`bcooxooo &''(FYZ[^_`bcooooo &''(FYYZ^_`bcooooo %&&''(FYYZ]^`bcooxoxooo %&&''(FY]^`bcooxooo %&&''(FYYZ]^`bcooxooo %&&''(FYZ[[\]^`bcooxooo %&&''(FZZ[^_abcooxox0oo %&&''(FZ^_abcoox0oo &''(FZZ[^_`aabcoooooY %&&''(FYYZ^_`bcooxoxooo#$$%%&&''(FYYZ^_`bcooxoxoxooo %&&''(FY]^`bcoxoxooo%&&''(FZZ[[\\]^_abcooxox0o,xo #$$%&''(FZZ[^_abcooxo0oYo %&&''(FZZ[^_abcoxoooo &''(FZZ[[\]^^_abcoooo,xo %&&''(FY^_`bcooxoxooo #$$%%&&''(FY^_`bcooxoxoxooo &''(FYYZZ[^_`bcooooo %&&''(FY]^`bcooxoxooo "##$%&&''(FY]^`bcooxoxooo %&&''(FZZ[[\^_abcooxox0o,xo %&&''(FYYZZ[]^^_`bcooxooo %&&''(FYZ[^_`bcooxooo %&&''(FZ^_`aabcooxooo &''(FYZ[^_`bcooxoooo %&&''(FY]^`bbooxooo #$$%&''(FZZ[^_abcooo0oYo %&&''(FZ^_abcoxoxooo &''(FY^_`bcooxoooo %&&''(FY^_`bcoxoxooo "##$%&&''(FY]^`bcooxoxoxooo &''(FZZ[[\^_abcoo0oo,xo %&&''(FY^_`bcoxoxooo %&&''(FYYZZ[]^`bcooxooo %&&''(FYYZZ[^_`bcooxoxooo %&&''(FYYZ[\]^`bcooxooo %&&''(FZZ[^_abcoox0oo $%%&&''(FZZ[^_abcooxo0ooo#$$%%&&''(FY]^^_`bcooxoxoxooo &''(FYYZZ[^_`bcooxoooo %&&''(FYYZZ[]^`bcooxoxooo%&&''(FYYZZ[[\^_`bcooxoxoo,xo #$$%%&&''(FYZ[^_`bcooxoxooo $%%&&''(FZZ[^_abcooxoxo0ooo %&&''(FZ^_abcoooxooo &''(FZZ[[\^_abcoooo,xo %&&''(FY^_`bcooxoxooo #$$%&''(FZZ[^_abcooxoo0oYo &''(FZZ[^_abcooooo &''(FZ^_`aabcoooooY &''(FY^_`bcooxoooo %&&''(FY[\]^`bcooxooo %&&''(FZZ[^_abcoox0oo #$$%%&&''(FY]^^_`bcooxoxooo &''(FZ^_abcooxoooo %&&''(FZZ[[\]^^_abcooxoo,xo %&&''(FY]^`bbooxoxooo %&&''(FZZ[[\\]^_abcoox0o,xo %&&''(FZZ[[\^_abcooxooo &''(FZZ[[\^_`aabcoooo,xoY %&&''(FY]^`bcooxoxooo %&&''(FZZ[[\\]^_abcoox0oo %&&''(FZZ\^_abcoox0oo %&&''(FZZ[^_abcooxox0ooo %&&''(FZZ[^_abcoo0oo $%%&&''(FZ^_abcooxxooo&''(FZ^_`acooooo #$$%%&&''(FY^_`bcooxoxooo %&&''(FY]^`bbccooxooo %&&''(FZZ\\]^_abcoox0oo &''(FZZ[^_abcooxo0ooo #$$%%&&''(FZZ[^_abcooxox0oo &''(FYYZ^_`bcooxoooo &''(FYYZZ[]^^_`bcooooo %&&''(FZZ\\]^_abcoox0oo %&&''(FZZ[^_abcoox0oYo #$$%&''(FZZ[^_abcooxo0oo &''(FYYZ]^^_`bcooxoooo #$$%%&&''(FYYZZ[^_`bcooxoxooo &''(FZZ[^_abcoo0oYo $%%&&''(FZZ\\]^_abcooxx0oo #$$%&''(FZZ[[\^_abcooxo0o,xo $%%&&''(FZZ\^_abcooxx0oo &''(FZZ[[\^_abcoo0o,xo &''(FZZ[^_abcoo0oo &''(FZZ[[\^_abcooxooo,xo $%%&&''(FZ^_abcooxx0oo &''(FYYZ]^^_`bcooooo &''(FY]^^_`bcooooo !""#%&&''(FY]^`bcooxooxooo %&&''(FYZ[]^`bcooxooo %&&''(FZZ\^_abcoox0oo %&&''(FZ^_abcoxoxooo %&&''(FZZ[^_abcooxooo %&&''(FYYZ]^`bbccooxooo &''(FY^_`bbccooooo !""#%&&''(FY]^`bcooxoxoxooo %&&''(FZZ[^_`aabcooxooo &''(FYZ[[\^_`bcoooo,xo#$$%%&&''(FYYZZ[^_`bcooxoxoxooo %&&''(FZ[\\]^_abcooxooo %&&''(FZZ[[\^_abcoox0oY,xo %&&''(FZ[\\]^_abcooxoo,xo "##$%&&''(FYYZ]^`bcooxoxooo $%%&&''(FYYZ^_`bcooxxooo %&&''(FZ^_abcooxoxooo &''(FYYZZ[[\^_`bcoooo,xo &''(FZ^_`aabcooooo &''(FZZ[^_`aabcooooo $%%&&''(FZZ\^_abcooxxooo %&&''(FZZ[^_abcoox0ooo #$$%%&&''(FY^_`bcoxoxoxooo %&&''(FY]^`bcoxoxoxooo %&&''(FYY[^_`bcooxooo $%%&&''(FZZ[[\^_abcooxxooo #$$%%&&''(FYYZ]^^_`bcooxoxooo #$$%%&&''(FYYZ^_`bcooxoxooo &''(FZZ[^_`acooooo $%%&&''(FYYZ]^^_`bcooxxooo %&&''(FZZ[[\^_abcoox0o,xo $%%&&''(FYYZ^_`bcooxoooo #$$%%&&''(FY^_`bcoxoxoxooo "##$%&&''(FY]^`bcoxoxoxooo #$$%&''(FZ^_abcooxoooo %&&''(FYYZ]^`bcoxoxoxooo #$$%%&&''(FYYZ^_`bcoxoxoxooo $%%&&''(FZ^_abcooxoxxooo %&&''(FZZ[^_abcooxoxooo #$$%&''(FZZ[^_abcooxoxo0oYo %&&''(FZ^_abcooxoxoxooodeffddef &''(FZZ[^_`aabcooEooY %&&''(FYYZ^_`bcooxoxEoo#$$%%&&''(FYYZ^_`bcooxoxoxEoo %&&''(FY]^`bcoxoxEoo %&&''(FZZ[^_abcoxoEoo &''(FZZ[[\]^^_abcooEo,xo %&&''(FY^_`bcooxoxEoo #$$%%&&''(FY^_`bcooxoxoxEoo &''(FYYZZ[^_`bcooEoo %&&''(FY]^`bcooxoxEoo "##$%&&''(FY]^`bcooxoxEoo %&&''(FYYZZ[]^^_`bcooxEoo %&&''(FYZ[^_`bcooxEoo %&&''(FZ^_`aabcooxEoo &''(FYZ[^_`bcooxoEoo %&&''(FY]^`bbccooxEoo #$$%&''(FZZ[^_abcooEo0oYo %&&''(FZ^_abcoxoxEoo &''(FY^_`bcooxoEoo %&&''(FY^_`bcoxoxEoo "##$%&&''(FY]^`bcooxoxoxEoo %&&''(FY^_`bcoxoxEoo %&&''(FYYZZ[]^`bcooxEoo %&&''(FYYZZ[^_`bcooxoxEoo#$$%%&&''(FY]^^_`bcooxoxoxEoo &''(FYYZZ[^_`bcooxoEoo %&&''(FYYZZ[]^`bcooxoxEoo%&&''(FYYZZ[[\^_`bcooxoxEo,xo #$$%%&&''(FYZ[^_`bcooxoxEoo %&&''(FZ^_abcooEoxEoo &''(FZZ[[\^_abcooEo,xo %&&''(FY^_`bcooxoxEoo #$$%&''(FZZ[^_abcooxoEo0oYo &''(FZZ[^_abcooEoo &''(FZ^_`aabcooEooY &''(FY^_`bcooxoEoo %&&''(FY[\]^`bcooxEoo #$$%%&&''(FY]^^_`bcooxoxEoo &''(FZ^_abcooxoEoo %&&''(FZZ[[\]^^_abcooxEo,xo %&&''(FY]^`bbccooxoxEoo %&&''(FZZ[[\^_abcooxEoo &''(FZZ[[\^_`aabcooEo,xoY %&&''(FY]^`bcooxoxEoo %&&''(FZZ[[\^_abcoox0oo $%%&&''(FZ^_abcooxxEoo&''(FZ^_`acooEoo #$$%%&&''(FY^_`bcooxoxEoo %&&''(FY]^`bbccooxEoo %&&''(FZZ[[\\]^_abcoox0oo &''(FYYZ^_`bcooxoEoo &''(FYYZZ[]^^_`bcooEoo %&&''(FZZ[[\\]^_abcoox0oo &''(FYYZ]^^_`bcooxoEoo #$$%%&&''(FYYZZ[^_`bcooxoxEoo $%%&&''(FZZ[[\\]^_abcooxx0oo $%%&&''(FZZ[[\^_abcooxx0oo &''(FZZ[[\^_abcooxoEo,xo &''(FYYZ]^^_`bcooEoo &''(FY]^^_`bcooEoo !""#%&&''(FY]^`bcooxoEoxEoo %&&''(FYZ[]^`bcooxEoo %&&''(FZZ[[\^_abcoox0oo %&&''(FZ^_abcoxoxEoo %&&''(FZZ[^_abcooxEoo %&&''(FYYZ]^`bbccooxEoo &''(FY^_`bbccooEoo !""#%&&''(FY]^`bcooxoxoxEoo %&&''(FZZ[^_`aabcooxEoo &''(FYZ[[\^_`bcooEo,xo#$$%%&&''(FYYZZ[^_`bcooxoxoxEoo %&&''(FZ[\\]^_abcooxEoo %&&''(FZ[\\]^_abcooxEo,xo "##$%&&''(FYYZ]^`bcooxoxEoo $%%&&''(FYYZ^_`bcooxxEoo %&&''(FZ^_abcooxoxEoo &''(FYYZZ[[\^_`bcooEo,xo &''(FZ^_`aabcooEoo &''(FZZ[^_`aabcooEoo $%%&&''(FZZ[[\^_abcooxxEoo #$$%%&&''(FY^_`bcoxoxoxEoo %&&''(FY]^`bcoxoxoxEoo %&&''(FYYZZ[^_`bcooxEoo $%%&&''(FZZ[[\^_abcooxxEoo #$$%%&&''(FYYZ]^^_`bcooxoxEoo #$$%%&&''(FYYZ^_`bcooxoxEoo &''(FZZ[^_`acooEoo $%%&&''(FYYZ]^^_`bcooxxEoo $%%&&''(FYYZ^_`bcooxoEoo #$$%%&&''(FY^_`bcoxoxoxEoo "##$%&&''(FY]^`bcoxoxoxEoo #$$%&''(FZ^_abcooxoEoo %&&''(FYYZ]^`bcoxoxoxEoo #$$%%&&''(FYYZ^_`bcoxoxoxEoo $%%&&''(FZ^_abcooxoxxEoo %&&''(FZZ[^_abcooxoxEoo %&&''(FZ^_abcooxoxoxEooT4m4m4m4m4m4mm mbstr-1.7.0/src/unicode/fsm/grapheme_break_rev.rs000064400000000000000000000014601046102023000177640ustar 00000000000000// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // // regex-cli generate serialize sparse dfa --minimize --start-kind anchored --reverse --match-kind all --no-captures --shrink --rustfmt --safe GRAPHEME_BREAK_REV src/unicode/fsm/ // // regex-cli 0.0.1 is available on crates.io. use regex_automata::{dfa::sparse::DFA, util::lazy::Lazy}; pub static GRAPHEME_BREAK_REV: Lazy> = Lazy::new(|| { #[cfg(target_endian = "big")] static BYTES: &'static [u8] = include_bytes!("grapheme_break_rev.bigendian.dfa"); #[cfg(target_endian = "little")] static BYTES: &'static [u8] = include_bytes!("grapheme_break_rev.littleendian.dfa"); let (dfa, _) = DFA::from_bytes(BYTES).expect("serialized DFA should be valid"); dfa }); bstr-1.7.0/src/unicode/fsm/mod.rs000064400000000000000000000003471046102023000147360ustar 00000000000000pub mod grapheme_break_fwd; pub mod grapheme_break_rev; pub mod regional_indicator_rev; pub mod sentence_break_fwd; pub mod simple_word_fwd; pub mod whitespace_anchored_fwd; pub mod whitespace_anchored_rev; pub mod word_break_fwd; bstr-1.7.0/src/unicode/fsm/regional_indicator_rev.bigendian.dfa000064400000000000000000000023301046102023000227060ustar 00000000000000rust-regex-automata-dfa-densepP` @0000000  bstr-1.7.0/src/unicode/fsm/regional_indicator_rev.littleendian.dfa000064400000000000000000000023301046102023000234420ustar 00000000000000rust-regex-automata-dfa-densepP` @0000000  bstr-1.7.0/src/unicode/fsm/regional_indicator_rev.rs000064400000000000000000000016561046102023000206730ustar 00000000000000// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // // regex-cli generate serialize dense dfa --minimize --start-kind anchored --reverse --no-captures --shrink --rustfmt --safe REGIONAL_INDICATOR_REV src/unicode/fsm/ \p{gcb=Regional_Indicator} // // regex-cli 0.0.1 is available on crates.io. use regex_automata::{ dfa::dense::DFA, util::{lazy::Lazy, wire::AlignAs}, }; pub static REGIONAL_INDICATOR_REV: Lazy> = Lazy::new(|| { static ALIGNED: &AlignAs<[u8], u32> = &AlignAs { _align: [], #[cfg(target_endian = "big")] bytes: *include_bytes!("regional_indicator_rev.bigendian.dfa"), #[cfg(target_endian = "little")] bytes: *include_bytes!("regional_indicator_rev.littleendian.dfa"), }; let (dfa, _) = DFA::from_bytes(&ALIGNED.bytes) .expect("serialized DFA should be valid"); dfa }); bstr-1.7.0/src/unicode/fsm/sentence_break_fwd.bigendian.dfa000064400000000000000000006102571046102023000220230ustar 00000000000000rust-regex-automata-dfa-sparse  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}~ 8 ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvwxxyyz{||}}~~mTe2[)Lo  ; ^ X  g ~TTTTTmTT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTTT!TTTTTTT%T<SvT=TkewTTXTTTM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY![<B[<BBB!BT[<B[<B[<B[<BTIJ%JKLDLMMNNNOSOjCPQqR=TApW8TTWX#YHYTT; ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvvwwxxyyzz{{||}}~~m T\2[)o B}:uE n 'z g ~TT "##$GHHIRSSTWXXY]H|||4556TUUV]|||]|XYYZ]||!"]|1223VW]|| =>BC]||] MNQRSTUVWX[\\]]|||| #$$%%&())**++,?@@A]|||||STTU]|| '(]||MNNO]||45=>]||&''(]|R:;=>]R1223]R !]RVWWX]R>>?BCCD]{! !!"*++,,--.67789::;=>>?BCCDGHHIJKKLMNNOOPPQQRTUUVYZZ[[\\]]c)cPq7Rg !!""##$$%/00112MNPQQRRSUVVWWX].$9f]]0112566778899::;;<<==>>??@@AABBCDEEFFGGHHIIJJKKLLMMN]mBW~ ;V}= IJJKVWWXYZZ[[\]j#< ..//03445899::;;<<==>]Y4a]-J ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY![<B[<BBB!B[<B[<B[<B[<BT]]]]MN]]^;^^^^_,_a__T``e```aaccW8TdTWXde/YHeYTT "##$GHHIJKKLRSSTWXXY]H||||QRSTUVWX[\\]]|||| !]||&''(./[\\]]|R|| !!"#$$%%&]|||#$-.899::;=>]|||R()=>MNNO]|| 122334;<<=BCDEFGGHKL]R|||| !,--..//0MN]R|||()]|CDNO]|HIQRVWWXZ[[\]|R|!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]0]000>0IEl#\( !!"*++,,--.67789::;;<<==>>??@@AABBCCDEFFGGHHIIJJKKLLMMNNOOPPQQRYZZ[[\\]]RcPqBi)nRg !!""##$$%/00112MNPQQRRSSTTUUVVWWX]&k.$f"c !]0112566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMN])xVBW~"Id?Vx IJJKUVVWWXXYYZZ[[\\]]"s""""#<#c#~..//001123445899::;;<<==>]=Aba=>>?]/ ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTT!TPTsTT<-TJywTTRTTT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24!T!T4TT4T!T!T!T!T5T55T5T<566:6iT66667 75889T95T99T:@TT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTTT!TTTTTTT T< * M p T !!+!B!k"<"#NT#kT#$/T$vTTM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BD<mD<BD<EGBGBEBBEBTGBGBGBGBTIIJ%JKLDLMMNN=NTNNOSOjOPQqRRGR|RSTS9SSSST*TV,VW8TWOTWXX0XYHY_YTT##>>IIKKYYHkR]RMR!'R;;''/[]]ORR "#%%RRR#*+.8::;=RRRO)=NNRR224;=BEFHKORRRR --//N]ORRR(RDNRIQVVWW[[ROR!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]$3HWr/Vk "1Xm| ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU,G b}1FUjogB !!**;;==DDEEQQSSUUVVWWQ$9Ncrt B1166778899>>??@@AABBCCDDEEFFGGHHIIMM8D .CRg JJRRVVWWYYZZ[[\\]]2A]t ..//114499::;;<<==`*?lҥ>> ##>>IIKKYYHkQ7]Q7MQ7!'Q7''/[]]OQ7Q7 "#%%Q7Q7Q7#*+.8::;=Q7Q7Q7O)=NNQ7Q7224;=BEFHKOQ7Q7Q7Q7 --//N]OQ7Q7Q7(Q7DNQ7IQVVWW[[Q7OQ7!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]3BWf>ez 1@g|  ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU&A q%@Udyog- !!**;;==DDEEQQSSUUVVWW{$9Ncr p\1166778899>>??@@AABBCCDDEEFFGGHHIIMM8;2DYn4U JJRRVVWWYYZZ[[\\]]E*];J ..//114499::;;<<==ST@U9UNUUUUҥ>>,5 ^__`hiijjknooprssttuuvvwwxxyyzz{{||}}~~T(m(T($T$T$T$T$T$T$T$T)T))T)T**7*Z*}T***+ + +C,,-&T-CT-.T.NTT##>>IIKKYYHkV/Q7V/!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]3BWf>ez 1@g|  ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU&A \q%@Udyog- !!**;;==DDEEQQSSUUVVWW N{ )\ JJRRVVWWYYZZ[[\\]]E'Tχ;J ..//114499::;;<<==ST@U9UNUUUUV+ ^__`hiijjknooprssttuuvvwwxxyyzz{{||}}~~T(m(T($T$T$T.eT..T.T..//<T/Y////0011T1T2[2T2TT##>>IIKKYYH*V/V/V/]V/MV/!'V/''/[]]V/V/V/ "#%%V/V/V/#.8:=V/V/V/)=NNV/V/224;=BEFHKV/V/V/V/V/ --//N]V/V/V/V/(V/DNV/IQWW[[V/V/V/!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]T,Gb}bbb%:[vb'<K`o ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUUm%@Ua jy '- !!**;;==DDEEQQSSUUVVWW>}%'4Cj )*1166778899>>??@@AABBCCDDEEFFGGHHIIMM'([(j(=((((()))*)?)Z)i))) JJRRVVWWYYZZ[[\\]]''''''("(=(L ..//114499::;;<<== WPe֭֞V>>Ը##>>KKH**]*M*!'*''/[]]V/** "#%%***#.8::;=***V/)=NN**224;=BEFHKV/**** --//N]V/***(*DN*IQWW[[*V/*!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]b\k@g33Zi/ ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUUIII@I[m`b`q``````a aa(aCaXaga|aaa'a-Y !!QQSSUUVVWWHbHHH=yHHH H8HS1166778899>>??@@AABBCCDDEEFFGGHHIIMM'([@?@(@C(@j@@GlG{GGGGGH JJVVWWYYZZ[[\\]]=@=O=d=y==?@ ..//114499::;;<<-w-../ //-/Z>>-#/ ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24T4TT4T>dT>>T>T<>>??AT?^????@ @AATATBfBTBTT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24!T!T4TT4T!T!T!T!T:WT))T)T<:*7:*}T:;*+ ;0;Y<*<=<T=YT=>T.NTT##>>IIKKYYHVOOO]OMO!'O''/[]]fOO "#%%OOO#*+.8::;=OOOf)=NNOO224;=BEFHKfOOOO --//N]fOOO(ODNOIQVVWW[[OfO!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]ŵ 6WrWƟWW/PkWǒǿ1@UdȅȔȵ ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUUô  &AVezġĶ .Ujy ŎW !!**;;==DDEEQQSSUUVVWWZÇÖ8å'N 1166778899>>??@@AABBCCDDEEFFGGHHIIMM-<eGzf+FUv—¸ JJRRVVWWYYZZ[[\\]]ogψ8GV ..//114499::;;<<==WXYYYVYeYzYY>>Wp##>>IIKKYYHVOV/O''/[]]fV/V/#*+.8::;=V/V/V/f224;=BEFHKfV/V/V/V/ --//N]fV/V/V/IQVVWW[[V/fV/!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]Y,b}bbb%:[vb'<K` ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUUi @U jy D - !!**;;==DDEEQQSSUUVVWWC%'4'N #*1166778899>>??@@AABBCCDDEEFFGGHHIIMM-<(j(=K(f(uЖ))*Ы)Z) JJRRVVWWYYZZ[[\\]]'ogovψ'(=(L ..//114499::;;<<==gcgPhh֭hY##>>KKHVV]VMV!'V''/[]]fVV "#%%VVV#*+.8::;=VVVf)=NNVV224;=BEFHKfVVVV --//N]fVVV(VDNVIQVVWW[[VfV!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]    / > Y z  z  zY zl z q8_n4 ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU       + F [ j         - B i ~   7 !!QQSSUUVVWW  / J Y h w    1166778899>>??@@AABBCCDDEEFFGGHHIIMM-<dFyf   * E T u   JJVVWWYYZZ[[\\]] 1FU ..//114499::;;<<U 8>>3 __``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvxxyyzz{{||}}~~GGGGGGG|G;Bߘ8L x/!<K`Js9H)w D ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BD<mD<BD<EBEBBEBTBBTCIJ%JKLDLMMNNNOSOjPQqR;|T2Oa'W8ThTWXYH-YTTM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BD<mD<BD<EGBGBEBBEBTGBGBGBGBTIJ%JKLDLMMNvvNNOSOjvPQqRxCTyy7/pAr=W8T~TWX+YH~bYTTM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BD<mD<BD<EGBGBEBBEBTGBGBGBGBTTIJ%JKLDLMMNNNOSOjPQqRXT2Ol~zW8TTWXhYHYTT"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHGkG|CGYG|G|CG55=TUUV]G|G| !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUVXXZZ\\|||||||||||||||||||||||||||||||  ""$$&'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUXXZZ\]|||||||||||||||||||||||||||||||!!##&&*+003379<BCIKKM]|GG|GGG]Y MOOQQSSUUVWX[\\Y||G|G|G#%%))++..@@J]GGGG|G|,./357799;;==??AACCEEGGIIKKMQSSTTVVYZ||||||||||||||||G||N]|=??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]||||||||||||||||| !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|GY||||||||||||||||||||||||||| ""$$&&((**,-//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|||||||||||||||||||||||||||||||!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMNN||||||||||||||||||||||||G568:;;<=>]GGG|&''(./[\\]]|LGYGY  !!"#$$%%&-ILR]GYGYGYGGG #$)*+,-.899::;=YGGYGYL)=>GHHIJKKNNYGGY 224;<<=BEFGGHKNW[\LYGYYGYG !,--//N]LGYYY()*YGDNP]YG 'IQTUVVWWYZ[[\]YGLGYG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]][Ʀ?DŽDȡ=Ɉ<ʇʺV˹1d̻<o1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]].=v?fÝ R M$3fAī$  ^)\qņ "> -   V   !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]ro8'T88ix888 &8S.pM8  !!""$$%%&-Q+@8UU8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMii~>j?AV%:sM<<==[j]8AGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OAVed|%dvePe..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]>@9A)A)B B=B^CC /DSh)])=>>?])>)-)D ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!BBB!BTBBTIJ%JKLDLMMN@WNNOSOjPQqR]T=.0W8TTWX0YHYTTM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY![<B[<BBB!BT[<B[<B[<B[<BTeIJ%JKLDLMMNfXfoNNOSOjfPQqRguggh2ThUhhhiiFjkHlW8TlTTWXmm~YHnYTT"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHG.G|8G#G|G|8G4556TUUV]|G|G|XZ]||"]|]# MNQSSTUVWX[\\]]#|G|G|G| #$$%%&())**++,?@@A]G|G|G|G|G|STTU]|G| !'(]|G#|MNNO]|G|4568:;;<=>]|GGG|&''(./[\\]]|OG#G#  !!"#$$%%&-ILR]G#G#G#GGG #$)*+,-.899::;=#GG#G#O)=>GHHIJKKNN#GG# 224;<<=BEFGGHKNW[\O#G##G#G !,--//N]OG###()*#GDNP]#G 'IQTUVVWWYZ[[\]#GOG#G!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]6677?7N7i778D889C99:<::;;n;<<7<<==3=T==>>2>e/ !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVYZZ[[\\]]12 2D2qf222 M33:3g3v3A3$4 7 ^404E4l44455/5D 5e1j556"6O !!""##$$%)**+/00112:;;<<==>CDDEEFMNPQQRRSSTTUUVVWWX]/00s01!1N8Y81c1x88881.1p108  !!""$$%%&-///+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM8S,_,,,,--I-|---. .!.`.u..M/AGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8O+AVed|+B++,,,..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]3465)6P)667783 /DSh)=>>?])1)"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHG.G|8G>$G|G|8G]>$ MOOQQSSUUVWX[\\>$||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|G>$|||||||||||||||||||||||||||&''(./[\\]]|OG>$G>$  !!"#$$%%&-ILR]G>$G>$G>$GGG #$)*+,-.899::;=>$GG>$G>$O)=>KNN>$G>$ 224;<<=BEFGGHKNW[\O>$G>$>$G>$GG !,--//N]OG>$>$>$()*>$GDNP]>$G 'IQTUVVWWYZ[[\]G>$GOG>$G!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] /JqpWJ  L    B     n  1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]u?f  M2YA$ C=Ry $9U Z> -   V   !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX] 'T8Y8ix8888(.p08  !!""$$%%&-&+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM8  o > 2G LmMAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OXAVed| K [)..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]@ACO)Cj)CDD!D /DSh)=>>?])=)J ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt$n<Bn<B$B$BTn<Bn<Bn<Bn<BTv%IJ%JKLDLMMNvvNNOSOjvPQqwwxxLxTxxyy7yTyz`{|\W8T|TWX}J}YH~bYTT"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHG.G|EG>$G|G|EG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] /JqpWJ  L    B     ) n  1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]u?f  M2YA$ C=Ry $9U Z> -   V   !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]G 'T8Z8ix8888(.pH8  !!""$$%%&-&+@8AGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OXAVeY|K`)..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]@ACO)Cj)CDD!DE_ /DSh)A ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt$B$B$BTBBT~IJ%JKLDLMMN~~NNOSOj<PQqw6}TKhWW8TTWXEYH]YTT"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHG^G|EGEG|G|EG]E MOOQQSSUUVWX[\\E||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|GE|||||||||||||||||||||||||||568=>]GG|&''(./[\\]]|V/GEGE  !!"#$$%%&-ILR]GEGEGEGGG#$-.899::;=EGEGEV/)=>KNNEGE 224;<<=BEFGGHKNW[\V/EGEEGEGG !,--//N]V/GEEE()*EGDNP]EG'IQTVWWYZ[[\]GEGV/GEG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]p 'NM4'f)j?Z1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]^m?f xY MBo~A$y C/Vwz 7I -   V   !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]^?'T8Z8ix8888.p18  !!""$$%%&-^[^+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM[["[C[\Q>\~\\\]];]V]k]]]^M^:AGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OYBAVeY|YYZZ#ZzZZ..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]IK/L)L)MM3MTN E_ /DSh)=>>?])Iv)"##$=>>?GHHIJKKLRSSTWXXY]GHG^G|G^G|G|G]^ MOOQQSSUUVWX[\\^||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|G^|||||||||||||||||||||||||||&''(./[\\]]|V/G^G^  !!"#$$%%&-ILR]G^G^G^GGG#$-.899::;=^G^G^V/)=>KNN^G^ 224;<<=BEFGGHKNW[\V/^G^^G^GG !,--//N]V/G^^^()*^GDNP]^G'IQTVWWYZ[[\]G^GV/G^G!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]{{e{{{{{|=||}N}}~)~z~C*Q5JC1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]www?fx& xYxn Mxxxxy Ay@$y[y Cyyyzzz0zuzzz zb -   V  !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX]uv:v'T8ix8v.w3pwNwuw8  !!""$$%%&-uu+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM[["rsIs>s\t t!tZt{ttttu&uGMuzAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OqTAVet|qqqqr/rVrk..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]bceB)e])eeff /DSh)=>>?])b6)"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHG.G|8GG|G|8G] MOOQQSSUUVWX[\\||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|G|||||||||||||||||||||||||||&''(./[\\]]|OGG  !!"#$$%%&-ILR]GGGGGG #$)*+,-.899::;=GGGO)=>GHHIJKKNNGG 224;<<=BEFGGHKNW[\OGGG !,--//N]OG()*GDNP]G 'IQTUVVWWYZ[[\]GOGG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]Sn1N54gfhm1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]]l?f  MAn}A$7 ^y]x  -   V   !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]Q>'T8Y8ix8888.p08  !!""$$%%&-ð +@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM8St>Qr¢/PMÃAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8O%AVed|s'<..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]*)E): /DSh)=>>?]))"##$=>>?GHHIJKKLRSSTWXXY]GHG.G|GzG|G|G]z MOOQQSSUUVWX[\\z||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|Gz|||||||||||||||||||||||||||&''(./[\\]]|OGzGz  !!"#$$%%&-ILR]GzGzGzGGG #$)*+,-.899::;=zGGzGzO)=>KNNzGz 224;<<=BEFGGHKNW[\OzGzzGzGG !,--//N]OGzzz()*zGDNP]zG 'IQTUVVWWYZ[[\]GzGOGzG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] Xs0Am6D(=|61 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]O^ʗ?fʾ  M-ZiːA$ C8Mt̪̿̕4U pV -   V  !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX]V'T8ix82.p 48  !!""$$%%&-T+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM8(>U߈ߝ'`uMAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OUAVet|ܔ3~ݱ..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]ͩC)^) /DSh)=>>?]))"##$=>>?GHHIJKKLRSSTWXXY]GHG^G|GzG|G|G1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]O^ʗ?fʾ xn M-ZiːA$ C8Mt̪̿̕4U pV -   V  !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX]u'T8ix82.p 48  !!""$$%%&-T+@8"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHGkG|CGCG|G|CG]C MOOQQSSUUVWX[\\C||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|GC|||||||||||||||||||||||||||&''(./[\\]]|LGCGC  !!"#$$%%&-ILR]GCGCGCGGG #$)*+,-.899::;=CGGCGCL)=>KNNCGC 224;<<=BEFGGHKNW[\LCGCCGCGG !,--//N]LGCCC()*CGDNP]CG 'IQTUVVWWYZ[[\]GCGLGCG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]Id!2} ^'x5z.m1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]] C?fj R M'Af$ C/t F -   V   !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]?o'T88ix888 &8 .pM8  !!""$$%%&-+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMio>j?2G LmMAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OnAVed|de|..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]F9GH)H)IQIIJ\J /DSh)=>>?])E)"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHGkG|CGEG|G|CG&''(./[\\]]|LGEGE #$)*+,-.899::;=EGGEGEL)=>GHHIJKKNNEGGE 224;<<=BEFGGHKNW[\LEGEEGEG !,--//N]LGEEE 'IQTUVVWWYZ[[\]EGLGEG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] YNL4fEVj?Z1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]^?f R MmBoA$  ^/3wf 7I -   V   !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]o?'T88ix888 &8.pM8  !!""$$%%&-k^+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMii[C[j>\~j?\jZj];]Vj]j]k2MkeAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OYBAVed|ddZePeZZ..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]Z%[lL)\)]"M3]U^ C /DSh)"##$=>>?GHHIJKKLRSSTWXXY]GHGkG|GkG|G|G]k MOOQQSSUUVWX[\\k||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|Gk|||||||||||||||||||||||||||&''(./[\\]]|LGkGk  !!"#$$%%&-ILR]GkGkGkGGG #$)*+,-.899::;=kGGkGkL)=>KNNkGk 224;<<=BEFGGHKNW[\LkGkkGkGG !,--//N]LGkkk()*kGDNP]kG 'IQTUVVWWYZ[[\]GkGLGkG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]eCB)t[u_@[1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]>?fe  M%LA$ C 0Qf{ ,o -   V  !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX].y'T8ix8.rp8  !!""$$%%&- +@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMi|> j??T,YzMAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8O AVet|K5h}..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]pqbr)r)s3sfst> /DSh)=>>?])o)##>>KKHk]M!'''/[]]O "#%%#*+.8::;=O)=NN224;=BEFHKO --//N]O(DNIQVVWW[[O!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]'6KZu 2Yn%4[p ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU % @[pՔջ3BW~֢֓ogַҩ !!QQSSUUVVWWn}ԌԛԪԿ j1166778899>>??@@AABBCCDDEEFFGGHHIIMM8DSh .O JJVVWWYYZZ[[\\]]!0WԌ߄߫ ..//114499::;;<<)"7pؔ>>s##>>KKH* ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU % `b@[pՔջ3BW~֢֓ogַҩ !!QQSSUUVVWWMn}ԌԛԪԿ 8 ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvwxxyyz{||}}~~mTe2[)Lo  ; ^ X  g ~TT"%&)+35@AVVVVV \]VV $&(+55VVVV"ZZ\]VVV"$&(+34@AVVVVV"$&(+34@AQQVVVVVV"$&(+55@AVVVVV!V((-2446=PQVVVVVOORXVV%,VOORZVV&,V67SSUUWW\]VVVVVO]V"$%+57ZVVVV$$V ()-126=BBFGHLMMWXZ[VV/OfHV/VOf#$%'==>BDM[\OfVV/V/O+,O&)GHOO9>FSOO#$DMOO!6O69Z[OO+:;>GLLZZOOOff 123:OfO()47<>@BEKORfV/V/V/V/V/;=@@EFV/ff9:VO03PRSTV/V/f !!&&'')-ffV/FIN]fV/"89<=IQ[\V/ffV/fBUYZV/f479ACEGKUUWW[\V/V/V/V/fff-/5@ABCV/V/V/f67SSUUWWX[\]V/V/V/V/OV/KN]OO$O;<==>AOfONRSSOfNTUVOf--/]OO%-0OOBBNOOON]O%3OO V]OO$%&NNQR]]OfOOO NX[[\]OOOf ++fOO EROO!#$QQfOO Q]OO#$'*++,-<=OfOfOfJUVWYZ\\OffOO=HO!YZ\]OOO"%&)+55@ADJNROOOOOOOS]O$)*<<OfO!OMSV]OO !'5:;OffO OfIUO;IZ\OfJXONSUVY\OOO !""$$OOff/58>BBOOO(QWY\OOO !%%/9fOO(79:OfMTV]OO0EGTOOOTXXZ[]]OOOO#%%OO(,./15OOOQTUVOf!!RX\]OOOO !"Of[[O>>OTXO!#$*-VX]]OOOOOCDOBEOIJO[]O$.37Of #$'Of<<O-./1156>MOPS]OOOO]]O<=OWYOMPR[OONOQQUUOff $$))AEJJOOOOOR]OO#,->O]]OfOODKMMOf%1O!Q]OO&'CCOfOGTO!!*+;=Y[OOfONNPRUV\]OOOOIMNOSTOOfOAHIIJKOfO &/29;=HMVfOOOO78O ()-126=BBFGHLMMWXZ[VOOfHOVOf#$%'==>BDM[\OfVOOO.NOMOO>]OI\O()47<>@BEKORfOOOOO +--8;OOO;=@@EFOff03PRSTOOf01PQOOR]O1;;OO !!&&'')-ffO#$GGOO>INYOO59O3<>Z]]OOOFIN]fO,O"R]OO"89<=IQ[\OffOf ?KOODQOBUYZOf.02FKKRRUWOOOOO479ACEGKUUWW[\OOOOfff79O./6=OO(]O!XZ\]OOO-/5@ABCOOOf!ZZ\]OOO"%&)+55@A\\OOOOOO %&)+//NOSSOOOOOO#%')+@AX]OOOOO"%&)+35@AOOOOO \]OO $&(+55OOOO"ZZ\]OOO"$&(+34@AOOOOO"$&(+34@AQQOOOOOO"$&(+55@AOOOOO!O((-2446=PQOOOOOOORXOO%,OOORZOO&,O67SSUUW]OOOOO]O"$%+57ZOOOO$$O$&69?ABDHOOOOO--ONTOLLOJMO.4O"(OCGK]OO #)HKOOO "OTY]OOJSSOO""&&9=?MOfOOKN]Q7Q7$Q7;<==>AQ7OQ7LMONRSSQ7ONTUVQ7O""O66O--/]Q7Q7%-0Q7Q7BBNOQ7Q7N]Q7%3Q7Q7 V]Q7Q7$%&NNQR]]Q7OQ7Q7Q7 NX[[\]Q7Q7Q7O ++OQ7Q7 ERQ7Q7!#$QQOQ7Q7 Q]Q7Q7#$'*++,-<=Q7OQ7OQ7OJUVWYZ\\Q7OOQ7Q7GGO=HQ7!YZ\]Q7Q7Q7"%&)+55@ADJNRQ7Q7Q7Q7Q7Q7Q7S]Q7$)*<<Q7OQ7!Q7MSV]Q7Q7 !'5:;Q7OOQ7 Q7OIUQ7;IZ\Q7OJXQ7NSUVY\Q7Q7Q7 !""$$Q7Q7OO/58>BBQ7Q7Q7(QWY\Q7Q7Q7 !%%/9OQ7Q7(79:Q7OMTV]Q7Q7 O0EGTQ7Q7OTXXZ[]]Q7Q7Q7Q7#%%Q7Q7(,./15Q7Q7Q7QTUVQ7O!!RX\]Q7Q7Q7Q7 !"Q7O[[Q7>>Q7TXQ7!#$*-VX]]Q7Q7Q7Q7Q745OCDQ7BEQ7IJQ7[]Q7$.37Q7O #$'Q7O<<Q7-./1156>MOPS]Q7V/Q7V/ "%&./003345667??@ABBV/V/V/OV/<=Q7WYQ7M ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BD<mD<BD<EGBGBEBBEBTGBGBGBGBTIIJ%JKLDLMMNN=NTNNOSOjOPQqRRGR|RSTS9SSSST*TV,VW8TWOTWXX0XYHY_YTTZZ[[+##$$''FFGGHH  ""(())11AACC 2AP__n}77ҴTV: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTTT!TTTTTTT T< * M p T !!+!B!k"<"#NT#kT#$/T$vTT $%%&6789?@@ABCCDHIMN]||||||KL]|,--.]|MNTU]|"$%%>]V/V/]V/MV/ %%))++FFGGIIRRXXYY[[\\&&&&'' '/'>'M'\'q) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[-B]r)8Sbw%X%s%%%%%& &&-&N&c&~&&..// GGIIJJKKXX[[\\]]fu؄ؓآرPPWZZ[[3H##$$''FFGGHHש׾  ""(())11AACC(O^m||׋ך$&69?ABDHV/V/V/V/V/--V/NTV/LLV/JMV/.4V/"(V/CGK]V/V/ #)HKV/V/V/ "V/TY]V/V/JSSV/V/""&&9=?MV/V/V/V/KN]V/V/$V/;AV/LMV/NSV/NVV/""V/66V/--/]V/V/%-0V/V/BBNOV/V/N]V/%3V/V/ V]V/V/]8]G3 __``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvxxyyzz{{||}}~~GGGGGGG|G;Bߘ8L x/!<K`Js9H)w ; ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvvwwxxyyzz{{||}}~~m T\2[)o B}:uE n 'z g ~TT "$GHHIRSSTWXXY]GG|G|G|G55=TUUV]G|G| !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUVXXZZ\\|||||||||||||||||||||||||||||||  ""$$&'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUXXZZ\]|||||||||||||||||||||||||||||||!!##&&*+003379<BCIKKM]|GG|GGG MOOQQSSUUVWX[\\G||G|G|G#%%))++..@@J]GGGG|G|,./357799;;==??AACCEEGGIIKKMQSSTTVVYZ||||||||||||||||G||N]|=??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]||||||||||||||||| '))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|G||||||||||||||||||||||||||| ""$$&&((**,-//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|||||||||||||||||||||||||||||||!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMNN||||||||||||||||||||||||G568=>]GG|&(]|G-ILR]GGG:G)KNNGG4BEKNW[\GGGG!-//N]GGG*GDNP]GG'IQTVY]GGGG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]  + @C U p   0Q,Yz+=+X81 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]*?f  ) 8 M b }   A $  C ( 7 F8 [ p      8 -   V  !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX]Op8'T8ix8.[p8  !!""$$%%&-+@8UU8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMW>-Bi~&M<<==[jAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OAVet|84..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ](c)))x /DSh)])-)4!!""##$'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828  ;JYh88Ip88$3H82Wf{888 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]6Kx82A\8^w8+88"CXsA8883No8,,--//334[\\]]O8^m8|..//0]:8-778]8+8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8AP_n88==QQRRS]#28\]]8""##))*MOOPPQ]~88-..//00112233445566778899::;;<<==>GHHIYZZ[]8&5P+@Udy8B8W8 !""##$'(())*0112<==AABBCCDUVVWWXXY]Rg8|888$8?~8!""##$$%]8.C899::>>XXMMN]8=FFG]88++,,-]8N]G)-G<]G?]G@MGX]G<=G>]GMG(-HMGG(]GMN]G|KL]|GKT\]GG+-]GG-L]GGJ]G-J]GG=EEJJMM]]GGGGG#]G@]|!"(*]|GG "">>AACDFFQQVVXXZ]GGGGGGGGG!$&&((**..11346688::<<>>AACDIIQQVV[[]]GGGGGGGGGGGGGGGGGGGG((:>BBHHZ]GGGGG8Q|,2334E|G| 9;;>?ABEFKKTWXXYYZZ[]|GGGGG|G|G|!""#-H]|G|| !$$)*33;;]GGGMRRZZ]]GGGGV]G4]G']GW]G=KG]]G-LRT]GGGNTW]GG#@VZGG.]G>]|57]GG)-/]GG0>]GG=@@B]GGG%]G%]GG8]GM]G"]G-GO]G V]GG$'NQRT]GGGG N[GG -G]GG E]GG#$&-QSU]GGGGG Q]GG%*,799;;>]GGGGGG00JUXX[\GGGG]G%%'',,<\|G%&()2255N\GGGGG !##%]GGGG=FGGG/>@@B]GGG(QWY]GGG"-/9GGG(8JG)-T]GG"%..4]GGGF]|-|>Y]GGGGG89>@CG|GG<=]]GG&'./67;]GGGGGBMG%(Z]GG+]G-\\GG++>GJ]GGG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKM\|||||||||||||||||||||||G!!##%%''))++--//113355779;<=||||||||||||||GNPRTV]GGG4>?AACCEEGGIIKKMOQQSSUUWWYY[[]]GG||||||||||||||!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMVXXZZ]]|||||||||||||||||||||||||||!!##%%'(**,,//13557799;;==??AACCEEGGMMSSUUWWYY[[]]||||G|||||||||||||||||||||!!&&(()-//0011223355778OPRTTVX||||G|G|G|||G||| $$))A]GGGGRSV]GGR]GG+.OVXZZ]]GGGGG'DLGG%=[]GG!Q]GG%(,.=CCNW]]GGGGGGG]G!!*:UWY[GGGGNNPRUV\]GGGG!8<=IMS]GGGGG%&-.5=EEMMN]GGGGGG|899:GHMN]|G|G|]|AHJ]GG!"&>HNTU[]GGGGGGG5:>>GGYYG"NNGG-=GACEHY\]GGGG$(NOOP\]]GG|G|-.:;]G|G!$&'((,-112246@BEKORGGGGGGG +-=GG$$&*,-YYZZGGGG|'',-5577<=GGGGG'',-OOTU]]GGGGG$%55GGG//45GG9?ADG]GGG.=GTUV[\]G|GKKG9=GGIKW]GG0Z]]GGGGG ?KNWGGGD]GBX[]GG*.7GG&'-YZ|GGFKKRRUWY]GGGGG!!##%%''))++--//113;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]||||||||||||||||||||||||||||%.345<=>ENU||GG|| #$%,-.56688::<<>EN[\]|GG|GGGG||G %.5>ENRSSTU[[\\]]||||G|G|G "##$%+-.12345:=>EKOPRSSTU[]G|G|G|G|G|G|G|G479ACEGTVVXZ]]GGGGGGG7=IMGG&&-=GG!XZ\]GGG-/5@ADNGGGG "+,/0GGOOQSXZ\]GGGGGGGG+-9<<@MPY[]GGGGGG "),/0GGOORRUUX]GGGGGGGG6;;=OS]GGGG ",,00GGOORRXZ\]GGGGGGGG-/=@VX]GGGG9<<@NP]GGGG  "")+//4699;;>@CEIKX]GGGGGGGGGGG-/]GG"++//GGXZ\]GGGGGG59:<=@]GGGG"++//GGRRXZ\]GGGGGGG:==@NQ]GGGG!++//YZ\]GGGGG+-15<@WGGGG"57PPZZ\]GGGGGOOR]GGG !!##))BBDDOORZ\]GGGGGGGGG##%9>]GGG&&K]GG%+]GG&NNQR]]V/V/V/V/ NX[]V/V/V/ ++V/V/ ERV/V/!#$QQV/V/V/ Q]V/V/#$'-<=V/V/V/V/JWYZ\\V/V/V/V/GGV/=HV/!YZ\]V/V/V/"%&)+55@ADJNRV/V/V/V/V/V/V/S]V/$)*<<V/V/V/!V/MSV]V/V/ !'5:;V/V/V/V/ V/IUV/;IZ\V/V/JXV/ !"$%%&]( =>]||MN]| $%%&())**++,-..//00112233445;<<=EFFGGHHIIJOPQRRSWXXYYZZ[[\\]]  - H c x  !!P!!!!!""+"R5 !!""##$$%%&&''(())**++,-..//001123445566778899::;=>>??@@AABBCCDDEEFFGGHHIMNNOOPPQQRRSSTTUXYYZZ[[\]$Qx,e:O|!Hcx&YOp-..//0]FGGHHIIJJKKLVWWXXYZ[[\\]]1RsOPPQ]wYZZ[[\]Gb"##$$%&''(-..//00112233478899::;;<<==>EFFGGHHIYZZ[]c++1++,,3,N,,' !!""#'(())*0112@AABBCCD]"mԂԝ3NKLLM]|IJMN]|-.45]|()]|BCGHJK]|| !"#)*GHKL]||| "#]|TUXY]||JKRSST]|| !""#%&&'89=>>?MN]|R||KLMN]||$%]|:;<==>AB]|R|KLMN]RMNRSST]|RMNTUVW]|R!""#]R5667]R,--../]||%&,-01]||ABBCMNOP]||MN]|$%34]|| !UV]|| $%&'MNNOPQRS\]]|R||| !MNXYZ[[\]|||R !*++,]R|| !DERS]||!""#$%PQQR]R|| !PQ]|| "#$%&'*++,-.;<=>]|R|R|R IJUVWXXYZ[[\\]]|RR| ]|FGGH]R<=HI]|!"XYZ[[\]|||"#$%&'()+,4556?@ABCDJKMNRS]|||||||RS]|$%()*+;<<=]|R|!"]|LMSTUV]||  !"&'569:;<]|RR| !]|RHIUV]|:;IJYZ\]]|RIJXY]|=>]|=>]|MNSTTUVWXY\]]||| !""##$$%]||RR./5678>?ABBC]|||()PQWXXY\]]||| !"$%%&./9:]R||'(7889:;]|RLMTUUV]|| !]R/0EFFGTU]|| NOTUWXXYYZ[\\]]||||#$$%%&]||'(,--./00156]|||PQTUVW]|R !!"QRXY[\]|||| !"#]|RZ[[\]|=>>?]|STXY]|-.]|1256YZ]||MNXYYZ]||())*01123445?@@AOPPQWXXYZ[]|||||||  !#$$%NOOPXY]|||| !""#$%)*-.UVXY\]]|||||3456]RBCDE]|PQ]|ABEF]|HIJK]|Z[]|#$./2378]|R #$'(]|R$%0156;<<=]|||-.=>MN]||/0013456]#R\]]|  +,,-<==>>?XY]R#R|89>??@]|R;<=>]|VWYZ]|J ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY![<B[<BBB!B[<B[<B[<B[<BT]]]]MN]]^;^^^^_,_a__T``e```aaccW8TdTWXde/YHeYTTNSUVY\V/V/V/ "$$V/V/V//58>BBV/V/V/(QWY\V/V/V/ !%%/9V/V/V/(79:V/V/MTV]V/V/ V/0EGTV/V/OTXXZ[]]V/V/V/V/#%%V/V/(,./15V/V/V/QVV/!!RX\]V/V/V/V/"V/[[V/>>V/TXV/!#$*-VX]]V/V/V/V/V/45V/CDV/BEV/IJV/[]V/$.37V/V/ 'V/<<V/\]V/-56>MS]V/V/V/V/"%&00457<V/V/V/V/V/]]V/&',,==YY[[V/V/V/V/V/V/99;;=AV/V/V/<=V/WYV/,-V/MPR[V/V/NOQQUUV/V/V/ $$))AEJJV/V/V/V/V/TUV/R]V/V/#,->O]]V/V/V/V/DKMMV/V/%1V/!Q]V/V/&'CCV/V/V/GTV/!!*+;=Y[V/V/V/V/NNPRUV\]V/V/V/V/IOSTV/V/V/AKV/ &/29;=HM*V/V/V/V/V/78V/+ ^__`hiijjknooprssttuuvvwwxxyyzz{{||}}~~T(m(T($T$T$T.eT..T.T..//<T/Y////0011T1T2[2T2TT2334]||:;;<=>?@@ABCDEFGJKKLWXXYYZZ[]||||||||!""#]|| #$$%()*+2334:;;]Q7Q7]Q7MQ7"$%%-D-Y-Y-h>]**]*M* %%))++FFGGIIRRXXYY[[\\<<<<'<<<===+) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[112292T2i2222233 3S3b13}3:1:::;;;9;Z;u;;;& ;;< < <;A*V/*NRSS*V/NTUV*V/--/]** !"$%%&]1I1j81j1y8 =>]G#G#]#MN]#G%-0**BBNO**N]*%3** V]**$%&NNQR]]*V/*** NX[[\]***V/ ++V/** ER**!#$QQV/** Q]**#$'*++,-<=*V/*V/*V/JUVWYZ\\*V/V/**=H*!YZ\]***"%&)+55@ADJNR*******S]*$)*<<*V/*!*MSV]**5!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPQRRSWXXYYZZ[[\\]]828(8))/ J)J)k))88Ip88* *U$3H82f*p8****8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]""##)#b###$$I$^$$8%'%6"%i8%%"%& & +8&S8&h&}&C&'"'C'pA8'X'8'((K8(((8..//0]""8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_!"8]8"!"<"]""##))*MOOPPQ]~8!8YZZ[[\]8!|!8"##$$%&''(-..//00112233478899::;;<<==>EFFGGHHIYZZ[]888x  2 e   8!!!=8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]wg888.8Oj8?~8 !""##$$%6778LMMN]8R8r888888'(-.GHMN]|G|G|'(]|GSTVW]G8GMNWX]GGM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY![<B[<BBB!BT[<B[<B[<B[<BTeIJ%JKLDLMMNfXfoNNOSOjfPQqRguggh2ThUhhhiiFjkHlW8TlTTWXmm~YHnYTT !'5:;*V/V/* *V/IU*;IZ\*V/JX*NSUVY\*** !""$$**V/V//58>BB***(QWY\*** !%%/9V/**(79:*V/MTV]**0EGT**OTXXZ[]]****#%%**(,./15***QTUV*V/!!RX\]**** !"*V/[[*>>*TX*!#$*-VX]]*****CD*BE*IJ*[]*$.37*V/ #$'*V/<<*->M**0045V/V/]]*,,==V/V/V/??V/ !"$%%&]=>8>>8 =>]G>$G>$]>$MN]>$GM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!n<Bn<BBB!BTn<Bn<Bn<Bn<BTpIJ%JKLDLMMNfXfoNNOSOjfPQqRguggh2ThUhhhipnq?rps;W8TlTTWXs|sYHnYTT<=*WY*MPR[**NOQQUU*V/V/ $$))AEJJ*****R]**#,->O]]*V/**DKMM*V/6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]8288/ ;JYh88Ip88J$3H82Wf8=8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]  Sz U$88&G8\+88C1RA88<c88..//0]8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_'B8]8x""##))*MOOPPQ]~88YZZ[[\]88"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]888&5P+@Udy8.O8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]g88)D8Y8t8?~8!""##$$%6778]8.C8E8STVW]GEGJ ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt$n<Bn<B$B$BTn<Bn<Bn<Bn<BTv%IJ%JKLDLMMNvvNNOSOjvPQqwwxxLxTxxyy7yTyz`{|\W8T|TWX}J}YH~bYTT%1*!Q]**&'CC*V/*GT*!!*+;=Y[**V/*NNPRUV\]****IMNOST**V/*AHIIJK*V/* HM*V/*78*-BBFGHMZ[*V/H*V/%'=BDMV/**.N*MO*>]*LLZZV/V/12V/TTI\*()47<>@BEKORV/***** +--8;***;=@@EF*V/V/ !"$%%&]II8II8 =>]GEGE]EMN]EG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828W8WX ;JYh88Ip88X4XX$3H82WfX8XXYY'8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]QR R=RdRRRRS?SrSSST8TqTQT8TTQUU18UF+8Um8UUCUVV<ViA8VVV8VW&WM8WzWW8..//0]QQ8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8AP_PQQ,8QG8QbQ}Q""##))*MOOPPQ]~8P8YZZ[[\]8PxP8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8OO8O8&5P+@Udy8OPP98W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]NgN8N8OO.8OC8O^Oy8?~8 $%%&6789?@@ABCCDHIMN]EGEGEGEGEG|,--.]GEGKMNT\]GEG-LLM]GEGJMN]EG-JMN]GEG#-.45]GEG!"(*]|EGBCGHJK]GEGE !"#)*GHKL]EGEGEG "#]GEGTUXY]EGEJKRSST]EGEG !""#%&&'89=>>?MN]GEGV/GEGEGKLMN]EGE$%]EG'-8:;<==>AB]GGEV/EG=KLMGV/-LMNRSST]GGEV/GNTUVW]EV/G""#@VZV/GG5667]GV/G),--/]GEE%&,-0>]EGEG=@@BBCMNOP]GGEGEGN]E%34]EEG V]EE$%&'MNNQRT\]]EV/GEEGE NXYZ[[\]EEGEV/ !*++,-G]V/EGEGG ERS]EEG!#$&-QQRSU]GV/EGEGG Q]EE #$%&'*++,-.799;;<=>]EV/GEV/EGGGV/G00JUVWXXYZ[[\\GEV/GV/GE ]EG%%'',,<@@BBC]EGEGEG(QWY\]]EEEG !"$%%&-/9GV/GEGE(7889:>?]GEG)-TXY]GEG !""#$%)*-2266TUVXY\]]EGEGEGGGEGE3456=[]GV/GG&&CDE]GEGBEF]EGHHIJKMP]GEGGZ[]GE$./2378MEGV/G #$'(MEV/G $%0156:<MNRS]EGEGEGE "#$%&'/001345667<=MSSEGEGV/GV/GEGG[\]]GE %&'(+,,-<==>>YYZZ[[\]GV/GEGV/GV/GEGEG 899::;;<<=>??@ABCG|EGEGEV/EG<=]]EG&'./67;VWYZ]GGGGGEG-\\]]GGV/++,->GJ]GV/GG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||EGEG!!##%%''))++--//113355779;<=||||||||||||||ENOPPQQRTUUV]EGV/GV/G $$))AEFIJJK]EEEEGEGRSTUV]GV/GR]EE #$+,-.=>OVXZZ]]EGV/GEGGE'DKLLMMGEGV/%12=[]EGG!Q]EE %&'(,.=CCNW]]EGV/GGEGGGTU]EG!!*+,:;=UWY[EEGV/GENNPRUV\]EEEE!8<=IMNOSTU]EGGEV/EGAHIIJKL]EV/EG !"&/0129::;=>>HMNNTU[]^GV/GEGEGEGEGGG56789:>>GEGGA ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt$B$B$BTBBT~IJ%JKLDLMMN~~NNOSOj<PQqw6}TKhWW8TTWXEYH]YTT*03PRST**V/01PQ**R]*1;;**!!'')-V/V/*#$GG**>INY**"#V/59*3<>Z]]***FIN]V/*,*"R]**"89<=IQ[\*V/V/*V/ ?K**DQ*BUYZ*V/.02FKKRRUW*****479ACEGKUUWW[\****V/V/V/ !"$%%&]bcb8bb8 =>]G^G^]^MN]^G6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828p8p1pL ;JYh88Ip88pgXp$3H82Wfp8pqqq98 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]jjjjjkk!kTkikkSkllV8llj@l8m m%j@mXmy8m+8m8mn Cn6ncnnA8nVn8ooYo8ooo8..//0]j@jO8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8AP_iiQ,8QG8iij""##))*MOOPPQ]~8ih8YZZ[[\]8i8iS8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8hThu8h8&5P+@Udy8hhh8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]gRgg8g8gg8h8hh98?~8 $%%&6789?@@ABCCDHIMN]^G^G^G^G^G|,--.]G^GKMNT\]G^G-LLM]G^GJMN]^G-JMN]G^G#-.45]G^G!"(*]|^GBCGHJK]G^G^ !"#)*GHKL]^G^G^G "#]G^GTUXY]^G^JKRSST]^G^G !""#%&&'89=>>?MN]G^GV/G^G^GKLMN]^G^$%]^G'-8:;<==>AB]GG^V/^G-LMNRSST]GG^V/GNTUVW]^V/G),--/]G^^%&,-0>]^G^G=@@BBCMNOP]GG^G^GN]^%34]^^G V]^^$%&'MNNQRT\]]^V/G^^G^ NXYZ[[\]^^G^V/ !*++,-G]V/^G^GG ERS]^^G!#$&-QQRSU]GV/^G^GG Q]^^ #$%&'*++,-.799;;<=>]^V/G^V/^GGGV/G00JUVWXXYZ[[\\G^V/GV/G^ ]^G=HI]^G !""+,/0GGOORRXXYZ\]^GGGGGGG^^"#$%&'()+,-/4556:@ABCDJKMNRS]^G^G^GG^G^G^G^GS]^$)*+;<<@]^V/G^G!$$&]^GGMSTUV]^G^ !"&'5:;<]^GV/GV/^G !!#]^V/GGIUW]^G9:;IJYZ\]]G^GV/GJXY]^G %&()2255NSTTUVWXY\GGGG^G^G^ !""##$$%]^^V/GV/G/5678>@@BBC]^G^G^G(QWY\]]^^^G !"$%%&-/9GV/G^G^(7889:>?]G^G)-TXY]G^G !""#$%)*-2266TUVXY\]]^G^G^GGG^G^&&CDE]G^GBEF]^GHHIJKMP]G^GGZ[]G^$./2378M^GV/G #$'(M^V/G $%0156:<MN]^G^G/0013456MSSGV/GV/GG[\]]G^  +,,-<==>>Y]GV/GV/GV/GG89>??@CG|GV/G<=]]^G&'./67;VWYZ]GGGGG^G!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||^G^G!!##%%''))++--//113355779;<=||||||||||||||^NOPPQQRTUUV]^GV/GV/G $$))AEFIJJK]^^^^G^GR]^^ #$+,-.=>OVXZZ]]^GV/G^GG^'DKLLMMG^GV/%12=[]^GG!Q]^^ %&'(,.=CCNW]]^GV/GG^GGGTU]^G!!*+,:;=UWY[^^GV/G^NNPRUV\]^^^^!8<=IMNOSTU]^GG^V/^GAHIIJKL]^V/^G  !"&>HMNNTU[]^GV/GG^GGG56789:>>G^GG -.ABBCEFGHMNYZ[\]^GV/GH^GV/G $%'(<=BCCDMNNOOP\]]GV/G^G^G|G|-.NO]G^G!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||^|GFLN\]]GG^%%--55==>]GGGG^KLLNYZZ[]GV/GV/G0123]GV/GI\^ '()*-47<>@BEKORGV/G^^^^^ +--.78;<=^^G^G9:;=>?@@ADEFG]G^GV/GV/GKKLLGV/9=^G034IJMNYZ]G^G^G!"#$-LMS]GV/GGG59:=^G3<==>Z[\]]^G^G^DFIJMN]GV/G^,-]^G"R]^^ "+789:;<=>HIQRZ[\]]^GV/GV/G^GV/G ?KNW^^GDQR]^GBUVXYZ[]^GV/G*.7\]GGV/ -.0112FKKRRUWY]G^G^^^^G 479ACEGKLTUUVVWWXZ[\]]^^^^GV/GV/GV/G79:=IM^GG&&--./056=GG^G^(]^!XZ\]^^^-/5@ABCDN^^^V/G !""+,/0GGOOQSXYZZ\]^GGGGGGG^^"#$%&'()+-45569<<@ABMPY[[\\]]^G^G^G^GG^GGG^G!""),/0GGOORRUUXYZZ[[\]G^GGGGGGGG^G^ !$%&'()+,.//06;;=MNOSST]^G^G^G^GGG^^G !"",,00GGOORRXYZZ\]G^GGGGGGG^^ #$$%'(()+,-/=@ABVX]^G^G^GG^G^ !""+,/0GGOORRXYZZ\]G^GGGGGGG^^ "#$%&'()+,23569<<@ABNP]^G^G^G^GG^GG "")+//4699;;>@CEIKX[\]G^GGGGGGGGGG^  !#$&''(+,-/4556]^G^G^GG^G"++//GGXYZZ\]^GGGG^^ "##$&''(+,234559:<=@AB]^G^G^G^GGG^G !""++//GGRRXYZZ\]^GGGGGG^^"##$&''(+,2345:==@ABNQQR]^G^G^G^GG^G^G!++//YZ\]^GG^^ "##$&''(+-1556<@ABW^G^G^G^G^G!""57PPZZ\]G^GGGGG %'((),-23344556=>OPQR]G^G^G^G^G^GOORXY]G^^G%,-]^G !!##))BBDDOORZ\]GGGGGG^^G##%%&,-9>]GG^GG 5678RSSTTUUVVWWX[\]G^G^G^G^G^&&KNO]GG^"##$%+5667Z[]^G^^G^G#$$%]G^G()-.56=>ABBCEFGHLMMNVWXYYZ[\]^EGEGV/GHE^GEGV/G"#$%'(<==>BCCDMNNOOPZ[\]]GEV/G^EGEG|GE|*+,--.:;]GEG|G-.NO]GEG%&)*FGHI]GEGEG89>?EFST]GEGEG"#$%CDMN]GEGEG !67]GEG569:YZ[\]GEGEG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||E|GFLN\]]GGE%%--55==>]GGGGE +,9:;<=>GHKLLNYZZ[]EGEGEGV/GV/G !0123:;]GEGV/EGI\E '()*-47<>@BEKORGV/GEEEEE +--.78;<=EEGEG9:;=>?@@ADEFG]GEGV/GV/G9:;=^EG034IJMNYZ]GEGEG59:=EG3<==>Z[\]]EGEGEDFIJMN]GV/GE,-]EG"R]EE "+789:;<=>HIQRZ[\]]EGV/GV/GEGV/G ?KNWEEGDQR]EGBUVXYZ[]EGV/G -.0112FKKRRUWY]GEGEEEEG 479ACEGKLTUUVVWWXZ[\]]EEEEGV/GV/GV/G79:=IMEGG&&--./056=GGEGE(]E!XZ\]EEE-/5@ABCDNEEEV/G !""+,/0GGOOQSXYZZ\]EGGGGGGGEE"#$%&'()+-45569<<@ABMPY[[\\]]EGEGEGEGGEGGGEG!""),/0GGOORRUUXYZZ[[\]GEGGGGGGGGEGE !$%&'()+,.//06;;=MNOSST]EGEGEGEGGGEEG !"",,00GGOORRXYZZ\]GEGGGGGGGEE #$$%'(()+,-/=@ABVX]EGEGEGGEGE !""+,/0GGOORRXYZZ\]GEGGGGGGGEE "#$%&'()+,23569<<@ABNP]EGEGEGEGGEGG "")+//4699;;>@CEIKX[\]GEGGGGGGGGGGE  !#$&''(+,-/4556]EGEGEGGEG"++//GGXYZZ\]EGGGGEE "##$&''(+,234559:<=@AB]EGEGEGEGGGEG !""++//GGRRXYZZ\]EGGGGGGEE"##$&''(+,2345:==@ABNQQR]EGEGEGEGGEGEG!++//YZ\]EGGEE "##$&''(+-1556<@ABWEGEGEGEGEG!""57PPZZ\]GEGGGGG %'((),-23344556=>OPQR]GEGEGEGEGEGOORXY]GEEG%,-]EG !!##))BBDDOORZ\]GGGGGGEEG##%%&,-9>]GGEGG 5678RSSTTUUVVW]GEGEGEGE&&KNO]GGE"##$%+5667Z[]EGEEGEG#$$%]GEG $%%&6789?@@ABCCDHIMN]>$G>$G>$G>$G>$G|,--.]G>$GKMNT\]G>$G-LLM]G>$GJMN]>$G-JMN]G>$G#-.45]G>$G!"(*]|>$GBCGHJK]G>$G>$ !"#)*GHKL]>$G>$G>$G "#]G>$GTUXY]>$G>$JKRSST]>$G>$G !""#%&&'89=>>?MN]G>$GOG>$G>$GKLMN]>$G>$$%]>$G'-8:;<==>AB]GG>$O>$G=KLMGO-LMNRSST]GG>$OGNTUVW]>$OG""#@VZOGG5667]GOG),--/]G>$>$%&,-0>]>$G>$G=@@BBCMNOP]GG>$G>$GN]>$%34]>$>$G V]>$>$$%&'MNNQRT\]]>$OG>$>$G>$ NXYZ[[\]>$>$G>$O !*++,-G]O>$G>$GG ERS]>$>$G!#$&-QQRSU]GO>$G>$GG Q]>$>$ #$%&'*++,-.799;;<=>]>$OG>$O>$GGGOG00JUVWXXYZ[[\\G>$OGOG>$ ]>$G%%'',,<$G !""+,/0GGOORRXXYZ\]>$GGGGGGG>$>$"#$%&'()+,-/4556:@ABCDJKMNRS]>$G>$G>$GG>$G>$G>$G>$GS]>$$)*+;<<@]>$OG>$G!$$&]>$GGMSTUV]>$G>$ !"&'5:;<]>$GOGO>$G !!#]>$OGGIUW]>$G9:;IJYZ\]]G>$GOGJXY]>$G %&()2255NSTTUVWXY\GGGG>$G>$G>$ !""##$$%]>$>$OGOG/5678>@@BBC]>$G>$G>$G(QWY\]]>$>$>$G !"$%%&-/9GOG>$G>$(7889:$GOG''MTUUV]G>$G>$ !OOG./0EFFGTU]G>$G>$G %%((OTUWXXYYZ[\\]]GG>$G>$G>$G>$#%%&=DDGG>$>$GGG(,--./00157]>$G>$G>$G=QTUVW]G>$OG!!//RXY[\]>$>$G>$G>$ !"#]>$OGZ[[\]G>$G/=>>?]G>$G)-TXY]G>$G !""#$%)*-2266TUVXY\]]>$G>$G>$GGG>$G>$3456=[]GOGG&&CDE]G>$GBEF]>$GHHIJKMP]G>$GGZ[]G>$$./2378M>$GOG #$'(M>$OG $%0156:<$GGGG -./001124567=>MNNOPQRS]>$GGEG>$GGE"#$%&'-./00123345667<=@AABMSSEGEGYGOEGGG[\]]G>$ %&'()*+,,-7889<==>>YYZZ[[\]GOGEGYGGOGEGEG 899::;;<<=>??@ABBCCG|EGEGEOEG<=]]>$G&'./67;VWYZ]GGGGG>$G79*./6=**(]*!XZ\]***-/5@ABC***V/!ZZ\]***"%&)+55@A\\****** %&)+//NOSS******#%')+@AX]*****"%&)+35@A***** \]** $&(+55****"ZZ\]***"$&(+34@A*****"$&(+34@AQQ******"$&(+55@A*****!*((-2446=PQ*****OORX**%,*OORZ**&,*67SSUUWW\]*****O]*"$%+57Z****$$* ()-6=BBFGHLMMWXZ[*V/V/V/HV/*V/V/#'==>BDM[\V/*V/V/V/+,V/.NV/&)GHV/V/9>FSV/V/#$DMV/V/!6V/69Z[V/V/MOV/>]V/+:;>GLLZZV/V/V/V/V/ 1:V/V/I\V/()47<>@BEKORV/V/V/V/V/V/ +--8;V/V/V/;=@@EFV/V/V/]]-..//00112233445;<<=FGGHOPQRZ[[\\]] c x  !!!4O# !!""##$$%%&&''(().//0455667789::;?@@AABBCCDFGGHHINOOPXYYZZ[[\]8_zcx FGGHHIIJJKKLVWWXXY]oOPPQ]T-..//00112233478899::;;<<==>GHHIYZZ[]++1++,,3,N,, ' ABBCCD]m|!""##$$%]'(-.GHMN]|||'(]|&''(FGGH]||| !!")*]||%&&']R'(()<=BCHI]|||<==>]RRSST]RTUVW]R$%&']R[\]R ]R!"]R"#$%*++,;<=>]RRRUVWXXYZ[]RR()*+]R !"&'56]RRYZ\]]R!""##$$%]RR !"]R89:;]R !"#]R2378]R#$'(]R$%0156]||/0013456]R  +,,-<==>>?XY]RR|M ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY![<B[<BBB!BT[<B[<B[<B[<BTIJ%JKLDLMMNNNOSOjCPQqR=TApW8TTWX#YHYTT9:*V/03PTV/V/01PQV/V/R]V/1;;V/V/!!'')-V/V/V/#$GGV/V/>INYV/V/59V/3<>Z]]V/V/V/FIN]V/V/,V/"R]V/V/"89<=IQ[\V/V/V/V/V/ ?KV/V/DQV/BUYZV/V/.02FKKRRUWV/V/V/V/V/479ACEGKUUWW[\V/V/V/V/V/V/V/79V/./6=V/V/ !"$%%&]88 =>]GG]MN]G(]V/!XZ\]V/V/V/-/5@CV/V/V/!ZZ\]V/V/V/"%&)+55@A\\V/V/V/V/V/V/ %&)+//NOSSV/V/V/V/V/V/#%')+@AX]V/V/V/V/V/"%&)+35@AV/V/V/V/V/ \]V/V/ $&(+55V/V/V/V/"ZZ\]V/V/V/"$&(+34@AV/V/V/V/V/"$&(+34@AQQV/V/V/V/V/V/"$&(+55@AV/V/V/V/V/!V/((-2446=PQV/V/V/V/V/OORXV/V/%,V/OORZV/V/&,V/67SSUUW]V/V/V/V/6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]8288 ;Jh88Ip88,w$3H82Wf8 8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]?TAV O886i+88#bCA87Xy88Kl8..//0]$8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_=j8]8""##))*MOOPPQ]~88YZZ[[\]88"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]888&5P+@Udy8D_8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]yg8808K8l8?~8 !""##$$%6778LMMN]8.C88888 $%%&6789?@@ABCCDHIMN]GGGGG|,--.]GGKMNT\]GG'(+-]GG-LLM]GGJMNWX]G-JMNWX]GG#-.45]GG!"(*-.78]|GGBCGHJK]GG !"#)*GHKL]GGG "#]GG !!"'))*+,]|G||GTUXY]GJKRSST]GG !""#%&&'89=>>?MN]GGOGGGKLMN]G$%]G'-8:;<==>AB]GGOG==>GHKLMGGO'(-LMNRSST]GGOGNTUVW]OG""#-.78@VZOGGG),--/]G%&,-0>]GG=@@BBCMNOP]GGGGN]%34]G V] $%&'CDMNNQRT\]]OGG NXYZ[[\]GO  !*++,-GMNWX]OGGGG ERSST]G!#$&-QQRSU]GOGGG Q] #$%&'*++,-.799;;<=>]OGOGGOG00JUVWXXYZ[[\\GOGOG ]G=HIMNWX]GG !""+,/0GGOORRXXYZ\]GGGGGGG"#$%&'()+,-/4556:@ABCDJKMNRS]GGGGGGGGS]$)*+-.78;<<@]OGGG!$$&-.78]GGGMSTUV]G !"&'5:;<]GOGOG !!#-.78]OGGGIUW]G'(]G9:;IJMNWXYZ\]]GGGOGJXY]G=>GH\|G %&()2255NSTTUVWXY\GGGGGG  !""##$$%-.78]OGOGG/5678>@@BBC]GGG(QWY\]]G !"$%%&-/9GOGG(7889:GH]GGGG=QTUVW]GOG!!//RXY[\]GG !"#-.78]OGGZ[[\]GG/=>>?]GG)-TXY]GG<=>GHMGG !""#$%)*-2266TUVXY\]]GGGGGG&&CDE]GGBEFMNWX]GGHHIJKMP]GGGZ[]G$./2378MGOG #$'(MOG $%0156:<MNNOPQRS]GG8GGG8"#$%&'-./00123345667<=@AABMSS8G8GYGO8GGG[\]]G %&'()*+,,--.89<==>>YYZZ[[\]GOG8GYGGOG8G8G 899::;;<<=>??@ABBCCG|8G8G8O8G<=]]G&'./67;VWYZ]GGGGGG-\\]]GGO++,->GJ]GOG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||GG!!##%%''))++--//113355779;<=||||||||||||||NOPPQQRTUUV]GOGOG $$))AEFIJJK]GGRSTUV]GOGR] #$+,-.78=>OVXZZ]]GOGGG'DKLLMMGO%12=[]GG!Q] %&'(,.78=CCNW]]GOGGGGTU]G !!*+,-.78:;=UWY[GGOGNNPRUV\]!8<=IMNOSTU]GGOGAHIIJKLMNWX]OGG !"&/0129::;=>>HMNNTU[].OG8G8G8GGGG56789:>>GGGD ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!BBB!BTBBTIJ%JKLDLMMN@WNNOSOjPQqR]T=.0W8TTWX0YHYTTO]V/"$%+57ZV/V/V/V/$$V/ !"$%%&]5V8Ve8 =>]GzGz]zMN]zGD ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt!BBB!BTBBTIJ%JKLDLMMN@WNNOSOjPQqR]T=.M~W8TTWX0YHYTT  !"&>HMNNTU[]^OGGzGGG56789:>>GzGG()-.0123ABBCEFGHLMMNYZ[\]^zGGYGHz^GOG $%'(<==>BCCDMNNOOP\]]GOG^zGzG|G|-.NO]GzG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||z|GFLN\]]GGz%%--55==>]GGGGzKLLNYZZ[]GOGOG0123]GOGI\z '()*-47<>@BEKORGOGzzzzz +--.78;<=zzGzG9:;=>?@@ADEFG]GzGOGOGKKLLGO034IJMNYZ]GzGzG!"#$-LMS]GOGGG59:=zG3<==>Z[\]]zGzGzDFIJMN]GOGz,-]zG"R]zz "+789:;<=>HIQRZ[\]]zGOGOGzGOG ?KNWzzGDQR]zGBUVXYZ[]zGOG*.7\]GGO -.0112FKKRRUWY]GzGzzzzG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]82882M ;JYh88Ip88h۳$3H82Wf8:8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]kՀճ"UjֵW8׺A8 &AYz8؏+8ض8 C7dمٲA88Zځ8ڮ8..//0]AP8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_ԖԽB8]8""##))*MOOPPQ]~8i8YZZ[[\]89T8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8Uv8ӣ8&5P+@Udy8Ӿ8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]SgҞ8ҹ888:8?~8 $%%&6789?@@ABCCDHIMN]zGzGzGzGzG|,--.]GzGKMNT\]GzG-LLM]GzGJMN]zG-JMN]GzG#-.45]GzG!"(*]|zGBCGHJK]GzGz !"#)*GHKL]zGzGzG "#]GzGTUXY]zGzJKRSST]zGzG !""#%&&'89=>>?MN]GzGOGzGzGKLMN]zGz$%]zG'-8:;<==>AB]GGzOzG-LMNRSST]GGzOGNTUVW]zOG),--/]Gzz%&,-0>]zGzG=@@BBCMNOP]GGzGzGN]z%34]zzG V]zz$%&'MNNQRT\]]zOGzzGz NXYZ[[\]zzGzO !*++,-G]OzGzGG ERS]zzG!#$&-QQRSU]GOzGzGG Q]zz #$%&'*++,-.799;;<=>]zOGzOzGGGOG00JUVWXXYZ[[\\GzOGOGz ]zG=HI]zG !""+,/0GGOORRXXYZ\]zGGGGGGGzz"#$%&'()+,-/4556:@ABCDJKMNRS]zGzGzGGzGzGzGzGS]z$)*+;<<@]zOGzG!$$&]zGGMSTUV]zGz !"&'5:;<]zGOGOzG !!#]zOGGIUW]zG9:;IJYZ\]]GzGOGJXY]zG %&()2255NSTTUVWXY\GGGGzGzGz !""##$$%]zzOGOG/5678>@@BBC]zGzGzG(QWY\]]zzzG !"$%%&-/9GOGzGz(7889:>?]GzG)-TXY]GzG !""#$%)*-2266TUVXY\]]zGzGzGGGzGz&&CDE]GzGBEF]zGHHIJKMP]GzGGZ[]Gz$./2378MzGOG #$'(MzOG $%0156:<MNNOPQ]zGGzGG -./00123345667@AABMSSGYGOGGG[\]]Gz  )*+,,-7889<==>>Y]GOGYGGOGG89>??@ABBCCG|GOGG<=]]zG&'./67;VWYZ]GGGGGzG++,->GJ]GOGG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||zGzG!!##%%''))++--//113355779;<=||||||||||||||zNOPPQQRTUUV]zGOGOG $$))AEFIJJK]zzzzGzGR]zz #$+,-.=>OVXZZ]]zGOGzGGz'DKLLMMGzGO%12=[]zGG!Q]zz %&'(,.=CCNW]]zGOGGzGGGTU]zG!!*+,:;=UWY[zzGOGzNNPRUV\]zzzz!8<=IMNOSTU]zGGzOzGAHIIJKL]zOzG  !"&>HMNNTU[].OGGzGGG()-.0123ABBCEFGHLMMNYZ[\].zGGYGHz.GOG $%'(<==>BCCDMNNOOP\]]GOG.zGzG|G|9=.G 479ACEGKLTUUVVWWXZ[\]]zzzzGOGOGOG79:=IMzGG&&--./056=GGzGz(]z!XZ\]zzz-/5@ABCDNzzzOG !""+,/0GGOOQSXYZZ\]zGGGGGGGzz"#$%&'()+-45569<<@ABMPY[[\\]]zGzGzGzGGzGGGzG!""),/0GGOORRUUXYZZ[[\]GzGGGGGGGGzGz !$%&'()+,.//06;;=MNOSST]zGzGzGzGGGzzG !"",,00GGOORRXYZZ\]GzGGGGGGGzz #$$%'(()+,-/=@ABVX]zGzGzGGzGz !""+,/0GGOORRXYZZ\]GzGGGGGGGzz "#$%&'()+,23569<<@ABNP]zGzGzGzGGzGG "")+//4699;;>@CEIKX[\]GzGGGGGGGGGGz  !#$&''(+,-/4556]zGzGzGGzG"++//GGXYZZ\]zGGGGzz "##$&''(+,234559:<=@AB]zGzGzGzGGGzG !""++//GGRRXYZZ\]zGGGGGGzz"##$&''(+,2345:==@ABNQQR]zGzGzGzGGzGzG!++//YZ\]zGGzz "##$&''(+-1556<@ABWzGzGzGzGzG!""57PPZZ\]GzGGGGG %'((),-23344556=>OPQR]GzGzGzGzGzGOORXY]GzzG%,-]zG !!##))BBDDOORZ\]GGGGGGzzG##%%&,-9>]GGzGG 5678RSSTTUUVVWWX[\]GzGzGzGzGz&&KNO]GGz"##$%+5667Z[]zGzzGzG#$$%]GzG()-.012356=>ABBCEFGHLMMNVWXYYZ[\].GG8GYGH.G8GOG"#$%'(<==>BCCDMNNOOPZ[\]]G8OG.GG|G8|*+,--.:;]G8G|G-.NO]GG%&)*FGHI]G8G8G89>?EFST]G8G8G"#$%CDMN]G8G8G !67]G8G569:YZ[\]G8G8G!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G|||GFLN\]]GG%%--55==>]GGGG +,9:;<=>GHKLLNYZZ[]8G8G8GOGOG !0123:;]G8GO8GI\ '()*-47<>@BEKOROG +--.78;<=G9:;=>?@@ADEFG]GGOGOG9:;=.8G034GH]GGGG  !!"%&&''(()-.78=GOGOGG#$GGIMG==>IJMNYZ]GGG!"#$-LMS]GOGG(-.78]GG59:=G3<==>Z[\]]GG'(-.78DFIJMN]GGOG,-]G"R] "+-.789:;<=>HIQRZ[\]]GOGOGGOG ?KNWDQR]GBUVXYZ[]GOG'(*.7\]GO -.0112FKKRRUWY]GGG 479ACEGKLTUUVVWWXZ[\]]GOGOGOG79:=IMGG&&--./056=GGG(]!XZ\]-/5@ABCDMNNOG !""+,/0GGOOQSXYZZ\]GGGGGGG"#$%&'()+-45569<<@ABCDMPY[[\\]]GGGGGGGGG!""),/0GGOORRUUXYZZ[[\]GGGGGGGGGG !$%&'()+,.//06;;=CDMNOSST]GGGGGGG !"",,00GGOORRXYZZ\]GGGGGGGG #$$%'(()+,-/=@ABCDMNVX]GGGGGG !""+,/0GGOORRXYZZ\]GGGGGGGG"#$%&'()+,23569<<@ABCDMNNP]GGGGGGGG "")+//4699;;>@CEIKX[\]GGGGGGGGGGG  !#$&''(+,-/4556CDMN]GGGGGG"++//GGXYZZ\]GGGG"##$&''(+,234559:<=@ABCDMN]GGGGGGGG !""++//GGRRXYZZ\]GGGGGG"##$&''(+,2345:==@ABCDMNNQQR]GGGGGGGG!++//YZ\]GG "##$&''(+-1556<@ABCDMNWGGGGGG!""57PPZZ\]GGGGGG%'((),-23344556=>CDMNOPQR]GGGGGGGOORXY]GG%,--.78]GG !!##))BBDDOORZ\]GGGGGGG##%%&,--.789>]GGGGG 5678=>GHRSSTTUUVVWWX[\]GGGGG8&&KNO]GG"##$%+5667Z[]GGG#$$%]GG\]]R+,-.]R;<]|PQQRTUUV]RR?@]|%&(),--.]||| ()-./001122378OPTUUVXY]||||||STUV]RLMMN]R%&'(]R:;=>]RMNOP]R899:GHMN]|||HIIJ]R !]RABBCEFGHYZ[\]HR$%'(NOOP\]]R||-.:;]| !$%%&'(12233467;]||| !"#]|ST]|GH]|BCHILMOPQR]|||CDDEEFJKKL]|||KLLMYZZ[]RR0123]R'()*]R #$$%%&*++,YZZ[]||||?@@ADEFG]RRSTUV[\]||KLLM]RRSTU]R !!"&''(]RR!"#$]REFIJ]R789:;<=>Z[\]]RRRXYZ[]R&']|3456;<=>]|||#$%&+,-.566778899::;;<<=[\]|||||||RSSTZ[[\\]]||| "##$*+-.12349:=>JKOPRSSTZ[]|||||||TUUVVWWXZ[\]]RRRABCD]R !"&/0129::;=>>HMNNTU[].OGEGEGEG>$GGG56789:>>G>$GG()-.012356=>ABBCEFGHLMMNVWXYYZ[\].>$GGEGYGH>$.GEGOG"#$%'(<==>BCCDMNNOOPZ[\]]GEOG.>$G>$G|GE|-.NO]G>$G!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||>$|GFLN\]]GG>$%%--55==>]GGGG>$ +,9:;<=>GHKLLNYZZ[]EGEGEGOGOG !0123:;]GEGOEGI\>$ '()*-47<>@BEKORGOG>$>$>$>$>$ +--.78;<=>$>$G>$G9:;=>?@@ADEFG]G>$GOGOG9:;=.EG034$G>$OG012=KKOOPQR]>$GGG>$GR]>$12469;;<]>$GG>$G  !!"%&&''(()-.=GOGOG>$G#$GGIM>$>$G==>IJMNYZ]G>$G>$G59:=>$G3<==>Z[\]]>$G>$G>$DFIJMN]GOG>$,-]>$G"R]>$>$ "+789:;<=>HIQRZ[\]]>$GOGOG>$GOG ?KNW>$>$GDQR]>$GBUVXYZ[]>$GOG -.0112FKKRRUWY]G>$G>$>$>$>$G 479ACEGKLTUUVVWWXZ[\]]>$>$>$>$GOGOGOG79:=IM>$GG&&--./056=GG>$G>$(]>$!XZ\]>$>$>$-/5@ABCDN>$>$>$OG !""+,/0GGOOQSXYZZ\]>$GGGGGGG>$>$"#$%&'()+-45569<<@ABMPY[[\\]]>$G>$G>$G>$GG>$GGG>$G!""),/0GGOORRUUXYZZ[[\]G>$GGGGGGGG>$G>$ !$%&'()+,.//06;;=MNOSST]>$G>$G>$G>$GGG>$>$G !"",,00GGOORRXYZZ\]G>$GGGGGGG>$>$ #$$%'(()+,-/=@ABVX]>$G>$G>$GG>$G>$ !""+,/0GGOORRXYZZ\]G>$GGGGGGG>$>$ "#$%&'()+,23569<<@ABNP]>$G>$G>$G>$GG>$GG "")+//4699;;>@CEIKX[\]G>$GGGGGGGGGG>$  !#$&''(+,-/4556]>$G>$G>$GG>$G"++//GGXYZZ\]>$GGGG>$>$ "##$&''(+,234559:<=@AB]>$G>$G>$G>$GGG>$G !""++//GGRRXYZZ\]>$GGGGGG>$>$"##$&''(+,2345:==@ABNQQR]>$G>$G>$G>$GG>$G>$G!++//YZ\]>$GG>$>$ "##$&''(+-1556<@ABW>$G>$G>$G>$G>$G!""57PPZZ\]G>$GGGGG %'((),-23344556=>OPQR]G>$G>$G>$G>$G>$GOORXY]G>$>$G%,-]>$G !!##))BBDDOORZ\]GGGGGG>$>$G##%%&,-9>]GG>$GG 5678RSSTTUUVVWWX[\]G>$G>$G>$G>$E>$&&KNO]GG>$"##$%+5667Z[]>$G>$>$G>$G#$$%]G>$G!""##$$%6778]8.C888 -./001124567=>MNNOPQRS]>$GG8G>$GG8 %&'()*+,,-7889<==>>YYZZ[[\]GOG8GYGGOG8G8G!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||>$G>$G!!##%%''))++--//113355779;<=||||||||||||||>$NOPPQQRTUUV]>$GOGOG $$))AEFIJJK]>$>$>$>$G>$GR]>$>$ #$+,-.=>OVXZZ]]>$GOG>$GG>$'DKLLMMG>$GO%12=[]>$GG!Q]>$>$ %&'(,.=CCNW]]>$GOGG>$GGGTU]>$G!!*+,:;=UWY[>$>$GOG>$NNPRUV\]>$>$>$>$!8<=IMNOSTU]>$GG>$O>$GAHIIJKL]>$O>$G !"&/0129::;=>>HMNNTU[].OG8G8G8G>$GGG()-.012356=>ABBCEFGHLMMNVWXYYZ[\].>$GG8GYGH>$.G8GOG"#$%'(<==>BCCDMNNOOPZ[\]]G8OG.>$G>$G|G8| 5678RSSTTUUVVWWX[\]G>$G>$G>$G>$8>$KLLMPQQR[\]|||MNOPPQQRTUUV]|RR  !#$$%())*@AEFIJJK]||||| QR]||#$+,-.=>OP\]]|R||CDKLLMMN]|R$%12]|!"PQ]||%&'(BCCD]|R|FGTU]|  !!")*+,:;=>XY[\]||R| MNNOOPRSTUVW[\]||||  HIMNOPRSTU]||R|@AHIIJKL]|R| !GHMN]R|6789]| ()-.ABBCEFGHLMYZ[\]|#H|R $%'(=>BCCDMNNOOP\]]R||||-.NO]|BCHIQR]||HI\]]|'()*3478;<>??@BCDEKLNORS]R|||||  +,,--.78;<=>]||||:;=>?@@ADEFG]|RR/034OPRSTU]||R/012OPQR]||QR]|12:;;<]|| !!"&''(()-.]RR|"#$%FGGH]||=>IJMNYZ]||459:]|23<==>Z[\]]|||EFIJMN]R|,-]|"#QR]|| "#789:;<=>HIQRZ[\]]|RR|R !>?KL]||CDQR]|ABUVXYZ[]|R -.0112FGJKKLQRRSTUWX]|||||347889ABBCEFFGKLTUUVVWWXZ[\]]||||RRR679:]|-./056=>]||'(]|!"WXZ[[\]|||-../56?@ABCD]|||R!"YZZ[[\]||| "#$%&'()+,4556?@AB[\\]]||||||  !$%&'()+,.//0MNOPRSST]|||||| #$$%'(()+,?@ABWX]||||| "#$%&'()+,2356?@AB]||||| ![\]||  !#$&''(+,4556]||||"#YZZ[[\]||| "##$&''(+,2345?@AB]||||| "##$&''(+,2345?@ABPQQR]|||||| "##$&''(+,4556?@AB]|||||!"]| '((),-23344556=>OPQR]|||||NOOPQRXY]||$%,-]|NOOPQRZ[]||%&,-]| 5678RSSTTUUVVWWX[\]|||||NO]| "##$%&*+5667Z[]||||#$$%]| $%%&6789?@@ABCCDHIMN]#G#G#G#G#G|,--.]G#GKMNT\]G#G-LLM]G#GJMNWX]#G-JMNWX]G#G#-.45]G#G!"(*-.78]|#GGBCGHJK]G#G# !"#)*GHKL]#G#G#G "#]G#G2334]|G|:;;<=>?@@ABCDEFGJKKLWXXYYZZ[]|G|G|G|G|G|G|G|!""#]|G| #$$%()*+2334:;;>?MN]G#GOG#G#GKLMN]#G#$%]#G'-8:;<==>AB]GG#O#G'(-LMNRSST]GG#OGNTUVW]#OG),--/]G##%&,-0>]#G#G=@@BBCMNOP]GG#G#GN]#%34]##G V]## $%&'CDMNNQRT\]]#OG##G# NXYZ[[\]##G#O  !*++,-GMNWX]O#G#GGG ERSST]##G!#$&-QQRSU]GO#G#GG Q]## #$%&'*++,-.799;;<=>]#OG#O#GGOG00JUVWXXYZ[[\\G#OGOG# ]#G=HIMNWX]#GG !""+,/0GGOORRXXYZ\]#GGGGGGG##"#$%&'()+,-/4556:@ABCDJKMNRS]#G#G#GG#G#G#G#GS]#$)*+-.78;<<@]#OGG#G!$$&-.78]#GGGMSTUV]#G# !"&'5:;<]#GOGO#G !!#-.78]#OGGGIUW]#G9:;IJMNWXYZ\]]G#GGOGJXY]#G=>]G| %&()2255NSTTUVWXY\GGGG#G#G#  !""##$$%-.78]##OGOGG/5678>@@BBC]#G#G#G(QWY\]]###G !"$%%&-/9GOG#G#(7889:GH]#G#G#GG=QTUVW]G#OG!!//RXY[\]##G#G# !"#-.78]#OGGZ[[\]G#G/=>>?]G#G)-TXY]G#G<=>GHMN]GG|1256YZ]|G|GBMNXYYZ]G|G|())*01123445?@@AOPPQWXXYZ[]|G|G|G|G|G|G|G !""#$%)*-2266TUVXY\]]#G#G#GGG#G#&&CDE]G#GBEFMNWX]#GGHHIJKMP]G#GGZ[]G#$./2378M#GOG #$'(M#OG $%0156:<MNNOPQRS]#GG8G#GG8[\]]G# %&'()*+,,--.89<==>>?XYYZZ[[\]GOG8GYGGOG|8G8G<=]]#G&'./67;VWYZ]GGGGG#GKMPQQR[\\|#G#G;<=|#NOPPQQRTUUV]#GOGOG4>?@]GG|%'(),.]|G|| ()-./001122378OPTVX|G|G|G|G|| $$))AEFIJJK]####G#GR]## #$+,-.78=>OVXZZ]]#GOG#GG#'DKLLMM#GO%12=[]#GG!Q]## %&'(,.78=CCNW]]#GOGG#GGTU]#G !!*+,-.78:;=UWY[##GGOG#NNPRUV\]####!8<=IMNOSTU]#GG#O#GAHIIJKLMNWX]#O#GG !"&/0129::;=>>HMNNTU[].OG8G8G8G#GGG56789:>>G#GG()-.012356=>ABBCEFGHLMMNVWXYYZ[\].#GG8GYGH#.G8GOG"#$%'(<==>BCCDMNNOOPZ[\]]G8OG.#G#G|G8|-.NO]G#G !$%%&'(12233467;]G|G|G|!"']|GST]G|GH]|GBCHILMOPQR]|G|#|GFLN\]]GG#%%--55==>]GGGG#I\# '()*-47<>@BEKOROG##### +--.78;<=>]###G| #$$%%&*++,-YYZZ|G|G|GG|9:;=>?@@ADEFG]G#GOGOG.=>]G|STUV[\]|G|G034GH]#GG#GG  !!"%&&''(()-.78=GOGOG#G#$GGIM##G==>IJMNYZ]G#G#G59:=#G3<==>Z[\]]#G#G#'(-.78DFIJMN]GGOG#,-]#G"R]## "+-.789:;<=>HIQRZ[\]]#GOGOG#GOG ?KNW##DQR]#GBUVXYZ[]#GOG -.0112FKKRRUWY]G#G####G3456;<=>]|G|G|#$%&+,-.566778899::;;<<=[\]|G|G|G|G|G|G|GRSSTZ[[\\]]|G|G|G "##$*+-.12349:=>JKOPRSSTZ[]G|G|G|G|G|G|G|G 479ACEGKLTUUVVWWXZ[\]]####GOGOGOG79:=IM#GG&&--./056=GG#G#(]#!XZ\]###-/5@ABCDMNN###OG !""+,/0GGOOQSXYZZ\]#GGGGGGG##"#$%&'()+-45569<<@ABCDMPY[[\\]]#G#G#G#GG#GGG#G!""),/0GGOORRUUXYZZ[[\]G#GGGGGGGG#G# !$%&'()+,.//06;;=CDMNOSST]#G#G#G#GGG##G !"",,00GGOORRXYZZ\]G#GGGGGGG## #$$%'(()+,-/=@ABCDMNVX]#G#G#GG#GG# !""+,/0GGOORRXYZZ\]G#GGGGGGG##"#$%&'()+,23569<<@ABCDMNNP]#G#G#G#GG#GGG "")+//4699;;>@CEIKX[\]G#GGGGGGGGGG#  !#$&''(+,-/4556CDMN]#G#G#GG#GG"++//GGXYZZ\]#GGGG##"##$&''(+,234559:<=@ABCDMN]#G#G#G#GGG#GG !""++//GGRRXYZZ\]#GGGGGG##"##$&''(+,2345:==@ABCDMNNQQR]#G#G#G#GG#GG#G!++//YZ\]#GG## "##$&''(+-1556<@ABCDMNW#G#G#G#G#GG!""57PPZZ\]G#GGGGG%'((),-23344556=>CDMNOPQR]G#G#G#G#GG#GOORXY]G##G%,--.78]#GG !!##))BBDDOORZ\]GGGGGG##G##%%&,--.789>]GG#GGG 5678=>GHRSSTTUUVVWWX[\]G#GG#G#G#8#&&KNO]GG#"##$%+5667Z[]#G##G#G#$$%]G#G !"$%%&]>>8>>8 =>]GYGY]YMN]YG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]8288 ;Jh88Ip88d8$3H82WfS8t8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]l;nax7|8B!8HcB+8 8 _CA84c:U8|8'Hu8..//0]BQ8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_b__8_8""##))*MOOPPQ]~8d8YZZ[[\]84O8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8Pq88&5P+@Udy88W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]6g8888)8?~8 !""##$$%6778LMMN]8.C8C888STVW]GCGM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BD<mD<BD<EGBGBEBBEBTGBGBGBGBTTIJ%JKLDLMMNNNOSOjPQqRXT2Ol~zW8TTWXhYHYTT !"$%%&]EF8FF$8 =>]GCGC]CMN]CG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]82808Kf ;JYh88Ip88d$3H82Wf82S8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]] ;nax+p8Z 8$?Zr8+88#CP}A8| 84s88..//0]Zi8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8Aw_w_8_8 -""##))*MOOPPQ]~88YZZ[[\]8Rm8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8LL98Lf8&5P+@Udy8LLL8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]KgKa8K|8KK8K8KK8?~8!""##$$%6778]8.C8C8 $%%&6789?@@ABCCDHIMN]CGCGCGCGCG|,--.]GCGKMNT\]GCG-LLM]GCGJMN]CG-JMN]GCG#-.45]GCG!"(*]|CGBCGHJK]GCGC !"#)*GHKL]CGCGCG "#]GCGTUXY]CGCJKRSST]CGCG !""#%&&'89=>>?MN]GCGLGCGCGM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BD<mD<BD<EGBGBEBBEBTGBGBGBGBTIJ%JKLDLMMNvvNNOSOjvPQqRxCTyy7/pAr=W8T~TWX+YH~bYTT$&69?ABDHQ7Q7Q7Q7Q7--Q7NTQ7LLQ7JMQ7.4Q7"(Q7CGK]Q7Q7 #)HKQ7Q7Q7 "Q7TY]Q7Q7JSSQ7Q7""&&9=?MQ7OQ7Q7: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24!T!T4TT4T!T!T!T!T5T55T5T<566:6iT66667 75889T95T99T:@TT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!$T$TTT!T$T$T$T$T%TT T< * M p T !!+!B&&''T#kT((LT$vTT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTTT!TTTTTTT%T<SvT=TkewTTXTTT %%))++FFGGIIRRXXYY[[\\|΋ΚΩ 0) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[%@Up˅˲N]ʤẋ̜ʤ̽ A\w͒ͧͼ1Fg..//ʤʳ GGIIJJKKXX[[\\]]2GVezʏPPZZ[[##$$''FFGGHHONOcO~OOO  ""(())11AACCNNOOO!O!O0O?77V TVV/5 ^__`hiijjknooprssttuuvvwwxxyyzz{{||}}~~T(m(T($T$T$T$T$T$T$T$T)T))T)T**7*Z*}T***+ + +C,,-&T-CT-.T.NTT"$%%WWWW>]OO]OMO %%))++FFGGIIRRXXYY[[\\<KZio.) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[3Ncn/,GVk+Favn'..// GGIIJJKKXX[[\\]]iX.iiCXmPPZZ[[##$$''FFGGHHEZuɄəɮ  ""(())11AACC '677YTVO#%')+@AX]VVVVV6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828W8WX ;Jh88Ip88X4dX$3H82Wfd08XXdQdr8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]Q` `F`m``R`aESraxaST8TqaQa8Tb QbSU1b+8Um8UbCUVbcA8Vc:V8Vc[c8cWc8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_b____8_8QbQ}Q""##))*MOOPPQ]~8_58"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8OO8O8&5P+@Udy8OP^8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]NgN8N8O^8^8O^^8?~8JMNWX]EG-JMNWX]GEG!"(*-.78]|EGG !""#%&&'89=>>?MN]GEGLGEGEG'-8:;<==>AB]GGELEG==>GHKLMGGL'(-LMNRSST]GGELGNTUVW]ELG""#-.78@VZLGGG5667]GLG $%&'CDMNNQRT\]]ELGEEGE NXYZ[[\]EEGEL  !*++,-GMNWX]LEGEGGG ERSST]EEG!#$&-QQRSU]GLEGEGG #$%&'*++,-.799;;<=>]ELGELEGGLG00JUVWXXYZ[[\\GELGLGE%%'',,<GH]EGEGEGG=QTUVW]GELG !"#-.78]ELGG3456=[]GLGGBEFMNWX]EGG$./2378MEGLG #$'(MELG\]C -./001124567=>MNNOPQRS]EGGCGEGGC"#$%&'-./00123345667<=@AABMSSCGCGLGLCGGG %&'()*+,,--.89<==>>YYZZ[[\]GLGCGLGGLGCGCG 899::;;<<=>??@ABBCCG|CGCGCLCG: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24!T!T4TT4T!T!T!T!T:WT))T)T<:*7:*}T:;*+ ;0;Y<*<=<T=YT=>T.NTT %%))++FFGGIIRRXXYY[[\\&&&&o.' '/'>'Mo=oR) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[imm-m]mnn/)n>SbnYnzn%Xn%%nn%n&&-&N&co&o GGIIJJKKXX[[\\]]iXigi|iiرPPi=##$$''FFGGHHש׾i""&&9=?MV/fV/V/;<==>AV/fV/LMfNRSSV/fNTUVV/f""f66f$%&NNQR]]V/fV/V/V/-\\]]GGL++,->GJ]GLGNOPPQQRTUUV]EGLGLGRSTUV]GLG #$+,-.78=>OVXZZ]]EGLGEGGE'DKLLMMEGL %&'(,.78=CCNW]]EGLGGEG !!*+,-.78:;=UWY[EEGGLGE!8<=IMNOSTU]EGGELEGAHIIJKLMNWX]ELEGG !"&/0129::;=>>HMNNTU[]kLGCGCGCGEGGGD ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BD<mD<BD<EBEBBEBTBBTCIJ%JKLDLMMNNNOSOjPQqR;|T2Oa'W8ThTWXYH-YTT NX[[\]V/V/V/f ++fV/V/!#$QQfV/V/#$'*++,-<=V/fV/fV/fJUVWYZ\\V/ffV/GGf$)*<<V/fV/ !'5:;V/ffV/ V/f;IZ\V/f !""$$V/V/ff !%%/9fV/V/(79:V/f fQTUVV/f !"V/f45f$.37V/f #$'V/f\]O-./1156>MOPS]V/OV/O !"$%%&]oo8op8 =>]GkGk]kMN]kG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828}8}~ ;JYh88Ip88~d~j$3H82Wf~8~~~~8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]x x"xUx|xxxy yWyaxyyy8z\zkwz8zzwz{8{1+8{X8{m{C{||'|TA8|u||8|}}88}e}}8..//0]ww8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8Aw_wwDw_8_8wzww""##))*MOOPPQ]~8v8YZZ[[\]8vv8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8uu8v8&5P+@Udy8v0vKvl8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]tgu8u+8uFua8uv8uu8?~8 $%%&6789?@@ABCCDHIMN]kGkGkGkGkG|,--.]GkGKMNT\]GkG-LLM]GkGJMN]kG-JMN]GkG#-.45]GkG!"(*]|kGBCGHJK]GkGk !"#)*GHKL]kGkGkG "#]GkGTUXY]kGkJKRSST]kGkG !""#%&&'89=>>?MN]GkGLGkGkGKLMN]kGk$%]kG'-8:;<==>AB]GGkLkG=KLMGL-LMNRSST]GGkLGNTUVW]kLG""#@VZLGG),--/]Gkk%&,-0>]kGkG=@@BBCMNOP]GGkGkGN]k%34]kkG V]kk$%&'MNNQRT\]]kLGkkGk NXYZ[[\]kkGkL !*++,-G]LkGkGG ERS]kkG!#$&-QQRSU]GLkGkGG Q]kk #$%&'*++,-.799;;<=>]kLGkLkGGGLG00JUVWXXYZ[[\\GkLGLGk ]kG=HI]kG !""+,/0GGOORRXXYZ\]kGGGGGGGkk"#$%&'()+,-/4556:@ABCDJKMNRS]kGkGkGGkGkGkGkGS]k$)*+;<<@]kLGkG!$$&]kGGMSTUV]kGk !"&'5:;<]kGLGLkG !!#]kLGGIUW]kG9:;IJYZ\]]GkGLGJXY]kG %&()2255NSTTUVWXY\GGGGkGkGk !""##$$%]kkLGLG/5678>@@BBC]kGkGkG(QWY\]]kkkG !"$%%&-/9GLGkGk(7889:>?]GkG)-TXY]GkG !""#$%)*-2266TUVXY\]]kGkGkGGGkGk&&CDE]GkGBEF]kGHHIJKMP]GkGGZ[]Gk$./2378MkGLG #$'(MkLG $%0156:<MNNOPQ]kGGkGG -./00123345667@AABMSSGLGLGGG[\]]Gk  )*+,,-7889<==>>Y]GLGLGGLGG89>??@ABBCCG|GLGG<=]]kG&'./67;VWYZ]GGGGGkG++,->GJ]GLGG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||kGkG!!##%%''))++--//113355779;<=||||||||||||||kNOPPQQRTUUV]kGLGLG $$))AEFIJJK]kkkkGkGR]kk #$+,-.=>OVXZZ]]kGLGkGGk'DKLLMMGkGL%12=[]kGG!Q]kk %&'(,.=CCNW]]kGLGGkGGGTU]kG!!*+,:;=UWY[kkGLGkNNPRUV\]kkkk!8<=IMNOSTU]kGGkLkGAHIIJKL]kLkG  !"&>HMNNTU[]kLGGkGGG56789:>>GkGG -.0123ABBCEFGHMNYZ[\]kGGLGHkGLG $%'(<=BCCDMNNOOP\]]GLGkGkG|G|-.NO]GkG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||k|GFLN\]]GGk%%--55==>]GGGGkKLLNYZZ[]GLGLG0123]GLGI\k '()*-47<>@BEKORGLGkkkkk +--.78;<=kkGkG9:;=>?@@ADEFG]GkGLGLGKKLLGL9=kG034IJMNYZ]GkGkG!"#$-LMS]GLGGG59:=kG3<==>Z[\]]kGkGkDFIJMN]GLGk,-]kG"R]kk "+789:;<=>HIQRZ[\]]kGLGLGkGLG ?KNWkkGDQR]kGBUVXYZ[]kGLG*.7\]GGL -.0112FKKRRUWY]GkGkkkkG 479ACEGKLTUUVVWWXZ[\]]kkkkGLGLGLG79:=IMkGG&&--./056=GGkGk(]k!XZ\]kkk-/5@ABCDNkkkLG !""+,/0GGOOQSXYZZ\]kGGGGGGGkk"#$%&'()+-45569<<@ABMPY[[\\]]kGkGkGkGGkGGGkG!""),/0GGOORRUUXYZZ[[\]GkGGGGGGGGkGk !$%&'()+,.//06;;=MNOSST]kGkGkGkGGGkkG !"",,00GGOORRXYZZ\]GkGGGGGGGkk #$$%'(()+,-/=@ABVX]kGkGkGGkGk !""+,/0GGOORRXYZZ\]GkGGGGGGGkk "#$%&'()+,23569<<@ABNP]kGkGkGkGGkGG "")+//4699;;>@CEIKX[\]GkGGGGGGGGGGk  !#$&''(+,-/4556]kGkGkGGkG"++//GGXYZZ\]kGGGGkk "##$&''(+,234559:<=@AB]kGkGkGkGGGkG !""++//GGRRXYZZ\]kGGGGGGkk"##$&''(+,2345:==@ABNQQR]kGkGkGkGGkGkG!++//YZ\]kGGkk "##$&''(+-1556<@ABWkGkGkGkGkG!""57PPZZ\]GkGGGGG %'((),-23344556=>OPQR]GkGkGkGkGkGOORXY]GkkG%,-]kG !!##))BBDDOORZ\]GGGGGGkkG##%%&,-9>]GGkGG 5678RSSTTUUVVWWX[\]GkGkGkGkGk&&KNO]GGk"##$%+5667Z[]kGkkGkG#$$%]GkG()-.012356=>ABBCEFGHLMMNVWXYYZ[\]kEGGCGLGHEkGCGLG"#$%'(<==>BCCDMNNOOPZ[\]]GCLGkEGEG|GC|*+,--.:;]GCG|G%&)*FGHI]GCGCG89>?EFST]GCGCG"#$%CDMN]GCGCG !67]GCG569:YZ[\]GCGCG +,9:;<=>GHKLLNYZZ[]CGCGCGLGLG !0123:;]GCGLCG '()*-47<>@BEKORLGEEEEE +--.78;<=EEEG9:;=>?@@ADEFG]GEGLGLG9:;=kCG034GH]EGGEGG  !!"%&&''(()-.78=GLGLGEG!"#$-LMS]GLGG'(-.78DFIJMN]GGLGE "+-.789:;<=>HIQRZ[\]]EGLGLGEGLG ?KNWEEBUVXYZ[]EGLG'(*.7\]GL 479ACEGKLTUUVVWWXZ[\]]EEEEGLGLGLG-/5@ABCDMNNEEELG"#$%&'()+-45569<<@ABCDMPY[[\\]]EGEGEGEGGEGGGEG !$%&'()+,.//06;;=CDMNOSST]EGEGEGEGGGEEG #$$%'(()+,-/=@ABCDMNVX]EGEGEGGEGGE"#$%&'()+,23569<<@ABCDMNNP]EGEGEGEGGEGGG  !#$&''(+,-/4556CDMN]EGEGEGGEGG"##$&''(+,234559:<=@ABCDMN]EGEGEGEGGGEGG"##$&''(+,2345:==@ABCDMNNQQR]EGEGEGEGGEGGEG "##$&''(+-1556<@ABCDMNWEGEGEGEGEGG%'((),-23344556=>CDMNOPQR]GEGEGEGEGGEG%,--.78]EGG##%%&,--.789>]GGEGGG 5678=>GHRSSTTUUVVWWX[\]GEGGEGEGECEKLMN]CGC$%]CG'-8:;<==>AB]GGCLCG-LMNRSST]GGCLGNTUVW]CLG),--/]GCC%&,-0>]CGCG=@@BBCMNOP]GGCGCGN]C%34]CCG V]CC$%&'MNNQRT\]]CLGCCGC NXYZ[[\]CCGCL !*++,-G]LCGCGG ERS]CCG!#$&-QQRSU]GLCGCGG Q]CC #$%&'*++,-.799;;<=>]CLGCLCGGGLG00JUVWXXYZ[[\\GCLGLGC ]CG=HI]CG !""+,/0GGOORRXXYZ\]CGGGGGGGCC"#$%&'()+,-/4556:@ABCDJKMNRS]CGCGCGGCGCGCGCGS]C$)*+;<<@]CLGCG!$$&]CGGMSTUV]CGC !"&'5:;<]CGLGLCG !!#]CLGGIUW]CG9:;IJYZ\]]GCGLGJXY]CG %&()2255NSTTUVWXY\GGGGCGCGC !""##$$%]CCLGLG/5678>@@BBC]CGCGCG(QWY\]]CCCG !"$%%&-/9GLGCGC(7889:>?]GCG)-TXY]GCG !""#$%)*-2266TUVXY\]]CGCGCGGGCGC&&CDE]GCGBEF]CGHHIJKMP]GCGGZ[]GC$./2378MCGLG #$'(MCLG $%0156:<MNNOPQRS]CGGCGCGGC[\]]GC %&'()*+,,-7889<==>>YYZZ[[\]GLGCGLGGLGCGCG<=]]CG&'./67;VWYZ]GGGGGCG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||CGCG!!##%%''))++--//113355779;<=||||||||||||||CNOPPQQRTUUV]CGLGLG $$))AEFIJJK]CCCCGCGR]CC #$+,-.=>OVXZZ]]CGLGCGGC'DKLLMMGCGL%12=[]CGG!Q]CC %&'(,.=CCNW]]CGLGGCGGGTU]CG!!*+,:;=UWY[CCGLGCNNPRUV\]CCCC!8<=IMNOSTU]CGGCLCGAHIIJKL]CLCG !"&/0129::;=>>HMNNTU[]kLGCGCGCGCGGG56789:>>GCGG()-.012356=>ABBCEFGHLMMNVWXYYZ[\]kCGGCGLGHCkGCGLG"#$%'(<==>BCCDMNNOOPZ[\]]GCLGkCGCG|GC|-.NO]GCG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||C|GFLN\]]GGC%%--55==>]GGGGCI\C '()*-47<>@BEKORGLGCCCCC +--.78;<=CCGCG9:;=>?@@ADEFG]GCGLGLG034IJMNYZ]GCGCG59:=CG3<==>Z[\]]CGCGCDFIJMN]GLGC,-]CG"R]CC "+789:;<=>HIQRZ[\]]CGLGLGCGLG ?KNWCCGDQR]CGBUVXYZ[]CGLG -.0112FKKRRUWY]GCGCCCCG 479ACEGKLTUUVVWWXZ[\]]CCCCGLGLGLG79:=IMCGG&&--./056=GGCGC(]C!XZ\]CCC-/5@ABCDNCCCLG !""+,/0GGOOQSXYZZ\]CGGGGGGGCC"#$%&'()+-45569<<@ABMPY[[\\]]CGCGCGCGGCGGGCG!""),/0GGOORRUUXYZZ[[\]GCGGGGGGGGCGC !$%&'()+,.//06;;=MNOSST]CGCGCGCGGGCCG !"",,00GGOORRXYZZ\]GCGGGGGGGCC #$$%'(()+,-/=@ABVX]CGCGCGGCGC !""+,/0GGOORRXYZZ\]GCGGGGGGGCC "#$%&'()+,23569<<@ABNP]CGCGCGCGGCGG "")+//4699;;>@CEIKX[\]GCGGGGGGGGGGC  !#$&''(+,-/4556]CGCGCGGCG"++//GGXYZZ\]CGGGGCC "##$&''(+,234559:<=@AB]CGCGCGCGGGCG !""++//GGRRXYZZ\]CGGGGGGCC"##$&''(+,2345:==@ABNQQR]CGCGCGCGGCGCG!++//YZ\]CGGCC "##$&''(+-1556<@ABWCGCGCGCGCG!""57PPZZ\]GCGGGGG %'((),-23344556=>OPQR]GCGCGCGCGCGOORXY]GCCG%,-]CG !!##))BBDDOORZ\]GGGGGGCCG##%%&,-9>]GGCGG 5678RSSTTUUVVW]GCGCGCGC&&KNO]GGC"##$%+5667Z[]CGCCGCG#$$%]GCG $%%&6789?@@ABCCDHIMN]YGYGYGYGYG|,--.]GYGKMNT\]GYG-LLM]GYGJMNWX]YG-JMNWX]GYG#-.45]GYG!"(*-.78]|YGGBCGHJK]GYGY !"#)*GHKL]YGYGYG "#]GYGTUXY]YGYJKRSST]YGYG !""#%&&'89=>>?MN]GYGLGYGYGKLMN]YGY$%]YG'-8:;<==>AB]GGYLYG'(-LMNRSST]GGYLGNTUVW]YLG),--/]GYY%&,-0>]YGYG=@@BBCMNOP]GGYGYGN]Y%34]YYG V]YY $%&'CDMNNQRT\]]YLGYYGY NXYZ[[\]YYGYL  !*++,-GMNWX]LYGYGGG ERSST]YYG!#$&-QQRSU]GLYGYGG Q]YY #$%&'*++,-.799;;<=>]YLGYLYGGLG00JUVWXXYZ[[\\GYLGLGY ]YG=HIMNWX]YGG !""+,/0GGOORRXXYZ\]YGGGGGGGYY"#$%&'()+,-/4556:@ABCDJKMNRS]YGYGYGGYGYGYGYGS]Y$)*+-.78;<<@]YLGGYG!$$&-.78]YGGGMSTUV]YGY !"&'5:;<]YGLGLYG !!#-.78]YLGGGIUW]YG9:;IJMNWXYZ\]]GYGGLGJXY]YG %&()2255NSTTUVWXY\GGGGYGYGY  !""##$$%-.78]YYLGLGG/5678>@@BBC]YGYGYG(QWY\]]YYYG !"$%%&-/9GLGYGY(7889:GH]YGYGYGG=QTUVW]GYLG!!//RXY[\]YYGYGY !"#-.78]YLGGZ[[\]GYG/=>>?]GYG)-TXY]GYG !""#$%)*-2266TUVXY\]]YGYGYGGGYGY&&CDE]GYGBEFMNWX]YGGHHIJKMP]GYGGZ[]GY$./2378MYGLG #$'(MYLG $%0156:<MNNOPQRS]YGGCGYGGC[\]]GY<=]]YG&'./67;VWYZ]GGGGGYG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||YGYG!!##%%''))++--//113355779;<=||||||||||||||YNOPPQQRTUUV]YGLGLG $$))AEFIJJK]YYYYGYGR]YY #$+,-.78=>OVXZZ]]YGLGYGGY'DKLLMMYGL%12=[]YGG!Q]YY %&'(,.78=CCNW]]YGLGGYGGTU]YG !!*+,-.78:;=UWY[YYGGLGYNNPRUV\]YYYY!8<=IMNOSTU]YGGYLYGAHIIJKLMNWX]YLYGG !"&/0129::;=>>HMNNTU[]kLGCGCGCGYGGG56789:>>GYGG()-.012356=>ABBCEFGHLMMNVWXYYZ[\]kYGGCGLGHYkGCGLG"#$%'(<==>BCCDMNNOOPZ[\]]GCLGkYGYG|GC|-.NO]GYG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||Y|GFLN\]]GGY%%--55==>]GGGGYI\Y '()*-47<>@BEKORLGYYYYY +--.78;<=YYYG9:;=>?@@ADEFG]GYGLGLG034GH]YGGYGG  !!"%&&''(()-.78=GLGLGYG#$GGIMYYG==>IJMNYZ]GYGYG59:=YG3<==>Z[\]]YGYGY'(-.78DFIJMN]GGLGY,-]YG"R]YY "+-.789:;<=>HIQRZ[\]]YGLGLGYGLG ?KNWYYDQR]YGBUVXYZ[]YGLG -.0112FKKRRUWY]GYGYYYYG 479ACEGKLTUUVVWWXZ[\]]YYYYGLGLGLG79:=IMYGG&&--./056=GGYGY(]Y!XZ\]YYY-/5@ABCDMNNYYYLG !""+,/0GGOOQSXYZZ\]YGGGGGGGYY"#$%&'()+-45569<<@ABCDMPY[[\\]]YGYGYGYGGYGGGYG!""),/0GGOORRUUXYZZ[[\]GYGGGGGGGGYGY !$%&'()+,.//06;;=CDMNOSST]YGYGYGYGGGYYG !"",,00GGOORRXYZZ\]GYGGGGGGGYY #$$%'(()+,-/=@ABCDMNVX]YGYGYGGYGGY !""+,/0GGOORRXYZZ\]GYGGGGGGGYY"#$%&'()+,23569<<@ABCDMNNP]YGYGYGYGGYGGG "")+//4699;;>@CEIKX[\]GYGGGGGGGGGGY  !#$&''(+,-/4556CDMN]YGYGYGGYGG"++//GGXYZZ\]YGGGGYY"##$&''(+,234559:<=@ABCDMN]YGYGYGYGGGYGG !""++//GGRRXYZZ\]YGGGGGGYY"##$&''(+,2345:==@ABCDMNNQQR]YGYGYGYGGYGGYG!++//YZ\]YGGYY "##$&''(+-1556<@ABCDMNWYGYGYGYGYGG!""57PPZZ\]GYGGGGG%'((),-23344556=>CDMNOPQR]GYGYGYGYGGYGOORXY]GYYG%,--.78]YGG !!##))BBDDOORZ\]GGGGGGYYG##%%&,--.789>]GGYGGG 5678=>GHRSSTTUUVVWWX[\]GYGGYGYGYCY&&KNO]GGY"##$%+5667Z[]YGYYGYG#$$%]GYG &/29;=HMkOV/V/V/Q778Q7/ ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTT!TPTsTT<-TJywTTRTTT "%&./003345667??@ABBOOOfO]]f,-fNOQQUUV/ffTUf#,->O]]V/fV/V/DKMMV/f&'CCV/fV/!!*+;=Y[V/V/fV/IMNOSTV/V/fV/AHIIJKV/fV/ &/29;=HMVfOOOV// ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24T4TT4T>dT>>T>T<>>??AT?^????@ @AATATBfBTBTT"$%%ҔҩҩҸ>]]M/ ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T(m(T(!TTT!TTsTT<-TJyTTRTTT HM*O78 ()-12BBFGHLMMZ[*YH*O%'==>BDMO*.NMO]]>]LLZZOO12OI\()47<>@BEKORO +--8;;=@@EFOO03PRSTO01PQR]1;; !!&&'')-OO#$GG>INY"#O593<>Z]]FIN]O,"R]"89<=IQ[\OOO ?KDQBUYZO.02FKKRRUW %%))++FFGGIIRRXXYY[[\\gvޅޔ޻ ) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[ .I^yێۻHWڭr܁ܖڭܷ;Vq݌ݡͼݶ1R..//ڭڼ GGIIJJKKXX[[\\]]DYGVnڃژPP)ZZ[[##$$''FFGGHH{ِ٫ٺ  ""(())11AACC!0?NN]l$&69?ABDH--NTLLJM.4"(CGK] #)HK "TY]JSS""&&9=?MOKN]$;<==>AONRSSONTUVO--/]%-0BBNON]%3 V]$%&NNQR]]O NX[[\]O ++O ER!#$QQO Q]#$'*++,-<=OOOJUVWYZ\\OO=H!YZ\]"%&)+55@ADJNRS]$)*<<O!MSV] !'5:;OO OIU;IZ\OJXNSUVY\ !""$$OO/58>BB(QWY\ !%%/9O(79:OMTV]0EGTOTXXZ[]]#%%(,./15QTUVO!!RX\] !"O[[>>TX!#$*-VX]]CDBEIJ[]$.37O #$'O<<-./11>MOP./00334566AAYO*+,,88==OYO??BBO<=WY,-OMPR[NOQQUUOO $$))AEJJTUOR]#,->O]]ODKMMO%1!Q]&'CCOGT!!*+;=Y[ONNPRUV\]IMNOSTOAHIIJKO HMkO ()-12BBFGHLMMZ[kYHkO%'==>BDMOkk479ACEGKUUWW[\OOO79./6=(]!XZ\]-/5@ABCO!ZZ\]"%&)+55@A\\ %&)+//NOSS#%')+@AX]"%&)+35@A \] $&(+55"ZZ\]"$&(+34@A"$&(+34@AQQ"$&(+55@A!((-2446=PQOORX%,OORZ&,67SSUUWW\]O]"$%+57Z$$ ()-126=BBFGHLMMWXZ[kQ7V/YHQ7kV/O#$%'==>BDM[\V/OkQ7Q7V/.NQ7MOQ7>]Q7+:;>GLLZZV/V/V/OO 123:V/OV/I\Q7()47<>@BEKOROQ7Q7Q7Q7Q7 +--8;Q7Q7Q7;=@@EFQ7OO9:kV/03PRSTQ7Q7O01PQQ7Q7R]Q71;;Q7Q7 !!&&'')-OOQ7#$GGQ7Q7>INYQ7Q759Q73<>Z]]Q7Q7Q7FIN]OQ7,Q7"R]Q7Q7"89<=IQ[\Q7OOQ7O ?KQ7Q7DQQ7BUYZQ7O.02FKKRRUWQ7Q7Q7Q7Q7479ACEGKUUWW[\Q7Q7Q7Q7OOO79Q7./6=Q7Q7(]Q7!XZ\]Q7Q7Q7-/5@ABCQ7Q7Q7O!ZZ\]Q7Q7Q7"%&)+55@A\\Q7Q7Q7Q7Q7Q7 %&)+//NOSSQ7Q7Q7Q7Q7Q7#%')+@AX]Q7Q7Q7Q7Q7"%&)+35@AQ7Q7Q7Q7Q7 \]Q7Q7 $&(+55Q7Q7Q7Q7"ZZ\]Q7Q7Q7"$&(+34@AQ7Q7Q7Q7Q7"$&(+34@AQQQ7Q7Q7Q7Q7Q7"$&(+55@AQ7Q7Q7Q7Q7!Q7((-2446=PQQ7Q7Q7Q7Q7OORXQ7Q7%,Q7OORZQ7Q7&,Q767SSUUWWX[\]Q7Q7Q7Q7V/Q7O]Q7"$%+57ZQ7Q7Q7Q7$$Q7\]-./1156>MOPS]Q7Q7 "%&./003345667??@ABBOMPR[Q7Q7NOQQUUQ7OO $$))AEJJQ7Q7Q7Q7Q7R]Q7Q7#,->O]]Q7OQ7Q7DKMMQ7O%1Q7!Q]Q7Q7&'CCQ7OQ7GTQ7!!*+;=Y[Q7Q7OQ7NNPRUV\]Q7Q7Q7Q7IMNOSTQ7Q7OQ7AHIIJKQ7OQ7 &/29;=HMkOQ7 ()-126=BBFGHLMMWXZ[kQ7YHQ7kO#$%'==>BDM[\OkQ7Q7+,&)GH9>FS#$DM!669Z[+:;>GLLZZOO 123:O9:k67SSUUWWX[\]Q7Q7Q7Q7Q7$&69?ABDHRRRRR--RNTRLLRJMR.4R"(RCGK]RR #)HKRRR "RTY]RRJSSRR""&&9=?MRORRKN]RR$R;<==>ARORNRSSRONTUVRO--/]RR%-0RRBBNORRN]R%3RR V]RR$%&NNQR]]RORRR NX[[\]RRRO ++ORR ERRR!#$QQORR Q]RR#$'*++,-<=ROROROJUVWYZ\\ROORR=HR!YZ\]RRR"%&)+55@ADJNRRRRRRRRS]R$)*<<ROR!RMSV]RR !'5:;ROOR ROIUR;IZ\ROJXRNSUVY\RRR !""$$RROO/58>BBRRR(QWY\RRR !%%/9ORR(79:ROMTV]RR0EGTRROTXXZ[]]RRRR#%%RR(,./15RRRQTUVRO!!RX\]RRRR !"RO[[R>>RTXR!#$*-VX]]RRRRRCDRBERIJR[]R$.37RO #$'RO<<R-./1156>MOPS]RR]]R<=RWYRMPR[RRNOQQUUROO $$))AEJJRRRRRR]RR#,->O]]RORRDKMMRO%1R!Q]RR&'CCRORGTR!!*+;=Y[RRORNNPRUV\]RRRRIMNOSTRRORAHIIJKROR &/29;=HMkOR78R ()-126=BBFGHLMMWXZ[kRYHRkO#$%'==>BDM[\OkRR.NRMOR>]RI\R()47<>@BEKORORRRRR +--8;RRR;=@@EFROO03PRSTRRO01PQRRR]R1;;RR !!&&'')-OOR#$GGRR>INYRR59R3<>Z]]RRRFIN]OR,R"R]RR"89<=IQ[\ROORO ?KRRDQRBUYZRO.02FKKRRUWRRRRR479ACEGKUUWW[\RRRROOO79R./6=RR(]R!XZ\]RRR-/5@ABCRRRO!ZZ\]RRR"%&)+55@A\\RRRRRR %&)+//NOSSRRRRRR#%')+@AX]RRRRR"%&)+35@ARRRRR \]RR $&(+55RRRR"ZZ\]RRR"$&(+34@ARRRRR"$&(+34@AQQRRRRRR"$&(+55@ARRRRR!R((-2446=PQRRRRROORXRR%,ROORZRR&,R67SSUUWWX[\]RRRRRO]R"$%+57ZRRRR$$R"$%%-BBQ>]RR]RMR %%))++FFGGIIRRXXYY[[\\x) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[?Zo &Yh+Lgͼ-Bc..// GGIIJJKKXX[[\\]]UjGVPP:"$%%"77F>]VV]VMV %%))++FFGGIIRRXXYY[[\\ o.2AP_n) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[H]2Sn/bq$ $.CRgvn-Bcx..//$3 GGIIJJKKXX[[\\]]iXiiPPZZ[[|##$$''FFGGHH"1F[  ""(())11AACCq$&69?ABDHVVVVV--VNTVLLVJMV.4V"(VCGK]VV #)HKVVV "VTY]VVJSSVV""&&9=?MVfVVKN]VV$V;<==>AVfVNRSSVfNTUVVf--/]VV%-0VVBBNOVVN]V%3VV V]VV$%&NNQR]]VfVVV NX[[\]VVVf ++fVV ERVV!#$QQfVV Q]VV#$'*++,-<=VfVfVfJUVWYZ\\VffVV=HV!YZ\]VVV"%&)+55@ADJNRVVVVVVVS]V$)*<<VfV!VMSV]VV !'5:;VffV VfIUV;IZ\VfJXVNSUVY\VVV !""$$VVff/58>BBVVV(QWY\VVV !%%/9fVV(79:VfMTV]VV0EGTVVOTXXZ[]]VVVV#%%VV(,./15VVVQTUVVf!!RX\]VVVV !"Vf[[V>>VTXV!#$*-VX]]VVVVVCDVBEVIJV[]V$.37Vf #$'Vf<<V-./11>MOPVV./00334566AAff]]V*+,,88==fff??BBf<=VWYVMPR[VVNOQQUUVff $$))AEJJVVVVVR]VV#,->O]]VfVVDKMMVf%1V!Q]VV&'CCVfVGTV!!*+;=Y[VVfVNNPRUV\]VVVVIMNOSTVVfVAHIIJKVfV HMVfV78V-12BBFGHMZ[VfHVf%'=BDMfVV.NVMOV>]VLLZZff12fI\V()47<>@BEKORfVVVVV +--8;VVV;=@@EFVffLLfV03PRSTVVf01PQVVR]V1;;VV !!&&'')-ffV#$GGVV>INYVV"#f59V3<>Z]]VVVFIN]fV,V"R]VV"89<=IQ[\VffVf ?KVVDQVBUYZVf\]f.02FKKRRUWVVVVV479ACEGKUUWW[\VVVVfff79V./6=VV(]V!XZ\]VVV-/5@ABCVVVf!ZZ\]VVV"%&)+55@A\\VVVVVV %&)+//NOSSVVVVVV bstr-1.7.0/src/unicode/fsm/sentence_break_fwd.littleendian.dfa000064400000000000000000006102571046102023000225570ustar 00000000000000rust-regex-automata-dfa-sparse  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}~ 8 ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvwxxyyz{||}}~~mTe2[)Lo ; ^ X  g ~ TTTTTmTT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTTT!TTTTTTT%T<SvT=TkewTTXTTTM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!<[B<[BBB!BT<[B<[B<[B<[BTI%JJKDLLMMNNNSOjOCPqQR=ňTAp8WTTWX#HYYTT; ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvvwwxxyyzz{{||}}~~m T\2[)o B}:uE n 'zg ~ TT "##$GHHIRSSTWXXY]H|||4556TUUV]|||]|XYYZ]||!"]|1223VW]|| =>BC]||] MNQRSTUVWX[\\]]|||| #$$%%&())**++,?@@A]|||||STTU]|| '(]||MNNO]||45=>]||&''(]|R:;=>]R1223]R !]RVWWX]R>>?BCCD]{! !!"*++,,--.67789::;=>>?BCCDGHHIJKKLMNNOOPPQQRTUUVYZZ[[\\]]c)cPq7Rg !!""##$$%/00112MNPQQRRSUVVWWX].$9f]]0112566778899::;;<<==>>??@@AABBCDEEFFGGHHIIJJKKLLMMN]mBW~ ;V}= IJJKVWWXYZZ[[\]j<# ..//03445899::;;<<==>]Y4a]-J ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!<[B<[BBB!B<[B<[B<[B<[BT]]]]MN]];^^^^^,_a___T`e````aacc8WTdTWXd/eHYeYTT "##$GHHIJKKLRSSTWXXY]H||||QRSTUVWX[\\]]|||| !]||&''(./[\\]]|R|| !!"#$$%%&]|||#$-.899::;=>]|||R()=>MNNO]|| 122334;<<=BCDEFGGHKL]R|||| !,--..//0MN]R|||()]|CDNO]|HIQRVWWXZ[[\]|R|!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]0]000>0IEl#\( !!"*++,,--.67789::;;<<==>>??@@AABBCCDEFFGGHHIIJJKKLLMMNNOOPPQQRYZZ[[\\]]RcPqBi)nRg !!""##$$%/00112MNPQQRRSSTTUUVVWWX]&k.$f"c !]0112566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMN])xVBW~"Id?Vx IJJKUVVWWXXYYZZ[[\\]]s"""""<#c#~#..//001123445899::;;<<==>]=Aba=>>?]/ ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTT!TPTsTT<۰-TJyбʲwTճTRTԴTT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24!T!T4TT4T!T!T!T!T5T55T5T<56:6i6T6666 757889T59T99T@:TT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTTT!TTTTTTT T<* M p T !+!B!k!<""N#Tk#T#/$Tv$TTM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~B>IIKKYYHkR]RMR!'R;;''/[]]ORR "#%%RRR#*+.8::;=RRRO)=NNRR224;=BEFHKORRRR --//N]ORRR(RDNRIQVVWW[[ROR!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]$3HWr/Vk "1Xm| ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU,G b}1FUjgoB !!**;;==DDEEQQSSUUVVWWQ$9Ncrt B1166778899>>??@@AABBCCDDEEFFGGHHIIMM8D .CRg JJRRVVWWYYZZ[[\\]]2A]t ..//114499::;;<<==`*?l>> ##>>IIKKYYHk7Q]7QM7Q!'7Q''/[]]O7Q7Q "#%%7Q7Q7Q#*+.8::;=7Q7Q7QO)=NN7Q7Q224;=BEFHKO7Q7Q7Q7Q --//N]O7Q7Q7Q(7QDN7QIQVVWW[[7QO7Q!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]3BWf>ez 1@g|  ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU&A q%@Udygo- !!**;;==DDEEQQSSUUVVWW{$9Ncr p\1166778899>>??@@AABBCCDDEEFFGGHHIIMM8;2DYn4U JJRRVVWWYYZZ[[\\]]E*];J ..//114499::;;<<==S@T9UNUUUUU>>,5 ^__`hiijjknooprssttuuvvwwxxyyzz{{||}}~~T(m(T($T$T$T$T$T$T$T$T)T))T)T*7*Z*}*T*** + +C+,,&-TC-T-.TN.TT##>>IIKKYYHk/V7Q/V!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]3BWf>ez 1@g|  ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU&A \q%@Udygo- !!**;;==DDEEQQSSUUVVWW N{Ÿן )\ JJRRVVWWYYZZ[[\\]]E'T;J ..//114499::;;<<==S@T9UNUUUUUV+ ^__`hiijjknooprssttuuvvwwxxyyzz{{||}}~~T(m(T($T$T$Te.T..T.T../>IIKKYYH*/V/V/V]/VM/V!'/V''/[]]/V/V/V "#%%/V/V/V#.8:=/V/V/V)=NN/V/V224;=BEFHK/V/V/V/V/V --//N]/V/V/V/V(/VDN/VIQWW[[/V/V/V!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]T,Gb}bb׫b%:[vbʬ'<K`o ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU֠m¨ר%@U ajyͩ '- !!**;;==DDEEQQSSUUVVWW>}Ÿן%'4Cj )*1166778899>>??@@AABBCCDDEEFFGGHHIIMM'[(j(=(((((())*)?)Z)i)))) JJRRVVWWYYZZ[[\\]]''''''"(=(L( ..//114499::;;<<== WPeV>>##>>KKH**]*M*!'*''/[]]/V** "#%%***#.8::;=***/V)=NN**224;=BEFHK/V**** --//N]/V***(*DN*IQWW[[*/V*!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]b\k˜˜˜@˜gĝߝ˜33Ziɞ؞/ ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUUII@I[Imb`q``````` aa(aCaXaga|aaaa'aY- !!QQSSUUVVWWbHHHHy=HHH 8HSH1166778899>>??@@AABBCCDDEEFFGGHHIIMM'[(@?(@C@(j@@@lG{GGGGGGH JJVVWWYYZZ[[\\]]@=O=d=y===?@ ..//114499::;;<<w--.. //-/Z/>>#-/ ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24T4TT4Td>T>>T>T<>>?A?T^????? @@AATATfBBTBTT: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24!T!T4TT4T!T!T!T!TW:T))T)T<:7*:}*T:;* +0;Y;*<<<=TY=T=>TN.TT##>>IIKKYYHVOOO]OMO!'O''/[]]fOO "#%%OOO#*+.8::;=OOOf)=NNOO224;=BEFHKfOOOO --//N]fOOO(ODNOIQVVWW[[OfO!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] 6WrWWW/PkWϽ1@Ud ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU &AVez  .Ujy W !!**;;==DDEEQQSSUUVVWWZĹٹ8'N 1166778899>>??@@AABBCCDDEEFFGGHHIIMM-<eGzf+FUv JJRRVVWWYYZZ[[\\]]go8GV ..//114499::;;<<==WXYYVYeYzYYY>>pW##>>IIKKYYHVO/VO''/[]]f/V/V#*+.8::;=/V/V/Vf224;=BEFHKf/V/V/V/V --//N]f/V/V/VIQVVWW[[/Vf/V!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]Y,b}bb׫b%:[vbʬ'<K` ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUUi ƺ@U jy D - !!**;;==DDEEQQSSUUVVWWCĹٹ%'4'N #*1166778899>>??@@AABBCCDDEEFFGGHHIIMM-<j(=(K(f(u)*)Z)) JJRRVVWWYYZZ[[\\]]'govo'=(L( ..//114499::;;<<==cggPhhhY##>>KKHVV]VMV!'V''/[]]fVV "#%%VVV#*+.8::;=VVVf)=NNVV224;=BEFHKfVVVV --//N]fVVV(VDNVIQVVWW[[VfV!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]   / > Y z  z  z Yz lɷz  q8_nθݸ4 ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU      + F [ j         - B i ~    7 !!QQSSUUVVWW / J Y h w    1166778899>>??@@AABBCCDDEEFFGGHHIIMM-<dFyf  * E T u    JJVVWWYYZZ[[\\]] 1FU ..//114499::;;<<U 8>>3 __``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvxxyyzz{{||}}~~GGGGGGG|G;B8L x/!<K`Js9H)w D ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~B>?GHHIIJJKKLRSSTWXXYYZ]GHGkG|CGYG|G|CG55=TUUV]G|G| !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUVXXZZ\\|||||||||||||||||||||||||||||||  ""$$&'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUXXZZ\]|||||||||||||||||||||||||||||||!!##&&*+003379<BCIKKM]|GG|GGG]Y MOOQQSSUUVWX[\\Y||G|G|G#%%))++..@@J]GGGG|G|,./357799;;==??AACCEEGGIIKKMQSSTTVVYZ||||||||||||||||G||N]|=??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]||||||||||||||||| !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|GY||||||||||||||||||||||||||| ""$$&&((**,-//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|||||||||||||||||||||||||||||||!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMNN||||||||||||||||||||||||G568:;;<=>]GGG|&''(./[\\]]|LGYGY  !!"#$$%%&-ILR]GYGYGYGGG #$)*+,-.899::;=YGGYGYL)=>GHHIJKKNNYGGY 224;<<=BEFGGHKNW[\LYGYYGYG !,--//N]LGYYY()*YGDNP]YG 'IQTUVVWWYZ[[\]YGLGYG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]][?D=<V1d<o1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]].=v?f RM $3fA$  ^)\q ">-   V    !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]ro8'T88ix888 &8S.pM8  !!""$$%%&-Q+@8UU8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMiiӽ~>?jAVѿ%:sM<<==[j]8AGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OAVed|%dvPee..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]>9@A)A) B=B^BCC /DSh)])=>>?])>)-)D ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!BBB!BTBBTI%JJKDLLMMN@WNNSOjOPqQR]ِT=Б.0Ŕ8WTTWX0HY˖YTTM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!<[B<[BBB!BT<[B<[B<[B<[BTeI%JJKDLLMMNXfofNNSOjOfPqQRuggg2hTUhhhhiFijHkl8WTTlTWXm~mHYnYTT"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHG.G|8G#G|G|8G4556TUUV]|G|G|XZ]||"]|]# MNQSSTUVWX[\\]]#|G|G|G| #$$%%&())**++,?@@A]G|G|G|G|G|STTU]|G| !'(]|G#|MNNO]|G|4568:;;<=>]|GGG|&''(./[\\]]|OG#G#  !!"#$$%%&-ILR]G#G#G#GGG #$)*+,-.899::;=#GG#G#O)=>GHHIJKKNN#GG# 224;<<=BEFGGHKNW[\O#G##G#G !,--//N]OG###()*#GDNP]#G 'IQTUVVWWYZ[[\]#GOG#G!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]667?7N7i777D888C999<:::;n;;<7<<<=3=T===>2>e>/ !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVYZZ[[\\]]1 2D2q2f222M 3:3g3v33A3$ 47 ^04E4l44445/5D5 e5j155"6O6 !!""##$$%)**+/00112:;;<<==>CDDEEFMNPQQRRSSTTUUVVWWX]/0s00!1N18Y8c1x188881.1p108  !!""$$%%&-///+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM8S_,,,,,-I-|---- .!.`.u...M/AGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8O+AVed|B+ľ++,,,..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]3456)P6)667738 /DSh)=>>?])1)"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHG.G|8G$>G|G|8G]$> MOOQQSSUUVWX[\\$>||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|G$>|||||||||||||||||||||||||||&''(./[\\]]|OG$>G$>  !!"#$$%%&-ILR]G$>G$>G$>GGG #$)*+,-.899::;=$>GG$>G$>O)=>KNN$>G$> 224;<<=BEFGGHKNW[\O$>G$>$>G$>GG !,--//N]OG$>$>$>()*$>GDNP]$>G 'IQTUVVWWYZ[[\]G$>GOG$>G!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] /JqpWJ L    B     n   1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]u?f M 2YA$ C=Ry $9U Z>-   V    !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX] 'T8Y8ix8888(.p08  !!""$$%%&-&+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM8 o  > 2G LmMAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OXAVed| ľK[ )..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]@AOC)jC)CD!DD  /DSh)=>>?])=)J ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt$>?GHHIIJJKKLRSSTWXXYYZ]GHG.G|EG$>G|G|EG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] /JqpWJ L    B     ) n   1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]u?f M 2YA$ C=Ry $9U Z>-   V    !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]G 'T8Z8ix888σ8(.pH8  !!""$$%%&-&+@8AGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OXAVeY|K`ɛ)..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]@AOC)jC)CD!DD_E /DSh)A ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt$B$B$BTBBT~I%JJKDLLMMN~~NNSOjO<PqQw6}TՀKhƒW8WTTWXE…HY]YTT"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHG^G|EGEG|G|EG]E MOOQQSSUUVWX[\\E||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|GE|||||||||||||||||||||||||||568=>]GG|&''(./[\\]]|/VGEGE  !!"#$$%%&-ILR]GEGEGEGGG#$-.899::;=EGEGE/V)=>KNNEGE 224;<<=BEFGGHKNW[\/VEGEEGEGG !,--//N]/VGEEE()*EGDNP]EG'IQTVWWYZ[[\]GEG/VGEG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]pֈ 'NM4Ћ'f)jߎ?Z1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]^m?fͅ YxM Bo~A؆$y C/Vwz 7I-   V    !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]^?'T8Z8ix888σ8.pń18  !!""$$%%&-[^^+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM["[C[[Q\>~\\\\];]V]k]]]]^M:^AGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OBYAVeY|YYZ#ZzZZZ..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]I/KL)L)M3MTM N_E /DSh)=>>?])vI)"##$=>>?GHHIJKKLRSSTWXXY]GHG^G|G^G|G|G]^ MOOQQSSUUVWX[\\^||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|G^|||||||||||||||||||||||||||&''(./[\\]]|/VG^G^  !!"#$$%%&-ILR]G^G^G^GGG#$-.899::;=^G^G^/V)=>KNN^G^ 224;<<=BEFGGHKNW[\/V^G^^G^GG !,--//N]/VG^^^()*^GDNP]^G'IQTVWWYZ[[\]G^G/VG^G!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]{e{{{{{{=|||N}}})~z~~C*Qɀ5JC1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]www?f&x YxnxM xxxx yA@y$[yy Cyyyzz0zuzzzz zb-   V   !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX]u:vv'T8ix8v.3wpNwuww8  !!""$$%%&-uu+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM["[rIss>s\ t!tZt{ttttt&uGuMzuAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OTqAVet|qqqq/rVrkr..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]bcBe)]e)eeff /DSh)=>>?])6b)"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHG.G|8GG|G|8G] MOOQQSSUUVWX[\\||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|G|||||||||||||||||||||||||||&''(./[\\]]|OGG  !!"#$$%%&-ILR]GGGGGG #$)*+,-.899::;=GGGO)=>GHHIJKKNNGG 224;<<=BEFGGHKNW[\OGGG !,--//N]OG()*GDNP]G 'IQTUVVWWYZ[[\]GOGG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]Sn1N54gfhm1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]]l?f M An}A$7 ^y]x -   V    !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]Q>'T8Y8ix8888.p08  !!""$$%%&- +@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM8St>Qr/PMAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8O%AVed|sľ'<..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]׮*)E)۰: /DSh)=>>?]))"##$=>>?GHHIJKKLRSSTWXXY]GHG.G|GzG|G|G]z MOOQQSSUUVWX[\\z||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|Gz|||||||||||||||||||||||||||&''(./[\\]]|OGzGz  !!"#$$%%&-ILR]GzGzGzGGG #$)*+,-.899::;=zGGzGzO)=>KNNzGz 224;<<=BEFGGHKNW[\OzGzzGzGG !,--//N]OGzzz()*zGDNP]zG 'IQTUVVWWYZ[[\]GzGOGzG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] Xs0Am6D(=|61 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]O^?f M -ZiA$ C8Mt4U pV-   V   !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX]V'T8ix82.p 48  !!""$$%%&-T+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMM8(>U'`uMAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OUAVet|3~..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]C)^) /DSh)=>>?]))"##$=>>?GHHIJKKLRSSTWXXY]GHG^G|GzG|G|G1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]O^?f nxM -ZiA$ C8Mt4U pV-   V   !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX]u'T8ix82.p 48  !!""$$%%&-T+@8"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHGkG|CGCG|G|CG]C MOOQQSSUUVWX[\\C||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|GC|||||||||||||||||||||||||||&''(./[\\]]|LGCGC  !!"#$$%%&-ILR]GCGCGCGGG #$)*+,-.899::;=CGGCGCL)=>KNNCGC 224;<<=BEFGGHKNW[\LCGCCGCGG !,--//N]LGCCC()*CGDNP]CG 'IQTUVVWWYZ[[\]GCGLGCG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]Idܫ!۬2}­ ^'x5z.mͱ1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]] C?fj RM Ĩ'Af$͇ C/t ŪF-   V    !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]?o'T88ix888 &8 .pԧM8  !!""$$%%&-+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMiĢoң>?j2GѤ LmMAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OnAVed|de|..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]9FGH)H)QIII\JJ /DSh)=>>?])E)"##$=>>?GHHIIJJKKLRSSTWXXYYZ]GHGkG|CGEG|G|CG&''(./[\\]]|LGEGE #$)*+,-.899::;=EGGEGEL)=>GHHIJKKNNEGGE 224;<<=BEFGGHKNW[\LEGEEGEG !,--//N]LGEEE 'IQTUVVWWYZ[[\]EGLGEG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]ֈ YNL4ЋfEVjΘ?Z1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]^?f RM mBoǓA؆$  ^/3wf̔ 7I-   V    !!""##$$%)**+/00112:;;<<==>CDDEEFMNNOOPPQQRRSSTTUUVVWWX]o?'T88ix888 &8.pńM8  !!""$$%%&-k^+@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMiiC[[j>~\?j\Zjj;]V]j]j]2kMekAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OBYAVed|ddZPeeZZ..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]%Zl[L)\)"]3MU] ^C /DSh)"##$=>>?GHHIJKKLRSSTWXXY]GHGkG|GkG|G|G]k MOOQQSSUUVWX[\\k||G|G|G !'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|Gk|||||||||||||||||||||||||||&''(./[\\]]|LGkGk  !!"#$$%%&-ILR]GkGkGkGGG #$)*+,-.899::;=kGGkGkL)=>KNNkGk 224;<<=BEFGGHKNW[\LkGkkGkGG !,--//N]LGkkk()*kGDNP]kG 'IQTUVVWWYZ[[\]GkGLGkG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]eˉCB)tŌ[ߍu_ԏ@[1 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]>?fe M †%LA$͇ C 0Qf{ۈ ,o-   V   !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX].y'T8ix8ل.rpۅ8  !!""$$%%&-΃ +@8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMiр|߁> ?j?Tɂނ,YzMAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8O AVet|K5h}..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ]pbqr)r)3sfss>t /DSh)=>>?])o)##>>KKHk]M!'''/[]]O "#%%#*+.8::;=O)=NN224;=BEFHKO --//N]O(DNIQVVWW[[O!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]'6KZu 2Yn%4[p ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU % @[p3BW~go !!QQSSUUVVWWn} j1166778899>>??@@AABBCCDDEEFFGGHHIIMM8DSh .O JJVVWWYYZZ[[\\]]!0W ..//114499::;;<<)"7p>>s##>>KKH* ++7788::;;<<==>>@@BBCCFFGGHHIIJJKKLLMMNNOOQQUU % b`@[p3BW~go !!QQSSUUVVWWMn} 8 ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvwxxyyz{||}}~~mTe2[)Lo ; ^ X  g ~ TT"%&)+35@AVVVVV \]VV $&(+55VVVV"ZZ\]VVV"$&(+34@AVVVVV"$&(+34@AQQVVVVVV"$&(+55@AVVVVV!V((-2446=PQVVVVVOORXVV%,VOORZVV&,V67SSUUWW\]VVVVVO]V"$%+57ZVVVV$$V ()-126=BBFGHLMMWXZ[V/VOfH/VVOf#$%'==>BDM[\OfV/V/VO+,O&)GHOO9>FSOO#$DMOO!6O69Z[OO+:;>GLLZZOOOff 123:OfO()47<>@BEKORf/V/V/V/V/V;=@@EF/Vff9:VO03PRST/V/Vf !!&&'')-ff/VFIN]f/V"89<=IQ[\/Vff/VfBUYZ/Vf479ACEGKUUWW[\/V/V/V/Vfff-/5@ABC/V/V/Vf67SSUUWWX[\]/V/V/V/VO/VKN]OO$O;<==>AOfONRSSOfNTUVOf--/]OO%-0OOBBNOOON]O%3OO V]OO$%&NNQR]]OfOOO NX[[\]OOOf ++fOO EROO!#$QQfOO Q]OO#$'*++,-<=OfOfOfJUVWYZ\\OffOO=HO!YZ\]OOO"%&)+55@ADJNROOOOOOOS]O$)*<<OfO!OMSV]OO !'5:;OffO OfIUO;IZ\OfJXONSUVY\OOO !""$$OOff/58>BBOOO(QWY\OOO !%%/9fOO(79:OfMTV]OO0EGTOOOTXXZ[]]OOOO#%%OO(,./15OOOQTUVOf!!RX\]OOOO !"Of[[O>>OTXO!#$*-VX]]OOOOOCDOBEOIJO[]O$.37Of #$'Of<<O-./1156>MOPS]OOOO]]O<=OWYOMPR[OONOQQUUOff $$))AEJJOOOOOR]OO#,->O]]OfOODKMMOf%1O!Q]OO&'CCOfOGTO!!*+;=Y[OOfONNPRUV\]OOOOIMNOSTOOfOAHIIJKOfO &/29;=HMVfOOOO78O ()-126=BBFGHLMMWXZ[VOOfHOVOf#$%'==>BDM[\OfVOOO.NOMOO>]OI\O()47<>@BEKORfOOOOO +--8;OOO;=@@EFOff03PRSTOOf01PQOOR]O1;;OO !!&&'')-ffO#$GGOO>INYOO59O3<>Z]]OOOFIN]fO,O"R]OO"89<=IQ[\OffOf ?KOODQOBUYZOf.02FKKRRUWOOOOO479ACEGKUUWW[\OOOOfff79O./6=OO(]O!XZ\]OOO-/5@ABCOOOf!ZZ\]OOO"%&)+55@A\\OOOOOO %&)+//NOSSOOOOOO#%')+@AX]OOOOO"%&)+35@AOOOOO \]OO $&(+55OOOO"ZZ\]OOO"$&(+34@AOOOOO"$&(+34@AQQOOOOOO"$&(+55@AOOOOO!O((-2446=PQOOOOOOORXOO%,OOORZOO&,O67SSUUW]OOOOO]O"$%+57ZOOOO$$O$&69?ABDHOOOOO--ONTOLLOJMO.4O"(OCGK]OO #)HKOOO "OTY]OOJSSOO""&&9=?MOfOOKN]7Q7Q$7Q;<==>A7QO7QLMONRSS7QONTUV7QO""O66O--/]7Q7Q%-07Q7QBBNO7Q7QN]7Q%37Q7Q V]7Q7Q$%&NNQR]]7QO7Q7Q7Q NX[[\]7Q7Q7QO ++O7Q7Q ER7Q7Q!#$QQO7Q7Q Q]7Q7Q#$'*++,-<=7QO7QO7QOJUVWYZ\\7QOO7Q7QGGO=H7Q!YZ\]7Q7Q7Q"%&)+55@ADJNR7Q7Q7Q7Q7Q7Q7QS]7Q$)*<<7QO7Q!7QMSV]7Q7Q !'5:;7QOO7Q 7QOIU7Q;IZ\7QOJX7QNSUVY\7Q7Q7Q !""$$7Q7QOO/58>BB7Q7Q7Q(QWY\7Q7Q7Q !%%/9O7Q7Q(79:7QOMTV]7Q7Q O0EGT7Q7QOTXXZ[]]7Q7Q7Q7Q#%%7Q7Q(,./157Q7Q7QQTUV7QO!!RX\]7Q7Q7Q7Q !"7QO[[7Q>>7QTX7Q!#$*-VX]]7Q7Q7Q7Q7Q45OCD7QBE7QIJ7Q[]7Q$.377QO #$'7QO<<7Q-./1156>MOPS]7Q/V7Q/V "%&./003345667??@ABB/V/V/VO/V<=7QWY7QM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~B]/V/V]/VM/V %%))++FFGGIIRRXXYY[[\\&&&&' '/'>'M'\'q') !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[-B]r)8SbwX%s%%%%%% &&-&N&c&~&&&..// GGIIJJKKXX[[\\]]fuPPWZZ[[3H##$$''FFGGHH  ""(())11AACC(O^m||$&69?ABDH/V/V/V/V/V--/VNT/VLL/VJM/V.4/V"(/VCGK]/V/V #)HK/V/V/V "/VTY]/V/VJSS/V/V""&&9=?M/V/V/V/VKN]/V/V$/V;A/VLM/VNS/VNV/V""/V66/V--/]/V/V%-0/V/VBBNO/V/VN]/V%3/V/V V]/V/V]8]G3 __``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvxxyyzz{{||}}~~GGGGGGG|G;B8L x/!<K`Js9H)w ; ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvvwwxxyyzz{{||}}~~m T\2[)o B}:uE n 'zg ~ TT "$GHHIRSSTWXXY]GG|G|G|G55=TUUV]G|G| !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUVXXZZ\\|||||||||||||||||||||||||||||||  ""$$&'))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUXXZZ\]|||||||||||||||||||||||||||||||!!##&&*+003379<BCIKKM]|GG|GGG MOOQQSSUUVWX[\\G||G|G|G#%%))++..@@J]GGGG|G|,./357799;;==??AACCEEGGIIKKMQSSTTVVYZ||||||||||||||||G||N]|=??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]||||||||||||||||| '))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|G||||||||||||||||||||||||||| ""$$&&((**,-//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]|||||||||||||||||||||||||||||||!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMNN||||||||||||||||||||||||G568=>]GG|&(]|G-ILR]GGG:G)KNNGG4BEKNW[\GGGG!-//N]GGG*GDNP]GG'IQTVY]GGGG!>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] + @ CU p    0Q,Yz+=+X81 !!''(())**++,,--..778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRTUUVWXXYYZZ[[\\]]*?f ) 8 M b }    A $  C( 7 F 8[ p       8-   V   !!""##$$%/00112MNNOOPPQQRRSSTTUUVVWWX]Op8'T8ix8.[p8  !!""$$%%&-+@8UU8001166778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMW>-Bi~&M<<==[jAGGIIJJKKLLMMRRSSTTUUVVWWYYZZ[[\\]]8OAVet|84..//001122334466778899::;;<<==HHIIJJLLMMOOPPQ](c)))x /DSh)])-)4!!""##$'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828  ;JYh88Ip88$3H82Wf{888 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]6Kx82A\8^w8+88"CXsA8883No8,,--//334[\\]]O8^m8|..//0]:8-778]8+8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8AP_n88==QQRRS]#28\]]8""##))*MOOPPQ]~88-..//00112233445566778899::;;<<==>GHHIYZZ[]8&5P+@Udy8B8W8 !""##$'(())*0112<==AABBCCDUVVWWXXY]Rg8|888$8?~8!""##$$%]8.C899::>>XXMMN]8=FFG]88++,,-]8N]G)-G<]G?]G@MGX]G<=G>]GMG(-HMGG(]GMN]G|KL]|GKT\]GG+-]GG-L]GGJ]G-J]GG=EEJJMM]]GGGGG#]G@]|!"(*]|GG "">>AACDFFQQVVXXZ]GGGGGGGGG!$&&((**..11346688::<<>>AACDIIQQVV[[]]GGGGGGGGGGGGGGGGGGGG((:>BBHHZ]GGGGG8Q|,2334E|G| 9;;>?ABEFKKTWXXYYZZ[]|GGGGG|G|G|!""#-H]|G|| !$$)*33;;]GGGMRRZZ]]GGGGV]G4]G']GW]G=KG]]G-LRT]GGGNTW]GG#@VZGG.]G>]|57]GG)-/]GG0>]GG=@@B]GGG%]G%]GG8]GM]G"]G-GO]G V]GG$'NQRT]GGGG N[GG -G]GG E]GG#$&-QSU]GGGGG Q]GG%*,799;;>]GGGGGG00JUXX[\GGGG]G%%'',,<\|G%&()2255N\GGGGG !##%]GGGG=FGGG/>@@B]GGG(QWY]GGG"-/9GGG(8JG)-T]GG"%..4]GGGF]|-|>Y]GGGGG89>@CG|GG<=]]GG&'./67;]GGGGGBMG%(Z]GG+]G-\\GG++>GJ]GGG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKM\|||||||||||||||||||||||G!!##%%''))++--//113355779;<=||||||||||||||GNPRTV]GGG4>?AACCEEGGIIKKMOQQSSUUWWYY[[]]GG||||||||||||||!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMVXXZZ]]|||||||||||||||||||||||||||!!##%%'(**,,//13557799;;==??AACCEEGGMMSSUUWWYY[[]]||||G|||||||||||||||||||||!!&&(()-//0011223355778OPRTTVX||||G|G|G|||G||| $$))A]GGGGRSV]GGR]GG+.OVXZZ]]GGGGG'DLGG%=[]GG!Q]GG%(,.=CCNW]]GGGGGGG]G!!*:UWY[GGGGNNPRUV\]GGGG!8<=IMS]GGGGG%&-.5=EEMMN]GGGGGG|899:GHMN]|G|G|]|AHJ]GG!"&>HNTU[]GGGGGGG5:>>GGYYG"NNGG-=GACEHY\]GGGG$(NOOP\]]GG|G|-.:;]G|G!$&'((,-112246@BEKORGGGGGGG +-=GG$$&*,-YYZZGGGG|'',-5577<=GGGGG'',-OOTU]]GGGGG$%55GGG//45GG9?ADG]GGG.=GTUV[\]G|GKKG9=GGIKW]GG0Z]]GGGGG ?KNWGGGD]GBX[]GG*.7GG&'-YZ|GGFKKRRUWY]GGGGG!!##%%''))++--//113;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]||||||||||||||||||||||||||||%.345<=>ENU||GG|| #$%,-.56688::<<>EN[\]|GG|GGGG||G %.5>ENRSSTU[[\\]]||||G|G|G "##$%+-.12345:=>EKOPRSSTU[]G|G|G|G|G|G|G|G479ACEGTVVXZ]]GGGGGGG7=IMGG&&-=GG!XZ\]GGG-/5@ADNGGGG "+,/0GGOOQSXZ\]GGGGGGGG+-9<<@MPY[]GGGGGG "),/0GGOORRUUX]GGGGGGGG6;;=OS]GGGG ",,00GGOORRXZ\]GGGGGGGG-/=@VX]GGGG9<<@NP]GGGG  "")+//4699;;>@CEIKX]GGGGGGGGGGG-/]GG"++//GGXZ\]GGGGGG59:<=@]GGGG"++//GGRRXZ\]GGGGGGG:==@NQ]GGGG!++//YZ\]GGGGG+-15<@WGGGG"57PPZZ\]GGGGGOOR]GGG !!##))BBDDOORZ\]GGGGGGGGG##%9>]GGG&&K]GG%+]GG&NNQR]]/V/V/V/V NX[]/V/V/V ++/V/V ER/V/V!#$QQ/V/V/V Q]/V/V#$'-<=/V/V/V/VJWYZ\\/V/V/V/VGG/V=H/V!YZ\]/V/V/V"%&)+55@ADJNR/V/V/V/V/V/V/VS]/V$)*<</V/V/V!/VMSV]/V/V !'5:;/V/V/V/V /VIU/V;IZ\/V/VJX/V !"$%%&]( =>]||MN]| $%%&())**++,-..//00112233445;<<=EFFGGHHIIJOPQRRSWXXYYZZ[[\\]] - H c x   !P!!!!!!"+"R"5 !!""##$$%%&&''(())**++,-..//001123445566778899::;=>>??@@AABBCCDDEEFFGGHHIMNNOOPPQQRRSSTTUXYYZZ[[\]$Qx,e:O|!Hcx&YOp-..//0]FGGHHIIJJKKLVWWXXYZ[[\\]]1RsOPPQ]wYZZ[[\]Gb"##$$%&''(-..//00112233478899::;;<<==>EFFGGHHIYZZ[]c+1+++,3,N,,,ģ' !!""#'(())*0112@AABBCCD]"m3NKLLM]|IJMN]|-.45]|()]|BCGHJK]|| !"#)*GHKL]||| "#]|TUXY]||JKRSST]|| !""#%&&'89=>>?MN]|R||KLMN]||$%]|:;<==>AB]|R|KLMN]RMNRSST]|RMNTUVW]|R!""#]R5667]R,--../]||%&,-01]||ABBCMNOP]||MN]|$%34]|| !UV]|| $%&'MNNOPQRS\]]|R||| !MNXYZ[[\]|||R !*++,]R|| !DERS]||!""#$%PQQR]R|| !PQ]|| "#$%&'*++,-.;<=>]|R|R|R IJUVWXXYZ[[\\]]|RR| ]|FGGH]R<=HI]|!"XYZ[[\]|||"#$%&'()+,4556?@ABCDJKMNRS]|||||||RS]|$%()*+;<<=]|R|!"]|LMSTUV]||  !"&'569:;<]|RR| !]|RHIUV]|:;IJYZ\]]|RIJXY]|=>]|=>]|MNSTTUVWXY\]]||| !""##$$%]||RR./5678>?ABBC]|||()PQWXXY\]]||| !"$%%&./9:]R||'(7889:;]|RLMTUUV]|| !]R/0EFFGTU]|| NOTUWXXYYZ[\\]]||||#$$%%&]||'(,--./00156]|||PQTUVW]|R !!"QRXY[\]|||| !"#]|RZ[[\]|=>>?]|STXY]|-.]|1256YZ]||MNXYYZ]||())*01123445?@@AOPPQWXXYZ[]|||||||  !#$$%NOOPXY]|||| !""#$%)*-.UVXY\]]|||||3456]RBCDE]|PQ]|ABEF]|HIJK]|Z[]|#$./2378]|R #$'(]|R$%0156;<<=]|||-.=>MN]||/0013456]#R\]]|  +,,-<==>>?XY]R#R|89>??@]|R;<=>]|VWYZ]|J ^__``abccddefgghhiijjkkllmnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!<[B<[BBB!B<[B<[B<[B<[BT]]]]MN]];^^^^^,_a___T`e````aacc8WTdTWXd/eHYeYTTNSUVY\/V/V/V "$$/V/V/V/58>BB/V/V/V(QWY\/V/V/V !%%/9/V/V/V(79:/V/VMTV]/V/V /V0EGT/V/VOTXXZ[]]/V/V/V/V#%%/V/V(,./15/V/V/VQV/V!!RX\]/V/V/V/V"/V[[/V>>/VTX/V!#$*-VX]]/V/V/V/V/V45/VCD/VBE/VIJ/V[]/V$.37/V/V '/V<</V\]/V-56>MS]/V/V/V/V"%&00457</V/V/V/V/V]]/V&',,==YY[[/V/V/V/V/V/V99;;=A/V/V/V<=/VWY/V,-/VMPR[/V/VNOQQUU/V/V/V $$))AEJJ/V/V/V/V/VTU/VR]/V/V#,->O]]/V/V/V/VDKMM/V/V%1/V!Q]/V/V&'CC/V/V/VGT/V!!*+;=Y[/V/V/V/VNNPRUV\]/V/V/V/VIOST/V/V/VAK/V &/29;=HM*/V/V/V/V/V78/V+ ^__`hiijjknooprssttuuvvwwxxyyzz{{||}}~~T(m(T($T$T$Te.T..T.T../?@@ABCDEFGJKKLWXXYYZZ[]||||||||!""#]|| #$$%()*+2334:;;]7Q7Q]7QM7Q"$%%D-Y-Y-h->]**]*M* %%))++FFGGIIRRXXYY[[\\<<<<'<<<==+=) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[11292T2i2222223 3S3b31}33:1:::;;9;Z;u;;;; &;; < <;<P<q<..//11 GGIIJJKKXX[[\\]]f00111PP0ZZ[[00##$$''FFGGHH0)0D0S0h0}0  ""(())11AACC///////0$&69?ABDH*****--*NT*LL*JM*.4*"(*CGK]** #)HK*** "*TY]**JSS**""&&9=?M*/V**KN]**$*;<==>A*/V*NRSS*/VNTUV*/V--/]** !"$%%&]I1j18j1y18 =>]G#G#]#MN]#G%-0**BBNO**N]*%3** V]**$%&NNQR]]*/V*** NX[[\]***/V ++/V** ER**!#$QQ/V** Q]**#$'*++,-<=*/V*/V*/VJUVWYZ\\*/V/V**=H*!YZ\]***"%&)+55@ADJNR*******S]*$)*<<*/V*!*MSV]**5!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPQRRSWXXYYZZ[[\\]]828(8)/) JJ)k)))88Ip88 *U*$3H82fp*8****8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]""#)#b####$I$^$$$8'%6%"i%8%%"% & &+8S&8h&}&&C&"'C'p'A8'X'8'(K(8(((8..//0]""8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_!"8]8!"<"]"""##))*MOOPPQ]~8!8YZZ[[\]8|!!8"##$$%&''(-..//00112233478899::;;<<==>EFFGGHHIYZZ[]888x 2 e    8!!=!8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]wg888.8Oj8?~8 !""##$$%6778LMMN]8Rr8888888'(-.GHMN]|G|G|'(]|GSTVW]G8GMNWX]GGM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!<[B<[BBB!BT<[B<[B<[B<[BTeI%JJKDLLMMNXfofNNSOjOfPqQRuggg2hTUhhhhiFijHkl8WTTlTWXm~mHYnYTT !'5:;*/V/V* */VIU*;IZ\*/VJX*NSUVY\*** !""$$**/V/V/58>BB***(QWY\*** !%%/9/V**(79:*/VMTV]**0EGT**OTXXZ[]]****#%%**(,./15***QTUV*/V!!RX\]**** !"*/V[[*>>*TX*!#$*-VX]]*****CD*BE*IJ*[]*$.37*/V #$'*/V<<*->M**0045/V/V]]*,,==/V/V/V??/V !"$%%&]=>8>>8 =>]G$>G$>]$>MN]$>GM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!O]]*/V**DKMM*/V6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]8288/ ;JYh88Ip88J$3H82Wfљ8=8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]  Sz“ Uʔߔ$88ؕ&G8\+88זC1RA8֗8<c8ޘ8..//0]8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_'B8]8x""##))*MOOPPQ]~88YZZ[[\]88"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8ː88&5P+@Udy8.O8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]g88)D8Y8t8?~8!""##$$%6778]8.C8E8STVW]GEGJ ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt$]*LLZZ/V/V12/VTTI\*()47<>@BEKOR/V***** +--8;***;=@@EF*/V/V !"$%%&]II8II8 =>]GEGE]EMN]EG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828W8WX ;JYh88Ip884XXX$3H82WfX8XXY'Y8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]Q R=RdRRRRR?SrSSSST8qTTQT8TTQU1U8FU+8mU8UUCUVEFFGGHHIYZZ[]8OO8O8&5P+@Udy8OP9P8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]NgN8N8O.O8CO8^OyO8?~8 $%%&6789?@@ABCCDHIMN]EGEGEGEGEG|,--.]GEGKMNT\]GEG-LLM]GEGJMN]EG-JMN]GEG#-.45]GEG!"(*]|EGBCGHJK]GEGE !"#)*GHKL]EGEGEG "#]GEGTUXY]EGEJKRSST]EGEG !""#%&&'89=>>?MN]GEG/VGEGEGKLMN]EGE$%]EG'-8:;<==>AB]GGE/VEG=KLMG/V-LMNRSST]GGE/VGNTUVW]E/VG""#@VZ/VGG5667]G/VG),--/]GEE%&,-0>]EGEG=@@BBCMNOP]GGEGEGN]E%34]EEG V]EE$%&'MNNQRT\]]E/VGEEGE NXYZ[[\]EEGE/V !*++,-G]/VEGEGG ERS]EEG!#$&-QQRSU]G/VEGEGG Q]EE #$%&'*++,-.799;;<=>]E/VGE/VEGGG/VG00JUVWXXYZ[[\\GE/VG/VGE ]EG%%'',,<@@BBC]EGEGEG(QWY\]]EEEG !"$%%&-/9G/VGEGE(7889:>?]GEG)-TXY]GEG !""#$%)*-2266TUVXY\]]EGEGEGGGEGE3456=[]G/VGG&&CDE]GEGBEF]EGHHIJKMP]GEGGZ[]GE$./2378MEG/VG #$'(ME/VG $%0156:<MNRS]EGEGEGE "#$%&'/001345667<=MSSEGEG/VG/VGEGG[\]]GE %&'(+,,-<==>>YYZZ[[\]G/VGEG/VG/VGEGEG 899::;;<<=>??@ABCG|EGEGE/VEG<=]]EG&'./67;VWYZ]GGGGGEG-\\]]GG/V++,->GJ]G/VGG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||EGEG!!##%%''))++--//113355779;<=||||||||||||||ENOPPQQRTUUV]EG/VG/VG $$))AEFIJJK]EEEEGEGRSTUV]G/VGR]EE #$+,-.=>OVXZZ]]EG/VGEGGE'DKLLMMGEG/V%12=[]EGG!Q]EE %&'(,.=CCNW]]EG/VGGEGGGTU]EG!!*+,:;=UWY[EEG/VGENNPRUV\]EEEE!8<=IMNOSTU]EGGE/VEGAHIIJKL]E/VEG !"&/0129::;=>>HMNNTU[]^G/VGEGEGEGEGGG56789:>>GEGGA ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt$B$B$BTBBT~I%JJKDLLMMN~~NNSOjO<PqQw6}TՀKhƒW8WTTWXE…HY]YTT*03PRST**/V01PQ**R]*1;;**!!'')-/V/V*#$GG**>INY**"#/V59*3<>Z]]***FIN]/V*,*"R]**"89<=IQ[\*/V/V*/V ?K**DQ*BUYZ*/V.02FKKRRUW*****479ACEGKUUWW[\****/V/V/V !"$%%&]cbb8bb8 =>]G^G^]^MN]^G6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828p81pLp ;JYh88Ip88gpXp$3H82Wfp8pqq9q8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]jjjjjk!kTkikkkSklVl8ll@jl8 m%m@jXmym8m+8m8m nC6ncnnnA8nVn8oYoo8ooo8..//0]@jOj8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8AP_ii,Q8GQ8iij""##))*MOOPPQ]~8hi8YZZ[[\]88iSi8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8Thuh8h8&5P+@Udy8hhh8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]Rggg8g8gg8h8h9h8?~8 $%%&6789?@@ABCCDHIMN]^G^G^G^G^G|,--.]G^GKMNT\]G^G-LLM]G^GJMN]^G-JMN]G^G#-.45]G^G!"(*]|^GBCGHJK]G^G^ !"#)*GHKL]^G^G^G "#]G^GTUXY]^G^JKRSST]^G^G !""#%&&'89=>>?MN]G^G/VG^G^GKLMN]^G^$%]^G'-8:;<==>AB]GG^/V^G-LMNRSST]GG^/VGNTUVW]^/VG),--/]G^^%&,-0>]^G^G=@@BBCMNOP]GG^G^GN]^%34]^^G V]^^$%&'MNNQRT\]]^/VG^^G^ NXYZ[[\]^^G^/V !*++,-G]/V^G^GG ERS]^^G!#$&-QQRSU]G/V^G^GG Q]^^ #$%&'*++,-.799;;<=>]^/VG^/V^GGG/VG00JUVWXXYZ[[\\G^/VG/VG^ ]^G=HI]^G !""+,/0GGOORRXXYZ\]^GGGGGGG^^"#$%&'()+,-/4556:@ABCDJKMNRS]^G^G^GG^G^G^G^GS]^$)*+;<<@]^/VG^G!$$&]^GGMSTUV]^G^ !"&'5:;<]^G/VG/V^G !!#]^/VGGIUW]^G9:;IJYZ\]]G^G/VGJXY]^G %&()2255NSTTUVWXY\GGGG^G^G^ !""##$$%]^^/VG/VG/5678>@@BBC]^G^G^G(QWY\]]^^^G !"$%%&-/9G/VG^G^(7889:>?]G^G)-TXY]G^G !""#$%)*-2266TUVXY\]]^G^G^GGG^G^&&CDE]G^GBEF]^GHHIJKMP]G^GGZ[]G^$./2378M^G/VG #$'(M^/VG $%0156:<MN]^G^G/0013456MSSG/VG/VGG[\]]G^  +,,-<==>>Y]G/VG/VG/VGG89>??@CG|G/VG<=]]^G&'./67;VWYZ]GGGGG^G!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||^G^G!!##%%''))++--//113355779;<=||||||||||||||^NOPPQQRTUUV]^G/VG/VG $$))AEFIJJK]^^^^G^GR]^^ #$+,-.=>OVXZZ]]^G/VG^GG^'DKLLMMG^G/V%12=[]^GG!Q]^^ %&'(,.=CCNW]]^G/VGG^GGGTU]^G!!*+,:;=UWY[^^G/VG^NNPRUV\]^^^^!8<=IMNOSTU]^GG^/V^GAHIIJKL]^/V^G  !"&>HMNNTU[]^G/VGG^GGG56789:>>G^GG -.ABBCEFGHMNYZ[\]^G/VGH^G/VG $%'(<=BCCDMNNOOP\]]G/VG^G^G|G|-.NO]G^G!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||^|GFLN\]]GG^%%--55==>]GGGG^KLLNYZZ[]G/VG/VG0123]G/VGI\^ '()*-47<>@BEKORG/VG^^^^^ +--.78;<=^^G^G9:;=>?@@ADEFG]G^G/VG/VGKKLLG/V9=^G034IJMNYZ]G^G^G!"#$-LMS]G/VGGG59:=^G3<==>Z[\]]^G^G^DFIJMN]G/VG^,-]^G"R]^^ "+789:;<=>HIQRZ[\]]^G/VG/VG^G/VG ?KNW^^GDQR]^GBUVXYZ[]^G/VG*.7\]GG/V -.0112FKKRRUWY]G^G^^^^G 479ACEGKLTUUVVWWXZ[\]]^^^^G/VG/VG/VG79:=IM^GG&&--./056=GG^G^(]^!XZ\]^^^-/5@ABCDN^^^/VG !""+,/0GGOOQSXYZZ\]^GGGGGGG^^"#$%&'()+-45569<<@ABMPY[[\\]]^G^G^G^GG^GGG^G!""),/0GGOORRUUXYZZ[[\]G^GGGGGGGG^G^ !$%&'()+,.//06;;=MNOSST]^G^G^G^GGG^^G !"",,00GGOORRXYZZ\]G^GGGGGGG^^ #$$%'(()+,-/=@ABVX]^G^G^GG^G^ !""+,/0GGOORRXYZZ\]G^GGGGGGG^^ "#$%&'()+,23569<<@ABNP]^G^G^G^GG^GG "")+//4699;;>@CEIKX[\]G^GGGGGGGGGG^  !#$&''(+,-/4556]^G^G^GG^G"++//GGXYZZ\]^GGGG^^ "##$&''(+,234559:<=@AB]^G^G^G^GGG^G !""++//GGRRXYZZ\]^GGGGGG^^"##$&''(+,2345:==@ABNQQR]^G^G^G^GG^G^G!++//YZ\]^GG^^ "##$&''(+-1556<@ABW^G^G^G^G^G!""57PPZZ\]G^GGGGG %'((),-23344556=>OPQR]G^G^G^G^G^GOORXY]G^^G%,-]^G !!##))BBDDOORZ\]GGGGGG^^G##%%&,-9>]GG^GG 5678RSSTTUUVVWWX[\]G^G^G^G^G^&&KNO]GG^"##$%+5667Z[]^G^^G^G#$$%]G^G()-.56=>ABBCEFGHLMMNVWXYYZ[\]^EGEG/VGHE^GEG/VG"#$%'(<==>BCCDMNNOOPZ[\]]GE/VG^EGEG|GE|*+,--.:;]GEG|G-.NO]GEG%&)*FGHI]GEGEG89>?EFST]GEGEG"#$%CDMN]GEGEG !67]GEG569:YZ[\]GEGEG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||E|GFLN\]]GGE%%--55==>]GGGGE +,9:;<=>GHKLLNYZZ[]EGEGEG/VG/VG !0123:;]GEG/VEGI\E '()*-47<>@BEKORG/VGEEEEE +--.78;<=EEGEG9:;=>?@@ADEFG]GEG/VG/VG9:;=^EG034IJMNYZ]GEGEG59:=EG3<==>Z[\]]EGEGEDFIJMN]G/VGE,-]EG"R]EE "+789:;<=>HIQRZ[\]]EG/VG/VGEG/VG ?KNWEEGDQR]EGBUVXYZ[]EG/VG -.0112FKKRRUWY]GEGEEEEG 479ACEGKLTUUVVWWXZ[\]]EEEEG/VG/VG/VG79:=IMEGG&&--./056=GGEGE(]E!XZ\]EEE-/5@ABCDNEEE/VG !""+,/0GGOOQSXYZZ\]EGGGGGGGEE"#$%&'()+-45569<<@ABMPY[[\\]]EGEGEGEGGEGGGEG!""),/0GGOORRUUXYZZ[[\]GEGGGGGGGGEGE !$%&'()+,.//06;;=MNOSST]EGEGEGEGGGEEG !"",,00GGOORRXYZZ\]GEGGGGGGGEE #$$%'(()+,-/=@ABVX]EGEGEGGEGE !""+,/0GGOORRXYZZ\]GEGGGGGGGEE "#$%&'()+,23569<<@ABNP]EGEGEGEGGEGG "")+//4699;;>@CEIKX[\]GEGGGGGGGGGGE  !#$&''(+,-/4556]EGEGEGGEG"++//GGXYZZ\]EGGGGEE "##$&''(+,234559:<=@AB]EGEGEGEGGGEG !""++//GGRRXYZZ\]EGGGGGGEE"##$&''(+,2345:==@ABNQQR]EGEGEGEGGEGEG!++//YZ\]EGGEE "##$&''(+-1556<@ABWEGEGEGEGEG!""57PPZZ\]GEGGGGG %'((),-23344556=>OPQR]GEGEGEGEGEGOORXY]GEEG%,-]EG !!##))BBDDOORZ\]GGGGGGEEG##%%&,-9>]GGEGG 5678RSSTTUUVVW]GEGEGEGE&&KNO]GGE"##$%+5667Z[]EGEEGEG#$$%]GEG $%%&6789?@@ABCCDHIMN]$>G$>G$>G$>G$>G|,--.]G$>GKMNT\]G$>G-LLM]G$>GJMN]$>G-JMN]G$>G#-.45]G$>G!"(*]|$>GBCGHJK]G$>G$> !"#)*GHKL]$>G$>G$>G "#]G$>GTUXY]$>G$>JKRSST]$>G$>G !""#%&&'89=>>?MN]G$>GOG$>G$>GKLMN]$>G$>$%]$>G'-8:;<==>AB]GG$>O$>G=KLMGO-LMNRSST]GG$>OGNTUVW]$>OG""#@VZOGG5667]GOG),--/]G$>$>%&,-0>]$>G$>G=@@BBCMNOP]GG$>G$>GN]$>%34]$>$>G V]$>$>$%&'MNNQRT\]]$>OG$>$>G$> NXYZ[[\]$>$>G$>O !*++,-G]O$>G$>GG ERS]$>$>G!#$&-QQRSU]GO$>G$>GG Q]$>$> #$%&'*++,-.799;;<=>]$>OG$>O$>GGGOG00JUVWXXYZ[[\\G$>OGOG$> ]$>G%%'',,<G !""+,/0GGOORRXXYZ\]$>GGGGGGG$>$>"#$%&'()+,-/4556:@ABCDJKMNRS]$>G$>G$>GG$>G$>G$>G$>GS]$>$)*+;<<@]$>OG$>G!$$&]$>GGMSTUV]$>G$> !"&'5:;<]$>GOGO$>G !!#]$>OGGIUW]$>G9:;IJYZ\]]G$>GOGJXY]$>G %&()2255NSTTUVWXY\GGGG$>G$>G$> !""##$$%]$>$>OGOG/5678>@@BBC]$>G$>G$>G(QWY\]]$>$>$>G !"$%%&-/9GOG$>G$>(7889:GOG''MTUUV]G$>G$> !OOG./0EFFGTU]G$>G$>G %%((OTUWXXYYZ[\\]]GG$>G$>G$>G$>#%%&=DDGG$>$>GGG(,--./00157]$>G$>G$>G=QTUVW]G$>OG!!//RXY[\]$>$>G$>G$> !"#]$>OGZ[[\]G$>G/=>>?]G$>G)-TXY]G$>G !""#$%)*-2266TUVXY\]]$>G$>G$>GGG$>G$>3456=[]GOGG&&CDE]G$>GBEF]$>GHHIJKMP]G$>GGZ[]G$>$./2378M$>GOG #$'(M$>OG $%0156:<GGGG -./001124567=>MNNOPQRS]$>GGEG$>GGE"#$%&'-./00123345667<=@AABMSSEGEGYGOEGGG[\]]G$> %&'()*+,,-7889<==>>YYZZ[[\]GOGEGYGGOGEGEG 899::;;<<=>??@ABBCCG|EGEGEOEG<=]]$>G&'./67;VWYZ]GGGGG$>G79*./6=**(]*!XZ\]***-/5@ABC***/V!ZZ\]***"%&)+55@A\\****** %&)+//NOSS******#%')+@AX]*****"%&)+35@A***** \]** $&(+55****"ZZ\]***"$&(+34@A*****"$&(+34@AQQ******"$&(+55@A*****!*((-2446=PQ*****OORX**%,*OORZ**&,*67SSUUWW\]*****O]*"$%+57Z****$$* ()-6=BBFGHLMMWXZ[*/V/V/VH/V*/V/V#'==>BDM[\/V*/V/V/V+,/V.N/V&)GH/V/V9>FS/V/V#$DM/V/V!6/V69Z[/V/VMO/V>]/V+:;>GLLZZ/V/V/V/V/V 1:/V/VI\/V()47<>@BEKOR/V/V/V/V/V/V +--8;/V/V/V;=@@EF/V/V/V]]-..//00112233445;<<=FGGHOPQRZ[[\\]]c x   !!!4O# !!""##$$%%&&''(().//0455667789::;?@@AABBCCDFGGHHINOOPXYYZZ[[\]դ8_zcx FGGHHIIJJKKLVWWXXY]oOPPQ]T-..//00112233478899::;;<<==>GHHIYZZ[]+1+++,3,N,,,ģ ' ABBCCD]m|!""##$$%]'(-.GHMN]|||'(]|&''(FGGH]||| !!")*]||%&&']R'(()<=BCHI]|||<==>]RRSST]RTUVW]R$%&']R[\]R ]R!"]R"#$%*++,;<=>]RRRUVWXXYZ[]RR()*+]R !"&'56]RRYZ\]]R!""##$$%]RR !"]R89:;]R !"#]R2378]R#$'(]R$%0156]||/0013456]R  +,,-<==>>?XY]RR|M ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!<[B<[BBB!BT<[B<[B<[B<[BTI%JJKDLLMMNNNSOjOCPqQR=ňTAp8WTTWX#HYYTT9:*/V03PT/V/V01PQ/V/VR]/V1;;/V/V!!'')-/V/V/V#$GG/V/V>INY/V/V59/V3<>Z]]/V/V/VFIN]/V/V,/V"R]/V/V"89<=IQ[\/V/V/V/V/V ?K/V/VDQ/VBUYZ/V/V.02FKKRRUW/V/V/V/V/V479ACEGKUUWW[\/V/V/V/V/V/V/V79/V./6=/V/V !"$%%&]ت88 =>]GG]MN]G(]/V!XZ\]/V/V/V-/5@C/V/V/V!ZZ\]/V/V/V"%&)+55@A\\/V/V/V/V/V/V %&)+//NOSS/V/V/V/V/V/V#%')+@AX]/V/V/V/V/V"%&)+35@A/V/V/V/V/V \]/V/V $&(+55/V/V/V/V"ZZ\]/V/V/V"$&(+34@A/V/V/V/V/V"$&(+34@AQQ/V/V/V/V/V/V"$&(+55@A/V/V/V/V/V!/V((-2446=PQ/V/V/V/V/VOORX/V/V%,/VOORZ/V/V&,/V67SSUUW]/V/V/V/V6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]8288ۼ ;Jh88Ip88,w$3H82Wf8Խ 8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]?TAVԷ O886i+88#bCȺA87Xy8߻8Kl8..//0]$8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_=j8]8ǵ""##))*MOOPPQ]~88YZZ[[\]8ڴ8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8ϳ88&5P+@Udy8D_8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]ygIJ8߲808K8l8?~8 !""##$$%6778LMMN]8.C88888 $%%&6789?@@ABCCDHIMN]GGGGG|,--.]GGKMNT\]GG'(+-]GG-LLM]GGJMNWX]G-JMNWX]GG#-.45]GG!"(*-.78]|GGBCGHJK]GG !"#)*GHKL]GGG "#]GG !!"'))*+,]|G||GTUXY]GJKRSST]GG !""#%&&'89=>>?MN]GGOGGGKLMN]G$%]G'-8:;<==>AB]GGOG==>GHKLMGGO'(-LMNRSST]GGOGNTUVW]OG""#-.78@VZOGGG),--/]G%&,-0>]GG=@@BBCMNOP]GGGGN]%34]G V] $%&'CDMNNQRT\]]OGG NXYZ[[\]GO  !*++,-GMNWX]OGGGG ERSST]G!#$&-QQRSU]GOGGG Q] #$%&'*++,-.799;;<=>]OGOGGOG00JUVWXXYZ[[\\GOGOG ]G=HIMNWX]GG !""+,/0GGOORRXXYZ\]GGGGGGG"#$%&'()+,-/4556:@ABCDJKMNRS]GGGGGGGGS]$)*+-.78;<<@]OGGG!$$&-.78]GGGMSTUV]G !"&'5:;<]GOGOG !!#-.78]OGGGIUW]G'(]G9:;IJMNWXYZ\]]GGGOGJXY]G=>GH\|G %&()2255NSTTUVWXY\GGGGGG  !""##$$%-.78]OGOGG/5678>@@BBC]GGG(QWY\]]G !"$%%&-/9GOGG(7889:GH]GGGG=QTUVW]GOG!!//RXY[\]GG !"#-.78]OGGZ[[\]GG/=>>?]GG)-TXY]GG<=>GHMGG !""#$%)*-2266TUVXY\]]GGGGGG&&CDE]GGBEFMNWX]GGHHIJKMP]GGGZ[]G$./2378MGOG #$'(MOG $%0156:<MNNOPQRS]GG8GGG8"#$%&'-./00123345667<=@AABMSS8G8GYGO8GGG[\]]G %&'()*+,,--.89<==>>YYZZ[[\]GOG8GYGGOG8G8G 899::;;<<=>??@ABBCCG|8G8G8O8G<=]]G&'./67;VWYZ]GGGGGG-\\]]GGO++,->GJ]GOG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||GG!!##%%''))++--//113355779;<=||||||||||||||NOPPQQRTUUV]GOGOG $$))AEFIJJK]GGRSTUV]GOGR] #$+,-.78=>OVXZZ]]GOGGG'DKLLMMGO%12=[]GG!Q] %&'(,.78=CCNW]]GOGGGGTU]G !!*+,-.78:;=UWY[GGOGNNPRUV\]!8<=IMNOSTU]GGOGAHIIJKLMNWX]OGG !"&/0129::;=>>HMNNTU[].OG8G8G8GGGG56789:>>GGGD ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BYmYBY!BBB!BTBBTI%JJKDLLMMN@WNNSOjOPqQR]ِT=Б.0Ŕ8WTTWX0HY˖YTTO]/V"$%+57Z/V/V/V/V$$/V !"$%%&]5V8Ve8 =>]GzGz]zMN]zGD ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BtmtBt!BBB!BTBBTI%JJKDLLMMN@WNNSOjOPqQR]ِT=Б.M~8WTTWX0HY˖YTT  !"&>HMNNTU[]^OGGzGGG56789:>>GzGG()-.0123ABBCEFGHLMMNYZ[\]^zGGYGHz^GOG $%'(<==>BCCDMNNOOP\]]GOG^zGzG|G|-.NO]GzG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||z|GFLN\]]GGz%%--55==>]GGGGzKLLNYZZ[]GOGOG0123]GOGI\z '()*-47<>@BEKORGOGzzzzz +--.78;<=zzGzG9:;=>?@@ADEFG]GzGOGOGKKLLGO034IJMNYZ]GzGzG!"#$-LMS]GOGGG59:=zG3<==>Z[\]]zGzGzDFIJMN]GOGz,-]zG"R]zz "+789:;<=>HIQRZ[\]]zGOGOGzGOG ?KNWzzGDQR]zGBUVXYZ[]zGOG*.7\]GGO -.0112FKKRRUWY]GzGzzzzG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]82882M ;JYh88Ip88h$3H82Wf8:8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]k"UjW8A8 &AYz8+88 C7dA88Z88..//0]AP8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8A_B8]8""##))*MOOPPQ]~8i8YZZ[[\]89T8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8Uv88&5P+@Udy88W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]Sg8888:8?~8 $%%&6789?@@ABCCDHIMN]zGzGzGzGzG|,--.]GzGKMNT\]GzG-LLM]GzGJMN]zG-JMN]GzG#-.45]GzG!"(*]|zGBCGHJK]GzGz !"#)*GHKL]zGzGzG "#]GzGTUXY]zGzJKRSST]zGzG !""#%&&'89=>>?MN]GzGOGzGzGKLMN]zGz$%]zG'-8:;<==>AB]GGzOzG-LMNRSST]GGzOGNTUVW]zOG),--/]Gzz%&,-0>]zGzG=@@BBCMNOP]GGzGzGN]z%34]zzG V]zz$%&'MNNQRT\]]zOGzzGz NXYZ[[\]zzGzO !*++,-G]OzGzGG ERS]zzG!#$&-QQRSU]GOzGzGG Q]zz #$%&'*++,-.799;;<=>]zOGzOzGGGOG00JUVWXXYZ[[\\GzOGOGz ]zG=HI]zG !""+,/0GGOORRXXYZ\]zGGGGGGGzz"#$%&'()+,-/4556:@ABCDJKMNRS]zGzGzGGzGzGzGzGS]z$)*+;<<@]zOGzG!$$&]zGGMSTUV]zGz !"&'5:;<]zGOGOzG !!#]zOGGIUW]zG9:;IJYZ\]]GzGOGJXY]zG %&()2255NSTTUVWXY\GGGGzGzGz !""##$$%]zzOGOG/5678>@@BBC]zGzGzG(QWY\]]zzzG !"$%%&-/9GOGzGz(7889:>?]GzG)-TXY]GzG !""#$%)*-2266TUVXY\]]zGzGzGGGzGz&&CDE]GzGBEF]zGHHIJKMP]GzGGZ[]Gz$./2378MzGOG #$'(MzOG $%0156:<MNNOPQ]zGGzGG -./00123345667@AABMSSGYGOGGG[\]]Gz  )*+,,-7889<==>>Y]GOGYGGOGG89>??@ABBCCG|GOGG<=]]zG&'./67;VWYZ]GGGGGzG++,->GJ]GOGG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||zGzG!!##%%''))++--//113355779;<=||||||||||||||zNOPPQQRTUUV]zGOGOG $$))AEFIJJK]zzzzGzGR]zz #$+,-.=>OVXZZ]]zGOGzGGz'DKLLMMGzGO%12=[]zGG!Q]zz %&'(,.=CCNW]]zGOGGzGGGTU]zG!!*+,:;=UWY[zzGOGzNNPRUV\]zzzz!8<=IMNOSTU]zGGzOzGAHIIJKL]zOzG  !"&>HMNNTU[].OGGzGGG()-.0123ABBCEFGHLMMNYZ[\].zGGYGHz.GOG $%'(<==>BCCDMNNOOP\]]GOG.zGzG|G|9=.G 479ACEGKLTUUVVWWXZ[\]]zzzzGOGOGOG79:=IMzGG&&--./056=GGzGz(]z!XZ\]zzz-/5@ABCDNzzzOG !""+,/0GGOOQSXYZZ\]zGGGGGGGzz"#$%&'()+-45569<<@ABMPY[[\\]]zGzGzGzGGzGGGzG!""),/0GGOORRUUXYZZ[[\]GzGGGGGGGGzGz !$%&'()+,.//06;;=MNOSST]zGzGzGzGGGzzG !"",,00GGOORRXYZZ\]GzGGGGGGGzz #$$%'(()+,-/=@ABVX]zGzGzGGzGz !""+,/0GGOORRXYZZ\]GzGGGGGGGzz "#$%&'()+,23569<<@ABNP]zGzGzGzGGzGG "")+//4699;;>@CEIKX[\]GzGGGGGGGGGGz  !#$&''(+,-/4556]zGzGzGGzG"++//GGXYZZ\]zGGGGzz "##$&''(+,234559:<=@AB]zGzGzGzGGGzG !""++//GGRRXYZZ\]zGGGGGGzz"##$&''(+,2345:==@ABNQQR]zGzGzGzGGzGzG!++//YZ\]zGGzz "##$&''(+-1556<@ABWzGzGzGzGzG!""57PPZZ\]GzGGGGG %'((),-23344556=>OPQR]GzGzGzGzGzGOORXY]GzzG%,-]zG !!##))BBDDOORZ\]GGGGGGzzG##%%&,-9>]GGzGG 5678RSSTTUUVVWWX[\]GzGzGzGzGz&&KNO]GGz"##$%+5667Z[]zGzzGzG#$$%]GzG()-.012356=>ABBCEFGHLMMNVWXYYZ[\].GG8GYGH.G8GOG"#$%'(<==>BCCDMNNOOPZ[\]]G8OG.GG|G8|*+,--.:;]G8G|G-.NO]GG%&)*FGHI]G8G8G89>?EFST]G8G8G"#$%CDMN]G8G8G !67]G8G569:YZ[\]G8G8G!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G|||GFLN\]]GG%%--55==>]GGGG +,9:;<=>GHKLLNYZZ[]8G8G8GOGOG !0123:;]G8GO8GI\ '()*-47<>@BEKOROG +--.78;<=G9:;=>?@@ADEFG]GGOGOG9:;=.8G034GH]GGGG  !!"%&&''(()-.78=GOGOGG#$GGIMG==>IJMNYZ]GGG!"#$-LMS]GOGG(-.78]GG59:=G3<==>Z[\]]GG'(-.78DFIJMN]GGOG,-]G"R] "+-.789:;<=>HIQRZ[\]]GOGOGGOG ?KNWDQR]GBUVXYZ[]GOG'(*.7\]GO -.0112FKKRRUWY]GGG 479ACEGKLTUUVVWWXZ[\]]GOGOGOG79:=IMGG&&--./056=GGG(]!XZ\]-/5@ABCDMNNOG !""+,/0GGOOQSXYZZ\]GGGGGGG"#$%&'()+-45569<<@ABCDMPY[[\\]]GGGGGGGGG!""),/0GGOORRUUXYZZ[[\]GGGGGGGGGG !$%&'()+,.//06;;=CDMNOSST]GGGGGGG !"",,00GGOORRXYZZ\]GGGGGGGG #$$%'(()+,-/=@ABCDMNVX]GGGGGG !""+,/0GGOORRXYZZ\]GGGGGGGG"#$%&'()+,23569<<@ABCDMNNP]GGGGGGGG "")+//4699;;>@CEIKX[\]GGGGGGGGGGG  !#$&''(+,-/4556CDMN]GGGGGG"++//GGXYZZ\]GGGG"##$&''(+,234559:<=@ABCDMN]GGGGGGGG !""++//GGRRXYZZ\]GGGGGG"##$&''(+,2345:==@ABCDMNNQQR]GGGGGGGG!++//YZ\]GG "##$&''(+-1556<@ABCDMNWGGGGGG!""57PPZZ\]GGGGGG%'((),-23344556=>CDMNOPQR]GGGGGGGOORXY]GG%,--.78]GG !!##))BBDDOORZ\]GGGGGGG##%%&,--.789>]GGGGG 5678=>GHRSSTTUUVVWWX[\]GGGGG8&&KNO]GG"##$%+5667Z[]GGG#$$%]GG\]]R+,-.]R;<]|PQQRTUUV]RR?@]|%&(),--.]||| ()-./001122378OPTUUVXY]||||||STUV]RLMMN]R%&'(]R:;=>]RMNOP]R899:GHMN]|||HIIJ]R !]RABBCEFGHYZ[\]HR$%'(NOOP\]]R||-.:;]| !$%%&'(12233467;]||| !"#]|ST]|GH]|BCHILMOPQR]|||CDDEEFJKKL]|||KLLMYZZ[]RR0123]R'()*]R #$$%%&*++,YZZ[]||||?@@ADEFG]RRSTUV[\]||KLLM]RRSTU]R !!"&''(]RR!"#$]REFIJ]R789:;<=>Z[\]]RRRXYZ[]R&']|3456;<=>]|||#$%&+,-.566778899::;;<<=[\]|||||||RSSTZ[[\\]]||| "##$*+-.12349:=>JKOPRSSTZ[]|||||||TUUVVWWXZ[\]]RRRABCD]R !"&/0129::;=>>HMNNTU[].OGEGEGEG$>GGG56789:>>G$>GG()-.012356=>ABBCEFGHLMMNVWXYYZ[\].$>GGEGYGH$>.GEGOG"#$%'(<==>BCCDMNNOOPZ[\]]GEOG.$>G$>G|GE|-.NO]G$>G!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||$>|GFLN\]]GG$>%%--55==>]GGGG$> +,9:;<=>GHKLLNYZZ[]EGEGEGOGOG !0123:;]GEGOEGI\$> '()*-47<>@BEKORGOG$>$>$>$>$> +--.78;<=$>$>G$>G9:;=>?@@ADEFG]G$>GOGOG9:;=.EG034G$>OG012=KKOOPQR]$>GGG$>GR]$>12469;;<]$>GG$>G  !!"%&&''(()-.=GOGOG$>G#$GGIM$>$>G==>IJMNYZ]G$>G$>G59:=$>G3<==>Z[\]]$>G$>G$>DFIJMN]GOG$>,-]$>G"R]$>$> "+789:;<=>HIQRZ[\]]$>GOGOG$>GOG ?KNW$>$>GDQR]$>GBUVXYZ[]$>GOG -.0112FKKRRUWY]G$>G$>$>$>$>G 479ACEGKLTUUVVWWXZ[\]]$>$>$>$>GOGOGOG79:=IM$>GG&&--./056=GG$>G$>(]$>!XZ\]$>$>$>-/5@ABCDN$>$>$>OG !""+,/0GGOOQSXYZZ\]$>GGGGGGG$>$>"#$%&'()+-45569<<@ABMPY[[\\]]$>G$>G$>G$>GG$>GGG$>G!""),/0GGOORRUUXYZZ[[\]G$>GGGGGGGG$>G$> !$%&'()+,.//06;;=MNOSST]$>G$>G$>G$>GGG$>$>G !"",,00GGOORRXYZZ\]G$>GGGGGGG$>$> #$$%'(()+,-/=@ABVX]$>G$>G$>GG$>G$> !""+,/0GGOORRXYZZ\]G$>GGGGGGG$>$> "#$%&'()+,23569<<@ABNP]$>G$>G$>G$>GG$>GG "")+//4699;;>@CEIKX[\]G$>GGGGGGGGGG$>  !#$&''(+,-/4556]$>G$>G$>GG$>G"++//GGXYZZ\]$>GGGG$>$> "##$&''(+,234559:<=@AB]$>G$>G$>G$>GGG$>G !""++//GGRRXYZZ\]$>GGGGGG$>$>"##$&''(+,2345:==@ABNQQR]$>G$>G$>G$>GG$>G$>G!++//YZ\]$>GG$>$> "##$&''(+-1556<@ABW$>G$>G$>G$>G$>G!""57PPZZ\]G$>GGGGG %'((),-23344556=>OPQR]G$>G$>G$>G$>G$>GOORXY]G$>$>G%,-]$>G !!##))BBDDOORZ\]GGGGGG$>$>G##%%&,-9>]GG$>GG 5678RSSTTUUVVWWX[\]G$>G$>G$>G$>E$>&&KNO]GG$>"##$%+5667Z[]$>G$>$>G$>G#$$%]G$>G!""##$$%6778]8.C888 -./001124567=>MNNOPQRS]$>GG8G$>GG8 %&'()*+,,-7889<==>>YYZZ[[\]GOG8GYGGOG8G8G!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||$>G$>G!!##%%''))++--//113355779;<=||||||||||||||$>NOPPQQRTUUV]$>GOGOG $$))AEFIJJK]$>$>$>$>G$>GR]$>$> #$+,-.=>OVXZZ]]$>GOG$>GG$>'DKLLMMG$>GO%12=[]$>GG!Q]$>$> %&'(,.=CCNW]]$>GOGG$>GGGTU]$>G!!*+,:;=UWY[$>$>GOG$>NNPRUV\]$>$>$>$>!8<=IMNOSTU]$>GG$>O$>GAHIIJKL]$>O$>G !"&/0129::;=>>HMNNTU[].OG8G8G8G$>GGG()-.012356=>ABBCEFGHLMMNVWXYYZ[\].$>GG8GYGH$>.G8GOG"#$%'(<==>BCCDMNNOOPZ[\]]G8OG.$>G$>G|G8| 5678RSSTTUUVVWWX[\]G$>G$>G$>G$>8$>KLLMPQQR[\]|||MNOPPQQRTUUV]|RR  !#$$%())*@AEFIJJK]||||| QR]||#$+,-.=>OP\]]|R||CDKLLMMN]|R$%12]|!"PQ]||%&'(BCCD]|R|FGTU]|  !!")*+,:;=>XY[\]||R| MNNOOPRSTUVW[\]||||  HIMNOPRSTU]||R|@AHIIJKL]|R| !GHMN]R|6789]| ()-.ABBCEFGHLMYZ[\]|#H|R $%'(=>BCCDMNNOOP\]]R||||-.NO]|BCHIQR]||HI\]]|'()*3478;<>??@BCDEKLNORS]R|||||  +,,--.78;<=>]||||:;=>?@@ADEFG]|RR/034OPRSTU]||R/012OPQR]||QR]|12:;;<]|| !!"&''(()-.]RR|"#$%FGGH]||=>IJMNYZ]||459:]|23<==>Z[\]]|||EFIJMN]R|,-]|"#QR]|| "#789:;<=>HIQRZ[\]]|RR|R !>?KL]||CDQR]|ABUVXYZ[]|R -.0112FGJKKLQRRSTUWX]|||||347889ABBCEFFGKLTUUVVWWXZ[\]]||||RRR679:]|-./056=>]||'(]|!"WXZ[[\]|||-../56?@ABCD]|||R!"YZZ[[\]||| "#$%&'()+,4556?@AB[\\]]||||||  !$%&'()+,.//0MNOPRSST]|||||| #$$%'(()+,?@ABWX]||||| "#$%&'()+,2356?@AB]||||| ![\]||  !#$&''(+,4556]||||"#YZZ[[\]||| "##$&''(+,2345?@AB]||||| "##$&''(+,2345?@ABPQQR]|||||| "##$&''(+,4556?@AB]|||||!"]| '((),-23344556=>OPQR]|||||NOOPQRXY]||$%,-]|NOOPQRZ[]||%&,-]| 5678RSSTTUUVVWWX[\]|||||NO]| "##$%&*+5667Z[]||||#$$%]| $%%&6789?@@ABCCDHIMN]#G#G#G#G#G|,--.]G#GKMNT\]G#G-LLM]G#GJMNWX]#G-JMNWX]G#G#-.45]G#G!"(*-.78]|#GGBCGHJK]G#G# !"#)*GHKL]#G#G#G "#]G#G2334]|G|:;;<=>?@@ABCDEFGJKKLWXXYYZZ[]|G|G|G|G|G|G|G|!""#]|G| #$$%()*+2334:;;>?MN]G#GOG#G#GKLMN]#G#$%]#G'-8:;<==>AB]GG#O#G'(-LMNRSST]GG#OGNTUVW]#OG),--/]G##%&,-0>]#G#G=@@BBCMNOP]GG#G#GN]#%34]##G V]## $%&'CDMNNQRT\]]#OG##G# NXYZ[[\]##G#O  !*++,-GMNWX]O#G#GGG ERSST]##G!#$&-QQRSU]GO#G#GG Q]## #$%&'*++,-.799;;<=>]#OG#O#GGOG00JUVWXXYZ[[\\G#OGOG# ]#G=HIMNWX]#GG !""+,/0GGOORRXXYZ\]#GGGGGGG##"#$%&'()+,-/4556:@ABCDJKMNRS]#G#G#GG#G#G#G#GS]#$)*+-.78;<<@]#OGG#G!$$&-.78]#GGGMSTUV]#G# !"&'5:;<]#GOGO#G !!#-.78]#OGGGIUW]#G9:;IJMNWXYZ\]]G#GGOGJXY]#G=>]G| %&()2255NSTTUVWXY\GGGG#G#G#  !""##$$%-.78]##OGOGG/5678>@@BBC]#G#G#G(QWY\]]###G !"$%%&-/9GOG#G#(7889:GH]#G#G#GG=QTUVW]G#OG!!//RXY[\]##G#G# !"#-.78]#OGGZ[[\]G#G/=>>?]G#G)-TXY]G#G<=>GHMN]GG|1256YZ]|G|GBMNXYYZ]G|G|())*01123445?@@AOPPQWXXYZ[]|G|G|G|G|G|G|G !""#$%)*-2266TUVXY\]]#G#G#GGG#G#&&CDE]G#GBEFMNWX]#GGHHIJKMP]G#GGZ[]G#$./2378M#GOG #$'(M#OG $%0156:<MNNOPQRS]#GG8G#GG8[\]]G# %&'()*+,,--.89<==>>?XYYZZ[[\]GOG8GYGGOG|8G8G<=]]#G&'./67;VWYZ]GGGGG#GKMPQQR[\\|#G#G;<=|#NOPPQQRTUUV]#GOGOG4>?@]GG|%'(),.]|G|| ()-./001122378OPTVX|G|G|G|G|| $$))AEFIJJK]####G#GR]## #$+,-.78=>OVXZZ]]#GOG#GG#'DKLLMM#GO%12=[]#GG!Q]## %&'(,.78=CCNW]]#GOGG#GGTU]#G !!*+,-.78:;=UWY[##GGOG#NNPRUV\]####!8<=IMNOSTU]#GG#O#GAHIIJKLMNWX]#O#GG !"&/0129::;=>>HMNNTU[].OG8G8G8G#GGG56789:>>G#GG()-.012356=>ABBCEFGHLMMNVWXYYZ[\].#GG8GYGH#.G8GOG"#$%'(<==>BCCDMNNOOPZ[\]]G8OG.#G#G|G8|-.NO]G#G !$%%&'(12233467;]G|G|G|!"']|GST]G|GH]|GBCHILMOPQR]|G|#|GFLN\]]GG#%%--55==>]GGGG#I\# '()*-47<>@BEKOROG##### +--.78;<=>]###G| #$$%%&*++,-YYZZ|G|G|GG|9:;=>?@@ADEFG]G#GOGOG.=>]G|STUV[\]|G|G034GH]#GG#GG  !!"%&&''(()-.78=GOGOG#G#$GGIM##G==>IJMNYZ]G#G#G59:=#G3<==>Z[\]]#G#G#'(-.78DFIJMN]GGOG#,-]#G"R]## "+-.789:;<=>HIQRZ[\]]#GOGOG#GOG ?KNW##DQR]#GBUVXYZ[]#GOG -.0112FKKRRUWY]G#G####G3456;<=>]|G|G|#$%&+,-.566778899::;;<<=[\]|G|G|G|G|G|G|GRSSTZ[[\\]]|G|G|G "##$*+-.12349:=>JKOPRSSTZ[]G|G|G|G|G|G|G|G 479ACEGKLTUUVVWWXZ[\]]####GOGOGOG79:=IM#GG&&--./056=GG#G#(]#!XZ\]###-/5@ABCDMNN###OG !""+,/0GGOOQSXYZZ\]#GGGGGGG##"#$%&'()+-45569<<@ABCDMPY[[\\]]#G#G#G#GG#GGG#G!""),/0GGOORRUUXYZZ[[\]G#GGGGGGGG#G# !$%&'()+,.//06;;=CDMNOSST]#G#G#G#GGG##G !"",,00GGOORRXYZZ\]G#GGGGGGG## #$$%'(()+,-/=@ABCDMNVX]#G#G#GG#GG# !""+,/0GGOORRXYZZ\]G#GGGGGGG##"#$%&'()+,23569<<@ABCDMNNP]#G#G#G#GG#GGG "")+//4699;;>@CEIKX[\]G#GGGGGGGGGG#  !#$&''(+,-/4556CDMN]#G#G#GG#GG"++//GGXYZZ\]#GGGG##"##$&''(+,234559:<=@ABCDMN]#G#G#G#GGG#GG !""++//GGRRXYZZ\]#GGGGGG##"##$&''(+,2345:==@ABCDMNNQQR]#G#G#G#GG#GG#G!++//YZ\]#GG## "##$&''(+-1556<@ABCDMNW#G#G#G#G#GG!""57PPZZ\]G#GGGGG%'((),-23344556=>CDMNOPQR]G#G#G#G#GG#GOORXY]G##G%,--.78]#GG !!##))BBDDOORZ\]GGGGGG##G##%%&,--.789>]GG#GGG 5678=>GHRSSTTUUVVWWX[\]G#GG#G#G#8#&&KNO]GG#"##$%+5667Z[]#G##G#G#$$%]G#G !"$%%&]>>8>>8 =>]GYGY]YMN]YG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]8288һ ;Jh88Ip88d8$3H82WfS8t˼8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]l;nζxa7|8߷B!8HcBøظ+8 8 _CŹA84:cU8|8'Hu8..//0]BQ8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8Ab___8_8ٴ""##))*MOOPPQ]~8d8YZZ[[\]84O8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8Pq88&5P+@Udy8Գ8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]6g88Ҳ88)8?~8 !""##$$%6778LMMN]8.C8C888STVW]GCGM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~B]GCGC]CMN]CG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]82808Kf ;JYh88Ip88d̠$3H82Wf82S8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]̚ ;nΛxa+p8ӜZ 8$?Zr8+8ϝ8#CP}˞A8| 84s8ǟ8..//0]Zi8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8Aw_֙_w8_8 -""##))*MOOPPQ]~88YZZ[[\]8Rm8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8L9L8fL8&5P+@Udy8LLL8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]KgaK8|K8KK8K8KK8?~8!""##$$%6778]8.C8C8 $%%&6789?@@ABCCDHIMN]CGCGCGCGCG|,--.]GCGKMNT\]GCG-LLM]GCGJMN]CG-JMN]GCG#-.45]GCG!"(*]|CGBCGHJK]GCGC !"#)*GHKL]CGCGCG "#]GCGTUXY]CGCJKRSST]CGCG !""#%&&'89=>>?MN]GCGLGCGCGM ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~B>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[%@UpN]x A\w1Fg..// GGIIJJKKXX[[\\]]2GVezPPZZ[[##$$''FFGGHHNOcO~OOOO  ""(())11AACCNNOO!O!O0O?O77 VTV/V5 ^__`hiijjknooprssttuuvvwwxxyyzz{{||}}~~T(m(T($T$T$T$T$T$T$T$T)T))T)T*7*Z*}*T*** + +C+,,&-TC-T-.TN.TT"$%%WWWW>]OO]OMO %%))++FFGGIIRRXXYY[[\\<KZi.o) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[3Nc/nϽ,GVkžԾ+Favnֿ'..// GGIIJJKKXX[[\\]]Xi.iiCXmPPZZ[[ڻ##$$''FFGGHHEZu  ""(())11AACC '677YTVO#%')+@AX]VVVVV6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828W8WX ;Jh88Ip884XdX$3H82Wf0d8XXQdrd8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]]Q `F`m```R`EarSxaaST8qTaQa8T bQSb1Ub+8mU8UbCUVbcA8V:cV8V[cc8cWc8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8Ab_____8_8bQ}QQ""##))*MOOPPQ]~85_8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8OO8O8&5P+@Udy8OP^8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]NgN8N8O^8^8^O^8?~8JMNWX]EG-JMNWX]GEG!"(*-.78]|EGG !""#%&&'89=>>?MN]GEGLGEGEG'-8:;<==>AB]GGELEG==>GHKLMGGL'(-LMNRSST]GGELGNTUVW]ELG""#-.78@VZLGGG5667]GLG $%&'CDMNNQRT\]]ELGEEGE NXYZ[[\]EEGEL  !*++,-GMNWX]LEGEGGG ERSST]EEG!#$&-QQRSU]GLEGEGG #$%&'*++,-.799;;<=>]ELGELEGGLG00JUVWXXYZ[[\\GELGLGE%%'',,<GH]EGEGEGG=QTUVW]GELG !"#-.78]ELGG3456=[]GLGGBEFMNWX]EGG$./2378MEGLG #$'(MELG\]C -./001124567=>MNNOPQRS]EGGCGEGGC"#$%&'-./00123345667<=@AABMSSCGCGLGLCGGG %&'()*+,,--.89<==>>YYZZ[[\]GLGCGLGGLGCGCG 899::;;<<=>??@ABBCCG|CGCGCLCG: ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24!T!T4TT4T!T!T!T!TW:T))T)T<:7*:}*T:;* +0;Y;*<<<=TY=T=>TN.TT %%))++FFGGIIRRXXYY[[\\&&&&.o '/'>'M'=oRo) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[imm-m]mn/n)>nSbYnznnX%n%%nn%n&-&N&c&o&o GGIIJJKKXX[[\\]]Xigi|iiiPP=i##$$''FFGGHHi""&&9=?M/Vf/V/V;<==>A/Vf/VLMfNRSS/VfNTUV/Vf""f66f$%&NNQR]]/Vf/V/V/V-\\]]GGL++,->GJ]GLGNOPPQQRTUUV]EGLGLGRSTUV]GLG #$+,-.78=>OVXZZ]]EGLGEGGE'DKLLMMEGL %&'(,.78=CCNW]]EGLGGEG !!*+,-.78:;=UWY[EEGGLGE!8<=IMNOSTU]EGGELEGAHIIJKLMNWX]ELEGG !"&/0129::;=>>HMNNTU[]kLGCGCGCGEGGGD ^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~BMOPS]/VO/VO !"$%%&]oo8op8 =>]GkGk]kMN]kG6!!""##$$%%&'(())**++,,--..//001122334455::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMOOPPQQRRSWXXYYZZ[[\\]]828}8}~ ;JYh88Ip88~dj~$3H82Wf~8~~~~8 !!""##$$%%&&''(())**++,-..//001123445566778899::;;<=>>??@@AABBCCDDEEFFGGHHIIJMNNOOPPQQRRSSTTUXYYZZ[[\\]] x"xUx|xxxx yWyyxayyy8\zkzwz8zzwz{81{+8X{8m{{C{|'|T|A8u|||8|}8}8e}}}8..//0]ww8=FFGGHHIIJJKKLLMVWWXXYY[[\\]]8Aw_wDw_w8_8zwww""##))*MOOPPQ]~8v8YZZ[[\]8vv8"##$$%&''(-..//00112233445566778899::;;<<==>EFFGGHHIYZZ[]8uu8v8&5P+@Udy80vKvlv8W8 !!""##$'(())*0112<==AABBCCDUVVWWXXY]tgu8+u8Fuau8vu8uu8?~8 $%%&6789?@@ABCCDHIMN]kGkGkGkGkG|,--.]GkGKMNT\]GkG-LLM]GkGJMN]kG-JMN]GkG#-.45]GkG!"(*]|kGBCGHJK]GkGk !"#)*GHKL]kGkGkG "#]GkGTUXY]kGkJKRSST]kGkG !""#%&&'89=>>?MN]GkGLGkGkGKLMN]kGk$%]kG'-8:;<==>AB]GGkLkG=KLMGL-LMNRSST]GGkLGNTUVW]kLG""#@VZLGG),--/]Gkk%&,-0>]kGkG=@@BBCMNOP]GGkGkGN]k%34]kkG V]kk$%&'MNNQRT\]]kLGkkGk NXYZ[[\]kkGkL !*++,-G]LkGkGG ERS]kkG!#$&-QQRSU]GLkGkGG Q]kk #$%&'*++,-.799;;<=>]kLGkLkGGGLG00JUVWXXYZ[[\\GkLGLGk ]kG=HI]kG !""+,/0GGOORRXXYZ\]kGGGGGGGkk"#$%&'()+,-/4556:@ABCDJKMNRS]kGkGkGGkGkGkGkGS]k$)*+;<<@]kLGkG!$$&]kGGMSTUV]kGk !"&'5:;<]kGLGLkG !!#]kLGGIUW]kG9:;IJYZ\]]GkGLGJXY]kG %&()2255NSTTUVWXY\GGGGkGkGk !""##$$%]kkLGLG/5678>@@BBC]kGkGkG(QWY\]]kkkG !"$%%&-/9GLGkGk(7889:>?]GkG)-TXY]GkG !""#$%)*-2266TUVXY\]]kGkGkGGGkGk&&CDE]GkGBEF]kGHHIJKMP]GkGGZ[]Gk$./2378MkGLG #$'(MkLG $%0156:<MNNOPQ]kGGkGG -./00123345667@AABMSSGLGLGGG[\]]Gk  )*+,,-7889<==>>Y]GLGLGGLGG89>??@ABBCCG|GLGG<=]]kG&'./67;VWYZ]GGGGGkG++,->GJ]GLGG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||kGkG!!##%%''))++--//113355779;<=||||||||||||||kNOPPQQRTUUV]kGLGLG $$))AEFIJJK]kkkkGkGR]kk #$+,-.=>OVXZZ]]kGLGkGGk'DKLLMMGkGL%12=[]kGG!Q]kk %&'(,.=CCNW]]kGLGGkGGGTU]kG!!*+,:;=UWY[kkGLGkNNPRUV\]kkkk!8<=IMNOSTU]kGGkLkGAHIIJKL]kLkG  !"&>HMNNTU[]kLGGkGGG56789:>>GkGG -.0123ABBCEFGHMNYZ[\]kGGLGHkGLG $%'(<=BCCDMNNOOP\]]GLGkGkG|G|-.NO]GkG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||k|GFLN\]]GGk%%--55==>]GGGGkKLLNYZZ[]GLGLG0123]GLGI\k '()*-47<>@BEKORGLGkkkkk +--.78;<=kkGkG9:;=>?@@ADEFG]GkGLGLGKKLLGL9=kG034IJMNYZ]GkGkG!"#$-LMS]GLGGG59:=kG3<==>Z[\]]kGkGkDFIJMN]GLGk,-]kG"R]kk "+789:;<=>HIQRZ[\]]kGLGLGkGLG ?KNWkkGDQR]kGBUVXYZ[]kGLG*.7\]GGL -.0112FKKRRUWY]GkGkkkkG 479ACEGKLTUUVVWWXZ[\]]kkkkGLGLGLG79:=IMkGG&&--./056=GGkGk(]k!XZ\]kkk-/5@ABCDNkkkLG !""+,/0GGOOQSXYZZ\]kGGGGGGGkk"#$%&'()+-45569<<@ABMPY[[\\]]kGkGkGkGGkGGGkG!""),/0GGOORRUUXYZZ[[\]GkGGGGGGGGkGk !$%&'()+,.//06;;=MNOSST]kGkGkGkGGGkkG !"",,00GGOORRXYZZ\]GkGGGGGGGkk #$$%'(()+,-/=@ABVX]kGkGkGGkGk !""+,/0GGOORRXYZZ\]GkGGGGGGGkk "#$%&'()+,23569<<@ABNP]kGkGkGkGGkGG "")+//4699;;>@CEIKX[\]GkGGGGGGGGGGk  !#$&''(+,-/4556]kGkGkGGkG"++//GGXYZZ\]kGGGGkk "##$&''(+,234559:<=@AB]kGkGkGkGGGkG !""++//GGRRXYZZ\]kGGGGGGkk"##$&''(+,2345:==@ABNQQR]kGkGkGkGGkGkG!++//YZ\]kGGkk "##$&''(+-1556<@ABWkGkGkGkGkG!""57PPZZ\]GkGGGGG %'((),-23344556=>OPQR]GkGkGkGkGkGOORXY]GkkG%,-]kG !!##))BBDDOORZ\]GGGGGGkkG##%%&,-9>]GGkGG 5678RSSTTUUVVWWX[\]GkGkGkGkGk&&KNO]GGk"##$%+5667Z[]kGkkGkG#$$%]GkG()-.012356=>ABBCEFGHLMMNVWXYYZ[\]kEGGCGLGHEkGCGLG"#$%'(<==>BCCDMNNOOPZ[\]]GCLGkEGEG|GC|*+,--.:;]GCG|G%&)*FGHI]GCGCG89>?EFST]GCGCG"#$%CDMN]GCGCG !67]GCG569:YZ[\]GCGCG +,9:;<=>GHKLLNYZZ[]CGCGCGLGLG !0123:;]GCGLCG '()*-47<>@BEKORLGEEEEE +--.78;<=EEEG9:;=>?@@ADEFG]GEGLGLG9:;=kCG034GH]EGGEGG  !!"%&&''(()-.78=GLGLGEG!"#$-LMS]GLGG'(-.78DFIJMN]GGLGE "+-.789:;<=>HIQRZ[\]]EGLGLGEGLG ?KNWEEBUVXYZ[]EGLG'(*.7\]GL 479ACEGKLTUUVVWWXZ[\]]EEEEGLGLGLG-/5@ABCDMNNEEELG"#$%&'()+-45569<<@ABCDMPY[[\\]]EGEGEGEGGEGGGEG !$%&'()+,.//06;;=CDMNOSST]EGEGEGEGGGEEG #$$%'(()+,-/=@ABCDMNVX]EGEGEGGEGGE"#$%&'()+,23569<<@ABCDMNNP]EGEGEGEGGEGGG  !#$&''(+,-/4556CDMN]EGEGEGGEGG"##$&''(+,234559:<=@ABCDMN]EGEGEGEGGGEGG"##$&''(+,2345:==@ABCDMNNQQR]EGEGEGEGGEGGEG "##$&''(+-1556<@ABCDMNWEGEGEGEGEGG%'((),-23344556=>CDMNOPQR]GEGEGEGEGGEG%,--.78]EGG##%%&,--.789>]GGEGGG 5678=>GHRSSTTUUVVWWX[\]GEGGEGEGECEKLMN]CGC$%]CG'-8:;<==>AB]GGCLCG-LMNRSST]GGCLGNTUVW]CLG),--/]GCC%&,-0>]CGCG=@@BBCMNOP]GGCGCGN]C%34]CCG V]CC$%&'MNNQRT\]]CLGCCGC NXYZ[[\]CCGCL !*++,-G]LCGCGG ERS]CCG!#$&-QQRSU]GLCGCGG Q]CC #$%&'*++,-.799;;<=>]CLGCLCGGGLG00JUVWXXYZ[[\\GCLGLGC ]CG=HI]CG !""+,/0GGOORRXXYZ\]CGGGGGGGCC"#$%&'()+,-/4556:@ABCDJKMNRS]CGCGCGGCGCGCGCGS]C$)*+;<<@]CLGCG!$$&]CGGMSTUV]CGC !"&'5:;<]CGLGLCG !!#]CLGGIUW]CG9:;IJYZ\]]GCGLGJXY]CG %&()2255NSTTUVWXY\GGGGCGCGC !""##$$%]CCLGLG/5678>@@BBC]CGCGCG(QWY\]]CCCG !"$%%&-/9GLGCGC(7889:>?]GCG)-TXY]GCG !""#$%)*-2266TUVXY\]]CGCGCGGGCGC&&CDE]GCGBEF]CGHHIJKMP]GCGGZ[]GC$./2378MCGLG #$'(MCLG $%0156:<MNNOPQRS]CGGCGCGGC[\]]GC %&'()*+,,-7889<==>>YYZZ[[\]GLGCGLGGLGCGCG<=]]CG&'./67;VWYZ]GGGGGCG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||CGCG!!##%%''))++--//113355779;<=||||||||||||||CNOPPQQRTUUV]CGLGLG $$))AEFIJJK]CCCCGCGR]CC #$+,-.=>OVXZZ]]CGLGCGGC'DKLLMMGCGL%12=[]CGG!Q]CC %&'(,.=CCNW]]CGLGGCGGGTU]CG!!*+,:;=UWY[CCGLGCNNPRUV\]CCCC!8<=IMNOSTU]CGGCLCGAHIIJKL]CLCG !"&/0129::;=>>HMNNTU[]kLGCGCGCGCGGG56789:>>GCGG()-.012356=>ABBCEFGHLMMNVWXYYZ[\]kCGGCGLGHCkGCGLG"#$%'(<==>BCCDMNNOOPZ[\]]GCLGkCGCG|GC|-.NO]GCG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||C|GFLN\]]GGC%%--55==>]GGGGCI\C '()*-47<>@BEKORGLGCCCCC +--.78;<=CCGCG9:;=>?@@ADEFG]GCGLGLG034IJMNYZ]GCGCG59:=CG3<==>Z[\]]CGCGCDFIJMN]GLGC,-]CG"R]CC "+789:;<=>HIQRZ[\]]CGLGLGCGLG ?KNWCCGDQR]CGBUVXYZ[]CGLG -.0112FKKRRUWY]GCGCCCCG 479ACEGKLTUUVVWWXZ[\]]CCCCGLGLGLG79:=IMCGG&&--./056=GGCGC(]C!XZ\]CCC-/5@ABCDNCCCLG !""+,/0GGOOQSXYZZ\]CGGGGGGGCC"#$%&'()+-45569<<@ABMPY[[\\]]CGCGCGCGGCGGGCG!""),/0GGOORRUUXYZZ[[\]GCGGGGGGGGCGC !$%&'()+,.//06;;=MNOSST]CGCGCGCGGGCCG !"",,00GGOORRXYZZ\]GCGGGGGGGCC #$$%'(()+,-/=@ABVX]CGCGCGGCGC !""+,/0GGOORRXYZZ\]GCGGGGGGGCC "#$%&'()+,23569<<@ABNP]CGCGCGCGGCGG "")+//4699;;>@CEIKX[\]GCGGGGGGGGGGC  !#$&''(+,-/4556]CGCGCGGCG"++//GGXYZZ\]CGGGGCC "##$&''(+,234559:<=@AB]CGCGCGCGGGCG !""++//GGRRXYZZ\]CGGGGGGCC"##$&''(+,2345:==@ABNQQR]CGCGCGCGGCGCG!++//YZ\]CGGCC "##$&''(+-1556<@ABWCGCGCGCGCG!""57PPZZ\]GCGGGGG %'((),-23344556=>OPQR]GCGCGCGCGCGOORXY]GCCG%,-]CG !!##))BBDDOORZ\]GGGGGGCCG##%%&,-9>]GGCGG 5678RSSTTUUVVW]GCGCGCGC&&KNO]GGC"##$%+5667Z[]CGCCGCG#$$%]GCG $%%&6789?@@ABCCDHIMN]YGYGYGYGYG|,--.]GYGKMNT\]GYG-LLM]GYGJMNWX]YG-JMNWX]GYG#-.45]GYG!"(*-.78]|YGGBCGHJK]GYGY !"#)*GHKL]YGYGYG "#]GYGTUXY]YGYJKRSST]YGYG !""#%&&'89=>>?MN]GYGLGYGYGKLMN]YGY$%]YG'-8:;<==>AB]GGYLYG'(-LMNRSST]GGYLGNTUVW]YLG),--/]GYY%&,-0>]YGYG=@@BBCMNOP]GGYGYGN]Y%34]YYG V]YY $%&'CDMNNQRT\]]YLGYYGY NXYZ[[\]YYGYL  !*++,-GMNWX]LYGYGGG ERSST]YYG!#$&-QQRSU]GLYGYGG Q]YY #$%&'*++,-.799;;<=>]YLGYLYGGLG00JUVWXXYZ[[\\GYLGLGY ]YG=HIMNWX]YGG !""+,/0GGOORRXXYZ\]YGGGGGGGYY"#$%&'()+,-/4556:@ABCDJKMNRS]YGYGYGGYGYGYGYGS]Y$)*+-.78;<<@]YLGGYG!$$&-.78]YGGGMSTUV]YGY !"&'5:;<]YGLGLYG !!#-.78]YLGGGIUW]YG9:;IJMNWXYZ\]]GYGGLGJXY]YG %&()2255NSTTUVWXY\GGGGYGYGY  !""##$$%-.78]YYLGLGG/5678>@@BBC]YGYGYG(QWY\]]YYYG !"$%%&-/9GLGYGY(7889:GH]YGYGYGG=QTUVW]GYLG!!//RXY[\]YYGYGY !"#-.78]YLGGZ[[\]GYG/=>>?]GYG)-TXY]GYG !""#$%)*-2266TUVXY\]]YGYGYGGGYGY&&CDE]GYGBEFMNWX]YGGHHIJKMP]GYGGZ[]GY$./2378MYGLG #$'(MYLG $%0156:<MNNOPQRS]YGGCGYGGC[\]]GY<=]]YG&'./67;VWYZ]GGGGGYG!!##%%''))++--//1133557799;;==??AACCEEGGIIKKMPQQR[\\|||||||||||||||||||||||YGYG!!##%%''))++--//113355779;<=||||||||||||||YNOPPQQRTUUV]YGLGLG $$))AEFIJJK]YYYYGYGR]YY #$+,-.78=>OVXZZ]]YGLGYGGY'DKLLMMYGL%12=[]YGG!Q]YY %&'(,.78=CCNW]]YGLGGYGGTU]YG !!*+,-.78:;=UWY[YYGGLGYNNPRUV\]YYYY!8<=IMNOSTU]YGGYLYGAHIIJKLMNWX]YLYGG !"&/0129::;=>>HMNNTU[]kLGCGCGCGYGGG56789:>>GYGG()-.012356=>ABBCEFGHLMMNVWXYYZ[\]kYGGCGLGHYkGCGLG"#$%'(<==>BCCDMNNOOPZ[\]]GCLGkYGYG|GC|-.NO]GYG!!##%%''))++--//1133557799;;==??ABCHJJLLMOQQR]||||||||||||||||||G||Y|GFLN\]]GGY%%--55==>]GGGGYI\Y '()*-47<>@BEKORLGYYYYY +--.78;<=YYYG9:;=>?@@ADEFG]GYGLGLG034GH]YGGYGG  !!"%&&''(()-.78=GLGLGYG#$GGIMYYG==>IJMNYZ]GYGYG59:=YG3<==>Z[\]]YGYGY'(-.78DFIJMN]GGLGY,-]YG"R]YY "+-.789:;<=>HIQRZ[\]]YGLGLGYGLG ?KNWYYDQR]YGBUVXYZ[]YGLG -.0112FKKRRUWY]GYGYYYYG 479ACEGKLTUUVVWWXZ[\]]YYYYGLGLGLG79:=IMYGG&&--./056=GGYGY(]Y!XZ\]YYY-/5@ABCDMNNYYYLG !""+,/0GGOOQSXYZZ\]YGGGGGGGYY"#$%&'()+-45569<<@ABCDMPY[[\\]]YGYGYGYGGYGGGYG!""),/0GGOORRUUXYZZ[[\]GYGGGGGGGGYGY !$%&'()+,.//06;;=CDMNOSST]YGYGYGYGGGYYG !"",,00GGOORRXYZZ\]GYGGGGGGGYY #$$%'(()+,-/=@ABCDMNVX]YGYGYGGYGGY !""+,/0GGOORRXYZZ\]GYGGGGGGGYY"#$%&'()+,23569<<@ABCDMNNP]YGYGYGYGGYGGG "")+//4699;;>@CEIKX[\]GYGGGGGGGGGGY  !#$&''(+,-/4556CDMN]YGYGYGGYGG"++//GGXYZZ\]YGGGGYY"##$&''(+,234559:<=@ABCDMN]YGYGYGYGGGYGG !""++//GGRRXYZZ\]YGGGGGGYY"##$&''(+,2345:==@ABCDMNNQQR]YGYGYGYGGYGGYG!++//YZ\]YGGYY "##$&''(+-1556<@ABCDMNWYGYGYGYGYGG!""57PPZZ\]GYGGGGG%'((),-23344556=>CDMNOPQR]GYGYGYGYGGYGOORXY]GYYG%,--.78]YGG !!##))BBDDOORZ\]GGGGGGYYG##%%&,--.789>]GGYGGG 5678=>GHRSSTTUUVVWWX[\]GYGGYGYGYCY&&KNO]GGY"##$%+5667Z[]YGYYGYG#$$%]GYG &/29;=HMkO/V/V/V7Q787Q/ ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~TmT!TTT!TPTsTT<۰-TJyбʲwTճTRTԴTT "%&./003345667??@ABBOOOfO]]f,-fNOQQUU/VffTUf#,->O]]/Vf/V/VDKMM/Vf&'CC/Vf/V!!*+;=Y[/V/Vf/VIMNOST/V/Vf/VAHIIJK/Vf/V &/29;=HMVfOOO/V/ ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T2m2T24T4TT4Td>T>>T>T<>>?A?T^????? @@AATATfBBTBTT"$%%>]]M/ ^__`hiijjknoopqrrssttuuvvwwxxyyzz{{||}}~~T(m(T(!TTT!TTsTT<۰-TJyбTճTRTԴTT HM*O78 ()-12BBFGHLMMZ[*YH*O%'==>BDMO*.NMO]]>]LLZZOO12OI\()47<>@BEKORO +--8;;=@@EFOO03PRSTO01PQR]1;; !!&&'')-OO#$GG>INY"#O593<>Z]]FIN]O,"R]"89<=IQ[\OOO ?KDQBUYZO.02FKKRRUW %%))++FFGGIIRRXXYY[[\\gv ) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[ .I^yHWr;Vq1R..// GGIIJJKKXX[[\\]]DYGVnPP)ZZ[[##$$''FFGGHH{  ""(())11AACC!0?NN]l$&69?ABDH--NTLLJM.4"(CGK] #)HK "TY]JSS""&&9=?MOKN]$;<==>AONRSSONTUVO--/]%-0BBNON]%3 V]$%&NNQR]]O NX[[\]O ++O ER!#$QQO Q]#$'*++,-<=OOOJUVWYZ\\OO=H!YZ\]"%&)+55@ADJNRS]$)*<<O!MSV] !'5:;OO OIU;IZ\OJXNSUVY\ !""$$OO/58>BB(QWY\ !%%/9O(79:OMTV]0EGTOTXXZ[]]#%%(,./15QTUVO!!RX\] !"O[[>>TX!#$*-VX]]CDBEIJ[]$.37O #$'O<<-./11>MOP./00334566AAYO*+,,88==OYO??BBO<=WY,-OMPR[NOQQUUOO $$))AEJJTUOR]#,->O]]ODKMMO%1!Q]&'CCOGT!!*+;=Y[ONNPRUV\]IMNOSTOAHIIJKO HMkO ()-12BBFGHLMMZ[kYHkO%'==>BDMOkk479ACEGKUUWW[\OOO79./6=(]!XZ\]-/5@ABCO!ZZ\]"%&)+55@A\\ %&)+//NOSS#%')+@AX]"%&)+35@A \] $&(+55"ZZ\]"$&(+34@A"$&(+34@AQQ"$&(+55@A!((-2446=PQOORX%,OORZ&,67SSUUWW\]O]"$%+57Z$$ ()-126=BBFGHLMMWXZ[k7Q/VYH7Qk/VO#$%'==>BDM[\/VOk7Q7Q/V.N7QMO7Q>]7Q+:;>GLLZZ/V/V/VOO 123:/VO/VI\7Q()47<>@BEKORO7Q7Q7Q7Q7Q +--8;7Q7Q7Q;=@@EF7QOO9:k/V03PRST7Q7QO01PQ7Q7QR]7Q1;;7Q7Q !!&&'')-OO7Q#$GG7Q7Q>INY7Q7Q597Q3<>Z]]7Q7Q7QFIN]O7Q,7Q"R]7Q7Q"89<=IQ[\7QOO7QO ?K7Q7QDQ7QBUYZ7QO.02FKKRRUW7Q7Q7Q7Q7Q479ACEGKUUWW[\7Q7Q7Q7QOOO797Q./6=7Q7Q(]7Q!XZ\]7Q7Q7Q-/5@ABC7Q7Q7QO!ZZ\]7Q7Q7Q"%&)+55@A\\7Q7Q7Q7Q7Q7Q %&)+//NOSS7Q7Q7Q7Q7Q7Q#%')+@AX]7Q7Q7Q7Q7Q"%&)+35@A7Q7Q7Q7Q7Q \]7Q7Q $&(+557Q7Q7Q7Q"ZZ\]7Q7Q7Q"$&(+34@A7Q7Q7Q7Q7Q"$&(+34@AQQ7Q7Q7Q7Q7Q7Q"$&(+55@A7Q7Q7Q7Q7Q!7Q((-2446=PQ7Q7Q7Q7Q7QOORX7Q7Q%,7QOORZ7Q7Q&,7Q67SSUUWWX[\]7Q7Q7Q7Q/V7QO]7Q"$%+57Z7Q7Q7Q7Q$$7Q\]-./1156>MOPS]7Q7Q "%&./003345667??@ABBOMPR[7Q7QNOQQUU7QOO $$))AEJJ7Q7Q7Q7Q7QR]7Q7Q#,->O]]7QO7Q7QDKMM7QO%17Q!Q]7Q7Q&'CC7QO7QGT7Q!!*+;=Y[7Q7QO7QNNPRUV\]7Q7Q7Q7QIMNOST7Q7QO7QAHIIJK7QO7Q &/29;=HMkO7Q ()-126=BBFGHLMMWXZ[k7QYH7QkO#$%'==>BDM[\Ok7Q7Q+,&)GH9>FS#$DM!669Z[+:;>GLLZZOO 123:O9:k67SSUUWWX[\]7Q7Q7Q7Q7Q$&69?ABDHRRRRR--RNTRLLRJMR.4R"(RCGK]RR #)HKRRR "RTY]RRJSSRR""&&9=?MRORRKN]RR$R;<==>ARORNRSSRONTUVRO--/]RR%-0RRBBNORRN]R%3RR V]RR$%&NNQR]]RORRR NX[[\]RRRO ++ORR ERRR!#$QQORR Q]RR#$'*++,-<=ROROROJUVWYZ\\ROORR=HR!YZ\]RRR"%&)+55@ADJNRRRRRRRRS]R$)*<<ROR!RMSV]RR !'5:;ROOR ROIUR;IZ\ROJXRNSUVY\RRR !""$$RROO/58>BBRRR(QWY\RRR !%%/9ORR(79:ROMTV]RR0EGTRROTXXZ[]]RRRR#%%RR(,./15RRRQTUVRO!!RX\]RRRR !"RO[[R>>RTXR!#$*-VX]]RRRRRCDRBERIJR[]R$.37RO #$'RO<<R-./1156>MOPS]RR]]R<=RWYRMPR[RRNOQQUUROO $$))AEJJRRRRRR]RR#,->O]]RORRDKMMRO%1R!Q]RR&'CCRORGTR!!*+;=Y[RRORNNPRUV\]RRRRIMNOSTRRORAHIIJKROR &/29;=HMkOR78R ()-126=BBFGHLMMWXZ[kRYHRkO#$%'==>BDM[\OkRR.NRMOR>]RI\R()47<>@BEKORORRRRR +--8;RRR;=@@EFROO03PRSTRRO01PQRRR]R1;;RR !!&&'')-OOR#$GGRR>INYRR59R3<>Z]]RRRFIN]OR,R"R]RR"89<=IQ[\ROORO ?KRRDQRBUYZRO.02FKKRRUWRRRRR479ACEGKUUWW[\RRRROOO79R./6=RR(]R!XZ\]RRR-/5@ABCRRRO!ZZ\]RRR"%&)+55@A\\RRRRRR %&)+//NOSSRRRRRR#%')+@AX]RRRRR"%&)+35@ARRRRR \]RR $&(+55RRRR"ZZ\]RRR"$&(+34@ARRRRR"$&(+34@AQQRRRRRR"$&(+55@ARRRRR!R((-2446=PQRRRRROORXRR%,ROORZRR&,R67SSUUWWX[\]RRRRRO]R"$%+57ZRRRR$$R"$%%-BBQ>]RR]RMR %%))++FFGGIIRRXXYY[[\\x) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[?Zo &Yh+Lg-Bc..// GGIIJJKKXX[[\\]]UjGVPP:"$%%"77F>]VV]VMV %%))++FFGGIIRRXXYY[[\\ .o2AP_n) !!""##$$%%&&''(())**++..//00114455667788::>>BBCCEEFFGGHHNNOOPPRRSSTTYYZZ[[H]2S/nbq$ $.CRgvn-Bcx..//$3 GGIIJJKKXX[[\\]]XiiiPPZZ[[|##$$''FFGGHH"1F[  ""(())11AACCq$&69?ABDHVVVVV--VNTVLLVJMV.4V"(VCGK]VV #)HKVVV "VTY]VVJSSVV""&&9=?MVfVVKN]VV$V;<==>AVfVNRSSVfNTUVVf--/]VV%-0VVBBNOVVN]V%3VV V]VV$%&NNQR]]VfVVV NX[[\]VVVf ++fVV ERVV!#$QQfVV Q]VV#$'*++,-<=VfVfVfJUVWYZ\\VffVV=HV!YZ\]VVV"%&)+55@ADJNRVVVVVVVS]V$)*<<VfV!VMSV]VV !'5:;VffV VfIUV;IZ\VfJXVNSUVY\VVV !""$$VVff/58>BBVVV(QWY\VVV !%%/9fVV(79:VfMTV]VV0EGTVVOTXXZ[]]VVVV#%%VV(,./15VVVQTUVVf!!RX\]VVVV !"Vf[[V>>VTXV!#$*-VX]]VVVVVCDVBEVIJV[]V$.37Vf #$'Vf<<V-./11>MOPVV./00334566AAff]]V*+,,88==fff??BBf<=VWYVMPR[VVNOQQUUVff $$))AEJJVVVVVR]VV#,->O]]VfVVDKMMVf%1V!Q]VV&'CCVfVGTV!!*+;=Y[VVfVNNPRUV\]VVVVIMNOSTVVfVAHIIJKVfV HMVfV78V-12BBFGHMZ[VfHVf%'=BDMfVV.NVMOV>]VLLZZff12fI\V()47<>@BEKORfVVVVV +--8;VVV;=@@EFVffLLfV03PRSTVVf01PQVVR]V1;;VV !!&&'')-ffV#$GGVV>INYVV"#f59V3<>Z]]VVVFIN]fV,V"R]VV"89<=IQ[\VffVf ?KVVDQVBUYZVf\]f.02FKKRRUWVVVVV479ACEGKUUWW[\VVVVfff79V./6=VV(]V!XZ\]VVV-/5@ABCVVVf!ZZ\]VVV"%&)+55@A\\VVVVVV %&)+//NOSSVVVVVV bstr-1.7.0/src/unicode/fsm/sentence_break_fwd.rs000064400000000000000000000014071046102023000177650ustar 00000000000000// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // // regex-cli generate serialize sparse dfa --minimize --start-kind anchored --shrink --rustfmt --safe SENTENCE_BREAK_FWD src/unicode/fsm/ // // regex-cli 0.0.1 is available on crates.io. use regex_automata::{dfa::sparse::DFA, util::lazy::Lazy}; pub static SENTENCE_BREAK_FWD: Lazy> = Lazy::new(|| { #[cfg(target_endian = "big")] static BYTES: &'static [u8] = include_bytes!("sentence_break_fwd.bigendian.dfa"); #[cfg(target_endian = "little")] static BYTES: &'static [u8] = include_bytes!("sentence_break_fwd.littleendian.dfa"); let (dfa, _) = DFA::from_bytes(BYTES).expect("serialized DFA should be valid"); dfa }); bstr-1.7.0/src/unicode/fsm/simple_word_fwd.bigendian.dfa000064400000000000000000000255271046102023000213770ustar 00000000000000rust-regex-automata-dfa-sparse7  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIIJKLLLLLLLMNOPQRRSTUVWXYZ[\]^_`abcdefffffghhijklmmnoooooooooooo((JJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiikkllnn((((1L[LLL $?f{LTn33>>CC((( !?AH((( H( )-5577((((( =?@CFHH((((*,H((((( >@H(( H(( 8:H(( "")H((( FHH((( 38;(((((#)H(( 27H(( %(13EHH(((((H( H(( :( >CCFF(((!))**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHH #x##L##$$V$$%%:%s%%&$&K&&&' '>'e''''((C(^(y/ !""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<=DEEFFGGHHL s L - Z L !!&!;!PL!q!q!!!!"""1"L"mL"|LD"""L""#*#E 9;<<==>>??@@AAk b%4LCXy H ,ALV L ?AHLL HL  !!""##$$%%&&''(())**++,,--..//0011223344556677889HL+L:OLjLLL6LWxLL &''((L-1223344556677889<==>>??@@AABBCCDDEEFFGGHHLLIL#2G\wL !!##$$%%&&''(()233445566778899::;;  O j  E Z D e   )) L 8(. !$%%&&''))**++,,--//1122334455667799::;<==CCDDEEFFGGHHoL sL8Sh}L(=LavLb$3Hcr0  !!""##$$%%&&))++,,--..//001122334499::;;==>>??DDEEFFGGLL6ErLL/DLYq t+@q[v!0K` GGHHLILXLgv LS!""L)011223344556677BBEEFFGGHHLqLL. '(();<<==LDLSbHH) 99::;;LLLEEFF"##$$%%&&''((112233EEL1FsL6K`{ (()+,,--..AABBCC  *?T dcrLLw 88  #$$%HL L $%%&())*HL dL sL BCCDHL OL 788L @)011L 1 HL L L H(( &( )( *9H(( B( &)H(( ((9H( 29H((( (9B( !$*,-/39H(((((( 6(( 59F(( ((7(B()/14679G(((( (( "(( (*+--002;=@BBDD(((((((((  ""$$&&((*+--035;=@BEGG((((((((((((((((((( $*,.24D(((((.26;DH((( 36((( ( H(( %'(++./257BDDFH(((((((( H(( %'BDG(((((( H(((( .1H(( #%CEH(((( =?H((( 79H((( 13H((( H((( ?DH(( 5>>(( $(*8((( '.3(( 69H(( ( +;;((-09H(((( D( 39E(( "&'(((9<>DFG((( @( ( ( A( ')29H((( G( 69=((( ?( ",@FH(((( ( H(( ((()*,-9:((( "( 7( ( 9( />HH((( C( 19B((( =?H(( BDH((((((((  &,/59=(((((((( "'*((( "((( >AH(( !&(( "((( #&49B((()H( 2HH(( !>@ADH((((((( "(()03H(( #*,-(((H(( "&&9H((( ?AH((( ";H((( 02?((( ?CCEFHH(((((( ").013H((((( !)2(((()?( CGH((( "((99( /1CEFHH((((( &(( =(FF( %)H(( ))(( (6H(( C(( ((( &)29H((( !D(( 09H(( ,9CEH(((  *,:@AEEHH(((((( )?(( '();=>(( )B(( @GH((  ">ACHH((((((()E( %( /(( >( );(( ( ;( 09B(( 2459:(((FH( %009H((( 9H(( 9H(( )?((  &13?AEGG(((((( H(((H( F( H(( 9D(( )8<=(((9=?H((( E("*CHH((( #/H((  #%(((( ,9H(( D(( (F( 4(( ;=FHH((( (+H(( H(( ";H((((( 055(( <( ")@DDFH((((( )E(( ")G((( ")?CH(((( $&)8;?(((( )/179H(((((( #%29H((( 3569B(((*8:>AE(((( H( "#&(*H(((( CEH((8:H(( )H((HH(( ::HH((((%(9( "&--//11368BEH((((((((((()H(((?H( 2( -4<(( .00669H(((( 088HH((( )/179?AG((((( !')H(((((88( H(( CEH((((( !!#&)H(((((( 9;>AG((((( !H(((( !H((( #&((( )H(( >AF(( 58H(( #)H(( 37A(( (=(( )579;<((((  %&)2((((")H((( 39H(( ')49D(((69=(( 49H(( "(( $)H(( ')EHH((( "009H(((( ( "4<((( F(( CFH(((C(( !&)H(((  ""$$&&(F((((((( =?EGG((( $)5;=?E((((((( $)39H((( !H((( *,H(( ,/8:H((( 139;;?BEH((((((((  %&(,/:EEGG((((((((( 139;<>?ABEEGH(((((((((( "%''/>((((((( 139;<>BEH(((((((( ),/8BH((((((( 139;<>BEH((((((((  %&(,/8::(((((((( "#%%'(,-137BGH(((((((((((  /8(((((( 13BEH((((( !#&&),/8(((((((( 13<>BEH((((((( &'),/8:<(((((((( H(((  (,/8CH((((((( #:>@@BBGH((((((( 5:H(((  "E((((o###### bstr-1.7.0/src/unicode/fsm/simple_word_fwd.littleendian.dfa000064400000000000000000000255271046102023000221330ustar 00000000000000rust-regex-automata-dfa-sparse7  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIIJKLLLLLLLMNOPQRRSTUVWXYZ[\]^_`abcdefffffghhijklmmnoooooooooooo((JJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiikkllnn((((1L[LLL $?f{LTn33>>CC((( !?AH((( H( )-5577((((( =?@CFHH((((*,H((((( >@H(( H(( 8:H(( "")H((( FHH((( 38;(((((#)H(( 27H(( %(13EHH(((((H( H(( :( >CCFF(((!))**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHH x###L##$V$$$%:%s%%%$&K&&&& '>'e'''''(C(^(y(/ !""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<=DEEFFGGHHLs  L- Z L !&!;!P!Lq!!q!!!!""1"L"m"L|"LD"""L""*#E# 9;<<==>>??@@AAk b%4LCXy H ,ALV L ?AHLL HL  !!""##$$%%&&''(())**++,,--..//0011223344556677889HL+L:OLjLLL6LWxLL &''((L-1223344556677889<==>>??@@AABBCCDDEEFFGGHHLLIL#2G\wL !!##$$%%&&''(()233445566778899::;; O j   E Z D e    )) L 8(. !$%%&&''))**++,,--//1122334455667799::;<==CCDDEEFFGGHHoLs L8Sh}L(=LavLb$3Hcr0  !!""##$$%%&&))++,,--..//001122334499::;;==>>??DDEEFFGGLL6ErLL/DLYq t+@q[v!0K` GGHHLILXLgv LS!""L)011223344556677BBEEFFGGHHLqLL. '(();<<==LDLSbHH) 99::;;LLLEEFF"##$$%%&&''((112233EEL1FsL6K`{ (()+,,--..AABBCC *?Td crLLw 88  #$$%HL L $%%&())*HLd Ls L BCCDHLO L 788L@ )011L1  HL L L H(( &( )( *9H(( B( &)H(( ((9H( 29H((( (9B( !$*,-/39H(((((( 6(( 59F(( ((7(B()/14679G(((( (( "(( (*+--002;=@BBDD(((((((((  ""$$&&((*+--035;=@BEGG((((((((((((((((((( $*,.24D(((((.26;DH((( 36((( ( H(( %'(++./257BDDFH(((((((( H(( %'BDG(((((( H(((( .1H(( #%CEH(((( =?H((( 79H((( 13H((( H((( ?DH(( 5>>(( $(*8((( '.3(( 69H(( ( +;;((-09H(((( D( 39E(( "&'(((9<>DFG((( @( ( ( A( ')29H((( G( 69=((( ?( ",@FH(((( ( H(( ((()*,-9:((( "( 7( ( 9( />HH((( C( 19B((( =?H(( BDH((((((((  &,/59=(((((((( "'*((( "((( >AH(( !&(( "((( #&49B((()H( 2HH(( !>@ADH((((((( "(()03H(( #*,-(((H(( "&&9H((( ?AH((( ";H((( 02?((( ?CCEFHH(((((( ").013H((((( !)2(((()?( CGH((( "((99( /1CEFHH((((( &(( =(FF( %)H(( ))(( (6H(( C(( ((( &)29H((( !D(( 09H(( ,9CEH(((  *,:@AEEHH(((((( )?(( '();=>(( )B(( @GH((  ">ACHH((((((()E( %( /(( >( );(( ( ;( 09B(( 2459:(((FH( %009H((( 9H(( 9H(( )?((  &13?AEGG(((((( H(((H( F( H(( 9D(( )8<=(((9=?H((( E("*CHH((( #/H((  #%(((( ,9H(( D(( (F( 4(( ;=FHH((( (+H(( H(( ";H((((( 055(( <( ")@DDFH((((( )E(( ")G((( ")?CH(((( $&)8;?(((( )/179H(((((( #%29H((( 3569B(((*8:>AE(((( H( "#&(*H(((( CEH((8:H(( )H((HH(( ::HH((((%(9( "&--//11368BEH((((((((((()H(((?H( 2( -4<(( .00669H(((( 088HH((( )/179?AG((((( !')H(((((88( H(( CEH((((( !!#&)H(((((( 9;>AG((((( !H(((( !H((( #&((( )H(( >AF(( 58H(( #)H(( 37A(( (=(( )579;<((((  %&)2((((")H((( 39H(( ')49D(((69=(( 49H(( "(( $)H(( ')EHH((( "009H(((( ( "4<((( F(( CFH(((C(( !&)H(((  ""$$&&(F((((((( =?EGG((( $)5;=?E((((((( $)39H((( !H((( *,H(( ,/8:H((( 139;;?BEH((((((((  %&(,/:EEGG((((((((( 139;<>?ABEEGH(((((((((( "%''/>((((((( 139;<>BEH(((((((( ),/8BH((((((( 139;<>BEH((((((((  %&(,/8::(((((((( "#%%'(,-137BGH(((((((((((  /8(((((( 13BEH((((( !#&&),/8(((((((( 13<>BEH((((((( &'),/8:<(((((((( H(((  (,/8CH((((((( #:>@@BBGH((((((( 5:H(((  "E((((o###### bstr-1.7.0/src/unicode/fsm/simple_word_fwd.rs000064400000000000000000000013511046102023000173370ustar 00000000000000// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // // regex-cli generate serialize sparse dfa --minimize --start-kind anchored --shrink --rustfmt --safe SIMPLE_WORD_FWD src/unicode/fsm/ \w // // regex-cli 0.0.1 is available on crates.io. use regex_automata::{dfa::sparse::DFA, util::lazy::Lazy}; pub static SIMPLE_WORD_FWD: Lazy> = Lazy::new(|| { #[cfg(target_endian = "big")] static BYTES: &'static [u8] = include_bytes!("simple_word_fwd.bigendian.dfa"); #[cfg(target_endian = "little")] static BYTES: &'static [u8] = include_bytes!("simple_word_fwd.littleendian.dfa"); let (dfa, _) = DFA::from_bytes(BYTES).expect("serialized DFA should be valid"); dfa }); bstr-1.7.0/src/unicode/fsm/whitespace_anchored_fwd.bigendian.dfa000064400000000000000000000056241046102023000230460ustar 00000000000000rust-regex-automata-dfa-dense @`@`@@@@@@@@@@@@@@@@@@@` @`@`@`@@@@@@@@@@@@@@@@@@@` @` @bstr-1.7.0/src/unicode/fsm/whitespace_anchored_fwd.littleendian.dfa000064400000000000000000000056241046102023000236020ustar 00000000000000rust-regex-automata-dfa-dense @`@`@@@@@@@@@@@@@@@@@@@` @`@`@`@@@@@@@@@@@@@@@@@@@` @` @bstr-1.7.0/src/unicode/fsm/whitespace_anchored_fwd.rs000064400000000000000000000016031046102023000210120ustar 00000000000000// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // // regex-cli generate serialize dense dfa --minimize --start-kind anchored --shrink --rustfmt --safe WHITESPACE_ANCHORED_FWD src/unicode/fsm/ \s+ // // regex-cli 0.0.1 is available on crates.io. use regex_automata::{ dfa::dense::DFA, util::{lazy::Lazy, wire::AlignAs}, }; pub static WHITESPACE_ANCHORED_FWD: Lazy> = Lazy::new(|| { static ALIGNED: &AlignAs<[u8], u32> = &AlignAs { _align: [], #[cfg(target_endian = "big")] bytes: *include_bytes!("whitespace_anchored_fwd.bigendian.dfa"), #[cfg(target_endian = "little")] bytes: *include_bytes!("whitespace_anchored_fwd.littleendian.dfa"), }; let (dfa, _) = DFA::from_bytes(&ALIGNED.bytes) .expect("serialized DFA should be valid"); dfa }); bstr-1.7.0/src/unicode/fsm/whitespace_anchored_rev.bigendian.dfa000064400000000000000000000062401046102023000230550ustar 00000000000000rust-regex-automata-dfa-dense @`@`@@@@@@@@@@@@@@@` @@`@`@@@@@@@@@@@@@@@`        @bstr-1.7.0/src/unicode/fsm/whitespace_anchored_rev.littleendian.dfa000064400000000000000000000062401046102023000236110ustar 00000000000000rust-regex-automata-dfa-dense @`@`@@@@@@@@@@@@@@@` @@`@`@@@@@@@@@@@@@@@`        @bstr-1.7.0/src/unicode/fsm/whitespace_anchored_rev.rs000064400000000000000000000016331046102023000210310ustar 00000000000000// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // // regex-cli generate serialize dense dfa --minimize --start-kind anchored --reverse --no-captures --shrink --rustfmt --safe WHITESPACE_ANCHORED_REV src/unicode/fsm/ \s+ // // regex-cli 0.0.1 is available on crates.io. use regex_automata::{ dfa::dense::DFA, util::{lazy::Lazy, wire::AlignAs}, }; pub static WHITESPACE_ANCHORED_REV: Lazy> = Lazy::new(|| { static ALIGNED: &AlignAs<[u8], u32> = &AlignAs { _align: [], #[cfg(target_endian = "big")] bytes: *include_bytes!("whitespace_anchored_rev.bigendian.dfa"), #[cfg(target_endian = "little")] bytes: *include_bytes!("whitespace_anchored_rev.littleendian.dfa"), }; let (dfa, _) = DFA::from_bytes(&ALIGNED.bytes) .expect("serialized DFA should be valid"); dfa }); bstr-1.7.0/src/unicode/fsm/word_break_fwd.bigendian.dfa000064400000000000000000011103771046102023000211710ustar 00000000000000rust-regex-automata-dfa-sparse  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYYZ[\\\\\\\]^_`abbcdefghijklmnopqrstuuuuuuvwwxyz{||}~?FF9X9H9"9*VXX99 999)355999$8II99/68=@ACF9999((**IX999#9?I9DLVV99!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXukuuuuuuvuv=uvjuvvvvw uw0Uw]wwwwwwxx)x8xY&&5566778899;;==AABBCCDDEEFFGGHHIILLPPssstt't<tQt`tutttt?tttuu&u5uDLLNNPP1 1,1A1P1_0022334499;;<<==>>??@@AABBCCDDHH)>Yhw000EEQQTTWWXX ))**,,//4455667788,q^s$99FFWXWHW"W*VXXWW WWW)355WWW$8IIWW/68=@ACFWWWW((**IXWWW#W?IWDLVVWW!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX;P;q;;;;;;;<";>>>&&5566778899;;==AABBCCDDEEFFGGHHIILLPP8t8888889 9"919F9[9jY9999999LLNNPP8828G8V68e7822334499;;<<==>>??@@AABBCCDDHH66667 7!7<7K7Z7o77777EEQQTTWWXX6p6666 ))**,,//4455667788-/Vezϧ99͔BBFFGGO9O%%''((,,//0011223344556677==EEFFLLNNPPss1A;;;< <~~~5^.5^C|1P1_##sj0;u ))**,,//4455667788,q^s4ZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}BAB-B<BKB`B{BBBBB{Z{o|8||}}j}}* ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}ɒɒɒ˟ɒ  |0 @ 00 07=0vK7 L) ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}} E E˟ E  U |0 B   0 0 0 E l   0Y2Y 4&ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}egbhgbij j&j5jJjYjjj&jj&jjk k.kUkvj&kkll0lKlxmAndnoooop\p BCCDEFFGMNNORSSTXAA LAOA LA LA/001OPPQX LA LA LX L0167X LA LXO HIMNNOPQRSVWWXXO LA LA LA L  !#$$%%&&':;;?@ABBCFGHIRSUVWXX LA LOAO LOAO Lȓ LA L'(())**+HIXAO LO LO#$%&XOA L>?IJJKX LO LA "#CDLMNORSSTUVVWXȓ LO LA LAOA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXibiijjjCjjk~klnlmFmn*noo_op7ppqTqqr#rJrqrrssO1!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXeefM CB  !!Ef!!!B!!"ffgg(gU g|Rg#pA#ggh$hKh`h{hhh$%iB5^B%%&&1 *++,,-HIKLLMMNNOOPPQQRXdd^e3!ANcABeNe{eA !#$$%%&&'XdOAdheBheAhzLhAXA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIXB B'aaaBaVb<bWbbbc cJceccKBdBXB67788BaRamDEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXAc>SBh}cdBdAd\ddd))**++,,--..//023344556677889XaŢAyAy,AƀơFAyXAy899:XAy@Ay(Ay; YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  # # #  #  T  $P $$$ $ 8[%%Y%% &:&&&'&'y(J){)I*]"v"I++;+u8 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  ,! ,! ,!  T  - $ -]- - 8..C.~./ /G////0202"2I3"v"I34:;4u3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~    T   $G^  8[$_ Fi !^I!"v"I"#-;#u BCCDEFFGMNNORSSTXAAA AAA/001OPPQXAAX0167XAX  HIMNNOPQRSVWWXX AAA  !#$$%%&&':;;?@ABBCFGHIRSUVWXXA A  A ˟A'(())**+HIXA   #$%&X A>?IJJKX A "#CDLMNORSSTUVVWX˟ AA A!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXrXrrrss9sxstttuduv<vw wxxUxy-yyzJzz{{@{g{{| |E1!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXkbk}kl0lFllm m0mQmlm0mmmmn,nknnA)nOcoo4AoOojoooop p<pipppp0ş0qDqkqq *++,,-HIKLLMMNNOOPPQQRXhhi"i=iXiOAjj'A0j<jijjkkGA !#$$%%&&'XgAghh)0hJheAhzLhA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0cc0cdd?dZdu0ddee)eDeeeef7fRffg gZ0gu0X0677880:DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXAbJQ(QOQd0QyQQQbb0ccRcIcj))**++,,--..//023344556677889X]ȢAyAy,MɌɭRAy899:XAyQAyZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}˟|`|o|~|||||}}/}J}Y}h}~L~- BCCDEFFGMNNORSSTXAAA˟AAAX˟ HIMNNOPQRSVWWXX˟AASn"#XA˟!""##$)*VWWXXSnA˟A˟  !()CDGHLMXA˟A˟A˟AAA $%&'()34455689X˟ASnA˟A˟A #$BCCDDEEFFGHIIJX˟A˟SnA˟,--../6778=>?@ABBCFGHIRSUVWXXA˟A˟˟A˟˟A'(())**+HIXA˟˟˟#$%&X˟A>?IJJKX˟A "#CDLMNOPQQRRSSTUVVWX˟˟ASnAA˟A!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXm'N sK/d<Y(OvT1!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXjl0lFllm mQmlm0mmm$9fA)Oco4AoO/Vkpp0Q0qDqkqq *++,,-HIKLLMMNNOOPPQQRXi"PiXiOAjj'A0kjijkGA !#$$%%&&'XHAhh)0hJheAhzLhA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0cc0cdu0de5PC^g gZ00DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXAPQ(QOQd0QyQQQQR0RiRRSS#))**++,,--..//023344556677889Xu]Ay0Ay,ԙ՞+Ay899:XAyAy$ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}} |0  00 07Xy0-Tit ; BCCDEFFGMNNOOPPQRSSTXAAAAAAAMNNOPQRSVWWXXAAA  !#$$%%&&':;;>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXߣٟ0 ڃKܢ tRޑQߺ8.U|'/!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMTUUVVWWXX8l0lFllm qmQmlm0mmmג׳.A)UOcpo4AoO؝ز0Hecppx0qDqkqq *++,,-HIKLLMMNNOOPPQQRXՎi"*iXiOAjj'A0Ejifj֍kGA !#$$%%&&'X(Aghh)0hJheAhzLhA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0cc0cZ0QOdu0dӁe0Ӣ0#Mbbԏg gZ00DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXA(Q(QOQd0QyQQQy0R]x))**++,,--..//023344556677889XTۡ]Ay Ay,rݱwAy899:XAyAy3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  & - 4 - 6 j 6R6i+x 6 677a7 78N88899;;I;0I<=0;=u BCCDEFFGMNNORSSTXAA LAA LA LAX HIMNNOPQRSVWWXX LA LA LA L"#X LA L!""##$)*VWWXX LA LAA  !()CDGHLMXAAAA LA LA()34455689XAAA L #$89BCCDDEFGHIIJX LȓAȓA L L,--../6778=>?@ABBCFGHIRSUVWXX LA LA LA Lȓ LA L'(())**+HIXA L L#$%&XA L>?IJJKX L LA "#CDLMNORSSTUVVWXȓ L LA LAA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX&&''9'N'u'()()1)**x*+\+,@,--i-..././U/|//0!0H01!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX  CB  !!E!l!!!B!!"";"h""" #R#C#pA####$$*$E$x$$$%%/B_B%%&&1 *++,,-HIKLLMMNNOOPPQQRX^y!ANcABxDA !#$$%%&&'XA)JeBA_A*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIXB B'TB Vk:y KBBDEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXA>SBh}B(Cp))**++,,--..//023344556677889XRŢAysAy0QAy899:XAyUAy3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  = = = = >?H?w??w??@9?w@\?w@@@AAkA?wABB9B\ByBCyDE!IEF9FPIFsF;G[u BCCDEFFGMNNORSSTXAAz%Az%Az%Az%A/001OPPQXz%Az%Az%Xz%0167Xz%Az%MNNOPQRSVWWXXz%Az%Az%Az%  !#$$%%&&':;;>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX9clkI rha!HGn:a/!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMTUUVVWWXXoc&k"c7Rs0QlA8cMczc% *++,,-HIKLLMMNNOOPPQQRXW[AAc =dA !#$$%%&&'XpAc A'cBA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIXcccc0occ:>k(cCcXc67788cgDEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXAfcZ8Yc))**++,,--..//023344556677889X!fAyAy  _%Ay899:XAyAy; YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  # # #  #  T  \a $\\ ] 8[]/]j]^ ^Q^^__=_`aabIbt"v"Ic-c;du8 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  ,! ,! ,!  T  T $KU- UG 8.UpUVV? VVW&WIWrWXYZ>IZ"v"I[V[;\>u3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  G~ H JF H KKKLL9LPLLKMKM*MMMMNNQKNOO8O[OOPQRPIRShSIST;Tu BCCDEFFGMNNORSSTXAAgbAhAgbAgbA/001OPPQXgbAgbAgbXgb0167XgbAgbXh HIMNNOPQRSVWWXXhgbAgbAgbAgb  !#$$%%&&':;;?@ABBCFGHIRSUVWXXgbAgbhAhgbhAhgbegbAgb'(())**+HIXAhgbhgbh#$%&XhAgb>?IJJKXgbhgbA "#CDLMNORSSTUVVWXegbhgbAgbAhA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX>k    X  Z   k  I  <51!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX $uj&8}4j&Id'T&{A,Y+Fsj&6j&o *++,,-HIKLLMMNNOOPPQQRXQ~5AAj&CjA !#$$%%&&'XAj&6A'cBA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIXj&j&Fa|j&0K>Yaj&|j&Xj&67788j&DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXARj&0Q~j&5))**++,,--..//023344556677889XZ٧9ZAy{Ay #DvAy899:XAyAy BCCDEFFGMNNOOPPQRSSTXAAAgbAAAA HIMNNOPQRSVWWXXgbAAA"#XAgb!""##$)*VWWXXAAgbAgb  !()CDGHLMMNXAgbAgbAgbAAA()34455689XgbAgbAgbA #$89BCCDDEFGHIIJXgb˟A˟Agb,--../6778=>?@ABBCFGHIRSUVWXXAgbAgbgbAgb˟A'(())**+HIXAgbgbgb#$%&XgbA>?IJJKXgbA "#CDLMNORSSTUVVWX˟gbAAgbA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX--..U.j../E/0M01112 2x3 3\344459556J6q6667=7d71!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX*/*J*l0lFllm *mQmlm0mmm*+"+a+v+A)+Oc+o4AoO,*,E,r,,,,-)-Dpp-_0j&0qDqkqq *++,,-HIKLLMMNNOOPPQQRX()6i")iXiOAjj'A0)ji)j)kGA !#$$%%&&'X(A(h)0hJA'cBA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0cc0c%%&du0d&!e&l&&&' ';'z''( g gZ0(L0DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXA$Q(QOQd0QyQQQ$0%%1%R%s))**++,,--..//023344556677889X Z]AyAy 1p6Ay899:XAyAy BCCDEFFGMNNORSSTXAAAeAAAXe HIMNNOPQRSVWWXXeAASn"#XAe!""##$)*VWWXXSnAeAe  !()CDGHLMXAeAeAeAAA $%&'()34455689XeASnAeAeA #$89BCCDDEEFFGHIIJXe˟A˟SnAe,--../6778=>?@ABBCFGHIRSUVWXXAeAeeAe˟A'(())**+HIXAeee#$%&XeA>?IJJKXeA "#CDLMNOPQQRRSSTUVVWX˟eASnAAeA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXWJWWWXX+XjXYfYZVZ[.[\\\]G]^^^_<__` `2`Y```a71!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXSST5l0lFllm TnmQmlm0mmmTTTUU=A)UdOcUo4AoOUUV V3VHVcVVVppV0<0qDqkqq *++,,-HIKLLMMNNOOPPQQRXRyRi"SiXiOAjj'A0S6jiScjSkGA !#$$%%&&'XRARRh)0hJA'cBA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0cc0cOROOdu0dOePPPfPPPQQ)QhQg gZ0Q0DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXAN/Q(QOQd0QyQQQNR0NR%1NO))**++,,--..//023344556677889X<=]?AAy?bAy ?@ @+@A]Ay899:XAy<5AyFF~X~H~"~*VXX~~ ~~~)355~~~$8II~~/68=@ACF~~~~((**IX~~~#~?I~DLVV~~!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX-N]r,SzFU|&&5566778899;;==AABBCCDDEEFFGGHHIILLPP"7F[p&LLNNPP. $$%%&&,AP_n22334499;;<<==>>??@@AABBCCDDHHEZix&Ab} EEQQRRTTUUVVWWXXOm|!6 ))**,,//334455667788DvN99BBFFGGO~O%%''((,,//0011223344556677==EEFFLLNNPP/b;;;< <~~~5^.5^C|.  ##$$%%&&,A;uP_n ))**,,//334455667788DvTZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}Q`o~5DSh1c+YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~uxl luuumL v mv9vbvvv ww_wwwwxyz^z"vr{F{|$ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}[ |0 | 00 0760] i ACCFFNNPPSS E/1OQX07XXHIMOPSVXX !#%%':?@ACFGHIRSUXX˟(())**+HIX#&X>?IJJ"#CDLMNSSVV˟!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXZJ+p9x/nó+pė Qlœ0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX0:gD 0-BYz$,;.C^y7X00++,,IKLLMMNNOOPPQQ]iW0,h3N0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX00,Mhl0{} +FaFs00677880EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXYt0t%0%g ))**++,,--//4455667788v+FN99BBCCFFGGNNPPSSOO E %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQii#z;< <~~5^.5^C|0,h##BN0;u ))**++,,--//4455667788v+FNCCFFNNSSʣXʣHIMOPSVXXʣ!#%%':?@ACFGHSUXXʣʣʣʣ(())**+HIXʣʣʣ#&Xʣ>?IJJʣ#CDLMNSSVVʣʣ!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXWݐݱAތ[ߠWA7^B.!""##$$%%&&''(())*12233445566778899::;;<<==AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXD0:ge 0-Bzۛ$(CXs܂ܑܬ X0ʅ0++,,IKLLMMNNOOPPQQf{iڜW0ګ,h<W0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX00BYzؕl0{ت1LgقٝٲFs0!0EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX׺Yt0t0g2 ))**++,,--//4455667788˨̿vHcxb99OFFXH"*VXX )355$8II/68=@ACF((**IX#?IDLVV!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX'6KZu,Sh.Ujy&&5566778899;;==AABBCCDDEEFFGGHHIILLPPbq4IXnsLLNNPP  5DS22334499;;<<==>>??@@AABBCCDDHH*9H]rEEQQTTWWXX^m ))**,,//4455667788:I^99xBBFFGGO:qOX:qH:q":q*VXX:q:q :q:q:q)355:q:q:q$8II:q:q/68=@ACF:q:q:q:q((**IX:q:q:q#:q?I:qDLVV:q:q!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX##2#A#V#e######$#$7$^$s$$#$l%%*%9%`%u%%%%%%&&5566778899;;==AABBCCDDEEFFGGHHIILLPP!m!|!!!!!"""*"?"T"cU"~""""""ͅ%%''((,,//0011223344556677==EEFFLLNNPP !%!@;;;< <~~~5^.5^C|!Oi!^##  ;u22334499;;<<==>>??@@AABBCCDDHHx   / D Y h   EEQQTTWWXXETix ))**,,//4455667788\I^99CCFFNNSSgb>gbgb/1OQXgbgbgb07XgbgbX>HIMOPSVXX>gbgbgbgb!#%%':gbHJXgbgb/25779Xgbgbgbgb!##*VXXgbgb>> )CHL>>>gbgb)3559X>>>gb#$89BDDGHIIJXgb>eegb>gb ,../68=>?@ACFGHIRSUXXgbgb>>gb>>gbegbgb(())**+HIX>gb>gb>#&X>gb>?IJJgb>gb"#CDLMNSSVVegb>gbgb>!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXHHHII*IQIIJ JeJJK.KsKLL0LiLLM2MeMMNNN.NCNXNNN0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXFF*FWʪj&%FF~vˋˠj&˯FFFFGG GMGhG}GGGGGH+H@HUj&2j&IdΗβ++,,IKLLMMNNOOPPQQBB5BSĞ Ĺj&CC$4C?ł  $$%%&&B^BoÄj&Ùîýc*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIXj&fuj&@W@x@j&@k@AA5AVAqAAAABj&B=j&67788j&<QEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX? (7j&F&Uj?j&@@@0 ))**++,,--//33445566778834's55Ds5_s5556y6992BBCCFFGGNNSSOgb>Ogbgb %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQEE5BɺĞ;< <Ĺ,~~5^.5^C|j&CC$4C?ł  ##$$%%&&EBoÄj&Ùî;uýc ))**++,,--//33445566778834's55Ds5_s5556yDCCFFNNPPSS=n EX=nHIMOPSVXX=n"#X=n!##*VXX=n=n )CHLMM=n=n=n E)3559X=n=n=n#$89BDDGHIIJX=n˟˟=n ,../68=>?@ACFGHIRSUXX=n=n=n=n˟(())**+HIX=n=n=n#&X=n>?IJJ=n"#CDLMNSSVV˟=n=n!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXef.fOfvfffg0ggh hPhhiidiij jNjjk k2kekzkkkkll.0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXc|cc0:gc 0-Bcdd<dKdfd$d,;dddee#e>e_ee7Xe0@,0++,,IKLLMMNNOOPPQQ_t_i_W0_,`h`+_J_e0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX00]C]d]l0{]]]^!^B^]^x^^^_Fs0_)0EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX\Yt0t\%0\%g]] ))**++,,--//4455667788PQ%vRBR]RRRSeS99OBBCCFFGGNNPPSSO=nO E %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQccIi_#z;< <~~5^.5^C|0_,`h`+##b_e0;u ))**++,,--//4455667788PQ%vRBR]RRRSebZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}˟CCC#C2CACVCqCCCCCD D(DEEEF;FhFCCFFNNSS?@ACFGHIRSUXX?IJJ>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX(Oc,q.g0c,AV0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX(U0:g| 0-B$K,;f{)>7XS0p{0++,,IKLLMMNNOOPPQQ>iqW0,h0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX00}}~l0{~%~d~~~~ 0ErFs00EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX}#Yt0t}\0}4g}} ))**++,,--//4455667788pqvrrs?sZsostY99pEBBCCFFGGNNSSO:q=n:q?@@,@;ͅ@V@@@,@@,A A%AX@,S. ÛIJgv,1T@IX?ȓN.9K*!K<=@IRȓ˟BDEIJȓVXȓ5@@IX)IXȓIXȓ9O ,066778ACOQUWWȓXJ,XV(+X IT())--9HLMȓɒɒȓ &())++--IMOX ɒɒɒUXXȓ %%'')244:SXXɒɒɒ˟ɒ 3789Wȓ #(+035RTȓ?FIX˟ȓ ,9UȓKLXȓȓ(()2>>IRȓ˟ȓ˟ABOȓ$%&)2TVȓȓ˟ȓIIKMPQWXȓȓȓȓ9CDHKMNOȓȓȓ"'*/9?AGIXBIX;@@FFIX@HHXXȓ/9?AGIOQW!')/179XȓHH* ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}ɒɒɒ˟ɒ  |0 @ 00 07=0vK BBCCFFGGNNSSOȓO %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQix#z;< <~~5^.5^C|0 ,Mh##0;u ))**++,,--//4455667788v:B, !!""#'((),--../12234668899::;;<<==>>?DHHIWXX5^;6555^:5^66!5^605^6?6N6]6l65^665^5^6&(HHIXOO")BEJKVWXOO"''*3FXOOOSTXOȓ3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  & - . -   j +x  "] 2e6gI`0IS;RuCHIITUVVȓOO %%&&'(12==CGHHUUXXȓȓɒɒȓ O ""--9=?HJJXX ɒO ȓȓ #,..26;;==??AACFHQRRUXOO!-2BCOOBODWȓ"/279;=@FJM˟ȓȓȓȓȓ&(()2369Xȓȓ˟ȓ &&)SUX!#&)/11369X!#&)IKNQW!/1X)+.1X368ȓ(9XNQVXEHX39XCGQ*+.8JKMȓȓ*+,9EGIKLȓȓMXȓ,669Bȓȓ˟$()29Xȓ˟ ABBCCIXȓȓ79DITȓȓ(˟)2˟/04ȓ.79UXXȓȓȓ")2IX˟˟ȓ'ȓLMXȓȓ%)2DLȓ˟ȓ9:FGHIRSXȓȓ˟>?Lȓ<=Pȓ"&()23V˟˟!)SVX )+-ABEFFGLMMNOPRSSȓȓȓȓȓ.169X!&)02244668VMOUWW%),/49EKMOU ./2334<==>@AABFȓȓȓȓ1249CIXȓ "')*189Xȓȓ"#XȓRSUVVWXȓȓȓ())*01:;>@@AABBCCIIKKMMNNOOTTUUVVTT%TFTaTvTTTTTTUUUQU`?UuUU?UU+F[j))**?SDDEEVVWWXX?>???KK?vUUVV?R?g""AABBCC>>>? ?"?7 ##$$,,<<>>>M>t>>>>>> ((9H?XWTX9YZZ[]^^__`bccdfgghhiijjkkllmmnnooppqqrrssttuuvvwyzz{{||}}~F]t"KnTq R #$89BCCDDEFGHIIJX=n:q?@FGHIRSUVWXX=n:q=n:q=n:q=n?IJJKX=n:q=n:q"#CDLMNORSSTX>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX+H++9o++,/,,-L--.-.l.//e/00@001ͅ1ͅ11$1E1fͅ1!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXͅ|&&/@,&n&&'1'X'm''@,'''((<ͅ(i&](HF(ͅ1(ͅ(ͅ))#)J)w))))@,ͅ@,*4*[** *++,,-HIKLLMMNNOOPPQQRX}ͅ"ͅͅ@,3fͅ !#$$%%&&'X ͅ   @,8ͅM&hͅXͅ*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX@,  @,  H @,  _     ( I d  ͅ   K@, f@,X@,67788@, W rDEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXͅ}@,1Fa@, -N !X~şAşŮA89XA A X HIX A7 !"##$$%%&&''(()*++,,--..//00145566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKKO0KpAKA`AK`K`L3LN0L{LLLMA0MbMwMAMNN1NFNmANAaO O'axOcOxOA0OOaAaaPAbb)P7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXYVYqYYZZCZZZ[!D[<[c[A\A\VY \A\\Y ] ]7G]XA]AG_Gt]]H%^*^i^^A)A^I?_#A_P__A`1`R`JA &''(())**+-../VWWXX0A00AQ ())**+X0Y Y5A()1223XA0A89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0A)A>AeXQX~AAA0A0XXX HIIJJKKLXAA0!XATUUVVWXAWXA !""#())**++,,--../23344556677889@AABBCCDTUUVXAWW1AW^A00 ;nAWyWWAyA"##$$%+,,-7889;<<==>>?PQQRRSSTXUߣVAV2AVYVzAVAl0V0VAbUA  '(()GHHIXA3ZAoA˄AHIXA"#()BCHIXAA"#XASTXA HIRSXA˟A; YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  # # #  #  T  $P $$$ $ 8[%%Y%% &:&&&'&'y(J){)I*]"v"I++;+u))**++,,--..//023344556677889X2+3l677&7G7788s8X(X:q ͵9XWWXWHW $$&&AADDMMSSTTVVWWF55566%646C6R6a' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVV}ؒس "=RapًپYY2Mh}7))**YhDDEEVVWWXX 4/DKKUUVV""AABBCCДЯо ##$$,,<<>>%4CRRap((TXW!14:<=?CWWWWW((WIOWGGWEHW)/W#W>BFXWW$CFWWWWOTXWWENNWW48:HWWW !X0QAQ`A89XA˟A˟X˟HIX˟A7 !"##$$%%&&''(()*++,,--..//00145566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKKO0KpAKAKAKKKL L3LN0L{LLLMA0MbMwMAMNN1NFNmANANO O'O<OcOxOA0OOOAOP,PAPhPP7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXBBCCHCCCDDSDDDEEAEFBF?AFrFBFFGGAGDAG_GtGGH%HFHHHA)AII?IfAIIJ/AJtJJJA())**+X0BBA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0A)A>AeAzAAAA0A0B B1BX HIIJJKKLXAA0!@ATUUVVWXA@@A !""#())**++,,--../23344556677889@AABBCCDTUUVXA?@ A@6A00 ;nA@Q@l@AyA"##$$%+,,-7889;<<==>>?PQQRRSSTX:ߣ:cA:~A::A:Al0;0;#AbUA  '(()GHHIXA3ZAjA˄ASTXA˟8 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  ,! ,! ,!  T  - $ -]- - 8..C.~./ /G////0202"2I3"v"I34:;4uFIXWWW679<WWIMW((*XWW (+WW==IJWWIXW .WWQXWWIILMXXWWWWISVVWWW&&WW@MWWLLWWLXWW"%'(WWWEPWWWWW8CWTUWXWWW !$&00;>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKKO0KpAKAAKKL3LN0L{LLLMA0MbMwMAMNN1NFNmANAO O'nOcOxOA0OOAPA P7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXX0 Mn0@gD|A0i0A0A)G,AKpAG_GtSH%AeA)A@I?gAAWrJA)**+X0 A89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0A)A>AeoMbAAA0A0 HIIJJKKLXAA0!BATUUVVWXAA !""#())**++,,--../23344556677889@AABBCCDTUUVXAAA00 ;nA %FAyA"##$$%+,,-7889;<<==>>?PQQRRSSTXXߣ߸AA0AKAl00AbUA  '(()GHHIXA3ZACA˄ASTXA  !1234:;;<=>>?CDHIXAAAAAFGXA'(()XAAEFHIVWXAA"#&''(X˟AA()GHXAAHIRSX˟A()HIRSXA˟A 89?@@ADEEFGHHIWXXAAAAA()/0XAA$%()23XA˟A899:;<<==>?@@AABKLLMPQQRRSSTTUXAAAAAAAAA( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXXAAAAAAAAAAAAAAAAAAAA "##$459:<==>BCCDTUXAAAAA=>BCEFXAA$%BCFGXAAAXAA-../XA566789:;;<=>?@ABEFFGRSSTTUUVXAAAAAAAXA  #$%&-../5667RSSTWXXAAAAAA "#)**+XAAA>?@AXA3445STTUXAAA-../MNNOXAA'(()GHHIXAA!""#ABBCXAA$%&'XAA˟OPSTXAEFMNNOXAA34899:HIXAAAA78=>CDXAAFGHIXA XAX{A89;>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX5b.UL'N]~&&5566778899;;==AABBCCDDEEFFGGHHIILLPP"=Lav5 !6KZiLLLNNPP}^ $$%%&&,AP_n22334499;;<<==>>??@@AABBCCDDHH 9HWl EEQQRRTTUUVVWWXX%4O^m| ))**,,//334455667788$iVk=99 LL[9X{{ $$&&AADDMMSSTTVVWWw' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVVYn.=Lg55$3Nc~8Gh))**5DDDEEVVWWXX XXKKUUVV`u""AABBCC 0E ##$$,,<<>>[((LTX{!14:<=?C{{{{{(({IO{GG{EH{)/{#{>BFX{{$CF{{{{OTX{{ENN{{48:H{{{FIX{{{9;..=@679<{{ILNTVWIM{((*X{{ (+{{==IJ{{IX{ .{{QX{{IILMXX{{{{ISVV{{{&&{{@M{{LL{{LX{{"%'({{{EPWW{{{8C{TUWX{{{ !$&00;?{=@{DE{VX{){{77{(9HLM{{&(XX{XX?X678{RT{HKMV{{78{IJ{$$<@EE{{{{{MX{{9JXX{{{?F{ ,{LX{{>>{{BO{%&TV{{{IIKMPQWX{{{{DHNO{{{>?DIWXX5^5m55;6555^\5^66!5^605^6?6N6]6l65^665^5^6STXO{CHIIJNVV{OO%%&&'(CGHHUUXX{{{O""--9=?HO{{DW{/279;=@FJM{{{{{&((36{{{68{+.KM{{+,KL{{MX{,66{{$({BB{{9DIT{{04{.79UXX{{{'{MX{{DL{{:F{{?L{=P{)+-AFFMMPR{{{{{/24<>@BF{{{{24{)*18{{#X{SUWX{{{(*0;<{{{UUWX{{{ !$&00;>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXX>B_AtAA"=BjABQfA 5\A}A+RgABA0Wx7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXX1p B u    qA  t .A a t    A 3A N c    5 t   A.UAAcA())**+XBtA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXAB !H]ABAB;WXXA HIIJJKKLX(A=XABATUUVVWXAA !""#())**++,,--../23344556677889@AABBCCDTUUVXAAFABa|KB~AAhAA"##$$%+,,-7889;<<==>>?PQQRRSSTX"7ARyAAABQBrA A  '(()GHHIXA'NAAxASTXA  !1234:;;<=>>?CDHIXAAAAA LFGX LA'(()XAAEFHIOPVWX LA LA"#&''(XȓA LA()FGGHXA LADEHIRSX LȓA()DEHIRSXA LȓA 89?@@ADEEFGHHIWXXA LA LA LA LAX L()/0X LAA#$$%()23X L LAȓA899:;<<==>?@@AABKLLMPQQRRSSTTUX LA LA LA LA LA LA LA LA LA( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXXA LA LA LA LA LA LA LA LA LA LA LA LA LA LA LA LA LA LA LA "##$459:<==>BCCDTUX LA LA LA LA LA) ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}} E E˟ E  U |0 B   0 0 0 E l   0Y2Y 4$ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}[ |0 | 00 0760] i A3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~    T   $G^  8[$_ Fi !^I!"v"I"#-;#uCCFFNNPPSS L E/1OQX07XHIMOPSVXX L !#%%':?@ACFGHIRSUXX L L L L˟(())**+HIX L L L#&X L>?IJJ L"#CDLMNSSVV˟ L L!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX///0 00F0y011Z112#2h223%3^334'4Z44455#585M5550!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX---L0:g-s 0-B-----.$.B,;.].r...../ /57X/J0B0++,,IKLLMMNNOOPPQQ(l(i(W0(,)h)#(B(]0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX00&;&\&wl0{&&&'':'U'p''''Fs0(!0X0677880EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX%<Yt0t%u%0%%g%& ))**++,,--//4455667788BYv6QfP99 BB39X L LH L. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX#Y#0######$$$10$Lez0I^m$g$$3H0Wf$$$%%! / !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWW"Cp'B  # > Y t      !1!R!g!!!""$"?"Z"""##5#J &''))**+-..WWXX0G0V0et())**0,)12209@AABBCCDDEEFFGGRRUUVVWWXX0!<Kf{00IIJJKK0UUVV""))**++,,--../2334455667788AABBCCUU0  Yn0 (C^s##$$,,889;<<==>>QQRRSS 4I^y00*((HHwIX")BIX"TX LIR˟!14:<=?CIX L L L L LF(( LEIOPV L"''˟)FGG LDEHIR L˟)DEHIR L˟9?ADFGIW)/ L#$$)2 L˟ 8:;==@@BKMPRRTT ""$$&(*+--0022446688:;==@CEKMPRUWW"$4:<>BDT>BFX L L$CF L L L L-/X 578;;>?BEGRTTVXX #&-/57RTW#)+X>AX35SUX-/MOX')GIX!#ACX$'X˟OTX L LENN L L48:H L L L7>CFIX L L LCIU!)2679< L LQ79BIX˟W")FIM˟ LHIO L)2@ACX L L˟"#')*,0119B L L L˟9KLO L)+LMSWX L L L L)2 L˟II$&?ASUVXX&)6SMVV L59X)99 L8FX#)NOS L69X!(*.69BIX˟ %(),.02NQSXX L L L L L "=>? L<=@IR L˟BDEIJ LVX L)IX LIX L ,066778ACOQUWW L(,,9HLM L E L &(++..IMOX  E EUXX L '')233:SXX E E˟ E 789W L #(+035RT LGHKMVXX L L6789X LHIJ L  #$$%;<@EE L L L L LLMX L L)29JKPTTVWXX L˟ L L"#>?FIX˟ L ,9U LKLX L L(()2>>IR L˟ L˟ABO L$%&)2TV L L˟ LIIKMPQWX L L L L9CDHKMNO L L L;>?DHHIWXX5^;6555^,\5^66!5^605^6?6N6]6l65^665^5^6STXO LCHIITUVV LOO %%&&'(12==@@CGHHUUXX L)J L E E E L O ""--9=?HJJXX O  L LDW L"/279;=@FJM˟ L L L L L&(()2369X L L˟ L368 L*+.8JKM L L*+,9EGIKL L LMX L,669B L L˟$()29X L˟ ABBCCIX L L79DIT L L/04 L.79UXX L L L")2IX˟˟ L' LLMX L L%)2DL L˟ L9:FGHIRSX L L˟>?L L<=P L )+-ABEFFGLMMNOPRSS L L L L L ./2334<==>@AABF L L L L1249CIX L "')*189X L L"#X LRSUVVWX L L L())*01:;?W=@WDEWVXW)WW77W(9HWWXXW78WRTWHKMVWWIJW$$<@EEWWWWWMXWW9JXXWWW?FW ,WLXWW>>WWBOW%&TVWWWIIKMPQWXWWWWDHNOWWW>?CDHIX˟A˟A˟A˟A˟A'(()XA˟AEFHIOPVWXA˟A()FGGHXA˟ADERSX˟A()DERSXA˟A()/0XA˟A#$$%()23X˟A˟A/24<>@BFWWWW24W)*18WW#XWSUWXWWW(*0;<WWWUUWXWWW !$&00;BFX99$CF9999OTX99ENN9948:H999FIX999679<99IM9((*X99 (+99==IJ99IX9=>BCEFXA˟A˟$%BCFGX˟A˟A˟AXA˟AOPSTX˟A˟EFMNNOX˟A˟A34899:HIXA˟A˟A˟AFGHIX˟A˟ X˟A !"()23567889<=XAA˟A˟AQRXA7889BCHIXA˟AWXXA"#()FGHIMNX˟AA˟AHIOPX˟A()23;HIJKXAA˟A˟AHIX˟ ./X˟˟APQX˟˟  >?IJKLMNNOWXX˟A˟˟A˟HISTUVVWX˟˟A˟A %&&'()ABHIRSXA˟A˟AA˟A?@MNNOX˟˟A˟  !()KLLMNOOPXA˟A˟AAKLX˟˟ !"%&&'23344556X˟A˟A˟AA*++,DEPQVWWXXA˟A˟X˟A  !!""#&''(6778ABHIXAAAAA78CDHIRSX˟A˟A%&'()*+,ABBCIJJKLMMNRSSTUVVWX˟AAAAAAA˟˟ !"#$&'())*/00156:;<=>?EFHIMNX˟A˟A˟AA˟A˟A˟A˟AMNX˟  #$()236778:;X˟A˟A˟A !()23X˟AA˟AGHNOPQX˟A˟014567X˟A˟A()23X˟AA˟ACDPQQRX˟A"#X˟A56DEHIRSXA˟A˟ADESTX˟A89XA89BCWXX˟A !""#$%,--./001HINOOPQRSTWXXAAAA˟A˟A˟()23X˟˟A˟A89@ABCXAA )*01239::;;<<==>X˟A˟A˟A#$KLRSSTWXX˟˟˟A !())*45XA˟A˟"#235667HIX˟AA!""#GHOPPQXA˟A˟()23JKXA˟A()*+@AABOPXA˟A˟A  !"##$IJOPRSSTTUVWWXXAA˟A˟A˟A˟  !()2389>??@ABBCX˟˟A˟AAA "#'(()*++,011289BCX˟A˟A˟A˟A89KLOPXA˟A )**+LMSTVWX˟˟A˟A˟()23X˟A˟AHIIJXAA $%%&?@@ASTTUVWWXXAAAA&'()67XAASTXAMNXAUVVWXA˟A5689XA)*899:XA˟A89EFXA#$()NOSTXA˟A6789XA !())*./XAAA6789BCHIXA˟A,-01TUXAA@AHIXA<=HISTTUXAA#$$%+,,-.//0:;;?@XA˟ANOXA./89KLXAA*+XA!"XAKLXA<=@AHIRSX˟A˟ABCCDEFHIJKXA˟AAUVXA˟56?@@AHIXAA)*HIX˟AHIX˟A89OPXAA +,01566778ABBCOPPQUVVWWXXAA˟AAAAXAAJKXA+,XAVWXA()XA()*+XA !HITUXAA ())*,--.89HIKLMNX˟SnASnA˟A A %&())**++,,--.HIMNNOXA SnASnASnAAUVWXXA˟ !$%%&&''(()2334459:STWXXASnASnASnA˟ASnAA 34>?XAA{6789WXX{˟A  !"#()*+012356QRTUXAAAAA˟AZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}˟|`|o|~|||||}}/}J}Y}h}~L~- .99QX99IILMXX9999ISVV999&&99@M99LL99LX99"%'(999EPWW9998C9TUWX999 !$&00;>?CDHIX A A A A A'(()XA AEFHIOPVWXA A()FGGHXA ADEHIRSX ˟A()DEHIRSXA ˟A()/0XA A#$$%()23X A˟A=>BCEFXA A $%BCFGX A A AXA AOPSTX A EFMNNOX A A34899:HIXA A A AFGHIX A  X A !"()23567889<=XAA A A"#()FGHIMNX˟AA AHIOPX A#$'(())*XA   !'(+,89X A A 89:;;<<==>HIJKXAA A AHIX  ./X  APQX   >?HIIJKLMNNOWXX A˟  A HISTUVVWX  A A %&&'()ABHIRSXA A AA˟A?@MNNOX  A˟  !()KLLMNOOPXA A AAKLX  !"%&&'()23344556X A A ˟AA*++,DEPQVWWXXA A X A78CDHIRSX A˟A%&'()*+,ABBCIJJKLMMNRSSTUVVWX AAAAAAA   !"#$&'())*/00156:;<=>?EFHIMNX A A AA A A A AMNX  #$()236778:;X A˟A A !()23X AA˟AGHNOPQX A 014567X A A()23X AA˟ACDPQQRX A56DEHIRSXA A˟ADESTX A !""#$%,--./001HINOOPQRSTWXXAAAA A A ()23X  A˟A )*01239::;;<<==>X A A A#$KLRSSTWXX   A !())*45XA A "#235667HIX AA!""#GHOPPQXA A ()*+@AABOPXA A A  !"##$IJOPRSSTTUVWWXXAA A A A  !()2389>??@ABBCX  A˟AAA "#'(()*++,011289BCX A A A˟A89KLOPXA A )**+LMSTVWX  A A ()23X A˟AUVVWXA A)*899:XA A#$()NOSTXA A $%(),--.0112NOPQSTWXX A A AAA A  !!"=>?@XA A<=@AHIRSX A˟ABCCDEFHIJKXA AAUVXA )*HIX AHIX A +,01566778ABBCOPPQUVVWWXXAA AAAA()89HIKLMNX A A A%&()HIMNNOXA AAUVWXXA ()239:STWXXA˟AA 6789WXX{ A  !"#()*+012356QRTUXAAAAA A%&XA()VWXAA%&()89BCDEXA˟AGHKLLMVWWXX A A6789X HIJKX A !XA #$()*++,,--.23JKXAAAA  #$$%;<@ADEEFX    A ALMXALMX  ()2389JKPQSTTUUVWXX A˟A AA "#>?FGHIX˟ A ,-89UVX AAKLX  '(()23=>>?HIRSX A˟A A˟AABOPX A $%&'()23STVWX  A˟A A HIIJJKMNOPQRVWXA A A A 89CDHIJKMNOPXA A A A  !"'()*/089?@@AGHHIXAAAAAABCHIXA;>?HIIJJKWXX A A A AA()56XAA()IJXA A !"#,--../1267<==>>??@@AABBCFGGHRSTUXAAAAAAAAAAA"#&''(89XAAANOXABCXA=>CDGHJKLMXA A>??@@AEFFGHIXAAA@AGHHIWXXAA /089?@@AGHHIOPPQWXXAAAAA  !'(()/0017889XAAAA GHHIXAACDWXXA A "#./23679::;=>?@FGIJMNX˟A A A A A A &''(()236789XA A ˟ A  !%&&'()STTUXAAAA !""#&'()/00112236789XAAAAA !""#&'()IJJKNOPQWXXAAAAA !/001XAAA)**+./01XAA345689XA A()89XANOPQVWXAAXAEFGHXA3489XAACDFGQRXAA*+./78JKMNX A A *+,-89EFFGIJJKLMX AAA ALMXA ,-566789BCX A A˟A#$()2389XA ˟A ABBCCDHIX  A7889DEHITUXA A A()XA˟A()23XA˟A/045X A-.7889UVWXXA A A "#()23HIX˟A˟A '(X ALMX  %&()23CDLMX A˟A A9:FGHIRSX  ˟>?LMX A<=PQX A"#%&()23VWX˟A˟A!"()STUVXAA ()+,,-ABEFFGLMMNOPRSSTXA A    A./016789XAA !&'()0112233445566778VWXAAAAAAAMNNOUVVWWXXAAA%&(),-./4589EFJKMNNOUVXAAAAAAAA ./2334<==>@AABFGX    A124589CDHIX AA  !!"'(()*+0189XAA A "#X RSUVVWX   ())*01:;<=>?HIIJX   A˟A%&'()*+,ABBCIJJKKLNORSTUUVVWX AAAAAAA   !"#$&''(/001456778:;<=>?HIJKTUUVVWWXX A A A AA A˟AA A#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXA AAAAAAAA A  !"#$&')**+12566778>?HIJKMNNOX A A A AAA˟  A&''(*++,ABBCIJJKLMMNRSTUUVVWXA AAAAAAA   "##$&'())*89:;<=>?HIQRRSX A A AA A˟A %&'()*+,ABBCIJJKLMMNRSTUUVVWXA AAAAAAA   !"#$&'-.01456778:;<=>?HIIJJKX A A A AA A˟AA#$&')**+./123445566789;<=>@ACDFGRSVWXA AAAAAAAAAA !""#&'())*/001>?HIX A A AA A˟A %&&')**+ABBCRSTUUVVWX AAAA  !""#&'-./00134566789:;<=>?HIX A A A AAA A˟A%&&')**+ABBCLMMNRSTUUVVWX AAAAAA  !""#&'-./0567889:;<=>?HIIJKLLMX A A A AA A˟A A %&&')**+STUVVWX AA  !""#&''(,-/00178:;<=>?HIRSX A A A A A˟A /023JKKLTUUVVWXA AAAAA "##$'(-..//00189>?HIJKLMXA A A A A˟A AIJJKLMSTXA A A '(()23XA A˟AIJJKLMUVXA A A !'(()23XA A˟A012389BCMNNOOPPQQRRSVWXA A˟A A A A  !!"EFIJXAA  !%&0112UVX A  A A XA AFFSnXSnHSn"Sn*VXXSnSn SnSnSn)355SnSnSn$89BDDIISn˟˟Sn/68=@ACFIRSnSnSnSn˟((**IXSnSnSn#Sn?ISn"DLVV˟SnSn!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXw"U9f,AV&&5566778899;;==>>@@AABBCCDDEEFFGGHHIIJJLLPP$?Ti,;~,;P|oLLNNPPdFU1122334499;;<<==>>??@@AABBCCDDHH/Dez+EEQQTTUUWWXX; ))**,,//4455667788G0o99 2|o|o|~9XSnSn $$&&++AADDMMSSTTVVWW 3BWfu* !!""$$%%&&))**++,,//00112233445599<<==>>@@AABBCCIIJJKKMMNNOOTTUUVVs*K`oO&O;P _t;(=^y))**O^BBDDEEFFVVWWXX;%:KKUUVV""88AABBCC 5P_n ##$$,,<<>>  ((HHTXSn!14:<=?CSnSnSnSnSn((SnIOSnGGSnEHIRSn˟)/Sn#)2Sn˟>BFXSnSn$CFSnSnSnSn'X˟OTXSnSnENNSnSn48:HSnSnSnFIXSnSnSn679<SnSn9B˟"IM˟Sn((*XSnSn (+SnSn==IJSnSnIXSn .SnSnQXSnSn?HIILMXXSn˟SnSnSnISVVSnSnSn&&IRSnSn˟@MOXSnSn˟LLSnSnLXSnSn"%'()2SnSnSn˟EPWWSnSnSn8CIRSn˟TUWXSnSnSn !$&00;?Sn=@IRSn˟DESnVXSn)SnSn77Sn(9HSnSnXXSn78SnRTSnHKMVSnSnIJSn$$<@EESnSnSnSnSnMXSnSn)29JXXSn˟SnSn"?F˟Sn ,SnLXSnSn)2>>IRSn˟Sn˟BOSn%&)2TVSnSn˟SnIIKMPQWXSnSnSnSnDHNOSnSnSn>?DHHIWXX5^5m55;6555^ 5^66!5^605^6?6N6]6l65^665^5^6STXOSnCHIIVVSnOO%%&&'(CGUUSnSnSnO""9=?HOSnSnDWSn"/279;=@FJM˟SnSnSnSnSn&(()236SnSn˟Sn68Sn+.KMSnSn+,KLSnSnMXSn,669BSnSn˟$()2Sn˟BBSnSn9DITSnSn04Sn.79UXXSnSnSn")2IX˟˟Sn'SnMXSnSn)2DLSn˟Sn:FIRSnSn˟?LSn=PSn")2˟˟)+-AFFMMPRSnSnSnSnSn/24<>@BFSnSnSnSn24Sn)*18SnSn#XSnSUWXSnSnSn(*0;?9GHKLLMVWWXX˟A˟A6789X˟HIJKX˟A  #$$%;<@ADEEFX˟˟˟˟A˟ALMX˟˟ ()2389JKPQSTTUUVWXX˟A˟A˟AA˟"#>?FGHIX˟˟A ,-89UVX˟AAKLX˟˟ '(()23=>>?HIRSX˟A˟A˟A˟AABOPX˟A $%&'()23STVWX˟˟A˟A˟A HIIJJKMNOPQRVWXA˟A˟A˟A˟ 89CDHIJKMNOPXA˟A˟A˟A;@CGHHIWXXA˟ASnASnA˟ A ,--.89=>>?HIIJJKWXX ASnA A˟A˟AA()IJXA˟A=>CDGHJKLMXA˟A@AGHHIWXXAA˟  !'(()/0017889XAAAA˟CDWXXA˟A "#./23679::;=>?@FGIJMNX˟A˟A˟A˟A˟A˟A&''(6789XA˟A˟A345689XA˟A*+./78JKMNX˟A˟A *+,-89EFFGIJJKLMX˟AAA˟ALMXA˟,-566789BCX˟A˟A˟A#$2389XA˟A ABBCCDHIX˟˟A7889DEHITUXA˟A˟A/045X˟A-.7889UVWXXA˟A˟A˟"#()23HIX˟A˟A˟'(X˟ALMX˟˟%&()23CDLMX˟A˟A˟A9:FGHIRSX˟˟˟>?LMX˟A<=PQX˟A ()+,,-ABEFFGLMMNOPRSSTXA˟A˟˟˟˟A ./2334<==>@AABFGX˟˟˟˟A124589CDHIX˟AA  !!"'(()*+0189XAA˟A˟"#X˟RSUVVWX˟˟˟ ())*01:;<=>?HIIJX˟˟˟A˟A%&'()*+,ABBCIJJKKLNORSTUUVVWX˟AAAAAAA˟˟ !"#$&''(/001456778:;<=>?HIJKTUUVVWWXX˟A˟A˟A˟AA˟A˟AA˟A#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXA˟AAAAAAAA˟A˟ !"#$&')**+12566778>?JKMNNOX˟A˟A˟A˟AAA˟˟A&''(*++,ABBCIJJKLMMNRSTUUVVWXA˟AAAAAAA˟˟ "##$&'())*89:;<=>?HIQRRSX˟A˟A˟AA˟A˟A˟%&'()*+,ABBCIJJKLMMNRSTUUVVWXA˟AAAAAAA˟˟ !"#$&'-.01456778:;<=>?HIIJJKX˟A˟A˟A˟AA˟A˟AA#$&')**+./123445566789;<=>@ACDFGRSVWXA˟AAAAAAAAAA˟ !""#&'())*/001>?HIX˟A˟A˟AA˟A˟A %&&')**+ABBCRSTUUVVWX˟AAAA˟˟!""#&'-./00134566789:;<=>?HIX˟A˟A˟A˟AAA˟A˟A%&&')**+ABBCLMMNRSTUUVVWX˟AAAAAA˟˟!""#&'-./0567889:;<=>?HIIJKLLMX˟A˟A˟A˟AA˟A˟A˟A %&&')**+STUVVWX˟AA˟˟!""#&''(,-/00178:;<=>?HIRSX˟A˟A˟A˟A˟A˟A /023JKKLTUUVVWXA˟AAAAA "##$'(-..//00189>?HIJKLMXA˟A˟A˟A˟A˟A˟AIJJKLMSTXA˟A˟A '(()23XA˟A˟AIJJKLMUVXA˟A˟A !'(()23XA˟A˟A012389BCMNNOOPPQQRRSVWXA˟A˟A˟A˟A˟A˟ !!"EFIJXAA˟  !%&0112UVX˟A˟˟A˟A XA˟A"#()FGHIMNX˟AAA#$'(XA !'(89XAA89:;;<=>HIJKXAAAA./XA >?HINOWXXA˟ASTUVVWXAA %&&'()ABHIRSXAAAA˟AMNNOXA˟ !()LMNOOPXAAAA !"%&&'()23344556XAA˟AA*++,PQVWXAAXACDHIRSXA˟A%&'()*+,ABBCIJJKLMMNRSSTXAAAAAAA !"#$&'())*/00156<=>?EFHIMNXAAAAAAAA#$()2367:;XA˟AA !()23XAA˟ANOPQXA0167XAA()23XAA˟A56DEHIRSXAA˟A !""#$%,--./001NOOPQRSTXAAAAAA()23XA˟A0123:;;<=>XAAA !()XAA235667HIXAA!""#OPPQXAA()*+@AABOPXAAA  !"##$OPRSSTTUVWWXXAAAAA  !()2389>??@ABBCXA˟AAA '(()*++,1289BCXAAA˟A89OPXAA)**+STVWXAA()23XA˟AUVVWXAA)*899:XAA#$()STXAA $%,--.0112NOPQSTWXXAAAAAA !!"?@XAA@AHIRSXA˟ABCCDEFHIJKXAAAUVXA)*HIXAHIXA  +,0156ABBCOPPQUVVWWXXAAAAAA ()+,,-89HIKLMNXAAA A %&()*++,-../HIMNNOXA AAAAUVWXXA  !&''(()23349:STWXXAAA˟AA 67WXX{A  !"#()*+012356QRTUXAAAAAA$ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}} |0  00 07Xy0-Tit ;CCFFNNSSXHIMOPSVXX!#%%':?@ACFGHSUXX(())**+HIX#&X>?IJJ#CDLMNSSVV!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`͙ͺJΕ%dϩ'`бJя@gҔҩҸ $K.!""##$$%%&&''(())*12233445566778899::;;<<==AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX80:gY 0-Bnˏ˶$7Lgv̠̻̅ X!00++,,IKLLMMNNOOPPQQjƋiƬW0ƻ,h@[0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX00B]~ęl0{Į5PkņšŶFs0%0EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXYt0tø0g ))**++,,--//4455667788v#z+99 9XH. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX#Y#0##\#k#€$$10›ez0I^m°$3H0Wf :Id . !!""##$$%%&&))**++,,//001122335599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWW^y*ErG\.}.  "7v!R -Nc~M#J())**0.C9@AABBCCDDEEFFGGRRUUVVWWXX0w<00 IIJJKK0VUUVV2G""))**++,,--../2334455667788AABBCCUU0  Yn0 (##$$,,889;<<==>>QQRRSS*?T0i0~*((wTX!14:<=?CIX((EIOPV'')FGGDEH)DEH)/#$$>BFX$CF$OTXENN48:HFIX!)2679<7IX)FIMHIO@ACX"#')*,0119KLO)+LMSWXVV)99#)NOS6IX %(),.02NQSXX "=>?<=@BDEIJVX)IXIX ,066778ACOQUWW(9HIMOXUXX:S789W #(+035RT%)8CDGHKMVXX6789XHIJ  #$$%;<@EELMX9JKPTTVWXX#>?FIX ,9UKLX((>>ABO$%&TVIIKMPQWX9CDHKMNO;>?DIWXX5^;6555^'5^66!5^605^6?6N6]6l65^665^5^6")BEHIXOSTXOCHIITUVVOO%%&&'(CGUUO""9=?HJJXXO  #,..26;;==??AACFHRUXODW/279;=@FJM&((369X368*+.8JKM*+,9EGIKLMX,66$(9X ABBCCIX79DIT/04.79UXXIX'LMX%DL9:FGHSX>?L<=P&(3V )+-ABEFFGLMMNOPRSS ./2334<==>@AABF1249CIX "')*189X"#XRSUVVWX())*01:;>?HIRSXA˟AA˟A&'()23STVWXA˟AA HIIJJKMNOPQRVWXAAAA89HIJKOPXAAAACDDEFGHIRSXAA˟A BCHIIJNOSTUVXAAA{AA12345689XA{A{ $%()0123<==>?@@CGHHIWXXAAAA A ,--.89=>>?HIIJJKWXX A AAAA()IJXAA=>CDLMXAA@AGHHIWXXAA  !'(()/0017889XAAAACDWXXAA "#./23679::;=>?@FGIJMNX˟AAAAAA &''(()236789XAA˟A345689XAA./78MNXAA ,-89EFFGIJJKLMXAAAALMXA,-566789BCXAA˟A#$()2389XA˟ACDHIXA7889DEHITUXAAA45XA-.7889UVWXXAAA"#()23HIX˟A˟A'(XA%&()23CDLMXA˟AAHIRSX˟PQXA()+,,-STXAAA4589CDHIXAA !!"'(()*+01XAAA<=>?HIIJXA˟A%&'()*+,ABBCIJJKKLNORSTUXAAAAAAA !"#$'(/001456778<=>?HIJKTUUVVWWXXAAAAAA˟AAA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAAAAAAAAAA !"#$&')**+12566778>?HINOXAAAAAA˟A&''(*++,ABBCIJJKLMMNRSTUXAAAAAAAA "##$&'())*89<=>?HIQRXAAAAA˟A%&'()*+,ABBCIJJKLMMNRSTUXAAAAAAAA !"#$&'-.01456778<=>?HIIJJKXAAAAAA˟AA#$&')**+./123445566789;<=>@ACDFGRSVWXAAAAAAAAAAA !""#&'())*/001>?HIXAAAAA˟A %&&')**+ABBCRSTUXAAAA!""#&'-./00134566789<=>?HIXAAAAAAA˟A%&&')**+ABBCLMMNRSTUXAAAAAA!""#&'-./0567889<=>?HIIJLMXAAAAAA˟AA%&&')**+XAA!""#'(,-0178<=>?HIRSXAAAAA˟A /023JKKLTUUVVWXAAAAAA "##$'(-..//00189>?HIJKLMXAAAAA˟AAIJJKLMSTXAAA '(()23XAA˟AIJJKLMUVXAAA !'(()23XAA˟A012389BCMNNOOPPQQRRSVWXAA˟AAAA !!"EFIJXAA0112UVXAAA XAA=@9DE9VX9)99779(9H99XX9789RT9HKMV99IJ9$$<@EE99999MX999JXX999?F9 ,9LX99>>99BO9%&TV99923XAGHXAXAIJXA<=HIXA #$TUXAACCFFNNSS EX EHIMOPSVXX E"#X E!##*VXX E E )CHL E E E)3559X E E E#$8GHIIJX E E ,../68=>?@ACFGHSUXX E E E E(())**+HIX E E E#&X E>?IJJ E#CDLMNSSVV E E!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX7X3~GOv-l2GVkz.!""##$$%%&&''(())*12233445566778899::;;<<==AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX0:g 0-B!Bix$)8Sn X0|0++,,IKLLMMNNOOPPQQ "iCW0R,sh0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX00B!<l0{Q)DYFs00EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXaYt0t0g ))**++,,--//4455667788Ofv}  99  +||@9X E EH E. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX#Y#0##S#b#w$$10›ez0I^m$3H0Wf+F . !!""##$$%%&&))**++,,//001122335599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWKf)h}OO. "C!R9NZuD#J())**0Od9@AABBCCDDEEFFGGRRUUVVWWXX0w<00.IIJJKK0UUVV""))**++,,--../2334455667788AABBCCUU/0  Yn0 (>Sh##$$,,889;<<==>>QQRRSS9fu00*((w*TX E!14:<=?CIX E E E E E(( EEIOPV E)FGG EDEH E)DEH E)/ E#$$ E>BFX E E$CF E E E EOTX E EENN E E48:H E E EFIX E E E!)2679< E E)FIM EHIO E#(())*X E E (+,8 E E9:<<==IJ E EHIX E . E EPQX E EIIJKLMNNXX E E E EHISVV E E E&&)A E E?@M E E )KLLOO E EKLX E E"%'(3355 E E E*,DEPWWXX E E E78C E %(),ACIKLNRTUVVWX E E E  !$&))006:;@ACX E E"#')*,011 E E E9KLO E)+LMSWX E E E E EVV E)99 E#)NOS E %(),.02NQSXX E E E E E "=>? E<=@ EBDEIJ EVX E)IX EIX E ,066778ACOQUWW E(9H E EUXX E789W E #(+035RT EGHKMVXX E E6789X EHIJ E  #$$%;<@EE E E E E ELMX E E9JKPTTVWXX E E E#>?FIX E ,9U EKLX E E((>> E EABO E$%&TV E E EIIKMPQWX E E E E9CDHKMNO E E E;?L E<=P E )+-ABEFFGLMMNOPRSS E E E E E ./2334<==>@AABF E E E E1249CIX E "')*189X E E"#X ERSUVVWX E E E())*01:;BCEFXAA$%BCFGXAAAXAA-../X LA L566789:;;<=>?@ABEFFGRSSTTUUVX LA LA LA LA LA LA LA LX LA L  #$%&-../5667RSSTWXX LA LA LA LA LA LA "#)**+X LA LA LA L>?@AX LA L3445STTUX LA LA LA L-../MNNOX LA LA L'(()GHHIX LA LA L!""#ABBCX LA LA L$%&'X LA LAȓOPSTXAEFMNNOXAA34899:HIXAAAA78=>CDX LA LAFGHIXA XAXA89;HIJKXA LA LAAHIX L ./X LAPQX L  >?HIIJKLMNNOWXXAȓ L LAHISTUVVWX LAA %&&'()ABHIRSXAAA LAȓA?@MNNOX LAȓ  !()KLLMNOOPXA L LA LA LAKLX L !"%&&'()23344556X LAAȓ LA LA*++,DEPQVWWXX LA LA LX LA  !!""#&''(6778ABHIX LA LA LA LA LA L78CDHIRSX LAȓA%&'()*+,ABBCIJJKLMMNRSSTUVVWXA LA LA LA LA LA LA L !"#$&'())*/00156:;<=>?EFHIMNXAAA LAA LAAAMNX L  #$()236778:;X LAȓA LA !()23X LA LAȓAGHNOPQX LA014567XA LA()23XA LAȓACDPQQRX L LA"#XȓA56DEHIRSXAAȓADESTX LA89XA L89BCWXX LȓA L !""#$%,--./001HINOOPQRSTWXX LA LA LA LA LAA L()23X LAȓA89@ABCXA LA L )*01239::;;<<==>X LA LA LA#$KLRSSTWXX L L LA !())*45XAA L L"#235667HIX LA LA L!""#GHOPPQX LA LA()23JKX LAȓA L()*+@AABOPX LAAA  !"##$IJOPRSSTTUVWWXX LA LA LAAA  !()2389>??@ABBCX LAȓA LA LA L "#'(()*++,011289BCX LAA LAȓA89KLOPXA LA )**+LMSTVWX L LA LA()23XAȓAHIIJXA LA $%%&?@@ASTTUVWWXX LA LA LA LA L&'()67X LA LASTX LAMNX LAUVVWXAA5689X LA L)*899:X LAA89EFX LA L#$()NOSTX LA LA6789X LA L !())*./X LA LA LA6789BCHIX LAȓA L,-01TUX LA LA@AHIX LA L<=HISTTUX LA LA L#$$%+,,-.//0:;;?@X LA LANOX LA./89KLX LA LA*+X LA!"X LAKLX LA<=@AHIRSX LAȓABCCDEFHIJKX LAA LAUVXA56?@@AHIX LA LA L)*HIX LA LHIX LA L89OPX LA LA +,01566778ABBCOPPQUVVWWXX LA LA L LA LA LA LAX LA LA LJKX LA+,XA LVWX LA()XA L()*+X LA L !HITUX LA LA()89HIKLMNXAAA%&()HIMNNOXAA LA LUVWXX LA()239:STWXXAȓA LA34>?XA LA89WXX LA  !"#()*+012356QRTUXA LA LA LA LAA%&X LA()VWXA LA%&()89BCDEX LA Lȓ LAGHKLLMVWWXX LAA L6789X L LHIJKX LA !XA L #$()*++,,--.23JKX LA LA LA LA L  #$$%;<@ADEEFX L L L LAALMX LALMX L ()2389JKPQSTTUUVWXXAȓA LA LA L"#>?FGHIXȓ LA L ,-89UVX LA LAKLX L '(()23=>>?HIRSXA LȓAAȓAABOPX LA $%&'()23STVWX L LAȓAA HIIJJKMNOPQRVWXAAAA 89CDHIJKMNOPXAA LA LA  !"'()*/089?@@AGHHIXA LA LA LA LA LA LBCHIX LA L;>?HIIJJKWXXAAAA LA L()56XA LA()IJXAA !"#,--../1267<==>>??@@AABBCFGGHRSTUXA LA LA LA LA LA LA LA LA LA LA L"#&''(89XA LA LA LNOXA LBCX LA=>CDGHJKLMX LA L LA>??@@AEFFGHIX LA LA LA L@AGHHIWXX LA LA /089?@@AGHHIOPPQWXX LA LA LA LA LA  !'(()/0017889X LA LA LA LAGHHIXA LACDWXXAA "#./23679::;=>?@FGIJMNXȓAAAAAA &''(()236789XAAȓA L  !%&&'()STTUX LA LA LA LA L !""#&'()/00112236789X LA LA LA LA LA L !""#&'()IJJKNOPQWXX LA LA LA LA LA !/001X LA LA LA L)**+./01X LA LA L345689X LAA()89X LA LNOPQVWX LA LAXA LEFGHX LA L3489XA LA LCDFGQRX LA LA*+./78JKMNX LA LA *+,-89EFFGIJJKLMX LA LA LAALMXA,-566789BCXAAȓA#$()2389XAȓA L ABBCCDHIX L L LA L7889DEHITUX LAAA()XAȓA()23XAȓA/045X LA-.7889UVWXXAAA"#()23HIXȓAȓA'(XALMX L%&()23CDLMX LAȓAA9:FGHIRSX L Lȓ L>?LMX LA<=PQX LA"#%&()23VWXȓA Lȓ LA!"()STUVX LA LA L ()+,,-ABEFFGLMMNOPRSSTXAA L L L LA./016789X LA LA L !&'()0112233445566778VWX LA LA LA LA LA LA LAMNNOUVVWWXX LA LA LA%&(),-./4589EFJKMNNOUVXA LA LA LA LA LA LA LA ./2334<==>@AABFGX L L L LA124589CDHIX LA LA L  !!"'(()*+0189X LA LAA L"#X LRSUVVWX L L ())*01:;<=>?HIIJX L LAȓA L%&'()*+,ABBCIJJKKLNORSTUUVVWX LA LA LA LA LA LA LA L !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXAA LAA LA LAȓ LA LAA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAA LA LA LA LA LA LA LAA !"#$&')**+12566778>?HIJKMNNOXAAAA LA LAȓ LA&''(*++,ABBCIJJKLMMNRSTUUVVWXAA LA LA LA LA LA LA L "##$&'())*89:;<=>?HIQRRSXAAA LA LAȓA L%&'()*+,ABBCIJJKLMMNRSTUUVVWXAA LA LA LA LA LA LA L !"#$&'-.01456778:;<=>?HIIJJKXAAAA LA LAȓA LA#$&')**+./123445566789;<=>@ACDFGRSVWXA LA LA LA LA LA LA LA LA LA LA !""#&'())*/001>?HIXAAA LAAȓA %&&')**+ABBCRSTUUVVWX LA LA LA LA L!""#&'-./00134566789:;<=>?HIXAAAA LA LA LAȓA%&&')**+ABBCLMMNRSTUUVVWX LA LA LA LA LA LA L!""#&'-./0567889:;<=>?HIIJKLLMXAAAA LA LAȓA LA %&&')**+STUVVWX LA LA L L!""#&''(,-/00178:;<=>?HIRSXAA LA LA LAȓA L /023JKKLTUUVVWXAA LA LA LA LA "##$'(-..//00189>?HIJKLMX LAAAAAȓAAIJJKLMSTXAAA '(()23XAAȓAIJJKLMUVXAAA !'(()23XAAȓA012389BCMNNOOPPQQRRSVWX LAAȓAAAA !!"EFIJX LA LA  !%&0112UVXA LAA XAAIIKMPQWX9999DHNO999>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXg@,ͅͅ 'Hc@,ͅ@,wͅ%F[ͅͅ'H]~ͅ@,ͅͅ&A\7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXX(Cv3lwͅͅ4[|9ͅͅ9Z]ͅͅDqͅ1Lͅ !!""#'((),--../12234668899::;;<<==>>?DIWXX5^5m555555^55^66!5^605^6?6N6]6l65^665^5^6XO&(HHOOEJWXOO''*3FXOOO>?XOW(33HHKSUXOOOOO"XOSTXO9VOXO(OMXO.XO%(O!(38OO!(GXOO%SUXOO XOO &''(())**+-../VWWXX@,ͅ@,@,ͅ())**+X@,ͅ()1223Xͅ@,ͅ89@AABBCCDDEEFFGGHQRRSTUUVVWWXXͅ@,]rͅ@,ͅ@,,MhWXXͅ* HIIJJKKLX}xͅ}}ͅ@,}}ͅ())**++,,--../23344556677889TUUVXͅ@,{P{k{{|:@,|m|||} }0ͅ}Wͅ"##$$%+,,-7889;<<==>>?PQQRRSSTX93xhͅx}xͅxxͅxͅy"@,ya@,yvͅyz{ ͅ  !GHHIXͅ939H9o9ͅ9ͅHIX:q=n"#()BCHIX=n:q=n:q=n"#X=n:q>?X:q9HIRSX:q>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXS%SFSUSjSySSSSTST6STcTTTTSUL UGUtUUUUUVV1V@Va&&5566778899;;==>>@@AABBCCDDEEFFGGHHIIJJLLPPQBQQQ~QQQQQRRR,,;RARPRkRRRRRR;RCLLNNPPPQQQ$O>Q3PP1122334499;;<<==>>??@@AABBCCDDHHOkOMOOOOOPPP%PFPUPvPPEEQQTTUUWWXXOO)O>;OMO\ ))**,,//4455667788FG7H6HKH~HHHI99F FCCC#9Xɒɒ $$&&++AADDMMSSTTVVWWNfNuNNNNNNNO * !!""$$%%&&))**++,,//00112233445599<<==>>@@AABBCCIIJJKKMMNNOOTTUUVVJKK6KQKlKKKKKKL L&LYLhJLLLJLL LLM M%M@M[MvMM;MMMNN!N0NQ))**JJBBDDEEFFVVWWXXJIn;JJJKKJmUUVVJIJ^""88AABBCCIII_JJJ. ##$$,,<<>>I8I_In I}IIII((HHI)TXɒ!14:<=?Cɒɒɒɒɒ((ɒIOɒGGɒEHIRɒ˟)/ɒ#)2ɒ˟>BFXɒɒ$CFɒɒɒɒOTXɒɒENNɒɒ48:HɒɒɒFIXɒɒɒ679<ɒɒ"IM˟ɒ((*Xɒɒ (+ɒɒ==IJɒɒIXɒ .ɒɒQXɒɒ?HIILMXXɒ˟ɒɒɒISVVɒɒɒ&&IRɒɒ˟@MOXɒɒ˟LLɒɒLXɒɒ"%'()2ɒɒɒ˟EPWWɒɒɒ8CIRɒ˟TUWXɒɒɒ !$&00;?ɒ=@IRɒ˟DEɒVXɒ)ɒɒ77ɒ(9HɒɒXXɒ78ɒRTɒHKMVɒɒIJɒ$$<@EEɒɒɒɒɒMXɒɒ)29JXXɒ˟ɒɒ"?F˟ɒ ,ɒLXɒɒ)2>>IRɒ˟ɒ˟BOɒ%&)2TVɒɒ˟ɒIIKMPQWXɒɒɒɒDHNOɒɒɒ@BFɒɒɒɒ24ɒ)*18ɒɒ#XɒSUWXɒɒɒ(*0;>?CDHIXOAOAOAOAOA L'(()XAOAEFHIOPVWX LAO LA()FGGHXA LOADEHIRSX LOȓA()DEHIRSXA LOȓA()/0X LAOA#$$%()23X LO LAȓA=>BCEFXAOAO$%BCFGXOAOAOAXAOAOPSTXOAOEFMNNOXOAOA34899:HIXAOAOAOAFGHIXOAO XOA !"()23567889<=X LA LAOAOAHILMMNTUUVWXXA{A{A{A"#()FGHIMNXȓA LAOAHIOPX LOA#$'(())*X LAO LO !'(+,89XOAO LA 89:;;<<==>HIJKXA LA LOAOA X LAHIX LO ./XO LOA23X LAGHX LAX LAIJX LAPQXO LO  >?HIIJKLMNNOWXXOAȓO LO LAOHISTUVVWXO LOAOA %&&'()ABHIRSXAOAOA LAȓA?@MNNOXO LOAȓ  !()KLLMNOOPXA LO LA LOA LAKLXO LO !"%&&'()23344556XO LAOAOȓ LA LA*++,DEPQVWWXX LA LOAO LX LOA78CDHIRSX LOAȓA%&'()*+,ABBCIJJKLMMNRSSTUVVWXOA LA LA LA LA LA LAO LO !"#$&'())*/00156:;<=>?EFHIMNXOAOAOA LAOA LOAOAOAMNX LO  #$()236778:;XO LAȓAO LA !()23XO LA LAȓAGHNOPQX LOAO014567XOA LOA()23XOA LAȓACDPQQRX LO LA56DEHIRSXAOAȓADESTX LOA !""#$%,--./001HINOOPQRSTWXX LA LA LA LA LOAOAO L()23XO LOAȓA )*01239::;;<<==>X LOAO LA LOA#$KLRSSTWXX LO LO LOA !())*45XAOA LO L"#235667HIX LOA LA L!""#GHOPPQX LA LOAO()*+@AABOPX LAOAOA  !"##$IJOPRSSTTUVWWXX LA LA LOAOAOAO  !()2389>??@ABBCXO LOAȓA LA LA L "#'(()*++,011289BCX LOAOAO LAȓA89KLOPXA LOA )**+LMSTVWXO LO LA LOAO()23XOAȓAUVVWXAOA)*899:X LAOA#$()NOSTX LA LOA $%(),--.0112NOPQSTWXX LOAOAO LA LA LAOAO !!"=>?@X LA LOA<=@AHIRSX LOAȓABCCDEFHIJKX LAOA LAUVXAO)*HIX LOA LHIX LOA L +,01566778ABBCOPPQUVVWWXX LA LA LO LA LA LA LA()89HIKLMNXOAOAeA%&()HIMNNOXAeA LA LUVWXX LAO()239:STWXXAȓA LAe34>?XA LA{6789WXX{O LA  !"#()*+012356QRTUXA LA LA LA LAOA&ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}egbhgbij j&j5jJjYjjj&jj&jjk k.kUkvj&kkll0lKlxmAndnoooop\p; YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  # # #  #  T  \a $\\ ] 8[]/]j]^ ^Q^^__=_`aabIbt"v"Ic-c;du8 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  ,! ,! ,!  T  T $KU- UG 8.UpUVV? VVW&WIWrWXYZ>IZ"v"I[V[;\>u3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  G~ H JF H KKKLL9LPLLKMKM*MMMMNNQKNOO8O[OOPQRPIRShSIST;TuCCFFNNSSgbegbgb/1OQXgbgbgbXgb07XgbgbXeHIMOPSVXXegbgbgbgb!#%%':?@ACFGHIRSUXXgbgbeegbeegbegbgb(())**+HIXegbegbe#&Xegb>?IJJgbegb"#CDLMNSSVVegbegbgbe!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX?f{Ϣ qж@TҁҺ>ӃӶ"UjԔԩ0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXGVʃʪj&%Favˋˠj&˯6E`{̨,;Vwͤ͹ j&jJj&IdΗβ++,,IKLLMMNNOOPPQQ5DSĞ Ĺj&4[ł  $$%%&&3ToÄj&Ùîýc*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIXj&fuj&j&,kzF[ˆ©j&j&Xj&67788j&<QEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX (7j&F&Ujj& ))**++,,--//334455667788qrs5snssstt1tFtu099p pjJjJp9XeeHe. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX 2j&GVetj&.C^j&!6K`j& )D_n/ !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWD_"=p9x &APezFs ?r &''))**+-..WWXXj&j&j&&5())**j&)122j&9@AABBCCDDEEFFGGRRUUVVWWXXj&-Nj&j&]~XXIIJJKKyyyj&yzUUVVyy""))**++,,--../2334455667788AABBCCUUwwwj&wxx9xNx{j&xxxxyy#y>ySyhy##$$,,889;<<==>>QQRRSSuuuuvv)v>vYvtj&vj&vvw w((HHuWufuuuIXgb")BIXgbgbgb"gbTXeIRe!14:<=?CIXeeeeegbFgb((eEIOPVgbegb"''egb)FGGgbeDEHIRgbee)DEHIRgbee9?ADFGIWgbgbgbgb)/gbe#$$)2gbegbe 8:;==@@BKMPRRTTgbgbgbgbgbgbgbgbgb ""$$&(*+--0022446688:;==@CEKMPRUWWgbgbgbgbgbgbgbgbgbgbgbgbgbgbgbgbgbgbgb"$4:<>BDTgbgbgbgbgb>BFXee$CFeeee-/Xgbgb 578;;>?BEGRTTVXgbgbgbgbgbgbgbgbXgbgb #&-/57RTWgbgbgbgbgbgb#)+Xgbgbgbgb>AXgbgb35SUXgbgbgbgb-/MOXgbgbgb')GIXgbgbgb!#ACXgbgbgb$'XgbgbeOTXeeENNee48:Heee7>CgbgbFIXeeez%9;z%..=@z%z%CIUgbgb!)2679<gbgbee3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  = = = = >?H?w??w??@9?w@\?w@@@AAkA?wABB9B\ByBCyDE!IEF9FPIFsF;G[uDLVVAA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXCdsBi5\k1&&5566778899;;==AABBCCDDEEFFGGHHIILLPP ?Zi~0? ALLNNPP888888{822334499;;<<==>>??@@AABBCCDDHH/DSz7777888*8K8fEEQQTTWWXX ))**,,//4455667788~~ZG\ 99} ~AAB-9XAA $$&&AADDMMSSTTVVWW0?N]' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVV)DYnփֳ֘4CXg|בנׯ׾7Rgv!))**DDEEVVWWXXՁaՐեպKKlUUVVH]""AABBCC- ##$$,,<<>>+Rap((TXA!14:<=?CAAAAA((AIOAGGAEHA)/A#A>BFXAA$CFAAAAOTXAAENNAA !XBcAcrA89XAz%Az%Xz%HIXz%A7 !"##$$%%&&''(()*++,,--..//00145566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXX>cA_AtA"cOvAc:6WA,AMAh%FAc[pA*E7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXc &cY:Acc3A`{c-AA5ACjA HAA &''(())**+-../VWWXXcAc0cEAZo)**+XcA()1223XAcA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXAc :OAcAcWXXA HIIJJKKLXAAc/PATUUVVWXAA !""#())**++,,--../23344556677889@AABBCCDTUUVXAAAc,c.I|A3TAA"##$$%+,,-7889;<<==>>?PQQRRSSTXrAA/JA_AzccApcA  '(()GHHIXA-ABAWAHIXAz%"#()BCHIXz%Az%Az%"#Xz%ASTXAz%HIRSXAz%A  !1234:;;<=>>?CDHIXz%Az%Az%Az%Az%Az%FGXz%A'(()XAz%AEFHIVWXz%Az%A"#&''(Xz%Az%A()GHXAz%ARSXz%A()RSXAz%A 89?@@ADEEFGHHIWXXAz%Az%Az%Az%A()/0Xz%Az%A$%()23Xz%Az%A899:;<<==>?@@AABKLLMPQQRRSSTTUXz%Az%Az%Az%Az%Az%Az%Az%Az%A( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXXAz%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%A "##$459:<==>BCCDTUXz%Az%Az%Az%Az%A=>BCEFXAz%Az%$%BCFGXz%Az%Az%AXAz%A-../Xz%Az%566789:;;<=>?@ABEFFGRSSTTUUVXz%Az%Az%Az%Az%Az%Az%Az%Xz%Az%  #$%&-../5667RSSTWXXz%Az%Az%Az%Az%Az%A "#)**+Xz%Az%Az%Az%>?@AXz%Az%3445STTUXz%Az%Az%Az%-../MNNOXz%Az%Az%'(()GHHIXz%Az%Az%!""#ABBCXz%Az%Az%$%&'Xz%Az%Az%OPSTXz%Az%EFMNNOXz%Az%A34899:HIXAz%Az%Az%A78=>CDXz%Az%AFGHIXz%Az% Xz%AXz%A89;HIJKXAz%Az%Az%A./Xz%A23Xz%AGHXz%AXz%A()XAz%IJXz%A >?NOWXXz%Az%Az%STUVVWXz%Az%A %&&'()ABHIRSXAz%Az%Az%Az%AMNNOXz%Az% !()LMNOOPXAz%Az%Az%A !"%&&'344556Xz%Az%Az%Az%A*++,PQVWXz%Az%Az%Xz%A  !!""#&''(6778ABHIXz%Az%Az%Az%Az%Az%CDHIRSXz%Az%A%&'()*+,ABBCIJJKLMMNRSSTXz%Az%Az%Az%Az%Az%Az%Az% !"#$&'())*/00156<=>?EFHIMNXz%Az%Az%Az%Az%Az%Az%Az%A#$()2367:;Xz%Az%Az%A !()23Xz%Az%Az%ANOPQXz%Az%0167Xz%Az%A()23Xz%Az%Az%A56DEHIRSXAz%Az%ASTXz%A89XAz%BCWXXz%Az% !""#$%,--./001NOOPQRSTXz%Az%Az%Az%Az%Az%Az%()23Xz%Az%A89@ABCXAz%Az%0123:;;<=>Xz%Az%Az%A !()XAz%Az%235667HIXz%Az%Az%!""#OPPQXz%Az%Az%()23JKXz%Az%Az%()*+@AABOPXz%Az%Az%A  !"##$OPRSSTTUVWWXXz%Az%Az%Az%Az%Az%  !()2389>??@ABBCXz%Az%Az%Az%Az% '(()*++,1289BCXz%Az%Az%Az%A89OPXAz%A)**+STVWXz%Az%Az%()23Xz%Az%AHIIJXAz%A $%%&?@@ASTTUVWWXXz%Az%Az%Az%Az%&'()67Xz%Az%AMNXz%AUVVWXAz%A5689Xz%Az%)*899:Xz%Az%A89EFXz%Az%#$()STXz%Az%A6789Xz%Az% !())*./Xz%Az%Az%A6789BCHIXz%Az%Az%,-01TUXz%Az%A@AHIXz%Az%<=HISTTUXz%Az%Az%#$$%+,,-.//0:;;?XAz%Az%  !"#()*+012356QRTUXAz%Az%Az%Az%Az%A<=HIXz%Az% #$TUXz%Az%A%&Xz%A()VWXAz%A%&()DEXz%Az%AKLLMVWWXXz%Az%Az% !XAz% #$()*++,,--.23JKXz%Az%Az%Az%Az%@ADEEFXz%Az%ALMXz%A ()2389PQSTTUUVXz%Az%Az%Az%Az%,-89UVXz%Az%A '(23=>>?HIRSXz%Az%Az%Az%A&'()23STVWXz%Az%Az%A HIIJJKMNOPQRVWXAz%Az%Az%Az%89HIJKOPXAz%Az%Az%A  !"'()*/089?@@AGHHIXAz%Az%Az%Az%Az%Az%BCHIXz%Az%CDDEFGHIRSXz%Az%Az%A BCHIIJNOSTUVXAz%Az%Az%Az%A125689XAz%Az%STTUXz%Az%HIIJXAz%Az%'(89Xz%Az%()WXXAz%A01Xz%A$%()@CHIWXXAz%Az%Az% ,--.89=>>?HIIJJKWXXz%Az%Az%Az%Az%Az%()56XAz%A()IJXAz%A !"#,--../1267<==>>??@@AABBCFGGHRSTUXAz%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az%"#&''(89XAz%Az%Az%NOXAz%BCXz%A=>CDLMXz%Az%A>??@@AEFFGHIXz%Az%Az%Az%@AGHHIWXXz%Az%Az% /089?@@AGHHIOPPQWXXz%Az%Az%Az%Az%A  !'(()/0017889Xz%Az%Az%Az%Az%GHHIXAz%ACDWXXAz%A "#./23679::;=>?@FGIJMNXz%Az%Az%Az%Az%Az%A&''(6789XAz%Az%Az%  !%&&'()STTUXz%Az%Az%Az%Az% !""#&'()/00112236789Xz%Az%Az%Az%Az%Az% !""#&'()IJJKNOPQWXXz%Az%Az%Az%Az%A !/001Xz%Az%Az%Az%)**+./01Xz%Az%Az%345689Xz%Az%A()89Xz%Az%NOPQVWXz%Az%AXAz%EFGHXz%Az%3489XAz%Az%CDFGQRXz%Az%A./78MNXz%Az%A ,-89EFFGIJJKLMXz%Az%Az%Az%ALMXAz%,-566789BCXz%Az%Az%A#$2389XAz%Az%CDHIXz%Az%7889DEHITUXz%Az%Az%A()XAz%A()23XAz%A45Xz%A-.7889UVWXXAz%Az%Az%"#()23HIXz%Az%Az%'(Xz%A%&()23CDLMXz%Az%Az%APQXz%A"#%&VWXz%Az%A!"()STUVXz%Az%Az%()+,,-STXAz%Az%A./016789Xz%Az%Az% !&'()0112233445566778VWXz%Az%Az%Az%Az%Az%Az%AMNNOUVVWWXXz%Az%Az%A%&(),-./4589EFJKMNNOUVXAz%Az%Az%Az%Az%Az%Az%A4589CDHIXz%Az%Az% !!"'(()*+01Xz%Az%Az%Az%<=>?HIIJXz%Az%Az%%&'()*+,ABBCIJJKKLNORSTUXz%Az%Az%Az%Az%Az%Az%Az% !"#$'(/001456778<=>?JKTUUVVWWXXz%Az%Az%Az%Az%Az%Az%Az%Az%A#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAz%Az%Az%Az%Az%Az%Az%Az%Az%Az% !"#$&')**+12566778>?NOXz%Az%Az%Az%Az%Az%Az%A&''(*++,ABBCIJJKLMMNRSTUXAz%Az%Az%Az%Az%Az%Az%Az% "##$&'())*89<=>?HIQRXz%Az%Az%Az%Az%Az%Az%%&'()*+,ABBCIJJKLMMNRSTUXAz%Az%Az%Az%Az%Az%Az%Az% !"#$&'-.01456778<=>?HIIJJKXz%Az%Az%Az%Az%Az%Az%Az%A#$&')**+./123445566789;<=>@ACDFGRSVWXAz%Az%Az%Az%Az%Az%Az%Az%Az%Az%Az% !""#&'())*/001>?HIXz%Az%Az%Az%Az%Az%A %&&')**+ABBCRSTUXz%Az%Az%Az%Az%!""#&'-./00134566789<=>?HIXz%Az%Az%Az%Az%Az%Az%Az%A%&&')**+ABBCLMMNRSTUXz%Az%Az%Az%Az%Az%Az%!""#&'-./0567889<=>?HIIJLMXz%Az%Az%Az%Az%Az%Az%Az%A%&&')**+Xz%Az%Az%!""#'(,-0178<=>?HIRSXz%Az%Az%Az%Az%Az%Az% /023JKKLTUUVVWXAz%Az%Az%Az%Az%A "##$'(-..//00189>?HIJKLMXz%Az%Az%Az%Az%Az%Az%AIJJKLMSTXAz%Az%A '(()23XAz%Az%AIJJKLMUVXAz%Az%A !'(()23XAz%Az%A012389BCMNNOOPPQQRRSVWXz%Az%Az%Az%Az%Az%Az% !!"EFIJXz%Az%Az%0112UVXz%Az%Az%A XAz%AILNTVWz%z%z%Qgb79BIXgbegbWgb")FIMegbeHIOgbe)2@ACXegbeegbgbgb"#')*,0119Bgbeeegbe9KLOgbe)+LMSWXegbegbgbee)2eeIIgb$&?ASUVXXgbgbgbgbgb&)6gbgbSgbMgbVVe59Xgbgb)99gbe8FXgbgb#)NOSgbgbe69Xgbgb!(*.gbgbgb69BIXgbegb,1Tgbgb@IXgbgb?gbgbeNgb.9Kgbgb*gb!gbKgb<=@IRgbeeBDEIJgbegbVXe5@@IXgbgbgb)IXgbegbIXgbegb9Ogbgb ,066778ACOQUWWgbgbgbegbgbgbgbXgbgbgbJgb,XgbVgb(+Xgbgb ITgbgb(9HLMeeh&(IMOXhgbgbUXXgbe)2:SXXegbh3?Xgbz%6789Wz%egb #(+035RTgbgbgbgbe?FIXegbegb ,9UgbegbKLXegbe(()2>>IRegbeeeABOgbe$%&)2TVgbegbeeeIIKMPQWXeeee9CDHKMNOegbegbe"'*/9?AGIXgbgbgbgbgbgbBIXgbgb;@@FFIXgbgbgbgb@HHXXgbgbe/9?AGIOQWgbgbgbgbgb!')/179XgbgbgbgbeHHgb&ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}egbhgbxj j&j5jJjYjjj&jj&jjk k.kUkvj&kkll0lKlxmAƥhoooodzpBBCCFFGGNNSSOgbeOgbgb %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQTɇ5DɺĞ;< <Ĺ,~~5^.5^C|j&4[ł  ##$$%%&&'ToÄj&Ùî;uýc ))**++,,--//334455667788qrs5snssstt1tFt !!""#'((),--../12234668899::;;<<==>>?DHHIWXX5^ȯ;6555^5^66!5^605^6?6N6]6l65^665^u5^6&(HHIXOOgb")BEJKVWXgbgbOgbO"''*3FXgbOOOSTXOeCHIIJNTUVVgbeOz%gbO%%&&'(CGHHUUXXeőeehOh""--9=?HJJXXhOheegbgb #,..26;;==??AACFHQRRUXgbgbgbgbgbOgbgbgbgbgbOgb!-2BCgbOOBgbOgbDWe"/279;=@FJMeeeeee&(()2369Xeeeegb &&)SUXgbgbgbgbgb!#&)/11369Xgbgbgbgbgbgb!#&)IKNQWgbgbgbgbgb!/1Xgbgbgbgb)+.1Xgbgbgb368gbe(9XgbgbNQVgbgbXgbEHXgbgb39XgbgbCGQgbgb*+.8JKMgbegbe*+,9EGIKLgbegbgbeMXe,669Beee$()29Xeegb ABBCCIXgbegbegbgb79DITgbee(e)2e/04gbe.79UXXeee")2IXeee'eLMXegbe%)2DLegbee9:FGHIRSXegbegbegb>?Lgbe<=Pgbe"&()23Vegbegb!)SVXgbgbgb )+-ABEFFGLMMNOPRSSeegbegbegbegb.169Xgbgbgb!&)02244668VgbgbgbgbgbgbgbMOUWWgbgbgb%),/49EKMOUgbgbgbgbgbgbgb ./2334<==>@AABFgbegbegbegbe1249CIXgbegbgb "')*189Xgbgbeegb"#XgbeRSUVVWXegbegbe())*01:;>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXj&A A!A<Wxj&)JeAj&ALAA0 Aj&5J_A17 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXB]/t (s AxAAnAA ?l&AAkA[|A &''(())**+-../VWWXXj&Aj&j&A-())**+Xj&A()1223XAj&A89@AABBCCDDEEFFGGHQRRSTUUVVWWXXAj&&;bwAj&Aj&.U HIIJJKKLXAAj&ATUUVVWXAA !""#())**++,,--../23344556677889@AABBCCDTUUVXAAAj& j&"=pA 'HA{A"##$$%+,,-7889;<<==>>?PQQRRSSTX6ށޖAޱAA;Abj&ߡj&AdWA  '(()GHHIXAݵAAAHIXAgb"#()BCHIXgbAgbAgb"#XgbASTXAhHIRSXAeA  !1234:;;<=>>?CDHIXhAhAhAhAhAgbFGXgbA'(()XAhAEFHIOPVWXgbAhgbA"#&''(XeAgbA()FGGHXAgbhADEHIRSXgbheA()DEHIRSXAgbheA 89?@@ADEEFGHHIWXXAgbAgbAgbAgbA()/0XgbAhA#$$%()23XgbhgbAeA899:;<<==>?@@AABKLLMPQQRRSSTTUXgbAgbAgbAgbAgbAgbAgbAgbAgbA( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXXAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbA "##$459:<==>BCCDTUXgbAgbAgbAgbAgbA=>BCEFXAhAh$%BCFGXhAhAhAXAhA-../XgbAgb566789:;;<=>?@ABEFFGRSSTTUUVXgbAgbAgbAgbAgbAgbAgbAgbXgbAgb  #$%&-../5667RSSTWXXgbAgbAgbAgbAgbAgbA "#)**+XgbAgbAgbAgb>?@AXgbAgb3445STTUXgbAgbAgbAgb-../MNNOXgbAgbAgb'(()GHHIXgbAgbAgb!""#ABBCXgbAgbAgb$%&'XgbAgbAeOPSTXhAhEFMNNOXhAhA34899:HIXAhAhAhA78=>CDXgbAgbAFGHIXhAh XhACDHIUVXgbAgbA !"()23567889<=XgbAgbAhAhAQRXgbA7889BCHIXgbAeAgbWXXgbA"#()FGHIMNXeAgbAhAHIOPXgbhA()23;HIJKXAgbAgbhAhA XgbAHIXgbh ./XhgbhA23XgbAGHXgbAXgbA()XAgbIJXgbAPQXhgbh  >?HIIJKLMNNOWXXhAehgbhgbAhHISTUVVWXhgbhAhA %&&'()ABHIRSXAhAhAgbAeA?@MNNOXhgbhAe  !()KLLMNOOPXAgbhgbAgbhAgbAKLXhgbh !"%&&'()23344556XhgbAhAhegbAgbA*++,DEPQVWWXXgbAgbhAhgbXgbhA  !!""#&''(6778ABHIXgbAgbAgbAgbAgbAgb78CDHIRSXgbhAeA%&'()*+,ABBCIJJKLMMNRSSTUVVWXhAgbAgbAgbAgbAgbAgbAhgbh !"#$&'())*/00156:;<=>?EFHIMNXhAhAhAgbAhAgbhAhAhAMNXgbh  #$()236778:;XhgbAeAhgbA !()23XhgbAgbAeAGHNOPQXgbhAh014567XhAgbhA()23XhAgbAeACDPQQRXgbhgbA"#XeA56DEHIRSXAhAeADESTXgbhA89XAgb89BCWXXgbeAgb !""#$%,--./001HINOOPQRSTWXXgbAgbAgbAgbAgbhAhAhgb()23XhgbhAeA89@ABCXAgbAgb )*01239::;;<<==>XgbhAhgbAgbhA#$KLRSSTWXXgbhgbhgbhA !())*45XAhAgbhgb"#235667HIXgbhAgbAgb!""#GHOPPQXgbAgbhAh()23JKXgbAeAgb()*+@AABOPXgbAhAhA  !"##$IJOPRSSTTUVWWXXgbAgbAgbhAhAhAh  !()2389>??@ABBCXhgbhAeAgbAgbAgb "#'(()*++,011289BCXgbhAhAhgbAeA89KLOPXAgbhA )**+LMSTVWXhgbhgbAgbhAh()23XhAeAHIIJXAgbA $%%&?@@ASTTUVWWXXgbAgbAgbAgbAgb&'()67XgbAgbASTXgbAMNXgbAUVVWXAhA5689XgbAgb)*899:XgbAhA89EFXgbAgb#$()NOSTXgbAgbhA6789XgbAgb !())*./XgbAgbAgbA6789BCHIXgbAeAgb,-01TUXgbAgbA@AHIXgbAgb<=HISTTUXgbAgbAgb#$$%+,,-.//0:;;?@XgbAgbhANOXgbA./89KLXgbAgbA*+XgbA!"XgbAKLXgbA<=@AHIRSXgbhAeABCCDEFHIJKXgbAhAgbAUVXAh56?@@AHIXgbAgbAgb)*HIXgbhAgbHIXgbhAgb89OPXgbAgbA +,01566778ABBCOPPQUVVWWXXgbAgbAgbhgbAgbAgbAgbAXgbAgbAgbJKXgbA+,XAgbVWXgbA()*+XgbAgb !HITUXgbAgbA()89HIKLMNXhAhAhA%&()HIMNNOXAhAgbAgbUVWXXgbAh()239:STWXXAeAgbAh34>?XAgbAz%6789WXXz%hgbA  !"#()*+012356QRTUXAgbAgbAgbAgbAhA<=HIXgbAgb #$TUXgbAgbA%&XgbA()VWXAgbA%&()89BCDEXgbAgbegbAGHKLLMVWWXXgbhAhAgb6789XgbhgbHIJKXgbhA !XAgb #$()*++,,--.23JKXgbAgbAgbAgbAgb  #$$%;<@ADEEFXgbhgbhgbhgbhAhALMXgbALMXhgbh ()2389JKPQSTTUUVWXXhAeAhgbAgbAgbh"#>?FGHIXegbhAgb ,-89UVXgbhAgbAKLXhgbh '(()23=>>?HIRSXhAgbeAhAeAABOPXgbhA $%&'()23STVWXgbhgbhAeAhA HIIJJKMNOPQRVWXAhAhAhAh 89CDHIJKMNOPXAhAgbhAgbhA  !"'()*/089?@@AGHHIXAgbAgbAgbAgbAgbAgbBCHIXgbAgb;>?HIIJJKWXXhAhAhAhAgbAgb()56XAgbA()IJXAhA !"#,--../1267<==>>??@@AABBCFGGHRSTUXAgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAgb"#&''(89XAgbAgbAgbNOXAgbBCXgbA=>CDGHJKLMXgbAgbhgbA>??@@AEFFGHIXgbAgbAgbAgb@AGHHIWXXgbAgbAh /089?@@AGHHIOPPQWXXgbAgbAgbAgbAgbA  !'(()/0017889XgbAgbAgbAgbAhGHHIXAgbACDWXXAhA "#./23679::;=>?@FGIJMNXeAhAhAhAhAhA &''(()236789XAhAhehAgb  !%&&'()STTUXgbAgbAgbAgbAgb !""#&'()/00112236789XgbAgbAgbAgbAgbAgb !""#&'()IJJKNOPQWXXgbAgbAgbAgbAgbA !/001XgbAgbAgbAgb)**+./01XgbAgbAgb345689XgbAhA()89XgbAgbNOPQVWXgbAgbAXAgbEFGHXgbAgb3489XAgbAgbCDFGQRXgbAgbA*+./78JKMNXgbhAgbhA *+,-89EFFGIJJKLMXgbhAgbAgbAhALMXAh,-566789BCXhAhAeA#$()2389XAheAgb ABBCCDHIXgbhgbhgbAgb7889DEHITUXgbAhAhA()XAeA()23XAeA/045XgbhA-.7889UVWXXAhAhAh"#()23HIXeAeAh'(XhALMXhgbh%&()23CDLMXhgbAeAhA9:FGHIRSXhgbhgbegb>?LMXgbhA<=PQXgbhA"#%&()23VWXeAgbegbA!"()STUVXgbAgbAgb ()+,,-ABEFFGLMMNOPRSSTXAhAhgbhgbhgbhgbA./016789XgbAgbAgb !&'()0112233445566778VWXgbAgbAgbAgbAgbAgbAgbAMNNOUVVWWXXgbAgbAgbA%&(),-./4589EFJKMNNOUVXAgbAgbAgbAgbAgbAgbAgbA ./2334<==>@AABFGXgbhgbhgbhgbhA124589CDHIXgbhAgbAgb  !!"'(()*+0189XgbAgbAhAhgb"#XgbhRSUVVWXhgbhgbh ())*01:;<=>?HIIJXhgbhgbhAeAgb%&'()*+,ABBCIJJKKLNORSTUUVVWXgbhAgbAgbAgbAgbAgbAgbAhgbh !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXhAhAhgbAhAgbAgbhAegbAgbAhA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAhAgbAgbAgbAgbAgbAgbAgbAhAh !"#$&')**+12566778>?HIJKMNNOXhAhAhAhAgbAgbAehgbhA&''(*++,ABBCIJJKLMMNRSTUUVVWXAhAgbAgbAgbAgbAgbAgbAhgbh "##$&'())*89:;<=>?HIQRRSXhAhAhAgbAgbhAeAgbh%&'()*+,ABBCIJJKLMMNRSTUUVVWXAhAgbAgbAgbAgbAgbAgbAhgbh !"#$&'-.01456778:;<=>?HIIJJKXhAhAhAhAgbAgbhAeAgbA#$&')**+./123445566789;<=>@ACDFGRSVWXAhgbAgbAgbAgbAgbAgbAgbAgbAgbAgbAh !""#&'())*/001>?HIXhAhAhAgbAhAeA %&&')**+ABBCRSTUUVVWXhgbAgbAgbAgbAhgbh!""#&'-./00134566789:;<=>?HIXhAhAhAhAgbAgbAgbhAeA%&&')**+ABBCLMMNRSTUUVVWXgbhAgbAgbAgbAgbAgbAhgbh!""#&'-./0567889:;<=>?HIIJKLLMXhAhAhAhAgbAgbhAeAgbhA %&&')**+STUVVWXhgbAgbAgbhgbh!""#&''(,-/00178:;<=>?HIRSXhAhAhgbAgbhAgbhAeAgb /023JKKLTUUVVWXAhAgbAgbAgbAgbA "##$'(-..//00189>?HIJKLMXgbAhAhAhAhAeAhAIJJKLMSTXAhAhA '(()23XAhAeAIJJKLMUVXAhAhA !'(()23XAhAeA012389BCMNNOOPPQQRRSVWXgbAhAeAhAhAhAh !!"EFIJXgbAgbAh  !%&0112UVXhAhgbhAhA XAhAAA*039==AAA#LRTWAAA *4AA#2AHOQXAA+@BOAAJOSSUVXXAAAA AA#')*,0AAALOAMSWXAAAAAVVA99AOSA%(QSXXAAAAA>?A=@ADEAVXA)AA77A(9HAAXXA78ARTAHKMVAAIJA$$<@EEAAAAAMXAA9JXXAAA !Xj&Aj&A89XAgbAgbHIXgbA7 !"##$$%%&&''(()*++,,--..//00145566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKKO0KpAKA"AK#K#$L3LN0L{LLLMA0MbMwMAMNN1NFNmANA#KO O'#OcOxOA0OO#A#$)PA$>$_P7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXRy$WDrAwVAV@mGAAG_Gt 3H% `   A)A!,I?!YA!!""A"g""JA())**+X0VkA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0A)A>AeAAA0A0 HIIJJKKLXAA0!NATUUVVWXA3A !""#())**++,,--../23344556677889@AABBCCDTUUVXA[|AA00 ;nAAyA"##$$%+,,-7889;<<==>>?PQQRRSSTXߣbA}AAAl0 0.AbUA  '(()GHHIXA3ZAA˄ASTXAgb  !1234:;;<=>>?CDHIXgbAgbAgbAgbAgbA'(()XAgbAEFHIOPVWXAgbA()FGGHXAgbADEHIRSXgb˟A()DEHIRSXAgb˟A()/0XAgbA#$$%()23XgbA˟A=>BCEFXAgbAgb$%BCFGXgbAgbAgbAXAgbAOPSTXgbAgbEFMNNOXgbAgbA34899:HIXAgbAgbAgbAFGHIXgbAgb !"()23567889<=XAAgbAgbA"#()FGHIMNX˟AAgbAHIOPXgbA#$'(())*XAgbgb !'(+,89XgbAgbA 89:;;<<==>HIJKXAAgbAgbAHIXgb ./XgbgbAPQXgbgb  >?HIIJKLMNNOWXXgbA˟gbgbAgbHISTUVVWXgbgbAgbA %&&'()ABHIRSXAgbAgbAA˟A?@MNNOXgbgbA˟  !()KLLMNOOPXAgbAgbAAKLXgbgb !"%&&'()23344556XgbAgbAgb˟AA*++,DEPQVWWXXAgbAgbXgbA78CDHIRSXgbA˟A%&'()*+,ABBCIJJKLMMNRSSTUVVWXgbAAAAAAAgbgb !"#$&'())*/00156:;<=>?EFHIMNXgbAgbAgbAAgbAgbAgbAgbAMNXgb  #$()236778:;XgbA˟AgbA !()23XgbAA˟AGHNOPQXgbAgb014567XgbAgbA()23XgbAA˟ACDPQQRXgbA56DEHIRSXAgbA˟ADESTXgbA !""#$%,--./001HINOOPQRSTWXXAAAAgbAgbAgb()23XgbgbA˟A )*01239::;;<<==>XgbAgbAgbA#$KLRSSTWXXgbgbgbA !())*45XAgbAgb"#235667HIXgbAA!""#GHOPPQXAgbAgb()*+@AABOPXAgbAgbA  !"##$IJOPRSSTTUVWWXXAAgbAgbAgbAgb  !()2389>??@ABBCXgbgbA˟AAA "#'(()*++,011289BCXgbAgbAgbA˟A89KLOPXAgbA )**+LMSTVWXgbgbAgbAgb()23XgbA˟AUVVWXAgbA)*899:XAgbA#$()NOSTXAgbA $%(),--.0112NOPQSTWXXgbAgbAgbAAAgbAgb !!"=>?@XAgbA<=@AHIRSXgbA˟ABCCDEFHIJKXAgbAAUVXAgb)*HIXgbAHIXgbA +,01566778ABBCOPPQUVVWWXXAAgbAAAA ()+,,-89HIKLMNXgbAAgbA AUVWXXAgb34>?XAAz%6789WXXz%gbA  !"#()*+012356QRTUXAAAAAgbAGHKLLMVWWXXgbAgbA6789XgbHIJKXgbA  #$$%;<@ADEEFXgbgbgbgbAgbALMXgbgb ()2389JKPQSTTUUVWXXgbA˟AgbAAgb"#>?FGHIX˟gbA ,-89UVXgbAAKLXgbgb '(()23=>>?HIRSXgbA˟AgbA˟AABOPXgbA $%&'()23STVWXgbgbA˟AgbA HIIJJKMNOPQRVWXAgbAgbAgbAgb 89CDHIJKMNOPXAgbAgbAgbA;?@@CGHHIWXXAgbAAAgb A ,--.89=>>?HIIJJKWXX A AgbAgbAA()IJXAgbA=>CDGHJKLMXAgbA@AGHHIWXXAAgb  !'(()/0017889XAAAAgbCDWXXAgbA "#./23679::;=>?@FGIJMNX˟AgbAgbAgbAgbAgbA &''(()236789XAgbAgb˟gbA345689XAgbA*+./78JKMNXgbAgbA *+,-89EFFGIJJKLMXgbAAAgbALMXAgb,-566789BCXgbAgbA˟A#$()2389XAgb˟A ABBCCDHIXgbgbA7889DEHITUXAgbAgbA/045XgbA-.7889UVWXXAgbAgbAgb"#()23HIX˟A˟Agb'(XgbALMXgbgb%&()23CDLMXgbA˟AgbA9:FGHIRSXgbgb˟>?LMXgbA<=PQXgbA ()+,,-ABEFFGLMMNOPRSSTXAgbAgbgbgbgbA ./2334<==>@AABFGXgbgbgbgbA124589CDHIXgbAA  !!"'(()*+0189XAAgbAgb"#XgbRSUVVWXgbgbgb ())*01:;<=>?HIIJXgbgbgbA˟A%&'()*+,ABBCIJJKKLNORSTUUVVWXgbAAAAAAAgbgb !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXgbAgbAgbAgbAAgbA˟AAgbA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAgbAAAAAAAAgbAgb !"#$&')**+12566778>?HIJKMNNOXgbAgbAgbAgbAAA˟gbgbA&''(*++,ABBCIJJKLMMNRSTUUVVWXAgbAAAAAAAgbgb "##$&'())*89:;<=>?HIQRRSXgbAgbAgbAAgbA˟Agb%&'()*+,ABBCIJJKLMMNRSTUUVVWXAgbAAAAAAAgbgb !"#$&'-.01456778:;<=>?HIIJJKXgbAgbAgbAgbAAgbA˟AA#$&')**+./123445566789;<=>@ACDFGRSVWXAgbAAAAAAAAAAgb !""#&'())*/001>?HIXgbAgbAgbAAgbA˟A %&&')**+ABBCRSTUUVVWXgbAAAAgbgb!""#&'-./00134566789:;<=>?HIXgbAgbAgbAgbAAAgbA˟A%&&')**+ABBCLMMNRSTUUVVWXgbAAAAAAgbgb!""#&'-./0567889:;<=>?HIIJKLLMXgbAgbAgbAgbAAgbA˟AgbA %&&')**+STUVVWXgbAAgbgb!""#&''(,-/00178:;<=>?HIRSXgbAgbAgbAgbAgbA˟A /023JKKLTUUVVWXAgbAAAAA "##$'(-..//00189>?HIJKLMXAgbAgbAgbAgbA˟AgbAIJJKLMSTXAgbAgbA '(()23XAgbA˟AIJJKLMUVXAgbAgbA !'(()23XAgbA˟A012389BCMNNOOPPQQRRSVWXAgbA˟AgbAgbAgbAgb !!"EFIJXAAgb  !%&0112UVXgbAgbgbAgbA XAgbA?FA ,ALXAA>>AABOA%&TVAAAIIKMPQWXAAAADHNOAAA>?DIWXX5^5m55;6555^;E5^66!5^605^6?6N6]6l65^665^5^6>OSTXOACHIIVVAOO0022OO%%&&'(CGUUA8AAO""9=?HOAA;;RROO-2BCOO34AAOO!!O((BLQSOOO !X>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKKO0KpAKALAKLKLL3LN0L{LLLMA0MbMwMAMNN1NFNmANALO O'M]OcOxOA0OOMAMMPAMNP7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXE;EVEEFF(FmFFGDG!GHGAH&H;EHtAHHEHIGI=AIdAG_GtIIH%JJNJJA)AJI?KAK5KKALL7LvJA())**+X0EEA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0A)A>AeD6DcAAA0A0D~DD HIIJJKKLXAA0!CATUUVVWXACCA !""#())**++,,--../23344556677889@AABBCCDTUUVXABCACCA00 ;nAC^CyCAyA"##$$%+,,-7889;<<==>>?PQQRRSSTXAߣAABAB>B_ABAl0B0BAbUA  '(()GHHIXA3ZAAA˄ASTXAe  !1234:;;<=>>?CDHIXeAeAeAeAeA'(()XAeAEFHIOPVWXAeA()FGGHXAeADEHIRSXe˟A()DEHIRSXAe˟A()/0XAeA#$$%()23XeA˟A=>BCEFXAeAe$%BCFGXeAeAeAXAeAOPSTXeAeEFMNNOXeAeA34899:HIXAeAeAeAFGHIXeAe XeA !"()23567889<=XAAeAeA"#()FGHIMNX˟AAeAHIOPXeA#$'(())*XAee !'(+,89XeAeA 89:;;<<==>HIJKXAAeAeAHIXe ./XeeAPQXee  >?HIIJKLMNNOWXXeA˟eeAeHISTUVVWXeeAeA %&&'()ABHIRSXAeAeAA˟A?@MNNOXeeA˟  !()KLLMNOOPXAeAeAAKLXee !"%&&'()23344556XeAeAe˟AA*++,DEPQVWWXXAeAeXeA78CDHIRSXeA˟A%&'()*+,ABBCIJJKLMMNRSSTUVVWXeAAAAAAAee !"#$&'())*/00156:;<=>?EFHIMNXeAeAeAAeAeAeAeAMNXe  #$()236778:;XeA˟AeA !()23XeAA˟AGHNOPQXeAe014567XeAeA()23XeAA˟ACDPQQRXeA56DEHIRSXAeA˟ADESTXeA !""#$%,--./001HINOOPQRSTWXXAAAAeAeAe()23XeeA˟A )*01239::;;<<==>XeAeAeA#$KLRSSTWXXeeeA !())*45XAeAe"#235667HIXeAA!""#GHOPPQXAeAe()*+@AABOPXAeAeA  !"##$IJOPRSSTTUVWWXXAAeAeAeAe  !()2389>??@ABBCXeeA˟AAA "#'(()*++,011289BCXeAeAeA˟A89KLOPXAeA )**+LMSTVWXeeAeAe()23XeA˟AUVVWXAeA)*899:XAeA#$()NOSTXAeA $%(),--.0112NOPQSTWXXeAeAeAAAeAe !!"=>?@XAeA<=@AHIRSXeA˟ABCCDEFHIJKXAeAAUVXAe)*HIXeAHIXeA +,01566778ABBCOPPQUVVWWXXAAeAAAA ())*,--.89HIKLMNXeSnASnAeA AUVWXXAe6789WXXz%eA  !"#()*+012356QRTUXAAAAAeAGHKLLMVWWXXeAeA6789XeHIJKXeA  #$$%;<@ADEEFXeeeeAeALMXee ()2389JKPQSTTUUVWXXeA˟AeAAe"#>?FGHIX˟eA ,-89UVXeAAKLXee '(()23=>>?HIRSXeA˟AeA˟AABOPXeA $%&'()23STVWXeeA˟AeA HIIJJKMNOPQRVWXAeAeAeAe 89CDHIJKMNOPXAeAeAeA;@CGHHIWXXAeASnASnAe A ,--.89=>>?HIIJJKWXX ASnA AeAeAA()IJXAeA=>CDGHJKLMXAeA@AGHHIWXXAAe  !'(()/0017889XAAAAeCDWXXAeA "#./23679::;=>?@FGIJMNX˟AeAeAeAeAeA &''(()236789XAeAe˟eA345689XAeA*+./78JKMNXeAeA *+,-89EFFGIJJKLMXeAAAeALMXAe,-566789BCXeAeA˟A#$()2389XAe˟A ABBCCDHIXeeA7889DEHITUXAeAeA/045XeA-.7889UVWXXAeAeAe"#()23HIX˟A˟Ae'(XeALMXee%&()23CDLMXeA˟AeA9:FGHIRSXee˟>?LMXeA<=PQXeA ()+,,-ABEFFGLMMNOPRSSTXAeAeeeeA ./2334<==>@AABFGXeeeeA124589CDHIXeAA  !!"'(()*+0189XAAeAe"#XeRSUVVWXeee ())*01:;<=>?HIIJXeeeA˟A%&'()*+,ABBCIJJKKLNORSTUUVVWXeAAAAAAAee !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXeAeAeAeAAeA˟AAeA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAeAAAAAAAAeAe !"#$&')**+12566778>?HIJKMNNOXeAeAeAeAAA˟eeA&''(*++,ABBCIJJKLMMNRSTUUVVWXAeAAAAAAAee "##$&'())*89:;<=>?HIQRRSXeAeAeAAeA˟Ae%&'()*+,ABBCIJJKLMMNRSTUUVVWXAeAAAAAAAee !"#$&'-.01456778:;<=>?HIIJJKXeAeAeAeAAeA˟AA#$&')**+./123445566789;<=>@ACDFGRSVWXAeAAAAAAAAAAe !""#&'())*/001>?HIXeAeAeAAeA˟A %&&')**+ABBCRSTUUVVWXeAAAAee!""#&'-./00134566789:;<=>?HIXeAeAeAeAAAeA˟A%&&')**+ABBCLMMNRSTUUVVWXeAAAAAAee!""#&'-./0567889:;<=>?HIIJKLLMXeAeAeAeAAeA˟AeA %&&')**+STUVVWXeAAee!""#&''(,-/00178:;<=>?HIRSXeAeAeAeAeA˟A /023JKKLTUUVVWXAeAAAAA "##$'(-..//00189>?HIJKLMXAeAeAeAeA˟AeAIJJKLMSTXAeAeA '(()23XAeA˟AIJJKLMUVXAeAeA !'(()23XAeA˟A012389BCMNNOOPPQQRRSVWXAeA˟AeAeAeAe !!"EFIJXAAe  !%&0112UVXeAeeAeA XAeA<=HIX LA L #$TUX LA LAGHKLLMVWWXX LOAOA L6789X LO LHIJKX LOA  #$$%;<@ADEEFX LO LO LO LOAOALMXO LO ()2389JKPQSTTUUVWXXOAȓAO LA LA LO"#>?FGHIXȓ LOA L ,-89UVX LOA LAKLXO LO '(()23=>>?HIRSXOA LȓAOAȓAABOPX LOA $%&'()23STVWX LO LOAȓAOA HIIJJKMNOPQRVWXAOAOAOAO 89CDHIJKMNOPXAOA LOA LOA;>?HIIJJKWXXeAeAOAOA LA L()IJXAOA=>CDGHJKLMX LA LO LA@AGHHIWXX LA LAO  !'(()/0017889X LA LA LA LAOCDWXXAOA "#./23679::;=>?@FGIJMNXȓAOAOAOAOAOA &''(()236789XAOAOȓOA L345689X LAOA*+./78JKMNX LOA LOA *+,-89EFFGIJJKLMX LOA LA LAOALMXAO,-566789BCXOAOAȓA#$()2389XAOȓA L ABBCCDHIX LO LO LA L7889DEHITUX LAOAOA/045X LOA-.7889UVWXXAOAOAO"#()23HIXȓAȓAO'(XOALMXO LO%&()23CDLMXO LAȓAOA9:FGHIRSXO LO Lȓ L>?LMX LOA<=PQX LOA ()+,,-ABEFFGLMMNOPRSSTXAOAO LO LO LO LA ./2334<==>@AABFGX LO LO LO LOA124589CDHIX LOA LA L  !!"'(()*+0189X LA LAOAO L"#X LORSUVVWXO LO LO ())*01:;<=>?HIIJXO LO LOAȓA L%&'()*+,ABBCIJJKKLNORSTUUVVWX LOA LA LA LA LA LA LAO LO !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXOAOAO LAOA LA LOAȓ LA LAOA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAOA LA LA LA LA LA LA LAOAO !"#$&')**+12566778>?HIJKMNNOXOAOAOAOA LA LAȓO LOA&''(*++,ABBCIJJKLMMNRSTUUVVWXAOA LA LA LA LA LA LAO LO "##$&'())*89:;<=>?HIQRRSXOAOAOA LA LOAȓA LO%&'()*+,ABBCIJJKLMMNRSTUUVVWXAOA LA LA LA LA LA LAO LO !"#$&'-.01456778:;<=>?HIIJJKXOAOAOAOA LA LOAȓA LA#$&')**+./123445566789;<=>@ACDFGRSVWXAO LA LA LA LA LA LA LA LA LA LAO !""#&'())*/001>?HIXOAOAOA LAOAȓA %&&')**+ABBCRSTUUVVWXO LA LA LA LAO LO!""#&'-./00134566789:;<=>?HIXOAOAOAOA LA LA LOAȓA%&&')**+ABBCLMMNRSTUUVVWX LOA LA LA LA LA LAO LO!""#&'-./0567889:;<=>?HIIJKLLMXOAOAOAOA LA LOAȓA LOA %&&')**+STUVVWXO LA LA LO LO!""#&''(,-/00178:;<=>?HIRSXOAOAO LA LOA LOAȓA L /023JKKLTUUVVWXAOA LA LA LA LA "##$'(-..//00189>?HIJKLMX LAOAOAOAOAȓAOAIJJKLMSTXAOAOA '(()23XAOAȓAIJJKLMUVXAOAOA !'(()23XAOAȓA012389BCMNNOOPPQQRRSVWX LAOAȓAOAOAOAO !!"EFIJX LA LAO  !%&0112UVXOAO LOAOA XAOACHIIVV9OO%%&&'(CGUU91n99O""9=?HO99DW9/279;=@FJM99999&((36999689+.KM99+,KL99MX9,6699$(9BB999DIT99049.79UXX999'9MX99DL99:F99?L9=P9)+-AFFMMPR99999/24<>@BF9999249)*1899#X9SUWX999(*0;<999UUWX999 !$&00;?@@AABKLLMPQQRRSSTTUX=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXX:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q "##$459:<==>BCCDTUX=n:q=n:q=n:q=n:q=n:q-../X=n:q=n566789:;;<=>?@ABEFFGRSSTTUUVX=n:q=n:q=n:q=n:q=n:q=n:q=n:q=nX=n:q=n  #$%&-../5667RSSTWXX=n:q=n:q=n:q=n:q=n:q=n:q "#)**+X=n:q=n:q=n:q=n>?@AX=n:q=n3445STTUX=n:q=n:q=n:q=n-../MNNOX=n:q=n:q=n'(()GHHIX=n:q=n:q=n!""#ABBCX=n:q=n:q=n$%&'X=n:q=n:qCDX=n:q=n:qX~:q89;>@@AABBCCIIKKMMNNOOTTUUVV1Rm*]l&A\q +))**DDEEVVWWXXKKUUVVq""AABBCC,AV ##$$,,<<>>l((]TX~!14:<=?C~~~~~((~IO~GG~EH~)/~#~>BFX~~$CF~~~~OTX~~ENN~~48:H~~~FIX~~~679<~~IM~((*X~~ (+~~==IJ~~IX~ .~~QX~~IILMXX~~~~ISVV~~~&&~~@M~~LL~~LX~~"%'(~~~EPWW~~~8C~TUWX~~~ !$&00;?~=@~DE~VX~)~~77~(9HLM~~XX~678~RT~HKMV~~78~IJ~$$<@EE~~~~~MX~~9JXX~~~?F~ ,~LX~~>>~~BO~%&TV~~~IIKMPQWX~~~~DHNO~~~>?DIWXX5^5m55;6555^5^66!5^605^6?6N6]6l65^665^5^6STXO~CHIIJNVV~OO%%&&'(CGHHUUXX~=~~O""--9=?HO~~DW~/279;=@FJM~~~~~&((36~~~68~+.KM~~+,KL~~MX~,66~~$(~BB~~9DIT~~04~.79UXX~~~'~MX~~DL~~:F~~?L~=P~)+-AFFMMPR~~~~~/24<>@BF~~~~24~)*18~~#X~SUWX~~~(*0;<~~~UUWX~~~ !$&00;?HIIJKLMNNOX:q??@ABBCX:q=n:qX=n:q=n:qNOX=n:q./89KLX=n:q=n:q*+X=n:q!"X=n:qKLX=n:q<=HIRSX=n:q:q%&()HIMNNOX:q>:q=n:q=nUVX=n:q()239:STWXX:q34>?X:q=n:q~6789WXX~:q=n:q  !"#()*+012356X:q=n:q=n:q=n:q=n:q6 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~ijrkkTlbl lllmmL mi mmmnn6n_ nnoo9o\opbqqr-"vrs ssDLAA:FAA?LA=PA)+-AFFMMPRAAAAA/24<>@BFAAAA24A)*18AA#XASUWXAAA(*0;<AAAUUWXAAA !$&00;>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWKf)DwRg 0  E!R A"$b}%X#J())**009@AABBCCDDEEFFGGRRUUVVWWXX0!<{00IIJJKK0mUUVVI^""))**++,,--../2334455667788AABBCCUU0  Yn0 (C.##$$,,889;<<==>>QQRRSS)4DYt00*((HHwTX!14:<=?CIX((EIOPV)FGGDEHIR˟)DEHIR˟)/#$$)2˟>BFX$CFOTXENN48:HFIX!)2679<")FIM˟HIO#(())*X (+,89:<<==IJHIX .PQX?HIIJKLMNNXX˟HISVV&&)AIR˟?@MOX˟ )KLLOOKLX"%'()23355˟*,DEPWWXX78CIR˟ %(),ACIKLNRTUVVWX  !$&))006:;@ACX˟"#')*,0119B˟9KLO)+LMSWX)2˟VV)99#)NOS %(),.02NQSXX "=>?<=@IR˟BDEIJVX)IXIX ,066778ACOQUWW(,,9HLM E UXX789W #(+035RTGHKMVXX6789XHIJ  #$$%;<@EELMX)29JKPTTVWXX˟"#>?FIX˟ ,9UKLX(()2>>IR˟˟ABO$%&)2TV˟IIKMPQWX9CDHKMNO;>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXX>B_AtAaAb b."=BjABQfA 5\A}AbUbRgABbAcc30cHci7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXZZZ[[\[[[\.\a \|\]A]]Z ]A^^#Z ^J^w ^A^A N c^_= _j__`  A`6.`cA``a,AaqaaA &''(())**+-../VWWXXBZBABZWBZlA}Z())**+XBZ Z!A !!""#'((),--../12234668899::;;<<==>>?DHHIWXX5^;6555^-5^66!5^605^6?6N6]6l65^665^5^6STXOCHIITUVVOO %%&&'(12==@@CGHHUUXX; E E E O ""--9=?HJJXX O DW"/279;=@FJM˟&(()2369X˟368*+.8JKM*+,9EGIKLMX,669B˟$()29X˟ ABBCCIX79DIT/04.79UXX")2IX˟˟'LMX%)2DL˟9:FGHIRSX˟>?L<=P )+-ABEFFGLMMNOPRSS ./2334<==>@AABF1249CIX "')*189X"#XRSUVVWX())*01:;>?PQQRRSSTXVp"VAVyAVWAW?ABWfBWA A  '(()GHHIXA'NAcAxAHIXA L"#()BCHIX LA LA L"#X LASTXAOHIRSXAȓA* ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}ɒɒɒ˟ɒ  |0 @ 00 07=0vK7 LZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}˟CCC#C2CACVCqCCCCCD D(DEEEF;FhFCCFFNNSSȓXȓ pʅʅʔ9XʣʣXʣHʣ+YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~uxl luuumL v mv9vbvvv ww_wwwwxyz^z"vr{F{|. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX#Y#0##֬#ֻ#$$10›ez0I^m*$3H0WfEZuׄן . !!""##$$%%&&))**++,,//001122335599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWW A\wҤҿ(=ӂѨ-ѨH]xԇ "Ԝ!R#PqՒNճ.Uj֝#J())**0Ѩѽ9@AABBCCDDEEFFGGRRUUVVWWXX0w<!600KlчIIJJKK0UUVV""))**++,,--../2334455667788AABBCCUUXmЈ0  Yn0 (ЗЬ##$$,,889;<<==>>QQRRSSϒϿ0(0=*((wσTXʣ!14:<=?CIXʣʣʣʣʣ((ʣEIOPVʣ)FGGʣDEHʣ)DEHʣ)/ʣ#$$ʣ>BFXʣʣ$CFʣʣʣʣOTXʣʣENNʣʣ48:HʣʣʣFIXʣʣʣ!)2679<ʣʣ)FIMʣHIOʣ#(())*Xʣʣ (+,8ʣʣ9:<<==IJʣʣHIXʣ .ʣʣPQXʣʣIIJKLMNNXXʣʣʣʣHISVVʣʣʣ&&)Aʣʣ?@Mʣʣ )KLLOOʣʣKLXʣʣ"%'(3355ʣʣʣ*,DEPWWXXʣʣʣ78Cʣ %(),ACIKLNRTUVVWXʣʣʣ  !$&))006:;@ACXʣʣ"#')*,011ʣʣʣ9KLOʣ)+LMSWXʣʣʣʣʣVVʣ)99ʣ#)NOSʣ %(),.02NQSXXʣʣʣʣʣ "=>?ʣ<=@ʣBDEIJʣVXʣ)IXʣIXʣ ,066778ACOQUWWʣ(9HʣʣUXXʣ789Wʣ #(+035RTʣGHKMVXXʣʣ6789XʣHIJʣ  #$$%;<@EEʣʣʣʣʣLMXʣʣ9JKPTTVWXXʣʣʣ#>?FIXʣ ,9UʣKLXʣʣ((>>ʣʣABOʣ$%&TVʣʣʣIIKMPQWXʣʣʣʣ9CDHKMNOʣʣʣ;?Lʣ<=Pʣ )+-ABEFFGLMMNOPRSSʣʣʣʣʣ ./2334<==>@AABFʣʣʣʣ1249CIXʣ "')*189Xʣʣ"#XʣRSUVVWXʣʣʣ())*01:;>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXZ{,Y T L s        ' H&&5566778899;;==AABBCCDDEEFFGGHHIILLPP+@Ods=$3`LLNNPP_tAP22334499;;<<==>>??@@AABBCCDDHH'Nc~,EEFFQQTTWWXX-Zu ))**,,//4455667788 -Z99 ``o9XZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}Q`o~5DSh1c $$&&AADDMMSSTTVVWW' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVVav!6ETo==,;Vk%@Op))**=LDDEEVVWWXX(KKUUVV""AABBCC2Gbq ##$$,,<<>>#((TX!14:<=?C((IOGGEH)/#>BFX$CFOTXENN48:HFIX679<IM((*X (+==IJIX .QXIILMXXISVV&&@MLLLX"%'(EPWW8CTUWX !$&00;?=@DEVX)66778ACOQUWW((9HXX78RT!YZZ[]^^__`bccdfgghhiijjkkllmmnnooppqqrrssttuuvvwyzz{{||}}~i|'|>|U|l||||}},}O}f}}}~k5R3HIMOPSVWWXXȓɒ"#Xȓ!""##*VXXɒȓȓ )CHLȓȓȓ%&)3559Xȓɒȓȓ #$89BDDEEGHIIJXȓ˟˟ɒȓ ,../68=>?@ACFGHIRSUXXȓȓȓȓ˟(())**+HIXȓȓȓ#&Xȓ>?IJJȓ"#CDLMNQQSSVV˟ȓɒȓ!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXN >d-l#bdE`0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX0:g 0-BWx$,;J_z "7Xs0@0++,,IKLLMMNNOOPPQQ6ixW0 ,Mh0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX00<Wl0{ >_zFs00 9XXH $$&&AADDMMSSTTVVWW"1@O' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVV "7Rgvnn0?N]l  AVq))**n}DDEEVVWWXX /DYKK UUVV""AABBCCcx ##$$,,<<>> '66ET((TX!14:<=?C((IOGGEH)/#>BFX$CFOTXENN48:HFIX679<IM((*X (+==IJIX .QXIILMXXISVV&&@MLLLX"%'(EPWW8CTUWX !$&00;?=@DEVX)77(9HXX78RTHKMVIJ$$<@EEMX9JXX?F ,LX>>BO%&TVIIKMPQWXDHNO@BF24)*18#XSUWX(*0;<UUWX !$&00;>BO%&TVIIKMPQWXDHNO@BF24)*18#XSUWX(*0;<UUWX !$&00;?HIX:q> ,--.7889IJJKWXX>:q>:q;X:q=n:q=n()56X:q=n:q !"#,--../1267<==>>??@@AABBCFGGHRSTUX:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n"#&''(89X:q=n:q=n:q=nNOX:q=nBCX=n:q=>CDGHJKLMX=n:q=n:q=n:q>??@@AEFFGHIX=n:q=n:q=n:q=n@AGHHIX=n:q=n:q /089?@@AGHHIOPPQWXX=n:q=n:q=n:q=n:q=n:q  !'(()/00178X=n:q=n:q=n:q=n:qGHHIX:q=n:qYZZ[]^^__`bccdfgghhiijjkkllmmnnooppqqrrssttuuvvwyzz{{||}}~Jm2[~/^EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX Yt0t04gv ))**++,,--//4455667788v:B99 @@9XȓȓHȓ. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX#Y#0###O#$$10$Lez0I^m $3H0Wfu / !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWaaaal=l^lllmmm0mummOmnn,OnGnb n}n  nn!Roo4oaoo"$oop0]r#J())**0OO9@AABBCCDDEEFFGGRRUUVVWWXX0!<O O'{00O<O]OxIIJJKK0NUUVVDN""))**++,,--../2334455667788AABBCCUU2h2}20  Yn0 (C2DD##$$,,889;<<==>>QQRRSS111411202202G*((HHw1 ͅͅ9X:q:qH:q $$&&AADDMMSSTTVVWW '6' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVVy 9N]lUU&5DSn(=Xg))**UdDDEEVVWWXX+@KKUUVV""AABBCCJ_z ##$$,,<<>>,; !!""#'((),--../12234668899::;;<<==>>?DIWXX5^5m55;6555^5^66!5^605^6?6N6]6l65^665^5^6STXO:q!14:<=?C:q:q:q:q:q((:qIO:qGG:qEH:q)/:q#:q>BFX:q:q$CF:q:q:q:qOTX:q:qENN:q:q48:H:q:q:qFIX:q:q:q679<:q:qIM:q((*X:q:q (+:q:q==IJ:q:qIX:q .:q:qQX:q:qIILMXX:q:q:q:qISVV:q:q:q&&:q:q@M:q:qLL:q:qLX:q:q"%'(:q:q:qEPWW:q:q:q8C:qTUWX:q:q:q !$&00;?:q=@:qDE:qVX:q):q:q77:q(9H:q:qXX:q78:qRT:qHKMV:q:qIJ:q$$<@EE:q:q:q:q:qMX:q:q9JXX:q:q:q?F:q ,:qLX:q:q>>:q:qBO:q%&TV:q:q:qIIKMPQWX:q:q:q:qDHNO:q:q:q@BF:q:q:q:q24:q)*18:q:q#X:qSUWX:q:q:q(*0;<:q:q:qUUWX:q:q:q !$&00;?X=n:q<=X=n:q"#%&()23VWX@AABX=n:q=n:q=n:q=n:q1289CDHIX=n:q=n:q=n !!"'(89X=n:q=n:q=nRSUVVWX:q=n:q=n:q ())*01:;>?HIIJX:q=n:q=n:q?HIJKTUUVX:q=n:q=n:q=n:q?HIJKMNX:q=n:q=n:q?HIQRRSX:q=n:q=n:q?HIIJJKX:q=n:q=n:q@ACDFGRSX:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q=n:q())*>?HIX:q=n:q?HIX:q=n:q=n:q=n:q?HIIJKLX:q=n:q=n:q?HIRSX:q=n:q=n:q=n:q?HIX=n:qBFXȓȓ$CFȓȓȓȓOTXȓȓ 22239X>>X>H>. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX 2j&GV>t>>j&.C^j&!6K>?j& ?1?L?gn?v?/ !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWW9v999::':T:o::::;>;};9F;;;9F<<+A>;>P>())**j&9F9[9@AABBCCDDEEFFGGRRUUVVWWXXj&88-Nj&j&89 9%IIJJKKyyyj&y8UUVV8t8""))**++,,--../2334455667788AABBCCUU788 j&wxx9xNx{j&xxxxyy#8/8D8Yy##$$,,889;<<==>>QQRRSS7u7E7Tv7o77vtj&7j&7vw w((HHuWufu7 uTX>!14:<=?CIX>>>>>gb((>EIOPVgb>gb)FGGgb>DEHIRgb>e)DEHIRgb>e)/gb>#$$)2gb>gbe>BFX>>$CF>>>>OTX>>ENN>>48:H>>>FIX>>>!)2679<gbgb>>")FIMegb>HIOgb>#(())*Xgb>gb> (+,8>>gb9:<<==IJgbgb>>HIXgb> .>gb>PQX>gb>?HIIJKLMNNXX>e>gb>gb>HISVV>gb>>&&)AIR>>gbe?@MOX>gb>e )KLLOOgb>gbgb>gbKLX>gb>"%'()23355>gb>>egbgb*,DEPWWXXgbgb>>gbgb>78CIRgb>e %(),ACIKLNRTUVVWX>gbgbgbgbgbgb>gb>  !$&))006:;>>gb>gb>>>MNXgb> #)2778:>gbe>gb )2>gbgbeGHNQXgb>>1456>gb>)2>gbeCDPQQgb>gb6DIR>eDESgb> ""%,./1HINPQTWXXgbgbgbgbgb>>>gb)2>gb>e)*039::<<==gb>>gbgb>#$KLRSSTWgb>gb>gb> ))*45X>gb>gb"#266IXgb>gbgb!#GHOQXgbgb>>(+@BOgb>>!"$IJOSSUVXXgbgbgb>>>> )29>@ACX>gb>egbgbgb"#')*,0119Bgb>>>gbe9KLOgb>)+LMSWX>gb>gbgb>>)2>eVV>)99gb>#)NOSgbgb> %(),.02NQSXXgb>>>gbgbgb>> "=>?gbgb><=@IRgb>eBDEIJgb>gbVX>)IXgb>gbIXgb>gb ,066778ACOQUWWgbgbgb>gbgbgbgb(9HLM>>hUXXgb>6789Wz%>gb #(+035RTgbgbgbgb>GHKMVXXgb>>gb6789Xgb>gbHIJgb>  #$$%;<@EEgb>gb>gb>gb>>LMX>gb>)29JKPTTVWXX>e>gbgbgb>"#>?FIXegb>gb ,9Ugb>gbKLX>gb>(()2>>IR>gbe>eABOgb>$%&)2TVgb>gb>e>IIKMPQWX>>>>9CDHKMNO>gb>gb>;>eCHJNTUgb>z%gb23459X>z%z%%%&&'(CGHHXX>Cf>>hh--9=?HJJXXhh>>gbgb)I>=DGHJKLgbgb>gb@HHXXgbgb>!')/179Xgbgbgbgb>/YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~G~HJFHK7TkKK &OxK ^ShuhENNȓȓ48:HȓȓȓFIXȓȓ !!""#'((),--../12234668899::;;<<==>>?DHHIWXX5^ȯ;6555^Es5^66!5^605^6?6N6]6l65^665^u5^6STXO>CHIIJNTUVVgb>Oz%gbO%%&&'(CGHHUUXX>Cf>>hOh""--9=?HJJXXhOh>>gbgbDW>"/279;=@FJMe>>>>>&(()2369X>>e>gb368gb>*+.8JKMgb>gb>*+,9EGIKLgb>gbgb>MX>,669B>>e$()29X>egb ABBCCIXgb>gb>gbgb79DITgb>>/04gb>.79UXX>>>")2IXee>'>LMX>gb>%)2DL>gbe>9:FGHIRSX>gb>gbegb>?Lgb><=Pgb> )+-ABEFFGLMMNOPRSS>>gb>gb>gb>gb ./2334<==>@AABFgb>gb>gb>gb>1249CIXgb>gbgb "')*189Xgbgb>>gb"#Xgb>RSUVVWX>gb>gb>())*01:;gb>gb>egb %(),ACIKKORUUVVWXgb>gbgbgbgbgbgb>gb>  !$&''00568:;>>gb>gbgb>egbgb> #(),ACIKLNOQRUUWX>gbgbgbgbgbgbgb>>  !$&**2577?HIJKMNN>>>>gbgbe>gb> &(*,ACIKLNRUUVVWX>gbgbgbgbgbgb>gb>  "$&))9:;>>gbgb>egb> %(),ACIKLNRUUVVWX>gbgbgbgbgbgb>gb>  !$&.0568:;>>>gbgb>egb #')+.235578<=ACGRWX>gbgbgbgbgbgbgbgbgbgb>!#&))00?H>>>gb>e %')+ACRUUVVWX>gbgbgbgb>gb> !#&./13669:;>>>gbgbgb>e %')+ACLNRUUVVWXgb>gbgbgbgbgb>gb> !#&./679:;>>>gbgb>egb>%')+STUVVWX>gbgbgb>gb> !#&''-/008:;>>gbgb>gb>egb/3JLTVV>gbgbgbgb##(-//18?HKLgb>>>>e>JJMS>> ')2>eJJMU>>!')2>e129BNNPPRRWXgb>e>>>> "EJXgbgb> !%&02U>>gb>>>ȓ!)2679<ȓȓ")FIM˟ȓHIOȓ#(())*Xȓȓ (+,8ȓȓ9:<<==IJȓȓHIXȓ .ȓȓ O@,@,O9X=n=nH=n. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX#Y#0##[#[#[$$10$Lez0I^m[\$3H0Wf\\8\S\b\} / !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWVbV}VVVWW@W[WWWWX*XiX~V2XXXV2XY Y2YG  Y\Y!RYYZZ7ZX"$ZyZZZ['[<[o#J())**0V2VG9@AABBCCDDEEFFGGRRUUVVWWXX0!<UU{00UUVIIJJKK0UUUVVU`Uu""))**++,,--../2334455667788AABBCCUUTTU 0  Yn0 (CUU0UE##$$,,889;<<==>>QQRRSSTT1T@4T[TpT0T0T*((HHwSTX=n!14:<=?CIX=n=n=n=n=n((=nEIOPV=n)FGG=nDEHIR=n˟)DEHIR=n˟)/=n#$$)2=n˟>BFX=n=n$CF=n=n=n=nOTX=n=nENN=n=n48:H=n=n=nFIX=n=n=n!)2679<=n=n")FIM˟=nHIO=n#(())*X=n=n (+,8=n=n9:<<==IJ=n=nHIX=n .=n=nPQX=n=n?HIIJKLMNNXX=n˟=n=n=nHISVV=n=n=n&&)AIR=n=n˟?@MOX=n=n˟ )KLLOO=n=nKLX=n=n"%'()23355=n=n=n˟*,DEPWWXX=n=n=n78CIR=n˟ %(),ACIKLNRTUVVWX=n=n=n  !$&))006:;@ACX=n=n˟"#')*,0119B=n=n=n˟9KLO=n)+LMSWX=n=n=n=n)2=n˟VV=n)99=n#)NOS=n %(),.02NQSXX=n=n=n=n=n "=>?=n<=@IR=n˟BDEIJ=nVX=n)IX=nIX=n ,066778ACOQUWW=n(,,9HLM=n E=n UXX=n789W=n #(+035RT=nGHKMVXX=n=n6789X=nHIJ=n  #$$%;<@EE=n=n=n=n=nLMX=n=n)29JKPTTVWXX=n˟=n=n"#>?FIX˟=n ,9U=nKLX=n=n(()2>>IR=n˟=n˟ABO=n$%&)2TV=n=n˟=nIIKMPQWX=n=n=n=n9CDHKMNO=n=n=n;>?DHHIWXX5^;6555^b5^66!5^605^6?6N6]6l65^665^5^6STXO=nCHIITUVV=nOO %%&&'(12==@@CGHHUUXX=n`R=n E E E=n O ""--9=?HJJXX O =n=nDW=n"/279;=@FJM˟=n=n=n=n=n&(()2369X=n=n˟=n368=n*+.8JKM=n=n*+,9EGIKL=n=nMX=n,669B=n=n˟$()29X=n˟ ABBCCIX=n=n79DIT=n=n/04=n.79UXX=n=n=n")2IX˟˟=n'=nLMX=n=n%)2DL=n˟=n9:FGHIRSX=n=n˟>?L=n<=P=n )+-ABEFFGLMMNOPRSS=n=n=n=n=n ./2334<==>@AABF=n=n=n=n1249CIX=n "')*189X=n=n"#X=nRSUVVWX=n=n=n())*01:;@ACXȓȓ˟ pfp{p{p9X>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWvww;w\w}wwwxx@xUxpxxy vy0yQylvyy yy  yz&!RzGztzzz"${{{R{{{{#J())**0vv9@AABBCCDDEEFFGGRRUUVVWWXX0!<v0vK{00v`vvIIJJKK0vUUVVuv""))**++,,--../2334455667788AABBCCUUugu|u0  Yn0 (Cuuu##$$,,889;<<==>>QQRRSSttt4ttu0u10uF*((HHwtTXBFX@ACX??FIX˟>IR>?DHHIWXX5^;6555^e5^66!5^605^6?6N6]6l65^665^5^6STXO?L@AABF?@ABCDEFGHIJKLMNOPQRSTUVWXYYZ[\\\\\\\]^_`abbcdefghijklmnopqrstuuuuuuvwwxyz{||}~?FF9X9H9"9*VXX99 999)355999$8II99/68=@ACF9999((**IX999#9?I9DLVV99!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXkuuuuuuuvu=vujvuvvvv wu0wU]wwwwwwwx)x8xYx&&5566778899;;==AABBCCDDEEFFGGHHIILLPPssst't>??@@AABBCCDDHH)>Yhw000EEQQTTWWXX ))**,,//4455667788,q^s$99ؼFFWXWHW"W*VXXWW WWW)355WWW$8IIWW/68=@ACFWWWW((**IXWWW#W?IWDLVVWW!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXP;q;;;;;;;;"<;O<;v<<<<<;=pB=i=x======>>>>&&5566778899;;==AABBCCDDEEFFGGHHIILLPPt8888888 9"919F9[9j9Y9999999LLNNPP828G8V86e87822334499;;<<==>>??@@AABBCCDDHH6666 7!7<7K7Z7o777777EEQQTTWWXXp66666 ))**,,//4455667788-/Vez99BBFFGGO9O%%''((,,//0011223344556677==EEFFLLNNPPssA1;;; <<~~~^5.^5C|P1_1##js0u; ))**,,//4455667788,q^s4ZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}BA-B?@ABBCFGHIRSUVWXXL AL OAOL OAOL L AL '(())**+HIXAOL OL O#$%&XOAL >?IJJKXL OL A "#CDLMNORSSTUVVWXL OL AL AOA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXbiiijjCjjj~kknllFmm*nno_oo7pppTqqq#rJrqrrrsOs1!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXeeMfC B  !E!f!!!B!!"ffg(gUg |gRgp#A#gg$hKh`h{hhhh$%iB^5B%%&1& *++,,-HIKLLMMNNOOPPQQRXdd^3e!ANcABNe{eeA !#$$%%&&'XOdAdheBehAzhLhAXA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIXB B'aaaBaVSBh}cdBAd\dddd))**++,,--..//023344556677889XϹayAyA,AFyAXyA899:XyA@yA(yA; YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  # # #  #  T  P$ $$$ $ 8[%Y%%% :&&&&&'y'J({))I]*v""I++;+u8 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  !, !, !,  T  - $ ]-- - 8.C.~../ G/////200"22I3v""I3:4;4u3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~    T   $G^  8[$_ Fi ^!I!v""I"-#;#u BCCDEFFGMNNORSSTXAAA AAA/001OPPQXAAX0167XAX  HIMNNOPQRSVWWXX AAA  !#$$%%&&':;;?@ABBCFGHIRSUVWXXA A  A A'(())**+HIXA   #$%&X A>?IJJKX A "#CDLMNORSSTUVVWX AA A!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXXrrrrs9sxsstttduu>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXbk}kkl0Flll m0mQmlmm0mmmm,nknnn)AncOo4oAOojooooo p>??@@AABBCCDDEEFFGGHHIX0cc0cd?dZdud0dde)eDeeeee7fRfff gZg0ug0X0677880:DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXAJb(QOQdQ0yQQQQbb0ccRIcjc))**++,,--..//023344556677889X]yAyA,MRyA899:XyAQyAZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}`|o|~||||||}/}J}Y}h}}L~~- BCCDEFFGMNNORSSTXAAAAAAX HIMNNOPQRSVWWXXAAnS"#XA!""##$)*VWWXXnSAA  !()CDGHLMXAAAAAA $%&'()34455689XAnSAAA #$BCCDDEEFFGHIIJXAnSA,--../6778=>?@ABBCFGHIRSUVWXXAAAA'(())**+HIXA#$%&XA>?IJJKXA "#CDLMNOPQQRRSSTUVVWXAnSAAA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXmٜ'N sK/¡dӢ<Y(OvT1!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXjl0Flll mQmlmm0mmm$9f)AcO4oAOo/Vkpp0Q0Dqkqqq *++,,-HIKLLMMNNOOPPQQRX"iPXiiOAj'jA0kijjGkA !#$$%%&&'XHAh)h0JhehAzhLhA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0cc0cϔud0de5P•C^֖ gZg00DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXAP(QOQdQ0yQQQQQR0iRRRS#S))**++,,--..//023344556677889Xu]yA0yA,+yA899:XyAyA$ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}| 0 ΰ 000 7Xy0-Tit ̵; BCCDEFFGMNNOOPPQRSSTXAAAAAïAAMNNOPQRSVWWXXAAA  !#$$%%&&':;;>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX0 K tRQ8.U|'/!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMTUUVVWWXX8l0Flll mqQmlmm0mmm.)AUcOp4oAOo0Hecppx0Dqkqqq *++,,-HIKLLMMNNOOPPQQRX"i*XiiOAj'jA0EijfjGkA !#$$%%&&'X(Agh)h0JhehAzhLhA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0cc0cZ0OQud0de00#bMb gZg00DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXA((QOQdQ0yQQQQy0R]x))**++,,--..//023344556677889XT]yA yA,rwyA899:XyAyA3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  & - 4 - 6j R6i6+x 6 67a77 7N888899;;I;0I<0=;=u BCCDEFFGMNNORSSTXAAL AAL AL AX HIMNNOPQRSVWWXXL AL AL AL "#XL AL !""##$)*VWWXXL AL AA  !()CDGHLMXAAAAL AL A()34455689XAAAL  #$89BCCDDEFGHIIJXL AAL L ,--../6778=>?@ABBCFGHIRSUVWXXL AL AL AL L AL '(())**+HIXAL L #$%&XAL >?IJJKXL L A "#CDLMNORSSTUVVWXL L AL AA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX&&'9'N'u'')((1))*x**\++@,,-i--..../U/|///!0H001!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX C B  !E!l!!!!B!!";"h"""" #RC#p#A####$*$E$x$$$$%/%B_B%%&1& *++,,-HIKLLMMNNOOPPQQRX^y!ANcABxDA !#$$%%&&'XA)JeBA_A*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIXB B'TB Vk:y KBBDEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXA>SBh}B(Cp))**++,,--..//023344556677889XRyAsyA0QyA899:XyAUyA3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  = = = = >H?w??w???9@w?\@w?@@@AkAAw?AB9B\ByBByCD!EIE9FPFIsFF;[Gu BCCDEFFGMNNORSSTXAA%zA%zA%zA%zA/001OPPQX%zA%zA%zX%z0167X%zA%zMNNOPQRSVWWXX%zA%zA%zA%z  !#$$%%&&':;;>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX9clkI rۮha!HGn:a/!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMTUUVVWWXXocۥ&kŦ"c7Rs0QlAϨ8cMczשc% *++,,-HIKLLMMNNOOPPQQRXWϢ[AԣAc =dA !#$$%%&&'XpAСc A'cBA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIXccӞcޜc0occ:>kנ(cCcXc67788cgDEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXAfޜcZ8YcΝ))**++,,--..//023344556677889XԂ!fyAyA  _%yA899:XyAyA; YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  # # #  #  T  a\ $\\ ] 8[/]j]]^ Q^^^_=__a`abItbv""I-cc;du8 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  !, !, !,  T  T $KU- GU 8.pUUV?V VV&WIWrWWXY>ZIZv""IV[[;>\u3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  ~G H FJ H KKKL9LPLLLKMK*MMMMMNQNKNO8O[OOOPQPRIRhSSIST;Tu BCCDEFFGMNNORSSTXAAbgAhAbgAbgA/001OPPQXbgAbgAbgXbg0167XbgAbgXh HIMNNOPQRSVWWXXhbgAbgAbgAbg  !#$$%%&&':;;?@ABBCFGHIRSUVWXXbgAbghAhbghAhbgebgAbg'(())**+HIXAhbghbgh#$%&XhAbg>?IJJKXbghbgA "#CDLMNORSSTUVVWXebghbgAbgAhA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX>k   X  Z   k  I   <51!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX $u&j8}4&jId'T&{A,Y+Fs&j6&jo *++,,-HIKLLMMNNOOPPQQRXQ~5AA&jCjA !#$$%%&&'XAС&j6A'cBA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX&j&jFa|&j0K>Ya&j|&jX&j67788&jDEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXAR&j0Q~&j5))**++,,--..//023344556677889XZ9ZyA{yA #DvyA899:XyAyA BCCDEFFGMNNOOPPQRSSTXAAAbgAAïAA HIMNNOPQRSVWWXXbgAAA"#XAbg!""##$)*VWWXXAAbgAbg  !()CDGHLMMNXAbgAbgAbgAAïA()34455689XbgAbgAbgA #$89BCCDDEFGHIIJXbgAAbg,--../6778=>?@ABBCFGHIRSUVWXXAbgAbgbgAbgA'(())**+HIXAbgbgbg#$%&XbgA>?IJJKXbgA "#CDLMNORSSTUVVWXbgAAbgA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX--.U.j...E//M00111 2x2 3\334449555J6q6666=7d771!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX/*J**l0Flll m*Qmlmm0mmm*"+a+v++)A+cO+4oAOo*,E,r,,,,,)-D-pp_-0&j0Dqkqqq *++,,-HIKLLMMNNOOPPQQRX(6)"i)XiiOAj'jA0)ij)j)GkA !#$$%%&&'X(A(С)h0JhA'cBA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0cc0c%%&ud0d!&el&&&& ';'z''' ( gZg0L(0DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXA$(QOQdQ0yQQQQ$0%1%R%s%))**++,,--..//023344556677889X Z]yAyA 1p6yA899:XyAyA BCCDEFFGMNNORSSTXAAAeAAAXe HIMNNOPQRSVWWXXeAAnS"#XAe!""##$)*VWWXXnSAeAe  !()CDGHLMXAeAeAeAAA $%&'()34455689XeAnSAeAeA #$89BCCDDEEFFGHIIJXeAnSAe,--../6778=>?@ABBCFGHIRSUVWXXAeAeeAeA'(())**+HIXAeee#$%&XeA>?IJJKXeA "#CDLMNOPQQRRSSTUVVWXeAnSAAeA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXJWWWWX+XjXXfYYVZZ.[[\\\G]]^^^<___ `2`Y````7a1!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXSS5Tl0Flll mnTQmlmm0mmmTTTU=U)AdUcOU4oAOoUU V3VHVcVVVVppV0<0Dqkqqq *++,,-HIKLLMMNNOOPPQQRXyRR"iSXiiOAj'jA06SijcSjSGkA !#$$%%&&'XRARRС)h0JhA'cBA*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0cc0cROOOud0dOePPfPPPPQ)QhQQ gZg0Q0DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXA/N(QOQdQ0yQQQQNR0NR1%NO))**++,,--..//023344556677889X<=]A?yAb?yA ? @+@@]AyA899:XyA5<yAFF~X~H~"~*VXX~~ ~~~)355~~~$8II~~/68=@ACF~~~~((**IX~~~#~?I~DLVV~~!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX-N]rҏ,SzːFU|đ&&5566778899;;==AABBCCDDEEFFGGHHIILLPPڍ"7F[pӎ&LLNNPPŠ. $$%%&&,AP_n22334499;;<<==>>??@@AABBCCDDHHEZixωމ&Ab} EEQQRRTTUUVVWWXXOm|!6 ))**,,//334455667788DvӂN99BBFFGGO~O%%''((,,//0011223344556677==EEFFLLNNPP/b;;; <<~~~^5.^5C|.  ##$$%%&&,Au;P_n ))**,,//334455667788DvӂTZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}Q`o~5DSh1c+YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~xul luuuLm v m9vbvvvv w_wwwwwxy^zzv"rF{{|$ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}[| 0 | 000 760] i ACCFFNNPPSSE /1OQX07XXHIMOPSVXX !#%%':?@ACFGHIRSUXX(())**+HIX#&X>?IJJ"#CDLMNSSVV!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXZۿJ+p9x/n+p Ql0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX0:gD߲ 0-BYz˽$,;.C^yľ7X0٦0͵++,,IKLLMMNNOOPPQQ]iɶҪW0ض,h3Nө0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0ܦ0,Mhl0{}״ +FaʵFs00677880ǦEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXYt0t%0۳%g ))**++,,--//4455667788v+FͩN99BBCCFFGGNNPPSSOOE  %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQiiɶ#Ҫz; <<~~^5.^5C|0ض,h##BNө0u; ))**++,,--//4455667788v+FͩNCCFFNNSSXHIMOPSVXX!#%%':?@ACFGHSUXX(())**+HIX#&X>?IJJ#CDLMNSSVV!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXWA[WA7^B.!""##$$%%&&''(())*12233445566778899::;;<<==AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXD0:ge߲ 0-Bz$(CXs X00͵++,,IKLLMMNNOOPPQQf{iҪW0,h<Wө0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0ܦ0BYzl0{1LgFs0!0EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXYt0t0g2 ))**++,,--//4455667788vHcxb99OFFXH"*VXX )355$8II/68=@ACF((**IX#?IDLVV!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX'6KZu,Sh.Ujy&&5566778899;;==AABBCCDDEEFFGGHHIILLPPbq4IXnsLLNNPP  5DS22334499;;<<==>>??@@AABBCCDDHH*9H]rEEQQTTWWXX^m ))**,,//4455667788:I^99xBBFFGGOq:OXq:Hq:"q:*VXXq:q: q:q:q:)355q:q:q:$8IIq:q:/68=@ACFq:q:q:q:((**IXq:q:q:#q:?Iq:DLVVq:q:!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX#2#A#V#e#######$#7$^$s$$$#$l%*%9%`%u%%%%%%%&&5566778899;;==AABBCCDDEEFFGGHHIILLPPm!|!!!!!!""*"?"T"c"U~"""""""%%''((,,//0011223344556677==EEFFLLNNPP %!@!;;; <<~~~^5.^5C|O!i^!##  u;22334499;;<<==>>??@@AABBCCDDHHx  / D Y h    EEQQTTWWXXETix ))**,,//4455667788\I^99CCFFNNSSbg>bgbg/1OQXbgbgbg07XbgbgX>HIMOPSVXX>bgbgbgbg!#%%':bgHJXbgbg/25779Xbgbgbgbg!##*VXXbgbg>> )CHL>>>bgbg)3559X>>>bg#$89BDDGHIIJXbg>eebg>bg ,../68=>?@ACFGHIRSUXXbgbg>>bg>>bgebgbg(())**+HIX>bg>bg>#&X>bg>?IJJbg>bg"#CDLMNSSVVebg>bgbg>!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXHHHI*IQIII JeJJJ.KsKKL0LiLLL2MeMMMNN.NCNXNNNN0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXF*FWF&j%F~Fv&jFFFFGij GؽMGhG}GGGGGG+H@HUH&j2&jId++,,IKLLMMNNOOPPQQBB5BS &jC$C4?C  $$%%&&^BBo&jc*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX&jfu&jW@x@@&j@k@A5AVAqAAAAAB&j=B&j67788&j<QEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX? (7&jF&Uj?&j@ʿ@0@ ))**++,,--//3344556677883'45sD5s_5s555y66992BBCCFFGGNNSSObg>Obgbg %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQEE5B; <<,~~^5.^5C|&jC$C4?C  ##$$%%&&EBo&ju;c ))**++,,--//3344556677883'45sD5s_5s555y6DCCFFNNPPSSn=E Xn=HIMOPSVXXn="#Xn=!##*VXXn=n= )CHLMMn=n=n=E )3559Xn=n=n=#$89BDDGHIIJXn=n= ,../68=>?@ACFGHIRSUXXn=n=n=n=(())**+HIXn=n=n=#&Xn=>?IJJn="#CDLMNSSVVn=n=!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXe.fOfvffff0ggg hPhhhidiii jNjjj k2kekzkkkkkl.l0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX|ccc0:gc߲ 0-Bcde_eee7Xe0,@0͵++,,IKLLMMNNOOPPQQt__i_ҪW0_,`h+`J_e_ө0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0ܦ0C]d]]l0{]]]!^B^]^x^^^^_Fs0)_0EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX\Yt0t\%0\%g]] ))**++,,--//4455667788P%QvBR]RRRReSS99OBBCCFFGGNNPPSSOn=OE  %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQcIci_#Ҫz; <<~~^5.^5C|0_,`h+`##be_ө0u; ))**++,,--//4455667788P%QvBR]RRRReSbZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}CC#C2CACVCqCCCCCC D(DDEEE;FhFFCCFFNNSS!<X!<HIMOPSVWWXX!<"#X!<!""##*VXX!<!< )CHL!<!<!<%&)3559X!<!<!< #$89BDDEEGHIIJX!<!< ,../68=>?@ACFGHIRSUXX!<!<!<!<(())**+HIX!<!<!<#&X!<>?IJJ!<"#CDLMNQQSSVV!<!<!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXˆ(O͇c,q.g0cϋ,AVˌ0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX(U0:g|߲ 0-Bل$K,;f{ۅ)>7XS0{p0͵++,,IKLLMMNNOOPPQQ>iqҪW0,hө0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0ܦ0}}~l0{%~d~~~~~ 0ErFs00EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX#}Yt0t\}0}4g}} ))**++,,--//4455667788pqvrr?sZsossYt99EpBBCCFFGGNNSSO!<O %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQiq#Ҫz; <<~~^5.^5C|0,h##zө0u; ))**++,,--//4455667788pqvrr?sZsossqrrssttu|FFq:&&335566778899;;==AABBCCDDEEFFGGHHIILLPPm!|!!!d!!!""*"?"T"c"U~"""""""LLNNPPč@!O!i^!  ))**,,//4455667788\I^33dsdLLNNPP *@!O!i^! 3ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{|}~~q:.;=;q:X;q:!<q:n=q:>q:n=q:?@,@;@V@@@,@@,@ A%AXAü,@S. gv,1T@IX?N.9K*!K<=@IRBDEIJVX5@@IX)IXIX9O ,066778ACOQUWWXJ,XV(+X IT())--9HLM &())++--IMOX UXX %%'')244:SXX 3789W #(+035RT?FIX ,9UKLX(()2>>IRABO$%&)2TVIIKMPQWX9CDHKMNO"'*/9?AGIXBIX;@@FFIX@HHXX/9?AGIOQW!')/179XHH* ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}} Ĭ| 0 @ 000 7=0vK BBCCFFGGNNSSOO %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQix#Ҫz; <<~~^5.^5C|0 ,Mh##ĩө0u; ))**++,,--//4455667788v:B, !!""#'((),--../12234668899::;;<<==>>?DHHIWXX^5׮6;55^5:^56!6^506^5?6N6]6l66^566^5^56&(HHIXOO")BEJKVWXOO"''*3FXOOOSTXO3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  & - . -  j +x  "] 2e6gI`0IS;RuCHIITUVVOO %%&&'(12==CGHHUUXXū O  ""--9=?HJJXX O  #,..26;;==??AACFHQRRUXOO!-2BCOOBODW"/279;=@FJM&(()2369X &&)SUX!#&)/11369X!#&)IKNQW!/1X)+.1X368(9XNQVXEHX39XCGQ*+.8JKM*+,9EGIKLMX,669B$()29X ABBCCIX79DIT()2/04.79UXX")2IX'LMX%)2DL9:FGHIRSX>?L<=P"&()23V!)SVX )+-ABEFFGLMMNOPRSS.169X!&)02244668VMOUWW%),/49EKMOU ./2334<==>@AABF1249CIX "')*189X"#XRSUVVWX())*01:;>@@AABBCCIIKKMMNNOOTTUUVVT%TFTaTvTTTTTTTUUQU`U?uUUU?UU’ђ+F[jʓ))**?SDDEEVVWWXX?>???KKv?UUVVR?g?""AABBCC>>> ?"?7? ##$$,,<<>>M>t>>>>>>> ((9H?XWTX9YZZ[]^^__`bccdfgghhiijjkkllmmnnooppqqrrssttuuvvwyzz{{||}}~F]t"KnTq R #$89BCCDDEFGHIIJXn=q:!<q:!<q:n=q:n= ,--../=>?@FGHIRSUVWXXn=q:n=q:n=q:n=!<n=q:n=())**+HIXq:n=q:n=q:%&Xq:n=>?IJJKXn=q:n=q:"#CDLMNORSSTX!<n=q:n=q:n=q:!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXH+++o9++/,,,L----.l../e//0@000111$1E1f11!""##$$%%&&''(())*12233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX|&/&,@n&&&1'X'm''',@'''(<(i(&](HF(1(()#)J)w))))),@,@4*[*** *++,,-HIKLLMMNNOOPPQQRX}",@3f !#$$%%&&'X    ,@8M&hX*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX,@  ,@  Hϒ ,@ _     ( I d     K ,@f ,@X,@67788,@W r DEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX}ڟ,@1Fa,@ʠߠ -N !X~AA89XA A X HIX A7 !"##$$%%&&''(()*++,,--..//00145566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKOK0pKAKA`AK`K`3LNL0{LLLLMA0bMwMMAMN1NFNmNANAa O'OxacOxOOA0OOaAaaAPb)bP7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXVYqYYYZCZZZZ![D<[c[[AA\V\ Y\A\\ Y ]7]GX]A]A_GtG]]%H*^i^^^)AA^?I#_AP___A1`R``JA &''(())**+-../VWWXX0A00AQ ())**+X0 Y5YA()1223XA0A89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0)A>AeAQX~XAAA0A0XXX HIIJJKKLXAA0!XATUUVVWXAWXA !""#())**++,,--../23344556677889@AABBCCDTUUVXAW1WA^WA00 ;nAyWWWAyA"##$$%+,,-7889;<<==>>?PQQRRSSTXUVA2VAYVzVAVAl0V0VAbUA  '(()GHHIXA3ZAoAAHIXA"#()BCHIXAA"#XASTXA HIRSXAA; YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  # # #  #  T  P$ $$$ $ 8[%Y%%% :&&&&&'y'J({))I]*v""I++;+u))**++,,--..//023344556677889X+2l367&7G7778s88X(Xq: 9XWWXWHW $$&&AADDMMSSTTVVWWF5556%646C6R6a6' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVV} "=RapYY2Mh}7))**YhDDEEVVWWXX 4/DKKUUVV""AABBCC ##$$,,<<>>%4CRRap((TXW!14:<=?CWWWWW((WIOWGGWEHW)/W#W>BFXWW$CFWWWWOTXWWENNWW48:HWWW !X0QAQ`A89XAAXHIXA7 !"##$$%%&&''(()*++,,--..//00145566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKOK0pKAKAKAKKK L3LNL0{LLLLMA0bMwMMAMN1NFNmNANAN O'O>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXBBCHCCCCDSDDDDEEAEFB?FArFFBFFGGADGA_GtGGG%HFHHHH)AAI?IfIAII/JAtJJJJA())**+X0BBA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0)A>AeAzAAAAA0A0 B1BXB HIIJJKKLXAA0!@ATUUVVWXA@@A !""#())**++,,--../23344556677889@AABBCCDTUUVXA? @A6@A00 ;nAQ@l@@AyA"##$$%+,,-7889;<<==>>?PQQRRSSTX:c:A~:A::A:Al0;0#;AbUA  '(()GHHIXA3ZAjAASTXA8 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  !, !, !,  T  - $ ]-- - 8.C.~../ G/////200"22I3v""I3:4;4uFIXWWW679<WWIMW((*XWW (+WW==IJWWIXW .WWQXWWIILMXXWWWWISVVWWW&&WW@MWWLLWWLXWW"%'(WWWEPWWWWW8CWTUWXWWW !$&00;>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKOK0pKAKAAKլK3LNL0{LLLLMA0bMwMMAMN1NFNmNANA O'OncOxOOA0OOAݭAP P7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXX0 Mnȧ0@gD|A0i0Aéީ0)AG,ApKA_GtGS%H˪eA)AA@?IgA߫AWrJA)**+X0 A89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0)A>AeAobMAAA0A0ئ HIIJJKKLXAA0!BATUUVVWXAA !""#())**++,,--../23344556677889@AABBCCDTUUVXAAA00 ;nA %FAyA"##$$%+,,-7889;<<==>>?PQQRRSSTXXAA0AKAl00AbUA  '(()GHHIXA3ZACAASTXA  !1234:;;<=>>?CDHIXAAAAAFGXA'(()XAAEFHIVWXAA"#&''(XAA()GHXAAHIRSXA()HIRSXAA 89?@@ADEEFGHHIWXXAAAAA()/0XAA$%()23XAA899:;<<==>?@@AABKLLMPQQRRSSTTUXAAAAAAAAA( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXXAAAAAAAAAAAAAAAAAAAA "##$459:<==>BCCDTUXAAAAA=>BCEFXAA$%BCFGXAAAXAA-../XA566789:;;<=>?@ABEFFGRSSTTUUVXAAAAAAAXA  #$%&-../5667RSSTWXXAAAAAA "#)**+XAAA>?@AXA3445STTUXAAA-../MNNOXAA'(()GHHIXAA!""#ABBCXAA$%&'XAAOPSTXAEFMNNOXAA34899:HIXAAAA78=>CDXAAFGHIXA XAX{A89;>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX5b.UL'N]~&&5566778899;;==AABBCCDDEEFFGGHHIILLPP"=Lav5 !6KZiLLLNNPP}^ $$%%&&,AP_n22334499;;<<==>>??@@AABBCCDDHH 9HWl EEQQRRTTUUVVWWXX%4O^m| ))**,,//334455667788$iVk=99 LL[9X{{ $$&&AADDMMSSTTVVWWw' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVVYn.=Lg55$3Nc~8Gh))**5DDDEEVVWWXX XXKKUUVV`u""AABBCC 0E ##$$,,<<>>[((LTX{!14:<=?C{{{{{(({IO{GG{EH{)/{#{>BFX{{$CF{{{{OTX{{ENN{{48:H{{{FIX{{{9;..=@679<{{ILNTVWIM{((*X{{ (+{{==IJ{{IX{ .{{QX{{IILMXX{{{{ISVV{{{&&{{@M{{LL{{LX{{"%'({{{EPWW{{{8C{TUWX{{{ !$&00;?{=@{DE{VX{){{77{(9HLM{{&(XX{XX?X678{RT{HKMV{{78{IJ{$$<@EE{{{{{MX{{9JXX{{{?F{ ,{LX{{>>{{BO{%&TV{{{IIKMPQWX{{{{DHNO{{{>?DIWXX^5m5556;55^5\^56!6^506^5?6N6]6l66^566^5^56STXO{CHIIJNVV{OO%%&&'(CGHHUUXX{{{O""--9=?HO{{DW{/279;=@FJM{{{{{&((36{{{68{+.KM{{+,KL{{MX{,66{{$({BB{{9DIT{{04{.79UXX{{{'{MX{{DL{{:F{{?L{=P{)+-AFFMMPR{{{{{/24<>@BF{{{{24{)*18{{#X{SUWX{{{(*0;<{{{UUWX{{{ !$&00;>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXX>B_AtAA"=BjABQfA 5\A}A+RgABA0Wx7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXX1pB u    q A  t. Aa  t    A3 AN c    5 t    A.UAAcA())**+XBtA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXAB !H]ABAB;WXXA HIIJJKKLX(A=XABATUUVVWXAA !""#())**++,,--../23344556677889@AABBCCDTUUVXAAFABa|KB~AAhAA"##$$%+,,-7889;<<==>>?PQQRRSSTX"7ARyAAABQBrA A  '(()GHHIXA'NAAxASTXA  !1234:;;<=>>?CDHIXAAAAAL FGXL A'(()XAAEFHIOPVWXL AL A"#&''(XAL A()FGGHXAL ADEHIRSXL A()DEHIRSXAL A 89?@@ADEEFGHHIWXXAL AL AL AL AXL ()/0XL AA#$$%()23XL L AA899:;<<==>?@@AABKLLMPQQRRSSTTUXL AL AL AL AL AL AL AL AL A( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXXAL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL A "##$459:<==>BCCDTUXL AL AL AL AL A) ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}E E E  U | 0 B   0 00 E l    0Y2Y 4$ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}[| 0 | 000 760] i A3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~    T   $G^  8[$_ Fi ^!I!v""I"-#;#uCCFFNNPPSSL E /1OQX07XHIMOPSVXXL  !#%%':?@ACFGHIRSUXXL L L L (())**+HIXL L L #&XL >?IJJL "#CDLMNSSVVL L !99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX/// 00F0y001Z111#2h222%3^333'4Z44445#585M55550!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX--L-0:gs-߲ 0-B-----.$B.,;].r...... /5/7XJ/0B0͵++,,IKLLMMNNOOPPQQl((i(ҪW0(,)h#)B(](ө0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0ܦ0;&\&w&l0{&&&':'U'p'''''Fs0!(0X0677880ǦEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX<%Yt0tu%%0%%g%& ))**++,,--//4455667788BYv6QfP99 BB39XL L HL . ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXXY##0######$$1$0L$ez0ݢI^mg$$$3H0Wf$$$%!% / !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWW"Cp'B # > Y t       1!R!g!!!!"$"?"Z""""#5#J# &''))**+-..WWXX0G0V0et())**0,)12209@AABBCCDDEEFFGGRRUUVVWWXX0!<Kf{00IIJJKK0UUVV""))**++,,--../2334455667788AABBCCUU0  Yn0 (C^s##$$,,889;<<==>>QQRRSS 4I^y00*((HHwIX")BIX"TXL IR!14:<=?CIXL L L L L F((L EIOPVL "'')FGGL DEHIRL )DEHIRL 9?ADFGIW)/L #$$)2L  8:;==@@BKMPRRTT ""$$&(*+--0022446688:;==@CEKMPRUWW"$4:<>BDT>BFXL L $CFL L L L -/X 578;;>?BEGRTTVXX #&-/57RTW#)+X>AX35SUX-/MOX')GIX!#ACX$'XOTXL L ENNL L 48:HL L L 7>CFIXL L L CIU!)2679<L L Q79BIXW")FIML HIOL )2@ACXL L "#')*,0119BL L L 9KLOL )+LMSWXL L L L )2L II$&?ASUVXX&)6SMVVL 59X)99L 8FX#)NOSL 69X!(*.69BIX %(),.02NQSXXL L L L L  "=>?L <=@IRL BDEIJL VXL )IXL IXL  ,066778ACOQUWWL (,,9HLML E L  &(++..IMOX E E UXXL  '')233:SXXE E E  789WL  #(+035RTL GHKMVXXL L 6789XL HIJL   #$$%;<@EEL L L L L LMXL L )29JKPTTVWXXL L L "#>?FIXL  ,9UL KLXL L (()2>>IRL L ABOL $%&)2TVL L L IIKMPQWXL L L L 9CDHKMNOL L L ;>?DHHIWXX^5׮6;55^5\,^56!6^506^5?6N6]6l66^566^5^56STXOL CHIITUVVL OO %%&&'(12==@@CGHHUUXXL J)L E E E L  O ""--9=?HJJXX O L L DWL "/279;=@FJML L L L L &(()2369XL L L 368L *+.8JKML L *+,9EGIKLL L MXL ,669BL L $()29XL  ABBCCIXL L 79DITL L /04L .79UXXL L L ")2IXL 'L LMXL L %)2DLL L 9:FGHIRSXL L >?LL <=PL  )+-ABEFFGLMMNOPRSSL L L L L  ./2334<==>@AABFL L L L 1249CIXL  "')*189XL L "#XL RSUVVWXL L L ())*01:;?W=@WDEWVXW)WW77W(9HWWXXW78WRTWHKMVWWIJW$$<@EEWWWWWMXWW9JXXWWW?FW ,WLXWW>>WWBOW%&TVWWWIIKMPQWXWWWWDHNOWWW>?CDHIXAAAAA'(()XAAEFHIOPVWXAA()FGGHXAADERSXA()DERSXAA()/0XAA#$$%()23XAA/24<>@BFWWWW24W)*18WW#XWSUWXWWW(*0;<WWWUUWXWWW !$&00;BFX99$CF9999OTX99ENN9948:H999FIX999679<99IM9((*X99 (+99==IJ99IX9=>BCEFXAA$%BCFGXAAAXAAOPSTXAEFMNNOXAA34899:HIXAAAAFGHIXA XA !"()23567889<=XAAAAQRXA7889BCHIXAAWXXA"#()FGHIMNXAAAHIOPXA()23;HIJKXAAAAHIX ./XAPQX  >?IJKLMNNOWXXAAHISTUVVWXAA %&&'()ABHIRSXAAAAA?@MNNOXA  !()KLLMNOOPXAAAAKLX !"%&&'23344556XAAAA*++,DEPQVWWXXAAXA  !!""#&''(6778ABHIXAAAAA78CDHIRSXAA%&'()*+,ABBCIJJKLMMNRSSTUVVWXAAAAAAA !"#$&'())*/00156:;<=>?EFHIMNXAAAAAAAAMNX  #$()236778:;XAAA !()23XAAAGHNOPQXA014567XAA()23XAAACDPQQRXA"#XA56DEHIRSXAAADESTXA89XA89BCWXXA !""#$%,--./001HINOOPQRSTWXXAAAAAA()23XAA89@ABCXAA )*01239::;;<<==>XAAA#$KLRSSTWXXA !())*45XAA"#235667HIXAA!""#GHOPPQXAA()23JKXAA()*+@AABOPXAAA  !"##$IJOPRSSTTUVWWXXAAAAA  !()2389>??@ABBCXAAAA "#'(()*++,011289BCXAAAA89KLOPXAA )**+LMSTVWXAA()23XAAHIIJXAA $%%&?@@ASTTUVWWXXAAAA&'()67XAASTXAMNXAUVVWXAA5689XA)*899:XAA89EFXA#$()NOSTXAA6789XA !())*./XAAA6789BCHIXAA,-01TUXAA@AHIXA<=HISTTUXAA#$$%+,,-.//0:;;?@XAANOXA./89KLXAA*+XA!"XAKLXA<=@AHIRSXAABCCDEFHIJKXAAAUVXA56?@@AHIXAA)*HIXAHIXA89OPXAA +,01566778ABBCOPPQUVVWWXXAAAAAAXAAJKXA+,XAVWXA()XA()*+XA !HITUXAA ())*,--.89HIKLMNXnSAnSAA A %&())**++,,--.HIMNNOXA nSAnSAnSAAUVWXXA !$%%&&''(()2334459:STWXXAnSAnSAnSAAnSAA 34>?XAA{6789WXX{A  !"#()*+012356QRTUXAAAAAAZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}`|o|~||||||}/}J}Y}h}}L~~- .99QX99IILMXX9999ISVV999&&99@M99LL99LX99"%'(999EPWW9998C9TUWX999 !$&00;>?CDHIX A A A A A'(()XA AEFHIOPVWXA A()FGGHXA ADEHIRSX A()DEHIRSXA A()/0XA A#$$%()23X AA=>BCEFXA A $%BCFGX A A AXA AOPSTX A EFMNNOX A A34899:HIXA A A AFGHIX A  X A !"()23567889<=XAA A A"#()FGHIMNXAA AHIOPX A#$'(())*XA   !'(+,89X A A 89:;;<<==>HIJKXAA A AHIX  ./X  APQX    >?HIIJKLMNNOWXX A  A HISTUVVWX  A A %&&'()ABHIRSXA A AAA?@MNNOX  A  !()KLLMNOOPXA A AAKLX   !"%&&'()23344556X A A AA*++,DEPQVWWXXA A X A78CDHIRSX AA%&'()*+,ABBCIJJKLMMNRSSTUVVWX AAAAAAA   !"#$&'())*/00156:;<=>?EFHIMNX A A AA A A A AMNX   #$()236778:;X AA A !()23X AAAGHNOPQX A 014567X A A()23X AAACDPQQRX A56DEHIRSXA AADESTX A !""#$%,--./001HINOOPQRSTWXXAAAA A A ()23X  AA )*01239::;;<<==>X A A A#$KLRSSTWXX   A !())*45XA A "#235667HIX AA!""#GHOPPQXA A ()*+@AABOPXA A A  !"##$IJOPRSSTTUVWWXXAA A A A   !()2389>??@ABBCX  AAAA "#'(()*++,011289BCX A A AA89KLOPXA A )**+LMSTVWX  A A ()23X AAUVVWXA A)*899:XA A#$()NOSTXA A $%(),--.0112NOPQSTWXX A A AAA A  !!"=>?@XA A<=@AHIRSX AABCCDEFHIJKXA AAUVXA )*HIX AHIX A +,01566778ABBCOPPQUVVWWXXAA AAAA()89HIKLMNX A A A%&()HIMNNOXA AAUVWXXA ()239:STWXXAAA 6789WXX{ A  !"#()*+012356QRTUXAAAAA A%&XA()VWXAA%&()89BCDEXAAGHKLLMVWWXX A A6789X HIJKX A !XA #$()*++,,--.23JKXAAAA  #$$%;<@ADEEFX    A ALMXALMX   ()2389JKPQSTTUUVWXX AA AA "#>?FGHIX A ,-89UVX AAKLX   '(()23=>>?HIRSX AA AAABOPX A $%&'()23STVWX  AA A HIIJJKMNOPQRVWXA A A A  89CDHIJKMNOPXA A A A  !"'()*/089?@@AGHHIXAAAAAABCHIXA;>?HIIJJKWXX A A A AA()56XAA()IJXA A !"#,--../1267<==>>??@@AABBCFGGHRSTUXAAAAAAAAAAA"#&''(89XAAANOXABCXA=>CDGHJKLMXA A>??@@AEFFGHIXAAA@AGHHIWXXAA  /089?@@AGHHIOPPQWXXAAAAA  !'(()/0017889XAAAA GHHIXAACDWXXA A "#./23679::;=>?@FGIJMNXA A A A A A &''(()236789XA A  A  !%&&'()STTUXAAAA !""#&'()/00112236789XAAAAA !""#&'()IJJKNOPQWXXAAAAA !/001XAAA)**+./01XAA345689XA A()89XANOPQVWXAAXAEFGHXA3489XAACDFGQRXAA*+./78JKMNX A A *+,-89EFFGIJJKLMX AAA ALMXA ,-566789BCX A AA#$()2389XA A ABBCCDHIX  A7889DEHITUXA A A()XAA()23XAA/045X A-.7889UVWXXA A A "#()23HIXAA '(X ALMX  %&()23CDLMX AA A9:FGHIRSX  >?LMX A<=PQX A"#%&()23VWXAA!"()STUVXAA ()+,,-ABEFFGLMMNOPRSSTXA A    A./016789XAA !&'()0112233445566778VWXAAAAAAAMNNOUVVWWXXAAA%&(),-./4589EFJKMNNOUVXAAAAAAAA ./2334<==>@AABFGX    A124589CDHIX AA  !!"'(()*+0189XAA A "#X RSUVVWX    ())*01:;<=>?HIIJX   AA%&'()*+,ABBCIJJKKLNORSTUUVVWX AAAAAAA   !"#$&''(/001456778:;<=>?HIJKTUUVVWWXX A A A AA AAA A#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXA AAAAAAAA A  !"#$&')**+12566778>?HIJKMNNOX A A A AAA  A&''(*++,ABBCIJJKLMMNRSTUUVVWXA AAAAAAA   "##$&'())*89:;<=>?HIQRRSX A A AA AA %&'()*+,ABBCIJJKLMMNRSTUUVVWXA AAAAAAA   !"#$&'-.01456778:;<=>?HIIJJKX A A A AA AAA#$&')**+./123445566789;<=>@ACDFGRSVWXA AAAAAAAAAA  !""#&'())*/001>?HIX A A AA AA %&&')**+ABBCRSTUUVVWX AAAA  !""#&'-./00134566789:;<=>?HIX A A A AAA AA%&&')**+ABBCLMMNRSTUUVVWX AAAAAA  !""#&'-./0567889:;<=>?HIIJKLLMX A A A AA AA A %&&')**+STUVVWX AA  !""#&''(,-/00178:;<=>?HIRSX A A A A AA /023JKKLTUUVVWXA AAAAA "##$'(-..//00189>?HIJKLMXA A A A AA AIJJKLMSTXA A A '(()23XA AAIJJKLMUVXA A A !'(()23XA AA012389BCMNNOOPPQQRRSVWXA AA A A A  !!"EFIJXAA   !%&0112UVX A  A A XA AFFnSXnSHnS"nS*VXXnSnS nSnSnS)355nSnSnS$89BDDIInSnS/68=@ACFIRnSnSnSnS((**IXnSnSnS#nS?InS"DLVVnSnS!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXwˏ"U9fƑՑ,AV&&5566778899;;==>>@@AABBCCDDEEFFGGHHIIJJLLPP܍$?Ti,;~ÎҎ,;Po|LLNNPPdFU1122334499;;<<==>>??@@AABBCCDDHHƈ/DezΉ+EEQQTTUUWWXX;ƈՈ ))**,,//4455667788Gف0o99 2o|o|~|9XnSnS $$&&++AADDMMSSTTVVWW߇ 3BWfu* !!""$$%%&&))**++,,//00112233445599<<==>>@@AABBCCIIJJKKMMNNOOTTUUVVsʄ*K`o҅O&O;P _tԆ;(=^yʇ))**O^BBDDEEFFVVWWXXɂ;%:KK׃UUVVȃ""88AABBCC 5P_n ##$$,,<<>>ɂ ؂ ((HHTXnS!14:<=?CnSnSnSnSnS((nSIOnSGGnSEHIRnS)/nS#)2nS>BFXnSnS$CFnSnSnSnS'XOTXnSnSENNnSnS48:HnSnSnSFIXnSnSnS679<nSnS9B"IMnS((*XnSnS (+nSnS==IJnSnSIXnS .nSnSQXnSnS?HIILMXXnSnSnSnSISVVnSnSnS&&IRnSnS@MOXnSnSLLnSnSLXnSnS"%'()2nSnSnSEPWWnSnSnS8CIRnSTUWXnSnSnS !$&00;?nS=@IRnSDEnSVXnS)nSnS77nS(9HnSnSXXnS78nSRTnSHKMVnSnSIJnS$$<@EEnSnSnSnSnSMXnSnS)29JXXnSnSnS"?FnS ,nSLXnSnS)2>>IRnSnSBOnS%&)2TVnSnSnSIIKMPQWXnSnSnSnSDHNOnSnSnS>?DHHIWXX^5m5556;55^5 ^56!6^506^5?6N6]6l66^566^5^56STXOnSCHIIVVnSOO%%&&'(CGUUnSNJnSnSO""9=?HOnSnSDWnS"/279;=@FJMnSnSnSnSnS&(()236nSnSnS68nS+.KMnSnS+,KLnSnSMXnS,669BnSnS$()2nSBBnSnS9DITnSnS04nS.79UXXnSnSnS")2IXnS'nSMXnSnS)2DLnSnS:FIRnSnS?LnS=PnS")2)+-AFFMMPRnSnSnSnSnS/24<>@BFnSnSnSnS24nS)*18nSnS#XnSSUWXnSnSnS(*0;?9GHKLLMVWWXXAA6789XHIJKXA  #$$%;<@ADEEFXAALMX ()2389JKPQSTTUUVWXXAAAA"#>?FGHIXA ,-89UVXAAKLX '(()23=>>?HIRSXAAAAABOPXA $%&'()23STVWXAAA HIIJJKMNOPQRVWXAAAA 89CDHIJKMNOPXAAAA;@CGHHIWXXAAnSAnSA A ,--.89=>>?HIIJJKWXX AnSA AAAA()IJXAA=>CDGHJKLMXAA@AGHHIWXXAA  !'(()/0017889XAAAACDWXXAA "#./23679::;=>?@FGIJMNXAAAAAA&''(6789XAAA345689XAA*+./78JKMNXAA *+,-89EFFGIJJKLMXAAAALMXA,-566789BCXAAA#$2389XAA ABBCCDHIXA7889DEHITUXAAA/045XA-.7889UVWXXAAA"#()23HIXAA'(XALMX%&()23CDLMXAAA9:FGHIRSX>?LMXA<=PQXA ()+,,-ABEFFGLMMNOPRSSTXAAA ./2334<==>@AABFGXA124589CDHIXAA  !!"'(()*+0189XAAA"#XRSUVVWX ())*01:;<=>?HIIJXAA%&'()*+,ABBCIJJKKLNORSTUUVVWXAAAAAAA !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXAAAAAAAAA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAAAAAAAAAA !"#$&')**+12566778>?JKMNNOXAAAAAAA&''(*++,ABBCIJJKLMMNRSTUUVVWXAAAAAAAA "##$&'())*89:;<=>?HIQRRSXAAAAAA%&'()*+,ABBCIJJKLMMNRSTUUVVWXAAAAAAAA !"#$&'-.01456778:;<=>?HIIJJKXAAAAAAAA#$&')**+./123445566789;<=>@ACDFGRSVWXAAAAAAAAAAA !""#&'())*/001>?HIXAAAAAA %&&')**+ABBCRSTUUVVWXAAAA!""#&'-./00134566789:;<=>?HIXAAAAAAAA%&&')**+ABBCLMMNRSTUUVVWXAAAAAA!""#&'-./0567889:;<=>?HIIJKLLMXAAAAAAAA %&&')**+STUVVWXAA!""#&''(,-/00178:;<=>?HIRSXAAAAAA /023JKKLTUUVVWXAAAAAA "##$'(-..//00189>?HIJKLMXAAAAAAAIJJKLMSTXAAA '(()23XAAAIJJKLMUVXAAA !'(()23XAAA012389BCMNNOOPPQQRRSVWXAAAAAA !!"EFIJXAA  !%&0112UVXAAA XAA"#()FGHIMNXAAA#$'(XA !'(89XAA89:;;<=>HIJKXAAAA./XA >?HINOWXXAASTUVVWXAA %&&'()ABHIRSXAAAAAMNNOXA !()LMNOOPXAAAA !"%&&'()23344556XAAAA*++,PQVWXAAXACDHIRSXAA%&'()*+,ABBCIJJKLMMNRSSTXAAAAAAA !"#$&'())*/00156<=>?EFHIMNXAAAAAAAA#$()2367:;XAAA !()23XAAANOPQXA0167XAA()23XAAA56DEHIRSXAAA !""#$%,--./001NOOPQRSTXAAAAAA()23XAA0123:;;<=>XAAA !()XAA235667HIXAA!""#OPPQXAA()*+@AABOPXAAA  !"##$OPRSSTTUVWWXXAAAAA  !()2389>??@ABBCXAAAA '(()*++,1289BCXAAAA89OPXAA)**+STVWXAA()23XAAUVVWXAA)*899:XAA#$()STXAA $%,--.0112NOPQSTWXXAAAAAA !!"?@XAA@AHIRSXAABCCDEFHIJKXAAAUVXA)*HIXAHIXA  +,0156ABBCOPPQUVVWWXXAAAAAA ()+,,-89HIKLMNXAïAA A %&()*++,-../HIMNNOXA AïAïAAUVWXXA  !&''(()23349:STWXXAïAïAïAA 67WXX{A  !"#()*+012356QRTUXAAAAAA$ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}| 0 ΰ 000 7Xy0-Tit ̵;CCFFNNSSïXïHIMOPSVXXï!#%%':?@ACFGHSUXXïïïï(())**+HIXïïï#&Xï>?IJJï#CDLMNSSVVïï!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`J%d'`J@g $K.!""##$$%%&&''(())*12233445566778899::;;<<==AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX80:gY߲ 0-Bn$7Lgv X!00͵++,,IKLLMMNNOOPPQQjiҪW0,h@[ө0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0ܦ0B]~l0{5PkFs0%0EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXYt0t0g ))**++,,--//4455667788ڶv#z+99 ˶9XïïHï. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXXY##0##\#k#$1$0ez0ݢI^m$3H0Wf :Id . !!""##$$%%&&))**++,,//001122335599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWW^yǽ*ErþG\.}.ο  "7vR! -Nc~MJ#())**0.C9@AABBCCDDEEFFGGRRUUVVWWXX0w<00Ѽ IIJJKK0VUUVV2G""))**++,,--../2334455667788AABBCCUUɻ0  Yn0 (ػ##$$,,889;<<==>>QQRRSSĺ*?T0i0~*((wTXï!14:<=?CIXïïïïï((ïEIOPVï'')FGGïDEHï)DEHï)/ï#$$ï>BFXïï$CFïïïï$OTXïïENNïï48:HïïïFIXïïï!)2679<ïï7IX)FIMïHIOï@ACXïï"#')*,011ïïï9KLOï)+LMSWXïïïïïVVï)99ï#)NOSï6IX %(),.02NQSXXïïïïï "=>?ï<=@ïBDEIJïVXï)IXïIXï ,066778ACOQUWWï(9HïïIMOXUXXï:S789Wï #(+035RTï%)8CDGHKMVXXïï6789XïHIJï  #$$%;<@EEïïïïïLMXïï9JKPTTVWXXïïï#>?FIXï ,9UïKLXïï((>>ïïABOï$%&TVïïïIIKMPQWXïïïï9CDHKMNOïïï;>?DIWXX^5׮6;55^5'^56!6^506^5?6N6]6l66^566^5^56")BEHIXOSTXOïCHIITUVVïOO%%&&'(CGUUïïïO""9=?HJJXXOïï  #,..26;;==??AACFHRUXODWï/279;=@FJMïïïïï&((369Xïïï368ï*+.8JKMïï*+,9EGIKLïïMXï,66ïï$(9Xï ABBCCIXïï79DITïï/04ï.79UXXïïïIXï'ïLMXïï%DLïï9:FGHSXïï>?Lï<=Pï&(3V )+-ABEFFGLMMNOPRSSïïïïï ./2334<==>@AABFïïïï1249CIXï "')*189Xïï"#XïRSUVVWXïïï())*01:;>?HIRSXAAAA&'()23STVWXAAA HIIJJKMNOPQRVWXAAAA89HIJKOPXAAAACDDEFGHIRSXAAA BCHIIJNOSTUVXAAA{AA12345689XA{A{ $%()0123<==>?@@CGHHIWXXAAïAïAï A  ,--.89=>>?HIIJJKWXX A AAAA()IJXAA=>CDLMXAA@AGHHIWXXAA  !'(()/0017889XAAAACDWXXAA "#./23679::;=>?@FGIJMNXAAAAAA &''(()236789XAAA345689XAA./78MNXAA ,-89EFFGIJJKLMXAAAALMXA,-566789BCXAAA#$()2389XAACDHIXA7889DEHITUXAAA45XA-.7889UVWXXAAA"#()23HIXAA'(XA%&()23CDLMXAAAHIRSXPQXA()+,,-STXAAA4589CDHIXAA !!"'(()*+01XAAA<=>?HIIJXAA%&'()*+,ABBCIJJKKLNORSTUXAAAAAAA !"#$'(/001456778<=>?HIJKTUUVVWWXXAAAAAAAAA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAAAAAAAAAA !"#$&')**+12566778>?HINOXAAAAAAA&''(*++,ABBCIJJKLMMNRSTUXAAAAAAAA "##$&'())*89<=>?HIQRXAAAAAA%&'()*+,ABBCIJJKLMMNRSTUXAAAAAAAA !"#$&'-.01456778<=>?HIIJJKXAAAAAAAA#$&')**+./123445566789;<=>@ACDFGRSVWXAAAAAAAAAAA !""#&'())*/001>?HIXAAAAAA %&&')**+ABBCRSTUXAAAA!""#&'-./00134566789<=>?HIXAAAAAAAA%&&')**+ABBCLMMNRSTUXAAAAAA!""#&'-./0567889<=>?HIIJLMXAAAAAAAA%&&')**+XAA!""#'(,-0178<=>?HIRSXAAAAAA /023JKKLTUUVVWXAAAAAA "##$'(-..//00189>?HIJKLMXAAAAAAAIJJKLMSTXAAA '(()23XAAAIJJKLMUVXAAA !'(()23XAAA012389BCMNNOOPPQQRRSVWXAAAAAA !!"EFIJXAA0112UVXAAA XAA=@9DE9VX9)99779(9H99XX9789RT9HKMV99IJ9$$<@EE99999MX999JXX999?F9 ,9LX99>>99BO9%&TV99923XAGHXAXAIJXA<=HIXA #$TUXAACCFFNNSSE XE HIMOPSVXXE "#XE !##*VXXE E  )CHLE E E )3559XE E E #$8GHIIJXE E  ,../68=>?@ACFGHSUXXE E E E (())**+HIXE E E #&XE >?IJJE #CDLMNSSVVE E !99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX7X3~GOv-l2GVkz.!""##$$%%&&''(())*12233445566778899::;;<<==AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX0:g ߲ 0-B!Bix$)8Sn X0|0͵++,,IKLLMMNNOOPPQQ "iCҪW0R,shө0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0ܦ0B!<l0{Q)DYFs00EEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXaYt0t0g ))**++,,--//4455667788Ofv}  99  +||@9XE E HE . ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXXY##0##S#b#w$1$0ez0ݢI^m$3H0Wf+F . !!""##$$%%&&))**++,,//001122335599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWKf)h}OO. "CR!9NZuDJ#())**0Od9@AABBCCDDEEFFGGRRUUVVWWXX0w<00.IIJJKK0UUVV""))**++,,--../2334455667788AABBCCUU/0  Yn0 (ػ>Sh##$$,,889;<<==>>QQRRSS9fu00*((w*TXE !14:<=?CIXE E E E E ((E EIOPVE )FGGE DEHE )DEHE )/E #$$E >BFXE E $CFE E E E OTXE E ENNE E 48:HE E E FIXE E E !)2679<E E )FIME HIOE #(())*XE E  (+,8E E 9:<<==IJE E HIXE  .E E PQXE E IIJKLMNNXXE E E E HISVVE E E &&)AE E ?@ME E  )KLLOOE E KLXE E "%'(3355E E E *,DEPWWXXE E E 78CE  %(),ACIKLNRTUVVWXE E E   !$&))006:;@ACXE E "#')*,011E E E 9KLOE )+LMSWXE E E E E VVE )99E #)NOSE  %(),.02NQSXXE E E E E  "=>?E <=@E BDEIJE VXE )IXE IXE  ,066778ACOQUWWE (9HE E UXXE 789WE  #(+035RTE GHKMVXXE E 6789XE HIJE   #$$%;<@EEE E E E E LMXE E 9JKPTTVWXXE E E #>?FIXE  ,9UE KLXE E ((>>E E ABOE $%&TVE E E IIKMPQWXE E E E 9CDHKMNOE E E ;?LE <=PE  )+-ABEFFGLMMNOPRSSE E E E E  ./2334<==>@AABFE E E E 1249CIXE  "')*189XE E "#XE RSUVVWXE E E ())*01:;BCEFXAA$%BCFGXAAAXAA-../XL AL 566789:;;<=>?@ABEFFGRSSTTUUVXL AL AL AL AL AL AL AL XL AL   #$%&-../5667RSSTWXXL AL AL AL AL AL A "#)**+XL AL AL AL >?@AXL AL 3445STTUXL AL AL AL -../MNNOXL AL AL '(()GHHIXL AL AL !""#ABBCXL AL AL $%&'XL AL AOPSTXAEFMNNOXAA34899:HIXAAAA78=>CDXL AL AFGHIXA XAXA89;HIJKXAL AL AAHIXL  ./XL APQXL   >?HIIJKLMNNOWXXAL L AHISTUVVWXL AA %&&'()ABHIRSXAAAL AA?@MNNOXL A  !()KLLMNOOPXAL L AL AL AKLXL  !"%&&'()23344556XL AAL AL A*++,DEPQVWWXXL AL AL XL A  !!""#&''(6778ABHIXL AL AL AL AL AL 78CDHIRSXL AA%&'()*+,ABBCIJJKLMMNRSSTUVVWXAL AL AL AL AL AL AL  !"#$&'())*/00156:;<=>?EFHIMNXAAAL AAL AAAMNXL   #$()236778:;XL AAL A !()23XL AL AAGHNOPQXL A014567XAL A()23XAL AACDPQQRXL L A"#XA56DEHIRSXAAADESTXL A89XAL 89BCWXXL AL  !""#$%,--./001HINOOPQRSTWXXL AL AL AL AL AAL ()23XL AA89@ABCXAL AL  )*01239::;;<<==>XL AL AL A#$KLRSSTWXXL L L A !())*45XAAL L "#235667HIXL AL AL !""#GHOPPQXL AL A()23JKXL AAL ()*+@AABOPXL AAA  !"##$IJOPRSSTTUVWWXXL AL AL AAA  !()2389>??@ABBCXL AAL AL AL  "#'(()*++,011289BCXL AAL AA89KLOPXAL A )**+LMSTVWXL L AL A()23XAAHIIJXAL A $%%&?@@ASTTUVWWXXL AL AL AL AL &'()67XL AL ASTXL AMNXL AUVVWXAA5689XL AL )*899:XL AA89EFXL AL #$()NOSTXL AL A6789XL AL  !())*./XL AL AL A6789BCHIXL AAL ,-01TUXL AL A@AHIXL AL <=HISTTUXL AL AL #$$%+,,-.//0:;;?@XL AL ANOXL A./89KLXL AL A*+XL A!"XL AKLXL A<=@AHIRSXL AABCCDEFHIJKXL AAL AUVXA56?@@AHIXL AL AL )*HIXL AL HIXL AL 89OPXL AL A +,01566778ABBCOPPQUVVWWXXL AL AL L AL AL AL AXL AL AL JKXL A+,XAL VWXL A()XAL ()*+XL AL  !HITUXL AL A()89HIKLMNXAAA%&()HIMNNOXAAL AL UVWXXL A()239:STWXXAAL A34>?XAL A89WXXL A  !"#()*+012356QRTUXAL AL AL AL AA%&XL A()VWXAL A%&()89BCDEXL AL L AGHKLLMVWWXXL AAL 6789XL L HIJKXL A !XAL  #$()*++,,--.23JKXL AL AL AL AL   #$$%;<@ADEEFXL L L L AALMXL ALMXL  ()2389JKPQSTTUUVWXXAAL AL AL "#>?FGHIXL AL  ,-89UVXL AL AKLXL  '(()23=>>?HIRSXAL AAAABOPXL A $%&'()23STVWXL L AAA HIIJJKMNOPQRVWXAAAA 89CDHIJKMNOPXAAL AL A  !"'()*/089?@@AGHHIXAL AL AL AL AL AL BCHIXL AL ;>?HIIJJKWXXAAAAL AL ()56XAL A()IJXAA !"#,--../1267<==>>??@@AABBCFGGHRSTUXAL AL AL AL AL AL AL AL AL AL AL "#&''(89XAL AL AL NOXAL BCXL A=>CDGHJKLMXL AL L A>??@@AEFFGHIXL AL AL AL @AGHHIWXXL AL A /089?@@AGHHIOPPQWXXL AL AL AL AL A  !'(()/0017889XL AL AL AL AGHHIXAL ACDWXXAA "#./23679::;=>?@FGIJMNXAAAAAA &''(()236789XAAAL   !%&&'()STTUXL AL AL AL AL  !""#&'()/00112236789XL AL AL AL AL AL  !""#&'()IJJKNOPQWXXL AL AL AL AL A !/001XL AL AL AL )**+./01XL AL AL 345689XL AA()89XL AL NOPQVWXL AL AXAL EFGHXL AL 3489XAL AL CDFGQRXL AL A*+./78JKMNXL AL A *+,-89EFFGIJJKLMXL AL AL AALMXA,-566789BCXAAA#$()2389XAAL  ABBCCDHIXL L L AL 7889DEHITUXL AAA()XAA()23XAA/045XL A-.7889UVWXXAAA"#()23HIXAA'(XALMXL %&()23CDLMXL AAA9:FGHIRSXL L L >?LMXL A<=PQXL A"#%&()23VWXAL L A!"()STUVXL AL AL  ()+,,-ABEFFGLMMNOPRSSTXAAL L L L A./016789XL AL AL  !&'()0112233445566778VWXL AL AL AL AL AL AL AMNNOUVVWWXXL AL AL A%&(),-./4589EFJKMNNOUVXAL AL AL AL AL AL AL A ./2334<==>@AABFGXL L L L A124589CDHIXL AL AL   !!"'(()*+0189XL AL AAL "#XL RSUVVWXL L  ())*01:;<=>?HIIJXL L AAL %&'()*+,ABBCIJJKKLNORSTUUVVWXL AL AL AL AL AL AL AL  !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXAAL AAL AL AL AL AA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAAL AL AL AL AL AL AL AA !"#$&')**+12566778>?HIJKMNNOXAAAAL AL AL A&''(*++,ABBCIJJKLMMNRSTUUVVWXAAL AL AL AL AL AL AL  "##$&'())*89:;<=>?HIQRRSXAAAL AL AAL %&'()*+,ABBCIJJKLMMNRSTUUVVWXAAL AL AL AL AL AL AL  !"#$&'-.01456778:;<=>?HIIJJKXAAAAL AL AAL A#$&')**+./123445566789;<=>@ACDFGRSVWXAL AL AL AL AL AL AL AL AL AL A !""#&'())*/001>?HIXAAAL AAA %&&')**+ABBCRSTUUVVWXL AL AL AL AL !""#&'-./00134566789:;<=>?HIXAAAAL AL AL AA%&&')**+ABBCLMMNRSTUUVVWXL AL AL AL AL AL AL !""#&'-./0567889:;<=>?HIIJKLLMXAAAAL AL AAL A %&&')**+STUVVWXL AL AL L !""#&''(,-/00178:;<=>?HIRSXAAL AL AL AAL  /023JKKLTUUVVWXAAL AL AL AL A "##$'(-..//00189>?HIJKLMXL AAAAAAAIJJKLMSTXAAA '(()23XAAAIJJKLMUVXAAA !'(()23XAAA012389BCMNNOOPPQQRRSVWXL AAAAAA !!"EFIJXL AL A  !%&0112UVXAL AA XAAIIKMPQWX9999DHNO999>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXg,@ǚܚ 'Hc,@؛,@wڜ%F['H]~,@ޞ&A\7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXX(Cvٔ3lwϒԓϒ4[|9üǗ9Z՘]Dq1L !!""#'((),--../12234668899::;;<<==>>?DIWXX^5m555555^55^56!6^506^5?6N6]6l66^566^5^56XO&(HHOOEJWXOO''*3FXOOO>?XOW(33HHKSUXOOOOO"XOSTXO9VOXO(OMXO.XO%(O!(38OO!(GXOO%SUXOO XOO &''(())**+-../VWWXX,@,@ԓ,@())**+X,@ϒ()1223X,@89@AABBCCDDEEFFGGHQRRSTUUVVWWXX,@]rϒ,@,@,MhWXX* HIIJJKKLXx}}},@}}())**++,,--../23344556677889TUUVX,@P{k{{{:|,@m|||| }0}W}"##$$%+,,-7889;<<==>>?PQQRRSSTX39hx}xxxxx"y,@ay,@vyyz {  !GHHIX39H9o999HIXq:n="#()BCHIXn=q:n=q:n="#Xn=q:>?Xq:9HIRSXq:!<q:YZZ[]^^__`bccdfgghhiijjkkllmmnnooppqqrrssttuuvvwyzz{{||}}~#:Qh(Kbyg1N/YZZ[]^^__`bccdfgghhiijjkkllmmnnooppqqrrssttuuvvwyzz{{||}}~1mπ2[~Ɂޠ^5ԄǠ!YZZ[]^^__`bccdfgghhiijjkkllmmnnooppqqrrssttuuvvwyzz{{||}}~1mπ2[~ɁH^5Ԅ7 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~@@@@TՖl luLm J m9vm˗ ;ژ8 4ԛv"rW4 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~kkkT+l lZqmLm  mmÎ!J ؏$G|Mxv"rѓH/YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~GHFJHK7TkɅKK &OxІK ^͇ӈohSuh BCCDMNNORSSTXq:.;q:n=q:n=q:n=q:/001OPPQXn=q:n=q:n=Xn=0167Xn=q:n= HIMNNOPQRSVWWXXq:n=q:n=q:n=q:n=  !#$$%%&&':;;>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX%SFSUSjSySSSSSTS6TScTTTTTSU LGUtUUUUUUV1V@VaV&&5566778899;;==>>@@AABBCCDDEEFFGGHHIIJJLLPPBQQQ~QQQQQQRR,R,;ARPRkRRRRRRR;RCLLNNPPPQQ$Q>O3QPP1122334499;;<<==>>??@@AABBCCDDHHkOMOOOOOOPP%PFPUPvPPPEEQQTTUUWWXXO)O>O;MO\O ))**,,//4455667788F7G6HKH~HHHHI99F FCC#C9X $$&&++AADDMMSSTTVVWWfNuNNNNNNNN O* !!""$$%%&&))**++,,//00112233445599<<==>>@@AABBCCIIJJKKMMNNOOTTUUVVJK6KQKlKKKKKKK L&LYLhLJLLLJLL LL M%M@M[MvMMM;MMMN!N0NQN))**JJBBDDEEFFVVWWXXJnI;JJJKKmJUUVVIJ^J""88AABBCCIII_JJ.J ##$$,,<<>>8I_InI }IIIII((HH)ITX!14:<=?C((IOGGEHIR)/#)2>BFX$CFOTXENN48:HFIX679<"IM((*X (+==IJIX .QX?HIILMXXISVV&&IR@MOXLLLX"%'()2EPWW8CIRTUWX !$&00;?=@IRDEVX)77(9HXX78RTHKMVIJ$$<@EEMX)29JXX"?F ,LX)2>>IRBO%&)2TVIIKMPQWXDHNO@BF24)*18#XSUWX(*0;>?CDHIXOAOAOAOAOAL '(()XAOAEFHIOPVWXL AOL A()FGGHXAL OADEHIRSXL OA()DEHIRSXAL OA()/0XL AOA#$$%()23XL OL AA=>BCEFXAOAO$%BCFGXOAOAOAXAOAOPSTXOAOEFMNNOXOAOA34899:HIXAOAOAOAFGHIXOAO XOA !"()23567889<=XL AL AOAOAHILMMNTUUVWXXA{A{A{A"#()FGHIMNXAL AOAHIOPXL OA#$'(())*XL AOL O !'(+,89XOAOL A 89:;;<<==>HIJKXAL AL OAOA XL AHIXL O ./XOL OA23XL AGHXL AXL AIJXL APQXOL O  >?HIIJKLMNNOWXXOAOL OL AOHISTUVVWXOL OAOA %&&'()ABHIRSXAOAOAL AA?@MNNOXOL OA  !()KLLMNOOPXAL OL AL OAL AKLXOL O !"%&&'()23344556XOL AOAOL AL A*++,DEPQVWWXXL AL OAOL XL OA78CDHIRSXL OAA%&'()*+,ABBCIJJKLMMNRSSTUVVWXOAL AL AL AL AL AL AOL O !"#$&'())*/00156:;<=>?EFHIMNXOAOAOAL AOAL OAOAOAMNXL O  #$()236778:;XOL AAOL A !()23XOL AL AAGHNOPQXL OAO014567XOAL OA()23XOAL AACDPQQRXL OL A56DEHIRSXAOAADESTXL OA !""#$%,--./001HINOOPQRSTWXXL AL AL AL AL OAOAOL ()23XOL OAA )*01239::;;<<==>XL OAOL AL OA#$KLRSSTWXXL OL OL OA !())*45XAOAL OL "#235667HIXL OAL AL !""#GHOPPQXL AL OAO()*+@AABOPXL AOAOA  !"##$IJOPRSSTTUVWWXXL AL AL OAOAOAO  !()2389>??@ABBCXOL OAAL AL AL  "#'(()*++,011289BCXL OAOAOL AA89KLOPXAL OA )**+LMSTVWXOL OL AL OAO()23XOAAUVVWXAOA)*899:XL AOA#$()NOSTXL AL OA $%(),--.0112NOPQSTWXXL OAOAOL AL AL AOAO !!"=>?@XL AL OA<=@AHIRSXL OAABCCDEFHIJKXL AOAL AUVXAO)*HIXL OAL HIXL OAL  +,01566778ABBCOPPQUVVWWXXL AL AL OL AL AL AL A()89HIKLMNXOAOAeA%&()HIMNNOXAeAL AL UVWXXL AO()239:STWXXAAL Ae34>?XAL A{6789WXX{OL A  !"#()*+012356QRTUXAL AL AL AL AOA&ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}ebghbgi j&j5jJjYjjj&jj&jjj k.kUkvk&jkkl0lKlxlAmdnnoooo\pp; YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  # # #  #  T  a\ $\\ ] 8[/]j]]^ Q^^^_=__a`abItbv""I-cc;du8 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  !, !, !,  T  T $KU- GU 8.pUUV?V VV&WIWrWWXY>ZIZv""IV[[;>\u3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  ~G H FJ H KKKL9LPLLLKMK*MMMMMNQNKNO8O[OOOPQPRIRhSSIST;TuCCFFNNSSbgebgbg/1OQXbgbgbgXbg07XbgbgXeHIMOPSVXXebgbgbgbg!#%%':?@ACFGHIRSUXXbgbgeebgeebgebgbg(())**+HIXebgebge#&Xebg>?IJJbgebg"#CDLMNSSVVebgebgbge!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX?f{ q@T>"Uj0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXXGV&j%Fav&j6E`ij{ؽ,;Vw &jJj&jId++,,IKLLMMNNOOPPQQ5DS &j4[  $$%%&&3To&jc*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX&jfu&j&j,kzF[&j&jX&j67788&j<QEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXXԾ (7&jF&Uj&jʿ ))**++,,--//334455667788qr5snsssst1tFtt0u99p pJjJjp9XeeHe. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX 2&jGVetλ&j.C^&jм!6K`ؽ&j )D_n/ !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWD_Ե"=pٶ9xɴշɴ &APezFsijֹ ?r &''))**+-..WWXX&j&j&j&5())**&jɴ޴)122&j9@AABBCCDDEEFFGGRRUUVVWWXX&jijӳ-N&j&j]~XXIIJJKKyyy&jyzUUVVyy""))**++,,--../2334455667788AABBCCUUwww&jwx9xNx{x&jxxxxy#y>ySyhyy##$$,,889;<<==>>QQRRSSuuuuv)v>vYvtv&jv&jvv ww((HHWufuuuuIXbg")BIXbgbgbg"bgTXeIRe!14:<=?CIXeeeeebgFbg((eEIOPVbgebg"''ebg)FGGbgeDEHIRbgee)DEHIRbgee9?ADFGIWbgbgbgbg)/bge#$$)2bgebge 8:;==@@BKMPRRTTbgbgbgbgbgbgbgbgbg ""$$&(*+--0022446688:;==@CEKMPRUWWbgbgbgbgbgbgbgbgbgbgbgbgbgbgbgbgbgbgbg"$4:<>BDTbgbgbgbgbg>BFXee$CFeeee-/Xbgbg 578;;>?BEGRTTVXbgbgbgbgbgbgbgbgXbgbg #&-/57RTWbgbgbgbgbgbg#)+Xbgbgbgbg>AXbgbg35SUXbgbgbgbg-/MOXbgbgbg')GIXbgbgbg!#ACXbgbgbg$'XbgbgeOTXeeENNee48:Heee7>CbgbgFIXeee%z9;%z..=@%z%zCIUbgbg!)2679<bgbgee3YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  = = = = >H?w??w???9@w?\@w?@@@AkAAw?AB9B\ByBByCD!EIE9FPFIsFF;[GuDLVVAA!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXCdsͣͣͣBͣiƤͣ5\k˥ڥ1&&5566778899;;==AABBCCDDEEFFGGHHIILLPP ?Zi~ƀۀ0?Ԣ ALLNNPP88888{8822334499;;<<==>>??@@AABBCCDDHH/DSz777788*8K8f8EEQQTTWWXX  ))**,,//4455667788~Z~G\ 99} ~AA-B9XAA $$&&AADDMMSSTTVVWW0?N]' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVV)DYn4CXg|7Rgv!))**DDEEVVWWXXaKKlUUVVH]""AABBCC܀- ##$$,,<<>>+Rap((TXA!14:<=?CAAAAA((AIOAGGAEHA)/A#A>BFXAA$CFAAAAOTXAAENNAA !XBcAcrA89XA%zA%zX%zHIX%zA7 !"##$$%%&&''(()*++,,--..//00145566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXX>cA_AtA˗"cOv٘Ac:6WAϙ,AMAhښ%FAc[pAӛ*E7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXc̐ &cYΑ:Acc3A`{c-ɓAA5ΔACjA HAÖA &''(())**+-../VWWXXcAc0cEAZo)**+XcA()1223XAcÍA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXAcю :OAcAcӏWXXA HIIJJKKLX؍AAc/PATUUVVWXAÍA !""#())**++,,--../23344556677889@AABBCCDTUUVXAɊAAc,c.I|ʌA3TAA"##$$%+,,-7889;<<==>>?PQQRRSSTXr҇AA/JA_AzccڈApcA  '(()GHHIXA-ABAWAHIXA%z"#()BCHIX%zA%zA%z"#X%zASTXA%zHIRSXA%zA  !1234:;;<=>>?CDHIX%zA%zA%zA%zA%zA%zFGX%zA'(()XA%zAEFHIVWX%zA%zA"#&''(X%zA%zA()GHXA%zARSX%zA()RSXA%zA 89?@@ADEEFGHHIWXXA%zA%zA%zA%zA()/0X%zA%zA$%()23X%zA%zA899:;<<==>?@@AABKLLMPQQRRSSTTUX%zA%zA%zA%zA%zA%zA%zA%zA%zA( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXXA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA "##$459:<==>BCCDTUX%zA%zA%zA%zA%zA=>BCEFXA%zA%z$%BCFGX%zA%zA%zAXA%zA-../X%zA%z566789:;;<=>?@ABEFFGRSSTTUUVX%zA%zA%zA%zA%zA%zA%zA%zX%zA%z  #$%&-../5667RSSTWXX%zA%zA%zA%zA%zA%zA "#)**+X%zA%zA%zA%z>?@AX%zA%z3445STTUX%zA%zA%zA%z-../MNNOX%zA%zA%z'(()GHHIX%zA%zA%z!""#ABBCX%zA%zA%z$%&'X%zA%zA%zOPSTX%zA%zEFMNNOX%zA%zA34899:HIXA%zA%zA%zA78=>CDX%zA%zAFGHIX%zA%z X%zAX%zA89;HIJKXA%zA%zA%zA./X%zA23X%zAGHX%zAX%zA()XA%zIJX%zA >?NOWXX%zA%zA%zSTUVVWX%zA%zA %&&'()ABHIRSXA%zA%zA%zA%zAMNNOX%zA%z !()LMNOOPXA%zA%zA%zA !"%&&'344556X%zA%zA%zA%zA*++,PQVWX%zA%zA%zX%zA  !!""#&''(6778ABHIX%zA%zA%zA%zA%zA%zCDHIRSX%zA%zA%&'()*+,ABBCIJJKLMMNRSSTX%zA%zA%zA%zA%zA%zA%zA%z !"#$&'())*/00156<=>?EFHIMNX%zA%zA%zA%zA%zA%zA%zA%zA#$()2367:;X%zA%zA%zA !()23X%zA%zA%zANOPQX%zA%z0167X%zA%zA()23X%zA%zA%zA56DEHIRSXA%zA%zASTX%zA89XA%zBCWXX%zA%z !""#$%,--./001NOOPQRSTX%zA%zA%zA%zA%zA%zA%z()23X%zA%zA89@ABCXA%zA%z0123:;;<=>X%zA%zA%zA !()XA%zA%z235667HIX%zA%zA%z!""#OPPQX%zA%zA%z()23JKX%zA%zA%z()*+@AABOPX%zA%zA%zA  !"##$OPRSSTTUVWWXX%zA%zA%zA%zA%zA%z  !()2389>??@ABBCX%zA%zA%zA%zA%z '(()*++,1289BCX%zA%zA%zA%zA89OPXA%zA)**+STVWX%zA%zA%z()23X%zA%zAHIIJXA%zA $%%&?@@ASTTUVWWXX%zA%zA%zA%zA%z&'()67X%zA%zAMNX%zAUVVWXA%zA5689X%zA%z)*899:X%zA%zA89EFX%zA%z#$()STX%zA%zA6789X%zA%z !())*./X%zA%zA%zA6789BCHIX%zA%zA%z,-01TUX%zA%zA@AHIX%zA%z<=HISTTUX%zA%zA%z#$$%+,,-.//0:;;?XA%zA%z  !"#()*+012356QRTUXA%zA%zA%zA%zA%zA<=HIX%zA%z #$TUX%zA%zA%&X%zA()VWXA%zA%&()DEX%zA%zAKLLMVWWXX%zA%zA%z !XA%z #$()*++,,--.23JKX%zA%zA%zA%zA%z@ADEEFX%zA%zALMX%zA ()2389PQSTTUUVX%zA%zA%zA%zA%z,-89UVX%zA%zA '(23=>>?HIRSX%zA%zA%zA%zA&'()23STVWX%zA%zA%zA HIIJJKMNOPQRVWXA%zA%zA%zA%z89HIJKOPXA%zA%zA%zA  !"'()*/089?@@AGHHIXA%zA%zA%zA%zA%zA%zBCHIX%zA%zCDDEFGHIRSX%zA%zA%zA BCHIIJNOSTUVXA%zA%zA%zA%zA125689XA%zA%zSTTUX%zA%zHIIJXA%zA%z'(89X%zA%z()WXXA%zA01X%zA$%()@CHIWXXA%zA%zA%z ,--.89=>>?HIIJJKWXX%zA%zA%zA%zA%zA%z()56XA%zA()IJXA%zA !"#,--../1267<==>>??@@AABBCFGGHRSTUXA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%z"#&''(89XA%zA%zA%zNOXA%zBCX%zA=>CDLMX%zA%zA>??@@AEFFGHIX%zA%zA%zA%z@AGHHIWXX%zA%zA%z /089?@@AGHHIOPPQWXX%zA%zA%zA%zA%zA  !'(()/0017889X%zA%zA%zA%zA%zGHHIXA%zACDWXXA%zA "#./23679::;=>?@FGIJMNX%zA%zA%zA%zA%zA%zA&''(6789XA%zA%zA%z  !%&&'()STTUX%zA%zA%zA%zA%z !""#&'()/00112236789X%zA%zA%zA%zA%zA%z !""#&'()IJJKNOPQWXX%zA%zA%zA%zA%zA !/001X%zA%zA%zA%z)**+./01X%zA%zA%z345689X%zA%zA()89X%zA%zNOPQVWX%zA%zAXA%zEFGHX%zA%z3489XA%zA%zCDFGQRX%zA%zA./78MNX%zA%zA ,-89EFFGIJJKLMX%zA%zA%zA%zALMXA%z,-566789BCX%zA%zA%zA#$2389XA%zA%zCDHIX%zA%z7889DEHITUX%zA%zA%zA()XA%zA()23XA%zA45X%zA-.7889UVWXXA%zA%zA%z"#()23HIX%zA%zA%z'(X%zA%&()23CDLMX%zA%zA%zAPQX%zA"#%&VWX%zA%zA!"()STUVX%zA%zA%z()+,,-STXA%zA%zA./016789X%zA%zA%z !&'()0112233445566778VWX%zA%zA%zA%zA%zA%zA%zAMNNOUVVWWXX%zA%zA%zA%&(),-./4589EFJKMNNOUVXA%zA%zA%zA%zA%zA%zA%zA4589CDHIX%zA%zA%z !!"'(()*+01X%zA%zA%zA%z<=>?HIIJX%zA%zA%z%&'()*+,ABBCIJJKKLNORSTUX%zA%zA%zA%zA%zA%zA%zA%z !"#$'(/001456778<=>?JKTUUVVWWXX%zA%zA%zA%zA%zA%zA%zA%zA%zA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXA%zA%zA%zA%zA%zA%zA%zA%zA%zA%z !"#$&')**+12566778>?NOX%zA%zA%zA%zA%zA%zA%zA&''(*++,ABBCIJJKLMMNRSTUXA%zA%zA%zA%zA%zA%zA%zA%z "##$&'())*89<=>?HIQRX%zA%zA%zA%zA%zA%zA%z%&'()*+,ABBCIJJKLMMNRSTUXA%zA%zA%zA%zA%zA%zA%zA%z !"#$&'-.01456778<=>?HIIJJKX%zA%zA%zA%zA%zA%zA%zA%zA#$&')**+./123445566789;<=>@ACDFGRSVWXA%zA%zA%zA%zA%zA%zA%zA%zA%zA%zA%z !""#&'())*/001>?HIX%zA%zA%zA%zA%zA%zA %&&')**+ABBCRSTUX%zA%zA%zA%zA%z!""#&'-./00134566789<=>?HIX%zA%zA%zA%zA%zA%zA%zA%zA%&&')**+ABBCLMMNRSTUX%zA%zA%zA%zA%zA%zA%z!""#&'-./0567889<=>?HIIJLMX%zA%zA%zA%zA%zA%zA%zA%zA%&&')**+X%zA%zA%z!""#'(,-0178<=>?HIRSX%zA%zA%zA%zA%zA%zA%z /023JKKLTUUVVWXA%zA%zA%zA%zA%zA "##$'(-..//00189>?HIJKLMX%zA%zA%zA%zA%zA%zA%zAIJJKLMSTXA%zA%zA '(()23XA%zA%zAIJJKLMUVXA%zA%zA !'(()23XA%zA%zA012389BCMNNOOPPQQRRSVWX%zA%zA%zA%zA%zA%zA%z !!"EFIJX%zA%zA%z0112UVX%zA%zA%zA XA%zAILNTVW%z%z%zQbg79BIXbgebgWbg")FIMebgeHIObge)2@ACXebgeebgbgbg"#')*,0119Bbgeeebge9KLObge)+LMSWXebgebgbgee)2eeIIbg$&?ASUVXXbgbgbgbgbg&)6bgbgSbgMbgVVe59Xbgbg)99bge8FXbgbg#)NOSbgbge69Xbgbg!(*.bgbgbg69BIXbgebg,1Tbgbg@IXbgbg?bgbgeNbg.9Kbgbg*bg!bgKbg<=@IRbgeeBDEIJbgebgVXe5@@IXbgbgbg)IXbgebgIXbgebg9Obgbg ,066778ACOQUWWbgbgbgebgbgbgbgXbgbgbgJbg,XbgVbg(+Xbgbg ITbgbg(9HLMeeh&(IMOXhbgbgUXXbge)2:SXXebgh3?Xbg%z6789W%zebg #(+035RTbgbgbgbge?FIXebgebg ,9UbgebgKLXebge(()2>>IRebgeeeABObge$%&)2TVbgebgeeeIIKMPQWXeeee9CDHKMNOebgebge"'*/9?AGIXbgbgbgbgbgbgBIXbgbg;@@FFIXbgbgbgbg@HHXXbgbge/9?AGIOQWbgbgbgbgbg!')/179XbgbgbgbgeHHbg&ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}}ebghbgx j&j5jJjYjjj&jj&jjj k.kUkvk&jkkl0lKlxlAmhoooopBBCCFFGGNNSSObgeObgbg %%''((++,,//0011223344556677==EEFFIKLLMMNNOOPPQQT5D; <<,~~^5.^5C|&j4[  ##$$%%&&'To&ju;c ))**++,,--//334455667788qr5snsssst1tFtt !!""#'((),--../12234668899::;;<<==>>?DHHIWXX^56;55^5^56!6^506^5?6N6]6l66^566^5u^56&(HHIXOObg")BEJKVWXbgbgObgO"''*3FXbgOOOSTXOeCHIIJNTUVVbgeO%zbgO%%&&'(CGHHUUXXeeehOh""--9=?HJJXXhOheebgbg #,..26;;==??AACFHQRRUXbgbgbgbgbgObgbgbgbgbgObg!-2BCbgOOBbgObgDWe"/279;=@FJMeeeeee&(()2369Xeeeebg &&)SUXbgbgbgbgbg!#&)/11369Xbgbgbgbgbgbg!#&)IKNQWbgbgbgbgbg!/1Xbgbgbgbg)+.1Xbgbgbg368bge(9XbgbgNQVbgbgXbgEHXbgbg39XbgbgCGQbgbg*+.8JKMbgebge*+,9EGIKLbgebgbgeMXe,669Beee$()29Xeebg ABBCCIXbgebgebgbg79DITbgee(e)2e/04bge.79UXXeee")2IXeee'eLMXebge%)2DLebgee9:FGHIRSXebgebgebg>?Lbge<=Pbge"&()23Vebgebg!)SVXbgbgbg )+-ABEFFGLMMNOPRSSeebgebgebgebg.169Xbgbgbg!&)02244668VbgbgbgbgbgbgbgMOUWWbgbgbg%),/49EKMOUbgbgbgbgbgbgbg ./2334<==>@AABFbgebgebgebge1249CIXbgebgbg "')*189Xbgbgeebg"#XbgeRSUVVWXebgebge())*01:;>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXX&jA A!A<Wx&j)JeA&jALAA0 A&j5J_A17 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXB]/t (s AxAAnAA ?l&AAkA[|A &''(())**+-../VWWXX&jA&j&jA-())**+X&jA()1223XA&jA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA&j&;bwA&jA&j.U HIIJJKKLX؍AA&jATUUVVWXAA !""#())**++,,--../23344556677889@AABBCCDTUUVXAAA&j &j"=pA 'HA{A"##$$%+,,-7889;<<==>>?PQQRRSSTX6AAA;Ab&j&jAdWA  '(()GHHIXAAAAHIXAbg"#()BCHIXbgAbgAbg"#XbgASTXAhHIRSXAeA  !1234:;;<=>>?CDHIXhAhAhAhAhAbgFGXbgA'(()XAhAEFHIOPVWXbgAhbgA"#&''(XeAbgA()FGGHXAbghADEHIRSXbgheA()DEHIRSXAbgheA 89?@@ADEEFGHHIWXXAbgAbgAbgAbgA()/0XbgAhA#$$%()23XbghbgAeA899:;<<==>?@@AABKLLMPQQRRSSTTUXbgAbgAbgAbgAbgAbgAbgAbgAbgA( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXXAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgA "##$459:<==>BCCDTUXbgAbgAbgAbgAbgA=>BCEFXAhAh$%BCFGXhAhAhAXAhA-../XbgAbg566789:;;<=>?@ABEFFGRSSTTUUVXbgAbgAbgAbgAbgAbgAbgAbgXbgAbg  #$%&-../5667RSSTWXXbgAbgAbgAbgAbgAbgA "#)**+XbgAbgAbgAbg>?@AXbgAbg3445STTUXbgAbgAbgAbg-../MNNOXbgAbgAbg'(()GHHIXbgAbgAbg!""#ABBCXbgAbgAbg$%&'XbgAbgAeOPSTXhAhEFMNNOXhAhA34899:HIXAhAhAhA78=>CDXbgAbgAFGHIXhAh XhACDHIUVXbgAbgA !"()23567889<=XbgAbgAhAhAQRXbgA7889BCHIXbgAeAbgWXXbgA"#()FGHIMNXeAbgAhAHIOPXbghA()23;HIJKXAbgAbghAhA XbgAHIXbgh ./XhbghA23XbgAGHXbgAXbgA()XAbgIJXbgAPQXhbgh  >?HIIJKLMNNOWXXhAehbghbgAhHISTUVVWXhbghAhA %&&'()ABHIRSXAhAhAbgAeA?@MNNOXhbghAe  !()KLLMNOOPXAbghbgAbghAbgAKLXhbgh !"%&&'()23344556XhbgAhAhebgAbgA*++,DEPQVWWXXbgAbghAhbgXbghA  !!""#&''(6778ABHIXbgAbgAbgAbgAbgAbg78CDHIRSXbghAeA%&'()*+,ABBCIJJKLMMNRSSTUVVWXhAbgAbgAbgAbgAbgAbgAhbgh !"#$&'())*/00156:;<=>?EFHIMNXhAhAhAbgAhAbghAhAhAMNXbgh  #$()236778:;XhbgAeAhbgA !()23XhbgAbgAeAGHNOPQXbghAh014567XhAbghA()23XhAbgAeACDPQQRXbghbgA"#XeA56DEHIRSXAhAeADESTXbghA89XAbg89BCWXXbgeAbg !""#$%,--./001HINOOPQRSTWXXbgAbgAbgAbgAbghAhAhbg()23XhbghAeA89@ABCXAbgAbg )*01239::;;<<==>XbghAhbgAbghA#$KLRSSTWXXbghbghbghA !())*45XAhAbghbg"#235667HIXbghAbgAbg!""#GHOPPQXbgAbghAh()23JKXbgAeAbg()*+@AABOPXbgAhAhA  !"##$IJOPRSSTTUVWWXXbgAbgAbghAhAhAh  !()2389>??@ABBCXhbghAeAbgAbgAbg "#'(()*++,011289BCXbghAhAhbgAeA89KLOPXAbghA )**+LMSTVWXhbghbgAbghAh()23XhAeAHIIJXAbgA $%%&?@@ASTTUVWWXXbgAbgAbgAbgAbg&'()67XbgAbgASTXbgAMNXbgAUVVWXAhA5689XbgAbg)*899:XbgAhA89EFXbgAbg#$()NOSTXbgAbghA6789XbgAbg !())*./XbgAbgAbgA6789BCHIXbgAeAbg,-01TUXbgAbgA@AHIXbgAbg<=HISTTUXbgAbgAbg#$$%+,,-.//0:;;?@XbgAbghANOXbgA./89KLXbgAbgA*+XbgA!"XbgAKLXbgA<=@AHIRSXbghAeABCCDEFHIJKXbgAhAbgAUVXAh56?@@AHIXbgAbgAbg)*HIXbghAbgHIXbghAbg89OPXbgAbgA +,01566778ABBCOPPQUVVWWXXbgAbgAbghbgAbgAbgAbgAXbgAbgAbgJKXbgA+,XAbgVWXbgA()*+XbgAbg !HITUXbgAbgA()89HIKLMNXhAhAhA%&()HIMNNOXAhAbgAbgUVWXXbgAh()239:STWXXAeAbgAh34>?XAbgA%z6789WXX%zhbgA  !"#()*+012356QRTUXAbgAbgAbgAbgAhA<=HIXbgAbg #$TUXbgAbgA%&XbgA()VWXAbgA%&()89BCDEXbgAbgebgAGHKLLMVWWXXbghAhAbg6789XbghbgHIJKXbghA !XAbg #$()*++,,--.23JKXbgAbgAbgAbgAbg  #$$%;<@ADEEFXbghbghbghbghAhALMXbgALMXhbgh ()2389JKPQSTTUUVWXXhAeAhbgAbgAbgh"#>?FGHIXebghAbg ,-89UVXbghAbgAKLXhbgh '(()23=>>?HIRSXhAbgeAhAeAABOPXbghA $%&'()23STVWXbghbghAeAhA HIIJJKMNOPQRVWXAhAhAhAh 89CDHIJKMNOPXAhAbghAbghA  !"'()*/089?@@AGHHIXAbgAbgAbgAbgAbgAbgBCHIXbgAbg;>?HIIJJKWXXhAhAhAhAbgAbg()56XAbgA()IJXAhA !"#,--../1267<==>>??@@AABBCFGGHRSTUXAbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAbg"#&''(89XAbgAbgAbgNOXAbgBCXbgA=>CDGHJKLMXbgAbghbgA>??@@AEFFGHIXbgAbgAbgAbg@AGHHIWXXbgAbgAh /089?@@AGHHIOPPQWXXbgAbgAbgAbgAbgA  !'(()/0017889XbgAbgAbgAbgAhGHHIXAbgACDWXXAhA "#./23679::;=>?@FGIJMNXeAhAhAhAhAhA &''(()236789XAhAhehAbg  !%&&'()STTUXbgAbgAbgAbgAbg !""#&'()/00112236789XbgAbgAbgAbgAbgAbg !""#&'()IJJKNOPQWXXbgAbgAbgAbgAbgA !/001XbgAbgAbgAbg)**+./01XbgAbgAbg345689XbgAhA()89XbgAbgNOPQVWXbgAbgAXAbgEFGHXbgAbg3489XAbgAbgCDFGQRXbgAbgA*+./78JKMNXbghAbghA *+,-89EFFGIJJKLMXbghAbgAbgAhALMXAh,-566789BCXhAhAeA#$()2389XAheAbg ABBCCDHIXbghbghbgAbg7889DEHITUXbgAhAhA()XAeA()23XAeA/045XbghA-.7889UVWXXAhAhAh"#()23HIXeAeAh'(XhALMXhbgh%&()23CDLMXhbgAeAhA9:FGHIRSXhbghbgebg>?LMXbghA<=PQXbghA"#%&()23VWXeAbgebgA!"()STUVXbgAbgAbg ()+,,-ABEFFGLMMNOPRSSTXAhAhbghbghbghbgA./016789XbgAbgAbg !&'()0112233445566778VWXbgAbgAbgAbgAbgAbgAbgAMNNOUVVWWXXbgAbgAbgA%&(),-./4589EFJKMNNOUVXAbgAbgAbgAbgAbgAbgAbgA ./2334<==>@AABFGXbghbghbghbghA124589CDHIXbghAbgAbg  !!"'(()*+0189XbgAbgAhAhbg"#XbghRSUVVWXhbghbgh ())*01:;<=>?HIIJXhbghbghAeAbg%&'()*+,ABBCIJJKKLNORSTUUVVWXbghAbgAbgAbgAbgAbgAbgAhbgh !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXhAhAhbgAhAbgAbghAebgAbgAhA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAhAbgAbgAbgAbgAbgAbgAbgAhAh !"#$&')**+12566778>?HIJKMNNOXhAhAhAhAbgAbgAehbghA&''(*++,ABBCIJJKLMMNRSTUUVVWXAhAbgAbgAbgAbgAbgAbgAhbgh "##$&'())*89:;<=>?HIQRRSXhAhAhAbgAbghAeAbgh%&'()*+,ABBCIJJKLMMNRSTUUVVWXAhAbgAbgAbgAbgAbgAbgAhbgh !"#$&'-.01456778:;<=>?HIIJJKXhAhAhAhAbgAbghAeAbgA#$&')**+./123445566789;<=>@ACDFGRSVWXAhbgAbgAbgAbgAbgAbgAbgAbgAbgAbgAh !""#&'())*/001>?HIXhAhAhAbgAhAeA %&&')**+ABBCRSTUUVVWXhbgAbgAbgAbgAhbgh!""#&'-./00134566789:;<=>?HIXhAhAhAhAbgAbgAbghAeA%&&')**+ABBCLMMNRSTUUVVWXbghAbgAbgAbgAbgAbgAhbgh!""#&'-./0567889:;<=>?HIIJKLLMXhAhAhAhAbgAbghAeAbghA %&&')**+STUVVWXhbgAbgAbghbgh!""#&''(,-/00178:;<=>?HIRSXhAhAhbgAbghAbghAeAbg /023JKKLTUUVVWXAhAbgAbgAbgAbgA "##$'(-..//00189>?HIJKLMXbgAhAhAhAhAeAhAIJJKLMSTXAhAhA '(()23XAhAeAIJJKLMUVXAhAhA !'(()23XAhAeA012389BCMNNOOPPQQRRSVWXbgAhAeAhAhAhAh !!"EFIJXbgAbgAh  !%&0112UVXhAhbghAhA XAhAAA*039==AAA#LRTWAAA *4AA#2AHOQXAA+@BOAAJOSSUVXXAAAA AA#')*,0AAALOAMSWXAAAAAVVA99AOSA%(QSXXAAAAA>?A=@ADEAVXA)AA77A(9HAAXXA78ARTAHKMVAAIJA$$<@EEAAAAAMXAA9JXXAAA !X&jA&jA89XAbgAbgHIXbgA7 !"##$$%%&&''(()*++,,--..//00145566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKOK0pKAKA"AK#K$#3LNL0{LLLLMA0bMwMMAMN1NFNmNANAK# O'O#cOxOOA0OO#A#)$AP>$_$P7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXRy$WDrAwVAV@mGAA_GtG3 %H`    )AA,!?IY!A!!""Ag"""JA())**+X0VkA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0)A>AeAAAA0A0 HIIJJKKLX؍AA0!NATUUVVWXA3A !""#())**++,,--../23344556677889@AABBCCDTUUVXA[|AA00 ;nAAyA"##$$%+,,-7889;<<==>>?PQQRRSSTXbA}AAAl0 0.AbUA  '(()GHHIXA3ZAAASTXAbg  !1234:;;<=>>?CDHIXbgAbgAbgAbgAbgA'(()XAbgAEFHIOPVWXAbgA()FGGHXAbgADEHIRSXbgA()DEHIRSXAbgA()/0XAbgA#$$%()23XbgAA=>BCEFXAbgAbg$%BCFGXbgAbgAbgAXAbgAOPSTXbgAbgEFMNNOXbgAbgA34899:HIXAbgAbgAbgAFGHIXbgAbg !"()23567889<=XAAbgAbgA"#()FGHIMNXAAbgAHIOPXbgA#$'(())*XAbgbg !'(+,89XbgAbgA 89:;;<<==>HIJKXAAbgAbgAHIXbg ./XbgbgAPQXbgbg  >?HIIJKLMNNOWXXbgAbgbgAbgHISTUVVWXbgbgAbgA %&&'()ABHIRSXAbgAbgAAA?@MNNOXbgbgA  !()KLLMNOOPXAbgAbgAAKLXbgbg !"%&&'()23344556XbgAbgAbgAA*++,DEPQVWWXXAbgAbgXbgA78CDHIRSXbgAA%&'()*+,ABBCIJJKLMMNRSSTUVVWXbgAAAAAAAbgbg !"#$&'())*/00156:;<=>?EFHIMNXbgAbgAbgAAbgAbgAbgAbgAMNXbg  #$()236778:;XbgAAbgA !()23XbgAAAGHNOPQXbgAbg014567XbgAbgA()23XbgAAACDPQQRXbgA56DEHIRSXAbgAADESTXbgA !""#$%,--./001HINOOPQRSTWXXAAAAbgAbgAbg()23XbgbgAA )*01239::;;<<==>XbgAbgAbgA#$KLRSSTWXXbgbgbgA !())*45XAbgAbg"#235667HIXbgAA!""#GHOPPQXAbgAbg()*+@AABOPXAbgAbgA  !"##$IJOPRSSTTUVWWXXAAbgAbgAbgAbg  !()2389>??@ABBCXbgbgAAAA "#'(()*++,011289BCXbgAbgAbgAA89KLOPXAbgA )**+LMSTVWXbgbgAbgAbg()23XbgAAUVVWXAbgA)*899:XAbgA#$()NOSTXAbgA $%(),--.0112NOPQSTWXXbgAbgAbgAAAbgAbg !!"=>?@XAbgA<=@AHIRSXbgAABCCDEFHIJKXAbgAAUVXAbg)*HIXbgAHIXbgA +,01566778ABBCOPPQUVVWWXXAAbgAAAA ()+,,-89HIKLMNXbgAïAbgA AUVWXXAbg34>?XAA%z6789WXX%zbgA  !"#()*+012356QRTUXAAAAAbgAGHKLLMVWWXXbgAbgA6789XbgHIJKXbgA  #$$%;<@ADEEFXbgbgbgbgAbgALMXbgbg ()2389JKPQSTTUUVWXXbgAAbgAAbg"#>?FGHIXbgA ,-89UVXbgAAKLXbgbg '(()23=>>?HIRSXbgAAbgAAABOPXbgA $%&'()23STVWXbgbgAAbgA HIIJJKMNOPQRVWXAbgAbgAbgAbg 89CDHIJKMNOPXAbgAbgAbgA;?@@CGHHIWXXAbgAïAïAïbg A  ,--.89=>>?HIIJJKWXX A AbgAbgAA()IJXAbgA=>CDGHJKLMXAbgA@AGHHIWXXAAbg  !'(()/0017889XAAAAbgCDWXXAbgA "#./23679::;=>?@FGIJMNXAbgAbgAbgAbgAbgA &''(()236789XAbgAbgbgA345689XAbgA*+./78JKMNXbgAbgA *+,-89EFFGIJJKLMXbgAAAbgALMXAbg,-566789BCXbgAbgAA#$()2389XAbgA ABBCCDHIXbgbgA7889DEHITUXAbgAbgA/045XbgA-.7889UVWXXAbgAbgAbg"#()23HIXAAbg'(XbgALMXbgbg%&()23CDLMXbgAAbgA9:FGHIRSXbgbg>?LMXbgA<=PQXbgA ()+,,-ABEFFGLMMNOPRSSTXAbgAbgbgbgbgA ./2334<==>@AABFGXbgbgbgbgA124589CDHIXbgAA  !!"'(()*+0189XAAbgAbg"#XbgRSUVVWXbgbgbg ())*01:;<=>?HIIJXbgbgbgAA%&'()*+,ABBCIJJKKLNORSTUUVVWXbgAAAAAAAbgbg !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXbgAbgAbgAbgAAbgAAAbgA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAbgAAAAAAAAbgAbg !"#$&')**+12566778>?HIJKMNNOXbgAbgAbgAbgAAAbgbgA&''(*++,ABBCIJJKLMMNRSTUUVVWXAbgAAAAAAAbgbg "##$&'())*89:;<=>?HIQRRSXbgAbgAbgAAbgAAbg%&'()*+,ABBCIJJKLMMNRSTUUVVWXAbgAAAAAAAbgbg !"#$&'-.01456778:;<=>?HIIJJKXbgAbgAbgAbgAAbgAAA#$&')**+./123445566789;<=>@ACDFGRSVWXAbgAAAAAAAAAAbg !""#&'())*/001>?HIXbgAbgAbgAAbgAA %&&')**+ABBCRSTUUVVWXbgAAAAbgbg!""#&'-./00134566789:;<=>?HIXbgAbgAbgAbgAAAbgAA%&&')**+ABBCLMMNRSTUUVVWXbgAAAAAAbgbg!""#&'-./0567889:;<=>?HIIJKLLMXbgAbgAbgAbgAAbgAAbgA %&&')**+STUVVWXbgAAbgbg!""#&''(,-/00178:;<=>?HIRSXbgAbgAbgAbgAbgAA /023JKKLTUUVVWXAbgAAAAA "##$'(-..//00189>?HIJKLMXAbgAbgAbgAbgAAbgAIJJKLMSTXAbgAbgA '(()23XAbgAAIJJKLMUVXAbgAbgA !'(()23XAbgAA012389BCMNNOOPPQQRRSVWXAbgAAbgAbgAbgAbg !!"EFIJXAAbg  !%&0112UVXbgAbgbgAbgA XAbgA?FA ,ALXAA>>AABOA%&TVAAAIIKMPQWXAAAADHNOAAA>?DIWXX^5m5556;55^5E;^56!6^506^5?6N6]6l66^566^5^56>OSTXOACHIIVVAOO0022OO%%&&'(CGUUA8AAO""9=?HOAA;;RROO-2BCOO34AAOO!!O((BLQSOOO !Xb<<A<<A89XAeAeXeHIXeA7 !"##$$%%&&''(()*++,,--..//00145566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXXKOK0pKAKALAKLKL3LNL0{LLLLMA0bMwMMAMN1NFNmNANAL O'O]McOxOOA0OOMAMMAPMNP7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXX;EVEEEF(FmFFFGD!GHGGA&H;HEtHAHHEHIG=IAdIA_GtGII%HJNJJJ)AAJ?IKA5KKKAL7LvLJA())**+X0EEA89@AABBCCDDEEFFGGHQRRSTUUVVWWXXA0)A>AeA6DcDAAA0A0~DDD HIIJJKKLX؍AA0!CATUUVVWXACCA !""#())**++,,--../23344556677889@AABBCCDTUUVXABCACCA00 ;nA^CyCCAyA"##$$%+,,-7889;<<==>>?PQQRRSSTXAAABA>B_BABAl0B0BAbUA  '(()GHHIXA3ZAAAASTXAe  !1234:;;<=>>?CDHIXeAeAeAeAeA'(()XAeAEFHIOPVWXAeA()FGGHXAeADEHIRSXeA()DEHIRSXAeA()/0XAeA#$$%()23XeAA=>BCEFXAeAe$%BCFGXeAeAeAXAeAOPSTXeAeEFMNNOXeAeA34899:HIXAeAeAeAFGHIXeAe XeA !"()23567889<=XAAeAeA"#()FGHIMNXAAeAHIOPXeA#$'(())*XAee !'(+,89XeAeA 89:;;<<==>HIJKXAAeAeAHIXe ./XeeAPQXee  >?HIIJKLMNNOWXXeAeeAeHISTUVVWXeeAeA %&&'()ABHIRSXAeAeAAA?@MNNOXeeA  !()KLLMNOOPXAeAeAAKLXee !"%&&'()23344556XeAeAeAA*++,DEPQVWWXXAeAeXeA78CDHIRSXeAA%&'()*+,ABBCIJJKLMMNRSSTUVVWXeAAAAAAAee !"#$&'())*/00156:;<=>?EFHIMNXeAeAeAAeAeAeAeAMNXe  #$()236778:;XeAAeA !()23XeAAAGHNOPQXeAe014567XeAeA()23XeAAACDPQQRXeA56DEHIRSXAeAADESTXeA !""#$%,--./001HINOOPQRSTWXXAAAAeAeAe()23XeeAA )*01239::;;<<==>XeAeAeA#$KLRSSTWXXeeeA !())*45XAeAe"#235667HIXeAA!""#GHOPPQXAeAe()*+@AABOPXAeAeA  !"##$IJOPRSSTTUVWWXXAAeAeAeAe  !()2389>??@ABBCXeeAAAA "#'(()*++,011289BCXeAeAeAA89KLOPXAeA )**+LMSTVWXeeAeAe()23XeAAUVVWXAeA)*899:XAeA#$()NOSTXAeA $%(),--.0112NOPQSTWXXeAeAeAAAeAe !!"=>?@XAeA<=@AHIRSXeAABCCDEFHIJKXAeAAUVXAe)*HIXeAHIXeA +,01566778ABBCOPPQUVVWWXXAAeAAAA ())*,--.89HIKLMNXenSAnSAeA AUVWXXAe6789WXX%zeA  !"#()*+012356QRTUXAAAAAeAGHKLLMVWWXXeAeA6789XeHIJKXeA  #$$%;<@ADEEFXeeeeAeALMXee ()2389JKPQSTTUUVWXXeAAeAAe"#>?FGHIXeA ,-89UVXeAAKLXee '(()23=>>?HIRSXeAAeAAABOPXeA $%&'()23STVWXeeAAeA HIIJJKMNOPQRVWXAeAeAeAe 89CDHIJKMNOPXAeAeAeA;@CGHHIWXXAeAnSAnSAe A ,--.89=>>?HIIJJKWXX AnSA AeAeAA()IJXAeA=>CDGHJKLMXAeA@AGHHIWXXAAe  !'(()/0017889XAAAAeCDWXXAeA "#./23679::;=>?@FGIJMNXAeAeAeAeAeA &''(()236789XAeAeeA345689XAeA*+./78JKMNXeAeA *+,-89EFFGIJJKLMXeAAAeALMXAe,-566789BCXeAeAA#$()2389XAeA ABBCCDHIXeeA7889DEHITUXAeAeA/045XeA-.7889UVWXXAeAeAe"#()23HIXAAe'(XeALMXee%&()23CDLMXeAAeA9:FGHIRSXee>?LMXeA<=PQXeA ()+,,-ABEFFGLMMNOPRSSTXAeAeeeeA ./2334<==>@AABFGXeeeeA124589CDHIXeAA  !!"'(()*+0189XAAeAe"#XeRSUVVWXeee ())*01:;<=>?HIIJXeeeAA%&'()*+,ABBCIJJKKLNORSTUUVVWXeAAAAAAAee !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXeAeAeAeAAeAAAeA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAeAAAAAAAAeAe !"#$&')**+12566778>?HIJKMNNOXeAeAeAeAAAeeA&''(*++,ABBCIJJKLMMNRSTUUVVWXAeAAAAAAAee "##$&'())*89:;<=>?HIQRRSXeAeAeAAeAAe%&'()*+,ABBCIJJKLMMNRSTUUVVWXAeAAAAAAAee !"#$&'-.01456778:;<=>?HIIJJKXeAeAeAeAAeAAA#$&')**+./123445566789;<=>@ACDFGRSVWXAeAAAAAAAAAAe !""#&'())*/001>?HIXeAeAeAAeAA %&&')**+ABBCRSTUUVVWXeAAAAee!""#&'-./00134566789:;<=>?HIXeAeAeAeAAAeAA%&&')**+ABBCLMMNRSTUUVVWXeAAAAAAee!""#&'-./0567889:;<=>?HIIJKLLMXeAeAeAeAAeAAeA %&&')**+STUVVWXeAAee!""#&''(,-/00178:;<=>?HIRSXeAeAeAeAeAA /023JKKLTUUVVWXAeAAAAA "##$'(-..//00189>?HIJKLMXAeAeAeAeAAeAIJJKLMSTXAeAeA '(()23XAeAAIJJKLMUVXAeAeA !'(()23XAeAA012389BCMNNOOPPQQRRSVWXAeAAeAeAeAe !!"EFIJXAAe  !%&0112UVXeAeeAeA XAeA<=HIXL AL  #$TUXL AL AGHKLLMVWWXXL OAOAL 6789XL OL HIJKXL OA  #$$%;<@ADEEFXL OL OL OL OAOALMXOL O ()2389JKPQSTTUUVWXXOAAOL AL AL O"#>?FGHIXL OAL  ,-89UVXL OAL AKLXOL O '(()23=>>?HIRSXOAL AOAAABOPXL OA $%&'()23STVWXL OL OAAOA HIIJJKMNOPQRVWXAOAOAOAO 89CDHIJKMNOPXAOAL OAL OA;>?HIIJJKWXXeAeAOAOAL AL ()IJXAOA=>CDGHJKLMXL AL OL A@AGHHIWXXL AL AO  !'(()/0017889XL AL AL AL AOCDWXXAOA "#./23679::;=>?@FGIJMNXAOAOAOAOAOA &''(()236789XAOAOOAL 345689XL AOA*+./78JKMNXL OAL OA *+,-89EFFGIJJKLMXL OAL AL AOALMXAO,-566789BCXOAOAA#$()2389XAOAL  ABBCCDHIXL OL OL AL 7889DEHITUXL AOAOA/045XL OA-.7889UVWXXAOAOAO"#()23HIXAAO'(XOALMXOL O%&()23CDLMXOL AAOA9:FGHIRSXOL OL L >?LMXL OA<=PQXL OA ()+,,-ABEFFGLMMNOPRSSTXAOAOL OL OL OL A ./2334<==>@AABFGXL OL OL OL OA124589CDHIXL OAL AL   !!"'(()*+0189XL AL AOAOL "#XL ORSUVVWXOL OL O ())*01:;<=>?HIIJXOL OL OAAL %&'()*+,ABBCIJJKKLNORSTUUVVWXL OAL AL AL AL AL AL AOL O !"#$&''(/001456778:;<=>?HIJKTUUVVWWXXOAOAOL AOAL AL OAL AL AOA#$'()*+,ABBCIJJKLMMNOPPQRSTUUVVWXAOAL AL AL AL AL AL AL AOAO !"#$&')**+12566778>?HIJKMNNOXOAOAOAOAL AL AOL OA&''(*++,ABBCIJJKLMMNRSTUUVVWXAOAL AL AL AL AL AL AOL O "##$&'())*89:;<=>?HIQRRSXOAOAOAL AL OAAL O%&'()*+,ABBCIJJKLMMNRSTUUVVWXAOAL AL AL AL AL AL AOL O !"#$&'-.01456778:;<=>?HIIJJKXOAOAOAOAL AL OAAL A#$&')**+./123445566789;<=>@ACDFGRSVWXAOL AL AL AL AL AL AL AL AL AL AO !""#&'())*/001>?HIXOAOAOAL AOAA %&&')**+ABBCRSTUUVVWXOL AL AL AL AOL O!""#&'-./00134566789:;<=>?HIXOAOAOAOAL AL AL OAA%&&')**+ABBCLMMNRSTUUVVWXL OAL AL AL AL AL AOL O!""#&'-./0567889:;<=>?HIIJKLLMXOAOAOAOAL AL OAAL OA %&&')**+STUVVWXOL AL AL OL O!""#&''(,-/00178:;<=>?HIRSXOAOAOL AL OAL OAAL  /023JKKLTUUVVWXAOAL AL AL AL A "##$'(-..//00189>?HIJKLMXL AOAOAOAOAAOAIJJKLMSTXAOAOA '(()23XAOAAIJJKLMUVXAOAOA !'(()23XAOAA012389BCMNNOOPPQQRRSVWXL AOAAOAOAOAO !!"EFIJXL AL AO  !%&0112UVXOAOL OAOA XAOACHIIVV9OO%%&&'(CGUU9n199O""9=?HO99DW9/279;=@FJM99999&((36999689+.KM99+,KL99MX9,6699$(9BB999DIT99049.79UXX999'9MX99DL99:F99?L9=P9)+-AFFMMPR99999/24<>@BF9999249)*1899#X9SUWX999(*0;<999UUWX999 !$&00;?@@AABKLLMPQQRRSSTTUXn=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:( !!""##$$%%&())*+,,--./00112233445566778899:;<<==>?@CDDEKLLMPQQRUVVWWXXq:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q: "##$459:<==>BCCDTUXn=q:n=q:n=q:n=q:n=q:-../Xn=q:n=566789:;;<=>?@ABEFFGRSSTTUUVXn=q:n=q:n=q:n=q:n=q:n=q:n=q:n=Xn=q:n=  #$%&-../5667RSSTWXXn=q:n=q:n=q:n=q:n=q:n=q: "#)**+Xn=q:n=q:n=q:n=>?@AXn=q:n=3445STTUXn=q:n=q:n=q:n=-../MNNOXn=q:n=q:n='(()GHHIXn=q:n=q:n=!""#ABBCXn=q:n=q:n=$%&'Xn=q:n=q:!<78=>CDXn=q:n=q:X~q:89;>@@AABBCCIIKKMMNNOOTTUUVV1Rm܅*]lɆ؆&A\qˇ +))**DDEEVVWWXX΄KKUUVVq""AABBCC,AV ##$$,,<<>>lσރ((]TX~!14:<=?C~~~~~((~IO~GG~EH~)/~#~>BFX~~$CF~~~~OTX~~ENN~~48:H~~~FIX~~~679<~~IM~((*X~~ (+~~==IJ~~IX~ .~~QX~~IILMXX~~~~ISVV~~~&&~~@M~~LL~~LX~~"%'(~~~EPWW~~~8C~TUWX~~~ !$&00;?~=@~DE~VX~)~~77~(9HLM~~XX~678~RT~HKMV~~78~IJ~$$<@EE~~~~~MX~~9JXX~~~?F~ ,~LX~~>>~~BO~%&TV~~~IIKMPQWX~~~~DHNO~~~>?DIWXX^5m5556;55^5^56!6^506^5?6N6]6l66^566^5^56STXO~CHIIJNVV~OO%%&&'(CGHHUUXX~=~~O""--9=?HO~~DW~/279;=@FJM~~~~~&((36~~~68~+.KM~~+,KL~~MX~,66~~$(~BB~~9DIT~~04~.79UXX~~~'~MX~~DL~~:F~~?L~=P~)+-AFFMMPR~~~~~/24<>@BF~~~~24~)*18~~#X~SUWX~~~(*0;<~~~UUWX~~~ !$&00;?HIIJKLMNNOXq:!<q:n=q:n=q:HIXq:n=q:()ABHIRSXq:n=q:!<q:?@NOXq:n=q:!<  !()KLNOOPXq:n=q:n=q:n=q:n=q:KLXq:n=q: ()23344556Xq:n=q:!<n=q:n=q:*++,DEWXXn=q:n=q:n=Xn=q:  !!""#&''(6778ABHIXn=q:n=q:n=q:n=q:n=q:n=78HIRSXn=q:!<q:%&'()*+,ABBCIJJKLMMNRSUVVWXq:n=q:n=q:n=q:n=q:n=q:n=q:n=q:())*56:;Xq:n=q:n=q:MNXn=q: #$()2378:;Xq:n=q:!<q:n=q: !()23Xq:n=q:n=q:!<q:0145Xq:n=q:()23Xq:n=q:!<q:CDPQQRXn=q:n=q:"#X!<q:DEXn=q:89BCWXXn=!<q:n=  !""#$%,--./001HIWXXn=q:n=q:n=q:n=q:n=q:n=()23Xq:n=q:!<q:89@ABCXq:n=q:n=)*9::;;<<=Xn=q:n=q:n=q:#$KLRSSTXn=q:n=q:n=q:())*45Xq:n=q:n="#5667HIXn=q:n=q:n=!""#GHXn=q:n=q:()23JKXn=q:!<q:n= !"##$IJXn=q:n=q:n=q:  ()2389>??@ABBCXq:n=q:!<q:n=q:n=q:n="#011289BCXn=q:n=q:!<q:89KLXq:n=q:)**+LMXq:n=q:n=q:n=q:()23Xq:!<q:HIIJXq:n=q: $%%&?@@ASTTUVWWXXn=q:n=q:n=q:n=q:n=&'()67Xn=q:n=q:STXn=q:5689Xn=q:n=)*Xn=q:89EFXn=q:n=#$()NOXn=q:n=q:6789Xn=q:n= !())*./Xn=q:n=q:n=q:6789BCHIXn=q:!<q:n=,-01TUXn=q:n=q:@AHIXn=q:n=<=HISTTUXn=q:n=q:n=#$$%+,,-.//0:;;Xn=q:n=q:NOXn=q:./89KLXn=q:n=q:*+Xn=q:!"Xn=q:KLXn=q:<=HIRSXn=q:!<q:BCHIJKXn=q:n=q:56?@@AHIXn=q:n=q:n=HIXn=q:n=HIXn=q:n=89OPXn=q:n=q: +,01566778ABBCOPPQUVVWWXXn=q:n=q:q:q:q:q:q:()Xq:q:n=JKXn=q:+,Xq:n=VWXn=q:()*+Xn=q:n= !HITUXn=q:n=q:KLMNXq:>q:%&()HIMNNOXq:>q:n=q:n=UVXn=q:()239:STWXXq:!<q:n=q:>34>?Xq:n=q:~6789WXX~q:n=q:  !"#()*+012356Xq:n=q:n=q:n=q:n=q:6 YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~irjkkTbll lllmLm im mmmn6n_n nno9o\oobpqq-rv"r sssDLAA:FAA?LA=PA)+-AFFMMPRAAAAA/24<>@BFAAAA24A)*18AA#XASUWXAAA(*0;<AAAUUWXAAA !$&00;>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWKfۭ)DwήRgʯ 0  ER!Ұ A$"b}%XJ#())**009@AABBCCDDEEFFGGRRUUVVWWXX0!<{00߬IIJJKK0mUUVVI^""))**++,,--../2334455667788AABBCCUUūګ0  Yn0 (C.##$$,,889;<<==>>QQRRSS)4DYt00*((HHwުTX!14:<=?CIX((EIOPV)FGGDEHIR)DEHIR)/#$$)2>BFX$CFOTXENN48:HFIX!)2679<")FIMHIO#(())*X (+,89:<<==IJHIX .PQX?HIIJKLMNNXXHISVV&&)AIR?@MOX )KLLOOKLX"%'()23355*,DEPWWXX78CIR %(),ACIKLNRTUVVWX  !$&))006:;@ACX"#')*,0119B9KLO)+LMSWX)2VV)99#)NOS %(),.02NQSXX "=>?<=@IRBDEIJVX)IXIX ,066778ACOQUWW(,,9HLME  UXX789W #(+035RTGHKMVXX6789XHIJ  #$$%;<@EELMX)29JKPTTVWXX"#>?FIX ,9UKLX(()2>>IRABO$%&)2TVIIKMPQWX9CDHKMNO;>??@@AABBCCDDEEFFGGHHIIJJKLMMNRSSTTUUVVWWXX>B_AtAaA b.b"=BjABQfA 5\A}AUbbRgABbAc3c0Hcic7 !!""##$$%%&&'())**++,,-.//0011223344556899::;;<<==>>??@@AABBCCDDEHIIJJKKLLMMNNOOPSTTUUVVWWXXZZZ[\[[[[.\a\ |\\]A]] Z]A^#^ ZJ^w^ ^A^AN c ^=_ j___ ` A6`.c`A``,aAqaaaA &''(())**+-../VWWXXBBZABWZBlZA}Z())**+XB Z!ZA !!""#'((),--../12234668899::;;<<==>>?DHHIWXX^5׮6;55^5-^56!6^506^5?6N6]6l66^566^5^56STXOCHIITUVVOO %%&&'(12==@@CGHHUUXX;E E E  O ""--9=?HJJXX O DW"/279;=@FJM&(()2369X368*+.8JKM*+,9EGIKLMX,669B$()29X ABBCCIX79DIT/04.79UXX")2IX'LMX%)2DL9:FGHIRSX>?L<=P )+-ABEFFGLMMNOPRSS ./2334<==>@AABF1249CIX "')*189X"#XRSUVVWX())*01:;>?PQQRRSSTXpV"VAVyAVWA?WABfWBWA A  '(()GHHIXA'NAcAxAHIXAL "#()BCHIXL AL AL "#XL ASTXAOHIRSXAA* ZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttvvwwxxzz{{}} | 0 @ 000 7=0vK7 LZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}CC#C2CACVCqCCCCCC D(DDEEE;FhFFCCFFNNSSX p9XXH+YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~xul luuuLm v m9vbvvvv w_wwwwwxy^zzv"rF{{|. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXXY##0####$1$0ez0ݢI^m*$3H0WfEZu . !!""##$$%%&&))**++,,//001122335599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWW A\w(=-H]x "R!#PqN.UjJ#())**09@AABBCCDDEEFFGGRRUUVVWWXX0w<!600KlIIJJKK0UUVV""))**++,,--../2334455667788AABBCCUUXm0  Yn0 (ػ##$$,,889;<<==>>QQRRSS0(0=*((wTX!14:<=?CIX((EIOPV)FGGDEH)DEH)/#$$>BFX$CFOTXENN48:HFIX!)2679<)FIMHIO#(())*X (+,89:<<==IJHIX .PQXIIJKLMNNXXHISVV&&)A?@M )KLLOOKLX"%'(3355*,DEPWWXX78C %(),ACIKLNRTUVVWX  !$&))006:;@ACX"#')*,0119KLO)+LMSWXVV)99#)NOS %(),.02NQSXX "=>?<=@BDEIJVX)IXIX ,066778ACOQUWW(9HUXX789W #(+035RTGHKMVXX6789XHIJ  #$$%;<@EELMX9JKPTTVWXX#>?FIX ,9UKLX((>>ABO$%&TVIIKMPQWX9CDHKMNO;?L<=P )+-ABEFFGLMMNOPRSS ./2334<==>@AABF1249CIX "')*189X"#XRSUVVWX())*01:;>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXZ{,Y TL s        ' H &&5566778899;;==AABBCCDDEEFFGGHHIILLPP+@Ods=$3`LLNNPP_tAP22334499;;<<==>>??@@AABBCCDDHH'Nc~,EEFFQQTTWWXX-Zu ))**,,//4455667788 -Z99 ``o9XZZ^^__ccgghhiijjllmmnnooppqqrrssttvvzz{{}}Q`o~5DSh1c $$&&AADDMMSSTTVVWW' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVVav!6ETo==,;Vk%@Op))**=LDDEEVVWWXX(KKUUVV""AABBCC2Gbq ##$$,,<<>>#((TX!14:<=?C((IOGGEH)/#>BFX$CFOTXENN48:HFIX679<IM((*X (+==IJIX .QXIILMXXISVV&&@MLLLX"%'(EPWW8CTUWX !$&00;?=@DEVX)66778ACOQUWW((9HXX78RT!YZZ[]^^__`bccdfgghhiijjkkllmmnnooppqqrrssttuuvvwyzz{{||}}~i'|>|U|l|||||},}O}f}}}}k~5R3HIMOPSVWWXX"#X!""##*VXX )CHL%&)3559X #$89BDDEEGHIIJX ,../68=>?@ACFGHIRSUXX(())**+HIX#&X>?IJJ"#CDLMNQQSSVV!99::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXN϶ >ڷd-l#bdӻE`0!""##$$%%&&''(())*12233445566778899::;;<<==>>@@AABBCCDDEEFFGGHHIIJJKKLLMOPPQTUUVVWWXX0:gʲ߲ 0-BWxɳ$,;J_z "7Xs0@0͵++,,IKLLMMNNOOPPQQ6ixҪW0 ,Mhĩө0*++,,-01122334455678899::;;<<==>>??@@AABBCCDDEEFFGGHHIX0ܦ0<Wl0{ >_zѨFs00 9XXH $$&&AADDMMSSTTVVWW"1@O' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVV "7Rgvnn0?N]l  AVq))**n}DDEEVVWWXX /DYKK UUVV""AABBCCcx ##$$,,<<>> '66ET((TX!14:<=?C((IOGGEH)/#>BFX$CFOTXENN48:HFIX679<IM((*X (+==IJIX .QXIILMXXISVV&&@MLLLX"%'(EPWW8CTUWX !$&00;?=@DEVX)77(9HXX78RTHKMVIJ$$<@EEMX9JXX?F ,LX>>BO%&TVIIKMPQWXDHNO@BF24)*18#XSUWX(*0;<UUWX !$&00;>BO%&TVIIKMPQWXDHNO@BF24)*18#XSUWX(*0;<UUWX !$&00;?HIX!<n=q:n= 89UVXn=q:n=q:KLXq:n=q:'(()23HIRSXq:n=!<q:!<q:ABXn=q:$%()23Xn=q:n=q:!<q:89CDJKMNXq:n=q:n=q:  !"'()*/089?@@AGHHIXq:n=q:n=q:n=q:n=q:n=q:n=BCHIXn=q:n=;q:> ,--.7889IJJKWXX>q:>q:X;q:n=q:n=()56Xq:n=q: !"#,--../1267<==>>??@@AABBCFGGHRSTUXq:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n="#&''(89Xq:n=q:n=q:n=NOXq:n=BCXn=q:=>CDGHJKLMXn=q:n=q:n=q:>??@@AEFFGHIXn=q:n=q:n=q:n=@AGHHIXn=q:n=q: /089?@@AGHHIOPPQWXXn=q:n=q:n=q:n=q:n=q:  !'(()/00178Xn=q:n=q:n=q:n=q:GHHIXq:n=q:YZZ[]^^__`bccdfgghhiijjkkllmmnnooppqqrrssttuuvvwyzz{{||}}~Jmπ2[~Ɂ/Ѓ^ԄEEFFGGHHILMMNNOOPPQQRRSSTTUUVVWWXX Yt0t˥04gv ))**++,,--//4455667788v:B99 @@9XH. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXXY##0##ڌ#O#ߍ$1$0L$ez0ݢI^m $3H0Wfuդ / !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWaaaa=l^llllmm0mummmOmn,nOGnbn }nn  nnR!o4oaooo$"oop0]rJ#())**0OO9@AABBCCDDEEFFGGRRUUVVWWXX0!< O'O{00>QQRRSS11141120220G2*((HHw1 9Xq:q:Hq: $$&&AADDMMSSTTVVWW '6' !!""$$%%&&))**++,,//001122335599==>>@@AABBCCIIKKMMNNOOTTUUVVy 9N]lUU&5DSn(=Xg))**UdDDEEVVWWXX+@KKUUVV""AABBCCJ_z ##$$,,<<>>,; !!""#'((),--../12234668899::;;<<==>>?DIWXX^5m5556;55^5^56!6^506^5?6N6]6l66^566^5^56STXOq:!14:<=?Cq:q:q:q:q:((q:IOq:GGq:EHq:)/q:#q:>BFXq:q:$CFq:q:q:q:OTXq:q:ENNq:q:48:Hq:q:q:FIXq:q:q:679<q:q:IMq:((*Xq:q: (+q:q:==IJq:q:IXq: .q:q:QXq:q:IILMXXq:q:q:q:ISVVq:q:q:&&q:q:@Mq:q:LLq:q:LXq:q:"%'(q:q:q:EPWWq:q:q:8Cq:TUWXq:q:q: !$&00;?q:=@q:DEq:VXq:)q:q:77q:(9Hq:q:XXq:78q:RTq:HKMVq:q:IJq:$$<@EEq:q:q:q:q:MXq:q:9JXXq:q:q:?Fq: ,q:LXq:q:>>q:q:BOq:%&TVq:q:q:IIKMPQWXq:q:q:q:DHNOq:q:q:@BFq:q:q:q:24q:)*18q:q:#Xq:SUWXq:q:q:(*0;<q:q:q:UUWXq:q:q: !$&00;?Xn=q:<=Xn=q:"#%&()23VWX!<q:n=!<n=q:!"()STUVXn=q:n=q:n= ABEFFGLMMNOPRSSTXq:n=q:n=q:n=q:n=q:./016789Xn=q:n=q:n= !&'()0112233445566778VWXn=q:n=q:n=q:n=q:n=q:n=q:n=q:MNNOUVVWWXXn=q:n=q:n=q:%&(),-./4589EFJKMNNOUVXq:n=q:n=q:n=q:n=q:n=q:n=q:n=q: ./2334<==>@AABXn=q:n=q:n=q:n=q:1289CDHIXn=q:n=q:n= !!"'(89Xn=q:n=q:n=RSUVVWXq:n=q:n=q: ())*01:;>?HIIJXq:n=q:n=q:!<q:n=%&'()*+,ABBCIJJKKLNORSUVVWXn=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q: &''(456778:;>?HIJKTUUVXq:n=q:n=q:n=q:!<n=q:n=q:#$'()*+,ABBCIJJKLMMNOPPQRSXq:n=q:n=q:n=q:n=q:n=q:n=q:n=q: 12566778>?HIJKMNXq:n=q:n=q:!<q:n=q:&''(*++,ABBCIJJKLMMNRSUVVWXq:n=q:n=q:n=q:n=q:n=q:n=q:n=q: ())*89:;>?HIQRRSXq:n=q:n=q:!<q:n=q: 456778:;>?HIIJJKXq:n=q:n=q:!<q:n=q:#$&')**+./123445566789;<=>@ACDFGRSXq:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:n=q:())*>?HIXq:n=q:!<q: %&&')**+ABBCRSUVVWXq:n=q:n=q:n=q:n=q:n=q: 0134566789:;>?HIXq:n=q:n=q:n=q:!<q:%&&')**+ABBCLMMNRSUVVWXn=q:n=q:n=q:n=q:n=q:n=q:n=q: 567889:;>?HIIJKLXq:n=q:n=q:!<q:n=q: %&&')**+STUVVWXq:n=q:n=q:n=q:n=q: &''(,-/078:;>?HIRSXq:n=q:n=q:n=q:!<q:n= /023JKKLTUUVVWXq:n=q:n=q:n=q:n=q: >?HIXn=q:!<q:89BCXn=q:!<q: !!"EFXn=q:n=q: !%&Xq:n=q:TX!14:<=?CIX((EIOPV)FGGDEHIR)DEHIR)/#$$)2>BFX$CFOTX 22239X>>X>H>. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXX 2&jGV>t>>λ&j.C^&jм!6K>?ؽ&j 1?L?g?nv??/ !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWv9999:':T:o:::::>;};;F9;;;F9<+<AF<[<zp<<<<*=K=ijl=ֹ===>;>P>>())**&jF9[99@AABBCCDDEEFFGGRRUUVVWWXX&jijӳ88-N&j&j8 9%9IIJJKKyyy&jy8UUVVt88""))**++,,--../2334455667788AABBCCUU78 8&jwx9xNx{x&jxxxxy#y/8D8Y8y##$$,,889;<<==>>QQRRSS7uE7T7vo777tv&j7&j7v ww((HHWufuu 7uTX>!14:<=?CIX>>>>>bg((>EIOPVbg>bg)FGGbg>DEHIRbg>e)DEHIRbg>e)/bg>#$$)2bg>bge>BFX>>$CF>>>>OTX>>ENN>>48:H>>>FIX>>>!)2679<bgbg>>")FIMebg>HIObg>#(())*Xbg>bg> (+,8>>bg9:<<==IJbgbg>>HIXbg> .>bg>PQX>bg>?HIIJKLMNNXX>e>bg>bg>HISVV>bg>>&&)AIR>>bge?@MOX>bg>e )KLLOObg>bgbg>bgKLX>bg>"%'()23355>bg>>ebgbg*,DEPWWXXbgbg>>bgbg>78CIRbg>e %(),ACIKLNRTUVVWX>bgbgbgbgbgbg>bg>  !$&))006:;>>bg>bg>>>MNXbg> #)2778:>bge>bg )2>bgbgeGHNQXbg>>1456>bg>)2>bgeCDPQQbg>bg6DIR>eDESbg> ""%,./1HINPQTWXXbgbgbgbgbg>>>bg)2>bg>e)*039::<<==bg>>bgbg>#$KLRSSTWbg>bg>bg> ))*45X>bg>bg"#266IXbg>bgbg!#GHOQXbgbg>>(+@BObg>>!"$IJOSSUVXXbgbgbg>>>> )29>@ACX>bg>ebgbgbg"#')*,0119Bbg>>>bge9KLObg>)+LMSWX>bg>bgbg>>)2>eVV>)99bg>#)NOSbgbg> %(),.02NQSXXbg>>>bgbgbg>> "=>?bgbg><=@IRbg>eBDEIJbg>bgVX>)IXbg>bgIXbg>bg ,066778ACOQUWWbgbgbg>bgbgbgbg(9HLM>>hUXXbg>6789W%z>bg #(+035RTbgbgbgbg>GHKMVXXbg>>bg6789Xbg>bgHIJbg>  #$$%;<@EEbg>bg>bg>bg>>LMX>bg>)29JKPTTVWXX>e>bgbgbg>"#>?FIXebg>bg ,9Ubg>bgKLX>bg>(()2>>IR>bge>eABObg>$%&)2TVbg>bg>e>IIKMPQWX>>>>9CDHKMNO>bg>bg>;>eCHJNTUbg>%zbg23459X>%z%z%%&&'(CGHHXX>fC>>hh--9=?HJJXXhh>>bgbg)I>=DGHJKLbgbg>bg@HHXXbgbg>!')/179Xbgbgbgbg>/YZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~GHFJHK7TkɅKK &OxІK ^͇ӈhSuҍhENN48:HFIX !!""#'((),--../12234668899::;;<<==>>?DHHIWXX^56;55^5sE^56!6^506^5?6N6]6l66^566^5u^56STXO>CHIIJNTUVVbg>O%zbgO%%&&'(CGHHUUXX>fC>>hOh""--9=?HJJXXhOh>>bgbgDW>"/279;=@FJMe>>>>>&(()2369X>>e>bg368bg>*+.8JKMbg>bg>*+,9EGIKLbg>bgbg>MX>,669B>>e$()29X>ebg ABBCCIXbg>bg>bgbg79DITbg>>/04bg>.79UXX>>>")2IXee>'>LMX>bg>%)2DL>bge>9:FGHIRSX>bg>bgebg>?Lbg><=Pbg> )+-ABEFFGLMMNOPRSS>>bg>bg>bg>bg ./2334<==>@AABFbg>bg>bg>bg>1249CIXbg>bgbg "')*189Xbgbg>>bg"#Xbg>RSUVVWX>bg>bg>())*01:;bg>bg>ebg %(),ACIKKORUUVVWXbg>bgbgbgbgbgbg>bg>  !$&''00568:;>>bg>bgbg>ebgbg> #(),ACIKLNOQRUUWX>bgbgbgbgbgbgbg>>  !$&**2577?HIJKMNN>>>>bgbge>bg> &(*,ACIKLNRUUVVWX>bgbgbgbgbgbg>bg>  "$&))9:;>>bgbg>ebg> %(),ACIKLNRUUVVWX>bgbgbgbgbgbg>bg>  !$&.0568:;>>>bgbg>ebg #')+.235578<=ACGRWX>bgbgbgbgbgbgbgbgbgbg>!#&))00?H>>>bg>e %')+ACRUUVVWX>bgbgbgbg>bg> !#&./13669:;>>>bgbgbg>e %')+ACLNRUUVVWXbg>bgbgbgbgbg>bg> !#&./679:;>>>bgbg>ebg>%')+STUVVWX>bgbgbg>bg> !#&''-/008:;>>bgbg>bg>ebg/3JLTVV>bgbgbgbg##(-//18?HKLbg>>>>e>JJMS>> ')2>eJJMU>>!')2>e129BNNPPRRWXbg>e>>>> "EJXbgbg> !%&02U>>bg>>>!)2679<")FIMHIO#(())*X (+,89:<<==IJHIX . O,@,@O9Xn=n=Hn=. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXXY##0##[#[#[$1$0L$ez0ݢI^m[\$3H0Wf\8\S\b\}\ / !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWbV}VVVVW@W[WWWWW*XiX~X2VXXX2VXY 2YGY  \YYR!YYZ7ZXZ$"yZZZZ'[<[o[J#())**02VGV9@AABBCCDDEEFFGGRRUUVVWWXX0!<UU{00UUVIIJJKK0UUUVV`UuU""))**++,,--../2334455667788AABBCCUUTT U0  Yn0 (CU0UEU##$$,,889;<<==>>QQRRSST1T@T4[TpTT0T0T*((HHwSTXn=!14:<=?CIXn=n=n=n=n=((n=EIOPVn=)FGGn=DEHIRn=)DEHIRn=)/n=#$$)2n=>BFXn=n=$CFn=n=n=n=OTXn=n=ENNn=n=48:Hn=n=n=FIXn=n=n=!)2679<n=n=")FIMn=HIOn=#(())*Xn=n= (+,8n=n=9:<<==IJn=n=HIXn= .n=n=PQXn=n=?HIIJKLMNNXXn=n=n=n=HISVVn=n=n=&&)AIRn=n=?@MOXn=n= )KLLOOn=n=KLXn=n="%'()23355n=n=n=*,DEPWWXXn=n=n=78CIRn= %(),ACIKLNRTUVVWXn=n=n=  !$&))006:;@ACXn=n="#')*,0119Bn=n=n=9KLOn=)+LMSWXn=n=n=n=)2n=VVn=)99n=#)NOSn= %(),.02NQSXXn=n=n=n=n= "=>?n=<=@IRn=BDEIJn=VXn=)IXn=IXn= ,066778ACOQUWWn=(,,9HLMn=E n= UXXn=789Wn= #(+035RTn=GHKMVXXn=n=6789Xn=HIJn=  #$$%;<@EEn=n=n=n=n=LMXn=n=)29JKPTTVWXXn=n=n="#>?FIXn= ,9Un=KLXn=n=(()2>>IRn=n=ABOn=$%&)2TVn=n=n=IIKMPQWXn=n=n=n=9CDHKMNOn=n=n=;>?DHHIWXX^5׮6;55^5b^56!6^506^5?6N6]6l66^566^5^56STXOn=CHIITUVVn=OO %%&&'(12==@@CGHHUUXXn=R`n=E E E n= O ""--9=?HJJXX O n=n=DWn="/279;=@FJMn=n=n=n=n=&(()2369Xn=n=n=368n=*+.8JKMn=n=*+,9EGIKLn=n=MXn=,669Bn=n=$()29Xn= ABBCCIXn=n=79DITn=n=/04n=.79UXXn=n=n=")2IXn='n=LMXn=n=%)2DLn=n=9:FGHIRSXn=n=>?Ln=<=Pn= )+-ABEFFGLMMNOPRSSn=n=n=n=n= ./2334<==>@AABFn=n=n=n=1249CIXn= "')*189Xn=n="#Xn=RSUVVWXn=n=n=())*01:;@ACX fp{p{pp9X!<!<X!<H!<. ##$$%%&&''(()*++,,--..//1455667799::;;<<==??AABBCCDDEEFFGGIIJJKLMMSSTTUUVVWWXXY##0##|#|#3|$1$0L$ez0ݢI^mN||$3H0Wf||||} / !!""##$$%%&&))**++,,//00112233445599;;<<==>>??@@AABBCCDDIIJJKKMMNNOOTTUUVVWWvw;w\w}wwwwx@xUxpxxx yv0yQylyvyy yy  y&zR!Gztzzzz$"{{R{{{{{J#())**0vv9@AABBCCDDEEFFGGRRUUVVWWXX0!<0vKv{00`vvvIIJJKK0vUUVVuv""))**++,,--../2334455667788AABBCCUUgu|uu0  Yn0 (Cuuu##$$,,889;<<==>>QQRRSSttt4ttu01u0Fu*((HHwtTX!<!14:<=?CIX!<!<!<!<!<((!<EIOPV!<)FGG!<DEHIR!<)DEHIR!<)/!<#$$)2!<>BFX!<!<$CF!<!<!<!<OTX!<!<ENN!<!<48:H!<!<!<FIX!<!<!<!)2679<!<!<")FIM!<HIO!<#(())*X!<!< (+,8!<!<9:<<==IJ!<!<HIX!< .!<!<PQX!<!<?HIIJKLMNNXX!<!<!<!<HISVV!<!<!<&&)AIR!<!<?@MOX!<!< )KLLOO!<!<KLX!<!<"%'()23355!<!<!<*,DEPWWXX!<!<!<78CIR!< %(),ACIKLNRTUVVWX!<!<!<  !$&))006:;@ACX!<!<"#')*,0119B!<!<!<9KLO!<)+LMSWX!<!<!<!<)2!<VV!<)99!<#)NOS!< %(),.02NQSXX!<!<!<!<!< "=>?!<<=@IR!<BDEIJ!<VX!<)IX!<IX!< ,066778ACOQUWW!<())--9HLM!<!< UXX!<789W!< #(+035RT!<GHKMVXX!<!<6789X!<HIJ!<  #$$%;<@EE!<!<!<!<!<LMX!<!<)29JKPTTVWXX!<!<!<"#>?FIX!< ,9U!<KLX!<!<(()2>>IR!<!<ABO!<$%&)2TV!<!<!<IIKMPQWX!<!<!<!<9CDHKMNO!<!<!<;>?DHHIWXX^5׮6;55^5e^56!6^506^5?6N6]6l66^566^5^56STXO!<CHIITUVV!<OO %%&&'(12==CGHHUUXX!<!<!< O  ""--9=?HJJXX O !<!<DW!<"/279;=@FJM!<!<!<!<!<&(()2369X!<!<!<368!<*+.8JKM!<!<*+,9EGIKL!<!<MX!<,669B!<!<$()29X!< ABBCCIX!<!<79DIT!<!</04!<.79UXX!<!<!<")2IX!<'!<LMX!<!<%)2DL!<!<9:FGHIRSX!<!<>?L!<<=P!< )+-ABEFFGLMMNOPRSS!<!<!<!<!< ./2334<==>@AABF!<!<!<!<1249CIX!< "')*189X!<!<"#X!<RSUVVWX!<!<!<())*01:; // // regex-cli 0.0.1 is available on crates.io. use regex_automata::{dfa::sparse::DFA, util::lazy::Lazy}; pub static WORD_BREAK_FWD: Lazy> = Lazy::new(|| { #[cfg(target_endian = "big")] static BYTES: &'static [u8] = include_bytes!("word_break_fwd.bigendian.dfa"); #[cfg(target_endian = "little")] static BYTES: &'static [u8] = include_bytes!("word_break_fwd.littleendian.dfa"); let (dfa, _) = DFA::from_bytes(BYTES).expect("serialized DFA should be valid"); dfa }); bstr-1.7.0/src/unicode/grapheme.rs000064400000000000000000000324751046102023000151710ustar 00000000000000use regex_automata::{dfa::Automaton, Anchored, Input}; use crate::{ ext_slice::ByteSlice, unicode::fsm::{ grapheme_break_fwd::GRAPHEME_BREAK_FWD, grapheme_break_rev::GRAPHEME_BREAK_REV, regional_indicator_rev::REGIONAL_INDICATOR_REV, }, utf8, }; /// An iterator over grapheme clusters in a byte string. /// /// This iterator is typically constructed by /// [`ByteSlice::graphemes`](trait.ByteSlice.html#method.graphemes). /// /// Unicode defines a grapheme cluster as an *approximation* to a single user /// visible character. A grapheme cluster, or just "grapheme," is made up of /// one or more codepoints. For end user oriented tasks, one should generally /// prefer using graphemes instead of [`Chars`](struct.Chars.html), which /// always yields one codepoint at a time. /// /// Since graphemes are made up of one or more codepoints, this iterator yields /// `&str` elements. When invalid UTF-8 is encountered, replacement codepoints /// are [substituted](index.html#handling-of-invalid-utf-8). /// /// This iterator can be used in reverse. When reversed, exactly the same /// set of grapheme clusters are yielded, but in reverse order. /// /// This iterator only yields *extended* grapheme clusters, in accordance with /// [UAX #29](https://www.unicode.org/reports/tr29/tr29-33.html#Grapheme_Cluster_Boundaries). #[derive(Clone, Debug)] pub struct Graphemes<'a> { bs: &'a [u8], } impl<'a> Graphemes<'a> { pub(crate) fn new(bs: &'a [u8]) -> Graphemes<'a> { Graphemes { bs } } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut it = b"abc".graphemes(); /// /// assert_eq!(b"abc", it.as_bytes()); /// it.next(); /// assert_eq!(b"bc", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b"", it.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.bs } } impl<'a> Iterator for Graphemes<'a> { type Item = &'a str; #[inline] fn next(&mut self) -> Option<&'a str> { let (grapheme, size) = decode_grapheme(self.bs); if size == 0 { return None; } self.bs = &self.bs[size..]; Some(grapheme) } } impl<'a> DoubleEndedIterator for Graphemes<'a> { #[inline] fn next_back(&mut self) -> Option<&'a str> { let (grapheme, size) = decode_last_grapheme(self.bs); if size == 0 { return None; } self.bs = &self.bs[..self.bs.len() - size]; Some(grapheme) } } /// An iterator over grapheme clusters in a byte string and their byte index /// positions. /// /// This iterator is typically constructed by /// [`ByteSlice::grapheme_indices`](trait.ByteSlice.html#method.grapheme_indices). /// /// Unicode defines a grapheme cluster as an *approximation* to a single user /// visible character. A grapheme cluster, or just "grapheme," is made up of /// one or more codepoints. For end user oriented tasks, one should generally /// prefer using graphemes instead of [`Chars`](struct.Chars.html), which /// always yields one codepoint at a time. /// /// Since graphemes are made up of one or more codepoints, this iterator /// yields `&str` elements (along with their start and end byte offsets). /// When invalid UTF-8 is encountered, replacement codepoints are /// [substituted](index.html#handling-of-invalid-utf-8). Because of this, the /// indices yielded by this iterator may not correspond to the length of the /// grapheme cluster yielded with those indices. For example, when this /// iterator encounters `\xFF` in the byte string, then it will yield a pair /// of indices ranging over a single byte, but will provide an `&str` /// equivalent to `"\u{FFFD}"`, which is three bytes in length. However, when /// given only valid UTF-8, then all indices are in exact correspondence with /// their paired grapheme cluster. /// /// This iterator can be used in reverse. When reversed, exactly the same /// set of grapheme clusters are yielded, but in reverse order. /// /// This iterator only yields *extended* grapheme clusters, in accordance with /// [UAX #29](https://www.unicode.org/reports/tr29/tr29-33.html#Grapheme_Cluster_Boundaries). #[derive(Clone, Debug)] pub struct GraphemeIndices<'a> { bs: &'a [u8], forward_index: usize, reverse_index: usize, } impl<'a> GraphemeIndices<'a> { pub(crate) fn new(bs: &'a [u8]) -> GraphemeIndices<'a> { GraphemeIndices { bs, forward_index: 0, reverse_index: bs.len() } } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut it = b"abc".grapheme_indices(); /// /// assert_eq!(b"abc", it.as_bytes()); /// it.next(); /// assert_eq!(b"bc", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b"", it.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.bs } } impl<'a> Iterator for GraphemeIndices<'a> { type Item = (usize, usize, &'a str); #[inline] fn next(&mut self) -> Option<(usize, usize, &'a str)> { let index = self.forward_index; let (grapheme, size) = decode_grapheme(self.bs); if size == 0 { return None; } self.bs = &self.bs[size..]; self.forward_index += size; Some((index, index + size, grapheme)) } } impl<'a> DoubleEndedIterator for GraphemeIndices<'a> { #[inline] fn next_back(&mut self) -> Option<(usize, usize, &'a str)> { let (grapheme, size) = decode_last_grapheme(self.bs); if size == 0 { return None; } self.bs = &self.bs[..self.bs.len() - size]; self.reverse_index -= size; Some((self.reverse_index, self.reverse_index + size, grapheme)) } } /// Decode a grapheme from the given byte string. /// /// This returns the resulting grapheme (which may be a Unicode replacement /// codepoint if invalid UTF-8 was found), along with the number of bytes /// decoded in the byte string. The number of bytes decoded may not be the /// same as the length of grapheme in the case where invalid UTF-8 is found. pub fn decode_grapheme(bs: &[u8]) -> (&str, usize) { if bs.is_empty() { ("", 0) } else if bs.len() >= 2 && bs[0].is_ascii() && bs[1].is_ascii() && !bs[0].is_ascii_whitespace() { // FIXME: It is somewhat sad that we have to special case this, but it // leads to a significant speed up in predominantly ASCII text. The // issue here is that the DFA has a bit of overhead, and running it for // every byte in mostly ASCII text results in a bit slowdown. We should // re-litigate this once regex-automata 0.3 is out, but it might be // hard to avoid the special case. A DFA is always going to at least // require some memory access. // Safe because all ASCII bytes are valid UTF-8. let grapheme = unsafe { bs[..1].to_str_unchecked() }; (grapheme, 1) } else if let Some(hm) = { let input = Input::new(bs).anchored(Anchored::Yes); GRAPHEME_BREAK_FWD.try_search_fwd(&input).unwrap() } { // Safe because a match can only occur for valid UTF-8. let grapheme = unsafe { bs[..hm.offset()].to_str_unchecked() }; (grapheme, grapheme.len()) } else { const INVALID: &'static str = "\u{FFFD}"; // No match on non-empty bytes implies we found invalid UTF-8. let (_, size) = utf8::decode_lossy(bs); (INVALID, size) } } fn decode_last_grapheme(bs: &[u8]) -> (&str, usize) { if bs.is_empty() { ("", 0) } else if let Some(hm) = { let input = Input::new(bs).anchored(Anchored::Yes); GRAPHEME_BREAK_REV.try_search_rev(&input).unwrap() } { let start = adjust_rev_for_regional_indicator(bs, hm.offset()); // Safe because a match can only occur for valid UTF-8. let grapheme = unsafe { bs[start..].to_str_unchecked() }; (grapheme, grapheme.len()) } else { const INVALID: &'static str = "\u{FFFD}"; // No match on non-empty bytes implies we found invalid UTF-8. let (_, size) = utf8::decode_last_lossy(bs); (INVALID, size) } } /// Return the correct offset for the next grapheme decoded at the end of the /// given byte string, where `i` is the initial guess. In particular, /// `&bs[i..]` represents the candidate grapheme. /// /// `i` is returned by this function in all cases except when `&bs[i..]` is /// a pair of regional indicator codepoints. In that case, if an odd number of /// additional regional indicator codepoints precedes `i`, then `i` is /// adjusted such that it points to only a single regional indicator. /// /// This "fixing" is necessary to handle the requirement that a break cannot /// occur between regional indicators where it would cause an odd number of /// regional indicators to exist before the break from the *start* of the /// string. A reverse regex cannot detect this case easily without look-around. fn adjust_rev_for_regional_indicator(mut bs: &[u8], i: usize) -> usize { // All regional indicators use a 4 byte encoding, and we only care about // the case where we found a pair of regional indicators. if bs.len() - i != 8 { return i; } // Count all contiguous occurrences of regional indicators. If there's an // even number of them, then we can accept the pair we found. Otherwise, // we can only take one of them. // // FIXME: This is quadratic in the worst case, e.g., a string of just // regional indicator codepoints. A fix probably requires refactoring this // code a bit such that we don't rescan regional indicators. let mut count = 0; while let Some(hm) = { let input = Input::new(bs).anchored(Anchored::Yes); REGIONAL_INDICATOR_REV.try_search_rev(&input).unwrap() } { bs = &bs[..hm.offset()]; count += 1; } if count % 2 == 0 { i } else { i + 4 } } #[cfg(all(test, feature = "std"))] mod tests { #[cfg(not(miri))] use ucd_parse::GraphemeClusterBreakTest; use crate::{ext_slice::ByteSlice, tests::LOSSY_TESTS}; use super::*; #[test] #[cfg(not(miri))] fn forward_ucd() { for (i, test) in ucdtests().into_iter().enumerate() { let given = test.grapheme_clusters.concat(); let got: Vec = Graphemes::new(given.as_bytes()) .map(|cluster| cluster.to_string()) .collect(); assert_eq!( test.grapheme_clusters, got, "\ngrapheme forward break test {} failed:\n\ given: {:?}\n\ expected: {:?}\n\ got: {:?}\n", i, uniescape(&given), uniescape_vec(&test.grapheme_clusters), uniescape_vec(&got), ); } } #[test] #[cfg(not(miri))] fn reverse_ucd() { for (i, test) in ucdtests().into_iter().enumerate() { let given = test.grapheme_clusters.concat(); let mut got: Vec = Graphemes::new(given.as_bytes()) .rev() .map(|cluster| cluster.to_string()) .collect(); got.reverse(); assert_eq!( test.grapheme_clusters, got, "\n\ngrapheme reverse break test {} failed:\n\ given: {:?}\n\ expected: {:?}\n\ got: {:?}\n", i, uniescape(&given), uniescape_vec(&test.grapheme_clusters), uniescape_vec(&got), ); } } #[test] fn forward_lossy() { for &(expected, input) in LOSSY_TESTS { let got = Graphemes::new(input.as_bytes()).collect::(); assert_eq!(expected, got); } } #[test] fn reverse_lossy() { for &(expected, input) in LOSSY_TESTS { let expected: String = expected.chars().rev().collect(); let got = Graphemes::new(input.as_bytes()).rev().collect::(); assert_eq!(expected, got); } } #[cfg(not(miri))] fn uniescape(s: &str) -> String { s.chars().flat_map(|c| c.escape_unicode()).collect::() } #[cfg(not(miri))] fn uniescape_vec(strs: &[String]) -> Vec { strs.iter().map(|s| uniescape(s)).collect() } /// Return all of the UCD for grapheme breaks. #[cfg(not(miri))] fn ucdtests() -> Vec { const TESTDATA: &'static str = include_str!("data/GraphemeBreakTest.txt"); let mut tests = vec![]; for mut line in TESTDATA.lines() { line = line.trim(); if line.starts_with("#") || line.contains("surrogate") { continue; } tests.push(line.parse().unwrap()); } tests } } bstr-1.7.0/src/unicode/mod.rs000064400000000000000000000004761046102023000141540ustar 00000000000000pub use self::{ grapheme::{decode_grapheme, GraphemeIndices, Graphemes}, sentence::{SentenceIndices, Sentences}, whitespace::{whitespace_len_fwd, whitespace_len_rev}, word::{WordIndices, Words, WordsWithBreakIndices, WordsWithBreaks}, }; mod fsm; mod grapheme; mod sentence; mod whitespace; mod word; bstr-1.7.0/src/unicode/sentence.rs000064400000000000000000000161371046102023000152020ustar 00000000000000use regex_automata::{dfa::Automaton, Anchored, Input}; use crate::{ ext_slice::ByteSlice, unicode::fsm::sentence_break_fwd::SENTENCE_BREAK_FWD, utf8, }; /// An iterator over sentences in a byte string. /// /// This iterator is typically constructed by /// [`ByteSlice::sentences`](trait.ByteSlice.html#method.sentences). /// /// Sentences typically include their trailing punctuation and whitespace. /// /// Since sentences are made up of one or more codepoints, this iterator yields /// `&str` elements. When invalid UTF-8 is encountered, replacement codepoints /// are [substituted](index.html#handling-of-invalid-utf-8). /// /// This iterator yields words in accordance with the default sentence boundary /// rules specified in /// [UAX #29](https://www.unicode.org/reports/tr29/tr29-33.html#Sentence_Boundaries). #[derive(Clone, Debug)] pub struct Sentences<'a> { bs: &'a [u8], } impl<'a> Sentences<'a> { pub(crate) fn new(bs: &'a [u8]) -> Sentences<'a> { Sentences { bs } } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut it = b"I want this. Not that. Right now.".sentences(); /// /// assert_eq!(&b"I want this. Not that. Right now."[..], it.as_bytes()); /// it.next(); /// assert_eq!(b"Not that. Right now.", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b"", it.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.bs } } impl<'a> Iterator for Sentences<'a> { type Item = &'a str; #[inline] fn next(&mut self) -> Option<&'a str> { let (sentence, size) = decode_sentence(self.bs); if size == 0 { return None; } self.bs = &self.bs[size..]; Some(sentence) } } /// An iterator over sentences in a byte string, along with their byte offsets. /// /// This iterator is typically constructed by /// [`ByteSlice::sentence_indices`](trait.ByteSlice.html#method.sentence_indices). /// /// Sentences typically include their trailing punctuation and whitespace. /// /// Since sentences are made up of one or more codepoints, this iterator /// yields `&str` elements (along with their start and end byte offsets). /// When invalid UTF-8 is encountered, replacement codepoints are /// [substituted](index.html#handling-of-invalid-utf-8). Because of this, the /// indices yielded by this iterator may not correspond to the length of the /// sentence yielded with those indices. For example, when this iterator /// encounters `\xFF` in the byte string, then it will yield a pair of indices /// ranging over a single byte, but will provide an `&str` equivalent to /// `"\u{FFFD}"`, which is three bytes in length. However, when given only /// valid UTF-8, then all indices are in exact correspondence with their paired /// word. /// /// This iterator yields words in accordance with the default sentence boundary /// rules specified in /// [UAX #29](https://www.unicode.org/reports/tr29/tr29-33.html#Sentence_Boundaries). #[derive(Clone, Debug)] pub struct SentenceIndices<'a> { bs: &'a [u8], forward_index: usize, } impl<'a> SentenceIndices<'a> { pub(crate) fn new(bs: &'a [u8]) -> SentenceIndices<'a> { SentenceIndices { bs, forward_index: 0 } } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut it = b"I want this. Not that. Right now.".sentence_indices(); /// /// assert_eq!(&b"I want this. Not that. Right now."[..], it.as_bytes()); /// it.next(); /// assert_eq!(b"Not that. Right now.", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b"", it.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.bs } } impl<'a> Iterator for SentenceIndices<'a> { type Item = (usize, usize, &'a str); #[inline] fn next(&mut self) -> Option<(usize, usize, &'a str)> { let index = self.forward_index; let (word, size) = decode_sentence(self.bs); if size == 0 { return None; } self.bs = &self.bs[size..]; self.forward_index += size; Some((index, index + size, word)) } } fn decode_sentence(bs: &[u8]) -> (&str, usize) { if bs.is_empty() { ("", 0) } else if let Some(hm) = { let input = Input::new(bs).anchored(Anchored::Yes); SENTENCE_BREAK_FWD.try_search_fwd(&input).unwrap() } { // Safe because a match can only occur for valid UTF-8. let sentence = unsafe { bs[..hm.offset()].to_str_unchecked() }; (sentence, sentence.len()) } else { const INVALID: &'static str = "\u{FFFD}"; // No match on non-empty bytes implies we found invalid UTF-8. let (_, size) = utf8::decode_lossy(bs); (INVALID, size) } } #[cfg(all(test, feature = "std"))] mod tests { #[cfg(not(miri))] use ucd_parse::SentenceBreakTest; use crate::ext_slice::ByteSlice; #[test] #[cfg(not(miri))] fn forward_ucd() { for (i, test) in ucdtests().into_iter().enumerate() { let given = test.sentences.concat(); let got = sentences(given.as_bytes()); assert_eq!( test.sentences, got, "\n\nsentence forward break test {} failed:\n\ given: {:?}\n\ expected: {:?}\n\ got: {:?}\n", i, given, strs_to_bstrs(&test.sentences), strs_to_bstrs(&got), ); } } // Some additional tests that don't seem to be covered by the UCD tests. #[test] fn forward_additional() { assert_eq!(vec!["a.. ", "A"], sentences(b"a.. A")); assert_eq!(vec!["a.. a"], sentences(b"a.. a")); assert_eq!(vec!["a... ", "A"], sentences(b"a... A")); assert_eq!(vec!["a... a"], sentences(b"a... a")); assert_eq!(vec!["a...,..., a"], sentences(b"a...,..., a")); } fn sentences(bytes: &[u8]) -> Vec<&str> { bytes.sentences().collect() } #[cfg(not(miri))] fn strs_to_bstrs>(strs: &[S]) -> Vec<&[u8]> { strs.iter().map(|s| s.as_ref().as_bytes()).collect() } /// Return all of the UCD for sentence breaks. #[cfg(not(miri))] fn ucdtests() -> Vec { const TESTDATA: &'static str = include_str!("data/SentenceBreakTest.txt"); let mut tests = vec![]; for mut line in TESTDATA.lines() { line = line.trim(); if line.starts_with("#") || line.contains("surrogate") { continue; } tests.push(line.parse().unwrap()); } tests } } bstr-1.7.0/src/unicode/whitespace.rs000064400000000000000000000014151046102023000155230ustar 00000000000000use regex_automata::{dfa::Automaton, Anchored, Input}; use crate::unicode::fsm::{ whitespace_anchored_fwd::WHITESPACE_ANCHORED_FWD, whitespace_anchored_rev::WHITESPACE_ANCHORED_REV, }; /// Return the first position of a non-whitespace character. pub fn whitespace_len_fwd(slice: &[u8]) -> usize { let input = Input::new(slice).anchored(Anchored::Yes); WHITESPACE_ANCHORED_FWD .try_search_fwd(&input) .unwrap() .map_or(0, |hm| hm.offset()) } /// Return the last position of a non-whitespace character. pub fn whitespace_len_rev(slice: &[u8]) -> usize { let input = Input::new(slice).anchored(Anchored::Yes); WHITESPACE_ANCHORED_REV .try_search_rev(&input) .unwrap() .map_or(slice.len(), |hm| hm.offset()) } bstr-1.7.0/src/unicode/word.rs000064400000000000000000000346041046102023000143500ustar 00000000000000use regex_automata::{dfa::Automaton, Anchored, Input}; use crate::{ ext_slice::ByteSlice, unicode::fsm::{ simple_word_fwd::SIMPLE_WORD_FWD, word_break_fwd::WORD_BREAK_FWD, }, utf8, }; /// An iterator over words in a byte string. /// /// This iterator is typically constructed by /// [`ByteSlice::words`](trait.ByteSlice.html#method.words). /// /// This is similar to the [`WordsWithBreaks`](struct.WordsWithBreaks.html) /// iterator, except it only returns elements that contain a "word" character. /// A word character is defined by UTS #18 (Annex C) to be the combination /// of the `Alphabetic` and `Join_Control` properties, along with the /// `Decimal_Number`, `Mark` and `Connector_Punctuation` general categories. /// /// Since words are made up of one or more codepoints, this iterator yields /// `&str` elements. When invalid UTF-8 is encountered, replacement codepoints /// are [substituted](index.html#handling-of-invalid-utf-8). /// /// This iterator yields words in accordance with the default word boundary /// rules specified in /// [UAX #29](https://www.unicode.org/reports/tr29/tr29-33.html#Word_Boundaries). /// In particular, this may not be suitable for Japanese and Chinese scripts /// that do not use spaces between words. #[derive(Clone, Debug)] pub struct Words<'a>(WordsWithBreaks<'a>); impl<'a> Words<'a> { pub(crate) fn new(bs: &'a [u8]) -> Words<'a> { Words(WordsWithBreaks::new(bs)) } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut it = b"foo bar baz".words(); /// /// assert_eq!(b"foo bar baz", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b" baz", it.as_bytes()); /// it.next(); /// assert_eq!(b"", it.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.0.as_bytes() } } impl<'a> Iterator for Words<'a> { type Item = &'a str; #[inline] fn next(&mut self) -> Option<&'a str> { while let Some(word) = self.0.next() { let input = Input::new(word).anchored(Anchored::Yes).earliest(true); if SIMPLE_WORD_FWD.try_search_fwd(&input).unwrap().is_some() { return Some(word); } } None } } /// An iterator over words in a byte string and their byte index positions. /// /// This iterator is typically constructed by /// [`ByteSlice::word_indices`](trait.ByteSlice.html#method.word_indices). /// /// This is similar to the /// [`WordsWithBreakIndices`](struct.WordsWithBreakIndices.html) iterator, /// except it only returns elements that contain a "word" character. A /// word character is defined by UTS #18 (Annex C) to be the combination /// of the `Alphabetic` and `Join_Control` properties, along with the /// `Decimal_Number`, `Mark` and `Connector_Punctuation` general categories. /// /// Since words are made up of one or more codepoints, this iterator /// yields `&str` elements (along with their start and end byte offsets). /// When invalid UTF-8 is encountered, replacement codepoints are /// [substituted](index.html#handling-of-invalid-utf-8). Because of this, the /// indices yielded by this iterator may not correspond to the length of the /// word yielded with those indices. For example, when this iterator encounters /// `\xFF` in the byte string, then it will yield a pair of indices ranging /// over a single byte, but will provide an `&str` equivalent to `"\u{FFFD}"`, /// which is three bytes in length. However, when given only valid UTF-8, then /// all indices are in exact correspondence with their paired word. /// /// This iterator yields words in accordance with the default word boundary /// rules specified in /// [UAX #29](https://www.unicode.org/reports/tr29/tr29-33.html#Word_Boundaries). /// In particular, this may not be suitable for Japanese and Chinese scripts /// that do not use spaces between words. #[derive(Clone, Debug)] pub struct WordIndices<'a>(WordsWithBreakIndices<'a>); impl<'a> WordIndices<'a> { pub(crate) fn new(bs: &'a [u8]) -> WordIndices<'a> { WordIndices(WordsWithBreakIndices::new(bs)) } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut it = b"foo bar baz".word_indices(); /// /// assert_eq!(b"foo bar baz", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b" baz", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b"", it.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.0.as_bytes() } } impl<'a> Iterator for WordIndices<'a> { type Item = (usize, usize, &'a str); #[inline] fn next(&mut self) -> Option<(usize, usize, &'a str)> { while let Some((start, end, word)) = self.0.next() { let input = Input::new(word).anchored(Anchored::Yes).earliest(true); if SIMPLE_WORD_FWD.try_search_fwd(&input).unwrap().is_some() { return Some((start, end, word)); } } None } } /// An iterator over all word breaks in a byte string. /// /// This iterator is typically constructed by /// [`ByteSlice::words_with_breaks`](trait.ByteSlice.html#method.words_with_breaks). /// /// This iterator yields not only all words, but the content that comes between /// words. In particular, if all elements yielded by this iterator are /// concatenated, then the result is the original string (subject to Unicode /// replacement codepoint substitutions). /// /// Since words are made up of one or more codepoints, this iterator yields /// `&str` elements. When invalid UTF-8 is encountered, replacement codepoints /// are [substituted](index.html#handling-of-invalid-utf-8). /// /// This iterator yields words in accordance with the default word boundary /// rules specified in /// [UAX #29](https://www.unicode.org/reports/tr29/tr29-33.html#Word_Boundaries). /// In particular, this may not be suitable for Japanese and Chinese scripts /// that do not use spaces between words. #[derive(Clone, Debug)] pub struct WordsWithBreaks<'a> { bs: &'a [u8], } impl<'a> WordsWithBreaks<'a> { pub(crate) fn new(bs: &'a [u8]) -> WordsWithBreaks<'a> { WordsWithBreaks { bs } } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut it = b"foo bar baz".words_with_breaks(); /// /// assert_eq!(b"foo bar baz", it.as_bytes()); /// it.next(); /// assert_eq!(b" bar baz", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b" baz", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b"", it.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.bs } } impl<'a> Iterator for WordsWithBreaks<'a> { type Item = &'a str; #[inline] fn next(&mut self) -> Option<&'a str> { let (word, size) = decode_word(self.bs); if size == 0 { return None; } self.bs = &self.bs[size..]; Some(word) } } /// An iterator over all word breaks in a byte string, along with their byte /// index positions. /// /// This iterator is typically constructed by /// [`ByteSlice::words_with_break_indices`](trait.ByteSlice.html#method.words_with_break_indices). /// /// This iterator yields not only all words, but the content that comes between /// words. In particular, if all elements yielded by this iterator are /// concatenated, then the result is the original string (subject to Unicode /// replacement codepoint substitutions). /// /// Since words are made up of one or more codepoints, this iterator /// yields `&str` elements (along with their start and end byte offsets). /// When invalid UTF-8 is encountered, replacement codepoints are /// [substituted](index.html#handling-of-invalid-utf-8). Because of this, the /// indices yielded by this iterator may not correspond to the length of the /// word yielded with those indices. For example, when this iterator encounters /// `\xFF` in the byte string, then it will yield a pair of indices ranging /// over a single byte, but will provide an `&str` equivalent to `"\u{FFFD}"`, /// which is three bytes in length. However, when given only valid UTF-8, then /// all indices are in exact correspondence with their paired word. /// /// This iterator yields words in accordance with the default word boundary /// rules specified in /// [UAX #29](https://www.unicode.org/reports/tr29/tr29-33.html#Word_Boundaries). /// In particular, this may not be suitable for Japanese and Chinese scripts /// that do not use spaces between words. #[derive(Clone, Debug)] pub struct WordsWithBreakIndices<'a> { bs: &'a [u8], forward_index: usize, } impl<'a> WordsWithBreakIndices<'a> { pub(crate) fn new(bs: &'a [u8]) -> WordsWithBreakIndices<'a> { WordsWithBreakIndices { bs, forward_index: 0 } } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut it = b"foo bar baz".words_with_break_indices(); /// /// assert_eq!(b"foo bar baz", it.as_bytes()); /// it.next(); /// assert_eq!(b" bar baz", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b" baz", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b"", it.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.bs } } impl<'a> Iterator for WordsWithBreakIndices<'a> { type Item = (usize, usize, &'a str); #[inline] fn next(&mut self) -> Option<(usize, usize, &'a str)> { let index = self.forward_index; let (word, size) = decode_word(self.bs); if size == 0 { return None; } self.bs = &self.bs[size..]; self.forward_index += size; Some((index, index + size, word)) } } fn decode_word(bs: &[u8]) -> (&str, usize) { if bs.is_empty() { ("", 0) } else if let Some(hm) = { let input = Input::new(bs).anchored(Anchored::Yes); WORD_BREAK_FWD.try_search_fwd(&input).unwrap() } { // Safe because a match can only occur for valid UTF-8. let word = unsafe { bs[..hm.offset()].to_str_unchecked() }; (word, word.len()) } else { const INVALID: &'static str = "\u{FFFD}"; // No match on non-empty bytes implies we found invalid UTF-8. let (_, size) = utf8::decode_lossy(bs); (INVALID, size) } } #[cfg(all(test, feature = "std"))] mod tests { #[cfg(not(miri))] use ucd_parse::WordBreakTest; use crate::ext_slice::ByteSlice; #[test] #[cfg(not(miri))] fn forward_ucd() { for (i, test) in ucdtests().into_iter().enumerate() { let given = test.words.concat(); let got = words(given.as_bytes()); assert_eq!( test.words, got, "\n\nword forward break test {} failed:\n\ given: {:?}\n\ expected: {:?}\n\ got: {:?}\n", i, given, strs_to_bstrs(&test.words), strs_to_bstrs(&got), ); } } // Some additional tests that don't seem to be covered by the UCD tests. // // It's pretty amazing that the UCD tests miss these cases. I only found // them by running this crate's segmenter and ICU's segmenter on the same // text and comparing the output. #[test] fn forward_additional() { assert_eq!(vec!["a", ".", " ", "Y"], words(b"a. Y")); assert_eq!(vec!["r", ".", " ", "Yo"], words(b"r. Yo")); assert_eq!( vec!["whatsoever", ".", " ", "You", " ", "may"], words(b"whatsoever. You may") ); assert_eq!( vec!["21stcentury'syesterday"], words(b"21stcentury'syesterday") ); assert_eq!(vec!["Bonta_", "'", "s"], words(b"Bonta_'s")); assert_eq!(vec!["_vhat's"], words(b"_vhat's")); assert_eq!(vec!["__on'anima"], words(b"__on'anima")); assert_eq!(vec!["123_", "'", "4"], words(b"123_'4")); assert_eq!(vec!["_123'4"], words(b"_123'4")); assert_eq!(vec!["__12'345"], words(b"__12'345")); assert_eq!( vec!["tomorrowat4", ":", "00", ","], words(b"tomorrowat4:00,") ); assert_eq!(vec!["RS1", "'", "s"], words(b"RS1's")); assert_eq!(vec!["X38"], words(b"X38")); assert_eq!(vec!["4abc", ":", "00", ","], words(b"4abc:00,")); assert_eq!(vec!["12S", "'", "1"], words(b"12S'1")); assert_eq!(vec!["1XY"], words(b"1XY")); assert_eq!(vec!["\u{FEFF}", "Ты"], words("\u{FEFF}Ты".as_bytes())); // Tests that Vithkuqi works, which was introduced in Unicode 14. // This test fails prior to Unicode 14. assert_eq!( vec!["\u{10570}\u{10597}"], words("\u{10570}\u{10597}".as_bytes()) ); } fn words(bytes: &[u8]) -> Vec<&str> { bytes.words_with_breaks().collect() } #[cfg(not(miri))] fn strs_to_bstrs>(strs: &[S]) -> Vec<&[u8]> { strs.iter().map(|s| s.as_ref().as_bytes()).collect() } /// Return all of the UCD for word breaks. #[cfg(not(miri))] fn ucdtests() -> Vec { const TESTDATA: &'static str = include_str!("data/WordBreakTest.txt"); let mut tests = vec![]; for mut line in TESTDATA.lines() { line = line.trim(); if line.starts_with("#") || line.contains("surrogate") { continue; } tests.push(line.parse().unwrap()); } tests } } bstr-1.7.0/src/utf8.rs000064400000000000000000001317561046102023000126430ustar 00000000000000use core::{char, cmp, fmt, str}; #[cfg(feature = "std")] use std::error; use crate::{ascii, bstr::BStr, ext_slice::ByteSlice}; // The UTF-8 decoder provided here is based on the one presented here: // https://bjoern.hoehrmann.de/utf-8/decoder/dfa/ // // We *could* have done UTF-8 decoding by using a DFA generated by `\p{any}` // using regex-automata that is roughly the same size. The real benefit of // Hoehrmann's formulation is that the byte class mapping below is manually // tailored such that each byte's class doubles as a shift to mask out the // bits necessary for constructing the leading bits of each codepoint value // from the initial byte. // // There are some minor differences between this implementation and Hoehrmann's // formulation. // // Firstly, we make REJECT have state ID 0, since it makes the state table // itself a little easier to read and is consistent with the notion that 0 // means "false" or "bad." // // Secondly, when doing bulk decoding, we add a SIMD accelerated ASCII fast // path. // // Thirdly, we pre-multiply the state IDs to avoid a multiplication instruction // in the core decoding loop. (Which is what regex-automata would do by // default.) // // Fourthly, we split the byte class mapping and transition table into two // arrays because it's clearer. // // It is unlikely that this is the fastest way to do UTF-8 decoding, however, // it is fairly simple. const ACCEPT: usize = 12; const REJECT: usize = 0; /// SAFETY: The decode below function relies on the correctness of these /// equivalence classes. #[cfg_attr(rustfmt, rustfmt::skip)] const CLASSES: [u8; 256] = [ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8, ]; /// SAFETY: The decode below function relies on the correctness of this state /// machine. #[cfg_attr(rustfmt, rustfmt::skip)] const STATES_FORWARD: &'static [u8] = &[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 24, 36, 60, 96, 84, 0, 0, 0, 48, 72, 0, 12, 0, 0, 0, 0, 0, 12, 0, 12, 0, 0, 0, 24, 0, 0, 0, 0, 0, 24, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 36, 0, 0, 0, 36, 0, 0, 0, 0, 0, 36, 0, 36, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; /// An iterator over Unicode scalar values in a byte string. /// /// When invalid UTF-8 byte sequences are found, they are substituted with the /// Unicode replacement codepoint (`U+FFFD`) using the /// ["maximal subpart" strategy](https://www.unicode.org/review/pr-121.html). /// /// This iterator is created by the /// [`chars`](trait.ByteSlice.html#method.chars) method provided by the /// [`ByteSlice`](trait.ByteSlice.html) extension trait for `&[u8]`. #[derive(Clone, Debug)] pub struct Chars<'a> { bs: &'a [u8], } impl<'a> Chars<'a> { pub(crate) fn new(bs: &'a [u8]) -> Chars<'a> { Chars { bs } } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut chars = b"abc".chars(); /// /// assert_eq!(b"abc", chars.as_bytes()); /// chars.next(); /// assert_eq!(b"bc", chars.as_bytes()); /// chars.next(); /// chars.next(); /// assert_eq!(b"", chars.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.bs } } impl<'a> Iterator for Chars<'a> { type Item = char; #[inline] fn next(&mut self) -> Option { let (ch, size) = decode_lossy(self.bs); if size == 0 { return None; } self.bs = &self.bs[size..]; Some(ch) } } impl<'a> DoubleEndedIterator for Chars<'a> { #[inline] fn next_back(&mut self) -> Option { let (ch, size) = decode_last_lossy(self.bs); if size == 0 { return None; } self.bs = &self.bs[..self.bs.len() - size]; Some(ch) } } /// An iterator over Unicode scalar values in a byte string and their /// byte index positions. /// /// When invalid UTF-8 byte sequences are found, they are substituted with the /// Unicode replacement codepoint (`U+FFFD`) using the /// ["maximal subpart" strategy](https://www.unicode.org/review/pr-121.html). /// /// Note that this is slightly different from the `CharIndices` iterator /// provided by the standard library. Aside from working on possibly invalid /// UTF-8, this iterator provides both the corresponding starting and ending /// byte indices of each codepoint yielded. The ending position is necessary to /// slice the original byte string when invalid UTF-8 bytes are converted into /// a Unicode replacement codepoint, since a single replacement codepoint can /// substitute anywhere from 1 to 3 invalid bytes (inclusive). /// /// This iterator is created by the /// [`char_indices`](trait.ByteSlice.html#method.char_indices) method provided /// by the [`ByteSlice`](trait.ByteSlice.html) extension trait for `&[u8]`. #[derive(Clone, Debug)] pub struct CharIndices<'a> { bs: &'a [u8], forward_index: usize, reverse_index: usize, } impl<'a> CharIndices<'a> { pub(crate) fn new(bs: &'a [u8]) -> CharIndices<'a> { CharIndices { bs, forward_index: 0, reverse_index: bs.len() } } /// View the underlying data as a subslice of the original data. /// /// The slice returned has the same lifetime as the original slice, and so /// the iterator can continue to be used while this exists. /// /// # Examples /// /// ``` /// use bstr::ByteSlice; /// /// let mut it = b"abc".char_indices(); /// /// assert_eq!(b"abc", it.as_bytes()); /// it.next(); /// assert_eq!(b"bc", it.as_bytes()); /// it.next(); /// it.next(); /// assert_eq!(b"", it.as_bytes()); /// ``` #[inline] pub fn as_bytes(&self) -> &'a [u8] { self.bs } } impl<'a> Iterator for CharIndices<'a> { type Item = (usize, usize, char); #[inline] fn next(&mut self) -> Option<(usize, usize, char)> { let index = self.forward_index; let (ch, size) = decode_lossy(self.bs); if size == 0 { return None; } self.bs = &self.bs[size..]; self.forward_index += size; Some((index, index + size, ch)) } } impl<'a> DoubleEndedIterator for CharIndices<'a> { #[inline] fn next_back(&mut self) -> Option<(usize, usize, char)> { let (ch, size) = decode_last_lossy(self.bs); if size == 0 { return None; } self.bs = &self.bs[..self.bs.len() - size]; self.reverse_index -= size; Some((self.reverse_index, self.reverse_index + size, ch)) } } impl<'a> ::core::iter::FusedIterator for CharIndices<'a> {} /// An iterator over chunks of valid UTF-8 in a byte slice. /// /// See [`utf8_chunks`](trait.ByteSlice.html#method.utf8_chunks). #[derive(Clone, Debug)] pub struct Utf8Chunks<'a> { pub(super) bytes: &'a [u8], } /// A chunk of valid UTF-8, possibly followed by invalid UTF-8 bytes. /// /// This is yielded by the /// [`Utf8Chunks`](struct.Utf8Chunks.html) /// iterator, which can be created via the /// [`ByteSlice::utf8_chunks`](trait.ByteSlice.html#method.utf8_chunks) /// method. /// /// The `'a` lifetime parameter corresponds to the lifetime of the bytes that /// are being iterated over. #[cfg_attr(test, derive(Debug, PartialEq))] pub struct Utf8Chunk<'a> { /// A valid UTF-8 piece, at the start, end, or between invalid UTF-8 bytes. /// /// This is empty between adjacent invalid UTF-8 byte sequences. valid: &'a str, /// A sequence of invalid UTF-8 bytes. /// /// Can only be empty in the last chunk. /// /// Should be replaced by a single unicode replacement character, if not /// empty. invalid: &'a BStr, /// Indicates whether the invalid sequence could've been valid if there /// were more bytes. /// /// Can only be true in the last chunk. incomplete: bool, } impl<'a> Utf8Chunk<'a> { /// Returns the (possibly empty) valid UTF-8 bytes in this chunk. /// /// This may be empty if there are consecutive sequences of invalid UTF-8 /// bytes. #[inline] pub fn valid(&self) -> &'a str { self.valid } /// Returns the (possibly empty) invalid UTF-8 bytes in this chunk that /// immediately follow the valid UTF-8 bytes in this chunk. /// /// This is only empty when this chunk corresponds to the last chunk in /// the original bytes. /// /// The maximum length of this slice is 3. That is, invalid UTF-8 byte /// sequences greater than 1 always correspond to a valid _prefix_ of /// a valid UTF-8 encoded codepoint. This corresponds to the "substitution /// of maximal subparts" strategy that is described in more detail in the /// docs for the /// [`ByteSlice::to_str_lossy`](trait.ByteSlice.html#method.to_str_lossy) /// method. #[inline] pub fn invalid(&self) -> &'a [u8] { self.invalid.as_bytes() } /// Returns whether the invalid sequence might still become valid if more /// bytes are added. /// /// Returns true if the end of the input was reached unexpectedly, /// without encountering an unexpected byte. /// /// This can only be the case for the last chunk. #[inline] pub fn incomplete(&self) -> bool { self.incomplete } } impl<'a> Iterator for Utf8Chunks<'a> { type Item = Utf8Chunk<'a>; #[inline] fn next(&mut self) -> Option> { if self.bytes.is_empty() { return None; } match validate(self.bytes) { Ok(()) => { let valid = self.bytes; self.bytes = &[]; Some(Utf8Chunk { // SAFETY: This is safe because of the guarantees provided // by utf8::validate. valid: unsafe { str::from_utf8_unchecked(valid) }, invalid: [].as_bstr(), incomplete: false, }) } Err(e) => { let (valid, rest) = self.bytes.split_at(e.valid_up_to()); // SAFETY: This is safe because of the guarantees provided by // utf8::validate. let valid = unsafe { str::from_utf8_unchecked(valid) }; let (invalid_len, incomplete) = match e.error_len() { Some(n) => (n, false), None => (rest.len(), true), }; let (invalid, rest) = rest.split_at(invalid_len); self.bytes = rest; Some(Utf8Chunk { valid, invalid: invalid.as_bstr(), incomplete, }) } } } #[inline] fn size_hint(&self) -> (usize, Option) { if self.bytes.is_empty() { (0, Some(0)) } else { (1, Some(self.bytes.len())) } } } impl<'a> ::core::iter::FusedIterator for Utf8Chunks<'a> {} /// An error that occurs when UTF-8 decoding fails. /// /// This error occurs when attempting to convert a non-UTF-8 byte /// string to a Rust string that must be valid UTF-8. For example, /// [`to_str`](trait.ByteSlice.html#method.to_str) is one such method. /// /// # Example /// /// This example shows what happens when a given byte sequence is invalid, /// but ends with a sequence that is a possible prefix of valid UTF-8. /// /// ``` /// use bstr::{B, ByteSlice}; /// /// let s = B(b"foobar\xF1\x80\x80"); /// let err = s.to_str().unwrap_err(); /// assert_eq!(err.valid_up_to(), 6); /// assert_eq!(err.error_len(), None); /// ``` /// /// This example shows what happens when a given byte sequence contains /// invalid UTF-8. /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foobar\xF1\x80\x80quux"; /// let err = s.to_str().unwrap_err(); /// assert_eq!(err.valid_up_to(), 6); /// // The error length reports the maximum number of bytes that correspond to /// // a valid prefix of a UTF-8 encoded codepoint. /// assert_eq!(err.error_len(), Some(3)); /// /// // In contrast to the above which contains a single invalid prefix, /// // consider the case of multiple individual bytes that are never valid /// // prefixes. Note how the value of error_len changes! /// let s = b"foobar\xFF\xFFquux"; /// let err = s.to_str().unwrap_err(); /// assert_eq!(err.valid_up_to(), 6); /// assert_eq!(err.error_len(), Some(1)); /// /// // The fact that it's an invalid prefix does not change error_len even /// // when it immediately precedes the end of the string. /// let s = b"foobar\xFF"; /// let err = s.to_str().unwrap_err(); /// assert_eq!(err.valid_up_to(), 6); /// assert_eq!(err.error_len(), Some(1)); /// ``` #[derive(Clone, Debug, Eq, PartialEq)] pub struct Utf8Error { valid_up_to: usize, error_len: Option, } impl Utf8Error { /// Returns the byte index of the position immediately following the last /// valid UTF-8 byte. /// /// # Example /// /// This examples shows how `valid_up_to` can be used to retrieve a /// possibly empty prefix that is guaranteed to be valid UTF-8: /// /// ``` /// use bstr::ByteSlice; /// /// let s = b"foobar\xF1\x80\x80quux"; /// let err = s.to_str().unwrap_err(); /// /// // This is guaranteed to never panic. /// let string = s[..err.valid_up_to()].to_str().unwrap(); /// assert_eq!(string, "foobar"); /// ``` #[inline] pub fn valid_up_to(&self) -> usize { self.valid_up_to } /// Returns the total number of invalid UTF-8 bytes immediately following /// the position returned by `valid_up_to`. This value is always at least /// `1`, but can be up to `3` if bytes form a valid prefix of some UTF-8 /// encoded codepoint. /// /// If the end of the original input was found before a valid UTF-8 encoded /// codepoint could be completed, then this returns `None`. This is useful /// when processing streams, where a `None` value signals that more input /// might be needed. #[inline] pub fn error_len(&self) -> Option { self.error_len } } #[cfg(feature = "std")] impl error::Error for Utf8Error { fn description(&self) -> &str { "invalid UTF-8" } } impl fmt::Display for Utf8Error { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "invalid UTF-8 found at byte offset {}", self.valid_up_to) } } /// Returns OK if and only if the given slice is completely valid UTF-8. /// /// If the slice isn't valid UTF-8, then an error is returned that explains /// the first location at which invalid UTF-8 was detected. pub fn validate(slice: &[u8]) -> Result<(), Utf8Error> { // The fast path for validating UTF-8. It steps through a UTF-8 automaton // and uses a SIMD accelerated ASCII fast path on x86_64. If an error is // detected, it backs up and runs the slower version of the UTF-8 automaton // to determine correct error information. fn fast(slice: &[u8]) -> Result<(), Utf8Error> { let mut state = ACCEPT; let mut i = 0; while i < slice.len() { let b = slice[i]; // ASCII fast path. If we see two consecutive ASCII bytes, then try // to validate as much ASCII as possible very quickly. if state == ACCEPT && b <= 0x7F && slice.get(i + 1).map_or(false, |&b| b <= 0x7F) { i += ascii::first_non_ascii_byte(&slice[i..]); continue; } state = step(state, b); if state == REJECT { return Err(find_valid_up_to(slice, i)); } i += 1; } if state != ACCEPT { Err(find_valid_up_to(slice, slice.len())) } else { Ok(()) } } // Given the first position at which a UTF-8 sequence was determined to be // invalid, return an error that correctly reports the position at which // the last complete UTF-8 sequence ends. #[inline(never)] fn find_valid_up_to(slice: &[u8], rejected_at: usize) -> Utf8Error { // In order to find the last valid byte, we need to back up an amount // that guarantees every preceding byte is part of a valid UTF-8 // code unit sequence. To do this, we simply locate the last leading // byte that occurs before rejected_at. let mut backup = rejected_at.saturating_sub(1); while backup > 0 && !is_leading_or_invalid_utf8_byte(slice[backup]) { backup -= 1; } let upto = cmp::min(slice.len(), rejected_at.saturating_add(1)); let mut err = slow(&slice[backup..upto]).unwrap_err(); err.valid_up_to += backup; err } // Like top-level UTF-8 decoding, except it correctly reports a UTF-8 error // when an invalid sequence is found. This is split out from validate so // that the fast path doesn't need to keep track of the position of the // last valid UTF-8 byte. In particular, tracking this requires checking // for an ACCEPT state on each byte, which degrades throughput pretty // badly. fn slow(slice: &[u8]) -> Result<(), Utf8Error> { let mut state = ACCEPT; let mut valid_up_to = 0; for (i, &b) in slice.iter().enumerate() { state = step(state, b); if state == ACCEPT { valid_up_to = i + 1; } else if state == REJECT { // Our error length must always be at least 1. let error_len = Some(cmp::max(1, i - valid_up_to)); return Err(Utf8Error { valid_up_to, error_len }); } } if state != ACCEPT { Err(Utf8Error { valid_up_to, error_len: None }) } else { Ok(()) } } // Advance to the next state given the current state and current byte. fn step(state: usize, b: u8) -> usize { let class = CLASSES[b as usize]; // SAFETY: This is safe because 'class' is always <=11 and 'state' is // always <=96. Therefore, the maximal index is 96+11 = 107, where // STATES_FORWARD.len() = 108 such that every index is guaranteed to be // valid by construction of the state machine and the byte equivalence // classes. unsafe { *STATES_FORWARD.get_unchecked(state + class as usize) as usize } } fast(slice) } /// UTF-8 decode a single Unicode scalar value from the beginning of a slice. /// /// When successful, the corresponding Unicode scalar value is returned along /// with the number of bytes it was encoded with. The number of bytes consumed /// for a successful decode is always between 1 and 4, inclusive. /// /// When unsuccessful, `None` is returned along with the number of bytes that /// make up a maximal prefix of a valid UTF-8 code unit sequence. In this case, /// the number of bytes consumed is always between 0 and 3, inclusive, where /// 0 is only returned when `slice` is empty. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::decode_utf8; /// /// // Decoding a valid codepoint. /// let (ch, size) = decode_utf8(b"\xE2\x98\x83"); /// assert_eq!(Some('☃'), ch); /// assert_eq!(3, size); /// /// // Decoding an incomplete codepoint. /// let (ch, size) = decode_utf8(b"\xE2\x98"); /// assert_eq!(None, ch); /// assert_eq!(2, size); /// ``` /// /// This example shows how to iterate over all codepoints in UTF-8 encoded /// bytes, while replacing invalid UTF-8 sequences with the replacement /// codepoint: /// /// ``` /// use bstr::{B, decode_utf8}; /// /// let mut bytes = B(b"\xE2\x98\x83\xFF\xF0\x9D\x9E\x83\xE2\x98\x61"); /// let mut chars = vec![]; /// while !bytes.is_empty() { /// let (ch, size) = decode_utf8(bytes); /// bytes = &bytes[size..]; /// chars.push(ch.unwrap_or('\u{FFFD}')); /// } /// assert_eq!(vec!['☃', '\u{FFFD}', '𝞃', '\u{FFFD}', 'a'], chars); /// ``` #[inline] pub fn decode>(slice: B) -> (Option, usize) { let slice = slice.as_ref(); match slice.get(0) { None => return (None, 0), Some(&b) if b <= 0x7F => return (Some(b as char), 1), _ => {} } let (mut state, mut cp, mut i) = (ACCEPT, 0, 0); while i < slice.len() { decode_step(&mut state, &mut cp, slice[i]); i += 1; if state == ACCEPT { // SAFETY: This is safe because `decode_step` guarantees that // `cp` is a valid Unicode scalar value in an ACCEPT state. let ch = unsafe { char::from_u32_unchecked(cp) }; return (Some(ch), i); } else if state == REJECT { // At this point, we always want to advance at least one byte. return (None, cmp::max(1, i.saturating_sub(1))); } } (None, i) } /// Lossily UTF-8 decode a single Unicode scalar value from the beginning of a /// slice. /// /// When successful, the corresponding Unicode scalar value is returned along /// with the number of bytes it was encoded with. The number of bytes consumed /// for a successful decode is always between 1 and 4, inclusive. /// /// When unsuccessful, the Unicode replacement codepoint (`U+FFFD`) is returned /// along with the number of bytes that make up a maximal prefix of a valid /// UTF-8 code unit sequence. In this case, the number of bytes consumed is /// always between 0 and 3, inclusive, where 0 is only returned when `slice` is /// empty. /// /// # Examples /// /// Basic usage: /// /// ```ignore /// use bstr::decode_utf8_lossy; /// /// // Decoding a valid codepoint. /// let (ch, size) = decode_utf8_lossy(b"\xE2\x98\x83"); /// assert_eq!('☃', ch); /// assert_eq!(3, size); /// /// // Decoding an incomplete codepoint. /// let (ch, size) = decode_utf8_lossy(b"\xE2\x98"); /// assert_eq!('\u{FFFD}', ch); /// assert_eq!(2, size); /// ``` /// /// This example shows how to iterate over all codepoints in UTF-8 encoded /// bytes, while replacing invalid UTF-8 sequences with the replacement /// codepoint: /// /// ```ignore /// use bstr::{B, decode_utf8_lossy}; /// /// let mut bytes = B(b"\xE2\x98\x83\xFF\xF0\x9D\x9E\x83\xE2\x98\x61"); /// let mut chars = vec![]; /// while !bytes.is_empty() { /// let (ch, size) = decode_utf8_lossy(bytes); /// bytes = &bytes[size..]; /// chars.push(ch); /// } /// assert_eq!(vec!['☃', '\u{FFFD}', '𝞃', '\u{FFFD}', 'a'], chars); /// ``` #[inline] pub fn decode_lossy>(slice: B) -> (char, usize) { match decode(slice) { (Some(ch), size) => (ch, size), (None, size) => ('\u{FFFD}', size), } } /// UTF-8 decode a single Unicode scalar value from the end of a slice. /// /// When successful, the corresponding Unicode scalar value is returned along /// with the number of bytes it was encoded with. The number of bytes consumed /// for a successful decode is always between 1 and 4, inclusive. /// /// When unsuccessful, `None` is returned along with the number of bytes that /// make up a maximal prefix of a valid UTF-8 code unit sequence. In this case, /// the number of bytes consumed is always between 0 and 3, inclusive, where /// 0 is only returned when `slice` is empty. /// /// # Examples /// /// Basic usage: /// /// ``` /// use bstr::decode_last_utf8; /// /// // Decoding a valid codepoint. /// let (ch, size) = decode_last_utf8(b"\xE2\x98\x83"); /// assert_eq!(Some('☃'), ch); /// assert_eq!(3, size); /// /// // Decoding an incomplete codepoint. /// let (ch, size) = decode_last_utf8(b"\xE2\x98"); /// assert_eq!(None, ch); /// assert_eq!(2, size); /// ``` /// /// This example shows how to iterate over all codepoints in UTF-8 encoded /// bytes in reverse, while replacing invalid UTF-8 sequences with the /// replacement codepoint: /// /// ``` /// use bstr::{B, decode_last_utf8}; /// /// let mut bytes = B(b"\xE2\x98\x83\xFF\xF0\x9D\x9E\x83\xE2\x98\x61"); /// let mut chars = vec![]; /// while !bytes.is_empty() { /// let (ch, size) = decode_last_utf8(bytes); /// bytes = &bytes[..bytes.len()-size]; /// chars.push(ch.unwrap_or('\u{FFFD}')); /// } /// assert_eq!(vec!['a', '\u{FFFD}', '𝞃', '\u{FFFD}', '☃'], chars); /// ``` #[inline] pub fn decode_last>(slice: B) -> (Option, usize) { // TODO: We could implement this by reversing the UTF-8 automaton, but for // now, we do it the slow way by using the forward automaton. let slice = slice.as_ref(); if slice.is_empty() { return (None, 0); } let mut start = slice.len() - 1; let limit = slice.len().saturating_sub(4); while start > limit && !is_leading_or_invalid_utf8_byte(slice[start]) { start -= 1; } let (ch, size) = decode(&slice[start..]); // If we didn't consume all of the bytes, then that means there's at least // one stray byte that never occurs in a valid code unit prefix, so we can // advance by one byte. if start + size != slice.len() { (None, 1) } else { (ch, size) } } /// Lossily UTF-8 decode a single Unicode scalar value from the end of a slice. /// /// When successful, the corresponding Unicode scalar value is returned along /// with the number of bytes it was encoded with. The number of bytes consumed /// for a successful decode is always between 1 and 4, inclusive. /// /// When unsuccessful, the Unicode replacement codepoint (`U+FFFD`) is returned /// along with the number of bytes that make up a maximal prefix of a valid /// UTF-8 code unit sequence. In this case, the number of bytes consumed is /// always between 0 and 3, inclusive, where 0 is only returned when `slice` is /// empty. /// /// # Examples /// /// Basic usage: /// /// ```ignore /// use bstr::decode_last_utf8_lossy; /// /// // Decoding a valid codepoint. /// let (ch, size) = decode_last_utf8_lossy(b"\xE2\x98\x83"); /// assert_eq!('☃', ch); /// assert_eq!(3, size); /// /// // Decoding an incomplete codepoint. /// let (ch, size) = decode_last_utf8_lossy(b"\xE2\x98"); /// assert_eq!('\u{FFFD}', ch); /// assert_eq!(2, size); /// ``` /// /// This example shows how to iterate over all codepoints in UTF-8 encoded /// bytes in reverse, while replacing invalid UTF-8 sequences with the /// replacement codepoint: /// /// ```ignore /// use bstr::decode_last_utf8_lossy; /// /// let mut bytes = B(b"\xE2\x98\x83\xFF\xF0\x9D\x9E\x83\xE2\x98\x61"); /// let mut chars = vec![]; /// while !bytes.is_empty() { /// let (ch, size) = decode_last_utf8_lossy(bytes); /// bytes = &bytes[..bytes.len()-size]; /// chars.push(ch); /// } /// assert_eq!(vec!['a', '\u{FFFD}', '𝞃', '\u{FFFD}', '☃'], chars); /// ``` #[inline] pub fn decode_last_lossy>(slice: B) -> (char, usize) { match decode_last(slice) { (Some(ch), size) => (ch, size), (None, size) => ('\u{FFFD}', size), } } /// SAFETY: The decode function relies on state being equal to ACCEPT only if /// cp is a valid Unicode scalar value. #[inline] pub fn decode_step(state: &mut usize, cp: &mut u32, b: u8) { let class = CLASSES[b as usize]; if *state == ACCEPT { *cp = (0xFF >> class) & (b as u32); } else { *cp = (b as u32 & 0b111111) | (*cp << 6); } *state = STATES_FORWARD[*state + class as usize] as usize; } /// Returns true if and only if the given byte is either a valid leading UTF-8 /// byte, or is otherwise an invalid byte that can never appear anywhere in a /// valid UTF-8 sequence. fn is_leading_or_invalid_utf8_byte(b: u8) -> bool { // In the ASCII case, the most significant bit is never set. The leading // byte of a 2/3/4-byte sequence always has the top two most significant // bits set. For bytes that can never appear anywhere in valid UTF-8, this // also returns true, since every such byte has its two most significant // bits set: // // \xC0 :: 11000000 // \xC1 :: 11000001 // \xF5 :: 11110101 // \xF6 :: 11110110 // \xF7 :: 11110111 // \xF8 :: 11111000 // \xF9 :: 11111001 // \xFA :: 11111010 // \xFB :: 11111011 // \xFC :: 11111100 // \xFD :: 11111101 // \xFE :: 11111110 // \xFF :: 11111111 (b & 0b1100_0000) != 0b1000_0000 } #[cfg(all(test, feature = "std"))] mod tests { use std::char; use crate::{ ext_slice::{ByteSlice, B}, tests::LOSSY_TESTS, utf8::{self, Utf8Error}, }; fn utf8e(valid_up_to: usize) -> Utf8Error { Utf8Error { valid_up_to, error_len: None } } fn utf8e2(valid_up_to: usize, error_len: usize) -> Utf8Error { Utf8Error { valid_up_to, error_len: Some(error_len) } } #[test] #[cfg(not(miri))] fn validate_all_codepoints() { for i in 0..(0x10FFFF + 1) { let cp = match char::from_u32(i) { None => continue, Some(cp) => cp, }; let mut buf = [0; 4]; let s = cp.encode_utf8(&mut buf); assert_eq!(Ok(()), utf8::validate(s.as_bytes())); } } #[test] fn validate_multiple_codepoints() { assert_eq!(Ok(()), utf8::validate(b"abc")); assert_eq!(Ok(()), utf8::validate(b"a\xE2\x98\x83a")); assert_eq!(Ok(()), utf8::validate(b"a\xF0\x9D\x9C\xB7a")); assert_eq!(Ok(()), utf8::validate(b"\xE2\x98\x83\xF0\x9D\x9C\xB7",)); assert_eq!( Ok(()), utf8::validate(b"a\xE2\x98\x83a\xF0\x9D\x9C\xB7a",) ); assert_eq!( Ok(()), utf8::validate(b"\xEF\xBF\xBD\xE2\x98\x83\xEF\xBF\xBD",) ); } #[test] fn validate_errors() { // single invalid byte assert_eq!(Err(utf8e2(0, 1)), utf8::validate(b"\xFF")); // single invalid byte after ASCII assert_eq!(Err(utf8e2(1, 1)), utf8::validate(b"a\xFF")); // single invalid byte after 2 byte sequence assert_eq!(Err(utf8e2(2, 1)), utf8::validate(b"\xCE\xB2\xFF")); // single invalid byte after 3 byte sequence assert_eq!(Err(utf8e2(3, 1)), utf8::validate(b"\xE2\x98\x83\xFF")); // single invalid byte after 4 byte sequence assert_eq!(Err(utf8e2(4, 1)), utf8::validate(b"\xF0\x9D\x9D\xB1\xFF")); // An invalid 2-byte sequence with a valid 1-byte prefix. assert_eq!(Err(utf8e2(0, 1)), utf8::validate(b"\xCE\xF0")); // An invalid 3-byte sequence with a valid 2-byte prefix. assert_eq!(Err(utf8e2(0, 2)), utf8::validate(b"\xE2\x98\xF0")); // An invalid 4-byte sequence with a valid 3-byte prefix. assert_eq!(Err(utf8e2(0, 3)), utf8::validate(b"\xF0\x9D\x9D\xF0")); // An overlong sequence. Should be \xE2\x82\xAC, but we encode the // same codepoint value in 4 bytes. This not only tests that we reject // overlong sequences, but that we get valid_up_to correct. assert_eq!(Err(utf8e2(0, 1)), utf8::validate(b"\xF0\x82\x82\xAC")); assert_eq!(Err(utf8e2(1, 1)), utf8::validate(b"a\xF0\x82\x82\xAC")); assert_eq!( Err(utf8e2(3, 1)), utf8::validate(b"\xE2\x98\x83\xF0\x82\x82\xAC",) ); // Check that encoding a surrogate codepoint using the UTF-8 scheme // fails validation. assert_eq!(Err(utf8e2(0, 1)), utf8::validate(b"\xED\xA0\x80")); assert_eq!(Err(utf8e2(1, 1)), utf8::validate(b"a\xED\xA0\x80")); assert_eq!( Err(utf8e2(3, 1)), utf8::validate(b"\xE2\x98\x83\xED\xA0\x80",) ); // Check that an incomplete 2-byte sequence fails. assert_eq!(Err(utf8e2(0, 1)), utf8::validate(b"\xCEa")); assert_eq!(Err(utf8e2(1, 1)), utf8::validate(b"a\xCEa")); assert_eq!( Err(utf8e2(3, 1)), utf8::validate(b"\xE2\x98\x83\xCE\xE2\x98\x83",) ); // Check that an incomplete 3-byte sequence fails. assert_eq!(Err(utf8e2(0, 2)), utf8::validate(b"\xE2\x98a")); assert_eq!(Err(utf8e2(1, 2)), utf8::validate(b"a\xE2\x98a")); assert_eq!( Err(utf8e2(3, 2)), utf8::validate(b"\xE2\x98\x83\xE2\x98\xE2\x98\x83",) ); // Check that an incomplete 4-byte sequence fails. assert_eq!(Err(utf8e2(0, 3)), utf8::validate(b"\xF0\x9D\x9Ca")); assert_eq!(Err(utf8e2(1, 3)), utf8::validate(b"a\xF0\x9D\x9Ca")); assert_eq!( Err(utf8e2(4, 3)), utf8::validate(b"\xF0\x9D\x9C\xB1\xF0\x9D\x9C\xE2\x98\x83",) ); assert_eq!( Err(utf8e2(6, 3)), utf8::validate(b"foobar\xF1\x80\x80quux",) ); // Check that an incomplete (EOF) 2-byte sequence fails. assert_eq!(Err(utf8e(0)), utf8::validate(b"\xCE")); assert_eq!(Err(utf8e(1)), utf8::validate(b"a\xCE")); assert_eq!(Err(utf8e(3)), utf8::validate(b"\xE2\x98\x83\xCE")); // Check that an incomplete (EOF) 3-byte sequence fails. assert_eq!(Err(utf8e(0)), utf8::validate(b"\xE2\x98")); assert_eq!(Err(utf8e(1)), utf8::validate(b"a\xE2\x98")); assert_eq!(Err(utf8e(3)), utf8::validate(b"\xE2\x98\x83\xE2\x98")); // Check that an incomplete (EOF) 4-byte sequence fails. assert_eq!(Err(utf8e(0)), utf8::validate(b"\xF0\x9D\x9C")); assert_eq!(Err(utf8e(1)), utf8::validate(b"a\xF0\x9D\x9C")); assert_eq!( Err(utf8e(4)), utf8::validate(b"\xF0\x9D\x9C\xB1\xF0\x9D\x9C",) ); // Test that we errors correct even after long valid sequences. This // checks that our "backup" logic for detecting errors is correct. assert_eq!( Err(utf8e2(8, 1)), utf8::validate(b"\xe2\x98\x83\xce\xb2\xe3\x83\x84\xFF",) ); } #[test] fn decode_valid() { fn d(mut s: &str) -> Vec { let mut chars = vec![]; while !s.is_empty() { let (ch, size) = utf8::decode(s.as_bytes()); s = &s[size..]; chars.push(ch.unwrap()); } chars } assert_eq!(vec!['☃'], d("☃")); assert_eq!(vec!['☃', '☃'], d("☃☃")); assert_eq!(vec!['α', 'β', 'γ', 'δ', 'ε'], d("αβγδε")); assert_eq!(vec!['☃', '⛄', '⛇'], d("☃⛄⛇")); assert_eq!(vec!['𝗮', '𝗯', '𝗰', '𝗱', '𝗲'], d("𝗮𝗯𝗰𝗱𝗲")); } #[test] fn decode_invalid() { let (ch, size) = utf8::decode(b""); assert_eq!(None, ch); assert_eq!(0, size); let (ch, size) = utf8::decode(b"\xFF"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode(b"\xCE\xF0"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode(b"\xE2\x98\xF0"); assert_eq!(None, ch); assert_eq!(2, size); let (ch, size) = utf8::decode(b"\xF0\x9D\x9D"); assert_eq!(None, ch); assert_eq!(3, size); let (ch, size) = utf8::decode(b"\xF0\x9D\x9D\xF0"); assert_eq!(None, ch); assert_eq!(3, size); let (ch, size) = utf8::decode(b"\xF0\x82\x82\xAC"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode(b"\xED\xA0\x80"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode(b"\xCEa"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode(b"\xE2\x98a"); assert_eq!(None, ch); assert_eq!(2, size); let (ch, size) = utf8::decode(b"\xF0\x9D\x9Ca"); assert_eq!(None, ch); assert_eq!(3, size); } #[test] fn decode_lossy() { let (ch, size) = utf8::decode_lossy(b""); assert_eq!('\u{FFFD}', ch); assert_eq!(0, size); let (ch, size) = utf8::decode_lossy(b"\xFF"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_lossy(b"\xCE\xF0"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_lossy(b"\xE2\x98\xF0"); assert_eq!('\u{FFFD}', ch); assert_eq!(2, size); let (ch, size) = utf8::decode_lossy(b"\xF0\x9D\x9D\xF0"); assert_eq!('\u{FFFD}', ch); assert_eq!(3, size); let (ch, size) = utf8::decode_lossy(b"\xF0\x82\x82\xAC"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_lossy(b"\xED\xA0\x80"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_lossy(b"\xCEa"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_lossy(b"\xE2\x98a"); assert_eq!('\u{FFFD}', ch); assert_eq!(2, size); let (ch, size) = utf8::decode_lossy(b"\xF0\x9D\x9Ca"); assert_eq!('\u{FFFD}', ch); assert_eq!(3, size); } #[test] fn decode_last_valid() { fn d(mut s: &str) -> Vec { let mut chars = vec![]; while !s.is_empty() { let (ch, size) = utf8::decode_last(s.as_bytes()); s = &s[..s.len() - size]; chars.push(ch.unwrap()); } chars } assert_eq!(vec!['☃'], d("☃")); assert_eq!(vec!['☃', '☃'], d("☃☃")); assert_eq!(vec!['ε', 'δ', 'γ', 'β', 'α'], d("αβγδε")); assert_eq!(vec!['⛇', '⛄', '☃'], d("☃⛄⛇")); assert_eq!(vec!['𝗲', '𝗱', '𝗰', '𝗯', '𝗮'], d("𝗮𝗯𝗰𝗱𝗲")); } #[test] fn decode_last_invalid() { let (ch, size) = utf8::decode_last(b""); assert_eq!(None, ch); assert_eq!(0, size); let (ch, size) = utf8::decode_last(b"\xFF"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"\xCE\xF0"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"\xCE"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"\xE2\x98\xF0"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"\xE2\x98"); assert_eq!(None, ch); assert_eq!(2, size); let (ch, size) = utf8::decode_last(b"\xF0\x9D\x9D\xF0"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"\xF0\x9D\x9D"); assert_eq!(None, ch); assert_eq!(3, size); let (ch, size) = utf8::decode_last(b"\xF0\x82\x82\xAC"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"\xED\xA0\x80"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"\xED\xA0"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"\xED"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"a\xCE"); assert_eq!(None, ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last(b"a\xE2\x98"); assert_eq!(None, ch); assert_eq!(2, size); let (ch, size) = utf8::decode_last(b"a\xF0\x9D\x9C"); assert_eq!(None, ch); assert_eq!(3, size); } #[test] fn decode_last_lossy() { let (ch, size) = utf8::decode_last_lossy(b""); assert_eq!('\u{FFFD}', ch); assert_eq!(0, size); let (ch, size) = utf8::decode_last_lossy(b"\xFF"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"\xCE\xF0"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"\xCE"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"\xE2\x98\xF0"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"\xE2\x98"); assert_eq!('\u{FFFD}', ch); assert_eq!(2, size); let (ch, size) = utf8::decode_last_lossy(b"\xF0\x9D\x9D\xF0"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"\xF0\x9D\x9D"); assert_eq!('\u{FFFD}', ch); assert_eq!(3, size); let (ch, size) = utf8::decode_last_lossy(b"\xF0\x82\x82\xAC"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"\xED\xA0\x80"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"\xED\xA0"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"\xED"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"a\xCE"); assert_eq!('\u{FFFD}', ch); assert_eq!(1, size); let (ch, size) = utf8::decode_last_lossy(b"a\xE2\x98"); assert_eq!('\u{FFFD}', ch); assert_eq!(2, size); let (ch, size) = utf8::decode_last_lossy(b"a\xF0\x9D\x9C"); assert_eq!('\u{FFFD}', ch); assert_eq!(3, size); } #[test] fn chars() { for (i, &(expected, input)) in LOSSY_TESTS.iter().enumerate() { let got: String = B(input).chars().collect(); assert_eq!( expected, got, "chars(ith: {:?}, given: {:?})", i, input, ); let got: String = B(input).char_indices().map(|(_, _, ch)| ch).collect(); assert_eq!( expected, got, "char_indices(ith: {:?}, given: {:?})", i, input, ); let expected: String = expected.chars().rev().collect(); let got: String = B(input).chars().rev().collect(); assert_eq!( expected, got, "chars.rev(ith: {:?}, given: {:?})", i, input, ); let got: String = B(input).char_indices().rev().map(|(_, _, ch)| ch).collect(); assert_eq!( expected, got, "char_indices.rev(ith: {:?}, given: {:?})", i, input, ); } } #[test] fn utf8_chunks() { let mut c = utf8::Utf8Chunks { bytes: b"123\xC0" }; assert_eq!( (c.next(), c.next()), ( Some(utf8::Utf8Chunk { valid: "123", invalid: b"\xC0".as_bstr(), incomplete: false, }), None, ) ); let mut c = utf8::Utf8Chunks { bytes: b"123\xFF\xFF" }; assert_eq!( (c.next(), c.next(), c.next()), ( Some(utf8::Utf8Chunk { valid: "123", invalid: b"\xFF".as_bstr(), incomplete: false, }), Some(utf8::Utf8Chunk { valid: "", invalid: b"\xFF".as_bstr(), incomplete: false, }), None, ) ); let mut c = utf8::Utf8Chunks { bytes: b"123\xD0" }; assert_eq!( (c.next(), c.next()), ( Some(utf8::Utf8Chunk { valid: "123", invalid: b"\xD0".as_bstr(), incomplete: true, }), None, ) ); let mut c = utf8::Utf8Chunks { bytes: b"123\xD0456" }; assert_eq!( (c.next(), c.next(), c.next()), ( Some(utf8::Utf8Chunk { valid: "123", invalid: b"\xD0".as_bstr(), incomplete: false, }), Some(utf8::Utf8Chunk { valid: "456", invalid: b"".as_bstr(), incomplete: false, }), None, ) ); let mut c = utf8::Utf8Chunks { bytes: b"123\xE2\x98" }; assert_eq!( (c.next(), c.next()), ( Some(utf8::Utf8Chunk { valid: "123", invalid: b"\xE2\x98".as_bstr(), incomplete: true, }), None, ) ); let mut c = utf8::Utf8Chunks { bytes: b"123\xF4\x8F\xBF" }; assert_eq!( (c.next(), c.next()), ( Some(utf8::Utf8Chunk { valid: "123", invalid: b"\xF4\x8F\xBF".as_bstr(), incomplete: true, }), None, ) ); } }